summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.config.sh59
-rw-r--r--.coveragerc11
-rw-r--r--.dir-locals.el2
-rw-r--r--.dockerignore17
-rw-r--r--.github/ISSUE_TEMPLATE/bug-report.md39
-rw-r--r--.github/ISSUE_TEMPLATE/config.yml14
-rw-r--r--.github/ISSUE_TEMPLATE/engine-request.md31
-rw-r--r--.github/ISSUE_TEMPLATE/feature-request.md21
-rw-r--r--.github/dependabot.yml10
-rw-r--r--.github/workflows/data-update.yml69
-rw-r--r--.github/workflows/integration.yml156
-rw-r--r--.gitignore6
-rw-r--r--.pylintrc46
-rw-r--r--.travis.yml56
-rw-r--r--AUTHORS.rst80
-rw-r--r--CHANGELOG.rst440
-rw-r--r--CONTRIBUTING.md49
-rw-r--r--Dockerfile53
-rw-r--r--Makefile160
-rw-r--r--PULL_REQUEST_TEMPLATE.md25
-rw-r--r--README.rst154
-rw-r--r--debian/changelog83
-rw-r--r--debian/clean6
-rw-r--r--debian/control16
-rw-r--r--debian/copyright35
-rw-r--r--debian/examples/apache2/sites-available/searx.conf5
-rw-r--r--debian/gbp.conf8
-rw-r--r--debian/ionicons/svg-orig/alert-circled.svg22
-rw-r--r--debian/ionicons/svg-orig/android-alert.svg24
-rw-r--r--debian/ionicons/svg-orig/android-arrow-dropdown.svg18
-rw-r--r--debian/ionicons/svg-orig/android-globe.svg48
-rw-r--r--debian/ionicons/svg-orig/android-more-vertical.svg18
-rw-r--r--debian/ionicons/svg-orig/android-time.svg30
-rw-r--r--debian/ionicons/svg-orig/arrow-down-a.svg14
-rw-r--r--debian/ionicons/svg-orig/arrow-swap.svg20
-rw-r--r--debian/ionicons/svg-orig/arrow-up-a.svg14
-rw-r--r--debian/ionicons/svg-orig/chevron-left.svg18
-rw-r--r--debian/ionicons/svg-orig/chevron-right.svg18
-rw-r--r--debian/ionicons/svg-orig/chevron-up.svg18
-rw-r--r--debian/ionicons/svg-orig/close-round.svg18
-rw-r--r--debian/ionicons/svg-orig/ios-film-outline.svg18
-rw-r--r--debian/ionicons/svg-orig/ios-telephone.svg24
-rw-r--r--debian/ionicons/svg-orig/link.svg30
-rw-r--r--debian/ionicons/svg-orig/location.svg22
-rw-r--r--debian/ionicons/svg-orig/music-note.svg20
-rw-r--r--debian/ionicons/svg-orig/navicon-round.svg28
-rw-r--r--debian/ionicons/svg-orig/play.svg16
-rw-r--r--debian/ionicons/svg-orig/search.svg20
-rw-r--r--debian/patches/beautifyjs4
-rw-r--r--debian/patches/clean-gruntfiles52
-rw-r--r--debian/patches/managesh39
-rw-r--r--debian/patches/series3
-rw-r--r--debian/patches/settingsyml10
-rw-r--r--debian/patches/setuppy6
-rw-r--r--debian/python3-searx.install20
-rw-r--r--debian/python3-searx.links4
-rw-r--r--debian/python3-searx.lintian-overrides4
-rwxr-xr-xdebian/rules36
-rw-r--r--debian/salsa-ci.yml9
-rw-r--r--debian/searx.examples1
-rw-r--r--debian/searx.install1
-rw-r--r--debian/source/lintian-overrides3
-rw-r--r--debian/tests/apache224
-rw-r--r--debian/tests/control19
-rw-r--r--debian/tests/nginx (renamed from debian/tests/general)9
-rw-r--r--debian/upstream/metadata6
-rwxr-xr-xdockerfiles/docker-entrypoint.sh53
-rw-r--r--dockerfiles/uwsgi.ini14
-rw-r--r--docs/_themes/searx/static/searx.css12
-rw-r--r--docs/admin/arch_public.dot8
-rw-r--r--docs/admin/architecture.rst14
-rw-r--r--docs/admin/buildhosts.rst82
-rw-r--r--docs/admin/engines.rst41
-rw-r--r--docs/admin/engines/recoll.rst50
-rw-r--r--docs/admin/filtron.rst247
-rw-r--r--docs/admin/index.rst9
-rw-r--r--docs/admin/installation-apache.rst515
-rw-r--r--docs/admin/installation-docker.rst60
-rw-r--r--docs/admin/installation-nginx.rst383
-rw-r--r--docs/admin/installation-searx.rst120
-rw-r--r--docs/admin/installation-uwsgi.rst150
-rw-r--r--docs/admin/installation.rst367
-rw-r--r--docs/admin/morty.rst22
-rw-r--r--docs/admin/plugins.rst2
-rw-r--r--docs/admin/settings.rst315
-rw-r--r--docs/admin/update-searx.rst59
-rw-r--r--docs/blog/command-line-engines.rst65
-rw-r--r--docs/blog/index.rst9
-rw-r--r--docs/blog/lxcdev-202006.rst413
-rw-r--r--docs/blog/private-engines.rst65
-rw-r--r--docs/blog/python3.rst2
-rw-r--r--docs/blog/search-database-engines.rst95
-rw-r--r--docs/blog/search-indexer-engines.rst114
-rw-r--r--docs/blog/sql-engines.rst117
-rw-r--r--docs/build-templates/filtron.rst52
-rw-r--r--docs/build-templates/morty.rst52
-rw-r--r--docs/build-templates/searx.rst210
-rw-r--r--docs/conf.py75
-rw-r--r--docs/dev/contribution_guide.rst59
-rw-r--r--docs/dev/engine_overview.rst101
-rw-r--r--docs/dev/index.rst3
-rw-r--r--docs/dev/makefile.rst257
-rw-r--r--docs/dev/plugins.rst15
-rw-r--r--docs/dev/quickstart.rst129
-rw-r--r--docs/dev/reST.rst68
-rw-r--r--docs/dev/search_api.rst8
-rw-r--r--docs/index.rst21
-rw-r--r--docs/searx_extra/index.rst14
-rw-r--r--docs/searx_extra/standalone_searx.py.rst9
-rw-r--r--docs/user/index.rst4
-rw-r--r--docs/user/own-instance.rst16
-rw-r--r--docs/user/public_instances.rst318
-rw-r--r--docs/user/search_syntax.rst24
-rw-r--r--docs/utils/filtron.sh.rst80
-rw-r--r--docs/utils/index.rst52
-rw-r--r--docs/utils/lxc.sh.rst149
-rw-r--r--docs/utils/morty.sh.rst80
-rw-r--r--docs/utils/searx.sh.rst39
-rwxr-xr-xmanage503
-rwxr-xr-xmanage.sh281
-rw-r--r--requirements-dev.txt33
-rw-r--r--requirements.txt25
-rw-r--r--searx/__init__.py99
-rw-r--r--searx/answerers/__init__.py8
-rw-r--r--searx/answerers/random/answerer.py32
-rw-r--r--searx/answerers/statistics/answerer.py15
-rw-r--r--searx/autocomplete.py135
-rw-r--r--searx/data/__init__.py50
-rw-r--r--searx/data/ahmia_blacklist.txt44755
-rw-r--r--searx/data/currencies.json22277
-rw-r--r--searx/data/engines_languages.json56073
-rw-r--r--searx/data/external_bangs.json19068
-rw-r--r--searx/data/external_urls.json156
-rw-r--r--searx/data/osm_keys_tags.json15416
-rw-r--r--searx/data/useragents.json11
-rw-r--r--searx/data/wikidata_units.json1230
-rw-r--r--searx/engines/1337x.py32
-rw-r--r--searx/engines/__init__.py89
-rw-r--r--searx/engines/acgsou.py75
-rw-r--r--searx/engines/ahmia.py85
-rw-r--r--searx/engines/apkmirror.py59
-rw-r--r--searx/engines/archlinux.py31
-rw-r--r--searx/engines/arxiv.py48
-rw-r--r--searx/engines/bandcamp.py73
-rwxr-xr-xsearx/engines/base.py30
-rw-r--r--searx/engines/bing.py58
-rw-r--r--searx/engines/bing_images.py64
-rw-r--r--searx/engines/bing_news.py40
-rw-r--r--searx/engines/bing_videos.py29
-rw-r--r--searx/engines/btdigg.py28
-rw-r--r--searx/engines/command.py172
-rw-r--r--searx/engines/core.py82
-rw-r--r--searx/engines/currency_convert.py81
-rw-r--r--searx/engines/dailymotion.py24
-rw-r--r--searx/engines/deezer.py23
-rw-r--r--searx/engines/deviantart.py104
-rw-r--r--searx/engines/dictzone.py58
-rw-r--r--searx/engines/digbt.py28
-rw-r--r--searx/engines/digg.py93
-rw-r--r--searx/engines/doku.py30
-rw-r--r--searx/engines/duckduckgo.py194
-rw-r--r--searx/engines/duckduckgo_definitions.py254
-rw-r--r--searx/engines/duckduckgo_images.py43
-rw-r--r--searx/engines/duden.py65
-rw-r--r--searx/engines/dummy-offline.py20
-rw-r--r--searx/engines/dummy.py14
-rw-r--r--searx/engines/ebay.py73
-rw-r--r--searx/engines/elasticsearch.py145
-rw-r--r--searx/engines/emojipedia.py68
-rw-r--r--searx/engines/etools.py56
-rw-r--r--searx/engines/faroo.py96
-rw-r--r--searx/engines/fdroid.py22
-rw-r--r--searx/engines/filecrop.py88
-rw-r--r--searx/engines/flickr.py22
-rw-r--r--searx/engines/flickr_noapi.py37
-rw-r--r--searx/engines/framalibre.py28
-rw-r--r--searx/engines/freesound.py69
-rw-r--r--searx/engines/frinkiac.py25
-rw-r--r--searx/engines/genius.py38
-rw-r--r--searx/engines/gentoo.py27
-rw-r--r--searx/engines/gigablast.py197
-rw-r--r--searx/engines/github.py23
-rw-r--r--searx/engines/google.py616
-rw-r--r--searx/engines/google_images.py256
-rw-r--r--searx/engines/google_news.py230
-rw-r--r--searx/engines/google_play_apps.py69
-rw-r--r--searx/engines/google_scholar.py158
-rw-r--r--searx/engines/google_videos.py247
-rw-r--r--searx/engines/imdb.py55
-rw-r--r--searx/engines/ina.py41
-rw-r--r--searx/engines/invidious.py54
-rw-r--r--searx/engines/json_engine.py31
-rw-r--r--searx/engines/kickass.py24
-rw-r--r--searx/engines/lingva.py68
-rw-r--r--searx/engines/loc.py68
-rw-r--r--searx/engines/mediathekviewweb.py68
-rw-r--r--searx/engines/mediawiki.py28
-rw-r--r--searx/engines/meilisearch.py59
-rw-r--r--searx/engines/microsoft_academic.py78
-rw-r--r--searx/engines/mixcloud.py21
-rw-r--r--searx/engines/mongodb.py61
-rw-r--r--searx/engines/mysql_server.py62
-rw-r--r--searx/engines/nyaa.py23
-rw-r--r--searx/engines/onesearch.py57
-rw-r--r--searx/engines/opensemantic.py46
-rw-r--r--searx/engines/openstreetmap.py493
-rw-r--r--searx/engines/openverse.py53
-rw-r--r--searx/engines/pdbe.py19
-rw-r--r--searx/engines/peertube.py96
-rw-r--r--searx/engines/photon.py24
-rw-r--r--searx/engines/piratebay.py139
-rw-r--r--searx/engines/postgresql.py69
-rw-r--r--searx/engines/prowlarr.py80
-rw-r--r--searx/engines/pubmed.py26
-rw-r--r--searx/engines/qwant.py296
-rw-r--r--searx/engines/recoll.py111
-rw-r--r--searx/engines/reddit.py21
-rw-r--r--searx/engines/redis_server.py69
-rw-r--r--searx/engines/rumble.py81
-rw-r--r--searx/engines/scanr_structures.py21
-rw-r--r--searx/engines/searchcode_code.py24
-rw-r--r--searx/engines/searchcode_doc.py49
-rw-r--r--searx/engines/searx_engine.py18
-rw-r--r--searx/engines/seedpeer.py78
-rw-r--r--searx/engines/semantic_scholar.py79
-rw-r--r--searx/engines/sepiasearch.py102
-rw-r--r--searx/engines/seznam.py67
-rw-r--r--searx/engines/sjp.py94
-rw-r--r--searx/engines/solidtorrents.py53
-rw-r--r--searx/engines/solr.py74
-rw-r--r--searx/engines/soundcloud.py30
-rw-r--r--searx/engines/spotify.py27
-rw-r--r--searx/engines/springer.py74
-rw-r--r--searx/engines/sqlite.py51
-rw-r--r--searx/engines/stackexchange.py67
-rw-r--r--searx/engines/stackoverflow.py30
-rw-r--r--searx/engines/startpage.py206
-rw-r--r--searx/engines/tineye.py204
-rw-r--r--searx/engines/tokyotoshokan.py24
-rw-r--r--searx/engines/torrentz.py31
-rw-r--r--searx/engines/translated.py53
-rw-r--r--searx/engines/tvmaze.py50
-rw-r--r--searx/engines/twitter.py87
-rw-r--r--searx/engines/unsplash.py21
-rw-r--r--searx/engines/vimeo.py29
-rw-r--r--searx/engines/wikidata.py1107
-rw-r--r--searx/engines/wikipedia.py121
-rw-r--r--searx/engines/wolframalpha_api.py43
-rw-r--r--searx/engines/wolframalpha_noapi.py25
-rw-r--r--searx/engines/wordnik.py77
-rw-r--r--searx/engines/www1x.py43
-rw-r--r--searx/engines/xpath.py196
-rw-r--r--searx/engines/xpath_flex.py121
-rw-r--r--searx/engines/yacy.py40
-rw-r--r--searx/engines/yahoo.py205
-rw-r--r--searx/engines/yahoo_news.py167
-rw-r--r--searx/engines/yandex.py64
-rw-r--r--searx/engines/yggtorrent.py128
-rw-r--r--searx/engines/youtube_api.py30
-rw-r--r--searx/engines/youtube_noapi.py110
-rw-r--r--searx/exceptions.py72
-rw-r--r--searx/external_bang.py89
-rw-r--r--searx/external_urls.py89
-rw-r--r--searx/languages.py134
-rw-r--r--searx/metrology/__init__.py0
-rw-r--r--searx/metrology/error_recorder.py144
-rw-r--r--searx/plugins/__init__.py122
-rw-r--r--searx/plugins/ahmia_filter.py33
-rw-r--r--searx/plugins/hash_plugin.py54
-rw-r--r--searx/plugins/hostname_replace.py28
-rw-r--r--searx/plugins/https_rewrite.py5
-rw-r--r--searx/plugins/oa_doi_rewrite.py6
-rw-r--r--searx/plugins/open_results_on_new_tab.py25
-rw-r--r--searx/plugins/search_operators.py32
-rw-r--r--searx/plugins/self_info.py12
-rw-r--r--searx/plugins/tracker_url_remover.py3
-rw-r--r--searx/poolrequests.py98
-rw-r--r--searx/preferences.py357
-rw-r--r--searx/query.py455
-rw-r--r--searx/raise_for_httperror.py66
-rw-r--r--searx/results.py147
-rw-r--r--searx/search.py547
-rw-r--r--searx/search/__init__.py213
-rw-r--r--searx/search/checker/__init__.py4
-rw-r--r--searx/search/checker/__main__.py95
-rw-r--r--searx/search/checker/background.py125
-rw-r--r--searx/search/checker/impl.py416
-rw-r--r--searx/search/models.py71
-rw-r--r--searx/search/processors/__init__.py41
-rw-r--r--searx/search/processors/abstract.py52
-rw-r--r--searx/search/processors/offline.py51
-rw-r--r--searx/search/processors/online.py266
-rw-r--r--searx/search/processors/online_currency.py69
-rw-r--r--searx/search/processors/online_dictionary.py54
-rw-r--r--searx/settings.yml1256
-rw-r--r--searx/settings_loader.py140
-rw-r--r--searx/settings_robot.yml19
-rw-r--r--searx/shared/__init__.py31
-rw-r--r--searx/shared/shared_abstract.py21
-rw-r--r--searx/shared/shared_simple.py39
-rw-r--r--searx/shared/shared_uwsgi.py64
-rw-r--r--searx/static/plugins/external_plugins/.gitignore3
-rw-r--r--searx/static/plugins/js/infinite_scroll.js50
-rw-r--r--searx/static/plugins/js/open_results_on_new_tab.js3
-rw-r--r--searx/static/plugins/js/search_on_category_select.js18
-rw-r--r--searx/static/themes/__common__/js/image_layout.js (renamed from searx/static/themes/simple/js/searx_src/searx_imageresult.js)110
-rw-r--r--searx/static/themes/courgette/img/favicon.pngbin2039 -> 0 bytes
-rw-r--r--searx/static/themes/courgette/img/preference-icon.pngbin1315 -> 0 bytes
-rw-r--r--searx/static/themes/courgette/img/search-icon.pngbin3270 -> 0 bytes
-rw-r--r--searx/static/themes/courgette/img/searx-mobile.pngbin9415 -> 0 bytes
-rw-r--r--searx/static/themes/courgette/img/searx.pngbin3902 -> 0 bytes
-rw-r--r--searx/static/themes/courgette/img/searx_logo.svg203
-rw-r--r--searx/static/themes/courgette/js/searx.js45
-rw-r--r--searx/static/themes/courgette/less/style-rtl.less42
-rw-r--r--searx/static/themes/courgette/less/style.less695
-rw-r--r--searx/static/themes/legacy/img/favicon.pngbin2039 -> 0 bytes
-rw-r--r--searx/static/themes/legacy/img/preference-icon.pngbin532 -> 0 bytes
-rw-r--r--searx/static/themes/legacy/img/search-icon.pngbin2329 -> 0 bytes
-rw-r--r--searx/static/themes/legacy/img/searx.pngbin3902 -> 0 bytes
-rw-r--r--searx/static/themes/legacy/img/searx_logo.svg203
-rw-r--r--searx/static/themes/legacy/js/searx.js49
-rw-r--r--searx/static/themes/legacy/less/autocompleter.less61
-rw-r--r--searx/static/themes/legacy/less/code.less83
-rw-r--r--searx/static/themes/legacy/less/definitions.less119
-rw-r--r--searx/static/themes/legacy/less/mixins.less27
-rw-r--r--searx/static/themes/legacy/less/search.less68
-rw-r--r--searx/static/themes/legacy/less/style-rtl.less11
-rw-r--r--searx/static/themes/legacy/less/style.less743
-rw-r--r--searx/static/themes/oscar/.gitignore2
-rw-r--r--searx/static/themes/oscar/README.rst39
-rw-r--r--searx/static/themes/oscar/css/images/layers-2x.pngbin0 -> 1259 bytes
-rw-r--r--searx/static/themes/oscar/css/images/layers.pngbin0 -> 696 bytes
-rw-r--r--searx/static/themes/oscar/css/images/marker-icon-2x.pngbin0 -> 2464 bytes
-rw-r--r--searx/static/themes/oscar/css/images/marker-icon.pngbin0 -> 1466 bytes
-rw-r--r--searx/static/themes/oscar/css/images/marker-shadow.pngbin0 -> 618 bytes
-rw-r--r--searx/static/themes/oscar/css/pointhi.css706
-rw-r--r--searx/static/themes/oscar/gruntfile.js122
-rw-r--r--searx/static/themes/oscar/img/map/layers-2x.pngbin1763 -> 0 bytes
-rw-r--r--searx/static/themes/oscar/img/map/layers.pngbin1142 -> 0 bytes
-rw-r--r--searx/static/themes/oscar/img/map/marker-icon-2x-green.pngbin3753 -> 0 bytes
-rw-r--r--searx/static/themes/oscar/img/map/marker-icon-2x-orange.pngbin3691 -> 0 bytes
-rw-r--r--searx/static/themes/oscar/img/map/marker-icon-2x-red.pngbin3692 -> 0 bytes
-rw-r--r--searx/static/themes/oscar/img/map/marker-icon-2x.pngbin4033 -> 0 bytes
-rw-r--r--searx/static/themes/oscar/img/map/marker-icon-green.pngbin1696 -> 0 bytes
-rw-r--r--searx/static/themes/oscar/img/map/marker-icon-orange.pngbin1714 -> 0 bytes
-rw-r--r--searx/static/themes/oscar/img/map/marker-icon-red.pngbin1690 -> 0 bytes
-rw-r--r--searx/static/themes/oscar/img/map/marker-icon.pngbin1747 -> 0 bytes
-rw-r--r--searx/static/themes/oscar/img/map/marker-shadow.pngbin797 -> 0 bytes
-rw-r--r--searx/static/themes/oscar/js/searx.js356
-rw-r--r--searx/static/themes/oscar/js/searx_src/00_requirejs_config.js23
-rw-r--r--searx/static/themes/oscar/js/searx_src/autocompleter.js37
-rw-r--r--searx/static/themes/oscar/js/searx_src/leaflet_map.js167
-rw-r--r--searx/static/themes/oscar/less/logicodev/code.less101
-rw-r--r--searx/static/themes/oscar/less/logicodev/infobox.less37
-rw-r--r--searx/static/themes/oscar/less/logicodev/preferences.less3
-rw-r--r--searx/static/themes/oscar/less/logicodev/search.less80
-rw-r--r--searx/static/themes/oscar/less/pointhi/code.less79
-rw-r--r--searx/static/themes/oscar/less/pointhi/infobox.less11
-rw-r--r--searx/static/themes/oscar/less/pointhi/preferences.less3
-rw-r--r--searx/static/themes/oscar/less/pointhi/search.less33
-rw-r--r--searx/static/themes/oscar/package.json20
-rw-r--r--searx/static/themes/oscar/src/js/01_init.js (renamed from searx/static/themes/oscar/js/searx_src/01_init.js)6
-rw-r--r--searx/static/themes/oscar/src/js/autocompleter.js60
-rw-r--r--searx/static/themes/oscar/src/js/element_modifiers.js (renamed from searx/static/themes/oscar/js/searx_src/element_modifiers.js)18
-rw-r--r--searx/static/themes/oscar/src/js/infobox.js11
-rw-r--r--searx/static/themes/oscar/src/js/leaflet_map.js79
-rw-r--r--searx/static/themes/oscar/src/js/toggleall.js10
-rw-r--r--searx/static/themes/oscar/src/less/bootstrap/bootstrap.less3
-rw-r--r--searx/static/themes/oscar/src/less/bootstrap/typeahead.less154
-rw-r--r--searx/static/themes/oscar/src/less/logicodev-dark/oscar.less (renamed from searx/static/themes/oscar/less/logicodev-dark/oscar.less)22
-rw-r--r--searx/static/themes/oscar/src/less/logicodev/advanced.less (renamed from searx/static/themes/oscar/less/logicodev/advanced.less)4
-rw-r--r--searx/static/themes/oscar/src/less/logicodev/checkbox.less (renamed from searx/static/themes/oscar/less/logicodev/checkbox.less)0
-rw-r--r--searx/static/themes/oscar/src/less/logicodev/code.less14
-rw-r--r--searx/static/themes/oscar/src/less/logicodev/cursor.less (renamed from searx/static/themes/oscar/less/logicodev/cursor.less)0
-rw-r--r--searx/static/themes/oscar/src/less/logicodev/footer.less (renamed from searx/static/themes/oscar/less/logicodev/footer.less)0
-rw-r--r--searx/static/themes/oscar/src/less/logicodev/infobox.less92
-rw-r--r--searx/static/themes/oscar/src/less/logicodev/navbar.less (renamed from searx/static/themes/oscar/less/logicodev/navbar.less)0
-rw-r--r--searx/static/themes/oscar/src/less/logicodev/onoff.less (renamed from searx/static/themes/oscar/less/logicodev/onoff.less)21
-rw-r--r--searx/static/themes/oscar/src/less/logicodev/oscar.less (renamed from searx/static/themes/oscar/less/logicodev/oscar.less)0
-rw-r--r--searx/static/themes/oscar/src/less/logicodev/preferences.less31
-rw-r--r--searx/static/themes/oscar/src/less/logicodev/pygments.less99
-rw-r--r--searx/static/themes/oscar/src/less/logicodev/results.less (renamed from searx/static/themes/oscar/less/logicodev/results.less)98
-rw-r--r--searx/static/themes/oscar/src/less/logicodev/search.less113
-rw-r--r--searx/static/themes/oscar/src/less/logicodev/variables.less (renamed from searx/static/themes/oscar/less/logicodev/variables.less)9
-rw-r--r--searx/static/themes/oscar/src/less/pointhi/advanced.less (renamed from searx/static/themes/oscar/less/pointhi/advanced.less)0
-rw-r--r--searx/static/themes/oscar/src/less/pointhi/checkbox.less (renamed from searx/static/themes/oscar/less/pointhi/checkbox.less)0
-rw-r--r--searx/static/themes/oscar/src/less/pointhi/code.less2
-rw-r--r--searx/static/themes/oscar/src/less/pointhi/cursor.less (renamed from searx/static/themes/oscar/less/pointhi/cursor.less)0
-rw-r--r--searx/static/themes/oscar/src/less/pointhi/footer.less (renamed from searx/static/themes/oscar/less/pointhi/footer.less)0
-rw-r--r--searx/static/themes/oscar/src/less/pointhi/infobox.less62
-rw-r--r--searx/static/themes/oscar/src/less/pointhi/navbar.less (renamed from searx/static/themes/oscar/less/pointhi/navbar.less)0
-rw-r--r--searx/static/themes/oscar/src/less/pointhi/onoff.less (renamed from searx/static/themes/oscar/less/pointhi/onoff.less)0
-rw-r--r--searx/static/themes/oscar/src/less/pointhi/oscar.less (renamed from searx/static/themes/oscar/less/pointhi/oscar.less)4
-rw-r--r--searx/static/themes/oscar/src/less/pointhi/preferences.less19
-rw-r--r--searx/static/themes/oscar/src/less/pointhi/pygments.less99
-rw-r--r--searx/static/themes/oscar/src/less/pointhi/results.less (renamed from searx/static/themes/oscar/less/pointhi/results.less)4
-rw-r--r--searx/static/themes/oscar/src/less/pointhi/search.less56
-rw-r--r--searx/static/themes/pix-art/img/favicon.pngbin2039 -> 0 bytes
-rw-r--r--searx/static/themes/pix-art/img/preference-icon-pixel.pngbin242 -> 0 bytes
-rw-r--r--searx/static/themes/pix-art/img/search-icon-pixel.pngbin204 -> 0 bytes
-rw-r--r--searx/static/themes/pix-art/img/searx-pixel-small.pngbin236 -> 0 bytes
-rw-r--r--searx/static/themes/pix-art/img/searx-pixel.pngbin435 -> 0 bytes
-rw-r--r--searx/static/themes/pix-art/js/searx.js141
-rw-r--r--searx/static/themes/pix-art/less/definitions.less119
-rw-r--r--searx/static/themes/pix-art/less/mixins.less27
-rw-r--r--searx/static/themes/pix-art/less/search.less57
-rw-r--r--searx/static/themes/pix-art/less/style.less451
-rw-r--r--searx/static/themes/simple/.gitignore1
-rw-r--r--searx/static/themes/simple/fonts/ion.css139
-rw-r--r--searx/static/themes/simple/fonts/ion.eotbin0 -> 4094 bytes
-rw-r--r--searx/static/themes/simple/fonts/ion.html268
-rw-r--r--searx/static/themes/simple/fonts/ion.svg105
-rw-r--r--searx/static/themes/simple/fonts/ion.ttfbin0 -> 3936 bytes
-rw-r--r--searx/static/themes/simple/fonts/ion.woffbin0 -> 4856 bytes
-rw-r--r--searx/static/themes/simple/fonts/ion.woff2bin0 -> 2112 bytes
-rw-r--r--searx/static/themes/simple/gruntfile.js17
-rw-r--r--searx/static/themes/simple/js/searx.head.js2
-rw-r--r--searx/static/themes/simple/js/searx_head/00_init.js2
-rw-r--r--searx/static/themes/simple/js/searx_src/searx_mapresult.js87
-rw-r--r--searx/static/themes/simple/js/searx_src/searx_results.js2
-rw-r--r--searx/static/themes/simple/js/searx_src/searx_search.js8
-rw-r--r--searx/static/themes/simple/less/code.less85
-rw-r--r--searx/static/themes/simple/less/preferences.less17
-rw-r--r--searx/static/themes/simple/less/pygments.less99
-rw-r--r--searx/static/themes/simple/less/style.less36
-rw-r--r--searx/templates/__common__/about.html145
-rw-r--r--searx/templates/__common__/opensearch.xml26
-rw-r--r--searx/templates/__common__/opensearch_response_rss.xml28
-rw-r--r--searx/templates/courgette/404.html9
-rw-r--r--searx/templates/courgette/about.html5
-rw-r--r--searx/templates/courgette/base.html43
-rw-r--r--searx/templates/courgette/categories.html9
-rw-r--r--searx/templates/courgette/color.css34
-rw-r--r--searx/templates/courgette/github_ribbon.html3
-rw-r--r--searx/templates/courgette/index.html17
-rw-r--r--searx/templates/courgette/preferences.html132
-rw-r--r--searx/templates/courgette/result_templates/code.html11
-rw-r--r--searx/templates/courgette/result_templates/default.html13
-rw-r--r--searx/templates/courgette/result_templates/images.html6
-rw-r--r--searx/templates/courgette/result_templates/key-value.html13
-rw-r--r--searx/templates/courgette/result_templates/map.html13
-rw-r--r--searx/templates/courgette/result_templates/torrent.html13
-rw-r--r--searx/templates/courgette/result_templates/videos.html10
-rw-r--r--searx/templates/courgette/results.html87
-rw-r--r--searx/templates/courgette/search.html7
-rw-r--r--searx/templates/courgette/stats.html22
-rw-r--r--searx/templates/legacy/404.html9
-rw-r--r--searx/templates/legacy/about.html5
-rw-r--r--searx/templates/legacy/base.html38
-rw-r--r--searx/templates/legacy/categories.html10
-rw-r--r--searx/templates/legacy/github_ribbon.html3
-rw-r--r--searx/templates/legacy/index.html18
-rw-r--r--searx/templates/legacy/infobox.html51
-rw-r--r--searx/templates/legacy/preferences.html129
-rw-r--r--searx/templates/legacy/result_templates/code.html11
-rw-r--r--searx/templates/legacy/result_templates/default.html6
-rw-r--r--searx/templates/legacy/result_templates/images.html6
-rw-r--r--searx/templates/legacy/result_templates/key-value.html13
-rw-r--r--searx/templates/legacy/result_templates/map.html13
-rw-r--r--searx/templates/legacy/result_templates/torrent.html13
-rw-r--r--searx/templates/legacy/result_templates/videos.html6
-rw-r--r--searx/templates/legacy/results.html100
-rw-r--r--searx/templates/legacy/search.html8
-rw-r--r--searx/templates/legacy/stats.html22
-rw-r--r--searx/templates/oscar/404.html2
-rw-r--r--searx/templates/oscar/advanced.html2
-rw-r--r--searx/templates/oscar/base.html43
-rw-r--r--searx/templates/oscar/categories.html4
-rw-r--r--searx/templates/oscar/index.html17
-rw-r--r--searx/templates/oscar/infobox.html19
-rw-r--r--searx/templates/oscar/languages.html4
-rw-r--r--searx/templates/oscar/macros.html141
-rw-r--r--searx/templates/oscar/messages/no_results.html2
-rw-r--r--searx/templates/oscar/preferences.html237
-rw-r--r--searx/templates/oscar/result_templates/code.html4
-rw-r--r--searx/templates/oscar/result_templates/default.html24
-rw-r--r--searx/templates/oscar/result_templates/files.html55
-rw-r--r--searx/templates/oscar/result_templates/images.html4
-rw-r--r--searx/templates/oscar/result_templates/key-value.html6
-rw-r--r--searx/templates/oscar/result_templates/map.html116
-rw-r--r--searx/templates/oscar/result_templates/products.html23
-rw-r--r--searx/templates/oscar/result_templates/torrent.html34
-rw-r--r--searx/templates/oscar/result_templates/videos.html38
-rw-r--r--searx/templates/oscar/results.html67
-rw-r--r--searx/templates/oscar/search.html5
-rw-r--r--searx/templates/oscar/search_full.html5
-rw-r--r--searx/templates/oscar/time-range.html4
-rw-r--r--searx/templates/pix-art/404.html9
-rw-r--r--searx/templates/pix-art/about.html4
-rw-r--r--searx/templates/pix-art/base.html35
-rw-r--r--searx/templates/pix-art/index.html12
-rw-r--r--searx/templates/pix-art/preferences.html82
-rw-r--r--searx/templates/pix-art/result_templates/default.html7
-rw-r--r--searx/templates/pix-art/result_templates/images.html6
-rw-r--r--searx/templates/pix-art/results.html32
-rw-r--r--searx/templates/pix-art/search.html9
-rw-r--r--searx/templates/pix-art/stats.html22
-rw-r--r--searx/templates/simple/404.html2
-rw-r--r--searx/templates/simple/base.html17
-rw-r--r--searx/templates/simple/categories.html2
-rw-r--r--searx/templates/simple/infobox.html3
-rw-r--r--searx/templates/simple/macros.html6
-rw-r--r--searx/templates/simple/messages/no_results.html2
-rw-r--r--searx/templates/simple/preferences.html49
-rw-r--r--searx/templates/simple/result_templates/map.html87
-rw-r--r--searx/templates/simple/results.html33
-rw-r--r--searx/templates/simple/search.html4
-rw-r--r--searx/testing.py35
-rw-r--r--searx/translations/ar/LC_MESSAGES/messages.po532
-rw-r--r--searx/translations/bg/LC_MESSAGES/messages.po528
-rw-r--r--searx/translations/bo/LC_MESSAGES/messages.po565
-rw-r--r--searx/translations/ca/LC_MESSAGES/messages.po538
-rw-r--r--searx/translations/cs/LC_MESSAGES/messages.po680
-rw-r--r--searx/translations/cy/LC_MESSAGES/messages.po528
-rw-r--r--searx/translations/da/LC_MESSAGES/messages.po533
-rw-r--r--searx/translations/de/LC_MESSAGES/messages.po534
-rw-r--r--searx/translations/el_GR/LC_MESSAGES/messages.po531
-rw-r--r--searx/translations/eo/LC_MESSAGES/messages.po536
-rw-r--r--searx/translations/es/LC_MESSAGES/messages.po541
-rw-r--r--searx/translations/et/LC_MESSAGES/messages.po559
-rw-r--r--searx/translations/eu/LC_MESSAGES/messages.po535
-rw-r--r--searx/translations/fa_IR/LC_MESSAGES/messages.po539
-rw-r--r--searx/translations/fi/LC_MESSAGES/messages.po530
-rw-r--r--searx/translations/fil/LC_MESSAGES/messages.po532
-rw-r--r--searx/translations/fr/LC_MESSAGES/messages.po536
-rw-r--r--searx/translations/gl/LC_MESSAGES/messages.po639
-rw-r--r--searx/translations/he/LC_MESSAGES/messages.po537
-rw-r--r--searx/translations/hr/LC_MESSAGES/messages.po541
-rw-r--r--searx/translations/hu/LC_MESSAGES/messages.po532
-rw-r--r--searx/translations/ia/LC_MESSAGES/messages.po532
-rw-r--r--searx/translations/it/LC_MESSAGES/messages.po538
-rw-r--r--searx/translations/ja/LC_MESSAGES/messages.po534
-rw-r--r--searx/translations/lt/LC_MESSAGES/messages.po532
-rw-r--r--searx/translations/nl/LC_MESSAGES/messages.po535
-rw-r--r--searx/translations/nl_BE/LC_MESSAGES/messages.po533
-rw-r--r--searx/translations/oc/LC_MESSAGES/messages.po534
-rw-r--r--searx/translations/pt/LC_MESSAGES/messages.po532
-rw-r--r--searx/translations/pt_BR/LC_MESSAGES/messages.po550
-rw-r--r--searx/translations/ro/LC_MESSAGES/messages.po532
-rw-r--r--searx/translations/ru/LC_MESSAGES/messages.po540
-rw-r--r--searx/translations/sk/LC_MESSAGES/messages.po532
-rw-r--r--searx/translations/sl/LC_MESSAGES/messages.po530
-rw-r--r--searx/translations/sr/LC_MESSAGES/messages.po541
-rw-r--r--searx/translations/sv/LC_MESSAGES/messages.po538
-rw-r--r--searx/translations/ta/LC_MESSAGES/messages.po528
-rw-r--r--searx/translations/te/LC_MESSAGES/messages.po528
-rw-r--r--searx/translations/tr/LC_MESSAGES/messages.po747
-rw-r--r--searx/translations/uk/LC_MESSAGES/messages.po681
-rw-r--r--searx/translations/vi/LC_MESSAGES/messages.po532
-rw-r--r--searx/translations/zh_CN/LC_MESSAGES/messages.po535
-rw-r--r--searx/translations/zh_TW/LC_MESSAGES/messages.po533
-rw-r--r--searx/url_utils.py30
-rw-r--r--searx/utils.py582
-rw-r--r--searx/version.py4
-rw-r--r--searx/webadapter.py250
-rwxr-xr-x[-rw-r--r--]searx/webapp.py669
-rw-r--r--searx/webutils.py148
-rw-r--r--searx_extra/__init__.py0
-rw-r--r--searx_extra/google_search.py (renamed from utils/google_search.py)0
-rwxr-xr-xsearx_extra/standalone_searx.py217
-rw-r--r--searx_extra/update/__init__.py0
-rwxr-xr-xsearx_extra/update/update_ahmia_blacklist.py30
-rwxr-xr-xsearx_extra/update/update_currencies.py150
-rwxr-xr-xsearx_extra/update/update_engine_descriptions.py202
-rwxr-xr-xsearx_extra/update/update_external_bangs.py157
-rwxr-xr-xsearx_extra/update/update_firefox_version.py (renamed from utils/fetch_firefox_version.py)11
-rwxr-xr-xsearx_extra/update/update_languages.py205
-rwxr-xr-xsearx_extra/update/update_osm_keys_tags.py209
-rwxr-xr-xsearx_extra/update/update_pygments.py138
-rwxr-xr-xsearx_extra/update/update_translations.sh (renamed from utils/update-translations.sh)0
-rwxr-xr-xsearx_extra/update/update_wikidata_units.py54
-rw-r--r--setup.py18
-rw-r--r--tests/__init__.py2
-rw-r--r--tests/robot/__init__.py14
-rw-r--r--tests/test_robot.py23
-rw-r--r--tests/unit/engines/test_command.py240
-rw-r--r--tests/unit/engines/test_xpath.py121
-rw-r--r--tests/unit/settings/empty_settings.yml0
-rw-r--r--tests/unit/settings/syntaxerror_settings.yml2
-rw-r--r--tests/unit/settings/user_settings.yml111
-rw-r--r--tests/unit/settings/user_settings_keep_only.yml14
-rw-r--r--tests/unit/settings/user_settings_remove.yml10
-rw-r--r--tests/unit/settings/user_settings_remove2.yml15
-rw-r--r--tests/unit/settings/user_settings_simple.yml9
-rw-r--r--tests/unit/test_answerers.py4
-rw-r--r--tests/unit/test_engines_init.py44
-rw-r--r--tests/unit/test_external_bangs.py117
-rw-r--r--tests/unit/test_plugins.py92
-rw-r--r--tests/unit/test_poolrequests.py89
-rw-r--r--tests/unit/test_preferences.py54
-rw-r--r--tests/unit/test_query.py254
-rw-r--r--tests/unit/test_results.py8
-rw-r--r--tests/unit/test_search.py90
-rw-r--r--tests/unit/test_settings_loader.py122
-rw-r--r--tests/unit/test_standalone_searx.py111
-rw-r--r--tests/unit/test_utils.py213
-rw-r--r--tests/unit/test_webadapter.py54
-rw-r--r--tests/unit/test_webapp.py102
-rw-r--r--tests/unit/test_webutils.py87
-rw-r--r--utils/brand.env9
-rw-r--r--utils/build_env.py38
-rw-r--r--utils/fabfile.py117
-rw-r--r--utils/fetch_currencies.py163
-rw-r--r--utils/fetch_languages.py191
-rwxr-xr-xutils/filtron.sh561
-rwxr-xr-xutils/lib.sh1845
-rw-r--r--utils/lxc-searx.env97
-rwxr-xr-xutils/lxc.sh560
-rw-r--r--utils/makefile.include75
-rw-r--r--utils/makefile.lxc32
-rw-r--r--utils/makefile.python290
-rw-r--r--utils/makefile.sphinx216
-rwxr-xr-xutils/morty.sh546
-rwxr-xr-xutils/searx.sh914
-rwxr-xr-xutils/standalone_searx.py104
l---------utils/templates/etc/apache21
-rw-r--r--utils/templates/etc/filtron/rules.json129
-rw-r--r--utils/templates/etc/httpd/sites-available/morty.conf28
-rw-r--r--utils/templates/etc/httpd/sites-available/searx.conf:filtron33
-rw-r--r--utils/templates/etc/httpd/sites-available/searx.conf:uwsgi27
-rw-r--r--utils/templates/etc/nginx/default.apps-available/morty.conf11
-rw-r--r--utils/templates/etc/nginx/default.apps-available/searx.conf:filtron16
-rw-r--r--utils/templates/etc/searx/use_default_settings.yml22
-rw-r--r--utils/templates/etc/uwsgi/apps-archlinux/searx.ini88
-rw-r--r--utils/templates/etc/uwsgi/apps-archlinux/searx.ini:socket85
-rw-r--r--utils/templates/etc/uwsgi/apps-available/searx.ini87
-rw-r--r--utils/templates/etc/uwsgi/apps-available/searx.ini:socket84
-rw-r--r--utils/templates/lib/systemd/system/filtron.service29
-rw-r--r--utils/templates/lib/systemd/system/morty.service29
629 files changed, 169377 insertions, 59761 deletions
diff --git a/.config.sh b/.config.sh
new file mode 100644
index 0000000..7eed5f6
--- /dev/null
+++ b/.config.sh
@@ -0,0 +1,59 @@
+# -*- coding: utf-8; mode: sh -*-
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# shellcheck shell=bash disable=SC2034
+#
+# This environment is used by ./utils scripts like filtron.sh or searx.sh. The
+# default values are *most flexible* and *best maintained*, you normally not
+# need to change the defaults (except PUBLIC_URL).
+#
+# Before you change any value here you have to uninstall any previous
+# installation. Further is it recommended to backup your changes simply by
+# adding them to you local brand (git branch)::
+#
+# git add .config
+
+# The public URL of the searx instance: PUBLIC_URL="https://mydomain.xy/searx"
+# The default is taken from ./utils/brand.env.
+
+PUBLIC_URL="${SEARX_URL}"
+
+if [[ ${PUBLIC_URL} == "https://searx.me" ]]; then
+ # hint: Linux containers do not have DNS entries, lets use IPs
+ PUBLIC_URL="http://$(primary_ip)/searx"
+fi
+
+# searx.sh
+# ---------
+
+# SEARX_INTERNAL_URL="127.0.0.1:8888"
+# SEARX_SETTINGS_TEMPLATE="${REPO_ROOT}/utils/templates/etc/searx/use_default_settings.yml"
+
+# Only change, if you maintain a searx brand in your searx fork (GIT_URL) which
+# is not hold by branch 'master'. The branch has to be a local branch, in the
+# repository from which you install (which is most often the case). If you want
+# to install branch 'foo', don't forget to run 'git branch foo origin/foo' once.
+# GIT_BRANCH="${GIT_BRANCH:-master}"
+
+# filtron.sh
+# ----------
+
+# FILTRON_API="127.0.0.1:4005"
+# FILTRON_LISTEN="127.0.0.1:4004"
+# FILTRON_TARGET="127.0.0.1:8888"
+
+# morty.sh
+# --------
+
+# morty listen address
+# MORTY_LISTEN="127.0.0.1:3000"
+# PUBLIC_URL_PATH_MORTY="/morty/"
+
+# system services
+# ---------------
+
+# Common $HOME folder of the service accounts
+# SERVICE_HOME_BASE="/usr/local"
+
+# **experimental**: Set SERVICE_USER to run all services by one account, but be
+# aware that removing discrete components might conflict!
+# SERVICE_USER=searx
diff --git a/.coveragerc b/.coveragerc
index 4f50efc..8540bec 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -1,15 +1,6 @@
[run]
branch = True
-source =
- searx/engines
- searx/__init__.py
- searx/autocomplete.py
- searx/https_rewrite.py
- searx/languages.py
- searx/search.py
- searx/testing.py
- searx/utils.py
- searx/webapp.py
+source = searx
[report]
show_missing = True
diff --git a/.dir-locals.el b/.dir-locals.el
index d7ec879..970199b 100644
--- a/.dir-locals.el
+++ b/.dir-locals.el
@@ -25,7 +25,7 @@
;; Alternatively create the virtualenv, source it and install jedi + epc
;; (required by `emacs-jedi <https://tkf.github.io/emacs-jedi>`_)::
;;
-;; $ virtualenv --python=python3 "--no-site-packages" ./local/py3
+;; $ python -m venv ./local/py3
;; ...
;; $ source ./local/py3/bin/activate
;; (py3)$ # now install into the activated 'py3' environment ..
diff --git a/.dockerignore b/.dockerignore
index f4d0337..3d158c9 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -4,6 +4,9 @@
*/*/*/*~
*/*/*/*/*~
+#
+local/
+
# Git
.git
.gitignore
@@ -36,6 +39,18 @@ robot_report.html
test_basic/
setup.cfg
+# node_modules
node_modules/
+*/node_modules/
+*/*/node_modules/
+*/*/*/node_modules/
+*/*/*/*/node_modules/
+
+.tx/
-.tx/ \ No newline at end of file
+#
+build/
+dist/
+local/
+gh-pages/
+searx.egg-info/
diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md
new file mode 100644
index 0000000..70e490c
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug-report.md
@@ -0,0 +1,39 @@
+---
+name: Bug report
+about: Report a bug in Searx
+title: ''
+labels: bug
+assignees: ''
+
+---
+<!-- PLEASE FILL THESE FIELDS, IT REALLY HELPS THE MAINTAINERS OF SEARX -->
+
+**Version of Searx, commit number if you are using on master branch and stipulate if you forked Searx**
+<!-- If you are running on master branch using git execute this command
+in order to fetch the latest commit ID:
+```
+git log -1
+```
+If you are using searx-docker then look at the bottom of the Searx page
+and check for the version after "Powered by searx"
+
+Please also stipulate if you are using a forked version of Searx and
+include a link to the fork source code.
+-->
+**How did you install Searx?**
+<!-- Did you install Searx using the official wiki or using searx-docker
+or manually by executing the searx/webapp.py file? -->
+**What happened?**
+<!-- A clear and concise description of what the bug is. -->
+
+**How To Reproduce**
+<!-- How can we reproduce this issue? (as minimally and as precisely as possible) -->
+
+**Expected behavior**
+<!-- A clear and concise description of what you expected to happen. -->
+
+**Screenshots & Logs**
+<!-- If applicable, add screenshots, logs to help explain your problem. -->
+
+**Additional context**
+<!-- Add any other context about the problem here. -->
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..617d81d
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,14 @@
+blank_issues_enabled: true
+contact_links:
+ - name: Installation issue using the official wiki
+ url: https://github.com/searx/searx/discussions/new?category_id=32001257
+ about: Ask for help if you are having some issue with installing Searx using the official wiki.
+ - name: Installation issue using searx-docker
+ url: https://github.com/searx/searx/discussions/new?category_id=32001259
+ about: Ask for help if you are having some issue with installing Searx using searx-docker.
+ - name: Installation issue without using the official wiki nor searx-docker
+ url: https://github.com/searx/searx/discussions/new?category_id=32001260
+ about: Ask for help if you are having some issue with installing Searx manually without using the wiki nor searx-docker.
+ - name: Report a bug on a public Searx instance
+ url: https://github.com/searx/searx/discussions/new?category_id=32001412
+ about: Report a bug that you discovered on a public Searx instance. \ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/engine-request.md b/.github/ISSUE_TEMPLATE/engine-request.md
new file mode 100644
index 0000000..3074316
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/engine-request.md
@@ -0,0 +1,31 @@
+---
+name: Engine request
+about: Request a new engine in Searx
+title: ''
+labels: enhancement, engine request
+assignees: ''
+
+---
+<!-- PLEASE FILL THESE FIELDS, IT REALLY HELPS THE MAINTAINERS OF SEARX -->
+
+**Working URL to the engine**
+<!-- Please check if the engine is responding correctly before submitting it. -->
+
+**Why do you want to add this engine?**
+<!-- What's special about this engine? Is it open source or libre? -->
+
+**Features of this engine**
+<!-- Features of this engine: Doesn't track its users, fast, easy to integrate, ... -->
+
+**How can Searx fetch the information from this engine?**
+<!-- List API URL, example code (using the correct markdown) and more
+that could be useful for the developers in order to implement this engine.
+If you don't know what to write, let this part blank.>
+
+**Applicable category of this engine**
+<!-- Where should this new engine fit in Searx? Current categories in Searx:
+general, files, images, it, map, music, news, science, social media and videos.
+You can add multiple categories at the same time. -->
+
+**Additional context**
+<!-- Add any other context about this engine here. -->
diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md
new file mode 100644
index 0000000..63e24b8
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature-request.md
@@ -0,0 +1,21 @@
+---
+name: Feature request
+about: Request a new feature in Searx
+title: ''
+labels: enhancement
+assignees: ''
+
+---
+<!-- PLEASE FILL THESE FIELDS, IT REALLY HELPS THE MAINTAINERS OF SEARX -->
+
+**Is your feature request related to a problem? Please describe.**
+<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->
+
+**Describe the solution you'd like**
+<!-- A clear and concise description of what you want to happen. -->
+
+**Describe alternatives you've considered**
+<!-- A clear and concise description of any alternative solutions or features you've considered. -->
+
+**Additional context**
+<!-- Add any other context or screenshots about the feature request here. -->
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..d2ba03f
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,10 @@
+# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
+version: 2
+updates:
+ - package-ecosystem: "pip"
+ directory: "/"
+ schedule:
+ interval: "weekly"
+ day: "friday"
+ open-pull-requests-limit: 5
+ target-branch: "master"
diff --git a/.github/workflows/data-update.yml b/.github/workflows/data-update.yml
new file mode 100644
index 0000000..4d3a8e1
--- /dev/null
+++ b/.github/workflows/data-update.yml
@@ -0,0 +1,69 @@
+name: "Update searx.data"
+on:
+ schedule:
+ - cron: "05 06 1 * *"
+ workflow_dispatch:
+
+permissions:
+ contents: read
+
+jobs:
+ updateData:
+ name: Update data - ${{ matrix.fetch }}
+ runs-on: ubuntu-20.04
+ if: ${{ github.repository_owner == 'searx'}}
+ strategy:
+ matrix:
+ fetch:
+ - update_ahmia_blacklist.py
+ - update_currencies.py
+ - update_external_bangs.py
+ - update_firefox_version.py
+ - update_languages.py
+ - update_wikidata_units.py
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Install Ubuntu packages
+ run: |
+ sudo ./utils/searx.sh install packages
+
+ - name: Set up Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: '3.10'
+ architecture: 'x64'
+
+ - name: Install Python dependencies
+ run: |
+ make V=1 install
+
+ - name: Fetch data
+ env:
+ FETCH_SCRIPT: ./searx_extra/update/${{ matrix.fetch }}
+ run: |
+ V=1 ./manage pyenv.cmd python "$FETCH_SCRIPT"
+
+ - name: Create Pull Request
+ id: cpr
+ uses: peter-evans/create-pull-request@v3
+ with:
+ token: ${{ secrets.DATA_PR_TOKEN }}
+ commit-message: Update searx.data - ${{ matrix.fetch }}
+ committer: searx-bot <noreply@github.com>
+ author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>
+ signoff: false
+ branch: update_data_${{ matrix.fetch }}
+ delete-branch: true
+ draft: false
+ title: 'Update searx.data - ${{ matrix.fetch }}'
+ body: |
+ Update searx.data - ${{ matrix.fetch }}
+ labels: |
+ data
+
+ - name: Check outputs
+ run: |
+ echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
+ echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"
diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml
new file mode 100644
index 0000000..c75f86d
--- /dev/null
+++ b/.github/workflows/integration.yml
@@ -0,0 +1,156 @@
+name: Integration
+
+on:
+ push:
+ branches: ["master"]
+ pull_request:
+ branches: ["master"]
+
+permissions:
+ contents: read
+
+jobs:
+ python:
+ name: Python ${{ matrix.python-version }}
+ runs-on: ubuntu-20.04
+ strategy:
+ matrix:
+ os: [ubuntu-20.04]
+ python-version: [3.7, 3.8, 3.9, "3.10"]
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Install Ubuntu packages
+ run: |
+ sudo ./utils/searx.sh install packages
+ sudo apt install firefox
+ - name: Set up Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.python-version }}
+ architecture: 'x64'
+ - name: Cache Python dependencies
+ id: cache-python
+ uses: actions/cache@v2
+ with:
+ path: ./local
+ key: python-${{ matrix.os }}-${{ matrix.python-version }}-${{ hashFiles('requirements*.txt', 'setup.py') }}
+ - name: Install Python dependencies
+ if: steps.cache-python.outputs.cache-hit != 'true'
+ run: |
+ make V=1 install
+ make V=1 gecko.driver
+ - name: Run tests
+ run: make V=1 ci.test
+ - name: Test coverage
+ run: make V=1 test.coverage
+ - name: Store coverage result
+ uses: actions/upload-artifact@v2
+ with:
+ name: coverage-${{ matrix.python-version }}
+ path: coverage/
+ retention-days: 60
+
+ themes:
+ name: Themes
+ runs-on: ubuntu-20.04
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - name: Install Ubuntu packages
+ run: sudo ./utils/searx.sh install packages
+ - name: Set up Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: '3.9'
+ architecture: 'x64'
+ - name: Cache Python dependencies
+ id: cache-python
+ uses: actions/cache@v2
+ with:
+ path: ./local
+ key: python-ubuntu-20.04-3.9-${{ hashFiles('requirements*.txt', 'setup.py') }}
+ - name: Install node dependencies
+ run: make V=1 node.env
+ - name: Build themes
+ run: make V=1 themes.all
+
+ documentation:
+ permissions:
+ contents: write # for JamesIves/github-pages-deploy-action to push changes in repo
+ name: Documentation
+ runs-on: ubuntu-20.04
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ with:
+ fetch-depth: '0'
+ persist-credentials: false
+ - name: Install Ubuntu packages
+ run: sudo ./utils/searx.sh install buildhost
+ - name: Set up Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: '3.10'
+ architecture: 'x64'
+ - name: Cache Python dependencies
+ id: cache-python
+ uses: actions/cache@v2
+ with:
+ path: ./local
+ key: python-ubuntu-20.04-3.9-${{ hashFiles('requirements*.txt', 'setup.py') }}
+ - name: Build documentation
+ run: |
+ make V=1 docs.clean docs.html
+ - name: Deploy
+ if: github.ref == 'refs/heads/master'
+ uses: JamesIves/github-pages-deploy-action@3.7.1
+ with:
+ GITHUB_TOKEN: ${{ github.token }}
+ BRANCH: gh-pages
+ FOLDER: dist/docs
+ CLEAN: true # Automatically remove deleted files from the deploy branch
+
+ dockers:
+ name: Docker
+ if: github.ref == 'refs/heads/master'
+ needs:
+ - python
+ - themes
+ - documentation
+ env:
+ DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
+ runs-on: ubuntu-20.04
+ steps:
+ - name: Checkout
+ if: env.DOCKERHUB_USERNAME != null
+ uses: actions/checkout@v2
+ with:
+ # make sure "make docker.push" can get the git history
+ fetch-depth: '0'
+ - name: Set up Python
+ uses: actions/setup-python@v2
+ with:
+ python-version: '3.9'
+ architecture: 'x64'
+ - name: Cache Python dependencies
+ id: cache-python
+ uses: actions/cache@v2
+ with:
+ path: ./local
+ key: python-ubuntu-20.04-3.9-${{ hashFiles('requirements*.txt', 'setup.py') }}
+ - name: Set up QEMU
+ if: env.DOCKERHUB_USERNAME != null
+ uses: docker/setup-qemu-action@v1
+ - name: Set up Docker Buildx
+ if: env.DOCKERHUB_USERNAME != null
+ uses: docker/setup-buildx-action@v1
+ - name: Login to DockerHub
+ if: env.DOCKERHUB_USERNAME != null
+ uses: docker/login-action@v1
+ with:
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
+ - name: Build and push
+ if: env.DOCKERHUB_USERNAME != null
+ run: make -e GIT_URL=$(git remote get-url origin) docker.push
diff --git a/.gitignore b/.gitignore
index 069dfd3..5c0cfe1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
# to sync with .dockerignore
.coverage
coverage/
+cache/
.installed.cfg
engines.cfg
env
@@ -14,8 +15,9 @@ setup.cfg
*.pyc
*/*.pyc
*~
+*.swp
-node_modules/
+/node_modules
.tx/
@@ -24,3 +26,5 @@ dist/
local/
gh-pages/
searx.egg-info/
+.env
+geckodriver.log
diff --git a/.pylintrc b/.pylintrc
index 3b4adb2..5c770a3 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -12,7 +12,7 @@
# A comma-separated list of package or module names from where C extensions may
# be loaded. Extensions are loading into the active Python interpreter and may
# run arbitrary code
-extension-pkg-whitelist=
+extension-pkg-whitelist=lxml.etree
# Add files or directories to the blacklist. They should be base names, not
# paths.
@@ -59,7 +59,7 @@ confidence=
# --enable=similarities". If you want to run only the classes checker, but have
# no Warning level messages displayed, use"--disable=all --enable=classes
# --disable=W"
-disable=bad-whitespace, duplicate-code
+disable=duplicate-code, consider-using-f-string
# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
@@ -105,39 +105,18 @@ max-nested-blocks=5
[BASIC]
-# List of builtins function names that should not be used, separated by a comma
-bad-functions=map,filter,apply,input
-
-# Naming hint for argument names
-argument-name-hint=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
-
-# Regular expression matching correct argument names
-argument-rgx=(([a-z][a-zA-Z0-9_]{2,30})|(_[a-z0-9_]*))$
-
-# Naming hint for attribute names
-attr-name-hint=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
-
# Regular expression matching correct attribute names
attr-rgx=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*)|([A-Z0-9_]*))$
# Bad variable names which should always be refused, separated by a comma
bad-names=foo,bar,baz,toto,tutu,tata
-# Naming hint for class attribute names
-class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
-
# Regular expression matching correct class attribute names
class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
-# Naming hint for class names
-class-name-hint=[A-Z_][a-zA-Z0-9]+$
-
# Regular expression matching correct class names
class-rgx=[A-Z_][a-zA-Z0-9]+$
-# Naming hint for constant names
-const-name-hint=(([A-Z_][A-Z0-9_]*)|(__.*__))$
-
# Regular expression matching correct constant names
const-rgx=(([a-zA-Z_][a-zA-Z0-9_]*)|(__.*__))$
#const-rgx=[f]?[A-Z_][a-zA-Z0-9_]{2,30}$
@@ -146,9 +125,6 @@ const-rgx=(([a-zA-Z_][a-zA-Z0-9_]*)|(__.*__))$
# ones are exempt.
docstring-min-length=-1
-# Naming hint for function names
-function-name-hint=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
-
# Regular expression matching correct function names
function-rgx=(([a-z][a-zA-Z0-9_]{2,30})|(_[a-z0-9_]*))$
@@ -158,21 +134,12 @@ good-names=i,j,k,ex,Run,_,log,cfg,id
# Include a hint for the correct naming format with invalid-name
include-naming-hint=no
-# Naming hint for inline iteration names
-inlinevar-name-hint=[A-Za-z_][A-Za-z0-9_]*$
-
# Regular expression matching correct inline iteration names
inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
-# Naming hint for method names
-method-name-hint=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
-
# Regular expression matching correct method names
method-rgx=(([a-z][a-zA-Z0-9_]{2,30})|(_[a-z0-9_]*))$
-# Naming hint for module names
-module-name-hint=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
-
# Regular expression matching correct module names
#module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
module-rgx=([a-z_][a-z0-9_]*)$
@@ -189,9 +156,6 @@ no-docstring-rgx=^_
# to this list to register other decorators that produce valid properties.
property-classes=abc.abstractproperty
-# Naming hint for variable names
-variable-name-hint=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
-
# Regular expression matching correct variable names
variable-rgx=(([a-z][a-zA-Z0-9_]{2,30})|(_[a-z0-9_]*)|([a-z]))$
@@ -217,12 +181,6 @@ max-line-length=120
# Maximum number of lines in a module
max-module-lines=2000
-# List of optional constructs for which whitespace checking is disabled. `dict-
-# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}.
-# `trailing-comma` allows a space between comma and closing bracket: (a, ).
-# `empty-line` allows space-only lines.
-no-space-check=trailing-comma,dict-separator
-
# Allow the body of a class to be on the same line as the declaration if body
# contains single statement.No config file found, using default configuration
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index e37b658..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,56 +0,0 @@
-language: python
-sudo: false
-cache:
- - pip
- - npm
- - directories:
- - $HOME/.cache/pip
-
-addons:
- firefox: "latest"
-
-install:
- - ./manage.sh install_geckodriver ~/drivers
- - export PATH=~/drivers:$PATH
- - ./manage.sh npm_packages
- - ./manage.sh update_dev_packages
- - pip install codecov
-script:
- - ./manage.sh styles
- - ./manage.sh grunt_build
- - ./manage.sh tests
-after_success:
- - ./manage.sh py_test_coverage
- - codecov
-
-stages:
- - test
- - name: docker
- if: branch = master AND type != pull_request AND env(DOCKER_USERNAME) IS present
-
-jobs:
- include:
- - python: "2.7"
- - python: "3.5"
- - python: "3.6"
- - stage: docker
- python: "3.6"
- git:
- depth: false
- services:
- - docker
- addons: []
- before_install: true
- install: true
- script:
- - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
- - ./manage.sh docker_build push
- after_success: true
-
-notifications:
- irc:
- channels:
- - "irc.freenode.org#searx"
- template:
- - "%{repository}/#%{build_number}/%{branch} (%{author}): %{message} %{build_url}"
- on_success: change
diff --git a/AUTHORS.rst b/AUTHORS.rst
index 9ab78b0..c217574 100644
--- a/AUTHORS.rst
+++ b/AUTHORS.rst
@@ -1,4 +1,4 @@
-Searx was created by Adam Tauber and is maintained by Adam Tauber, Alexandre Flament, Noémi Ványi, @pofilo and Markus Heiser.
+Searx was created by Adam Tauber and is maintained by Adam Tauber, Noémi Ványi, @pofilo, Gaspard d'Hautefeuille and Émilien Devos.
Major contributing authors:
@@ -11,8 +11,10 @@ Major contributing authors:
- Marc Abonce Seguin @a01200356
- @pofilo
- Markus Heiser @return42
+- Émilien Devos @unixfox
+- Alexandre Flament
-People who have submitted patches/translates, reported bugs, consulted features or
+People who have submitted patches/translations, reported bugs, consulted features or
generally made searx better:
- Laszlo Hammerl
@@ -65,7 +67,6 @@ generally made searx better:
- @firebovine
- Lorenzo J. Lucchini @luccoj
- @eig8phei
-- Joachim Cherqui
- @maxigas
- Jannik Winkel @kiney
- @juanitobananas
@@ -96,7 +97,7 @@ generally made searx better:
- Alice Ferrazzi @aliceinwire
- @LiquidLemon
- @dadosch
-- @Venca24
+- Václav Zouzalík @Venca24
- @ZEROF
- Ivan Skytte Jørgensen @isj-privacore
- @miicha
@@ -110,7 +111,6 @@ generally made searx better:
- Nick Espig @nachtalb
- Rachmadani Haryono @rachmadaniHaryono
- Frank de Lange @yetangitu
-- Émilien Devos @unifox
- Nicolas Gelot @nfk
- @volth
- Mathieu Brunot @madmath03
@@ -123,3 +123,73 @@ generally made searx better:
- Vipul @finn0
- @CaffeinatedTech
- Robin Schneider @ypid
+- @splintah
+- Lukas van den Berk @lukasvdberk
+- @piplongrun
+- Jason Kaltsikis @jjasonkal
+- Sion Kazama @KazamaSion
+- @resynth1943
+- Mostafa Ahangarha @ahangarha
+- @gordon-quad
+- Sophie Tauchert @999eagle
+- @bauruine
+- Michael Ilsaas `<https://mikeri.net>`_
+- @renyhp
+- rachmadani haryono @rachmadaniHaryono
+- Mohamad Safadieh @msafadieh
+- @gardouille
+- @resynth1943
+- @Eliesemoule
+- @gardouille
+- @GazoilKerozen
+- Lukáš Kucharczyk @KucharczykL
+- Lynda Lopez @lyndalopez544
+- M. Efe Çetin @efectn
+- Nícholas Kegler @nicholasks
+- @pierrechtux
+- Scott Wallace @scottwallacesh
+- @Singustromo
+- @TheEvilSkeleton
+- @Wonderfall
+- @mrwormo
+- Xiaoyu WEI @xywei
+- @joshu9h
+- Daniel Hones
+- @cyclaero
+- @thezeroalpha
+- @Tobi823
+- @archiecodes
+- @BBaoVanC
+- @datagram1
+- @lucky13820
+- @jhigginbotham
+- @xenrox
+- @OliveiraHermogenes
+- Paul Alcock @Guilvareux
+- Ben Collerson
+- @3nprob
+- @plague-doctor
+- @CicadaCinema
+- @mikamp116
+- @Zackptg5
+- @darkmagic13
+- @CrocodileCroco
+- @allendema
+- Jordan Webb @jordemort
+- Samuel Dudik @dudik
+- @c1492
+- @nav1s
+- Igor Rzegocki @ajgon
+- Dmitrii Faiazov @scientia-ac-labore
+- @noctux
+- @jecarr
+- @israelyago
+- Georg @tacerus
+- Dario Nuevo @narcoticfresh
+- Andy Jones @andyljones
+- Maciej Urbański @rooterkyberian
+- @ilyakooo0
+- Eric Zhang @EricZhang456
+- @nathannaveen
+- @liimee
+- @james-still
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index b921788..d92c5fc 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -1,3 +1,437 @@
+1.1.0 2022.08.07
+================
+
+It has been a while since we released a new version of searx. Thus, we have lots of new things to offer, like new engines, autocompleter, plugins, etc. We got numerous contributions from ~30 new developers, but also we got many PRs from our recurring contributors.
+
+Thank you so much for you support! We couldn't have release so many awesome things without you!
+
+Core
+~~~~
+
+- Drop Python 3.6 support #3133
+- Run tests under python 3.10 #3035
+- Reduce redundant docker build steps #2725
+- Allow overriding Docker repository when building docker image #2726
+- Add healthcheck endpoint for Docker #2992
+
+New engines
+~~~~~~~~~~~
+
+- Wordnik.com #2735
+- Bandcamp #2763
+- SJP - Słownik języka polskiego #2736
+- Wikimini #2819
+- Dogpile #2822
+- PyPI XPATH engine #2830
+- ManKier #2829
+- Kaufland.de #2915
+- ask.com #2898
+- gpodder.net (JSON) #2885
+- woxikon.de synonyme (xpath) #2883
+- Petalsearch.com engine (xpath) #2897
+- whaleslide.com #2861
+- azlyrics.com #2955
+- IMDB #2980
+- Prowlarr #3118
+- Tineye reverse image search #3040
+- Onesearch #3065
+- TVmaze #3246
+- Emojipedia #3278
+- Psychonautwiki by @dimethyltriptamine @kvch
+
+Fixed engines
+~~~~~~~~~~~~~
+
+- Remove hubsbpot tracking URL params #2723
+- Fix URL to solidtorrent result page #2786
+- Update onion engines to v3 #2904
+- Fix Seznam engine #2905
+- Add pagination support for Library Genesis #2887
+- Fix uppercase ip query #2991
+- Fix Libgen + Uncomment Ebay and Urbandictionary #2986
+- Fixed Hoogle engine #3146
+- Fix Digg engine #3150
+- Don't lump all search suggestions together in Yahoo #3208
+- Fix DDG safe search #3247
+- Fix Qwant: Remove extra q from URL #3091
+
+New plugins
+~~~~~~~~~~~
+
+- hostname_replace plugin to rewrite result hostnames #2724
+- search_operators plugin to filter search results using -, site: and -site: #3311
+
+Fixed plugins
+~~~~~~~~~~~~~
+
+- Fix default_doi_resolver in preferences #2707
+- Add DOI resolver from sci-hub and replace default DOI #2706
+
+Themes
+~~~~~~
+
+- Fix dark "expand" button from infobox #2702
+- fix url_for(..., _external=True) in templates #2656
+- [enh] oscar: image thumbnail layout #2675
+- Improve text overflow of custom select #2985
+- Products results: add possibility to show if a product is in stock or not #3120
+- Configurable autofocus of search input (#1984) #3285
+- archive.today option for results page #3308
+- Fix keyboard hints for category tabs (#1187) #3276
+
+Enhancements
+~~~~~~~~~~~~
+
+- Allow overriding env vars SEARX_SETTINGS_PATH, UWSGI_SETTINGS_PATH #2717
+- correct typo/grammatical mistake #2744
+- Fix bug for 'FileNotFoundError' in 'standalone_searx.py' #2764
+- Fix grammar mistake in debug log output #2759
+- Fix typo #2768
+- Fix redirect when saving preferences #2760
+- Replace Makefile boilerplate by shell scripts #2594
+- Fix Qwant's fetch_languages function #2799
+- Apply HTTPS where possible + fix small typo #2922
+- Сhange in user-agent Firefox versions to latest #3008
+- Use engine-type when looking up supported_languages from JSON files #3002
+- Update about section of Invidious and Rumble + Change filtron error wording #2959
+- Verify that Tor proxy works every time searx starts #3015
+- Update settings_loader.get_user_settings_path() #3056
+- Fix wrong func call #3058
+- Improve ranking based on language #3053
+
+1.0.0 2021.03.27
+================
+
+Core
+~~~~
+
+- drop support for Python 3.5 ( #2459 )
+- add support for Python 3.9 ( #2397 #2459 )
+- update Python dependencies ( #2428 #2459 #2206 ) ⚠️ pyopenssl is not longer required
+- automatic update of searx.data ( #2555 #2585 #2595 #2592 #2600 )
+- update searx.data ( #2604 #2605 #2606 #2607 #2415 )
+- add ability to send engine data to subsequent requests ( #2615 )
+- add checker ( #2419 #2476 #2481 #2682 #2682 #2657 )
+- by default allow only HTTPS, not HTTP ( #2641 #2659 )
+- replace /translations.js with an embedded JSON ( #2660 )
+- activate raise_for_error by default ( #2557 )
+- don't dump traceback of SearxEngineResponseException on init ( #2635 )
+
+Documentation
+~~~~~~~~~~~~~
+
+- update nginx configuration ( #2618 )
+- document workaround for using 2 languages simultaneously ( #2479 )
+- improve admin-docs about result proxy (morty) configuration ( #2509 )
+- fixed typo ( #2457 )
+
+New settings.yml
+~~~~~~~~~~~~~~~~
+
+- `general.contact_url` : add link to contact instance maintainer to footer of each page ( #2391 14c7cc0e118f1d0873b32b34793cdec2c5c9c13e #2412 )
+- `brand` : move brand options from Makefile to settings.yml ( #2408 #2473 )
+
+Themes
+~~~~~~
+
+- oscar: Hide links panel in mobile screens ( #2458 )
+- oscar: upgrade dependencies ( #2346 #2673 #2662 )
+- remove legacy, courgette and pix-art themes ( #2344 )
+- add hyperlink to searx instances list in error message ( #2387 )
+- preferences: a tooltip is shown when the mouse is over the engine names ( #2661 )
+- Ignore double-quotes when highlighting query parts ( #2553 )
+- update autocomplete ( #2593 )
+
+New engines
+~~~~~~~~~~~
+
+- ccengine ( #2533 )
+- mediathekviewweb ( #2541 )
+- solidtorrents ( #2626 )
+- solr ( #2652 )
+- rumble ( #2588 )
+- wiby.me ( #2452 )
+
+Fixed engines
+~~~~~~~~~~~~~
+
+- apk_mirror ( #2556 #2642 )
+- bing ( #2602 )
+- duckduckgo ( #2560 #2559 )
+- library genesis ( #2448 )
+- ina ( 0ba71c3644c4d20f70528c10eed1385399ec1c82 )
+- invidious ( #2451 )
+- json_engine ( #2562 )
+- google ( #2482 )
+- google images ( #2482 )
+- google play apps ( 88657fe9c2a41b9be38ee5146e5870672416db12 )
+- google play movies ( 50ba2b9e87ef61e96da124f906d3aff4c7870e3f )
+- google news ( #2483 #2498 )
+- google scholar ( #2611 )
+- google video ( #2482 )
+- hoogle ( 6255b33c9dcf0d28f0a3307af988565f69259ce2 )
+- naver ( #2542 )
+- semantic schollar ( f596f5767bed915a5c3bed59ae26283e53f975ca f596f5767bed915a5c3bed59ae26283e53f975ca )
+- startpage ( #2396 )
+- seznam ( #2564 28286cf3f2308113bf440fb6e7cf326c6ed07889 )
+- wikipedia ( #2554 #2565 #2681 #2681 )
+- yacy ( #2669 )
+- yahoo news ( #2640 #2655 )
+
+Updated engines
+~~~~~~~~~~~~~~~
+
+- duckduckgo ( 5f450fda74e80bf350eb1493f66cfa61deaf5cea )
+- geektimes ( 45f0e1a859fa12ce2ae0c24dc356922fcad50c8d )
+- lobste.rs ( 06b754ad67aa6066aed6df77b5ffb74aabebb040 )
+- soundcloud ( #2671 )
+- peertube ( #2570 )
+- recoll ( #2539 )
+- yggtorrent ( #2573 )
+
+Removed engines
+~~~~~~~~~~~~~~~
+
+- acgsou ( #2654 )
+- google_play_music ( #2558 )
+- metager ( #2538 )
+- voat ( #2445 )
+- yandex ( #2566 )
+
+Bug fixes
+~~~~~~~~~
+
+- Fix empty colon in query from selecting Chinese ( #2454 )
+- Get correct locale with country from browser ( #2531 )
+
+Code refactoring / reduce the technical debt
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- refactor searx.search.SearchQuery and searx.search.EngineRef ( #2398 )
+- dynamically set language_support variable ( #2499 )
+- engines: add about variable ( #2460 )
+- processors ( #2225 5c6a5407a0b124c3323e73c33b81ec1fbd7d2fce )
+- remove Fabric file ( #2494 )
+- use unittest from py3, remove unittest2 from py2 ( #2608 )
+
+Github
+~~~~~~
+
+- add notice for the issue templates ( #2447 )
+- every Sunday, call utils/fetch_*.py scripts and create a PR automatically ( #2500 728e09676400221a064627509a31470d8f6e33bf )
+- minor change: replace "travis" by "CI" ( #2528 )
+
+Build scripts
+~~~~~~~~~~~~~
+
+- update secret key check ( #2411 )
+- fix makefile targets `books/{name}.*` and `books/user.pdf` ( #2420 #2530 )
+- upload-pypi-test & linuxdoc has been released on PyPi ( #2456 )
+- fix makefile target `gh-pages` : flatten history of branch gh.pages ( #2514 )
+- optimize creation of the virtualenv & pyenvinstall targets ( #2421 )
+- update pyenv pyenvinstall Make targets ( #2517 )
+- makefile.python: remove duplicate pyenv-(un)install targets ( #2418 )
+- [fix] make targets engines.languages and useragents.update ( #2643 )
+- [fix] utils/serax.sh create_pyenv() - drop duplicate 'pip install .' ( #2621 )
+
+Install scripts
+~~~~~~~~~~~~~~~
+
+- drop Ubuntu 16.04 (Xenial Xerus) support ( #2619 )
+- replace ubu1910 image by ubu2010 image ( #2435 )
+- LXC switch to Fedora 33 / Fedora 31 reached its EOL #2634 ( #2634 )
+- add package which to CentOS-7 boilerplate ( #2623 )
+- use SEARX_SETTINGS_TEMPLATE from .config environment ( #2417 )
+- determine path to makefile.lxc in a LXC ( #2399 )
+- remove unused code ( #2401 #2497 )
+- support git versions <v2.22 ( #2620 )
+
+Announcement
+~~~~~~~~~~~~
+
+We, the searx maintainer team, would like to say a huge thank you for everybody who had been involved in the development of searx or supported us in the past 7 years - making our first stable release available. Special thanks to [NLNet](https://nlnet.nl) for sponsoring multiple features of this release.
+
+
+0.18.0 2020.12.14
+=================
+
+Core
+~~~~
+
+- drop Python 2 support ( #2137 #2244 )
+- separate index and search routes ( #1681 ). ⚠️ add & remove your searx instance(s) from your browser.
+- add external_bang ( #2027 #2043 #2059 )
+- add external plugins supports ( #2074 )
+- add plugin converting strings into hash digests ( #1246 )
+- new category: Onions ( #565 )
+- allow searx query parts anywhere in the query ( commit aa3c18dda9329fff875328f6ba97483c417b149a 2aef38c3b9d1fe93e9d665a49b10151d63d92392 )
+- preferences: use base_url for prefix of sharing 'currenly saved preferences' (#1249 )
+- upgrade to request 2.24.0, pyopenssl is optional ( #2199 )
+- force admins to set secret_key if debug mode is disabled ( #2256 )
+- standalone searx update ( #1591 )
+- architecture clean up ( #2140 #2185 #2195 #2196 #2198 #2189 #2208 #2239 #2241 #2246 #2248 )
+- record detail about engine error ( #2332 #2375 #2350 ). Add a new API endpoint: ``/stats/errors``.
+- display if an engine does not support HTTPS requests ( #2373 )
+
+New settings.yml
+~~~~~~~~~~~~~~~~
+
+- ``use_default_settings``: user settings can relied on the default settings ( #2291 #2362 #2349 )
+- ``ui.results_on_new_tab: False`` - for opening result links in a new tab ( #2167 )
+- ``ui.advanced_search`` - add preference for displaying advanced settings ( #2327 )
+- ``server.method: "POST"`` - Make default query submission method configurable ( #2130 )
+- ``server.default_http_headers`` - add default http headers ( #2295 )
+- ``engines.*.proxies`` - Using proxy only for specific engines ( #1827 #2319 ), see https://searx.github.io/searx/dev/engine_overview.html#settings-yml
+- ``enabled_plugins`` - Enabled plugins ( a05c660e3036ad8d02072fc6731af54c2ed6151c )
+- ``preferences.lock`` - Let admins lock user preferences ( #2270 )
+
+Oscar theme
+~~~~~~~~~~~
+
+- update infobox ( #2131 )
+
+ - Make infoboxes shorter by default.
+ - Hide the main image by default as well and set a maximum height even when expanded.
+ - Add a toggle at the bottom of the infobox to expand it or to shrink it again.
+ - Fix pointhi style
+- query suggestion does not keep the language tag of the original query ( #1314 )
+- fix the clear button ( #2306 )
+
+Simple theme
+~~~~~~~~~~~~
+
+- Fix autocomplete ( #2205 )
+
+New engines
+~~~~~~~~~~~
+
+- ahmia, not_evil ( #565 )
+- codeberg ( #2104 )
+- command line engines: git grep, find, etc. ( #2128 #2250 )
+- elasticsearch ( #2292 )
+- metager ( #2139 )
+- naver ( #1912 )
+- opensemanticsearch ( #2271 )
+- peertube ( #2109 )
+- recoll (#2325)
+- sepiasearch ( #2227 )
+
+Updated engines
+~~~~~~~~~~~~~~~
+
+- digg ( #2285 )
+- dbpedia ( #2352 )
+- duckduckgo_definitions ( #2224 #2356 )
+- duden ( #2359 )
+- invidious ( #2116 )
+- libgen ( #2360 )
+- photon ( #2336 )
+- soundclound ( #2365 )
+- wikipedia ( #2178 #2363 #2354 )
+- wikidata ( #2151 #2224 #2353 ) - faster response time
+- yaCy ( #2255 ) - support HTTP digest authentication.
+- youtube_noapi ( #2364 )
+
+Fixed engines
+~~~~~~~~~~~~~
+
+- 1x ( #2361 )
+- answer 'random sha256' ( #2121 )
+- bing image ( #1496 )
+- duckduckgo ( #2254 )
+- genius ( #2371 )
+- google ( #2236 )
+- google image ( #2115 )
+- lobste.rs ( #2253 )
+- piratebay ( #2133 )
+- startpage ( #2385 )
+- torrentz ( #2101 )
+
+Removed engines
+~~~~~~~~~~~~~~~
+
+- filecrop ( #2352 )
+- searchcode_doc ( #2372 )
+- seedpeer ( #2366 )
+- twitter ( #2372 )
+- yggtorrent ( #2099 #2375 )
+
+Install scripts & documentation
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- install script & documentation ( #2384 #2380 #2362 #2287 #2283 #2277 #2223 #2211 #2118 #2117 #2063 )
+
+Docker image
+~~~~~~~~~~~~
+
+- use Alpine 3.12 ( #1983 )
+- uwsgi serves the static files directly. ( #1865 )
+- fix k8s support ( #2099 )
+- make docker produces clean tag version ( #2182 )
+
+Bug fixes
+~~~~~~~~~
+
+- searx.utils.HTMLTextExtractor: invalid HTML don't raise an Exception ( #2190 )
+- Fix static URL ( commit da8b227044f45127f705f6ea94a72d368eea73bb )
+- Fix autocomplete ( #2127 )
+- Fix opensearch.xml ( #2132 #2247 )
+- Fix documentation build ( #2237 )
+- Some fixes in the fetch languages script ( #2212 )
+
+Special thanks to `NLNet <https://nlnet.nl>`__ for sponsoring multiple features of this release.
+
+
+0.17.0 2020.07.09
+=================
+
+ - New engines
+
+ - eTools
+ - Wikibooks
+ - Wikinews
+ - Wikiquote
+ - Wikisource
+ - Wiktionary
+ - Wikiversity
+ - Wikivoyage
+ - Rubygems
+ - Engine fixes (google, google images, startpage, gigablast, yacy)
+ - Private engines introduced - more details: https://searx.github.io/searx/blog/private-engines.html
+ - Greatly improved documentation - check it at https://searx.github.io/searx
+ - Added autofocus to all search inputs
+ - CSP friendly oscar theme
+ - Added option to hide engine errors with `display_error_messages` engine option (true/false values, default is true)
+ - Tons of accessibility fixes - see https://github.com/searx/searx/issues/350 for details
+ - More flexible branding options: configurable vcs/issue tracker links
+ - Added "disable all" & "allow all" options to preferences engine select
+ - Autocomplete keyboard navigation fixes
+ - Configurable category order
+ - Wrap long lines in infoboxes
+ - Added RSS subscribtion link
+ - Added routing directions to OSM results
+ - Added author and length attributes to youtube videos
+ - Fixed image stretch with mobile viewport in oscar theme
+ - Added translatable JS strings
+ - Better HTML annotations - engine names and endpoints are available as classes
+ - RTL text fixes in oscar theme
+ - Handle weights in accept-language HTTP headers
+ - Added answerer results to rss/csv output
+ - Added new autocomplete backends to settings.yml
+ - Updated opensearch.xml
+ - Fixed custom locale setting from settings.yml
+ - Translation updates
+ - Removed engines: faroo
+
+Special thanks to `NLNet <https://nlnet.nl>`__ for sponsoring multiple features of this release.
+Special thanks to https://www.accessibility.nl/english for making accessibilty audit.
+
+News
+~~~~
+
+- @HLFH joined the maintainer team
+- Dropped Python2 support
+
0.16.0 2020.01.30
=================
@@ -92,8 +526,8 @@ News
- Bug fixes
- - https://github.com/asciimoo/searx/issues/1088
- - https://github.com/asciimoo/searx/issues/1089
+ - https://github.com/searx/searx/issues/1088
+ - https://github.com/searx/searx/issues/1089
- Dependency updates
@@ -262,7 +696,7 @@ News
News
~~~~
-New documentation page is available: https://asciimoo.github.io/searx
+New documentation page is available: https://searx.github.io/searx
0.8.0 2015.09.08
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..300349f
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,49 @@
+# How to contribute
+
+## Resources in the documentation
+
+* [Development quickstart](https://searx.github.io/searx/dev/contribution_guide.html)
+* [Contribution guide](https://searx.github.io/searx/dev/contribution_guide.html)
+
+## Submitting PRs
+
+Please follow the provided PR template when writing a description for your changes.
+
+Do not take criticism personally. When you get feedback, it is about your work,
+not your character, personality, etc. Keep in mind we all want to make the project better.
+
+When something is not clear, please ask questions to clear things up.
+
+If you would like to introduce a big architectural changes or do a refactoring
+either in the codebase or the development tools, please open an issue with a proposal
+first. This way we can think together about the problem and probably come up
+with a better solution.
+
+## Coding conventions and guidelines
+
+### Commit messages
+
+* Always write descriptive commit messages ("fix bug" is not acceptable).
+* Use the present tense ("Add feature" not "Added feature").
+* Use the imperative mood ("Move cursor to..." not "Moves cursor to...").
+* Limit the first line to 72 characters or less.
+* Include the number of the issue you are fixing.
+
+### Coding guidelines
+
+As a Python project, we must follow [PEP 8](https://www.python.org/dev/peps/pep-0008/) and [PEP 20](https://www.python.org/dev/peps/pep-0020/) guidelines.
+
+Furthermore, follow the Clean code conventions. The most important
+in this project are the following rules:
+
+* Simpler is better. [KISS principle](https://en.wikipedia.org/wiki/KISS_principle)
+* Be consistent.
+* Every function must do one thing.
+* Use descriptive names for functions and variables.
+* Always look for the root cause.
+* Keep configurable data high level.
+* Avoid negative conditionals.
+* Prefer fewer arguments.
+* Do not add obvious comment to code.
+* Do not comment out code, just delete lines.
+
diff --git a/Dockerfile b/Dockerfile
index b0b5a60..aa51c28 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,28 +1,22 @@
-FROM alpine:3.10
+FROM alpine:3.15
ENTRYPOINT ["/sbin/tini","--","/usr/local/searx/dockerfiles/docker-entrypoint.sh"]
EXPOSE 8080
VOLUME /etc/searx
VOLUME /var/log/uwsgi
-ARG VERSION_GITCOMMIT=unknown
-ARG SEARX_GIT_VERSION=unknown
-
ARG SEARX_GID=977
ARG SEARX_UID=977
RUN addgroup -g ${SEARX_GID} searx && \
adduser -u ${SEARX_UID} -D -h /usr/local/searx -s /bin/sh -G searx searx
-ARG TIMESTAMP_SETTINGS=0
-ARG TIMESTAMP_UWSGI=0
-ARG LABEL_VCS_REF=
-ARG LABEL_VCS_URL=
-
ENV INSTANCE_NAME=searx \
AUTOCOMPLETE= \
BASE_URL= \
MORTY_KEY= \
- MORTY_URL=
+ MORTY_URL= \
+ SEARX_SETTINGS_PATH=/etc/searx/settings.yml \
+ UWSGI_SETTINGS_PATH=/etc/searx/uwsgi.ini
WORKDIR /usr/local/searx
@@ -44,29 +38,43 @@ RUN apk upgrade --no-cache \
ca-certificates \
su-exec \
python3 \
+ py3-pip \
libxml2 \
libxslt \
openssl \
tini \
uwsgi \
uwsgi-python3 \
- && pip3 install --upgrade pip \
+ brotli \
+ && pip3 install --upgrade pip wheel setuptools \
&& pip3 install --no-cache -r requirements.txt \
- && apk del build-dependencies
+ && apk del build-dependencies \
+ && rm -rf /root/.cache
-COPY --chown=searx:searx . .
+COPY searx ./searx
+COPY dockerfiles ./dockerfiles
-RUN su searx -c "/usr/bin/python3 -m compileall -q searx"; \
+ARG TIMESTAMP_SETTINGS=0
+ARG TIMESTAMP_UWSGI=0
+ARG VERSION_GITCOMMIT=unknown
+
+RUN /usr/bin/python3 -m compileall -q searx; \
touch -c --date=@${TIMESTAMP_SETTINGS} searx/settings.yml; \
touch -c --date=@${TIMESTAMP_UWSGI} dockerfiles/uwsgi.ini; \
if [ ! -z $VERSION_GITCOMMIT ]; then\
echo "VERSION_STRING = VERSION_STRING + \"-$VERSION_GITCOMMIT\"" >> /usr/local/searx/searx/version.py; \
- fi
+ fi; \
+ find /usr/local/searx/searx/static -a \( -name '*.html' -o -name '*.css' -o -name '*.js' \
+ -o -name '*.svg' -o -name '*.ttf' -o -name '*.eot' \) \
+ -type f -exec gzip -9 -k {} \+ -exec brotli --best {} \+
-
-# Keep this argument at the end since it change each time
+# Keep these arguments at the end to prevent redundant layer rebuilds
ARG LABEL_DATE=
-LABEL maintainer="searx <https://github.com/asciimoo/searx>" \
+ARG GIT_URL=unknown
+ARG SEARX_GIT_VERSION=unknown
+ARG LABEL_VCS_REF=
+ARG LABEL_VCS_URL=
+LABEL maintainer="searx <${GIT_URL}>" \
description="A privacy-respecting, hackable metasearch engine." \
version="${SEARX_GIT_VERSION}" \
org.label-schema.schema-version="1.0" \
@@ -76,4 +84,11 @@ LABEL maintainer="searx <https://github.com/asciimoo/searx>" \
org.label-schema.vcs-ref=${LABEL_VCS_REF} \
org.label-schema.vcs-url=${LABEL_VCS_URL} \
org.label-schema.build-date="${LABEL_DATE}" \
- org.label-schema.usage="https://github.com/searx/searx-docker"
+ org.label-schema.usage="https://github.com/searx/searx-docker" \
+ org.opencontainers.image.title="searx" \
+ org.opencontainers.image.version="${SEARX_GIT_VERSION}" \
+ org.opencontainers.image.url="${LABEL_VCS_URL}" \
+ org.opencontainers.image.revision=${LABEL_VCS_REF} \
+ org.opencontainers.image.source=${LABEL_VCS_URL} \
+ org.opencontainers.image.created="${LABEL_DATE}" \
+ org.opencontainers.image.documentation="https://github.com/searx/searx-docker"
diff --git a/Makefile b/Makefile
index f35b86c..2668530 100644
--- a/Makefile
+++ b/Makefile
@@ -1,89 +1,107 @@
# -*- coding: utf-8; mode: makefile-gmake -*-
+# SPDX-License-Identifier: AGPL-3.0-or-later
-export GIT_URL=https://github.com/asciimoo/searx
-export SEARX_URL=https://searx.me
-export DOCS_URL=https://asciimoo.github.io/searx
-
-PYOBJECTS = searx
-DOC = docs
-PY_SETUP_EXTRAS ?= \[test\]
-
-PYDIST=./dist/py
-PYBUILD=./build/py
+.DEFAULT_GOAL=help
+export MTOOLS=./manage
include utils/makefile.include
-include utils/makefile.python
-include utils/makefile.sphinx
all: clean install
PHONY += help
+
help:
- @echo ' test - run developer tests'
- @echo ' docs - build documentation'
- @echo ' docs-live - autobuild HTML documentation while editing'
- @echo ' run - run developer instance'
- @echo ' install - developer install (./local)'
- @echo ' uninstall - uninstall (./local)'
- @echo ' gh-pages - build docs & deploy on gh-pages branch'
- @echo ' clean - drop builds and environments'
- @echo ''
- @$(MAKE) -s -f utils/makefile.include make-help
- @echo ''
- @$(MAKE) -s -f utils/makefile.python python-help
-
-PHONY += install
-install: pyenvinstall
-
-PHONY += uninstall
-uninstall: pyenvuninstall
+ @./manage --help
+ @echo '----'
+ @echo 'run - run developer instance'
+ @echo 'install - developer install of searx into virtualenv'
+ @echo 'uninstall - uninstall developer installation'
+ @echo 'clean - clean up working tree'
+ @echo 'search.checker - check search engines'
+ @echo 'test - run shell & CI tests'
+ @echo 'test.sh - test shell scripts'
+ @echo 'ci.test - run CI tests'
-PHONY += clean
-clean: pyclean
- $(call cmd,common_clean)
PHONY += run
-run: pyenvinstall
+run: install
$(Q) ( \
- sed -i -e "s/debug : False/debug : True/g" ./searx/settings.yml ; \
sleep 2 ; \
xdg-open http://127.0.0.1:8888/ ; \
- sleep 3 ; \
- sed -i -e "s/debug : True/debug : False/g" ./searx/settings.yml ; \
) &
- $(PY_ENV)/bin/python ./searx/webapp.py
-
-# docs
-# ----
-
-PHONY += docs
-docs: pyenvinstall sphinx-doc
- $(call cmd,sphinx,html,docs,docs)
-
-PHONY += docs-live
-docs-live: pyenvinstall sphinx-live
- $(call cmd,sphinx_autobuild,html,docs,docs)
+ SEARX_DEBUG=1 ./manage pyenv.cmd python ./searx/webapp.py
-$(GH_PAGES)::
- @echo "doc available at --> $(DOCS_URL)"
+PHONY += install uninstall
+install uninstall:
+ $(Q)./manage pyenv.$@
-# test
-# ----
-
-PHONY += test test.pylint test.pep8 test.unit test.robot
-
-# TODO: balance linting with pylint
-test: test.pep8 test.unit test.robot
- - make pylint
-
-test.pep8: pyenvinstall
- $(PY_ENV_ACT); ./manage.sh pep8_check
-
-test.unit: pyenvinstall
- $(PY_ENV_ACT); ./manage.sh unit_tests
-
-test.robot: pyenvinstall
- $(PY_ENV_ACT); ./manage.sh install_geckodriver
- $(PY_ENV_ACT); ./manage.sh robot_tests
-
-.PHONY: $(PHONY)
+PHONY += clean
+clean: py.clean docs.clean node.clean test.clean
+ $(Q)./manage build_msg CLEAN "common files"
+ $(Q)find . -name '*.orig' -exec rm -f {} +
+ $(Q)find . -name '*.rej' -exec rm -f {} +
+ $(Q)find . -name '*~' -exec rm -f {} +
+ $(Q)find . -name '*.bak' -exec rm -f {} +
+
+PHONY += search.checker search.checker.%
+search.checker: install
+ $(Q)./manage pyenv.cmd searx-checker -v
+
+search.checker.%: install
+ $(Q)./manage pyenv.cmd searx-checker -v "$(subst _, ,$(patsubst search.checker.%,%,$@))"
+
+PHONY += ci.test test test.sh
+ci.test: test.pep8 test.pylint test.unit test.robot
+test: ci.test
+test.sh:
+ $(Q)shellcheck -x -s bash \
+ utils/brand.env \
+ ./manage \
+ utils/lib.sh \
+ utils/filtron.sh \
+ utils/searx.sh \
+ utils/morty.sh \
+ utils/lxc.sh \
+ utils/lxc-searx.env \
+ .config.sh
+ $(Q)./manage build_msg TEST "$@ OK"
+
+
+# wrap ./manage script
+
+MANAGE += buildenv
+MANAGE += babel.compile
+MANAGE += data.all data.languages data.useragents
+MANAGE += docs.html docs.live docs.gh-pages docs.prebuild docs.clean
+MANAGE += docker.build docker.push
+MANAGE += gecko.driver
+MANAGE += node.env node.clean
+MANAGE += py.build py.clean
+MANAGE += pyenv pyenv.install pyenv.uninstall
+MANAGE += pypi.upload pypi.upload.test
+MANAGE += test.pylint test.pep8 test.unit test.coverage test.robot test.clean
+MANAGE += themes.all themes.oscar themes.simple themes.bootstrap
+
+PHONY += $(MANAGE)
+
+$(MANAGE):
+ $(Q)$(MTOOLS) $@
+
+# deprecated
+
+PHONY += docs docs-clean docs-live docker themes
+
+docs: docs.html
+ $(Q)./manage build_msg WARN $@ is deprecated use docs.html
+
+docs-clean: docs.clean
+ $(Q)./manage build_msg WARN $@ is deprecated use docs.clean
+
+docs-live: docs.live
+ $(Q)./manage build_msg WARN $@ is deprecated use docs.live
+
+docker: docker.build
+ $(Q)./manage build_msg WARN $@ is deprecated use docker.build
+
+themes: themes.all
+ $(Q)./manage build_msg WARN $@ is deprecated use themes.all
diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..a7ad130
--- /dev/null
+++ b/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,25 @@
+## What does this PR do?
+
+<!-- MANDATORY -->
+
+<!-- explain the changes in your PR, algorithms, design, architecture -->
+
+## Why is this change important?
+
+<!-- MANDATORY -->
+
+<!-- explain the motivation behind your PR -->
+
+## How to test this PR locally?
+
+<!-- commands to run the tests or instructions to test the changes-->
+
+## Author's checklist
+
+<!-- additional notes for reviewiers -->
+
+## Related issues
+
+<!--
+Closes #234
+-->
diff --git a/README.rst b/README.rst
index 7fcda4f..b1ca554 100644
--- a/README.rst
+++ b/README.rst
@@ -1,63 +1,131 @@
-searx
-=====
+.. SPDX-License-Identifier: AGPL-3.0-or-later
+
+.. figure:: https://raw.githubusercontent.com/searx/searx/master/searx/static/themes/oscar/img/logo_searx_a.png
+ :target: https://searx.github.io/searx/
+ :alt: searX
+ :width: 100%
+ :align: center
+
+-------
+
+|searx install|
+|searx homepage|
+|searx wiki|
+|AGPL License|
+|Issues|
+|commits|
+|OpenCollective searx backers|
+|OpenCollective searx sponsors|
-A privacy-respecting, hackable `metasearch
-engine <https://en.wikipedia.org/wiki/Metasearch_engine>`__.
+Privacy-respecting, hackable `metasearch engine`_ / *pronunciation* **sɜːks**.
-Pronunciation: səːks
+.. _metasearch engine: https://en.wikipedia.org/wiki/Metasearch_engine
-List of `running
-instances <https://github.com/asciimoo/searx/wiki/Searx-instances>`__.
+.. |searx install| image:: https://img.shields.io/badge/-install-blue
+ :target: https://searx.github.io/searx/admin/installation.html
-See the `documentation <https://asciimoo.github.io/searx>`__ and the `wiki <https://github.com/asciimoo/searx/wiki>`__ for more information.
+.. |searx homepage| image:: https://img.shields.io/badge/-homepage-blue
+ :target: https://searx.github.io/searx
-|OpenCollective searx backers|
-|OpenCollective searx sponsors|
+.. |searx wiki| image:: https://img.shields.io/badge/-wiki-blue
+ :target: https://github.com/searx/searx/wiki
-Installation
-~~~~~~~~~~~~
+.. |AGPL License| image:: https://img.shields.io/badge/license-AGPL-blue.svg
+ :target: https://github.com/searx/searx/blob/master/LICENSE
-With Docker
-------
-Go to the `searx-docker <https://github.com/searx/searx-docker>`__ project.
+.. |Issues| image:: https://img.shields.io/github/issues/searx/searx?color=yellow&label=issues
+ :target: https://github.com/searx/searx/issues
-Without Docker
-------
-For all of the details, follow this `step by step installation <https://asciimoo.github.io/searx/dev/install/installation.html>`__.
+.. |PR| image:: https://img.shields.io/github/issues-pr-raw/searx/searx?color=yellow&label=PR
+ :target: https://github.com/searx/searx/pulls
-Note: the documentation needs to be updated.
+.. |commits| image:: https://img.shields.io/github/commit-activity/y/searx/searx?color=yellow&label=commits
+ :target: https://github.com/searx/searx/commits/master
-If you are in a hurry
-------
-- clone the source:
- ``git clone https://github.com/asciimoo/searx.git && cd searx``
-- install dependencies: ``./manage.sh update_packages``
-- edit your
- `settings.yml <https://github.com/asciimoo/searx/blob/master/searx/settings.yml>`__
- (set your ``secret_key``!)
-- run ``python searx/webapp.py`` to start the application
+.. |OpenCollective searx backers| image:: https://opencollective.com/searx/backers/badge.svg
+ :target: https://opencollective.com/searx#backer
+.. |OpenCollective searx sponsors| image:: https://opencollective.com/searx/sponsors/badge.svg
+ :target: https://opencollective.com/searx#sponsor
-Bugs
-~~~~
-Bugs or suggestions? Visit the `issue
-tracker <https://github.com/asciimoo/searx/issues>`__.
+If you are looking for running instances, ready to use, then visit searx.space_.
-`License <https://github.com/asciimoo/searx/blob/master/LICENSE>`__
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Otherwise jump to the user_, admin_ and developer_ handbooks you will find on
+our homepage_.
-More about searx
-~~~~~~~~~~~~~~~~
+.. _searx.space: https://searx.space
+.. _user: https://searx.github.io/searx/user
+.. _admin: https://searx.github.io/searx/admin
+.. _developer: https://searx.github.io/searx/dev
+.. _homepage: https://searx.github.io/searx
-- `openhub <https://www.openhub.net/p/searx/>`__
-- `twitter <https://twitter.com/Searx_engine>`__
-- IRC: #searx @ freenode
+contact:
+ openhub_ // twitter_ // IRC: #searx @ Libera (irc.libera.chat)
+.. _openhub: https://www.openhub.net/p/searx
+.. _twitter: https://twitter.com/Searx_engine
-.. |OpenCollective searx backers| image:: https://opencollective.com/searx/backers/badge.svg
- :target: https://opencollective.com/searx#backer
+**************************
+Frequently asked questions
+**************************
+Is searx in maintenance mode?
+#############################
-.. |OpenCollective searx sponsors| image:: https://opencollective.com/searx/sponsors/badge.svg
- :target: https://opencollective.com/searx#sponsor
+No, searx is accepting new features, including new engines. We are also adding
+engine fixes or other bug fixes when needed. Also, keep in mind that searx is
+maintained by volunteers who work in their free time. So some changes might take
+some time to be merged.
+
+We reject features that might violate the privacy of users. If you really want
+such a feature, it must be disabled by default and warn users about the consequances
+of turning it off.
+
+What is the difference between searx and SearxNG?
+#################################################
+
+TL;DR: If you want to run a public instance, go with SearxNG. If you want to
+self host your own instance, choose searx.
+
+SearxNG is a fork of searx, created by a former maintainer of searx. The fork
+was created because the majority of the maintainers at the time did not find
+the new proposed features privacy respecting enough. The most significant issue is with
+engine metrics.
+
+Searx is built for privacy conscious users. It comes a unique set of
+challanges. One of the problems we face is that users rather not report bugs,
+because they do not want to publicly share what engines they use or what search
+query triggered a problem. It is a challenge we accepted.
+
+The new metrics feature collects more information to make engine maintenance easier.
+We could have had better and more error reports to benefit searx maintainers.
+However, we believe that the users of searx must come first, not the
+software. We are willing to compromise on the lack of issue reports to avoid
+violating the privacy of users.
+
+Furthermore, SearxNG is under heavy refactoring and dependencies are constantly updated, even
+if it is unnecessary. It increases the risk of introducing regressions. In searx
+we strive for stability, rather than moving fast and breaking things.
+
+Is searx for me?
+################
+
+Are you privacy conscious user? Then yes.
+
+In searx we decided to double down on being privacy respecting. We are picking
+engine changes from SearxNG, but we are not implementing engine detailed
+monitoring and not adding a new UI that relies on Javascript.
+
+If you are willing to give up some privacy respecting features, we encourage you to
+adopt SearxNG. Searx is targeted for privacy conscious users who run their
+instances locally, instead of using public instances.
+
+Why should I use SearxNG?
+#########################
+
+SearxNG has rolling releases, depencencies updated more frequently, and engines are fixed
+faster. It is easy to set up your own public instance, and monitor its
+perfomance and metrics. It is simple to maintain as an instance adminstrator.
+
+As a user, it provides a prettier user interface and nicer experience.
diff --git a/debian/changelog b/debian/changelog
index 97945fd..c2f0fd1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,86 @@
+searx (1.1.0+dfsg1-2) unstable; urgency=medium
+
+ * debian/rules: fix clean target so that 'dpkg-buildpackage -S' works after
+ building it once (closes: #1045245)
+ * debian/ionicons: convert to unix line endings
+
+ -- Johannes Schauer Marin Rodrigues <josch@debian.org> Mon, 14 Aug 2023 13:40:16 +0200
+
+searx (1.1.0+dfsg1-1) unstable; urgency=medium
+
+ * upload to unstable with correct version
+
+ -- Johannes Schauer Marin Rodrigues <josch@debian.org> Fri, 10 Feb 2023 09:42:16 +0100
+
+searx (1.1.0+dfsg1-1~exp) unstable; urgency=medium
+
+ * New upstream release
+ * add apache2 autopkgtest
+
+ -- Johannes Schauer Marin Rodrigues <josch@debian.org> Wed, 08 Feb 2023 07:23:42 +0100
+
+searx (1.0.0+dfsg1-1) unstable; urgency=medium
+
+ [ Johannes Schauer Marin Rodrigues ]
+ * New upstream release (closes: #997817)
+ * Rework patches for 1.0 release
+ * debian/clean: some themes were dropped
+ * debian/control: add B-D on python3-yaml
+ * debian/control: add Suggests on uwsgi-plugin-python3 and nginx
+ * debian/python3-searx.install: do not install removed themes
+ * debian/python3-searx.links: jquery.min.js is now unversioned
+ * debian/rules: run pybabel and lessc
+ * debian/searx.install: install usr/bin/searx-checker
+
+ [ James Valleroy ]
+ * Add donation URL to upstream metadata
+
+ -- Johannes Schauer Marin Rodrigues <josch@debian.org> Tue, 07 Dec 2021 22:10:22 +0100
+
+searx (0.18.0+dfsg1-1) unstable; urgency=medium
+
+ * New upstream release
+ * refresh and drop patches that were applied by upstream
+ * debian/control: fix typo Build-depends->Build-Depends
+ * debian/python3-searx.lintian-overrides: add override for
+ package-contains-documentation-outside-usr-share-doc
+ * debian/python3-searx.lintian-overrides: add overrides for
+ font-outside-font-dir for ion.ttf and ion.woff
+
+ -- Johannes 'josch' Schauer <josch@debian.org> Tue, 19 Jan 2021 14:16:36 +0100
+
+searx (0.17.0+dfsg1-2) unstable; urgency=medium
+
+ * add patch from upstream fixing Thread.isAlive() -> Thread.is_alive()
+ (closes: #976322)
+
+ -- Johannes 'josch' Schauer <josch@debian.org> Mon, 28 Dec 2020 05:52:26 +0100
+
+searx (0.17.0+dfsg1-1) unstable; urgency=medium
+
+ * New upstream release
+ * add debian/salsa-ci.yml
+ * refresh patches
+ * debian/rules: call 'make themes' instead of manage.sh
+ * debian/patches/makefile: disable npm and bootstrap build and build css
+ * debian/rules: add an empty searx/data/bangs.json
+ * debian/control: python3-werkzeug >= 0.16.1 is needed because of
+ werkzeug/middleware/proxy_fix.py
+ * debian/clean: don't remove searx/static/themes/oscar/js/searx.js
+ * debian/control: bump dh compat to 13
+ * debian/tests/general: more debugging code
+ * debian/tests/general: adjust regex
+ * add patch to parse README.md with encoding
+
+ -- Johannes 'josch' Schauer <josch@debian.org> Wed, 15 Jul 2020 23:33:23 +0200
+
+searx (0.16.0+dfsg1-2) unstable; urgency=medium
+
+ * fix autopkgtest: dh compat 12 installed examples uncompressed (closes:
+ #951212)
+
+ -- Johannes 'josch' Schauer <josch@debian.org> Sun, 16 Feb 2020 07:52:36 +0100
+
searx (0.16.0+dfsg1-1) unstable; urgency=medium
* New upstream release
diff --git a/debian/clean b/debian/clean
index 436e84d..b40fe65 100644
--- a/debian/clean
+++ b/debian/clean
@@ -1,8 +1,2 @@
searx/translations/*/LC_MESSAGES/messages.mo
searx.egg-info/
-searx/static/themes/courgette/css/
-searx/static/themes/legacy/css/
-searx/static/themes/oscar/css/
-searx/static/themes/oscar/js/searx.js
-searx/static/themes/oscar/js/searx.min.js
-searx/static/themes/pix-art/css/
diff --git a/debian/control b/debian/control
index 6af2b35..5ea9a1a 100644
--- a/debian/control
+++ b/debian/control
@@ -1,9 +1,9 @@
Source: searx
Section: web
Priority: optional
-Maintainer: Johannes 'josch' Schauer <josch@debian.org>
-Build-depends:
- debhelper-compat (= 12),
+Maintainer: Johannes Schauer Marin Rodrigues <josch@debian.org>
+Build-Depends:
+ debhelper-compat (= 13),
dh-python,
grunt,
node-grunt-contrib-concat,
@@ -11,8 +11,9 @@ Build-depends:
node-less,
python3-all,
python3-babel,
- python3-setuptools,
python3-fontforge,
+ python3-setuptools,
+ python3-yaml,
Standards-Version: 4.5.0
Homepage: https://asciimoo.github.io/searx/
Vcs-Git: https://salsa.debian.org/debian/searx.git
@@ -34,10 +35,15 @@ Depends:
python3-openssl,
python3-pygments,
python3-requests,
- python3-werkzeug,
+ python3-werkzeug (>= 0.16.1),
python3-yaml,
${misc:Depends},
${python3:Depends},
+Suggests:
+ libapache2-mod-uwsgi,
+ nginx | apache2 | httpd,
+ uwsgi,
+ uwsgi-plugin-python3,
Section: python
Description: Privacy-respecting metasearch engine - library package
Searx is an internet metasearch engine which aggregates results from more than
diff --git a/debian/copyright b/debian/copyright
index d583e35..9df5c86 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -9,29 +9,26 @@ Comment:
A more general copyright-related upstream issue is:
https://github.com/asciimoo/searx/issues/814
Files-Excluded:
- searx/static/css
- searx/static/fonts
- searx/static/js
- searx/static/less
- searx/static/themes/*/img/github_ribbon.png
- searx/static/themes/*/img/icons/*.ico
searx/static/themes/*/img/icons/*.png
- searx/static/themes/courgette/css
- searx/static/themes/courgette/img/bg-body-index.jpg
- searx/static/themes/legacy/css
- searx/static/themes/oscar/css
- searx/static/themes/oscar/css
- searx/static/themes/oscar/js/leaflet-0.7.3.min.js
- searx/static/themes/oscar/js/searx.min.js
+ searx/static/themes/oscar/css/*.min.css
+ searx/static/themes/oscar/css/*.min.css.map
+ searx/static/themes/oscar/css/bootstrap-theme.css
+ searx/static/themes/oscar/css/bootstrap.css
+ searx/static/themes/oscar/css/leaflet.css
+ searx/static/themes/oscar/css/logicodev-dark.css
+ searx/static/themes/oscar/css/logicodev.css
+ searx/static/themes/oscar/fonts
searx/static/themes/oscar/img/icons/README.md
- searx/static/themes/pix-art/css/style.css
+ searx/static/themes/oscar/js/*.min.js
+ searx/static/themes/oscar/js/*.min.js.map
+ searx/static/themes/oscar/js/leaflet.js
+ searx/static/themes/oscar/js/searx.js
searx/static/themes/simple/css
- searx/static/themes/simple/fonts
+ searx/static/themes/simple/js/searx.head.min.js
+ searx/static/themes/simple/js/searx.head.min.js.map
searx/static/themes/simple/js/searx.js
searx/static/themes/simple/js/searx.min.js
searx/static/themes/simple/js/searx.min.js.map
- searx/static/themes/simple/js/searx.head.min.js
- searx/static/themes/simple/js/searx.head.min.js.map
searx/static/themes/simple/leaflet
searx/static/themes/simple/less/ion.less
searx/translations/*/LC_MESSAGES/messages.mo
@@ -109,12 +106,12 @@ Files: searx/static/themes/simple/less/normalize.less
Copyright: Nicolas Gallagher and Jonathan Neal
License: MIT
-Files: searx/static/themes/simple/js/searx_src/searx_imageresult.js
+Files: searx/static/themes/__common__/js/image_layout.js
Copyright: Anh Trinh
License: MIT
Files: debian/*
-Copyright: 2017 Johannes Schauer <josch@debian.org>
+Copyright: 2017-2021 Johannes Schauer Marin Rodrigues <josch@debian.org>
License: Expat
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/debian/examples/apache2/sites-available/searx.conf b/debian/examples/apache2/sites-available/searx.conf
new file mode 100644
index 0000000..6b61985
--- /dev/null
+++ b/debian/examples/apache2/sites-available/searx.conf
@@ -0,0 +1,5 @@
+<Location /searx>
+ SetHandler uwsgi-handler
+ ProxyPreserveHost On
+ uWSGISocket /run/uwsgi/app/searx/socket
+</Location>
diff --git a/debian/gbp.conf b/debian/gbp.conf
deleted file mode 100644
index 8b2dd41..0000000
--- a/debian/gbp.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-[DEFAULT]
-upstream-branch = upstream
-debian-branch = master
-upstream-tag = %(version)s
-
-sign-tags = True
-pristine-tar = False
-pristine-tar-commit = False
diff --git a/debian/ionicons/svg-orig/alert-circled.svg b/debian/ionicons/svg-orig/alert-circled.svg
index 89d1143..b6fccd7 100644
--- a/debian/ionicons/svg-orig/alert-circled.svg
+++ b/debian/ionicons/svg-orig/alert-circled.svg
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<g>
- <path d="M476.7,422.2L270.1,72.7c-2.9-5-8.3-8.7-14.1-8.7c-5.9,0-11.3,3.7-14.1,8.7L35.3,422.2c-2.8,5-4.8,13-1.9,17.9
- c2.9,4.9,8.2,7.9,14,7.9h417.1c5.8,0,11.1-3,14-7.9C481.5,435.2,479.5,427.1,476.7,422.2z M288,400h-64v-48h64V400z M288,320h-64
- V176h64V320z"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<g>
+ <path d="M476.7,422.2L270.1,72.7c-2.9-5-8.3-8.7-14.1-8.7c-5.9,0-11.3,3.7-14.1,8.7L35.3,422.2c-2.8,5-4.8,13-1.9,17.9
+ c2.9,4.9,8.2,7.9,14,7.9h417.1c5.8,0,11.1-3,14-7.9C481.5,435.2,479.5,427.1,476.7,422.2z M288,400h-64v-48h64V400z M288,320h-64
+ V176h64V320z"/>
+</g>
+</svg>
diff --git a/debian/ionicons/svg-orig/android-alert.svg b/debian/ionicons/svg-orig/android-alert.svg
index 1eb63d6..0067197 100644
--- a/debian/ionicons/svg-orig/android-alert.svg
+++ b/debian/ionicons/svg-orig/android-alert.svg
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g id="Icon_30_">
- <g>
- <path d="M256,48C141.6,48,48,141.601,48,256s93.6,208,208,208c114.4,0,208-93.601,208-208S370.4,48,256,48z M280,360h-48v-40h48
- V360z M280,272h-48V144h48V272z"/>
- </g>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g id="Icon_30_">
+ <g>
+ <path d="M256,48C141.6,48,48,141.601,48,256s93.6,208,208,208c114.4,0,208-93.601,208-208S370.4,48,256,48z M280,360h-48v-40h48
+ V360z M280,272h-48V144h48V272z"/>
+ </g>
+</g>
+</svg>
diff --git a/debian/ionicons/svg-orig/android-arrow-dropdown.svg b/debian/ionicons/svg-orig/android-arrow-dropdown.svg
index d46e962..55ee520 100644
--- a/debian/ionicons/svg-orig/android-arrow-dropdown.svg
+++ b/debian/ionicons/svg-orig/android-arrow-dropdown.svg
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g>
- <polygon points="128,192 256,320 384,192 "/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g>
+ <polygon points="128,192 256,320 384,192 "/>
+</g>
+</svg>
diff --git a/debian/ionicons/svg-orig/android-globe.svg b/debian/ionicons/svg-orig/android-globe.svg
index 677b2ac..c65393e 100644
--- a/debian/ionicons/svg-orig/android-globe.svg
+++ b/debian/ionicons/svg-orig/android-globe.svg
@@ -1,24 +1,24 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<path d="M256,48C141.124,48,48,141.125,48,256c0,114.875,93.124,208,208,208c114.875,0,208-93.125,208-208
- C464,141.125,370.875,48,256,48z M234.451,432.999c-39.464-4.726-75.978-22.392-104.519-50.932
- C96.258,348.393,77.714,303.622,77.714,256c0-42.87,15.036-83.424,42.601-115.659c0.71,8.517,2.463,17.648,2.014,24.175
- c-1.64,23.795-3.988,38.687,9.94,58.762c5.426,7.819,6.759,19.028,9.4,28.078c2.583,8.854,12.902,13.498,20.019,18.953
- c14.359,11.009,28.096,23.805,43.322,33.494c10.049,6.395,16.326,9.576,13.383,21.839c-2.367,9.862-3.028,15.937-8.13,24.723
- c-1.557,2.681,5.877,19.918,8.351,22.392c7.498,7.497,14.938,14.375,23.111,21.125C254.396,404.351,240.494,417.954,234.451,432.999
- z M382.067,382.067c-25.633,25.633-57.699,42.486-92.556,49.081c4.94-12.216,13.736-23.07,21.895-29.362
- c7.097-5.476,15.986-16.009,19.693-24.352c3.704-8.332,8.611-15.555,13.577-23.217c7.065-10.899-17.419-27.336-25.353-30.781
- c-17.854-7.751-31.294-18.21-47.161-29.375c-11.305-7.954-34.257,4.154-47.02-1.417c-17.481-7.633-31.883-20.896-47.078-32.339
- c-15.68-11.809-14.922-25.576-14.922-42.997c12.282,0.453,29.754-3.399,37.908,6.478c2.573,3.117,11.42,17.042,17.342,12.094
- c4.838-4.043-3.585-20.249-5.212-24.059c-5.005-11.715,11.404-16.284,19.803-24.228c10.96-10.364,34.47-26.618,32.612-34.047
- s-23.524-28.477-36.249-25.193c-1.907,0.492-18.697,18.097-21.941,20.859c0.086-5.746,0.172-11.491,0.26-17.237
- c0.055-3.628-6.768-7.352-6.451-9.692c0.8-5.914,17.262-16.647,21.357-21.357c-2.869-1.793-12.659-10.202-15.622-8.968
- c-7.174,2.99-15.276,5.05-22.45,8.039c0-2.488-0.302-4.825-0.662-7.133c14.376-6.365,29.587-10.791,45.31-13.152l14.084,5.66
- l9.944,11.801l9.924,10.233l8.675,2.795l13.779-12.995L282,87.929v-8.339c27.25,3.958,52.984,14.124,75.522,29.8
- c-4.032,0.361-8.463,0.954-13.462,1.59c-2.065-1.22-4.714-1.774-6.965-2.623c6.531,14.042,13.343,27.89,20.264,41.746
- c7.393,14.801,23.793,30.677,26.673,46.301c3.394,18.416,1.039,35.144,2.896,56.811c1.788,20.865,23.524,44.572,23.524,44.572
- s10.037,3.419,18.384,2.228C421.055,330.798,405.103,359.029,382.067,382.067z"/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<path d="M256,48C141.124,48,48,141.125,48,256c0,114.875,93.124,208,208,208c114.875,0,208-93.125,208-208
+ C464,141.125,370.875,48,256,48z M234.451,432.999c-39.464-4.726-75.978-22.392-104.519-50.932
+ C96.258,348.393,77.714,303.622,77.714,256c0-42.87,15.036-83.424,42.601-115.659c0.71,8.517,2.463,17.648,2.014,24.175
+ c-1.64,23.795-3.988,38.687,9.94,58.762c5.426,7.819,6.759,19.028,9.4,28.078c2.583,8.854,12.902,13.498,20.019,18.953
+ c14.359,11.009,28.096,23.805,43.322,33.494c10.049,6.395,16.326,9.576,13.383,21.839c-2.367,9.862-3.028,15.937-8.13,24.723
+ c-1.557,2.681,5.877,19.918,8.351,22.392c7.498,7.497,14.938,14.375,23.111,21.125C254.396,404.351,240.494,417.954,234.451,432.999
+ z M382.067,382.067c-25.633,25.633-57.699,42.486-92.556,49.081c4.94-12.216,13.736-23.07,21.895-29.362
+ c7.097-5.476,15.986-16.009,19.693-24.352c3.704-8.332,8.611-15.555,13.577-23.217c7.065-10.899-17.419-27.336-25.353-30.781
+ c-17.854-7.751-31.294-18.21-47.161-29.375c-11.305-7.954-34.257,4.154-47.02-1.417c-17.481-7.633-31.883-20.896-47.078-32.339
+ c-15.68-11.809-14.922-25.576-14.922-42.997c12.282,0.453,29.754-3.399,37.908,6.478c2.573,3.117,11.42,17.042,17.342,12.094
+ c4.838-4.043-3.585-20.249-5.212-24.059c-5.005-11.715,11.404-16.284,19.803-24.228c10.96-10.364,34.47-26.618,32.612-34.047
+ s-23.524-28.477-36.249-25.193c-1.907,0.492-18.697,18.097-21.941,20.859c0.086-5.746,0.172-11.491,0.26-17.237
+ c0.055-3.628-6.768-7.352-6.451-9.692c0.8-5.914,17.262-16.647,21.357-21.357c-2.869-1.793-12.659-10.202-15.622-8.968
+ c-7.174,2.99-15.276,5.05-22.45,8.039c0-2.488-0.302-4.825-0.662-7.133c14.376-6.365,29.587-10.791,45.31-13.152l14.084,5.66
+ l9.944,11.801l9.924,10.233l8.675,2.795l13.779-12.995L282,87.929v-8.339c27.25,3.958,52.984,14.124,75.522,29.8
+ c-4.032,0.361-8.463,0.954-13.462,1.59c-2.065-1.22-4.714-1.774-6.965-2.623c6.531,14.042,13.343,27.89,20.264,41.746
+ c7.393,14.801,23.793,30.677,26.673,46.301c3.394,18.416,1.039,35.144,2.896,56.811c1.788,20.865,23.524,44.572,23.524,44.572
+ s10.037,3.419,18.384,2.228C421.055,330.798,405.103,359.029,382.067,382.067z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/android-more-vertical.svg b/debian/ionicons/svg-orig/android-more-vertical.svg
index c1a71c8..fbca23d 100644
--- a/debian/ionicons/svg-orig/android-more-vertical.svg
+++ b/debian/ionicons/svg-orig/android-more-vertical.svg
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<path d="M296,136c0-22.002-17.998-40-40-40s-40,17.998-40,40s17.998,40,40,40S296,158.002,296,136z M296,376
- c0-22.002-17.998-40-40-40s-40,17.998-40,40s17.998,40,40,40S296,398.002,296,376z M296,256c0-22.002-17.998-40-40-40
- s-40,17.998-40,40s17.998,40,40,40S296,278.002,296,256z"/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<path d="M296,136c0-22.002-17.998-40-40-40s-40,17.998-40,40s17.998,40,40,40S296,158.002,296,136z M296,376
+ c0-22.002-17.998-40-40-40s-40,17.998-40,40s17.998,40,40,40S296,398.002,296,376z M296,256c0-22.002-17.998-40-40-40
+ s-40,17.998-40,40s17.998,40,40,40S296,278.002,296,256z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/android-time.svg b/debian/ionicons/svg-orig/android-time.svg
index f81f46e..929b237 100644
--- a/debian/ionicons/svg-orig/android-time.svg
+++ b/debian/ionicons/svg-orig/android-time.svg
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g id="Icon_1_">
- <g>
- <g>
- <path fill-opacity="0.9" d="M256,43C137.789,43,43,138.851,43,256s94.789,213,213,213s213-95.851,213-213S373.149,43,256,43z
- M256,426.4c-93.718,0-170.4-76.683-170.4-170.4S162.282,85.6,256,85.6S426.4,162.282,426.4,256S349.718,426.4,256,426.4z"/>
- </g>
- <polygon fill-opacity="0.9" points="266.65,149.5 234.7,149.5 234.7,277.3 346.525,344.393 362.5,317.768 266.65,261.324 "/>
- </g>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g id="Icon_1_">
+ <g>
+ <g>
+ <path fill-opacity="0.9" d="M256,43C137.789,43,43,138.851,43,256s94.789,213,213,213s213-95.851,213-213S373.149,43,256,43z
+ M256,426.4c-93.718,0-170.4-76.683-170.4-170.4S162.282,85.6,256,85.6S426.4,162.282,426.4,256S349.718,426.4,256,426.4z"/>
+ </g>
+ <polygon fill-opacity="0.9" points="266.65,149.5 234.7,149.5 234.7,277.3 346.525,344.393 362.5,317.768 266.65,261.324 "/>
+ </g>
+</g>
+</svg>
diff --git a/debian/ionicons/svg-orig/arrow-down-a.svg b/debian/ionicons/svg-orig/arrow-down-a.svg
index 4668ad1..7d476ca 100644
--- a/debian/ionicons/svg-orig/arrow-down-a.svg
+++ b/debian/ionicons/svg-orig/arrow-down-a.svg
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<polygon points="256.5,448.5 448.5,256.5 336.5,256.5 336.5,64.5 176.5,64.5 176.5,256.5 64.5,256.5 "/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<polygon points="256.5,448.5 448.5,256.5 336.5,256.5 336.5,64.5 176.5,64.5 176.5,256.5 64.5,256.5 "/>
+</svg>
diff --git a/debian/ionicons/svg-orig/arrow-swap.svg b/debian/ionicons/svg-orig/arrow-swap.svg
index 50740f7..aabe881 100644
--- a/debian/ionicons/svg-orig/arrow-swap.svg
+++ b/debian/ionicons/svg-orig/arrow-swap.svg
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<g>
- <path d="M64,328v48c0,4.4,3.6,8,8,8h248v64l128-96l-128-96v64H72C67.6,320,64,323.6,64,328z"/>
- <path d="M448,184v-48c0-4.4-3.6-8-8-8H192V64L64,160l128,96v-64h248C444.4,192,448,188.4,448,184z"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<g>
+ <path d="M64,328v48c0,4.4,3.6,8,8,8h248v64l128-96l-128-96v64H72C67.6,320,64,323.6,64,328z"/>
+ <path d="M448,184v-48c0-4.4-3.6-8-8-8H192V64L64,160l128,96v-64h248C444.4,192,448,188.4,448,184z"/>
+</g>
+</svg>
diff --git a/debian/ionicons/svg-orig/arrow-up-a.svg b/debian/ionicons/svg-orig/arrow-up-a.svg
index e333a38..f908a1b 100644
--- a/debian/ionicons/svg-orig/arrow-up-a.svg
+++ b/debian/ionicons/svg-orig/arrow-up-a.svg
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<polygon points="256.5,64.5 64.5,256.5 176.5,256.5 176.5,448.5 336.5,448.5 336.5,256.5 448.5,256.5 "/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<polygon points="256.5,64.5 64.5,256.5 176.5,256.5 176.5,448.5 336.5,448.5 336.5,256.5 448.5,256.5 "/>
+</svg>
diff --git a/debian/ionicons/svg-orig/chevron-left.svg b/debian/ionicons/svg-orig/chevron-left.svg
index 556425e..2a5847d 100644
--- a/debian/ionicons/svg-orig/chevron-left.svg
+++ b/debian/ionicons/svg-orig/chevron-left.svg
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<path d="M213.7,256L213.7,256L213.7,256L380.9,81.9c4.2-4.3,4.1-11.4-0.2-15.8l-29.9-30.6c-4.3-4.4-11.3-4.5-15.5-0.2L131.1,247.9
- c-2.2,2.2-3.2,5.2-3,8.1c-0.1,3,0.9,5.9,3,8.1l204.2,212.7c4.2,4.3,11.2,4.2,15.5-0.2l29.9-30.6c4.3-4.4,4.4-11.5,0.2-15.8
- L213.7,256z"/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<path d="M213.7,256L213.7,256L213.7,256L380.9,81.9c4.2-4.3,4.1-11.4-0.2-15.8l-29.9-30.6c-4.3-4.4-11.3-4.5-15.5-0.2L131.1,247.9
+ c-2.2,2.2-3.2,5.2-3,8.1c-0.1,3,0.9,5.9,3,8.1l204.2,212.7c4.2,4.3,11.2,4.2,15.5-0.2l29.9-30.6c4.3-4.4,4.4-11.5,0.2-15.8
+ L213.7,256z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/chevron-right.svg b/debian/ionicons/svg-orig/chevron-right.svg
index 7ac591a..c780695 100644
--- a/debian/ionicons/svg-orig/chevron-right.svg
+++ b/debian/ionicons/svg-orig/chevron-right.svg
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<path d="M298.3,256L298.3,256L298.3,256L131.1,81.9c-4.2-4.3-4.1-11.4,0.2-15.8l29.9-30.6c4.3-4.4,11.3-4.5,15.5-0.2l204.2,212.7
- c2.2,2.2,3.2,5.2,3,8.1c0.1,3-0.9,5.9-3,8.1L176.7,476.8c-4.2,4.3-11.2,4.2-15.5-0.2L131.3,446c-4.3-4.4-4.4-11.5-0.2-15.8
- L298.3,256z"/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<path d="M298.3,256L298.3,256L298.3,256L131.1,81.9c-4.2-4.3-4.1-11.4,0.2-15.8l29.9-30.6c4.3-4.4,11.3-4.5,15.5-0.2l204.2,212.7
+ c2.2,2.2,3.2,5.2,3,8.1c0.1,3-0.9,5.9-3,8.1L176.7,476.8c-4.2,4.3-11.2,4.2-15.5-0.2L131.3,446c-4.3-4.4-4.4-11.5-0.2-15.8
+ L298.3,256z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/chevron-up.svg b/debian/ionicons/svg-orig/chevron-up.svg
index 34355f3..7ab9d97 100644
--- a/debian/ionicons/svg-orig/chevron-up.svg
+++ b/debian/ionicons/svg-orig/chevron-up.svg
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<path d="M256,213.7L256,213.7L256,213.7l174.2,167.2c4.3,4.2,11.4,4.1,15.8-0.2l30.6-29.9c4.4-4.3,4.5-11.3,0.2-15.5L264.1,131.1
- c-2.2-2.2-5.2-3.2-8.1-3c-3-0.1-5.9,0.9-8.1,3L35.2,335.3c-4.3,4.2-4.2,11.2,0.2,15.5L66,380.7c4.4,4.3,11.5,4.4,15.8,0.2L256,213.7
- z"/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<path d="M256,213.7L256,213.7L256,213.7l174.2,167.2c4.3,4.2,11.4,4.1,15.8-0.2l30.6-29.9c4.4-4.3,4.5-11.3,0.2-15.5L264.1,131.1
+ c-2.2-2.2-5.2-3.2-8.1-3c-3-0.1-5.9,0.9-8.1,3L35.2,335.3c-4.3,4.2-4.2,11.2,0.2,15.5L66,380.7c4.4,4.3,11.5,4.4,15.8,0.2L256,213.7
+ z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/close-round.svg b/debian/ionicons/svg-orig/close-round.svg
index d8b5554..e011f7b 100644
--- a/debian/ionicons/svg-orig/close-round.svg
+++ b/debian/ionicons/svg-orig/close-round.svg
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<path d="M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5
- c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9
- c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<path d="M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5
+ c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9
+ c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/ios-film-outline.svg b/debian/ionicons/svg-orig/ios-film-outline.svg
index cc7b723..2d25737 100644
--- a/debian/ionicons/svg-orig/ios-film-outline.svg
+++ b/debian/ionicons/svg-orig/ios-film-outline.svg
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<path d="M56,88v336h400V88H56z M128,408H72v-48h56V408z M128,344H72v-48h56V344z M128,280H72v-48h56V280z M128,216H72v-48h56V216z
- M128,152H72v-48h56V152z M368,408H144V264h224V408z M368,248H144V104h224V248z M440,408h-56v-48h56V408z M440,344h-56v-48h56V344z
- M440,280h-56v-48h56V280z M440,216h-56v-48h56V216z M440,152h-56v-48h56V152z"/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<path d="M56,88v336h400V88H56z M128,408H72v-48h56V408z M128,344H72v-48h56V344z M128,280H72v-48h56V280z M128,216H72v-48h56V216z
+ M128,152H72v-48h56V152z M368,408H144V264h224V408z M368,248H144V104h224V248z M440,408h-56v-48h56V408z M440,344h-56v-48h56V344z
+ M440,280h-56v-48h56V280z M440,216h-56v-48h56V216z M440,152h-56v-48h56V152z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/ios-telephone.svg b/debian/ionicons/svg-orig/ios-telephone.svg
index ff1beb6..794e51a 100644
--- a/debian/ionicons/svg-orig/ios-telephone.svg
+++ b/debian/ionicons/svg-orig/ios-telephone.svg
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<path d="M415.9,335.5c-14.6-15-56.1-43.1-83.3-43.1c-6.3,0-11.8,1.4-16.3,4.3c-13.3,8.5-23.9,15.1-29,15.1c-2.8,0-5.8-2.5-12.4-8.2
- l-1.1-1c-18.3-15.9-22.2-20-29.3-27.4l-1.8-1.9c-1.3-1.3-2.4-2.5-3.5-3.6c-6.2-6.4-10.7-11-26.6-29l-0.7-0.8
- c-7.6-8.6-12.6-14.2-12.9-18.3c-0.3-4,3.2-10.5,12.1-22.6c10.8-14.6,11.2-32.6,1.3-53.5c-7.9-16.5-20.8-32.3-32.2-46.2l-1-1.2
- c-9.8-12-21.2-18-33.9-18c-14.1,0-25.8,7.6-32,11.6c-0.5,0.3-1,0.7-1.5,1c-13.9,8.8-24,20.9-27.8,33.2c-5.7,18.5-9.5,42.5,17.8,92.4
- c23.6,43.2,45,72.2,79,107.1c32,32.8,46.2,43.4,78,66.4c35.4,25.6,69.4,40.3,93.2,40.3c22.1,0,39.5,0,64.3-29.9
- C442.3,370.8,431.5,351.6,415.9,335.5z"/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<path d="M415.9,335.5c-14.6-15-56.1-43.1-83.3-43.1c-6.3,0-11.8,1.4-16.3,4.3c-13.3,8.5-23.9,15.1-29,15.1c-2.8,0-5.8-2.5-12.4-8.2
+ l-1.1-1c-18.3-15.9-22.2-20-29.3-27.4l-1.8-1.9c-1.3-1.3-2.4-2.5-3.5-3.6c-6.2-6.4-10.7-11-26.6-29l-0.7-0.8
+ c-7.6-8.6-12.6-14.2-12.9-18.3c-0.3-4,3.2-10.5,12.1-22.6c10.8-14.6,11.2-32.6,1.3-53.5c-7.9-16.5-20.8-32.3-32.2-46.2l-1-1.2
+ c-9.8-12-21.2-18-33.9-18c-14.1,0-25.8,7.6-32,11.6c-0.5,0.3-1,0.7-1.5,1c-13.9,8.8-24,20.9-27.8,33.2c-5.7,18.5-9.5,42.5,17.8,92.4
+ c23.6,43.2,45,72.2,79,107.1c32,32.8,46.2,43.4,78,66.4c35.4,25.6,69.4,40.3,93.2,40.3c22.1,0,39.5,0,64.3-29.9
+ C442.3,370.8,431.5,351.6,415.9,335.5z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/link.svg b/debian/ionicons/svg-orig/link.svg
index 791b0d7..9746518 100644
--- a/debian/ionicons/svg-orig/link.svg
+++ b/debian/ionicons/svg-orig/link.svg
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<g>
- <path d="M256.5,208H256v0C256.2,208,256.3,208,256.5,208z"/>
- <path d="M368.5,160H320c0,0,26,17,31.6,48H368h0.5c17.6,0,31.5,13.9,31.5,31.5v32c0,17.6-13.9,32.5-31.5,32.5h-112
- c-17.6,0-32.5-14.9-32.5-32.5V240h-48v31.5c0,11.5,2.5,22.5,6.9,32.5c12.6,28.2,40.9,48,73.6,48h112c44.2,0,79.5-36.3,79.5-80.5
- v-32C448,195.3,412.7,160,368.5,160z"/>
- <path d="M329.6,208c-12.1-28.3-40.1-48-73.1-48h-112c-44.2,0-80.5,35.3-80.5,79.5v32c0,44.2,36.3,80.5,80.5,80.5H192
- c0,0-25.8-17-32.1-48h-15.4c-17.6,0-32.5-14.9-32.5-32.5v-32c0-17.6,14.9-31.5,32.5-31.5H256h0.5c17.6,0,31.5,13.9,31.5,31.5v32
- c0,0.2,0,0.3,0,0.5h48c0-0.2,0-0.3,0-0.5v-32C336,228.3,333.7,217.6,329.6,208z"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<g>
+ <path d="M256.5,208H256v0C256.2,208,256.3,208,256.5,208z"/>
+ <path d="M368.5,160H320c0,0,26,17,31.6,48H368h0.5c17.6,0,31.5,13.9,31.5,31.5v32c0,17.6-13.9,32.5-31.5,32.5h-112
+ c-17.6,0-32.5-14.9-32.5-32.5V240h-48v31.5c0,11.5,2.5,22.5,6.9,32.5c12.6,28.2,40.9,48,73.6,48h112c44.2,0,79.5-36.3,79.5-80.5
+ v-32C448,195.3,412.7,160,368.5,160z"/>
+ <path d="M329.6,208c-12.1-28.3-40.1-48-73.1-48h-112c-44.2,0-80.5,35.3-80.5,79.5v32c0,44.2,36.3,80.5,80.5,80.5H192
+ c0,0-25.8-17-32.1-48h-15.4c-17.6,0-32.5-14.9-32.5-32.5v-32c0-17.6,14.9-31.5,32.5-31.5H256h0.5c17.6,0,31.5,13.9,31.5,31.5v32
+ c0,0.2,0,0.3,0,0.5h48c0-0.2,0-0.3,0-0.5v-32C336,228.3,333.7,217.6,329.6,208z"/>
+</g>
+</svg>
diff --git a/debian/ionicons/svg-orig/location.svg b/debian/ionicons/svg-orig/location.svg
index 1b95b73..60c274d 100644
--- a/debian/ionicons/svg-orig/location.svg
+++ b/debian/ionicons/svg-orig/location.svg
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<g>
- <path d="M256,64c-65.9,0-119.3,53.7-119.3,120c0,114.6,119.3,264,119.3,264s119.3-149.4,119.3-264C375.3,117.7,321.9,64,256,64z
- M256,242.2c-31.2,0-56.4-25.4-56.4-56.7c0-31.3,25.3-56.8,56.4-56.8c31.2,0,56.4,25.4,56.4,56.8
- C312.4,216.8,287.2,242.2,256,242.2z"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<g>
+ <path d="M256,64c-65.9,0-119.3,53.7-119.3,120c0,114.6,119.3,264,119.3,264s119.3-149.4,119.3-264C375.3,117.7,321.9,64,256,64z
+ M256,242.2c-31.2,0-56.4-25.4-56.4-56.7c0-31.3,25.3-56.8,56.4-56.8c31.2,0,56.4,25.4,56.4,56.8
+ C312.4,216.8,287.2,242.2,256,242.2z"/>
+</g>
+</svg>
diff --git a/debian/ionicons/svg-orig/music-note.svg b/debian/ionicons/svg-orig/music-note.svg
index 61f2548..51a07b9 100644
--- a/debian/ionicons/svg-orig/music-note.svg
+++ b/debian/ionicons/svg-orig/music-note.svg
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<path d="M426,32.1c-2.2,0-5.1,0.6-5.1,0.6L203.3,65.9C189.5,69.6,177,83,176,97.5V384h-61v-0.1c-28,0-51.1,20-51.1,48
- s23.1,48,51.3,48h36.2c15.3,0,28.9-6.9,38.3-17.5c0.1-0.1,0.3-0.1,0.4-0.2c0.6-0.6,1-1.5,1.5-2.1c1.3-1.6,2.4-3.2,3.4-5
- C204.6,441,208,422.3,208,414V182l208-38c0,0,0,136,0,192h-60.5c-28.3,0-51.2,19.9-51.2,48s22.9,48,51.2,48h37.2
- c18.2,0,34.1-6,43.2-21c0,0,0.1,0,0.2,0c9-12,12-30.2,12-54.9c0-24.8,0-302.8,0-302.8C448,41.6,438.1,32.1,426,32.1z"/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<path d="M426,32.1c-2.2,0-5.1,0.6-5.1,0.6L203.3,65.9C189.5,69.6,177,83,176,97.5V384h-61v-0.1c-28,0-51.1,20-51.1,48
+ s23.1,48,51.3,48h36.2c15.3,0,28.9-6.9,38.3-17.5c0.1-0.1,0.3-0.1,0.4-0.2c0.6-0.6,1-1.5,1.5-2.1c1.3-1.6,2.4-3.2,3.4-5
+ C204.6,441,208,422.3,208,414V182l208-38c0,0,0,136,0,192h-60.5c-28.3,0-51.2,19.9-51.2,48s22.9,48,51.2,48h37.2
+ c18.2,0,34.1-6,43.2-21c0,0,0.1,0,0.2,0c9-12,12-30.2,12-54.9c0-24.8,0-302.8,0-302.8C448,41.6,438.1,32.1,426,32.1z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/navicon-round.svg b/debian/ionicons/svg-orig/navicon-round.svg
index 586a410..f3adc26 100644
--- a/debian/ionicons/svg-orig/navicon-round.svg
+++ b/debian/ionicons/svg-orig/navicon-round.svg
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<g>
- <path d="M417.4,224H94.6C77.7,224,64,238.3,64,256c0,17.7,13.7,32,30.6,32h322.8c16.9,0,30.6-14.3,30.6-32
- C448,238.3,434.3,224,417.4,224z"/>
- <path d="M417.4,96H94.6C77.7,96,64,110.3,64,128c0,17.7,13.7,32,30.6,32h322.8c16.9,0,30.6-14.3,30.6-32
- C448,110.3,434.3,96,417.4,96z"/>
- <path d="M417.4,352H94.6C77.7,352,64,366.3,64,384c0,17.7,13.7,32,30.6,32h322.8c16.9,0,30.6-14.3,30.6-32
- C448,366.3,434.3,352,417.4,352z"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<g>
+ <path d="M417.4,224H94.6C77.7,224,64,238.3,64,256c0,17.7,13.7,32,30.6,32h322.8c16.9,0,30.6-14.3,30.6-32
+ C448,238.3,434.3,224,417.4,224z"/>
+ <path d="M417.4,96H94.6C77.7,96,64,110.3,64,128c0,17.7,13.7,32,30.6,32h322.8c16.9,0,30.6-14.3,30.6-32
+ C448,110.3,434.3,96,417.4,96z"/>
+ <path d="M417.4,352H94.6C77.7,352,64,366.3,64,384c0,17.7,13.7,32,30.6,32h322.8c16.9,0,30.6-14.3,30.6-32
+ C448,366.3,434.3,352,417.4,352z"/>
+</g>
+</svg>
diff --git a/debian/ionicons/svg-orig/play.svg b/debian/ionicons/svg-orig/play.svg
index 2b53155..c7817bd 100644
--- a/debian/ionicons/svg-orig/play.svg
+++ b/debian/ionicons/svg-orig/play.svg
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<path d="M405.2,232.9L126.8,67.2c-3.4-2-6.9-3.2-10.9-3.2c-10.9,0-19.8,9-19.8,20H96v344h0.1c0,11,8.9,20,19.8,20
- c4.1,0,7.5-1.4,11.2-3.4l278.1-165.5c6.6-5.5,10.8-13.8,10.8-23.1C416,246.7,411.8,238.5,405.2,232.9z"/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<path d="M405.2,232.9L126.8,67.2c-3.4-2-6.9-3.2-10.9-3.2c-10.9,0-19.8,9-19.8,20H96v344h0.1c0,11,8.9,20,19.8,20
+ c4.1,0,7.5-1.4,11.2-3.4l278.1-165.5c6.6-5.5,10.8-13.8,10.8-23.1C416,246.7,411.8,238.5,405.2,232.9z"/>
+</svg>
diff --git a/debian/ionicons/svg-orig/search.svg b/debian/ionicons/svg-orig/search.svg
index 9c51b98..92fd69d 100644
--- a/debian/ionicons/svg-orig/search.svg
+++ b/debian/ionicons/svg-orig/search.svg
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<path d="M445,386.7l-84.8-85.9c13.8-24.1,21-50.9,21-77.9c0-87.6-71.2-158.9-158.6-158.9C135.2,64,64,135.3,64,222.9
- c0,87.6,71.2,158.9,158.6,158.9c27.9,0,55.5-7.7,80.1-22.4l84.4,85.6c1.9,1.9,4.6,3.1,7.3,3.1c2.7,0,5.4-1.1,7.3-3.1l43.3-43.8
- C449,397.1,449,390.7,445,386.7z M222.6,125.9c53.4,0,96.8,43.5,96.8,97c0,53.5-43.4,97-96.8,97c-53.4,0-96.8-43.5-96.8-97
- C125.8,169.4,169.2,125.9,222.6,125.9z"/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<path d="M445,386.7l-84.8-85.9c13.8-24.1,21-50.9,21-77.9c0-87.6-71.2-158.9-158.6-158.9C135.2,64,64,135.3,64,222.9
+ c0,87.6,71.2,158.9,158.6,158.9c27.9,0,55.5-7.7,80.1-22.4l84.4,85.6c1.9,1.9,4.6,3.1,7.3,3.1c2.7,0,5.4-1.1,7.3-3.1l43.3-43.8
+ C449,397.1,449,390.7,445,386.7z M222.6,125.9c53.4,0,96.8,43.5,96.8,97c0,53.5-43.4,97-96.8,97c-53.4,0-96.8-43.5-96.8-97
+ C125.8,169.4,169.2,125.9,222.6,125.9z"/>
+</svg>
diff --git a/debian/patches/beautifyjs b/debian/patches/beautifyjs
index 9b7ff81..9d85907 100644
--- a/debian/patches/beautifyjs
+++ b/debian/patches/beautifyjs
@@ -1,3 +1,7 @@
+Author: Johannes Schauer Marin Rodrigues <josch@debian.org>
+Comment: turn minified javascript into something readable
+Forwarded: not-needed
+
--- a/searx/static/themes/simple/js/searx_src/autocomplete.js
+++ b/searx/static/themes/simple/js/searx_src/autocomplete.js
@@ -1,4 +1,51 @@
diff --git a/debian/patches/clean-gruntfiles b/debian/patches/clean-gruntfiles
index d1001b7..3395fef 100644
--- a/debian/patches/clean-gruntfiles
+++ b/debian/patches/clean-gruntfiles
@@ -1,25 +1,37 @@
+Author: Johannes Schauer Marin Rodrigues <josch@debian.org>
+Comment: disable all grunt task using unpacked modules
+Forwarded: not-needed
+
--- a/searx/static/themes/oscar/gruntfile.js
+++ b/searx/static/themes/oscar/gruntfile.js
-@@ -81,16 +81,9 @@ module.exports = function(grunt) {
+@@ -103,9 +103,6 @@ module.exports = function(grunt) {
+ production: {
+ options: {
+ paths: ["src/less/pointhi", "src/less/logicodev", "src/less/logicodev-dark", "src/less/bootstrap"],
+- plugins: [
+- new (require('less-plugin-clean-css'))()
+- ],
+ sourceMap: true,
+ sourceMapURL: (name) => { const s = name.split('/'); return s[s.length - 1] + '.map';},
+ outputSourceFiles: false,
+@@ -136,16 +133,12 @@ module.exports = function(grunt) {
}
});
-- grunt.loadNpmTasks('grunt-contrib-uglify');
+- grunt.loadNpmTasks('grunt-contrib-copy');
+ grunt.loadNpmTasks('grunt-contrib-uglify');
- grunt.loadNpmTasks('grunt-contrib-jshint');
- grunt.loadNpmTasks('grunt-contrib-watch');
-- grunt.loadNpmTasks('grunt-contrib-concat');
+ grunt.loadNpmTasks('grunt-contrib-concat');
- grunt.loadNpmTasks('grunt-contrib-less');
-+ grunt.loadNpmTasks('grunt-contrib-uglify', '/usr/lib/nodejs');
-+ grunt.loadNpmTasks('grunt-contrib-concat', '/usr/lib/nodejs');
-
-- grunt.registerTask('test', ['jshint']);
--
-- grunt.registerTask('default', ['jshint', 'concat', 'uglify', 'less']);
--
-- grunt.registerTask('styles', ['less']);
+
+ grunt.registerTask('test', ['jshint']);
+
+- grunt.registerTask('default', ['copy', 'jshint', 'concat', 'uglify', 'less']);
+ grunt.registerTask('default', ['concat', 'uglify']);
- };
+ grunt.registerTask('styles', ['less']);
+
--- a/searx/static/themes/simple/gruntfile.js
+++ b/searx/static/themes/simple/gruntfile.js
@@ -67,12 +67,6 @@ module.exports = function(grunt) {
@@ -32,25 +44,23 @@
- compatibility: '*'
- })
- ],
- banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n'
+ banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | <%= process.env.GIT_URL %> */\n'
},
files: {
-@@ -147,15 +141,8 @@ module.exports = function(grunt) {
+@@ -147,15 +141,11 @@ module.exports = function(grunt) {
}
});
- grunt.loadNpmTasks('grunt-contrib-watch');
-- grunt.loadNpmTasks('grunt-contrib-uglify');
+ grunt.loadNpmTasks('grunt-contrib-uglify');
- grunt.loadNpmTasks('grunt-contrib-jshint');
-- grunt.loadNpmTasks('grunt-contrib-concat');
+ grunt.loadNpmTasks('grunt-contrib-concat');
- grunt.loadNpmTasks('grunt-contrib-less');
-- grunt.loadNpmTasks('grunt-contrib-cssmin');
+ grunt.loadNpmTasks('grunt-contrib-cssmin');
- grunt.loadNpmTasks('grunt-webfont');
-+ grunt.loadNpmTasks('grunt-contrib-uglify', '/usr/lib/nodejs');
-+ grunt.loadNpmTasks('grunt-contrib-concat', '/usr/lib/nodejs');
-- grunt.registerTask('test', ['jshint']);
--
+ grunt.registerTask('test', ['jshint']);
+
- grunt.registerTask('default', ['jshint', 'concat', 'uglify', 'less:development', 'less:production']);
+ grunt.registerTask('default', ['concat', 'uglify']);
};
diff --git a/debian/patches/managesh b/debian/patches/managesh
deleted file mode 100644
index 80d8345..0000000
--- a/debian/patches/managesh
+++ /dev/null
@@ -1,39 +0,0 @@
---- a/manage.sh
-+++ b/manage.sh
-@@ -115,8 +115,7 @@ tests() {
- #
-
- npm_path_setup() {
-- which npm || (printf 'Error: npm is not found\n'; exit 1)
-- export PATH="$(npm bin)":$PATH
-+ true
- }
-
- npm_packages() {
-@@ -138,7 +137,7 @@ npm_packages() {
- build_style() {
- npm_path_setup
-
-- lessc --clean-css="--s1 --advanced --compatibility=ie9" "$BASE_DIR/searx/static/$1" "$BASE_DIR/searx/static/$2"
-+ lessc -x "$BASE_DIR/searx/static/$1" "$BASE_DIR/searx/static/$2"
- }
-
- styles() {
-@@ -152,8 +151,15 @@ styles() {
- build_style themes/courgette/less/style-rtl.less themes/courgette/css/style-rtl.css
- echo '[!] Building pix-art style'
- build_style themes/pix-art/less/style.less themes/pix-art/css/style.css
-- echo '[!] Building bootstrap style'
-- build_style less/bootstrap/bootstrap.less css/bootstrap.min.css
-+ echo '[!] Building simple style'
-+ build_style themes/simple/less/style.less themes/simple/css/searx.min.css
-+ build_style themes/simple/less/style-rtl.less themes/simple/css/searx-rtl.min.css
-+ echo '[!] Building logicodev'
-+ build_style themes/oscar/less/logicodev/oscar.less themes/oscar/css/logicodev.min.css
-+ echo '[!] Building logicodev-dark'
-+ build_style themes/oscar/less/logicodev-dark/oscar.less themes/oscar/css/logicodev-dark.min.css
-+ echo '[!] Building pointhi'
-+ build_style themes/oscar/less/pointhi/oscar.less themes/oscar/css/pointhi.min.css
- }
-
- grunt_build() {
diff --git a/debian/patches/series b/debian/patches/series
index 15bb9db..fb14dca 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,5 +1,4 @@
beautifyjs
-clean-gruntfiles
-managesh
settingsyml
setuppy
+clean-gruntfiles
diff --git a/debian/patches/settingsyml b/debian/patches/settingsyml
index ed30dc4..19e47e3 100644
--- a/debian/patches/settingsyml
+++ b/debian/patches/settingsyml
@@ -1,9 +1,13 @@
+Author: Johannes Schauer Marin Rodrigues <josch@debian.org>
+Comment: we use a custom path in Debian
+Forwarded: not-needed
+
--- a/searx/settings.yml
+++ b/searx/settings.yml
-@@ -18,8 +18,8 @@ server:
- http_protocol_version : "1.0" # 1.0 and 1.1 are supported
-
+@@ -39,8 +39,8 @@ server:
ui:
+ autofocus : True # Autofocus search input
+ archive_today : False # show archive.today links
- static_path : "" # Custom static path - leave it blank if you didn't change
- templates_path : "" # Custom templates path - leave it blank if you didn't change
+ static_path : "/usr/share/python3-searx/static" # Custom static path - leave it blank if you didn't change
diff --git a/debian/patches/setuppy b/debian/patches/setuppy
index 309ff37..da02877 100644
--- a/debian/patches/setuppy
+++ b/debian/patches/setuppy
@@ -1,6 +1,10 @@
+Author: Johannes Schauer Marin Rodrigues <josch@debian.org>
+Comment: do not install all source material
+Forwarded: not-needed
+
--- a/setup.py
+++ b/setup.py
-@@ -51,23 +51,9 @@ setup(
+@@ -55,23 +55,9 @@ setup(
},
package_data={
'searx': [
diff --git a/debian/python3-searx.install b/debian/python3-searx.install
index 7ac30c8..def1807 100644
--- a/debian/python3-searx.install
+++ b/debian/python3-searx.install
@@ -1,22 +1,14 @@
-# we must list each theme subdirectory manually because we do not want to
# install the less subdirectory or the oscar gruntfile or package.json
-searx/static/plugins /usr/share/python3-searx/static
-searx/static/themes/courgette/css /usr/share/python3-searx/static/themes/courgette
-searx/static/themes/courgette/img /usr/share/python3-searx/static/themes/courgette
-searx/static/themes/courgette/js /usr/share/python3-searx/static/themes/courgette
-searx/static/themes/legacy/css /usr/share/python3-searx/static/themes/legacy
-searx/static/themes/legacy/img /usr/share/python3-searx/static/themes/legacy
-searx/static/themes/legacy/js /usr/share/python3-searx/static/themes/legacy
+# we must list each theme subdirectory manually because we do not want to
+debian/ionicons/ion.ttf /usr/share/python3-searx/static/fonts
+debian/ionicons/ion.woff /usr/share/python3-searx/static/fonts
+searx/static/css /usr/share/python3-searx/static
+searx/static/plugins/css /usr/share/python3-searx/static/plugins
+searx/static/plugins/js /usr/share/python3-searx/static/plugins
searx/static/themes/oscar/css /usr/share/python3-searx/static/themes/oscar
searx/static/themes/oscar/img /usr/share/python3-searx/static/themes/oscar
searx/static/themes/oscar/js /usr/share/python3-searx/static/themes/oscar
-searx/static/themes/pix-art/css /usr/share/python3-searx/static/themes/pix-art
-searx/static/themes/pix-art/img /usr/share/python3-searx/static/themes/pix-art
-searx/static/themes/pix-art/js /usr/share/python3-searx/static/themes/pix-art
-searx/static/themes/simple/css /usr/share/python3-searx/static/themes/simple
searx/static/themes/simple/img /usr/share/python3-searx/static/themes/simple
searx/static/themes/simple/js /usr/share/python3-searx/static/themes/simple
-debian/ionicons/ion.woff /usr/share/python3-searx/static/themes/simple/fonts
-debian/ionicons/ion.ttf /usr/share/python3-searx/static/themes/simple/fonts
searx/templates /usr/share/python3-searx
usr/lib/python3*
diff --git a/debian/python3-searx.links b/debian/python3-searx.links
index 8c37498..9c2ee0f 100644
--- a/debian/python3-searx.links
+++ b/debian/python3-searx.links
@@ -1,8 +1,8 @@
-/usr/share/javascript/requirejs/require.min.js /usr/share/python3-searx/static/js/require-2.1.15.min.js
/usr/share/javascript/bootstrap/css/bootstrap.min.css /usr/share/python3-searx/static/css/bootstrap.min.css
/usr/share/javascript/bootstrap/fonts/glyphicons-halflings-regular.ttf /usr/share/python3-searx/static/fonts/glyphicons-halflings-regular.ttf
/usr/share/javascript/bootstrap/fonts/glyphicons-halflings-regular.woff /usr/share/python3-searx/static/fonts/glyphicons-halflings-regular.woff
/usr/share/javascript/bootstrap/fonts/glyphicons-halflings-regular.woff2 /usr/share/python3-searx/static/fonts/glyphicons-halflings-regular.woff2
/usr/share/javascript/bootstrap/js/bootstrap.js /usr/share/python3-searx/static/js/bootstrap.min.js
-/usr/share/javascript/jquery/jquery.min.js /usr/share/python3-searx/static/js/jquery-1.11.1.min.js
+/usr/share/javascript/jquery/jquery.min.js /usr/share/python3-searx/static/js/jquery.min.js
/usr/share/javascript/leaflet/leaflet.css /usr/share/python3-searx/static/css/leaflet.min.css
+/usr/share/javascript/requirejs/require.min.js /usr/share/python3-searx/static/js/require-2.1.15.min.js
diff --git a/debian/python3-searx.lintian-overrides b/debian/python3-searx.lintian-overrides
index 06cb856..c8a805a 100644
--- a/debian/python3-searx.lintian-overrides
+++ b/debian/python3-searx.lintian-overrides
@@ -1,2 +1,6 @@
# the font is only used for the "simple" theme
font-in-non-font-package
+font-outside-font-dir [usr/share/python3-searx/static/fonts/ion.ttf]
+font-outside-font-dir [usr/share/python3-searx/static/fonts/ion.woff]
+# false-positive -- the file is not documentation
+package-contains-documentation-outside-usr-share-doc [usr/lib/python3/dist-packages/searx/data/ahmia_blacklist.txt]
diff --git a/debian/rules b/debian/rules
index 01fe593..c3dabc9 100755
--- a/debian/rules
+++ b/debian/rules
@@ -10,10 +10,40 @@ export PYBUILD_DISABLE_python2=1
override_dh_auto_build:
python3 ./debian/ionicons/generate_less.py < ./debian/ionicons/input.json > searx/static/themes/simple/less/ion.less
dh_auto_build
- ./manage.sh styles # needed to run lessc because grunt-contrib-less is not packaged
- ./manage.sh locales # run pybabel
- ./manage.sh grunt_build # build the oscar theme
+ pybabel compile -d searx/translations
+ mkdir -p searx/static/css
+ grunt --gruntfile searx/static/themes/oscar/gruntfile.js
+ # https://github.com/searx/searx/issues/3365
+ ln -s ../logicodev/variables.less searx/static/themes/oscar/src/less/pointhi/variables.less
+ for style in logicodev logicodev-dark pointhi; do \
+ lessc -x searx/static/themes/oscar/src/less/$$style/oscar.less searx/static/css/$$style.min.css; \
+ done
+ grunt --gruntfile searx/static/themes/simple/gruntfile.js
+ for style in "" -rtl; do \
+ lessc -x searx/static/themes/simple/less/style$$style.less searx/static/css/searx$$style.min.css; \
+ done
python3 ./debian/ionicons/generate.py < ./debian/ionicons/input.json
+ echo '{"bang":[]}' > searx/data/bangs.json
# do not run tests because the splinter python3 module is not packaged yet
override_dh_auto_test:
+
+execute_after_dh_auto_clean:
+ rm -f debian/ionicons/ion.ttf debian/ionicons/ion.woff searx/data/bangs.json
+ for p in themes/oscar/src/less/pointhi/variables.less \
+ css/logicodev-dark.min.css \
+ css/logicodev.min.css \
+ css/pointhi.min.css \
+ css/searx-rtl.min.css \
+ css/searx.min.css \
+ themes/oscar/js/searx.js \
+ themes/oscar/js/searx.min.js \
+ themes/oscar/js/searx.min.js.map \
+ themes/simple/js/searx.head.min.js \
+ themes/simple/js/searx.head.min.js.map \
+ themes/simple/js/searx.js \
+ themes/simple/js/searx.min.js \
+ themes/simple/js/searx.min.js.map \
+ themes/simple/less/ion.less; do \
+ rm -f "searx/static/$$p"; \
+ done
diff --git a/debian/salsa-ci.yml b/debian/salsa-ci.yml
new file mode 100644
index 0000000..83a9887
--- /dev/null
+++ b/debian/salsa-ci.yml
@@ -0,0 +1,9 @@
+---
+include:
+ - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
+ - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
+
+variables:
+ SALSA_CI_DISABLE_BLHC: 1
+ SALSA_CI_DISABLE_BUILD_PACKAGE_ANY: 1
+
diff --git a/debian/searx.examples b/debian/searx.examples
index 2fedfe1..d058f14 100644
--- a/debian/searx.examples
+++ b/debian/searx.examples
@@ -1,3 +1,4 @@
+debian/examples/apache2
debian/examples/nginx
debian/examples/uwsgi
searx/settings.yml
diff --git a/debian/searx.install b/debian/searx.install
index 57db456..d7b677f 100644
--- a/debian/searx.install
+++ b/debian/searx.install
@@ -1 +1,2 @@
+usr/bin/searx-checker
usr/bin/searx-run
diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides
new file mode 100644
index 0000000..080fa29
--- /dev/null
+++ b/debian/source/lintian-overrides
@@ -0,0 +1,3 @@
+# false-positive
+source-is-missing [searx/templates/oscar/result_templates/map.html]
+source-is-missing [searx/templates/simple/result_templates/map.html]
diff --git a/debian/tests/apache2 b/debian/tests/apache2
new file mode 100644
index 0000000..37ea62e
--- /dev/null
+++ b/debian/tests/apache2
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -ex
+
+rm /etc/apache2/sites-enabled/000-default.conf
+cp /usr/share/doc/searx/examples/apache2/sites-available/searx.conf /etc/apache2/sites-available/
+ln -s ../sites-available/searx.conf /etc/apache2/sites-enabled/searx.conf
+a2enmod proxy
+a2enmod proxy_uwsgi
+a2enmod uwsgi
+
+cp /usr/share/doc/searx/examples/uwsgi/apps-available/searx.ini /etc/uwsgi/apps-available
+ln -s ../apps-available/searx.ini /etc/uwsgi/apps-enabled/searx.ini
+mkdir /etc/searx
+cp /usr/share/doc/searx/examples/settings.yml /etc/searx/settings.yml
+sed -i -e "s/ultrasecretkey/$(openssl rand -hex 16)/g" /etc/searx/settings.yml
+systemctl restart apache2
+systemctl restart uwsgi
+sleep 5
+systemctl status apache2
+systemctl status uwsgi
+cat /var/log/uwsgi/app/searx.log
+curl http://localhost/searx/
+curl http://localhost/searx/ | grep '<input type="search".* name="q"'
diff --git a/debian/tests/control b/debian/tests/control
index dbabf19..da24578 100644
--- a/debian/tests/control
+++ b/debian/tests/control
@@ -1,3 +1,18 @@
-Tests: general
+Tests: nginx
Restrictions: allow-stderr, isolation-container, needs-root
-Depends: @, curl, nginx, uwsgi, uwsgi-plugin-python3
+Depends:
+ curl,
+ nginx,
+ uwsgi,
+ uwsgi-plugin-python3,
+ @,
+
+Tests: apache2
+Restrictions: allow-stderr, isolation-container, needs-root
+Depends:
+ apache2,
+ curl,
+ libapache2-mod-uwsgi,
+ uwsgi,
+ uwsgi-plugin-python3,
+ @,
diff --git a/debian/tests/general b/debian/tests/nginx
index 2dfba3f..df20ec3 100644
--- a/debian/tests/general
+++ b/debian/tests/nginx
@@ -8,8 +8,13 @@ ln -s ../sites-available/searx /etc/nginx/sites-enabled/searx
cp /usr/share/doc/searx/examples/uwsgi/apps-available/searx.ini /etc/uwsgi/apps-available
ln -s ../apps-available/searx.ini /etc/uwsgi/apps-enabled/searx.ini
mkdir /etc/searx
-gzip --to-stdout --decompress /usr/share/doc/searx/examples/settings.yml.gz > /etc/searx/settings.yml
+cp /usr/share/doc/searx/examples/settings.yml /etc/searx/settings.yml
sed -i -e "s/ultrasecretkey/$(openssl rand -hex 16)/g" /etc/searx/settings.yml
systemctl restart nginx
systemctl restart uwsgi
-curl localhost | grep 'input type="search" name="q"'
+sleep 5
+systemctl status nginx
+systemctl status uwsgi
+cat /var/log/uwsgi/app/searx.log
+curl localhost
+curl localhost | grep '<input type="search".* name="q"'
diff --git a/debian/upstream/metadata b/debian/upstream/metadata
new file mode 100644
index 0000000..de8b0bb
--- /dev/null
+++ b/debian/upstream/metadata
@@ -0,0 +1,6 @@
+---
+Bug-Database: https://github.com/asciimoo/searx/issues
+Bug-Submit: https://github.com/asciimoo/searx/issues/new
+Donation: https://searx.me/static/donate.html
+Repository: https://github.com/asciimoo/searx.git
+Repository-Browse: https://github.com/asciimoo/searx
diff --git a/dockerfiles/docker-entrypoint.sh b/dockerfiles/docker-entrypoint.sh
index 8b4c348..6592b1c 100755
--- a/dockerfiles/docker-entrypoint.sh
+++ b/dockerfiles/docker-entrypoint.sh
@@ -1,15 +1,40 @@
#!/bin/sh
-export SEARX_VERSION=$(su searx -c 'python3 -c "import six; import searx.version; six.print_(searx.version.VERSION_STRING)"')
-printf 'searx version %s\n\n' "${SEARX_VERSION}"
-
-export UWSGI_SETTINGS_PATH=/etc/searx/uwsgi.ini
-export SEARX_SETTINGS_PATH=/etc/searx/settings.yml
+help() {
+ printf "Command line:\n\n"
+ printf " -h Display this help\n"
+ printf " -d Dry run to update the configuration files.\n"
+ printf " -f Always update on the configuration files (existing files are renamed with the .old suffix)\n"
+ printf " Without this option, the new configuration files are copied with the .new suffix\n"
+ printf "\nEnvironment variables:\n\n"
+ printf " INSTANCE_NAME settings.yml : general.instance_name\n"
+ printf " AUTOCOMPLETE settings.yml : search.autocomplete\n"
+ printf " BASE_URL settings.yml : server.base_url\n"
+ printf " MORTY_URL settings.yml : result_proxy.url\n"
+ printf " MORTY_KEY settings.yml : result_proxy.key\n"
+ printf " BIND_ADDRESS uwsgi bind to the specified TCP socket using HTTP protocol. Default value: \"${DEFAULT_BIND_ADDRESS}\"\n"
+ printf "\nVolume:\n\n"
+ printf " /etc/searx the docker entry point copies settings.yml and uwsgi.ini in this directory (see the -f command line option)\n"
+ echo
+ exit 0
+}
+export DEFAULT_BIND_ADDRESS="0.0.0.0:8080"
if [ -z "${BIND_ADDRESS}" ]; then
- export BIND_ADDRESS=":8080"
+ export BIND_ADDRESS="${DEFAULT_BIND_ADDRESS}"
fi
+# Parse special command line
+# see docs/admin/installation-docker.rst
+# display the help message without the version
+if [ "$1" = "help" ]; then
+ help
+fi
+
+# Version
+export SEARX_VERSION=$(su searx -c 'python3 -c "import six; import searx.version; six.print_(searx.version.VERSION_STRING)"' 2>/dev/null)
+printf 'searx version %s\n\n' "${SEARX_VERSION}"
+
# Parse command line
FORCE_CONF_UPDATE=0
DRY_RUN=0
@@ -23,19 +48,7 @@ do
DRY_RUN=1
;;
h)
- printf "Command line:\n\n"
- printf " -h Display this help\n"
- printf " -d Dry run to update the configuration files.\n"
- printf " -f Always update on the configuration files (existing files are renamed with the .old suffix)\n"
- printf " Without this option, new configuration files are copied with the .new suffix\n"
- printf "\nEnvironment variables:\n\n"
- printf " INSTANCE_NAME settings.yml : general.instance_name\n"
- printf " AUTOCOMPLETE settings.yml : search.autocomplete\n"
- printf " BASE_URL settings.yml : server.base_url\n"
- printf " MORTY_URL settings.yml : result_proxy.url\n"
- printf " MORTY_KEY settings.yml : result_proxy.key\n"
- printf " BIND_ADDRESS where uwsgi will accept HTTP request (format : host:port)\n"
- exit 0
+ help
esac
done
@@ -50,7 +63,7 @@ patch_searx_settings() {
CONF="$1"
# Make sure that there is trailing slash at the end of BASE_URL
- # see http://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Shell-Parameter-Expansion
+ # see https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Shell-Parameter-Expansion
export BASE_URL="${BASE_URL%/}/"
# update settings.yml
diff --git a/dockerfiles/uwsgi.ini b/dockerfiles/uwsgi.ini
index fa2fd63..818a99c 100644
--- a/dockerfiles/uwsgi.ini
+++ b/dockerfiles/uwsgi.ini
@@ -31,3 +31,17 @@ touch-logrotate = /run/uwsgi-logrotate
unique-cron = 15 0 -1 -1 -1 { touch /run/uwsgi-logrotate }
log-backupname = /var/log/uwsgi/uwsgi.log.1
logto = /var/log/uwsgi/uwsgi.log
+
+# No keep alive
+# See https://github.com/searx/searx-docker/issues/24
+add-header = Connection: close
+
+# uwsgi serves the static files
+# expires set to one day as Flask does
+static-map = /static=/usr/local/searx/searx/static
+static-expires = /* 864000
+static-gzip-all = True
+offload-threads = %k
+
+# Cache
+cache2 = name=searxcache,items=2000,blocks=2000,blocksize=4096,bitmap=1
diff --git a/docs/_themes/searx/static/searx.css b/docs/_themes/searx/static/searx.css
index d6a664f..ae742a4 100644
--- a/docs/_themes/searx/static/searx.css
+++ b/docs/_themes/searx/static/searx.css
@@ -33,7 +33,7 @@ p.sidebar-title, .sidebar p {
/* admonitions
*/
-div.admonition, div.topic {
+div.admonition, div.topic, div.toctree-wrapper {
background-color: #fafafa;
margin: 8px 0px;
padding: 1em;
@@ -42,6 +42,16 @@ div.admonition, div.topic {
border-right: none;
border-bottom: none;
border-left: 5pt solid #ccc;
+ list-style-type: disclosure-closed;
+}
+
+div.toctree-wrapper p.caption {
+ font-weight: normal;
+ font-size: 24px;
+ margin: 0 0 10px 0;
+ padding: 0;
+ line-height: 1;
+ display: inline;
}
p.admonition-title:after {
diff --git a/docs/admin/arch_public.dot b/docs/admin/arch_public.dot
index a46c96d..0d82607 100644
--- a/docs/admin/arch_public.dot
+++ b/docs/admin/arch_public.dot
@@ -4,11 +4,11 @@ digraph G {
edge [fontname="Sans"];
browser [label="Browser", shape=Mdiamond];
- rp [label="Reverse Proxy", href="url to configure reverse proxy"];
- filtron [label="Filtron", href="https://github.com/asciimoo/filtron"];
- morty [label="Morty", href="https://github.com/asciimoo/morty"];
+ rp [label="Reverse Proxy", href="https://searx.github.io/searx/utils/filtron.sh.html#public-reverse-proxy"];
+ filtron [label="Filtron", href="https://searx.github.io/searx/utils/filtron.sh.html"];
+ morty [label="Morty", href="https://searx.github.io/searx/utils/morty.sh.html"];
static [label="Static files", href="url to configure static files"];
- uwsgi [label="uwsgi", href="url to configure uwsgi"]
+ uwsgi [label="uwsgi", href="https://searx.github.io/searx/utils/searx.sh.html"]
searx1 [label="Searx #1"];
searx2 [label="Searx #2"];
searx3 [label="Searx #3"];
diff --git a/docs/admin/architecture.rst b/docs/admin/architecture.rst
index 7064a29..464e765 100644
--- a/docs/admin/architecture.rst
+++ b/docs/admin/architecture.rst
@@ -4,17 +4,21 @@
Architecture
============
-.. sidebar:: Needs work!
+.. sidebar:: Further reading
- This article needs some work / Searx is a collaborative effort. If you have
- any contribution, feel welcome to send us your :pull:`PR <../pulls>`, see
- :ref:`how to contribute`.
+ - Reverse Proxy: :ref:`Apache <apache searx site>` & :ref:`nginx <nginx searx
+ site>`
+ - Filtron: :ref:`searx filtron`
+ - Morty: :ref:`searx morty`
+ - uWSGI: :ref:`searx uwsgi`
+ - Searx: :ref:`installation basic`
Herein you will find some hints and suggestions about typical architectures of
searx infrastructures.
We start with a contribution from :pull:`@dalf <1776#issuecomment-567917320>`.
-It shows a *reference* setup for public searx instances.
+It shows a *reference* setup for public searx instances which can build up and
+maintained by the scripts from our :ref:`toolboxing`.
.. _arch public:
diff --git a/docs/admin/buildhosts.rst b/docs/admin/buildhosts.rst
index 5260da0..e23327b 100644
--- a/docs/admin/buildhosts.rst
+++ b/docs/admin/buildhosts.rst
@@ -9,8 +9,27 @@ Buildhosts
If you have any contribution send us your :pull:`PR <../pulls>`, see
:ref:`how to contribute`.
+.. contents:: Contents
+ :depth: 2
+ :local:
+ :backlinks: entry
+
To get best results from build, its recommend to install additional packages
-on build hosts.
+on build hosts (see :ref:`searx.sh`).::
+
+ sudo -H ./utils/searx.sh install buildhost
+
+This will install packages needed by searx:
+
+.. kernel-include:: $DOCS_BUILD/includes/searx.rst
+ :start-after: START distro-packages
+ :end-before: END distro-packages
+
+and packages needed to build docuemtation and run tests:
+
+.. kernel-include:: $DOCS_BUILD/includes/searx.rst
+ :start-after: START build-packages
+ :end-before: END build-packages
.. _docs build:
@@ -30,16 +49,25 @@ Build docs
- dvisvgm_
Most of the sphinx requirements are installed from :origin:`setup.py` and the
-docs can be build from scratch with ``make docs``. For better math and image
-processing additional packages are needed. The XeTeX_ needed not only for PDF
-creation, its also needed for :ref:`math` when HTML output is build.
+docs can be build from scratch with ``make docs.html``. For better math and
+image processing additional packages are needed. The XeTeX_ needed not only for
+PDF creation, its also needed for :ref:`math` when HTML output is build.
To be able to do :ref:`sphinx:math-support` without CDNs, the math are rendered
-as images (``sphinx.ext.imgmath`` extension). If your docs build (``make
-docs``) shows warnings like this::
+as images (``sphinx.ext.imgmath`` extension).
+
+Here is the extract from the :origin:`docs/conf.py` file, setting math renderer
+to ``imgmath``:
+
+.. literalinclude:: ../conf.py
+ :language: python
+ :start-after: # sphinx.ext.imgmath setup
+ :end-before: # sphinx.ext.imgmath setup END
+
+If your docs build (``make docs.html``) shows warnings like this::
WARNING: dot(1) not found, for better output quality install \
- graphviz from http://www.graphviz.org
+ graphviz from https://www.graphviz.org
..
WARNING: LaTeX command 'latex' cannot be run (needed for math \
display), check the imgmath_latex setting
@@ -47,8 +75,6 @@ docs``) shows warnings like this::
you need to install additional packages on your build host, to get better HTML
output.
-.. _system requirements:
-
.. tabs::
.. group-tab:: Ubuntu / debian
@@ -92,12 +118,38 @@ For PDF output you also need:
$ sudo dnf install \
texlive-collection-fontsrecommended texlive-collection-latex \
- dejavu-sans-fonts dejavu-serif-fonts dejavu-sans-mono-fonts
+ dejavu-sans-fonts dejavu-serif-fonts dejavu-sans-mono-fonts \
+ ImageMagick
-.. _system requirements END:
+.. _sh lint:
-.. literalinclude:: ../conf.py
- :language: python
- :start-after: # sphinx.ext.imgmath setup
- :end-before: # sphinx.ext.imgmath setup END
+Lint shell scripts
+==================
+
+.. _ShellCheck: https://github.com/koalaman/shellcheck
+
+To lint shell scripts, we use ShellCheck_ - A shell script static analysis tool.
+
+.. SNIP sh lint requirements
+
+.. tabs::
+
+ .. group-tab:: Ubuntu / debian
+
+ .. code-block:: sh
+
+ $ sudo apt install shellcheck
+
+ .. group-tab:: Arch Linux
+
+ .. code-block:: sh
+
+ $ sudo pacman -S shellcheck
+
+ .. group-tab:: Fedora / RHEL
+
+ .. code-block:: sh
+
+ $ sudo dnf install ShellCheck
+.. SNAP sh lint requirements
diff --git a/docs/admin/engines.rst b/docs/admin/engines.rst
index 4b78c8c..3ad2063 100644
--- a/docs/admin/engines.rst
+++ b/docs/admin/engines.rst
@@ -1,14 +1,28 @@
-.. _engines generic:
-
=======
Engines
=======
+Special Engine Settings
+=======================
+
.. sidebar:: Further reading ..
- :ref:`settings engine`
- - :ref:`engine settings`
- - :ref:`engine file`
+ - :ref:`engine settings` & :ref:`engine file`
+
+.. toctree::
+ :maxdepth: 1
+
+ engines/recoll.rst
+
+
+.. _engines generic:
+
+General Engine Settings
+=======================
+
+Explanation of the :ref:`general engine configuration` shown in the table
+:ref:`configured engines`.
============= =========== ==================== ============
:ref:`engine settings` :ref:`engine file`
@@ -19,20 +33,20 @@ Engine .. Paging support **P**
------------------------- -------------------- ------------
Shortcut **S** Language support **L**
Timeout **TO** Time range support **TR**
-Disabled **D** Offline **O**
+Disabled **D** Engine type **ET**
------------- ----------- -------------------- ------------
Safe search **SS**
------------- ----------- ---------------------------------
Weigth **W**
------------- ----------- ---------------------------------
Disabled **D**
+------------- ----------- ---------------------------------
+Show errors **DE**
============= =========== =================================
-Configuration defaults (at built time):
-
.. _configured engines:
-.. jinja:: webapp
+.. jinja:: searx
.. flat-table:: Engines configured at built time (defaults)
:header-rows: 1
@@ -48,9 +62,10 @@ Configuration defaults (at built time):
- SS
- D
- TR
- - O
- - W
- - D
+ - ET
+ - W
+ - D
+ - DE
{% for name, mod in engines.items() %}
@@ -64,8 +79,10 @@ Configuration defaults (at built time):
- {{(mod.safesearch and "y") or ""}}
- {{(mod.disabled and "y") or ""}}
- {{(mod.time_range_support and "y") or ""}}
- - {{(mod.offline and "y") or ""}}
+ - {{mod.engine_type or ""}}
- {{mod.weight or 1 }}
- {{(mod.disabled and "y") or ""}}
+ - {{(mod.display_error_messages and "y") or ""}}
{% endfor %}
+
diff --git a/docs/admin/engines/recoll.rst b/docs/admin/engines/recoll.rst
new file mode 100644
index 0000000..cba2e81
--- /dev/null
+++ b/docs/admin/engines/recoll.rst
@@ -0,0 +1,50 @@
+.. _engine recoll:
+
+======
+Recoll
+======
+
+.. sidebar:: info
+
+ - `Recoll <https://www.lesbonscomptes.com/recoll/>`_
+ - `recoll-webui <https://framagit.org/medoc92/recollwebui.git>`_
+
+Recoll_ is a desktop full-text search tool based on Xapian. By itself Recoll_
+does not offer web or API access, this can be achieved using recoll-webui_
+
+
+
+Configuration
+=============
+
+You must configure the following settings:
+
+``base_url``:
+ Location where recoll-webui can be reached.
+
+``mount_prefix``:
+ Location where the file hierarchy is mounted on your *local* filesystem.
+
+``dl_prefix``:
+ Location where the file hierarchy as indexed by recoll can be reached.
+
+``search_dir``:
+ Part of the indexed file hierarchy to be search, if empty the full domain is
+ searched.
+
+
+Example
+=======
+
+Scenario:
+
+#. Recoll indexes a local filesystem mounted in ``/export/documents/reference``,
+#. the Recoll search inteface can be reached at https://recoll.example.org/ and
+#. the contents of this filesystem can be reached though https://download.example.org/reference
+
+.. code:: yaml
+
+ base_url: https://recoll.example.org/
+ mount_prefix: /export/documents
+ dl_prefix: https://download.example.org
+ search_dir: ''
diff --git a/docs/admin/filtron.rst b/docs/admin/filtron.rst
index 07dcb9b..41c4a31 100644
--- a/docs/admin/filtron.rst
+++ b/docs/admin/filtron.rst
@@ -1,18 +1,51 @@
+
+.. _searx filtron:
+
==========================
How to protect an instance
==========================
-Searx depens on external search services. To avoid the abuse of these services
+.. sidebar:: further reading
+
+ - :ref:`filtron.sh`
+ - :ref:`nginx searx site`
+
+
+.. contents:: Contents
+ :depth: 2
+ :local:
+ :backlinks: entry
+
+.. _filtron: https://github.com/asciimoo/filtron
+
+Searx depends on external search services. To avoid the abuse of these services
it is advised to limit the number of requests processed by searx.
-An application firewall, ``filtron`` solves exactly this problem. Information
-on how to install it can be found at the `project page of filtron
-<https://github.com/asciimoo/filtron>`__.
+An application firewall, filtron_ solves exactly this problem. Filtron is just
+a middleware between your web server (nginx, apache, ...) and searx, we describe
+such infratructures in chapter: :ref:`architecture`.
+filtron & go
+============
+
+.. _Go: https://golang.org/
+.. _filtron README: https://github.com/asciimoo/filtron/blob/master/README.md
+
+Filtron needs Go_ installed. If Go_ is preinstalled, filtron_ is simply
+installed by ``go get`` package management (see `filtron README`_). If you use
+filtron as middleware, a more isolated setup is recommended. To simplify such
+an installation and the maintenance of, use our script :ref:`filtron.sh`.
+
+.. _Sample configuration of filtron:
+
Sample configuration of filtron
===============================
+.. sidebar:: Tooling box
+
+ - :origin:`/etc/filtron/rules.json <utils/templates/etc/filtron/rules.json>`
+
An example configuration can be find below. This configuration limits the access
of:
@@ -24,105 +57,104 @@ of:
.. code:: json
- [{
- "name":"search request",
- "filters":[
- "Param:q",
- "Path=^(/|/search)$"
- ],
- "interval":"<time-interval-in-sec (int)>",
- "limit":"<max-request-number-in-interval (int)>",
- "subrules":[
- {
- "name":"roboagent limit",
- "interval":"<time-interval-in-sec (int)>",
- "limit":"<max-request-number-in-interval (int)>",
- "filters":[
- "Header:User-Agent=(curl|cURL|Wget|python-requests|Scrapy|FeedFetcher|Go-http-client)"
- ],
- "actions":[
- {
- "name":"block",
- "params":{
- "message":"Rate limit exceeded"
- }
- }
- ]
- },
- {
- "name":"botlimit",
- "limit":0,
- "stop":true,
- "filters":[
- "Header:User-Agent=(Googlebot|bingbot|Baiduspider|yacybot|YandexMobileBot|YandexBot|Yahoo! Slurp|MJ12bot|AhrefsBot|archive.org_bot|msnbot|MJ12bot|SeznamBot|linkdexbot|Netvibes|SMTBot|zgrab|James BOT)"
- ],
- "actions":[
- {
- "name":"block",
- "params":{
- "message":"Rate limit exceeded"
- }
- }
- ]
- },
- {
- "name":"IP limit",
- "interval":"<time-interval-in-sec (int)>",
- "limit":"<max-request-number-in-interval (int)>",
- "stop":true,
- "aggregations":[
- "Header:X-Forwarded-For"
- ],
- "actions":[
- {
- "name":"block",
- "params":{
- "message":"Rate limit exceeded"
- }
- }
- ]
- },
- {
- "name":"rss/json limit",
- "interval":"<time-interval-in-sec (int)>",
- "limit":"<max-request-number-in-interval (int)>",
- "stop":true,
- "filters":[
- "Param:format=(csv|json|rss)"
- ],
- "actions":[
- {
- "name":"block",
- "params":{
- "message":"Rate limit exceeded"
- }
- }
- ]
- },
- {
- "name":"useragent limit",
- "interval":"<time-interval-in-sec (int)>",
- "limit":"<max-request-number-in-interval (int)>",
- "aggregations":[
- "Header:User-Agent"
+ [
+ {
+ "name": "search request",
+ "filters": [
+ "Param:q",
+ "Path=^(/|/search)$"
],
- "actions":[
- {
- "name":"block",
- "params":{
- "message":"Rate limit exceeded"
- }
- }
+ "interval": "<time-interval-in-sec (int)>",
+ "limit": "<max-request-number-in-interval (int)>",
+ "subrules": [
+ {
+ "name": "missing Accept-Language",
+ "filters": ["!Header:Accept-Language"],
+ "limit": "<max-request-number-in-interval (int)>",
+ "stop": true,
+ "actions": [
+ {"name":"log"},
+ {"name": "block",
+ "params": {"message": "Rate limit exceeded"}}
+ ]
+ },
+ {
+ "name": "suspiciously Connection=close header",
+ "filters": ["Header:Connection=close"],
+ "limit": "<max-request-number-in-interval (int)>",
+ "stop": true,
+ "actions": [
+ {"name":"log"},
+ {"name": "block",
+ "params": {"message": "Rate limit exceeded"}}
+ ]
+ },
+ {
+ "name": "IP limit",
+ "interval": "<time-interval-in-sec (int)>",
+ "limit": "<max-request-number-in-interval (int)>",
+ "stop": true,
+ "aggregations": [
+ "Header:X-Forwarded-For"
+ ],
+ "actions": [
+ { "name": "log"},
+ { "name": "block",
+ "params": {
+ "message": "Rate limit exceeded"
+ }
+ }
+ ]
+ },
+ {
+ "name": "rss/json limit",
+ "filters": [
+ "Param:format=(csv|json|rss)"
+ ],
+ "interval": "<time-interval-in-sec (int)>",
+ "limit": "<max-request-number-in-interval (int)>",
+ "stop": true,
+ "actions": [
+ { "name": "log"},
+ { "name": "block",
+ "params": {
+ "message": "Rate limit exceeded"
+ }
+ }
+ ]
+ },
+ {
+ "name": "useragent limit",
+ "interval": "<time-interval-in-sec (int)>",
+ "limit": "<max-request-number-in-interval (int)>",
+ "aggregations": [
+ "Header:User-Agent"
+ ],
+ "actions": [
+ { "name": "log"},
+ { "name": "block",
+ "params": {
+ "message": "Rate limit exceeded"
+ }
+ }
+ ]
+ }
]
- }
- ]
- }]
+ }
+ ]
+.. _filtron route request:
Route request through filtron
=============================
+.. sidebar:: further reading
+
+ - :ref:`filtron.sh overview`
+ - :ref:`installation nginx`
+ - :ref:`installation apache`
+
Filtron can be started using the following command:
.. code:: sh
@@ -136,13 +168,24 @@ Use it along with ``nginx`` with the following example configuration.
.. code:: nginx
- location / {
- proxy_set_header Host $http_host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Scheme $scheme;
- proxy_pass http://127.0.0.1:4004/;
+ # https://example.org/searx
+
+ location /searx {
+ proxy_pass http://127.0.0.1:4004/;
+
+ proxy_set_header Host $host;
+ proxy_set_header Connection $http_connection;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Scheme $scheme;
+ proxy_set_header X-Script-Name /searx;
}
+ location /searx/static {
+ /usr/local/searx/searx-src/searx/static;
+ }
+
+
Requests are coming from port 4004 going through filtron and then forwarded to
-port 8888 where a searx is being run.
+port 8888 where a searx is being run. For a complete setup see: :ref:`nginx
+searx site`.
diff --git a/docs/admin/index.rst b/docs/admin/index.rst
index b3c7f51..c708c4f 100644
--- a/docs/admin/index.rst
+++ b/docs/admin/index.rst
@@ -3,9 +3,16 @@ Administrator documentation
===========================
.. toctree::
- :maxdepth: 1
+ :maxdepth: 2
+ :caption: Contents
installation
+ installation-searx
+ installation-uwsgi
+ installation-nginx
+ installation-apache
+ installation-docker
+ update-searx
settings
api
architecture
diff --git a/docs/admin/installation-apache.rst b/docs/admin/installation-apache.rst
new file mode 100644
index 0000000..311b5c2
--- /dev/null
+++ b/docs/admin/installation-apache.rst
@@ -0,0 +1,515 @@
+.. _installation apache:
+
+===================
+Install with apache
+===================
+
+.. _Apache: https://httpd.apache.org/
+.. _Apache Debian:
+ https://cwiki.apache.org/confluence/display/HTTPD/DistrosDefaultLayout#DistrosDefaultLayout-Debian,Ubuntu(Apachehttpd2.x):
+.. _README.Debian:
+ https://salsa.debian.org/apache-team/apache2/raw/master/debian/apache2.README.Debian
+.. _Apache Arch Linux:
+ https://wiki.archlinux.org/index.php/Apache_HTTP_Server
+.. _Apache Fedora:
+ https://docs.fedoraproject.org/en-US/quick-docs/getting-started-with-apache-http-server/index.html
+.. _Apache directives:
+ https://httpd.apache.org/docs/trunk/mod/directives.html
+.. _Getting Started:
+ https://httpd.apache.org/docs/current/en/getting-started.html
+.. _Terms Used to Describe Directives:
+ https://httpd.apache.org/docs/current/en/mod/directive-dict.html
+.. _Configuration Files:
+ https://httpd.apache.org/docs/current/en/configuring.html
+.. _ProxyPreserveHost: https://httpd.apache.org/docs/trunk/mod/mod_proxy.html#proxypreservehost
+.. _LoadModule:
+ https://httpd.apache.org/docs/2.4/mod/mod_so.html#loadmodule
+.. _DocumentRoot:
+ https://httpd.apache.org/docs/trunk/mod/core.html#documentroot
+.. _Location:
+ https://httpd.apache.org/docs/trunk/mod/core.html#location
+.. _uWSGI Apache support:
+ https://uwsgi-docs.readthedocs.io/en/latest/Apache.html
+.. _mod_proxy_uwsgi:
+ https://uwsgi-docs.readthedocs.io/en/latest/Apache.html#mod-proxy-uwsgi
+
+.. sidebar:: further read
+
+ - `Apache Arch Linux`_
+ - `Apache Debian`_ and `README.Debian`_
+ - `Apache Fedora`_
+ - `Apache directives`_
+
+.. contents:: Contents
+ :depth: 2
+ :local:
+ :backlinks: entry
+
+----
+
+**Install** :ref:`apache searx site` using :ref:`filtron.sh <filtron.sh overview>`
+
+.. code:: bash
+
+ $ sudo -H ./utils/filtron.sh apache install
+
+**Install** :ref:`apache searx site` using :ref:`morty.sh <morty.sh overview>`
+
+.. code:: bash
+
+ $ sudo -H ./utils/morty.sh apache install
+
+----
+
+The apache HTTP server
+======================
+
+If Apache_ is not installed, install it now. If apache_ is new to you, the
+`Getting Started`_, `Configuration Files`_ and `Terms Used to Describe
+Directives`_ documentation gives first orientation. There is also a list of
+`Apache directives`_ *to keep in the pocket*.
+
+.. tabs::
+
+ .. group-tab:: Ubuntu / debian
+
+ .. code:: sh
+
+ sudo -H apt-get install apache2
+
+ .. group-tab:: Arch Linux
+
+ .. code:: sh
+
+ sudo -H pacman -S apache
+ sudo -H systemctl enable httpd
+ sudo -H systemctl start http
+
+ .. group-tab:: Fedora / RHEL
+
+ .. code:: sh
+
+ sudo -H dnf install httpd
+ sudo -H systemctl enable httpd
+ sudo -H systemctl start httpd
+
+Now at http://localhost you should see any kind of *Welcome* or *Test* page.
+How this default intro site is configured, depends on the linux distribution
+(compare `Apache directives`_).
+
+.. tabs::
+
+ .. group-tab:: Ubuntu / debian
+
+ .. code:: sh
+
+ less /etc/apache2/sites-enabled/000-default.conf
+
+ In this file, there is a line setting the `DocumentRoot`_ directive:
+
+ .. code:: apache
+
+ DocumentRoot /var/www/html
+
+ And the *welcome* page is the HTML file at ``/var/www/html/index.html``.
+
+ .. group-tab:: Arch Linux
+
+ .. code:: sh
+
+ less /etc/httpd/conf/httpd.conf
+
+ In this file, there is a line setting the `DocumentRoot`_ directive:
+
+ .. code:: apache
+
+ DocumentRoot "/srv/http"
+ <Directory "/srv/http">
+ Options Indexes FollowSymLinks
+ AllowOverride None
+ Require all granted
+ </Directory>
+
+ The *welcome* page of Arch Linux is a page showing directory located at
+ ``DocumentRoot``. This is *directory* page is generated by the Module
+ `mod_autoindex <https://httpd.apache.org/docs/2.4/mod/mod_autoindex.html>`_:
+
+ .. code:: apache
+
+ LoadModule autoindex_module modules/mod_autoindex.so
+ ...
+ Include conf/extra/httpd-autoindex.conf
+
+ .. group-tab:: Fedora / RHEL
+
+ .. code:: sh
+
+ less /etc/httpd/conf/httpd.conf
+
+ In this file, there is a line setting the ``DocumentRoot`` directive:
+
+ .. code:: apache
+
+ DocumentRoot "/var/www/html"
+ ...
+ <Directory "/var/www">
+ AllowOverride None
+ # Allow open access:
+ Require all granted
+ </Directory>
+
+ On fresh installations, the ``/var/www`` is empty and the *default
+ welcome page* is shown, the configuration is located at::
+
+ less /etc/httpd/conf.d/welcome.conf
+
+.. _apache searx site:
+
+Apache Reverse Proxy
+====================
+
+.. sidebar:: public to the internet?
+
+ If your searx instance is public, stop here and first install :ref:`filtron
+ reverse proxy <filtron.sh>` and :ref:`result proxy morty <morty.sh>`, see
+ :ref:`installation scripts`. If already done, follow setup: *searx via
+ filtron plus morty*.
+
+To setup a Apache revers proxy you have to enable the *headers* and *proxy*
+modules and create a `Location`_ configuration for the searx site. In most
+distributions you have to un-comment the lines in the main configuration file,
+except in :ref:`The Debian Layout`.
+
+.. tabs::
+
+ .. group-tab:: Ubuntu / debian
+
+ In the Apache setup, enable headers and proxy modules:
+
+ .. code:: sh
+
+ sudo -H a2enmod headers
+ sudo -H a2enmod proxy
+ sudo -H a2enmod proxy_http
+
+ In :ref:`The Debian Layout` you create a ``searx.conf`` with the
+ ``<Location /searx >`` directive and save this file in the *sites
+ available* folder at ``/etc/apache2/sites-available``. To enable the
+ ``searx.conf`` use :man:`a2ensite`:
+
+ .. code:: sh
+
+ sudo -H a2ensite searx.conf
+
+ .. group-tab:: Arch Linux
+
+ In the ``/etc/httpd/conf/httpd.conf`` file, activate headers and proxy
+ modules (LoadModule_):
+
+ .. code:: apache
+
+ FIXME needs test
+
+ LoadModule headers_module modules/mod_headers.so
+ LoadModule proxy_module modules/mod_proxy.so
+ LoadModule proxy_http_module modules/mod_proxy_http.so
+
+ .. group-tab:: Fedora / RHEL
+
+ In the ``/etc/httpd/conf/httpd.conf`` file, activate headers and proxy
+ modules (LoadModule_):
+
+ .. code:: apache
+
+ FIXME needs test
+
+ LoadModule headers_module modules/mod_headers.so
+ LoadModule proxy_module modules/mod_proxy.so
+ LoadModule proxy_http_module modules/mod_proxy_http.so
+
+With ProxyPreserveHost_ the incoming Host HTTP request header is passed to the
+proxied host.
+
+.. _apache searx via filtron plus morty:
+
+.. tabs::
+
+ .. group-tab:: searx via filtron plus morty
+
+ Use this setup, if your instance is public to the internet, compare
+ figure: :ref:`architecture <arch public>` and :ref:`installation scripts`.
+
+ 1. Configure a reverse proxy for :ref:`filtron <filtron.sh>`, listening on
+ *localhost 4004* (:ref:`filtron route request`):
+
+ .. code:: apache
+
+ <Location /searx >
+
+ # SetEnvIf Request_URI "/searx" dontlog
+ # CustomLog /dev/null combined env=dontlog
+
+ Require all granted
+
+ Order deny,allow
+ Deny from all
+ #Allow from fd00::/8 192.168.0.0/16 fe80::/10 127.0.0.0/8 ::1
+ Allow from all
+
+ ProxyPreserveHost On
+ ProxyPass http://127.0.0.1:4004
+ RequestHeader set X-Script-Name /searx
+
+ </Location>
+
+ 2. Configure reverse proxy for :ref:`morty <searx morty>`, listening on
+ *localhost 3000*
+
+ .. code:: apache
+
+ ProxyPreserveHost On
+
+ <Location /morty >
+
+ # SetEnvIf Request_URI "/morty" dontlog
+ # CustomLog /dev/null combined env=dontlog
+
+ Require all granted
+
+ Order deny,allow
+ Deny from all
+ #Allow from fd00::/8 192.168.0.0/16 fe80::/10 127.0.0.0/8 ::1
+ Allow from all
+
+ ProxyPass http://127.0.0.1:3000
+ RequestHeader set X-Script-Name /morty
+
+ </Location>
+
+ For a fully result proxification add :ref:`morty's <searx morty>` **public
+ URL** to your :origin:`searx/settings.yml`:
+
+ .. code:: yaml
+
+ result_proxy:
+ # replace example.org with your server's public name
+ url : https://example.org/morty
+ key : !!binary "insert_your_morty_proxy_key_here"
+
+ server:
+ image_proxy : True
+
+uWSGI support
+=============
+
+Be warned, with this setup, your instance isn't :ref:`protected <searx
+filtron>`, nevertheless it is good enough for intranet usage. In modern Linux
+distributions, the `mod_proxy_uwsgi`_ is compiled into the *normal* apache
+package and you need to install only the :ref:`uWSGI <searx uwsgi>` package:
+
+.. tabs::
+
+ .. group-tab:: Ubuntu / debian
+
+ .. code:: sh
+
+ sudo -H apt-get install uwsgi
+
+ # Ubuntu =< 18.04
+ sudo -H apt-get install libapache2-mod-proxy-uwsgi
+
+ .. group-tab:: Arch Linux
+
+ .. code:: sh
+
+ sudo -H pacman -S uwsgi
+
+ .. group-tab:: Fedora / RHEL
+
+ .. code:: sh
+
+ sudo -H dnf install uwsgi
+
+The next example shows a configuration using the `uWSGI Apache support`_ via
+unix sockets and `mod_proxy_uwsgi`_.
+
+For socket communication, you have to activate ``socket =
+/run/uwsgi/app/searx/socket`` and comment out the ``http = 127.0.0.1:8888``
+configuration in your :ref:`uwsgi ini file <uwsgi configuration>`. If not
+already exists, create a folder for the unix sockets, which can be used by the
+searx account (see :ref:`create searx user`):
+
+.. code:: bash
+
+ sudo -H mkdir -p /run/uwsgi/app/searx/
+ sudo -H chown -R searx:searx /run/uwsgi/app/searx/
+
+If the server is public; to limit access to your intranet replace ``Allow from
+all`` directive and replace ``192.168.0.0/16`` with your subnet IP/class.
+
+.. tabs::
+
+ .. group-tab:: Ubuntu / debian
+
+ .. code:: apache
+
+ LoadModule headers_module /usr/lib/apache2/mod_headers.so
+ LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
+ LoadModule proxy_uwsgi_module /usr/lib/apache2/modules/mod_proxy_uwsgi.so
+
+ # SetEnvIf Request_URI /searx dontlog
+ # CustomLog /dev/null combined env=dontlog
+
+ <Location /searx>
+
+ Require all granted
+ Order deny,allow
+ Deny from all
+ # Allow from fd00::/8 192.168.0.0/16 fe80::/10 127.0.0.0/8 ::1
+ Allow from all
+
+ ProxyPreserveHost On
+ ProxyPass unix:/run/uwsgi/app/searx/socket|uwsgi://uwsgi-uds-searx/
+
+ </Location>
+
+ .. group-tab:: Arch Linux
+
+ .. code:: apache
+
+ FIXME needs test
+
+ LoadModule proxy_module modules/mod_proxy.so
+ LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so
+
+ # SetEnvIf Request_URI /searx dontlog
+ # CustomLog /dev/null combined env=dontlog
+
+ <Location /searx>
+
+ Require all granted
+ Order deny,allow
+ Deny from all
+ # Allow from fd00::/8 192.168.0.0/16 fe80::/10 127.0.0.0/8 ::1
+ Allow from all
+
+ ProxyPreserveHost On
+ ProxyPass unix:/run/uwsgi/app/searx/socket|uwsgi://uwsgi-uds-searx/
+
+ </Location>
+
+ .. group-tab:: Fedora / RHEL
+
+ .. code:: apache
+
+ FIXME needs test
+
+ LoadModule proxy_module modules/mod_proxy.so
+ LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so
+ <IfModule proxy_uwsgi_module>
+
+ # SetEnvIf Request_URI /searx dontlog
+ # CustomLog /dev/null combined env=dontlog
+
+ <Location /searx>
+
+ Require all granted
+ Order deny,allow
+ Deny from all
+ # Allow from fd00::/8 192.168.0.0/16 fe80::/10 127.0.0.0/8 ::1
+ Allow from all
+
+ ProxyPreserveHost On
+ ProxyPass unix:/run/uwsgi/app/searx/socket|uwsgi://uwsgi-uds-searx/
+
+ </Location>
+
+ </IfModule>
+
+ .. group-tab:: old mod_wsgi
+
+ We show this only for historical reasons, DON'T USE `mod_uwsgi
+ <https://uwsgi-docs.readthedocs.io/en/latest/Apache.html#mod-uwsgi>`_.
+ ANYMORE!
+
+ .. code:: apache
+
+ <IfModule mod_uwsgi.c>
+
+ # SetEnvIf Request_URI "/searx" dontlog
+ # CustomLog /dev/null combined env=dontlog
+
+ <Location /searx >
+
+ Require all granted
+
+ Options FollowSymLinks Indexes
+ SetHandler uwsgi-handler
+ uWSGISocket /run/uwsgi/app/searx/socket
+
+ Order deny,allow
+ Deny from all
+ # Allow from fd00::/8 192.168.0.0/16 fe80::/10 127.0.0.0/8 ::1
+ Allow from all
+
+ </Location>
+
+ </IfModule>
+
+.. _restart apache:
+
+Restart service
+===============
+
+.. tabs::
+
+ .. group-tab:: Ubuntu / debian
+
+ .. code:: sh
+
+ sudo -H systemctl restart apache2
+ sudo -H service uwsgi restart searx
+
+ .. group-tab:: Arch Linux
+
+ .. code:: sh
+
+ sudo -H systemctl restart httpd
+ sudo -H systemctl restart uwsgi@searx
+
+ .. group-tab:: Fedora / RHEL
+
+ .. code:: sh
+
+ sudo -H systemctl restart httpd
+ sudo -H touch /etc/uwsgi.d/searx.ini
+
+
+disable logs
+============
+
+For better privacy you can disable Apache logs. In the examples above activate
+one of the lines and `restart apache`_::
+
+
+ # SetEnvIf Request_URI "/searx" dontlog
+ # CustomLog /dev/null combined env=dontlog
+
+The ``CustomLog`` directive disable logs for the whole (virtual) server, use it
+when the URL of the service does not have a path component (``/searx``) / is
+located at root (``/``).
+
+.. _The Debian Layout:
+
+The Debian Layout
+=================
+
+Be aware that the Debian layout is quite different from the standard Apache
+configuration. For details look at the README.Debian_
+(``/usr/share/doc/apache2/README.Debian.gz``). Some commands you should know on
+Debian:
+
+* :man:`apache2ctl`: Apache HTTP server control interface
+* :man:`a2enmod`, :man:`a2dismod`: switch on/off modules
+* :man:`a2enconf`, :man:`a2disconf`: switch on/off configurations
+* :man:`a2ensite`, :man:`a2dissite`: switch on/off sites
diff --git a/docs/admin/installation-docker.rst b/docs/admin/installation-docker.rst
new file mode 100644
index 0000000..13d21bc
--- /dev/null
+++ b/docs/admin/installation-docker.rst
@@ -0,0 +1,60 @@
+.. _installation docker:
+
+===================
+Docker installation
+===================
+
+.. contents:: Contents
+ :depth: 2
+ :local:
+ :backlinks: entry
+
+----
+
+Docker image searx/searx
+========================
+
+
+The docker image is `searx/searx <https://hub.docker.com/r/searx/searx>`_ (based on `github.com/searx/searx <https://github.com/searx/searx>`_).
+
+Make sure you have `installed Docker <https://docs.docker.com/get-docker/>`_. For instance, you can deploy a local instance:
+
+.. code:: sh
+
+ export PORT=80
+ docker pull searx/searx
+ docker run --rm -d -v ${PWD}/searx:/etc/searx -p $PORT:8080 -e BASE_URL=http://localhost:$PORT/ searx/searx
+
+Go to ``http://localhost:$PORT``.
+
+Inside ``${PWD}/searx``, you will find ``settings.yml`` and ``uwsgi.ini``.
+You can modify these files according to your needs and restart the Docker image.
+
+
+Command line
+------------
+
+
+.. code:: sh
+
+ docker run --rm -it searx/searx -h
+
+.. program-output:: ../dockerfiles/docker-entrypoint.sh help
+
+
+Build the image
+---------------
+
+It's also possible to build searx from the embedded Dockerfile.
+
+.. code:: sh
+
+ git clone https://github.com/searx/searx.git
+ cd searx
+ make docker.build
+
+
+Public instance
+===============
+
+If you intend to create a public instance using Docker, see https://github.com/searx/searx-docker
diff --git a/docs/admin/installation-nginx.rst b/docs/admin/installation-nginx.rst
new file mode 100644
index 0000000..97966c8
--- /dev/null
+++ b/docs/admin/installation-nginx.rst
@@ -0,0 +1,383 @@
+.. _installation nginx:
+
+==================
+Install with nginx
+==================
+
+.. _nginx:
+ https://docs.nginx.com/nginx/admin-guide/
+.. _nginx server configuration:
+ https://docs.nginx.com/nginx/admin-guide/web-server/web-server/#setting-up-virtual-servers
+.. _nginx beginners guide:
+ https://nginx.org/en/docs/beginners_guide.html
+.. _Getting Started wiki:
+ https://www.nginx.com/resources/wiki/start/
+.. _uWSGI support from nginx:
+ https://uwsgi-docs.readthedocs.io/en/latest/Nginx.html
+.. _uwsgi_params:
+ https://uwsgi-docs.readthedocs.io/en/latest/Nginx.html#configuring-nginx
+.. _SCRIPT_NAME:
+ https://werkzeug.palletsprojects.com/en/1.0.x/wsgi/#werkzeug.wsgi.get_script_name
+
+.. sidebar:: further reading
+
+ - nginx_
+ - `nginx beginners guide`_
+ - `nginx server configuration`_
+ - `Getting Started wiki`_
+ - `uWSGI support from nginx`_
+
+.. contents:: Contents
+ :depth: 2
+ :local:
+ :backlinks: entry
+
+----
+
+**Install** :ref:`nginx searx site` using :ref:`filtron.sh <filtron.sh overview>`
+
+.. code:: bash
+
+ $ sudo -H ./utils/filtron.sh nginx install
+
+**Install** :ref:`nginx searx site` using :ref:`morty.sh <morty.sh overview>`
+
+.. code:: bash
+
+ $ sudo -H ./utils/morty.sh nginx install
+
+----
+
+
+The nginx HTTP server
+=====================
+
+If nginx_ is not installed (uwsgi will not work with the package nginx-light),
+install it now.
+
+.. tabs::
+
+ .. group-tab:: Ubuntu / debian
+
+ .. code:: sh
+
+ sudo -H apt-get install nginx
+
+ .. group-tab:: Arch Linux
+
+ .. code-block:: sh
+
+ sudo -H pacman -S nginx-mainline
+ sudo -H systemctl enable nginx
+ sudo -H systemctl start nginx
+
+ .. group-tab:: Fedora / RHEL
+
+ .. code-block:: sh
+
+ sudo -H dnf install nginx
+ sudo -H systemctl enable nginx
+ sudo -H systemctl start nginx
+
+Now at http://localhost you should see a *Welcome to nginx!* page, on Fedora you
+see a *Fedora Webserver - Test Page*. The test page comes from the default
+`nginx server configuration`_. How this default intro site is configured,
+depends on the linux distribution:
+
+.. tabs::
+
+ .. group-tab:: Ubuntu / debian
+
+ .. code:: sh
+
+ less /etc/nginx/nginx.conf
+
+ there is a line including site configurations from:
+
+ .. code:: nginx
+
+ include /etc/nginx/sites-enabled/*;
+
+ .. group-tab:: Arch Linux
+
+ .. code-block:: sh
+
+ less /etc/nginx/nginx.conf
+
+ in there is a configuration section named ``server``:
+
+ .. code-block:: nginx
+
+ server {
+ listen 80;
+ server_name localhost;
+ # ...
+ }
+
+ .. group-tab:: Fedora / RHEL
+
+ .. code-block:: sh
+
+ less /etc/nginx/nginx.conf
+
+ there is a line including site configurations from:
+
+ .. code:: nginx
+
+ include /etc/nginx/conf.d/*.conf;
+
+.. _nginx searx site:
+
+A nginx searx site
+==================
+
+.. sidebar:: public to the internet?
+
+ If your searx instance is public, stop here and first install :ref:`filtron
+ reverse proxy <filtron.sh>` and :ref:`result proxy morty <morty.sh>`, see
+ :ref:`installation scripts`. If already done, follow setup: *searx via
+ filtron plus morty*.
+
+Now you have to create a configuration for the searx site. If nginx_ is new to
+you, the `nginx beginners guide`_ is a good starting point and the `Getting
+Started wiki`_ is always a good resource *to keep in the pocket*.
+
+.. tabs::
+
+ .. group-tab:: Ubuntu / debian
+
+ Create configuration at ``/etc/nginx/sites-available/searx`` and place a
+ symlink to sites-enabled:
+
+ .. code:: sh
+
+ sudo -H ln -s /etc/nginx/sites-available/searx /etc/nginx/sites-enabled/searx
+
+ .. group-tab:: Arch Linux
+
+ In the ``/etc/nginx/nginx.conf`` file, replace the configuration section
+ named ``server``.
+
+ .. group-tab:: Fedora / RHEL
+
+ Create configuration at ``/etc/nginx/conf.d/searx`` and place a
+ symlink to sites-enabled:
+
+.. _nginx searx via filtron plus morty:
+
+.. tabs::
+
+ .. group-tab:: searx via filtron plus morty
+
+ Use this setup, if your instance is public to the internet, compare
+ figure: :ref:`architecture <arch public>` and :ref:`installation scripts`.
+
+ 1. Configure a reverse proxy for :ref:`filtron <filtron.sh>`, listening on
+ *localhost 4004* (:ref:`filtron route request`):
+
+ .. code:: nginx
+
+ # https://example.org/searx
+
+ location /searx {
+ proxy_pass http://127.0.0.1:4004/;
+
+ proxy_set_header Host $host;
+ proxy_set_header Connection $http_connection;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Scheme $scheme;
+ proxy_set_header X-Script-Name /searx;
+ }
+
+ location /searx/static/ {
+ alias /usr/local/searx/searx-src/searx/static/;
+ }
+
+
+ 2. Configure reverse proxy for :ref:`morty <searx morty>`, listening on
+ *localhost 3000*:
+
+ .. code:: nginx
+
+ # https://example.org/morty
+
+ location /morty {
+ proxy_pass http://127.0.0.1:3000/;
+
+ proxy_set_header Host $host;
+ proxy_set_header Connection $http_connection;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Scheme $scheme;
+ }
+
+ For a fully result proxification add :ref:`morty's <searx morty>` **public
+ URL** to your :origin:`searx/settings.yml`:
+
+ .. code:: yaml
+
+ result_proxy:
+ # replace example.org with your server's public name
+ url : https://example.org/morty
+ key : !!binary "insert_your_morty_proxy_key_here"
+
+ server:
+ image_proxy : True
+
+
+ .. group-tab:: proxy or uWSGI
+
+ Be warned, with this setup, your instance isn't :ref:`protected <searx
+ filtron>`. Nevertheless it is good enough for intranet usage and it is a
+ excellent example of; *how different services can be set up*. The next
+ example shows a reverse proxy configuration wrapping the :ref:`searx-uWSGI
+ application <uwsgi configuration>`, listening on ``http =
+ 127.0.0.1:8888``.
+
+ .. code:: nginx
+
+ # https://hostname.local/
+
+ location / {
+ proxy_pass http://127.0.0.1:8888;
+
+ proxy_set_header Host $host;
+ proxy_set_header Connection $http_connection;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Scheme $scheme;
+ proxy_buffering off;
+ }
+
+ Alternatively you can use the `uWSGI support from nginx`_ via unix
+ sockets. For socket communication, you have to activate ``socket =
+ /run/uwsgi/app/searx/socket`` and comment out the ``http =
+ 127.0.0.1:8888`` configuration in your :ref:`uwsgi ini file <uwsgi
+ configuration>`.
+
+ The example shows a nginx virtual ``server`` configuration, listening on
+ port 80 (IPv4 and IPv6 http://[::]:80). The uWSGI app is configured at
+ location ``/`` by importing the `uwsgi_params`_ and passing requests to
+ the uWSGI socket (``uwsgi_pass``). The ``server``\'s root points to the
+ :ref:`searx-src clone <searx-src>` and wraps directly the
+ :origin:`searx/static/` content at ``location /static``.
+
+ .. code:: nginx
+
+ server {
+ # replace hostname.local with your server's name
+ server_name hostname.local;
+
+ listen 80;
+ listen [::]:80;
+
+ location / {
+ include uwsgi_params;
+ uwsgi_pass unix:/run/uwsgi/app/searx/socket;
+ }
+
+ root /usr/local/searx/searx-src/searx;
+ location /static { }
+ }
+
+ If not already exists, create a folder for the unix sockets, which can be
+ used by the searx account:
+
+ .. code:: bash
+
+ mkdir -p /run/uwsgi/app/searx/
+ sudo -H chown -R searx:searx /run/uwsgi/app/searx/
+
+ .. group-tab:: \.\. at subdir URL
+
+ Be warned, with these setups, your instance isn't :ref:`protected <searx
+ filtron>`. The examples are just here to demonstrate how to export the
+ searx application from a subdirectory URL ``https://example.org/searx/``.
+
+ .. code:: nginx
+
+ # https://hostname.local/searx
+
+ location /searx {
+ proxy_pass http://127.0.0.1:8888;
+
+ proxy_set_header Host $host;
+ proxy_set_header Connection $http_connection;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Scheme $scheme;
+ proxy_set_header X-Script-Name /searx;
+ proxy_buffering off;
+ }
+
+ location /searx/static/ {
+ alias /usr/local/searx/searx-src/searx/static/;
+ }
+
+ The ``X-Script-Name /searx`` is needed by the searx implementation to
+ calculate relative URLs correct. The next example shows a uWSGI
+ configuration. Since there are no HTTP headers in a (u)WSGI protocol, the
+ value is shipped via the SCRIPT_NAME_ in the WSGI environment.
+
+ .. code:: nginx
+
+ # https://hostname.local/searx
+
+ location /searx {
+ uwsgi_param SCRIPT_NAME /searx;
+ include uwsgi_params;
+ uwsgi_pass unix:/run/uwsgi/app/searx/socket;
+ }
+
+ location /searx/static/ {
+ alias /usr/local/searx/searx-src/searx/;
+ }
+
+ For searx to work correctly the ``base_url`` must be set in the
+ :origin:`searx/settings.yml`.
+
+ .. code:: yaml
+
+ server:
+ # replace example.org with your server's public name
+ base_url : https://example.org/searx/
+
+
+Restart service:
+
+.. tabs::
+
+ .. group-tab:: Ubuntu / debian
+
+ .. code:: sh
+
+ sudo -H systemctl restart nginx
+ sudo -H service uwsgi restart searx
+
+ .. group-tab:: Arch Linux
+
+ .. code:: sh
+
+ sudo -H systemctl restart nginx
+ sudo -H systemctl restart uwsgi@searx
+
+ .. group-tab:: Fedora
+
+ .. code:: sh
+
+ sudo -H systemctl restart nginx
+ sudo -H touch /etc/uwsgi.d/searx.ini
+
+
+Disable logs
+============
+
+For better privacy you can disable nginx logs in ``/etc/nginx/nginx.conf``.
+
+.. code:: nginx
+
+ http {
+ # ...
+ access_log /dev/null;
+ error_log /dev/null;
+ # ...
+ }
diff --git a/docs/admin/installation-searx.rst b/docs/admin/installation-searx.rst
new file mode 100644
index 0000000..adea016
--- /dev/null
+++ b/docs/admin/installation-searx.rst
@@ -0,0 +1,120 @@
+.. _installation basic:
+
+=========================
+Step by step installation
+=========================
+
+.. contents:: Contents
+ :depth: 2
+ :local:
+ :backlinks: entry
+
+Step by step installation with virtualenv. For Ubuntu, be sure to have enable
+universe repository.
+
+.. _install packages:
+
+Install packages
+================
+
+.. kernel-include:: $DOCS_BUILD/includes/searx.rst
+ :start-after: START distro-packages
+ :end-before: END distro-packages
+
+.. hint::
+
+ This installs also the packages needed by :ref:`searx uwsgi`
+
+.. _create searx user:
+
+Create user
+===========
+
+.. kernel-include:: $DOCS_BUILD/includes/searx.rst
+ :start-after: START create user
+ :end-before: END create user
+
+.. _searx-src:
+
+install searx & dependencies
+============================
+
+Start a interactive shell from new created user and clone searx:
+
+.. kernel-include:: $DOCS_BUILD/includes/searx.rst
+ :start-after: START clone searx
+ :end-before: END clone searx
+
+In the same shell create *virtualenv*:
+
+.. kernel-include:: $DOCS_BUILD/includes/searx.rst
+ :start-after: START create virtualenv
+ :end-before: END create virtualenv
+
+To install searx's dependencies, exit the searx *bash* session you opened above
+and restart a new. Before install, first check if your *virtualenv* was sourced
+from the login (*~/.profile*):
+
+.. kernel-include:: $DOCS_BUILD/includes/searx.rst
+ :start-after: START manage.sh update_packages
+ :end-before: END manage.sh update_packages
+
+.. tip::
+
+ Open a second terminal for the configuration tasks and leave the ``(searx)$``
+ terminal open for the tasks below.
+
+
+.. _use_default_settings.yml:
+
+Configuration
+=============
+
+.. sidebar:: ``use_default_settings: True``
+
+ - :ref:`settings global`
+ - :ref:`settings location`
+ - :ref:`settings use_default_settings`
+ - :origin:`/etc/searx/settings.yml <utils/templates/etc/searx/use_default_settings.yml>`
+
+To create a initial ``/etc/searx/settings.yml`` you can start with a copy of the
+file :origin:`utils/templates/etc/searx/use_default_settings.yml`. This setup
+:ref:`use default settings <settings use_default_settings>` from
+:origin:`searx/settings.yml` and is recommended since :pull:`2291` is merged.
+
+For a *minimal setup*, configure like shown below – replace ``searx@$(uname
+-n)`` with a name of your choice, set ``ultrasecretkey`` -- *and/or* edit
+``/etc/searx/settings.yml`` to your needs.
+
+.. kernel-include:: $DOCS_BUILD/includes/searx.rst
+ :start-after: START searx config
+ :end-before: END searx config
+
+.. tabs::
+
+ .. group-tab:: Use default settings
+
+ .. literalinclude:: ../../utils/templates/etc/searx/use_default_settings.yml
+ :language: yaml
+
+ .. group-tab:: searx/settings.yml
+
+ .. literalinclude:: ../../searx/settings.yml
+ :language: yaml
+
+
+Check
+=====
+
+To check your searx setup, optional enable debugging and start the *webapp*.
+Searx looks at the exported environment ``$SEARX_SETTINGS_PATH`` for a
+configuration file.
+
+.. kernel-include:: $DOCS_BUILD/includes/searx.rst
+ :start-after: START check searx installation
+ :end-before: END check searx installation
+
+If everything works fine, hit ``[CTRL-C]`` to stop the *webapp* and disable the
+debug option in ``settings.yml``. You can now exit searx user bash (enter exit
+command twice). At this point searx is not demonized; uwsgi allows this.
+
diff --git a/docs/admin/installation-uwsgi.rst b/docs/admin/installation-uwsgi.rst
new file mode 100644
index 0000000..7b48297
--- /dev/null
+++ b/docs/admin/installation-uwsgi.rst
@@ -0,0 +1,150 @@
+.. _searx uwsgi:
+
+=====
+uwsgi
+=====
+
+.. sidebar:: further reading
+
+ - `systemd.unit`_
+ - `uWSGI Emperor`_
+
+.. contents:: Contents
+ :depth: 2
+ :local:
+ :backlinks: entry
+
+
+.. _systemd.unit: https://www.freedesktop.org/software/systemd/man/systemd.unit.html
+.. _One service per app in systemd:
+ https://uwsgi-docs.readthedocs.io/en/latest/Systemd.html#one-service-per-app-in-systemd
+.. _uWSGI Emperor:
+ https://uwsgi-docs.readthedocs.io/en/latest/Emperor.html
+.. _uwsgi ini file:
+ https://uwsgi-docs.readthedocs.io/en/latest/Configuration.html#ini-files
+.. _systemd unit template:
+ http://0pointer.de/blog/projects/instances.html
+
+
+Origin uWSGI
+============
+
+How uWSGI is implemented by distributors is different. uWSGI itself
+recommend two methods
+
+`systemd.unit`_ template files as described here `One service per app in systemd`_.
+
+ There is one `systemd unit template`_ and one `uwsgi ini file`_ per uWSGI-app
+ placed at dedicated locations. Take archlinux and a searx.ini as example::
+
+ unit template --> /usr/lib/systemd/system/uwsgi@.service
+ uwsgi ini files --> /etc/uwsgi/searx.ini
+
+ The searx app can be maintained as know from common systemd units::
+
+ systemctl enable uwsgi@searx
+ systemctl start uwsgi@searx
+ systemctl restart uwsgi@searx
+ systemctl stop uwsgi@searx
+
+The `uWSGI Emperor`_ mode which fits for maintaining a large range of uwsgi apps.
+
+ The Emperor mode is a special uWSGI instance that will monitor specific
+ events. The Emperor mode (service) is started by a (common, not template)
+ systemd unit. The Emperor service will scan specific directories for `uwsgi
+ ini file`_\s (also know as *vassals*). If a *vassal* is added, removed or the
+ timestamp is modified, a corresponding action takes place: a new uWSGI
+ instance is started, reload or stopped. Take Fedora and a searx.ini as
+ example::
+
+ to start a new searx instance create --> /etc/uwsgi.d/searx.ini
+ to reload the instance edit timestamp --> touch /etc/uwsgi.d/searx.ini
+ to stop instance remove ini --> rm /etc/uwsgi.d/searx.ini
+
+Distributors
+============
+
+The `uWSGI Emperor`_ mode and `systemd unit template`_ is what the distributors
+mostly offer their users, even if they differ in the way they implement both
+modes and their defaults. Another point they might differ is the packaging of
+plugins (if so, compare :ref:`install packages`) and what the default python
+interpreter is (python2 vs. python3).
+
+Fedora starts a Emperor by default, while archlinux does not start any uwsgi
+service by default. Worth to know; debian (ubuntu) follow a complete different
+approach. *debian*: your are familiar with the apache infrastructure? .. they
+do similar for the uWSGI infrastructure (with less comfort), the folders are::
+
+ /etc/uwsgi/apps-available/
+ /etc/uwsgi/apps-enabled/
+
+The `uwsgi ini file`_ is enabled by a symbolic link::
+
+ ln -s /etc/uwsgi/apps-available/searx.ini /etc/uwsgi/apps-enabled/
+
+From debian's documentation (``/usr/share/doc/uwsgi/README.Debian.gz``): You
+could control specific instance(s) by issuing::
+
+ service uwsgi <command> <confname> <confname> ...
+
+ sudo -H service uwsgi start searx
+ sudo -H service uwsgi stop searx
+
+My experience is, that this command is a bit buggy.
+
+.. _uwsgi configuration:
+
+Alltogether
+===========
+
+Create the configuration ini-file according to your distribution (see below) and
+restart the uwsgi application.
+
+.. tabs::
+
+ .. group-tab:: Ubuntu / debian
+
+ .. kernel-include:: $DOCS_BUILD/includes/searx.rst
+ :start-after: START searx uwsgi-description ubuntu-20.04
+ :end-before: END searx uwsgi-description ubuntu-20.04
+
+ .. hotfix: a bug group-tab need this comment
+
+ .. group-tab:: Arch Linux
+
+ .. kernel-include:: $DOCS_BUILD/includes/searx.rst
+ :start-after: START searx uwsgi-description arch
+ :end-before: END searx uwsgi-description arch
+
+ .. hotfix: a bug group-tab need this comment
+
+ .. group-tab:: Fedora / RHEL
+
+ .. kernel-include:: $DOCS_BUILD/includes/searx.rst
+ :start-after: START searx uwsgi-description fedora
+ :end-before: END searx uwsgi-description fedora
+
+
+.. tabs::
+
+ .. group-tab:: Ubuntu / debian
+
+ .. kernel-include:: $DOCS_BUILD/includes/searx.rst
+ :start-after: START searx uwsgi-appini ubuntu-20.04
+ :end-before: END searx uwsgi-appini ubuntu-20.04
+
+ .. hotfix: a bug group-tab need this comment
+
+ .. group-tab:: Arch Linux
+
+ .. kernel-include:: $DOCS_BUILD/includes/searx.rst
+ :start-after: START searx uwsgi-appini arch
+ :end-before: END searx uwsgi-appini arch
+
+ .. hotfix: a bug group-tab need this comment
+
+ .. group-tab:: Fedora / RHEL
+
+ .. kernel-include:: $DOCS_BUILD/includes/searx.rst
+ :start-after: START searx uwsgi-appini fedora
+ :end-before: END searx uwsgi-appini fedora
diff --git a/docs/admin/installation.rst b/docs/admin/installation.rst
index 15800fc..9bb102c 100644
--- a/docs/admin/installation.rst
+++ b/docs/admin/installation.rst
@@ -4,346 +4,83 @@
Installation
============
-.. contents::
- :depth: 3
+*You're spoilt for choice*, choose your preferred method of installation.
-Basic installation
-==================
+- :ref:`installation docker`
+- :ref:`installation scripts`
+- :ref:`installation basic`
-Step by step installation for Debian/Ubuntu with virtualenv. For Ubuntu, be sure
-to have enable universe repository.
+The :ref:`installation basic` is good enough for intranet usage and it is a
+excellent illustration of *how a searx instance is build up*. If you place your
+instance public to the internet you should really consider to install a
+:ref:`filtron reverse proxy <filtron.sh>` and for privacy a :ref:`result proxy
+<morty.sh>` is mandatory.
-Install packages:
+Therefore, if you do not have any special preferences, its recommend to use the
+:ref:`installation docker` or the `Installation scripts`_ from our :ref:`tooling
+box <toolboxing>` as described below.
-.. code:: sh
+.. _installation scripts:
- $ sudo -H apt-get install \
- git build-essential libxslt-dev \
- python-dev python-virtualenv python-babel \
- zlib1g-dev libffi-dev libssl-dev
+Installation scripts
+====================
-Install searx:
+.. sidebar:: Update OS first!
-.. code:: sh
+ To avoid unwanted side effects, update your OS before installing searx.
- cd /usr/local
- sudo -H git clone https://github.com/asciimoo/searx.git
- sudo -H useradd searx -d /usr/local/searx
- sudo -H chown searx:searx -R /usr/local/searx
+The following will install a setup as shown in :ref:`architecture`. First you
+need to get a clone. The clone is only needed for the installation procedure
+and some maintenance tasks (alternatively you can create your own fork).
-Install dependencies in a virtualenv:
+For the installation procedure, use a *sudoer* login to run the scripts. If you
+install from ``root``, take into account that the scripts are creating a
+``searx``, a ``filtron`` and a ``morty`` user. In the installation procedure
+these new created users do need read access to the clone of searx, which is not
+the case if you clone into a folder below ``/root``.
-.. code:: sh
+.. code:: bash
- cd /usr/local/searx
- sudo -H -u searx -i
+ $ cd ~/Downloads
+ $ git clone https://github.com/searx/searx searx
+ $ cd searx
-.. code:: sh
+.. sidebar:: further read
- (searx)$ virtualenv searx-ve
- (searx)$ . ./searx-ve/bin/activate
- (searx)$ ./manage.sh update_packages
+ - :ref:`toolboxing`
+ - :ref:`update searx`
+ - :ref:`inspect searx`
-Configuration
-==============
+**Install** :ref:`searx service <searx.sh>`
-.. code:: sh
+This installs searx as described in :ref:`installation basic`.
- sed -i -e "s/ultrasecretkey/`openssl rand -hex 16`/g" searx/settings.yml
+.. code:: bash
-Edit searx/settings.yml if necessary.
+ $ sudo -H ./utils/searx.sh install all
-Check
-=====
+**Install** :ref:`filtron reverse proxy <filtron.sh>`
-Start searx:
+.. code:: bash
-.. code:: sh
+ $ sudo -H ./utils/filtron.sh install all
- python searx/webapp.py
+**Install** :ref:`result proxy <morty.sh>`
-Go to http://localhost:8888
+.. code:: bash
-If everything works fine, disable the debug option in settings.yml:
+ $ sudo -H ./utils/morty.sh install all
-.. code:: sh
+If all services are running fine, you can add it to your HTTP server:
- sed -i -e "s/debug : True/debug : False/g" searx/settings.yml
+- :ref:`installation apache`
+- :ref:`installation nginx`
-At this point searx is not demonized ; uwsgi allows this.
+.. _git stash: https://git-scm.com/docs/git-stash
-You can exit the virtualenv and the searx user bash (enter exit command
-twice).
+.. tip::
-uwsgi
-=====
-
-Install packages:
-
-.. code:: sh
-
- sudo -H apt-get install \
- uwsgi uwsgi-plugin-python
-
-Create the configuration file ``/etc/uwsgi/apps-available/searx.ini`` with this
-content:
-
-.. code:: ini
-
- [uwsgi]
- # Who will run the code
- uid = searx
- gid = searx
-
- # disable logging for privacy
- disable-logging = true
-
- # Number of workers (usually CPU count)
- workers = 4
-
- # The right granted on the created socket
- chmod-socket = 666
-
- # Plugin to use and interpretor config
- single-interpreter = true
- master = true
- plugin = python
- lazy-apps = true
- enable-threads = true
-
- # Module to import
- module = searx.webapp
-
- # Support running the module from a webserver subdirectory.
- route-run = fixpathinfo:
-
- # Virtualenv and python path
- virtualenv = /usr/local/searx/searx-ve/
- pythonpath = /usr/local/searx/
- chdir = /usr/local/searx/searx/
-
-Activate the uwsgi application and restart:
-
-.. code:: sh
-
- cd /etc/uwsgi/apps-enabled
- ln -s ../apps-available/searx.ini
- /etc/init.d/uwsgi restart
-
-Web server
-==========
-
-with nginx
-----------
-
-If nginx is not installed (uwsgi will not work with the package
-nginx-light):
-
-.. code:: sh
-
- sudo -H apt-get install nginx
-
-Hosted at /
-~~~~~~~~~~~
-
-Create the configuration file ``/etc/nginx/sites-available/searx`` with this
-content:
-
-.. code:: nginx
-
- server {
- listen 80;
- server_name searx.example.com;
- root /usr/local/searx/searx;
-
- location /static {
- }
-
- location / {
- include uwsgi_params;
- uwsgi_pass unix:/run/uwsgi/app/searx/socket;
- }
- }
-
-Create a symlink to sites-enabled:
-
-.. code:: sh
-
- sudo -H ln -s /etc/nginx/sites-available/searx /etc/nginx/sites-enabled/searx
-
-Restart service:
-
-.. code:: sh
-
- sudo -H service nginx restart
- sudo -H service uwsgi restart
-
-from subdirectory URL (/searx)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Add this configuration in the server config file
-``/etc/nginx/sites-enabled/default``:
-
-.. code:: nginx
-
- location /searx/static {
- alias /usr/local/searx/searx/static;
- }
-
- location /searx {
- uwsgi_param SCRIPT_NAME /searx;
- include uwsgi_params;
- uwsgi_pass unix:/run/uwsgi/app/searx/socket;
- }
-
-
-**OR** using reverse proxy (Please, note that reverse proxy advised to be used
-in case of single-user or low-traffic instances.)
-
-.. code:: nginx
-
- location /searx/static {
- alias /usr/local/searx/searx/static;
- }
-
- location /searx {
- proxy_pass http://127.0.0.1:8888;
- proxy_set_header Host $host;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Scheme $scheme;
- proxy_set_header X-Script-Name /searx;
- proxy_buffering off;
- }
-
-
-Enable ``base_url`` in ``searx/settings.yml``
-
-.. code:: yaml
-
- base_url : http://your.domain.tld/searx/
-
-Restart service:
-
-.. code:: sh
-
- sudo -H service nginx restart
- sudo -H service uwsgi restart
-
-disable logs
-^^^^^^^^^^^^
-
-for better privacy you can disable nginx logs about searx.
-
-how to proceed: below ``uwsgi_pass`` in ``/etc/nginx/sites-available/default``
-add:
-
-.. code:: nginx
-
- access_log /dev/null;
- error_log /dev/null;
-
-Restart service:
-
-.. code:: sh
-
- sudo -H service nginx restart
-
-with apache
------------
-
-Add wsgi mod:
-
-.. code:: sh
-
- sudo -H apt-get install libapache2-mod-uwsgi
- sudo -H a2enmod uwsgi
-
-Add this configuration in the file ``/etc/apache2/apache2.conf``:
-
-.. code:: apache
-
- <Location />
- Options FollowSymLinks Indexes
- SetHandler uwsgi-handler
- uWSGISocket /run/uwsgi/app/searx/socket
- </Location>
-
-Note that if your instance of searx is not at the root, you should change
-``<Location />`` by the location of your instance, like ``<Location /searx>``.
-
-Restart Apache:
-
-.. code:: sh
-
- sudo -H /etc/init.d/apache2 restart
-
-disable logs
-~~~~~~~~~~~~
-
-For better privacy you can disable Apache logs.
-
-.. warning::
-
- You can only disable logs for the whole (virtual) server not for a specific
- path.
-
-Go back to ``/etc/apache2/apache2.conf`` and above ``<Location />`` add:
-
-.. code:: apache
-
- CustomLog /dev/null combined
-
-Restart Apache:
-
-.. code:: sh
-
- sudo -H /etc/init.d/apache2 restart
-
-How to update
-=============
-
-.. code:: sh
-
- cd /usr/local/searx
- sudo -H -u searx -i
-
-.. code:: sh
-
- (searx)$ . ./searx-ve/bin/activate
- (searx)$ git stash
- (searx)$ git pull origin master
- (searx)$ git stash apply
- (searx)$ ./manage.sh update_packages
-
-.. code:: sh
-
- sudo -H service uwsgi restart
-
-Docker
-======
-
-Make sure you have installed Docker. For instance, you can deploy searx like this:
-
-.. code:: sh
-
- docker pull wonderfall/searx
- docker run -d --name searx -p $PORT:8888 wonderfall/searx
-
-Go to ``http://localhost:$PORT``.
-
-See https://hub.docker.com/r/wonderfall/searx/ for more informations. It's also
-possible to build searx from the embedded Dockerfile.
-
-.. code:: sh
-
- git clone https://github.com/asciimoo/searx.git
- cd searx
- docker build -t whatever/searx .
-
-References
-==========
-
-* https://about.okhin.fr/posts/Searx/ with some additions
-
-* How to: `Setup searx in a couple of hours with a free SSL certificate
- <https://www.reddit.com/r/privacytoolsIO/comments/366kvn/how_to_setup_your_own_privacy_respecting_search/>`__
+ About script's installation options have a look at chapter :ref:`toolboxing
+ setup`. How to brand your instance see chapter :ref:`settings global`. To
+ *stash* your instance's setup, `git stash`_ your clone's :origin:`Makefile`
+ and :origin:`.config.sh` file .
diff --git a/docs/admin/morty.rst b/docs/admin/morty.rst
index 7d7b344..5468c9c 100644
--- a/docs/admin/morty.rst
+++ b/docs/admin/morty.rst
@@ -1,7 +1,14 @@
+
+.. _searx morty:
+
=========================
How to setup result proxy
=========================
+.. sidebar:: further reading
+
+ - :ref:`morty.sh`
+
.. _morty: https://github.com/asciimoo/morty
.. _morty's README: https://github.com/asciimoo/morty
@@ -9,15 +16,22 @@ By default searx can only act as an image proxy for result images, but it is
possible to proxify all the result URLs with an external service, morty_.
To use this feature, morty has to be installed and activated in searx's
-``settings.yml``.
-
-Add the following snippet to your ``settings.yml`` and restart searx:
+``settings.yml``. Add the following snippet to your ``settings.yml`` and
+restart searx:
.. code:: yaml
result_proxy:
url : http://127.0.0.1:3000/
- key : your_morty_proxy_key
+ key : !!binary "insert_your_morty_proxy_key_here"
+
+Note that the example above (``http://127.0.0.1:3000``) is only for single-user
+instances without a HTTP proxy. If your morty service is public, the url is the
+address of the reverse proxy (e.g ``https://example.org/morty``).
+
+For more information about *result proxy* have a look at *"searx via filtron
+plus morty"* in the :ref:`nginx <nginx searx via filtron plus morty>` and
+:ref:`apache <apache searx via filtron plus morty>` sections.
``url``
Is the address of the running morty service.
diff --git a/docs/admin/plugins.rst b/docs/admin/plugins.rst
index 4ed9066..d97b3da 100644
--- a/docs/admin/plugins.rst
+++ b/docs/admin/plugins.rst
@@ -14,7 +14,7 @@ Configuration defaults (at built time):
.. _configured plugins:
-.. jinja:: webapp
+.. jinja:: searx
.. flat-table:: Plugins configured at built time (defaults)
:header-rows: 1
diff --git a/docs/admin/settings.rst b/docs/admin/settings.rst
index 0bfdcc6..7cf055d 100644
--- a/docs/admin/settings.rst
+++ b/docs/admin/settings.rst
@@ -4,110 +4,193 @@
``settings.yml``
================
+This page describe the options possibilities of the :origin:`searx/settings.yml`
+file.
+
.. sidebar:: Further reading ..
+ - :ref:`use_default_settings.yml`
- :ref:`search API`
-This page describe the options possibilities of the settings.yml file.
+.. contents:: Contents
+ :depth: 2
+ :local:
+ :backlinks: entry
+
+.. _settings location:
+
+settings.yml location
+=====================
+
+First, searx will try to load settings.yml from these locations:
+
+1. the full path specified in the ``SEARX_SETTINGS_PATH`` environment variable.
+2. ``/etc/searx/settings.yml``
+
+If these files don't exist (or are empty or can't be read), searx uses the
+:origin:`searx/settings.yml` file.
+
.. _settings global:
Global Settings
===============
+``general:``
+------------
+
.. code:: yaml
- server:
- port : 8888
- secret_key : "ultrasecretkey" # change this!
- debug : False # debug mode, only for development
- request_timeout : 2.0 # seconds
- base_url : False # set custom base_url (or False)
- themes_path : "" # custom ui themes path
- default_theme : oscar # ui theme
- useragent_suffix : "" # suffix of searx_useragent, could contain
- # informations like admins email address
- image_proxy : False # proxying image results through searx
- default_locale : "" # default interface locale
+ general:
+ debug : False # Debug mode, only for development
+ instance_name : "searx" # displayed name
+ git_url: https://github.com/searx/searx
+ git_branch: master
+ issue_url: https://github.com/searx/searx/issues
+ docs_url: https://searx.github.io/searx
+ public_instances: https://searx.space
+ contact_url: False # mailto:contact@example.com
+ wiki_url: https://github.com/searx/searx/wiki
+ twitter_url: https://twitter.com/Searx_engine
- # uncomment below section if you want to use a proxy
+``debug`` :
+ Allow a more detailed log if you run searx directly. Display *detailed* error
+ messages in the browser too, so this must be deactivated in production.
- #outgoing_proxies :
- # http : http://127.0.0.1:8080
- # https: http://127.0.0.1:8080
+``contact_url``:
+ Contact ``mailto:`` address or WEB form.
- # uncomment below section only if you have more than one network interface
- # which can be the source of outgoing search requests
+``git_url`` and ``git_branch``:
+ Changes this, to point to your searx fork (branch).
- #source_ips:
- # - 1.1.1.1
- # - 1.1.1.2
+``docs_url``
+ If you host your own documentation, change this URL.
- locales:
- en : English
- de : Deutsch
- he : Hebrew
- hu : Magyar
- fr : Français
- es : Español
- it : Italiano
- nl : Nederlands
- ja : 日本語 (Japanese)
- tr : Türkçe
- ru : Russian
- ro : Romanian
+``wiki_url``:
+ Link to your wiki (or ``False``)
+``twitter_url``:
+ Link to your tweets (or ``False``)
-``port`` :
- Port number of the searx web application if you run it directly using ``python
- searx/webapp.py``. Doesn't apply to searx running on Apache or Nginx.
-``secret_key`` :
- Used for cryptography purpose.
+``server:``
+-----------
-``debug`` :
- Allow a more detailed log if you run searx directly. Display *detailed* error
- messages in the browser too, so this must be deactivated in production.
+.. code:: yaml
-``request_timeout`` :
- Global timeout of the requests made to others engines in seconds. A bigger
- timeout will allow to wait for answers from slow engines, but in consequence
- will slow searx reactivity (the result page may take the time specified in the
- timeout to load)
+ server:
+ port : 8888
+ bind_address : "127.0.0.1" # address to listen on
+ secret_key : "ultrasecretkey" # change this!
+ base_url : False # set custom base_url (or False)
+ image_proxy : False # proxying image results through searx
+ default_locale : "" # default interface locale
+ default_theme : oscar # ui theme
+ default_http_headers:
+ X-Content-Type-Options : nosniff
+ X-XSS-Protection : 1; mode=block
+ X-Download-Options : noopen
+ X-Robots-Tag : noindex, nofollow
+ Referrer-Policy : no-referrer
+
+``port`` & ``bind_address``:
+ Port number and *bind address* of the searx web application if you run it
+ directly using ``python searx/webapp.py``. Doesn't apply to searx running on
+ Apache or Nginx.
+
+``secret_key`` :
+ Used for cryptography purpose.
``base_url`` :
The base URL where searx is deployed. Used to create correct inbound links.
-``themes_path`` :
- Path to where the themes are located. If you didn't develop anything, leave it
- blank.
-
-``default_theme`` :
- Name of the theme you want to use by default on you searx instance.
-
-``useragent_suffix`` :
- Suffix to the user-agent searx uses to send requests to others engines. If an
- engine wish to block you, a contact info here may be useful to avoid that.
-
``image_proxy`` :
Allow your instance of searx of being able to proxy images. Uses memory space.
``default_locale`` :
- Aearx interface language. If blank, the locale is detected by using the
+ Searx interface language. If blank, the locale is detected by using the
browser language. If it doesn't work, or you are deploying a language
specific instance of searx, a locale can be defined using an ISO language
code, like ``fr``, ``en``, ``de``.
-.. _requests proxies: http://docs.python-requests.org/en/latest/user/advanced/#proxies
-.. _PR SOCKS support: https://github.com/kennethreitz/requests/pull/478
+``default_theme`` :
+ Name of the theme you want to use by default on your searx instance.
+
+.. _HTTP headers: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
+
+``default_http_headers``:
+ Set additional HTTP headers, see `#755 <https://github.com/searx/searx/issues/715>`__
+
+``outgoing:``
+-------------
+
+.. code:: yaml
+
+ outgoing: # communication with search engines
+ request_timeout : 2.0 # default timeout in seconds, can be override by engine
+ # max_request_timeout: 10.0 # the maximum timeout in seconds
+ useragent_suffix : "" # informations like an email address to the administrator
+ pool_connections : 100 # Number of different hosts
+ pool_maxsize : 10 # Number of simultaneous requests by host
+ # uncomment below section if you want to use a proxy
+ # proxies:
+ # http:
+ # - http://proxy1:8080
+ # - http://proxy2:8080
+ # https:
+ # - http://proxy1:8080
+ # - http://proxy2:8080
+ # uncomment below section only if you have more than one network interface
+ # which can be the source of outgoing search requests
+ # source_ips:
+ # - 1.1.1.1
+ # - 1.1.1.2
+
+
+``request_timeout`` :
+ Global timeout of the requests made to others engines in seconds. A bigger
+ timeout will allow to wait for answers from slow engines, but in consequence
+ will slow searx reactivity (the result page may take the time specified in the
+ timeout to load). Can be override by :ref:`settings engine`
+
+``useragent_suffix`` :
+ Suffix to the user-agent searx uses to send requests to others engines. If an
+ engine wish to block you, a contact info here may be useful to avoid that.
+
+.. _requests proxies: https://requests.readthedocs.io/en/latest/user/advanced/#proxies
+.. _PySocks: https://pypi.org/project/PySocks/
+
+``proxies`` :
+ Define one or more proxies you wish to use, see `requests proxies`_.
+ If there are more than one proxy for one protocol (http, https),
+ requests to the engines are distributed in a round-robin fashion.
-``outgoing_proxies`` :
- Define a proxy you wish to use, see `requests proxies`_. SOCKS proxies are
- not supported / see `PR SOCKS support`.
+ - Proxy: `see <https://2.python-requests.org/en/latest/user/advanced/#proxies>`__.
+ - SOCKS proxies are also supported: `see <https://2.python-requests.org/en/latest/user/advanced/#socks>`__
``source_ips`` :
- If you use multiple nework interfaces, define from which IP the requests must
- be made.
+ If you use multiple network interfaces, define from which IP the requests must
+ be made. This parameter is ignored when ``proxies`` is set.
+
+
+``locales:``
+------------
+
+.. code:: yaml
+
+ locales:
+ en : English
+ de : Deutsch
+ he : Hebrew
+ hu : Magyar
+ fr : Français
+ es : Español
+ it : Italiano
+ nl : Nederlands
+ ja : 日本語 (Japanese)
+ tr : Türkçe
+ ru : Russian
+ ro : Romanian
``locales`` :
Locales codes and their names. Available translations of searx interface.
@@ -133,9 +216,18 @@ Engine settings
api_key : 'apikey'
disabled : True
language : en_US
+ #proxies:
+ # http:
+ # - http://proxy1:8080
+ # - http://proxy2:8080
+ # https:
+ # - http://proxy1:8080
+ # - http://proxy2:8080
+ # - socks5://user:password@proxy3:1080
+ # - socks5h://user:password@proxy4:1080
``name`` :
- Name that will be used accross searx to define this engine. In settings, on
+ Name that will be used across searx to define this engine. In settings, on
the result page...
``engine`` :
@@ -146,7 +238,7 @@ Engine settings
Code used to execute bang requests (in this case using ``!bi`` or ``?bi``)
``base_url`` : optional
- Part of the URL that should be stable accross every request. Can be useful to
+ Part of the URL that should be stable across every request. Can be useful to
use multiple sites using only one engine, or updating the site URL without
touching at the code.
@@ -164,7 +256,7 @@ Engine settings
is described in the file.
``disabled`` : optional
- To disable by default the engine, but not deleting it. It will allow the user
+ To disable by default the engine, but not deleting it. It will allow the user
to manually activate it in the settings.
``language`` : optional
@@ -175,7 +267,90 @@ Engine settings
``weigth`` : default ``1``
Weighting of the results of this engine.
+``display_error_messages`` : default ``True``
+ When an engine returns an error, the message is displayed on the user interface.
+
.. note::
A few more options are possible, but they are pretty specific to some
engines, and so won't be described here.
+
+
+.. _settings use_default_settings:
+
+use_default_settings
+====================
+
+.. sidebar:: ``use_default_settings: True``
+
+ - :ref:`settings location`
+ - :ref:`use_default_settings.yml`
+ - :origin:`/etc/searx/settings.yml <utils/templates/etc/searx/use_default_settings.yml>`
+
+The user defined ``settings.yml`` is loaded from the :ref:`settings location`
+and can relied on the default configuration :origin:`searx/settings.yml` using:
+
+ ``use_default_settings: True``
+
+``server:``
+ In the following example, the actual settings are the default settings defined
+ in :origin:`searx/settings.yml` with the exception of the ``secret_key`` and
+ the ``bind_address``:
+
+ .. code-block:: yaml
+
+ use_default_settings: True
+ server:
+ secret_key: "uvys6bRhKHUdFF5CqbJonSDSRN8H0sCBziNSrDGNVdpz7IeZhveVart3yvghoKHA"
+ bind_address: "0.0.0.0"
+
+``engines:``
+ With ``use_default_settings: True``, each settings can be override in a
+ similar way, the ``engines`` section is merged according to the engine
+ ``name``. In this example, searx will load all the engine and the arch linux
+ wiki engine has a :ref:`token<private engines>`:
+
+ .. code-block:: yaml
+
+ use_default_settings: True
+ server:
+ secret_key: "uvys6bRhKHUdFF5CqbJonSDSRN8H0sCBziNSrDGNVdpz7IeZhveVart3yvghoKHA"
+ engines:
+ - name: arch linux wiki
+ tokens: ['$ecretValue']
+
+``engines:`` / ``remove:``
+ It is possible to remove some engines from the default settings. The following
+ example is similar to the above one, but searx doesn't load the the google
+ engine:
+
+ .. code-block:: yaml
+
+ use_default_settings:
+ engines:
+ remove:
+ - google
+ server:
+ secret_key: "uvys6bRhKHUdFF5CqbJonSDSRN8H0sCBziNSrDGNVdpz7IeZhveVart3yvghoKHA"
+ engines:
+ - name: arch linux wiki
+ tokens: ['$ecretValue']
+
+``engines:`` / ``keep_only:``
+ As an alternative, it is possible to specify the engines to keep. In the
+ following example, searx has only two engines:
+
+ .. code-block:: yaml
+
+ use_default_settings:
+ engines:
+ keep_only:
+ - google
+ - duckduckgo
+ server:
+ secret_key: "uvys6bRhKHUdFF5CqbJonSDSRN8H0sCBziNSrDGNVdpz7IeZhveVart3yvghoKHA"
+ engines:
+ - name: google
+ tokens: ['$ecretValue']
+ - name: duckduckgo
+ tokens: ['$ecretValue']
diff --git a/docs/admin/update-searx.rst b/docs/admin/update-searx.rst
new file mode 100644
index 0000000..71eb4d0
--- /dev/null
+++ b/docs/admin/update-searx.rst
@@ -0,0 +1,59 @@
+.. _update searx:
+
+=============
+How to update
+=============
+
+How to update depends on the :ref:`installation` method. If you have used the
+:ref:`installation scripts`, use ``update`` command from the scripts.
+
+**Update** :ref:`searx service <searx.sh>`
+
+.. code:: sh
+
+ sudo -H ./utils/searx.sh update searx
+
+**Update** :ref:`filtron reverse proxy <filtron.sh>`
+
+.. code:: sh
+
+ sudo -H ./utils/filtron.sh update filtron
+
+**Update** :ref:`result proxy <morty.sh>`
+
+.. code:: bash
+
+ sudo -H ./utils/morty.sh update morty
+
+.. _inspect searx:
+
+======================
+How to inspect & debug
+======================
+
+.. sidebar:: further read
+
+ - :ref:`toolboxing`
+ - :ref:`Makefile`
+
+How to debug depends on the :ref:`installation` method. If you have used the
+:ref:`installation scripts`, use ``inspect`` command from the scripts.
+
+**Inspect** :ref:`searx service <searx.sh>`
+
+.. code:: sh
+
+ sudo -H ./utils/searx.sh inspect service
+
+**Inspect** :ref:`filtron reverse proxy <filtron.sh>`
+
+.. code:: sh
+
+ sudo -H ./utils/filtron.sh inspect service
+
+**Inspect** :ref:`result proxy <morty.sh>`
+
+.. code:: bash
+
+ sudo -H ./utils/morty.sh inspect service
+
diff --git a/docs/blog/command-line-engines.rst b/docs/blog/command-line-engines.rst
new file mode 100644
index 0000000..746c9e4
--- /dev/null
+++ b/docs/blog/command-line-engines.rst
@@ -0,0 +1,65 @@
+========================================
+Running shell commands to fetch results
+========================================
+
+Previously, with searx you could search over the Internet on other people's
+computers. Now it is possible to fetch results from your local machine without
+connecting to any networks from the same graphical user interface.
+
+
+Command line engines
+====================
+
+In :pull:`2128` a new type of engine has been introduced called ``command``.
+This engine lets administrators add engines which run arbitrary shell commands
+and show its output on the web UI of searx.
+
+When creating and enabling a ``command`` engine on a public searx instance,
+you must be careful to avoid leaking private data. The easiest solution
+is to add tokens to the engine. Thus, only those who have the appropriate token
+can retrieve results from the it.
+
+The engine base is flexible. Only your imagination can limit the power of this engine. (And
+maybe security concerns.) The following options are available:
+
+* ``command``: A comma separated list of the elements of the command. A special token {{QUERY}} tells searx where to put the search terms of the user. Example: ``['ls', '-l', '-h', '{{QUERY}}']``
+* ``delimiter``: A dict containing a delimiter char and the "titles" of each element in keys.
+* ``parse_regex``: A dict containing the regular expressions for each result key.
+* ``query_type``: The expected type of user search terms. Possible values: ``path`` and ``enum``. ``path`` checks if the uesr provided path is inside the working directory. If not the query is not executed. ``enum`` is a list of allowed search terms. If the user submits something which is not included in the list, the query returns an error.
+* ``query_enum``: A list containing allowed search terms if ``query_type`` is set to ``enum``.
+* ``working_dir``: The directory where the command has to be executed. Default: ``.``
+* ``result_separator``: The character that separates results. Default: ``\n``
+
+
+The example engine below can be used to find files with a specific name in the configured
+working directory.
+
+.. code:: yaml
+
+ - name: find
+ engine: command
+ command: ['find', '.', '-name', '{{QUERY}}']
+ query_type: path
+ shortcut: fnd
+ delimiter:
+ chars: ' '
+ keys: ['line']
+
+
+Next steps
+==========
+
+In the next milestone, support for local search engines and indexers (e.g. Elasticsearch)
+are going to be added. This way, you will be able to query your own databases/indexers.
+
+Acknowledgement
+===============
+
+This development was sponsored by `Search and Discovery Fund`_ of `NLnet Foundation`_ .
+
+.. _Search and Discovery Fund: https://nlnet.nl/discovery
+.. _NLnet Foundation: https://nlnet.nl/
+
+
+| Happy hacking.
+| kvch // 2020.09.28 21:26
diff --git a/docs/blog/index.rst b/docs/blog/index.rst
index 52fa3f1..857fede 100644
--- a/docs/blog/index.rst
+++ b/docs/blog/index.rst
@@ -3,8 +3,15 @@ Blog
====
.. toctree::
- :maxdepth: 1
+ :titlesonly:
+ :reversed:
python3
admin
intro-offline
+ private-engines
+ lxcdev-202006
+ command-line-engines
+ search-indexer-engines
+ sql-engines
+ search-database-engines
diff --git a/docs/blog/lxcdev-202006.rst b/docs/blog/lxcdev-202006.rst
new file mode 100644
index 0000000..b53501d
--- /dev/null
+++ b/docs/blog/lxcdev-202006.rst
@@ -0,0 +1,413 @@
+.. _blog-lxcdev-202006:
+
+=======================================
+Developing in Linux containers [202006]
+=======================================
+
+.. _LXC: https://linuxcontainers.org/lxc/introduction/
+
+.. sidebar:: Audience
+
+ This blog post is written for experienced admins and developers / readers
+ should have a serious meaning about: *distributed*, *merge* and *linux
+ container*.
+
+.. contents:: Contents
+ :depth: 2
+ :local:
+ :backlinks: entry
+
+In PR :PR:`1803` we added a lot of scripts to Searx's boilerplate. In this blog
+post I will show you, how you can make use of them in *distributed and
+heterogeneous development cycles* (TL;DR; jump to the :ref:`blog-lxcdev-202006
+abstract`).
+
+Motivation
+==========
+
+Normally in our development cycle, we edit the sources and run some test and/or
+builds by using ``make`` before we commit. This cycle is simple and perfect but
+might fail in some aspects we should not overlook.
+
+ The environment in which we run all our development processes matters!
+
+The :ref:`makefile` and the :ref:`make install` encapsulate a lot for us, but they
+do not have access to all prerequisites. For example, there may have
+dependencies on packages that are installed on the developer's desktop, but
+usually are not preinstalled on a server or client system. Another examples
+are; settings have been made to the software on the developer's host that would
+never be set on a *production* system.
+
+*Linux Containers* (LXC_) are isolate environments and not to mix up on
+developer's all the prerequisites of all the projects he contribute to, is
+always a good choice.
+
+The scripts from PR :PR:`1803` can divide in those to install and maintain
+software:
+
+- :ref:`searx.sh`
+- :ref:`filtron.sh`
+- :ref:`morty.sh`
+
+and the script :ref:`lxc.sh`, with we can scale our installation, maintenance or
+even development tasks over a stack of containers, what we call: *Searx's lxc
+suite*.
+
+Gentlemen, start your engines!
+==============================
+
+.. _LXD: https://linuxcontainers.org/lxd/introduction/
+.. _archlinux: https://www.archlinux.org/
+
+Before you can start with containers, you need to install and initiate LXD_
+once:
+
+.. tabs::
+
+ .. group-tab:: desktop
+
+ .. code:: sh
+
+ $ snap install lxd
+ $ lxd init --auto
+
+And you need to clone from origin or if you have your own fork, clone from your
+fork:
+
+.. tabs::
+
+ .. group-tab:: desktop
+
+ .. code:: sh
+
+ $ cd ~/Downloads
+ $ git clone https://github.com/searx/searx.git
+ $ cd searx
+
+The :ref:`lxc-searx.env` consists of several images, see ``export
+LXC_SUITE=(...`` near by :origin:`utils/lxc-searx.env#L19`. For this blog post
+we exercise on a archlinux_ image. The container of this image is named
+``searx-archlinux``. Lets build the container, but be sure that this container
+does not already exists, so first lets remove possible old one:
+
+.. tabs::
+
+ .. group-tab:: desktop
+
+ .. code:: sh
+
+ $ sudo -H ./utils/lxc.sh remove searx-archlinux
+ $ sudo -H ./utils/lxc.sh build searx-archlinux
+
+.. sidebar:: The ``searx-archlinux`` container
+
+ is the base of all our exercises here.
+
+In this container we install all services :ref:`including searx, morty & filtron
+<lxc.sh install suite>` in once:
+
+.. tabs::
+
+ .. group-tab:: desktop
+
+ .. code:: sh
+
+ $ sudo -H ./utils/lxc.sh install suite searx-archlinux
+
+To proxy HTTP from filtron and morty in the container to the outside of the
+container, install nginx into the container. Once for the bot blocker filtron:
+
+.. tabs::
+
+ .. group-tab:: desktop
+
+ .. code:: sh
+
+ $ sudo -H ./utils/lxc.sh cmd searx-archlinux \
+ ./utils/filtron.sh nginx install
+ ...
+ INFO: got 429 from http://10.174.184.156/searx
+
+and once for the content sanitizer (content proxy morty):
+
+.. tabs::
+
+ .. group-tab:: desktop
+
+ .. code:: sh
+
+ $ sudo -H ./utils/lxc.sh cmd searx-archlinux \
+ ./utils/morty.sh nginx install
+ ...
+ INFO: got 200 from http://10.174.184.156/morty/
+
+.. sidebar:: Fully functional searx suite
+
+ From here on you have a fully functional searx suite running with bot blocker
+ (filtron) and Web content sanitizer (content proxy morty) needed for a
+ *privacy protecting* search engine.
+
+On your system, the IP of your ``searx-archlinux`` container differs from
+http://10.174.184.156/searx, just open the URL reported in your installation
+protocol in your WEB browser from the desktop to test the instance from outside
+of the container.
+
+In such a searx suite admins can maintain and access the debug log of the
+different services quite easy.
+
+.. _working in containers:
+
+In containers, work as usual
+============================
+
+Usually you open a root-bash using ``sudo -H bash``. In case of LXC containers
+open the root-bash in the container using ``./utils/lxc.sh cmd
+searx-archlinux``:
+
+.. tabs::
+
+ .. group-tab:: desktop
+
+ .. code:: sh
+
+ $ sudo -H ./utils/lxc.sh cmd searx-archlinux bash
+ INFO: [searx-archlinux] bash
+ [root@searx-archlinux searx]# pwd
+ /share/searx
+
+The prompt ``[root@searx-archlinux ...]`` signals, that you are the root user in
+the searx-container. To debug the running searx instance use:
+
+.. tabs::
+
+ .. group-tab:: root@searx-archlinux
+
+ .. code:: sh
+
+ $ ./utils/searx.sh inspect service
+ ...
+ use [CTRL-C] to stop monitoring the log
+ ...
+
+Back in the browser on your desktop open the service http://10.174.184.156/searx
+and run your application tests while the debug log is shown in the terminal from
+above. You can stop monitoring using ``CTRL-C``, this also disables the *"debug
+option"* in searx's settings file and restarts the searx uwsgi application. To
+debug services from filtron and morty analogous use:
+
+.. tabs::
+
+ .. group-tab:: root@searx-archlinux
+
+ .. code:: sh
+
+ $ ./utils/filtron.sh inspect service
+ $ ./utils/morty.sh inspect service
+
+Another point we have to notice is that each service (:ref:`searx <searx.sh>`,
+:ref:`filtron <filtron.sh>` and :ref:`morty <morty.sh>`) runs under dedicated
+system user account with the same name (compare :ref:`create searx user`). To
+get a shell from theses accounts, simply call one of the scripts:
+
+.. tabs::
+
+ .. group-tab:: root@searx-archlinux
+
+ .. code:: sh
+
+ $ ./utils/searx.sh shell
+ $ ./utils/filtron.sh shell
+ $ ./utils/morty.sh shell
+
+To get in touch, open a shell from the service user (searx@searx-archlinux):
+
+.. tabs::
+
+ .. group-tab:: desktop
+
+ .. code:: sh
+
+ $ sudo -H ./utils/lxc.sh cmd searx-archlinux \
+ ./utils/searx.sh shell
+ // exit with [CTRL-D]
+ (searx-pyenv) [searx@searx-archlinux ~]$ ...
+
+The prompt ``[searx@searx-archlinux]`` signals that you are logged in as system
+user ``searx`` in the ``searx-archlinux`` container and the python *virtualenv*
+``(searx-pyenv)`` environment is activated.
+
+.. tabs::
+
+ .. group-tab:: searx@searx-archlinux
+
+ .. code:: sh
+
+ (searx-pyenv) [searx@searx-archlinux ~]$ pwd
+ /usr/local/searx
+
+
+
+Wrap production into developer suite
+====================================
+
+In this section we will see how to change the *"Fully functional searx suite"*
+from a LXC container (which is quite ready for production) into a developer
+suite. For this, we have to keep an eye on the :ref:`installation basic`:
+
+- searx setup in: ``/etc/searx/settings.yml``
+- searx user's home: ``/usr/local/searx``
+- virtualenv in: ``/usr/local/searx/searx-pyenv``
+- searx software in: ``/usr/local/searx/searx-src``
+
+The searx software is a clone of the ``git_url`` (see :ref:`settings global`) and
+the working tree is checked out from the ``git_branch``. With the use of the
+:ref:`searx.sh` the searx service was installed as :ref:`uWSGI application
+<searx uwsgi>`. To maintain this service, we can use ``systemctl`` (compare
+:ref:`service architectures on distributions <uwsgi configuration>`).
+
+.. tabs::
+
+ .. group-tab:: desktop
+
+ .. code:: sh
+
+ $ sudo -H ./utils/lxc.sh cmd searx-archlinux \
+ systemctl stop uwsgi@searx
+
+With the command above, we stopped the searx uWSGI-App in the archlinux
+container.
+
+The uWSGI-App for the archlinux dsitros is configured in
+:origin:`utils/templates/etc/uwsgi/apps-archlinux/searx.ini`, from where at
+least you should attend the settings of ``uid``, ``chdir``, ``env`` and
+``http``::
+
+ env = SEARX_SETTINGS_PATH=/etc/searx/settings.yml
+ http = 127.0.0.1:8888
+
+ chdir = /usr/local/searx/searx-src/searx
+ virtualenv = /usr/local/searx/searx-pyenv
+ pythonpath = /usr/local/searx/searx-src
+
+If you have read the :ref:`"Good to know section" <lxc.sh>` you remember, that
+each container shares the root folder of the repository and the command
+``utils/lxc.sh cmd`` handles relative path names **transparent**. To wrap the
+searx installation into a developer one, we simple have to create a smylink to
+the **transparent** reposetory from the desktop. Now lets replace the
+repository at ``searx-src`` in the container with the working tree from outside
+of the container:
+
+.. tabs::
+
+ .. group-tab:: container becomes a developer suite
+
+ .. code:: sh
+
+ $ sudo -H ./utils/lxc.sh cmd searx-archlinux \
+ mv /usr/local/searx/searx-src /usr/local/searx/searx-src.old
+
+ $ sudo -H ./utils/lxc.sh cmd searx-archlinux \
+ ln -s /share/searx/ /usr/local/searx/searx-src
+
+Now we can develop as usual in the working tree of our desktop system. Every
+time the software was changed, you have to restart the searx service (in the
+conatiner):
+
+.. tabs::
+
+ .. group-tab:: desktop
+
+ .. code:: sh
+
+ $ sudo -H ./utils/lxc.sh cmd searx-archlinux \
+ systemctl restart uwsgi@searx
+
+
+Remember: :ref:`working in containers` .. here are just some examples from my
+daily usage:
+
+.. tabs::
+
+ .. group-tab:: desktop
+
+ To *inspect* the searx instance (already described above):
+
+ .. code:: sh
+
+ $ sudo -H ./utils/lxc.sh cmd searx-archlinux \
+ ./utils/searx.sh inspect service
+
+ Run :ref:`makefile`, e.g. to test inside the container:
+
+ .. code:: sh
+
+ $ sudo -H ./utils/lxc.sh cmd searx-archlinux \
+ make test
+
+ To install all prerequisites needed for a :ref:`buildhosts`:
+
+ .. code:: sh
+
+ $ sudo -H ./utils/lxc.sh cmd searx-archlinux \
+ ./utils/searx.sh install buildhost
+
+ To build the docs on a buildhost :ref:`buildhosts`:
+
+ .. code:: sh
+
+ $ sudo -H ./utils/lxc.sh cmd searx-archlinux \
+ make docs.html
+
+.. _blog-lxcdev-202006 abstract:
+
+Abstract
+========
+
+We build up a fully functional searx suite in a archlinux container:
+
+.. code:: sh
+
+ $ sudo -H ./utils/lxc.sh install suite searx-archlinux
+
+To access HTTP from the desktop we installed nginx for the services inside the
+conatiner:
+
+.. tabs::
+
+ .. group-tab:: [root@searx-archlinux]
+
+ .. code:: sh
+
+ $ ./utils/filtron.sh nginx install
+ $ ./utils/morty.sh nginx install
+
+To wrap the suite into a developer one, we created a symbolic link to the
+repository which is shared **transparent** from the desktop's file system into
+the container :
+
+.. tabs::
+
+ .. group-tab:: [root@searx-archlinux]
+
+ .. code:: sh
+
+ $ mv /usr/local/searx/searx-src /usr/local/searx/searx-src.old
+ $ ln -s /share/searx/ /usr/local/searx/searx-src
+ $ systemctl restart uwsgi@searx
+
+To get remarks from the suite of the archlinux container we can use:
+
+.. tabs::
+
+ .. group-tab:: desktop
+
+ .. code:: sh
+
+ $ sudo -H ./utils/lxc.sh show suite searx-archlinux
+ ...
+ [searx-archlinux] INFO: (eth0) filtron: http://10.174.184.156:4004/ http://10.174.184.156/searx
+ [searx-archlinux] INFO: (eth0) morty: http://10.174.184.156:3000/
+ [searx-archlinux] INFO: (eth0) docs.live: http://10.174.184.156:8080/
+ [searx-archlinux] INFO: (eth0) IPv6: http://[fd42:573b:e0b3:e97e:216:3eff:fea5:9b65]
+ ...
+
diff --git a/docs/blog/private-engines.rst b/docs/blog/private-engines.rst
new file mode 100644
index 0000000..027cc3d
--- /dev/null
+++ b/docs/blog/private-engines.rst
@@ -0,0 +1,65 @@
+==================================
+Limit access to your searx engines
+==================================
+
+Administrators might find themselves wanting to limit access to some of the
+enabled engines on their instances. It might be because they do not want to
+expose some private information through an offline engine. Or they
+would rather share engines only with their trusted friends or colleagues.
+
+.. _private engines:
+
+Private engines
+===============
+
+To solve this issue private engines were introduced in :pull:`1823`.
+A new option was added to engines named `tokens`. It expects a list
+of strings. If the user making a request presents one of the tokens
+of an engine, they can access information about the engine
+and make search requests.
+
+Example configuration to restrict access to the Arch Linux Wiki engine:
+
+.. code:: yaml
+
+ - name : arch linux wiki
+ engine : archlinux
+ shortcut : al
+ tokens : [ 'my-secret-token' ]
+
+
+Unless a user has configured the right token, the engine is going
+to be hidden from him/her. It is not going to be included in the
+list of engines on the Preferences page and in the output of
+`/config` REST API call.
+
+Tokens can be added to one's configuration on the Preferences page
+under "Engine tokens". The input expects a comma separated list of
+strings.
+
+The distribution of the tokens from the administrator to the users
+is not carved in stone. As providing access to such engines
+implies that the admin knows and trusts the user, we do not see
+necessary to come up with a strict process. Instead,
+we would like to add guidelines to the documentation of the feature.
+
+Next steps
+==========
+
+Now that searx has support for both offline engines and private engines,
+it is possible to add concrete engines which benefit from these features.
+For example engines which search on the local host running the instance.
+Be it searching your file system or querying a private database. Be creative
+and come up with new solutions which fit your use case.
+
+Acknowledgement
+===============
+
+This development was sponsored by `Search and Discovery Fund`_ of `NLnet Foundation`_ .
+
+.. _Search and Discovery Fund: https://nlnet.nl/discovery
+.. _NLnet Foundation: https://nlnet.nl/
+
+
+| Happy hacking.
+| kvch // 2020.02.28 22:26
diff --git a/docs/blog/python3.rst b/docs/blog/python3.rst
index 5bb7f1c..1d2cfc8 100644
--- a/docs/blog/python3.rst
+++ b/docs/blog/python3.rst
@@ -54,7 +54,7 @@ If you found bugs
Please open an issue on `GitHub`_. Make sure that you mention your Python
version in your issue, so we can investigate it properly.
-.. _GitHub: https://github.com/asciimoo/searx/issues
+.. _GitHub: https://github.com/searx/searx/issues
Acknowledgment
==============
diff --git a/docs/blog/search-database-engines.rst b/docs/blog/search-database-engines.rst
new file mode 100644
index 0000000..94f418e
--- /dev/null
+++ b/docs/blog/search-database-engines.rst
@@ -0,0 +1,95 @@
+===============================
+Query more of your NoSQL stores
+===============================
+
+From now on, searx lets you to query your NoSQL data stores:
+
+* `Redis`_
+* `MongoDB`_
+
+The reference configuration of the engines are included ``settings.yml`` just commented out,
+as you have to set various options and install dependencies before using them.
+
+By default, the engines use ``key-value`` template for displaying results.
+If you are not satisfied with the original result layout,
+you can use your owm template by placing the template under
+``searx/templates/{theme_name}/result_templates/{template_name}`` and setting
+``result_template`` attribute to ``{template_name}``.
+
+Futhermore, if you do not want to expose these engines on a public instance, you can
+still add them and limit the access by setting ``tokens`` as described in the `blog post about
+private engines`_.
+
+Configuring searx to use the stores
+===================================
+
+NoSQL data stores are used for storing arbitrary data without first defining their
+structure.
+
+Redis
+-----
+
+Reqired package: ``redis``
+
+Redis is a key value based data store usually stored in memory.
+
+Select a database to search in and set its index in the option ``db``. You can
+either look for exact matches or use partial keywords to find what you are looking for
+by configuring ``exact_match_only``.
+
+In this example you can search for exact matches in your first database:
+
+.. code:: yaml
+
+ - name : mystore
+ engine : redis_server
+ exact_match_only : True
+ host : 127.0.0.1
+ port : 6379
+ password : secret-password
+ db : 0
+ shortcut : rds
+ enable_http : True
+
+
+MongoDB
+-------
+
+Required package: ``pymongo``
+
+MongoDB is a document based database program that handles JSON like data.
+
+In order to query MongoDB, you have to select a ``database`` and a ``collection``. Furthermore,
+you have to select a ``key`` that is going to be searched. MongoDB also supports the option ``exact_match_only``, so configure it
+as you wish.
+
+Above is an example configuration for using a MongoDB collection:
+
+.. code:: yaml
+
+ - name : mymongo
+ engine : mongodb
+ shortcut : md
+ host : '127.0.0.1'
+ port : 27017
+ database : personal
+ collection : income
+ key : month
+ enable_http: True
+
+
+Acknowledgement
+===============
+
+This development was sponsored by `Search and Discovery Fund`_ of `NLnet Foundation`_ .
+
+.. _Redis: https://redis.io/
+.. _MongoDB: https://mongodb.com/
+.. _blog post about private engines: private-engines.html#private-engines
+.. _Search and Discovery Fund: https://nlnet.nl/discovery
+.. _NLnet Foundation: https://nlnet.nl/
+
+
+| Happy hacking.
+| kvch // 2021.07.13 23:16
+
diff --git a/docs/blog/search-indexer-engines.rst b/docs/blog/search-indexer-engines.rst
new file mode 100644
index 0000000..ca4dd3c
--- /dev/null
+++ b/docs/blog/search-indexer-engines.rst
@@ -0,0 +1,114 @@
+===============================
+Query your local search engines
+===============================
+
+From now on, searx lets you to query your locally running search engines. The following
+ones are supported now:
+
+* `Elasticsearch`_
+* `Meilisearch`_
+* `Solr`_
+
+All of the engines above are added to ``settings.yml`` just commented out, as you have to
+``base_url`` for all them.
+
+Please note that if you are not using HTTPS to access these engines, you have to enable
+HTTP requests by setting ``enable_http`` to ``True``.
+
+Futhermore, if you do not want to expose these engines on a public instance, you can
+still add them and limit the access by setting ``tokens`` as described in the `blog post about
+private engines`_.
+
+Configuring searx for search engines
+====================================
+
+Each search engine is powerful, capable of full-text search.
+
+Elasticsearch
+-------------
+
+Elasticsearch supports numerous ways to query the data it is storing. At the moment
+the engine supports the most popular search methods: ``match``, ``simple_query_string``, ``term`` and ``terms``.
+
+If none of the methods fit your use case, you can select ``custom`` query type and provide the JSON payload
+searx has to submit to Elasticsearch in ``custom_query_json``.
+
+The following is an example configuration for an Elasticsearch instance with authentication
+configured to read from ``my-index`` index.
+
+.. code:: yaml
+
+ - name : elasticsearch
+ shortcut : es
+ engine : elasticsearch
+ base_url : http://localhost:9200
+ username : elastic
+ password : changeme
+ index : my-index
+ query_type : match
+ enable_http : True
+
+
+Meilisearch
+-----------
+
+This search engine is aimed at individuals and small companies. It is designed for
+small-scale (less than 10 million documents) data collections. E.g. it is great for storing
+web pages you have visited and searching in the contents later.
+
+The engine supports faceted search, so you can search in a subset of documents of the collection.
+Futhermore, you can search in Meilisearch instances that require authentication by setting ``auth_token``.
+
+Here is a simple example to query a Meilisearch instance:
+
+.. code:: yaml
+
+ - name : meilisearch
+ engine : meilisearch
+ shortcut: mes
+ base_url : http://localhost:7700
+ index : my-index
+ enable_http: True
+
+
+Solr
+----
+
+Solr is a popular search engine based on Lucene, just like Elasticsearch.
+But instead of searching in indices, you can search in collections.
+
+This is an example configuration for searching in the collection ``my-collection`` and get
+the results in ascending order.
+
+.. code:: yaml
+
+ - name : solr
+ engine : solr
+ shortcut : slr
+ base_url : http://localhost:8983
+ collection : my-collection
+ sort : asc
+ enable_http : True
+
+
+Next steps
+==========
+
+The next step is to add support for various SQL databases.
+
+Acknowledgement
+===============
+
+This development was sponsored by `Search and Discovery Fund`_ of `NLnet Foundation`_ .
+
+.. _blog post about private engines: private-engines.html#private-engines
+.. _Elasticsearch: https://www.elastic.co/elasticsearch/
+.. _Meilisearch: https://www.meilisearch.com/
+.. _Solr: https://solr.apache.org/
+.. _Search and Discovery Fund: https://nlnet.nl/discovery
+.. _NLnet Foundation: https://nlnet.nl/
+
+
+| Happy hacking.
+| kvch // 2021.04.07 23:16
+
diff --git a/docs/blog/sql-engines.rst b/docs/blog/sql-engines.rst
new file mode 100644
index 0000000..c40e3e7
--- /dev/null
+++ b/docs/blog/sql-engines.rst
@@ -0,0 +1,117 @@
+=================
+Query SQL servers
+=================
+
+Now you can query SQL servers using searx. The following ones are supported:
+
+* `PostgreSQL`_
+* `MySQL`_
+* `SQLite`_
+
+All of the engines above are added to ``settings.yml`` just commented out, as you have to
+set the required attributes for the engines, e.g. ``database``. By default, the engines use
+``key-value`` template for displaying results. If you are not satisfied with the original result layout,
+you can use your owm template by placing the template under
+``searx/templates/{theme_name}/result_templates/{template_name}`` and setting
+``result_template`` attribute to ``{template_name}``.
+
+As mentioned in previous blog posts, if you do not wish to expose these engines on a
+public instance, you can still add them and limit the access by setting ``tokens``
+as described in the `blog post about private engines`_.
+
+Configure the engines
+=====================
+
+The configuration of the new database engines are similar. You must put a valid
+SELECT SQL query in ``query_str``. At the moment you can only bind at most
+one parameter in your query. By setting the attribute ``limit`` you can
+define how many results you want from the SQL server. Basically, it
+is the same as the LIMIT keyword in SQL.
+
+Please, do not include LIMIT or OFFSET in your SQL query as the engines
+rely on these keywords during paging. If you want to configure the number of returned results
+use the option ``limit``.
+
+PostgreSQL
+----------
+
+PostgreSQL is a powerful and robust open source database.
+
+Before configuring the PostgreSQL engine, you must install the dependency ``psychopg2``.
+
+You can find an example configuration below:
+
+.. code:: yaml
+
+ - name : postgresql
+ engine : postgresql
+ database : my_database
+ username : searx
+ password : password
+ query_str : 'SELECT * from my_table WHERE my_column = %(query)s'
+ shortcut : psql
+
+
+MySQL
+-----
+
+MySQL is said to be the most popular open source database.
+
+Before enabling MySQL engine, you must install the package ``mysql-connector-python``.
+
+The authentication plugin is configurable by setting ``auth_plugin`` in the attributes.
+By default it is set to ``caching_sha2_password``.
+
+This is an example configuration for quering a MySQL server:
+
+.. code:: yaml
+
+ - name : mysql
+ engine : mysql_server
+ database : my_database
+ username : searx
+ password : password
+ limit : 5
+ query_str : 'SELECT * from my_table WHERE my_column=%(query)s'
+ shortcut : mysql
+
+
+SQLite
+------
+
+SQLite is a small, fast and reliable SQL database engine. It does not require
+any extra dependency.
+
+You can read from your database ``my_database`` using this example configuration:
+
+.. code:: yaml
+
+ - name : sqlite
+ engine : sqlite
+ shortcut: sq
+ database : my_database
+ query_str : 'SELECT * FROM my_table WHERE my_column=:query'
+
+
+Next steps
+==========
+
+The next step is to add support for more data stores, e.g. Redis and MongoDB.
+
+Acknowledgement
+===============
+
+This development was sponsored by `Search and Discovery Fund`_ of `NLnet Foundation`_ .
+
+.. _PostgreSQL: https://www.postgresql.org/
+.. _MySQL: https://www.mysql.com/
+.. _SQLite: https://www.sqlite.org/index.html
+.. _blog post about private engines: private-engines.html#private-engines
+.. _Search and Discovery Fund: https://nlnet.nl/discovery
+.. _NLnet Foundation: https://nlnet.nl/
+
+
+| Happy hacking.
+| kvch // 2021.05.23 23:16
+
+
diff --git a/docs/build-templates/filtron.rst b/docs/build-templates/filtron.rst
new file mode 100644
index 0000000..79b2543
--- /dev/null
+++ b/docs/build-templates/filtron.rst
@@ -0,0 +1,52 @@
+.. START create user
+
+.. tabs::
+
+ .. group-tab:: bash
+
+ .. code-block:: sh
+
+ $ sudo -H useradd --shell /bin/bash --system \\
+ --home-dir \"$SERVICE_HOME\" \\
+ --comment \"Privacy-respecting metasearch engine\" $SERVICE_USER
+
+ $ sudo -H mkdir \"$SERVICE_HOME\"
+ $ sudo -H chown -R \"$SERVICE_GROUP:$SERVICE_GROUP\" \"$SERVICE_HOME\"
+
+.. END create user
+
+.. START install go
+
+.. tabs::
+
+ .. group-tab:: bash
+
+ .. code-block:: bash
+
+ $ cat > \"$GO_ENV\" <<EOF
+ export GOPATH=${SERVICE_HOME}/go-apps
+ export PATH=\$PATH:${SERVICE_HOME}/local/go/bin:\$GOPATH/bin
+ EOF
+ $ sudo -i -u \"${SERVICE_USER}\"
+ (${SERVICE_USER}) $ echo 'source $GO_ENV' >> ~/.profile
+ (${SERVICE_USER}) $ mkdir ${SERVICE_HOME}/local
+ (${SERVICE_USER}) $ wget --progress=bar -O \"${GO_TAR}\" \\
+ \"${GO_PKG_URL}\"
+ (${SERVICE_USER}) $ tar -C ${SERVICE_HOME}/local -xzf \"${GO_TAR}\"
+ (${SERVICE_USER}) $ which go
+ ${SERVICE_HOME}/local/go/bin/go
+
+.. END install go
+
+.. START install filtron
+
+.. tabs::
+
+ .. group-tab:: bash
+
+ .. code-block:: bash
+
+ $ sudo -i -u \"${SERVICE_USER}\"
+ (${SERVICE_USER}) $ go get -v -u github.com/asciimoo/filtron
+
+.. END install filtron
diff --git a/docs/build-templates/morty.rst b/docs/build-templates/morty.rst
new file mode 100644
index 0000000..2be24da
--- /dev/null
+++ b/docs/build-templates/morty.rst
@@ -0,0 +1,52 @@
+.. START create user
+
+.. tabs::
+
+ .. group-tab:: bash
+
+ .. code-block:: sh
+
+ $ sudo -H useradd --shell /bin/bash --system \\
+ --home-dir \"$SERVICE_HOME\" \\
+ --comment \"Privacy-respecting metasearch engine\" $SERVICE_USER
+
+ $ sudo -H mkdir \"$SERVICE_HOME\"
+ $ sudo -H chown -R \"$SERVICE_GROUP:$SERVICE_GROUP\" \"$SERVICE_HOME\"
+
+.. END create user
+
+.. START install go
+
+.. tabs::
+
+ .. group-tab:: bash
+
+ .. code-block:: bash
+
+ $ cat > \"$GO_ENV\" <<EOF
+ export GOPATH=${SERVICE_HOME}/go-apps
+ export PATH=\$PATH:${SERVICE_HOME}/local/go/bin:\$GOPATH/bin
+ EOF
+ $ sudo -i -u \"${SERVICE_USER}\"
+ (${SERVICE_USER}) $ echo 'source $GO_ENV' >> ~/.profile
+ (${SERVICE_USER}) $ mkdir ${SERVICE_HOME}/local
+ (${SERVICE_USER}) $ wget --progress=bar -O \"${GO_TAR}\" \\
+ \"${GO_PKG_URL}\"
+ (${SERVICE_USER}) $ tar -C ${SERVICE_HOME}/local -xzf \"${GO_TAR}\"
+ (${SERVICE_USER}) $ which go
+ ${SERVICE_HOME}/local/go/bin/go
+
+.. END install go
+
+.. START install morty
+
+.. tabs::
+
+ .. group-tab:: bash
+
+ .. code-block:: bash
+
+ $ sudo -i -u \"${SERVICE_USER}\"
+ (${SERVICE_USER}) $ go get -v -u github.com/asciimoo/morty
+
+.. END install morty
diff --git a/docs/build-templates/searx.rst b/docs/build-templates/searx.rst
new file mode 100644
index 0000000..e06bc2c
--- /dev/null
+++ b/docs/build-templates/searx.rst
@@ -0,0 +1,210 @@
+.. template evaluated by: ./utils/searx.sh docs
+.. hint: all dollar-names are variables, dollar sign itself is quoted by: \\$
+
+.. START distro-packages
+
+.. tabs::
+
+ .. group-tab:: Ubuntu / debian
+
+ .. code-block:: sh
+
+ $ sudo -H apt-get install -y \\
+${debian}
+
+ .. group-tab:: Arch Linux
+
+ .. code-block:: sh
+
+ $ sudo -H pacman -S --noconfirm \\
+${arch}
+
+ .. group-tab:: Fedora / RHEL
+
+ .. code-block:: sh
+
+ $ sudo -H dnf install -y \\
+${fedora}
+
+.. END distro-packages
+
+.. START build-packages
+
+.. tabs::
+
+ .. group-tab:: Ubuntu / debian
+
+ .. code-block:: sh
+
+ $ sudo -H apt-get install -y \\
+${debian_build}
+
+ .. group-tab:: Arch Linux
+
+ .. code-block:: sh
+
+ $ sudo -H pacman -S --noconfirm \\
+${arch_build}
+
+ .. group-tab:: Fedora / RHEL
+
+ .. code-block:: sh
+
+ $ sudo -H dnf install -y \\
+${fedora_build}
+
+.. END build-packages
+
+.. START create user
+
+.. tabs::
+
+ .. group-tab:: bash
+
+ .. code-block:: sh
+
+ $ sudo -H useradd --shell /bin/bash --system \\
+ --home-dir \"$SERVICE_HOME\" \\
+ --comment 'Privacy-respecting metasearch engine' $SERVICE_USER
+
+ $ sudo -H mkdir \"$SERVICE_HOME\"
+ $ sudo -H chown -R \"$SERVICE_GROUP:$SERVICE_GROUP\" \"$SERVICE_HOME\"
+
+.. END create user
+
+.. START clone searx
+
+.. tabs::
+
+ .. group-tab:: bash
+
+ .. code-block:: sh
+
+ $ sudo -H -u ${SERVICE_USER} -i
+ (${SERVICE_USER})$ git clone \"https://github.com/searx/searx.git\" \"$SEARX_SRC\"
+
+.. END clone searx
+
+.. START create virtualenv
+
+.. tabs::
+
+ .. group-tab:: bash
+
+ .. code-block:: sh
+
+ (${SERVICE_USER})$ python3 -m venv \"${SEARX_PYENV}\"
+ (${SERVICE_USER})$ echo \". ${SEARX_PYENV}/bin/activate\" >> \"$SERVICE_HOME/.profile\"
+
+.. END create virtualenv
+
+.. START manage.sh update_packages
+
+.. tabs::
+
+ .. group-tab:: bash
+
+ .. code-block:: sh
+
+ $ sudo -H -u ${SERVICE_USER} -i
+
+ (${SERVICE_USER})$ command -v python && python --version
+ $SEARX_PYENV/bin/python
+ Python 3.8.1
+
+ # update pip's boilerplate ..
+ pip install -U pip
+ pip install -U setuptools
+ pip install -U wheel
+ pip install -U pyyaml
+
+ # jump to searx's working tree and install searx into virtualenv
+ (${SERVICE_USER})$ cd \"$SEARX_SRC\"
+ (${SERVICE_USER})$ pip install -e .
+
+
+.. END manage.sh update_packages
+
+.. START searx config
+
+.. tabs::
+
+ .. group-tab:: Use default settings
+
+ .. code-block:: sh
+
+ $ sudo -H mkdir -p \"$(dirname ${SEARX_SETTINGS_PATH})\"
+ $ sudo -H cp \"$SEARX_SRC/utils/templates/etc/searx/use_default_settings.yml\" \\
+ \"${SEARX_SETTINGS_PATH}\"
+
+ .. group-tab:: searx/settings.yml
+
+ .. code-block:: sh
+
+ $ sudo -H mkdir -p \"$(dirname ${SEARX_SETTINGS_PATH})\"
+ $ sudo -H cp \"$SEARX_SRC/searx/settings.yml\" \\
+ \"${SEARX_SETTINGS_PATH}\"
+
+.. tabs::
+
+ .. group-tab:: minimal setup
+
+ .. code-block:: sh
+
+ $ sudo -H sed -i -e \"s/ultrasecretkey/\$(openssl rand -hex 16)/g\" \"$SEARX_SETTINGS_PATH\"
+ $ sudo -H sed -i -e \"s/{instance_name}/searx@\$(uname -n)/g\" \"$SEARX_SETTINGS_PATH\"
+
+.. END searx config
+
+.. START check searx installation
+
+.. tabs::
+
+ .. group-tab:: bash
+
+ .. code-block:: sh
+
+ # enable debug ..
+ $ sudo -H sed -i -e \"s/debug : False/debug : True/g\" \"$SEARX_SETTINGS_PATH\"
+
+ # start webapp
+ $ sudo -H -u ${SERVICE_USER} -i
+ (${SERVICE_USER})$ cd ${SEARX_SRC}
+ (${SERVICE_USER})$ export SEARX_SETTINGS_PATH=\"${SEARX_SETTINGS_PATH}\"
+ (${SERVICE_USER})$ python searx/webapp.py
+
+ # disable debug
+ $ sudo -H sed -i -e \"s/debug : True/debug : False/g\" \"$SEARX_SETTINGS_PATH\"
+
+Open WEB browser and visit http://$SEARX_INTERNAL_URL . If you are inside a
+container or in a script, test with curl:
+
+.. tabs::
+
+ .. group-tab:: WEB browser
+
+ .. code-block:: sh
+
+ $ xdg-open http://$SEARX_INTERNAL_URL
+
+ .. group-tab:: curl
+
+ .. code-block:: none
+
+ $ curl --location --verbose --head --insecure $SEARX_INTERNAL_URL
+
+ * Trying 127.0.0.1:8888...
+ * TCP_NODELAY set
+ * Connected to 127.0.0.1 (127.0.0.1) port 8888 (#0)
+ > HEAD / HTTP/1.1
+ > Host: 127.0.0.1:8888
+ > User-Agent: curl/7.68.0
+ > Accept: */*
+ >
+ * Mark bundle as not supporting multiuse
+ * HTTP 1.0, assume close after body
+ < HTTP/1.0 200 OK
+ HTTP/1.0 200 OK
+ ...
+
+.. END check searx installation
diff --git a/docs/conf.py b/docs/conf.py
index af255e2..6efd762 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -1,17 +1,16 @@
# -*- coding: utf-8 -*-
+# SPDX-License-Identifier: AGPL-3.0-or-later
import sys, os
-from searx.version import VERSION_STRING
from pallets_sphinx_themes import ProjectLink
-GIT_URL = os.environ.get("GIT_URL", "https://github.com/asciimoo/searx")
-SEARX_URL = os.environ.get("SEARX_URL", "https://searx.me")
-DOCS_URL = os.environ.get("DOCS_URL", "https://asciimoo.github.io/searx/")
+from searx import brand
+from searx.version import VERSION_STRING
# Project --------------------------------------------------------------
project = u'searx'
-copyright = u'2015-2019, Adam Tauber, Noémi Ványi'
+copyright = u'2015-2021, Adam Tauber, Noémi Ványi'
author = u'Adam Tauber'
release, version = VERSION_STRING, VERSION_STRING
highlight_language = 'none'
@@ -22,35 +21,43 @@ master_doc = "index"
source_suffix = '.rst'
numfig = True
-from searx import webapp
+exclude_patterns = ['build-templates/*.rst']
+
+import searx.search
+import searx.engines
+import searx.plugins
+searx.search.initialize()
jinja_contexts = {
- 'webapp': dict(**webapp.__dict__)
+ 'searx': {
+ 'engines': searx.engines.engines,
+ 'plugins': searx.plugins.plugins
+ },
}
# usage:: lorem :patch:`f373169` ipsum
extlinks = {}
# upstream links
-extlinks['wiki'] = ('https://github.com/asciimoo/searx/wiki/%s', ' ')
-extlinks['pull'] = ('https://github.com/asciimoo/searx/pull/%s', 'PR ')
+extlinks['wiki'] = ('https://github.com/searx/searx/wiki/%s', '%s')
+extlinks['pull'] = ('https://github.com/searx/searx/pull/%s', 'PR %s')
# links to custom brand
-extlinks['origin'] = (GIT_URL + '/blob/master/%s', 'git://')
-extlinks['patch'] = (GIT_URL + '/commit/%s', '#')
-extlinks['search'] = (SEARX_URL + '/%s', '#')
-extlinks['docs'] = (DOCS_URL + '/%s', 'docs: ')
-extlinks['pypi'] = ('https://pypi.org/project/%s', 'PyPi: ')
-extlinks['man'] = ('https://manpages.debian.org/jump?q=%s', '')
+extlinks['origin'] = (brand.GIT_URL + '/blob/' + brand.GIT_BRANCH + '/%s', 'Origin: %s')
+extlinks['patch'] = (brand.GIT_URL + '/commit/%s', 'path %s')
+extlinks['search'] = (brand.SEARX_URL + '/%s', 'URL: %s')
+extlinks['docs'] = (brand.DOCS_URL + '/%s', 'docs: %s')
+extlinks['pypi'] = ('https://pypi.org/project/%s', 'PyPi: %s')
+extlinks['man'] = ('https://manpages.debian.org/jump?q=%s', 'man: %s')
#extlinks['role'] = (
# 'https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-%s', '')
extlinks['duref'] = (
- 'http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#%s', '')
+ 'https://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#%s', '%s')
extlinks['durole'] = (
- 'http://docutils.sourceforge.net/docs/ref/rst/roles.html#%s', '')
+ 'https://docutils.sourceforge.net/docs/ref/rst/roles.html#%s', '%s')
extlinks['dudir'] = (
- 'http://docutils.sourceforge.net/docs/ref/rst/directives.html#%s', '')
+ 'https://docutils.sourceforge.net/docs/ref/rst/directives.html#%s', '%s')
extlinks['ctan'] = (
- 'https://ctan.org/pkg/%s', 'CTAN: ')
+ 'https://ctan.org/pkg/%s', 'CTAN: %s')
extensions = [
'sphinx.ext.imgmath',
@@ -60,7 +67,9 @@ extensions = [
"sphinx.ext.intersphinx",
"pallets_sphinx_themes",
"sphinx_issues", # https://github.com/sloria/sphinx-issues/blob/master/README.rst
- "sphinxcontrib.jinja", # https://github.com/tardyp/sphinx-jinja
+ "sphinx_jinja", # https://github.com/tardyp/sphinx-jinja
+ "sphinxcontrib.programoutput", # https://github.com/NextThought/sphinxcontrib-programoutput
+ 'linuxdoc.kernel_include', # Implementation of the 'kernel-include' reST-directive.
'linuxdoc.rstFlatTable', # Implementation of the 'flat-table' reST-directive.
'linuxdoc.kfigure', # Sphinx extension which implements scalable image handling.
"sphinx_tabs.tabs", # https://github.com/djungelorm/sphinx-tabs
@@ -75,11 +84,12 @@ intersphinx_mapping = {
"sphinx" : ("https://www.sphinx-doc.org/en/master/", None),
}
-issues_github_path = "asciimoo/searx"
+issues_github_path = "searx/searx"
# HTML -----------------------------------------------------------------
sys.path.append(os.path.abspath('_themes'))
+sys.path.insert(0, os.path.abspath("../utils/"))
html_theme_path = ['_themes']
html_theme = "searx"
@@ -90,14 +100,21 @@ imgmath_font_size = 14
# sphinx.ext.imgmath setup END
html_theme_options = {"index_sidebar_logo": True}
-html_context = {
- "project_links": [
- ProjectLink("Source", GIT_URL),
- ProjectLink("Wiki", "https://github.com/asciimoo/searx/wiki"),
- ProjectLink("Public instances", "https://asciimoo.github.io/searx/user/public_instances.html"),
- ProjectLink("Twitter", "https://twitter.com/Searx_engine"),
- ]
-}
+html_context = {"project_links": [] }
+html_context["project_links"].append(ProjectLink("Blog", "blog/index.html"))
+if brand.GIT_URL:
+ html_context["project_links"].append(ProjectLink("Source", brand.GIT_URL))
+if brand.WIKI_URL:
+ html_context["project_links"].append(ProjectLink("Wiki", brand.WIKI_URL))
+if brand.PUBLIC_INSTANCES:
+ html_context["project_links"].append(ProjectLink("Public instances", brand.PUBLIC_INSTANCES))
+if brand.TWITTER_URL:
+ html_context["project_links"].append(ProjectLink("Twitter", brand.TWITTER_URL))
+if brand.ISSUE_URL:
+ html_context["project_links"].append(ProjectLink("Issue Tracker", brand.ISSUE_URL))
+if brand.CONTACT_URL:
+ html_context["project_links"].append(ProjectLink("Contact", brand.CONTACT_URL))
+
html_sidebars = {
"**": ["project.html", "relations.html", "searchbox.html"],
}
diff --git a/docs/dev/contribution_guide.rst b/docs/dev/contribution_guide.rst
index 459dfb4..ed1c223 100644
--- a/docs/dev/contribution_guide.rst
+++ b/docs/dev/contribution_guide.rst
@@ -4,6 +4,11 @@
How to contribute
=================
+.. contents:: Contents
+ :depth: 2
+ :local:
+ :backlinks: entry
+
Prime directives: Privacy, Hackability
======================================
@@ -82,7 +87,7 @@ In order to submit a patch, please follow the steps below:
- Add yourself to the :origin:`AUTHORS.rst` file.
-- Choose meaning full commit messages, read `Conventional Commits`_
+- Choose meaningful commit messages, read `Conventional Commits`_
.. code::
@@ -112,8 +117,8 @@ Translation currently takes place on :ref:`transifex <translation>`.
Documentation
=============
-.. _Sphinx: http://www.sphinx-doc.org
-.. _reST: http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html
+.. _Sphinx: https://www.sphinx-doc.org
+.. _reST: https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html
.. sidebar:: The reST sources
@@ -127,54 +132,58 @@ Here is an example which makes a complete rebuild:
.. code:: sh
- $ make docs-clean docs
+ $ make docs.clean docs.html
...
The HTML pages are in dist/docs.
-.. _make docs-live:
+.. _make docs.live:
live build
----------
-.. sidebar:: docs-clean
+.. _sphinx-autobuild:
+ https://github.com/executablebooks/sphinx-autobuild/blob/master/README.md
+
+.. sidebar:: docs.clean
It is recommended to assert a complete rebuild before deploying (use
- ``docs-clean``).
+ ``docs.clean``).
Live build is like WYSIWYG. If you want to edit the documentation, its
-recommended to use. The Makefile target ``docs-live`` builds the docs, opens
+recommended to use. The Makefile target ``docs.live`` builds the docs, opens
URL in your favorite browser and rebuilds every time a reST file has been
changed.
.. code:: sh
- $ make docs-live
+ $ make docs.live
...
The HTML pages are in dist/docs.
- ... Serving on http://0.0.0.0:8080
+ ... Serving on http://0.0.0.0:8000
... Start watching changes
+Live builds are implemented by sphinx-autobuild_. Use environment
+``$(SPHINXOPTS)`` to pass arguments to the sphinx-autobuild_ command. Except
+option ``--host`` (which is always set to ``0.0.0.0``) you can pass any
+argument. E.g to find and use a free port, use:
+
+.. code:: sh
+
+ $ SPHINXOPTS="--port 0" make docs.live
+ ...
+ ... Serving on http://0.0.0.0:50593
+ ...
+
.. _deploy on github.io:
deploy on github.io
-------------------
-To deploy documentation at :docs:`github.io <.>` use Makefile target
-:ref:`make gh-pages`, which will builds the documentation, clones searx into a sub
-folder ``gh-pages``, cleans it, copies the doc build into and runs all the
-needed git add, commit and push:
+To deploy documentation at :docs:`github.io <.>` use Makefile target :ref:`make
+docs.gh-pages`, which builds the documentation and runs all the needed git add,
+commit and push:
.. code:: sh
- $ make docs-clean gh-pages
- ...
- SPHINX docs --> file://<...>/dist/docs
- The HTML pages are in dist/docs.
- ...
- Cloning into 'gh-pages' ...
- ...
- cd gh-pages; git checkout gh-pages >/dev/null
- Switched to a new branch 'gh-pages'
- ...
- doc available at --> https://asciimoo.github.io/searx
+ $ make docs.clean docs.gh-pages
diff --git a/docs/dev/engine_overview.rst b/docs/dev/engine_overview.rst
index 449c837..bbd1413 100644
--- a/docs/dev/engine_overview.rst
+++ b/docs/dev/engine_overview.rst
@@ -18,6 +18,9 @@ engines. Adapters are stored under the folder :origin:`searx/engines`.
:depth: 3
:backlinks: entry
+
+.. _general engine configuration:
+
general engine configuration
============================
@@ -34,30 +37,36 @@ settings. However, the standard way is the following:
engine file
-----------
-======================= =========== ===========================================
+======================= =========== ========================================================
argument type information
-======================= =========== ===========================================
+======================= =========== ========================================================
categories list pages, in which the engine is working
paging boolean support multible pages
-language_support boolean support language choosing
time_range_support boolean support search time range
-offline boolean engine runs offline
-======================= =========== ===========================================
+engine_type str ``online`` by default, other possibles values are
+ ``offline``, ``online_dictionary``, ``online_currency``
+======================= =========== ========================================================
.. _engine settings:
settings.yml
------------
-======================= =========== ===========================================
+======================= =========== =============================================
argument type information
-======================= =========== ===========================================
+======================= =========== =============================================
name string name of search-engine
engine string name of searx-engine
(filename without ``.py``)
+enable_http bool enable HTTP
+ (by default only HTTPS is enabled).
shortcut string shortcut of search-engine
timeout string specific timeout for search-engine
-======================= =========== ===========================================
+display_error_messages boolean display error messages on the web UI
+proxies dict set proxies for a specific engine
+ (e.g. ``proxies : {http: socks5://proxy:port,
+ https: socks5://proxy:port}``)
+======================= =========== =============================================
overrides
@@ -89,7 +98,6 @@ example code
# engine dependent config
categories = ['general']
paging = True
- language_support = True
making a request
@@ -104,21 +112,48 @@ passed arguments
These arguments can be used to construct the search query. Furthermore,
parameters with default value can be redefined for special purposes.
+If the ``engine_type`` is ``online```:
+
+====================== ============== ========================================================================
+argument type default-value, information
+====================== ============== ========================================================================
+url str ``''``
+method str ``'GET'``
+headers set ``{}``
+data set ``{}``
+cookies set ``{}``
+verify bool ``True``
+headers.User-Agent str a random User-Agent
+category str current category, like ``'general'``
+safesearch int ``0``, between ``0`` and ``2`` (normal, moderate, strict)
+time_range Optional[str] ``None``, can be ``day``, ``week``, ``month``, ``year``
+pageno int current pagenumber
+language str specific language code like ``'en_US'``, or ``'all'`` if unspecified
+====================== ============== ========================================================================
+
+
+If the ``engine_type`` is ``online_dictionary```, in addition to the ``online`` arguments:
+
====================== ============ ========================================================================
argument type default-value, information
====================== ============ ========================================================================
-url string ``''``
-method string ``'GET'``
-headers set ``{}``
-data set ``{}``
-cookies set ``{}``
-verify boolean ``True``
-headers.User-Agent string a random User-Agent
-category string current category, like ``'general'``
-started datetime current date-time
-pageno int current pagenumber
-language string specific language code like ``'en_US'``, or ``'all'`` if unspecified
+from_lang str specific language code like ``'en_US'``
+to_lang str specific language code like ``'en_US'``
+query str the text query without the languages
+====================== ============ ========================================================================
+
+If the ``engine_type`` is ``online_currency```, in addition to the ``online`` arguments:
+
====================== ============ ========================================================================
+argument type default-value, information
+====================== ============ ========================================================================
+amount float the amount to convert
+from str ISO 4217 code
+to str ISO 4217 code
+from_name str currency name
+to_name str currency name
+====================== ============ ========================================================================
+
parsed arguments
----------------
@@ -127,16 +162,20 @@ The function ``def request(query, params):`` always returns the ``params``
variable. Inside searx, the following paramters can be used to specify a search
request:
-============ =========== =========================================================
-argument type information
-============ =========== =========================================================
-url string requested url
-method string HTTP request method
-headers set HTTP header information
-data set HTTP data information (parsed if ``method != 'GET'``)
-cookies set HTTP cookies
-verify boolean Performing SSL-Validity check
-============ =========== =========================================================
+=================== =========== ==========================================================================
+argument type information
+=================== =========== ==========================================================================
+url str requested url
+method str HTTP request method
+headers set HTTP header information
+data set HTTP data information
+cookies set HTTP cookies
+verify bool Performing SSL-Validity check
+follow_redirects bool Follow redirects
+max_redirects int maximum redirects, hard limit
+soft_max_redirects int maximum redirects, soft limit. Record an error but don't stop the engine
+raise_for_httperror bool True by default: raise an exception if the HTTP code of response is >= 300
+=================== =========== ==========================================================================
example code
@@ -255,7 +294,7 @@ latitude latitude of result (in decimal format)
longitude longitude of result (in decimal format)
boundingbox boundingbox of result (array of 4. values
``[lat-min, lat-max, lon-min, lon-max]``)
-geojson geojson of result (http://geojson.org)
+geojson geojson of result (https://geojson.org/)
osm.type type of osm-object (if OSM-Result)
osm.id id of osm-object (if OSM-Result)
address.name name of object
diff --git a/docs/dev/index.rst b/docs/dev/index.rst
index cb913a8..ba0a25a 100644
--- a/docs/dev/index.rst
+++ b/docs/dev/index.rst
@@ -3,7 +3,8 @@ Developer documentation
=======================
.. toctree::
- :maxdepth: 1
+ :maxdepth: 2
+ :caption: Contents
quickstart
contribution_guide
diff --git a/docs/dev/makefile.rst b/docs/dev/makefile.rst
index f595700..870b5d4 100644
--- a/docs/dev/makefile.rst
+++ b/docs/dev/makefile.rst
@@ -1,65 +1,33 @@
.. _makefile:
-================
-Makefile Targets
-================
+========
+Makefile
+========
.. _gnu-make: https://www.gnu.org/software/make/manual/make.html#Introduction
.. sidebar:: build environment
- Before looking deeper at the targets, first read about :ref:`makefile setup`
- and :ref:`make pyenv`.
+ Before looking deeper at the targets, first read about :ref:`make
+ install`.
-With the aim to simplify development cycles, started with :pull:`1756` a
-``Makefile`` based boilerplate was added. If you are not familiar with
-Makefiles, we recommend to read gnu-make_ introduction.
+ To install system requirements follow :ref:`buildhosts`.
+
+All relevant build tasks are implemented in :origin:`manage.sh` and for CI or
+IDE integration a small ``Makefile`` wrapper is available. If you are not
+familiar with Makefiles, we recommend to read gnu-make_ introduction.
The usage is simple, just type ``make {target-name}`` to *build* a target.
-Calling the ``help`` target gives a first overview::
-
- $ make help
- test - run developer tests
- docs - build documentation
- docs-live - autobuild HTML documentation while editing
- run - run developer instance
- install - developer install (./local)
- uninstall - uninstall (./local)
- gh-pages - build docs & deploy on gh-pages branch
- clean - drop builds and environments
- ...
+Calling the ``help`` target gives a first overview (``make help``):
+
+.. program-output:: bash -c "cd ..; make --no-print-directory help"
.. contents:: Contents
:depth: 2
:local:
:backlinks: entry
-
-.. _makefile setup:
-
-Setup
-=====
-
-.. _git stash: https://git-scm.com/docs/git-stash
-
-The main setup is done in the :origin:`Makefile`::
-
- export GIT_URL=https://github.com/asciimoo/searx
- export SEARX_URL=https://searx.me
- export DOCS_URL=https://asciimoo.github.io/searx
-
-.. sidebar:: fork & upstream
-
- Commit changes in your (local) branch, fork or whatever, but do not push them
- upstream / `git stash`_ is your friend.
-
-:GIT_URL: Changes this, to point to your searx fork.
-
-:SEARX_URL: Changes this, to point to your searx instance.
-
-:DOCS_URL: If you host your own (branded) documentation, change this URL.
-
-.. _make pyenv:
+.. _make install:
Python environment
==================
@@ -68,31 +36,42 @@ Python environment
``source ./local/py3/bin/activate``
-With Makefile we do no longer need to build up the virualenv manually (as
-described in the :ref:`devquickstart` guide). Jump into your git working tree
-and release a ``make pyenv``:
-
-.. code:: sh
+We do no longer need to build up the virtualenv manually. Jump into your git
+working tree and release a ``make install`` to get a virtualenv with a
+*developer install* of searx (:origin:`setup.py`). ::
$ cd ~/searx-clone
- $ make pyenv
- PYENV usage: source ./local/py3/bin/activate
+ $ make install
+ PYENV [virtualenv] installing ./requirements*.txt into local/py3
...
+ PYENV OK
+ PYENV [install] pip install -e 'searx[test]'
+ ...
+ Successfully installed argparse-1.4.0 searx
+ BUILDENV INFO:searx:load the default settings from ./searx/settings.yml
+ BUILDENV INFO:searx:Initialisation done
+ BUILDENV build utils/brand.env
-With target ``pyenv`` a development environment (aka virtualenv) was build up in
-``./local/py3/``. To make a *developer install* of searx (:origin:`setup.py`)
-into this environment, use make target ``install``:
-
-.. code:: sh
+If you release ``make install`` multiple times the installation will only
+rebuild if the sha256 sum of the *requirement files* fails. With other words:
+the check fails if you edit the requirements listed in
+:origin:`requirements-dev.txt` and :origin:`requirements.txt`). ::
$ make install
- PYENV usage: source ./local/py3/bin/activate
- PYENV using virtualenv from ./local/py3
- PYENV install .
-
-You have never to think about intermediate targets like ``pyenv`` or
-``install``, the ``Makefile`` chains them as requisites. Just run your main
-target.
+ PYENV OK
+ PYENV [virtualenv] requirements.sha256 failed
+ [virtualenv] - 6cea6eb6def9e14a18bf32f8a3e... ./requirements-dev.txt
+ [virtualenv] - 471efef6c73558e391c3adb35f4... ./requirements.txt
+ ...
+ PYENV [virtualenv] installing ./requirements*.txt into local/py3
+ ...
+ PYENV OK
+ PYENV [install] pip install -e 'searx[test]'
+ ...
+ Successfully installed argparse-1.4.0 searx
+ BUILDENV INFO:searx:load the default settings from ./searx/settings.yml
+ BUILDENV INFO:searx:Initialisation done
+ BUILDENV build utils/brand.env
.. sidebar:: drop environment
@@ -100,10 +79,7 @@ target.
<make clean>` first.
If you think, something goes wrong with your ./local environment or you change
-the :origin:`setup.py` file (or the requirements listed in
-:origin:`requirements-dev.txt` and :origin:`requirements.txt`), you have to call
-:ref:`make clean`.
-
+the :origin:`setup.py` file, you have to call :ref:`make clean`.
.. _make run:
@@ -113,88 +89,113 @@ the :origin:`setup.py` file (or the requirements listed in
To get up a running a developer instance simply call ``make run``. This enables
*debug* option in :origin:`searx/settings.yml`, starts a ``./searx/webapp.py``
instance, disables *debug* option again and opens the URL in your favorite WEB
-browser (:man:`xdg-open`):
+browser (:man:`xdg-open`)::
-.. code:: sh
-
- $ make run
- PYENV usage: source ./local/py3/bin/activate
- PYENV install .
- ./local/py3/bin/python ./searx/webapp.py
- ...
- INFO:werkzeug: * Running on http://127.0.0.1:8888/ (Press CTRL+C to quit)
- ...
+ $ make run
+ PYENV OK
+ SEARX_DEBUG=1 ./manage.sh pyenv.cmd python ./searx/webapp.py
+ ...
+ INFO:werkzeug: * Running on http://127.0.0.1:8888/ (Press CTRL+C to quit)
.. _make clean:
``make clean``
==============
-Drop all intermediate files, all builds, but keep sources untouched. Includes
-target ``pyclean`` which drops ./local environment. Before calling ``make
-clean`` stop all processes using :ref:`make pyenv`.
-
-.. code:: sh
+Drop all intermediate files, all builds, but keep sources untouched. Before
+calling ``make clean`` stop all processes using :ref:`make install`. ::
$ make clean
- CLEAN pyclean
- CLEAN clean
+ CLEAN pyenv
+ PYENV [virtualenv] drop ./local/py3
+ CLEAN docs -- ./build/docs ./dist/docs
+ CLEAN locally installed npm dependencies
+ CLEAN test stuff
+ CLEAN common files
.. _make docs:
-``make docs docs-live docs-clean``
-==================================
+``make docs docs.autobuild docs.clean``
+=======================================
-We describe the usage of the ``doc*`` targets in the :ref:`How to contribute /
+We describe the usage of the ``doc.*`` targets in the :ref:`How to contribute /
Documentation <contrib docs>` section. If you want to edit the documentation
-read our :ref:`make docs-live` section. If you are working in your own brand,
-adjust your :ref:`Makefile setup <makefile setup>`.
-
+read our :ref:`make docs.live` section. If you are working in your own brand,
+adjust your :ref:`settings global`.
-.. _make gh-pages:
+.. _make docs.gh-pages:
-``make gh-pages``
-=================
+``make docs.gh-pages``
+======================
-To deploy on github.io first adjust your :ref:`Makefile setup <makefile
-setup>`. For any further read :ref:`deploy on github.io`.
+To deploy on github.io first adjust your :ref:`settings global`. For any
+further read :ref:`deploy on github.io`.
.. _make test:
``make test``
=============
-Runs a series of tests: ``test.pep8``, ``test.unit``, ``test.robot`` and does
-additional :ref:`pylint checks <make pylint>`. You can run tests selective,
-e.g.:
+Runs a series of tests: :ref:`make test.pylint`, ``test.pep8``, ``test.unit``
+and ``test.robot``. You can run tests selective, e.g.::
-.. code:: sh
+ $ make test.pep8 test.unit test.sh
+ TEST test.pep8 OK
+ ...
+ TEST test.unit OK
+ ...
+ TEST test.sh OK
+
+.. _make test.sh:
- $ make test.pep8 test.unit
- . ./local/py3/bin/activate; ./manage.sh pep8_check
- [!] Running pep8 check
- . ./local/py3/bin/activate; ./manage.sh unit_tests
- [!] Running unit tests
+``make test.sh``
+================
+
+:ref:`sh lint` / if you have changed some bash scripting run this test before
+commit.
-.. _make pylint:
+.. _make test.pylint:
-``make pylint``
-===============
+``make test.pylint``
+====================
.. _Pylint: https://www.pylint.org/
-Before commiting its recommend to do some (more) linting. Pylint_ is known as
-one of the best source-code, bug and quality checker for the Python programming
-language. Pylint_ is not yet a quality gate within our searx project (like
-:ref:`test.pep8 <make test>` it is), but Pylint_ can help to improve code
-quality anyway. The pylint profile we use at searx project is found in
-project's root folder :origin:`.pylintrc`.
+Pylint_ is known as one of the best source-code, bug and quality checker for the
+Python programming language. The pylint profile we use at searx project is
+found in project's root folder :origin:`.pylintrc`.
+
+.. _make search.checker:
-Code quality is a ongoing process. Don't try to fix all messages from Pylint,
-run Pylint and check if your changed lines are bringing up new messages. If so,
-fix it. By this, code quality gets incremental better and if there comes the
-day, the linting is balanced out, we might decide to add Pylint as a quality
-gate.
+``search.checker.{engine name}``
+================================
+
+To check all engines::
+
+ make search.checker
+
+To check a engine with whitespace in the name like *google news* replace space
+by underline::
+
+ make search.checker.google_news
+
+To see HTTP requests and more use SEARX_DEBUG::
+
+ make SEARX_DEBUG=1 search.checker.google_news
+
+.. _3xx: https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_redirection
+
+To filter out HTTP redirects (3xx_)::
+
+ make SEARX_DEBUG=1 search.checker.google_news | grep -A1 "HTTP/1.1\" 3[0-9][0-9]"
+ ...
+ Engine google news Checking
+ https://news.google.com:443 "GET /search?q=life&hl=en&lr=lang_en&ie=utf8&oe=utf8&ceid=US%3Aen&gl=US HTTP/1.1" 302 0
+ https://news.google.com:443 "GET /search?q=life&hl=en-US&lr=lang_en&ie=utf8&oe=utf8&ceid=US:en&gl=US HTTP/1.1" 200 None
+ --
+ https://news.google.com:443 "GET /search?q=computer&hl=en&lr=lang_en&ie=utf8&oe=utf8&ceid=US%3Aen&gl=US HTTP/1.1" 302 0
+ https://news.google.com:443 "GET /search?q=computer&hl=en-US&lr=lang_en&ie=utf8&oe=utf8&ceid=US:en&gl=US HTTP/1.1" 200 None
+ --
``make pybuild``
@@ -203,9 +204,7 @@ gate.
.. _PyPi: https://pypi.org/
.. _twine: https://twine.readthedocs.io/en/latest/
-Build Python packages in ``./dist/py``.
-
-.. code:: sh
+Build Python packages in ``./dist/py``::
$ make pybuild
...
@@ -213,9 +212,11 @@ Build Python packages in ``./dist/py``.
running sdist
running egg_info
...
- $ ls ./dist/py/
- searx-0.15.0-py3-none-any.whl searx-0.15.0.tar.gz
+ running bdist_wheel
+
+ $ ls ./dist
+ searx-0.18.0-py3-none-any.whl searx-0.18.0.tar.gz
-To upload packages to PyPi_, there is also a ``upload-pypi`` target. It needs
-twine_ to be installed. Since you are not the owner of :pypi:`searx` you will
-never need the latter.
+To upload packages to PyPi_, there is also a ``pypi.upload`` target (to test use
+``pypi.upload.test``). Since you are not the owner of :pypi:`searx` you will
+never need to upload.
diff --git a/docs/dev/plugins.rst b/docs/dev/plugins.rst
index 2bf44f1..16262ea 100644
--- a/docs/dev/plugins.rst
+++ b/docs/dev/plugins.rst
@@ -30,6 +30,21 @@ Example plugin
ctx['search'].suggestions.add('example')
return True
+External plugins
+================
+
+External plugins are standard python modules implementing all the requirements of the standard plugins.
+Plugins can be enabled by adding them to :ref:`settings.yml`'s ``plugins`` section.
+Example external plugin can be found `here <https://github.com/asciimoo/searx_external_plugin_example>`_.
+
+Register your plugin
+====================
+
+To enable your plugin register your plugin in
+searx > plugin > __init__.py.
+And at the bottom of the file add your plugin like.
+``plugins.register(name_of_python_file)``
+
Plugin entry points
===================
diff --git a/docs/dev/quickstart.rst b/docs/dev/quickstart.rst
index e40772b..bb9f4d6 100644
--- a/docs/dev/quickstart.rst
+++ b/docs/dev/quickstart.rst
@@ -4,129 +4,52 @@
Development Quickstart
======================
-.. sidebar:: :ref:`makefile`
+.. _npm: https://www.npmjs.com/
- For additional developer purpose there are :ref:`makefile`.
-
-This quickstart guide gets your environment set up with searx. Furthermore, it
-gives a short introduction to the ``manage.sh`` script.
-
-How to setup your development environment
-=========================================
-
-.. sidebar:: :ref:`make pyenv <make pyenv>`
-
- Alternatively use the :ref:`make pyenv`.
-
-First, clone the source code of searx to the desired folder. In this case the
-source is cloned to ``~/myprojects/searx``. Then create and activate the
-searx-ve virtualenv and install the required packages using ``manage.sh``.
-
-.. code:: sh
-
- cd ~/myprojects
- git clone https://github.com/asciimoo/searx.git
- cd searx
- virtualenv searx-ve
- . ./searx-ve/bin/activate
- ./manage.sh update_dev_packages
-
-
-How to run tests
-================
-
-.. sidebar:: :ref:`make test.unit <make test>`
-
- Alternatively use the ``test.pep8``, ``test.unit``, ``test.robot`` targets.
-
-Tests can be run using the ``manage.sh`` script. Following tests and checks are
-available:
-
-- Unit tests
-- Selenium tests
-- PEP8 validation
-- Unit test coverage check
-
-For example unit tests are run with the command below:
-
-.. code:: sh
-
- ./manage.sh unit_tests
-
-For further test options, please consult the help of the ``manage.sh`` script or
-read :ref:`make test`.
-
-
-How to compile styles and javascript
-====================================
-
-.. _less: http://lesscss.org/
-.. _NodeJS: https://nodejs.org
-
-How to build styles
--------------------
-
-Less_ is required to build the styles of searx. Less_ can be installed using
-either NodeJS_ or Apt.
+Searx loves developers, just clone and start hacking. All the rest is done for
+you simply by using :ref:`make <makefile>`.
.. code:: sh
- sudo -H apt-get install nodejs
- sudo -H npm install -g less
+ git clone https://github.com/searx/searx.git
-OR
+Here is how a minimal workflow looks like:
-.. code:: sh
+1. *start* hacking
+2. *run* your code: :ref:`make run`
+3. *test* your code: :ref:`make test`
- sudo -H apt-get install node-less
+If you think at some point something fails, go back to *start*. Otherwise,
+choose a meaningful commit message and we are happy to receive your pull
+request. To not end in *wild west* we have some directives, please pay attention
+to our ":ref:`how to contribute`" guideline.
-After satisfying the requirements styles can be build using ``manage.sh``
+If you implement themes, you will need to compile styles and JavaScript before
+*run*.
.. code:: sh
- ./manage.sh styles
-
-
-How to build the source of the oscar theme
-==========================================
-
-.. _grunt: https://gruntjs.com/
+ make themes
-Grunt_ must be installed in order to build the javascript sources. It depends on
-NodeJS, so first Node has to be installed.
+Don't forget to install npm_ first.
-.. code:: sh
-
- sudo -H apt-get install nodejs
- sudo -H npm install -g grunt-cli
+.. tabs::
-After installing grunt, the files can be built using the following command:
-
-.. code:: sh
+ .. group-tab:: Ubuntu / debian
- ./manage.sh grunt_build
+ .. code:: sh
+ sudo -H apt-get install npm
-Tips for debugging/development
-==============================
+ .. group-tab:: Arch Linux
-.. sidebar:: :ref:`make run`
+ .. code-block:: sh
- Makefile target ``run`` already enables debug option for your developer
- session / see :ref:`make run`.
+ sudo -H pacman -S npm
-Turn on debug logging
- Whether you are working on a new engine or trying to eliminate a bug, it is
- always a good idea to turn on debug logging. When debug logging is enabled a
- stack trace appears, instead of the cryptic ``Internal Server Error``
- message. It can be turned on by setting ``debug: False`` to ``debug: True`` in
- :origin:`settings.yml <searx/settings.yml>`.
+ .. group-tab:: Fedora / RHEL
-.. sidebar:: :ref:`make test`
+ .. code-block:: sh
- Alternatively use the :ref:`make test` targets.
+ sudo -H dnf install npm
-Run ``./manage.sh tests`` before creating a PR.
- Failing build on Travis is common because of PEP8 checks. So a new commit
- must be created containing these format fixes. This phase can be skipped if
- ``./manage.sh tests`` is run locally before creating a PR.
diff --git a/docs/dev/reST.rst b/docs/dev/reST.rst
index 4dc1279..1817504 100644
--- a/docs/dev/reST.rst
+++ b/docs/dev/reST.rst
@@ -15,8 +15,8 @@ generated and deployed at :docs:`github.io <.>`. For build prerequisites read
:ref:`docs build`.
The source files of Searx's documentation are located at :origin:`docs`. Sphinx
-assumes source files to be encoded in UTF-8 by defaul. Run :ref:`make docs-live
-<make docs-live>` to build HTML while editing.
+assumes source files to be encoded in UTF-8 by defaul. Run :ref:`make docs.live
+<make docs.live>` to build HTML while editing.
.. sidebar:: Further reading
@@ -285,7 +285,7 @@ content becomes smart.
:rst:role:`pep` :pep:`8` ``:pep:`8```
sphinx.ext.extlinks_
--------------------------------------------------------------------------------------------------
- project's wiki article :wiki:`Searx-instances` ``:wiki:`Searx-instances```
+ project's wiki article :wiki:`Offline-engines` ``:wiki:`Offline-engines```
to docs public URL :docs:`dev/reST.html` ``:docs:`dev/reST.html```
files & folders origin :origin:`docs/dev/reST.rst` ``:origin:`docs/dev/reST.rst```
pull request :pull:`1756` ``:pull:`1756```
@@ -319,14 +319,18 @@ To list all anchors of the inventory (e.g. ``python``) use:
.. code:: sh
$ python -m sphinx.ext.intersphinx https://docs.python.org/3/objects.inv
+ ...
+ $ python -m sphinx.ext.intersphinx https://searx.github.io/searx/objects.inv
+ ...
Literal blocks
==============
The simplest form of :duref:`literal-blocks` is a indented block introduced by
two colons (``::``). For highlighting use :dudir:`highlight` or :ref:`reST
-code` directive. To include literals from external files use directive
-:dudir:`literalinclude`.
+code` directive. To include literals from external files use
+:rst:dir:`literalinclude` or :ref:`kernel-include <kernel-include-directive>`
+directive (latter one expands environment variables in the path name).
.. _reST literal:
@@ -1272,28 +1276,33 @@ Templating
.. sidebar:: Build environment
- All *generic-doc* tasks are running in the :ref:`build environment <make
- pyenv>`.
+ All *generic-doc* tasks are running in the :ref:`make install`.
Templating is suitable for documentation which is created generic at the build
-time. The sphinx-jinja_ extension evaluates jinja_ templates in the :ref:`build
-environment <make pyenv>` (with searx modules installed). We use this e.g. to
-build chapter: :ref:`engines generic`. Below the jinja directive from the
+time. The sphinx-jinja_ extension evaluates jinja_ templates in the :ref:`make
+install` (with searx modules installed). We use this e.g. to build chapter:
+:ref:`engines generic`. Below the jinja directive from the
:origin:`docs/admin/engines.rst` is shown:
.. literalinclude:: ../admin/engines.rst
:language: reST
:start-after: .. _configured engines:
-The context for the template is selected in the line ``.. jinja:: webapp``. In
-sphinx's build configuration (:origin:`docs/conf.py`) the ``webapp`` context
-points to the name space of the python module: ``webapp``.
+The context for the template is selected in the line ``.. jinja:: searx``. In
+sphinx's build configuration (:origin:`docs/conf.py`) the ``searx`` context
+contains the ``engines`` and ``plugins``.
.. code:: py
- from searx import webapp
+ import searx.search
+ import searx.engines
+ import searx.plugins
+ searx.search.initialize()
jinja_contexts = {
- 'webapp': dict(**webapp.__dict__)
+ 'searx': {
+ 'engines': searx.engines.engines,
+ 'plugins': searx.plugins.plugins
+ },
}
@@ -1312,9 +1321,8 @@ others are basic-tabs_ and code-tabs_. Below a *group-tab* example from
.. literalinclude:: ../admin/buildhosts.rst
:language: reST
- :start-after: .. _system requirements:
- :end-before: .. _system requirements END:
-
+ :start-after: .. SNIP sh lint requirements
+ :end-before: .. SNAP sh lint requirements
.. _math:
@@ -1391,27 +1399,27 @@ The next example shows the difference of ``\tfrac`` (*textstyle*) and ``\dfrac``
.. _readability: https://docs.python-guide.org/writing/style/
.. _Sphinx-Primer:
- http://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html
+ https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html
.. _reST: https://docutils.sourceforge.io/rst.html
.. _Sphinx Roles:
https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html
-.. _Sphinx: http://www.sphinx-doc.org
-.. _`sphinx-doc FAQ`: http://www.sphinx-doc.org/en/stable/faq.html
+.. _Sphinx: https://www.sphinx-doc.org
+.. _`sphinx-doc FAQ`: https://www.sphinx-doc.org/en/stable/faq.html
.. _Sphinx markup constructs:
- http://www.sphinx-doc.org/en/stable/markup/index.html
+ https://www.sphinx-doc.org/en/stable/markup/index.html
.. _`sphinx cross references`:
- http://www.sphinx-doc.org/en/stable/markup/inline.html#cross-referencing-arbitrary-locations
+ https://www.sphinx-doc.org/en/stable/markup/inline.html#cross-referencing-arbitrary-locations
.. _sphinx.ext.extlinks:
https://www.sphinx-doc.org/en/master/usage/extensions/extlinks.html
-.. _intersphinx: http://www.sphinx-doc.org/en/stable/ext/intersphinx.html
-.. _sphinx config: http://www.sphinx-doc.org/en/stable/config.html
-.. _Sphinx's autodoc: http://www.sphinx-doc.org/en/stable/ext/autodoc.html
+.. _intersphinx: https://www.sphinx-doc.org/en/stable/ext/intersphinx.html
+.. _sphinx config: https://www.sphinx-doc.org/en/stable/config.html
+.. _Sphinx's autodoc: https://www.sphinx-doc.org/en/stable/ext/autodoc.html
.. _Sphinx's Python domain:
- http://www.sphinx-doc.org/en/stable/domains.html#the-python-domain
+ https://www.sphinx-doc.org/en/stable/domains.html#the-python-domain
.. _Sphinx's C domain:
- http://www.sphinx-doc.org/en/stable/domains.html#cross-referencing-c-constructs
+ https://www.sphinx-doc.org/en/stable/domains.html#cross-referencing-c-constructs
.. _doctree:
- http://www.sphinx-doc.org/en/master/extdev/tutorial.html?highlight=doctree#build-phases
+ https://www.sphinx-doc.org/en/master/extdev/tutorial.html?highlight=doctree#build-phases
.. _docutils: http://docutils.sourceforge.net/docs/index.html
.. _docutils FAQ: http://docutils.sourceforge.net/FAQ.html
.. _linuxdoc: https://return42.github.io/linuxdoc
@@ -1424,5 +1432,5 @@ The next example shows the difference of ``\tfrac`` (*textstyle*) and ``\dfrac``
.. _ImageMagick: https://www.imagemagick.org
.. _`Emacs Table Mode`: https://www.emacswiki.org/emacs/TableMode
-.. _`Online Tables Generator`: http://www.tablesgenerator.com/text_tables
+.. _`Online Tables Generator`: https://www.tablesgenerator.com/text_tables
.. _`OASIS XML Exchange Table Model`: https://www.oasis-open.org/specs/tm9901.html
diff --git a/docs/dev/search_api.rst b/docs/dev/search_api.rst
index 922548f..68fee94 100644
--- a/docs/dev/search_api.rst
+++ b/docs/dev/search_api.rst
@@ -6,7 +6,7 @@ Search API
The search supports both ``GET`` and ``POST``.
-Furthermore, two enpoints ``/`` and ``/search`` are available for querying.
+Furthermore, two endpoints ``/`` and ``/search`` are available for querying.
``GET /``
@@ -76,12 +76,12 @@ Parameters
supports safe search in the preferences page of an instance.
``theme`` : default ``oscar``
- [ ``oscar``, ``simple``, ``legacy``, ``pix-art``, ``courgette`` ]
+ [ ``oscar``, ``simple`` ]
Theme of instance.
Please note, available themes depend on an instance. It is possible that an
- instance administrator deleted, created or renamed themes on his/her instance.
+ instance administrator deleted, created or renamed themes on their instance.
See the available options in the preferences page of the instance.
``oscar-style`` : default ``logicodev``
@@ -91,7 +91,7 @@ Parameters
``oscar``.
Please note, available styles depend on an instance. It is possible that an
- instance administrator deleted, created or renamed styles on his/her
+ instance administrator deleted, created or renamed styles on their
instance. See the available options in the preferences page of the instance.
``enabled_plugins`` : optional
diff --git a/docs/index.rst b/docs/index.rst
index d9503fe..a406da1 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -2,7 +2,14 @@
Welcome to searx
================
-Search without being tracked.
+ *Search without being tracked.*
+
+Searx is a free internet metasearch engine which aggregates results from more
+than 70 search services. Users are neither tracked nor profiled. Additionally,
+searx can be used over Tor for online anonymity.
+
+Get started with searx by using one of the Searx-instances_. If you don't trust
+anyone, you can set up your own, see :ref:`installation`.
.. sidebar:: Features
@@ -16,17 +23,15 @@ Search without being tracked.
- Hosted by organizations, such as *La Quadrature du Net*, which promote
digital rights
-Searx is a free internet metasearch engine which aggregates results from more
-than 70 search services. Users are neither tracked nor profiled. Additionally,
-searx can be used over Tor for online anonymity.
-
-Get started with searx by using one of the :wiki:`Searx-instances`. If you
-don't trust anyone, you can set up your own, see :ref:`installation`.
-
.. toctree::
:maxdepth: 2
+ :caption: Contents
user/index
admin/index
dev/index
+ searx_extra/index
+ utils/index
blog/index
+
+.. _Searx-instances: https://searx.space
diff --git a/docs/searx_extra/index.rst b/docs/searx_extra/index.rst
new file mode 100644
index 0000000..64d0b90
--- /dev/null
+++ b/docs/searx_extra/index.rst
@@ -0,0 +1,14 @@
+.. _searx_extra:
+
+======================================================
+Tooling box ``searx_extra`` for developers and users
+======================================================
+
+In the folder :origin:`searx_extra/` we maintain some tools useful for
+developers and users.
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents
+
+ standalone_searx.py
diff --git a/docs/searx_extra/standalone_searx.py.rst b/docs/searx_extra/standalone_searx.py.rst
new file mode 100644
index 0000000..ff4b533
--- /dev/null
+++ b/docs/searx_extra/standalone_searx.py.rst
@@ -0,0 +1,9 @@
+
+.. _standalone_searx.py:
+
+===================================
+``searx_extra/standalone_searx.py``
+===================================
+
+.. automodule:: searx_extra.standalone_searx
+ :members:
diff --git a/docs/user/index.rst b/docs/user/index.rst
index 329be3b..96d11bf 100644
--- a/docs/user/index.rst
+++ b/docs/user/index.rst
@@ -3,8 +3,8 @@ User documentation
==================
.. toctree::
- :maxdepth: 1
+ :maxdepth: 2
+ :caption: Contents
- public_instances
search_syntax
own-instance
diff --git a/docs/user/own-instance.rst b/docs/user/own-instance.rst
index a2f7365..bb4c5d5 100644
--- a/docs/user/own-instance.rst
+++ b/docs/user/own-instance.rst
@@ -2,8 +2,10 @@
Why use a private instance?
===========================
-"Is it worth to run my own instance?" is a common question among searx users.
-Before answering this question, see what options a searx user has.
+ *"Is it worth to run my own instance?"*
+
+\.\. is a common question among searx users. Before answering this question,
+see what options a searx user has.
Public instances are open to everyone who has access to its URL. Usually, these
are operated by unknown parties (from the users' point of view). Private
@@ -42,9 +44,9 @@ hidden from visited result pages.
What are the consequences of using public instances?
----------------------------------------------------
-If someone uses a public instance, he/she has to trust the administrator of that
+If someone uses a public instance, they have to trust the administrator of that
instance. This means that the user of the public instance does not know whether
-his/her requests are logged, aggregated and sent or sold to a third party.
+their requests are logged, aggregated and sent or sold to a third party.
Also, public instances without proper protection are more vulnerable to abusing
the search service, In this case the external service in exchange returns
@@ -54,9 +56,9 @@ results.
I see. What about private instances?
------------------------------------
-If users run their own instances, everything is in their control: the source
-code, logging settings and private data. Unknown instance administrators do not
-have to be trusted.
+If users run their :ref:`own instances <installation>`, everything is in their
+control: the source code, logging settings and private data. Unknown instance
+administrators do not have to be trusted.
Furthermore, as the default settings of their instance is editable, there is no
need to use cookies to tailor searx to their needs. So preferences will not be
diff --git a/docs/user/public_instances.rst b/docs/user/public_instances.rst
deleted file mode 100644
index 9665c58..0000000
--- a/docs/user/public_instances.rst
+++ /dev/null
@@ -1,318 +0,0 @@
-.. _public instances:
-
-..
- links has been ported from markdown to reST by::
-
- regexpr: \[([^\]]*)\]\(([^)]*)\)
- substitution: `\1 <\2>`__
-
-
-======================
-Public Searx instances
-======================
-
-.. _mailing list: mailto:searx-instances@autistici.org
-.. _subscription page: https://www.autistici.org/mailman/listinfo/searx-instances
-
-
-Useful information
-==================
-
-* Up-to-date health report available on https://stats.searx.xyz [1]_, for onion
- (tor) services: https://stats.searx.xyz/tor.html
-
-* Searx instances `mailing list`_ & `subscription page`_.
-
-* Some of the Searx instances have a CAcert SSL certificate. You can install the
- missing root cert `from here <http://www.cacert.org/index.php?id=3>`__.
-
-* To add your own Searx instance to this page send us your PR. A GitHub account
- is required to send PR or add an issue.
-
-.. [1] Note that most of the instances with a A+ grade in CSP column in this
- site are not fully functional - for example auto-completion may not work.
-
-
-List of public Searx instances
-==============================
-
-Meta-searx instances
-====================
-
-These are websites that source from other searx instances. These are useful if
-you can't decide which Searx instance to use:
-
-
-.. flat-table:: Meta-searx instances
- :header-rows: 1
- :stub-columns: 0
- :widths: 2 1 2 4 4
-
- * - clearnet host
- - onion host
- - issuer
- - source selection method
- - extra privacy features
-
- * - `Neocities <https://searx.neocities.org/>`__
- - n/a
- - Comodo (`Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.neocities.org>`__)
- - Redirects users directly to a random selection of any known running
- server after entering query. Requires
- Javascript. `Changelog <https://searx.neocities.org/changelog.html>`__.
- - Excludes servers with user tracking and analytics or are proxied through
- Cloudflare.
-
- * - `Searxes <https://searxes.danwin1210.me/>`__ @Danwin
- - onion v3 `hidden service
- <http://searxes.nmqnkngye4ct7bgss4bmv5ca3wpa55yugvxen5kz2bbq67lwy6ps54yd.onion/>`__
- - Let's Encrypt (`Verification
- <https://www.ssllabs.com/ssltest/analyze.html?d=searxes.danwin1210.me>`__)
- - sources data from a randomly selected running server that satisfies
- admin's quality standards which is used for post-processing
- - filters out privacy-hostile websites (like CloudFlare) and either marks
- them as such or folds them below the high ranking results.
-
-
-Alive and running
-=================
-
-**BEFORE EDITING**: Please add your Searx instance by respecting the alphabetic order.
-
-.. note::
-
- Public instances listed here may yield less accurate results as they have
- much higher traffic and consequently have a higher chance of being blocked by
- search providers such as Google, Qwant, Bing, Startpage, etc. Hosting your
- own instance or using an instance that isn't listed here may give you a more
- consistent search experience.
-
-* `ai.deafpray.wtf/searx <https://ai.deafpray.wtf/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=ai.deafpray.wtf/searx>`__
-* `bamboozle.it <https://bamboozle.it/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=bamboozle.it>`__
-* `bee.jaekr.dev <https://bee.jaekr.dev>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=bee.jaekr.dev>`__
-* `beezboo.com <https://beezboo.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=beezboo.com>`__
-* `burtrum.org/searx <https://burtrum.org/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=burtrum.org/searx>`__
-* `darmarit.cloud/searx <https://darmarit.cloud/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=darmarit.cloud/searx>`__
-* `dc.ax <https://dc.ax>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=dc.ax>`__
-* `dynabyte.ca <https://dynabyte.ca>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=dynabyte.ca>`__
-* `goso.ga <https://goso.ga/search>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=goso.ga>`__
-* `gruble.de <https://www.gruble.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=www.gruble.de>`__
-* `haku.ahmia.fi <https://haku.ahmia.fi/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=haku.ahmia.fi&latest>`__
-* `haku.lelux.fi <https://haku.lelux.fi/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=haku.lelux.fi>`__
-* `huyo.me <https://huyo.me/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=huyo.me>`__
-* `jsearch.pw <https://jsearch.pw>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=jsearch.pw>`__
-* `le-dahut.com/searx <https://le-dahut.com/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=le-dahut.com/searx>`__
-* `mijisou.com <https://mijisou.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=mijisou.com>`__
-* `null.media <https://null.media>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=null.media>`__
-* `openworlds.info <https://openworlds.info/>`__ - Issuer: Let's Encrypt
-* `perfectpixel.de/searx/ <https://www.perfectpixel.de/searx/>`__ - Issuer: LetsEncrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=www.perfectpixel.de>`__
-* `ransack.i2p <http://ransack.i2p/>`__ - I2P eepsite, only accessible with `I2P <https://geti2p.net/>`__ (`base32 address <http://mqamk4cfykdvhw5kjez2gnvse56gmnqxn7vkvvbuor4k4j2lbbnq.b32.i2p>`__)
-* `rapu.nz <https://rapu.nz/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=rapu.nz>`__
-* `roflcopter.fr <https://wtf.roflcopter.fr/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=wtf.roflcopter.fr>`__
-* `roteserver.de/searx <https://roteserver.de/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=roteserver.de>`__
-* `s.cmd.gg <https://s.cmd.gg>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=s.cmd.gg>`__
-* `search.activemail.de <https://search.activemail.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.activemail.de&latest>`__
-* `search.anonymize.com <https://search.anonymize.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.anonymize.com>`__
-* `search.azkware.net <https://search.azkware.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.azkware.net>`__
-* `search.biboumail.fr <https://search.biboumail.fr/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.biboumail.fr>`__
-* `search.blankenberg.eu <https://search.blankenberg.eu>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.blankenberg.eu>`__
-* `search.d4networks.com <https://search.d4networks.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.d4networks.com>`__
-* `search.datensturm.net <https://search.datensturm.net>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.datensturm.net>`__
-* `search.disroot.org <https://search.disroot.org/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.disroot.org>`__
-* `search.ethibox.fr <https://search.ethibox.fr>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.ethibox.fr>`__
-* `search.fossdaily.xyz <https://search.fossdaily.xyz>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.fossdaily.xyz>`__
-* `search.galaxy.cat <https://search.galaxy.cat>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.galaxy.cat>`__
-* `search.gibberfish.org <https://search.gibberfish.org/>`__ (as `Hidden Service <http://o2jdk5mdsijm2b7l.onion/>`__ or `Proxied through Tor <https://search.gibberfish.org/tor/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.gibberfish.org>`__
-* `search.koehn.com <https://search.koehn.com>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.koehn.com>`__
-* `search.lgbtq.cool <https://search.lgbtq.cool/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.lgbtq.cool>`__
-* `search.mdosch.de <https://search.mdosch.de/>`__ (as `Hidden Service <http://search.4bkxscubgtxwvhpe.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.mdosch.de>`__
-* `search.modalogi.com <https://search.modalogi.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.modalogi.com&latest>`__
-* `search.moravit.com <https://search.moravit.com>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.moravit.com>`__
-* `search.nebulacentre.net <https://search.nebulacentre.net>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.nebulacentre.net>`__
-* `search.paulla.asso.fr <https://search.paulla.asso.fr/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.paulla.asso.fr>`__
-* `search.pifferi.info <https://search.pifferi.info/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.pifferi.info&latest>`__
-* `search.poal.co <https://search.poal.co/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.poal.co>`__
-* `search.privacytools.io <https://search.privacytools.io/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.privacytools.io>`__ - Uses Matomo for user tracking and analytics
-* `search.seds.nl <https://search.seds.nl/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.seds.nl&latest>`__
-* `search.snopyta.org <https://search.snopyta.org/>`__ (as `Hidden Service <http://juy4e6eicawzdrz7.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.snopyta.org>`__
-* `search.spaeth.me <https://search.spaeth.me/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.spaeth.me&latest>`__
-* `search.st8.at <https://search.st8.at/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.st8.at>`__
-* `search.stinpriza.org <https://search.stinpriza.org>`__ (as `Hidden Service <http://z5vawdol25vrmorm4yydmohsd4u6rdoj2sylvoi3e3nqvxkvpqul7bqd.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.stinpriza.org&hideResults=on>`__
-* `search.sudo-i.net <https://search.sudo-i.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.sudo-i.net>`__
-* `search.tolstoevsky.ml <https://search.tolstoevsky.ml>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.tolstoevsky.ml>`__
-* `searchsin.com/searx <https://searchsin.com/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searchsin.com/searx>`__
-* `searx.anongoth.pl <https://searx.anongoth.pl>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.anongoth.pl&latest>`__
-* `searx.be <https://searx.be>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.be>`__
-* `searx.ca <https://searx.ca/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.ca>`__
-* `searx.canox.net <https://searx.canox.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.canox.net>`__
-* `searx.cybt.de <https://searx.cybt.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.cybt.de>`__
-* `searx.de <https://www.searx.de/>`__ - Issuer: COMODO `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.de>`__
-* `searx.decatec.de <https://searx.decatec.de>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.decatec.de>`__
-* `searx.devol.it <https://searx.devol.it/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=sears.devol.it>`__
-* `searx.dnswarden.com <https://searx.dnswarden.com>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.dnswarden.com>`__
-* `searx.drakonix.net <https://searx.drakonix.net/>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.drakonix.net>`__
-* `searx.dresden.network <https://searx.dresden.network/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.dresden.network>`__
-* `searx.elukerio.org <https://searx.elukerio.org/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.elukerio.org/>`__
-* `searx.everdot.org <https://searx.everdot.org/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.everdot.org/>`__ - Crawls using YaCy
-* `searx.foo.li <https://searx.foo.li>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.foo.li&hideResults=on>`__
-* `searx.fossencdi.org <https://searx.fossencdi.org>`__ (as `Hidden Service <http://searx.cwuzdtzlubq5uual.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.fossencdi.org>`__
-* `searx.fr32k.de <https://searx.fr32k.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.fr32k.de>`__
-* `searx.good.one.pl <https://searx.good.one.pl>`__ (as `Hidden Service <http://searxl7u2y6gvonm.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.good.one.pl>`__
-* `searx.gotrust.de <https://searx.gotrust.de/>`__ (as `Hidden Service <http://nxhhwbbxc4khvvlw.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.gotrust.de>`__
-* `searx.hardwired.link <https://searx.hardwired.link/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.hardwired.link>`__
-* `searx.hlfh.space <https://searx.hlfh.space>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.hlfh.space>`__
-* `searx.info <https://searx.info>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.info>`__
-* `searx.itunix.eu <https://searx.itunix.eu/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.itunix.eu>`__
-* `searx.john-at-me.net <https://searx.john-at-me.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.john-at-me.net>`__
-* `searx.kvch.me <https://searx.kvch.me>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.kvch.me>`__
-* `searx.laquadrature.net <https://searx.laquadrature.net>`__ (as `Hidden Service <http://searchb5a7tmimez.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.laquadrature.net>`__
-* `searx.lelux.fi <https://searx.lelux.fi/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=haku.lelux.fi>`__
-* `searx.lhorn.de <https://searx.lhorn.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.lhorn.de&latest>`__
-* `searx.li <https://searx.li/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.li>`__
-* `searx.libmail.eu <https://searx.libmail.eu/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.libmail.eu/>`__
-* `searx.linux.pizza <https://searx.linux.pizza>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.linux.pizza>`__
-* `searx.lynnesbian.space <https://searx.lynnesbian.space/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.lynnesbian.space>`__
-* `searx.mastodontech.de <https://searx.mastodontech.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.mastodontech.de>`__
-* `searx.me <https://searx.me>`__ (as `Hidden Service <http://ulrn6sryqaifefld.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.me>`__
-* `searx.mxchange.org <https://searx.mxchange.org/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.mxchange.org>`__
-* `searx.nakhan.net <https://searx.nakhan.net>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.nakhan.net>`__
-* `searx.nixnet.xyz <https://searx.nixnet.xyz>`__ (as `Hidden Service <http://searx.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.nixnet.xyz>`__
-* `searx.nnto.net <https://searx.nnto.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.nnto.net>`__
-* `searx.openhoofd.nl <https://searx.openhoofd.nl/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=openhoofd.nl>`__
-* `searx.openpandora.org <https://searx.openpandora.org/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.openpandora.org&latest>`__
-* `searx.operationtulip.com <https://searx.operationtulip.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.operationtulip.com>`__
-* `searx.orcadian.net <https://searx.orcadian.net/>`__ - Issuer: Comodo CA Limited `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.orcadian.net>`__
-* `searx.ouahpit.info <https://searx.ouahpiti.info/>`__ - Issuer: Let's Encrypt
-* `searx.pofilo.fr <https://searx.pofilo.fr/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.pofilo.fr>`__
-* `searx.prvcy.eu <https://searx.prvcy.eu/>`__ (as `Hidden Service <http://hmfztxt3pfhevucl.onion/>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.prvcy.eu>`__
-* `searx.pwoss.org <https://searx.pwoss.org>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.pwoss.org>`__
-* `searx.ro <https://searx.ro/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.ro>`__
-* `searx.ru <https://searx.ru/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.ru>`__
-* `searx.solusar.de <https://searx.solusar.de/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.solusar.de>`__
-* `searx.targaryen.house <https://searx.targaryen.house/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.targaryen.house>`__
-* `searx.tuxcloud.net <https://searx.tuxcloud.net>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.tuxcloud.net>`__
-* `searx.tyil.nl <https://searx.tyil.nl>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.tyil.nl>`__
-* `searx.wegeeks.win <https://searx.wegeeks.win>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.wegeeks.win>`__
-* `searx.win <https://searx.win/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.win&latest>`__
-* `searx.xyz <https://searx.xyz/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.xyz&latest>`__
-* `searx.zareldyn.net <https://searx.zareldyn.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.zareldyn.net>`__
-* `searx.zdechov.net <https://searx.zdechov.net>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.zdechov.net>`__
-* `searxs.eu <https://www.searxs.eu>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=www.searxs.eu&hideResults=on>`__
-* `seeks.hsbp.org <https://seeks.hsbp.org/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=seeks.hsbp.org>`__ - `PGP signed fingerprints of cert <https://seeks.hsbp.org/cert>`__
-* `skyn3t.in/srx <https://skyn3t.in/srx/>`__ - Issuer: Let's Encrypt | onion `hidden service <http://skyn3tb3bas655mw.onion/srx/>`__
-* `spot.ecloud.global <https://spot.ecloud.global/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=spot.ecloud.global>`__
-* `srx.sx <https://srx.sx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=srx.sx>`__
-* `stemy.me/searx <https://stemy.me/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=stemy.me>`__
-* `suche.dasnetzundich.de <https://suche.dasnetzundich.de>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=suche.dasnetzundich.de>`__
-* `suche.elaon.de <https://suche.elaon.de>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=suche.elaon.de>`__
-* `suche.xyzco456vwisukfg.onion <http://suche.xyzco456vwisukfg.onion/>`__
-* `suche.uferwerk.org <https://suche.uferwerk.org>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=suche.uferwerk.org>`__
-* `timdor.noip.me/searx <https://timdor.noip.me/searx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=timdor.noip.me/searx>`__
-* `trovu.komun.org <https://trovu.komun.org>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=trovu.komun.org>`__
-* `unmonito.red <https://unmonito.red/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=unmonito.red>`__
-* `www.finden.tk <https://www.finden.tk/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=www.finden.tk>`__
-* `zoek.anchel.nl <https://zoek.anchel.nl/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=zoek.anchel.nl>`__
-
-
-
-Running in exclusive private walled-gardens
-===========================================
-
-These instances run in walled-gardens that exclude some segment of the general
-public (e.g. Tor users and users sharing IPs with many other users). Caution:
-privacy is also compromised on these sites due to exposure of cleartext traffic
-to a third party other than the website operator.
-
-* `intelme.com <https://intelme.com>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=intelme.com>`__
-* `search404.io <https://www.search404.io/>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search404.io>`__
-* `searx.com.au <https://searx.com.au/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.com.au>`__
-* `searx.lavatech.top <https://searx.lavatech.top/>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.lavatech.top>`__
-* `searchx.mobi <https://searchx.mobi/>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searchx.mobi>`__
-* `searx.org <https://searx.org/>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.org>`__
-* `searx.run <https://searx.run/>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.run>`__
-* `searx.world <https://searx.world>`__ - Issuer: Cloudflare `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.world>`__ - Adds Amazon affiliate links
-
-
-Running with an incorrect SSL certificate
-=========================================
-
-* `listi.me <https://listi.me/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=listi.me&latest>`__
-* `s.matejc.com <https://s.matejc.com/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=s.matejc.com>`__
-* `search.jollausers.de <https://search.jollausers.de>`__ - Incorrectly configured `SSL certificate <https://www.ssllabs.com/ssltest/analyze.html?d=search.jollausers.de>`__
-* `search.paviro.de <https://search.paviro.de>`__ - Issuer: LetsEncrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.paviro.de>`__
-* `searx.abenthung.it <https://searx.abenthung.it/>`__ - Issuer: Comodo CA Limited `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.abenthung.it>`__
-* `searx.coding4schoki.org <https://searx.coding4schoki.org/>`__ - Incorrectly configured `SSL Certificate <https://www.ssllabs.com/ssltest/analyze.html?d=searx.coding4schoki.org>`__
-* `searx.haxors.club <https://searx.haxors.club/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.haxors.club>`__
-* `searx.nulltime.net <https://searx.nulltime.net/>`__ (as `Hidden Service <http://searx7gwtu5rh6wr.onion>`__) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.nulltime.net>`__
-* `searx.ch <https://searx.ch/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.ch>`__ (cert clock problems)
-
-
-Offline
-=======
-
-* `a.searx.space <https://a.searx.space>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=a.searx.space>`__ (unstable, under construction).
-* `anyonething.de <https://anyonething.de>`__ - (was found to have become a pastebin on or before 2019-03-01) Issuer: Comodo CA Limited (Warning: uses Cloudflare) `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=anyonething.de>`__
-* `h7jwxg5rakyfvikpi.onion <http://7jwxg5rakyfvikpi.onion/>`__ - available only as Tor Hidden Service (down on 2019-06-26)
-* `hacktivis.me/searx <https://hacktivis.me/searx>`__ - (down) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=hacktivis.me/searx>`__
-* `icebal.com <https://icebal.com>`__ - (down) Issuer: Let's Encrypt
-* `netrangler.host <https://netrangler.host>`__ - (down) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=netrangler.host>`__
-* `opengo.nl <https://www.opengo.nl>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=www.opengo.nl>`__
-* `p9e.de <https://p9e.de/>`__ - (down - timeout) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=p9e.de>`__
-* `rubri.co <https://rubri.co>`__ - (down) Issuer: Let's Encrypt
-* `s.bacafe.xyz <https://s.bacafe.xyz/>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=s.bacafe.xyz&latest>`__
-* `search.alecpap.com <https://search.alecpap.com/>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.alecpap.com>`__
-* `search.blackit.de <https://search.blackit.de/>`__ - (down) Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.blackit.de>`__
-* `search.deblan.org <https://search.deblan.org/>`__ (down) - Issuer: COMODO via GANDI `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.deblan.org>`__
-* `search.homecomputing.fr <https://search.homecomputing.fr/>`__ - (down) Issuer: CAcert `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.homecomputing.fr>`__
-* `search.jpope.org <https://search.jpope.org>`__ - (down - timeout) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.jpope.org>`__
-* `search.kakise.xyz <https://search.kakise.xyz/>`__ - down
-* `search.kosebamse.com <https://search.kosebamse.com>`__ - Issuer: LetsEncrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.kosebamse.com>`__
-* `search.kujiu.org <https://search.kujiu.org>`__ - (down) Issuer: Let's Encrypt
-* `search.mailaender.coffee <https://search.mailaender.coffee/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.mailaender.coffee>`__
-* `search.matrix.ac <https://search.matrix.ac>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=matrix.ac>`__
-* `search.mypsc.ca <https://search.mypsc.ca/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.mypsc.ca>`__
-* `search.namedkitten.pw <https://search.namedkitten.pw>`__ - (SSL error) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.namedkitten.pw>`__
-* `search.opentunisia.org <https://search.opentunisia.org>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.opentunisia.org>`__
-* `search.r3d007.com <https://search.r3d007.com/>`__ - (down) Issuer: Let's Encrypt
-* `search.static.lu <https://search.static.lu/>`__ - (down) Issuer: StartCom `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.static.lu>`__
-* `search.teej.xyz <https://search.teej.xyz>`__ - (down) Issuer: LetsEncrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.teej.xyz>`__
-* `search.wxzm.sx <https://search.wxzm.sx>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=search.wxzm.sx>`__
-* `searx.4ray.co <https://searx.4ray.co/>`__ - (no longer an instance, redirects to main page) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.4ray.co>`__
-* `searx.32bitflo.at <https://searx.32bitflo.at/>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.32bitflo.at>`__
-* `searx.ahh.si <https://searx.ahh.si/>`__ - (down) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.ahh.si>`__
-* `searx.angristan.xyz <https://searx.angristan.xyz/>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.angristan.xyz>`__
-* `searx.antirep.net <https://searx.antirep.net/>`__ - (return a 502 HTTP error) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.antirep.net>`__
-* `searx.aquilenet.fr <https://searx.aquilenet.fr/>`__ - (down - 429 HTTP error) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.aquilenet.fr>`__
-* `searx.at <https://searx.at/>`__ - (return "request exception" at every search) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.at>`__
-* `searx.cc <https://searx.cc/>`__ - (down on 2019-06-26) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.cc>`__
-* `searx.dk <https://searx.dk/>`__ - (down - 429 HTTP error) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.dk>`__
-* `searx.ehrmanns.ch <https://searx.ehrmanns.ch>`__ - (down) Issuer: Let's Encrypt
-* `searx.glibre.net <https://searx.glibre.net>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.glibre.net>`__
-* `searx.infini.fr <https://searx.infini.fr>`__ - (return a page stating that the website is not installed) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.infini.fr>`__
-* `searx.jeanphilippemorvan.info <https://searx.jeanphilippemorvan.info/>`__ - (down) Issuer: StartCom `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.jeanphilippemorvan.info>`__
-* `searx.lhorn.de <https://searx.lhorn.de/>`__ - (redirect the Searx's github repository page) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.lhorn.de&latest>`__ (only reachable from european countries)
-* `searx.lvweb.host <https://searx.lvweb.host>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.lvweb.host>`__
-* `searx.mrtino.eu <https://searx.mrtino.eu>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.mrtino.eu>`__
-* `searx.netzspielplatz.de <https://searx.netzspielplatz.de/>`__ - (error page about GDPR even when browsing it from USA and Asia) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.netzspielplatz.de>`__
-* `searx.new-admin.net <https://searx.new-admin.net>`__ - (down) Issuer: Let's Encrypt
-* `searx.nogafa.org <https://searx.nogafa.org/>`__ - (broken CSS) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.nogafa.org>`__
-* `searx.potato.hu <https://searx.potato.hu>`__ - (not a searx instance) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.potato.hu>`__
-* `searx.rubbeldiekatz.info <https://searx.rubbeldiekatz.info/>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.rubbeldiekatz.info/>`__
-* `searx.s42.space <https://searx.s42.space>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.s42.space>`__
-* `searx.salcay.hu <https://searx.salcay.hu/>`__ - (down - blank page) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.salcay.hu>`__
-* `searx.selea.se <https://searx.selea.se>`__ - (Leads to default Apache page) Issuer: RapidSSL (HSTS preloaded, DNSSEC) `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.selea.se>`__ | `HSTS Preload <https://hstspreload.org/?domain=searx.selea.se>`__
-* `searx.steinscraft.net <https://searx.steinscraft.net/>`__ - (down) Issuer: Cloudflare
-* `searx.techregion.de <https://searx.techregion.de/>`__ - (domain expired) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.techregion.de>`__
-* `searx.tognella.com <https://searx.tognella.com/>`__ - (down) Issuer: Cloudflare
-* `searx.xi.ht <https://searx.xi.ht/>`__ - (return a 502 HTTP error) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searx.xi.ht>`__
-* `searxist.com <https://searxist.com/>`__ - (down) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=searxist.com>`__
-* `so.sb <https://so.sb/>`__ - (down) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=so.sb>`__
-* `srx.stdout.net <https://srx.stdout.net/>`__ - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=srx.stdout.net>`__
-* `w6f7cgdm54cyvohcuhraaafhajctyj3ihenrovuxogoagrr5g43qmoid.onion <http://w6f7cgdm54cyvohcuhraaafhajctyj3ihenrovuxogoagrr5g43qmoid.onion/>`__ - Hidden Service
-* `win8linux.nohost.me <https://win8linux.nohost.me/searx/>`__ - (down) Issuer: Let's Encrypt
-* `wiznet.tech <https://wiznet.tech>`__ - (down) - Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=wiznet.tech>`__
-* `www.mercurius.space <https://www.mercurius.space/>`__ - (down) Issuer: Let's Encrypt
-* `www.ready.pm <https://www.ready.pm>`__ - Issuer: WoSign `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=www.ready.pm>`__
-* `z.awsmppl.com <https://z.awsmppl.com>`__ - (down) Issuer: Let's Encrypt `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=z.awsmppl.com>`__
-* `zlsdzh.tk <https://zlsdzh.tk>`__ - (down - 404 HTTP error) Issuer: TrustAsia Technologies, Inc. `Verification <https://www.ssllabs.com/ssltest/analyze.html?d=zlsdzh.tk>`__ *
-
diff --git a/docs/user/search_syntax.rst b/docs/user/search_syntax.rst
index b738c72..57cb519 100644
--- a/docs/user/search_syntax.rst
+++ b/docs/user/search_syntax.rst
@@ -40,3 +40,27 @@ Image search:
Custom language in wikipedia:
- :search:`:hu !wp hackerspace <?q=%3Ahu%20%21wp%20hackerspace>`
+
+Multilingual Search
+===================
+
+Searx does not support true multilingual search.
+You have to use the language prefix in your search query when searching in a different language.
+
+But there is a workaround:
+By adding a new search engine with a different language, Searx will search in your default and other language.
+
+Example configuration in settings.yml for a German and English speaker:
+ .. code-block:: yaml
+
+ search:
+ language : "de"
+ ...
+
+ engines:
+ - name : google english
+ engine : google
+ language : english
+ ...
+
+When searching, the default google engine will return German results and "google english" will return English results.
diff --git a/docs/utils/filtron.sh.rst b/docs/utils/filtron.sh.rst
new file mode 100644
index 0000000..86e3fa8
--- /dev/null
+++ b/docs/utils/filtron.sh.rst
@@ -0,0 +1,80 @@
+
+.. _filtron.sh:
+
+====================
+``utils/filtron.sh``
+====================
+
+.. sidebar:: further reading
+
+ - :ref:`searx filtron`
+ - :ref:`architecture`
+ - :ref:`installation` (:ref:`nginx <installation nginx>` & :ref:`apache
+ <installation apache>`)
+
+.. _Go: https://golang.org/
+.. _filtron: https://github.com/asciimoo/filtron
+.. _filtron README: https://github.com/asciimoo/filtron/blob/master/README.md
+
+To simplify installation and maintenance of a filtron instance you can use the
+script :origin:`utils/filtron.sh`. In most cases you will install filtron_
+simply by running the command:
+
+.. code:: bash
+
+ sudo -H ./utils/filtron.sh install all
+
+The script adds a ``${SERVICE_USER}`` (default:``filtron``) and installs filtron_
+into this user account:
+
+#. Create a separated user account (``filtron``).
+#. Download and install Go_ binary in user's $HOME (``~filtron``).
+#. Install filtron with the package management from Go_ (``go get -v -u
+ github.com/asciimoo/filtron``)
+#. Setup a proper rule configuration :origin:`[ref]
+ <utils/templates/etc/filtron/rules.json>` (``/etc/filtron/rules.json``).
+#. Setup a systemd service unit :origin:`[ref]
+ <utils/templates/lib/systemd/system/filtron.service>`
+ (``/lib/systemd/system/filtron.service``).
+
+
+Create user
+===========
+
+.. kernel-include:: $DOCS_BUILD/includes/filtron.rst
+ :start-after: START create user
+ :end-before: END create user
+
+
+Install go
+==========
+
+.. kernel-include:: $DOCS_BUILD/includes/filtron.rst
+ :start-after: START install go
+ :end-before: END install go
+
+
+Install filtron
+===============
+
+Install :origin:`rules.json <utils/templates/etc/filtron/rules.json>` at
+``/etc/filtron/rules.json`` (see :ref:`Sample configuration of filtron`) and
+install filtron software and systemd unit:
+
+.. kernel-include:: $DOCS_BUILD/includes/filtron.rst
+ :start-after: START install filtron
+ :end-before: END install filtron
+
+.. kernel-include:: $DOCS_BUILD/includes/filtron.rst
+ :start-after: START install systemd unit
+ :end-before: END install systemd unit
+
+.. _filtron.sh overview:
+
+Overview
+========
+
+The ``--help`` output of the script is largely self-explanatory
+(:ref:`toolboxing common`):
+
+.. program-output:: ../utils/filtron.sh --help
diff --git a/docs/utils/index.rst b/docs/utils/index.rst
new file mode 100644
index 0000000..699641d
--- /dev/null
+++ b/docs/utils/index.rst
@@ -0,0 +1,52 @@
+.. _searx_utils:
+.. _toolboxing:
+
+===================
+Admin's tooling box
+===================
+
+In the folder :origin:`utils/` we maintain some tools useful for administrators.
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Contents
+
+ searx.sh
+ filtron.sh
+ morty.sh
+ lxc.sh
+
+.. _toolboxing common:
+
+Common commands & environment
+=============================
+
+Scripts to maintain services often dispose of common commands and environments.
+
+``shell`` : command
+ Opens a shell from the service user ``${SERVICE_USSR}``, very helpful for
+ troubleshooting.
+
+``inspect service`` : command
+ Shows status and log of the service, most often you have a option to enable
+ more verbose debug logs. Very helpful for debugging, but be careful not to
+ enable debugging in a production environment!
+
+``FORCE_TIMEOUT`` : environment
+ Sets timeout for interactive prompts. If you want to run a script in batch
+ job, with defaults choices, set ``FORCE_TIMEOUT=0``. By example; to install a
+ reverse proxy for filtron on all containers of the :ref:`searx suite
+ <lxc-searx.env>` use ::
+
+ sudo -H ./utils/lxc.sh cmd -- FORCE_TIMEOUT=0 ./utils/filtron.sh apache install
+
+.. _toolboxing setup:
+
+Tooling box setup
+=================
+
+The main setup is done in the :origin:`.config.sh` (read also :ref:`settings
+global`).
+
+.. literalinclude:: ../../.config.sh
+ :language: bash
diff --git a/docs/utils/lxc.sh.rst b/docs/utils/lxc.sh.rst
new file mode 100644
index 0000000..56bac26
--- /dev/null
+++ b/docs/utils/lxc.sh.rst
@@ -0,0 +1,149 @@
+
+.. _snap: https://snapcraft.io
+.. _snapcraft LXD: https://snapcraft.io/lxd
+.. _LXC/LXD Image Server: https://uk.images.linuxcontainers.org/
+.. _LXC: https://linuxcontainers.org/lxc/introduction/
+.. _LXD: https://linuxcontainers.org/lxd/introduction/
+.. _`LXD@github`: https://github.com/lxc/lxd
+
+.. _archlinux: https://www.archlinux.org/
+
+.. _lxc.sh:
+
+================
+``utils/lxc.sh``
+================
+
+.. sidebar:: further reading
+
+ - snap_, `snapcraft LXD`_
+ - LXC_, LXD_
+ - `LXC/LXD Image Server`_
+ - `LXD@github`_
+
+With the use of *Linux Containers* (LXC_) we can scale our tasks over a stack of
+containers, what we call the: *lxc suite*. The *searx suite*
+(:origin:`lxc-searx.env <utils/lxc-searx.env>`) is loaded by default, every time
+you start the ``lxc.sh`` script (*you do not need to care about*).
+
+Before you can start with containers, you need to install and initiate LXD_
+once::
+
+ $ snap install lxd
+ $ lxd init --auto
+
+To make use of the containers from the *searx suite*, you have to build the
+:ref:`LXC suite containers <lxc.sh help>` initial. But be warned, **this might
+take some time**::
+
+ $ sudo -H ./utils/lxc.sh build
+
+A cup of coffee later, your LXC suite is build up and you can run whatever task
+you want / in a selected or even in all :ref:`LXC suite containers <lxc.sh
+help>`. If you do not want to build all containers, **you can build just
+one**::
+
+ $ sudo -H ./utils/lxc.sh build searx-ubu1804
+
+*Good to know ...*
+
+Each container shares the root folder of the repository and the command
+``utils/lxc.sh cmd`` **handles relative path names transparent**, compare output
+of::
+
+ $ sudo -H ./utils/lxc.sh cmd -- ls -la Makefile
+ ...
+
+In the containers, you can run what ever you want, e.g. to start a bash use::
+
+ $ sudo -H ./utils/lxc.sh cmd searx-ubu1804 bash
+ INFO: [searx-ubu1804] bash
+ root@searx-ubu1804:/share/searx#
+
+If there comes the time you want to **get rid off all** the containers and
+**clean up local images** just type::
+
+ $ sudo -H ./utils/lxc.sh remove
+ $ sudo -H ./utils/lxc.sh remove images
+
+.. _lxc.sh install suite:
+
+Install suite
+=============
+
+To install the complete :ref:`searx suite (includes searx, morty & filtron)
+<lxc-searx.env>` into all LXC_ use::
+
+ $ sudo -H ./utils/lxc.sh install suite
+
+The command above installs a searx suite (see :ref:`installation scripts`). To
+get the IP (URL) of the filtron service in the containers use ``show suite``
+command. To test instances from containers just open the URLs in your
+WEB-Browser::
+
+ $ sudo ./utils/lxc.sh show suite | grep filtron
+ [searx-ubu1604] INFO: (eth0) filtron: http://n.n.n.246:4004/ http://n.n.n.246/searx
+ [searx-ubu1804] INFO: (eth0) filtron: http://n.n.n.147:4004/ http://n.n.n.147/searx
+ [searx-ubu1910] INFO: (eth0) filtron: http://n.n.n.140:4004/ http://n.n.n.140/searx
+ [searx-ubu2004] INFO: (eth0) filtron: http://n.n.n.18:4004/ http://n.n.n.18/searx
+ [searx-fedora31] INFO: (eth0) filtron: http://n.n.n.46:4004/ http://n.n.n.46/searx
+ [searx-archlinux] INFO: (eth0) filtron: http://n.n.n.32:4004/ http://n.n.n.32/searx
+
+To :ref:`install a nginx <installation nginx>` reverse proxy for filtron and
+morty use (or alternatively use :ref:`apache <installation apache>`)::
+
+ sudo -H ./utils/lxc.sh cmd -- FORCE_TIMEOUT=0 ./utils/filtron.sh nginx install
+ sudo -H ./utils/lxc.sh cmd -- FORCE_TIMEOUT=0 ./utils/morty.sh nginx install
+
+
+Running commands
+================
+
+**Inside containers, you can use make or run scripts** from the
+:ref:`toolboxing`. By example: to setup a :ref:`buildhosts` and run the
+Makefile target ``test`` in the archlinux_ container::
+
+ sudo -H ./utils/lxc.sh cmd searx-archlinux ./utils/searx.sh install buildhost
+ sudo -H ./utils/lxc.sh cmd searx-archlinux make test
+
+
+Setup searx buildhost
+=====================
+
+You can **install the searx buildhost environment** into one or all containers.
+The installation procedure to set up a :ref:`build host<buildhosts>` takes its
+time. Installation in all containers will take more time (time for another cup
+of coffee).::
+
+ sudo -H ./utils/lxc.sh cmd -- ./utils/searx.sh install buildhost
+
+To build (live) documentation inside a archlinux_ container::
+
+ sudo -H ./utils/lxc.sh cmd searx-archlinux make docs.clean docs.live
+ ...
+ [I 200331 15:00:42 server:296] Serving on http://0.0.0.0:8080
+
+To get IP of the container and the port number *live docs* is listening::
+
+ $ sudo ./utils/lxc.sh show suite | grep docs.live
+ ...
+ [searx-archlinux] INFO: (eth0) docs.live: http://n.n.n.12:8080/
+
+
+.. _lxc.sh help:
+
+Overview
+========
+
+The ``--help`` output of the script is largely self-explanatory:
+
+.. program-output:: ../utils/lxc.sh --help
+
+
+.. _lxc-searx.env:
+
+searx suite
+===========
+
+.. literalinclude:: ../../utils/lxc-searx.env
+ :language: bash
diff --git a/docs/utils/morty.sh.rst b/docs/utils/morty.sh.rst
new file mode 100644
index 0000000..3bdf9bd
--- /dev/null
+++ b/docs/utils/morty.sh.rst
@@ -0,0 +1,80 @@
+
+.. _morty: https://github.com/asciimoo/morty
+.. _morty's README: https://github.com/asciimoo/morty
+.. _Go: https://golang.org/
+
+.. _morty.sh:
+
+==================
+``utils/morty.sh``
+==================
+
+.. sidebar:: further reading
+
+ - :ref:`architecture`
+ - :ref:`installation` (:ref:`nginx <installation nginx>` & :ref:`apache
+ <installation apache>`)
+ - :ref:`searx morty`
+
+To simplify installation and maintenance of a morty_ instance you can use the
+script :origin:`utils/morty.sh`. In most cases you will install morty_ simply by
+running the command:
+
+.. code:: bash
+
+ sudo -H ./utils/morty.sh install all
+
+The script adds a ``${SERVICE_USER}`` (default:``morty``) and installs morty_
+into this user account:
+
+#. Create a separated user account (``morty``).
+#. Download and install Go_ binary in user's $HOME (``~morty``).
+#. Install morty_ with the package management from Go_ (``go get -v -u
+ github.com/asciimoo/morty``)
+#. Setup a systemd service unit :origin:`[ref]
+ <utils/templates/lib/systemd/system/morty.service>`
+ (``/lib/systemd/system/morty.service``).
+
+.. hint::
+
+ To add morty to your searx instance read chapter :ref:`searx morty`.
+
+Create user
+===========
+
+.. kernel-include:: $DOCS_BUILD/includes/morty.rst
+ :start-after: START create user
+ :end-before: END create user
+
+
+Install go
+==========
+
+.. kernel-include:: $DOCS_BUILD/includes/morty.rst
+ :start-after: START install go
+ :end-before: END install go
+
+
+Install morty
+=============
+
+Install morty software and systemd unit:
+
+.. kernel-include:: $DOCS_BUILD/includes/morty.rst
+ :start-after: START install morty
+ :end-before: END install morty
+
+.. kernel-include:: $DOCS_BUILD/includes/morty.rst
+ :start-after: START install systemd unit
+ :end-before: END install systemd unit
+
+.. _morty.sh overview:
+
+Overview
+========
+
+The ``--help`` output of the script is largely self-explanatory
+(:ref:`toolboxing common`):
+
+.. program-output:: ../utils/morty.sh --help
+
diff --git a/docs/utils/searx.sh.rst b/docs/utils/searx.sh.rst
new file mode 100644
index 0000000..dd4442f
--- /dev/null
+++ b/docs/utils/searx.sh.rst
@@ -0,0 +1,39 @@
+
+.. _searx.sh:
+
+==================
+``utils/searx.sh``
+==================
+
+.. sidebar:: further reading
+
+ - :ref:`architecture`
+ - :ref:`installation`
+ - :ref:`installation nginx`
+ - :ref:`installation apache`
+
+To simplify installation and maintenance of a searx instance you can use the
+script :origin:`utils/searx.sh`.
+
+Install
+=======
+
+In most cases you will install searx simply by running the command:
+
+.. code:: bash
+
+ sudo -H ./utils/searx.sh install all
+
+The script adds a ``${SERVICE_USER}`` (default:``searx``) and installs searx
+into this user account. The installation is described in chapter
+:ref:`installation basic`.
+
+.. _intranet reverse proxy:
+
+Overview
+========
+
+The ``--help`` output of the script is largely self-explanatory
+(:ref:`toolboxing common`):
+
+.. program-output:: ../utils/searx.sh --help
diff --git a/manage b/manage
new file mode 100755
index 0000000..d208794
--- /dev/null
+++ b/manage
@@ -0,0 +1,503 @@
+#!/usr/bin/env bash
+# -*- coding: utf-8; mode: sh indent-tabs-mode: nil -*-
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# shellcheck disable=SC2031
+
+# shellcheck source=utils/lib.sh
+source "$(dirname "${BASH_SOURCE[0]}")/utils/lib.sh"
+# shellcheck source=utils/brand.env
+source "${REPO_ROOT}/utils/brand.env"
+source_dot_config
+
+# config
+
+PY_SETUP_EXTRAS='[test]'
+NPM_PACKAGES="less@2.7 less-plugin-clean-css grunt-cli"
+GECKODRIVER_VERSION="v0.30.0"
+# SPHINXOPTS=
+
+# These py files are linted by test.pylint(), all other files are linted by
+# test.pep8()
+PYLINT_FILES=(
+ searx/preferences.py
+ searx/testing.py
+ searx/engines/gigablast.py
+ searx/engines/deviantart.py
+ searx/engines/digg.py
+ searx/engines/google.py
+ searx/engines/google_news.py
+ searx/engines/google_videos.py
+ searx/engines/google_images.py
+ searx/engines/mediathekviewweb.py
+ searx/engines/meilisearch.py
+ searx/engines/solidtorrents.py
+ searx/engines/solr.py
+ searx/engines/sqlite.py
+ searx/engines/springer.py
+ searx/engines/google_scholar.py
+ searx/engines/yahoo_news.py
+ searx/engines/apkmirror.py
+ searx/engines/core.py
+ searx_extra/update/update_external_bangs.py
+)
+
+PYLINT_SEARX_DISABLE_OPTION="\
+I,C,R,\
+W0105,W0212,W0511,W0603,W0613,W0621,W0702,W0703,W1401,\
+E1136"
+PYLINT_ADDITIONAL_BUILTINS_FOR_ENGINES="supported_languages,language_aliases"
+PYLINT_OPTIONS="-m pylint -j 0 --rcfile .pylintrc"
+
+help() {
+ cat <<EOF
+buildenv
+ rebuild ./utils/brand.env
+babel.compile
+ pybabel compile ./searx/translations
+data.*
+ all : update searx/languages.py and ./data/*
+ languages : update searx/data/engines_languages.json & searx/languages.py
+ useragents: update searx/data/useragents.json with the most recent versions of Firefox.
+docs.*
+ html : build HTML documentation
+ live : autobuild HTML documentation while editing
+ gh-pages : deploy on gh-pages branch
+ prebuild : build reST include files (./${DOCS_BUILD}/includes)
+ clean : clean documentation build
+docker
+ build : build docker image
+ push : build and push docker image
+gecko.driver
+ download & install geckodriver if not already installed (required for
+ robot_tests)
+node.*
+ env : download & install npm dependencies locally
+ clean : drop npm installations
+py.*
+ build : Build python packages at ./${PYDIST}
+ clean : delete virtualenv and intermediate py files
+pyenv.* :
+ install : developer install of searx into virtualenv
+ uninstall : uninstall developer installation
+ cmd ... : run command ... in virtualenv
+ OK : test if virtualenv is OK
+pypi.upload:
+ Upload python packages to PyPi (to test use pypi.upload.test)
+test.* :
+ pylint : lint PYLINT_FILES, searx/engines, searx & tests
+ pep8 : pycodestyle (pep8) for all files except PYLINT_FILES
+ unit : run unit tests
+ coverage : run unit tests with coverage
+ robot : run robot test
+ clean : clean intermediate test stuff
+themes.* :
+ all : build all themes
+ oscar : build oscar theme
+ simple : build simple theme
+EOF
+}
+
+
+if [ "$VERBOSE" = "1" ]; then
+ SPHINX_VERBOSE="-v"
+ PYLINT_VERBOSE="-v"
+fi
+
+# needed by sphinx-docs
+export DOCS_BUILD
+
+buildenv() {
+ SEARX_DEBUG=1 pyenv.cmd python utils/build_env.py 2>&1
+ return "${PIPESTATUS[0]}"
+}
+
+babel.compile() {
+ build_msg BABEL compile
+ pyenv.cmd pybabel compile -d "${REPO_ROOT}/searx/translations"
+ dump_return $?
+}
+
+
+data.all() {
+ data.languages
+ data.useragents
+ build_msg DATA "update searx/data/ahmia_blacklist.txt"
+ pyenv.cmd python searx_extra/update/update_ahmia_blacklist.py
+ build_msg DATA "update searx/data/wikidata_units.json"
+ pyenv.cmd python searx_extra/update/update_wikidata_units.py
+ build_msg DATA "update searx/data/currencies.json"
+ pyenv.cmd python searx_extra/update/update_currencies.py
+}
+
+
+data.languages() {
+ ( set -e
+ build_msg ENGINES "fetch languages .."
+ pyenv.cmd python searx_extra/update/update_languages.py
+ build_msg ENGINES "update update searx/languages.py"
+ build_msg DATA "update searx/data/engines_languages.json"
+ )
+ dump_return $?
+}
+
+data.useragents() {
+ build_msg DATA "update searx/data/useragents.json"
+ pyenv.cmd python searx_extra/update/update_firefox_version.py
+ dump_return $?
+}
+
+docs.prebuild() {
+ build_msg DOCS "build ${DOCS_BUILD}/includes"
+ (
+ set -e
+ [ "$VERBOSE" = "1" ] && set -x
+ mkdir -p "${DOCS_BUILD}/includes"
+ ./utils/searx.sh doc | cat > "${DOCS_BUILD}/includes/searx.rst"
+ ./utils/filtron.sh doc | cat > "${DOCS_BUILD}/includes/filtron.rst"
+ ./utils/morty.sh doc | cat > "${DOCS_BUILD}/includes/morty.rst"
+ )
+ dump_return $?
+}
+
+docker.push() {
+ docker.build push
+}
+
+# shellcheck disable=SC2119
+docker.build() {
+ pyenv.install
+
+ build_msg DOCKER build
+ # run installation in a subprocess and activate pyenv
+
+ # See https://www.shellcheck.net/wiki/SC1001 and others ..
+ # shellcheck disable=SC2031,SC2230,SC2002,SC2236,SC2143,SC1001
+ ( set -e
+ # shellcheck source=/dev/null
+ source "${PY_ENV_BIN}/activate"
+
+ # Check if it is a git repository
+ if [ ! -d .git ]; then
+ die 1 "This is not Git repository"
+ fi
+ if [ ! -x "$(which git)" ]; then
+ die 1 "git is not installed"
+ fi
+
+ if ! git remote get-url origin 2> /dev/null; then
+ die 1 "there is no remote origin"
+ fi
+
+ # This is a git repository
+
+ # "git describe" to get the Docker version (for example : v0.15.0-89-g0585788e)
+ # awk to remove the "v" and the "g"
+ SEARX_GIT_VERSION=$(git describe --match "v[0-9]*\.[0-9]*\.[0-9]*" HEAD 2>/dev/null | awk -F'-' '{OFS="-"; $1=substr($1, 2); if ($3) { $3=substr($3, 2); } print}')
+
+ # add the suffix "-dirty" if the repository has uncommited change
+ # /!\ HACK for searx/searx: ignore utils/brand.env
+ git update-index -q --refresh
+ if [ ! -z "$(git diff-index --name-only HEAD -- | grep -v 'utils/brand.env')" ]; then
+ SEARX_GIT_VERSION="${SEARX_GIT_VERSION}-dirty"
+ fi
+
+ # Get the last git commit id, will be added to the Searx version (see Dockerfile)
+ VERSION_GITCOMMIT=$(echo "$SEARX_GIT_VERSION" | cut -d- -f2-4)
+ build_msg DOCKER "Last commit : $VERSION_GITCOMMIT"
+
+ # Check consistency between the git tag and the searx/version.py file
+ # /! HACK : parse Python file with bash /!
+ # otherwise it is not possible build the docker image without all Python
+ # dependencies ( version.py loads __init__.py )
+ # SEARX_PYTHON_VERSION=$(python3 -c "import six; import searx.version; six.print_(searx.version.VERSION_STRING)")
+ SEARX_PYTHON_VERSION=$(cat searx/version.py | grep "\(VERSION_MAJOR\|VERSION_MINOR\|VERSION_BUILD\) =" | cut -d\= -f2 | sed -e 's/^[[:space:]]*//' | paste -sd "." -)
+ if [ "$(echo "$SEARX_GIT_VERSION" | cut -d- -f1)" != "$SEARX_PYTHON_VERSION" ]; then
+ err_msg "git tag: $SEARX_GIT_VERSION"
+ err_msg "searx/version.py: $SEARX_PYTHON_VERSION"
+ die 1 "Inconsistency between the last git tag and the searx/version.py file"
+ fi
+
+ # define the docker image name
+ GITHUB_USER=$(echo "${GIT_URL}" | sed 's/.*github\.com\/\([^\/]*\).*/\1/')
+ SEARX_IMAGE_NAME="${SEARX_IMAGE_NAME:-${GITHUB_USER:-searx}/searx}"
+
+ # build Docker image
+ build_msg DOCKER "Building image ${SEARX_IMAGE_NAME}:${SEARX_GIT_VERSION}"
+ docker build \
+ --build-arg GIT_URL="${GIT_URL}" \
+ --build-arg SEARX_GIT_VERSION="${SEARX_GIT_VERSION}" \
+ --build-arg VERSION_GITCOMMIT="${VERSION_GITCOMMIT}" \
+ --build-arg LABEL_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
+ --build-arg LABEL_VCS_REF="$(git rev-parse HEAD)" \
+ --build-arg LABEL_VCS_URL="${GIT_URL}" \
+ --build-arg TIMESTAMP_SETTINGS="$(git log -1 --format="%cd" --date=unix -- searx/settings.yml)" \
+ --build-arg TIMESTAMP_UWSGI="$(git log -1 --format="%cd" --date=unix -- dockerfiles/uwsgi.ini)" \
+ -t "${SEARX_IMAGE_NAME}:latest" -t "${SEARX_IMAGE_NAME}:${SEARX_GIT_VERSION}" .
+
+ if [ "$1" = "push" ]; then
+ docker push "${SEARX_IMAGE_NAME}:latest"
+ docker push "${SEARX_IMAGE_NAME}:${SEARX_GIT_VERSION}"
+ fi
+ )
+ dump_return $?
+}
+
+# shellcheck disable=SC2119
+gecko.driver() {
+ pyenv.install
+
+ build_msg INSTALL "gecko.driver"
+ # run installation in a subprocess and activate pyenv
+ ( set -e
+ # shellcheck source=/dev/null
+ source "${PY_ENV_BIN}/activate"
+
+ # TODO : check the current geckodriver version
+ geckodriver -V > /dev/null 2>&1 || NOTFOUND=1
+ set +e
+ if [ -z "$NOTFOUND" ]; then
+ build_msg INSTALL "geckodriver already installed"
+ return
+ fi
+ PLATFORM="$(python3 -c 'import platform; print(platform.system().lower(), platform.architecture()[0])')"
+ case "$PLATFORM" in
+ "linux 32bit" | "linux2 32bit") ARCH="linux32";;
+ "linux 64bit" | "linux2 64bit") ARCH="linux64";;
+ "windows 32 bit") ARCH="win32";;
+ "windows 64 bit") ARCH="win64";;
+ "mac 64bit") ARCH="macos";;
+ esac
+ GECKODRIVER_URL="https://github.com/mozilla/geckodriver/releases/download/$GECKODRIVER_VERSION/geckodriver-$GECKODRIVER_VERSION-$ARCH.tar.gz";
+
+ build_msg GECKO "Installing ${PY_ENV_BIN}/geckodriver from $GECKODRIVER_URL"
+
+ FILE="$(mktemp)"
+ wget -qO "$FILE" -- "$GECKODRIVER_URL" && tar xz -C "${PY_ENV_BIN}" -f "$FILE" geckodriver
+ rm -- "$FILE"
+ chmod 755 -- "${PY_ENV_BIN}/geckodriver"
+ )
+ dump_return $?
+}
+
+node.env() {
+ local err=0
+ pushd "${REPO_ROOT}" &> /dev/null
+ # shellcheck disable=SC2230
+ which npm &> /dev/null || die 1 'node.env - npm is not found!'
+
+ ( set -e
+ # shellcheck disable=SC2030
+ PATH="$(npm bin):$PATH"
+ export PATH
+
+ build_msg INSTALL "npm install $NPM_PACKAGES"
+ # shellcheck disable=SC2086
+ npm install $NPM_PACKAGES
+
+ cd "${REPO_ROOT}/searx/static/themes/oscar"
+ build_msg INSTALL "($(pwd)) npm install"
+ npm install
+
+ build_msg INSTALL "($(pwd)) npm install"
+ cd "${REPO_ROOT}/searx/static/themes/simple"
+ npm install
+ )
+ err=$?
+ popd &> /dev/null
+ dump_return "$err"
+}
+
+node.clean() {
+
+ build_msg CLEAN "locally installed npm dependencies"
+ rm -rf \
+ ./node_modules \
+ ./package-lock.json \
+ ./searx/static/themes/oscar/package-lock.json \
+ ./searx/static/themes/oscar/node_modules \
+ ./searx/static/themes/simple/package-lock.json \
+ ./searx/static/themes/simple/node_modules
+ dump_return $?
+}
+
+py.build() {
+ build_msg BUILD "[pylint] python package ${PYDIST}"
+ pyenv.cmd python setup.py \
+ sdist -d "${PYDIST}" \
+ bdist_wheel --bdist-dir "${PYBUILD}" -d "${PYDIST}"
+}
+
+py.clean() {
+ build_msg CLEAN pyenv
+ ( set -e
+ pyenv.drop
+ [ "$VERBOSE" = "1" ] && set -x
+ rm -rf "${PYDIST}" "${PYBUILD}" "${PY_ENV}" ./.tox ./*.egg-info
+ find . -name '*.pyc' -exec rm -f {} +
+ find . -name '*.pyo' -exec rm -f {} +
+ find . -name __pycache__ -exec rm -rf {} +
+ )
+}
+
+pyenv.check() {
+ cat <<EOF
+import yaml
+print('import yaml --> OK')
+EOF
+}
+
+pyenv.install() {
+
+ if ! pyenv.OK; then
+ py.clean > /dev/null
+ fi
+ if pyenv.install.OK > /dev/null; then
+ return 0
+ fi
+ ( set -e
+ pyenv
+ build_msg PYENV "[install] pip install -e 'searx${PY_SETUP_EXTRAS}'"
+ "${PY_ENV_BIN}/python" -m pip install -e ".${PY_SETUP_EXTRAS}"
+ buildenv
+ ) || die 42 "error while build & install pyenv (${PY_ENV_BIN})"
+}
+
+pyenv.uninstall() {
+ build_msg PYENV "[pyenv.uninstall] uninstall packages: ${PYOBJECTS}"
+ pyenv.cmd python setup.py develop --uninstall 2>&1 \
+ | prefix_stdout "${_Blue}PYENV ${_creset}[pyenv.uninstall] "
+
+}
+
+pypi.upload() {
+ py.clean
+ py.build
+ # https://github.com/pypa/twine
+ pyenv.cmd twine upload "${PYDIST}"/*
+}
+
+pypi.upload.test() {
+ py.clean
+ py.build
+ pyenv.cmd twine upload -r testpypi "${PYDIST}"/*
+}
+
+test.pylint() {
+ # shellcheck disable=SC2086
+ ( set -e
+ build_msg TEST "[pylint] \$PYLINT_FILES"
+ pyenv.cmd python ${PYLINT_OPTIONS} ${PYLINT_VERBOSE} \
+ "${PYLINT_FILES[@]}"
+
+ build_msg TEST "[pylint] searx/engines"
+ pyenv.cmd python ${PYLINT_OPTIONS} ${PYLINT_VERBOSE} \
+ --disable="${PYLINT_SEARX_DISABLE_OPTION}" \
+ --additional-builtins="${PYLINT_ADDITIONAL_BUILTINS_FOR_ENGINES}" \
+ searx/engines
+
+ build_msg TEST "[pylint] searx tests"
+ pyenv.cmd python ${PYLINT_OPTIONS} ${PYLINT_VERBOSE} \
+ --disable="${PYLINT_SEARX_DISABLE_OPTION}" \
+ --ignore=searx/engines \
+ tests
+ )
+ dump_return $?
+}
+
+test.pep8() {
+ build_msg TEST 'pycodestyle (formerly pep8)'
+ local _exclude=""
+ printf -v _exclude '%s, ' "${PYLINT_FILES[@]}"
+ pyenv.cmd pycodestyle \
+ --exclude="searx/static, searx/languages.py, $_exclude " \
+ --max-line-length=120 \
+ --ignore "E117,E252,E402,E722,E741,W503,W504,W605" \
+ searx tests
+ dump_return $?
+}
+
+test.unit() {
+ build_msg TEST 'tests/unit'
+ pyenv.cmd python -m nose2 -s tests/unit
+ dump_return $?
+}
+
+test.coverage() {
+ build_msg TEST 'unit test coverage'
+ ( set -e
+ pyenv.cmd python -m nose2 -C --log-capture --with-coverage --coverage searx -s tests/unit
+ pyenv.cmd coverage report
+ pyenv.cmd coverage html
+ )
+ dump_return $?
+}
+
+test.robot() {
+ build_msg TEST 'robot'
+ gecko.driver
+ PYTHONPATH=. pyenv.cmd python searx/testing.py robot
+ dump_return $?
+}
+
+test.clean() {
+ build_msg CLEAN "test stuff"
+ rm -rf geckodriver.log .coverage coverage/
+ dump_return $?
+}
+
+themes.all() {
+ ( set -e
+ node.env
+ themes.oscar
+ themes.simple
+ )
+ dump_return $?
+}
+
+themes.oscar() {
+ local gruntfile=searx/static/themes/oscar/gruntfile.js
+ build_msg GRUNT "${gruntfile}"
+ PATH="$(npm bin):$PATH" grunt --gruntfile "${gruntfile}"
+ dump_return $?
+}
+
+themes.simple() {
+ local gruntfile=searx/static/themes/simple/gruntfile.js
+ build_msg GRUNT "${gruntfile}"
+ PATH="$(npm bin):$PATH" grunt --gruntfile "${gruntfile}"
+ dump_return $?
+}
+
+# shellcheck disable=SC2119
+main() {
+
+ local _type
+ local cmd="$1"; shift
+
+ if [ "$cmd" == "" ]; then
+ help
+ err_msg "missing command"
+ return 42
+ fi
+
+ case "$cmd" in
+ --getenv) var="$1"; echo "${!var}";;
+ --help) help;;
+ --*)
+ help
+ err_msg "unknown option $cmd"
+ return 42
+ ;;
+ *)
+ _type="$(type -t "$cmd")"
+ if [ "$_type" != 'function' ]; then
+ err_msg "unknown command $1 / use --help"
+ return 42
+ else
+ "$cmd" "$@"
+ fi
+ ;;
+ esac
+}
+
+main "$@"
diff --git a/manage.sh b/manage.sh
deleted file mode 100755
index 3b5d2cf..0000000
--- a/manage.sh
+++ /dev/null
@@ -1,281 +0,0 @@
-#!/bin/sh
-
-BASE_DIR="$(dirname -- "`readlink -f -- "$0"`")"
-
-cd -- "$BASE_DIR"
-set -e
-
-# subshell
-PYTHONPATH="$BASE_DIR"
-SEARX_DIR="$BASE_DIR/searx"
-ACTION="$1"
-
-
-#
-# Python
-#
-
-update_packages() {
- pip install --upgrade pip
- pip install --upgrade setuptools
- pip install -Ur "$BASE_DIR/requirements.txt"
-}
-
-update_dev_packages() {
- update_packages
- pip install -Ur "$BASE_DIR/requirements-dev.txt"
-}
-
-install_geckodriver() {
- echo '[!] Checking geckodriver'
- # TODO : check the current geckodriver version
- set -e
- geckodriver -V > /dev/null 2>&1 || NOTFOUND=1
- set +e
- if [ -z "$NOTFOUND" ]; then
- return
- fi
- GECKODRIVER_VERSION="v0.24.0"
- PLATFORM="`python -c "import six; import platform; six.print_(platform.system().lower(), platform.architecture()[0])"`"
- case "$PLATFORM" in
- "linux 32bit" | "linux2 32bit") ARCH="linux32";;
- "linux 64bit" | "linux2 64bit") ARCH="linux64";;
- "windows 32 bit") ARCH="win32";;
- "windows 64 bit") ARCH="win64";;
- "mac 64bit") ARCH="macos";;
- esac
- GECKODRIVER_URL="https://github.com/mozilla/geckodriver/releases/download/$GECKODRIVER_VERSION/geckodriver-$GECKODRIVER_VERSION-$ARCH.tar.gz";
-
- if [ -z "$1" ]; then
- if [ -z "$VIRTUAL_ENV" ]; then
- printf "geckodriver can't be installed because VIRTUAL_ENV is not set, you should download it from\n %s" "$GECKODRIVER_URL"
- exit
- else
- GECKODRIVER_DIR="$VIRTUAL_ENV/bin"
- fi
- else
- GECKODRIVER_DIR="$1"
- mkdir -p -- "$GECKODRIVER_DIR"
- fi
-
- printf "Installing %s/geckodriver from\n %s" "$GECKODRIVER_DIR" "$GECKODRIVER_URL"
-
- FILE="`mktemp`"
- wget -qO "$FILE" -- "$GECKODRIVER_URL" && tar xz -C "$GECKODRIVER_DIR" -f "$FILE" geckodriver
- rm -- "$FILE"
- chmod 777 -- "$GECKODRIVER_DIR/geckodriver"
-}
-
-locales() {
- pybabel compile -d "$SEARX_DIR/translations"
-}
-
-update_useragents() {
- echo '[!] Updating user agent versions'
- python utils/fetch_firefox_version.py
-}
-
-pep8_check() {
- echo '[!] Running pep8 check'
- # ignored rules:
- # E402 module level import not at top of file
- # W503 line break before binary operator
- pep8 --exclude=searx/static --max-line-length=120 --ignore "E402,W503" "$SEARX_DIR" "$BASE_DIR/tests"
-}
-
-unit_tests() {
- echo '[!] Running unit tests'
- python -m nose2 -s "$BASE_DIR/tests/unit"
-}
-
-py_test_coverage() {
- echo '[!] Running python test coverage'
- PYTHONPATH="`pwd`" python -m nose2 -C --log-capture --with-coverage --coverage "$SEARX_DIR" -s "$BASE_DIR/tests/unit" \
- && coverage report \
- && coverage html
-}
-
-robot_tests() {
- echo '[!] Running robot tests'
- PYTHONPATH="`pwd`" python "$SEARX_DIR/testing.py" robot
-}
-
-tests() {
- set -e
- pep8_check
- unit_tests
- install_geckodriver
- robot_tests
- set +e
-}
-
-
-#
-# Web
-#
-
-npm_path_setup() {
- true
-}
-
-npm_packages() {
- npm_path_setup
-
- echo '[!] install NPM packages'
- cd -- "$BASE_DIR"
- npm install less@2.7 less-plugin-clean-css grunt-cli
-
- echo '[!] install NPM packages for oscar theme'
- cd -- "$BASE_DIR/searx/static/themes/oscar"
- npm install
-
- echo '[!] install NPM packages for simple theme'
- cd -- "$BASE_DIR/searx/static/themes/simple"
- npm install
-}
-
-build_style() {
- npm_path_setup
-
- lessc -x "$BASE_DIR/searx/static/$1" "$BASE_DIR/searx/static/$2"
-}
-
-styles() {
- npm_path_setup
-
- echo '[!] Building legacy style'
- build_style themes/legacy/less/style.less themes/legacy/css/style.css
- build_style themes/legacy/less/style-rtl.less themes/legacy/css/style-rtl.css
- echo '[!] Building courgette style'
- build_style themes/courgette/less/style.less themes/courgette/css/style.css
- build_style themes/courgette/less/style-rtl.less themes/courgette/css/style-rtl.css
- echo '[!] Building pix-art style'
- build_style themes/pix-art/less/style.less themes/pix-art/css/style.css
- echo '[!] Building simple style'
- build_style themes/simple/less/style.less themes/simple/css/searx.min.css
- build_style themes/simple/less/style-rtl.less themes/simple/css/searx-rtl.min.css
- echo '[!] Building logicodev'
- build_style themes/oscar/less/logicodev/oscar.less themes/oscar/css/logicodev.min.css
- echo '[!] Building logicodev-dark'
- build_style themes/oscar/less/logicodev-dark/oscar.less themes/oscar/css/logicodev-dark.min.css
- echo '[!] Building pointhi'
- build_style themes/oscar/less/pointhi/oscar.less themes/oscar/css/pointhi.min.css
-}
-
-grunt_build() {
- npm_path_setup
-
- echo '[!] Grunt build : oscar theme'
- grunt --gruntfile "$SEARX_DIR/static/themes/oscar/gruntfile.js"
- echo '[!] Grunt build : simple theme'
- grunt --gruntfile "$SEARX_DIR/static/themes/simple/gruntfile.js"
-}
-
-docker_build() {
- # Check if it is a git repository
- if [ ! -d .git ]; then
- echo "This is not Git repository"
- exit 1
- fi
-
- if [ ! -x "$(which git)" ]; then
- echo "git is not installed"
- exit 1
- fi
-
- if [ ! git remote get-url origin 2> /dev/null ]; then
- echo "there is no remote origin"
- exit 1
- fi
-
- # This is a git repository
-
- # "git describe" to get the Docker version (for example : v0.15.0-89-g0585788e)
- # awk to remove the "v" and the "g"
- SEARX_GIT_VERSION=$(git describe --match "v[0-9]*\.[0-9]*\.[0-9]*" HEAD 2>/dev/null | awk -F'-' '{OFS="-"; $1=substr($1, 2); $3=substr($3, 2); print}')
-
- # add the suffix "-dirty" if the repository has uncommited change
- git update-index -q --refresh
- if [ ! -z "$(git diff-index --name-only HEAD --)" ]; then
- SEARX_GIT_VERSION="${SEARX_GIT_VERSION}-dirty"
- fi
-
- # Get the last git commit id, will be added to the Searx version (see Dockerfile)
- VERSION_GITCOMMIT=$(echo $SEARX_GIT_VERSION | cut -d- -f2-4)
- echo "Last commit : $VERSION_GITCOMMIT"
-
- # Check consistency between the git tag and the searx/version.py file
- # /!\ HACK : parse Python file with bash /!\
- # otherwise it is not possible build the docker image without all Python dependencies ( version.py loads __init__.py )
- # SEARX_PYTHON_VERSION=$(python -c "import six; import searx.version; six.print_(searx.version.VERSION_STRING)")
- SEARX_PYTHON_VERSION=$(cat searx/version.py | grep "\(VERSION_MAJOR\|VERSION_MINOR\|VERSION_BUILD\) =" | cut -d\= -f2 | sed -e 's/^[[:space:]]*//' | paste -sd "." -)
- if [ $(echo "$SEARX_GIT_VERSION" | cut -d- -f1) != "$SEARX_PYTHON_VERSION" ]; then
- echo "Inconsistency between the last git tag and the searx/version.py file"
- echo "git tag: $SEARX_GIT_VERSION"
- echo "searx/version.py: $SEARX_PYTHON_VERSION"
- exit 1
- fi
-
- # define the docker image name
- # /!\ HACK to get the user name /!\
- GITHUB_USER=$(git remote get-url origin | sed 's/.*github\.com\/\([^\/]*\).*/\1/')
- SEARX_IMAGE_NAME="${GITHUB_USER:-searx}/searx"
-
- # build Docker image
- echo "Building image ${SEARX_IMAGE_NAME}:${SEARX_GIT_VERSION}"
- sudo docker build \
- --build-arg SEARX_GIT_VERSION="${SEARX_GIT_VERSION}" \
- --build-arg VERSION_GITCOMMIT="${VERSION_GITCOMMIT}" \
- --build-arg LABEL_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
- --build-arg LABEL_VCS_REF=$(git rev-parse HEAD) \
- --build-arg LABEL_VCS_URL=$(git remote get-url origin) \
- --build-arg TIMESTAMP_SETTINGS=$(git log -1 --format="%cd" --date=unix -- searx/settings.yml) \
- --build-arg TIMESTAMP_UWSGI=$(git log -1 --format="%cd" --date=unix -- dockerfiles/uwsgi.ini) \
- -t ${SEARX_IMAGE_NAME}:latest -t ${SEARX_IMAGE_NAME}:${SEARX_GIT_VERSION} .
-
- if [ "$1" = "push" ]; then
- sudo docker push ${SEARX_IMAGE_NAME}:latest
- sudo docker push ${SEARX_IMAGE_NAME}:${SEARX_GIT_VERSION}
- fi
-}
-
-#
-# Help
-#
-
-help() {
- [ -z "$1" ] || printf 'Error: %s\n' "$1"
- echo "Searx manage.sh help
-
-Commands
-========
- help - This text
-
- Build requirements
- ------------------
- update_packages - Check & update production dependency changes
- update_dev_packages - Check & update development and production dependency changes
- install_geckodriver - Download & install geckodriver if not already installed (required for robot_tests)
- npm_packages - Download & install npm dependencies
- update_useragents - Update useragents.json with the most recent versions of Firefox
-
- Build
- -----
- locales - Compile locales
- styles - Build less files
- grunt_build - Build files for themes
- docker_build - Build Docker image
-
- Tests
- -----
- unit_tests - Run unit tests
- pep8_check - Pep8 validation
- robot_tests - Run selenium tests
- tests - Run all python tests (pep8, unit, robot_tests)
- py_test_coverage - Unit test coverage
-"
-}
-
-[ "$(command -V "$ACTION" | grep ' function$')" = "" ] \
- && help "action not found" \
- || "$ACTION" "$2"
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 3e8f617..9dd71d6 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -1,16 +1,19 @@
-pallets-sphinx-themes
-Sphinx
-sphinx-issues
-mock==2.0.0
-nose2[coverage_plugin]
+mock==4.0.3
+nose2[coverage_plugin]==0.12.0
cov-core==1.15.0
-pep8==1.7.0
-plone.testing==5.0.0
-splinter==0.11.0
-transifex-client==0.12.2
-unittest2==1.1.0
-zope.testrunner==4.5.1
-selenium==3.141.0
-linuxdoc @ git+http://github.com/return42/linuxdoc.git
-sphinx-jinja
-sphinx-tabs
+pycodestyle==2.9.1
+pylint==2.14.5
+splinter==0.18.1
+transifex-client==0.14.3; python_version < '3.10'
+transifex-client==0.12.5; python_version == '3.10'
+selenium==4.3.0
+twine==4.0.1
+Pallets-Sphinx-Themes==2.0.2
+docutils==0.18
+Sphinx==5.1.1
+sphinx-issues==3.0.1
+sphinx-jinja==2.0.2
+sphinx-tabs==3.4.1
+sphinxcontrib-programoutput==0.17
+sphinx-autobuild==2021.3.14
+linuxdoc==20211220
diff --git a/requirements.txt b/requirements.txt
index 6e4df37..96e9bec 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,12 +1,13 @@
-certifi==2019.3.9
-babel==2.7.0
-flask-babel==0.12.2
-flask==1.0.2
-idna==2.8
-jinja2==2.10.1
-lxml==4.3.3
-pygments==2.1.3
-pyopenssl==19.0.0
-python-dateutil==2.8.0
-pyyaml==5.1
-requests[socks]==2.22.0
+Brotli==1.0.9
+babel==2.10.3
+certifi==2022.6.15
+flask-babel==2.0.0
+flask==2.2.1
+jinja2==3.1.2
+langdetect==1.0.9
+lxml==4.9.1
+pygments==2.12.0
+python-dateutil==2.8.2
+pyyaml==6.0
+requests[socks]==2.28.1
+setproctitle==1.3.1
diff --git a/searx/__init__.py b/searx/__init__.py
index d32fe00..0f9b435 100644
--- a/searx/__init__.py
+++ b/searx/__init__.py
@@ -15,51 +15,35 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
'''
-import certifi
import logging
+import searx.settings_loader
from os import environ
from os.path import realpath, dirname, join, abspath, isfile
-from io import open
-from ssl import OPENSSL_VERSION_INFO, OPENSSL_VERSION
-try:
- from yaml import safe_load
-except:
- from sys import exit, stderr
- stderr.write('[E] install pyyaml\n')
- exit(2)
+from sys import exit
+
+from searx.exceptions import SearxSettingsException
searx_dir = abspath(dirname(__file__))
engine_dir = dirname(realpath(__file__))
+static_path = abspath(join(dirname(__file__), 'static'))
+settings, settings_outgoing = {}, ''
+try:
+ settings, settings_load_message = searx.settings_loader.load_settings()
+except SearxSettingsException as e:
+ logger = logging.getLogger('searx')
+ logger.error('Failed to load settings file: {}'.format(str(e)))
+ exit(1)
-def check_settings_yml(file_name):
- if isfile(file_name):
- return file_name
- else:
- return None
-
-# find location of settings.yml
-if 'SEARX_SETTINGS_PATH' in environ:
- # if possible set path to settings using the
- # enviroment variable SEARX_SETTINGS_PATH
- settings_path = check_settings_yml(environ['SEARX_SETTINGS_PATH'])
-else:
- # if not, get it from searx code base or last solution from /etc/searx
- settings_path = check_settings_yml(join(searx_dir, 'settings.yml')) or check_settings_yml('/etc/searx/settings.yml')
-
-if not settings_path:
- raise Exception('settings.yml not found')
-# load settings
-with open(settings_path, 'r', encoding='utf-8') as settings_yaml:
- settings = safe_load(settings_yaml)
+if settings['ui']['static_path']:
+ static_path = settings['ui']['static_path']
'''
enable debug if
the environnement variable SEARX_DEBUG is 1 or true
(whatever the value in settings.yml)
or general.debug=True in settings.yml
-
disable debug if
the environnement variable SEARX_DEBUG is 0 or false
(whatever the value in settings.yml)
@@ -79,17 +63,56 @@ else:
logging.basicConfig(level=logging.WARNING)
logger = logging.getLogger('searx')
-logger.debug('read configuration from %s', settings_path)
-# Workaround for openssl versions <1.0.2
-# https://github.com/certifi/python-certifi/issues/26
-if OPENSSL_VERSION_INFO[0:3] < (1, 0, 2):
- if hasattr(certifi, 'old_where'):
- environ['REQUESTS_CA_BUNDLE'] = certifi.old_where()
- logger.warning('You are using an old openssl version({0}), please upgrade above 1.0.2!'.format(OPENSSL_VERSION))
-
+logger.info(settings_load_message)
logger.info('Initialisation done')
if 'SEARX_SECRET' in environ:
settings['server']['secret_key'] = environ['SEARX_SECRET']
if 'SEARX_BIND_ADDRESS' in environ:
settings['server']['bind_address'] = environ['SEARX_BIND_ADDRESS']
+
+
+class _brand_namespace:
+
+ @classmethod
+ def get_val(cls, group, name, default=''):
+ return settings.get(group, {}).get(name) or default
+
+ @property
+ def SEARX_URL(self):
+ return self.get_val('server', 'base_url')
+
+ @property
+ def CONTACT_URL(self):
+ return self.get_val('general', 'contact_url')
+
+ @property
+ def GIT_URL(self):
+ return self.get_val('brand', 'git_url')
+
+ @property
+ def GIT_BRANCH(self):
+ return self.get_val('brand', 'git_branch')
+
+ @property
+ def ISSUE_URL(self):
+ return self.get_val('brand', 'issue_url')
+
+ @property
+ def DOCS_URL(self):
+ return self.get_val('brand', 'docs_url')
+
+ @property
+ def PUBLIC_INSTANCES(self):
+ return self.get_val('brand', 'public_instances')
+
+ @property
+ def WIKI_URL(self):
+ return self.get_val('brand', 'wiki_url')
+
+ @property
+ def TWITTER_URL(self):
+ return self.get_val('brand', 'twitter_url')
+
+
+brand = _brand_namespace()
diff --git a/searx/answerers/__init__.py b/searx/answerers/__init__.py
index 444316f..8e2b9b3 100644
--- a/searx/answerers/__init__.py
+++ b/searx/answerers/__init__.py
@@ -1,12 +1,8 @@
from os import listdir
from os.path import realpath, dirname, join, isdir
-from sys import version_info
from searx.utils import load_module
from collections import defaultdict
-if version_info[0] == 3:
- unicode = str
-
answerers_dir = dirname(realpath(__file__))
@@ -36,10 +32,10 @@ def ask(query):
results = []
query_parts = list(filter(None, query.query.split()))
- if query_parts[0].decode('utf-8') not in answerers_by_keywords:
+ if not query_parts or query_parts[0] not in answerers_by_keywords:
return results
- for answerer in answerers_by_keywords[query_parts[0].decode('utf-8')]:
+ for answerer in answerers_by_keywords[query_parts[0]]:
result = answerer(query)
if result:
results.append(result)
diff --git a/searx/answerers/random/answerer.py b/searx/answerers/random/answerer.py
index 2dfb088..d5223e5 100644
--- a/searx/answerers/random/answerer.py
+++ b/searx/answerers/random/answerer.py
@@ -1,7 +1,6 @@
import hashlib
import random
import string
-import sys
import uuid
from flask_babel import gettext
@@ -10,12 +9,7 @@ from flask_babel import gettext
keywords = ('random',)
random_int_max = 2**31
-
-if sys.version_info[0] == 2:
- random_string_letters = string.lowercase + string.digits + string.uppercase
-else:
- unicode = str
- random_string_letters = string.ascii_lowercase + string.digits + string.ascii_uppercase
+random_string_letters = string.ascii_lowercase + string.digits + string.ascii_uppercase
def random_characters():
@@ -24,32 +18,32 @@ def random_characters():
def random_string():
- return u''.join(random_characters())
+ return ''.join(random_characters())
def random_float():
- return unicode(random.random())
+ return str(random.random())
def random_int():
- return unicode(random.randint(-random_int_max, random_int_max))
+ return str(random.randint(-random_int_max, random_int_max))
def random_sha256():
m = hashlib.sha256()
- m.update(b''.join(random_characters()))
- return unicode(m.hexdigest())
+ m.update(''.join(random_characters()).encode())
+ return str(m.hexdigest())
def random_uuid():
- return unicode(uuid.uuid4())
+ return str(uuid.uuid4())
-random_types = {b'string': random_string,
- b'int': random_int,
- b'float': random_float,
- b'sha256': random_sha256,
- b'uuid': random_uuid}
+random_types = {'string': random_string,
+ 'int': random_int,
+ 'float': random_float,
+ 'sha256': random_sha256,
+ 'uuid': random_uuid}
# required answerer function
@@ -70,4 +64,4 @@ def answer(query):
def self_info():
return {'name': gettext('Random value generator'),
'description': gettext('Generate different random values'),
- 'examples': [u'random {}'.format(x.decode('utf-8')) for x in random_types]}
+ 'examples': ['random {}'.format(x) for x in random_types]}
diff --git a/searx/answerers/statistics/answerer.py b/searx/answerers/statistics/answerer.py
index 73dd25c..abd4be7 100644
--- a/searx/answerers/statistics/answerer.py
+++ b/searx/answerers/statistics/answerer.py
@@ -1,11 +1,8 @@
-from sys import version_info
from functools import reduce
from operator import mul
from flask_babel import gettext
-if version_info[0] == 3:
- unicode = str
keywords = ('min',
'max',
@@ -30,21 +27,21 @@ def answer(query):
func = parts[0]
answer = None
- if func == b'min':
+ if func == 'min':
answer = min(args)
- elif func == b'max':
+ elif func == 'max':
answer = max(args)
- elif func == b'avg':
+ elif func == 'avg':
answer = sum(args) / len(args)
- elif func == b'sum':
+ elif func == 'sum':
answer = sum(args)
- elif func == b'prod':
+ elif func == 'prod':
answer = reduce(mul, args, 1)
if answer is None:
return []
- return [{'answer': unicode(answer)}]
+ return [{'answer': str(answer)}]
# required answerer function
diff --git a/searx/autocomplete.py b/searx/autocomplete.py
index ff89585..761c86c 100644
--- a/searx/autocomplete.py
+++ b/searx/autocomplete.py
@@ -16,107 +16,43 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
'''
-import sys
from lxml import etree
from json import loads
+from urllib.parse import urlencode
+
+from requests import RequestException
+
from searx import settings
-from searx.languages import language_codes
-from searx.engines import (
- categories, engines, engine_shortcuts
-)
from searx.poolrequests import get as http_get
-from searx.url_utils import urlencode
-
-if sys.version_info[0] == 3:
- unicode = str
+from searx.exceptions import SearxEngineResponseException
def get(*args, **kwargs):
if 'timeout' not in kwargs:
kwargs['timeout'] = settings['outgoing']['request_timeout']
-
+ kwargs['raise_for_httperror'] = True
return http_get(*args, **kwargs)
-def searx_bang(full_query):
- '''check if the searchQuery contain a bang, and create fitting autocompleter results'''
- # check if there is a query which can be parsed
- if len(full_query.getSearchQuery()) == 0:
- return []
+def brave(query, lang):
+ # brave search autocompleter
+ url = 'https://search.brave.com/api/suggest?{query}'
+
+ resp = get(url.format(query=urlencode({'q': query})))
results = []
- # check if current query stats with !bang
- first_char = full_query.getSearchQuery()[0]
- if first_char == '!' or first_char == '?':
- if len(full_query.getSearchQuery()) == 1:
- # show some example queries
- # TODO, check if engine is not avaliable
- results.append(first_char + "images")
- results.append(first_char + "wikipedia")
- results.append(first_char + "osm")
- else:
- engine_query = full_query.getSearchQuery()[1:]
-
- # check if query starts with categorie name
- for categorie in categories:
- if categorie.startswith(engine_query):
- results.append(first_char + '{categorie}'.format(categorie=categorie))
-
- # check if query starts with engine name
- for engine in engines:
- if engine.startswith(engine_query.replace('_', ' ')):
- results.append(first_char + '{engine}'.format(engine=engine.replace(' ', '_')))
-
- # check if query starts with engine shortcut
- for engine_shortcut in engine_shortcuts:
- if engine_shortcut.startswith(engine_query):
- results.append(first_char + '{engine_shortcut}'.format(engine_shortcut=engine_shortcut))
-
- # check if current query stats with :bang
- elif first_char == ':':
- if len(full_query.getSearchQuery()) == 1:
- # show some example queries
- results.append(":en")
- results.append(":en_us")
- results.append(":english")
- results.append(":united_kingdom")
- else:
- engine_query = full_query.getSearchQuery()[1:]
-
- for lc in language_codes:
- lang_id, lang_name, country, english_name = map(unicode.lower, lc)
-
- # check if query starts with language-id
- if lang_id.startswith(engine_query):
- if len(engine_query) <= 2:
- results.append(u':{lang_id}'.format(lang_id=lang_id.split('-')[0]))
- else:
- results.append(u':{lang_id}'.format(lang_id=lang_id))
-
- # check if query starts with language name
- if lang_name.startswith(engine_query) or english_name.startswith(engine_query):
- results.append(u':{lang_name}'.format(lang_name=lang_name))
-
- # check if query starts with country
- if country.startswith(engine_query.replace('_', ' ')):
- results.append(u':{country}'.format(country=country.replace(' ', '_')))
-
- # remove duplicates
- result_set = set(results)
-
- # remove results which are already contained in the query
- for query_part in full_query.query_parts:
- if query_part in result_set:
- result_set.remove(query_part)
-
- # convert result_set back to list
- return list(result_set)
+ if resp.ok:
+ data = loads(resp.text)
+ for suggestion in data[1]:
+ results.append(suggestion)
+
+ return results
def dbpedia(query, lang):
# dbpedia autocompleter, no HTTPS
- autocomplete_url = 'http://lookup.dbpedia.org/api/search.asmx/KeywordSearch?'
+ autocomplete_url = 'https://lookup.dbpedia.org/api/search.asmx/KeywordSearch?'
response = get(autocomplete_url + urlencode(dict(QueryString=query)))
@@ -124,8 +60,7 @@ def dbpedia(query, lang):
if response.ok:
dom = etree.fromstring(response.content)
- results = dom.xpath('//a:Result/a:Label//text()',
- namespaces={'a': 'http://lookup.dbpedia.org/'})
+ results = dom.xpath('//Result/Label//text()')
return results
@@ -157,12 +92,19 @@ def google(query, lang):
def startpage(query, lang):
# startpage autocompleter
- url = 'https://startpage.com/do/suggest?{query}'
+ lui = ENGINES_LANGUAGES['startpage'].get(lang, 'english')
+ url = 'https://startpage.com/suggestions?{query}'
+ resp = get(url.format(query=urlencode({'q': query, 'segment': 'startpage.udog', 'lui': lui})))
+ data = resp.json()
+ return [e['text'] for e in data.get('suggestions', []) if 'text' in e]
- resp = get(url.format(query=urlencode({'query': query}))).text.split('\n')
- if len(resp) > 1:
- return resp
- return []
+
+def swisscows(query, lang):
+ # swisscows autocompleter
+ url = 'https://swisscows.ch/api/suggest?{query}&itemsCount=5'
+
+ resp = loads(get(url.format(query=urlencode({'query': query}))).text)
+ return resp
def qwant(query, lang):
@@ -192,10 +134,23 @@ def wikipedia(query, lang):
return []
-backends = {'dbpedia': dbpedia,
+backends = {'brave': brave,
+ 'dbpedia': dbpedia,
'duckduckgo': duckduckgo,
'google': google,
'startpage': startpage,
+ 'swisscows': swisscows,
'qwant': qwant,
'wikipedia': wikipedia
}
+
+
+def search_autocomplete(backend_name, query, lang):
+ backend = backends.get(backend_name)
+ if backend is None:
+ return []
+
+ try:
+ return backend(query, lang)
+ except (RequestException, SearxEngineResponseException):
+ return []
diff --git a/searx/data/__init__.py b/searx/data/__init__.py
new file mode 100644
index 0000000..3d158d3
--- /dev/null
+++ b/searx/data/__init__.py
@@ -0,0 +1,50 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""This module holds the *data* created by::
+
+ make data.all
+
+"""
+
+__all__ = [
+ 'ENGINES_LANGUAGES',
+ 'CURRENCIES',
+ 'USER_AGENTS',
+ 'EXTERNAL_URLS',
+ 'WIKIDATA_UNITS',
+ 'EXTERNAL_BANGS',
+ 'OSM_KEYS_TAGS',
+ 'ahmia_blacklist_loader',
+]
+
+import json
+from pathlib import Path
+
+data_dir = Path(__file__).parent
+
+
+def _load(filename):
+ with open(data_dir / filename, encoding='utf-8') as f:
+ return json.load(f)
+
+
+def ahmia_blacklist_loader():
+ """Load data from `ahmia_blacklist.txt` and return a list of MD5 values of onion
+ names. The MD5 values are fetched by::
+
+ searx_extra/update/update_ahmia_blacklist.py
+
+ This function is used by :py:mod:`searx.plugins.ahmia_filter`.
+
+ """
+ with open(str(data_dir / 'ahmia_blacklist.txt'), encoding='utf-8') as f:
+ return f.read().split()
+
+
+ENGINES_LANGUAGES = _load('engines_languages.json')
+CURRENCIES = _load('currencies.json')
+USER_AGENTS = _load('useragents.json')
+EXTERNAL_URLS = _load('external_urls.json')
+WIKIDATA_UNITS = _load('wikidata_units.json')
+EXTERNAL_BANGS = _load('external_bangs.json')
+OSM_KEYS_TAGS = _load('osm_keys_tags.json')
diff --git a/searx/data/ahmia_blacklist.txt b/searx/data/ahmia_blacklist.txt
new file mode 100644
index 0000000..76ca95c
--- /dev/null
+++ b/searx/data/ahmia_blacklist.txt
@@ -0,0 +1,44755 @@
+0000df9ec834c3b9629711da4688326d
+0003cab06fd11db63a23cb59a6e28b37
+0006770659f9e0bc20f0a1971532120c
+00068777b8c3937133e788cd84229143
+0007113d199f1907550c2f7a3b8b2e46
+0007f81cce5fa0b0ca7c28a3f0712e94
+0008f4726e2b9231c09355c0a176cd94
+000ae4137fab55b79427ceb4c9c78546
+000daa03f6ef54bf0d4e3695eab85cbb
+0010e177f6fcaf499b1fd518046bde0a
+0013a67e08315e293c274799fa865e01
+00140a082312f66c426de5ab0c2c6f1c
+001489ecdac8b8535f34bb65a678003d
+001491a9b5eb1446c8e32f8647017998
+0014fe8ba26857f6b95509c8930c862f
+001558846b21610dd4fcda432768ac50
+00175aa5688040a89f3ca2278cdc5319
+001a850b58240b760ed5c11821e64c7b
+001ae86997f8b3e517a46101df2ac85c
+001bc0d1cf3720142d61fce563588dd2
+0020324404a7aeae1fd7f96295755d3f
+00204ab92756bdfc63ad7690aaf6cfcd
+00237097eb46fabd8c8d20eb27c4def6
+0025871da27e96d8ed372e2b29965241
+002623984253e4df15d50fb8ff26a44e
+0026fafbe1b7235b3a4d8eb854060517
+00290607695b936f1b9adad601928150
+002ab3c58ec26372ca8a16fa04097fad
+002b46dff2ce4613c330b92d4d71d0f0
+002c81d45bb05fbbd77dd5eea0be3eae
+002ca30d3c48fbabec4748d1ad8af561
+002f82d895d220051c5c490f07bd2f06
+002f8dbee02d6ce676d21c3c4e9a443b
+0032223cd6dad0feb29a6b93756702e8
+0033533c049d45cdc0a9616cbb689d5a
+0034e8102d0d6b44a12c44940e79e134
+00367fbc39135a28347dd17f25095cc4
+0036937671fadfdd6c033bb27900a87d
+00373196a4e80c24a520f08ed7232e30
+003752226daf5054dc437ac1478a1af0
+00377cce47784d49d250ec1527dd4c6a
+00392e810e7825e5a7e4635795626015
+003b7721ad5fd66dcb70ca66a554abe4
+003ed39119889b93fae7751c2ceb7756
+004088f023d64f5d4421769faf329344
+004107d142d48b57fa6f38c3e06e1609
+004252b7987ff84def13ede74f52d0e7
+00428de7eb3a0701d4668ac5246a2513
+00433ed7d7fb1e659de569635558a96c
+004545573381002c98edbea07ecce710
+0048dcde7e2afd2cecaf7ef7180780e0
+004ae06750a4abe2b059de1730d2cec2
+004b57d5743fc5701fc1457de89d8dbf
+004eec8fabd65ba25a5df135a1c47158
+005058cec8d6ffd3bad1c749a25589bd
+0050e28cc0d0b10628aaf90770826e8c
+0052673bf275160f08ae6600d3b25592
+00529e1e56b810d04c82c5341ae3f928
+00538809ed5fd00a7d145dc536e105f1
+0053df1dd38b0a7e373723ad6c7307b8
+005886cfa8c4a7a4236c8548780e33ca
+00588d9846e6318993a96ccc65df32a0
+00596c7f68352936aaaa99e6188db013
+005aa0ccff6de439ab4e4e628b0552af
+005b01428e5ee8cc417a644bca40a5c2
+005b7acb3c2804853e576aa65663bdce
+005c342c36571dca974e4a826513ac7c
+005ebf7ee66a8bdc663fc42026c6045e
+0061c1bf5df10a523c4ab5576958a4b4
+0061c5b5415192023f7739d4ee9a5af5
+00622d07e1cdb94e1aa141662a0a62fd
+0064e989c877e0360af0813f8799f22c
+0064f431d0ddfdc3f6dfdccdeee12848
+006764d9f710c03932876234851ffc7c
+006a36bb917187b130c66aa495f101d0
+006c861abdef9116d28fecab2c234581
+006eaef81ffc3975adb29e010278499f
+006ed781ea4e05accc7727a58316a67a
+006ffb781fb6446b4c8b09e940e9114e
+00709db45175d27c19983117b777e756
+0071aea64b421a90b58f1fcab4a52867
+0071f5068289a6770bc9003c9fbfd393
+0073818c20b2c7709056e3196ade537b
+0074f2c9b3119b8c323b79c33480a3fa
+00790c46e1c25d2c58742f710d6ecf18
+007a73add89e3bf5f8ca180184604ebb
+007b7aaa348d99204dd924ab0aac069c
+007be7c1c38f6f29f77b65ade2b01853
+007c3df36f8cb0a35ad4fba7c28128e9
+00812eca773d35ae06ab6fcb9eef1faa
+008130fcb3cf5cd9ef16518cfe1fb84d
+008368aaa25323767989ad7af56cc017
+0084f65f0faed7031722c0843d007aa3
+008518ea784c87e349a6ba2e85dfde42
+008627eeb67502af5b2627db6b98c7d7
+008749e26c3566eb70bf1d0f256e3746
+0088a51fad8d3bbb59a101c4e50a9c50
+0088da9ac9893cfb8c52ca6ea8014b30
+0089ebd36579ccde926a3718499a162f
+008b0025d3f03ace831c0967fa4a0ecd
+008bf15bf1014a3d9b9cdb3f24d0d7df
+008c5c0d9174a0ae90c59cf2028557ec
+00918e625657958bbd5fd08d9a931c93
+00928ba6bd24dfd87e12a830900a6d89
+00929b53c605e9e50cc818f382be038f
+00998ecf41af4b2a4fd0af9b905ed429
+009a9d8c06a484906cbb5ddf6cdcc548
+009dc638a21ee6eac7d6bb201916cac1
+009e6a6fea5f7e294bf52a1b9b9fbec4
+009f17df590c0874ca87d8ef66f1ce16
+00a150cf57d2a0f73f4467c40d15dc6f
+00a2d9e07f21e3cb1c9035e60393f552
+00a3b612a567540163894169b78b9c92
+00a52c8bbdd9ddcd6d761b978882ecf4
+00a5822300c2700b0031dbebb691d6ac
+00a6f15f43f968e9f6def4d168921a0c
+00a734f36e6e72ca14b9cfe045663e5b
+00a7f2d21c6cba3ae02422401d49e317
+00a8568b63b7ea784fade52085ae5655
+00a86e650b0e6a072bfb61b57f7f325d
+00a87c91707443767381cd3da37cf820
+00a89d2291d1a3a1fd160391ad9f1139
+00aabfb8d5c6cf5f70e2a90695f1c5b6
+00aac9486d91848f1a8631ff1df2c8e8
+00ab0106dbd7b42b47f63255b76a434f
+00ababcc7391140161654ec1a427207e
+00ac1a128b2451206b2a7c6366352c8a
+00ac36de4ba62d29d5d37e507250d7d9
+00ac3bce80bdc994f303941bc803cbb8
+00ac882ec127f5f66f5c86b471cf1d6f
+00b0dcc5348bfc33f3824f243a24f410
+00b14adf176addf980b83eb857673d2b
+00b1cc20a6acd519da09931768420cbf
+00b2867a7621364a6f3ebc041969071a
+00b3176aa3ac9172b3d113d8090a1b96
+00b55f61f2b761d765ed4d4d403ad29f
+00b7238d24ffb710abf3f4d212b02a9f
+00b72c5fe0695156463eeef0b4dd08fc
+00bc34c38e64b36ea90a1d6b70cee2b5
+00bc825caac9e609b7acc13b44ed895e
+00be79509dd4be21c2cfb20e2e54c0e4
+00c0f51214c0cbc0d32b80caecde7eb2
+00c11318c753dfc611f2e297fe68f7a1
+00c25827b5c5bb282ada3a46a9dfed37
+00c2cba85a98f01f87edb2ac7a291584
+00c38c86555fed53b6fdad4d19b59198
+00c5e3a334cae51709c9b98dc24274a9
+00c97286685afa91fdcc05d08d8f4d31
+00ca86cfe82e0c304a208351ee25c859
+00cca98625c18be0bfe171a8be0919a8
+00cebe9444c60d2b191b9a5cdb64735e
+00d1dee7b7bbf0d4c522138c48d53254
+00d297325d32283a85a11d966e70efa5
+00d46343fead75e59c3d2b3ad9651944
+00d67fd304e9844863d9ff876ab3815a
+00d9c83b0193b470637606b8815d95a0
+00db9d9ff9641feacad14176b6586954
+00e2beeb6c12995c892fcc9c15841dd9
+00e2ff482759f5e96f15c58ef45a0a06
+00e4fc981bdf5b7f387212199de7a93a
+00e63f5ac5feab9def5b9634535af52d
+00e769205f21d6388c5a36761d823abf
+00e8a9d388029ba091e8cbcf8b176882
+00ea09655a96ce6fc57e09aad7a3e33d
+00ea4e2e7fd07475f866efde3cf29de5
+00eae5bf5e9fdbf72294d51652e82497
+00eb1e933df9aadc281fddd853cb9f32
+00eb2e41127dfe076382f9cc340f404a
+00eced210bbaf3c73ce387594b40edae
+00ee964a85a4c681ccab861fc6ee46d7
+00eeedd09241b6263b0fb4ec0133f313
+00ef7b33a4abe7fe1aabdb7b54e4c73e
+00f0e6d50f2a4ea77be899425d22a0af
+00f1979c84a61faa23d2954f1e47e296
+00f25e838a6fb5bac49fbdb3ded92b6b
+00f3dd2bb0b34bd96b426884ec5dccad
+00f729b27968913438fbf67691ebef6b
+00fae345266fcc6fb69a7f1c97eb0199
+00fdb7c3c22a6656762388246ac5cc63
+01005747fc8f497cd8e0dcab8e54ea52
+0100cd96b3a67310dd5f8adcf584c631
+01019b810dda9c5482e89521b22402a2
+0102609d41064e91af238217c8eef55a
+0103f981ed3351e36a12d29d631224f8
+0104cf59a892a855666f0d935d362e60
+010576efc5c681f6478e1fda28e96a04
+010669db7b90458bbeb4e3de4c758f78
+01067d8a4b16ec2466200c3e41961c1d
+0107dcdfe464a8f1a7992d7a4cd899a1
+0107f8b49e60e9e771a11681f93f1886
+010890ddb4c62da8dfc174e418437722
+010a7397af0ca4262f5a1206741c62a8
+010b487526a9e4fe48f909183058a559
+010d9ec5dc9f06a8e9f96cdcec57f50d
+010ea7123ee29776e390dba449cf9c5c
+01110c139c92706867ecf10a66fff2b7
+01112c8bd286e8f54f4a6960bc5f1ebf
+0111f597eb58bcf715807b568b2a1d86
+0112d1ebc8e2bddd8e1b2ee800dd15e6
+01137cb5055be9e9e8f28231390439aa
+011385fc99a8a4338d417d787c469303
+0115d243a945d9c7c986f7c5d201a984
+0116d303c7f51659900e56455e80ddd9
+01177c79cc4dae823970094c4822b6fb
+011b5d530cece0a3fed2f1bee9a12256
+011b68d0c9ab00ec43883d0dfe754975
+011cb4aa42c9e9dd6a6480c80e4d71aa
+011e91a34633963004d19c14b9e8eaa1
+0121791d3a0ab2b6f9adc85a7c3320ba
+0121f5cc5fab9e26c0da5664641e8395
+012320e2e8f98a3b1e4346a5db676d2f
+012418c7b1781c366ece21273a2d21bf
+0124cf594fd210d06a81cdc31ed01e20
+0126a51f3870f1d3e391ecdfc393c277
+012a10e3befc963ddc87c63ae2911878
+012b36bdf7cd2f6c7cb60b0b3210f10c
+012cade01f2bee6433cc18bacf3fb53b
+012ef974f5b4f307d168e00ada58cf96
+012f8a8b27319245ebbafc3e704e1ab6
+01302ba2783863d723c77a152e50f3cd
+0130b8624d05dae5e1078e22c82f3678
+0132046e09962506aa87070978dec01e
+01323cea7c44f7d4587d83d7e9fe232c
+01343672491e3cefd8a2325a45c5907d
+0134e00e8fc6faa9f87978e1a370f4c2
+013572b9645eb7eb845e452713145563
+013a052e4b8e77a668d749519cdfeccb
+013ac9677cc3e343a9cd7586fa4d6d7b
+013ebdbd401680aa05a5ffacd18a54c9
+013f07dd014e877dbdfc4942501bfa64
+013f8f821ab56040792f528dfcd63967
+0140a817d177b78dd06c98b8fe0e370a
+01422d583f50a0ed2cab337fef24612f
+0143eef9b9c5a94a40b95f79c0d835da
+01440f491db052b0b7918508ed138362
+014460c8ab46c9bfbf64c740f5fe9768
+0146656b5d8c4dc633d1759356bca217
+01468a51cba86725326c71b96cbdb74a
+0147327639f2821d0b306aea87c2724c
+0148b20eafc7a4822fee536c4532ba3c
+014951232e2754a25816c60ee9a5a7bf
+014aa5be8354f305cfae3d891c32ffc7
+014bd94938c409dbe20c828201b77748
+014be60ea314977759a3a853595f06c5
+014f5d09fca09a8e6345e1b34935b0f1
+015251e162b384042518c9131703813d
+0152f35578dde3a1458508c41983c049
+015428d13e944f43fe86c0078087c05c
+015717028e648c66cc214993dda0aa7c
+01580f129485a12c915ca506c3deacbf
+015b88beae02ae53417fd1c9b0d2a64e
+015c1a46929d6ac6262acb4adddb7ed8
+015cdf40a04a33915782feb2527447d8
+015d0c5eeb4e51496cc35253ac910b51
+015e18e7f2207ff2c57a0328ef004880
+015fe7fe5c730007b91c95fd24157fc8
+01609515a753b4134a1c5fde01aa3839
+0166b88b1367eacd9053cf9a3b8bfc8f
+0166b9829bbf2f34904259f2fafa78cf
+0167027014cec4ecf85633de9d095ac6
+016791d8701640b7e50386542bd163d3
+0168b9c0b31b73358fb734913cca05b1
+016c737fe17e910ced778c22b5af045a
+016df2bab5bad83012628b131637924d
+016e99308792440162960f48ceb67b30
+01722ee27c4cb3334c2e79d55b6d4122
+01766adf40de081c87f5d8b439cb3387
+0179b2d47ad553c109a77735fd9e54b5
+017a9a210b5b68cfdf48de0f4869f0d0
+017c51d8596c46827ebdf3af1450015b
+01810c8f060c81e5a57451ae18024c10
+01814982bd45481f313f7cf0d8c3c11a
+018189b5fa04493aca3247bfc3968d48
+01819a13bf046e82abab9e615a8b152d
+0184616bfe96790c6cdb995e6e240f28
+01848ebce46a709a1cc8bd16f830bb4a
+01849361b3f785a397c770291b84d2f3
+01855839a423395a888e944413028d60
+01857cacf63afee9b7fcfbd4d8a883ee
+01867f9ffa48aa3e2fa7c8946b490a54
+018783e449e7985ca9c03d85f1a70a28
+0187eb3cf5945eb53c507b5b96b4cda9
+0189372affb5fa4757928e477990eea8
+018a97ef1b4b8750a08606b7582409a6
+018b759cfad74306016a57e8cec694a9
+018ecf2b8adb2004617eb9198283d809
+0192336fcf7afb7e47cb030d3390e112
+0195d42d2711bb716dc2ec9f74be17ae
+01972455883dfb10b1a86a4007b9fe94
+0197260635dfec18d1ca367413fc20ff
+0197fd936ab57b542a4bffceaeb2d6f0
+019800ad8b7a58ef8343a510d9d54981
+019ae64ed14fde2e9c6fe55e801357e0
+019ed8a1a90459b1040a42194628abbf
+019f1e59e2117a07a5fce9f4fe7a7f58
+019fb164fb61000c2702423ec2ffd9ed
+01a048c0e13947a75e43c4a1125229d5
+01a1002cf55d0c19469c9ad6f595b51c
+01a3a96af1bbeca1c0ccdc2e38176b32
+01a3fea2e45541449e96bbc4471751ab
+01a54a1ccd8f8e2136971b6b20ddada7
+01a57bfca99842bd8dc6d00ff6faa6cf
+01a5ab9e2080b00ccae00dbd13191428
+01a6228b2025aa03e414c77f3b4affc2
+01a7074d0c29e85f1529d72a092813ed
+01a83de81a34db23d8e1d0cdedb226d7
+01ab223f5e6ea1211ed1b03ee32f95a3
+01ad115354fb2d23e8339b9d14d546fd
+01ada61c451b826e8addae3677024c59
+01afc10b4b0e2a1791a151067415c938
+01b2365e16517276e42306a516453589
+01b283255880ffd6de7ce731079eec8c
+01b37288412b4e4ebfc90351ee373887
+01b70cc3d4b5d4c2d3368f28a2945e8a
+01bc384c9a5c250628fa1ab2ca822ebd
+01bc3e531b68b8062dfb0cd50dc15e73
+01bcce356deeeb1df9dcb696cd6fa4df
+01be4522e1df2876cb01b5d8ab64512a
+01be5ffc8325fada193e22e9f01a57df
+01bf0b44d887d0d50dc65bc44ec714fd
+01bfce0b47cda6c4a61241a611273b43
+01c083cbd068d0ff1bcc2a958f315e04
+01c4b808a63123615e765e039877f201
+01c50b5018354b89a268dc88a22fa5ff
+01c5e436297f479266036008f5cd44b9
+01c65e8a0d98c04393bc30087ed5e088
+01c8635bf9683e71b9e794b4c5e85229
+01cc4e13d5ee5c25fdb3397ee2adfdd6
+01cc73f7be6c6a09f1405f21f737a364
+01cdeaa737f6ce40580841b7f7de9ffb
+01ce4cd52aee7cbb98badf2758767ef5
+01d2bebc3d521bd49cec1dcf1807b861
+01d33321a4e739d55afe67607af95506
+01d697c9fce0d7df93008c6e6a1d7da9
+01d7a435a48346581dd44056dbc4a25a
+01dbf7385297df3709c071055a0bbe0f
+01dc506de4a7164f19c43de147ba8582
+01de33bd940fd991fd55563d692a74a9
+01e1760d7e83430188cedfc6e4bdfe76
+01eb01175e673aa08f5cdfe65ea8b88d
+01ec0d8babf3a60738e0df1a309cbb79
+01ecc3aedfd003cb7f12163143771215
+01f190140af9becde6cf1dd01fcd459a
+01f35948fc5b1c422459113ce786ac79
+01f3beeabe511aba1294150badcebfb2
+01f513fd1eb99fa4f710a2c14585803d
+01f5f96056ae4904e250eb05e5b60927
+01f82627d008e50411e8f8d37f6a4bb3
+01f8f2e292f9b9f609f3c673cfcf57e7
+01fa008eedea8531f2751786ba49bc82
+01fd972b886429f3a6d2bdfe3ca95a36
+01fde11f5c7e9b1a3b1287bfbf4ddcaf
+01fe114f85a3cc6d5e288f694b937fc2
+01fe176e1d783a70bc36e4023c2692f7
+01fe443b6981e7c3c0076c25332ac9ad
+01fe5b9224fd8cb45f36502c79d560f4
+02003740b7bdbafad9d20cfb8b2b6068
+020047491a8e4db091b9406f6167884f
+0200bb8881ce1130c3558a001036dfe3
+02018087db5d414be3800c60e818834b
+0201e3fb0f67fdb3ce2b57ceebf2255c
+020272a196357a412781bf1993eff2db
+020278e53ca275608fb0177c8a5362ae
+020441b397b0c475e6eb7818549eb112
+02052e3fb4aa7d9f93e31c0202f2bd7e
+0206421a594c96b7abc79a3777d9aed8
+0207c80eb3b4ebfdf06d619add983134
+020a26bd2e07e1340068bd2bff420d3b
+020af969e488bbfbd346ad993d54bed2
+020b298a8af3f8e80374d2b4731f2db7
+020baf4cd4ebb620c88ba26a47e5758d
+020c18990a80adb643941885f11a9e61
+020cc9da6c0eb661456bbd1d1286dd2f
+020d29b1642d553e9c64d00c0266f47d
+020f9d31443c4ad5b4994bacea90f2d1
+020fbe10056956682ea7eca22733041e
+02100bb2e5daf55606806e56f1a33624
+0210e4e4bef89bdd97c3cd6ff4d02a28
+021127e6a322f90ed845c03e1f361276
+0213d8700ae82035cd1525a57c3432ae
+0216b34293cbcc4eb3345075ed2b4ace
+0216d286551434f146b10a800cdf5e32
+02171f87b2aee8a046560a5ad2743f6f
+021765e3c4fb3c772ccfd3ddde2be175
+021904518a95a61eaf19ee5156a5aa9b
+021b681cb1db9b587d7fb726dec17b98
+021def40c3062a70b4f196cd62c908a9
+021ec376aa42ba864e071d9fa643c09b
+021fb404d2afa572658675418dc47ed8
+021ff20738a9f49a07cc856ddeb345b8
+02201937de04b0f44384fe7a8729a097
+0221620b6f7a6c8f2b8c22654f1ffe00
+0221fdfac7bd8f67ddad8b079488d737
+0222918bbba6e248d12061aef2393f2a
+0222a6e2f6dcef958c36792b7b02091a
+02274c10044d60a4660b04aee89d38d5
+02282271f3bc4c150f2ec1db5af6bfca
+022b6d7e7579558f6e5cdda870660e95
+022d50338ff9502a3dfe34c4928b0762
+022e619b0f3bd39d5996f8c01524e98b
+02308eb942978927cc047c9dc98ca821
+02338f61dcfc26b78eab670857683d91
+023434be07b0f20b4c0633a67e3f68cd
+0235a24f26538439a33ccc784d020bbc
+0237be3547938576825275fad00e6278
+0238a46d9cba8e1218c5efaa35ba181c
+023d2ec9c091585dc67e79f706db5fb3
+023e19b4ab6e7f7f8b5f8d411a4a8c9b
+024001dd4847513158cb5d67c4705f9d
+02400fd7eb58ed95cebf6b8ab9175ef6
+02405af04ec61aeef1a908e8a457c39a
+024092c599ecb95abc003f43b66d6364
+02437a3d51e6c1b33bb2e3fe8be5e472
+0245236428a5f036063fa6e2aa1564ef
+02456d120afc0369d832c3684e2341fe
+02458a0d337e7dd8364f4bdf61a088ec
+02464024db78d48112dd43c9b4ba6d17
+0248a47ab75b938498a34463c56d1973
+0248b116ecd91230882a25a65f7faeef
+024b09b9bcdad171018d70220d049c4b
+024ce72b3985de1648c5afdbb13bac49
+024d79f57506a4994bd3cde30b2a998b
+024d9872eb6a61e6de2ff2976618f07f
+024eb34f324162c20a89dabbed6cae55
+024f91afaa1a292e6a6d5959583f9109
+02505bd62137b290cc57509c6b7ac135
+0252af57d847fc6f5f6b739e8f404536
+0253d36abff6b07a63e76f6936eb225e
+0254b35a80052f596d30ab7178812f11
+025514110e4af7f3b83aa4e8c3cf50e6
+02551fd7b9390cd9d5221052b24d0c81
+025528167aa6fbfdc8f0b4d4be8d27c0
+02596da0d2e5bd18f5ebb3515a6ceb5f
+025974da9d4e2b73c626f6fc94861f50
+0259e254c258e7ffdb51c350ef5eaacc
+025b8f1a86222f25aa7ea4709499352e
+026113681f10065fa33019d53db8d884
+02626cc7d639b8dc20f48f3b33eafc7d
+0262d29e4da892da0a3d6d7725e86e2f
+026566a96dc8071a0fb9df54827b0ff6
+026610e8aa4fc1d2ff0b85d1fc79352e
+026dd16665d38c0fc3eb60952d663d87
+026de3a3fa1dd7181d4a29b97e72951b
+026e82fb0d650f67f0f4d42da0a9b3bb
+0270944e29ee36dde8b6b3c398666265
+0270be0aef7214c7fdd44aa854ee0989
+0270f21bea04d722d6f1729661f07c3f
+02738c2e465f764b8e75ee36af205dd6
+0274355bc887a51acd494404060677fd
+02773e6376cf04b3bd5bc557edb207cb
+02791a61f15dd9bf2b94b22f4d303a4d
+027be8431f9547b4bf4efa1d373d8a76
+027d2c8a0f15afab38f185a661a12f63
+027de4c716a4fd25b40a01aa68919c85
+027e826b0358dbb97ff8ce2f79e7f5ab
+027eecc41e1513c7575cf9219ac0c6a7
+0280011683dae7ccab208ce2ec782226
+0280388e575106f6cf7a9109b7ccba8c
+028067504828b3c35635d59ef085afe8
+0281eda7af56a28c8a92b00f8624347a
+0282005216f5690127570b6e0385d2d4
+028225122cb4cb01319773d32f629e46
+0285a8152235d46839b4a0c08d58ddc5
+02869dc869b7982e80932addef97a26b
+0288c702991ac8e030bd54885c025372
+028b4bade611761182500c53fe013c67
+028b8d3f3a58b1ae691cc9a16cebd921
+028e4d7aaa5417dfad46850c88ec76db
+0290f53bed53228a5b9cc5f554396485
+02915fbe40beb5f111fa633de7fa6ef9
+029494f99b072a60690ab6314294810d
+0295234924c5e11f293d34e9d449cba0
+0295bee2cabf9157d24940279317397e
+0295ea4ab97988b8145ae756937435cc
+0295fe6011a3b7ac80cc51f05554bc21
+02985689de2b63d83531b0878c1a4713
+0299cc2795d079e37217b439bfe79510
+029c585134b256ada1805781fa7465e3
+029ca164b97ce75db17ebd4386cb5db9
+029d5c9f1228d06216d16298d78ba2a0
+02a004ae3b431ed01cfcabdef7482f3b
+02a11c29f1d7c738fb0864cf6c2a6ddd
+02a22caddbd6829b4ba7d3b89846e438
+02a4ca50cfdefb81ace51b2ad30260f2
+02a6444de88395083ea17e1bd3efded8
+02a97a0b65cb5e39cdaeebc8f99e1903
+02aa9cc099f5b80042052b1a0dd8f47f
+02aeab0f481217e889bcf9fa3e8a0718
+02aeef5bfd58cd9fbaf9097e9e8f3bb0
+02af4dfb97c81949a862b03d8d2149ab
+02afb5d8f2c11ff7aa3de2dcaf583e5d
+02b19e3221162da19b50051d02c5248d
+02b48fc0172783c9b8557561450129f7
+02b5a082c859b21c307bb93186c3b4ee
+02b8d0354a1dc15c3adb41924198e159
+02b94b94c5a191143e85f92a4a2bf39f
+02ba056fc0000964a68c66fcf31bace1
+02baa92abe8ef70246ac2527f606f432
+02bc6589cc54fc58e0fbc9e7890b101d
+02bcbd327e9eca8293f2d2a6c211baf2
+02be553e9537d6e1f7ed1617d4432870
+02bf552068d314b1ff55579514507199
+02c1a70284bce340a698b49ef2263933
+02c22724fdeb1b77c9d83d171517aa80
+02c22a1d04f0cfe77f5fbe2b58a08843
+02c2836277a35ecdb9dc974a5bc8f477
+02ca0caa53e5c048db859fbd95f0a01b
+02ca68a314310fa2505d846ee5bca79b
+02cbe12eed8def9500203f3254eefc77
+02cc2dc5875b7e4e3bb3dbfe1f1a8bf8
+02cff67f28c0f923d7fab7ed20e38335
+02d2aeeeeceba3f73c168c66abfcc418
+02d32322bdcac91930ae15507d6542a8
+02d464bfce934d7a4f23959210003aa4
+02d4bd3b7fd572f1c93e00eb2847497b
+02d65237c6b53642be70ae35f4eac928
+02d75a6d721bf33820ea51f8c11ea4f3
+02d97ffbb6c69e4c5cec27c1e88c36fb
+02d9e81803b1f68819b7748968bbec3b
+02dab8bb01676eacb7cc884eb99c3b6d
+02db209edc443b4281023db53ac71b72
+02dce4868ecd8da4663bddb2d8e65389
+02dd748d15607f2cf394a197db7c7bf9
+02df17b74669d108959d0955867e9079
+02e0ab99c1c5376fa563b8ec964057ea
+02e4bec7bb3f01775faac027134114b8
+02e57cfcf911cec8d033d9543b29905f
+02e64656d66bd45b03c569d7a9f07ab0
+02e8af18f9b53fa169cdd4d92534c1cf
+02e90843368973d9b38f070c2bb9087e
+02ed05a6c93877140d549c05c1b84dfc
+02ef7c7e15988e56aa0efc2885e74c9d
+02f47953ea98adcfcb7b936b005af2f2
+02f65f92214df41d9465940990f4d806
+02f67dcc4818d935c3ec786788c3d3a4
+02f7efa2f5899d601e9650b77aed9eb9
+02f9419dfded517bb4e797c5b08f2f2d
+02f95141f2efd4083d427f35143e366e
+02fa1a22989694657c2d956174477f5b
+02fd522aa48e7dcf9e4e2e4bae71722b
+02fdc397e00a48cef717092cfc9220c3
+02fe10fbb1df0e33bca1b3849b423030
+02fea5bcf3a85e295cc07c0408b95783
+03011ae0150d9d2274143c87e66e073c
+0302b771ec58fdbd233e755c4cfe8192
+0302e4435d6f6833c0d24c579b6b335a
+0302e692a5bf62b9962ba61e3fc8fa58
+030570bb7462053c04caa6f5a3763eac
+0305e143864bc366e2f051d601f2fef4
+030841044e72505b4d12bc59cffb08ca
+0308813ea03b46ea48b2187dfed16267
+030ad459eeef5d137028921bf7bbd6a4
+030fa831a4d53db073a824f4b999ad7e
+031076eb7d443e1be4977786b3a923f2
+03107c149ce3594fef748157b5059d0c
+0313689c90f2d611f6786452440ce891
+0313aab7ef0108633ec904c6f78cd253
+03144298c092883fc02701c6cc9fa9ed
+031a364030bcce6f1a88731e2924736b
+031db853e4ea43a1234b055d72aa7856
+031e7f236ab67ac6207cacaf713afdc6
+031f568a79e6d94d50aa7ed3c46bb501
+03204f58c9d88a3abe2b4fb2667e327f
+03247d30da34a1dc8cde700dbd5f7e41
+0324bc6c45bc6ff68c114f4120ca2169
+03257a5e60aeafd8c7f1966d68e871cc
+03259dbd6efd1676200d41deac51f79a
+0329e624df2ccdd66803e4b5c65a7b8d
+032b5f6cac2dfdf8b8839f3db71629a4
+032db122dc5dbc4cffbd0e3b627130b8
+03321874e20ddaa86e2aff28a0032e40
+03335b010c7d458cc1008c4649162849
+0333fe7404cd8ec3503514a45ef899b7
+0338b7dfeca04ea69413547279d66451
+033ab26e48d62c0251b1df6c407bf8c1
+033bbca1d0b12eba0382a832869d595c
+033e1cf13d22f08baf70113e58087714
+033e72b4f869a11df6c077f921de9396
+033ef49573e1d8f9e122504795922bb4
+0340a919023a9c0e4412e144938285dd
+03434cd052821f38f0484ce86bc46ba3
+0343ccf85d3ab5d5d5be9589ca7628dd
+03462687aa1efbe29cd7f0ec4f4838cc
+0347a3b56554a8b8b0c0ebc1ad46bfb4
+0347f86404346eb7651ed945b1ef0cca
+03483bb949079341515ca85794a96c29
+0348b7fda21987cc79fcfe51d6265dfd
+034959fd5cf5a284ee2cd46448f0c624
+034c2f1f7b2cf830a3477b30b44590f6
+034dc7d908e4d6582b50698e87a259b8
+034dd3de1aeeb36cbdb9d6d56a62166b
+034e99af56bbb388982cba4de46961b8
+034f7318933d53dde4870df4fd2b12c3
+03535813c7d9215a1e2cbdddb84f044a
+03542701b5fcdee9e7397fb9ccb84a5c
+0355dfcc33108181db526ac37ef673d8
+0356db8f9eb41fec9e4394b97050ec52
+03584f44c383541682bf18f1515ba348
+035a2b6c907eefb47fd3517b3482938f
+035c1a3a082fcb39a82f9c3b7f3ec218
+035cba6e28aeffceae434696cbf72252
+035cdabb7fc556fb0b1f303a377ca1c6
+035d291298a2b087beebfe9486daec3a
+035e13b90c12dedc6f76c9b28262b0ac
+035e7485b58fd1a001ba9d8cda365a6d
+0360a63b56447a9be2e0d4ea30d905b7
+0360b6691ece9a443decfe75ccd6ff71
+036221ab21ad3398056065507aa5a292
+0362fe8b65242ef1cd0a79c36b1b3499
+03639f51d8804bd28b9e8ece1d33e0a4
+0366b0ba224207b6489bf27a836a3aef
+036c808021b0379f47406d112719ec8e
+036c9512312cffe30d6f7461bec0263a
+036d1e83796b3e1d632ef251e03197b3
+036fcdf0752d144b287c8a4bd588afa5
+037254af0d82eca2327017762b9a4d26
+0372709ca11ea714d511fe58cd24ff1c
+037431e61598091343915d0b2ce61618
+03752147841942c24935dcadfee218dd
+0376e128eb9991bfdfa60463ede35d26
+037893378fd0a43a662f88a15db42ef7
+0379d9ffb1a1b1a19971649d46e8f34e
+037f34b93a0d81bdef370fd37441d8ec
+037f9d59c641e87901b0f7a7c78ac293
+0382c1e1683b8c66620c1b2b6bc2ac0c
+03866c6817c40c0d49f0cd6813560a4a
+0387f0b61d7ee8b06ce1e813ee5f5b0c
+038817c32d55abfd4a6ce35d9259ecbd
+0388920c2ddf0d31a417418f7df2c03b
+0388b8bfd139b3d817d7e71765284279
+03896d7272c21e66203fa7a53143d8d5
+039016d54fdab1c80d6e1cbd1a631cee
+039097d67c3be66d2d18530fd6d45c42
+0390ad05b5497d5832fa2c9c5cb5bf36
+03916642450413204f2adab84eb7ca3e
+0391efae80f8bd00fca9a6006a32752e
+03930679e9243bcbad11ff0d0a98b4d6
+0398d48553889028d2990bae3c5aa3ae
+039a0d466b4a0a6d32f9ea820dc0e26a
+039b47108ee41c1cdd2a292f465850cb
+039b4b1405591d2b6ddc2b21b892d969
+039c631a4f29b1a524403e709cae2f83
+039df073fe5630a13e3e47caa45362a6
+03a1b57ccedac923faed4913416aaf1f
+03a312a381e905988ec9e4650aca8658
+03a3f565eedbfc534b4101b2b855723a
+03a57237b8847605a332d502610513c3
+03a6ce5a60cdd6a6878433604bd991d1
+03aa34f245c4807df36baf39cdc6d612
+03ab57e67b5f1d145e1e2f93ccbd9cce
+03ad211abbe44e0dfa3a960753e11d2d
+03adae66ae0e5aa2080021e7fb790024
+03ae322fd17cd29045759ea4ea77bbf7
+03b0c6f257cab888a807ba29dd7cceb3
+03b20d85bbec1abbe68b33759ed7010f
+03b37e35f3f818e4e7f5b08b3ea1ad76
+03b3f025ef341212e42d88a30ade8b7b
+03b4737fc62c890b4f6e220b72ad8004
+03b482f6d191a55f3456f8e90a777431
+03ba66621135a6cc983bc6dd047739dd
+03baf1def8063c6b4bc2cff46d50c63c
+03bbdf09e31f561f1520093b8efe992b
+03bc20b2b401d4def45a310edbc747a4
+03bc87ad3ae40cb88ffdc2ff5adc3635
+03bdd735d1e277aa53d74005664347fe
+03be7b1606d04df6d4e7faf5ad109016
+03c3ac7384adfe7e496b275232264c12
+03c48f6b9404ba17da9e48cc8a7a3f4d
+03c52ed902171407e12ebeb9e7869a23
+03c77bcf378f59624520c87183e950b7
+03c8dffb9de655ce1fb4fa283cb0d4c4
+03ca271a52b63a7888227cd11cf2f7e2
+03cd4fe084bd059d8caf17235636aaf5
+03cf61070870cd73bbcd884c17129ee0
+03cfcfd4126cd702cfed51bf541bec41
+03d1021820c8f7c4c6efed084bb4285a
+03d140374f9fb11afe939213996bdac2
+03d193490d7a271d97730280dd9d2abf
+03d1a0c15481b13250bfe51b9de1807f
+03d27391ac01b68e08ca9dcd116cfe7f
+03d852a870e88395f0a43730c81ad3d0
+03d8fdb10d3cbdf328ac85fbde559abf
+03da627e020782ff63c09790536c413d
+03dfb64948afad2072c4e4a400e03ad6
+03e0cc34e2c570d56a90168c17c4a3da
+03ec33ed97a4b5af1b6147fe966771c9
+03edf07e831e59422f6d33cf7c0df622
+03ee606788ac2b365dc2b079d5d1d1f7
+03f07829514d186758ffde0840c6f5ce
+03f0afaa209881dc04d8b7ad51e6a344
+03f13da482be401c67b66de33e5530c1
+03f5c09d1be0258ec14e3f8676506bce
+03f791098a1a171c9577ab86881df9de
+03f7e4f14e32fdc0799e32d39bfecbe5
+03f8347a88e49038af5903d6587fc9f0
+03f911dc49be6546f47eedc39470e23d
+03f929bf2cfe930a9a29e42a49fedd7d
+03fe35a06ad2015ef15f0be79d960289
+03ffd1dfb83547396200e3f325f40904
+0400c08ee9a0b422b72fad8e0bba3015
+0405415ce367804903f55f082948ce6d
+0406ec05d5a5e4115e43103cdf8b2f0d
+0407213be82c0e2c231d28de52e9cdb4
+04088198e951a549508ff7ec3516a6c7
+0408ef4ee68e71334142f1d491345adc
+040c8e1e8fe3614ccfd121cce82a4ee6
+040cfe38ece05e5c7de6d43a41682037
+040d6664ab81b28da70ff52b95c24d5d
+040df6132fb52f71531c791793d3fcd7
+040e38baab0dc1ce2136f709119f67cf
+040f3af5be9a1e069a32cac204b0aa55
+040f6231bd29fe1128a5b78830872107
+040f672017f7292fb0bc44f8f3c8df4d
+040fda88fd07087d9935f4921a443a93
+04100a501a59f302dec6860a2601421e
+0410b3a30ef52fe6014f7be38a5f3680
+04110020a853e508f8fd4726cf46ff48
+0412a79d7ad46e154d7f5377de00a9f6
+0417b2dd5d83119821c396b58765380e
+041bb5284bf0b6777c9b11a6b8468778
+041cfc66a6ebd50a143773ad38a6d180
+041d0bdd135ef4287e8198ae4a8a5cb4
+041e42749e8ec35bd92ee66f2da9c405
+041e45c7c93c0c051c46dcb4e792ee8d
+041f1e22909bafcdd885930ee3cb254b
+041ff214a5779ace005c6a929deacc37
+042047f6192bd5243cb0ccca0807ce37
+0421cfc35a1a36f09a84768f6dae9ab1
+0425926441f5709796fa2ccb3858c285
+04277eacdda67d927146e32bf7334bf9
+0427cbdaa311bd8f5275604f90933fd6
+0428da0dbaf654291f3bb753a145a199
+042b1e3f911881cdf53375c85dfda12c
+042e8829c9a4a30083ff4a1558f1ccd9
+042f0e02960abae64c6fd559566cc5c9
+042f8bfd44379a99f6ee109bc3ea3298
+043061594cbc9a4ebcaedd79575b47b2
+0430cbb1dad73ad97f81baf5d579f839
+043364b193452353b48a3b485c15eec3
+0437aa22f8fd167a2183b22465829d7d
+04392289403b44b5f15a1d4f37113baf
+043c112848fd8b8d01ef30ce7a18c7a5
+043d3eee7d90f8efffa564f423ee4b8b
+043e4f61fb03b8355dd5515dd5acae62
+043fdbc4e305130c6c060cc93bd746dc
+0440cc87225d6f2f289e8c1f7732032d
+044341ac655e93291393d626d57d90d2
+04441d71398170854b65cf967d86d6e5
+0444523ef1998b3ae0a3ea5d61ba1f8d
+04460fad5a0807ff7c4404240eb17f4d
+0446dc34fbc9f798158407db20ee43c6
+044954eef4e248fa468c4fb48296b691
+044b422b478fe5665332de949b380707
+0450f9398cfeb91a0b56590b2b4521e9
+045234033d5e8da1cd115c20c18fd0a6
+0452d8c9fb6525d98b9b648f3baaa5fe
+0455c21caf9061ab182ce5331e914a81
+0456b3e9dbedda1513e4254cbf9732a3
+045769ce7678277d4ae9d686ac8ff034
+04590b9a9bb24aba744397c5ed9e3cf1
+045a3a11bfad512d2b620d2be894eeae
+045af2417bf684d766a746ab2d740f8d
+045bc1430751f9542304871b79fd5c76
+046134bf0d16f54fb759b6384d26d525
+046343e2c5913d87bdd77495a1935d36
+04678acdac1bc8cf8a40b93f77d4dc30
+04679810f6488b61b093e0a0b83eeef7
+0467d22a8a078447fef6ca92b3696040
+0469f5dbffa4ab884d73c6a5b8b8f93e
+046a67473d2b30356615d4b8ab46e504
+046ea1bc9b9697c1b74d5b407a68f911
+046eab205db7fdb1e617d025768aba18
+046f18fe68cf2944678d9db7e310225f
+046f2b67df86a6e3c53a5c3c4d787d72
+046fd22432bcdefc21c1ad2e2f24d9a5
+047112c87e60071b8171fa29ea621b86
+04718655e06dc9f3b44e05a26d3e02d6
+0471ec08191f8338694c8ffcc2c9df9f
+047472c1e59ccc401cb5fd933186d81b
+0475a905cd187058fb0c5d0c779e1fd5
+04760f8bd16306aed17bf7242ccf302d
+047657fad1a0e1ecde91aa8dc903ddec
+04768a99b644c7a94ced24d708e7073e
+0477a428cf5591d0fcee466f56e84ff7
+047827de78e796a28716f78e4c24d0b6
+0478b1fb83a2de315e5a13259af76c9c
+0479b8857007aa55f9943429181ac296
+047b34e5a9c8aa0b9b158eb69151e3c3
+047c9505707fbe1f54af4567310288cd
+047cfaf3704e41959d1b6fa1bd367a6d
+047d5d604539e03fb0e8e20ce37b88b5
+047e5e459b2115344548741a6a2971c5
+047efcfc8548d2f93ba0d0f86cf2490e
+048296b8f405bf62ee426f6a6d1efcec
+04845e505bb435cb464415f8c4068328
+04846dc33f2e6c5b1c5a129efd659ca3
+04856bd8582caadff7025c99db3b5b34
+048655817dfd90ec0c83bbd9503eeedd
+048940101fbcb90f903cadc03790518e
+0489fb09c8aabe4f76054f028e3dc588
+048ccae8fb5589d20a9c9f434b0ffdff
+048f2f9712cf9b671becb1aa3fead3a1
+04901c1b8ee03233f1504890a33a1e61
+049023db20030b6cc0cd2199bf3e0850
+0491c53f1c57de44616d6c5380c39b3f
+0493258088fa79cde9f4e4dc58270c5d
+04933d16ff025b0fd5f236156cf0f1fd
+0493a10d7257b874708fe22e0b5edbf8
+0495563e199de716dccbf23cb25bd542
+0495c7cda114f902e71f625144897a55
+049be8cda07b90c4516286375a57aaab
+049f0f07992ec5e755855fb1e0562bf2
+049fd6179de07a589c3ce832f14fe5c5
+04a155448fcab81d12e842fd2243fed7
+04a3abcdc5dc24c8ee347f58c23c6614
+04a627438a4333145b3c17185f601244
+04a637ef8820e4af1f4b16bfd8d864ed
+04a7bada4152a9b3b0c49011699fc761
+04a884da282d7e9f7bd9eaf0ee9fc644
+04a8c4a47cd42c27d03327a71656a56f
+04a970605223478c67fa60aa2633b323
+04a9e724322752867c6fa81394f7cdab
+04aa329e321bc06bfe01db177490f335
+04abd6c6d224b7e1e769a91fdadf6bba
+04ac8f665e62df784f1c7d642ecd2620
+04ac8f9e8034ab05ce27c0a69f7219fa
+04acb9a09ad3dac9c3066100e38851cb
+04accf86ad1c7e85aaae70f11db1b492
+04adf6a990aea9bfa6c07d7c1601c3d5
+04b0511f96dcc3d763bbfb6964319cb6
+04b29e460c3838fa2234681600e0aef8
+04b67be655edcd4ab46f1f0cd001a04d
+04b6fea9b19f438922ab3cf358ba5b64
+04b7ac97e5b43dd83f727c724554ad7d
+04b7c83911cd8a8a4166fb432163fc60
+04b893f9f75d53598213c5bf15dbd688
+04b8b30b33fccc9193b0d4e3b8af4ae3
+04b920ca21629a84464d99a0e7dcf344
+04b9dd20b4a5d9673d1cce9488a82a65
+04bb52555f0b61172dfa652f3dbff0cb
+04bba33aef5da2de11474686f4b138c3
+04bc86d90d165e6267c2fe0586b171af
+04c018f727c08111a155c842c6e689e5
+04c144edc8aefe30041c65cce13afa40
+04c168716ee449c1e6b8fddcc5b6489f
+04c33eab62d2590f729dd6e7ec247ea8
+04c3b6cc04321791d93fc33a2dd4e99a
+04c504ee04a9675ed3153cb65c1e93ce
+04c611cbaf14e770d935c7a4ad08caa6
+04c82086d33f38b06240e247285052cf
+04c93e7621e611ac0a3766249e48ac00
+04cde10c280140a6b0aa1558e2b6e7e5
+04cdfbc6d2f6de1c08cfe30e4bc2d32f
+04d0ff2f92ccca0403337db573f17408
+04d225ffed80b29343b3ce4f6f4755bd
+04d330b1bc70285a28dfb5ba2661d47c
+04d3e6bbd0ba917977caa1df23427760
+04d54ea713aae9979527073cb3705462
+04d579338f042a5c6035cb044046e514
+04d6d9afcde4a766f021b11751c8bae4
+04d8159d73072b0cc91ddeee8e29b0f1
+04e231a78948bc752ea8cd53cc09766a
+04e3961aecafa87c1460890d4b586856
+04e5736780bb36a321c35616ef6286cf
+04e679fd9dde3fbbc5bd0913228088fb
+04e78c551fdc3103b330dad63d7df7c2
+04e8e9c9feca5fa86ed60dd2953efe75
+04e991dc9a1b39b4106fe3b108e5c72e
+04ea261384887ef6e8f5602a9a24a024
+04eb8f5cf86a40e68317b5751c0480f3
+04f215671377518864beea5009cc1d43
+04f2c6f496de3110fa2021598dc7dce2
+04f3a71a99a1db79c0f90caa67ff2f83
+04f4357e7ca3413b627b1d1e5e9fac97
+04f5fec56796218b247a2ae982bd5a49
+04f6501bf06dce3c6794364647246b4c
+04f67a1cf5ba9bd74974e90ba6394c91
+04f72fb3e87cc0368eabde896d29c25a
+04f7c99fc7173d11252a458e615d0437
+04f8152ae321c785360b8f80fcce7018
+04f941f4387f17b2207620f7e1074cc0
+04fa043426517641287fd531c680b0a7
+04fc3d0890a5f5b48897597d588e1b3a
+04fd42af2b19fc04f6eff52957c3ed94
+04ff16e415f6dd721a969eb1e5f625e8
+04ff91b6ea24edf99d6fcf4c711093f1
+0503eb131e712a38b5ea49a834002d8d
+0505b2bf267347d4936468d0980b64ea
+0506e3c895d5b362f55457eb20441cfc
+050738a47d6244f7c5cb4d6c8a3c87e5
+0509271c25c2ccc40a47d139f485e442
+05093a3951e4a38af72b06d193cea44e
+050ab94bb9a70239f52e2c751ec092a9
+050d021c727dd7b40d141c9d80d138b7
+050d0b170926a673f4a1cdf927b5e4ea
+050d55200a22cd6ab9e1cf2a29577451
+050e1fd9987b737181f706c63ba0cc5c
+050e39c0d6f48e811b858c1904b7bd9a
+0510dbf88fff8263ef9f3f8796275f5b
+05146d768707df5594e13a6e22f46fd3
+051527756c96e53d2ba6e8bcc71c5ee1
+05178bdc90aeb68aaf7c9a3bd5677cbe
+0517aff20398baa024fbe4167b6c0a86
+0519739b082a5ce83e8d8f8f5483df8f
+051a0a23918f86b44126a412094b2174
+051a17c6df2b543fbfe22efe0d5214c0
+051a241f95bfc943383c15c1f5d394d7
+051ad2ffe82d9f48eccb8e744e27c892
+051e5b5e71a97f8c6c8a95be7509ddb3
+051ea70f37c7c634b8360a3a65e97702
+0522a2fbe708e789feeb93ddf20a7a05
+05232121fadc31451ef7e7195fc9dd6c
+05270d7cec37917479db66d3d6c53396
+052a95fe99fb2f97809d96016a99fe52
+052df63af9faec2320c416cd0bc5d090
+052e43f2933da7244fd0c94ebd03f01f
+052ed0463a281b5d732abb25c52e3361
+052efdab731c68d53d3f91e5c7d14ac8
+0532481e42730dc50098f17802081ce1
+0534859c8a95c2f160baaa3093bed9b5
+053487b44744d95157b2dff9ef5abbf3
+0537ba79d7cd3f07721ead8880c95181
+053805df66ea54ed4806fd59dff0cef6
+0539e166b066e708d94e02d4094598cc
+053bd13e19cd4787d8340977ec8f1954
+053bdec07f16fb56c5cd566f1e85d62f
+053ee50a4eacf189c0a43f695da45620
+05403cbd64e031ca6a7b6fc8cbd1c6ad
+0540c536104adc945846a935514664dc
+0540ecac6fe8a4fac8dd71a7338a159c
+0540f8e1b015d066a807ea28e54460fe
+054119543938f9078c49ec1c7beb5bac
+0541a2c5bc368c04e1126227741acddd
+05427d0999c83c16f715f133b4f7fd82
+054491298cfed1e1ff73e9bdcf230b91
+0544aa3f14ea2e08b6a0564d7255f543
+05458bebf559d1adc0df4bcb42b0f59b
+0545cde86e1960b0d65e5524dfdb77a5
+0548a9443138d2ac97eab4026721cb38
+0548af8ce5cf16c5bffebaa6811eb624
+0549d54b2e7c305fa6b7cb5e1eead3b3
+054a6f2b6a801d1829ba3945da4d4557
+054e88380e06af53bca4ec3990d22f9f
+054f17ef613a2ce6a51beeb107e7e8d2
+054f4afcf0cd8334fce249a5a073f53c
+05502d40befbdd873a655f17985eb6bb
+05522a5ff87d80d13c289d5feb0ff696
+05539a38a1c7a1f7c7bb6c0d10a9748c
+055726929bf443dbc401280db7fd1891
+0559a0ba9eb6342eb38fe45f3e0727ec
+055b10f6349e22bdebbb353ed854a099
+055eba3e707dc74bc87b6c875d4cef83
+05600a454c17ac66045de113dbcaaa0b
+05606a618f3f5b05af44b218d94661fe
+05608b4aa4af64fccff5c391070b7a95
+0560a2aa066a84e1cd0cea4c9b3669cb
+0560fc95bf1960ad3465c8f8346f4ac3
+056119904b2ed7dd2c523a92b079e598
+05629a329849675dbc855ddb2f30a030
+0564aa25224fcde6f7ce48804b026826
+05666f10162b8efc1aed3b9cc4640da0
+0567369b12ab42e96fa79b2bf35b71da
+0567e4e481b9fb97339992f8c1ce6e17
+056a817a6d43b20319304ad82719def1
+056bbd5528387c6b9d29386b39649ec8
+056bbe41a964c0fec60f94179dc2a6d2
+056bdfd7b59da8d1e7298d5a2d7e49e1
+05711d7f203b22cf83ec4361d64e47b0
+0574ddd3cc1094c06b9fcf696e7ab10d
+05766442573c854cc8934b18024483b0
+057914ab7a2c05ff3b6744fc9cf78df5
+0579b7267e32af48471cb65fa55efc20
+057ea01d7fee89a97c5c48ebfd1f8b0d
+057f433a59070edbe4006164d490ab05
+057fc7e79e620cbafb68d18ebc72e90c
+05814626cd583d0eb6503742a91208b9
+0581ac492d975f4efaae67602fb81200
+05820409be4bca0734c0f176d98b5abc
+0582446b5e47f9bc4c84a928d74db133
+058422ab40c4550b1b4cddcceb96bc6a
+058631665c60288ae8f2b94291443eb7
+05876b33ba5fd2f92bd554fa69428eff
+0587ee74310b646b011c25ffbb2fe913
+0588348956cd3245b06f4ef172e32515
+05884a01237835db4b770737d2805974
+0588c2fa81fd65053c78fb0a93cbd237
+0589949c839647f902a88bca6a57afac
+0589d01dbb2d99281b3655d7cb7c3f62
+058a7fc46bee4415ce5f6aa5c23d3c4c
+058ab46a35a1978c967df2a7071c452d
+058b784cbde7a32e03f1694d2ef7f89d
+058d7ea330c80b0159e69f9a12ef2cb6
+058e1efdf02fa1830f64b49e96b5277b
+058e3c07cffd4d782bbc343821c97dee
+058e7348ce709e3336c134228b3afd6b
+058fb39d7471427200bcdf9315604dc5
+0591ec877dd2da9792cef356c0a2af76
+05922ddc93eddd17d6073fb8b3fd4657
+05924b1c6cf69e43a10e20cedd1c3760
+0592c7f13feb763cce719659bf6a8660
+0592e14d97aca207440298396d591c8a
+0592ef3bd04c6cedbbd469dfc949fba4
+0593253d57ba0d34242209a157b4ed96
+0593768ac52d30eb5247dd74eecc211f
+05964f31946a5df2287e21b1c340025b
+059800106bb9158871eb3f28fb25eec4
+05984f80682c7a5c7e57b7716b7fad78
+059aed0d0a0dcf88fb61bb7ddd401a48
+059b0144b5ae17ef27ae4d3542e1b858
+059b45282717665dca24b2b3303d356e
+059dc8f5fc944dd8817c7248bc348804
+059ec89bb9fb0395db201207ccc95d1c
+05a218b4ae7618224e393ed460e2bd38
+05a2c03479edb8142ed201d3519cada7
+05a4446f27b2523250e6a539f8772c1c
+05a65d00a8c57a4650b8f3955a817400
+05a914a942d827f1c9f4a2208d9039dc
+05b253b2998eb5c3d25189db981f3976
+05b29e6bcbb680e573ae290ea0138dc6
+05b43ded340b78e681499dac34454a20
+05b48eed05b4535421d3a8d8b6303881
+05b4bb66c1be417cdb1839be725c155a
+05b50a916d6148c37fc52b540b4f27ea
+05b88ed4a122061fb7a70b41cee7a963
+05b99a495b6c3a86c79a7f80a760a483
+05ba6198bae28b409f503c13ca91e8af
+05be06d93692bc3b82873530eaf38d5e
+05bf5f1e721b6f9c39ab1e260e246df3
+05c30f415bb3d75776ad9c0294f0dc20
+05c57dbe9cf80dfe02b2e29f28c65262
+05c8ea0382ddbf84b0a21cfd7f11065b
+05cb882b3edec2b20f7e93ed9230a995
+05cb916454b978038684c05fa71a16e7
+05cc4f8221d71e1dff38c11966fe1607
+05ccc18c527fc7af31c2edf24494c491
+05ccf7836f150fac6e3be7b009663ee5
+05cfee74c654055d02c1a5ffe330f11a
+05d56afa4faa0bc35030635be753273d
+05d78118062787c4f6ebf7febd547fd5
+05d92e0762a5d11e946efbda219a65d6
+05d9bf848c4f25c2615037cd5650537a
+05dc34e7609e070f301abf3fc990daf0
+05e0612b19f4db683166290d331c2ea3
+05e0fc7a820fd7b491a33f89be770202
+05e1f2e770bb212b053224eb8be0fd67
+05e20b599cc5fa8d6afbe8b9e6bb5961
+05e38451c498eba762acdc0f55314830
+05e39f95ef462ff374e602716e90d707
+05e4687d127af6ecd1579b124bac4a37
+05e57862e3c01cc15a6b1c84faf36553
+05e65f8d6e1cbdd4adde86f33f2e23a6
+05e8b64a7ff78eea9c2ea1d4dd054c44
+05e9d7cab3437dc9b8b261c920c05aeb
+05ea53d52a18dbe054506fd9378d95a4
+05eeec5c30eecdb84b8e11bedfb2cd9b
+05efed6a357a558d74ab53320821de3f
+05f10c99070cb8775b18c6357b5d2a31
+05f138de7edd1bb6ef3989f7e7ab35b8
+05f672dfd0b0ca09cddd507321a63b80
+05f6e96c3e1388a453a2c9df8c52ca05
+05f718d1056fbfac17fa9420fc2fe15d
+05f8e0c477dac5e57a9bade937793970
+06000eab614829c94c0b1c95ea56a637
+060197a6f041072b6a82ecac9e433c24
+0601dc2cac5a812c4c4c154bc43ee26b
+06032d23f431818f65a10262c16b758b
+0605d2da74d44dc6288ee8db8d836801
+060627ef284ffc7c8e24c982be5a9a09
+06062ba7b9827f84fac8ae305a325d26
+06062def234d25bb09ee4caa6dabc2d2
+06068fca0cb5a0e0cc218ee8b95c74fc
+0606ed83942f389c8fd2edc12ea8d596
+0609c47df40c8f1e7d928236f556aa0d
+060a19bd27c0db7e33205074223e4545
+060a6cd26f00877bf7ac428581bb4fea
+060b0396c0f3e3e57a9b700537f8d709
+06116c06efeae75ff867a0d313a7b832
+06124e1504f427c7d746f4eead65798f
+06137cdaaaafdbbaf6950fc896bb3cd7
+06140d3bdfecd6fe2f0acf44882d2832
+0614bf473d3b5d1dee024eebbc657818
+061d7803f3a62c434e974d7e8c7bad5d
+061dfe435e81dd209f9d70682323f140
+06208cd60ecf6f556f9247ed515ccd63
+06222c7a545ed8c6070b2f3a59ad5d5d
+062391f4f45dd37708dbc6060f9b4c5c
+0623cb25f8551e659137d9831430221d
+06254c3bf392ad49841ec69842cc6ae9
+0625a9dfb7cff65f85a88ef8b75dc3bf
+0629ac78fd549456ebe9754118c24234
+062a1255e309e70502894ff7c424041d
+062b1e230d2f4de35f8ae1ac3688b354
+062bf40fdb52c2b94b8b77e38c982064
+062c72ec1afbcb3b10564a758bc96d9f
+062d03cd6b42baee524dc29e7566d880
+062fb2dfe27618d5fd8510ee00ab12fd
+063a4795e0931d03eb98e67d7f5e19c0
+063b0f7af5a57d54b111803c31db22bf
+063e12bb11a24948bb71f30d6beb9eaf
+063e97813dcd1f9a258ca4a9a9a2b9db
+063fa9e32d3dbb28e68ea8d9d38b8af7
+06467ad3b06a7e8d4445937f3ad92d52
+0647e59ea78c2082ecbffea826581ff6
+06494512687e3116dd43a602aecb6dbe
+064a1d2edc2411b8ca5bcdb000026388
+064b4623340ab59429f3a208ab5793d5
+064dbd45d8ed7c79f2c9d8b36552a912
+064e5d17a877590c0492721bdeba02d6
+06511790169b5d8d0ba16c402cd9820b
+0651f36742208f208c905d72df7a1b3f
+0654847c0683772bf944897e28e40e12
+065be5a55b1a1b8f281129054ed67359
+065e532996acfffd2f266d0ff5975ae2
+065fee15c15691c3cc621f9c2ddeb1d4
+0660889c38ee7e381b783bcf64399469
+06626532fc790ca6d096974259a34866
+0662c354faf8ded772ffcbd9f3a2a4b2
+06630c28f0526897c0fba5939a8ef2d8
+06647583c960b603043c0e230c13a9db
+06668f52b9242fff44dbe3cdba4b6d32
+066695c6b8d7fadb15cbb1b9a345a677
+0666da3578df09a9bf0f680bc43fc780
+0667c8378de6c83b0ab865be73062f13
+06685edd26e0c9c00916bc0f7d18b9bd
+0668a64fb9a6bd03e52a14f9ab7d0de3
+066984aa7c1c764863bf7ef463f21d88
+066a5962210d9e19c3cb13ba53897692
+066bb32fc53b81636c16f0efe3ed4b7f
+066bc0e33c79a70a523de34fa4663f9c
+066bc6225f916973c337c85d11c71a13
+0672905d1e57ab2aa4c23e2f4fedcb65
+067415e1d91068c399b17667d7f28fc5
+067699ee050a47d4c929ba4771ae21a0
+06770110943ada17e9143baa7e43133c
+067874a49fc92a7c3a8315fce56f071f
+067919bcc9409139ffc6bd407ba77e1f
+067a0558bcc460c794cd71e2d5fdacc5
+067bdcd38a4fffa626382d7c593ae633
+067bf9f556cd0b528c609a4ec61d2d60
+067e3c539b9e3c5761d12e4a8538f6c5
+067e8b2c9451070109a6dd46fb55ee66
+067eb3a8dbee5e360bbf4e471873ae01
+06812b0ad4872a3313a447c37771ac28
+0683e8ad4b204c9192dd87d06d69a568
+068544d4b84f96163f6961d04285b1fd
+06868ec175f1a7f63bcbcd75cd52021e
+06870453f12b6634fb80cd34c2970fdb
+06890d464ffdc2c0de3eb4bc716579c7
+06894a321ddc6fee48825eea62cf7ed9
+06894cd5ad4f95db3bdcb3d5239699a6
+06897affbd01a6504d1dfd0ff6d64248
+068d162d76ed40ce56b2c6a965c636fd
+068dbe4d537dad2482594cc8c95af736
+068dfeca71ed47d4783d078911f6f68e
+069094b274dd168e46b1c57e5be5ae69
+06909a9f73551ad54892bdd812866d46
+0691ed2d375ca749d22854b49a430782
+0696b5a307cf7c4dc30e059428c36e42
+0696ed4c98e3854a784bf3010328c9d2
+06977ea5953f5ee42ee240d03272c734
+0697e6acfa92c23ae507a26082d89ae1
+0698417a52978698b08c6228d4640f86
+0699a4c7c7ca258b8288eb762fe2d0f4
+069bf1b5ece5331f43f294d12a015596
+069d3997ddc5b2cf8a9d5ce552e77e80
+069f973b036df806798862670b6d8bb6
+06a2e096a6643cefa67dc90b198f7330
+06a5c79201fae7f0bf7d3b0db3344f16
+06a7408d6b96066373f9ad6ac3d8405d
+06a796a09ca594b32b2e5f945bd259a8
+06a82797ab39347cd08fc79df2b42208
+06a9957912e28cd5f08aeaf492ed3bfb
+06a9ae55d15eda9358f171cfbecc7a20
+06acd16fdd5e14e72e8b3ac0b0322235
+06ad431841e034825eda766401ef7963
+06addde3d5f4ae90537fdd025b06c169
+06af48fa2d0baec9d268aba5911ec82f
+06b1b6cd78071e1f76b6e7d97fe196a0
+06b2cf12f5cfc29d9aadbfe15f396884
+06b6248da8e3f7555697af8d573d73d6
+06b6df7a1c84542caecdcd9573d74532
+06b8477effc8005b84c1a24c4e2d2793
+06b8b4e75908c30d181dd944135b852c
+06b9c911d251ad617b13f29c150e5626
+06bc8d51ced82454e662d3d96ead59e1
+06bcd7a02c11fa069278c65c4d4f0727
+06bcdbb8a12f5ba864d7e22317e2643a
+06bd36f88e8f8cb5fef456e69a3e4cb2
+06c3e802702a55a9f6ce69dab078580e
+06c721e0c2a92f26619b300cea253920
+06c870316344af3dd54eb94788256e78
+06c8999247490043fce6d0e4c2600ddb
+06c93ba7102549d67ebf6355e98efdd3
+06ca3ffad3731c5fcfe0ce9226714a24
+06cc08fc4f8dbfd2d2f6a8b7e689c427
+06cc76c699fd14bce9b8df18b08f5372
+06ce313c3b8b81038263de735b21ace4
+06ce812c979494a286b41babfab1563b
+06cebef0575f38be52c8a5cfd013d551
+06cee6ee1c5273f05bf9df3eb6c0cae7
+06cf0680320e26e051b7a8d7823b7cc6
+06d18917c33195a57eea49850810f355
+06d2b655473bc0faf36360f4e8d129cc
+06d2bc28ddb142e56a8d2da9586576bd
+06d32b3848a7d0bc43531277ed1c2304
+06d3aebdafbf82cc36133eb84fd8455c
+06d52208bdc568504e84008bd25606a4
+06d7dd9be858deef62a89c7cab32066f
+06d8fc5b98128beccb77ff50b91af202
+06d9d53e2cd4b9364360bdebf199a729
+06d9f858b83fd85b9037d7b66bdb2024
+06db2d33258eaf878215280e5805c0c2
+06db3d2eedf98c1d61fc948cee310131
+06dd5bb14962b16f55f7da69b72328a3
+06df4d4eefff502b82fdcf38ce899711
+06e225aebf17a2d1bcf399015678b2b3
+06e33afe6cdc5dfae60416c18262c8e7
+06e45efa754edd07fb723f6c345264d0
+06e5d47522b3e3be03b69bea930043c1
+06e66f87421788567bd8e1778248729a
+06e884bd9247f7e82763f87d48cd7f1a
+06e9bc3e8c25c75123c32d68fc0df6c7
+06ea755431b6ac1b86ead981b157be6e
+06eaf65a74b0d7fbbed037c779acd4cb
+06ed97c9afc6d00b1cad3cc8a707adc8
+06f14011d2e2c8e114447c06eaa58fbe
+06f56b7bae870aaea0ea1ab49cbe207c
+06f58000dc7acf5b03c7cf37626d2bb2
+06f6260cbf4bb4ba7686b8bfa21aeae5
+06f9022026a6f26724994ba2eaca284e
+06fa69d2778064e303eb8ba5025fb8f9
+06fa7eabdf19e79889b8915cbcf354af
+06fbd8d82648ad24957f64239a3ab56e
+0700210a31892b7d21c91808cc143cd8
+0700c256d134be69e305616cf9d4a43b
+0701047b1f33df18ec8107847b04bd6b
+0701befc6f0a0210ff3ef161338c66c9
+0703b25d809e575b27f0324764799ceb
+0703fb0dc624c433205c92c26db2abd1
+07041ebd7d6f94cf1106a78fb13c64c8
+0706ffd0494fcb7794f5e864e02fcf9a
+0707454c84e71cba27196ffebe49e019
+070a9e168cbcd72f190a7ed003562f55
+070acbda93c9ed024c94ebe7a7bcfdfb
+070ce8737e5bc578bdb17a65c7e743c8
+070d569bf855fd1c347ac4819ffda3cb
+070dc820e310d10dc2d47031eb445a67
+070fadb607382d5726b25820d8dcf50b
+07117fb02129e53a8bc0e2cb2be31ce3
+0711d9c3f5fa5a5d227b548d219453b9
+0712e251442c5e64bdbf9b0c0ded69b2
+0717450f6dfffda33819185809708ccf
+0718197e0dcf294d6cc7846d64edfc87
+07181afb625b07b655612dc97259c0e8
+07188acc2a5be7e13145e7c058a80b30
+0718b08a20a98ebdc3ec73f0c4065b02
+071a80829bdb609329edf54c53c8484b
+071b7a890f5676749972e54979ce85cc
+071c4dde6d6625617de34d13634d9b91
+071e441f2b19555fa57e4071b82ad0fb
+071edaf1028d8b1618a2794471eea91d
+071f640ac3f78426db21b336b11c6cc4
+071fbe1ce5de68186033afa21258e162
+0722443c456f887e45e19a6fe634201b
+07237d5972c05ff50a4dfd6836c5d2ec
+07258b4b53e5789c743b2370c589108e
+0725dab2dc6f5e71aae63e069e0cf0d6
+0727cee00dd00013e2dd457faa0be559
+072ab32d9e4fa96322089735b0d2eaef
+072ac3fa0b1bc2ac4dbd6617f26a2bf4
+072b780794f0c4cc001730926f252d2d
+072bbd6bdc8a3c9996671b148aae6e1f
+072d539e33e2c215409ea1429f6271ba
+072db8b2892ece39463f203fe7a105f1
+072df47b55b4b55e36581df68c85c7db
+072e1c774685118318e7bff18f0cb5ac
+072e2ac22b144fd60a8a180da8a07ab0
+0731513a9c40f3bb9b52845dd8aaa0e2
+07322a27190ad58781dc33630a456763
+0732e3572fb688d035d2eaa0a5c70ebb
+0735daf5989d65d627f13548fbed12e2
+0739a3f54c088ab4b0d99583bb6917f8
+0739d96da7101e4beda064ac896e0d8d
+0739fa4c66341622bedeb92e37a1ef4c
+073cc9b48cb41ff2cfd1ca605aec88bc
+073cfc81f010f952cf1ba18d514839ec
+073d88d2631a3699c9ed814981f78d75
+073e40a1f561dcc708ad0ed2ae6a5ee1
+073e79dd4d6cebbef16baac0ff2af060
+073ecc00d0ab6903b6ba569424e565b2
+0740a6b40a60213b4963b663952b08a8
+0740b04cf0ed9d00cad574222d1f8f41
+0740ef2c1165b73479ac7151eb293911
+07417212d1fae278646b2b2d6e4a9419
+074241af8a0490f43832a1c66112ed3f
+07424ccf8c8a24c6cbe752e5a9fc3812
+07424d3e5933262a691315419a28462e
+07434e220d0f1cdac5984b53eec3cf6e
+0743a29030f54cb01c7a8e9b965de59c
+07447d262b256c3e59e3f1c6b3b9307a
+0745508ee3ef74318c229f93020992bd
+0745654a9a094545514524ce79b9a277
+07468c4bfae8639370ae80b42c47e5cc
+074914f1b33b6411404bf9ef9d6e3fd3
+074b5d161069af5423b29d36a32a69b1
+074b5e1df930d2af271714547b49a5d7
+074bbd5f050c4362eff2803c7755e3dc
+074d258ca6750e452e242fd525300c42
+07539928a2fdf1fdbfc77d4e2d832944
+07565e8f1a7117b3063461b836d205d6
+0758a8895e6bc1947de1474c8bcd9c56
+0758f74cec54f89efdd22a560f0df670
+0759b3bc78f09c458fcfaabe78003317
+075c35a46205718a4e9ac94ee30ddcc9
+075dc35d3aee3c9a6c111ea5ec35b75c
+075e876da2d6a5ab6f99f4279a0e3bfd
+075fa01a439798e8fdd575b3521c1565
+0761a98bd6e6d34e8b3481129f52baae
+0762e64575c47ccb990a776922fbf7e1
+07635b093422e85c06b1817843167831
+07669c5a075494cc9f8467037ab4c5ee
+0768777d1aea8ae7f8b58f99a634206c
+076a87895cffbd1926f463837de01942
+076a9fe26f75500add3a997a11a9fbda
+076aee08656e5884fd7704d6a712330a
+076aee2945c566dd0d1f9e6fb5ee4385
+076be6ca26665ff52a83186c19da4945
+076fb9d76a36ae882b2636f2af010251
+076fc0d4b2d93ea5b8f49d5a4347bc5b
+077191f6bccc6e004f852c8b30a630e2
+07740cdad8279d51636783f01b9aad51
+0774c66c0da29a0885121f11ac888ba0
+0774ff2f696d3d3807ee8c4c5dc7a18b
+0775a02d29b588f00ac760c436fb45d6
+07765191b84a420b06c33de232ac1777
+0776ffb5bf0592fa9546702112c81772
+07777d711bf73e00b3a22c63a5c1854b
+077a62a7b42704693160365bc94812b5
+077dfdaa83d31b5964765d734d163e80
+077f602fcb6f0507ac561612747ede4d
+0782016d0c643ead91f958261606479b
+078913c35cb77670b1505b6f0cefc504
+0789379206806e82d02562957f21812c
+078d86c7f587f450a77815b3c4438f4a
+078da59e66fd7e4d2211df72870f7d23
+078e4c297394f3c8cd34ec301400fd76
+0791f85d37ff821b8bcdac1b4c73d5d8
+079209ac4790abebde3f8c83da2e84cb
+079277eb78da04ac53561d9c1f27cb0a
+0792d25a8c9dfa2e98f82c88eba21d05
+07938905a8c4929bdd02d6388dcffbac
+0796292449b67030d59903bc4927921f
+0798f5253493e4c999da1c4f9b52a09b
+07995cb2c5a7b498a7cb05bc457f3f1e
+079988e0ab0494dbca1577ae3f753dfa
+079d7d250c9ce7541b7f991fca73a130
+079fa42e87fabe2f8e98c59d2187a93f
+07a3087ba3b43cbbe6513b50aab72253
+07a32080ced64fabc51cac78763f8a97
+07a35e25e06a99590b6906a869418afc
+07a3d81bfdeedbb99ec52ec00e366d6a
+07a4219583b9404098c77fac379cb13f
+07aa4dd6dfcfa058d25254291092d272
+07aa9387af3cf3c7f0040ff44dd9bf13
+07ab1525ba7acb140a0a148521bd96e2
+07ab344174250779fc068289c982d346
+07ac23a5ca8b3c07b59db84d5f604957
+07ace24463d7b9fab28f8dad5540f6a6
+07ad7d64b4a58ade444d5bf536293110
+07af1b7f9523698984f14d5529127862
+07b1c4277b40bae9757a4ab0e3de0686
+07b38a66ca557f20c846f3cf237dfdb1
+07b3925b4e2c3a9e9b16bd20c14b9da0
+07b4bc3f7625f92f70d18ba21b0359dc
+07b5417584913ffa1d34b70785dcaae2
+07b5bfcac3a3ba714121867e3e1cdb48
+07ba95beaac6fd71ddeda94d4f61c763
+07bb0741f3a34b7f13dd7b37f84c8e6b
+07bb47fe5b36bd2794d4c7b472d69f61
+07bc2aa0578dc9d26dfda23840daee05
+07bc2e6d0731fe06de1c7595155f4fc3
+07bc61eef7d11906209d411612bbcfec
+07bd37a266ea76cde1fbe06955646baa
+07c17e82149b3054c681ef10049856eb
+07c38e2c6e86af3e0263bc0f35537c51
+07c4e361355bd1038e7bd1f10c143530
+07c5939ae561a1ea4b09ce3c6c12babb
+07ca774064351ad25f34af849117c75c
+07caa218a80c3343813d5b70771ac4ac
+07cc50df8006c649ae4d2aaaf37b7478
+07cea79042fd9c4c3ad5ddfb9a1d3ab2
+07cffdebdbc0494e417875b5aae5396e
+07d66084b03bc4d2b65378dc73ff228e
+07d865388aa721874d2e59155d67da9d
+07d8e1d2df47076515965b970ae5266b
+07da155f5b679c64db6b08b0b88770d3
+07db784b509078fb0b00c5080afd2b95
+07dd0892b00cf9f7f4e1e4e3f54935ef
+07dd3c18632efda46f7e37992997cc13
+07dd8b0bf6efd4f0c83e1cd436d4fbb2
+07e05a07d7d189564382fa393a44b294
+07e46b8473c79acc80d9ea1bb37a1108
+07e629fc2615045100772d76afd37f46
+07e62e3d91e347884d791fc99ca8df16
+07e8e1328be082872a05d198257f5d07
+07e94c9a2c38c51c02c6078cc401f25b
+07ee4cdc8ec562e4933d1f70b0a35bb3
+07ee8f4fe972ba989f96f38475500903
+07f1b6977dadfbafe454f313b68f32fa
+07f2969d8e633eaba7953faf8584f7fc
+07f51cafbb14b7022fc11829f01f7f22
+07f5a08d9fb092f4353f27b89078786d
+07fcf1348e9e83ffbd2cba4d6f90bda1
+07fddff595828007bf34233a92ac13b7
+07ff70a690e4bc62bcec745187a32d4a
+0800128d8a224b87ab2c356f8b178473
+0800a352916b426abd8452397c53d637
+0801199a333b7c2fb4250cf907d94388
+08029e1a629c040a9357ed1d1f4b44cb
+0802f2dcd00d88fbcca155e318223b0d
+08035fb2855cc2d97e25422508edf989
+08048520d1143931ddc40214ab0fa949
+0806ca6d476fd125103bf9acf94e93ff
+08099dcedc9eb800b0eea68e619e6211
+0809e36b243d61464f89b21406dc059f
+080e852d3663838b1b4328b6b6b6c7ec
+081106d528ddbda7a3640f1eeb6f0e31
+08113f3ab8c4e3372205b5dfbf63c4e3
+0811856aba4c9e01b206fb0de2ef8763
+08127862575c94ea7b935e832355570f
+081346794758c3610a957e4ff30830de
+08152b15778acd8ebde6f08bad1e70f4
+0815c9b87e2333772c123636737455c0
+0816907e76c51b82b555a78815a6fad6
+081750113426a0eb8ceead9cf1df33fa
+0818bbae37e01c5a5430b5e0ba32a864
+08194edddf09feeb6cc1d435d32a424a
+0819cf6de98c0a55cecbb27cf5d149b5
+081a74595f90ee12c9885f8022919351
+081df3424cc4ff08cb05912ca095a287
+081e3e5916cf3e7b6fdec77a992b146a
+081ef7c9f54a5bfafa31647d98bb84ce
+081ff06cef942d61e7fe271b99ac8a18
+08238b6b8dc6e0c8c7f0333f72cd3aa9
+082562d517e166ff4f23b7a3cad7ea24
+0825d04e857373c4129264075b216e26
+0829415446e06121181e6b53797ca0f8
+082a3dd92be3fc581a6b5d7edb4db308
+082d851173f9f4fe17a960d1fd472f87
+0830b2276d3ce4f4a18f165f45137d06
+08311ac4669d9dab261af739153d8dbc
+0832426dbc556aa505f8fcd452b111ee
+08327b5c1e4aa8f71850b0700518cb71
+0832dd7b163a804bbb400f531398f2c4
+08347d7cef13b980efa54ca39536e324
+0837cdbac4719d30106177b47031aa7b
+0839f525be96d19646ddc6ee31bf879a
+083c30b430c2341fc8cca41de1261d2b
+083ce25d6a509f9f462442806278177d
+083da0494ef8bceaaeeab1bc714b86e7
+083dfc3aef1ce6abdbd026e557c9ab74
+0841766cd0da30a88bdc4b5ed3264122
+0841be7472b2d672df77266368563cb0
+08437ae79ce1ddd3685e01d2bc17cfa8
+0843868480ea926bf1ba0350f0bf66d7
+08468e827f44bc49741ae3672e7e4d62
+08476119f641e22384f472d6c724e807
+084bdaa1eb774e0ad3f59f7335a667b1
+084c6ada289fc65babc0531533aa78bc
+084e3bb4c493bfa5eee2968c00bbaa48
+084fafe5f859c25b5f57b353064a336e
+0850d3c5863b169f3d0e5fb2bad3179c
+085447ce9de249037c49d481d9fe3bb6
+0856eb1b42005f9aaa8d9ed02a4b56f5
+08581977f69f411700dff19c9f5694b2
+085871ea803f21897a0fe4aeb03db7f3
+085aec5ec69d1e257de4e4e6ae1d5479
+085ecd2037d9637e90fed043f98b0a77
+085fed4732059b2c25db32398684995f
+086118c8cd5fc7675ab259cd06bed43c
+0863c18ede44f82650056833b79ac8ba
+086418902206648cad999348eba7a04b
+0864991aa129f9536c2c964bdbf4297c
+0864d2360edd35ce4c41c9a7ccdae7ae
+0864e028e15e700ac640539d78ff7862
+086765ebf69c91c379f4c90aa3de176b
+08681f6e87d4897bc6b1096a0e737178
+0868c84d232af450c2f7e7cece468141
+08691060fac3686183386b01064ea056
+0869d08f8e7c01a99bc1c2ef5caf8542
+086a13be9f1cb2697537579bcc68c4f8
+086c23f66e6a00ac43387eac58297d8e
+086c55e4644b9b36844d242053c1ab31
+086e897af6c1bd16cede9e9a6c8d78e6
+0870a2c7afbedc6deacc18e0f082756c
+087a3e671efc7eca1d319c811acd6eaf
+087a6b7ce1fc2e818f47a980179e96fc
+087c0312793c426a3be6e9ecdc990fa8
+087e268e627ab4958af65825f5e0a2e9
+08804a9effcdf2ee529f9ec0fb0ac932
+0884a0f375d15fa52b1cff208fe3891a
+08868a00c18db8e7dd0391f6b5c82167
+0886aa63e1f392af5e37d6e58374d847
+0886c9f4a4d18cf9caf4026d3a310067
+088a8c3eba0e1db3a7d9534fbaf2e7c1
+088b2c8de9a9302891abaaf8af28043d
+088b9f58361b045193ed8e3a8acb7f5b
+088bf444eebe451e524e0fb196a8c464
+088ca6a9e09a55374f31a8a64d7e7328
+088d45e7b4379b3ff9d959d8d47762d6
+088ed3988702f40e2d73cfd20def2702
+088fe186746b8e1e11f847998ff169e0
+08912e8d365146f6c6ca19a89de89389
+0891a491f335a217cbaba8c930e56a86
+089224f529e57afbac0ffb7ef41085e8
+089257f2f391ab8b7a10a21585dfafe0
+0896b29541ff27d54d1726ac2281d2d7
+089769eafb0ec2de46c0df636c919821
+0898aa666511a88c39aafddb0546f828
+0898b1ebad8aa475ec1f692df6c6001c
+089960e66d8fe3e9d5f8a2f9597220d0
+089ab7fc9a1518bcd064f5676398d808
+089b27e56bca0a8113c90dc83785d39b
+089bdffe35d3f569ca77ef17db97082a
+089ddb0c4e8ddf3307ebf8382ff6427e
+089e4b855c0206e25448d12135dff5a3
+089f765b74ddd022e731f4fb2fe33752
+08a04beb76a35c0b002a783a8377aafd
+08a0ec8386d809d6e6223a9cde792167
+08a1c98822c0fce33a468c8e6244e72b
+08a36668990728351dead222bd3b97cc
+08a3bd935e92b2fc202e362adf149f59
+08a3e379c63dddab3890e765e8585430
+08a4badd48a4e0c2768d793b9dcac104
+08a7345b41339f3c7dc8a2dfe0b93242
+08ae06ac2584b4ec28c7ee99185b6d59
+08b17d25563a73e26cab2a2be7d54cd2
+08b2cba4a63c6f54c7669c0fc355250f
+08b48b683c1f73dfa485defb87ecbe37
+08b4c315947d17490354a74bbc41e904
+08b5a9fd6a306c1eb721956d3d5e3a01
+08b68f25415d5e7af67a4e7a52f0eb5d
+08b7e8f6e0e65008e439d2a098f42b88
+08b88acb349cec5460bd42e7d2ef1bb7
+08b8d16bdb34c0781de8335ad523c5e7
+08b9316ccb75723da6f5c99b5e20a0e0
+08bc42d3b93f705f88240b13f517c786
+08bc72ff8e9f3476c6f18c73efed3b3d
+08c15b037637db9a12d6ed64546f6bcf
+08c1ef8288881d5733670d9664aa0701
+08c3781fe3f6261192ff0740bf6a6dce
+08c3f9013740af63e014e326ee0ebd1c
+08c51518822ba28011bf17435f2d5b39
+08c5bf65b6dac1db9443dfd0131095fa
+08c7c0572bf5afb40a646a079e05d639
+08ca00f5ea89a38a8934560c8aa61b01
+08ca1183b0544f178fcd40eb902cba2d
+08cc147659de733e567bbecb77ed8676
+08d066301e33b05c3c74d780e5c0c177
+08d0ca5f0a5f64f0edf2dd5904f4dd51
+08d180589c3bdd44c027c6e157a59008
+08d2a34b9ea1d0ad7118f47c64af3e8d
+08d3b3114d2e859979b48b0985335900
+08d50eb6c212fb03e5f3586419be67df
+08d696605a814d2996e608bcb6f4e733
+08d7ff0b7beb367a004c425a81d18f9c
+08dbc5507551db15f6b4211999786ab9
+08dbe5fd6f507f4ae25d554aa0719c0b
+08dbef5a4f6a3a48703ce3f3e8e20bd4
+08dcf4b82fc648f3fa691246435542e6
+08dfab3d0f5b46b3eccc5a115f944e12
+08e3a8a969fbb8d82aded8aaf62bef75
+08e6c11d36488daaa5772ec1179fa97d
+08e838fae523b02e06493d7c4da265b6
+08e889edd2c684ba400a89f7e6bf66f2
+08e914e420e3c8e7b6d3a3ffba5bc6ee
+08e9cfea502f96b652203ac91f19f465
+08ea7606695cbf023b56e357b6f45cba
+08eda0279a2c6c4c195d02f5dfaa7062
+08f1baa31cf3829ece703eb71317c2e6
+08f20abac62e82f22ed5c2a09035f316
+08f6614bae70b1fe8e59c89e06e2ea1a
+08f7e07948764013ffbbcc215e69180e
+08f89912c40bd7901c5063d7c6853383
+08f9c103d2e9695b5a266c226ec4b495
+08fd02e3dd10863359dcc361a3c711fe
+08fdf23b9bafb2853380ee78eb5c6c38
+08fe4c8d3ae05cffcb731e29ff1c6e1c
+09015e14eda9654a775e09b06972ace6
+0901b5c122aa62d5e8d06463da4af99a
+0904f2e8a8a469a5c38d690fc1e03de9
+0908b495d39975bf684dadd276e6482d
+090a12d99f0786a041971fdd141c6642
+090af8d87c72d12cd505a9abce5e147e
+090b022871ef8b904ec75dc9b111c381
+090ebc39bc4fde78f2338f737dcf792f
+090ec18c5fe58ed828c2a7c88c978220
+09113509e91b7191716c6ab3438149b2
+0917deee7fe810266f28644fb8efac39
+0919c5fe197e6298745719e148eadf09
+091bf18fcb80b7dbaadb5171a7f6576b
+091c400b924b641962aa59b6b609452b
+09227c6d01fb39bb4390e379f600d16a
+0922bd88a6760b17f6de1e25b5683243
+0922c9b788c6ea4ce440ccff6c9a1c22
+0923ad00ea83ed8370e346fc8df8da9a
+0929a605f6e0e4ff9d793d21053a15b7
+0929ff856bda05d08d7f338b06158f0f
+092db1a4df6af0f08686830e2987a15b
+092e154e42eb0d5ce7f26d2e73e510b2
+092ecf19eb8dfdf89fa61c38af501dd1
+0930438aa7674780b62dcf099e0d5e33
+093357fb6427796e063f9de36f763539
+0935a99043a0eccc66564f8c50e79784
+0935fbf68d3a0e36b82a0a294b635ccd
+0937d8a7353dbe82a086b619d9404d1c
+093c464b2993a4d26fb7c63832ba8c2f
+093cc10145a4b8cf7b62ac599f1b2e7d
+093cd513443d447a8d7fe533f93cd27c
+093d4db69ccc3f338ef72c8b726d42b9
+09414753a458b4f3bdd0300ce713a24a
+0941e1658fff83e62dbf090bcc1ceedb
+09441092353cea254fdc0700735dd97f
+09444e5b187370c2d5030ce9c6621f77
+0944d5f9b9bc90167560d8d4d0edd9c1
+09472b7689036f09e9aecf2fa3271cfc
+09497c798b9b673913aeab7b7f4551b0
+094a858061e16f70aad4546c4def630b
+094ab9a2f50eb82ebf0ec88cf39abe36
+094bf0fca8f119edb12aa2d1f6f4a358
+094c627f98a7bbe2e8b550615390dde7
+0950989cd5ea851e5149f1e6f14ccba0
+0950bd6edc94e92a5ad856ffd8f7a85a
+0951c153c27e979c32644172ee145703
+0951c5b31f72b97dd67b5e80be12b209
+0951cee8f586a33f3f3796be85262be8
+0951dde966c7ea3cafef6c2b0de77dad
+0951de59ae4133af0e2bc20e38c32d99
+0951e01365a4240396705b4c59900a74
+0954a7fe11e2ae6d955eef39f9b7f059
+095540dac67b1107bf3294bcb94c4205
+0956eeb84b52956f8bb421113dcb5b9f
+095718e294aaa48000eaf9de062fcb62
+0958a5f6b9655290788af2d0d2dae484
+09591b8382459eaae9535d15588fa7e7
+095a3249e7957eb43cbb5ac4b5c10291
+095a43ce9ac0ba5b7363f0cbed746b02
+095aa78342b166beaaa70fef97fb9607
+095cdf3a6cc64141bdb8379318ecf620
+095d90d919ab056d564c5722508bcc55
+095e0f5e9bf76508886cbda443881487
+09600218566276d0e4cad808062bc901
+09623fd371eec1b615e5bb93549b6310
+0962ad3aff935223aa4c75b61fa792b0
+0963d0f60ef92704971353bf70080151
+09647639014fce5af289eea7c3a6fd48
+09650fd810309eaeef03145074affe07
+096741dbabb7d8a36dd76e83774139e7
+0968da6eff5d3538048949ab9824c3ad
+096a758210b304aa5b0d127de4d2ee23
+096a832ac0657ba72790a1a4daa1a43b
+096aacd337c0f61a1c87381b5417bedb
+096d384ca4aa91838196c54da291bdb1
+096d4abd89206c61e8982732cb395387
+096f364d89a2330e434246252f8f775d
+096feb4ee11e5286d21692c25fed9a05
+0970a6edb3b79cfa8f5a70963733c639
+0970acfcf56a47661ea95cabfcd1f488
+0971501df2c44c20514cc933e9aba974
+0971cf04d4d8cac734a59bfe4e8d975e
+0975443b3eed87e4ee8f0409f5f3df3f
+0975ba77636e93ce8f9c0466b24ef655
+09760439f80a7fb53dd7a9fcf9b7139e
+097651370de9c3a415558cbb32ab5491
+0976ca48bb885ce2c12eb85546eafc68
+097800254b5f9eab1051a0438cfee9de
+097a634b24f1bfd7e7c6024bcf59ca3c
+097ac04444bdbd2362b95c79f1bf8039
+097b47950d953d08d75b4ff7587a661f
+097d2cc98e31e248f10c66b79d34e383
+097d62cfe23a70b7a9817e63a6098d51
+097ef8f0016a3a22092162bcb787e0dd
+09804093f5908db85011baac8982fd07
+098063d450e46b91c064a23e48358ad4
+098309c138b9f56b051f45966c80cdaa
+0983d131a15ab9d98a9f2ad137db964d
+0985e66fd910bec97988cf8b6eafbd69
+0987d7d241faa21de4315a61185f1585
+0988d9a2a055e330355df038e5898d5a
+0989f7c2b5be2a796be7f93ebcc0c8b3
+098d8db5a8664154940a3b748fd1adcd
+098fc7270dc6e7c07d9dcbbaf33d0b8e
+098fddf9f57bd2bab5370f6365a24aa7
+09900de1a1267991ab9a72333e87904a
+0990514d995d79a78567634f35469be3
+09907d1b11eb8379891be19060978332
+0991d5dc055f327ddd8ec2a3a1ab6c6a
+09942e65bdb4bfdc2ccecb2e1f9c04b8
+0995ba6cd509169c35b77e7d36f25618
+0995ea2652cf65a1c20aee6b1cc68096
+0996d64cf0d3b947c38bd19ad7cb338b
+09982cfa918cacdcbf4966493ae79272
+09995fa84485ddcccf38667a4b14e3dd
+099bfdce101587f10463f5e277999bac
+099e9b2dd5f34804d324a85baf5a4d5a
+099f3dfe74aab3b38582fdfba6e42025
+099fa8f893d58361766e427d02e058d1
+09a10a50ef14bcf7b8e741a09d1df2ef
+09a13f76d53d9e23c3b2f984cf8ad2ac
+09a28887c7237522145ff0a0ab7811a7
+09a2de78a057b11d3e826dc9530bd25d
+09a4a68c2af0e4a2c76c8033dff215c8
+09a4dff41dfaf77dc6b70d09cb4b8a82
+09a50e2a09f620236c05868777c44ba6
+09a5f150781e3f993e9883c2c44d46b6
+09a6114739e3c116a1efdd235ec5cb67
+09a96715ced05f0acd952722d30052e5
+09a9c9e3ab00b7ba8a99a6c2ac3d9713
+09aa0d674db01e6853d2dc00146fde82
+09aa2e77e49e2cffdb3ad8d9814d3c23
+09abc2ab7df0a42cac48e33a348c46b0
+09ad5062470c699577c936fdad6c9716
+09adaa4b12cfe211f4f2f487c73736fd
+09adcae379c1949405f89677553cb546
+09adec25ea0a53e7e3d3d348b45177cf
+09afea82a038e42edd663d77f40c99c0
+09b168f6724afcb8bd5033374a6986e5
+09b173d0f29fa9370258d51edbee2338
+09b41cab62589737ec8147e3b49a5287
+09b616f4c4ebe56e3ad19d99061aca8f
+09b6b0dc4a7b2040e4bd0b6efd100bf0
+09b721034b9fcae1bc3b9385557a4fb0
+09b79aaf00b690556cd774b9ff4e3362
+09b7c5a37a639ba1f340ce7833d7c090
+09b80d7108a15ac8b6021a5cc4a75f15
+09b94a536bf47e6a710eb16ebc4e1a29
+09b99bb0ae4f3f704e888add186b03a0
+09ba351aaad52d21f79bce11e918206e
+09bb833d28e2093890eeec2a919b13f6
+09bbb2af26d1705af39eab119b338582
+09bc444590f467ac54ebca121a89e645
+09bc6e9b4bb8b14f81a30ebff96cd618
+09c1f08c9452a4d6b5f1336dde9c9a0d
+09c2109ad9ccba0440449f1a55d43fdd
+09c423844b9ab6e66245abe62aa583ba
+09c5911145a30e28bdce4f875b94d6d4
+09c5ea56e887a4bff31889a7ea18b60b
+09c7bf695173a0bc079046ea5c77dac2
+09c7dce017c60fe0b840d3681f24e26b
+09c8f372965087322fea42c4df91f8d4
+09c933ca1e8e94afecfe48f54514486e
+09ca7b82432e6748849a1f4573c6db38
+09cbdf32e63e1d0d26007ac37d7fdcb8
+09d087393bd0649e21eb045e3b2beb55
+09d1e520cf3ec17e9d6047d4155cf2af
+09d6c669b7b79f1b7f3ec5b1e6ef834d
+09d9409e015df2e410148a919a5c0379
+09ddeaa0bc16d528bc8b44a41a20277a
+09de195897cf4146ccef6562578a94ee
+09df7ef9cbd91a7b7e041a102470d82c
+09e07f311951d1dd404107081d02380d
+09e13507ebdec887ca9a84a4e144a7c8
+09e1df4b67a36423a3d2d435fecf0ac2
+09e5128c13fbf761a393db0f35b1de7a
+09e96697743ecb4ebdba92478f930345
+09ea993fe0c7254c5050bc7a2cf913bb
+09eb2931b9573e7b1ea2303a5d09a0f2
+09f1b880c55e4c5adfdf3320d8b38c04
+09f3702e9f4954c15477efb6d27cd457
+09f629d7db3b86f5604ec3d85e41a851
+09f6501e8b1bc0fa6b688eeec60e4104
+09f660bc84132a53cca4cff4143ccea3
+09f756e388c5970ca74521ac1fe01732
+09f9e9f43032db4514ee0e3ab4a1b7e2
+09fc021a3008b5278784a8b80dab6fa4
+09ffface5278341d4aaf2b2bf80cd33f
+0a02d33e741b784cf0a7d49f3d171080
+0a02dcca2cc6783b6bc0c5d7bf317fa5
+0a0497c6a3fd4aa18c58c1c7753bdc93
+0a0547c5804955993753bdd7480627e1
+0a06bb3dfdb0b824bef12961abbfc105
+0a06bf1d3b5c84a3e63a443746d16394
+0a06ffa089e56f463e564b90df709090
+0a0873ecb7f3f2cc32c9c09a61707e44
+0a09421f61b1535aab8cd426f60ee83e
+0a0be5b85e0e3c91a0981e613bb20e4f
+0a0d19e6fbea02545c342626f47d5b5d
+0a0ef04a14bf38524b36624d2a3c1337
+0a1074bdc2307476158fbe5b6762915d
+0a1232acde436a52dcb2e645df45f920
+0a140aa265a6c1debd3e133de7696dc9
+0a144eaa69316fd57ed385408951d661
+0a156e7489fcf8051dadc1f1fd0758a3
+0a16600b49f8a0143c07ac8d87a82881
+0a169bb3464291028cbf8fe03d44802b
+0a183b0b943d16db5b0855b7fdd6e2a1
+0a19917a52402917cabecada7cae83f7
+0a19a549a9e0f206e467bd738228ff9e
+0a1a86535260afa646cfbd2ccd273950
+0a1cf347976b37c7169f2caf49202b96
+0a1d7c682eccbf088c8953d77c1ba199
+0a2152ac45a89dd171cc80453ca88ecd
+0a21bae70a0f4407b4c997f24b3458e5
+0a21d8b4aab7cae46c22024058ff4e48
+0a246ad92b21a5f4562b39761c3e0bff
+0a24b9acace735db35badb7c363c8b67
+0a25bcd7ec874651b629df44483a2965
+0a26fb59db44a817c7d6a1d7666db219
+0a29816f7bb16669dbb37e706a236e10
+0a303089b88ad10b5255a27a014cc36d
+0a334adcb90d3377a3f59798e2ce1f51
+0a33da129f34f528c361cf59e819b922
+0a34802fe17fb87f7d91f647fb62c6b0
+0a3501280e74563164fb7de83e05c6ca
+0a36133325855783ea8eaef4bc259d51
+0a368fcb4a29c42f04910db2506bd250
+0a3719b282c7299777c1697302484d0b
+0a3749ed7da58e313af0291355558be0
+0a3cf5133e9d027ef802d3b17a55a5a4
+0a3e52311fef63ec60aaae6b72e8d04e
+0a3e893236fd57a394ec71d418984170
+0a4199d7b5694f36dea4aad2c3f47fed
+0a427d8a7be38f17b82abf92692dec80
+0a469bbe55b8801b6580eb3a5a40c38f
+0a4826a428fdc6476013f6c6da420286
+0a4a4efb8f0f6e9b905aa3ad1c5b972d
+0a4b06691b8c19319d8c2d355b879281
+0a4b731c122801c56327d38bd30369e7
+0a4bec1aa58558edc7bf5cdf56c16e46
+0a4f57cbc4df95e6e0ff8fa56b6aa6e4
+0a4f6dea6716a4774cb5e08ba4857901
+0a50eddf543178726358c07c2b034ea2
+0a512b44a1da886f617275ac5b6c1cd5
+0a543c193e708d8148a622f0ca6d0058
+0a557dc7f9cf0a7c10f95a3083411384
+0a58bb4e9c869625a53abdb9b4655b17
+0a5a36f469cb4f75c453e423bd5e0797
+0a5d373956490661e61ca2aeaa545771
+0a5fd9d60ada25a5a0db74c4878863bc
+0a63eefae5ffa7553cc17610083162d0
+0a650cf496e1aff75be5149694ebacc3
+0a65932359c3aa6bf1ac193f4fad8b71
+0a67459edeba9638ad5a2da13d6da6de
+0a6a7543ed61f91c198f1510c0ff74b3
+0a6d53c04d62d42570f460a6f6283240
+0a6e27a691780835cabb089311ec0f25
+0a6e95df7cca7001aea1c40dc9e3832e
+0a6eea92f46ccefa4cabbc91834a6eca
+0a71dc9c7cc67cd49bc13aa54181c202
+0a730b09454fe391cf373ef34002b74f
+0a777564063d8ff062524f3b1d0f4955
+0a7806c555a70976ce5d4ac68a5d18ce
+0a7aad76799ab6a3563c59f7e341cc70
+0a7b0ca4f197bced3fb77e3a10e5fe4d
+0a7bed806fa74c05cd03adddb8b46def
+0a7d19121581eb8aeac513bc20dee2fe
+0a7de060adf4be59403efa8a2c2b5fc9
+0a7fde9632b84114c2b27b5184d49f9d
+0a8131ceceb4e34ed068c8889b9eca5e
+0a82fc8bc070b11f9f3a647a2023f865
+0a83f507727aa91b964140b30822786f
+0a854eabdb15cbb3c58d2069fed1a39a
+0a869a5ee6bba473166cc015f487d5eb
+0a86d7cee84b1c74c6836b5435d4d184
+0a8898fbce68f0df75519cab79090656
+0a8b65b4f31263e9796bdba9bfe60364
+0a8c3a73bf669ab7a319c2935de39c0a
+0a8d4a78c16206937dc1543764e663a3
+0a8f9e9a42d50771a6d02f262326e58c
+0a8fe83e171afcd56660b0d8413bcf02
+0a909df0710cd2847032808e1960538f
+0a92a0761cdf570cf14e47d55390b31d
+0a9378c1d49467f3c3e909cdc88251dc
+0a93e75a28308b0259435b77445bbb9a
+0a9416964c9aa4b7c6021d64ea33b73d
+0a947b496bc5667ea1f679291c17937c
+0a95e3417712d42b2e4a916129587e46
+0a98745309f4210f10bc96292dffa8ae
+0a997196b1f72b0bc2d63c5688a3bbcb
+0a9a44c96798ffde3ce1438024eb2efc
+0a9dd8af46ee7e867b81903b00317109
+0aa0a5ec5eae6cf9d1f24e3ce102ca02
+0aa125fb2d7720d719f866b1502e8ea7
+0aa220c8834b48055307ebeabb4f4fae
+0aa510274035f715f924e9bd300a5fb9
+0aa5c588a9b56c35ea1ca43ffb48f1ac
+0aa5e4fe100119d91d15d9bbf7243d10
+0aa6355372ed8e36cccd654e95d4c64d
+0aa73c719eb1967f2a6b7e8c4bab15ff
+0aa866a384250d8ec81af9a7fd788efb
+0aa942401ee2e81c96215e3cf4a3dd6e
+0aaa06092010d1fca0c58a8c8067af56
+0aaafb5dc02773a5c9adb9579bbff02c
+0aabe7c3c376e89fc8546f3913b6a637
+0aac67d97801e9917fc28e0a56e07a63
+0aacb5416613a15d703fa793a1e542b4
+0aafd0333e595b71838b486dcaaac0a3
+0ab0a22dae2d40764e97ca44033ff325
+0ab3804308d9ac41c611c41dc1769c24
+0ab6beedfa035ceccaa9eff727bc5a8b
+0ab92b332b23b5519260039eb100cb0d
+0abc7f847192dc406e6b076d3ebe1fe9
+0abf4624134e2a9ab7325129326a52f4
+0ac0cc9a1c7f03da19929f3d86273d4f
+0ac31d685d1e262277c9077bf9dbb4c6
+0ac508b362663c641fce9105107ddb81
+0ac7546d43ce1d0ae7f50ef52f44fe8e
+0ac7bfb6d3d3c11cd667655aa5bdcf19
+0ac7d9ed0f04cb9c8052e475f4c5f96b
+0ac8020d4b6feafadc1d05ac1c230b18
+0ac8b2956b547d52fe8a6fba0627800a
+0acba25d4448954630fcadfe86b19788
+0acd45c4abfc93e80fe0323220293e47
+0ace573f0bdb40e0f5eae31307f04148
+0acebed21123b9b3ab6f74b94653e54e
+0ad0287c8e78d10c4e3f3d2c2f7a03a8
+0ad0d8bd137e833c1aca656de8aa11e7
+0ad25b4928a6d947d7d626823af04e97
+0ad2d3c53540444bff1a23e81fd819f0
+0ad3ae1ae18c788a18d7178f2a68a995
+0ad43a62e74c0c4f51f025a9c01a1c02
+0ad6e2471841ea693fcaaa57d03d4ef6
+0adb4ff96230f9a227241835b0752675
+0ae0ea5d0fe28a33b1b2a04cef3ae6c0
+0ae1cb1b249bc92710d870116588ce9f
+0ae26b6e2f3bd3d82739d822fe8d5ed0
+0ae2b50694246f9df0e3023484eec318
+0ae4090016de91df95509016ce03888f
+0ae940befedbd8ac3aa73aa5bbff5bbc
+0ae9e00c0d1aa6d28fc45f879bc58102
+0aeb066404549a91de6e9b03f0b56edf
+0aeca951f9a8697050239b9a02fe4eb2
+0aed7decb3a85be9349009fe1855fa16
+0aeebae8584badebf63d037d843dd7ae
+0aeec688ad48ecaecf4f3058618d2bff
+0afb4708bf6e337b31f698936e275ade
+0afc5b415809876089482692afeaea94
+0afe21540563450bb470a48ebb1b02be
+0b0346ce8972761ab8d70c33dd2b99d8
+0b042781aedebfac15ab459bec9791e5
+0b049b57b0a44ef360a864b635c9c862
+0b056293b43b8a1f043db52480447dce
+0b05c79e9d6b34b7626ac3c90e79ad40
+0b06ba1bb85730a590b5d6b81806e217
+0b06d324bd2613bd2faf250848b9b205
+0b070a138c06684981745f86d1d0ea4b
+0b0988265759259fd45b33f87c433b37
+0b0a5f2f5d2fcc9da81e200f913f53a4
+0b0bec369a23551d01603b879f149b4c
+0b0d4f4f9b523d8f61723691ba7f579c
+0b0db59aa7441843447435ab7710238e
+0b105cf790c1856baf6feb338563af09
+0b13309d3efb217b346b80a693c02946
+0b16afa2bcc7c9ba016095d71ff7d698
+0b170a9a5a3d98abb457d07cfcbf5660
+0b172c57e20b0496574a05ae715ea138
+0b19018fc9bad3f67544cdfaacf2e162
+0b198f4715f0fe3d0e26341927a74421
+0b19d18d3e51274e4f6463912ddabef7
+0b19f29a72bc09882e52f665a7a5f24c
+0b1d4c77cd1f60c2237e1044b4ceb7de
+0b1e04e79e7fcf88906b256e159c1165
+0b1e277649430ac9ded37f0062c3fe33
+0b1e2aa03a45836f71c52ed8362fd707
+0b2161e4271374ea76a5a42e08aedbd4
+0b21c031c7505e2e5564cf415700360d
+0b223c75e7b95ee3ef890790f7bc7d22
+0b23d5cb7da9d57e894befaea1a1dbe9
+0b23fd90296356b4c2f02f73b13bcea2
+0b24de38c8ddc8a94901840571bb9225
+0b2ab129e154df85e1ef572ae6972d62
+0b2be164b8795610b012c3a62f98a5ec
+0b2fd6c779da8ea921f5ce84acab59ec
+0b30a59f92f36ee78f652bf9e2731d41
+0b324eb6e182de50033d60d51cfa99aa
+0b34a84b3b19608b78b4a69c22dc7b32
+0b3558921e06d27a8f38dd106ccf67a2
+0b35916bfdb3a4747e10c120cf39ceb2
+0b35a79443c5d6aff0d1149a865be5a1
+0b376011b24f94bb9704b7413dfc842e
+0b398244d4f0f516a1ab64789c5dc69c
+0b39e47645cdd27b8423223006f36896
+0b3a9de10b3c99e17e9751a8720cc049
+0b3c20fbd99f1ef7d5a532cd169671af
+0b3d16c1f6e52ed98dd6201011f3b2ba
+0b3dedd5b2890aa7d145643379e2c794
+0b3e97c940a8db7fcaec33ed140266a2
+0b3faeb544ff058e6eb2b9774bda4ad3
+0b40028a51fba9b3f3669b36c3895e64
+0b417f62af6886879d31dcbc997136fe
+0b43050a56501b6cc89f5b4b7cb44752
+0b442aa6dbe3299a2c315721d23b4fc2
+0b45674fbdd59dc5b65c8a389edee2af
+0b48a66f383cc95b3c0b4ef28a111540
+0b4b8c4b7f3a7b9e204e6524ee043063
+0b4b994f4a062db308aa41e79c657e6e
+0b4eb88fea50e84169f9fd3a2d7fd1f7
+0b50054176eb76dbd0db47469a2c674a
+0b506f8508bfdcd2a94a1cdbb6a86abf
+0b51036353765cb7d620fe9535f3f84f
+0b516c083269fe9c5f2952d798e40658
+0b52d83733c975490471610d585ff239
+0b53bc66e3016620ee4b3af927d44637
+0b55ffedb2eb824fbadb9b7d73cd9373
+0b57aed2805e4e76651932bdb3b0c9a0
+0b588c839f24991001f1adbccbe2458e
+0b5a671ea30f49d1f6a02bdca8dd40ef
+0b5e429c0d43cd1a824ac74e275293f4
+0b5f79456bd71c07acd735607703a7f7
+0b601091756a01817992d9bb7bc55151
+0b628f79584671a1468b731263bc5758
+0b63f89e16443a3329299e697962f23f
+0b64a5d098bcbdc677558c02c07f9531
+0b6518c37742d7007cbd1bce636f1b82
+0b653d7255312b2cc1e64adb356b41ef
+0b65606efcba99bd03d0b0ae476f5b5b
+0b666eb89c21ac69b2d933a54946b23e
+0b667328f139701101f7fd459736f7af
+0b6840b8e665eb17b26dd47c568419b8
+0b6a031c6d05387696ead854371d25e2
+0b6b7a297eb75fae49ffa4527d2eb632
+0b6bde7621b68d3669c0220afdf1cef8
+0b6c51ee4d54d91cab39014f4c97fac4
+0b730b5dd3bbb77202229704ca98452c
+0b75062d1fbb782cf6f4abccb85a64b6
+0b75b8ac78fc955346844ffa451d95f9
+0b7737e09d3adc5b000b5dde43da7841
+0b77a80b0a398746eebd3ddecf48b9f5
+0b7ccedd344f23cd02f309b88c86b506
+0b7e6bc018ac51a920e5a905e87ad3c4
+0b7fd04f34b87d15adb9fab0b9e85ca3
+0b811565f042a8dd6ef0943d344a7cb6
+0b822edf77a5815a73bad81e7ad8e7cf
+0b82c637900924bf2d6f32104dc091f1
+0b82dabd3df8171ab7b29463f7a10f62
+0b8369a15ee59d9452b5ce3584535c11
+0b84ae63ff48c73ea1f4ea7363ac20a5
+0b8872e32f8a417ae4deaaa8f84e8c4f
+0b89ca29295efc90886cf60bd284316d
+0b8c9f8371c3870495afbfaecee639e8
+0b8ce82cae1bec9494b0f9843643725e
+0b8d05e1d8bbf21cd7c4f7568312005d
+0b8df2ed735d7e69bc668beb1fa04954
+0b927a66d561997e80ca09004dc10438
+0b957d934f835981d1044077c20d71ef
+0b96552eefaab9e31da4d067458bed57
+0b96a5290a55d9e13a0902304aa3830a
+0b9854b931b4997107d396340eb79bd3
+0b9c7884d88e3fde417c4f7a218ee9e2
+0b9f02ae3a2d7ad12f0b267d0ac5cf48
+0b9f02b807998ff4d0fb2cd71b2c2f92
+0ba1d968975ad74c1eebdfd1fa137d2a
+0ba1db7e4f7f684e38ff8c2c87cb75d6
+0ba3c1dd781cf990d754d3d686e07079
+0ba3e4c4a4ec54f84b295b9dadc2abe6
+0ba606e0a0e4b2010718d1415ef1fd0c
+0ba6c2dafe6a8d5d1d327f71f62e57b9
+0ba6ef9da6f369dcc7379de95ca0316a
+0ba739acd34d11a5d543c2f512257466
+0ba918b2e4ae5a50f6fe54bb6909683c
+0ba9d1affb34139d41a4cb170728d0d9
+0baba73ae27b9a99b4f4d8cfdf840021
+0bac8607527143db43c39810b2b41d8c
+0bad4c098917603b59d780270bb6da3d
+0bad721d9972d7d9b00d2f3571df8965
+0baf417d0030195f0a415e2f36ddeb8b
+0bb07f05d91accf59c14735fcdfa4a9b
+0bb0c3d9639c83f817c9ed17200040d2
+0bb10800e1856cd7fd02f5e46c33eb08
+0bb2ce7e715f207d88731ea6694ba0cb
+0bb2e8338a0ed473ca61be01c3e6c156
+0bb37a7f32bcefa49c6209b6cfd0937b
+0bb4d07252afbcf3835ca20bd2973218
+0bb515f4d60aefb9dcc77ccea6cceb38
+0bb56d105bba424b8ecf75ac962e34f8
+0bb8c4acdae19dbe6aa2bb1b2df6dcc9
+0bb978f51cf0d2ff421bd1731d076495
+0bb9d12dcd3c24087927b58e45123e2b
+0bbd73e5598225d04fcd64d101ac0b7e
+0bbd9882fa33feea5af3694820bbe122
+0bbfb01b2aa4ff123c3c34d16edd8327
+0bc1f9f26f2adbf7627a468598d64ff4
+0bcd5007e1e70b1c720d513a76ba3a9e
+0bce5c42a39d2e960e7f9d262db42ef8
+0bcf20f6233c20e877e71e5d3b1519d4
+0bd081f954e2002edc25caa206ab72f1
+0bd0fb0ae4b0346b01b423acf795b1c8
+0bd2cdd54282e052a610d3da9dc97aca
+0bd31c3c0a9bcee8ef868fdb781715cd
+0bd3a43392b90f7d41f091db3e5484c8
+0bd3d3502a6ed6c024caad44b9b82380
+0bd4eaa9f2cbbf6d7be5bee048e2c429
+0bd5c7e61551848005c3994ca37fe9a2
+0bd89c341546334664734d4a934f2035
+0bda4266222fff5a2b85904a3c947383
+0bda81ae1bd5f38a429e862b1ed2b830
+0bda868992446f928570bfcf1aceb8c3
+0bdb6b35d0471146383b699f630326dd
+0bdc27c9c1b885a9a848e208038f450b
+0bdc4bedab4c5905a7fef42f501d51f9
+0bdc6811d7396f982d45b8f7e61cc2b1
+0bdcc29ee516de7aa307bd7dc75f442a
+0bdd93ced5f506962d4186f15e89eec7
+0bddff61793eeefd08ce666ef9de6152
+0bde9e6bd9e102f1d400f0e10e1350d6
+0bdfe0dccf00aa7fc4501f6d5c3bce85
+0be000d6002f14065516a09f30f614f7
+0be23d71115132e7b3f7ca210781a8c3
+0be3b5402135bb0691a051b61964c667
+0be5947c00058cccd78a86f12882fb32
+0be790f0456b41840d04d17c31908b1b
+0be9758097779cd514cbd4def5ab0986
+0bea8a259d29d4b9aa0af28d17101d33
+0bea995be6b9dd2d56cf50687409abdf
+0beadcb1d4bad0a5bdbd93a6382943bf
+0becc9780c18190a4ef4de97524d06d5
+0bee8cd1bdfb09a056cc5f78f128f222
+0bf09e67d418b5c79a278eb36a301eb6
+0bf24e77c3012c12559e4f7ec829f398
+0bf5c04547188d269bbd78f1c8d06705
+0bf6e6aba61069fee3f5decf4e930b37
+0bf8024b28fb2eab6f060a246be73999
+0bf8070e12f2f3abf7b1572770d6770b
+0bf898a385cf80bf027b8ecf03f1e64d
+0bfa51a39c0f135d4a3e1c7e3c5fc06d
+0bfc33bd0f8a28812fdefa831228cad4
+0c060c98eeafec2386d9bed805a72f2f
+0c07661043022cc8d8cb4936f6ed58b3
+0c07df2fc60c974a935141a427d0302a
+0c084338e248a433e02462880333e4af
+0c08bc325565ddeae398c5bbe237b163
+0c0a158517a1fcee687a871e7289d004
+0c0be3b19f5ebcc311bc9b06c9609285
+0c0cb0acdef4a63e6b88abfb204b58d5
+0c0d88d33633e7c9d1de96ddb9fd18db
+0c0dc06b800bb971ae87210568aaf4c0
+0c0e282cb411cfe115ab5535378a0e1a
+0c0e68822c38f903efa25a846024d6f4
+0c0ed43e3be293899be5e79a82d4849b
+0c1066d0a1c1918b62ae4d2657c6298e
+0c10b316ba7bf29316e47b169b9ccb14
+0c11b6392e4fb9c2984facdfec2b327a
+0c14ab1ded7689f88e2618218a33c10e
+0c15608b3b437b452a533dc8a985636e
+0c1562386f4d8ab143c7a75717020d05
+0c159a9a8aa1ee80d4923a8ee152ec25
+0c15b1eb6f32d7c945d714a45dcf938e
+0c164219da269fbcd54c6bd2067ab7a6
+0c1859192d3f9cf0a23f385666e15183
+0c188e683bc169cb6a23c09194405929
+0c195cfd1e404a3acbda416f8d343e76
+0c1b3e35cd0c62d01deec40cdf8d308a
+0c1b8c7c3b5c5635d0cd9b16c5791526
+0c1f8c87e46e101dddda9c0b972555dc
+0c1fbb4ca2ffe238a6e89b344c9e38e0
+0c211864ffaff931dc2b9bc7a9d3a0bf
+0c23d1d9ae4b6e5cd5a4f9dd44bfde2e
+0c246d877534e70ec23369b3fca0cc0c
+0c2479484ee8d3c36ba5600f29b1a7c5
+0c2544f754e6d37207ddf7eff16464c6
+0c267da2ea405ab0e3848f61d08a97a2
+0c26c1581efa09c04d519163e019ba70
+0c26d7da384a04698cb536b1938ac68e
+0c29478aacc1782cb2e0fe315210d17f
+0c29cf30c79d9f1e90bb02943e941199
+0c2bb303ec6ee64fb76ecb87a8afa243
+0c2c36d09b4afc324f302e675ec938ad
+0c2e75fc8d15ba9861666c197fd9ff8c
+0c325bbe9fc34bd673b51a537618a4b9
+0c329f8ebe13b76ed440e4963452d63d
+0c34ddb2fa2d0c80fed071fa8e8b55e6
+0c35120b238009314716203d72fea6b8
+0c365d4ae6d17190335a52bab9aa091f
+0c3855a9c1b0cfc6fb9bd6edcd1343d9
+0c3bcb21114e47e8b1582b62ef098abf
+0c402b7e9d920a14ddbc61661961e21e
+0c418ef444d18727313ae75fddb32d78
+0c436c5d783223d0de726a8368888592
+0c43e70308076e71ce393bea8419580b
+0c44c455455f826550078f710a1f4c41
+0c48641790c3e7f41eba4d5f4a2999ab
+0c4a12ae89255b6ef32929dd848bce4e
+0c4b63b996cfcf760ef96df6e94e828e
+0c4de9583a1c051c2fa8ee7fb5801ec5
+0c4f003fe6296aa7000ee07b179a1068
+0c4f27c20495dd6affdf0000510eb612
+0c4f79404cedd21d4ab319543dbc401b
+0c4ff7eb93583735501464e6c00997b8
+0c502d96db546d7d10bce3b5c0972b4e
+0c5375203369e0bf639809f0d0e82817
+0c569cb69826b55e5db8707fb1cce4c2
+0c5a16d8dd5adf5afdc85648fcf0e1f9
+0c5af4988f4651aad0c12e7efa40ac41
+0c60d10383e626af487ee609e80a2384
+0c631a68d067f434646f1b8a3270e43e
+0c63c431708fb3318af9711571fb1f0a
+0c64875e5d45226e1a592aa2bafce152
+0c6505c9bd49a2879eee1a73334e2b46
+0c6a8c47a601171f88f7956841da01af
+0c6ba9b3c049d8a8dc24bb310f3971cf
+0c6d0fcac209882711a1b08d798e341b
+0c6d1149336f539e20a0d08b7414860e
+0c6d5eb3aae87231d46e61c869717fa2
+0c6ff4397bb91ed253c422911cdf1cca
+0c712101f41262675b63c893a288399c
+0c72cb542dbf95650b9464d640b1f385
+0c738ba02fc3774c1d8dface86a90abf
+0c73935bb9860e88f484ae69bee11628
+0c74574593d927f177bbdbed1ef43fd0
+0c754bf9872b7a0b5f87b7818cbe456a
+0c7829d4027d0cb167c458323b57e839
+0c7a18427fae160a37edd0bd4a75f584
+0c7dc400e1758d8547021ed05126672e
+0c7debae6699e4765c48b9f1e4781fd8
+0c809e865a6f66ef2725aa5602e2b4dc
+0c848ce503604ac0f9cfcff5628d789b
+0c84d6eb2fa1cb68e477c37e8e12a7a9
+0c85a5d19dede44d6323feea41c58d9d
+0c8879c58380563f25c02cef57a41e24
+0c89861064ffb395b5dde1bf665ebad0
+0c8ba5a43423184143cd2264a3dc2280
+0c8d5c2694e80e8d7859026333f3eb21
+0c8e5383802539e765c3f7bfab720d83
+0c92475e9795e94979c936db5cb0c183
+0c939423dfec2f93a2315903e99960fa
+0c93ad09b2c3ff986f92a9486830c94a
+0c94765e8fee7e3213a4805d1dc46537
+0c948a9c39b538413704c65d802e8c3f
+0c96772c0a2cf4f0d3b7dbd2a67e20f0
+0c96a0c1440c18d0a5f07d5268b4b672
+0c992edf47ca95ded54ee5ad63cc291c
+0c99f194044366e5000933867250f5cd
+0c9a15612953eb8c13e3d1cd52167654
+0c9bade4536fb12087e92055a7d75ed4
+0c9bc241df2049e0ef539377fe41a52c
+0c9c6f991cd0bc61b8ddf8ddddd9670a
+0c9ccf82c0acd274ee74052d5d96b56f
+0ca08ebf1d050a505145df8c36931ddd
+0ca2a5e5e81d0c0b6509fec16badb8a7
+0ca44e0b32275fb360efb954bd0e29c4
+0ca582d5e5c0f650aaba4661589cb17d
+0ca8e3f13411dce0d88d27a3bed5ed13
+0ca96d245a8e59d1ced9f1bdf0a4c600
+0ca9f528a266ecfb429f61fd9dc0a273
+0ca9f52d39136f30dd15291e090cf06f
+0caa51e44dc3d4cd38abe7ce9dc3d0b4
+0caa5774f493f487baf36f8937dbd020
+0caff2425e3e7703c8a2514ff6ce7b84
+0cb09d69ddf915ec9fa78bf357cb66e0
+0cb2b1eaf15603d5586313de8a2fc57e
+0cb311aa28ba7a088d026043f8d1d763
+0cb3471f914b77316481c1b998c6d021
+0cb4d1ea082529311e23761ae6e9257c
+0cb54c766ce827132320fdfed1eca362
+0cbacc5f39940a23da6d8264a9341bf1
+0cbd1e51f71fbdabde14d8653f95d87d
+0cbd59b15b8b7c877c8c450763482a40
+0cbe264402f9c82eb5b61241c5e2fe6b
+0cbf1b09ce5ec1a2514396a0f40e92e2
+0cc05000008985599340cc87f5d1b5bb
+0cc16ec940402544626d807f8490df99
+0cc41001512935aec942d1766348446f
+0cc78daeac83e97e557d2015f8b3b97c
+0cc7a3cfafc8373282977127bcd6b67f
+0cc873429b5a9e19da7dbc8721c409e1
+0cc87829681460790e2c90d8c2582bba
+0cca0ff030356b8184164364342b01ab
+0ccabb436f87e1cca31553dde65c12e9
+0ccb730d9f4d2ee3aff4bd828581caee
+0ccc0625f04f77b5ba39c441ba039f17
+0ccce2372d70bea9d48a07268ab7b83e
+0ccd0e04fc7e0f658824fd928b3ee217
+0ccd993eaea261ba56301aaffc4a81c1
+0cd103dcbb2a3774d4918b48e06b916b
+0cd1620e3f72fc9a7c75e45ab18fca62
+0cd21d1df2f465eacdbca83ec580b340
+0cd54beca5ed14ed15a536f0c9a264ff
+0cd603f729f6157278a1de1f7d5e8a61
+0cd7c61857ea7ec8e494eb300cf17aa3
+0cd93d17de2ac2a4ee775a1fe65389c4
+0cda3f74a28ee32ee7f4e90939b5963a
+0cda81de698cb75bc2337e2229f7c5ec
+0cdb31c90a29460dcec3b0edf3be6505
+0cdcf3e87d1ad7099e2620a74bf7b3f9
+0cdd4ef85d321ea5654be5786b5f2fd4
+0cdd90bba7b5422ecfb59eae0f1fdeb2
+0cddaf757aa118f7d2265913e3485409
+0cdf915ee6480583988cf28a1a9742e9
+0ce0750d3d153b57be78ab9dce57c043
+0ce0818ba457a181b56bd1fde803b029
+0ce2e16ba90bfe64dd12c4a4b726dda0
+0ce365c24e6587f7cd3ea0ae0875e570
+0ce544a6dee68c7442fa536a1704f069
+0ce55c0071259e539eeca241744ecafe
+0ce7193da57ed84ed405eb4a5bd031cb
+0ce802f137c70b848de8a22973476ea3
+0ce88d30f4f056767fc30cc6282f3b24
+0cea24a232fd104a0f96a3b6b733117d
+0cee2eaef2086d14aa14a4bf13da4627
+0cef86f948db0353c36e42dfafcfcd87
+0cf13c813c2a5cdcbf744e7d4fa293d0
+0cf19683122f6c80518603b8186ea2bf
+0cf248a1f3c9d30ddb66818df6301a2e
+0cf28a289d06562066a1e172e59ee696
+0cf4a419230a9c578156517ea2b69b04
+0cf4e72e9b4904cd383423ca49844495
+0cfd3b306c59d5ab9593739a09774787
+0d008ce7e894bc78621b3a3c91f09ed2
+0d02580a286144b06b12f5aae347c7dc
+0d026654316328c989c5703b96268bbb
+0d034974887f6be0247386dc172e1025
+0d043c7b19b46f6d8c16177562f2216d
+0d082e3a8590a2843abd890333404d4e
+0d089889c7894526987d8c624961a29f
+0d093656e61d640b555d0ede3ae42611
+0d093a28e35472ef705193916cbd824a
+0d096a2e1df64ea5f2c9c6be12953e6a
+0d0afd8d09cc547530e5dd41795ed607
+0d0bc9d1717dcca0e8e815d6bb6b4faf
+0d0c0c6f6fa9476b898af05a698ca285
+0d0c136f274ff16dbcf5565ca73b4f8b
+0d0c27351b2c8da3fe3a85f05c18c623
+0d0c6f0ee7f217b87cda6b34778541ff
+0d0f4f4e0a493ac6aa9de96389a94bb1
+0d16397862d7ce918e02c9c638c7c372
+0d1701d38fe96bb0f99a08a303c30cb9
+0d171af6ab000d376e5a3f8941e91430
+0d17fbab108b23676d1172eb79f41aaf
+0d1afbb5a37178b16d362225019c0d66
+0d1c5fb610f40b3207df137a0c9e1ebe
+0d21ca02239ce0119f1cf3f937ef38c8
+0d22076cf690a6324ba7c40fe4d79428
+0d2268c0248b7d1345f17a9235210163
+0d2706c5634bdec29adcc9a71e468ecc
+0d2938459f80e9535d1a2ce9770d4515
+0d2a4a33ff23560315619105076db074
+0d2da0e23d812ddcf372a4e09746bf80
+0d2e6ec84028cc70fa75f178525d8800
+0d2ec6d9798670877b2287de65969ee2
+0d2ed1676e5b87dd52ce8a018f5d750d
+0d31748dd012bfd45f543f6e25a7dbe7
+0d325484f4c13489acae6d3b7d762c61
+0d37065f3c8d19f107b1b24540bbc659
+0d37767ce986889d6641fa06293854c2
+0d380e7e0790f512a4066014af8ac82c
+0d3e2ec94521b5bdfbcedfcb7fb69092
+0d3ebe3414641a5fe56ce4710a5fb0cc
+0d3fda0667aacc7ad753215a3ed48759
+0d403d903131224330d38f0dc1fc01d6
+0d433178b005d63f5c8a182f559661b7
+0d44270f875e581e533e048bb1b29fc2
+0d4537ce9283f497303efda887933126
+0d45c73f428145367297ee489479b4f8
+0d45d4352e9f2519013aca45036a760c
+0d462f5ca83059c8c0fbfbde4e4c341d
+0d47a7b3fc057dd32a32540ed8dad3b1
+0d491382c717746600d77c5988241b3b
+0d49d9a1bf060f825f118def2f9b45b5
+0d4a43814d34ad876060c239238de879
+0d4b625345e365d515045e2b242a91d1
+0d4b6eb2e4e960e96458ea0a9a9d89c7
+0d4c0057ec7848bf674cb462f5797adf
+0d4c0e77f5c40cb4177f552ed363b402
+0d4ccb8214baf1dff2416f26b3e65165
+0d4e4da299f63a42b1b2ea5c633a5494
+0d4f57f8fbd9231142f3bf16a332a092
+0d513e95c3384def549ff8b9b60e3706
+0d52aedb3db4e93dbb724696e9ef132a
+0d57285519452c46dbd447e9b98addc4
+0d5abb498053f2a751a21c8f93c82eb8
+0d5b6726fb23d7bc8e6e5bff58d6dec0
+0d5c5ce5b3d9149caef857eb56248973
+0d5d664f2e5b1b3df049b1b29d51713d
+0d5ea69ea289e169da701ba5039b7e05
+0d5f319928ed17e711e651f3594c4cc5
+0d6194dda4c13bdd2af3f8af6874a65a
+0d634f81f9b3d21b619ac7ac44a77a16
+0d637b2e645e630cf9ec356abc012e40
+0d6448d5fd2780b3e1f8cebbf0687721
+0d6483789ea65ab7fa8aa689f2905443
+0d655778ca6b82231cee6e7aadc962d9
+0d6730a6c93b521aab9d1a9c6e9fc8d4
+0d68d3281f711450e3a93e6464534356
+0d6c8cb94799222cad0b3294c60d6282
+0d6ce06655da03213089e1f0e8790fe4
+0d6dcdc51b32e66839e2f2543e931419
+0d6e5cdf87d825fb54efbc42aa49f7b9
+0d7139e85d5aedc57a3c066d406934be
+0d727d070aa9966ac7bcb7a45e6b9a48
+0d72955ac12c92da85f21727cb8c7d38
+0d760e38c1ea31f81ac929939a62c054
+0d77852a939d16e3befffd8555ef41ee
+0d77a2d0a4756ea008720f5cb697b836
+0d798345fb626e2f1d2d29427ae0b3bf
+0d79b5b8488f1099f944305e3c3637d8
+0d7a9c587704f7c7484be79833587f0a
+0d7b17ae6fb5e85b236c88d03050b70c
+0d7b234a93a9bc1cadf118e3bc0eb3b9
+0d7b950cc82f90aacf9e3a01b5ff54d3
+0d7f70f4bfae8ae1f2d74a4b21fd2af7
+0d7f96954af325dce7c7c5abe42498dd
+0d80a941e6263dff22c1d84b3f801619
+0d80f597a9bce794c3c322de3ee090a0
+0d826e8e777cb3174e0885095b79b0f0
+0d8a37017ff96fee09b32ad090d98191
+0d8be543533479aaeb1eeb7c22f4427d
+0d8c28b1d761f0c482a2decdaa1a1a1d
+0d8da9ffdd2c36fcb0ad0d1a33cb6c1c
+0d8f59b30c9d507dbf2a87229e790a7a
+0d90037413a8267598fe67569f928172
+0d901e9d6819e73fd60238fe8f0637fa
+0d91d5d0db052459ea5fd68de3605a24
+0d935b62d3dd3f12ba1239817ec076d4
+0d94209ce9f874b9d1fbf56aa449c21c
+0d948cdead4ceeb51f08e4fde057d60e
+0d9523db7ffebf29e84b0c96f61f0819
+0d9616162f3447bc2772e9bef721a84d
+0d9825e9431f9a309cdebfa3b3d70630
+0d9bfc675171b7512f60e2180ac27900
+0d9cc323adcd7912d1b232cee172f5a3
+0d9ccec4c74d9c10f03e241f25a1d19c
+0d9d153a19ae89a62edf4a7676d999f1
+0d9d56f135c6c23bafed83e687587a2d
+0da1144d92633c1a03b8f2f9f5626d19
+0da1d2296ec9c0481482ec37d114adc7
+0da4d11d2357a5cf041ddf6f25699b1f
+0da4fd88ac31fcb638c7c8f26ba425aa
+0da69c29a7a4e3ac1d04495b5a6de834
+0da8228ad37b123645967bf8ee50ec6d
+0da8513fac785d78353771388cec01f4
+0da88b948d8e1deb0be142a2d2766f8f
+0daa4cef6dbe95a71d855a453bd0aabc
+0daac2a16bf2232f33e8809ee8e52959
+0dadaecd66fcf5c3825ff4b1fa47c65d
+0dae9e80c1851f7f0506d2c5a8ed73e7
+0db1162530b6de0dd4448ccff2dc7976
+0db248acd2f1c295468552c8f28dc490
+0db290fa389c5828352d018d3b12c88b
+0db5d869063fed7a970f7e72d02873d6
+0db90784b3e46bda0f0e3ea24191a409
+0db950f044696feb380809529fe4609b
+0dbbd72e030c47bd06a67900570b2ba1
+0dbc705c918a3db0baf8e46d58e748b3
+0dbcc3958a72861751b89e5a217501d7
+0dbdf11e96e4227190c2a6e0971954e8
+0dc0549924709113303d05250bc53ca7
+0dc2317e9d7c1855814be690ab36cb02
+0dc73c1d9e321a6af9e92db350a57c07
+0dc792bb2fbe59a4dda804121d328108
+0dc82fe1f23f24a2469b0372f927a4a6
+0dc9334324406ce239c549c106df8427
+0dc9a8b71a697fe4ea5a1c539f51c730
+0dc9ae6950427ad8b5a30b4da2dcca46
+0dcab18b55a0215d5f6313f5be412734
+0dcdafab2352b39ab88ffd8128a3134b
+0dcdca72be9a80e371dac9a68fa858ae
+0dce167cf11e6ee70d5c49475f4c60eb
+0dceaebbeb68a9518a10a9d53146ea81
+0dd094dd9a37d13ea5c3485989c39e36
+0dd13e51a6fc1250f9be08e28a9dd20b
+0dd1a13a96ac99da74135c30ba94086d
+0dd27af4feea046484d7edc6d654790e
+0dd43b625e2382d332dcbf961d70dcd7
+0dd58e24193d8ea33e68146eb23acbcd
+0dd700dcabeaa84f604137a37fa124a5
+0dd778ae993910204b282d9958da842d
+0ddc50e50b86a06dc5b20e639b49412e
+0ddda400546de675f0bef83725611866
+0dddc06c2eec6f0b2e734fe9c90d8e91
+0ddf18a1152fd458acd64e7eb179b041
+0de1685d371b951fddbc408bad5fee8a
+0de353641b08516df8b601b2828fa4f7
+0de51b0824dc2ba9b510b5fa07f1a890
+0de69c50bdf0ce5aa744b328abecc263
+0de7484b954b75f1a045165d0c29f66f
+0de7a2f18b564c5971e51949c765ef1a
+0de7ba720cfe4b39d3b439445a2c9df4
+0de7e98b0d1ba576650c1b1f47758f8e
+0dea4bc5f9a7c65bfcc5f7b2102785f4
+0defeedd5e07f63d36b0543cf6d241b6
+0df014529780a8e3ef65cdb4e0be8286
+0df1e78203d00d33984f7f52dbfad795
+0df377dcc8bbeac73f6af038d9568227
+0df577683aade4e401702624b4851e25
+0df5ebb3ba07dab03b08664ddd03b305
+0df84fac86e058bb2ae958028be35618
+0df97919d01bd980c358e7a3c571e3ad
+0dfa3c6855fff58bb1e9f09c18bc6399
+0dff6538e8458ae1afa246f972cfe65f
+0dffbf5728436615a99927987e50c517
+0e02f4271f5c0789577710ff017be6c7
+0e0720b40c42b2e7fe10f6dd98fa9980
+0e07e06367a2e4593766e55c129bb3df
+0e07ed9ead6f2195e142f37fa5319a30
+0e125d9ba1e7135a226e523bad5ed59e
+0e145d7e8a5eadfe8bdefaf749cf2f8f
+0e156170caaa5b098a2fa664c23e61a8
+0e15792498d61ccd5cf81f3339013dd8
+0e1770494214b19d9c7e3de2c05fef5b
+0e17aea710917c2058a04e2f01818e7f
+0e1814e3d1092d070910c9b899cd5ff7
+0e1c308f09373cf7d83e70c7b8f5d81b
+0e1cc22ea77b1ac5de5c7e4dd0c617c7
+0e1e40a16950ebc250d5cf24b1b16a52
+0e1fe830398c9a172e1b6514fdc870fb
+0e210164523eb617bce3a5bd93b567ed
+0e2121ad73af26e9d105bc97d41c2823
+0e28e85962a24d8dcdf8a49767f15235
+0e2aeeb582c6b0c1d8c1e2b91daa5f44
+0e2b009a910411939857c50fd7149be5
+0e2da7eaa888fca0ce22f118de6628ac
+0e31ad11b4f016108bb4b4031dc5fa67
+0e337d7cb32ae44da6bdd61e8b75af9c
+0e34f3254da8588061021d3fb133717b
+0e38f63764b246cfbb824f1263a1041a
+0e3b22edfc0f473f6fc7b01606feebd5
+0e3d292a6467f6e30ff9fea1d988cb10
+0e3d4ed0a276eccd073187ae687c8a64
+0e3ec3db25f040ab8bdbc57e9cd92c45
+0e3f7894e9d700ffd180222d23a25991
+0e410c2a36347f3879b6a0192fc7f83c
+0e41dff013ce421d2bc7e78b8fb93e6c
+0e4210b122f431a98dee46c435bbcfb0
+0e4316afa1198b15f8260d2bf8bdbf05
+0e44cd9dff8b8ed574f706c828bfc8db
+0e45f5515a022d2d26f0bc23f2b70358
+0e461ca94b8f593a875ba1c6e4d0badd
+0e46bb9f1ad35e36b1b7837bf1783d95
+0e4709741e6646dbeaa79351cb303bca
+0e477890e8b93ceb3b1dd7c36b5c57da
+0e481082086014c61a4a9f2b1ba33d98
+0e4a4ed7e83f437e15e5beb3e6424eea
+0e4c92b1fce9eba2f7f13ecf1e6ae72e
+0e4d72d9df1f05bd3c16c6d97f033886
+0e4e2cdf2c8c88c71dce81019a03f026
+0e4ec6099dc87060fbb39f37d2ec61e1
+0e4fc91984e6c2312a7aa403399d53f2
+0e5209ac0acf9db285a5bd1d89fca43d
+0e547ea85d52997e7e093166fd688e31
+0e552e78258a82fadd8473b3083c6307
+0e554b6103fb7e64a9d6f49640954869
+0e5698424004630ddb9e08adc29f2c8c
+0e57175070bf78cc0c1e0e5d909acc05
+0e5724341a22d1d39f15ad427431993a
+0e58ec4ec9eb8286b53b44319c3a9442
+0e5941408cbe6ad145187923a89285f9
+0e5a556410ddfa08f1d6d1aeaddf9c4c
+0e5b5dfab8df9a5ff3882b2af697026e
+0e5d6e2bde4aec6a6e4cfbea09c1099b
+0e5f13fe179bf0e09b8f341e5f48c0be
+0e5f24872ccf98b41cf41fda358a3e1e
+0e6594eea6e45251251657ea07b90b1f
+0e669729c272cf6d00351861b5b6ea37
+0e67dc6fff28d44a8b219a132886e335
+0e6d6e4664bcece232d475bfc9540d1d
+0e70680a0881ffe3a01f63e5d44c02be
+0e71b8f5586f660063478274fb5724e9
+0e72caa15ab2ea628abd0257fa15f468
+0e736a09e9986ffc6e70b1a1751b4b44
+0e75bec2ef3a0939a2990901eb667610
+0e75fe2072d580009f94ec4e53079815
+0e78348146c815da304ba1ac4cea89e6
+0e7846da88f00f8d1f181f06c97468c9
+0e79774f0e1568f60f41311cae70e227
+0e797f413e0a82f0e140121afb1a5b59
+0e79b21c071ffcffccf9d659ff4fecd9
+0e7f8a0ad1d579bae7e7b998e50d3de0
+0e80805eef3b4f9db4eec11353a04a88
+0e814f26e479f00c74e3f25d21549e32
+0e827827cfc9e9e638317fe7b5aaaba8
+0e84226432f0905450310a2334c096e6
+0e844a2c8b4ba124e3723c1f27cbccdd
+0e8683e7bc393f6a1a867ce21cc85546
+0e86e26592010a4963c3bd4ce7b5765b
+0e886bdbe9286471d1ba0a9d3fc43bdd
+0e88dc134e12605c30ec51d5960fc1c0
+0e89c4177eadd1253d08ce8d3ee6eea4
+0e89eaadd9b8943dc202f1bb133d4d71
+0e8b8a661598539a506764f0437cba94
+0e8d8f63596cd608c32da08feb8a56b8
+0e8da97989e47454fac415a6c92d2ad9
+0e8df75411ba4637b64252f450526870
+0e8e8bf30e198984cfe11b0626d730f8
+0e8f36a9ef75bbcf52ec481c7197aaff
+0e8fb81dda7816cd550757ac6030791a
+0e904e3991c6848cb1fd58a799cf440e
+0e90bf9465ce433e985b730bec9c97b5
+0e946f72b9d73489873e13d6302778c1
+0e9676bf477a871e2526b9a3f99aee67
+0e96f3d5a2cc28c2a5478d48f67f6a43
+0e978264cb4dddfb5ef97799c7d88794
+0e9c3db68d0422f7297a9eccc6afc51f
+0e9f2d3bef56a7e97652f38f88590434
+0ea3cec237e910fd1e96a97848bf8030
+0ea55695fbbb4646087f89d21db8cb2c
+0ea721a55c3e1f64ddba5e976bf776d7
+0ea7e347896552b78677994e87a07472
+0ea8a38a926d56ab3aa669a5298bda4b
+0ea9d18c74bfb8818452a7ad584fb2e5
+0eab735823000c4d2398a098e5e0ee90
+0eabcae0b65161a8859d188d3df169c9
+0eac50e0d237287df14350192b143547
+0eae11d61db2f5c9981c6134292bd901
+0eafd905f75d74d71b1e3d49d3d917cf
+0eb24e59eb5b9a513739f363d6b315e4
+0eb2dd1e51c5de1f362a95842d2f591b
+0eb48d34e545dc69068cf86b9805a24e
+0eb6a5f3b9529ca81c9dcca81c5cec66
+0eb772da690ab3bc4cd96d34b50a995d
+0eb79f6346b0a3a945c15cb94663b89e
+0eb7b12595e4571e32b1e2fc4a371e20
+0ebad611327c1679bb88e352d8dbc9d7
+0ebadf2f5f4580864dd69971ec7540ef
+0ebb54364db157bb284fca7971648fc7
+0ebdef02b5d32402e7dd6dec29aebd45
+0ec10644260bf9a97ff4f8e34ce9d8d7
+0ec311fd6c517928db76fa9d33147855
+0ec48493b211080c8c8bcb4f3d381cd3
+0ec48f2ed9df0d591fafbe344bfb52d4
+0ec4b32b634bd4f965b64b1c5aa01347
+0ec87e385857af08656537980532a5b9
+0ecba65c08ea27a4100a5fee3a412d85
+0ecc37a40189f93fb6fcb5924dd52927
+0eccdad83f303ea3f706fd1bc64e3f58
+0eccf0f3d0c1d6a3c6154cfbca3f0245
+0ece627667ab62b0bd3a8d345f488a16
+0ece94242d78dc9f44e6c264a390ced4
+0ed19f0cf12ed6346512331c057666cd
+0ed2d2ed15b592024d559e9d47bee9d1
+0ed5edac05f7cf40fc7ebb71d8238eb9
+0ed84c68e73e52ed46d4a9b4628d3b54
+0edb9ea4920ebf3e13ca976ebee09df4
+0edbbee4e101c0244f0244c235f8cb42
+0edc33ab2df17208c1fefad55eaf75ae
+0eddb1ebef0dedf7438c3953cb40c1c3
+0eddf5eda3ddc7ac90de64028b65da37
+0ee133dc0979dd8046ed33a53555dfd4
+0ee63113f07a22e259a1de9f15ee20da
+0ee71c4f9c342865813426d1d2c00b8a
+0ee987c0b6b6292f30ed2db165bacb50
+0eea2eedb90cf0486dcf8023564d60c4
+0eeb3af04852f25165d5a66303e611e1
+0eec7198e7fd60e1d08349dd16a122c3
+0eecb6200ce758f47f893862e63958c6
+0eef3663b2177162ef2a24da7a0b781c
+0ef10b927be418c643023890c2451e4c
+0ef27063129ee230e92180aa0992a1fe
+0ef32cdcc2a9bb9cfb1c8f645f3e6abd
+0ef4e6740b094d8fa2284d960bf09e03
+0ef6282ec935b95a8d828206d36125d4
+0ef70c80f788eec69052bc18efcb5e30
+0ef824e995d84d472b82161c95c92540
+0ef83cfa7eedf7387c9cb82cc73ce77b
+0ef9bf853b482249aa30f847e842015a
+0efa937a3c26711df681d70addc6c10f
+0efd118018e5abe465c0613ffcb2bd5e
+0efe9f0c4b5326699e1ba0eeafd82a2b
+0effe69bdc61c3352c76643f4a2e6be9
+0f002d39f1e2523c54b165c33eb20df2
+0f05126da78a69de1f9e16de60c628ae
+0f063e8e4cc04d31104f663462c56abf
+0f07edbc8001026d4418485cf7d30e0c
+0f084321f75e82a07bf2fdcc639bec02
+0f0a1925d6ddc2a70ad46b8468c3a141
+0f0b063bf82e1356e5d05cc9b4214b26
+0f0ba535c35b8182fae607620e82d8b5
+0f0c80cdb642a17a3c252d08c4f79785
+0f0dd34002ce5e25a93608a68fe585d3
+0f0eabc40e2416a3f4d7ea30c081f7f9
+0f0eda8fbb72a5e561633cb7e6946475
+0f0ffbe6a154625e8dfdaa5982708330
+0f12a637f3050a3a29b9ccae66656fb8
+0f136243649540415d46b651e2367f44
+0f13bd262e7e30828766d7b35fa17f1a
+0f146562b2c40dab33e486c435d27fdf
+0f155d2e1e96c705deee3201f66d76e8
+0f17a4d379d0581352759f09e7d34e1e
+0f1bc9b3c7c58b52553eb8955d2a0f44
+0f1dd14211151860b51580926f9b2601
+0f1dddcae4a97d15da0a02eef4b6e8fe
+0f1e17031e3fde4d2221c865aad9a3d5
+0f1ec643fe2ee3588dd9ed77e2fc328a
+0f21242034cb3ce5b9d73f3260dcc9fc
+0f233507357d545890de3692eb102165
+0f25d75043782c71a6ef3e0a1c2d9302
+0f26277935ad7cc3d6042d98ef0eb44a
+0f29808c0f237c955bfe347c61998a7f
+0f2edefb17adddf309028c9de43fd8f8
+0f2f1246781ca625a3bf7b9dda7d1d26
+0f2fbf81d89f6220f194235763d2d5e4
+0f2fcc14d0ad6124fd975f62326334af
+0f301d155931bf3c97c3bc73d2604c3d
+0f3067572f21f76a043e7b42e290c4ea
+0f3102326411a0ae1b29b6b344dc0d7a
+0f31299db0c80d08bdf33b6b06ee98e8
+0f32910a33e98b3e33f01d59bb207482
+0f34ee20d48b9d6d4c90d5e6d46c8778
+0f361974ab831b65df64cae2ce3f821f
+0f3801db65893fe3fc6097f378c5bdba
+0f3935baca70c1de5b1bfaaecf0ca603
+0f39f0155f32c6b709c183e8e1819b12
+0f3c2de721ea12dce352b2108c75e4ea
+0f3c314ef0c2e3b40eb4ea32948534ca
+0f3d619d4ca2f62797e570252b2832e5
+0f3dd4b2b97236e9b44e6c029796d7ab
+0f3ffab0266a3737656da83aa96cb7a8
+0f4136e97d545d4caf3e8e5923f4d6de
+0f41742d11a9f0aa8bac715e305bdbd5
+0f4433956579a32e645f71b3550af617
+0f44a423f7787fad51fbca39c8c08ca7
+0f450c11d33a1e550e16513639a2655a
+0f463a33eaa157b858abccc708fcc377
+0f46ef50485715aa306f0192e6de7702
+0f480eda91f4f6e357e3f6d15148c913
+0f4ada1add4307d85e7af969a855f182
+0f4aef21c3dacd6cfd76135c481b695f
+0f4b688ab5cdc2a3d05ba9d3b6a8ff38
+0f4cbd81c6ccdb88fb401457980d8d0f
+0f4f14ed0020f3fc9b6a32cb82dedf82
+0f51cda6bb5fa57d1fc8819f71cd917e
+0f56846ad3af9de20e09f7974aaba7e8
+0f58d97e72a8efcc643f82d97255908e
+0f5a6c23f77382ee30ace58dca300fec
+0f5a876200d18f1cccfe9816d425a3c6
+0f5c0d76db59cf0a4cf9a9993035adfa
+0f5cc9b0af3bcf3ab24ddf2ddbcf7848
+0f5e6cb256e0cf5368b875ad94957579
+0f62535ba330e98fe77001af8e94757f
+0f636f59a1b72704e266bd1eb2c304c8
+0f64a386345937ac645bbbe50c7eb371
+0f694ea96523802d3aecacbbf900d482
+0f6d0acd80a1aea135f052454c3a2568
+0f6f32a2131bd419eb0565a74c7a8fa2
+0f6fe5746677c6e59d6616022638d792
+0f704114682de7119a14d5c43b2afd51
+0f70c219500c464534d0fa9dfc1b94d3
+0f7248e691f8401eec164e36f50f5837
+0f7290ab380f0913c1888b2501444ce2
+0f72f8f972e696301a6853f996d8971b
+0f78a908c0eed3a69c15b9b85a606263
+0f78e33fd3a5ec0961e241f99b251ade
+0f7acc46833d142ff578a2d8aee08c4c
+0f7b1d2d26f8f5ad5289bb74624f41f1
+0f7ccc8ec1b11ef3d1f3530688a42fe7
+0f7cdd0dc519039249a48c33101a843d
+0f7edcee0bc41c70e1da0c0d42fc528d
+0f7ffe43653f89fd68a9ec7de71e4eb3
+0f8337488ae733dffdb793ddbe938b29
+0f843476ea15266b09a0238bc68b9049
+0f880699c627024a53c3a2d56c75103e
+0f88c6a569ca9b2fcd374a30949dbe42
+0f88d8dd26bfb06566d620d948801726
+0f897471cfbb02183fdf70c973634650
+0f8a3229e6ff65cb2a6096494ba89366
+0f8a44b32e69bc0b8d78b4f9a226633a
+0f8f0a23d9119adc9ee3a48f3ddc42e1
+0f900e863bd8badad9240c2f9a703f88
+0f912f9a23e759ad7d58fc2b83a2e648
+0f9137ba948a8082bbc291b45b62f6ab
+0f91a9ae0aabf01165cbcdfede7ee4bf
+0f92d9fc901c950afa499ae2d365d98a
+0f931576e51f02477f40bd6836669458
+0f937f4bda274451e622eca4a92c4c1a
+0f94d6fb85ad47c7fac17846c71bf2fb
+0f95d30beec81b1792058a0c929a12f1
+0f96ca53ee324c1ef71b8ddcfdedbc29
+0f9759c29ad8a7e2d9242b30d62cdcaf
+0f992be39765fc8d7e8ee74f40e602d0
+0f99db2b7a5695cda1cdf86583a8b01f
+0f9a9faf38b2e88bec8d2748257f2029
+0f9db99670db4120ca8fdec678c58ec2
+0fa03d834c32478d1987a3caf2903dd7
+0fa0d92e2c0e9fd99fb9b44fa1bc9e8f
+0fa106070453504d9af802e7204028f7
+0fa13436d48538046526323a8a454144
+0fa1b7090bfd992ec9140b152851e7d5
+0fa268c92338b27b7da0b9a85d775061
+0faac4274f5bcd09692ed5dc89b733c4
+0faada83c84d2e19ac8e4743a4dfebfa
+0faccfc399bb3a63b9c1ebbf942e54f4
+0fada499884e9947a0bd11d9379a3ec7
+0faf2d58b9b802345f2ab2632897ed6d
+0fb2af09975143774512dd528e01e35d
+0fb54628efe1159bcd80b2cc179ae0a1
+0fb8477a52fb18854441f57bc266a012
+0fb95d19467b9990e9db30892e59c263
+0fb97d40ebc6f98e7f6e043181ae36da
+0fb9f05cc7cec396a26597f37715f3c7
+0fbc2e01336fa1084f94a32253c79352
+0fbe06ddb8e3416aac63fa8b4fcda858
+0fc12c7e9f8abdb3017ca760cc5c2de7
+0fc1b46e71d75f39ce35958050230fa6
+0fc2ce4e86a1c636980f874fecc00938
+0fc3d7053944ed12291a10deaae0eda4
+0fc7fd8f30930702b5641ffacb438944
+0fc93f0a33d2518c1950031e84507669
+0fca7d178cfbd75a1936c47b83bc30b9
+0fca9b9243d5b9c7a1c7eee2afefa4fa
+0fcb50a0fbf6a48a550f124e5f8b7608
+0fcc66697dfe2e8050b0a934c1141092
+0fcc8069c0e8d9cc8f3a45cd3cc1c226
+0fcd285590b445a090cc0f07e4382a5a
+0fcd88b93a783e8da024984898719d38
+0fcda1b2506043a5d951dacd64b9f45d
+0fcdb49e090d9ff8830cc6fae07010e1
+0fce8a60eede82b78c14416f5b4ced68
+0fcf68e64413af382d91bce71ffdbd7c
+0fcfce2f4323f70877fb289c263226e3
+0fd0631cfc6cebae6964d0308041ed16
+0fd0e4c46156aaaad09e23ca8cd45f76
+0fd2b13a24130649438f2509873c05ab
+0fd42ea0b57287a4c6901c0a30a67646
+0fd708ccd644715ac9377d32a6ae0042
+0fd78679937e17bc38fd166795ba483e
+0fda526bee0d1ad217d53fba68a0adc0
+0fda627d40584896a1199a1d9b110947
+0fdad183d35a8e888528ad65b0a7672f
+0fdb26849f1ae8ded6ceaad5c60cd198
+0fe0a44d748de5df478988510b512aa6
+0fe25de3422190b0f760c439c0e052b4
+0fe2c8bbbf401b1e46cf329232aa4a5b
+0fe3df008a2982e716b9403bd6487256
+0fe4483817a6fd1ff7c48ff689c93882
+0fe48021e2fb2ce224a442c6b68eea90
+0fe4d0bdaf32af6813a356e7875d4d66
+0fe726ac6b22aae04a51b821fda7808a
+0feacdbcaf8df44ac3577a16dd162c96
+0fec70de0886ef5ab36f022a192c8373
+0fec9e6570ac779d7c8b8d0e0122d271
+0fed82f6f74bdf8384493db0c7671156
+0fedafb1cacbf956b4940125886b24b3
+0ff02af53f8f13b2a60e68b08d82f554
+0ff0a19fef5112dff9538ad19c1bf981
+0ff1d29e2f968c23bcaed5ab94d58cd2
+0ff2c9c047011f191d5804f686331310
+0ff4a2b76a6ba0f537ef70a84bc8b74c
+0ff7b3c1a3e9dbac555f5d0699527a11
+0ffb26d29a23cb71cf0ed64cb53698d4
+0ffbed1cdda7c40e39acf2fa5fc68c3b
+0ffceb8ae6d1aeb996120d1de514db3e
+0ffe080d4b68079c405bbb7c45bf283c
+0ffe4ed3b775c60f318791b4b23ffb09
+0fffb191286bab4ae7ec04a272118f80
+1001305fc0cabacaa99cab32ecbb57c4
+1001a8a1439bd9f8e4f50e02e4f7dc7d
+1003d8f11899378ea986f4e84cc98dd5
+10078dbc57f60d59072eb36fd420ced0
+1007a3fef80610110ca560fc4f7e4b39
+100906e33016af6ce1c670b0166c0353
+10093bf52c9ed6e75d8cc21ffeeaa9ef
+1009a0bb45d9959a0df5bcbbe99d21e0
+1009a7cd5e03024ad2921603d3233f86
+100a826c6ffc8644d03f279b1cda3bf6
+100be512e608ebb8a96861d003fd12d9
+100c933ccd2db2ba77755439f58a3038
+100ca3579fe90422d14ba15f108d1a60
+100f82bf80f667232042c7d5d181b417
+10133dfaf62842614ef803c0515c422f
+101493c349928feb4fcc847e1e104eb9
+1015e89e3cb469d850a6ccf6a65ebca0
+10163b871ce226d38a8bef3f4e6a1273
+1016cd94bde0643533c4013e7e2a675d
+101714eac8a241ce06e02521f3609580
+10181ecef7a5a35fa47e42433e79a5ac
+101a47f69073c5c35935b9a08015194b
+101b891ed5a79419005c85618b95299e
+101c04899b115b8ab2742705288288f1
+101c6dbc67d98e9e7913afc9d969259d
+101da306773921d67f338a6c3fcde107
+10205324a44f7919152890ec351ebe93
+10211f704e5989b1d7d6d6c951b9d15e
+10212d06b7c2c6011624bfbf68098ebc
+102166647ba8119f47d651e5456f878e
+10218240c1008c95ea0a36daeed82019
+10233038ae17562f3358c8bee676134c
+102534cee1c969c6ebbf383307178b52
+10277ffd27b10d2d275ed98994468b48
+1029d10d1123ef3e07dbb979babb3a84
+102e843e300a601258c16dde33e88fee
+1030d127d82821217505629dfae883ba
+1031bd25cc4dbc8b8aafc3bd439f4de3
+1032aba198dd5b86fc6aeb6a0c943fbb
+1033daa4dc4cb82fe24f6157165a0525
+10342f404dbd8e95bc676816c9782c6f
+103604b606a62b46ceef19d5c8908a26
+10399a21ad01bcb6df26c4108839990f
+103a605a9c4e10977cf40d65dd105610
+103a7c261b0b2026e710ebb58fc8191b
+103ae74d51f585f65e7d3dfaea56d9c3
+103b7f6f70303d079e28e8ca8ca40762
+103c13c9cf167e11b57680c1b098d8e9
+103da0058616baf056dfc135d573af36
+103ea9048c56a5d0bf54965f6f29e20d
+10429c6e838a19729542fa22f5ce3625
+1043f7908d65e73b1d992a6875bb9f28
+1045a97d8c7a3cb0be2a8a9ee78f61b5
+104655fb5a7998112f5ef181bac230f1
+104a0ec1fe47626ad3d0ddd452a0417b
+104da92cb352e12e08f16818a65b7547
+105109f86908aef3c585fdc65affd5fe
+105528610ae06e45deb8164f2681bd2f
+1055c495d327317a26a7b664acb1cbc7
+1057295610e5cbc904074183aa168d09
+10594a1899992c6871948810d177f835
+105dee4efd06dfa75421121b87666201
+105e101658e2be13ecb3bbdc3bb78b03
+105e2d44fdcd5b4c5b32585a3fbfe3d1
+105f49e991ce8ae8f2e8b8a6079c687b
+10608cec96c6e2ff666223e7498ba740
+1068143256e7fcdc7ce24bc5e3ba92b4
+106b378fff1a4a9514e1e47be5d03eca
+106c93c0b09080f31c9b7ba7742a9dce
+106f3a2d166f98b4027bdfc6b84b39e1
+106fc3ead7856d5d8fd45942f342c7e4
+1072a765d61be56766aba7156c142673
+107430dfd1879559175c85d102308c96
+10761f0b532ea7d27e579c802ca3ec77
+1079611e6e79538b3835bc7cf41eb7a0
+107bb7cb2c8d5e497366de3bab2b277c
+107e824cdb7aecca3334aa8d0f37be3b
+1083ae8361c36e482ac2972e91e94295
+108447227fc17ffa083c72a0a097f608
+108469397de416e5dd83d39c4b23b5dc
+1088550a31645ca76b6fc00e4a3db18a
+10894d6b0acf1426a6d0254037399f33
+108a6006f113f0ea3147ef5a51c77030
+108ac8d172c66bee97524cc3752f20d8
+108c70ee3958ea09f11f6d35872236ef
+1092448650d608ff173afc701d482c31
+1092b158485fca75f40b4f6a14142c1c
+10949f67e8182f1130812489f0f9d678
+10953298b4c50836fc6044d036c1bfa1
+1096f4480b05634699c1b8ead3505bb6
+109a8ec921a3e612eab5398aac10f089
+109b545baf6b18d9c72dcd77378989b4
+109b8389285ff3d43357f39faaaa7bbf
+109c5f9c1ff799950a6121b6b31dc048
+109c9de74af51d2fc132b2702d5c7ac1
+10a3e01615bb8b61b346dcf7eaa9cbe7
+10a776a90efe4554195f164dfeaf4709
+10a7b507812c15e6676d9e03b2aba572
+10a93be5e8225b84a67a0f92f5c6fb6f
+10aa8636a0516d84a842f1234475d298
+10ac04fadf93aa4542cd3eb3f9830425
+10ac6060a3b5da58d65c4e9ae0cff866
+10accfd982d8eadca835ecd8dd8ecbe9
+10ad35dd7e53d6dc0fbf6ca867bfde0f
+10aea60fac58e34dff216963a58ce6ba
+10b1c39ab1b28b20e30677b044f40d28
+10ba518561fa25ba99023681bf6853e6
+10bad937f7c4a608823fb4b02763c647
+10bcf483e3b0ed1c84e46b7543c42bb9
+10bdd737d2e65ca4db8bf826fecf7877
+10bfddd341c38bdfdda7019954993c22
+10c27f0173b563064aa9d73c93f04b40
+10c505971da74b2184a5483a5123d6b8
+10c644ebcac7b7a9af3693d483a6c7ab
+10c6bd12aa0afe2d89d6a3d90d1bb700
+10c6f7dd7c964a8a37b4d7e5bb9bd48d
+10c8bf06462e5e9adb0f22ddb6ff53cf
+10c9985f2e79d78e1f8e861fe4b135af
+10ca37900ef4ca41d54bc2a01b1e114c
+10ce92a25225610d91949d73d86ee95c
+10cf4ab5a4aeb7542fb26c176c0fe66b
+10d00e9e72874137d4c678d4bfe0eb1f
+10d66bd9d0105d529d725b52147f19db
+10d7bf265c31c8c12d8455176bde5ee9
+10d8db74f0dd995962c0108f4ba8a6fc
+10d9954bf91a638cdb1513ae14ff39ff
+10def82034bea17c8c2fdce80c321598
+10df1807ee80f3a81174b233137d5393
+10dfbdc086682198b244a8830412eaff
+10e16ce93c9c067527dd735a2ff071bb
+10e193b25f665f36f32bc73ff978ec70
+10e23ff7400aed2e67eab4bddf8441ca
+10e33580ba8195752a3c2f1ddbc3b4ab
+10e5aecaa113e019450876b6aa37ba56
+10e6541e72f84aaa3458e5b1f4c15814
+10e7a04088f2f6f78a4cbbc5b3ace865
+10e818c507513e2f7c6f7ce45dac0f9a
+10ea7e39ed6af683d7b7edfef565ac83
+10ef57d9bc5b37bf6779d72b5f57c667
+10f1a36f1301e293a64f59fb7755be82
+10f36ed1c0859b2172511517313dec94
+10f6be0f8bb121e339cde0d2dca3a7a0
+10f94cd5c8a9f942173b3e8091ef0410
+10fc5488af8bfbd440f04af11f1bccca
+10fd1043393f347d937844e4f7e0b296
+10fe79503b2d6008bc65b545bec4feae
+10ff864496e9548318aae7523fa67677
+11009862226b73c427ee4110f52208bf
+1105607e7107615b03976eb3af09c8be
+11056a7a40fea6844e4551b87c8dd989
+11057a4ab71cd7caaed54383f9866e06
+1105822ab74e7ce156acf91637b95f2c
+1109a6e6b79d2a6d40f926a29ec0bc48
+1109bf04285a8158309905aa334b9037
+110d551b984759326f46e6effd06fd35
+110d6867f3f9e443b2bc391836196266
+110f51ed9be7c86879da9b6e1477b66c
+1112851ad4227e09295f4e48b8506781
+1113188ebbf28932ad41b2bdcfc3d781
+1113691aaf2b966f77c7ee81abc01818
+111bcb1f9843aa7b90051c9cc418b12d
+111c800b39417452f7ae6a078f626fd0
+111e73222aa3d699b05716c3d5d3e591
+111f1aa2235cdac22b83fef964a82a3d
+112127892b2a02f78f52abb954921c15
+1121ba5d884fdfb8d2b49f06ee9faac6
+112228ab56c6ba83530f3f6070917954
+1124043baa1c4cef2046522753c0bf6c
+11248ba94dc0ebccca7a18f582ba2b9c
+1124c4345681d53b3cc51bd9dea25a48
+1124d4df22a7afc18595ce9a938d54f7
+112607c3124d29a51cc71d3d16eb4777
+1128ebed370cc8c5555856cbc2384374
+1129a10975c0bb1c3ef9f82453cf6f70
+112dd50057613a5881277f75917e4805
+112de4585c243a58e98c749744c53acf
+112dfe847f7f6d80d8aea2f2c456b3d3
+112ed1046eac886d8de77dc1c43dcd84
+112f6104588d393db0ba5b1446de8960
+112f95975f05e195ee79a29b3244ce95
+112fd95b446d22d2e2e02345fe11ffe1
+11305c7cd634784b76a83e91fb92f1e6
+1130b338df0bd5f198cb3749b72d77dc
+1130dd26a244ce10211263930b87b195
+11316293c4307d1a060226041c870221
+1134406f36ec7a7b08b2fe8bf9398cc9
+11366d2a939b1a4bbbe717f7b2338277
+1136a17df52b5705855b1fee91fdca18
+11379eb9b2d4be9f88bbb4ad9ba66843
+113800b00d120fbe37c79e0343438a64
+11383a4f6b07012c43d81df60fe31cff
+113a34dbcb0def6b739cd7723f6d6fe0
+113da17d75aaa092859def13afd204bc
+113f0d67f8f8eb8e803c4a1784698af5
+113f8166fe3cbaa763583daa349e10fc
+11400384d927cd8fada9d065fcd5965a
+11415b2cdfc67aa599a9ae7ca3b1f848
+114187e5a9e621cdfa3f1638a865e588
+114214553f4deafd87a04d28726484ad
+114395d2576aa3cd1714e3ea168a27bb
+1143b6ceb4ad9e9c96ea3d9464fccfae
+1143cc566294ae910d1c4c9e7e7fc5c6
+1145886091b199a2837bbb67cb3c9225
+1146d2e9235992a099ab55371d1e5398
+114842e8ea39a081cce29167c5d5e353
+1149ee21885bfcb913177637c23fbdb4
+114b3c2879a08d9a4b8faf68122c805d
+114f9ee4cd90535daacb64cb5a1fc96f
+11517d554441e7e5281e55602406bcdd
+1153bb7bfbfe5cd592a712d020f90902
+1153d12ebd9c7b7ad750a61ed9e2b323
+11559a4e1f0b4a40665091ec7070e660
+11597e8094494755622df12cc9215f9d
+115bcd62a8f5c554a8e9dea9c6164b86
+115cb838c7c72d1e61338d9a48768380
+115d01626c34ac1b0b9b53c1d429d820
+115d3bcbab3ad1c10b4e0695b85d3ba7
+115e4badd7a8d64275592567c1d8dfbf
+116277ae4017505ba017ee9e38a48e83
+116474c35b53b843c971dc89d4fdabcb
+116593c631d7e76ed822a416c369f37a
+1166571df4bf038219962b0af06873c3
+1166dbbadfe2bc6c0ca60028b4ce5d5c
+1167f128b0a58d72765f416255ec65b7
+1168779bd7ea780eb225a068c3591e50
+1173d9b3539090aa76ea43763c3a54f8
+1173fbe477bcebe18f3bcba534331fd0
+1174760872ee045ec13570ff261f5d41
+1175638a97dd1bc0e0dbf7a1a96bfcd1
+11767c4e6a8a9a348299b0710d137fb3
+11778b81c6f0469075c96dd99c0a5c50
+1177ee8d3cf58151f26855decb87448a
+1178138bb9e87c09c23c573f116b2b1b
+1179b644aa37fd3af480c308546adb6b
+117ac5c4178d9edaee0e58200f48208e
+117b788afd1d147e1f100e88c816cd72
+117c7121c9d179c81727835daf0469da
+117e189cc201d4b2752eb98cfa38508a
+117f5e7b05e12e9f8303a1a28cfa8e1f
+117f9d13d344f5a31c5c5c0753ecfd09
+11825f0c778767c4edac04da84a55045
+11839e653a227b96bc5e0ea1aa70c238
+1183d806b73ab05d71bf0f1e36d61b57
+1187433ecfdef202d7f68ce662e96809
+1187ebf0da53793beb1fc230633ed457
+118cf7dd85e201f825319fec0c39e290
+1192ea902110633bc6ba54c6c5cb5809
+119321b19e16d8d538302b11422244a6
+1195e4c2cfe61e89b8eb9ae30a83fa32
+119617e80751cd2917a931e71ad96421
+1197b413c0a5ca464f5a8f31018d2d41
+1197d8a1da26deb3f441e0136a02089f
+1197e4d7a711f01e55df77dba9c36099
+11987b40b8bcfc2db3c0e8b6b6fc4e0c
+11999aa9de849e73f59f90190551a5f4
+1199d1f92548f1daf7d9a4229979f239
+119a6cd63a049481ac228454837d97f8
+119b7ce99c777bcb8ef630ab41ae5453
+119f0b937ee00a8e2a43c203ca179b7c
+119f0ec6cc41973dce1ff9e793d2cc84
+11a046a64eed41b809b901a460237f45
+11a1a35f077d40cb0c1b04f4168abb7f
+11a2eead415f1d5fc48f324a07c03d3b
+11a443775a46281bb89b59d5b0fa77b3
+11a528946249869507cfcc3f5db67b14
+11a68d34772e3bed0aa3026ed5fa84ec
+11a8e93f433a909b1313576d8de3dd98
+11a962c4b608358ef1d4eb837eb80b34
+11acffd459726f72aa9c061af7adcd85
+11af9c71505e16e6bfaf31ce4e0020d6
+11b01a5db5180a10c7b99a7a0cc31dc8
+11b17a6adaabc1df315c3bf0a4e7be40
+11b1f8aac36fdc832b1eaed93f57f656
+11b1fa687db65526bfbd1648bd36abe1
+11b4f0e06ad027fe519be0a66e8e2f1c
+11b76eae548ed79cede3592c6bd50c30
+11b7782c8868c715771357bd87dc8422
+11b9ad2da661b821fe4b1325851af09d
+11ba2115d14f0451c999e8d63e29a294
+11baf91b20b0040b426fd4ed5845355b
+11bdd976861834ac9025e5f7681bff6e
+11be0d0ce8a1ca91041f8a7ff991022f
+11bfaa40f390a20c5b1d0b2a08a95726
+11c134baf23a79ebdf198e5e37af00ea
+11c1715a22d46280914c53fc1d875585
+11c258da2996684bb06c6d79877a8550
+11c479ecb5642ac01ce3eef75916adf7
+11c489bc06dffc7e526233c0f7b5e867
+11c60ff1e36cb967fdc9e93d9dd6f7be
+11c6e64505d16d8f28703c049b2dd923
+11c72cc08f344d75d7a8cb3893e92dfb
+11c84cc9e50494751412cf5439ed87bf
+11c9dfc16a52c464c3a5b8e352004e3a
+11cb3ee666845e926889ee735294c154
+11cce2a3d49151504ec411db59c12439
+11cf970fd27bdf42cfe379fe06bd55d6
+11d126d81585165b858cf19b9294a910
+11d2012c1028a12246946893cf808587
+11d2e5d4a643ff977999b778913c0bbb
+11d3ad285bdaac42e33a01fe0b0d0366
+11d47070343043e1abf20a8fa2c73b30
+11d79bc2c482059ab0c993400401d509
+11d7ab551796a9923c2fae5199584b9e
+11d956bf675481c63394e36fc3dc1eec
+11d9af9fc714fd12988975a4a21f92ad
+11db55c2f325813feea16af3e6a433ea
+11db6ae6137ed18f695cd6a9a333b2b3
+11dc9f9743bfb9eae07f69b953b26426
+11dcbc1cc0f51a7120cd2509c44235fa
+11deac2627b0bf1e7c81c4f026464dea
+11decdc5c871a78fd903da78b1362e37
+11df5de877a48379b0f11611dc571e42
+11e02973dab3f459fb2eefcab05bc33c
+11e342b3d03e7c274cb5716986081111
+11e3e1dad8585993f1360c6fea29326c
+11e618913670196a9b1c04ad78975af9
+11e6297925095f809e1019e649c73a43
+11ec1303984c8e4d21007f66575bbb0d
+11f142a2f7664ef3a4ad0da038b9704e
+11f41d781c031cfa9d8728f1b93e037e
+11f482757eff505479373e233732cb7e
+11f7652e5503b5f14fbf9f9ce2af9393
+11f7bcb4f885dbee02e53d17924de9dd
+11f80bb140dbf38b6dcf63574aa0eda6
+11f81238f123b0eed52cbed4b6efdffd
+11f90d5404ee3edd745d38f89b814df5
+11fca97b64fd9fade3fd659af0658b4a
+11ff9b1d4d3f68b94226bb46e5960617
+12026eb357b3e300dfb6482abe259021
+120432a3bc6603feeec5d0d3b704f26e
+1204eba90b908922c3c3d43e85e07db8
+1206ced3efa209135a3244acd2195237
+1206de71ac51e46c87b2ac285c762c2d
+12085d33befa8945bb068a29d1413620
+1208d34d9e9995e83ca1ff6650e81a1e
+120bdb07b34c6597742c090cabe63d8f
+120d7aa326270cb42be5e91965e0ec20
+120ddf37487f8700f7a53dbcaf28b63f
+120e96ae2e89a9088b551e3a6b65861f
+120f301d851fb26862a35cf3f8576e31
+120fa24765a12a349b3e1d0cfc22893e
+1213c1e4e9df3ee5d13ca7eeac7eb5fe
+1214fbc77410ba97310fb41c77c24deb
+12150c1eaf6e3515f6e687c8ec87722a
+121830651f9e95e02dcfe1e2ac8608fd
+12196dc0110981cdf311982a7d9f5e12
+1219b28926238df6e1ba11abdfc4a52e
+121dfa883aff7035bbfdad4307e5f26d
+121e76b3c723420208e612e1655e202f
+121f4d8eed1994dd2cfcaa1511a064ae
+1225c4238f291f2e20df1091eefc92b1
+1225f6178321d9a1552a555a552fbfee
+12269d3eed90a51008125d170b863272
+1227195e06429e20ea57336b6bbe24ed
+122933268ca8586e8ba98a20785c611e
+122a334e1ab716c4ab20503342b54020
+122ffdbe6c210672e838520b9c9a7124
+123014610a497a1663f8e564927d375a
+12309a2dbea3a37235383de9ecd7cf7c
+1230c3eb87eebcf7151d5b700467db1f
+1235bbfb2c2d9433326bb38fba2bcfd7
+12382867c32328c002c083ba09f4ad26
+1238ad3ad610a587822825373a551586
+12396158edd29d2337bea0392c44c3b5
+123a21f254a8908de84adf24705dbe50
+123eaa635cb2fe905573432c22b98c5a
+123f26f10ee6fd081f6f9e49caa7a5a0
+123f6d7cc10ff9816c998eae660f01dc
+12426cc3651847f26fd66e5b98cfd42a
+1242f98a8a34fc0b1cf31cc59ae95b59
+1242f9c08236ece429dc6930c68a1446
+124329f2bde4a43c5055d452cc9cab5c
+1244b4ae80bf038592c22d7c28ccda27
+1244cdf5ad004366157c623629f010e0
+1247402305775be71cd7e2fba51eb65b
+1247dcbf6a4b474dd2399f1a179c9309
+12484fd4594690a7fb2a9849e767c2d7
+1249d735aa53c98af0cb629e993ff8c2
+124ba142f0d94f8281e865a09e35582b
+124c7945f14f9d1ca7afb87206735d79
+124ca6382971ad4ef158476254ea533d
+124df342c41b50b0e6badb4663796c01
+124e86fc434da3fe74f9a8328f076469
+1250af952e10eb41d0b464f259358b40
+1252b1dd5ce17f96a6d848b05e727df8
+1256494a8a21b0b95e2b9b517e4fa1ed
+12566afaefda1f27f358c9dfcfd02aeb
+125a3ea2006b63b200775b2419cd3cff
+125a6ac7b42f62cbdd58f69025885b1c
+125a7d26843d36903d29c52a0a329318
+125f9ee0547f854764f2351664b07638
+12605c24d839443bc405c68bf35109aa
+12612857bbb90ef3ebaff1981074e812
+12623b1a06a00f5cbab6b3c55ec7a11e
+1262d6717e4c56e13687258435e591e2
+126345495dbb65717225289702942812
+126388a627240d9ff25ce6e4886b7b81
+1265814c354605c17a7d514a8b969d4e
+12670c8d7b1608f535779a0410b6f135
+12670d69c78ff47edebd42edbfd7eb76
+1267d9ab5c8c612d02e268ab910b2b89
+12697a7069c832a04b0ff07148f5d38e
+126cb41e3cae5b0bb0b149459ecb54aa
+126cb597869ddd6a320ae8d1a492608e
+126dc3734d7d8660b4563df9f98817e9
+126edc72591b20cec30af20ff365f7e2
+1272194f156921bbf0ee894e706286ac
+1273ee7ccf40bd4c35d7fe811fe71a1c
+127455218b12eac76cb3f0a115f14971
+127474dca128768f867589b714cf387c
+1276bc06aab560a98a803269c305e95a
+127707e65caa351159a4e22cea3726fd
+12779d3aa31ede59d98568411fe9764a
+1279da5bc23bb63e4b4206f64279df75
+127cd4e816935892f2473be02419791a
+127e6f15577365fb25ef7312aedfb721
+12802db7437cf19b3830354956971d78
+12808651ab027eabebca4590b9b98e49
+1280def9bbd502c005892b80c09536ea
+1280efffacd2e49e93c24e10a7de77a5
+1281f131fb36462564d49b92e36ed593
+12851b82c63b99ed1b1fa83f29e2d8f3
+1285c1fda09215f0f85296d8bd44aa48
+12871c2ddb304f196a2127b67d6dbf37
+12880c9edbfea43b126397349ba627be
+128bd27712c3e2b42584f1bc261c48e9
+128d901d2affbab4f1be7289f2eaa436
+12912bf30c7ed273f553ff3b01495b57
+129249942b579f3b7d51c99f51b38014
+129458afaeabd5f4b7d64955c29ff22c
+1295dae92c7efbd147e67358a2bd7e9b
+1296bf958ef2d8740eb2fe0b0f9cc350
+12972332b8010657ba030933ae38aeae
+12976475e6960bebca562c2a01ef3a34
+1297c88edd5a7496e750ea1db855e519
+129864aa15d10feebb69a4aa4ef9d917
+129bfb68d6874c3bd533ae084b28c38f
+129c49fc33cb10c5497eeceb31537061
+129ddab45276d2931f80c7712c0390fa
+12a31409ef8760344fb16798551a8610
+12a57adf290d5736388fb305f2203975
+12a5c7cd12ed2529e5314f56f527d5bd
+12a6545f1febbea67179fe8042b793e6
+12a77b697957ea2c133a31ce19dcb63b
+12ab6e54ca42f638788f21c55ff7f291
+12ad32a232796daf46bebb8b23450218
+12b20b29d18a52e3205996d2d4ff9921
+12b7b709c70900c4317a8e1d5fbcd57a
+12b7e117a2fa4e6bd11040591ca23fda
+12ba035390e11882b70764044a2da62d
+12bbf898ca9d0bee089408bee5540d34
+12be5eb2b9a5fe40f928501662dc1334
+12bf368c0a99345acedb071136f1b6f0
+12c233538b6b3f9cf209271f55c33189
+12c2a859b0a1b9ff4cab9c1e91334354
+12c55736c013613e03a9e4c6302cb7a8
+12c5ac2ef620ae96eeea2a01da3d91dd
+12c5ed0ce4ec47887953a84bcbb12fcd
+12c72d4cf95cc3b3c979ba3bc31ac16c
+12c7c32e72a46fbf7af11c352afeb230
+12c94284f205633836fcaf48d32333d5
+12ca0dad5d4cac6eb40e568309412418
+12cb9d476d346d34e6ba63a62d2f204e
+12cc58ac92de2ccb091a516e520e7c9e
+12ccb8c85f5ecbb4f5610f94dacbdf91
+12cfda304e51c98e4b312a05d558556d
+12d1d3fe6c5e6ff999140432f0c4f02c
+12d1e795b6a02e7db7d84259aa18ef77
+12d1efcf2a6184f7ae41841d1e773769
+12d377322985e4eb110064dff4c7bd56
+12d5d6464e1474d1a9503cb0bda7984d
+12d6b168debe6cb54f7efacd7ebb7b12
+12d7e52594738d823c6085bf23a85419
+12d8bb6b1ef2b37064c155c2aa86a4d7
+12d97e881bbcdaadb78a9f86cd7d01b6
+12dbd45a6d63d40ef2763ccdb1e16dc5
+12dda8fefe7b1e4c4a360755555c77b0
+12dde9d976637b4c76c95d27d375bd79
+12e01fee72de518f1c153709035f276d
+12e14838734a6138fad1f1b41dedc7ac
+12e1fe172571222896b8cc3cabbdfb97
+12e25dc8fe79005089787af8a1bea1ea
+12e2a374c368ce27e9dc81995f02d511
+12e380ca9cd6f88dbb9d0bfc32ae2dad
+12e3c476034b7c9c7b6f4ab1159990cb
+12e488090acff250a05d7bee2608f781
+12e63297289009256a507fdcb3e27b0c
+12e6cf4a67a24bc5d0c6cb8f9282f7f8
+12e96adfb0bed9724eadd952048cbf2d
+12ef1bed8e44d1383884cebc5f7a31f6
+12f1124eae6d5273511f696681a255de
+12f3033d00cad371551a0bffd9bf7c8d
+12f65b36c0b646124a6d85e1ae94ad46
+12f69c72576dafd9e8a2f30a9377b09c
+12f8c5515f0dc2d783362eddb6f812fe
+12f8f084b3be4ef72978c51d4efecbb1
+12fbb13e3b87dd913b2e657b898d165b
+12fc3019f4846698c8dffe5567025aae
+12fe7aa981d53143b06eab414f6a439b
+12fea27db492b71cf663289b409acd37
+130001313ced605c946ae0e14a33e3fa
+1300ba1b4489117da6052e4ee2ad58cc
+13010dcd7cd536dbe757bd73ec799e85
+130301e8eff713cb13215c2b8ccb2e3b
+13035b571918ef522e1f808f3492b208
+1305036bb5070cdb2bddc34c16891dbb
+1309ca7aa667ba64ca282f46a899bcca
+130bdabb875443ffe9aaeb37db150313
+130d27e8cee0747da2e63b166def524c
+130deb29cfaa3c15866421f464ee119e
+130e226ead423419a4bc994928051d9a
+13119259f11f7a8cc09cbfc000e73651
+1311c16746937cf79272efc44a25433d
+1314e38a699a0efd3c7fef462d5a16b6
+131658a51a64170089ea8abc020d5358
+1317797b5598d300b983ea91ba249734
+1317a6e3f2942772cc82f9cfc9ba7432
+1317c4d4721313ec651bc61c5177bfad
+131881688c24aeb84662f1bf4ffa6f34
+131db6b6c87f36719fb726fec2e01111
+131dcbc5e15cfb747d829d1479af166c
+13201c16878e3ef9a97eea2e859e05f1
+13224811a83811db420021b1bec7b59e
+1322c8e97f4a68d957c3513d5d57769e
+132368fd5de0bdfa83950b5726018c98
+1323ada56bb235fdb3043c8bebcc4d9a
+1325795109f4747a3d6953c898c50ef4
+132582e45cf266570aacf9311900a13c
+13261c67594971b6ec812cd1b0a88156
+13268a7c4f5ff0e594333a81920922b4
+132b3c67355f8c72b7872ec42357b136
+132b943c9af8b67d80d251cc6934fc83
+132e80384aa5b8f05c872edd1d67231d
+132fe739b7d4d655e828a240f5c1f7ec
+13302ab045e1caead15bf7b07ad74c89
+133117355669e6447025390144ef8721
+1333773005d74460ac66b52682539464
+1333b1aca22be3e0c03a6d25326a69c4
+1335d719e003c0af278334fb8748ba80
+1336d2d1f7aaf122ffe6e6d834407592
+133776a495d55e19118fd80442a1a484
+1338cdbfca3fc8b7a30b66e855d4179e
+1338cfba6ad455edaa88daa65728c2dd
+1339d79b3357bd0987d2103c82517cac
+133a5240ed8f49fa7627ee61a0ad8c67
+133cbfd181f450dadaca2b31666bf58d
+133d1a95b4a1f648fcc5636762195f22
+13403f4b12366b0d5b74a2b046dc279f
+13440b79a087752161169627168b0cfd
+13467cef7f0cbf6f7e8160d91cad0f11
+1346b9e2e0a1460292551b2ad40f5a4c
+1346c47e6354955ca818d472f2291bdc
+134a0640f87e13d90118001341a0251e
+134a26ca512aaa47fa108e33525b3cd5
+134bffb5b3155f7a82d0317ccbe419d1
+134d2b2aa239a8a7194135f481aceca7
+134f971d504b1fd1cdca10c1f2f8423a
+134fe57cb2cbb5bc7b2c0221847ef8e6
+134ffd387f3935f7dcfee163408f4b6b
+13502156c7da5961ce94e194f90f8fa8
+135043bb73bd3a978f98b2c55f7e4f7c
+13507e18134ba312670e2645f427b786
+1350a1e32c9a3e0474991e3a24cc3ce1
+135573b557221ecdf1a9d893ff4ad83a
+135671541223c4a3e4b95134e149afc6
+135a7db442b9e03a6e7a0ef9d4de5ff4
+135ab053e0ed16b784ae76574aec31b4
+135ae5d4d6b3b2a34f86478862a6878b
+135c92ae0a7933eb24f685d4f4ffe6d2
+135cafe40ea64016729b25b026418d26
+135e86a51fdb79cd05f717f3380f2d9b
+13603cdd508debbd5553a35d16a63bb0
+1361723797c7c0b1b468709f71efb4b7
+136416f89dc644c844558dda59162007
+13644c342bf91c00ffb7b6150b9e4ea1
+1364c36c867ea9454e645b4889554cb8
+136504a19ff0a36f3f9784ab3e7b4b6a
+136508e272d0826799191dadda8bea61
+13671d538df10681fb4a6bd3f196fa3a
+13683fa48647fd8377f0e961a3121651
+1368b418d08d979fd0ad4bf82ffbe2ff
+137012cb7eb02a4000b8e74d9da1b599
+13725042c309c9d7a8a9bf138399d66e
+1372c7b1829364b344e458fc2462bc02
+13750782190adf5bd887f2b0262d9295
+13759243c8858757f894d48015a9f4a6
+1377c3d6aa6ca90cfcfb5c4b807de2ba
+13788e7b29c79bd0e29d985efc25a3c3
+13790d58893fefca5deb8558d911ac9d
+137a3ecf7c08944dc0aefed82ae5a2ad
+137b3cbe8de0517e10d3fa5722c79026
+137c2cfada789736887934f440e9ece4
+13833267b90d16a7b73cfb69a6f9e25f
+1383511e489befccfb06e78511d77b25
+138672e70d760fe9a01d8606cbc461cf
+1389ac1cc5537693689c1168d771b917
+138a802f4751610beea1d0b3229e5588
+138b803ce1ebe0d658924024369d65de
+138ba97d87643d6b7a93b429363cb673
+138e400a9c7497be7c0d3f6451c656b5
+1390334612ceaa965e6d292dc62a8cc3
+139372de3786176bac4411726a199554
+1393b4401e3a3d1b95af253a230129bb
+1396adf90f490ccaa04c4b37024c1089
+1399c930687a8335b2885f0f558a9719
+139b8eeb57d114d4354c4355b4915479
+139e3ec96fd3ef8052e8d33ef633aba1
+139e75fbec6e37f12f1d1cd2576460db
+13a0f33d4a6eccca6efcd8489c7ebbda
+13a371e69f5ad1444e21cd2257fc9f01
+13a433e30b7937656541fc4b6d20a3a9
+13a84f6046c8c84bf7bd32951492315d
+13a86a0e31d2245db235310f3f829dc4
+13a990f13447b552a57e86d5a7ab9a65
+13ab93373cd4bc60fd896056ee5799e4
+13abb1447a9a517d1559aa6ef7c1bef9
+13abc932d1a744f71038d45ddc88673d
+13ae655345fb59045d0cd30270671610
+13af1120e7eb46d1fff62defa1acd994
+13afd099a43e91dbb8d6c1c2da5391fb
+13b15af62c9dd115cc20cefc8701c584
+13b231d9a7cb729d4b3f0d9397c48260
+13b530aa7222ed177cf134b5f7d4d8fd
+13b5374fc6da8bb270242fa9325ac5c0
+13b684f588f9c42594713e44552dd04a
+13b7e664a7f64549ae3bd699042df694
+13b835f43e880515fe4d00d82ec4d879
+13b906fc74c9b65e1ddc92dc8cd4745b
+13bda466bdcc23ca9fefa211f4149a44
+13c308a0c10631a72dea575208930781
+13c52c2e4902ee0d38f9b38abd056089
+13c6dcc3911fd9e80b78cc118ad6a855
+13c714d1fc978d58ea56357d1d5219cd
+13c73da60d64b4b3b4a841e11290aed6
+13c81d82802fb195d1375a168dba834f
+13ca32082fbd23791283ebc0eecc0966
+13ca63f638ffbeda82970d4c2895fc70
+13cc674232435e22462275038cd55362
+13cc6e999717e8c0e5fc8def220bec54
+13cdb5dbdf77a501e116107603c03b8a
+13d18aec3e3a4020f6173d34bcde925d
+13d18d9635ffb0ca0d63fb618a2348af
+13d26abbcd4c895bf2f7b4a2e4be4389
+13d3a35f256205e9ecb9792a9431844a
+13d3d456d875b29870aeb1f877cdefa5
+13d4fce1a5538165405a72c80fffcdac
+13d7626ce7ff32837fdc423f7b6b90c6
+13d839b87fe26dd13fac6d6287fc4265
+13d89593a361ecbb484b2b8ad2cf9912
+13da703cc8cb20c6b9da59d6cf775e6e
+13dabd35186377055b95743db2495a31
+13db0f1ef1397d92e80827ddbcd404d3
+13dd6a5e2ed55080b70caeb0b5c8b88d
+13de402dba690bc91dc6b2254360e4f9
+13df395f50302cea2e702a8f0136dc6d
+13df69eab9ea08703fb739a31710581e
+13df8d9ed68d6be72561c7c556b075d6
+13e344650d5cfb4ab99448a215427e95
+13e418f29b3c7401cb357804bf05b177
+13e502432eb3025e4c4df4640f346586
+13e67dbd8b12a47129f0d2189eb1dae0
+13e966d32d34630fd997294846626345
+13ef03d4ab3a50f08cb47d49eff02891
+13ef31ae5b15a4512b3e09f118a6a5bc
+13efa77817e7fdf0635620aa9e91e953
+13f26e38b8d28e7208294ddb0b76eb1c
+13f286797f642e3394a2784927237cdb
+13f319652ef19c3e3689540a0945d597
+13f3448dd103a1f5b800447a9150cd70
+13f43549da1cbdcce869e6f24035ada5
+13f5921de3c9709de899f2b7226094fd
+13f75dfe87081e52d57994d9b3cd3307
+13f8cd49949d92f1ec5a857b8bd87e3c
+13f8d35236392a778d7c8acd45eed1f1
+13f99d7f4c3dbc2ac0fed38b215f475e
+13fad78df24e2a5709adde62e403e01d
+13fb9135be7c1e13f70b9e8df3c38960
+13fd74e2d01b7f77843c7615136cb83e
+13fecfaaff6b45a33f91351439029667
+1400a0ba56e2286282e077b22b12da6d
+140265066c1cb7a2408b0251c1292ef3
+140369d27e96feff02891f6abe9522ee
+1404c41dec97d4128d0f07dd6770f022
+14068e31950410d3e58f219d584a2db6
+1409fd2c71468da2b65936498f79524b
+140bc726205d1e2d395d522999c13951
+140e5cf0576ef552bd765ca0f3f1c84f
+14109687a006f0ebaf143d451d5cfd91
+1410d53f9b83996aaf62c4cb10fa1d69
+1411017bd6e69eba5f4b44c7d705a1ef
+1412a50b30c93d7d4a9bb01d2fb4d4ad
+1413a48c20e9973d75ed28e20d4f5d01
+1416f8cb8eb0457904134fab09c0bd83
+14190622eb28c4e0481ebb8b4ab3750a
+1419c14bd28bdc9066150811791db025
+141e45496ddbd28aef20f2cbde3273e9
+141f9d78c9003576ccf090c3ff761a22
+141fb76a53dfd8f24029dd69917be155
+14206f54883a13c34e5b9ce4b7a54713
+1420fdd4c807a4dc2135e0e78b670d2f
+1421702017266f4535af28b1570584bf
+142407fd6e250922b2f08f3928224c4e
+1425fb223c5ada047bdd7a17e8ebafbc
+1426511b083e72177477f0fd6fcfb99c
+142c34fe69dfe2368095c4a8b9393ab7
+142ed3bbb287822880c1677ffc8f9680
+142f67dc761ca6422b2d473941efa1e0
+142f99c743d60b930275b7dfb4f30a37
+142fc3255470f089dca0f61e426e14a0
+14312bb5823a8da17f94ae7b8d9549e9
+14312cc51a163fadf722b9a1e21a4db6
+1434df4a7887cab6eee435bbb3844d6c
+143528e2ec6864315784013ce699a602
+143592cb82c7e8aa8a485bb9e45daf8b
+143677189012c4a983edda0b56fc773f
+1437a13ec545e8f89d803a7e05fd4b28
+1437d7f6d43002bf9a563e48a2b028ec
+14399500869d3d2e7bc9c33c56276a81
+143adf4bc02ddb5b2b61b7d9d2564479
+143bf03424a4a5ce9812ac82c9e48ca5
+143c8b50a7fba0927f72a0e4986b6dc7
+143d75f1cc6b11adf2e0832f36c6dd96
+143e075d62bfbe984be1e99d3e827df6
+143e26ff9c03595f991e1feeb56048a7
+143e373bdfe22c09ba9e21b62f18be10
+143ffcb20b42d8570727231c11496d3d
+1440dc19a704f5aaac5a872e58d214b5
+14421442d970bc8e8358bb20b614017d
+14434a8fe8ddf027fd30c468178e3a50
+1443c4ce7292bba9367d19de4fdd929d
+14467ba6dfd0953ea3ec446774115177
+144697347d9759fbc7acd9b19f3d6543
+144c9d148333bfa751279d3834828496
+144cca949a0e0b1e58877a53cdf8ac1f
+144f16af6401b841ea37bf5f8d7c08e7
+144f9eca5598e6393999d827ba074ec1
+144fed16fb96478bd1b466833ee5327d
+1451986e8680aac14c0bf38330395d7a
+1455a351ba9405fe99814a0bc38358b2
+14579e025738e15dcc87bc1a0837bda9
+145a01c3ca940dab1b16b2c214695dc6
+145a8aa1cb6e9fe8a28d158f818b2473
+145b1ca7495c4a5dfae4697c93fea5b1
+145c2c96cb11b838fedbb7dc66d0dcbd
+145c89a0f78673b8c4653358fb80fc32
+145db7c76cde85924b7bf49c6bc77877
+145f7d36af0fcd94780ddbbf11fe97c1
+14605cb5d12d44430febe58dd03cc03a
+1463350845936642df58316847172a38
+146495e0ab253ef02c76fa69b6a6b355
+1464ee558d195a1d66f44a769b40d06b
+14674b5170017b679e045cc3b2188876
+146942b97e07fb8a949ead958f9ee614
+146b45212f4aff1755933ff730812f90
+146b6aadb3aa8efcee01026e7da9c44d
+146c00a9cf4589dfd2de444dbc00dbed
+146fc2bba9b41ecdb4d93648db0d7d13
+14711b678ab11b37c0d0f7c29ab83420
+14750d3e317605030f554ca822284620
+1475a2e5cd012ae4fb8b921202bb4da3
+147a65ba555cc0e49b13e63b53cba034
+147b92a414e32e270678eacd58bc4754
+147c1018686542faee057649a462d6f2
+147c9d7a91b0258a01258488e1862d33
+147d4ec7297d635475449cf6219ee315
+147f437dded2dbc2dc458cfa5e17b21c
+147ff14ce71ce0ccc0f46dc48c1df097
+147ffe6a6749cfb559edbb17a4c2ffae
+148093f9b92e7e8cd560dbc0f10165ab
+14809d24b82d55d0f12fb184b1a101e8
+14826e1b8488906c054548b5f180eefd
+1482ff8a742104dca59b7e3109e47c27
+14838e15c6709927853da3d178bf59e4
+1483a1e501697a49b6fb1b7602bd6009
+1483b5ed944243d6d4c5f6ed9fce8034
+14878270896382a4222acaf5a198a228
+1489a125597040774edf209a82405a75
+148c1cdf17d9409fa2873edbe982117a
+148c8829011e7d05901fd883a50f1ffa
+148c9c8383643dc808b30f82bdc479c5
+148d793fbc0387607c7071e8d50bd9bc
+148fe26dda41d088a90fe27d1c98cdf3
+1490ef903406dd9701d9b6a5d8024158
+1492053a57056db6f8f9a6ad25db7b05
+1495f9b4642e0bfcd0923d399d8f540f
+1498b22c4e6efb6c9c57600788f11e49
+1498ca4f00d462c7808747b3e78b5208
+149942fca71a50648a9ee2d7ff824b7d
+149c09591151ba176548690135137723
+149d85506f9487d060f0943bc7becea2
+149e025b9701ebed66e220f937eae05b
+14a175b5dd3ab0388109712ebcc55e38
+14a2579069da79330f339e54ca3f137d
+14a312ab1fcf7e9196fe751d37d06eeb
+14a3e9f7628293affa8989017fb1ac6d
+14a478caa327942b5a718c9b775c533d
+14a4bed8ce6343275d3f519c345a7e6d
+14a5e11b9469931e4b6a6b48a7918334
+14a64cb438e64f7d03d384a70d398e38
+14a68c86d8a2c92ea148918ee2e42b5b
+14a7a68756a29399ecab8507601331a3
+14a80610b6df42a32f9c85d99b4923dd
+14a80a0eb327049a5a7036d28e8ac553
+14a866e0d01e2b576d8ddd40dd557f68
+14a87dfe76db97843adbdb0aec7486ab
+14a8c9fa5d1ffaaeb32201982081854c
+14a8ead15bf9cd19b208caf56e858b09
+14adbce250383c02af7340566843439e
+14aff6b482353732e40ed223f70559f0
+14affbf151c62afc246af74cc0f8375d
+14b16159dc1a6701488da930a30051cb
+14b2cd90b4f4c8ea9c83146421d4d32d
+14b3ef6a69987eed51053ca847d8f288
+14b44fca2a57d193d21315d39f537970
+14b53e202d452936540e488280aa4b2c
+14b6c72e0406d5f9137907c8ba5cd335
+14b833f27e903d9678eb7bf123a646c7
+14b8c9d7d39ad9cb61234a19a6730a96
+14b8ef1285611e75ac0595dafd927c29
+14ba207910b2f309f318a54f7f41a9f8
+14baced4c2cc51a5ab4012e4df3814fa
+14c26c5733cdae20bb022a8eae5dce2c
+14c380a2086e1da170811f1dd1d1e25c
+14c3f2651a1118f91cae19d41624d6b9
+14c479a916fd80bbd35403292a792e03
+14c48de63e7b875a98a670700acd7c52
+14c4bada1bff666021ba58b1b2323720
+14c6dc251a935f1d88e62dcef39aa223
+14c71f41a1e244527fc499c9cb238fd6
+14c8788a59accfc2f4f766c3bc51e1d2
+14cb0a2c18b7606ca37e323f95744eb4
+14cc5a6f434a5ef53720e5c3a17c5ac3
+14cc878239400ab24deb6b393673557c
+14ccc19a9bc11f99d181636e651b9283
+14cdfc12c6e22d6f4145b770855aa86b
+14d41bc3abf5fe8560f8e555d84164cc
+14d46ec7cde586ecd425092522d744e6
+14d69673bff813f3844a49f80c08611f
+14da0bcc720e18333647503872a68a5c
+14e09fe62083332ebe07a6ea7a267db5
+14e0bdeb4d0263e59e6b2d4ed5f21692
+14e15acefc508d7aaedb27a72cd4b7e6
+14e3faf7be4378c3073884595454a49a
+14e7b2575b96ade6f60c8bd54657b293
+14e7f8c0eea2779880c5963bdc639997
+14e924801fb949f07a57e92c4d562635
+14ea8c6f73e596331d24faf27f6cf1f2
+14ecd552029459756ccccf97ee5739e3
+14ecfc0c26b460fc49292651ced8ea99
+14ed02c522e7d4014005e3b24d025744
+14eda956c70f4f1cfb1f8fe77ecd15ef
+14ee1ceb227a7324490f7e1be79a33da
+14f25dfb4195067d32e78be6e187b4da
+14f88590bf5728ba0072a837538a985a
+14f8b6ba8f5e01b7e86114cd1e7b3cee
+14f96cde5e54ab41ae2845bd3acaa84f
+15007c446e3f2c55b3c25029897422f8
+15013cfbb758188cc4a38abb3c2d4692
+150203325a5b7df77628d1fee5bca833
+1502d21cd4cb3e89f8b5d36ed9aea939
+1507644a1f768138471019a124d38819
+15085cfc265776cb48b0e0e00fb644c7
+15087594c3b0e52c8d54f5304cc7ec3f
+150daba20b4b365421fd13b12a8134f3
+150dc1dd4904097b43b686d3d2b394c4
+150dddec178d428ca15f188b938f94e7
+1510a796dab17b5fe17c3478d74d44b2
+1511567dac80dc4b8f563fe88d8889f6
+15119aac3ba8607bb016b8e3ee2f0d34
+15128eb995ae49cf95ca5da13ec42d6d
+15132a39a8497af69f16d8b33ca6bd68
+151666e67158116410a7c9440fc4cfc4
+151810620f57e96fd73b48c529a3b6b1
+1519b36be935a03c82aeedac12ec598f
+151b4da7790e808721ce7248956ce94c
+151f4bb9fddc5f83514540d429de7dbf
+1520b243771693574535def2cb4438d4
+152117df1cdb26411a9f74ba516d5ce3
+1521361b9140970d964a3a8b8a106fe3
+1521398711c66ed4a4f4ff4e8f4c4d34
+15261f753d2fb94bab0712e715d96a18
+152628fdf0aa47b40f16441cf5ffd716
+15266db07efeaa7c68e3a48d12a7a1ac
+1527c47ba684c691bf3e0928d08e2633
+15295701bf03c51d4326d38d0c0fcce6
+152bbbd64bd4767054ef4837f0aaaaaf
+152c0c1f85463b41513560347e9e9862
+152fa85c10b936e3eff06d125a459b6c
+152ff8cf7b5ee8d96287d11f610b1f06
+1531809569a06e06bbcea67a491e936a
+153185b470ccf434780f90d6dfd60811
+15339e4028ac0d116c2c29af8987717c
+15362c8acc6bb1aa0b043f3b97846458
+1537e4ad6d713f2d9d8ab58a2d5f47f3
+15383c2cf2fad56c3f4365761c92e9de
+1538ea640b54b48ffa4a91bd71d468e5
+153a6cb5d028a6cc83c7e8e72d57beec
+153b025233b2aec538f53c49c92f1e5e
+153b9387968a16bc60836042f9c25e28
+153cff860211b3e48c595fc1ef3cf78d
+153e1b5e15ee7a983050136bfa86e9ed
+153eb3bffe9522516959cda683573643
+1540691ef9e32cfea04fb7cae6cbed86
+154128bb87684bb1af24a5779a8780ca
+1541b37529db87ae97ae35d6f3230d51
+15424f0bd40464439087d03b6f87f076
+1543b3efb4c711a8dae734331ab34c9b
+15441c1b3e5692141f4ef1eee370753f
+1547ee6924920ae7dc03573d95c84a63
+15480e421898feeddc3e8c55c48b3b6f
+154aa7b39beca044db4643d55913f1d3
+154b7fd72c9968ecf854351bb2b72326
+154c0cd1cdf2cad948ca2edb8a464704
+154d1e2de882f1fdbb1973ed48cf29ca
+1550f4f78825b8bdb13e995cb993f069
+1552111d720a31d2b17ab6119d7cbc81
+15536ca27eae2c04e4bbfce1e80f8215
+15540127870bece64237115f7b56bc2c
+15540604275675d9c0d8c1b508d536dc
+155665b312213cfb4cdc1809690c8ae3
+1558098426278d784f8572358b3ecfae
+155b055dc44952f5502674905dadb8ab
+155cbd90ab7cb71aac798370c8fc8af9
+1560b3940ccff4d7ae0559e22e8d2200
+1561b174d9d2ab3ccd458b4fb79153f0
+156370c58c2d8bce4f3f9046001f3442
+156457e770c85542cdaefd61733999ca
+15647fd409449a0eae26c35ed9df0447
+156c3bd24791cd2d981e93147ace1623
+156cd3e2bad12847b15d7b6854ab4a7f
+156da521cc8d497709dc332a3bce058e
+156e0401ec9cc4833fd78631d0217db7
+156e6783c640cff1cb504d11fd99645e
+156f50acee93786cb3acd076b6b58cef
+157032ac20c56ee00e395ab01d060f64
+15710f4abae4a6c9f512c75f8627266d
+15721bb8e99ad3c6b4dc096681c69cb2
+1572b34c6d902fdf50aceeb444c104ed
+15771e5d104294424d7def0206c4a076
+157778c15a9ffe91b5b9f7b13dd88917
+1578e3aa63787355b804278210f88ce7
+1579daed36e2674c89f8ff0ec5785b4c
+157a305ee66ca5b3e4a32b72fc4f3b43
+157b3db80ae3efd8a5b5c5ad91ef1833
+157e1a5e77058749a0bdbddb7e3e30ce
+157f7dee58295642e4bac3f91784d41b
+1580a335825e345b3d0bbbff0b50564b
+15819f73f2dc3562a1ba57e6aafe6b15
+1585cb89226071bc87b5e0dcd3b3cd47
+1586ef2d9ce8a60c1239e8267dd4792a
+158837faca17dceb0a701f4ea19fb2c1
+15888fbf65a9f1b116ffe2ad88951a2c
+158aeb242136ece5e0870b45c49c7510
+158d4ec6485d15cb0a1ceadcefe3ec49
+158dec787cba597f1918fb5432a56fc7
+1591cb27d77b6454db630dacf87c2488
+1596cf0f7c7db667cd240e03f3a4263b
+15977d8dff6a91c9754653d951992bc5
+15981ecfaf929feccc1ff98061559cbf
+159845465bac31f8269433b900cf944f
+159a63e7f35babe27877eb91fd446259
+159d253b6a28b3d7557f9592f830fc67
+159e675b2f54647d9c3b8835cfa7ce13
+159e6f947fe4d21983c4b92566a53fae
+159ec81de667652c0de12efcde2f8c22
+159f45a5bc0d401d55c7b00977edf1f9
+159fc9873fa7c0977368788afd061cbe
+15a072c82c3adfd8dfb3885bbba4cfd6
+15a19d122f7c86329fc5cd9e56e8d66a
+15a625c09e0dce14bf5925e22c50521a
+15a665434ced6dc3e0e741f3a4bcb2ce
+15a8bae01319ac1a4ea7bf89ac892bea
+15a8d74ce500df5615740d2a3e6365cc
+15a8dc2ee423b25c45d7f13df26618ed
+15a9921e959d55f85a76dd721463a6f8
+15a9ea7d08a2421301501357d8309643
+15af72da523c35403adce7c7edb30872
+15b424757cf21328061fc5059a65e571
+15b4291139df2ffa93334137d23763fa
+15b6ecd60252839d1a917a0d316294ad
+15bbd07733e2715d2b352d8b04b6269e
+15c09de159d44ca45c93ad8b0482364d
+15c18eb03fc9a648fd9762dffba372e5
+15c1f8fcbf6f369db85bdbbcae4386a1
+15c22d2a4e914148f59df87d2c5dcc3c
+15c411e1c8274d5d03769980ba3b298f
+15c45c01e0ec5542fec5091a531e4fd1
+15c9a3737668b270fe74dfca822d10f4
+15ce2158c0dbe7ba8dec3f51c535d4a0
+15d16fdc50deb821f689767dc5569b20
+15d20ce3f410f59bfd0e8abd52c8c11c
+15d3cdf1c738824eb056d817ee43b5da
+15d438fa351dd07309b8e8a6a9efcbd3
+15d4e9cba324cfaaac3af53bd3344187
+15d570e50a552ffb98609858f09b4f76
+15d7444cfba9d7a85ddbe211a0acb750
+15d9a6f195acbbc387f96773afb79ba2
+15daef091914d6c94fdf1a10a50491d8
+15db5887ccf319a50052e7d2598f635c
+15dbb306014fe71690dd059574372d6e
+15dbfa4f4df1685218d9f58cde2db2f8
+15e0f0e16ebe17cf25c03a6210957564
+15e6b3fd1b4b0bcb2d8f6d7c0482e524
+15e7d6079ffbf58b4704578115b67ce9
+15ea503c5015f172820fad12d12526f5
+15eab61287d31deb8bb4c7a37c1a3c27
+15eb32ab38693571438d0b3388e8c0af
+15eb731fedc0462c6ef3d705099afd2f
+15ee005e3955c379ebf883ea41174c06
+15f1ca7bfa28d7b3fbcdf1dc89b4d711
+15f3449c26092110997c79c45f29a763
+15f3ff26f9bc8e910959adf9c06741c9
+15f40ebc80c69334ddb75a58dedff11b
+15f5676931fe80810ac18999ebffdf4b
+15f931d83359288556d049a029e42da8
+15fd6bdfb9abe078ef1838fef53c8056
+15ffb2ab3af03e027dcb98f42e93471a
+160417345f19727ea36c51ee08fbfc36
+160426ac344f4922f85e447effa2f4dd
+1604abd91db4e383bd2a5b0ce3ca55d4
+160654e90aafd0bf77f4acaa849bb6b5
+1606ac9e092ea1a45b737d968c07c2fc
+160cf7237f17f134682993f335311cd4
+160d78801519d9055bb6f67b83b95697
+160efdc4011e235b7240fe4a7405a9b0
+160f3ac60f6671a4d1a44b5e811228b5
+1610a90ad75f9364e26ff203167d1a49
+1613275ef1c985284258de6622e0c882
+1613f66c0eed593b400b7a13bd9c22ca
+16153ce7580efb0a5d4e6a3bb91fd486
+16173f15f06e07ca3756aa418215004b
+16184f0db12b939da034d153b04ae43d
+1619a7b288ab015458e55eec79917433
+161a36c340d7460e753f3fcfe1b28093
+161b8ba4b43c23af6a4c616dc441806e
+161c0cdb3cfd12e9ae84d09fad6f63af
+161d036be3d34feedf8e421dbb55fc50
+161da74169b57166a7201a491e341de4
+161de79b18fe465d1c0eb81737b90d7e
+1623dd8996c45589de4a0f21fc97eb25
+16246c5be1369bb89db3b9e345fca308
+1626bc2bfeadd57acb9130627cfda6e8
+1626d84a2e833f3ce89078219a8350b6
+162799e90a77c34fd6035b182acf44f8
+162a68c9f0855386655ee02c58eb3638
+162b7c1778914946c462c8d2e16f80f6
+162cb2101c03a5ed6745f7d47c62949c
+162d8a2fc8d15c1446c0b1ac95f6e004
+162e333bf9bc0a7be18fa3a1bdae4a79
+162e46aa1bb72cf835063b4560aa899f
+162efaedfbeb5eed177beeee401b0f96
+16346e70163a293a2ab03f4f9a6981fd
+16350304ee08ff39ce93eeddf78481ef
+1635baceaf8189b85858dbc822d05e4c
+1638750041ec78f7010ba547235841a0
+1638dcad3d17e8e5fd39fd7f14a8c2ce
+163967fbb9c3dbc575a0009e0c1c586d
+163c5e48acc01167233fdc11e88f24fd
+163d5b27932a3a71e85d1d5fb5b4cc96
+163e04705261b4e147b5b75214a2ab47
+163e051ccba1fe3aac65850371e20a0a
+163f05a5bdcc2e5c88aa16e907c0980a
+163f24ffaeee0add2c41400e0fae161a
+1643fbb1a639083bc707616da062fd49
+164401c43ca6f0e04f4b5d6b75675bd3
+16488988593d30a9b7ed454d913521e9
+164b90dc96bfa01e3e62c05ecc957896
+164cfc7569d1befc869d40225ab7da65
+164d19eef54fc4ebe43c13dcef481eb9
+1650c4fd9b6a5ac59b2b08305c0bc477
+1651b1946d8f70df1b33856f17e566ed
+165305d12ce39189e665493923bcbe8a
+1653c910487e9b09fb48ce83e36b2b88
+1654f532ce981c321a976d3b4689b02b
+165721ecebd7b3bf491e920db557f4ae
+1657595806a3080e6610ec81a4e26aa0
+165a10b0e9e7c0383e6a92b9b4ca83dc
+165b32d5b028d1259951ca9a1b54497b
+165fcdb4c6a6832a2294f7c0aef7bc48
+1663d8d90d70b44d9e30189ed6fe2e44
+16667769f0a138209045de056569ab79
+16684f8a211ed66b914f69b7491665e3
+166aa5450f896a45ac8af246c3694bea
+166b9fb4135668f87b88e7a628d72afd
+166cc6b96992f86fbce5b08d3f49c704
+166e80813d5bae80cda52eaab899d93c
+16713636d144433f934d0dd67beccab8
+1674da3770255f4f9747b190c4231703
+1676f1876efb4de2ae30ddccdfa877f8
+167aa4e76f2bbbf16467485086c34f80
+167b0ba18e9e4b6315b61a45a90aaa40
+167b4bb5f42a14f1476562f6401c718f
+167bbb7e9fbfdf8714eedef0b7dce0b1
+167d9850401ba732161ec30803ee7e57
+167dd8f520e50227992177ce73d0ccd3
+167e1307a8ea51f54a6f93bdf5e9a60d
+167fc1115d9794b4598ddb9990545409
+1680cc81cd05398808f935d4fa92a769
+168240a3c8634afbfc57c7290cf73bbd
+16839ef4470d35db9a6da8f273739a7d
+168405070e66394fabf683df83b5142d
+1686b7f11623e34c0b3c329d21dde6cf
+168854535092a71089bf6e6b756aef80
+168b87963c4cfea3366ccf2f1c29d916
+168bc2d8b296b2a0e68d3b0249b59b3f
+168c9badd9c544fa74cbc72d616b2c72
+168de987686731aa5e286c195773d997
+1690eefa3ac6526cfadcc2ed5ffe1760
+16916e21e9016114f98ca4c8925f6c2e
+16926ae2808b7641d15bea6dcbe4e511
+1694812d4dc1e1171d8f51d8151bc990
+1694e0dce621f88a1015428d4b2c149d
+1695a54e6b8e0fe7613116308c7ae64e
+1695d9b13e8da191630b1d3a2c5a8f79
+16969fc5b9e89f9ac860ae5703803406
+169816edcbe9d8d8cd85b3570ed2f08f
+169828a16daf9588e2a2cc1e53952acd
+1698491224a9e8e9d75f91cb3937278b
+169865876f5b2c051756ffec35ae3f34
+169b7a02742284e8f5fad34a3f3ba220
+169c621c4310a22bcbfad80d2ab5fbb6
+16a095824d68be9e35d9c3cd90c7ff78
+16a21566b7500403cba299c5bc1777a0
+16a257cae989eb5ca11b381bb3457bad
+16a34258f35b011549abedd88783794c
+16a863919bc32062c2394626a25f57ab
+16a9e250bd21588716e040b2bea9a0b8
+16ac29a06634529cf837fe35cea6a2c9
+16ad0bbee41a266472301e9c24a159ca
+16b411b6ac66e08fab2e802133ae5b62
+16b537e7a14ee717b2e90352c187598b
+16ba117d6e0ca109e47994522eb3d950
+16ba73e2438afaa1126c4674722adf6e
+16bae89c0ef47206702f79a4642dfdef
+16bc3ad7a3a9907a224d155b8c974035
+16bc877874ed8caf02f7dd406692bc46
+16bcab76d52d2c8bc5710d8f6c7930f0
+16bd1986e5d3be72916faaf1af577934
+16bf0bb29a647a129bb3f39ebfb13601
+16bf933c1449c0e84151668fb865b146
+16c1b6797e8001feb7d658b6e4c9b26f
+16c397ae8849379c809cb77140e5a98e
+16c4eb6807d77b605219c7517927ee5c
+16c51e5074d2fe489be90920ee8fefb0
+16c655d1470b1cc0b6f36cfae3a60776
+16ca3111a38ed4d7af989d0616905008
+16cd3275e13b066a5e99038dc970848f
+16cec97fb27cd6b86c3bd0edbf0aaecf
+16cf18cfc4100368395763141c332493
+16d098f6cadd7771099e5da5eaf623a8
+16d18b7d97d0e20f865cd29094a2fabd
+16d2847e2d7389b4ec52cd05e8accc7d
+16d6b92d52e19d0018f946a3dd2270eb
+16d72a007c2fdaceaadaa4d2c7eb0ec4
+16d838eb8131a2d8db6d6a081781e8c6
+16d8b1c502782b8ae9d23ec8adbbb184
+16db922b36a222237090950ed8f38f88
+16dbd9b39f78037d8ce81bc5d0bb39b2
+16dc3820b46606b0258ae51d162b422c
+16dd2aab1b2757422cf422c18dc99b3e
+16de208fd4017270da4d8bfac06d4ec9
+16dfbd5d2121e83e7fdcba9d13249803
+16e000d82263070891b7f93664b44ef8
+16e35f2a8402ccbc4dcaf91333c2b5c8
+16e3a1d770d22cee601271fcc0b27dc0
+16e4193d3ccd91268f1059ebb908aded
+16e49c6dc0d4f40bd462ca8d1f9b3e00
+16e91888462f550a18440a1131ca29e3
+16ebde4d398dd9331f6a0f3b47554291
+16ec3bc5bb030defdc3cfe85fbb1277d
+16ed77594af8d590360ceaab1aa9d049
+16ed78d3c62e6415c73d38aac2c382a4
+16f1dda6837fc0057318d2a171a6da56
+16f6f143969c2e039bd7aa21cee06afb
+16f70fd23299b18d70c938fe2191bf1b
+16f844a86722748682774006ad716958
+16fb1782b05783bc6f5e8e552d2b4551
+16fb82737e78a05f0fd7ca1ec20fefd9
+16fbcac514bad59f8f9183af6088224c
+16fdb8e82fa2777b4fcd52ad037fd17e
+16febf0dbbb5c77b2ddb512e829f9b92
+16ff468abc517442af901de06a035a7f
+170153b3ad8bd48f30e0801c575491d9
+1703d79fcf1e16958d69f92b4e9e0fa1
+170968e46b3b2046ce3d4b2619bfe475
+170b5a8513727fc61349578e3651380d
+170f631d7c7e611889d38fa6ce44e3ab
+17131a6929fe2541760f5f5e7d69e876
+1716800eb1afcbd0f55eaddf83b85095
+1717d8c323313f92959fe771bf726a71
+1719dbde647e658d4f7ea3b2f35fa41d
+171a0814698c7e8fa2d890544143ff27
+171b7f6157dd50c7b11d576ce72e3816
+171b8ac5e8dc9c1b565fd4f792b5d1a4
+171d71a1e2c61a67591a933d67b3b9fe
+171d71f0ed4edb64ef711031833c925e
+171e6d53ea4a0803117698fec539c5a7
+171f631a46a105f1e7b59cc57be8dee4
+1720713886ff4ba7fa04c1a97def968a
+1720813d8c6ba4ef77edbdfb13df054f
+172373c26e3d93bca73067e36bc4c134
+1725269f09008874ea929f9dad0f0479
+17253b2435d80067c22aef817347b69a
+1725650f77a713f860766ba22c15d916
+17287e67922d9f23a657d6834e3ec420
+172b0a0c079cde02cbbe16651fd57ff8
+172c46fe07d782e2ca49f5bd398b8174
+172e6ee3710d59b423aa123fa079d228
+172e88e363438471be93b2bf996272c6
+172ee161b2d2fdd2f8a55ad960e573d7
+172f503f31139a9b7b7952fddae13d75
+17332fb7b388d3ea1ca0fb8d3e00610c
+1733300cfc3beaaba6d88e709c659558
+1733c9d268582f6b15429e9998f1bc46
+173812a8f977bec46312f125f44d98db
+1738d770f0da2889af19bed79b177bed
+173969db55601854c9a01d48087c8dd4
+173a1fe60a167051ad19a98353071c69
+173ba44fb7595cc91bfca29587acab39
+173cb0d9a1ccb848baf209dc353aa13e
+173d449d7d157507459ca7099c5d1d15
+173da1a7be3b66bb16180778df9ab9c8
+173e1010e4cf81c6b59e6c0d94a2906b
+173f74b337cf8b341ac8b8a92c15b3f0
+1742156f90b313f703947f1564b4b200
+17421db1da34bb7af83d712c1cce34c5
+1742f826ae6ae0350548e84a8fa9ce91
+174323430acd275823a9e8943dfd2e9e
+1745a7dac8053853cbef3f71389c2289
+174716e39acb6293ceadb1e6c6bfee18
+174986ebf2c11bea1bc919c83ac47b2a
+174b01eed617cc4c4fe2e619bafce77d
+174b9f02b41f95e51b5905576300aa0f
+174c92c4d8498e94a783c8f2af82cb1a
+174e509cb743282aa21a5716f669aca6
+174ec33e82b36c48841d49712666dd65
+175093561bae9ab19a1832ac7a1b9570
+17551ca0d9614256f95eaa13c49a11d5
+1756a11210a20af3e3d0664e7a0d6da6
+175a953f1369420bf35b2f1ecf4c95cb
+175a9e8c09a4c972122e934d9ed96ec8
+175b421ff245894f2ff54cacd138d706
+1761007981e23d929d3d09e274b1abf6
+17615f40afd0291bd471fd7f066519fb
+1762f6dfb5a659145c65238406d5cdbc
+17635fabb48f135d98b981be21659f4f
+1766eab5b1c8973527a25c5238ffc2f6
+176b78ca3f02cfe66ac1471884376d01
+17707376046a2b17f66b30f571e76fd8
+1773828abf264c07733a80c023b1e122
+1776adf0a5b455b262559f955a094c5c
+177c24702979be311fd74c1e2b373c18
+177cd17d43bfd7eb7374d7184a5b8312
+177dcf5a1c8a5c36e762609cbe8142c9
+177e4059ed4cd7ae4266634ec00e9c10
+177f24f33529cca0708befea74693dc9
+178033c82d7ad72b86fdd2a01ae16dac
+17803f1148ea883641b9c4e96f4cfcae
+178076f0cd2668c1a19e460fd1bb2453
+178210ed6ab898b7a355f2c24c0fa577
+178606ecf74376145516aaf234c5f8b6
+1786e1e5dcd5a8c5685b0525d93e19fd
+1787ee1fb4afd597dcfcce3d549bde31
+178855bd03706cc5e88221f3a76b3010
+17887d28284474c6224e6b07ad2a3bcc
+178aaa66599d744f416099a5dff36bb8
+178b489e191608ab7edfd42730394f64
+178c1ca8905cc709c8203a9bd32b41f7
+178c4a76eb34640b1cc53c9d3eb5fc44
+178cc85a7b6ccc90af1bd4a71460edf5
+178ded3974548a4c04548982849a37e9
+178e28e5d80ade2ffc49afd48c4600f4
+178f238fdcb8eab7ac8a3badd7f81962
+1790a5bcbdb0f9fb6d993256c35aa489
+1792ae1c220d60771b29e47391eac1aa
+1793acfca93b8f383cdb788168e9fa3e
+1794904805127af3def1917a2e206101
+1794e553abc8ff2149cf662322039ddc
+179576f743f3cb628a0cdf3444d73815
+1795bbdd1aad8d8ed5d1f5b19a828f01
+1795eaa4c817baee58ea099bc752c371
+17970a91b3f564417be61abbddf84122
+1798391fb2ca7b202b45812687915f2d
+179b0c729547071c34ae808eda175654
+179b6a51d7bd411c9364e96d8a908a58
+179be13863323a5dd09364bc69ad11b3
+179d49e9c7f42f3ae1b3f254123ff77d
+179e091ca936927772463eb22bc8df8b
+17a16c1770d5adf711905cfa05b30de9
+17a397ecb975b92466817ec1ee345e4f
+17a43e9c3c07852a2d1e87fdadbbe087
+17a5251bce8bb6d65fa5197eea22ba6c
+17a58ab7b63773abbdab28db45a27244
+17a63ce5addd37f85c9a40dc4ccdfabf
+17a724dae99258108e44e8ddd895da89
+17a86ee2595af154968d0ef66799cd92
+17a8d978474fda69b1e4ea99029cefbc
+17ab06b6322e5c270663c48ba2b189fd
+17ac9c171d92848138b92eab39721394
+17adf710d7c0dd712057b2c5cc32227a
+17ae1457d0a54bd1ebd74b786bd74581
+17b01e3f8e23a7e3814152489a87c3cc
+17b5ff5d7aab2681d77aba316feab30d
+17b6aab771131cb7e07164b5453e83cd
+17b85ede3124dccea9fa36e476d18c07
+17bd513c57f7ef63702a13f9205184bd
+17bd7181765ad537046a70e6238287ac
+17be542eb35656601ac524617a0056f2
+17c2a12c19d8fb1b9680215abc825cd1
+17c45c2d7a1d245740c86c6e280ffbd1
+17c6541f029115cde6c5fc13bc1f9946
+17c6ec0827173935feb430a05fd5eb94
+17c6f916439873f3bd02e2078afd63b8
+17c7454e2e5576f8ecbd3b030d124169
+17c780cbef70cd8ac1db8ca3f8cc1c59
+17c7f71d4a7980177e7ff1b13ec4fc1d
+17c874dba69f0a67aa1bf9aee7538d5f
+17cc5b3e7d63713f962136e24b183b5c
+17cc714e7b341f196acccbd37b7176a2
+17ccdac00980177cc34b945362b5a40c
+17cd185a894fc788d7068049cff2afbb
+17d0060c74b46ba2d3a7263c66fa497e
+17d1a1106c8df9facf5b45920dfc1e46
+17d5e33da2dd13a3736afd0472e37ab5
+17d67aa0b9bfeef7c85526eace1ceda9
+17d8580714ee63c3eecb18d1e716c63a
+17d8dd81c78076a1cfa6d7cd7a90dba3
+17dc4d80abaab61218522d947a22ccc3
+17dda51aa78a5f03328561b716dda609
+17e0b6fb412720ddcbef59af5cfd58b7
+17e16350934b4ae96ca31df4f8a76667
+17e2219e377348796ff32984252c5ab9
+17e270568d43c53803481f07ee10966f
+17e3fa62d575d242452c5063a38662fd
+17e487b4ebaca4c2616c0b9101cbdc66
+17e5d6d5ffbd08941506d75df6eb411c
+17eb62bb070ae05a358911a9daf56f36
+17ebfd7888c6e041941e23d822be7595
+17ec633977e91f0e96fdc713a499ceb6
+17ef3da9a794fb25f059e8fcaf895790
+17efdb11ab0d4dd6886d660fd9c37d43
+17f34c701aac469fab3d6e1e7521ae42
+17f6a9980ce49efac80a8de2196d8da0
+17fa2b3191eefc9f7ed9df69deb229dd
+17fab6a5c529df20a9fa361932d46d71
+17fea7667f850fc081878537e53287fe
+17ff07125d8bbb8eddda261c506ec6fb
+17ff4fb1c436c96ccdbcebebac7d959e
+17ff770409b78b752e597d22876774c4
+1800747e3c226f99e6fe836f8b879fcf
+1801b29387b0aaa8fa58c5ad254a09c9
+1803288c0ca7c15c046cf6e4dfd34ef1
+1804752eba2b915f3434dacc0015a832
+1804af9ef5724726509c35733afe00f2
+1805599f3644e85eb61f5088cb5bde64
+1805dbeb723c2e4ba646ab7c51827b86
+18080e5fdb9567981f9a500974d1a012
+180c9c75b95869f46f4788b0173917cd
+180da230860d49513f134adb28fa88de
+180dbc03b80475589ac6581181e082bd
+180dcfda05a3982f933d7094e5726e6f
+180df21db7881c77d01e6a8c10ccfef3
+180eb1bc1487ed1b8457aa9dc03d85d7
+180f76be348bb84760a5b0e8b68a4b1e
+18106a7102d0891150702c7dff9c5431
+18106e6b409230e127b99873f5773461
+1811738c7da1c90e91de3bc12e045742
+18128017b2ddf61f47bc959c9e508269
+18156fdc4bee4c39bd4b9897a8c52be7
+1818929d1623769a7cd6282ba078dea5
+1819764739508b13143f145caec68b54
+1819c0e7e9363e831f016d899e3f1a78
+181a1d279bd5b6a967f855c1c23b1aac
+181c92082312efca30b57a85092fef9d
+181d65ab099ed613d63084851b7744c2
+181d72902b0583970801f58c0b48ef0a
+181e64fd0f0c1123fc800e97d250de96
+181ec495bc6757feb53d42ad0a4996e7
+181edda21556d87c7fdf9ab5552e9eb0
+181ee31c7a75e6d191a91b937f7f63b8
+181f8b1a7e6f7c0eda13af73611b9fd7
+18213343b5ae02717340d1c0859e6598
+182209a0fe3ed9fa28ce687b633181bf
+1823896127491d5329dc5cba7f7748cd
+1825980217b52bd96879aef19b3cee2e
+1825a4f86bf4bd14d392a078cc8f5001
+1825ab263f59879af4166e9c9438b9d3
+1825f63318beca88ae1194976c2a5eab
+182611550d5bfa9f55c17d15e5633d03
+182728f1274f94b5a8e7b039d1926fa1
+1828b1758e070209a51ac3e0bcb6ecb9
+182995da01ecae57b64b823444076743
+182af53bed2ddf5ca6169f082cbe6ff5
+182c1a1ee7d51988209fd100ea4e6c31
+1830616a93a104729291bf0528a99840
+18312801be5f072f1229abec0aa6c3f7
+18334f7a67d08d385c7cc55aff2ed37c
+183529a8f4709bcef836ee07a39f8ef9
+183a8ddf77b7c51719ea237c917f34cd
+183af19306f11248d5611c4502819c5f
+183b584c4366fbae04e264227db8d57e
+183c7038e446c0d8194912eca901952e
+1840907695c20322767937deeaeac1c9
+184166c21cd997a8bac69a9b787a833c
+1841b25ac280953702d8577ffcb64d35
+1843a99fba6a1b10ceec76dd5d16e6f7
+18447e003e5a9d3712f70a5ebcaf9615
+1844fd56e91d1fa150deb7088b923bb8
+18473781e5d08c008e5625fc2784e62f
+1849cb28545844296786c8758dacde46
+184bfdd3aa4119a2016693d6e2049827
+184c795ec9b3ab1ccebb1d67c3929736
+184c9ee742be37952f15701059f068cc
+184e8ef9aaf18f99c9dc3fa39dbf187e
+184fd8b6986f6dab1f428a35b3eeccc9
+185078b83ee196f00bfa7bba432f2217
+18517f6c6ea82cf79f2f107600bf7767
+18536a5ce7522bbed131daf75e16896f
+1856808df6f54499797e8a125ad92e04
+18570799043de652241ea35ea2b9576a
+185747b7118e9b4584f732a70692b76e
+18575ef86a8af8e89fbd362b1cd64992
+185969942425a17cb0b2ecaf46f29dc9
+185b9eba3fd33b2983a0be88ff60517a
+185c75a1ae0ac7941e4da0858f3995b3
+185ebc9f05dc1e452349634ce67bbf0a
+185f96bc26dd88494593800856f946fe
+18603854eae3fa163a517dba0a4c3cb1
+186092b63126e09ba178fa04cb9adfb5
+1861aacab14559d0918ca809e2dfe677
+18654af399631eacea5b75d0de20683b
+186a58dd6a30a634edef45c791598f57
+186b55cc149d10c1feab5780280dec6b
+186d0979c5213ebe9d19fcf539959db9
+186fbbdb5c6c8e444347eb34f5eeb544
+1872a6094e962a3dac92bf5da15c8675
+1873b632dc5c96cc1c33b3df83b33454
+1873c972cb8fa54e4f3b72278f97f1c1
+18756c5354815dcbb1a945f1d8f5cf6f
+187657d83b81a41aec3ab24d859ccd8a
+1877417a3f887d1df90854c7d81a8100
+1879f31449ebcaed2a4c257ab6209de1
+187a15a1e1786e07b1923354eb0ba960
+187ac1a99d4b4785db094463239e8d2d
+187c9b0cdf2c6759b913903186767607
+187e579eecfffa0aa9079b6ec8a6ae3e
+1880c62f9e0fd1713b72c9159a8d9a0a
+18816d625e5ca8913ec24bcb2928f983
+188205c5d7c4ae8825aa27b0efa80efa
+18858b1108a05c894dc7fbb27c0610dd
+18869ddcfdc1b487efb2f88b03b5c52e
+1887b8c7cf8d764d00500e07f1ac50b7
+188c59a02e4e8ca7408594fecccfd10d
+188eac381b1f991dc890164ccea7eb02
+188f55a962f00c36990481ac706ae83e
+1890ca9024ecf1e921e6fc37a41ea2f2
+18967a190ec4af8302225645ef13f54d
+1896c58883bea94fd477654286c1150c
+1897586300d7aa4fb06850e982e96bce
+1897798fb6a0cb3edf3f834b5f1eb24c
+189834b3a461cf73c36c88da18cb4225
+189a106c3be35386878fb536c7a762ff
+189abb518f993774be46bbf26dc1f61e
+189d1f7c50d11ac807a31ba133465bfa
+189db1a5dd298d7f865e3560a279e151
+18a2156ff8265a06b6202aad7c7b0b9d
+18a3815ff20567c0aad6b4c73aefb7ce
+18a3e89546effe3c89edfa85eaae8806
+18a60a8565e40a0319acbb323bf13cec
+18a69b3a575bd32be29b07f52f87b637
+18a84f07fe3232f6b5d2bfa93ec6b00b
+18ab15a9d35ae0dce67d2acc90ce298f
+18af66c076849bbdafbe063381ae2ffb
+18afd2cc721bbe772c84b2650cbf9400
+18b03fd564fcbc5e1daeb30864d170ca
+18b0ac3f3049ea8351698781d5755895
+18b0f1d75477e9c4e9ea3ea411789645
+18b0f492b7aba321fc2c6c9646701675
+18b1345c692b21eea2191178c1eee7a8
+18b1caa348d13a68781dcc0ff8e3528a
+18b3d41c188642bf5f6fa717c9a6c2cb
+18b53e160ac6674a0bf556f10d62b3de
+18b5c004fcd043009b98fbf7887321da
+18bbabdb4f69267dfe212b943fc61e53
+18bcf3fcc4052418de7c334c43b17ab3
+18bdbf80e105d07f2959f738e6a71897
+18be3a35a5e8f4409adad13dec04b010
+18bece8ac6fd2786e2835589bdaa10f4
+18c01979395fd21aaa1afd30b1fecaf6
+18c0cc78c51c63b2c74241c584d19aad
+18c15b88016c85c8dc7802985a9ec5f3
+18c309c74b361b717b3ad4ed34ce3914
+18c3efafcd0e65bc294d02d05d27161c
+18c5413cb8158c421e6029c0f7f79111
+18c5b1418410fa1211704271fc70ee71
+18c5c1ad2cb0ec25154852f0868b4ed8
+18c63ad2c9700cd068c2417e80ad9cb0
+18c7404ba713d8d68fd3e54b51ad4ebd
+18ca7e30ec08cbc5ad2e6df9b9edc70f
+18cb8cbd24b6f13cdc235b29aad97921
+18cbd58832f45edd02aeb8927ab3a842
+18ce0ecf2eb9f762aa967df36edca1ca
+18ce1eb58f8c3c8c1082f8bbb5a27f87
+18ce329c0f3438528ba85c785a7fa98f
+18cfffc3bbcfe78c41409460ea16bc2d
+18d07de9ed837e56f559962fb4b14332
+18d369c302548fa21e9ae37700a9c88a
+18d8164d09f30f1636afeea5cf5839c1
+18d85124856f56f1cc0e28999be37426
+18da3dcfaa7db1074a36859346069f2b
+18da4e60f5b621a721c9f90247911342
+18db453a14754ff95aa0568bc7a5cb3b
+18db9cfcbef320b40e6fb89a9b034bbb
+18ddde4568c661bb38f04715f9016221
+18dec00ae959339bcee666315e8ab0ba
+18e2a0cf77667d81beb0b1e002f36255
+18e2d800d25760cf87b78bf65cac9f32
+18e69f9d90320a335a61dbc7a47472e1
+18e6e01ab534218902d91940ed943cae
+18e7178dd8ee8f07e92c04f7b0091d3e
+18e75a63811afe17fe0fc9c10b49fe0c
+18e76676d874bef0629c99559ab07541
+18e87d94fc567deadaf8d9991aac5eed
+18e9f101289de43de9068bc89e758686
+18ea7ae3f4ffa2fc0c8d2e21b0ce09df
+18ecdedf836c0d37f33c169915c1384f
+18f0e21fdb9a7b7230ededa38e9a5333
+18f1a0b4e7ed4dfa4155858f07d5a9f9
+18f35f49a2bba9c775c3f002ca5668e3
+18f39bfa949f990df76265a98660fb42
+18f3fda872fd7a4904ca085cc6569f12
+18f879d61e8cd965da83fa9b399bb0b6
+18faff427a08a9abd961cc7440eb6ed9
+18fd3adc054b83fa10154b667720aacf
+18fd98ebc18735020bd79f8efc38fc2b
+18fdb7bad1f379c2ff5296c7fa18e1dc
+190072f4a5024d63c6d8108b469513b8
+1900a8f9d7434cb34a09ac3d66147bd9
+19017e667bddf9d2f2091dc0afd29d90
+1902b2464d9b891d6768073f9d9d834a
+190360c42290149ba02180faf16a375f
+190438e79f64c4dd643d48dc0400225c
+190719c784bb123ecee45c76fe4ef7bc
+19089039f06140c106b099e80294f132
+1909815e1536eb7407d31dd252ba2d21
+190c2a0eb5481d3483d006ba38731c47
+1910e99ffe8c0cb25cb37e371e3aa185
+19116ba3ee05134cf582fa7bf33541a5
+1912bd71559b8f2fc4d0904fffad6383
+1912d9392f3bbe63a771a8f4c31c6896
+19177dca22c46e0809423863bc929b40
+191876a58129c9483e17519d19c3d758
+191af0264994fa065db511ff92399a81
+191b1746b453974e9a9789b9a0e1e22f
+191b4b4321637ecf8e5101270d1ba0cb
+191c21d50fb34bccea75a9f5e0085e2e
+191cfd61638820f194b00eb00545162f
+191e32eba2b65ebad10261e1eaa1bed2
+192588d33d550f1d436e0f33e3f2cb8d
+19262ffd6242e5da2acaec52b8738fab
+1926a6fcc250e6f7d4b22109424537b9
+1927119f0a8d3383f0525413a58b8304
+1927dc8c2ed96486d041ec9157c1711c
+192911af7fb2957c61f45d94b3d7b053
+19297e6f47b09d7e59b5a56aef92e81a
+192b1c715f76bb103c9effbd85ec4c15
+192c99e05318b118af317d6d1253aeef
+192ccd2bf255fdbc832fc964ca0c396e
+192d4fe87bbbf20ae0b4e5639ef67e7c
+192ed1822c339b11e09a6a36e4dc45bf
+192f63551e0062c0a99a71787575bfd4
+193369619f2c2ff45f312bdc75e97472
+1934663bcf5c19c18cc1bf04a10ce240
+193839c7fb0837163180595aa5cf41c3
+193840af5c7cfe65a2b50824ad3e19c8
+193c162578f677b6f2db96795857b90c
+193d3c3260d8e0ee6ffdcff3009f36bb
+193dc416c4e5b5fa6a8116ed7c86f681
+193ff010f8acac5bc8e0efe677fb30db
+1940a8b0b468964886bd8bcd907ccbd1
+194272625a93c44d07899561222e41ad
+1944b0379cb378ecc9b55e2c253746c6
+1947c227c48765627fe8c362e85199ef
+194af1329e07d08c4f5aeef0384fd47b
+194bb396b76510eda54dd12c853802a2
+194cf236c5fa6c6d71346ba98ef2b797
+194e41e4f4f4d64e8a8719c636a0a20e
+1951a0272b53ae142554fb86dfa66ff0
+19549cc2a14e437d48222abacd54d757
+1954aae4382191b5783956f7cd4cda71
+19551600413286933a9dd7e2485d59e7
+1955b59f64ffa9c32ff702a8638fc0a2
+1959c245eff356824f2fbbc5623ffb54
+1959cf538d46dc3a14007392c15e572e
+195a4130b747ef50ee69052e6e134adb
+195cc6401325aeb3998b559f2a0220bd
+195e7ab75343cd74f189756242033fea
+1961596797a7bf8a06ffc88875d3adee
+19616d537574d1715c10a62964410171
+1962299a7142e1125a256e7435466ac7
+1962c830b8d917cf12f71ecb6837f3e7
+1962f538c584b381d5066ed669e6b832
+1965e3ee422bac5a3d955e04d837c13b
+19685000056ec5a5cde4f27145babfc9
+1968fb9d595846e4d529887b2a1dc01a
+196a2b7fb899709aa816729d35e175ee
+196d34531f966470ea68eccec177a758
+196ddfa0a0f6c312aa2e746a0aab7624
+196e078018412bed69b9233ca6cb0db0
+19719c4e5e1243e4f7f42755bc0e590d
+197295ded6c8613147f73817de6e2156
+1974494ba4e1c76ca572743a61c84a82
+1975bf225fc2a2b435ebec26347f37a0
+19760f68c4e52c3d3ea41ade69b072de
+19772a3101a1a5bd19d0d1ae4856cedc
+19778657e347bbdce3ad41cc7f5e5985
+197a593a9744727341ad4ef449ff03ed
+197b6e9ba508fef05487030425f11bfa
+197c15edddec04ba1b1b2edf584cb983
+197c32263296003248537bc4d4754614
+197ffd734239dd6d6c9563231786386a
+1980abe8e56e6e65de4dd894b720f9a7
+1980d770fc0dd33849e93620d057ac88
+1982faafdf568fdb74d309f7c81a624e
+19845cab3fc6f8f2d7db6cbc7c443de9
+198703f8dbdfe64ae16717d339e1ae1e
+1988e0aae55d4ca1f51706149fd0fc9c
+198b5b11138b75fb30423ddb4bb8fa13
+198d9bfe7d5557fed629adbd3873a060
+198ff38db228923a95f1fd1114afdbd7
+19902069923ef3e93b5ad54535ecbef4
+1991872163abe6df9500e18c2d5bff2e
+1991f9431fa7498b37d2d1539794ce63
+1994ac5426ac560e8196189f681de8de
+1995918e5a1beed60faa72985c2a477e
+199766bab40af9d57c470cf093b3aa0c
+1998846cc14a849f802ec3183093ca76
+19997b58a81b807e054e0fb466ced908
+199aa5873e4576bccb34091e7f08dded
+199ac4c02665eae5bdae55b66d4a59bc
+199d36a4a8764626d01eda0ac9bacf6b
+199fb110f1d471c2850f4c374df61c06
+19a0c21daa8f2a26a2cd3bd3e1bc2b84
+19a127e56919038ec24c66e9e510708b
+19a32d470a19fcbb6658a2f324c316c3
+19a377539be0e8b60fb5791be5985121
+19a5790851ffad796cbdb8199fc519f6
+19a59d8924a0e16fe71704744f0b7a08
+19a5ada264d8f501f05a969b7ffed931
+19ab8ec6dda41fea3d9454b248709053
+19ac28ece5ed5981464a841becf06f6e
+19acc4e18058f122ec9b7633986a0237
+19ae5f6f2efb240225d5bed642b99860
+19aec2fb6e254373f08d4025e61fa328
+19af39c340643122920f35fd30e10439
+19b2a3eb1ce71371f53d0cbb5d446269
+19b2d1d76d2c408f1cf91e27c2dd4306
+19b51c66e1e85deb496c734ec253671e
+19ba5bc118a0293ec3b3293c7c5b1614
+19bb48ead70293f636e3cbc733cfff36
+19bb7c8748b4c21e13d5c6c7e98ba2e3
+19bbc17f968a9aae9597ddc267701ec5
+19bd7971d224470ef02007c3ab41f1fc
+19be63a82381d898b5f00fff7ff8f9e8
+19be78a09d1ab2cb327726271c334fc9
+19c1187b2aea096bbe2770fb942d3740
+19c1207538456454633c4c909befe3c8
+19c5ea00f7bf1bf6e3836b65d457a795
+19c97b2dbab8a42c97ccde798c3ae209
+19c9df9aae1cf6ec8f9f44fb2198f6a1
+19ca1c62d3a005d5dd4591e7906f329b
+19ca46dde9ba5371d98c5548f88905b8
+19caf2332c229daf71260d7c41696cc7
+19d069ce73a47bb5a9b7ba3c7912fde2
+19d2d4a44604eb362372dd82f175b530
+19d74b229dd7a21f614db1e1fb3d74b7
+19d9ba29ab67d5bae320ba050a79f91c
+19dbba622257a15b1b6c16a241396acc
+19dc1b838e70c81d8f02eca72b1ac0ed
+19ddd135ba48848513e1d18f0f61bd4c
+19de5e4a710ce7a2c9bd23068f1e214e
+19dee7859d1694af3b659063447098ef
+19dfc2e490689401dc49f797b94e5f83
+19e2bebe5e05d67c34fab2f752f94229
+19e8664b78b0bdb38dc110677e52e2c2
+19eb0c94900cc4cb6c63dccbee085955
+19eb728d9c061ff381e899b27728830f
+19ec68da2e744f0b17628f3e45b1a436
+19ed64a5796c54afb062e4cc7d423257
+19ef7f76de5e48bf1d92f95ce8827264
+19f3c7f25f0f36f54b7cd2868cd420e1
+19f52b1ba74bd646412e145b17678db2
+19f6102477fc6004da7865dea8234a79
+19f65fdecdb4bb32f63918e0718799ed
+19f76d428c0dc27ba71d30a12c536a10
+19f9cca578007a2bba28aafb78ebd7c3
+19fa256cd7f12cc2d649e041055c218f
+19fac42a1160ca4875a65834aa011a73
+19fcb848f7f3d01f823e6411f3a1c4c8
+19fd7efaf11e8703b6cf436d7b250469
+19fe8db85e32328c58cedb30c07cc9ee
+19ffc9c1dd2426822b66e4e05828cf00
+1a00150f32ff6390dcaeffe100e42a78
+1a01c67ab5e1e6c9dffb85ea2cde993f
+1a0254aeea56ef866d3b93eac02c3360
+1a025852fc66ce88bc857b5602415588
+1a044a9f10165a4ab603e6d37475f736
+1a04504397a00be448af862342db6305
+1a04ad64f5adb8836e69f1753c1e1491
+1a05be6391d4859ffad1c185b2696f34
+1a087b98be38d22e468030d9174afcbf
+1a09a986eb810e0bf55a2b4561033121
+1a0c0c367e4460c92fe1313c535d3f2e
+1a0d9da72186bdb933ff0bc02d0a3ea2
+1a0f75092f4a1abd59067bc2cfc38156
+1a0fb7c08bf4481764e8734f8569bc12
+1a10f5b3c4c7fb7b6e91e86cbfbc44bc
+1a117cb8a8e6180ea7192451710c022d
+1a13d05607dbe47a0b743c69cca03c70
+1a169f0a2150f5ab8bfc02a2d9acca46
+1a1778c0f5e59262825fb3617a93a674
+1a187efc5cfabfe0c6c4adc0a4b2f847
+1a18dd1907b94d519ad4d6b8cf3f7dec
+1a19eea68a65f0d1e4018bc64e7469de
+1a1bea0bfb0ebd7205e4c9fbb2cd0890
+1a1ea60abca15d6cf161416bf7f96156
+1a297719a4942421323766c9dfb75e33
+1a297f2fa67c45d4401545471e094993
+1a298dea08f7c14456a20c7ccc180450
+1a29ebc949cac3b8d02519c2d0fc1937
+1a2cf37cabb44379dccb3f84a4adf420
+1a30fb767120f3ab972d960483ebe0b3
+1a3231b6dfcb5c1bce168c5e98840a1d
+1a33adbe4d1725536f6d1e3ba35ace83
+1a35c500e1b805a87c360492b806a52b
+1a385044b5ba443dbb80659102fa6311
+1a396679c328731354e417809359f2ec
+1a3a1ca8285f989d4619548e6274dbf2
+1a3a93dd9edf2f6c365951c76c8e4145
+1a3abd7c7b48c8f86379bef309c7e377
+1a3bef78a18c85110029134896dd8342
+1a3f24020a587bdfca96c2f8522ef905
+1a401dc47f331f302ca4e6f4667ba683
+1a40756fdc2db70639cb022804924ee9
+1a42c1dd9008d676d963463471d047e4
+1a4336a08a9d5f185f9c13b90960fdeb
+1a47ab0ac3256b384127af5d0908c34c
+1a4b63d6445a32acacae93e24df06425
+1a4bf95bfe29428fea1708869a40cf8f
+1a4e0bde9db01bab99f9e2d60cc2b661
+1a4e2113fd1a1c6271e0f55a9ec5c8f0
+1a548e3fcaa4e0af429bc66333dd8e52
+1a5519a2720228fd48d8eed116e83a59
+1a58cd0a631ceb43a715c451e3963d71
+1a5a372ccaad8ef3432c0c9f8dba9a39
+1a5e134b2176584cc633ca7e3aa30d71
+1a5ea3c9b56368e5b22906569e050b1f
+1a5f3f298cc32b343b38d73ae9a4b4f8
+1a619157e0ffd45a456d4772b7df68f5
+1a65cd1ae88eca0a13924dbd2f0f0292
+1a69b630a094d4b3ebbe2e52a2713779
+1a6a6cb4d29b28e85bbd6810d6feebb7
+1a6aa93d34e354e1b11958438c0b021c
+1a6c04adba6f524daae4b8137b178dbd
+1a6c388efc60a90ddcaca6179a8e90fe
+1a6fa34ae2caa439db47aa2d5b90425f
+1a709c56499cea3be4ce82eb9dab50aa
+1a70dcbd97fba17fffb42a3b213d2125
+1a71714c8d5be507c6c67f44daeb8690
+1a71e80eca75511850d7e2c592c0548f
+1a75d5dc4aefa85f4b4d71ada7778280
+1a76cb0c61522ab412f073428ca9a8f4
+1a774ef18bf9a3a242f1ece0a72cad5d
+1a7832e11817b2c6c9d630d4494537e7
+1a7adf7afabcb46eb94fa53b7d27210c
+1a7c7e9cc58e31aa32965894d1f2c04d
+1a7ce9a33f1bac4ffc564cd8fe8242a0
+1a7fb060f907fbef4f7b533d51be0528
+1a8067549420f163f1019f02a4f94cc4
+1a8356399356c12f4acf334fab63940a
+1a888535b4f795ca586458dc02b73ca8
+1a8b0c8fc4a197fcdda58fe049e3cf76
+1a8b47743279550b69b40befce6d7030
+1a8b7003a8bf94306d700fb63aa316ea
+1a8bb974db15236c4a68be5649a86d7a
+1a8d2b284c8f62a1746b968c3490ddd1
+1a8e142797b1db0fec748f72a2f8b977
+1a8fd7b48761255c188154f2b6e1be5c
+1a9138dbe19ec5ec5706e75d304e0d5e
+1a9183248a8a7482e4d2f530ff45f641
+1a93555c8e388c117e10c3c06865c5b7
+1a93b10736f4156dc4fdcb530600e7b1
+1a944ab807d8ca33f70b4446aae39fe2
+1a947f1808ecd8ea19c7e1969b9aca18
+1a94a0cf974e2df1aedd6ccfcdff9449
+1a95429edefbf7281402a0ada795746e
+1a96349d1e6cd260e9f17b331319bee4
+1a97c27b02647ded320e7940fcda44b7
+1a98ab03ffbd0a46acac0ba0e0604681
+1a99a45c1e662a18458e9fbcb5724b5a
+1a9c721e50fa4af44d9088b9748e5cd6
+1a9d47f566abce3aa4f413357d7f8709
+1a9de67ae1b021261a4a38e230a80a41
+1a9ead5abf6be707465c37663edb2f1e
+1aa033a9cd258b166ff38abbf3ae54dc
+1aa13f5ea2883d3f310d42e45e782168
+1aa59a444ce81b3c0c4fee2f56f87013
+1aa7185ad0f7db9810358993f56644da
+1aa84a5f4432a1661a5b473f5526fc83
+1aab49301b47c2a3af93d0dbbf8f38b3
+1aac4f11a5a1d06c0e7b7ff84f4968f9
+1aacc513259225a9fad55ec5d58eaa7d
+1aaf7c30e6b8872d0fca3464c77dbb35
+1ab069898a2937047d73490f99df05bf
+1ab59403628e422131eefc856b022e55
+1ab639dca03c7c4c87c8e10c9af59ed9
+1ab678df4ad44bde50f0b0d8f5308c28
+1abe58098009bacc2e147a808a55a29a
+1abe8e44a85e21820c82c9809811f6c6
+1ac3e703d0718eb0650da68f80d3de6b
+1ac618d9fbe45bf9e00ba18ef4796813
+1ac71ef9aaab8df4cc3c9d7af0955c28
+1ac7d388c0360162b37d0b3459912ddd
+1ac7eb9d3b6f6f00f14afb83636c1dc5
+1ac92eec816e47d71593cada5d499b88
+1ac9452cd4a9c7f861edf63c7862f416
+1ac9626dfe22d0086a8ea0c2e17b558a
+1acaf1b0a5ab2ead73f1763e822834cc
+1accf87c2605c915579c98ff7042dc11
+1acfa360f69e7a8647100b77ae5deeec
+1ad2bfc1873dbd2e1f08cf392f70aea4
+1ad342b64aed9975aacf1d049868a363
+1ad4720e88f4e6b170e69e1af96919d4
+1ad48594361aa150481b5d05d9a64ffb
+1ad7b78fe59a95e7c37f10783ba9cf91
+1ad9d5afc89b363f63e878892b8a95b6
+1adacde5b2143f36fd6d28f02e0ba700
+1adaf9c68547c683d74cd8e610ec1493
+1adc6313af53380905d809e6af767644
+1adc966ae9f99df9561ef6818efb4d45
+1adfda5ca096dbad40fa9bdd70b78d57
+1ae0452644b5102577cf0b42a89980b2
+1ae074fff7107c76a6a6da7a4b5f28db
+1ae1aeb49341d23dbdf6f7e22d1d1988
+1ae1ff092adf09affe09d1b345cb3b4c
+1ae22dfddff25f404fa51bd876e69c4d
+1ae2c3770561dfb0fbd71ad95e06a744
+1ae4fd14d6c7783fd3399a8eb96b4a5b
+1ae6240829f3da0bd2fc2c3ab3f5b0a3
+1ae6d97b6e389d50a48612ec6c5552f0
+1ae752f67bcbe8f3ea04e0b5654fe3a5
+1ae91064c5c9feb1c60959215f718fe5
+1ae98399bfcc3b852103f46371a22cb1
+1aebf0dc84306c61c1ca853cd3e5bf4e
+1aec334259366b484628612bec1e561d
+1aece368e684a29f960be6eed0d12498
+1aee4c9ac88003ce2f5f0b8ff8d4b64c
+1aef59a8156954d2c4f05cbb204148df
+1af0026e7782fe287ff1ff952727e62f
+1af086545c1b7ee6bb643c9a02fe1149
+1af0992adf8f1afa92ec197da728c404
+1af1a7d4a8f4a38eb911054da9f7a5c4
+1af1cbdac8807f044f769119561683fc
+1af22101e997ef71ce35edaacf9728b1
+1af2e9e9b32d871f56cf5600896a51d3
+1af3e4d2324619eb310e800af3aa4a91
+1af7b62de38974a9c611da15208af0af
+1af868cc3fc59556a273f605e55157f9
+1afa3a4ab0f9e8aa44ba29dfe9e6f43e
+1afe27a0d6e1ce30a349313eb669345d
+1afecf4a79340a9f42fe463b5a97404a
+1afffed17559b675237d0041930dd444
+1b00186900b67a7e192ed96a54a284b7
+1b093fedda652b252573d4b5413679f7
+1b0f57d1e3d88faa4a9a1fdbb448ff39
+1b0fd04acde07874ef708acef5dab48e
+1b10205cbd404af92b40bce1ba23597e
+1b107d7b8cb1c7bf44ba2a0156406587
+1b115d40d51e5a58dbb0d234773e14e6
+1b132502f56e20db02287ead1557b365
+1b13936f76437dc9dcc0f4aa0b635ef9
+1b14ebdd1b605232207e6823907f07ad
+1b156504936a54659dfa0598bf4587a8
+1b16a0c941b28ccf7bd5565fc4e72be3
+1b17f97417d72cab6893505fc2bdbee6
+1b1841b7ad588ce3a0db13591dd8257a
+1b1980bc2c300c8b1709b70493b60d91
+1b1c49f9b37a50da800e2d9b452f6d8f
+1b1dfa23dcbe3fd21ee09755e311f933
+1b1f2d53912a7e1d8bfeaad27cd3c846
+1b204bf3f15338447ee4bd6bbafcf6a9
+1b21851fa6843dfa6598d02594542e56
+1b231d646c4393f5759cca2822cf2aff
+1b235d919cfccf21f02fc9700260edd2
+1b272e14faf30e189ca131372302b535
+1b283340ae51e0355717ab0ba757cc05
+1b28b0d954d32b0368c7e237dc5bca81
+1b2c987f2d479c1ed2a6c8127bc31fe5
+1b30d86924d267c98490944d853efabd
+1b3136218d9e2149c98fa525a15cf905
+1b33793abca22da965835fc6dd1d5c26
+1b34b47a399c0d6d5a8ee25c81ce0e1a
+1b35997188559c09cc21e34a65071da7
+1b35c1cc0a2108c7e7b181c4099ef6d6
+1b385097ba5788f9e8c4587aebac41b2
+1b3a5b6720254130fe00707ee60395ca
+1b3c836f72d5a6f8093d9429b765e548
+1b3cacdc72cfb7d138775b4a4570ed75
+1b3ef39821ecaf051e342dd03c912cb1
+1b3fb73b38fa2de3688c5258e9d1c9d2
+1b447c682894bff3389a1a52cf1aaae8
+1b46b439e42b350335494156001622ab
+1b47651453658007dda9c58ea3a524f6
+1b48473dcb05168fa5b65db1d917c5d1
+1b48552ee0b42023843f3591a10f90b3
+1b496d5a1006d4958b92d4976f28481e
+1b4b030d7acf99552b794f00496be81d
+1b4b72e1dff31185e7e20bcf9b5a3aec
+1b4cfbfd0fddd55cafdead49a94d46b0
+1b4df34b87d3ec7883ad559f5efc233f
+1b4fd7148d75a31bb0339f44059a49e7
+1b4fe7e47b5f57818a5419d747c56f74
+1b52fd835ec549fd28e8eb5564e77b5d
+1b55ad0f9f08f47c88d9f6f2746f7207
+1b590780a9abe8e18ef64c51b83922fc
+1b5acd2a447b88c5e4ef072f451a8bbf
+1b5b63cb2c425cce9138d297e7abf547
+1b5cecc2085f050ae2f7141809611539
+1b5dbe37c09622d525ba39c94e1b6ef9
+1b5feceb0c23b752c1b95af98babbc51
+1b6039811d8fa688205942c74d462c4c
+1b60f0a968050326a57eaa9eb1462c15
+1b617e3f9990b8f68298f84b89244f75
+1b671fc2ca5a307b8430f8d2cb81d005
+1b690ffe6531701026ea9fa9f4b37ec1
+1b6943dab979ac859bab8011ecade526
+1b69aac09128d27b1f1448926c40f1af
+1b6b4bf1173c88f2239d492f9488fa86
+1b6b88e9bf6f70d42755aceb0815165f
+1b735fb9bfd37df909a6c84db237d507
+1b7402e3a7470ded85c1cf364490cc64
+1b7416bb290b9c0b79032616ecc1ea67
+1b746879ec3d711efbda805010e2059e
+1b7474f65d72cda46cb10519467a9635
+1b783d3ba45217e497f89b53ef7617a1
+1b827205a3673e67456c0a1b67e22dcf
+1b83877ea2c1ab464c6bcac297d623a2
+1b853c23773ac4561e18abed9237ccef
+1b85769f86c0ff91aa1869a767e14db3
+1b888a9c5ce983fc14d623c8874d4a61
+1b88b41602236b6f974e1eba0e81f0c6
+1b89b24b028aed1c476d1a789437835a
+1b8b9d7a1dad157c37d4311314d50acd
+1b8bdf1a1f2858059a38f23be35ec665
+1b8c70346132d9192f2f0481c6b4072d
+1b8ef3c117caa2db9c9db567bf0ead10
+1b8ff395adf57d784c884bdfe4489150
+1b919afeb0c276d77929d6fc786b3b1e
+1b951f76a91498c01d16eb30d63501e5
+1b9688a9eca2f3ee4f93dc62de5e1421
+1b96f7357b58e1f56a8f73cd96732b0f
+1b97ac90984398572f7703f5cc061884
+1b97b3544a3cbb2c9940655b17723755
+1b9868d5306c11cf74b4d04e0a4a9aa8
+1b9980b37959281bb2923850a1c698bb
+1b9b9f9d3ba106a1d86ba1ea84fb4872
+1b9f34f56bc0b36e5b8124177dfad8b7
+1ba0587a640df64c7b7d6dba6570dd35
+1ba0cc2396335322aba5b6f832fb4b7d
+1ba0e01a9340af2b936267e546640866
+1ba1852305b47e1e0be09eb5fc3b6f3f
+1ba1c66a3f531ef8c3662ebe84e38ce2
+1ba2bf1c6b6ca9fda60068f169b48f35
+1ba94b5ba0cec79f0d1be9e5fa57b94e
+1baae12a117a5dfedf40990d32d6d63f
+1bae7027eef30291a99486be148999e1
+1baf3d722a6c7bae89dc451862e60095
+1bb3747f571b3a1333838f9a2346c054
+1bb43d3bd011e7c20f0adb1b40c4df54
+1bb523b6faf3481a887068a4092573da
+1bb806d3c499ef2acfb75029e3d3cd84
+1bbaadc3e4ced302cff60c48e03c9cae
+1bbf44fbbec9a8fbf474289414646560
+1bbfa2e118096dc92cf2fd5c50d385f6
+1bc070f07486a2524b195d3b5cc0a79c
+1bc152b63df7db6220f4555d5e3c51c1
+1bc2de3e1c5db99546ad364247915581
+1bc4463af394e98ccbc1d79d6c606f39
+1bc53eebe47666218db66a17876a60d9
+1bc6d9134ece43b0c97116a1a55b6456
+1bc72125feb6c441a6d395623cf56288
+1bcae800a0ae8e233fe6c770f4ea2452
+1bcb4c5ee51202b5bd6bc7ebb9a337a9
+1bcfa61a19af191d6e0e627804dfe664
+1bd31e13319b3f381fab316f1af82fe6
+1bd3694028d7b9ecac7ad07a47a575be
+1bd7af03a673e163abbf45459a02728e
+1bd8ce03e5581d7a8ef7f18cba0e3de4
+1bd95d8d69a9100b567070e64cc5e8f2
+1bda6df026630bcb84ddfab121f6ac52
+1bda7881dac87f39cb37fea119cf1cef
+1bdb2d7e6948619e3b86b802f988a9d7
+1bdbc6d43098f58b03a075eca06acd6d
+1bdc66a1de71870b104caa10b1e160bf
+1bde2a672af7cb1f63f0db89d5c489d9
+1bdfa91851ad9520b79818675d80bd9b
+1be047f1f269c7e0b1f728f2bca8c076
+1be224ce01786481b8e0ebe3a4d946ff
+1be2e4f870bc304f682b5fafb966c669
+1be3f8fa534948e1ebab7960bf17ec15
+1be49cc9db0c673659c84a3e2d3d4293
+1be4f5dcb5391bf033d938bb3a389c86
+1be5699f581af9b949ea468690ae7fa5
+1be731d4380cf6feb771256752e210f0
+1be86e9f3f5a4c2709395cb0ee9cce4b
+1be8d988b652535603821a582a319fc6
+1be9a0014330709bed8d1f3647d8df3b
+1beba99194bb1fd3b45bd598e0ba98b5
+1bed0524d9af29042bda33898d0eda42
+1bed398a01c4ad3402047344c643e760
+1befdcd830978db67982ca8e72ce5569
+1bf0ab711ae779eff43896e67c77b42e
+1bf4db8b3b586f04b54ad6275f2385ff
+1bf64c87738bf740cb7be1c6e6186bcb
+1bf725e66e16541ae0554c00748e267f
+1bfa1f3f2740f7aa14ef878683b241ad
+1bfde0f2f2f4beca74c92a5f383fa987
+1bfe3ab9a6252adddf1280631a6019a6
+1bff523507a91da1f736ecd1375ace47
+1c02429ab1f4e1a4e2c74e43d6535ec6
+1c056ddecf128240376d17e61d9e07be
+1c05a35ce5fce0c8f6ae76b2aaffd571
+1c0985027efffb128d32a410c2876982
+1c0d127999b8d722c509d67a7d8033dd
+1c13da54611e4c2ee716393807d62f82
+1c146bd3302ae84f26a8d3e9b9682e58
+1c14e495bcdc177777f079f3e5ae2a0f
+1c1525f67f84fe01bbfe0dc9c0518385
+1c1684bb2f563e35ffc0956c38fae5db
+1c178d5466bd1f6b3a5f763e2ed1a3f6
+1c183fffc8bdf228c86f0f55af2596a9
+1c19b892bf6a331ec1f370ae2f20568f
+1c1a2a9a7d696e31c2763fd17b9a4fed
+1c1e78bace1c10c078e5502a55230c48
+1c1f87b36710b936f8e35a627add2970
+1c20c57f4c439d219539684e3c059f89
+1c21e4b176e385ebbfb9a8736a85a4c7
+1c232736d64f5ddc442ba1a034817884
+1c2362cf32af486ae9319fe3e48ffffe
+1c23dc8838ff3035ebc1742736c738f6
+1c247dd3fe7d7b8d2f712726180a3f24
+1c2875e9e1c0b1d544fc4453c6cfb688
+1c2da2ade9dd899e1903dc5bf30df5e0
+1c3352ac3bbcc3e8cf07c9324e5b849f
+1c377344b9a17e03ba109e52fdeb0c98
+1c37c2212d44fd6079810f5fa50b4903
+1c37f30fe26f64c56241bb1143c4923c
+1c398b221f95964e38853677b94f9632
+1c3b4d34dbebbaa1215dbe231ccdb1a2
+1c3eddf025bfbc5ce3bdb37cc9df247f
+1c4297a854f56af4df080886bfb5292f
+1c48a0db84597801dae956df824937e1
+1c491bc6089a0163b0dcb3cdb117a4ed
+1c497d8285caf445c52794b6398aaf6d
+1c498c225fc26b78c678ce43e22f1de1
+1c4f09d138b0dfdbb15f1739b38eb917
+1c5051c3483a18817d6af0ab0cd79183
+1c50633066c3b17aa889fe5fd967ea33
+1c516d0ff1dbf512a0768dc247abd6f4
+1c52184c78f95da6cf35cc7ee7a9da05
+1c5269fc85197c035bd801a606bf9055
+1c53ba6e9ae6644116704a4e39ce1b72
+1c5424cbe80225144553d3bcdc4374fc
+1c551b3670c8e72e28751a67de1bcd13
+1c5594d6c9db3432bde9efd85dbdfa80
+1c570e81a3bbf102ee62aa32301d988a
+1c5729c939d2063b05d9a72a1b27e201
+1c5835811be15c9dc99120af3636ed29
+1c591957e0e876ca19a7c2fc8c2d33ee
+1c5ef6ccd1e1a2d6f7350436bb0e1245
+1c5fac493f96a637d4b0c9feeefea6e8
+1c610b6f43bd15ca648b165648c62672
+1c618506efa9e8ea391aa26875367df8
+1c6413b734ac7d14cb2addbe77feb632
+1c645cb553e27f31f9847a421f391f50
+1c64ddc97514f206fda3777d28d4aad5
+1c65b34377434277e505efd75fa75969
+1c660d94756115296340449c7a7e0a61
+1c68320102e61e42792b26610dea46dc
+1c68e8955b7b2ca05215edd7ba875942
+1c6b7761cf524bf171d6210d2eb8c9b7
+1c6ba63c761a7a045526bb475bae8589
+1c6cb45e1b180b6e8543e9f02bc7a546
+1c6d0e0bad37e108c405692a95053bef
+1c70b2f4a393f5e86041637b0c31ec6d
+1c710c2c983dd83979f4f3deef18ca46
+1c715da6de84525422b3096c170dee26
+1c78c1de08231d6c796f55a1bf492969
+1c7b4b4ebb8612c3a74f489f5dc4989c
+1c7b97ad8c276ae98389ed284358d062
+1c7cbd22af7ced0364329e9cb5cba809
+1c7d9078b1646df8d82551d6f32f90b0
+1c84b0618557d868a1d8407c6cb136e7
+1c852428bd6dd65e822f9a077fe39967
+1c8617e3786add95df9976a560e1fd31
+1c886f2bf65aaf547a6ffbdef9aec99f
+1c8cf4d4d88d53bf15e99a9da76a57fb
+1c8d25785d3007f90b358915aa4d1385
+1c8e08847ed0c5677d5d8c3e28f5b3c8
+1c8f92b3de82b73d7faa51cec6a2d5eb
+1c8fbbe22c8752befeceb140a81103cb
+1c9105247c94d44c450a587ae06e6b37
+1c91190a3b2713bdebc8a10f2f9a49dd
+1c919e5a1e92b3c1d60a9642893e197a
+1c922914fa6cecdef19b9b9edd99fa4f
+1c932c9da538d2be2ca5565784797f6b
+1c937c4513b0798010711a2f4e94d886
+1c95073af1f8ab7d88f3d1099d1b7f55
+1c95433068f16677ee11bb629d6a9a99
+1c960239783e4d3b64fec91d68d0badd
+1c96e62109e02ce05859145b47d8c018
+1c9871eb281b045411fc67ab3a70c51d
+1c990adeccc7230cffab0d08cc8ab08c
+1c9a234507c1c4cc095d249756153bc5
+1c9ac3437e7663be7ed6b43dd01f9495
+1c9b7bd554497d2676178fae8055506f
+1c9d33faf8d714dc4b28269f8adade1b
+1c9e2be4e3cb586564b911d0b9920190
+1c9e78ccd0aa52bc57d0957da3f9a236
+1c9f89d4c0809cf8b3826030b23aef8f
+1c9fb833ec2bd2350afca6fa2f97ab13
+1ca0befd376dec7256afd0bbc66e9dd7
+1ca106a669f50709967a135d4e3d17d7
+1ca153b82f15856669a8277f228d7b84
+1ca29dc31bf1fcdc7d5ee460fb56425f
+1ca2f7ad9ac214f45e8ffe8e63fc2754
+1ca40d41f385d8fbdf0733523d5fb34e
+1ca4f0e7494a7beb445cd6dfe4f3c461
+1ca63ac8333cc0712fe55e37dbad6dcc
+1ca7a6eabec7550513ae05e09efe3f28
+1ca7f87cd1eeff5407ccf8eeb193b9b0
+1ca9c427590bb10dc904f4ed435446d1
+1caa35bedf3e710cac098584b3ea51f1
+1cab6431459dd28446fea34f242dc1d7
+1cac317dcd632f4f1cda1d1cb43c34fb
+1cac56c31410905616029c36b660ac53
+1caecb7242d53379a8f530c4ee65a6e8
+1cb01450c502d3616e28381eaeadd802
+1cb1c8298a60ce23dff13c47bf846d70
+1cb1eb1827f5ed15651da7ee49d0a43f
+1cb249dc7d64a73ec89028c8cc87dfc5
+1cb2605f2eaa29fe585e301148c8f3cf
+1cb4557ac9feecec72b1d82ba2a02eb9
+1cb5f6ae2ca3c7727f6354e3b66e2902
+1cbb3cfd12e92a59a97302365a9e61c6
+1cbd10d74af38249f3de290787a89c4e
+1cc02c744668bb2a31cce28a2310ce69
+1cc2b8da4df808ed5959ba717b8a92ff
+1cc61a9cbdad1b3c29c8d3d08913e47b
+1cc82340d9f296b33e8d367de663ab7d
+1cca1fd853689c7826d13076e11e4431
+1ccb62c495f377772133c0c9674141f4
+1ccd3174253b38c5151a5fc14a2976b0
+1cce564d451d61583b1316d9dafff508
+1cce6c8ccf005588ed1c33e4f2d02c7d
+1ccf15ee04a2091ea33c2b0c74b75f85
+1cd135c67b32d7a91fa9d8612028e696
+1cd4851533815d715938f2bbf9a62057
+1cd49b31b147cc07ad8f64d1e3a3d270
+1cd582343b2d754fe09149645e4f0958
+1cda86ceae26b5507188994d94519cc6
+1cdad7613cca75564d946e3d283c85dd
+1cdc8aa61c730aec3cf03955ca00bc9f
+1cde52aed850784ffbdd1f8bdd74d6bd
+1ce01bd2ee96873a83350ecea458bba9
+1ce0495e034c795ce76a0fbe2fd236e0
+1ce05ae891732bce1edd4293de6f7bbb
+1ce0fc97c4ec8f0e1e70ea9c6c1256b8
+1ce206192d3c370cc620a124cbd1f842
+1ce34f949a6832e9167fa1250994ae16
+1ce4eb5fc2a4c556e6a1ab2fb1655dd2
+1ce6d675be1974db3ba3b73900840568
+1ce8cb443fb4eb246dc6099a24448aac
+1ce9471ffd1d5ca0d64e2ace51bb898b
+1ceec969c96112b181f8e8bb9b7e5bfa
+1cef5521ab9232d3edd4303592bdf23a
+1cef9a3a42e00cab5620cd59e9504bc8
+1cf16bfa10877e3181dc136af7bfd4fc
+1cf3a97b0cefd7cc2126e7f58d3c1f70
+1cf633948316db9c050900edbb44ea97
+1cf6e1a8e5997504b32f5ad49e216d9b
+1cf72a5afd59ae568f567357a2c86b9d
+1cfa750cbc3b139b5cab805ce4f0deeb
+1cfcf8e2fdab2e8de77cd41e45f85b4b
+1cffad53194bd4abfb7e5132e5771b35
+1cfff3025eb455c9d28875ce4878272e
+1d0002bee9fc96e46cd39cc74157b741
+1d03362dee7f9c248d13a60c238d9be2
+1d0351733971efd5d4997832eefc84d3
+1d0495441594494ac82eb1881a6532bb
+1d0498698487c500a31ca4245f1593a8
+1d071a107f7677a4b94f40b2637e994f
+1d079053fcb32eb03cdc862fbcdfeaeb
+1d092bd037a380d6ea39ded54a596d67
+1d093a549c4cffa9b472eb63fcf54acd
+1d0cf553998c359bf882a2751358ff05
+1d10529d9780c6f62151f37b2cbf0394
+1d113f1a32f4313fff0f6aac13c4575e
+1d13879f181cda3c1d452576445680fd
+1d15dc7f35d3e44a01685a123be846ee
+1d1648b96c8286c6bc58906d706d71b9
+1d171c410a99d0d48c287781c25ccb99
+1d1c14804e828f094bcdbe1676d65230
+1d1c564c7540e0e9ba5eee1b487a28c4
+1d1e5b5369c5734f2ffd7f971b4812fe
+1d2062f30cb83e5dafd52d1b42e73c8f
+1d225aa4613b8343988fa9c42a63f7c8
+1d230f76154536dd1f68ab2f9d94553a
+1d238025a3b090db7ba09b4c634eebfc
+1d238859f08a0bfdbb5dedf454fb092b
+1d24d74db016756e52d91244da753818
+1d251fd31f0ced1e680e97084329d84d
+1d2539d3790ed747e27ec19ec3c949dc
+1d25762d461e3432f5f5e781615aab16
+1d28843db641dd89ca75b98d70b75c7a
+1d2a2fd27591da88e06919e17b5a5772
+1d2b64367fc03f3647c7aba242e5a4da
+1d2b6b00d8438aecf98c0a12838cd04a
+1d2c7d438cc938ca3d6c9ab3db455869
+1d2d12c87e40876ac98042e6d299a9e8
+1d2e923d5aec3f551f1af6687d91bd06
+1d2f1fa013cffa1c95f4617f01ce96a6
+1d2f6fa64f2fd4fb9e7b6a531831cd2f
+1d2fbaadf1cc3ba6033c8ed04f354980
+1d2fec5a6118b6e5cce4021aaddcd2ed
+1d3069bd317786311e959fff589703b2
+1d330c8494d0d2ae55e4334d6300bdc0
+1d3390f3dd4d30eaf8b1795b40db4b89
+1d34fe01592723f2afddbf5273f95d65
+1d361a1c50c7fb15998b86352b3289f1
+1d3b3bde5ac4ff8739942eda08fb33ac
+1d3b640ac93d13ea047d904487f0b2f1
+1d3b6e555acf6adfe9cb5c7390df5926
+1d3cb2f96d7c3e8e3bd2f5aca1296b2d
+1d3d1b31e3694ae7ed7d7b05fface405
+1d3d392222fa55a3b7ddc164cbfbc2f7
+1d3e18d89b0e3617b20e0060c7a1fa0d
+1d3ee6aaeb36b1b6973bb6d074d3209e
+1d402786a878a11d73b5db546c2ccda5
+1d41a6eb4f9e4783b2d13cf2d6da6950
+1d42e861a607f14727b5af1aeeea9b71
+1d438da705fc6782669e900efbc540d8
+1d46a46a987be1c8c5542a910b513a94
+1d4842a12ed092f5aec8494383036f0a
+1d49727300e7f19e60121378a351a87a
+1d4b649158da2ee150cd332bc2f2ae6c
+1d4ba5007e9cc64274866f20b41f9164
+1d4bc4df92556d8250a907697352d15e
+1d4f45d4acf1bbfd4827446a5b91ef61
+1d4f5084c9eceb6a63a6a74a3f7f8b42
+1d510797f917244e94973afccbdaee31
+1d524d55e38531ce0e3331713d85ceb2
+1d54f169f4edcfa01f4ee7f7b1287a89
+1d5910e53c160142feabe877824eab2f
+1d5a6f8c98e54b657cc89c2c344bb03d
+1d5da16226e76fcefe39b336834f0628
+1d5f7c1faa84d8648a979a6ed8fd0c6a
+1d61d660e84ad5d604537d251f0c3650
+1d62762472ff6e8d53e7b0499f7026fc
+1d63b39c2c9b57565a13ed1d25d95767
+1d6424e25837d4afb6cbe38b0e7be785
+1d64433723d1be38c672659fb40d7eca
+1d67faf81e82e8b73ff431536e43a761
+1d6b0fc08c47553a03d0c7e78faef0cf
+1d6cc32d07654cd21de1584f36aaee8a
+1d6cf294441079b2c511bc642c012b7c
+1d6db69c4426fccde44471cf5dd99953
+1d70339ee35bb1f21f522566b5e5b13a
+1d7184ab8fa4a330f79a0f254010d49f
+1d71c4c69cab3b9d287afb44d2e8bfc5
+1d72bc3c8bc4ff777b14b57fb19089f4
+1d75c3e5c64d36238067934a6b5bd8be
+1d77f185bbbc9990a08229e2178c9d1a
+1d7caacc961f42b1a4e65fc56c65ac30
+1d7ce333c207b65980f057f979b96302
+1d851d88ee3f8f12282e8ac34c99f0fd
+1d87116bd7e822c9aff46e1e4879ddfc
+1d880107a362c8e51bf97456ab9b99b8
+1d8911cb4f14a04262a268055887884f
+1d89203ae2c5d8c55e65013e3fad0bcf
+1d899cc66e0c0168c861c3c8c230893b
+1d89e1101e1c5487792d14c3a9a347f4
+1d8be696b43ad776dafe66c0a23f6f8b
+1d8c247e0cc8c865d5f048c9263933f5
+1d8cc91e7338814d3d22685491b8fd2b
+1d8e8854d2e87238703ce83f6f7f605e
+1d9036bde2b6164a6846fe5ebb133492
+1d91c3ae6be0740f55876cca0111f9c6
+1d92a0dec1df93b48ddf595638bfd586
+1d93724eb1e515074b1651114d9245d8
+1d9724b750b0fa2c2a34f6786f07b639
+1d980f1cbfc30b9eea016167dced928e
+1d989feb437fad2b2a0f76c7aae9f1f6
+1d98d6c33b87170ef38fc6e1d8b2392d
+1d998d315d622aeaf10e54d3585fd681
+1d9a1987c86814018fb41843b209bc60
+1d9c43b62fd15c4f4b0430498564f8d0
+1d9cffe03f81a2bfdf32a739bdfb26f8
+1d9e1664dc5a4d2d4898647b617a4e36
+1d9f1afbe0793fdf9dfb526c4675ba1f
+1da0ff3e8fbee38693012dd6c906e947
+1da3d71c665b0aadacf8dadae4d4b0dc
+1da87f910aee8875e536a19f9fec7bfc
+1daadfb95fa886ce83e9c457b718a933
+1dab43a2b69dd8ab95a2ddb66be2cb56
+1dadc146b6bc628c1d66c7071e2ec5ac
+1dadfc5880d03d1b370ace5fb5780f6e
+1dae85d53e737bd8a34a948f265aedce
+1daeff3663e930c9db176344c1c65dc3
+1db342d235729696dcafd2eba41db532
+1db5d630f291c3bb4b5916cb909b3b64
+1db604f0b901a211af979cf531431c84
+1db6db1d28cd82d66cbcc61d8cce58ae
+1db912bc2322243cbef3eeabd1f854d8
+1dbd9204b3dbe80fb19a28db76bc317e
+1dc04184d9a3ee36d514c03462f88676
+1dc18389cf4c46668ec0468974172683
+1dc37f47adf824ef6d85dfbfdd8091ca
+1dc7ca56902099e959b11a9114e520dc
+1dc99153261feaf63cbf5dc9f782ce86
+1dd21410a6a915a0c52c6484922d361a
+1dd24ba91686e38ebaf24820e2cc732e
+1dd56b2516f6660c88f5c4a2bc93e962
+1dd621566d34b8f407d25e44c2878305
+1dd6db0fbff1da7c2f47ff9ecaeba7bd
+1dd6dbf0f3e77a1b5bead414cf1fd533
+1dd70d8cf4f829bf9eab4b941b03917d
+1dd724add6282109fe6c7650595a7a73
+1dd821c4213534f2c35794b02c21eb62
+1dd9f53f8c2332c1e8afac00fa7aab61
+1dda0b5d21db9669973171e1f4731a29
+1dda77d941a371db08225de31d26b5ba
+1ddac830ae42253bd220bb5c593e8f40
+1ddb0ff48979909c18123eeee432ae59
+1ddbf044929e741a477e6f7806632bc3
+1dded8133901ba1832fc4e353e4ee979
+1ddf5a20d5ad85ece178caa7308b9d19
+1de056f157add7feccde98ed46edd290
+1de0ea915c68eb5eb1e476bd3c361436
+1de0f4842dd0d2e790de6aa160fae595
+1de18c012861b7bcf4334866cf41fbf0
+1de33607694a3b9be33343ff34f6b291
+1de362cd4f99288848567602d594cf8f
+1de41987101f4328ee4cbf753727891b
+1de536456b36a338714a142ea74d2714
+1de757abd8e3421aa7330950f5684db7
+1de7e5d935426fe821f311d88e8e0058
+1dea1c747786f04c98b87605b54f7924
+1ded3f1d93633b6b93bce8da443dd357
+1dedf4019e30e71e60406ec7f3b8e5f0
+1def12276fe95a74b8345b116a3e71b2
+1defc991dfd4c163e8add52ed6eb2367
+1df151eab9c79de098d9def0916e1015
+1df269120c7a5cd845673260c80e2ab8
+1df4142cec051bc7e017bfbd4feea67d
+1df7211a6486e05f99d5a7e2142fa3ab
+1df7c7ff22544e1dac957ce8779753f8
+1df7e45b973602f8a0af90814c49654f
+1df9816beb7921f1ba402d6f2f18d5f4
+1dfb6b20b824ef66288661b0af571cad
+1dfbd454ce4ecab50928f0c8d4476fdf
+1dfbdb88d137256ea6c1503944d9155f
+1e01ce3e67dd672eebff9b5b17a96ae6
+1e0297bee028ac32910301155e420786
+1e060b692bfe9be39eb21e8fd16482f8
+1e093a09a24e806386acfcfac608f429
+1e0a5a5dbb2041e52ea407ba4f533dc7
+1e0e7fdbf75644aa0ed1e3e0b36906b7
+1e0f80e16ae145434f8c411a8e2025f4
+1e105bd7a238e6451f9a59851bc6db98
+1e10e07eac2601652f77c516469045f1
+1e126c8eff08541310a02e1acc7f7cb5
+1e131d03f8c0c58b53bbd9a0b73b77f0
+1e1328cc61b477c6c7c0ad130f1c561e
+1e13735c93a1170d3592f574fddfad63
+1e13889a631af76f8770b148f3266c1a
+1e1427bfa001519741fd093b69b97349
+1e14bb61524e306e8e4d95ac6f804141
+1e15ba30356820a7aa4d9946d71f068d
+1e1756ae766533f9eaae2299760b242d
+1e18e91eb55adfbfb3b88136f17aa9f5
+1e19b85e5e88595d389c98d5ef068bac
+1e1b2541e319d9261ed92f0556bf8d14
+1e1b8961e849e0ca3606beeeefeb7c67
+1e1d3bae00f7e46ba1e8176370050356
+1e1d7ce359defa536a21bc44100419e7
+1e217870c90d609341159a213004b0e7
+1e21d46852ff85c1c99badbf74e937a1
+1e234eb8192ff68760264825f41d5a5e
+1e244da488909b6d2cced1714572bec5
+1e28476e99f08ffaea9957a6e81a40a7
+1e2a5dd5dd581d7f697d049aa6cfffe4
+1e2d473d061b25cbacadc8e81b2a737d
+1e2debbf7325a740ffc65ec5b98058a9
+1e2f742244245e5871bf0ace38fcfb56
+1e31dd6fcba2342d1a8fab6b1b6cf809
+1e32ab9f89e19ffb3c7ba2be326def2c
+1e368b09502a2873202703637faf4589
+1e3742b2b5b20008e07594c897b991b0
+1e37fdbc54533cf9caefb4f92d701ba0
+1e399eb6700ea4e9b7cb87a915e443ec
+1e3c02baebbe6bc98479d78956434e93
+1e3e0a38e5516fac4409fa9cb14ea4fe
+1e3f07e2a69769822afd77b8515f13d3
+1e3f68f6c11bc97add87d01b9a8ca075
+1e3f9f5412761923a856b28ed16bc5e3
+1e415be6d5e0317cd67f68c61ae6224e
+1e41a9c821208f4af7a957e3812ad77e
+1e43313fa63d297fd45f96477a83354f
+1e45304e0d2afd096a64f2ace258d6ca
+1e47574802305db99ae224a79458d9e9
+1e4ac082845408c34dcfda95d2c3853a
+1e4c3b9aed6f93702643a6fd87cd2867
+1e4d7ab62a626d55209af7ada24749e6
+1e50270d6e6361df5699a6b258e6869a
+1e510e3ba2964d70fc2ae0d83d29f296
+1e51638207155f1b9574f6b635b5a5cf
+1e51a9c1e07bf115236a811d7f56fc38
+1e52115786ee065437dce76f88a10151
+1e553bb9b50526a9c59f30dae9eae9e7
+1e56d548da89820cee394977bd9bd08d
+1e577d39f965b1bf653588f8fec312f1
+1e5927de0d931c36b8eb739df70ab30c
+1e5a03571a2f8f8788096f06f5c3f683
+1e5b3f36585cbb6104b5fc3779b3dc03
+1e5da5f5e55547c8453e0a0fbe91e1d3
+1e64c4d325bad7977fc39ea0d37e3c73
+1e652a9a60a0b3ebf91ca4496f161282
+1e670055b25b7f61fe3f15491165836b
+1e68e3496605145b6c9db9e5ef4f31cf
+1e6b7be0d77d452c1dbeb099528c1ce9
+1e6d9ca2170432cb1be1ae70c656440d
+1e6e7d418eb089c86ef2660c626b671e
+1e6eaaa5ff3c86fe6af62693a6d68fe8
+1e6ebe60d467d8d7334a5cfbd9d88c40
+1e7114a14275a88ec288dae33b2a7f8b
+1e72afab6ab0f4309f37d9cea65a41ad
+1e770928403295f39787476e6e21012a
+1e7974041443baf74d83e32c3d60321e
+1e7a9aebd82501a2e454b7ebe3a04dbc
+1e7b229623af66dab3543e37427ff9c3
+1e80544bdd8bfe53ab2c9e6fffd52a83
+1e8551fb74cc4bf894b97069ce846660
+1e877ee8ee6c5b8de5aad7e7cd53669e
+1e8a59e227290ec869e4b039bcfa7554
+1e8a719dde67b68bdd2e68cc285b862f
+1e8dd2a72012e0c3f3f7b6e3af1bdab1
+1e9023e21405ea6d35a8120f8a5ad3d5
+1e9059a262fc537c8f19c7a9b278d771
+1e930ef333afe16c3ea26c10e3fea39c
+1e952e353e4f5059ab3dfade3f7e1f85
+1e97950bd94da55f14370a0621222f1d
+1e9a04fb0606837757ce1f54f9502d8c
+1e9a65b03009825a61b7f1d8ad69c31f
+1e9ad85ff554cc626e469f94efd8c0db
+1e9b9bb50dab683c7949fd8f20f601c2
+1e9df6a45963de6b6fc175fd5167f08e
+1ea168ce8ed19889dfb190487cd9a2b6
+1ea16a31e720d66a4409f4d7f8343655
+1ea321be9ddcece88323666ce634b518
+1ea38cce509c37cbb281d67c72990579
+1ea4c69fe4572133e7e1e438d8a29c56
+1ea57804ba679f60f5ba35006e9b5156
+1ea5917117a305105dd0cf1337d2f6ad
+1ea64d96b09ca035cbfeb33bb3aba17f
+1ea682506f577e3b1c0dcd67243b13f1
+1ea731e70b02b7f5c3ac9bf856c6b2dc
+1ea86bb5b52e2f8d50baf69cecf93d8e
+1ea8bd89f2c3bf3c77f4f264f5059f12
+1ea93b4b2a7bd97f329bb9c41dd38f9b
+1ea9481880f607bbb23343918083e8ad
+1eb1646b28162ad4e57de05eb1bf31a3
+1eb2160221cd2c9bb9785f8f0820b5b6
+1eb35c978c409aad2787229a2d9cc99a
+1eb488ed6d363c6024693036fff83833
+1eb5102557d8672689a5198824a0032e
+1eb5735e68b5a5d0be1876a336904235
+1eb5b3d18a80809077176b934d3ef4fd
+1eb7af774d4ce0724c4c52433b02f358
+1eb801b4833ca880ffd79949a4ac4551
+1ebaae447b543c36e5bd95e739cfd51a
+1ebe8a028d8e702a0b978881997ab9d9
+1ec2cc2dbc77269e3ce151c3517f8a43
+1ec642f8fbb3456c881930c8275bffc7
+1ec782b814c544453ac1f908a19df12d
+1ec8a3b22b9c77f02f0ab3cb25b146c6
+1eccb3fbc37afbb79b6254cecdf9b9d4
+1ecd01f763f5b00d23308d24369896ed
+1ecd12745777ac67b8231f4720902357
+1ececf71549baac066d61440b57299f4
+1ecf976041ca155272ab6ae013dfc8ea
+1ed2f08bf94c107314b8f8eb7a576fb0
+1ed520bd9071003c845f91565e68a48c
+1ed7d04497aa7dee308afad340cd490e
+1ed8225193b382030853e6e9c376cdfb
+1ed8817d5a9c63e14e3b6205a0cc8bbe
+1eda168ba3e974f33d025036fe7f2704
+1edc8beb63090ac1b4e22ed775019438
+1edc995e933b0adee43761e7163ddf88
+1ee1d905afbbaf239c062f7aed05971a
+1ee226479d8e600cd32246f8ef35b53b
+1ee3404f0f9d964a1a30303b1577a0cc
+1ee50286387f81a0edb45a071809b6d2
+1ee69f01829cf9b900a4387daa6acfec
+1eeb43f79d34e5718c7d96a1fb7c05fc
+1eecc10b28c2c25713d55138ee71556f
+1eefa30a405be0d9a62d0dad0ef5723b
+1ef1a84f486dd0825bb3daf6cdfbc28e
+1ef23cd90c7c02d7fca0a65572cd52ee
+1ef6198f69484acec70746c6fe730c2c
+1ef67d1df5725e2e99539b1fe0a305e1
+1ef7b2f934d2acb5185c6dd22d6dc455
+1ef9e0327c688ee3f7339ca03b440ef6
+1efae3558c1959473c864c7ab5b65fac
+1efc62c577518ac4ebab0b04d3617f5a
+1efd2595df28fb32c80519066fe3e7e8
+1efe0c2c6a063c694c40a286f66939cb
+1eff1a13b0b03b30a7193bad98ec22a7
+1eff76e67ce064e68b150f8a3cc022e6
+1efff837f20e76b3af4dce1da1d3a576
+1f0046b6cd5422acfd33770207d233d7
+1f037c1570d08c5535f519345cb090db
+1f03f58d9c5fb2b2bd8aa7967687df26
+1f049d139efaa17026f6f8904036d6b2
+1f060079c0275d6f679a71e32b38eff3
+1f0cd802a6a3eebc4441d53aff8b794c
+1f0d66b723edc83d56ebf38444c7c8e6
+1f1100bf4e86aa6af9dca73aaa190813
+1f14ca48cde541aff0df1094f8def770
+1f160194fab2a1c32d025cdd751fea50
+1f16d7f270b3d636283ff9f0fe337bf6
+1f17ed0d44cee08003b11ecdf67d1b7a
+1f190c7faf3962f1f33f6cea47f6ad0c
+1f1915e834791b812de8c0bcc98fddb9
+1f197299912158de89958ea053da6a50
+1f19ccec4f55a3ca8ce06b2faf7fd68e
+1f1bf9933892d08d8f26ea84dbb92317
+1f1d15890a5645b58dd16c7a60bdb1e8
+1f223440271de2cc16e8ceb1d8e6ea6f
+1f251840b50e6233df9fa126d5f768ad
+1f25672951d3b2383024840476676a09
+1f26e4ff1b641a643c5fe91905e0b43b
+1f2a6174e454dc9a3cf6e0e55329b5e6
+1f2b24f2abc92d254ba82069ad8166f5
+1f2b270c65d3aba969500232685d0033
+1f2b87fc650ff9f6c8498231e59c34a7
+1f2bf3145738bb3ce94d61911148101c
+1f2d2e52a3cbc23c7d4807d224aa1087
+1f2df6074ca765dec51c78079ad98e78
+1f2eaed13a595db8671dd93c24de79d9
+1f30560d1ee43d0c3e5a8bf2965660d6
+1f34b0e8947185a35569e678a7059b3f
+1f34d9722f95c00657777c2a119d5522
+1f375a30ec136fc6cb9ecd907348b3b1
+1f38c9312ead655eb9f306855188ff9f
+1f3a2b11291a4c47678b4b59ad951c29
+1f3b5947ab49291b18603e63b06a2996
+1f3c5a04b3d5ed4e667cf0e4fa4bdc99
+1f3c7724d1e6a1206e8f4842d260a9a9
+1f3cd28472e1faea10cd65bd2b2be7dc
+1f3d84d7562ed87f4acc648e7f3936f9
+1f3f5157b2bd4b065463fd60bbe1515a
+1f3f99b3ff42831d0c28361e6a93d74a
+1f40bc7eeb38233be81f9ac2245ebaa5
+1f410225c202c1d3562f7e602a81615d
+1f43a543b36eea7593ab5949c94e6b85
+1f4607ecfa8af6e93f86a2619ba0836f
+1f4dea72fddf6c9b2b54129ae4abc37a
+1f4f6ab4ec96e0abaf4f20970847063a
+1f4f8a4343328d083f652e1da31790f3
+1f500adfd6fefb72863290ac89b76492
+1f51e18cd6402138cc6482f53a4e09ff
+1f524f52308164ad7776ff19e2cbcb11
+1f53cd4a9882d09d7166287fcef76a60
+1f572a02a74724dd2f42b33b2a253627
+1f582e9b2054a97beb010d85c60f30c0
+1f58b93fe6488dada0cd1afcbc46f5a2
+1f5a6ba0281ebc175462f82f7c873364
+1f5cebbcb3842e618f74c5170a002e06
+1f5f8a866bf173f8fd0f8da0dfc8aa0c
+1f61cf632a076ecf0d9dff5fb8b86434
+1f627025040b65fc663602cd2164ea24
+1f62fb3b296a233603c236a047d48e7f
+1f635c581825f870f7701a70fdb0341c
+1f637206c6e9fa14759fd616458db31f
+1f63b3d3a035fce7dcd90d800a589b33
+1f652e556a306a0c92cbd646e182a02c
+1f653e87ef27690ee6860680bfffe413
+1f65bb2eb5e57613e896db20992ef190
+1f65fdf7deac4ecd7d5237e984971600
+1f677124d236a045d81b4a8bd85bedbf
+1f6c39e2dae45d78d866b466dd55003b
+1f6e99b3e05a25685eb3c782252b4166
+1f6ebcda640825f9b7c13fe00a99c47c
+1f70917b1306deb9799284727f17ec02
+1f71a91300c1abd95b4bef73f5afbc53
+1f72eba089bd6464e743ddaf5c85a1d4
+1f74ec564a55ebcd53ced60aef7db6aa
+1f760e7fe95ba7a59cb950b06e22a1bd
+1f799fd6a798a8201709988163786789
+1f7bb01bc5b86cb1ec8c227393c1d769
+1f8403467a2e3873c93e56d7d7540fa6
+1f87a2b3107ab515439bee42f107ba84
+1f89282620b1b47f9a91710eace37ed0
+1f89b8de69114b5347eab1b917d8dc93
+1f8a22dac8684a05991ac4002b84eb3d
+1f8cf64d9e7bf652ca0385b2783ebd2a
+1f8d8fe3327e3b91cbf8aaa7a3e88ce3
+1f8dcd3231f71c3c54c6f1626cf820ea
+1f9469c45ee94922a52ecc0a6b094a03
+1f95f0035781c0a8238260c1f2cbf19a
+1f96bea5630022240276933df4b8ab82
+1f97207ec7531a82e828582529323c37
+1f9787a30dfbff8dd79243076ce83920
+1f98bafc0b8807913074ee2610c6361b
+1f9a3554b9fb62157c3b777cd71588df
+1f9b381dadf709de45a2ba7aac1894d8
+1f9b84e40df7a4b32318397d854ab2dd
+1f9d8345e2244b4ee2c91ade3027bd40
+1f9dd500607f2a6fa6b17f4473def65d
+1fa066f5538da33cc68990a5d853ff0e
+1fa07653f742ce884cdcf44eaadd868c
+1fa193984284e740fa9188ccb60b140b
+1fa19e91efafae067e478ff9d902ac55
+1fa1a959ed32118bb46b295cfb9bb90f
+1fa239fa417be0afa0743b70f3c9432f
+1fa353b33d1295bf35ce85d3b4f3b7b1
+1fa4bc65b1a3ab94db7dc47509bfef0a
+1fa4d9e192fbb1f457731596d69aa1d4
+1fa8eca458771e4511bf2790d4cb6c07
+1faac104ab4f131de20c572e2d02b2c5
+1fab0dcb6a36c2e9989be16f52269d0d
+1fad6a5e098a087629e0e856d487b8a9
+1faed7de2141e55b3b7ed384b8d1fc7e
+1faee61d946b8eee8df9496a1a4d84b3
+1fafe839449f3170c50e74bdd2decf97
+1fafecbe6340890b1441b90ce823246d
+1fb00f15838330e31d54c46575fa927d
+1fb03df92e1354b1baa16b5047d76d89
+1fb44f00e3b75e9b99afe4c22a728833
+1fb4e04e8cce12c2a9e9d4a06e18e942
+1fb551ab1ccea36eab643176b69ea606
+1fb7238403e1fe0ef5799ec4a3a70c6d
+1fb74db5863462057b4cca51d72c127e
+1fb997b432f2e9061fd03c46ac4cf557
+1fba69c6f45869d5d4a51a95ac9e4ac1
+1fbae129c5adcc3e0ac9da6a24437c61
+1fbbe3e063fb2f94c2eb2e79e8c7aa77
+1fbe21c3955f57aabc1947f24b9aff87
+1fbe3bd6ebe509280e8038319de6e2e8
+1fbea2b833320d83c6dcb3846a4cbfe2
+1fc14964a06ceec334b6756138012a4e
+1fc3c913a74a9e3dcfc0237d19d5346d
+1fc44f6cb9acb21c1d6e301bab616db1
+1fc4fb26f96dcee4c6ef5e2217bc8b0e
+1fc56d40897af19058724fbc04b6a1b4
+1fc5cdc590cad9cb77747d603fb702ac
+1fc636ccbf7a8371cd2951150b8942b8
+1fc7365e7d15bfe3a9053feec044e5f8
+1fc7c321cf0333621f2e0756fd328feb
+1fc888f07db1f2dec62d51a6d2f8d59e
+1fc98dd268fa3479e89580fa5d8094be
+1fc99ffaadd93941fdfbbff16145ec39
+1fc9dd836297f81c95b956305fc13799
+1fcb3bd11b23ec65dcefb12cd9ed1ba2
+1fcf64f835994afc09ae84064e4453bf
+1fcf9f7ebc0bc0081d54875439dfdec9
+1fd05faa6f0d84187ed38144699c288f
+1fd0dc463a6a66ee1061b0cc71300175
+1fd42dcc37c6ae8bfb6e81858fdeef6f
+1fd6e7b77a842f15c68c7935fb740116
+1fd7bb7305292bfb8353984ab8d3878c
+1fd8935b393ebacc37208071bcadc8a6
+1fd8fcadb7a006a56d7ff2acaaeba37a
+1fdb0772c8de5ba749476ea582a2f612
+1fdbd832a7708581f3a79fb3e249954e
+1fdc738fbea63a0d36e822cd26304b63
+1fdd51882eeadde0da7c447fe73dd5aa
+1fde82611438429d6126b29bc03c32dd
+1fe08a7bb79ee893b007896fe1606ed8
+1fe21ccd74e6a0438954d315c3361987
+1fe24480b788af42cb93dd86cd31718d
+1fe25d4cf3901de469c6f131cb96b53a
+1fe26cc17f34cd49d5e07fdd9e1305a5
+1fe2a56865e9ac003c15e8b74d3a4e35
+1fe3040a878d88cebfba57361fb873c8
+1fe605db32fc31fc71c0efd273a52731
+1fe65f4d6573e6c88114fc41b2b25568
+1fe71be1e9f1c2fde4282d8c1444fe7c
+1fe71dd6e0a2fab1eeb6cea1977a268e
+1fe9cb0bfaa81d54bb6fb214c0360677
+1fea5eeedd5f3b330dfe8e6b323bf42b
+1febb0cbc33564f1abcf877029389b3c
+1fee62b9a5de5b338546bba878a11de4
+1ff137581e3f8cf44c7b8c48fe29d968
+1ff183725fbd56e3e3415a790b6626b2
+1ff339e1c64930531242dd12d28a99e8
+1ff694e808e1086f0750f54e91f1a89a
+1ffa6da053578743732d22b64d96c036
+1ffbc23bdde457759a482961ffc5bf13
+1ffcba1bf87a28d40f48efebfd54c7df
+1ffe2349801d5ed45c7d0f8125271b19
+1fffd207391cace22536798982575d32
+20006027dc6c8e874a6e3fce657d33b4
+2000af510b463c1b8d01f2f57af431b0
+2000cac5beeb011000593f38d5a58d84
+2001a35d123e58891736e86a483c35b2
+2003cb1678553ec1bae3676c736c2829
+2003ed2266406e1c0226dd5fda00eeef
+2005fe94525033dbfd9e7de8f8ccec6d
+2007a7883f72e5ce357d2a2f32474f2e
+2008a9fc315738689a00d51a13b74766
+2008cd54bf837a8a9ccefd521e4c9c01
+20090c5c1a1df4c4e2c7666765788e95
+200bac8c26201d7d30c79d9b3c8bf886
+200fcae2a3f199e8813470f3f1030fcc
+20100d46079aa9524e4b2ac6e68ef4b6
+2010702838def8e08e93c2d70df78014
+20114866a020a5c0bfc31cfed4c818a0
+20119de668caf13b4e0c1abb9a434c63
+2013ffc0383bbb71c3caff9975934979
+2014d22b3bbf71676a58ce850a47ba5a
+2014df5c883a37b23b52be918946f679
+2014f5b437d0f8c8fb53d39b504d2244
+201587913f2237d85a529226132c6539
+20162abed55d315bcb6254ccc3484b0a
+2017f2a48fc00ea2a68388cb8dc69259
+20189ee29f02bf6b281771df2109d07c
+201a8a1c94752c7b8b2f9330ccfa4e86
+201aa191255c33d670d71e1aad93f267
+201e8ce91cadac3cfc11c556770cc992
+2021818c83b69b0583ad09aaca1a4826
+202323a2145dbfb08586abaf63b9d686
+20254c3a8a11019219b7816e2314ac16
+20287b9ae50d85e4289f91edcdc70c7a
+20288b71407f2f13eeacbd4b88eeb3f1
+202a59269d2a51c716e8a71587de5d81
+202a8b4b8c12a4922c4fde3fdb71adef
+202ae6f0e145e8a9323db327579477ba
+202b99966e26b61d4c68f222af0435a5
+202bf0791ecbd1f881cea7afa2398fb1
+202bfef6e601913de679a21048a6de91
+202c14124dcee02f37f7b91e095c7c30
+202d9d07995a89fbe725b7f7860f8687
+2031ea200b54a11819b4e0260f18ffbb
+20324dffa03546b264f16638e09ce011
+2034b9fce7627cfea69eb1f3fa163295
+203568523b296f9da900166cc517584b
+2038239340f5e02b7979e318a88f0427
+20392ef9b7ac54af49f27b23b44da158
+2039d34e3f3aed4596336e9145087430
+203c468187df8cb87d558156e996281e
+2042819f3f628760801e34e48decd14a
+2042cc1ee8a3efde50831b7158c77b00
+204640a0cbd1456de2b632d1a89c1e12
+2048582bf02fbf147df3f09d9977afcf
+20487a342cdb3d5a19d00e0c601c141b
+20494c3788e74b5ef2767dbe6c045da4
+204bd7e4792c165cad56a096c5a92644
+204cf58d7534d47b943bac5420707e89
+20511cb1a2dc598d35f3e7e1f309a558
+20524d35be88c5f4ac49ad675f9a62ed
+2054159360013eaaf7038ddd21e6a4d7
+20571419c41c5a461dc56433e982caaf
+205868d515e04e9e196ad833dc42104d
+2058a017a3b50773f6544503e2d6527a
+205a384f3c9a51fff67bae01a6f0af94
+205afc9dd9b2de8797d4a4fba5bb2232
+205b5fb3dddfaf577a3737c908627e7d
+205f1a028588cdb1f37d161f65cfb19e
+205fadfb38079faaf2247f6bfc221329
+20601dbf0ffe16a3ea046fb839d37856
+20624abe77a5e0166591d43ccdd9733f
+20642b6aab5c3640ebb1a251c38e8f29
+20677be66874e0c1f63257fafe99d66b
+20685172478425820139bd57f88c20d1
+2068d1c4197b97732f31c0cfe2d5dbad
+206aa967e88dd8371103ee7aceaf1f7b
+20727b841faef8d1a730e44f5254ab0d
+20732b7fd90a65069e8d649b8e919ba8
+20746ac000f9f6859708e28a19bc32fc
+2077d3982c34355b4c88620b45f76f00
+2079146e3d95825ff6507d16c8287b75
+207945ca6be6e1250831830c63b4dcb3
+20798fafeda6f5b3d4fd0c0664eb326b
+2079d44b78beec6e38206cec349d6857
+2079e24da23414d76155da0072ec9b8a
+207b50f4d1a482000024099ffe686e46
+207dcf29afec40dd80fba9e5aeead9c4
+207ffbd8ea09928ec279f5c92be427b4
+208117fc123566fad78975d6f3415157
+2083dc9b40351f155c5570552582dd9d
+2084998f1a5519d0c1ea18eb760d22f7
+2087861fdbc74a62ccde714ef4b46e4f
+208834852f0ce19041587a3c76dfcb0a
+208859b658cbe209ff83ac1a57f4027a
+208bf175b8a48f722585e42b317c0108
+208c2270bb8d20de96826e3806af7346
+208c682e1edf57062345f5cefa033a92
+208dad50e08591c182bf4449ad24469a
+2090e747d9f7e13e747d4daf84b259f1
+2090eaa8ca5113c4e25d992ae0f1ef66
+20911611081e61aad3ef8034a57acad1
+209131f8c0a307c0d382070d081adcde
+2091975f600da36cd57572961dfdba15
+20929e5ba39b5addbd75f860117c08ca
+2092f047d2cb02a448c1286e74e12641
+2093238a89860a433f2af0ac0825430f
+209664647ce54c6792d499f591fe3458
+2098a79019f7a7d232169f542c66f212
+209c20c23f6b4acfeafbc0f91cd5deb9
+209f00a4ef5ef0b9b643e38ca95cc8c7
+20a0bc583849c3637ec32fdace214ccb
+20a0e6951f6c82ae863c70a82649c6d9
+20a117e375d6b9599b9c4fad75aa7513
+20a2159e2ca038a849c724c24f82fe86
+20a2303a3828632199cc218a7fd6e7a5
+20a2b6aeb3c8919f2ef94cf244d0b17b
+20a2c57b7178cf165df37b8768c828fc
+20a77904a857c4c008f171d982da63c2
+20a9196abb7ce0a15aacf7420fd82d5d
+20a925d617b988a4dd7c53b11a288880
+20a9e857d826265ef346add15303095c
+20b0f88a15e2deab21d5a14d6a91eb7a
+20b11650ba84f35c485b95289a513eb6
+20b1ca27e7fcce228155e2568b1e68df
+20b244b0e940076e51d21823b68803dd
+20b47d598eb52bdfa561dc5f7f8d0db2
+20b4be5cc40a010f65f8e15d0ac4a47a
+20b5d00d0250e34c3b92273ebe8d9eb1
+20b662c61d93d4a036d0b2aa93264083
+20b68ef46bf41d15c3a5b3c28d14496b
+20b986d0c9f6685894cfdc04a8d08b93
+20b9a5a495f4f11b08c6a878428b253d
+20b9ad4cadd3aee0387971861895a6f9
+20bcb5fc662f506641d99d185110c334
+20bf562f3ef2efb63d53e524993499ad
+20c08414aa30af051bbfaf1f23e1ca3f
+20c0d417b251bc28bf680d1cd526247d
+20c0fa0294a552fc7a52e7e42c8834c4
+20c27ade1612e6044b4152a14711a5b5
+20c3c7b77fb89ca2fdade9d3b91256b3
+20c5702e9be2cefcabdd609d12aa7d6a
+20c8d783df09b7732205eca0ab61a290
+20c8ec4638186311588ac1a2b6d936a9
+20c9e0ec721bb838e3e72e5f5b816351
+20c9fec53c4d0a7ff881696ee093c9be
+20ca76a6cbfc04553902d48cf19e7ce2
+20cbfe99d235ed8aaa3aa5d5b6653a1c
+20cee65ed345fccd259360a26a41ffaf
+20d5434e9ba6165227486d831425a15f
+20d76e791ec077c792fd99f112be74b2
+20d7c075eab14ff987d5a57be94cec63
+20d8dec456257214a88ba4dd86e87325
+20d8e97d887542aa0dc67b6a3bfad044
+20da03807f091b78fd3b9fed300f467f
+20daaacf2a1570fdb14553a1e7869d4f
+20dcb4722d15b6b8bd01f72d03783601
+20dd66f2d2f6ecf6ce9e225cfc889a4c
+20e2f4d2487624629a9b6005b45635b3
+20e68e032260118f213f74a0c0abbe70
+20e8bfd020534a60e9a7b8a62798bf11
+20e972a87f15ee82eaaf5917005ce990
+20ea3199b822b750e9e6013df5675b36
+20eb6721b97b056f07418b5f422c7b96
+20ee6562e0e99e5fcb2773a685b4cf11
+20ee76ee11fbb081da4dd41f16b7a294
+20ee85aaa4d8d3b32ea74f575f8226cb
+20f044289d25841df804ffae7ec190ea
+20f0951388a3371908fdb0d359ae2c87
+20f1c10ecca57ec94722f185fa45f27b
+20f6071143b69164a6b12677afae0e0d
+20f72e4b25156e66540eb369bf032e61
+20f7654c98462be5c611a39e95c76d0c
+20faa128e159e5c96e8426b60075add8
+20fc88dee0139afdabf910be234cd9b3
+20fd5e32bc2c8022d34200ba63f0a12e
+20fd9440051b858510619c59c2967c84
+2106f5afb10ab8fa2581b4c320e4b65b
+2107e9f5b71a3a8dd9926fbaf67bb6e7
+2108e841862596ed50f7b6e2233fd318
+2108ec427c071bd4ebb22a7dc2b896be
+210925eec27c2b3976697d5c756e5473
+210b2b57300d6e8e729c06bb469cb6d5
+210b4e7bef6848de3bbce0f6c5678efd
+210df0a0d87bb812040d2f61a6035863
+2110fa67b9b734e03f4bbaa6fcfe6806
+21114a4f5159b4b1fd5731eaca04aadd
+2111ca83f83a43007ec2943ef7d1c3a6
+2112d02e1c8e445677d2e07fe2bbfdb3
+2114e088488812306d0bc211bc050300
+211506fbdf67f649425bfa0569a8431f
+2116626c9d1c1c0363e90e2348fc63a7
+211b9e4f47535e543814e2e5eba60553
+211ed90db15244404bba05962b03dece
+2120271f0a6f66fb686ce9c35e1dbd10
+21228817bb6b43b1cd7c2fc94e9b9b3b
+21228d274c750ef49f5c654de3b18792
+2124037ca37ff2e97a87d1a82cff048b
+212527c1db572249e1f228bb9dfb762e
+2125d4b48f02a9984d36b6ab17e2fae9
+21287a3dda3971fad56f4cb8ac3ab843
+212955c95f5366584176ff1320998748
+212d3e31ec81dd8fcad0705cf66ccedc
+212f68898a926e495429ae787c5453c8
+212fd9bbedd6bd7a5acd721eb612b46a
+213306be668d6f53f76f6075776d22a3
+213452839e907e0c7241288beb139f60
+2134e86794d48e03fb7d65da6722a03d
+2136d97d95fba530a8fb4911a007d5bc
+2136f50b8f7ae884bccb0641e498e5fc
+21382d95e1f2906e5b62deb48f28db04
+21395993b656a40e8e82c037af8aaa1a
+2139c380d775578fb2315f9248e5416a
+213a6512a40116c0030e992fcf9d9f54
+213f8023b0a71e282aba05c17f09a98c
+214223bca04e18217d6abc01ef88c6c7
+214375e016d7bf4109b0889950457434
+214a9f7a71e5deb2b0610861a0d0a24e
+214dee30e7f6cc4b78a40dc82759686d
+2151b2f291df9337cd8994d051102584
+215378aedc529e3c4af22303e4820821
+215623634aa18fbe210143d40f46d7e5
+21563c427a1b62b7aae662c7cc9c2b08
+215aec7c704d32ebfdbcbeea31c3429c
+215c5190b61dcc24ae4295efff1fd350
+216105968e3ff72540e67cdb503728aa
+216268c3ef355c160623126e03666429
+2162b518c3e8b0a8058db4f591423221
+216581cea881b54ca9411cfa37eac543
+21659e8733725d1d857397b30f18ca71
+2165bd9885f4f9c31fe868e5f7dba96d
+21675ec8cb00941a8e431a538b5144fa
+21678afa4d522c95b2272df06daf7af8
+2168644056db8674ddafae6d3d247952
+216b3309a73dd4698b0134378a0ad84b
+216b96058100dd6eabdb01c3b125cd2a
+216c4b6df5908278023b1568766fb6b7
+216c5b65b325a71fe89332540a5761f6
+216e509baa68b228b4c1a08f59aa6b37
+21704fa61e76052be8a3a8155bef14ab
+2172146f413db86f644c5661c039b0d7
+217394f47fe29b9c183a2f46b349ba0c
+2173aff9105566ebc29dca02af6e6c1c
+2173e97051cce22d6ad3133e07eddfa1
+21769151591bd72eac7428a0b57dd3f1
+2176e4fb6722df48bef98b27650046e6
+217722e245d3502b156db853c73b7b17
+217764bef79659497d2bd85f5278bbe3
+2177f0c04bea6af3118a27ce253f8382
+217911129c5e657b76aa60708c6a5557
+2179ce7549635945f32b415f3a7c79c9
+217ada5f778f2bbf79f5c435c6e64336
+217b23c6094b125ed819c6b001560959
+217c5003c2bcbc0d11523ba3673134d2
+217c8819817c2299049bc8c5d74abf96
+217cdd275435adfa7d5a311e8d2b9c93
+217dd0132d1fc622f462ca2476ae4f8e
+217e40cd1cc773cd75c09645c0c56556
+217f98b67574437eed6cffc495f9cb99
+217fe8047433ebce9f498972903c114b
+218033c3d414514971ddb5660346bed8
+218160caee0a3e4eddf444914e91c187
+218192d481a768fa92fc033a101ed899
+2181e3b2d3d74bc0f2d66cb77b000ca8
+21827f4688a0450c84a39df572251b73
+21843a56954dfb15e80ac61c446a88ea
+21888c33351e700c47971aee32f6fd0d
+2189d511732a866643a2d6ebabc1d5bc
+218a46ff80cfc57118f615894963c0fe
+218c98bac9546cafc3b835359051540a
+218d6494fa219fdd72b4d562bce2e29c
+218d741e1a75db73d8bd394c9e1e2967
+218de96f028a4d36e912b8bddadb3ebb
+219124cf8022941d7ee78f8c22d0aa69
+2194333071b1a456173d0d587be836e8
+21957bbbd7a341c2643ee6ca86fa6509
+21958742cd2eb467cf2f8147119426cf
+2196c47b2b3dbd81a1d29fd97d40d71b
+219760fdadb54c288d9a646075fe13fd
+2198438db54488af0f8d56480d11859e
+219b8277e8edbf8760bdb395323cc23d
+21a0808155eda3808c598efdab82f5ae
+21a122d35e941d21e3f157a90f19a648
+21a12ec3d136d01b945fa752d1e20dce
+21a24667db6483b7f39c133250eed55f
+21a49dbd01826abf1c14a25c2d452922
+21a65a48a1270a8e45cc58388b877edb
+21a8274289f7a1c2a89746551e69204b
+21a935d9fda309fbe676597e9125a37d
+21aaa995601b5430fff898241729a97b
+21ab6d5e0748dfc516c080badb186309
+21ac935c1e90efe82e29d4713f4258db
+21af6d46f6c876fa42f50faf06e0054f
+21b2f3c098346c497e57f631b3e2a107
+21b4c2fe3abda803ba7e938e3251542f
+21b4d1ee84a0e9b5513bf42525ab4edc
+21b6e2cf428705d1f2a7c45a97eb59fd
+21b74858058386bb8907b552f645754f
+21b8691eec484a1001ef6c6b7c45babc
+21b9175529047f2b6fafef46ec00dc88
+21baec1a32eab47745ee5aa7e9f97ece
+21bc709d6225147107f09412f5d9fc21
+21bc8dc0685268e1124924d95e5466fa
+21bcc771f8f3aa9ce1c7445eb0d035a4
+21bd604ceebe9a5410a25d4e37d93c23
+21c085993782c27f9ca675209e409391
+21c08d12a5dd0ccfb320454d00d830b4
+21c11489ff5636a4b8c5403dfc69e528
+21c315bb5ff50b815616a006984aa353
+21c3228f368d004c3ce80f592642ee6a
+21c506ace45fad726afc2411aacf0549
+21c57a6f5e88601c3064ee37d34c1ee1
+21c58ae6650fc3856b3645c25a398e48
+21c5e71e807cff2f2c4b5f0909aa4a95
+21ca234873c3e9f538bf2bcf61dd1fec
+21cb2b0d10080c859fbc41ccdf26d683
+21cbbc2ca4a0345ccb02843c7cf79253
+21ce526721d4a6d8a73ca7a7bd94d124
+21d0653e8bd58449fa888ba0d2d98cbb
+21d1d5d055c90f044ef76cb3e20992c3
+21d3e6360c80d0639a21dd5efdc1b187
+21d680f61635076b9f11885257fda885
+21d6a679d959e155361db0e46b0bfb6a
+21dd5a44ec4e3bf2734e527f086b1a35
+21df79afcdbd488d65bffdce29c1e189
+21dfd666f45885cefb9f56b1b57cc9ee
+21dfebcd7b7c524f119fb2aff437d381
+21e25266376b33050f6e16bad4b9cd45
+21e3c30da1fb894793ae5b6ab3c0b14a
+21e6f9149b06ee1b5185156380169109
+21e7bb19c9e36ff307c9cc72d448f9c8
+21e80a2fdaa30a135fcb92806d6e1c04
+21e99db150b4ad684b6ba07c376b13c8
+21eb506399c95b0d5e1ac4b65b50d2de
+21ee76d14ffe533f6d094aeacec69a76
+21eec9a7ef37089db1475dbc7b22c34c
+21eedc6922d41938bdd9731723199fbe
+21f1693534cad763e350ca2ead9df528
+21f29b01d2398f00ead673e43a4a8a3f
+21f2fb1f4a7c3b61e6dc8a8263d8bb1b
+21f2ff26009f788f6b102f4c039bca44
+21f755a818fe4a52e3e34af7cd86498b
+21f7eaccd3c56418a848e75d2deba4ed
+21f8a7ee700e8cf15abcd921ca16d614
+21f94bcdbd8f11030be336cf147d1879
+21f985d0dbf405faa5ab43c4e4f318d6
+21f9ac58aba0ff0d189a43e6d060e72e
+21fa0eddfd39e36c9ce64c9ff3505709
+21fdab3ad11e3a57f5ac0bc55bcafb6c
+21fe3567e12b0f4bb422ee217dcc6f1a
+21fe408e243c4d89357e7273123eeb60
+21fe68b0bdf74908309d3048a86a2b4e
+21ffe3c915ff2681b058a2d9e6653508
+2200180d02af3c1771cfbd405d487417
+220038b12911f5985a304444a9f10c6d
+2201ea77e0c1307003420ce7ff959b45
+2202df0276b3b78a6772ab0c4c867b00
+220423529337f69f6831cefeab02350a
+2204239675be954f9aa06b7395a7b957
+220447992281606f985ebc6d32577f33
+22052ff6682868fb0fba1b97e05588e8
+220606aa032e8ab915e364e5119a9455
+22062d8cc57cd3a8fe5b9840fa089bfe
+22077069d2d43e1cc1fbefe408cad037
+22079d40dcbb87f7d5bc702a5588f5e8
+220897caaf3511f6db03f302b5190836
+22096abb6a1c04d47e42aefe85e7cf5f
+220982648d1cafe4d45fe5f99705a421
+220ab4877a73001c804f0a25e80c8156
+220c0bea03ab1e9bb05350d71eb6b747
+220c70dcbe558fa290d5c93705f9de4d
+220cb6a01c4840c9b7b4619b84cbe91d
+220e7919346db7ad0e3c954c907ec1d0
+220e79b001eced4cf4de996641b9ed98
+22100656cb212167d8a65a99f04044c1
+22107c6a486ec943a31b005837dbc76f
+2211274825efe940f25bd44658343068
+2211287b67cfa7868c55fc07903a21f1
+2213884e9dfb9fcaa923b7039658867a
+2214e0beafd685ffd286f79685f0f94c
+22154821c566fe562648395306d622b2
+22155a97f1cd371f6b38f4612cb330db
+22161fff983566f8e5b1126ecc0dca95
+221643eca3ff5d873b67196a13d91b9b
+2217f79a2dac0708b4cbeea21ee81d1d
+22192fc30df081325fc76e6e726eec2c
+2219cdce6baade40e8ee43123a6131ae
+221c1fecbbc6b8dfa49ec586de2fdf39
+221cb33d55aa7d52f07384f7836ff7bc
+221d8ca56ac8e54f9d75c87fde6deb8e
+221df60c9a6a89f27343549dad422d7f
+221e6501ea117b5b084b1d3ef29da331
+221ee7002b2e822547ea9e1edbb429b3
+222056fd4dec1f4b22d757b3834d9668
+2221e544226a4090f3065402763999f8
+2222cba5a560d521cafca552a8987953
+2223961f712004723d6f6bfd72ce54f7
+2225198a13b239fbb012bd89da7cc400
+2226eb86f6a6794319b9836b63bf3ef8
+2227b4b32dfec577f1505e5febca367a
+222a609a98045fe25fc8e789d4ca8255
+222ba7574618edbf899063aa10f3b150
+222c69d47f38d1984ece7fefe5c82b73
+222de103f58eb55508e5d3bf61822886
+222e9a7fb5071f2ad6cfc7c76de459e5
+222f8b97cf325940c705412675a9a8f5
+2234a5bc177124f648cfb17f85f27520
+22356e83677f7c953325d953db3d6940
+2236551f6b7c370a5b14f30cc318df4d
+223a617bba7a8321d1bfd34627f438e0
+223a96e0d0b406e45c067565b841fab6
+223bb9b6a58f8b91529425057c6aea4f
+223f0e442f50a4d7204b13199549159b
+2240e134d4d0c1eb22155bbf8c57b923
+22419bde727256555d6f0aebf1e40267
+224239465a63c5b20f5ef9d6ba6c86c7
+22430243720410e1f89e7a6c03686486
+2244fc5253d489b5964159e81698e273
+2245901778d1ceb5e713976f0443834d
+2246730bfaec0d3025a47c497fdd4c76
+224789f0b195c14d6c42a1b168a5529e
+2249d9419b570f246b817c6b3c85bafb
+224b7d0421f314d26c1b25f804734d68
+224d340f88f64bc782dc6195dd81470d
+224ebdd506aa76b888ea53037da5cb74
+224ef4476dab2bf8c623c76734fd5e11
+2250bb99305f154206b77d6f5e78c1b3
+22510d387060335a15a597812ff9d949
+22512044abb7f990d1db39f654c17468
+22533ef2cbd1b2522831b6fbe332a225
+22550557f6d912a1dc24b76171a3c77a
+2255c0e4b42a57f3af811a5a4b452354
+2256f45523e51bb7c6bfb7b2fa57c8da
+225823cf7d45780e46f61be1dff05279
+2258e6f25044ce23a2643d2d4be8bfe4
+225b7b2ddf81618f69b6775e379fc42a
+225bd64cf35e9f69bb8b6a40c6cfc201
+225c7959ae90b312c8bc0751543ab27e
+225e59bcced7cc1d3aba506c5863954d
+2263504422424e691b628f5858bc3b2b
+2267acea2070de5a850363ecbacadfc4
+2268e395bef9d1170245f4f33a026e24
+2269332a1325b2938133feb36ea57eae
+226988a630cc03dd52a2a49337b5b6e7
+226bf0be16f85e376ab89de0f877407e
+226c126a435482dd1469e1faa8542b11
+226dd61c2c190902634d9f7bf65c245c
+226f2cf286e5bde419a947319beef06b
+226ffe618db53256a7b8c0fc34f8a05c
+22700379ae5b2ad074f26fbc9dd1fad2
+2270b7af59f73864f2125803979f2520
+22736d7d3177854e0fe71c3860d44986
+22740457727943a12c7ef53001ae6da4
+22746ef4ec5fa27e8d9a47ded779ca9f
+2274c6a0d62095ceb2414c27122652f5
+227508edf89ba197220906a18f4510ae
+2277888820ed75e78048261e01f970a7
+2278e1a9419084995dae3ac27977433d
+2279d27727a6d3825434414b0c1ca3c9
+2279fa9bfba93da3b8a4cca5096756ed
+227a2c286042552c9430960009a2ffe4
+227a576e233c90697756bd075cc8e419
+227b02ff44e8098029d0994a2f043d92
+227efbf00e1c3db357d4da50fc4dc860
+227f818ca054d208b9d70807c65f015f
+228172c6ab33b4309ed6d50c164e447e
+2285a5432657d00d0325ec61548641a9
+2287d2fc2519159e39e9715b17d4d63f
+2287efbd67dcd968224abd78dece6edf
+2288df92a27c1c51ee4efd3e940b79c0
+228a41bfeb27a9f6304e57a09f436771
+228c2bfd7e7a84ad85759059c13af446
+228ca71bd53b10902d63fd14a1063440
+228f980b185816c354864a549137c587
+228fc5aeafb6190780f9571718f0eaf1
+2290d64f65bdc47a0f617acc3aa33ade
+2291263a8dc12232571cdaff475ee2c2
+229158404252922cbbfddf3abd60cc9b
+2291f5e5d05d6e0ff78bde9981917918
+229430930a8bea94248a8ba14ee0621d
+2294b13f9b5b0fc0f58182616fd1f7d6
+2295380300730685213b4e699857e849
+2296da092377ef367555af29d1622121
+2299460ec06311f06df865598128cd19
+229b265edc8358a792c842edcaef61f3
+229be38238dad13575ee678d031a96f9
+229e820e05d996274666579911b66337
+229f426943ed9bd597a61d80821f51f9
+229f4a25da60dece022517ea70a8373a
+229f546ccec9c50ceee168388023d923
+22a14e9c34d36e16bec3250ca6626a4c
+22a356afd44ffd2dc12f040e3b97660c
+22aaac41e92058d14897d664036a3d50
+22acf5fd41508bf1956cce37d317c324
+22b0ad8c5d65a42f8d0a1d180ff730ac
+22b16cbf5e78cab1c4e10eb5cf0c1043
+22b2949e3a272963206d9512a7c47b05
+22b33495e4a6ebfc1d8fee0736fcb59d
+22b3ee236c7e1cfdbb3af79c79164e98
+22b4f78210d4b2e9991745e484d903b9
+22b513ec25f09a94b218873bf5a94c10
+22b5ef1d2fa84f80836e1116b59b2520
+22b609aed79699cf561b29a9cd70a672
+22b796888ca66a235782c3e50ef3f2ea
+22b8713554aa658aa8c24028458e935c
+22b9f4998ff006e4a9db3d06df7f2dcf
+22baa8398201f13e019f1853ed79844a
+22be43714c91b02db0252c6fec2dc30c
+22bec97dc2c9a956320fe329d029ed2c
+22c043412e17968cf365926632449f6d
+22c093cadfbe1d3694a9d2317e6d320d
+22c0d17afafa1d4f4ebc32eb93c3d608
+22c5201549f63090069e690283a3d14a
+22c60757ce48a19e00ac399ac0f84431
+22c849455dc39bf6fedfb81e6b487033
+22cb8f31434271b1edd2a201e7641cc0
+22d018577687fc844448a5e9f65dbb88
+22d0e58105cebb9a8967da6fbc1bfcd8
+22d39f8c6bef3e7aaf9440890cc0a911
+22d6c1a842fb11379f47da958e8b9211
+22df6fc15f7e5f9a15f23d6b009859db
+22e0744079dbb72bc2468272d2af5c4c
+22e3cefc994d6054b9f102876a5a0453
+22e76b335f3039b491adb374962eabb1
+22e9885643edd11f7b458d9af3ad18ff
+22e9b04e730e5fc914e0958f3552687f
+22ebaa66b23c8b2cbd057a3323cd6df4
+22ec716f28470f8952922cef79e4a609
+22ecebff30ea3d58a7d3098e4b8705e8
+22edb5e8f0433ff7e2143684d9de1532
+22f088fed776c9ebb4d20e7948df078e
+22f5eb6e6c4ee8a89ea00271ed137dbf
+22fdddee02286ce6a254d27372687eb1
+22fe5a4eda2412c42751cd5f8dc80957
+22fe7062402d002e2083513247275425
+22fef5fa89f30bcb0836fdf527183efc
+230096bd2ba463869ef3e6e15b5d693f
+230125acdf25bf0ba7d78bae7abfbddb
+23021cae8e41c1071dc970167a842e78
+23036e27a8e223169dd18a6414f028dc
+2307ad67acf54c1110d41b4a309dc3a5
+2308dcac2919a8d2c5dd9c5d2c9ec935
+2308df48d08a3555cc8a6c245a1f34db
+2309e368f18f8be86e7aae432ee1f008
+2309ecf0c318c55ef73e7346f042f442
+230aca79247840cf72b70d92f82f2ad2
+230d98dd558ba1f2a193801b17a9129b
+231046f3b83fcb83a6439c9be18a349a
+231277ff5bdab895bf0934dadf1030f2
+23180f208dda2e1018c5f5583fb20319
+23186bd42fabbe173ec4294bc75bbe89
+231b533d5f9ac6f23757ffdb5eedf542
+231d06c898b565e6d8854c8c9fe8027b
+231ff12c2b315cb59a0fc90f4e346bf5
+231fff6bc659a448ff13baeb363520c4
+2321913d6b504211533cc99dae150ba5
+23231caab99d5e5c24a1b74c94d71a05
+2323c0b9fd731eafaf2768772696bfb7
+2324de7ece513677ef8769e422df313e
+232565068b41ff15ac6701bb647f6c1e
+2325cc2f6550bf5ac897d079c9dfb3ac
+2327357f658e545630a942a3246745e1
+232783b28e157cf4eefbdb43c0066ef4
+2328399b8fc652493376034dc29e3850
+232a2ae364ecff9030fcfd22627b0b8a
+232aaea6a2313408a65fad8afd6dad5c
+232bc0fa11b44c18555a0fb9757eb50e
+232c67121a2b1c7044e331209b39ca7c
+232d011d58cf5d239f8877f11cd00df8
+232e27a74986d1a245bf908419607ee8
+232e4d257ef35b8e79c25d2876b6e16d
+2330a838ad55f65de8ba7f2b7bc6489e
+2330c1dafc430d0513d41b3191e17a4f
+2332042a51ba1caa1313b3a914d36c5d
+2332122208b7f8566813837e09e4bc28
+2333de370187f1c8a2d7c169bf2e1dd1
+23340603b8ae062ef10871a7a7f7696b
+2336be40aa968b844f6931d6b0e1dfd1
+2336eabe3868a237398eb22c546640b8
+233719391657d784007800775b692ea1
+233b86753b509906f1bc9b1faaff00f0
+233c80a2f5e7b3ee4c9bb4c72fb44b19
+233c84eab1d62a7cc6a48e5934ae6738
+233d1c6e6202ed50456233c39c2ec82a
+233e29e02df4fb99ec0b01ab21b2df65
+233fccc7454e1dd1eeba622e9a014c1c
+2340c10071568e055fe071c68f0a533e
+2340c7ae12c6d23f5e84f65870b966f5
+2340d34efca2d569665032ee663cb7a7
+2341bc76717c9ce1ffb9dba9e446cfdb
+23423fd82fe879c0ef8537900be74628
+23427ecbac964d7a8beb791dd1343b88
+2344b1599a04b45d20b8600b1b5305a3
+234513b2d68bc84a47050daaaa94977e
+2345c34803d355b16dc6cb340e13b8e5
+234773cf5087d444ad1b09fec68345ce
+2347a193c936ba8c3918091d8edd65a4
+2348c9e38775cdd42dcf51b8d7fec516
+234b9143642dfd7df3bb5e72e474cf3e
+234bc66597244e470c44348d97cfb914
+234e09fffd188d48f9a013e0a6303946
+234eb78491c23bdc64bb3133a7a243aa
+234f08969319176deefde79b2d7960b9
+234f79455c00c3bc564b9b509fc2d0fc
+235168f4350fba84add541c99148dc8d
+23525cf18695310b78fd0321f2d921d9
+2352cdaf0075bbbef741a9ec2381aa5b
+23552b57403f44f45c527457b47ce2d5
+235649e1d894292c076aeae5be0abe13
+2356d6c05dcdce0c76039d2bdc7024d3
+2356e0d0ac855d1365b8f7fe175412dd
+235765941c8999bebbad7b7f78dfb283
+235871d4919be9469e57a48271e4bda5
+2359fda8884a019cfb68e5289f091b56
+235cd03a2fc84356eb63b78532dccfd1
+235d7babeae71cad3d3502c52d0ca7c6
+235e0f64ea33828dfec1990c97f79036
+235e5870035ec12e63c0fad5e0b83a35
+23655ec24b557a5beddc4dbe21ea95a8
+23657ec88157711235f8a9b52351dafe
+2367ed1537a261dc904364e5d31fcfa0
+2369bd7e90d2fbce9716d4ea0bfa9c87
+236b62e3324675c6b2e3fc46a673f1b9
+236e9a1a9887ebd289dad93a3ad2b5cf
+2370250488e4ab8772685132ca6f363b
+23705cb8c890dd647f958df0076064b8
+2372c8fe17572313daacd18947ec4892
+23752ae1446a07556812512125585d28
+23769e3bb710fe8c9e16b22701238b7c
+237ada752ff3f04bb5874a60e1b4d5e0
+237afec9020fabf8b7f4b177b1e54a7f
+237cb95b8d083d007274af4c47f8b825
+237d93f523e67aa31a494fade3f728ef
+237e3417377113ede58038aa91b41c72
+237ed7529cb7692d070bcf6fcc2e4aa8
+237f93eb24ecc133ad949b1981519952
+237fb1c77c2d8eb7e329f9513bc9b6e9
+23849de25e9c080f4b7e047faf7540ac
+23885eff8c8cd1e1753f0178478645a4
+238b0ac248dde19bc9775986372cd674
+238da06e9e1879f89c1b06f8c61c52e2
+238e7a1b84ec791a631ac4de80158b9a
+23919b4a7638dce6537df1f214b4bc00
+2392697ef279f3fee18c88d3f872e9f7
+2392b5120d5e3142596f820af0011a3a
+239544354cb817a2cc4f54aaf59fc9d7
+2395660edb5e652d072563c64b767823
+23962194679fd78d420f13955756b863
+2396702151bfadc0863fb740777d8ed0
+23991d6683a32729627912ac6dab3a32
+2399a1007f7b4204cb599b267623e917
+2399d866dee89b5e8228e5d3c52410c9
+239af04a3def39f2f9c1e790beb728af
+239b0d63282ad4feb277c48e775421b4
+239b7d6a0f50174ce8f7ec10a8f10330
+239bca7b7e1e3182eaff849cc0f2d208
+239cbe8f245b67694bea1572c2f23a74
+239d772fc8564a44179850918ea9e70b
+239e1e366cb0cae3d405a810a67c382d
+239f335a1f99387972761f53b1262b19
+23a07e95e3004386808576b7cbe79aca
+23a33686b8f36307233be5fcdddbf169
+23a3c3f6de1d4e05af972b78fc88c5b8
+23a3dacf3ab540e9f77796161cff10f8
+23a43fa7c2405ca7b6b84e0b37515067
+23a6972e6abac9c546fcea2be7384b13
+23a9647bea340fba11eb19f7c4e53764
+23a9870df3c7f5b0ba64da7803c61cd8
+23a9ef29112e232ebcabb45ac5c3d1b6
+23ad3890c4382ba69a3c7bc21206a84d
+23afc58804bc25378f8f98803186b88a
+23b05da5869200bfe16e0dbfc1e8dc52
+23b29c1d5a283c225310a366ba6edcfe
+23b448077be87257678fab2fa94fd3c2
+23b53a2ed146a78b078456bb7d674b40
+23b6a4a78f1049e0fb1808662291d3b8
+23b6acd1647a8b3f0a632b8600976827
+23b8dee85e97bb6bdd3bb08d7ff2bfad
+23bcdea30227b6b867fd5b8da5683b18
+23be59e7dc6b6c365f9aafde0466169a
+23bfa9c66ffa40e15fc779e9c9f1b69e
+23c0d847f667415551c45e82402a6d24
+23c247ef7a64371abc0d4a810ef9ee62
+23c81aa66a60dce1c67baa237605ecbd
+23c887c9435ce3207db847e706366ec4
+23cbd8032be5c646ac3829d8d57035ed
+23d07e7a3549e436cff851fb407a5509
+23d1f4fe676a67b0e184d7653ba2dcc2
+23d2300788f1990bba5981e6765d1304
+23d451c6d3d268a7b35b01be293ea995
+23d78de66a3c576fe6f00e93c0505e5e
+23d861429a02b66ca2c59c97a47af9d1
+23da29876302d3fd499f6dd94b66a484
+23ddfec88b08b7dda82a24a501d1660b
+23df137d1d89f8e696c9306a6f5ad297
+23df71857b439f686c2807ceb864ed4d
+23df92b323221c2961c93fdde3e6dbd2
+23e0e24d0c33c754c7fe7407102d870d
+23e60ddc3be83b07fcdf6ee97a10549d
+23e739991c702cdd38c3146b6c4bd47a
+23e7a00d31577dc007fab32791676d4f
+23e7a20d056f792c3749721cfd551bc0
+23e7fbe22b69aea2836ebdf590fdb5e7
+23e8d1506e4f8f0f286299b95647923c
+23e94cecd2cff4e82bfb36831bcdee08
+23ea42669ba1e40e96285b41c33f53be
+23eb4bf051d35d3bd5c94feb0af40512
+23ebcd369b1af5c5b6e6656529157fd2
+23eca32472de7901cb74bf177fb33b02
+23eea01a8c1e678069947c8acd8cf2c1
+23ef80dcac18eceaaa64e2c937af82f2
+23f1e65f121945bd4fa2245f9eaa7882
+23f78c9b5336839701398fdf82fd0da2
+23fa9f4c0e7d9b37971f59c235647ca7
+23fc96d2b2e1bd9f54234ea44ed62d42
+23fd8b158ad0ab97a69d72a2a544a227
+23ffd9a6683edd6e2c34153878587811
+2400080184703f7a90f30cd0cf0ad4c6
+24006625050ef21876ec86644d9e4d12
+24014c30be7c0413009b2a292db75800
+24018266bfbf05093d9b6c99f6205a14
+2403e6252c232ff10e6bb07f367c7137
+24042b142a3518ca1dec0ce4161d89b6
+2404394e0b3b29a6544ba7b469a0823a
+2405740e1dc874894597c72f44917a7a
+24064dfa420cf1b66ded2334456743fc
+2406fd03c9929aaa67ee9a2bbe26545e
+240976df69fb76d105d4408dc8f46a50
+2409a88377133c8f8061887af3dfc510
+240a3df83d58bdd0f09eec7152d023dd
+240a7cfc0de4bee6b78b2164ecc8d876
+240c7e24c2c855a32952c18b1b086f7d
+240e506f8f31ae6b59f99488dd4cb65f
+240eefde0fe2466c14cd90c974f0c52b
+241152cfb5b8317497235cd626b2fc7c
+24132957781be21ff42129bd749f9fa4
+2413d77dabb12ba80341258c067881ae
+241499d31420c56d57a643ee290a1841
+2416116b35ee17df45abf56e9e68b7ac
+24167fe798a2b4d48ee104a255858703
+2416946a0facb146dec7593cc720e1b1
+2417638409591fe1407ea5933bd955e8
+2417b3032f8eb8bd92eda138b124cb1b
+24187418a539138d79b3cc5cf62d997a
+24199c1f45c170861691b4f05afa5a7d
+241f4e33ffcc8373e074f5f0eca29ae7
+2420fc3f8e8278a94aa70527f0939e0f
+24212557d091fee5e457c27927c009b7
+242206e1d0272cda1ef2a8ccd3201a26
+2422cebf4d7e21edc825e55789f49de6
+2422e50110c67f3d05c8f4420439f99d
+242451f3553cb7c8324745ca2ff9b4aa
+242698219f845200ab7f5fa503cb64b7
+2427ead85df8a7623f2b1a9614bd6c42
+24282147d4b97323dc28458e18df2d59
+242b16a6d4048444314a8035a1901294
+242bf4402908111e68ee5d905f24ff6d
+242c6eada142c3e29cb337df7e6337e6
+242cbc43282412c64ca15b481e3d6486
+2431eb57d26e209e308a7ab8b03e726a
+2433fb0553e870759061fb786bf2a539
+24354f493442fc58de2e26cc16d33c3d
+2435847a8728b5a74a139ae6d2bb58fd
+2436c5893c9a61fa5cdf345e13683f79
+24393b61ee2a476a9e6df818bcc1ac3e
+2439b0884b61b425f9fc4c34edb0a5e8
+243b55026041008fc711d7a85d682005
+243c31bd463dbe760e4c36c7f7c452be
+243c88703900559f6a6c0161300c9394
+243d5b5117debf857018739c67e58d8f
+243e564f0d347bab06eb77189caf45b6
+24405cbd957ebbb8431bb0e6f48e8bdd
+2441099c0554c592b335e1f50feab9c5
+2442c062162fe5e2d179bcaae129a027
+2446bddad80663a13682dff5051a758e
+2446ee64bb71e88d36e4dbd06ba3f0f0
+244705138d909f938c333b9b08d6786f
+2447965b2f1a5cb02df387c1fcae8d58
+24481c8d08314c7eb7613c12d84181fe
+244912bf5948a66b20d7e3e690d5a0b3
+244932ee7edd7ad8dd59ab24707bb820
+24499e15186e6cbbcc79384d50048b0e
+244b31707a17e148690d1d744f5ab88d
+244babfbce81aebf2dad6785ea443bdf
+244bdfc7b342a13405880932088de9fa
+244c6be6f3b24282f91b004a94601e7b
+244d7920546453eb317d06954ee03524
+244dc7bdc1e042e14a9b68fc33bc33e4
+244f2c829f1601147d0fa94e973cfa93
+2450696dfb28ead7c76bb60a3857807f
+2450cb19e43294851f93d2a404a6d55d
+245237f5d3144d4f7ec1bf1c170680c2
+24568aa66dc5e1494b5a7378215a7efa
+245ac0165e3b1c2b2b1860e86570893d
+245bdc8f03002ce59dd6a6dd9718bda1
+245d48b9a8fd545ff2bf0f3f50bd3918
+245da028f950eb3933f1adcd81f3c637
+245e39705b2d0595ce02207f60162e27
+246020abb5d50c0fb31cdf4989a67349
+24634b6e8a6daf7ce4a9f04991c0adfa
+2464d6f38b5513fe587f99873eae6454
+2466d807b163b60d902e58ba45ded1d1
+2468bc2677c056807f26caec9b58f751
+246bd6d1e23a7ebd2a9dafc3585b2d04
+2472a28cc792e22ef9b930fcc0dd663d
+2473ef38ae8573a01e8ae28253c8e2d8
+2474d0d95dc14ddfae5bbc27820e7c37
+24752f39435cd3bc4ca81ca6f880a5a8
+2475eadbc7e31ac9815176b5d5d42470
+2476293cf547ca9a8fa925a9422e9547
+24769b7789cfeb91cbd62fbf75be18a8
+24783b8f21814bcfa6122f60a8465e79
+2478d4d558f0d505c02a5b1747c7602b
+24790c416b63738180543e4183a1b2de
+2479af83e1809a6309236c969849ca04
+2479c5ac4eaf9e0394b284392287d5b0
+247d2c5382aad5263fbb2a1ab61e7a27
+247db9f2777ac604dee1667612e083fd
+247e9a62a1740a9a9a679a1bc4d56c6b
+247f7d5011d9d0095f7f24ee20f10f7c
+24833dde6c3b9ae7ba4025599f14925d
+2485174cc1ba3bd948209bb72d340d22
+24876ce2ce6610ed139060433e0de03a
+248a75f425c62d826a8118a459cbc72d
+248dc1e5046236c4c4a6ef6cba0db19d
+24908af625346cf0438a21be3f8d4aaa
+249611542af9cc822f4123467e75aa92
+2497c18164dfc8e66277d94d16480a68
+2499cdbcccb8130ef85fc8c2979cc6dd
+249a521ee500bcc84a04fc70c25a53c0
+249b4ef871ac5b7503953436f5f17a49
+249c5542ed4a63ecfa064546c0c7fd04
+249fbdd44adb4f16fece53afff129af1
+24a1255b65405866dd5eed299c7acbc1
+24a1d1ebdf4b8c321b8aab77a503d4e5
+24a2fc5e7b7d888f9b134e287f090e8e
+24a5ba1a22111bf256bd75ab2973ad3c
+24a623ce9b635314bcd2d07b0a9ac65f
+24a69a74548ce929d41b3d21605bb89a
+24a9417837ddfc191f1f38ac1a7865ef
+24ac2a2a4e76423706e71f7b2acf2274
+24ad66e7db37fa5bc0ef3ff7b526848e
+24ae0e243269dcab8a2609eb5513630a
+24afbc55ca5a101d251bf76afa8f47d2
+24afcd8f6d856ed3e11a05a9c196af17
+24b3b8f755c3e5232ec86db982b84e99
+24b6d5953f617cf9a26050ea2e7ae776
+24b7a6e30dcfbf4f590ef27c47f09c15
+24b8b6a59c111ebff4b6b86dc7fa782c
+24b9e81ff4f69bd11a7af550c43d47df
+24bd5c494d80749c8ad839e9a815fa38
+24bd893098dab55bcbe8f818119b794e
+24bf10bfe00046e04db4f0f85df9e0db
+24bfdb4a8c9a6d78cfd1899c36c8dc9b
+24c44850faf238de35e7c3c23cf8f813
+24c6c55ae6fec8295195e7b4ad4d09fe
+24c7115ca35ad1123b71bc6c7a10ed11
+24c78f975fb981f256b7ba44899cb49c
+24c8b10945df5e8feca5adfab9854913
+24cbcfb84824ff0ec048eb98afc8ca19
+24cd8e084c1e718c158ccaffbfa5d42a
+24ce3a4a3f695b096ae9c6d443737b7f
+24d140e89a77e262dd4a58bc3aae3dc4
+24d16cd96ece0ca3a523ce1b6301dae0
+24d28497b1e83491b226e390a2aa7c77
+24d3e74caa534e9c20383506b06d07ef
+24d8fc6625d8f20c4c758633739e01cb
+24da3462eb9a3d96630ee47e81501783
+24dc58bcca3ab882cdc7507d9a32fe5e
+24dcfc8579edbfad2769bca53cbb09b7
+24dd05890114d8d6b83c79c1114c672e
+24dd09b7fad3d6fda2a9d959ff7694ab
+24dd9fff52647a767660da78a9357f84
+24de69b459a9188ecb2ea3b0259385c0
+24e24f8bf4ae7546f5769bd5d77e00a0
+24e2719b7df9f01451bd08a2a6a40405
+24e3376d1c420550cc935a347da26dc9
+24e40628cbe96896e51ce34ebd6d97d9
+24e639eb5638f38ac9f055d907b5f60d
+24e9d4d99623e716d737018c8c7c4a67
+24ea033cbee64fa0957d73ea7b41ff36
+24eab75a3c370da7da792b351e18961a
+24ebfc94b0bc5d0cbdd9c092d974cc30
+24ec21146c950e68fc5f350ced0b617e
+24edcac93851a8225255cbb8f5d047cb
+24ee4add0962e3022d8148b7a2c80a92
+24ef9e4b000fc37ef5cfd61ee13aa2d4
+24f07b7f8d40ed98e9951610651a6751
+24f0922f413eefabd68dd4fcdb3d80f9
+24f106498a98fbeb132c45f99b40a48d
+24f20bcd80164b0f648406deceb700aa
+24f31f613a711b37cdd48a25b231274e
+24f35bd3c67b5b2db6236d4bb2721439
+24f38f6219102b4ef289a4bb07b46beb
+24f3a230b378ed17e915b302d87a3ba5
+24f45284dc688c51d3abba94e2d57fe0
+24f632d6e088aaab2ac702e1456828a9
+24f6da399f10167f1e6fa9369d92c40f
+24f916e65f03be6d23d9e0a78bc657aa
+24fb5287ecdb049660f92c3b2d547ff9
+24fc3aafdae08e01eba590cf1fd9793a
+24fd5762b4f6b24c3d64b3e8122d3e4b
+24fe79cae8c31cf576c3c551fbd2a73a
+250009590f4b6b66e308aec859e50e04
+25032fefc3ce694c6af6dfe1bc08186b
+250381c5933b06f042297845efc0dbd2
+250780b2d5e3ed18c2f336e9035f1630
+2508dddbcb5c8e0572ab44b990ada201
+250a1c55a65b949a8e585c70a15a9284
+250e172de7e966402bb0f99f208983b6
+251210c6c26f3d5d634aeee961e21cd5
+25122c0c6444bc6a06a9e49a7a2a912d
+25132d8ea916df72e50b2afa730c595f
+251371874e8ee052cdbe0aadcb8e795f
+2516555f9ef354f8d1b0e908ce4f61bf
+2518bdc32b38836d782a953b4c3bac68
+2519d93dfa44c3d6537b5f8996039582
+251a873981de9f79bcd13151ca26a454
+251fefa2995787fb8258e70a8c42c025
+252785e3f07a229b5c65b58d3b212b3b
+252b692286d2f4d37cc105aeeb723915
+252f2dffe15baf39621a87321a068069
+2530507e587cea9af52bb1556ee72e3e
+2532d339f2535553abee7e8a555214fb
+2532ed05d88def99282ce1c891c87767
+253365494ad8f402bf5537d557d48621
+2534a04d9c6e603bf244a3861c2fc2fc
+2534c7bc69a0851bf34e341c6d74999c
+253927a3ecbdde3f452695d139ce0218
+253a19855e60b8881d4179d0c94d8750
+253a1d66ad90844143dd5e0fb9c26bce
+253a525a91ccf1585d4e5c63e7e74a7a
+253b5bec77f2557ed4009c18e43d1e0b
+25404ebb46117c0747615524d0ad635b
+25410b40fe7bc9abc1f63bae96fb6217
+2541b907c0bdb2257e8fbcd32bcc17a3
+2541f4c4c3f94cf767832ffb81a68227
+254397aa8998ebead0462e983a6da12b
+2543f78da09ea82ad5e8e2330382e42c
+25448d5c88a27c6e01f1cf3fda2dbb06
+254558e7172b54103ba7762edced490f
+254b28a7e3c479206e0c100e7af26235
+254dffc85b106d665b693ca3bd8d17fd
+254f9f1fe3cae4afd92ee7d3a14620df
+25500539cc3a24cd254c21806bc5136b
+255255ad411a3f0f4317902829096d39
+2552adccd8b4b7d23af79b14e38bc212
+2553bc52f94eb6d4e6b020136518ccb4
+25551aa4edff25afc77a9cf25b47dcf6
+255552617fea2189b9d8cf554931a35a
+255557afb1c78300fd59c743a70e00f8
+25555ed899b93275d70bbeedba521c17
+25582af4677d15cd4d2f5d8585d784f4
+255934fe83c506d4e72f9ea02f0863d5
+255997f8a4fe7995f27561ce4f3cca1f
+255aeb8181189423272ddb69eb0eaf86
+255b7415738d9f0f6da59174155b567b
+255b8e7c14594478abb20423689cfe23
+255d2e082b41055bdda1d6bd85bb13e7
+255e5e3cca4248fffc3fdf6d19663f00
+25607e362f476000d31d85a1d16b80d7
+25628789f0d42c31b2c73d4b8b9e0e8e
+2562f6b4735b3d6a8b8edc682ff286cf
+2563809d0c4da22afc2a778bf389efec
+256491631e5ccbbafb0af67bde86ac6e
+25683fb84b7d2f97d7be1f26d4addd6c
+25695dcf8cf13ba34d1ce9d08db5f46a
+256a69c9aaa7f4a5ddc0450edd41cd2b
+256e46d3b497acdd970000753460ae2c
+257347f1b64ca313f8ca9fa661133d63
+25735c4885e2e9a46ff4f311a81ef913
+2573def745dac446bb9470da252ae160
+257404ca1346cea3e9cb0c4654ade32e
+2576d0a2e4dd55bac8475af9c25df988
+2579ff2e5203d06d60cbd2cf4a2d8863
+257c3007e4e5c788b508319e7858e4d2
+257cbbe6294ebfe83f33b0be5b39d53f
+257e86ae5c40b03f2b22f1fa19ee75a9
+257f9571a33c26153f5ccd929023f564
+25821be90d559694718793e83704bcaf
+25822fffbee85bd65114340aa5dfcd35
+25831d582200d9ce30e0531b5549c83d
+25850387f350f2dc7dab76eae0fef7c3
+2585d783491d46fdcb8ac845a408497e
+25861964097e83e2d3c597be9de158f4
+258639812f8cd09ced7091c296c949e3
+258811ab96b6278eee0a44c8cb65ce94
+2588b7a4d701fb3e009b8c525d2039c0
+258d492746f7f699b7fcfc98443dc36f
+258dcfde5fcb7e0384bf20a472e08f49
+258f9ec8ed1c380fca9a992b3ff32d7e
+258fda8b168674f29a48111f746cc9e4
+25905d1f9318495320dfbc30f843317d
+25913b4b253ed4eb3d24ceb6882fdf70
+259268dcdc6a399ffcacb8d52e3b73b2
+2594d821d0358c0e3f9fe4a6e4f0260c
+2598f8824fb7b655fb2f393f4967bbf5
+2599822f4569f7ac57b658f6bc3e5c95
+259b021bb09d466e33e173df6e52490f
+259dbfe47d47a232865dc2c5dae3f1b8
+25a12b021d292a6911ae4b36ed4b4727
+25a33779d53866fee33b5cf9e178fb53
+25a44ec98436a44b19a0476124ad8977
+25a673cca7d1e196e52041f5ba22c013
+25a863bb82489b98e02dbc5d4955ed0d
+25aaaff5641ecdd6c34771bcc4b06a7f
+25ad65e1cde09c9d9e4d2375a0f1b6cb
+25ae2f7e0bd42ed91e442a7d2a309221
+25ae42fe7067f58946a641f4a0d26d22
+25af8fc48596f6f7d0c5246a11c30ef9
+25b248b326d169c5647cd63fe0895aa9
+25b6ba467b0db90d5ab44c62bfe405c6
+25b77e4eb37b6507515a81c443f9d55d
+25ba0d7efc252c5871591f0409e072ef
+25bb264e9cc643ba6c5438d448a15605
+25bb7b1223402144e9ff1630a5d864bc
+25bc7fb24ea9a06427f3dd4d287275b1
+25be57445205271fda7f05727f8235fa
+25c5b5c7a19a6b654d5fbee1c951efba
+25c71a3d9d0cb41a97e09ee96f5e6c79
+25c796eed3af9066be72b1010e3b7aff
+25c8ab525979112e3adfe727bf7c28b1
+25ca459ca305e48ce063ff543a3b6752
+25cba26095cd6d80c3b31c0dd497f7d8
+25cf1f00ccd5dbe3771014ad7790e09f
+25d142e5a8085a88d878badc16ed08a2
+25d15ff3e3d19542321adf0a695daf4a
+25d31c2fd58946a759ffa3240f9f006d
+25d40b80e855c7f3cf05fdad772535de
+25d5ca0e3202c2203b3369121c92280d
+25da801e322704450461c999bdcd707a
+25db28637a0da4d2d6c178e32554d1ba
+25dc69cde0007f08217879d0e92c3c3d
+25dcd84c24633a13004b0157c933b6f7
+25dd342a7a947460daf1524f68b53442
+25ddba81ccf287c6fa1ba586575afb8a
+25ddbbe3edb6b2e9e1398c7851e7a13e
+25ddef40d512afc9723006d697435dfd
+25ddeff453f00649bf41bbf8234c4eea
+25df611402c55184cb8fc5df47f16daa
+25e281a803cf86e9811a0f7031d91bd5
+25e39b0e335168d0aa8d87b113cd0c9f
+25e67d139b32bf5e219cddc63d25401b
+25e6eb2926d33d517d734c06ea02cf8a
+25e787d205f44bb415d0291b8c3f845d
+25e7b390f241de5ae2b2a80caab4966e
+25e7ba436a8fa166d18d126bcd16c56a
+25e8e8a5a06ac2fa4a2ed2baa73f69fc
+25ea0201136df44b8e6cc44919348b60
+25ea1d2787128310f80ea3a7889a8026
+25f052d952f70c50e2de114f93095e99
+25f193fafc725dc4eddf2e48b7836e61
+25f2e3c8bd858371949d212d66e6f528
+25f38b9f33e0b8156db232ec962e17f3
+25f4af0ea94fde1ee1931a6658196cb5
+25f5b637f8421029895c62b693858c1b
+25f5f65dcc3489b1b372d36d8bf1baed
+25f67ea6e3eb53a0b3ff6eaf4a7ea342
+25f7833461a5550f1167cd66a0fccc4d
+25f8be8b380f07fd7c0bb7fd47e4b2e8
+25f9217cc916e3b885967daee31b8ca7
+25fc114c7c21dca54a0b09ed6f1cd622
+25fd6d2aa38e1f9ac959e318d6336d06
+2601c012ba82f65dd222671165d25595
+2604cf36748f131c5ccc2a859e3b5f69
+260943a6b16509e20e39a2e59fc2a311
+260d897dc22372751cccf94e15185c0c
+26107ba7f6b319322e12591d4f26d4b0
+26153c0d0af47ac72c544b9128e125d1
+2615f035989060746adde494dea956b2
+26169ffba3b71a4c39caee0e4eeb84b4
+261ae98f2de55f614ad05ef15d2f04e4
+261f46985829e737843c6fbec2534fe4
+2621218aac0f5d5be5c633b695c9ccdb
+2624e5fe501a3ffb093bd15471c928c7
+26293c49857bc1276ce908738487a0d4
+262b14ae12214bc4ff5f7794c1a806c6
+262b6a5b98680b2f1fcdf47e184e5b53
+262bb7a5f5e7720cc20aa21af7e422b1
+262cae3fd2845956882a0d815d73bd70
+262dd50d0752f1232e50dfca6da0a949
+262e240c83f4aa83b32870cf2e6ef378
+262f18b3d91330db77af2a31fc310445
+262f2ed2f29c8067810f4a5fec15d9d6
+26303a2fa9e2eb1edada178e1393ba65
+26306dcbcd70900872e49284df850636
+2631175a7b045a37f47968c1468a11e1
+263163056b30d3bdd958bdc486521d6a
+2631dce894aa37d6f8e08618f3831222
+263220f7267a6273d33ae77ef65ee82c
+2634a66eeb804768338e773ccce76f4e
+26364d9a7cfdf3a55d2cee8d791af0b1
+2637c421e8f204b194c12a43ac263696
+263837da4269c4e9b0d83c10d8d55db8
+263ba85e59306fd571712007a75346f6
+263f4efa9ef3a4e83fa4cdee721d21cf
+264001400ec2643cd03cbf138444da04
+2641fc189a422f187cfd2a6aa19343b2
+2642bc9a41329d34a7e8c4dc2ff79524
+264456c4c0ba9846f54e044dac221b46
+264770446506291426797cadbf2e6bce
+26483bf864198cdd5fa5153c15a1880e
+2648e40c4e91b3f28625646912a515b1
+264abc5264251f17613bab1c69b3c9ba
+264ac22dbfb9e8a7a3a09042db588ece
+264cc9e9d0c78f89907c641e4ffca7f2
+264ce1cbf3fd0d2b96f3f0d631f6f4df
+264d78ca402857a1b9207d84c7b8ebb2
+264e08626ad8accebe4af504ce469a74
+264ef766ea0356f78f019e3c51d366b9
+2650f586ffe9690a0a50a27966694e00
+2651453c24b42b645de817a05f48824c
+2652ec1ac411a37034bf015235a421b6
+2653651bcc2c8c49d8a754a11861c6c7
+2655aff5fc2ba42467933c7533ffc7f0
+2655f16ce76a6870a47a7b8bc77e8fb3
+2657530c6733c22be6fe52be864dc8a3
+2657bbedb4082a9fd3ffad475e1ae7c7
+26581b8647231e3e3033de37b68516ab
+265912cd60af47b68b32af3f23016e31
+2659431f9edcc9eef4e91f87e050b382
+265a3956d2f343997cabe3895eaafcb3
+265ee3126e7ed3ad7416d8fae7b09a12
+265ffa505a7b62419ae811f4a35a92dd
+2661811c5fc3d0f84a2d2335e90f4be5
+2663d9be4f2a14c32c32710c0e4143ec
+2665a2d95554fb516752ceb7dadcbfe0
+2665bfef3edab07e30904e6525afd278
+266625ebf77bd071cba64b97ce776da1
+266766988f683e107fc45344d94fdde6
+266787eec575875f33597fb2887c0324
+26691294c9672056234895cb29fb7b88
+26692bea5ade0d84570e1838ae993dfa
+266b782bacc2b87f7cd864c1b86cdf89
+266ce4d785ce105124780ec4f99998c1
+26719fcd82d8b29f2e64736504d9df63
+2673fefcd9ac6d190d97f2d1f11fe3fe
+2675a19d7775a5f311cafae2921702d6
+2675ae9470fe7cbe2aba675a6fcac86f
+26764e6b14ec4787fcffb43b4bbd9b5a
+26767256e23b96a62e83274503b3b0e7
+2679b0c03597ac280fcc788161166d9e
+267ac6866aee57d53ef1375d59401e7f
+267cae96a925465c13958f46f95a0481
+2681147467b16a0f9a3bbf7bd614f7f5
+26811bba651f442e10ca70e4895ff839
+26824016b5a69cce2facc5f72ff85660
+2682dda97ab9399532881925b2767230
+2682f0738a2a391b09646d9b6408dffa
+2685ea02bdb4ac0bf64c335431094a93
+26877848be535edfe4e57fad2ccaf961
+268938b6e69ead5d4280bc90fe227312
+268c0b8c9d87d718e91065a69f8b4911
+268c204c713659f67cc3a3adaabeda8d
+268c3eeec2d6f8ac045ec48fb7ea3b7b
+268d1339477f2b4de6d8728438a6487c
+268d4160f02cc9b08598e5626459d4a7
+268eb0345924a662bdae7da3bd604386
+268fce392976505b67f65cb72ae77cac
+2691115a161c5ccf4980f0c54ed499bf
+2694b272e257dd253866791ea5b2ba1b
+2695d59105c3ee51e879a6e04fd7748f
+26974606e29d4be0eb9f99f605f37842
+26975abdef0b4325e2900ff63b1ff981
+269df57abf1916dd0843947bd25e3b3b
+26a271fd0150db3cce8113f160a8eba0
+26a6aa310f6ef43733ee864fcab36bfa
+26a8b09b10f0ac1f150e11ac8bcbe808
+26aa49aaca89b6bd4532cfaca4b98437
+26aa862a01d64037ed6df819bd2396ba
+26ae5cc9ee2be50899467accb2967a5d
+26b13c68405152386fa925fdfe90b179
+26b309983c8ce7dbe8af94bf26b4d1a9
+26b35d5f6f934ab81d87cd3173bf1499
+26b44d8be07fecd13165efca1b8c8ec5
+26b5235a1a08165c0e8d3a0d2fb1fb9e
+26b84a2b94074c066d100b8fee7a023d
+26b8bdcaa2cdaebf8f2faee5a63b79f4
+26baea1c3d5f0584d1154e175e38d754
+26bb40a92ebe5f00d6580cb99fb7af16
+26bc12125bf72bc10e52dd36da86a691
+26bea74092fb0200907d81436ddddf4e
+26bfc6416e8596bdf502056cfe842c2f
+26c2a3bae5f215140bdfbb0d7d94377a
+26c68904a5e85bb5d2153fd3a6495724
+26c7799f86a0337dc74ffa8fdbc7e18e
+26c79756efcb819a98d0d14e949576f6
+26c862b4819fb08ea5fd615b59b6eb79
+26c8d9f1c0b2f5f76e7ababab8de1241
+26c99bd30dc6075e908217fc649ab067
+26ccf38f3097806f761247fc658c6d67
+26d0ad3d2be914c25472152f9404bf93
+26d0cbaef0a902ab4ac7c52be302b227
+26d12b44fd97f44cf597116729b18ae8
+26d32bf07bdec2d63c9a905bc12f702e
+26d3cc420e3c294f2182dd3061722fb3
+26d55ef9a2eb42ae9da7cdf7a2008db1
+26d62f9cc119615d6d73a6108bac1670
+26d9db2be9c08dbd0cd83d09057d58ab
+26dc6c0ab36f8ee64b1f4b2adccbd1d9
+26dd2b2568b1f646a48fc58bfec096b6
+26dd7dc1fe14cfc29ea1b29534206690
+26dd9abeffed7a25a2e31c0cb4917e33
+26e1649cc1c607166b1f96812dabf7d2
+26e209e3b5aa22fd492dcdb08c2f5ea1
+26e2f3b3894c24d7355843de06f3e741
+26e33b964900f3450585de422539ae70
+26e3c08095f9cc6f8d46d55ccdf3cd8d
+26e4247bb18d242bf0ee256b1b3fa7e5
+26e6c47b0fa1e9ee86dc149f91634e85
+26e7c888ed87a301ae545b722f47617b
+26e98276419ba68c74f1a36ae7b45553
+26ec190fb852381a85906a61e6a0ad28
+26ed8134b19e2bffbb4e550b582e5489
+26ee5963aa9a1cf857bc54c14643805e
+26ef4599e05785712027867ddc4970b7
+26f0a94beba274f6e5359f57e4a65d57
+26f2c3061d196577df08146c28632bfe
+26f4d702bdf83468e6c599676863312b
+26f82bb1c9a0b6d88c30f7d8bf746900
+26fc197dd46bf8c2203c72ad220476ce
+26fc4110599d9a078a87c3715c28e34a
+26febdd1b1865f04a194e4f045deec1b
+27011e97e142a763e7230ef50b9245f5
+27044fb8f6b104bd363f737e3740764e
+2705744d12738fe0aebe9895a6c3379f
+2706b7693d728e893cd742e6c5455eec
+2706d9bbd6832367cf3e5834093ae917
+270b257dd4ca3e62b0309b3a6a43212d
+270f078170288700a5f7e5d5d566af83
+271237c6f226e319ff5af783293292ff
+2712657c73761f47bbf8f02a18a43b38
+2715b7ca7352ce1b3af0b0a5b72d0de1
+2716eb0c6e3ad0a60057f00463d9ae70
+271a79ac295b93ef5dd5791e5a625616
+271ad98f6c2796fb4e398d711bf6af9f
+271b4aa77f6c8215eb62946f69a184dc
+271b81ddd186be40072cd540fc14d9bd
+271d49b168e3d02a55ef2d97bcc78523
+271f7da74838dfac3ad02d3d862691b7
+2720acd23bb67537dde491280ccfdd8d
+2723ceca4f098687d82437ecfc258f24
+2723d20298320421044f23a0010bcc74
+27246f9451475e08fb66c42d26a03dc8
+2724e29967f0e3fb0e21bd25d312f9bc
+27250db85a27ddbea3e93818413eb7e7
+2725bd217181225feb07eee4e4193573
+2727f1ca3a617794aae4a969d4605357
+2727fa5c31ea69363175b93e4c845c6d
+272831b7e88ee7b50c52172f01101c5e
+27283b3d3b57b0c16af83c4a357e3e9e
+2729d1655e8d028fcfe83cffdc98849b
+272a8051d8c069abf1d8e7b5b73cb593
+272adcc6daa026bc675c31a25be71649
+272b7408227edd48281544bde5ee926c
+272bf9fb980fb3046328e70b51f8fe69
+272e573df0e5bae8f2f040c42e56f536
+272ffcbbfd7aa30a666db0f029778173
+2732ea9f5c00f3568208a83c1a9d0603
+273466657e68744dd3d0733b38453047
+273470d89e7c0124497959e9b8f9ba51
+27352cf284820b058928b7a9ab12b6ed
+2735ae92f039ed00de6921b5d73ea02b
+273855264e1105143cf7e3c2d40e3a71
+27388b8f989b42bca0f6c555db3cbc45
+273b2a858151b4a9c238ab092e2562ac
+273b4c71b29f266c8a6419fcc0673d6b
+273bc07a65dcd3a2d0576670513371e6
+273d8b47e2d57417e706e7989e63a9e8
+27407c0f519795770086701e425f5337
+27411bb34d1c7c0a84f14954340fae54
+27449c06d0ab895bee1475a611791667
+2746e8ca8572542a23edc81127346252
+2746f2e565e5de8f06272a4b8194a818
+2748ea5059a311850f97a201ed3ddb3d
+27495cbfce9021e60a436173f2f70201
+274d7ec4d7a320bc3ab7ff1882bec2a7
+274e690f200bbe6062b0918cd5d55c9d
+274f1362500245a2f08698a195733475
+274ff2f8363b7d695aa0cc4be4d2c56a
+2750a70f7b54f95670f1335a6db4a9b7
+2754fce9efb5bec83c28fdb84301254f
+275552c54f1e5a8c6d9e9d877554d77d
+275a28782a9b3d88868c8129d9ee9c05
+275aaff213496338e9dd19e538308a04
+275bac599e3cf6d6307d794b5659c381
+275bf842a584120132495a0f490f45ad
+275c3a7fafc64b08455de6f554f72270
+275d129c58644722c031e3bdfe4a2ad5
+275da378cbb076b11f50c0328dc030f1
+275e3eaf51d8a3a22fdd107bdb961ae0
+275ea105519ebf9247e93d42b54a5ddc
+27656d4aaa836f5f61f0ffd1929f1d63
+276644f3049acb63249762b0e6996f10
+276b5208a9593db4e5ebb5fe6fe09473
+277044dd24abda9700c4ffcc3de102c6
+2771d3b1bc3f32604fcd4c2f803f9e6e
+2773f44a585960b4e0a3f646e56cacc1
+27745a321954192a1c9c01254c7c8b6e
+2776439b2ce5685d569b6c428c71a83b
+27769c36e732784e20a9a429bbee4c62
+277742e51d00a53ebeb62dfd75988169
+277936fc5cc6df19393ab2aaf7c8f707
+277bfb5e31608fb011b1c5e53dda8a5c
+277c992981c9e4d73cbfc0f392667580
+277d73120ced94b4ced1ce5699976656
+277eb4751473c94e3bcb313a9c607322
+27802422ca99c9635ffae1aa08e240e8
+2780faa0881a42481c95392103a8d197
+2781440269da78650ade199290f057c8
+278391d2b52ca4d4372b3f5cfc559c78
+2787d59471157c1fbb858461d5cefc8a
+27892033e4b8b4cfd3b1f4d2ec4fb948
+278e460e73f1d9fc9422780eb5ac50c2
+27901a8582d1c65ad5243af396db11ba
+2790c3bbb5d4a35df9557fa1c31f204c
+2791a12e6cccc055f22fe825c31edcdc
+279766c7bdec034a34cf0d3d6df0206f
+2797c6489979bed5693de1f4789e9923
+279a59827cc99c782b8bd740c6f618b0
+279bd598b22d7529e08b305c482cc043
+279dbba3f48c40bfa58d356c3c89aea7
+27a18f94b88f1f9e8f3d9744a2038fae
+27a1ea7d978dd7735c6c89cdfc0ccee4
+27a247599ab82acadd1427bd3484bdf8
+27a3106157bb138184d42926d4a349b5
+27a5b97a28fb09fad98ad0a6539379e6
+27a6351886ad32e186bcce35d0e4fe91
+27a6bf460d96e7be9702c8538da59c8d
+27a8101a9d61b1e9de28ff11a8c65cbc
+27ac0e4198f057030e712ec12a8ea9f2
+27ac12db5919636bf3154f9ae7300ecc
+27b368bf175ca64d1955c8b0ddc7465e
+27b8a6e219693310030faf140d906783
+27baa8dc867ae7d9a50f7e319c90e5b3
+27bb9aa57c0f3270ec217917a02eda70
+27bc2e49999286c461e406c25075bf9a
+27be2174f3d54a70a440ef44228d7034
+27be87281c0cbe573cb50d8dd2e06392
+27bf05f82f6273f5550944334c319881
+27bf9314949f532a8a185ad1804131fd
+27c14c409e3c6e1ba1ffa7b20db10506
+27c3cdeced267df8f71071a884ef86fc
+27c57c453d88cf3e9b82e9078e2f9227
+27c624352b65780d0825016292d2ea4f
+27c80c02d5ea05421dd53b3a17cacb1e
+27c847363e42cc4d3ec704171f6e7c3d
+27cc801cc2c11422192a0fbf81aecfb1
+27ccc0fc8e77c6b7e02299d785f2cb8d
+27ccd61ae219684f2d82cd6ee659c215
+27ce3a2f87f5486cd05ce2003209a336
+27d02970e02e45c053d2226def105717
+27d12168e54e627e2a88d9a30f89f3a5
+27d2716993b815ca0bdc2b4439c09942
+27d90c7b5f7890a66a86d1c3c8a99532
+27daf2385006fc079705ac5fcfa8c3c1
+27de1965412665ab36e0d1b080975e85
+27de7bf4cb9915a4f0829f3e193aed9b
+27e1571623eb2584e9decd03ffa7c687
+27e26bcad9ff9059ce751270e46dd59b
+27e35e26a10846923ba50389feb6d52f
+27e391fb798c4b297035a7b98f6e5242
+27e459c7966b24e5d764464b0537cf62
+27e50924b713a4b4e6a73e4fb892ad77
+27e79267236cf82208f7eed62b950fd6
+27e8b8a25c7778169b98395456f0b6b8
+27ec5fc120c7f8e77065eaec073d5c2c
+27ef9aa1c743e8991af173f09cd02d4a
+27f08f01fb23a91f344219b5857d83f6
+27f18c2c6ced173d9cf4cda4986c90db
+27f22e782d71af56b132feff1f83e38c
+27f340d1d1892daf716df0f69ba4f83f
+27f46cad01889599ec404e16663a652c
+27f4d18a0cddbe748aa44752053793a9
+27fb29af88e4c1fb7a318fa9c8bb7bdb
+27fb6950d11141c248d3b7a9a6e37872
+27fba2cf3f22a45f8459c5b7b0234d5c
+27fcb9dd3bb500521a275ae8573f2f83
+27fcc76cad0d4d123e671b62271d8166
+27fde1e9ea5605f37ae429cf5b50ad6d
+2801a0ac7d5e9b34e869244310025fc2
+28021017aca172b4b8a467a7bb411510
+2803408dc69537c1568ae2f4260e151c
+28046e2c0aaafac3625ee6165a2046ed
+28054f146f838ed5e96da08bc515909f
+2805624e1aadc9869b608faf0965de36
+2808fce6536a10c1627f22779addac64
+280a6d53eebbc93ec7070bb905cefc58
+280e65ac830e5c36df50ba1c45e85f10
+280ebe759b530003d750b13db1b022cc
+2810f4ed6228adda8c7f6b1ac8622c14
+28112ae8e36843b3e15a703608ccc519
+2813474b9ea7adc5605320c667bf4ae9
+2815b9305245194a4ef04479ad84904d
+2815c62ca44a9ce317ebeb9c48884e06
+281758c04c7938d641369d60c250f44f
+28185ad43c5e4bdfc69b569a3de56033
+2819fe706bbe44cebc6c2902d5475388
+281b15510b4d489014bac2f9f02f5f5d
+28208748cab71eecce8ce5aa2f6f8e2f
+28219c3ee8661ccd951b80ab48acaa7f
+2822cc3cdc03d998e929fe0b4333eb5f
+28272f2ef5e41cb28266726793bc0eb1
+28278bd0a1e32506e55a3214af048828
+282979f66fbf53996ad511881a1b60cb
+2829abaf662901591b43f99ee4f51b38
+282b26f19bb0e6ddf7473ee4d67279ea
+282d20a27d514da77ab1531fc96ffd4e
+282dc2f4cba1912ee642e09f4eeafa92
+282e704565fcbbd5e9c488d2b7995995
+282eb3bd76a67533c33f358f0c64ee31
+282f9c421f9f6321695cd520b56bcdb1
+28313f401322c8c1a65697c0c527c398
+2831402ad5170f79f956415e5a2fac5d
+28323673060c7d786d8213f80f9bc8b9
+2832ac76853f9f115d652669d9aa2846
+2833bde063f81e1651d066d2eaa751aa
+2838bfbcfb80aaff4d0860c322e7f635
+28393b1acbb84ed19ab965341daa5729
+283d60cf31c710c61ac2f1d1e4ba4010
+283ded9349b57de1cb44d9350af8bfde
+283e363958afafaf8ea155e752ee7d7c
+28407e3f12e863e9ffbe54ed1e2119d8
+284086bfdcf781d0a464e2ea7decb395
+284086e3a1cd5148b2a3bdc803953997
+284109405e62a3f9aaf6d3b816fc0038
+2844e31409c734fb83d502723cad6d43
+284623dd0474891fee5ec06a39c7657b
+284669b3812aabcd48b865c29ea6a5c5
+284b5a83a122502cb9a5bd1740c28f65
+284c7384f5316ffb1dfe0d1d1ce5b020
+284d774e619c125a14177e42e81e4fe2
+284da3a58200ce36e9ff61f68258aed7
+284e5b874b76f37754302dc9b6dcf709
+284e814c0c687e74da237fef5e807f58
+284ed0ad7d5b758c3e5ddeefc89871c8
+285344174bb8c7174a8d5477e23cfec5
+2853e8dff5ccae04f07a97f3d7ad7250
+28542bab39d0850705d40c69d63c30a4
+285442c9138735e439ab4ccd6a730357
+2858517c22ebc97ef617cd34cc395186
+28594d96a7e3805d7ae54ac85704dfa0
+285b148ac5f5c66ebda9631dd476fa47
+285bded72eeace977ca77c0cf878a437
+285c16ccdb48dcf9aae9f766a8434610
+285c2cdbb8f7549e2554a4d75b80a57d
+285deb88265440d335072c51daa2afef
+285e03b0f5ea523912118b1e70bb6913
+285e417317dddece917b2a3690c86d8c
+285e7f89c2653bf230bdc02696d0e77f
+285f0adea47b57cb0d4680662be141b7
+286047d4fe2783dbc244da5b35a3b5ea
+286091ed30da0c7b77c9d2732c0db5d1
+2862133ebf0d9e2cfeea36360dd121df
+28642291fedf80e854801f3328ff72e1
+2865c31796b964528fb3253c135a015e
+286771e88711e66eb4f801c50f3d85f2
+286a57cebf40f39f75ba950bcd2ec2b7
+286f60a788a6c8b4b632b703c1645217
+286f6449a778904b79d4d81c0ae8118e
+28716bd82dca139ebc17ee388f029106
+28739f591cb44c3f78b4a7adc2081bb9
+2873a4ae02736a148cbaeb3c47ca35f0
+2873a9eda0c832409d155f8670086aab
+28749a42163d3edee68ae55c7e61bd41
+287560099f12f3f7907280e402fc20b6
+28772dee5b8bd2b3d1e7d8d45aff71e4
+2878c8c2c4c376482b8b4f082312c3d7
+287a1319a4edddfe6a447423080038d3
+287b9d67edc90dc7279c6d0311328d64
+287c2fc0df8a468cd28c23e6c4e9fde6
+287f5940146f369bcfb149c266233f4b
+287f6a8570d191610a1404c8d478fab6
+2880e8679b26c83c34d446905522c0d3
+2880fb1d55856be6d28840b56a0c00e5
+2881f00faeda27660c045be65d92c855
+28820a49d6f6535bca25f260eb4f8df1
+2884f7503a7887c6a27214f93807da5b
+2888d117f39632251f1817d1863b1b3a
+288a6770b5decdd981b1cac1f4567aac
+288b231fb67ca71bacc1b9610e80a090
+288ccc9b3ff7e7edc6abbf5392e6841b
+288d8400d5f457124d980373ffb533f7
+288daf9a6bc30ebfb55de1de07575cdd
+288deec2e55ea5e1f40a40b4b28ce4de
+288eee1fbddd96790fcf48c2559afe5f
+288f6a80539bc30ddb3a6c2880b3d27e
+2890ff01ee0603ce951a0b5aac352ff6
+28923c92980c77a0ecf4edfe36a354bc
+28944ce2047e683d4d7a2d6fc0af0244
+28964da800bdbb8cc823299d31924a64
+2896b9c5157462173fcd992acb9ce660
+2897f6a64d1213373105272033ddb983
+289824f009550e2c9c03e3221272cc96
+2898a02c848cd185bc8276d862ab4b89
+289aa06e004fedcd32bd313da295b4b6
+289b591ccdb085a5953285590cd31dcb
+289f18321d8ba6f54b82d0edcfbcbe6d
+28a0378be24361841ee30edcd46ea5f8
+28a4e294edaa4a6a3e2536b020675898
+28a6557739cfbcc8a91ea99555f09ffb
+28a8529cad3a28c26ec20f9d8acbf2f9
+28aa13e75dc64ca642def6137d2dac1e
+28aada080899f573d3e82ccffd507ea1
+28abbc21728deb8961fd71513984ae65
+28ac76f15fcd088d60a5b81e70f2f6ba
+28afeff185fe20fbfd5773f3041a0c0f
+28b2afe82205c9a2a2706a10f0906483
+28b7314e966befb05355023e12d6462c
+28b7736f0d226cc40aa3dca2d1b10cbd
+28b95b6db6974ab7dfb10d2a243ce490
+28b9a17827dd56ff2bce79d79fcb1ded
+28bb364d1ea9aea71f29ccc457214ff2
+28bd96cd408821d721a9690e85dc085e
+28bea75fd8571b31cac2a6290fe65805
+28bfe14dbcb1afc2b5b20669588102a8
+28c1fcd69bf3bd89a85ddf54ea99eb80
+28c2bd716ea6015247d44b14da6b9a01
+28c4d98c008bb82103beb6f81a550d76
+28c50418507d7e7d51c5ff4bd1589a36
+28c57f240077392db6f43d396f4463d9
+28c5d53c672fe2b39facc191508b829f
+28c8374cf74144f7a319572ad037c8c6
+28c9ea493c7d79aac77e94a15c757579
+28ca0db065a93e2c76175786a9d3c310
+28cf49faa0f105f339e3f7a6b99c8247
+28d0ae4efe1be23960ad85d2d25034e9
+28d0c46a44600e65b96caf90d9343ed2
+28d1c1dd48206cfa3728ef025a4d51b1
+28d610caef84bec33a19c864b4b14bf9
+28d79b60fb216c681e608d7a2966dba7
+28d945934fa6189c357312678c6ddbe2
+28db0e74988f18c924d642c8f217fbfc
+28dc2c7eef20fd993cf6f9d626def43c
+28df43feef1ab0aac1bfe75731411c35
+28e162dcb6101a8d51e91a56a14ce21f
+28e1d834e441875ef520e1ff147a7b24
+28e210ae4101e6dd931a8d7909ced98f
+28e38af2f154332cac7bb1f06c2a3648
+28e5f528d43a4f34900dded9fd492be4
+28e90029581bf27a587016487a1b9246
+28eb007365d6d8bb8d9f4716a10bdbe3
+28ebf5cac545d356e3fd3344387935b1
+28ebf70627158a3ee800cb3db9f48ca9
+28ee8eea63905b7b1feb654b57ef373b
+28f00ff5839deb4fec9371c44c51d536
+28f02eb7926ddd24fbacdcc1e6f8ed3f
+28f1dee51a5bd8cad8bd07e9d879cfae
+28f3d12853f3a11b5308b513c31048ff
+28f4e3460e1af7c9d9a933c895dbfbe7
+28f59569916c19d7b164ba518e8b3a15
+28f74313f443a400308d463ef55fc7b1
+28fa81f55ebbed1f2466c8781d88bdcc
+28fa844ecc5bad5b3f1abf37a8a707c1
+28fa9652a7e4e44313291b547baae726
+28fb0d9842af8c033702ba16b8631a77
+28fc38a7dd12e0e84d91972374d724aa
+28fcba8352ddbe081f9ce5b50a9bf62f
+28fcda09295b406069e8e35ec37e89c4
+28ff2d8a1919a8ae5d10069e6c2d6716
+2902c0c097c14eaf8a6846414e98a863
+29033b06c438402b80e37735457b1c19
+290490e8b52de8b48b87b297c70784dd
+2905b004864d92207399605aae2ede90
+2907c09dd65fe3ddad0706e94f7c2c23
+2909ddc74f66711115b22f81a7cee159
+290a644128484b034bc8ee22b534a647
+290ae49f5ad1413556f0a20e3809605e
+290cd074e494881f0f21306f0c210601
+290e0bcae7f26505820e5486e49aec8b
+290eea53a38d0966582663f12c491395
+29100d095ea19f8e169bd436080c6cc4
+2910143d424d18e4386e9ca3e9854beb
+29112f1fbad82a1fc398ab39af6b1900
+29112fc72b590e18313a9d770aca4061
+29114c861e2c6c1cb3690527f540da53
+2915a0eaa323a230d670a9a2c1e7d131
+2917dd52e273a4f106275e720b084f83
+2917f9b96dae975d3c4e3701a9ce8512
+29185e35f4d4496e5e86f11a41e5043d
+2918cefa607dac331bacffca2e5a1651
+291928cef8e53a31aadecbf5c5abf677
+291ec8ebe7fbd342df2012ab75167e6f
+2922fcd00aaa2399a6905feb057fb8dc
+2925d45665d2b2cc02c4eb1b2c9a8e89
+2925f27909f08cbd91d256f000deb832
+2928dfcda373fd32875740f2f8b0386c
+29290dd2f0b9ef0ecfa1d3d6ef30ea4c
+292ab080802b0cee869677a6fb368c56
+292c873419648853276bb1d6470fb3ba
+293266e3e71bb8f104c4ab1f006f4a9e
+2932dea4fc0afb6389fdc295e1ae6573
+29389e033432d708997c63d4b1b16949
+29398a74c97780a2de31f2d892e52ebc
+293a59f01125d818adf997fce7bc7a4a
+293ae1845b27a38a63fded8e586ae631
+293bde7481622b60511d735e69b70726
+293c413d6524538306c8607398a173fb
+293cf935b1eb5c036cb08ca1d056ee2d
+293d7cebe6a330db64fa79f91b06d2c1
+293d99fc1ce73254a45efdb1cf4db873
+293da3ad8856230940fe3c7c69422e15
+2940b2b254426cd5d0fc98d609275d02
+2940db37f2b480836e5634328fe63c98
+294306ecf251afb7d3ffb242322c1277
+2944c8423c63f57a5733862cd312512a
+29468277b20b304aa17563869fad3b15
+29469ca7f6de329a3b4b8f78d81f3463
+29480b3563bf77652a92fc28c0f552be
+2948d149c196efd21657253e159f9dbf
+294a40f75d8b7e5d58c15a9d1e25fb9a
+294ab43bff03956d3ad3251c645bbbbf
+294ade6d7b88a34b0db9662313c9163c
+294e70b1e3daa2ee44a9edab5f6b418d
+2950f89069ffd8d0531bca45ba4c5c91
+29516e0f135894a8257b75dd2c454316
+2953c620a40396f357fc28234f614e92
+295427900bd77fa811e86b37bc8bda43
+295498ac12e8875de37997f48f4ea9d8
+2954ace1bfce488066b6ce63967a2d85
+2956b6ecdbd9c2974cf6a2d644889958
+295761e29a79bc18b89bc36d7e8f9987
+29578daf2c202f91ff411c6af4b65547
+2959359a9c0be10b9126037045bbc4b2
+2959f06f3cebdec14ea2c5a88f09ecc4
+295c7215ff97e251c69dac10a7a3326f
+295cd399f55e993e3e82a81cfa50555b
+295e260360b603f942f6352929351950
+295f51115b58835843fc16b4d34cb413
+29649be138f1cde57129fe66145d7ab7
+2964b08cd3757dd9800955bc2b28d3ae
+296515cbd46daca0f17fd1f7269332f4
+2965916bf038dcc2528a9fb5cb398881
+296622bf267de84346d7d675777322d4
+2966ac1205dbed991ee29c74bb7ff804
+2966c0f7e3acd67849da85779d1736ea
+296a54f67c4f469e0f81dbe2cdc79230
+296c785c560924f13a657aa78b18b533
+296d778ba203eef08825bec7b729b57c
+29720832ba0d2a099f762803bd87e21e
+297315bc867760fb0f8542a9c1e69515
+297355f8ef7e990119cfc228e1f75bc7
+2974512f4a86dd69d60577e3587bfe99
+297590bebd958de5eb46cb7898a0f4ec
+29766efc5a9d8bd7582b88529aa687d1
+29789655993975404b0423af495917fe
+29797223ba337cc0a19160135531c7c5
+297a5cd892836e02e02e75973e63ba0b
+297c2cc9c83b182a3425978f43b395a8
+297e2e3d25789a03e48f4914dabf1578
+2981b24a8ed5ccad8e5b77aba148a65f
+29826a980808e2a6ac992f6e3ed8a0ce
+298333bf0802fdbcff07cece94ff7ad4
+2984bd4cfc94e6bb3682d111a67dc74a
+2984d2d255a5e3a23ebe3755f77b7427
+29870d8763c0c19b3a7325a69d873021
+2988619b9d43c03abb41d1a01bccc800
+298ae2a541c6fb5b7d7b9970949602e3
+298ea4504b783283b8e3e53c50b6e7fc
+298ffd88851e55cc0b475de1648d204e
+29900c494566d3d4f9315686cb51d941
+2990a982f0cf642fefa482c42ef27e95
+2991949b2a31c16b203a167be1c860fe
+2992f639ca33b74fa7b1704a8baf4e8c
+2993d7896c87fce65dc63cce52813bbf
+2993ee29e7594a37201a56c234f966ff
+2998160594a163e2bd614384d4f54b45
+29986344fcf2164ef29a9bada70b9364
+29989eb215507f0690da3f0f4b640247
+29990ef9c243f83111b9bfb42a3d002a
+299ab457df85daadb4efd4b00d89f368
+299ee49ed427105690627bb58bb3aff5
+29a3cf3b1083ca97f2d84c3f19c974d9
+29a5b31c71e0968d08e3a0bb05fe1c7f
+29ab1a2a3f3c8dc2058802ec27d4e6d5
+29ab57a19262ebff16a760c619b28330
+29abcf4037998d0fccd4f31e7e260afa
+29ac19a8a062ac64772d2e8e17a71ccb
+29ae3e8447f5b050b2be530db71609c0
+29af74ff5dcf70caf98ba12f73dfbd2d
+29af79909403b2e51982b431dec7d6fc
+29b0197849aafcdff8edc0e7058071af
+29b12655f8152067f058ad0f3a811419
+29b17e7519c831f893141f9542c833dd
+29b1fdf3bd9335e15b32f8d340fd0bc9
+29b2ae7b5d886e1fc0ead35e4e961e76
+29b34bf354bd3be61b3ce70ac233135a
+29b4ac2f2e50627666d9db25b2b8b187
+29b4bf02a10dd6b1a497075b4c9f66f0
+29ba39ae3c9a580b79d22db8b5164c84
+29bb9c24b68816c4d22a37ce85807651
+29bde50494a871726b090b7c68d9a5f3
+29bf3eada702065d1124e968fa76442c
+29c14698398d9b4c9b762b45d75457d8
+29c180f6134f915643462ab5b3ed709d
+29c3742a4e44a6bbcd6a3cd425b312bf
+29c64f0fbb326697217bcd04dea5938b
+29c76624bc7c285acbfb69431c6d39f1
+29c8e0322d0a37e9bb06716e2b114778
+29c936bc1759f9417dac45981719841a
+29ceec524d3abea8ba30590bc3861dc2
+29cf6c9fbe1dc84756bc1e156a3991c5
+29cf87a883a757be07aa893bd0dd678c
+29d20f40ff525111d708626e692b9293
+29d4edb5e7b4f66e34a077142be4de65
+29d5abbf7b17ba018f8dabac4d63e60b
+29d7756e3bf92ffd0f16d03ef519ee44
+29d8d1cb9c736293e765633c7d293a1b
+29db80007fd9a7ee5f288dac0f4b1d91
+29de000170d2b1775c8898ff9aa708d8
+29dfa2f05d397f225883c48c4d1d3b10
+29e1e12f1c387186a654cfdba5d5364e
+29e1e3aca2b57a709512192540470f90
+29e2cabcc23e73771e5db8da12f43b3d
+29e524f75dc637de27302de2414ebc5a
+29e7647337b91afb754fc9d5826cd0ae
+29e778b9cfe28cee9761d99b853c0b34
+29e870d2a1c80b5a911fc45efd6222a7
+29e8abbbc20f45e4a782840d4406b86c
+29e9c9aab1f226b44582a34b735c707e
+29ea392228fc2948f16d7f1ae1341a03
+29eb0f4c21ff03b42db2fce8dc9317b2
+29eb23f8f6d1db96342aa53f60912132
+29eb984d80340769870ff6deea286f8c
+29ebe6bfb1c8fca9f0714aeb306915e9
+29ed472a9736824c7d6040bb5043cb78
+29eed039fc898854da77c4a5d7c5e6de
+29ef7e3e4592692fee84235712a603b1
+29effe6808a4886c1f2fdda951b81cc6
+29f034a3fe7ceeef93700a47871d38ba
+29f0d2d6f4ab64de4c223ad63c99be6a
+29f20b2b6e598bcb329bc9056455fffe
+29f3d979123e4d496a0c4c46cf21e8dc
+29f50143a51769f224e9edb7c601a696
+29f71bfa78001c4c1b76cb4a2baa7e0d
+29f7f5fccb153f75762d30157d7b2b6e
+29fd6639ca9813cd680da5b6a9ed009f
+29fea0396096069a878fcab69b5005f4
+29feb9eb9934d6872b881879334458f3
+29ff336611641d962b5f1f6ad5254080
+29ffcb6a42a3f388546c9449cdebb90d
+29ffed1d40c72526288351b5011b5bb3
+2a00dfb931040f6ad7edbe7a3ac4dd14
+2a023056e0890f785930bb1de6e775b4
+2a0377d80046352abb8a042b2a9659ed
+2a06df47503456b22882b6a6a025cc4f
+2a08857163c8b75dd22fc8799f83b6d7
+2a09038299e7a378f9535bb8d4215d98
+2a09d36bdbd2756dc96072a0577b6436
+2a0a032f1566deeb4c7773b6584dd868
+2a0e12bf96ee604361fa7bcc36fd8405
+2a0e92bcc3f07cd1f68031fe8b21c4e1
+2a0edc9305cc16b928b8a4af70606ece
+2a11062da3ced2c0e4d9501510a7e343
+2a11bcd858e7354b672e1b8117809a4d
+2a11e2f52c6af151bcc143bfde04ec75
+2a16994d5e6603a8b199c7720a95a4b6
+2a18647f685bdad622f27b388b86d0e9
+2a18eab9f0c7d3fec2b1f666d96d72df
+2a2070be8299002c9b1a39b939463f15
+2a232a5975bb6e22279d73c91b9b09a8
+2a261181adf603a8a4f94caaf1f420fb
+2a29193c25670fda9ec49f5b2915e50f
+2a2a1300871101fb39c48d0f572f0d52
+2a2ad2ca000851f07abf5823fbf327c4
+2a2b575b047b286ea70c0afd0e9d2f8b
+2a2babdba9204f4dc0e6057622181773
+2a2d5190f4d626fcc8f3cfdf4a466f9c
+2a2df60a2e8e36f9c2e8e8ca5e408c40
+2a2e15c4b30562214c9a1458ba1446ac
+2a2f46c71390885363233839f01ac437
+2a30f03e8168d75debc62dab5ef54060
+2a322404da683bac443cc8f754877a56
+2a32473b2cc50c371c23bbef61c6bb64
+2a3305649d8290803545bc61f4aadade
+2a33a34c0993d6be47bbabc6cfeacbef
+2a3422316d930af63f6dce35c0612cc7
+2a360f14bd35e2066e5514b23890d033
+2a371a3c96f75e30a7cf43e21b668e47
+2a37510673fa282d1964f784271a0c2c
+2a37a50bfa8aa525b66b6a4dcb9c9e52
+2a397e8f88e4d60fd29ca4dd31676238
+2a3a48ff208ff25f691130ab63fcbfa1
+2a3aaff72d4e4913aedb16f5ce5995a6
+2a3ab9a00fdd851278efa64d4df3e6c5
+2a3b1e824a48ce063c8c50adbb7780dd
+2a3bb4367c7a2a323eb07ced4c5b570c
+2a3cd0bd04c461f4360ef5caa95ae793
+2a3d0ca259ca626d36cb7d21f15da549
+2a3f23e6bf183acc06adfd1d5e5ef7b3
+2a42cbdeb025adfda34839cf4aab7d69
+2a43bb53ec13ad72ab538e575517f110
+2a4447b539f34138c635074614bdf01f
+2a46834ec6dc96afafe4f7a975eee2a9
+2a477cf0924915a8ff317fcf76c682f9
+2a491daec71a9b55951375cb189c4e63
+2a49cb1aa1d411ce78d2b54e56c7c979
+2a4a2fa6abd1fee5b1763397dd67dd78
+2a4a63c56011d5414d177015907702a7
+2a4b1d376ac19df8524de9bcaab969db
+2a4ca1f54dfc0b4e0fe8c1bfb1ca04c2
+2a533725980cc23c59a9858b191c6869
+2a55e80264390ffffe397e1c0990c96a
+2a58debbaeeca30a29885337a72dd458
+2a59d1a99d9359790e57347354450f47
+2a5c7b67d4872369c6da3b0895fc9333
+2a5f254ef3887a654c8120b247352a59
+2a5f524da2cd3307f485b3d94706de67
+2a619d84c777b4f786c7e72e4b0f9179
+2a6305ac3a1de42a011e7b166257d8c8
+2a6537113ebcce5bfecdf87172a17b70
+2a664f9790b95b1b0755d7658f91a8e2
+2a67a689260e5562b4e395a523a3d0e1
+2a6a04a5041cb025142eb697213b25e9
+2a6a5a5c2cb6d462088cb354258455d7
+2a6c0645f09b0ee623408d71c1226086
+2a6c8463ccc4fec7d6367aa264a6ea5d
+2a71acd114a6b371b101a86418b9adc7
+2a7223396cb6b34996311281fd7be9c0
+2a729611f39d14d7a50d1e57063f9fac
+2a780bbcef5d5505b9e0bd26b77d04e7
+2a788faf2d6bdbd39652f3a619df8004
+2a7c76d6d8852741e0fe87ff59757ea3
+2a821bddc7636d69c4e3a8e14228c5be
+2a844275edaa17346a43818bb7f1a97e
+2a86d9c59a3ebd63ed926dd1e06fad4b
+2a878a0d220a51eac74e3b1d4df8af18
+2a888211d56dc049c1404b283f3d4083
+2a8914590952a9f29742b5552e69e147
+2a8a84e0032603765c701f233200327b
+2a8c0fd2978bbf1d5927bf50e7537cda
+2a8c8f3594fc29dcf16aab1f0e2d6167
+2a8e90092f80f1ebd78fb9387b3d2801
+2a935ea55c7eb4a3262fe7ef05df2300
+2a94326f0629fcf9857017c3bc0da5ab
+2a944aeb92ba301c93d31e5cca324bba
+2a94ca5e41290bbb7ecaf44d0efbd6aa
+2a96ce99e35d367489cd25fdbed3daf6
+2a97d0a1f6645fa75a86f90f7e6bde04
+2a9800048d6606c7b8502db759d274d8
+2a99afffc07c2afbc7ac9ffe18412de9
+2a9aa5db1f2a23314dde1b8b17716d7a
+2a9c4b75a94f0ce411d8a86195a59e04
+2a9e0d97cc99e424eb4edce35080ebf2
+2a9e27e1adc4f00673c4c49f79b77074
+2a9ecac5ed7a516924c7ae58a2ee7977
+2aa2325d01d96838a47d526c9c1385c0
+2aa2cca4b4f30e9ee26a0a70d48817fc
+2aa2e65fe22b18328f0f9967aeed6a12
+2aa41ed02242427a193f7a37f3331356
+2aa5bf51fbae0eda45f4ef8b988d3f59
+2aab49224e7be37817936dca4bee5aa4
+2aab582089c5508071f5da0531c59356
+2aac8d6f8d78a800efa51ec3490847d6
+2aad92bd5bd3fc88b69da5283ec30d04
+2ab265789b612b05301904721ca3616b
+2ab3b924d87b91a23c168fdcbc9a6740
+2ab45d0c004fecf600fe653be8f360a0
+2ab4804b8fbfc49d79ec3204184a7b71
+2ab491ab71d0a3c7f9420c2cd9cce454
+2ab533e28772cdf614dba84f92295e2b
+2ab8cd06161395a217afbdcba6a3a007
+2ab8cf7d8148c3d21c5868bd4e446e57
+2ab9c951e1bcfb8af801af0d58bd5171
+2aba2b39cbf1fefe999667a410778717
+2abd55f244109199ce12f7287831a5e2
+2abe82bbd8d32619ec0ad3fb0161e630
+2abeaa488db85ad5319e92f3c33aaacd
+2abfa59a44f63fa95994b4258c9987bd
+2ac0654fe70b78bf94a567c8e280b927
+2ac09228f3c36e64db04b04fc3c2a533
+2ac2ded125682a3868466f48e31b62ea
+2ac566bd5c11ecebab4c5d3c2d7137e6
+2ac59730f0190ae55d3190920309ca1d
+2acc6d7cd821717487aa7534d80309aa
+2accdd8cc39372ab6f447f005e82f617
+2acef268d8f5a90b84d65e506cf583ef
+2ad1641b292487d2775bf6e754f8a993
+2ad1b40257bb8b17cdb82de0aa8d1bf7
+2ad1d36e6f83e601513c476c5023e6c4
+2ad2a9feca6f045abfc5023c1300bf65
+2ad496f05f2eda8e09a554aa4831ace2
+2ad66171d913a813a92f7bad05768ae9
+2ad6a17c6dc56278bb2ef4247851eb06
+2ad6b35d38531d6c64d52ef0f3c592a7
+2ad770e144c41aa45b44437ab9a92a2a
+2ad7c89168b9e36827f694c8cd2af6b5
+2ad812271143c00a2f5694a804d22301
+2ad94184edd22174ad9e96d13ea00e9e
+2adb6370d8f5a5fea229a36194a89803
+2adc8c1d3a1e8ad6b569e45c45cf4ed6
+2adca13c297a086a2bef248e50b34995
+2add8da544c47d72a1c2098dc19e0a32
+2ade682d3939eae9232918a1d9687d72
+2ade9115f354a6b7ebb3b2da17ef9bd3
+2adf9671e9e592f2b28a22889e08366e
+2ae3cd72ec01bd301a04d9c6129a26d3
+2ae3ecb46b2529ed43313faf996c3478
+2ae7cc552b34847e6ce8a42f4eb7fea2
+2ae9b15fc0ecada94d7cafd461a0e1b2
+2ae9c962edd79fdecd999477acf204c3
+2aead96252eb7d801d77e704cbfc6e8f
+2aeb883847be54dca215fa8d3a684548
+2aeed25550ece65b93594b767f39b74c
+2aef77109b09f5b6a18a1870ea0fd8d3
+2af0d89294ffbb7d21162ab99ce17886
+2af11d05efef738c301be0fa86ab60fe
+2af211b896f11e40fd40afbc52181c64
+2af25a39e19edf54a4f97b548482b0fc
+2af95e7e4d3aa60852212eb5d583a4be
+2afcd26492e5e5cba88ba19e91d07425
+2afd4980027d11e42750e5ba7ca3f547
+2afe39a177c3798307eab7e10ff271f6
+2afea65f6046085b40e2b7c3101bb21a
+2aff5f5053d631642eafcbdb4e3dd6a8
+2b0239f5ef9afee27dc7f8c63cf559c1
+2b02bae0b39b71a5f722fca149f4d30b
+2b03662b7abbdc95b4f0ec0693bea3c4
+2b05c40f4697644faf93430364025191
+2b05d45053fe3aab6d692ea56d23171e
+2b08f9c3a6521a66194e0d396237b3f7
+2b0c42d2a17b2bb8c4e218b1d6da461c
+2b0e5418690d729461f00b6b5724d0f3
+2b10374247e6ae850a86d5fff3fb8383
+2b150b6f160a0ef91ad14f95e2f9ff35
+2b180f21697b65497f5eaee3055db265
+2b1818a25ad2f77a1f57efa0356c4773
+2b19e5f81345fc460d486e0ae45c4097
+2b22044a4f386e119790e8542664574d
+2b22d15e186f023fc7d85c2c212df1b1
+2b25a3e89f9182c7dc257767920ea7f6
+2b283d049c4d8fee28712730d72d9d88
+2b285ea8bff8d119be2eaa1ddd9ebebc
+2b2b04e7780e553b55f9dc2bdd563379
+2b2c8234f46f0cb2400d4f564f8f639b
+2b2f9b85b8604cd42ed0de2923a48ba3
+2b309d13fc5519b9a57e3c61287ac981
+2b354b13a05d85bdc96cdc0ae4cbf5b6
+2b360db7f7bbcd813a40a26ac21771a1
+2b37dabd91ee18e18ae018f6e5124cd3
+2b38be89f1ea60c792f8d5f2a75e3e86
+2b3b24bb2f1e928f27e290e535f4e798
+2b3d2fb5330eed28350f601a465c3541
+2b3e4e0201396d91eb3355f6b24fd5c3
+2b3e716db5fb68a1213da74e64f842c2
+2b3f19510185c9b2092883e1c8c207ff
+2b407f20df57dcb45ae68e2269cf3253
+2b414e626d3369a3cbc09db841e4ad75
+2b430227c5af1cd001c652d056c10c8b
+2b441f45478a5fdeca58a2df88d821a1
+2b4696d15fc7614fd77e08060c11f52d
+2b4705432991e4569c37330467f1bf9d
+2b488d59d0399f20222faf35960f0b43
+2b4a868293b22e77b632f8442f8c8640
+2b4ce7cad7e39830cb0883add83cbb7f
+2b4d0afa254ead986408be00b7f4e64a
+2b508480bfaf2a09e2e08f7325f829db
+2b51d23ef1a88398bc4623495fa19fc9
+2b5346a83a3d09c4dcf78dae3983784d
+2b54651ea253bb525e53cac57d33054d
+2b57a1f4134c0a7c3b7b3b3bf2641293
+2b57db5b5d39ecc648fef97ecb3a8b2e
+2b59bf4abc39283f0a5b97df3eb7e0d8
+2b5ba6024f3cb6cf1e27685794e191de
+2b5d549c4bbd17047a3ff7b8c807a8aa
+2b602ea30d165c9b4c1caf10037a31a0
+2b62270f7734fff4e7c678628415e50b
+2b63cfa6a24555923c6a05fc4f31546c
+2b6471ba901e1b0fd3ffc877f0a48d53
+2b64fac30037e64d105170016ee0974d
+2b661524cad23973b2ce8fb769b204bf
+2b6a1abe1b7d7910f431f7497dde14ec
+2b6c04aa174074341e7010a82601cc33
+2b6f816dd3204418b8f6ecca3adef9ea
+2b70700de07d9ed375cb00864e556b91
+2b730dc8c3fc4e51eb3c1861dafec5d9
+2b73f5168407ca85a1f18436ed471ac8
+2b7427a434be5cecd50d137a85e8221b
+2b76b8a5fa518a797c07487b5b327a4c
+2b789e98bd72378add9502cb88c8e254
+2b7c0a6f6af26b01b9a5f70020d4a884
+2b7c2a800434c285fe08f1c525c12881
+2b7c6783f7f79a7045b2deb5c46d9743
+2b7cc727a42eb2c701ac280c33685ff5
+2b7d592842043643b78e9c54613b98bd
+2b807a655001f48c30749de84607cfdb
+2b8426928861c8139e2a27d296147ee0
+2b844d9fa118a5035bc4d18fcf7d65b6
+2b8494481abbd7d8db61fed4b3943ea8
+2b8675c2e525423eb858f0f437d53cf1
+2b8731a6747ed959dfdddf39fb4e62fa
+2b8750099dd03aca6bae07545a5e9152
+2b88507336a9ca4466114668fb891f53
+2b88ac7996befebabeafe55af1b21516
+2b89a01c4582d5b5245cb55641cc36bb
+2b8d8b8e74f5244fa8783de41b7a1749
+2b8ebf15afed3d851f5298b60311c77f
+2b8eeb41c39213c12f9247f21ca078f1
+2b904936313175bd9d503595e259ecb4
+2b90eaeb60d841054f027ac7951eb8cb
+2b917540a32ef67d36148857ea08ed33
+2b91b8aa1d38405d948111f53e79fbe3
+2b921bc5e4562df607fa956955d8de6d
+2b92692afc1122e179d1e2491b4f884c
+2b92a10b4fa7579750d9dc5498d0db35
+2b936c06e1ea5bf07f6901e42414cd44
+2b953c81fe9fea51998b506d962a6ef2
+2b96c51181177397b0dbe7fc35ed60e6
+2b96fdbcf1f2f7b7e115664f523262c7
+2b97193d80650cf0ab38eaaa0fdec16c
+2b9736c629f2def0eafb5a43c2a57d0c
+2b989b1306e18793015972134df6ab32
+2b9ad8d2b004abe6ce768084844a47ed
+2b9b1e8d8137b2ef9230f248a0ee46ec
+2b9b920d73092b83ca3112ea994dcfb0
+2b9e70cc118090e1a23e9fcf03eafda8
+2b9f37d878b2b817b317e026aedb009b
+2ba0174f07c1e38eee5c0c0bc44e9cf2
+2ba2dac14cbd28a02fbce180306a8b05
+2ba3f29944125f5d970201547722ae58
+2ba51742177e3579eddb14152973d72e
+2ba639d63849921921dbe0d22a0969ec
+2ba6b432d703f60d1912836348895c66
+2ba9755531989bc735fd82ade92e534a
+2ba9c9ed32ea118f3ef7e3a91f8fb224
+2ba9dbb117b353f228c791a246fc694f
+2babe0d112a662c3db7951a2133e2966
+2bafbba911db6cb8d7bb46e133eba619
+2bafe9669924898f8293de3188db146b
+2bb0d73b50f5604d301e6812b3f62d23
+2bb2c218eadea506dcfb65a396e47a9b
+2bb2d0f74c23d287992a48187cfafd27
+2bb61647df445ba0d5503f4f16eec8dd
+2bb6343786315f1064988c6ef60a73e8
+2bb6a6d9925cd71d2083d5a891c4a682
+2bb9c0aa9859b984d3fcb36b1bc5edaf
+2bbad386970fdc9a283e2bff40053f8f
+2bbcfba17324994e6b99e31c22c30249
+2bbd3afd90069d1045130d9b14eea27b
+2bbe7da9aaaa1b1f17ef6743c93025f2
+2bbff074614338515c1dfd7764cc0314
+2bc104cdb97c8aae6392fff4602afa45
+2bc1590a73424f652ab07c8f1f24c78c
+2bc330bf29b4c36800e3d30874714d6c
+2bc494dfd1a98cd6fb58c1c6d0bf0ead
+2bc5c9a533290539f4983fc55f050795
+2bce2735801171410c4775ab1f69ff26
+2bcf0a88ec39d546877dabfee0648dd5
+2bd09f8023736fe21eeaee1286fa36df
+2bd0bedd12b85956d04da6762dfd928b
+2bd4b7ad70c35bc8d7f872d4adc0abbf
+2bd623037b0b987dc9be3076465cc986
+2bd7ebbee1cd1e83eab30af9cc871d1a
+2bd7ee429f58731a637c649219a6e081
+2bdc0aeee682b4d82414724ce7afa7e2
+2bdcb7cab60f6fd9bbda4aa850cf5827
+2bdd583edd457283aba326811bd1e53e
+2be09c2e61b63aba07b5bea92c190d14
+2be0dbd88e4b62089ac6310cda7c91de
+2be19c7dae511b607eef9cf1629ace97
+2be2dd5ad04f87fc204b7cf6f630620f
+2be40848c1eb7fa58c3c9c04d27658aa
+2be55ae4c13aa2f69fef54fd3a726869
+2be89f3a0f06d23207a57d870d2c8ecc
+2beb8abb675555a169620af3de438cb2
+2bebdf765a89732ed6047db1c65fe594
+2bee4cd4a6f1fd4899c18df88ce903af
+2beed8be67429c33c69453b3a3bb4787
+2bf00b52f1ff389aedd7c83ecf58110f
+2bf10e2e55e60f580ff1ad9210352d32
+2bf1176ddabb5be2d5e027faa1e16393
+2bf1627b1e0362258bbaee7b198093e2
+2bf2aebfbe32ca1a09f5a11dac31b801
+2bf54fda87808eb490b0bb642664fb46
+2bf5bc6ffe94ca002b71e7fbaf31e662
+2bf6a3a5134b2cc7eccf28cc845f21bd
+2bf6beef069592f422e99edf1ad2cbaa
+2bf7069e0a401d0b3893af97f681968d
+2bf7f1baad42a0aa37e09c3c44f5f18b
+2bf91ec9421a077577a796de32b424a6
+2bf99c263052d69c7d7473e088780aa6
+2bfc467a6955aa464be3892c644c387c
+2bfe370ed276c6cfa8e103b94b579521
+2bff6852d251e94ff66c128a139f746c
+2c026abdd1b37ae1dee4b638f38df370
+2c02c74972d82b38317de6d3a2294044
+2c0335d219bdc9bccd89e17ca3670f4d
+2c035cca1c7876bf9fac6c5e8ae424d5
+2c03a8a365976977e92f6d0c8d80244d
+2c04114af240dce49c0a8414fe633ebe
+2c0415e73a311fb2a4196e7e7e6df69c
+2c045667225f4b9116cf3b5dfd38f13e
+2c06507cc2cf050056d8a42df0b940d1
+2c06beb91bc067d3a4dd686ce19be197
+2c076be65aded3ef3cc030e1c49927b1
+2c07d71ae0a6771c6c3469aeccfb50fd
+2c093f7b5e25b0503161df9599d7c059
+2c0be348a002e08125bbf6df72730a9e
+2c0f461230aa9448d60806b450afda5a
+2c0fb7fb3dce1e5f6d811f04b93b1136
+2c108205dd7d80cb4350f4fc37b86168
+2c11080b640c4bf022f919b5a7b8d7cd
+2c11b1aeabe0b99eadadcfb943fa5ff7
+2c11eac512a1bb57659d45587d3e04a2
+2c12e5780f5c68ddb36f4c2d244b81e4
+2c14c7a7553f22884b9733de7cd6fa7f
+2c1931e66c4546d6f3900b099394c1ba
+2c1b1e6eb30950cf8171e36101da9d8a
+2c1b565043ba98542847fb051da3fe92
+2c1be22be32e18d8c3656cf2e44f92d0
+2c1beb65b541a94fd5d5981bdade52d7
+2c1c6bf3c75b049a23f49c42a523ca97
+2c1c9fd7e45e04aab69409c1ef9a8e30
+2c2020ed277bc7f4b217b4fc16baa92c
+2c2167621017f155dbf1fd0ac6eacf27
+2c21d4957c420373cf1adc93226ff2d4
+2c2657618e55cf31a6bad141576564bb
+2c27050cb94fa733ca9b2830a2b269cd
+2c2794688dc672aa1b23fcfc865cca49
+2c299e93b4cb3b58de7c1a5edeff75f1
+2c29fbedb5852978cba4b505bdfd8804
+2c2dbc42260a273909e67bd3ed9a3ba7
+2c317cbd838f6b6477b8412eb0e286b7
+2c335e4b849da52d33d48d7ecce7cf8a
+2c338f265d82d201242ec48d7996c340
+2c35ab8eeb437b44e5d07e5d31052feb
+2c36cd501ff77a481ed4c5cbb8739733
+2c3753c8b6731cacc7bda77a5de26220
+2c378789cd6bd90d65f83bed7ac561f2
+2c3797b7f89e0e8d7f5ab196f3772fb7
+2c37d3f274eff95439fe6f35afed2d35
+2c393af500b22b476dea236dfdb01769
+2c3b774c8ce56b6fa39ac3455f3adea8
+2c3be427127e0c1cb04682f9138dc40b
+2c4053013313a775d45c6c8a0132a984
+2c40e27aac2fb1cab3a098f05959d875
+2c45d73234078affc9e0e08f32791821
+2c48662c49a8f889e8e82ae08edf9cad
+2c489d238b07c8b4f81f12a64237c6fe
+2c491f9714c0faf7a8ef7c7afbbe711b
+2c4b26a2f7d96a3cc8d956fbac6d3be5
+2c51844de09eb213ef01b592bd61186c
+2c52010d87d05b58e9bb93dc7cb29349
+2c556066b92e3022622e4e2ee38ede9e
+2c5645be6be34e8e7a6e118b3694d041
+2c56cb26956bcd331cf3ed54f1194b10
+2c599f5dc9414b81f54342c8d5f8de65
+2c5d1b6f626cc762555a975b0ef9d22c
+2c5dc76f0357f45bfd709a1a4eb08651
+2c5ddad61a2fd9788d178c89992f670d
+2c6158f48e0aabbe2ea7079310f6f279
+2c637e085fde117fe28f8ade322e651c
+2c63dbf41bbeb389f69737bfd56b7851
+2c6534bf1c55c0b3485a489f533aa9a1
+2c658170bf39ebd26ed3d5666d053f99
+2c663d63e2e6ab8d16121c286cc7bc5c
+2c67d429e3d6384c163147b4754ef671
+2c681284d95385fad87e5ba589b114be
+2c6b9ccce0b5ee8c8c3823e3e86995a3
+2c6ce4653e886aee7c9a2364363f0c86
+2c703d4827e31779c0bc7bfbc3ab63e9
+2c71d991ff4cf1e50ee3f20291624831
+2c78a6f8db5742a722e414757168cd17
+2c792584138b4a56a3b3fd82842ea6f3
+2c7b100e279950949c4b6f03dc70ce56
+2c7b4e7c8e82cc5fb47eae8271769a81
+2c7fb74cb998b1026c96219bacc5947a
+2c80e5e96dfcfdc88e8ad002df9c6148
+2c819aa8b622ce1dcb12fb2e337e6ff3
+2c8242dfd8f0787bd2e0aabe92874457
+2c83cebfde8dfd8ea697cf8ae72ada88
+2c856b9d51e4bd31342a475d6def0f2e
+2c85759e55af45db9cbd96e05d1f306b
+2c86880e44117c4bf68e20e95036ef1f
+2c879d499efc567a8edb6f07c1f0c02c
+2c88b9be2f85cf2e3e060954ff819ae7
+2c8903ed2fe58a658231cbce5d62c20c
+2c8cad393ce07164bddc60f107576838
+2c8d3c1fc449f3315e9d36d35daa4b19
+2c8d6ba0a5d706fa263d2c00ff73a53c
+2c8df90ac2248ba8396dab6fea7a82d7
+2c8f643a6dabef7e5cc95a5be934757e
+2c90378d04012f9a1a15bf9595c9565c
+2c906cc5894016dbcd0601880d3ee2fb
+2c920d747d8a705a1226dfdcd68e3b20
+2c92e80bd1e8f4cc9550f0c8479bdfbe
+2c94c84b6c3b34672a9136f945e40aec
+2c96485228ef0f190683155b4dc3ccec
+2c9649a4e27aa9fad81ead970aa494f9
+2c97b3d70121d32507558b09e3de908f
+2c9c7ec9a38f4f4095200a99c60b0bcc
+2c9cc7cdb5c7a78f768d4b818c4a66e2
+2c9cd9e6b9f4733194d7227d18aebce5
+2c9d054317fdb277c7b1bcba6a73cb75
+2c9d0fbaf446f64fda9cef3077d35417
+2c9d86ead9c6c144db0c548833851113
+2c9dc5afda0e0e644599ba2cfb70ee8e
+2c9f95db3c7ba3c4e226ea84a8859cb8
+2c9fd37bbb9762a2ffb7843b11ed27a6
+2c9fea923dfbb4e98abbd242f8500c83
+2ca44b4d6da8e52f0a2afe0f26f8ee51
+2ca7ce7a09a2bb3fd15af33f459f7506
+2caaceb16fac5d9393c8659576740bac
+2cabf425035a89bb69f9309f89bfe33a
+2cac70b1c36cb807c8d3481c43420310
+2cae0df600e3fd618ed2a51c3b1e99ab
+2cb0a7626df3e725bd5440b64d29f4ce
+2cb1a6e9e8b70fb2268826d3c8bc235d
+2cb203b4c5bcb917449cb90e8b05083a
+2cb327a774a50fe49930c6a15611b463
+2cb33f1e5c15d7bfcef2a673b53e4f19
+2cb75e0f9b5eacef2859838e8e4d5a4a
+2cb8b2263402ffe72bc828689360d67c
+2cb90e73625f93a840459e55b01a4f35
+2cb9f4b0cae1f9f089064362e1cc57a2
+2cbcf817f7e918df61ad9fde3362b95c
+2cbe88960191bdc936c86876b486589e
+2cc04ce9922608bb49e9d1b8b4acbd97
+2cc09bb4ef5fc8e1eb7019ff18d03467
+2cc19a6366c2fe7ec62c2474f39b0b30
+2cc823538f2e0cbb009d3e08a47d533f
+2cc997cf408b5c0b494cdf3d86241e9a
+2ccc5113095de4f946b900598a75d13b
+2ccc625da3e05524d8ac0cd049b8e3f9
+2cccfd7ff8fb69a4f33764c40660d52d
+2ccdcdb65f4802127012b617ded4fd62
+2cd0113a632bf81f13dfe8d07df5a6f1
+2cd1227a8c0909e0a09fc3678a16a140
+2cd3487e80f8f54abb96a51be0332809
+2cd62046e12872ca3f19cf0c171a173e
+2cd732100172620a6a04ed5eaab0890a
+2cdb690b01040d82e1232561653c779c
+2cdb89c9a6a1bb55a08f32bdf102dd71
+2cde5616952432b872e37d2080590366
+2cdf60ddcad3f30a744110a94c15a677
+2ce0c0e8d4343b728f0139c667274f37
+2ce5d312ed7ae4f5ece0cc8c00bff774
+2cea1caf1dfa52c408d4086dcfe6664e
+2cf17eba57606a8fc943795adbf80e8b
+2cf31d0dee9196351a841461ea8925b6
+2cf391d92f9a0d7d5e14e30a4d07b0c8
+2cf4ec0bcf89fd0ea127db7b10c974f1
+2cf74703c0f4e5e88fa9e3ac0e3d7118
+2cfc507bd2d8c8c23bb5f53febe3a74a
+2cfcbb282bc039defe22524e75f00c80
+2cff38598129ab39a8ff64c97e40b3eb
+2cffb53231e5d7ce7004b6eae8402576
+2d038f58de83385739846d037531f12c
+2d045425f0d1455bb3137337dffb95d9
+2d05179316185319a254ae07fcb4c3ca
+2d0864f1abdf8b918a54410eabd05c15
+2d087616106ccc3147cd472ba627ed23
+2d0ab848ea0f30dc55725429fd5a76bb
+2d0ae6d0cbcb7c5e21f21c88c013e0de
+2d0da2c89c779c5d3cb8200fa220c28b
+2d0dc2b22c154d87b66b10c7e03fae06
+2d0e2c33675b519fb4f876f1ae1e1617
+2d0e4c31d87db2a5645db9c0e87331cf
+2d0f509939626cd96441d760a49a0cf3
+2d108cbe2c02960356bfc25049afd225
+2d127f0e553f212986b3645d9fc638de
+2d1461fb0ef1c6ed495b4e8ee8d25b33
+2d14eebe65f5ee717630251561d171ba
+2d18671a7f6bce71750cb4f47d009b07
+2d19e09a5848c47819f8d9bad74bae38
+2d1f769ded259229178b891b160e847c
+2d1fbe352ad1e6fef98b13a306c0afb8
+2d1ff25d169eb418e728b51d4750f3db
+2d20437d2b027bacde28e955b1f732f9
+2d21197ff9697b3598564ff2ddee73f0
+2d236b3566eadbef4e385e584d04c53c
+2d243ca0e13ad35e6ee13aa8963c968a
+2d248e34833eb84adf3b6f59ada3e02b
+2d24ec1d204ed02a25d2aefd6b9e1777
+2d25c7fdbffc54006a6637d8aec7e1f9
+2d2631e17aa89e444e28b5f7b8fd9584
+2d268ef9c48e0f47b8df6fe42666cc43
+2d282c2b1cd8d4dd04a026559799fae2
+2d28eb20647d4a84257484ed14a891ba
+2d28fdc698790e77a6fb4e7794c1c942
+2d29ae875fafa74e879e9bf3c31c2d7f
+2d29af3a718e71589b9844a81ffd6570
+2d2a911dc492a29118205a52d7699f70
+2d2d8c10123ff8a39d64f854f17f7f0d
+2d2e05e09352f911df28eca9bcc8f46e
+2d2e73078b61d00c0f7e282d6d741e76
+2d3006cc150e5a66f5015a5b9926484f
+2d3447d33aaf8ff516233bf4891a6643
+2d34be775971a79142728a1f70248745
+2d3859ba46a673b2201d571002c89517
+2d38e98dd7fdb2dd0b50cc1d9ab0e4c2
+2d39a7e23cc1e979aaebfe2f4af077cf
+2d3bf8803dddf947297c13b24fbace32
+2d3c843c0f420493d980e8904c5e68f7
+2d3d1b6bfb55b7a0afd301e401eaff0c
+2d3df737ef5eea200f26810cf255155d
+2d3f173418c36b889b231c5e718c1b64
+2d4001ed250325c400921cf4f5b3ab4a
+2d416779226b7f1a5c986f4d5d36b104
+2d4291fbd8e92ddc23423a13fb172e3c
+2d43e81d9f7e14df872a77e649baedd3
+2d4548ae105b37f91802ea9660e66e2f
+2d46ac73fe4b37fbe7e1d2dba7118152
+2d489006d499b10b94b6f2dacdb664d1
+2d4a193dfc687c084831d7841e54c69e
+2d4af4c7664c516970b484d14fb9482f
+2d4cd961daa357007e20a5dcd4d61023
+2d4ea919c3ae38422399b9bf52107b77
+2d4fa03c72c285a083ab0148c13a5056
+2d54c98d06c931517900c4bdcc813a54
+2d5508ad54959b041d8df6094833e973
+2d5642855584c9d8d5397cb6af37c719
+2d57c7fc1219eeaf8d3731cffd4c22fb
+2d5841c353ca96e01c5e820c8ddabe46
+2d591b8a0e51d577690d5e28e4aaaaa0
+2d5a4ae4fb0bcd6803918d5f6b3cb8c8
+2d5aac648425e8ca3c4616db390fb688
+2d5db846ccde7068a8b8a65dc46080da
+2d5dc40f1e3f58edb75c94b33babc6b8
+2d6084a62210662ec4514727e15d3e09
+2d60a4a9f2f5174ee1adb236e3f49663
+2d60e746bb32e362cf1733d8ba5d8d3b
+2d613e1dc66b792a32a9e3eb171937b8
+2d62252373677c6347199244caa89bcd
+2d655e367aa5ff058752ebea0a499956
+2d67f376ea09f482f50036b99a4a01e7
+2d6b82ff18ed6f3c0246d15dd0fa4655
+2d6c8de6b7cc362524cd10ff0cdc92f9
+2d6e182c8490ad0c0d48b584703525ce
+2d722eb49e0808f934ad74fe82157ac8
+2d73ae474b8bbd4bf178e9f652cf7ddc
+2d74394e3e416d63d7e7cbcceaa73d28
+2d74bd3f8186d705f8b8c4c1eb9c3bd6
+2d74f5d856e75cdafdf1548b98d3d716
+2d7744101e202929e51e67f7268a211d
+2d79a8f96863371c063f6087ed0d2502
+2d7ccb7ae76433dd14373bd3a32b84f2
+2d7cfd76b0d0cc2812808801e53a0fcd
+2d7d1ff5322cf6db4d7e5ebcca62de85
+2d7e4d33f936a3390a6d429a57654c6e
+2d7f93aa6c910aaf002bfac93f243795
+2d7fb7b0b7f12c9157a31fc2c2a57a7c
+2d808561c772b205b05ed0b63f4f859c
+2d81e6af689d2472e807638b4e78222f
+2d824cdef741ed2d60a1bbb5e1b2a47a
+2d8406f55696a3aa49356fc0c6918229
+2d853ab8e6aaa8e0c0857a82c5e81e1d
+2d85f842594ae43bfb592cdc87f85fc2
+2d8788a19712ced2a2bea8de69a8b234
+2d886207d0eb4ac96ce6bf350996e64e
+2d897141bf9e642d9791422d02545929
+2d8a6a7375ee28ffa7e4fcbf2c9dde99
+2d8c286ea323cdc9cc09f2b139606cf0
+2d8e57cbc30543cbd1c7f2d287be198c
+2d90dd81b5d00df0469e2f1d2ef54d91
+2d9176b2491938dc518270966ccedc7e
+2d9184b911f632a4d0be53bbf0e91bf4
+2d93887de1808bd2c4f9b32ea3ae09e1
+2d94df1220849cbb86e6c942f5325e47
+2d982e00bdf3a7a6c3ad1a0135c270f7
+2d98985dac1d0bfebc830f2529bfebd4
+2d99dc2bbde21a839712e4209872ad5f
+2d9aa50069b483848fe0d5aa71083817
+2d9b14aee751a00c12db5f5c8ca9b68d
+2d9b5830e6bfc543577495d08d362576
+2d9c7b238554c3d95da1de0a244b8123
+2d9ddf60ac7abf311b072262ccc56132
+2d9e69941d4c666a4c8f481ca4fe4053
+2da2cf7d5cd03bb86f94c24f75925351
+2da40c4993cb7628a4955a52d0b396e9
+2da5cb0eff92d2bd17583246af03041c
+2da8ab150511fd655766e5ebb6ba5905
+2da8d88bac68055cff7a52a8b8ace321
+2da908f9ac33a5c80f55aa246367a23a
+2dab445aad891a134900a010080712b0
+2dad9b98908a109e866ff69601d4a351
+2daef594f1f8e35997946f4bdf6a8fc6
+2db0878fdeb05b9878c351302528050e
+2db10871f89cece0b12c0a1ff17bad04
+2db4bcaabfe26352eb36c60c8f30aa81
+2db51e460ad6c17f6f9722f3dbea7de9
+2db67518caf882f9a99ef0ee2fc805a5
+2db6ff60aad7a06445726efbb5152692
+2db8644449cb18a03a1d966cf52f9a95
+2dbaf81577eb4e427d59a3280386c738
+2dbb636c89e1b09165b5964987e4cb4d
+2dbd05f29c1938588c9998d194d604fe
+2dbe12a82542a2af060dc3517e5bc538
+2dbe20675004c429a8146c4005fb74a5
+2dc3187b2c01a5b08c3cc2232af6b08b
+2dc3658c93ca316020b9c9378cf7af82
+2dc3dbdadd09244a747527308ed185ca
+2dc5bf2f7d83e97a0dcafaf5a8cbaa63
+2dc6c295e748f2e9726dc909414a17a9
+2dc6c3d0783e8793e180c44261399964
+2dc900f900eadc61057ea74dc02a88a7
+2dc9fe38da42510c8dd59ec534c1dcd0
+2dcefae48bddde400a47e082dd6efab5
+2dcf1fffce3b8f3a940c1c43da9b0f4d
+2dd03e3617fb556139fdcafcb58ddae9
+2dd154fadd1803e61b872ad9b923b80b
+2dd17caeff28ab029f75817d315bdf85
+2dd2e8f6d97b9c290868c5b0c333bab6
+2dd3483d75b73663a35d2207c2b0a8ef
+2dd3d63327fff6ba5d9623b9d89c6d11
+2dd41db47b86b64d8bb359412b6cdd97
+2dd70be960480bff4510ddf9e59e23b5
+2dd811df9c6874ddee85cb6a6175f713
+2dd847d7151fa73a39414f47f19ae3a6
+2dd8afb546a5caf2b9dfd4e8b19dc5d2
+2dd92ea8e18bbb3ec8ef10e098ba1a9c
+2dda9c87c4ba7cdaf1b12dce5f0ec4e6
+2ddd41e627ec528cbc84295c55f3ba92
+2ddeafa53dfdd319902b2879490736c0
+2de0000f11e12499e271288974a56615
+2de0328905a58b4fc16e77641458542c
+2de0853efa57a02edd6aef83e8268771
+2de095e40085fc52e99b9a414cebbc1b
+2de1a9906e9c8d434f01f2cd56cbaa23
+2de1b11d1f7904c9f47b4ec55c63e173
+2de235f2f5fe4b7c8393f4935ae40106
+2de3355388ae770ffbd8f9c3a72a9c58
+2de349bfc8c00eb451a8b74f290cdc46
+2de595d7f53ebc6c16d356a21bd4a453
+2de5d5b3facb165c6acdca3deff1b22b
+2de723630f060901e7b58f0c191f2bec
+2de7bcb98a3d1b9c05a277af060b972f
+2de885764991fea4f3ea19059268806a
+2dea65a10b41f163a63b288b70d6e17f
+2dea8f97fee93e93edd18e45e2280ad2
+2debbf94a999c27b4b76f3336f2cc4a6
+2dec4816708f7789c895ae801aae805b
+2decd5e5cc20316d88d44446cbb0929f
+2df119899886870c0ad65898bcf47d4c
+2df1e36bb9029d65c5d3771639246ea1
+2df35194832f7c90a3d690c64af206e4
+2df38d901a084ad9a9035de4ef999f4e
+2df71545480f6a173cf12a9effcedec1
+2df73c7ead1b61603b5480acabcd44e7
+2df74254d98c5cdcb7b12b6c11dff95a
+2df7743ff8db41e3ea5b83e447cd6508
+2df90d27370d679463b48b411eb6d3a6
+2df98e45efc53e564a5d45d112d1bba9
+2dfa40f48e03f87c0cf7cde98f9d08dc
+2dfb6877799b855ce2d408f2c2db366c
+2dfc1d4509f36e5941ee965362c2471f
+2dfd25500e2ef4d973154cba0188b097
+2dfddc6b24ada1a1b6952db3735f9e2a
+2dfe968e3f37f5c1fbdb0dbd4f19fa99
+2dfee18dc14ef867e2bc8ba40dd7804d
+2e04585b8f4d7912fb675e6aa41b1da7
+2e0599a6cc8bcb4724724e68eaccaf11
+2e0700e529fd01678d14118cc136472d
+2e077ee31010c2ee5903460d780265d9
+2e09197bebee860f3c201a59aae27c57
+2e0a2ec7c805db7af8874f96011fca5e
+2e0afa00261d875963d514f672ab4dde
+2e0bad07995bf9c606e382d43a381c5d
+2e0ce7114d9e9ddba278c85c14e74faa
+2e0cfacd513771f09a280ec98cfcc201
+2e0f1567a2770cac7f50ad0ed2220440
+2e110340b57dc177cc01b053e1164dd5
+2e114aed45e6462bf56789a792426c22
+2e1353deab1f4ec0dd83ef9f1cce6a98
+2e13d18d9907c5982b11532058193a89
+2e1646fba2336d1573d070263f6e3cf9
+2e165c554ceaa7be3d3eb84675ea899a
+2e16b48e2b8145abf2565b5f543ad326
+2e17ad6372c31a697e047464b315b0b6
+2e1b1cd7a1fe67a8cd98aa7daa2b0ccf
+2e1c20277931e4fc68aab2b90872fec2
+2e1d4781d2601bfdc51d183437a0f01a
+2e2048c92a90c2c966a883ea9780652b
+2e206b002ef845ff059da68c22e5efe0
+2e21bf67d2eb09d6f6fc389599320249
+2e22c9261b17c67835bf3da427571b58
+2e25710e409c483cbb34541f60abe1a6
+2e2654c5530edf4939623fc1ac5b8e01
+2e2682a014fd92272415209f5b68fb79
+2e26e1e021e9bd78311e8aa1c38f66d7
+2e273c0dd23f0d04cdeefa68e8023a91
+2e27ab13841b7a945cbe7cf11e66af6c
+2e27ca9a8fd0496e3d787baddbb826ef
+2e28d010bd7e3f2355987c1eedc0149a
+2e2994599f070420d066ae2fb72dffad
+2e2a6623cb698f1e67f0ae24931aa130
+2e320c05aa03354190f494ab1eb2ad4e
+2e34987595ac0ca5cd148a1f92b7f04b
+2e3527733a74071bcfe3a789f2842285
+2e36bf12b1ccd1fd0987d53ca1aba377
+2e373f43aeac8990d38d265e61a498fa
+2e3887849f159253d1e89d66667f9532
+2e3bf670aeed38a95af96ca49d49a552
+2e3c5130cf94c097b51295dd0416983c
+2e4026e713c6850f1b844806bf2f897e
+2e43adfc6b291a1fb75812f7ae182c08
+2e4540c62da0c541a0c6cfacfe4fe33c
+2e49b02b8ada4909e2108e935506bdc2
+2e4a52320173bb5361fbb8b0047042d4
+2e4ba54bc4ffc889824b0464aa0817df
+2e4cb506cde919f7d8f6143333764d42
+2e4cc638df49b3196aa5a627490788b5
+2e4dab226b694c0bdbd0cd2baf827121
+2e4ef5d57e867bd6931f3adaa630054f
+2e52c371cc6c1cfbef92836e08893b14
+2e54219614465efc06ae6afc6f3f6a8c
+2e5556f7e00b6f5e60c4931e8da6a0b1
+2e57ef4d969ef87d4bd3f2724c9e1950
+2e5897cb031de4455468e3cb5e5ca7f2
+2e59476d633032320b310e42e12c5844
+2e59c90b67df8fc3cadb419d4708efec
+2e5be2d35b4193d37c529ac2efd80d7f
+2e5c027e431caf0c579b84b329c06e85
+2e5cd6db49836278b7f7987757e4a2b3
+2e60e36b77020c01638076f94fd06755
+2e618b4cc8121763527c43065e7eef47
+2e63564966aceba0f2e2555250153593
+2e6568758009c3105156041fac890c1b
+2e65c743b24e7c4c898fd1ff7243fdfd
+2e66f56c815e10cb6be480a642a0cd7c
+2e673868504f9df3474ccd87b50bc656
+2e68fb194d4ae0107c26b821f1c4f382
+2e6b00f0152f28af4b86eed0cea8895b
+2e6e99b0983ee033632523d218c86630
+2e766332ddbeeb078e3aa5814adc7a8b
+2e785a113ac3fd5f54030870a12c00d3
+2e7aa5723d9a71f6649105942a970dcc
+2e7cf4534e1a6ce1dcc3fd62a21bbec4
+2e7f94e949fccbc57126aab3a4046c6c
+2e8144992ac82f337464ea9d546467ae
+2e819292e3ad53b277f88fd2d34b37d4
+2e82513cb83cda9df61d220bdce5ce6b
+2e8520f274c16ce20ef79334cb73ee2c
+2e886c9a671828551a1149c83bc3dc78
+2e893d9657300f780a4447863ce5c86f
+2e89d69decdb5864063bd25003e40e57
+2e89ed03fc4b1854cddf83d9a858fcb0
+2e8c8507ef4ee561595a9c499a2890fe
+2e8f3144c6f9ab09560a70e1a7516e96
+2e8faff11ebf0731bf5ca871daf06b9d
+2e904908ef3636004e99873ac52614ff
+2e90898b784bf5b7b2d1ff07da3639f8
+2e92fc4ef7d5f2d453f1f6a2334d7fa0
+2e94ef3a88a064bc216efd0cc0c8d3a4
+2e94f7c1843487f42672da4de8a0292d
+2e96171bb806f74f36ab371a5e6e42ae
+2e9657ce42898d69136440456da91d56
+2e97547500f35f3d7f56b9fc490fe6ca
+2e9922a36cb047a6cbe61aef394df2d4
+2e9ab00e6f15e3541365598eebf3596a
+2e9b66b8dcf9a443723e78a19a3b2941
+2e9c6717aacdc4a73d3cc634146ef62e
+2e9cc4a352ee4294736d18e131057f20
+2ea009fff04f7b432eccb4d3c100b871
+2ea09983fae41fdae4e44add0cc835ce
+2ea6c2af1dd866169d74c0be09f0984b
+2ea6f0836d143772771baf0a031ff74f
+2ea96bfe9650a46866a48dd7c09a534e
+2eaf739fc1d6bb551cdd0df653f9d40a
+2eb007163313052f80ba2284d5bbd1a8
+2eb164ce0f0b1414c8a92a968e5dade1
+2eb197786539a6f580145187f1257106
+2eb19e09430909e6921f0d5574ba79ef
+2eb1fdd1a5966ad295468b107c3cff5f
+2eb3f9f115e8c157ce375be88dbff859
+2eb53225da743be8ead3487a1f07db06
+2eb6de024c6023e7b5e968a47fce1f76
+2eb7a980c63f28569d0acdf16d071e7a
+2eb843c8c7b3a1e59668f25c04ea1f6d
+2eb87478f8918e45f1e6fb79ae403e95
+2eb8e2fb30d5a242c205d0de89bd8d98
+2ebb03a8eaeb8872aea8a10fbdb99d97
+2ebb57ae3ebcbdf46afaf1e515326df2
+2ebb7113401900efd89d27b4b4fc1a55
+2ebbebcd4cd093c4aff523c35e833286
+2ebcb8205a0585eb5be5321624b4b225
+2ebd865369d86820907936850c9a8a58
+2ec03fb217aae991b7e1d812a1f925bf
+2ec1f3167cd7321baedf3ee3ba813ebb
+2ec1f8af92723b47febf9e675b4f951b
+2ec77bed5b3e3819bf4b20602c01b480
+2ec8bb6dbc85b3f0c79e29a01dd1ea26
+2ec8bbe9dece3ea342fe6fb61da22ee3
+2ecb7616aead254cfbdbd7eb7bb02e96
+2ecc3c58524cb7ee88724febbd03e3a5
+2ece2bf5c59dd1f748c8534b19bbb85f
+2ed0c3ef9f37073f5030ce73cc88fa36
+2ed326f26aac3f9c5f9550f1322e20ed
+2ed3912496ad8a141d54d1b131aafdb6
+2ed46c5c4b826a8c3a4285423956ffb7
+2ed51e2bac1d78aeb464c40b3ec02782
+2ed55ce4759bcf6404a35c197e28ef3a
+2ed6d0b5a47c7f8b21597926b0daaf5b
+2ed7a3f160b2caf8fcbbe13906b29f13
+2ed7b551cfde4283770f5efc86034dc2
+2ed861981b7b6004106ea0fbf3f5151c
+2ed8d8bec6707001203fa9ce8feccde3
+2ed9b5172ed95b6706d507a401009494
+2eda81246d7916e5f54e5fa3789eb1e8
+2edba639e025ea903b4760b6331317e9
+2eddcd9286d40a8eace501618954442c
+2ee1ae26c316e7af920f2fafef866a79
+2ee2173cc0716a82cfaf3dd4c4814f3e
+2ee217435e1838cb62241f8a324cdc5e
+2ee25c778e9e74a954b9f6977da9830c
+2ee2e9d7e007ca76ee156ebcbd007807
+2ee4ba66c616084a2ba9baae384dc8e1
+2ee50f22118f33232051b6190018b9ed
+2ee6dcd4ad4740411bc7ea0d5c08c35f
+2ee9de63e39d8744240b6b103e27296e
+2eeaad7198b640ccd9a343533e2e7058
+2eefff6c58ae677411262cb79b2d7978
+2ef0a2151875b8e0599c97624d61e990
+2ef0c60bec9d058bf3f868dd5c6e67cc
+2ef1737994c6b1a6e8a923405efffad6
+2ef194930fec09db657448e32c773353
+2ef327263b392d6d6e984bc5b686aa7d
+2ef3774d22709fc06b0c90e1217f6cca
+2ef46e599ed03d25b7344a40f6777896
+2ef47594c6aa84861fb7b03def235700
+2ef57b12238574264f28e5a65460b741
+2ef6010d4c5711273f3cef9045cbcac2
+2ef6e24f760c9fd4005bf21249e1138c
+2ef89f34a7818c7b28fd3249bbd2d383
+2ef91973b56975a1177543a3be806a1f
+2efbdc290a37816cd74b73ec9bf3b84e
+2efe8f87acf78ea4655337bd5348efd3
+2f00826d9a36b0421428962ac251f36b
+2f0248fa45b7c1de78d325ec50f8d5a5
+2f027bcf980bfc82a107bb8351a73e41
+2f039af926d754558e5b8288d1af5830
+2f052d957f7d44210f86261a55bb868d
+2f055a9e6c51892d2b29ff53528a1bb2
+2f0684ae371ba53214d57d697d2618e2
+2f06d67a8f8013952f2788ddb9ba296e
+2f06f34ca6c1cab6917e82241515e178
+2f07a19042f826aaca3a19eca209c2bf
+2f09463d209c31c24850e8b24d7a2ef0
+2f0972bd4b2127f4c74f1a85caff37bc
+2f0b94eefbc4e4713f2d4548d631cc28
+2f0c73d7bde8bc8f3c0312729f635e5b
+2f0c90af12b62055882556bb6dbfb400
+2f0d1c6b3d9e8210fc27fa3815edf1ab
+2f100d23577d27a3d140c1852bbe7526
+2f1094bb0f9b041f3ee3d395edefa342
+2f109f4de2e44512d494848cd8c9e23e
+2f10b30c509ae4eebe235555bb978430
+2f10e9d0eba55e17af159606665eb4e1
+2f1397a8a66e2efc790776703dc0c722
+2f162fd2d00a2cb3959b37cd732a4adc
+2f169f7be731c79fc0f9a50bd5393080
+2f19cd0baec5456897014017adeb793e
+2f1adf43343b22357f4afb2c8861e88b
+2f1e4a149be319c02c408ff0c3d2add3
+2f2052ca65aa9f3a1f9fba16d1806e54
+2f211250e76fa216c1787992624e991e
+2f216dd4fe39c0bed26d12cc6865ec1d
+2f22110c34662c4fdf80bd273d2c46b5
+2f22e778216857b29aa1d0557def7949
+2f25495d1dcfe531c141c760914bf0e8
+2f2572b575b8ecafd16370f930bed3b0
+2f2685a732bdd6d246bd8829fbd01cda
+2f2744cd8d032de2f73b7b55447636c7
+2f27f2f290ecb0f818236443e0d7662a
+2f28e98dc0420cd3be9b075e0ff1a210
+2f29abdc32efb408665ad06dfb6ca40b
+2f2a175701d70a8c2dfde86143d6c88b
+2f2a3e9b589ddae5914b37551b23f630
+2f2ac717b9e92edb70b6fdd882654969
+2f2c0faa9f61ea1166218a91f5657c9f
+2f2c876364343363258cf7bfbf11f54b
+2f2cbabf80a331e7cc4ed32c4d124256
+2f2cdb52c25f43333984fdb1d2e9e891
+2f2d38ef28f69c02c6d51907a28a2ffa
+2f2dda5a5ae99bbd62280e039ea38ec5
+2f2e915f7ec7b76c41e3ed813ff9ce6f
+2f301b23079b39c17ec2a70c1b2b9997
+2f3030a61572ce54aa23eb42728e6226
+2f318ed61dce9b6816281c038488e3f6
+2f33736a001bcc1928622370d816c0e4
+2f3664dd38e7bf288d58c556640ef9b1
+2f3860af671bc1592cc4ccccda43ae9a
+2f388dd1704b8ee599bac926ca065d3a
+2f3b8ec36f532cb88b3b05d992e1ed95
+2f3d3d1e096ee47bdd2fac9bdcfa4d18
+2f42b71a001b93924bb885cf29e055b3
+2f444c24ae92391f9ecee46fc8745494
+2f445ee1482f38672d897e15e7770e45
+2f48b16619f686fce34611f659c9820c
+2f4a8214d3146e52b09d4c2e13327884
+2f4ccad1691571c67afbd5335a6e19ec
+2f4cdf044a762a5643441b12d2401d97
+2f4d0cd631bcf0595105c2f0b4e77de6
+2f4e5ca01d04a50c91acc22732235cb7
+2f4e7a1d991d884113efe43eab9c27bc
+2f509826ce0f946a5f43220ebcdb540e
+2f50c2a810f0c1a60320e491e4b2d05b
+2f53e42d8eabf10ddc98a6529a8a61e3
+2f540dca777992f33bd0351802dbfeed
+2f543e1bb16440dc111101c96dd471c0
+2f55d4478660c4f63e1e53e8b1bbe012
+2f59bdf4f9b6c02eaa8c4b0020962385
+2f5b9196d8e6bc5cdd93782b215b8dd2
+2f5d3e91622fd6f34926c2bce839d009
+2f6054f22ad24080227fc5810b70598b
+2f6263cf426dd5fd0dd1e294db33ffed
+2f6274b3db6aa65d7ce4ef96fa2a3d34
+2f65c00c14e98052bed3ed1426bb6f30
+2f67a3fba49ab80835c4648f53c0bf45
+2f680745a0476c23154bb4840e3e60b6
+2f684abde1ddff6dde03366768239efa
+2f688db067b92a5f32742aa57af26e66
+2f699d8fa604345c95a2c01371de8e5f
+2f6af77bca678785516e85b924045c4c
+2f6c0e5030d363fda6039a0b25a45865
+2f6cd8f9280bc4e7c42ef17b6c8f6bfb
+2f711c4532ed3893e6d98eb6db8c8e3f
+2f712d77262db129ebc35b11fb4b2005
+2f7466c3bb6485ba18da1f2813c07401
+2f753ede59bb097edfde6f23e69bc373
+2f754f2fed1289d00ff1f5cefd57e3f8
+2f764a7e58283ea21075824bfce11f79
+2f7960671fb8fba3ba29b867634461ae
+2f79e97816b1076e3286e5f8e6026d60
+2f7b0fc80de1b3cd151d6c858003f720
+2f7bb3f2922f0e1760a01e82cce2cb4e
+2f7c2fcd36b165b8f52c0ea8e9d6d565
+2f7d6dc0b406410acdf1b04869a0a84a
+2f7de093f8651b028285d9ee3581c0a1
+2f7de40c00bc2c3ac26af9a7e1f09692
+2f7df3bdaf3e938127854034527e3931
+2f7f1cba2693fdab98a39472f44da4c9
+2f864ecac6cbd1ce5ff8d7d2e8e0b776
+2f874a8ab77314a1551eda0b562d391f
+2f8867717efa30bfc87552ebd5b20dda
+2f89411b3fe38ea818cc85682678b28f
+2f8a22c951d14ad3136fc32f522c2e8b
+2f8be8082f45da5663f9469fbb77dbc1
+2f8fc53fd4e05369bccaaf037329f8d0
+2f914d583af6cbf661f004e40e0e9fa7
+2f940d0b24a38e753166fdb0ba7c6fee
+2f940fa97832571c9e99f72d2419ed14
+2f943e8900b7f867e60b275ea1b6b855
+2f958cdf39f0adb6b7149a40ac2dd04d
+2f98afb5a7b7c7af013b1ae50239c0e0
+2f9a6b0b03c126920f7c235440a469d1
+2f9f36e3e9c34041d25fe7b12a19c0ad
+2fa008ea4fa7f6bb80b81c37570b0980
+2fa27383a22c2dedaaed7085d76d60ba
+2fa444dc115d45cc047c7b7db29c1dc9
+2fab268ff582be2c5d205ec4e9bc8ec6
+2faddb1bbfecefba6f0262bce5043e07
+2faf4bb58c5dd99179ccf87402a7800a
+2fb0137e0e4292b071b680df14ba2f41
+2fb11b18a422c1d2bfa65b73ea230a05
+2fb1396f807dccfc1a956086a493c69a
+2fb17be1c29bfbc1983de49c960a2e70
+2fb5705a7a569cffd71f955c4fbc9390
+2fb64d661c0466290843f07b89f294e9
+2fb6b074af8f5d1b115ad91531a86328
+2fb6ee31f1d211cde142a90b791ef623
+2fb85c2b057ae40316e78f2bc37f68ff
+2fb88bf64e8f199f6b219aa3484a6df6
+2fbaaa8970e04ede38cb518eb1115fe3
+2fbf38e19aef75004b734cd138f71568
+2fc3307a828e885b3673e46626f0d806
+2fc3413321bcf4d46d38c93fc72f773c
+2fc3fdf450b4c8eaba6b049724a37c98
+2fc49bd2e58de22f783b1945a0c43479
+2fc4d9c94f16cdb66505c87ddc5c29ad
+2fc675bb53b049e73d377154600364cf
+2fc7fcb6cc9fecbc61d77d2dbb990d37
+2fc9246a8017e917d08bb5d9c8fa6104
+2fc92b2b5cf738adf7bf270ab464696c
+2fcbfa84cbcff30177cf0df649e14224
+2fccd02145e6692468074daf7c4d205a
+2fcdde3de34a4ee3e20f9de1a3b85c6d
+2fcde7a336e425f01b1c1f26e5858227
+2fce3fec793a35671dc651e8f29f4c2b
+2fce8adefe9f0066a805557e8d4256ae
+2fd235eeb33435cb8de4fb57a607c1f5
+2fd4a4fa2cb67f29871a154476027614
+2fd570bba62b055b53eaf0f4e3f3bed0
+2fd5df96aac6a0f87703744c12ed4d8d
+2fd7014f13a0dad8a0c440f2adc39cdb
+2fd7391091bf3a8836a9d630a1e276b9
+2fd7cfede746857c9ae82850daa770d7
+2fd927da3ef7e7fa2916ba807d590f43
+2fda08360535da2cfc3ff8f74da946f8
+2fdae5c257ab1d9b8a0dc1a76f1bdff9
+2fde0db465be5df32fce7b1ab3bbd090
+2fe035a9da5e6c4e1e0a97fb06e2d894
+2fe2e5794894c238b6abe9d305614a37
+2fe5d90b5fc58b9dc1da9da0f50c52ff
+2fe72286db837734efeb279f092f1335
+2fe8c91517c78145044da9ff66d76188
+2feae3488dd9062950dc4a81ba986bc7
+2febd1687db0ed51ac81e3843a04830c
+2fecab8184c600be36f229abda9b492a
+2fedbc337bb29e324df9d2a4aac5c769
+2fee594e8f19cbdff8303359e2e3063d
+2fef33c53bbc79ca7d7f0057b07c7b27
+2fefd1027ed860f617bc54b01caed78f
+2ff1e62a192ff56015af810b29064a07
+2ff50ce5c25f79bd9ca027f8914fbe6e
+2ff7c9b205c706bb05b0f6582e230dd3
+2ff944dbf6d4176ae19c5333d25981ff
+2ff9e3657e952fbc9c4af52a1c95df3a
+2ffbf863c35ce438bf24017772817a50
+2ffc87ec071d90444964e5fe1cfaa60d
+2ffdf8e004637650df48892f3e4f5661
+2fff28091befa4bd799c19adb68a88e6
+30003ece0fb91173cbe2e101e99cf038
+30017ba1f6bd892590eaa7b7e7c23ef1
+3001932eefa787f4ecd815fe8a52172c
+3004b7baf34469ef83fe9b847c3e45cc
+3004c5eb89349a380142629ccd8478b5
+3005a4c73404e10750ef3b1c8d2626cd
+300649194653ada18d01255f317abfcf
+3006dd57a40dddedc3649f4669aeda39
+300848f8d958b0051c77b0f98931cc7a
+3008f2a7624ccaa9dfe8ffc8c1933d23
+300b4259321b33a685d0fe2cfdab25f6
+300b50cc132194c6c0f0b6e021a5324e
+300be4046f1f16cef6e713a4bf61d0fe
+300cb451f998f89daa4fd4b0de4607ce
+300e62c6504eecd256994c56c5674da2
+300f20e509df06c35b84510e4fe35b28
+30107b6525d5d117f2194c8cf9a86d03
+3014705b256de967a69bedfa5487cae7
+3016f79a486025408b1fcf379ad58880
+3018d1bac8748b68340051771737bff7
+301efda725bc938df93de3676515aee2
+30209a1362b5f4f5107b341ed1d425e8
+30211409292f7f33016281212238be66
+3021e3c9a45b98b797f8909f2e4bd15d
+30242a916a57fba0c186e2327760b649
+30251f9959069cd9ac2f756a73f640cc
+30270ad2233aed3f38a6e1b6036f260e
+302c5e3f52ea1796ff5c4b4ee473c604
+302cb8dced187ee9b257778c8d642aec
+3030df95180d5e590a1372bbee4ebc51
+303122b30d511b6146151f9ce8dd1f09
+3033d69fba0dd4b2941120c90e99e9fc
+3035528da185ff1618e1cca85dcd73eb
+3036808661f4fb5f7053a0dd83c6b100
+3037077e7dde72583b7d18f2cda82a1c
+303744b7ed6463eb4dcb2f8a0b3238ba
+303c9c1d5fbfbe36f71a47ebbe0d0794
+303d56ea5c208e6cd30c6bd749592d3a
+303ff964ae168be6f8fbef34bb4a5ec1
+3040bf8cf9843a45d6a61d38e11bf665
+304268b569c6044a3f27600d010359f3
+304274a88ca28e250798f5f4d03d4be6
+304503011a6cb1248b410f3cca966126
+30451fae74165af2035080ab28102453
+30456ce09a077e33bcc615e43f264325
+30462ca25763e02c0b3456e3e5c60aa3
+3046b084630016263dfd40a2277fd9b4
+30491d0d2e7d4f23a0357d14ab283832
+304fe55951370c3a64209fa6ae1c6d6b
+305000f9af933781e294cf712d549880
+3050ebcfba64771f32a8e456d34a42f6
+3052acdd3939853b9926094d73290710
+3053f75db9394f17c8cc1be571c8c9c0
+3054a18c974af330ab68c6b052a999b0
+30556f70eff9c71025da87036f64b5f9
+305660744825b7db9940d878adf1ce79
+3057772225a858f1c15e13a286c53c9a
+3058975d8a309e9b23cc5e1a9a95b0c9
+3059454c54c205ec312ecafdff5d2b91
+305e3a1438feb3ad267e896dfc5715e5
+305fc523e90ab538543a2267bc189e2e
+3065cb964fb766514c3f260bc952df62
+30676846c730e23462f1019dc7a60347
+3068c8920e18f010d7b37fc110d3fb85
+306b17667820386bdada4fe2ef0e979a
+306ea28ee52635d87f33515d87204c48
+30709345a12ca073f9153083945cf9dd
+3070b556f6888a3cd626bc6d510c2664
+30724ca4dc4de8bebf57046934667438
+30730117496ffd12e1f3d7c3cf6630df
+3073c6c43aadbcc6b9ae7b43694e25ff
+30765006b9cc4a17e55f8351633cc7ca
+3077a1144b0ec867d2b95d877198f702
+3079a36749eefb3ea6e663f344bcdfed
+307a6174e019682e75fc367c64dea0a9
+307b6861ec2c33fe36a0ce1a6ff2763e
+307b6bbfb0de1d596532bb84e79d5abe
+307dbd34236c06d1db0f663799fb3d0b
+307dcfb4570d6b732c59c535abf121ff
+307e529effa4d4b73014a9343e4a196a
+3083073deb2a4a1859c43e3ca13df5f9
+3083aacca773ea16dc667991b5d729b1
+3083b013390c7837ef9cad5afe4f25f0
+3084bb981fe4d36a39687e37ffb80298
+3086ab03babf17d0c61dc50c0b5d78b5
+308770d1e98e355d9df45583b2748b5c
+3089055c83af657af701ff58ed4321e7
+3089231089986e5d5beff6310181c696
+3089e44c22d1751cff5a646021c2ecd8
+308c6e1266be8daa60090fce2d960e17
+308e3a397bb48c7cd1dae0a3962b2bf9
+308ff1d52c10f8c678dab240f38a7de6
+30905a88c66ddb070b9968565d449ffc
+30906c84dccae95d7ef06d56431d1870
+3091369f348ec8e294e0cb2fc55aadfb
+3092fb40cb4544973187f350dd610383
+3093cb66cf28a993882f149d0d60185e
+3099389cfd167def7c4612c60dc70e9f
+30997531985a38804e9f8da11527bbe5
+309c2a4595305860fc4d7e850afdccde
+309c8436e5cdbc48b66f95a899cead83
+309df2f6971d00a6c2d56a2bf62ea1cc
+309e6827f7e2f1aa577dff4480a5e74a
+309fd6eb7e48837a8e03f9298a721324
+30a17bf1bcb53568c27cf1ce6e711521
+30a47b6be5705c45581a3cb34a4b2702
+30a8a6b306fd32e29e75f6d38262983b
+30aa6bf5267f3d7cdf3c2427ccfbb580
+30aab146ce00a97bcf54103b8a79d354
+30ab80d7d825c44b9953296eefdef0b0
+30abee01476170d8bf5095e4c4482565
+30ac6110a7923ea676cc7cbc3d26b20c
+30ad7c8d1b34e4861ed14cc15542e443
+30af613ccbab6feb01655b0aeaae67ac
+30af6ec768c24824a5a129272fe5a15c
+30b3499a4c805ff0c9bd91122a16c9b8
+30b95c664b40c2bd9649222a88cae913
+30badaf4e9b90bf366a8bed75d45ad8b
+30bb43932a47a9b06510401fb58591bb
+30bbfc0f63416aa5a5fa62d6521839e8
+30befe7ab226818c2f9f05872deb044b
+30bf7cc634433e64f0229d6560fb75e0
+30c188c0e248bdd670008530cbed0399
+30c1c91f8e080d4a90e01294fcac0fb8
+30c28c08b133c649a8819a4b43c70501
+30c54d8aad47bc9797fe59c8c2512dec
+30c6f86305f56c4ab36d3cd1705fb5f7
+30c7c15de55a187001cff4945b4dfce4
+30c90363cf0a30f275d6a81188b7de34
+30cd3a88a4cf921f52382336d9de8eef
+30cd638ddc9f7875e9461b6c4032139d
+30ce367403ecd5840dbe2f1ffae89a27
+30cf02879965b3967f038c43a0e56593
+30cf2999e5ba3f6b8a17880a5e557467
+30cff0fd93ab9b1db965256ca040e2a9
+30d2132878fd01ded3b95d194cbf7e68
+30d26891936455c75553bd081a5a9c0b
+30d50ac0d5ac7887007f3a771fe17584
+30d5172abfa33c439035ee0f297f413b
+30d55fceb692d0ec7c399dacb696fdda
+30d7b59fdfbc71fadb55839455fb28f6
+30d8f80c0dbc968f1ad63ec71605aa58
+30dbab96c2a256b9351930674e41dcf5
+30dd0a3512de8253541306a440a29433
+30dd432e313bf272728f922035470fb6
+30ddc5e79bf222bb2d36a348ee2665bc
+30ddfd68572a3589245f79618f3197a0
+30df3dc922fab708c527ae57a2d2ac3b
+30dfcebf446b842ca767b360e2432556
+30e10f886c1e371e41ad55d2c7e4707a
+30e5e74972d6402ceecc043f653a6073
+30e675682d5309cf75aaae0a717bcc8c
+30eb5cdb698f1c60c590d7d8d8f16b7e
+30ebd4b34f87a870d1e7d40a73f33883
+30ec65ad83284d1272083a4543422af7
+30ee278f655b0ba634698d94ee0ce099
+30f1f8788f54df540f76aa95a79e5586
+30f33ab12439c55f96a3f54b96eed127
+30f4662b3e9097887b45bdb8928674a7
+30f4b2897cbcdf51d984cf811997de7a
+30f95c302a7ff48f9f0ce390dae74c6f
+30fa211eb743b8aedcb6c8d2b7db0fb3
+30fb3092d86cf81d2ba2353fe89f460b
+30fdac64aa82107151cd0a46fb8de584
+30fde556c5421ef247ccb5784f833690
+3103884b11c754dd558d3cd5993070e2
+310759d678f74df9ef710507750f8b1d
+3107f537b8c392dc7e8347b61e220133
+310893f74259659ad834c78d5398f087
+310b3ad10ed500e5be6e2c7349c480bf
+310ca4cb621a0f5ab612b5468e25a62e
+310d7e9922ccae1da7839f1fd48b26e0
+310e2462a106c3cc66d5b5595f1d057f
+310f7bedbedfcf7743fa418b49639e0d
+3113be3ff5e68e3d894e5c17ec23d01f
+3113c452f37859593e6e7c9e7513dd00
+311550fa797c13a585884c4461d8b452
+3116aef9e60f3b60b716a2d6024bfa26
+3118781519649c1ae621a6ca16930586
+31195e252bbf4c4e1941799ea96d7f88
+311a57cf41f6b4386082d360be84114d
+311b61c0a73f73f2e43b7862ef34892f
+311d0ba7baf4ee3ebccaf347c25f5d7c
+311f6534ded97f0df966f817c99a2a83
+311faa78873f752a9d8c18685c3f904d
+311ff64b872c2ecc7eea5c51fd3b0e06
+31229a551a2e1d7682228f074ae262f8
+31242ab534f951a05d39c1447b90ca14
+3127f136e440330958cbe802d2aa070f
+3129855a37373eabcd1227b224522355
+312ac21c9904f3c55a23df49de562665
+312c083bde5928b960421c090ccf0116
+312dfa86f468e0c4d0b58977eacb4e06
+312dff98163bfcb5a7bf6fc4dd623f52
+313003e19afe6733a616d05d90aba0cb
+31304ec8254cec40c73bf323e5f83771
+313114b6d4278d81f941611009126613
+313118aa5280818f12889e9a50cb5544
+313195b74f1996849cbf0aac65b5ba33
+31364e82559fbbe21317bbcd43c79c57
+313a0c372174f69e9bd7341b14aaa09c
+313a35614c525d18e3fa17ef69cf50a2
+313a9b779c136b371259043cc755fcff
+313b11c980ab1e7617e76fb68b9f66ff
+313ed2f57067af1d01a67e247af23901
+313fe3177af31572a0aa237643b0eb67
+313ffba77f908b20505c40ad97000a8b
+314030db1241bf8a966bd41795f4e6dc
+31408d311df8fea0cb6843cae64bdc54
+31454b5c0d93b859a5ce99e545af8841
+314599a7857e7c01b3bc09a799a4d732
+3145d5adb09f0e020de1fe25d281a358
+31476f4d92c46c05dd709ff026fa19b0
+3149d2312ee16b2343bd3a1dca4916d5
+314a039b5dd47fd2fd71c955e8118155
+314bf72de42a46d8efc7b42668981bee
+314cabbfd066c93852271e99265cd919
+314ee01d4c149eca8f8efe68d4afa6d9
+3150fba854c7f451e95cb1b704894926
+315104be7c0cd5685c7a9551e2d4cfdf
+31515a3dc546b0a8fce705f6f0b4f37d
+3151af28c457f9dc33e618e2c371f991
+3152e7ca4e2fa2199830166a6df3fce1
+31558a2f8bc976d2618f0bd5c96b46c7
+3157b33f5f72f8380afe8833f0c63b5c
+3157b68fd0e9a50481a9ef1451a86526
+3157dc736dfc5361029f67b6c144e30b
+315926252704b96068218d7a7cf00ffa
+315afc8b3cce5749ab1d72ec3270f761
+315b26d79673d11760d42934198a6471
+315cc235949a47043354b0cdde18eacf
+316019a760a7e6d275a10e07af16a9e9
+3160cd7c0a67d6d8f424e81c375fac48
+316161b5b130e3f75c9a942fa83d9ee3
+316436643dee9ce3cee6dba2629b3469
+31652898f0fae1c97979a59b02df86eb
+31657ac7f759c0c97a1e6637e187d029
+31663875b29c6abf1eecee0f2da03f2d
+316793604fb5ad38a3fb68cdc6900a69
+316925f3fc65fa646dbc3c6e6074d0b5
+316cd494d3370ab4c8b91720e32458a5
+316d710b2ec6e6bc0355dc6ad203562b
+316ee2f970985e6efb5de2dddedf7a3e
+316ffe99d7570503bde3750f0d669349
+317125d3f48209afd938e4ed59a902e7
+317139c0abc95b9d5ddee37e7928991f
+317339ae51c4eb8dff6c0124a4d33fb6
+3174590e16f4a03fdc6f1de448ab1693
+31798de8bf61b3cc910131a748616a4f
+317b4a200dd974a5a79f6cfd974b94cf
+317c637e0d5db9d9cf809e4c5629061d
+317f125d0ffe193a666508f0177bd461
+31835c96e5947fe14cff792adc2ac4aa
+318450cfb7e5a20ffcbf9fc7417bad4a
+31849d44e121c56bda4b2739504d5c97
+31850a14fbc2651c9c81143c412e6fcf
+3189bb574cefdde2c3b35a4ec9869191
+318b94d32aabdec9a8531347f58c8f27
+318bbec3786334f362397efde800de03
+318c77787d7b398c0b568ed201d682a4
+318cbec3953192ab9ee892a35c42d5d9
+318fc256a2cf3c2bf562a33fae9da551
+31908fd6679e5f8ec505c4e34674765c
+319094cdd5a69a7be601ac706f01405f
+3191fa7e3b4fe580e2513b57f88760f3
+31933d1c2cafaf990c3cf747e860c60f
+319480b35e9d4b5aab737024e75a7253
+3199962ee513286d94449da77fcad51d
+3199d25800a2849fde9bd6898ad2928d
+319badc0cae279a243b8bf667e70e59f
+319d9c50b3b57205e0fe433655433f3d
+319dc7eec0a21354ad1db37740815145
+319f1345e14e1e348d4929aa1e8ebbcd
+319f5ecabcc8dde728b0556c4305874a
+31a2735608ed90ff70039aa5626d027e
+31a35a683f3994a9e774d04be29c9856
+31a5e4ca18db54a0c30bad86993ac3b5
+31a71d7127700dd52a0cf4e8b3cca247
+31a7ae2f3b29cbfca442ffef4ed681c9
+31a9f40046ec980081eef67583f44b85
+31aa58c1f0c5adb3e9e2a28b7ae1a77e
+31ac3e45cb41678a47d64c54d7900813
+31ac6f448e01ef25d8b79161c42b7d1a
+31afa2c778113995c775893005e989e2
+31b05c1a598a97b4bcd62b535741ba6e
+31b258baad4f6d7304b87c7c51aa6e3b
+31b399a7e308276917f89be89097dfed
+31b5ae3dee7e807212ac16d648f16e94
+31b5f5cd06d18ce301bfd092cdbefa74
+31b60c133c85e9789112d044085ee695
+31b617b6ef67eabe69fcab6cf3b73973
+31be722bd00d787af36e4ea625fae027
+31be90e344ac398ec3e0f921256735d7
+31bfa027a5275eeb526976e399646431
+31c0aa0ae4f9cdfa501920a64455babc
+31c2e0e37a63208973f69e8eb9f89a56
+31c5374ab9d80a6a26c7f921944285f6
+31c5bd06910738b0b67f1b20cc3553fb
+31c772f63c55741c5bdccbf98da667d5
+31c89d4705c51f6e927332ade6346744
+31cb2d32c77a8f90d32b0987d1e4069e
+31cd99a43da4b97052c5fadde57dddf1
+31ceead4dee7db28ebc59e1bd051d9ea
+31cf2598fa69dddbfbd01146e5e963b3
+31cfe32afac7c4cb57a2826dd7798bce
+31d2a5d4299fe6ca862155ead1cf67b6
+31d4732390c3d057c2851208bbe78a8e
+31d51ba660e9336ebad0f157845d9e97
+31d77dafa5446f39b204b35b038bad63
+31d784e7e05706a93cd67e6ce0d75a30
+31d9d798f4348bf5b9ecf8af3a3b69e0
+31da3d7304e52e33aeecd79e156c1c24
+31da9385d6787ac12ba3257fbd7da273
+31daf39d2abef27ac0bbc47524fe010d
+31de02e80018b719d02888460b83ec9b
+31de914a66869a04ed186a78b3dce1ab
+31df19dc9a02022109d37aaf956a5a96
+31df43afb9f8b5b858b48e4adc9ce4d2
+31e20ad81e383423244b76a0af46243c
+31e2d3bc32cd48e8f09c622974836abf
+31e3a7033381e8438220b25f7c333809
+31e3fff180c6c4f05614617a21097bd7
+31e44328b007fba20bc0940c66220133
+31e578bb3c08c6a0c616040e62d01096
+31e9105c6cbdbdf0761ec847ecb87e1b
+31e9ba55f561c35b9cf78a7c1125fcda
+31eaf85ccf9059fc76a562d9dec806da
+31eb5e87ef98571284dbf96df776f52a
+31ec2b0cbb22f6eb3782f294d12303f1
+31ee0051b63f74c6925fc5b18a72a570
+31f0802978f58ea275fdcae4c73668f0
+31f147eac0fd1b51a66f5a98d7f4d413
+31f2257d432e18e93a55a45ba8ed8c5c
+31f26b99be9daffd665d7acf85a35e08
+31f2c254f68524c9c0aef4ca32977c60
+31f3c031faa8a2ac7a28da9337547ca5
+31f521717ea7d2d31058fd9f21db573c
+31f54fbfbddf0a0e9134b5c89bbbd205
+31f9b113f40a43af8152e7f1c24ab614
+31fe9140b2aa3076f429687d2f53682d
+32001080bff8bfaad4e63655c422b037
+320450e5684e9a6032e01fd0f0080a4a
+320638fd0b196dc82df66ade71258f27
+3209feb484e6cd4f479d5c8ceec52198
+320a84d9ca581274a423cd7a3261cbc4
+320e8d414c479681d22dde47a1636a0f
+320f37ee55d76509053e2777b46c2184
+320f6e3dd84c71956172948f00379b4b
+3211a705485e6b1d086b0f7f5eb14527
+3211bc2cbdd7a2813f38824f074d75c4
+32127da99983a2c440646b24595ebaaf
+3212e64463787b041b952585a28b17bb
+32134e82fb2039a03f60fa565f16b294
+321391be99760b93de8671bc716d5394
+3214dd9d134293affc80e6880a8359b4
+32151e7ddc96b7e389edf6a4e0568f33
+32158c683bec3ec0ef501cfabe350f69
+32172071a91fc6ce42d85a4194ad3871
+321736ad0994b6de1ae61583b6ddac19
+32175dda8d28e3e0654bb75b77390b8a
+3217f18b0ddf1c879d9779f7821cb51d
+321888abbb178a29a664fcd79a23f994
+3219624117178c703bbe63b37bb29404
+321ab38aeaeea543799eb78931ecaab9
+321d2ac11ae6fd13906120ca8ff49460
+321e619085498a07705c470f58c43d15
+321eed276cf793cb42065150987d1e31
+321fa43ed0af036af99a6b7075592b71
+3225a563179b39382fe4ca3f66c5c642
+322665ea8ec2db67ac2fd05fbe721f5c
+322b429e65c9c7725c1cb94638e15841
+322c839be74522ba877f1dfc08960761
+322ccd7434d8b90a79fb90d1746d9bef
+322e3ff4df7e7ef8beb5c35d098c46f5
+322f4533c27d0a63891b3c4f67ed0cc5
+3230ef45f2a4627c483fc131b28ade67
+32336c8b864a6c7efce9c554bbb57a48
+32346f200668890964620f4d652ff86f
+32367a476841a3ce1b7d0373695fc10c
+3236c48210ffbc9fc91a2840b2384973
+3237dbee192dc008cd9333481c0ebf6b
+323a2b90762bb7a47426d5a0c35e981a
+323bffd361074397a9070f71a48b8d94
+323cc9fd8b82402f1588f7d020f8d12b
+323cdb6aae476652ba9a4d1b0ad9a2e1
+323f986a5dad627bf6a3f5d5a2e6fa80
+32405744ffa6eca0c52255dfb6c19d51
+32420bf3260e138a6b8d9086a668f023
+32436cf47e61c43f3f248db4f40b41e0
+3247c86233a4a5a769eca1372d35163a
+3249f5fd0cf1040ce2ab929576cbd22d
+324c878f5a548a7b24863a9f95217103
+324e91254b41dbf9721d50edb92fc48e
+324eb2eb38ebc11d31097673819a8f0f
+32519e5b810a99c0b6c7d7b59a4b85db
+32523230727d74d55fc0a62630cd05fa
+3252fc002e3269b594a70e03a886af89
+3254fc235c496fe8d20dde51d54cad3d
+325598feaf863d6c1f4d127e5d48661b
+3255aa17a0526899925c36b3a52a75b5
+32563766ed07f305221ff3e59dc23cb0
+3256bfc839f1964541fc4efdaa5bd3ad
+325745d5f00e47eedc96dd6bdfda22f5
+3258b3a03136974c68261caa407bb2f8
+32593c50cbdc319f30eb0791b7e9f19c
+325987ac81737ff165c5b8efa460c6cc
+325a857b8b7d2de316a61ca5b56ca585
+325e03478bde90548687155468e45869
+3261084d8734ee2b97a63b6f638075a7
+3262ba0f965a8053a6d15fcb67b26fb1
+326865beb5cd6cd26b926f26586957a1
+326b2d4394cc91ec99ca07bea91d15ec
+326bdea0e5d48b3988dffe6d63f5a369
+326c5c63c908a838047d83c55365aa0c
+326cc4788da02173ef1f91d046ada185
+326d0de4f7d63b27325f6f72fa076d52
+326e8ce7a9e71d672ceca223f5ff13a0
+326f35d07ac1ab5353c5fb77fe6cb690
+32709c582d95a03d55ba6ea405c38fd8
+327103dbf26c03edfde04dce5b07668a
+32733aba7dee3ce2761e8091f59c56e3
+327355afb50e011aae4206e341e22ae4
+32735de64bed7cbcf81ee5901bb049fa
+327670d47c87601308715926c5a21056
+327a4a9285a2bd602cb7934be5fba00a
+327bcdab1f5defcbfa13890c8e4f0f40
+327bf349e3f32cd017b4fdd26d8989f8
+327fa1f9ba3c16bab43d3031cde48dc8
+3280af1e343828bead37e644d6ba6c98
+3281059c8e78da1f8a6a77bb4d7fa658
+328374ac5145d252b31b7d6073cbe2a9
+32840a848552f200c775aafe46bb1f4a
+3289696f2629286538a831eec3b4b802
+328c7a5d1963e09ce430146f8795e536
+328d63970376adc4f079b09e489ee9db
+328e3f1c5a4336eaa5c33054d82d3d51
+328f43e51d137d481a13723b9d9a52c2
+32947b5c63fb0f4c1cd7e471b7ef8f5c
+32956fc23e3b3c8cbe884a299acbd171
+3298d6c849d9a100107d1ebee43a91e3
+3299b8cb2ea307063a063cd75d833a3c
+329a1680fc7c19737d1a9b98ac7e998b
+329a3556734748baf8e8a9aea5eba299
+329b1489df53b34e18d23a2a775ab1bf
+329f4735b43dcdba001cd882629e5c02
+329f9aa84b9c26a9850a48c049567570
+32a07bdac8cb45b26c7ef528ea20d253
+32a12061558cc94242c3edfaaa283966
+32a1ca81c3cea9066acf374c64e760e9
+32a267d1c8a5c65008c01b30bad3d9c0
+32a3a7a92bba6e016836210609e7471c
+32a44bb33af90c3d4754a555888a27d1
+32a6c64144e9ee4debca931a6b72bae0
+32a7fe3c28c6157ddd1f9c6975328af6
+32a91298b0cb90f63f4c91266e7fdcfb
+32aa1832be26fbd2f37d6820c8f1d8c6
+32ab242e8771e5c19dea1c61db24ce8f
+32abfe85c0ed01d6c5f18cc8c390d470
+32ad377323e57783fddb2aeb4bb45fab
+32ad8968696dfa749d42c39f4c3e3a98
+32af1a6a310d18b80a0d487e87692bce
+32b0ad6c1b1fbc174aa50edaedbf3091
+32b51a88c730352458ba593d51426591
+32b5633959628235ae1dcb7ae1a37a5f
+32b979a35c05eece2a3ebbd513cdca0c
+32ba52e091b61d93a86eb19b3be05946
+32bb59b96b6bb1133fd48c17d1bbcb32
+32bc2051a57c264decc4f803720bd266
+32bdff6427d67633f8cf9c23e1495c40
+32bef4a2394f2cc05889a74c39ef51c5
+32c8f06015c414f3678a8bc1020ed9ed
+32ca4c74bc4cf19f1bc50793f1f914af
+32cb7d1c29398397afd16681db9ed9a9
+32cc3e35b7a96404d6fd86f978f51369
+32cfca4d3466c474331b2cc084f89531
+32d020be0d98171c25719c6ec3303901
+32d082d65f6b0bda38247b36e6604dda
+32d1c1d487fcae778b3b670952fbcb55
+32d62995e0a39bace10060a104a56023
+32d7c149692b51e0bfcbad0e13c2216d
+32d878c5337ba873951e6eafc63637b7
+32d8c7498972c708f657b5ea38bed2e1
+32d9199a8b557a9b371b8c3322655e9a
+32d9e503d77f8e382d4859c2d5db6455
+32dda169ce3758605f32d1679b3d893b
+32de1fb9bc2231c9a70cc7a658f67f49
+32e0b89f27386903b5b19dc899f72c45
+32e45c57735b97c63f9a1f672c00f630
+32e63ce5773862d2805ff14fea1dabf7
+32e988af8a3b2bca213fc0de2b6da31e
+32e9a84a1f17f652c392f6b30ace028a
+32eb287e0032ab5faebffcb2687eb6ec
+32f29aeef1210f3f53cb3a23855c8096
+32f2f1729fa6d0e1c39e3d77924e3313
+32f30ee0ff43912687a6f82a4d5624a9
+32f4f61480df2cfef9378acadb2bb65f
+32f513f23650c2abc3e4f421c1d92ec8
+32f5e49556e75d52233b448ec8625805
+32f70a2fd2f87864a3666b6e9403c207
+32f75e6866cfdcf3a0a067ce98db97ab
+32f9145ffd182aaf960d6e140bc94923
+32f9dac77034a9f4e4431f1160b87cde
+32fb035184874e82d022a031556cc4bb
+32fc4f3ac0d8574e54d2dd33e4c91e46
+32fce047cd81f4af4a39fe0f5dc8a596
+32fe1e82d833c2d4db66d542678b94ad
+32fe60dd0003c819b96c1e1d6ae98dfa
+330088fd85ef98a9db577649b102b62f
+330221c57712d67473f17ad032c2fa47
+3303092521845d2484798120ce5fdd9c
+3303be51fb901cb081afa70dbd4c0ca8
+3308c852e93b1fee0a2a836c29af41ba
+330a79f103675ac3148228f1408b4f67
+330b4fa1a7bfc1ca3b20f4612c43cf8a
+330b984d7cb8c92fa32ead2a37a528c4
+330ca2acbea28d84d3be60ae05ee68f8
+330e970fec2e60274c3c0a7e74546a5b
+3312dcb0c3d21d5af5fc6bf101c8ffe5
+3312e407efa64b111273c3fc0cc271b2
+33133ee7d85cef5ea5d27c3574ecfb33
+33141fa1629d7eede9d5cd4bf5975065
+33146e74e7869e9b060e295ad7895523
+3314ff4e720fe2320b6c507b87d01719
+3318c7d48585d50352486d43a7f46bfa
+3319f9f7c8a3a34a6c8e3c5005ca6ea9
+331ac29ff553fdc664fae5af1dd460ab
+331ea0da177395ee56e280efc1ca64a5
+3321a9e4b317733982804cecfb8f1358
+33230d3ff03d411448a373882bbfe532
+33236ae69414ccf9e0be82148389a675
+3323fcc198d46f22381f2ff143050c4a
+33240b7d4c35aa101326d9c77f991b92
+33264910227a1a40e8a2fd5957e25290
+332a8ecdb3bcb4bfd099a7fe35118d79
+332b2079d56f6935b831c87290ddfca4
+332cc600556b5a5d0919f45fa87bdec9
+332d98c2041e214a0b78e6128ba8b4f7
+332e53e8a1fd1eae872ba75adecc466f
+332ed907900362fe862da4b3cf9d3f61
+332f3482252a5122a5a6604618ec86bf
+333170f29dfe2e32bd98c3a49dced2b6
+3333eb8bd5cfbff4bf43b692e916ccde
+3335a4a7f27946adbd96bb9fc6a6ca02
+33375328362e58383748fa2514bfdbaf
+3338f5729b2d6fda755769da6c58a681
+333c526db0b6a5912c81dbee238501b9
+333d23d6e63b774a2ab4388586f11dc9
+333d9fdc7e1b608d134b93793eef9cd3
+333da009ec5a113fc8f8d01576c3f222
+333dd91207a0269fac92546d0ea1c5e9
+333f2bedaa8d3096d58ccfdec6ffe670
+334000a4cfcd4595cde1ac01a12b4ffb
+3340a12e874e90f9f2c107325dba5af1
+3345203b27875c9a3b00d9230c5725a0
+3345d2499fcb33af3b3472c2f44ef2f0
+334662bdf9c3f3d2ab08688e09ecd28a
+334e99958b55ce7b931230601574253e
+334f5ed9378ccf5e8a789bce70698468
+334fe89d5a5de4ba8965ac06e46bffc9
+3350001b1d7e6942e88b7f048bfbd673
+33514d4c4f3d3b73bdc152115f0d1b3a
+33556e941af79d0a2f5383649bedaded
+335763c8a9be1b6b228965fb0df1131d
+3358cbfd250319d409abaf77ba10a529
+3359a38a402c407dc3c579262e3927c8
+3359c36fcbe38a68c2875ebce4be3416
+335c1c22df4b662ae3405c0c84ad70c1
+335c365ca70f91179e722235ddce4a71
+335cb2288cb47412dbf113f2608bcff0
+335d0c598aee24759942bc81b1bb5020
+335dbd5fb8c5f7270e73ddf6ee324b0c
+335e619ec0f6706997f7f411f28a2823
+3361221adb7fb795c625ce362f238b9a
+3361febba205c25cde05712be0881fa1
+336a84b5038bcaf0c4cfe5cca877c23d
+336c84ee09dea9115cc8195bcfedecb8
+336d8685be44ea171d2d5cc4ead3bd8a
+336df7de9d6e4ddcb3aaffef0c7b0ae8
+336e1fca4015ce308edec4502a37bcd7
+336e40a4cd823cf6a9a55d7af7590175
+3372140a235444b9bce067bc1df63d86
+3373b16e4443e2709cd3d469972308b6
+3376e4928cf3b11420a3f4b950276515
+3378b1dca3329b8a551f199e88b2ab8b
+3378e823a5ca527be2bd61145e85a1a0
+337a130b4c877e9781491b989f376630
+337aa44b96609568b6e32d15ef0f452a
+337e28285800ab9752302771edf2cc8c
+337ec48adbc5cde15952bfb930181e52
+337ee710a4fa07fe1758aee4083cd843
+337f1b169e71a647d18f7203543610e0
+337f43a7027a39aece3816ae41939059
+337f6c37f179ddd735b6fe168ede284d
+3381dc15f8549a557037b76aabf6421c
+3381f6d53eb9cbb13c6839737faab1bc
+3383f4a6ed8538b1d84b1efa52870ba5
+338409b3265cc4b5840f81f69c3d235d
+338893ba1c9c78f5fafa260d2530ac96
+338d3bf3103e0b8f2656b3e094bc1ed1
+338f812aecda8c912a7b6bac2ae3d9b0
+338f8d6a9b598df45f36f252f55726f0
+33902c05c2ba9c059f6f6edc11c88576
+33948faf3796d05c21290e364c4aad49
+3397f29088bd6dd30af8cd512bdd43ea
+3399ad114fb866a5ad687ed1bc0f69a8
+339ac6578d40272b3a3a5dd8acbfadf5
+339b9d8a59b17ed961a613c2a53d80a8
+33a0c03b418e8e30d692504e9833ef6a
+33a13eb488c9df62b9a81a2ce182e073
+33a173fff7f79592d75500b55faf0f41
+33a2f8d00152d55e67041f10937e1c1f
+33a95e79150820600315d48bad9348f2
+33ab0c9986c4360792c8d22592b42b66
+33ad3523d90a1e28e5e402b9ecc3a292
+33b27d2a4aefd6f901933a4ad4bad46b
+33b573678a9d9f6897c71b823795f5dd
+33b643f6458387e0994d590d6de41cf5
+33b6f24cabfd01aa968dc83789dea5bc
+33b86df896e5571ff912a720966c9f4b
+33b9d903d4bc795bf97a52ae603ec607
+33ba312306f0e2f7440857459a7fba44
+33ba588e0ee353c74d3daed1d31d402a
+33bc20200661b013e87a7ea0e0f2a087
+33be7e2cc276948d9dc19e88bc8fafa5
+33bfe5edfcbd6871650cae3c8e91004a
+33c07caecdac9d80cac5b60669a34053
+33c2335ec258a37e450ad1be6d415883
+33c4453fdb220e70eebfc0522e825ded
+33c47cdc02d613ca133d41d72af6ea94
+33c7f746abd5b849a26bec714d1b6828
+33c8ee82a06de02be208af2591608394
+33c979efda2d797b78bb497d86857e52
+33ca8ea189eb2933fcaec25521f9099e
+33cbe825a19f8d77d4306de647a0c8f6
+33cd92fda1c6d82ae6dc5a66be2d1c8b
+33ceb0ee80ae7f91190bf97ed53acc21
+33cf04bd852192baf3f73fe2dd90d401
+33d1fd357388cc918d7cd6547a742457
+33d30382ab9e0e2166549b25bf97f31b
+33d35b24b6a901d4ef2305ca394c009d
+33d3dc8a9522e0f75571e498984c1f4d
+33d44675ab979a4d431c0b708449cee8
+33d49d1832af6ddd84ea5e0900772069
+33d744b9d0b31b63468e11e2678235b0
+33d81e10e3c786f80a6b9efd7732e026
+33d9e797cda39e5439e01a5f7ba6a6dd
+33da3b6e840adda6d8edfd771edf3d53
+33da795134e303e65f253c90ab8c6077
+33dc0200fbd64a13c21fac2b6dc787ff
+33dc0ac7f76d87d702321b48f24c74ee
+33dc5e9e31335ce4f43945b14a75df86
+33dff8be72089407f1f199e12703775e
+33e45b43dde2aea20e0318f5ce6c2488
+33e9767d4ec35c1b43d21a419280bfe4
+33ee809bcefe60823f1836e4085a62e4
+33f061b3a9a0d96e96bfb7fb8a1f3ce1
+33f0665e59b906b10fe4841399589973
+33f29b3b9a2e9bf6b8c787b973422b45
+33f3188dd356f1d3020147f20ba0f944
+33f500be789b1b0413aaffec2180adc7
+33fa7e8c5c3e04cf0dd9eaa1ba308679
+33fc64ac82f164d232bc56a01449a847
+33fc64bc9f6ee2637927a7e65cbbb114
+33fedd9c4793a7b579246842f4d4a75e
+33ff0ed9d9f4ccb23aeefbcd2502993c
+33ff2c35827f89168cfbf59ab2cf57f1
+3401cb5c4cf06421ff466b236b4afac2
+34053d381376369c88bddee412bb5c8f
+340c203b66faa628db116b3d05207155
+340c3ecf3de437289a9ae45697e0f2ec
+340cdfda2ac0d5d409b995b6ddafb52f
+340ddfed4adfaebde97dd533c0b248fe
+3410a6d7e04e34638f9c6c248630767e
+3411409b0925ef8278d31f45ffafb52e
+34118790b121f20bc91c598277b752f8
+3411c1ef483ad646e91d9efe588d1e3f
+3411de7e9a4dfaa92150b42e0a902dd8
+3412755ed49a1e5e7e3ae66304064855
+3412a37336a59b0550a0b5ef3e7a598e
+34142659d577f315b2057a18db6afc5c
+341469ecd2716d4ce77c18287b30d230
+34173d9760e03a4b5a9871b22e475a50
+3417dd34c70f9a030723fc4dd7d746a0
+34185616dc09bcdb99705055d185f1f4
+34188d8436066552803795f193ee0c4a
+34191b8506db666fc35682de18a4aa30
+341942189aa0028ff8d66e477f08e0a0
+3419e3925844efd3276e2c462c735857
+3419f3c5584ae31392a2c8671fd38e50
+341a4742354aceb6aedbf2e5ba18d9f1
+341a85d0e61738f620afafc2db16a6c7
+341ac10e38ad7950358de024568de462
+341b4d3a3687ca31291204b520ac925d
+341b534d0594cebaa396fb3d29c4ba48
+341bf8e089f6b2c43767a32f3ab25aef
+341dfd1b2c62dd3ba15670a73401147e
+3420c0be36a54f6dfc04030c2099bcfe
+34224f218d3cb171f5d8c32851be5b44
+342286dc99e38e9e7396211649b4b8ae
+342597720f9a7a413e228ef6a4dd7c7f
+34274a99560405e35dd608bc8278245d
+34279c1c5acddf147cc278e22678f9ca
+3427a38cb01b26950db9ca354502f4d5
+34297f5dcb42ede8df68716fdaf8280b
+342aec8d08c76bc5ec2fa903ec72d7c3
+342cbebfee568e7826d8743d021f236e
+342e6c2910d7fa9cb14b087fa175c189
+34307456f8751502aa773c8667804207
+3432430e21317b7448e7ca2931fbfe77
+34340125eda54a0bde2144cc3bef0c16
+3434a03633582cf2f7b311226c258a5a
+3434d73dc3317980a1a1f6936e0f523c
+34356da1ce5e6070163798f8fc2875bc
+34397a71c2ebacb9ce7009fb2e3d150d
+3439b9d5b235fb6effa861de46789935
+343a49bc97a6a7741f773eb21f281874
+343c520361903f4ba4b29fd0339769bd
+343cf6d64d66efcb58e8b8d13efde47a
+343df1de866e832a86ff3de65f8b4b06
+344132abc716ccb3ad96b1a8f9a49078
+344136d31228ac35b8e016dba692cee3
+3442f8577f4e65a15d3ef32192620ed8
+34442ef4a4461ef9443c24e12b9a00ac
+34469af2f7caec619cf7a23eb0a9215a
+3448acb3d2b9f115cf3b9609f8413e69
+34496a9b1455e370827260a372d5b7db
+344e6bbae54e0835c5d8733be51156a1
+344e7e24becc7a3971fc2b37cb9f9bbe
+344f6b24f93834980b9c13bd6bf0ba37
+344f6d0391dfff14a71a3d64c8bbb3f7
+345221abfa7f6e3a1ac605d87b3c112d
+345279be45960d7e76a235e7ed61ee0b
+345285b063ea72a61bd48be277a0049c
+34542ac073908409fcbce9823c0f69ec
+345580f86c2390d9cc530fd176581792
+345688177b07f406b29ec88777d0b96f
+3456c8e1714c4fd98504f6b8fb292387
+345bb776cac061bd8019104b34d66950
+345c4dd5afaa57db809710e08e3ed9b9
+345c61e5cc080d6a4e3f4f332d86df4e
+345d2208636c9123d13b43d321f65c56
+345f2be55a7ca13739b97e8b941287c7
+34604f1518f24740d8a8eb86ca2b6f9c
+34608d816222e2fdf5aab0187147190d
+34631c670d0e496edd781d7387b63818
+34645ccd13a4228f341eb3b87601ff79
+3466347dbe7d28aee259e216a8eecd4d
+346818e4ac465671b29506d7a7549fe9
+3468c8d73306a1a4fa1f1b03b6d10ad8
+34698005315685081d59745abd592a51
+346b5db77efeca1dab205557a41ede80
+346b8b348c6e8878ea8aaba58cbecc97
+346ba3192bd67c05c59c869996cb5c31
+346cc320ad855b4a6e78062810c0e9fc
+346cfb484e4e5831c8d28fe91170c34e
+346f1e9db30918b2d1b8161cf9255502
+3470e90c47e89354b9a121ed4b2642f6
+3472a535b1d82588ef80b46b2abf5829
+347587c23fd18dd6b7037a6cb46557fa
+3476d7d815933d4f7bae37078447c794
+3476e613ccca21690f66a17cfdc098f3
+3476f950053890ad683bc2fb1fe68ba1
+3478019d4e0096d6ed9bbfa11234ddbd
+34784f6b3358dbb323eb4f7995372c14
+347940b3a086d3811fd6d9852edc4497
+347b22373c84fb700b9855762c7d8f59
+347fc7185089a1ef7c88afcbcf2a6b19
+348046578c5ea1ccf774fd2a83e64cee
+3480c0a592e6f204e81bf0805cd59759
+348152de59d1cc3b76e9955fbdd5551f
+34828006616d8662f52dfd80705b6ba9
+348324bc782aaaeeb8691cffc73f252e
+348343de48a8dd3dde89057dce5c48da
+348752b881b73ee8964827761e58c43b
+3487a3f56c2bf4c7f51e758d1eaf9a30
+348b97097ff39d685aee51c258726a52
+348fa29e8323b916a352a9273aaba012
+3495ee951f6a980596cee6292017fb94
+349689c3d765f9e1c9970677327139b1
+34977dfbff9419b8f13b04cd9aaa2b8e
+349ae66e9eb6320d358f87f948ea9c51
+349aedc1d61d9bec21892b24767e1738
+349b2538f2e8167b3af02f8a97c01d0c
+349c60195c1955364afdd9d0b27bec01
+349d53a52fac283c213a46b1d3a1a7fd
+349d6215c9ff95a961e8ae6455bccd55
+349fd9057c5ec2f75cdc5cb8778c792e
+34a08fecaa2e680937c45da16ea2cda9
+34a094deff5bb18f10793fece596eb0d
+34a1879add503e6d46cb5669027a21c8
+34a225fd7853313c9e533d64301f0271
+34a59e66de747a74f5923c1a9a132c27
+34a71ff634ea0327c375f0cb0a020dd5
+34a7278efb4a488d19549b6a3452c075
+34ab3105e26af515932f85dd0fe368a7
+34ac137d39f2d3c4f1aacd9942814508
+34ad4b3ca22d8e78fa9fd16d386cd546
+34af97c0d52b4da26ef9704e3517bf39
+34b026febe1e5430d214e1f07d984437
+34b05c4b127a8b747276ae08b7e07fee
+34b1bef6f9cd2f36d0ad2e81c35b2e10
+34b27bc9830487a73e4f005457d56d19
+34b30c9fbf451236b207afdb3fae06ff
+34b57bee33b2a6df490e50b596f312de
+34b713ecd322926cd3d4381df0d61afe
+34b80ae48d6723ec8f10840bf860fc29
+34b812ac01b4ab5e8920c9d65d6de82e
+34ba1506987f195250e00b4d11a91fc5
+34badf9669abc8699b74ee96c7aaa88d
+34bd2d9b6567bb2245a5aff9934069ad
+34be96fc40311581c977668e5a3827ab
+34c35c64aa4ca251cf45d9d2a3af8b89
+34c37de73752dd5d7855f94eae05b2c7
+34c3f8fec0ffe1d80e8c4587f6b42e3c
+34c4197fedbc180333c613bc74e60e64
+34c5db8490f42a4d249473fe8cb5f3bf
+34c93223955efc31c18edbf9616d9171
+34cafdf5f5603ba2873bd30deb5ca640
+34cbae2ed8156c1929d648a553372559
+34cd54ed6788c94d0ee11dfba9bde4a1
+34ce1e90fabf6065f40635f0585be26c
+34ce66321202e0b7754d1e6fa6b945f8
+34d3c2198d4529906035d5666ecb0f55
+34d3eb9f08a6ef383ee707af0c79c7d1
+34d42ece079714faee7684e8486c4a09
+34d46db95c44c3c1670bd65274979e0a
+34d4bb0988eeebc5c1ca6631f57b866c
+34d6bb5528d84ca192680cca34b7bfc6
+34d6c57d59c342014da169f4469d8619
+34d79fce89e24a3d5f3160060a620740
+34d7c3f9023faa4be147d8416eda816d
+34db46bd4f8be9c0a8a940e705c57923
+34e05418b0d52e86249ab421f7c63699
+34e063f33e5ac96462ef244650f275b2
+34e1bab7711b1fa5a14cac97bd551c9c
+34e1d7c1ab6f9a3143fd294827f16553
+34e6d9febc380a19281ae663b6cb43f7
+34e8e046390f8df3707e3dbbf22a540d
+34e91d8a9af653892d324e90ba14a502
+34e947885c5f44c1daa21255c4fb827c
+34e9c1278ed8dbc6992e65c64f7e4a3c
+34eb0da7234fce20f108f9ce3712775b
+34ef9c3f76a0eda0e9001f95fb411873
+34f006309aa37c1ba90105e4195902c6
+34f1531503c5fd3ab8fb9d8b4c531541
+34f19f3a602cfa46afbcaa377f5001c0
+34f35d8397b923a1a8422f688ff76cb9
+34f44e454ca0eadb7d9c91c43b23d9d9
+34f573363a5a1f945fd21e3b4ceab061
+34f5f778b746783097914f9c830ab9c7
+34f9172b3eb5aa03545df510efb8bac4
+34fa52ee18ac293b13d3c9b09fbd3016
+34fed8bdf6017809311d714be160e0b5
+3500b6c3a1f058a330b8c4a73517ba34
+350302791a742de2c1017d39f1e930e3
+3504857a15b925edf6813b41324d5de1
+3504c7de8f17ab203adb455a53ae376c
+35053aeef556830c6749976336e2cdd5
+350578682dd9e664275c0eb49b1ff79e
+3505e35789a3f12c4f497e2d7fb5e859
+35060dc4f7024d3c13be8c0e5602b0b7
+350644c3b3d16471291f69b1e4f532a7
+3506d92035030627dc893297f98496e1
+3507461230fd6064009c3ed97c642c05
+35077cbe2563a04864ec6f73be2f923c
+3507b1152435a7ddc51b5e1293afadaa
+3507fafb4336bd5a17b0b7a886157dd6
+35088e3a64feb9fc8d13d789c20c7b5d
+3508b153d07c150e341bd602568b68e0
+3509edfcf109758d19e5032c7d1a3191
+350a24438b70d9b36ec3793c4326e112
+350accae2f68949905b3d25fde8ed97d
+350c398bfd3b267468dd60ca564491ce
+350f7bf968c87825b4a009a24f04f6bf
+3511762a93e22ab048368156e7c0a797
+3512386c52a629b4edc5f495c96ef43b
+35128f4d255694e11a3b6e850dfc150b
+351626f709d203781769acd78b8973e6
+35173bf16f112480e294b3e6abe2db9b
+351863e88351b91ffaf9d6cfaa1d5b89
+351da229e46656801ade3868ab68033e
+351e2efc0863f8bd430425c80ab97286
+351ff1520666cafcfad55543a3dddb10
+35262d96680866967722a810dff20941
+352719b67f6fb944c3de565c13cb7ae4
+352b646633b78805162ad783a6d7d403
+352d4824a327d1a06172f725f7067522
+352f2cc8e42a5eebfcd8478aa80c3dea
+3531cccfd66b34eba85faa7aa0ca5f55
+3531e183e4f880842762edcc2b649f59
+35332e0307dad58bad0650270f458671
+3533649bb2b62a25de02efd4a724d70e
+353385894840237623351e651d8c53bb
+353420c46978cf6f1fa2783dbfe5707f
+3536d5e5dd9b3875ea2d5618fc4d33a2
+3536f31817c50d27a21645d1c0f46439
+3538a8c4611370cb9ba795a41d20518b
+353b1c76822821b1c993a8df106b0974
+353bc2f3020101b1414cbc142be1364b
+353be40898fc4734af4fdb45527709bf
+3542a2669d7a07fd76774c77778560c0
+3543672f1d0ebbadacd556979af7ac10
+3543b1460db91fd5519b213e608502be
+3545453ae115ac90243418a89cb0cc48
+35457dbf6b8aa102ffbc6cef0d16c689
+3545e0e5c1cfd1151cc87afadb78ddf7
+35468945cd3dc153b842773f9b1bec48
+3547a296f60b101fa83d70bbd5af7357
+3549ab97d391310c5c4f67d5f2d4384e
+354a3360f8d251c1325e0c07da19acc9
+354bfee52894b3a9b57d2ac173d622af
+354c22bfafc18162c291b966b44649ae
+3553ed4b96662a01effec28b9741e342
+35591414ad77cce9a68f44f79cf58d1f
+3559b54d3d55192e8ef41d33dd7b15e8
+355ad347f48a9528bdf54dca0254f11a
+355b9424a2087e39ef85e37bf807ef91
+355becc4d8481fd9a4b49dc8ea4fe108
+355fa08df2bed5ec21caf12cec751a2e
+355ffddb2cf7c7a72a48825a37a12463
+35617504470222555503579fa77e401a
+3564da0f16c083ef6f92785b5eaea1c5
+3565e14e1b295e6720683de39b1a4b06
+3567b1cb037db67d2472b05bb8b49b06
+356ae6a88fb9f248ccbc23ad43e4d979
+356af386a34daa1a4ad45d0600da3b47
+356b1463c3629377fd436d73e9f7f9ad
+356b7de6ab9db6e3328475d2543b74db
+356ba15da695801764fbba7888e07049
+356d5532e75b2bbb80bc65467a7899ba
+356d7270e34ff1646c654778ec9818a2
+356d767e63af012cba994bf37505f719
+356ead603654677198c3b05f61cf7a51
+356f54e4c38c913172cc5844c6a4d661
+356fb4ffc25aefb229b02c560912a14c
+356fc7db7fdf4bcdbf1cc5ee8b3eb429
+35721088bbf88188566f612e52aac2d7
+3576063f43686610c2ca828b8b4ab38a
+3577b85e7e4feb95bb8b0357c1445ef6
+357947dc30fdc5898e354e549ea87c11
+3579c4f28d3867eaae360164582aba53
+357a65ac03f0d028e8fc19f0157aeae9
+357d53e2d6365c397659e776d065342b
+35807b369ba6dd10455eecaf704d8dd0
+3582a5255b45fc76c4a9b3134ea8fd94
+3583e55dbecd0c43bf46ae82c6ee8a58
+35843793e71c72c3180a93dc261f5374
+358474a04d43d74f97df692e3cfaaa29
+35851e2205e653c457c2c6af467e5e9a
+358580a3220a1fe1ae769d5a0b4e4f3e
+3587c3f4bcd9a0a82f839f1772bd2894
+358d954b424717f1fd33fc423fc9b0fa
+358da926f368c3e0c86c5c995fdf53ef
+3592df3e69a5a28bb30d65dd50dd0345
+3595b555b52e4d284bae533a060dfb46
+35966765929789cb2b737f85550735d2
+3596d8cbb6383688d394e225f01db680
+359802288e0eb5a906f22fa283d66c31
+359e97b8ea9ec5fc427af5b0d2e28c75
+35a399f6528fc280d3ab7423365a14eb
+35a50e7b3c35ceeaa432394862dbffa5
+35a6db5f924f9578edb20721729c88da
+35a75f9552e743e18dab1dcd16b62ba9
+35a7f39102810ccafd18b4706845033f
+35a89b5f970b126f783f8856d884285f
+35aabeb7be3a56fcbad3a35ed01b491e
+35af263f701d94b9c9a2244252bc621c
+35afdcc297f4b7050cf3b31d1e44534c
+35b0bca7b0d655ac188e5714de5099b7
+35b5566a10b3d2fc5b69dae96f9ad472
+35b93388f54b5885205991361dbf5825
+35bdca0cbc77d72935809a14fa67b823
+35be3093f0e863c2520845071ee8ab8a
+35bf2349ff6f24a34afa59c5567c36bc
+35c0e03dfbf25d4e83e8fe46edb05772
+35c185208820e9a115ff52033aacfdcd
+35c2fe3993b1f3d5e81398c6f8968c58
+35cc023a1ecc7303427972efe186bab5
+35cdd4dd2f2cb84f4b9902c744d6aa11
+35cf739ae8c6b90ff17b2245f2bbd777
+35d022dbf924569bdbe6c4bb21c925eb
+35d12e580fcb947d076190be7d17249f
+35d2d1f0bac25532d5ff58b85cb906f7
+35d4340555c8792c541113fb626c7d83
+35d5093258973ad4c0346c5afeb019d2
+35d5b994ee7f48410d3bdcce483b4c71
+35d78cb1ff868eb397f24089fae01536
+35d8af02757193c1df5ba6a6f5effc7d
+35dcd2f62a4359c2963823e3333aacda
+35df924e122b9eafdaf36934407debc0
+35e2bf1a9ab710a6c65e24d4cdf8dd06
+35e2c61b8556ffb308fa05fc64ed7bd5
+35e48d1e1e0dd9000a90d230dd47bf7a
+35e4deaae5419ac6a28915c5e6bbe61a
+35e5ddfdc2f44ed3f93395dad74e10ea
+35e73865c27338f94b4561a0ffbc5183
+35e790f4b731fbc639e2d65248f1e885
+35e86cd1df2aae86f6a6a6b2b262226d
+35e8ecc0494f96b114664aa086fa1863
+35e9a009803269c38adee89aec8f301e
+35ea5609ca18e302bbabd47eceed5981
+35edf09893a917ddb77609abbccd0fdd
+35ee7e2b300e6f0c769d1b89910b06b2
+35ef16c25c69b5d9b7d9572c22865dcd
+35f019cc4cfbd0bb398c8d80c9cda06d
+35f07a6783a80354b2553f80c6280b23
+35f0e53bb283be5158bb00fed20d5fd2
+35f107969f081ce0f782cbc6cb991f88
+35f11b3f0a02fe504e5bacb4258030e0
+35f248c1518410144baa08924adc273c
+35f30332a3035602a3180f8629f4fca0
+35f398e531dfc9d9898e3090c81b1fff
+35f638f263e7a28b06c49ec32afa1ebc
+35f6502501ab50a49bc7d076a8cecf06
+35f6c0b49f8c67a0a096ecb9926a1968
+35fa1fec6a93ec847bc1bd64717555e1
+35fa8e162c55824ac1c9a7a643f0c43a
+35faf73e4a65b02be9787709961ddcd1
+35feeb2f6ba92f1f5d7fd63674c3e4e8
+360334d7161e40c632f1137a7c4719fb
+3603d243177dee839081ec395b97b933
+3604f52dadcf62ce5787aae848294828
+3605da9bb07dafebdf800c5ffccdb22c
+360783f5552aac85a6411cc5e88b8ffa
+3607db1b7c85b04483908aac8db4b189
+3608c550313fc3a6e25c19ec5e314718
+3608f56acbad6597e79888f6b32ec8d1
+360ba6e92df37cba57460c88a0ac607b
+360c9e8c1d46daec00ab85f9f63a667d
+360d886a95de3d8fa8ff808d08501f29
+3611651e7340befef9786e5a6ceb0a5d
+36140d37f217b5a219976be8ff6b23eb
+3617c855a7ab929105611aca8fb889e4
+361a4cf3c2b2bc0281d179c6438fce83
+361afc3da8955c338300b2632ddeee3f
+361b97ecf572fb25fe178b2b256eba4d
+361c0dbdec8f9e763744e3825f210a3b
+361cb7688ee9be369d62e7da4c57d7f3
+3620249907cbe1733751a4c820be402f
+36203f48348ca5d26b7409fafe131395
+3620880d52e73e0f055a622db0af1c1e
+362206f33547e30813254b4305f7dba1
+36235e7e785deba6d13d7a9abdd69c9f
+3627fe077d95677dd4e500b750437fa1
+36280b9d3f248f471ac6d1d0a3bb7b52
+362a08a514c962e04b742fe77cfeb6b2
+362d4eb46651184290b228d5a12bf65f
+362d89d2f9833d010001a94315a5951e
+362f989f1f25d86f6b9ce0f6f30981cc
+36315f645cf3a73b0a7ead707bd8f52b
+3632524e05b4c7849bc2368662ab42de
+363515cc64be62c14fe1f33ce388144c
+363522b95dc523a3fd8aa9534db18e2a
+3635995bef6c0c4868befa276f9604d1
+3639d56130e76253169b497a4e1af5c2
+363ac4e99e74c4cf27e739fce9cb972e
+363b4ea76953b5941525546fcfcc66eb
+363e4addc5d66d92de33448a45c4eb3f
+363e9f7d68f0f28fe8acd73ad8c84425
+363ff71b48d1f38384f22fc83fb9d909
+364150bf99fcd801c2daa2bc3732d40e
+3641b94a2ab4ceb5b525c448b7333a5a
+36422c0231a049f9579927ba455a01ae
+3642afd134c3dc23b28531e8dcfbbcc8
+36431bd73da450cde5581e1e97193d1f
+36443f5b40be48a83a015eaabf46897c
+3644647c5bc413d130e1d1cc36c7e197
+364591cf543219a812c3bcbab729bc15
+364abccd40479337d04cd97d6c9bda6f
+364ae25a9edbd67352bd4c0fe682875d
+364b1abf0abca92176a3413369409985
+364d041bc9b3198142859508b5bfcdc5
+364dbc58dd13a9d54b77a7948e0cb34c
+365188bc219752c56d2f5571b21c63f6
+3653b366a5bddbb85bf0f6e673309182
+365506a550ce11bd089cda77ec9749e6
+365629146b96c8faa7efacf7258d0bdc
+365722f80792676428419ce0d6868a32
+3658c6216095ce0cf9904ae1248ab287
+3659f0794dceccf026a1569b74678c60
+365b61584d9d77dcbf95d2b4b41db6f1
+365c17dcd03eaf397b553cb48ab6f936
+365c89cd8624b9483e2bce59fc7a31ed
+365d58e60cb52be513b10c4adf0bee87
+365e5864d7aad8f03310d5fa053b551d
+365f157e4aa5354e10b1b4fee0d3effe
+36611e6eb7cb764af2ccf7b2ff873910
+3662045b2ad79b7d42da2026e8f30bf4
+36625a252eb3cd25e1ddc4b2b1ea4fba
+3664268ffbbf27ea844c6b67d9777bf4
+366436ad1c512681f3ea02535411955c
+36650a567963f7e4db091b72af9fa0b1
+36667c3bfa67c037166a5d4d2defc803
+36683973d0e7f7d0fb9b9d8c82a12e71
+366cfe2a0ca064d9628de1375b7d2137
+366d4027eb5fe97a871d08412fbbb79c
+366de2e7e7bdc430a4bfd25d2e5b8cfa
+36701072e61543c7494481937cde388c
+3674c7ef5d6244b6641eaa0ff184cc6c
+367603d124bf505f0029c3af065bbdfe
+367688e7770c0fb91ee0e1e8cbbf4281
+36786c9ee5d673c5fa26b28824cd9d0b
+367951b6898fb9ad9d6c7c6fce26f221
+3679ec05c2fcb506bf76c433088ac6f7
+367a5e5775a525314a1adb0dfdeac5d1
+367c1379b73d04042294b56fc0e00978
+367c4f0a097738eca2dda0c871b385e8
+3680eddb30de5e278655fc90b39a0c1e
+3681a53b2bf23d8e4b616a7561b9f5a8
+368274af83f344e74ec9212c659c409c
+3684491a6b5e95cee1551e23a0e9dc0c
+36864a972ed3f19794e76d3679a83107
+36869a6eb226f9a36f8cc5cbd78c2387
+3686d36a56aade4b6a7662e9814c252b
+368ac7e4cb67d3ff9f3b8a39116a150c
+368ae85875bc8876d76be0e699d45e8f
+368b9e89160b08fde99a90ba417f2164
+368d79bec2361d4bd0970aa1163bd501
+3690fdf54ebbbb26b77e2cb1ee8cf2c6
+3692f2d90adfdd0bbce24a3804803815
+3694e78b04fc308eb79cd89588f9dac4
+369521f3d87bf056017f1f00d7dfed3e
+369b2283114a1170063f0c6405d9f5ca
+369c98b34082d5923a9e38d65c26a472
+369e2683f997f47323e8ac51ee17c852
+369e95cc8a2fe5d4cf9cafb60bdc7dcd
+36a0badbfec7273e4a88688e50d1ae63
+36a299c0a817442a0bee919a4b438ba0
+36a350367ab9583ad44571e6dd9520c8
+36a378f0cb0e7ee4501c4b4350966884
+36a97248caaaa614e18d5d0e9c86f32e
+36aa421ca486a5ade0cc6af9b1180bb6
+36acacfc08e197db581d129ca0313178
+36acfe08e72a42f02f9cf20568aea38a
+36afa407cf39e4a39af1aac61325343e
+36b07189dca1530f15a804d7374cf8cf
+36b0b4dc1761a921a1d1ac3ae76575b8
+36b1e0d1aadeeadbb9d3cda1da02b48c
+36b4ed6a0528f6ffaf59cff9225d59e4
+36b6a6ad044d41cb2ecafffa98b4bed5
+36ba21e1604c1e271723a996c1e8f84d
+36bb61d2111824ea9c6d33ca80ff61c1
+36bbec6ccd6051de12e98a721884d9a2
+36be1e1e147dd7ade760ac9bc17bb0a4
+36be63d47cc9dae6bb60d56aa27baea2
+36bea41f0e45f169fc193d986b1ad530
+36c12667866105df07144d5460067aaf
+36c4a0fe773ad93ef2b5784e3357e006
+36c4ca3f01e201d607402d89e5758bca
+36c6ba2a549184451b755ca8053622d7
+36c8c1edecca304e1be9dca5b187993c
+36c988349ee53662b22f5e962ebc455d
+36cacc641d72b82a483d1bfebd61dd6d
+36cb8b83a9c99ef27afbee07ff46187d
+36cf14d72da46d182ceb165d1fa8a282
+36cf48d4f5d7a1d067bad4fb23d472e2
+36d3cd49c67fff54329ddd512b504902
+36d4f0868b6d6459a24cb15bf137d181
+36d56284c68baf03aecfb543d923f638
+36d806d075ba287237aa2daadc609088
+36dcd1f77c6d2695fe75f9a8d0794d9e
+36dd0f08f794f66c1204680a614e2e08
+36dd6e94818c316ff0e4230c6a7a35b5
+36e0a354eef5a98baac58f3d0194dfdb
+36e1e432eb67b3ab227b794c06246db7
+36e31d8ec0cf3b1c0827b44ed200f76f
+36e44838e5528980c594b36ab8182156
+36e4de122f8e2ff30105f0c65648a52f
+36e7870dafe0a4b3fe62d010f30d022d
+36e7cb473444dfe65619f45694341293
+36ea8c610df7b5ad550b1772e9c0a73f
+36ebbdbec9b59ac0c9d58f39e9854804
+36ebd20570c6d499e8a87ed2955bc28e
+36ece4387c8eecb3f64f1576cc2d6f0f
+36f0f09c84bd785dae5388fc5f36afd6
+36f1f055b7364f4c5ad1fa4ef81ac3c4
+36f448132368c2c96fde068fa21a5ae8
+36f634b240d904281999663f6e72717e
+36fa3d43194dd192424cfac8524abbd9
+36fba27d47016299fe9a0fc89a896370
+36fbf2d30d233ded55798e6da8b0b317
+36fd859001a51c999bdde24af5c9f24f
+370073ea65ca7ec500ee16cdab24f6fb
+3706328a4f589ce2a2064e0d2cf0d265
+3706cd8aed3050587cb22ca27076701d
+370916fbc46d2681b8fcee7d9f4f8137
+370a75f1c1640214033f44fb508ec14d
+370b576eb192089cd5646da445448b73
+370bca6ad73f42aec0b062bb87ec7d13
+370c3fa63a6f012372918854e9ab9744
+37106ed40e31c2b04c1cf610e284a703
+3711ac6d6abe73f69defb0991b095289
+3712a88223474a03afb1ef27557b3f2d
+3713c5610becf2fc27ad483d67665bf8
+37171bdda36b8b4100706458e114a205
+371810c25e8147f5998f329bec527e32
+371c4f65696f3bd5cfd18fad150b8aa3
+371cb2725d3f30c062f519f1e2b44137
+3720b74a4e5c06882ed4d4a2f200719e
+37238ca40826a7d1858cdfd6c4810784
+37239b1006ad4913486234ddde1ed1c1
+372400120ee90675734c2c1c55bf0cd6
+372627ea8cf613c532e9eaf3130c58cf
+37268a02cbd52a7484552cf2646cc1ac
+3727ae623d27428ebd14013d0953d290
+3727d8682aa4ea256bf438117a7b8162
+37296f0b4b8f851c7227b69161462361
+372ab37dc559cdab7b2f90427b6932ca
+372d38284f8807d01abc278905867b1b
+372ea0ab96ea67268a3ded3d7b8ee5b3
+373056a6924f1f11303b4dd070c16b01
+3737256a480dc58355f7c23e86a639ac
+3737312d17a3612f56944674db14c1d7
+37398290e474262f59d8ee31cb6c59fa
+373b4c36c80eb44320c2f8dddf4f7ecd
+373c150f5d844d37aa15a799b3cbc143
+373c84df9bf35c83cc66e46d1473bbc5
+373e73d9c82991a4941ab327d9031480
+37412466104bfa317c4a9792a93eb3c8
+374797a77e6e41d6d18c9560c459779b
+37484cbb1107971109962e9821d96734
+37495144efe8f09398f9c72596d7e0ed
+374b8369d2daf070d87052d82788aa12
+374b908afc29568fdf716e19e2ed0a83
+374bf55c045b86220477a6119f17445e
+374ce06951a929cfed3d91fc2d708a03
+374d5a54b820c0571b24d89f7e6fe036
+374df6b225de599e57fd764601e2e8f8
+374f75d3606c59f83d37fd1dbe915d6f
+37500659a18c1bc7aa06c60ea3639c76
+375052811c6d5b537c8780d763daf373
+3750842d15cac2e0064d1c9786ec03fa
+37513ca9f9c6d7b69d1ceaf60678f0bd
+3752ae38be731a4ae1f4d3aae7f7ce54
+3753722ec661e94c594f6404594ca608
+375c92acd79d52c574d0c2ad96d2b02a
+3760157d02865e8dc852ad2c16c4dd4a
+3760fef726c326cce48bac97d35aee8a
+3762a42809e79134d2a598b89a07a7ef
+3762f5947b99bd08b523ca934580ffcf
+3763392e529da1680b9f85d6198a583d
+3765324b4e745cc538b615914455e809
+376614fdeb65979a9de7fee9860dfe91
+37697d9701a89a8f41ec877795852ed0
+376a10ec872bd19832a528044e708f39
+376bf5be86c5d3c49ae8680fc4ae6342
+376cf9759983fcce7651384a807fbc27
+376dc33be84e4db8c5c4dfe852df1806
+376df31d66188897aef38b6030d8c887
+376ed2fc3788017a600b779082a7ad2c
+376f87522455ad5efec17f5c9357c40c
+3770bbfb07fad1f468b7fa9f130cc95a
+3770d0cb0f19cd8b3ccf4d668859c84c
+37732bf2c345c4ccc9a28cc47174d42c
+377362804e1565a08ad2eecf2ef06ba2
+377381f1cdbf2e8ee51393b169d1250e
+3775b5e2fbd916b88817df5343fac400
+3775f2eaca2f0ded7d9f779a42967d7b
+37789b44c7dc5153d3b8f42606a66e9c
+3779969cc632f72336876e281593827e
+377a3e1be5e7751287ec22bb049ff44f
+377a4944a3dc437f0d21402537626ec0
+377af71243d44c37ab3d8ab932ff948a
+377d6cb0c13493bd19d69b3f4e62ae34
+377d8e123cfeeb51947c8ccfd67cb5f0
+377dcc7326523250a8ac4ed2c118349e
+37802c907893b6d8aad27a25841bfb4b
+3780f8c8785012f08ba28a7ea3d5afff
+37811e3e442de69663836a2a0c999450
+37864a8687a5f167922bf0d86ea8caab
+37879eea6ce6680f2b33358e201571bc
+3788328794c563f6a6d579b4c081cf0c
+37893bf8d3925623acd43c73b972d818
+378a3e8c9228d9dce0c32e2e2eab491a
+378e6df2d3aac77b5d2dfa2165b74e44
+378fac22e64cc6237cd9d8dbfedd993c
+378fc0f343214cf1c4ac1ee1d15bf59f
+37908a0389bc895d7ac1e02dda7c4b17
+37909eb4df0ad182d28432caeb737f62
+3790dfa7ed15c540f96042c10c9bb038
+37915882c5afa19cd5d5fe2809137b39
+3791651de95a29ea9c1c2cf46b391da9
+3792e4c278fb1a0107595e93b6c1e8bb
+3799f8d6189660caec8b66b880dc6b90
+379b4ef9cdcb22b8ea715853c6e737b4
+37a3b60f9948f86f779caffc5923e00f
+37a44bca974df7322ca5506686fa4846
+37a4f78e416161030170a86d118de048
+37a76dfa76a5717fdb4e47c6299ddbef
+37a8be5c3081a4b2f911844d6a3bb433
+37aad253cf9fde6a170db7b024fd7c86
+37ab65da231844186767c43803b0cc10
+37ad77d1ced77d4c9c75861d9fd42823
+37b0ff09cc8456a4e2cd1f5f3596e946
+37b1f2b61984976fa1f3d7aad82827a7
+37b2bb56533684c3642ed471d2185af9
+37b4e84b265fe97cd67f8a0db086ec14
+37b69abae8b5f216eeb9406911a8c93f
+37b6c42fc66af0421cf58511375d8e3f
+37b9bbe4126f2dcd62e7273ff4478ec5
+37ba13c00507e6e969dd9c9dabcebfe3
+37bbc06467e4157a48100a463bb9179b
+37bbf754d3e6b52f1421837c92e1e9f7
+37beb6aeba28a6eff94835140a146bb1
+37c0800df62cd02e2f5377219c7b63bd
+37c1370573c6f1a0c935e1faf1b172c6
+37c289436e483d8e96b460b48ea01eab
+37c424fbec570bcfce9d84e43da5f6c7
+37c4988e079a07890742cb5869d93d3d
+37c77946606bf72703839fb740a19d36
+37c8f6efa4e57299e4da294812e9d642
+37cd24035875dc17bf559ff5b963bfb6
+37cde8321b0b09adb056b9b174e8c3b6
+37ce9de96e85700e3a2ef9048b19fa1a
+37ced5ae39492dc5b6ab467e6498055f
+37cf55cb6ee015613d9212fdd0f238e3
+37d03f7f5a83e21f819d7f423da43f70
+37d29d64da02cd3a68ba1db46eba0a0b
+37d32057469f849e99c6c00a1999587c
+37d34208c974e25f1ec09557261bdb8c
+37d4cc6108c55115be888f2748a5999a
+37d642f7c6dae0815534cc75e1e3a36c
+37d6baa088cd02de5958f6f9a4154682
+37d6e7cde57cf69996525c5949b29ca5
+37d73ae97bc1a0095bac8f7e176ea96c
+37d871cf3709b7e03d35d1bee966b338
+37d99c1da922f0dc106ee89079577ec8
+37da4943fdd878c80f7ec7fb2cc7501d
+37db0633387cb6a3b7722ad7768dc85d
+37db9d8b5e7afd49718861956be7493f
+37de99211282c476af174df0489289ff
+37deeee2c7019892b21b92fd8ec33775
+37df76f4ac6d83800e9932efaba690a0
+37e2249d03673d894d3beb67707cc2ff
+37e61cc32c3ec2acabb7fc46083a4d9a
+37e6c80611154d1374975a00288a6c9e
+37e6cf2da160e7e68118bc98f6b7da0b
+37e7b8c2565c784633473aaaad57ab08
+37e870a68c157770e6509123f457a08f
+37eae5f8d9ab516ab9e9e1ab85b86053
+37eb068af3f5ad9959f378c97b8a3e10
+37ecad7e162aa3b87b4211caf96fb11d
+37edfa54e732182ad321dafe3ca41334
+37f0348f459a6c66358883266db5f959
+37f233ac5ce8d1e67a47057e78d9df9b
+37f49cc8b3c14ef208ff7a43f71eaad0
+37f835da61d0f02a5a7e2010d6ba4a3c
+37fa13987c274e6eddabe0b5d094dec3
+37fb7d599f5bca9b183f3889f3826dd7
+37fc175e5d9042b09bbbbaeba9a3783c
+37fc411ee3d3bb7a0997da8d5a948fba
+380129f93cc101fd06970e28d7c64082
+380175c593852125cbc1245df048edbf
+3805c3650828442526014c1843f6ebbb
+38067295d5ed9ed031933c0b6612aef7
+3807251903f23cb603ece0d442bfd41d
+380871a1bb3bc2aed4b9f0a5c58524e9
+380b2f224e1d25fe32ce7cc5e891593a
+380c5e79d89b743c1ad09657d903b4b3
+380cb10cfe9a1b4bcb688a440aa5ec39
+380e92ecc06d063e8ef13cbe0df9b679
+380eb2f64daedc0c6539afdfb479ecd8
+3812b26661963f2aed4183167d3bed6e
+3813054116ca929ae87e48028d3656e5
+38133035f10368a6a8e8b8d63dd937c0
+381657ccf1e1f953bd96d1941c35ec6d
+3818e5b55fb95308ff880d576c8e5db6
+38197e3327b069282fbdd2ee55cf1850
+381ac980a8a8cf8bf75ec26756032561
+381ca04eb729c947d2af67a0f078208a
+381cc900e19dc17808eb818c90a81f0a
+3820adfed8fb537afb9075f20b542119
+3821315a48008b3c0a4ff8c9e5ecacc2
+3823ce333c2b7cdddfe5f9d677f26555
+382532967ba85ad981426412e3c52f77
+38271216d1251cd860f15d3145edc70e
+3827a69a77d517f3c56220917425a3a6
+382854aa49127e8c5a40e6c1b89bb78d
+3828d02a8cd30483a8a9a1cd7969e1c5
+382a2ddabaea176b969df2cdd3e1c932
+382cae056ccd93f794f24916cc953c98
+382d39b8e164afe550f330ba36de0f23
+3830535c29b5752878114883b8ec362c
+38311e31ecc76b3728ccd7b3dd8470ed
+3832cfe51a018ed192260cdb49ba6c67
+3833bf05f67c48d4af30636a655a7852
+383400e4f6d738ef993cc40b90e2950b
+3835374303556de0c2b6ee27c92ce931
+38374ad7ea5e759e4957d0a3ef4532b8
+383ba686f2045bb094c39931ea8caaf8
+383cbd64b7d192c26b9a1f2db5552eb5
+383d16f5d7f16b4871f586485308786e
+383fd2ce7ff30bc621e99572ada1d7f7
+384100a7acd33507781aab7c1c174bc3
+3841bb90cbf8879098248f215c7cd2e3
+38432202be381ff7cdb9919ec4dcc6e5
+384473d074c85f4172806c42a1385041
+3845b7dc41356cc6c919d4441795dd17
+3849d1f8bce17b4d85543fe0bd2ce203
+384a4eb0276214a6e24c2a7691064876
+384b01f856c9d951beb1d8f3351cdf8d
+384c2720d2059005a0b989fc20da974c
+384d314301425860404d40c30b1bba21
+384f5ac890fe9edabfe4f3003fc44c30
+385241904542b3cad90d7e70a56a4781
+385280aceca791bd9154f988eea2d71a
+3852e62c67d6761eb2c8c534a02ec25a
+385333ffe1d526b225924f28046d2a7b
+38534288c49ccec0de9f89f8b9ca48c8
+38543f7a736332c1a595592d1f85280f
+3854ccdcd9145d7c262e1c877542b2b7
+385562f650de125d0fb71f233f738c30
+3856ed405143f735c46f2efe85eabfa6
+3858da5ef9d8905e5bec1cbe850957d0
+386087bd84c21b3eeaf1d00ba186bad8
+38641bbe6aa7167add462a4e7c6fb1df
+3864530cff742baa812897fd8a848028
+3864a321c9b826697b0581e9d0ed89fe
+3869503dc3a885296d68ae591693c144
+386a2aad056e6d4a8b08a26f606e6563
+386ae2fdc0bcc7cecdd4f789e13d60a5
+386d68e56ea66ebed95b4cea96b9dc20
+386df2f7450c639751c7539626bf3256
+386f7e46a00d6b4927ccfc547c8d528a
+386feac07b8eb49f6fefa8e472377a90
+387030a2dc779ccf3f4965488663ded7
+387214738a9afb518321e0435a04c760
+3873e85963c3259bd3b84598d4f05794
+387740c93324b07278b6ac261ecfb33f
+3877ff6a9df884464f134b056c3f187d
+3878c45962fd4cca4b933963aabcf542
+387902a941657e9e1fea0c8d29def463
+387a6b142af37551c49ec0a46b146e4e
+387c868995c8a3b52b07e65209303b78
+387e940d7d15e72a55d2a767b697a45e
+387ec8f335bbd23ea8a876479483ab5a
+3882ff3514104cb6756130f5faf149e9
+38848b9177c70ac0dcbee14c0a5b48d0
+388a6932bfbecb0fc10ffa55d4b0e1c2
+388adb81256d06591864ed709ece3863
+388b63415cfab2872fdebdf3ba7dbb19
+388bf42c34ee726078fd2e16f1b872cb
+388ea15436cc14d3a5a816f8304fa067
+388f0d22a1b18ec5b6946df7215d8a36
+3890820b7796c2788d9b31ac5d8ede9c
+3890f7182cd3859e3915562a433b9918
+38931cc62bb9c48c63128af6e50a6910
+389486b779fe51408c1b41da6d1765b5
+38953244e27777b89725a88c412acc91
+38969836235858e33103591b733a0bc6
+3896bd4d6f6e19ce2bd4289a05c9605f
+38986afdc138143ffcfd992548481a52
+389a48cc1e6c409786568c935b0533ed
+389bfe90e64944ec3806ad6dc83b6205
+389c7141a3498e6e3bcffc5082765abb
+38a09d6ccc58e0683ceb75fed652b7ac
+38a2d86626977e611511705ca967ee0b
+38a34700119534da26c3e41efb9a6e95
+38a359a86fe323dca339124f7e8704a3
+38a3770500bb58b090c59603a27d3458
+38a428ec47c89636cded57deaba497b8
+38a687c70ef019e4cf868480f5f69cbc
+38a9d49cac7318ec61c62009ec00f24f
+38aa0a58a02670e0c53ad764d83a6936
+38aa0bbec03b6cf850fa1c260ff1dfe2
+38aa4dd0fcd956af3a01bfedd8f546f1
+38aaf72b85dec0ac2010532089968ca1
+38ad99be123c02d3b8742c9a1fa5f6c2
+38adeba05c1d947b0b1ddf67566630dd
+38ae23dcf1f3bb044c03e0b26d420a67
+38af6cf167feac9e7de86d187e6ae04e
+38b098c2039e285728f50087156ab78d
+38b1bb9fce45c2e2ba62c50b08385a3d
+38b1ddd70edb991ca1cf962228ce8e39
+38b27d84f38c7087ec56afe8228774d0
+38b2fb181fa626e3721446c8af80f4b7
+38b3885a733062966147f8e7e7234ed0
+38b50ddb06b770b568d29d37b554e798
+38b9005a721bcc3816954f506b1ba273
+38b93b08f69477e98c2eed1444ce435c
+38b9db80c1c948cd1cef93331d6f56f1
+38b9ec0daa04ec0e35dbef278c292913
+38bd4fc212d9ba6b1775a737773a13f6
+38bdccc45bcad22c0054b5412863fb6b
+38be08356bc2885eb6625579a53999b7
+38be962907ad98a0710d6766ad1e042b
+38c080c58cfc8b06b55c22b2dbff566b
+38c0933d114b36106dfcc5ff16aab35b
+38c473be890d122c98b9063e8d8fa68e
+38c4f923fd5d47ae0825466d93c4e2f3
+38c5a093b2c8f514367dd6eeb47390d3
+38c64d97ceb5bc4a9fb4253319f70de4
+38c7e359c5495d5964b0c06e59cfa94c
+38c869d43620bd8df938af02709620b8
+38ca044a5254a21f22fb55674a85b84b
+38cc528fd90a474c59627ff7e64ea08b
+38cd4d1bf83f826c4599c18af8e707d1
+38cf4edb1b7e3f90d208b32dc3293b85
+38d03cba69ab7ddd6a64278e1db383a1
+38d127c4fe00088989e39e779f7476f3
+38d8b0b84fafe6762d7e91b796a56f4e
+38d8eae107a835b6cf4acd6e7ccb0472
+38da4b04f859883d3494755c8c1ab2a3
+38dc3cd31070685122ef3e4e56f1fc92
+38dc848dc1d81fa39e73a9be9f97f1d3
+38dff965761a9f0f175b4135eb213b59
+38e0e5e826b875558d681b76f005b30f
+38e1de88ad8f9440ff885733f9667030
+38e3ebaab62139304b2f103d6db5ccee
+38e5427107fa77ef39853c02be4739e6
+38e56c9f2c26264ae0edd19c1d8fc504
+38e64f17ec4f741e62a27030f42c0432
+38e6a28485336794c806df4f592f4cfc
+38e9073f9d690ff36edad05a1c5d080f
+38ebdf40e1ad9d52fdcb08b90217de61
+38eeb5092e3519fe4b879de259ee580d
+38f1899f8a8acddaa704220cf63aa32e
+38f50d4824385cd373926ef19f81d02e
+38f5ccaf6884ddf051a92a0889795cdd
+38f92878faa503adbe0006e42d8df751
+38f955e48333493ad96aafd14bb83c09
+39002a69a2f63706b5d579d8f564db8f
+3900c3ce161b184ef96f17e4698e2107
+3902daa847c56393618cfcbefdef04df
+3903a24714365f12dd9d9cc4c80e475c
+39067b50108aec28f845a731b6b4ea9a
+39074b77548dae862d53f85ed9b43b71
+390792baf48c261728408df31f0244b2
+390c1b49ad512dc68e50af3d22bb6973
+390dc7f1feae8ed8feeb6a0c9a635713
+390e41b4170ff3fabc9abd1e2ebdd410
+390fd9c3bb478dfda6535cbec34901c8
+3911288eb8a975bd292555793f569812
+3913217f36c53e992cf01b97663bf247
+39134c44251dcbd1a692147def393e96
+3918a7c7543bc6386cf2ce3da8933019
+39199e21a762e51e76b6a3206d897e25
+391c775575a5212beaca21ad106dfaa3
+391d2016b56431991ab30684cbab21a5
+391d4ec8c7388977e6cb61878bf36521
+392242245e3fcdbab1e875075ecabaca
+39226a34a3310c19b56c48dd64bf354e
+3923ba158cd062f13fb363d9655e83b7
+392491a0081333c4aa61d2990aa23cfa
+39267fd9249e4ef103a5a6090598d593
+3926b631de3e6a5721cbe6b58b7196e6
+392702d1e7fcf0d5748420c631803d76
+392742a8e5865b229a4d96ff0a7c8b6f
+39296c293859df54a6263b783878d347
+392a71a59d43fcaa817a7db9b54fa859
+392cb94fe709675930abc29dc23d5185
+392e0fb4a1bfd3c0ffe8ee26d65784ad
+392f4d2cdbbf1b9bcecd3bf9de36bfcf
+392ffe1dd7324d08d8295d45a5b99842
+3930b4510de2f1f8e130ac49908fde07
+3930cf2401c3325754a0a9f1a48197ef
+39316a03c05a4dd4264512cb80803204
+39316b98ab699b1a416845c2670b5703
+393334c1bfd010d1b0151477ba4f8839
+3936b7b3a5a824d194686f886025026b
+3937eda3044b761466f8fc7085ff3c42
+39388b572d0e31cf1f7579fd48fd366c
+393d8af3d34f58f52d0669ee93c5bab2
+393f35196c96fd32feb01df0deaec14f
+393f7d3096ea1b7173d0ac2014eb4eb2
+39407f705a6902ec237fbb8cbff49d1e
+39422d454984ec0c166b6651ee81b62c
+3945022d4fa0a72f6ef1e53271e64044
+3947e6617a97667c59b200e4b37fc48d
+39486b4d9861e8600158d7595593ff87
+39495df25e58468098f41ffe2d39265a
+394a2806a219b3b0057efa88144570aa
+394cc666c7dda5b769eb6ec602faae65
+394e205639e4a0a2fa6b369ff1cbe665
+394fbe89d2448223b7fb51e7321f392a
+3951355a60149f6ab15144855b2a5c9e
+3954ddf7e429173a5b4e17f4e0ee91c8
+3954fd5651f2ccc2aefeb6c7e07d21cb
+3955c4d6fa4556d0169cf704298042bd
+3955ce9e3ea1f1b65a788d0b8b8c49c2
+39564351f1f1c406dbca8111bec945e7
+3956d65ab58114160ef4b31d862f18e3
+39572d6eaa9ff210af317917f8b266d4
+395e743ac002bc05bf5ebd7c67a2ba08
+395f6ef5cc9756f92763334cbcb39981
+395f84c655f8c74f29a1b923507a85b9
+395fe15ce0cbffd60cd9065a45d980f4
+3962978bac5af3b4d378d62da1748c4f
+39630bef2619af7834fe4caa4a8fb3af
+3967f3cf8a9f3c7783fee3329c623941
+39687392dfbb4d1620367b4330820d7c
+396aa646b0e228ce012a14c7747cd831
+396b29ecc81b7e1c0d446d72154f1d82
+396b6a8213927380e3504b07c3822d98
+396ebfe1ae0daae18cdc1b05576236c1
+397069cd7ffa9e49094e15580012d9d3
+3972ea60c22ab8a330410942d790a681
+3973b5e07cfbac8d6b38775e870dfe41
+3973c6ffc7870d3466e2889907c9d33c
+3975197a696ecf1995462811c0881594
+397522c9b8e8fc2f4f399f1ca280701a
+39757cc45a30326fe2025d145a41f737
+39770e8c679763f4607c6b206b8a3150
+3977ac20e8e7d188da60bae181e2c986
+3977d0e645c0648d61fa636200c2cbe0
+39791e6f5794f65c813a398d5162ac09
+397b93bf35a03d94945d1d16ad18edd4
+3981479dbefbed4fa4aa5f2b4d54edc2
+3981e20336f50e93c9ae12abf8cd47ac
+3984fd17b852a1b50f23181363910bb8
+398594f157f0bc625f9be1da568d260f
+39859a4ce83c7f0639c8da3b39a5f099
+3985ee38df2628379e3129545fb426d4
+3986f1040d1ac5be99a0837bee2c6ff5
+3987e26f1f61e71f9f9c2014ad9d855a
+3988ce2d910102e09b307eaa5af35243
+398a063f8483162d7bdb3cfe4ce79c98
+398d01cf88ab990650e2b4d9b22474f7
+398e3db1cf187d191c8b2f7fdd5fc5a8
+39947c66963dfab508bbed30b4a014f0
+3995484da1f00d031aef6ca4408a22e9
+3995a355b5fcea07d6194f5b4f20d3d4
+399642293013da5e989f5aa938e2b9f4
+3997195f7c8381ce2cdba6f41a10772e
+39987a4a9cd06bd452b44846280fa1a3
+3999d7641d3fc150517940285ef33fb2
+399b31552f81eba91c77e43ef329e51d
+399bb49adb4c7133869309c700b043f2
+399fb160d5286fc2b69806eae1e59bae
+39a00217fea3207cd155c5174a44963b
+39a075c22d2883c45ec719c850990754
+39a191c572927c09f5472d5f75a1103a
+39a2882a0c4ed5e0fa11347bf2f0dba5
+39a345cc9fe610601b4d9d0066fd71ca
+39a70e89261ef8f375d3311999cec886
+39a7111bc91f027c2f51858c12228737
+39ac4187ff50379b4a5ca9558f8d0231
+39ac6e9d65ba069fee21b4604193657e
+39aff60a805916fbae21123033461d5c
+39b022445fab87c2d8e00e4e1c79ed1a
+39b22ee221fe2fbeee028c824a11c796
+39b2897f34e8e2bd1e2a24f4794a148e
+39b60e1abda469ef4ee56f261b95c0b0
+39b7dfd4dab614763837b4ea7b1ff475
+39b89bd057e09a944ddd1c9606662b3f
+39b8be623309c427c8a998fb06372ae9
+39bd94af4c0543fd9a6369c3a899ca12
+39bf94acffbf40e1700a3d99ff1c0f94
+39c0d46789daaccbb2079e2fc68d66a3
+39c285f66fb5bcfdb6948bd40d7afa72
+39c3a655a6e51c4ac2f25d14ac4dd178
+39c566edc244b792c7f4cfaaa9f8d33f
+39c60666206c365ab578dcaac0c3e98c
+39c671bd17ebf8039d15380f71582ece
+39c7ccb678f4ddd416bf1bc705f08e69
+39c7d06a37aff7c848ba601dbb254475
+39c7f46d23e9aab70ca7ce612c855273
+39cbca859956c7c1e4f2f10e50505337
+39cc705ca6a2caa52460403767de884c
+39ccb06e496a4fac62fa124f83315e77
+39cf1aa99abd90425b315b02ae124e38
+39cf7278ffec6492f45d918c8a2cca1c
+39d13d011288d670e127af01d9a6b399
+39d42d465d56b5447258c24f8b1b6c99
+39d5272ce54d6d0efbccf1fb3b2c5396
+39d578a875e3e5c51ad0cef38acd4ff5
+39d672b04812c4995dc50241172ebf65
+39daa799204de0379161d96b00b5e1af
+39dcb047beb8d8023fd3e2c61c07d78d
+39dd25df42cd767e7cea39e9ad45a8b5
+39e24c332bf9c7eb81fee730bba9e63b
+39e33443f7cd308d81fc77c6e11b1bb2
+39e808437a90934f199d299be7528c6d
+39ea29f251d479ef12dec3a70bf8574c
+39ec45f9a0df1bb1228569f1bf16c640
+39eccf603bf065ab1ed152455006fd9e
+39f063decec0186efc32bd4634c0aac5
+39f16ba5200148227c0f60f9d62d36fa
+39f1e1762ddb801b36cea729de683c92
+39f699effc7629d8d1782ca12638f784
+39f7024a15c13be5e8d88cb756b788d1
+39f743cae6ad6899a545a58a7202620b
+39f7515d33cbda517b92a2dde45a2104
+39f80c3502a5262062fae8c6220610f0
+39f82a50c59cfa338ec6b38f313e7868
+39fb52acac0c888be86f281308a38ccf
+39fb96485fc566a6f5c3ec7173e9e064
+39fc5d4a4c8cff37e7adb649eb628792
+39fce25f77ac0c5e4e07bc7806a6f30b
+39fe8946b9c87d66ca2838eb3045679e
+39ff6881656172f2227e149420338224
+3a005bf841d05a7bb899d2d149fc8d4e
+3a00679bdc81710a6c257cb018648bd7
+3a011521cd33671705e3bae06e50f707
+3a021a44fa0798727dc07b33b5b09b1c
+3a0271aa440de6bfe7bb1e290445091a
+3a034af97adae08bb17893224263ff65
+3a03f243053972bd18f956115c53fe91
+3a0451d5bbc78e3b8b0066c05e04441f
+3a0685c463b50ddb4218ad47ae139dda
+3a09a0d6353bd6f1a0da46ba11deeec8
+3a0a47114fc234b7f1e0835230b4905f
+3a0ff6c99d9d88c1061c5cbfd07cf4b0
+3a0ffc49e784ca7ae1d3ebcc3d072136
+3a15e89b6c2d3c69567f3650dedf80f2
+3a15f71b9b73f23a92773d24319f54a4
+3a173a67ec6c77d2efb2bad964b6a2ff
+3a17717d490e65a37f0ba315651dc270
+3a1a7d16eb8d4335d6ff1e6762b84cad
+3a1dce94257c63f5f9301f7e9cc26628
+3a1dd198a5dd1a386ccf4fee96f5153b
+3a1dd45e916665d91bb429f44e588f72
+3a211f24cfe276e5ce189859d7f06af3
+3a226c966fcae6d4071bb29ee9f36f01
+3a26ecd8a19a179d0fc04af27128a406
+3a2743147b4372ebb65700a1be5209ad
+3a27bf17e85342a7133da5e8ee042e4d
+3a2a28171d1af1d24eb31e46b3106d73
+3a2f047e790de8f536864d4f10152b24
+3a2f0d6418f2e4e6c20f1b2d19eb1ed9
+3a3084a9dc688ccc919b36694533e1b2
+3a31425c4afbc90ea28f9fe971b84ecb
+3a31a6ee30d322f75496d81698567eab
+3a32ded2508c3392df89be630c5d7c92
+3a335f9e0ea7f9182b6ea435865d675e
+3a33d4f17f53a7ace5beeaa514277e0a
+3a38b3cc4926d4061d8ef28df1c1bf02
+3a393d06168a432d98f57b7e4ad72258
+3a3ad495ca040056e0fa2d8ab23f2da0
+3a3c4c1deadbdbbf26f602b0ead446d9
+3a40663513fee08f37c5074c5b42342c
+3a44198f58f48c76d3bb028461a21c65
+3a45264edaccd74e6a18fa2c4cd1f131
+3a46d5643af9d562e7633a25250c01e0
+3a4c962f7f68551c848b015d0ed89ed8
+3a4edcc8444f2b7375562b5d4ae0cf2d
+3a4f58f7589701186efba9b521640ca8
+3a4fc0653a1eb8c57ba5e72d1c82fa8f
+3a5040642951eed3eb8ec74addefd8e4
+3a51109c611f0b847ab48ec7692c6882
+3a5459d90a764f7b725a94ece6707d33
+3a5639a25170798bb530abf2ddc36720
+3a57dd25a4c242d0095aa3d7a6aabf0f
+3a595f57c78ea85a3f281bfce636fbcd
+3a5b072d08e3ca77a44e7e2828571634
+3a5b8d5e799d6d5aeca0031a54b4c092
+3a5d9589dd1e9be5f48a5fdb700020c6
+3a5f315dd58eb2c34dcedc8eed3c7d1f
+3a5f418b41b15a3ffe6cf1eeb93cc00b
+3a5fe76ddf59d0ac8b1549fabbe8caaa
+3a60725ae776e3d7017469566650ef8e
+3a612a7ca0ea3a7eaef57be98e0308f9
+3a61386e428105b303cccd004886c80e
+3a6716c99dbb85f5a27d8806c8be8d71
+3a676f830d48a97faf6b3395b7f3a27e
+3a68747232efc550da0ace090987a76a
+3a68accd74685d2fa832d5c59af8b59e
+3a6afc21828452d53e2ac1aec5a452c8
+3a6b3a686025cfcb02afb86a04dfc388
+3a6bbc4b226e81fc580bca6efd2dafc2
+3a6e3d2494f025fbf5aefdeba2c5f856
+3a6ec3e675ff00800240e4594b68df36
+3a6ee9d5e11e67c3d816f1ed8272b753
+3a6f925489d4dbb7a063af9d99400d68
+3a705eb9caebcc130169b28fdcf27559
+3a73dc9f458b9994355d79b275fdff6c
+3a73ec18a174bac2a1d580ea86ccd6e7
+3a7713843d96623edbc2895d2b492bd8
+3a77d69fd3db5daa581a02d3c094e20a
+3a78a5125cee5cba31500ae5ac3566e8
+3a790bc8fc99ff9f1b8db831b20a84e6
+3a7e77c29949062a778665e75d821f3f
+3a80f4e044a01c70b0bc4e6027a6975f
+3a8346fa0f3d6c5d2a890a4d8e12be09
+3a848ce943b4dc20656f5f33bdf68759
+3a857e52356a0825c7d292fe10a306bc
+3a85b8d341b955f8caf667509b25b24e
+3a867de76dda7977e202b9ffc0c23d31
+3a873dc32d53cbf7781cd6c4ef07089c
+3a89811098f139825b98026da5f8bd41
+3a89e8576769f8a4a740dc1dc8338f0a
+3a8e23e2e0daa10ee1332ce1acb03fdf
+3a92b6926d67c622f663388ba6fc61ed
+3a9367d48778a157184388e47e43b0b6
+3a977ee18fe2c34636d7d2ea0e65d765
+3a994967f40a342f5207733bf187baaf
+3a9b9f0c51a2b3b50fb272ef92444076
+3a9e88c9be7cd74556868c0a82c81d47
+3a9f3e8cd12c5c86ddb098eadd69f249
+3a9ffce4e4d238d5bc955382260b6e63
+3aa1f46e0d10c1366ef28c23936ba890
+3aa21549c6c8e3bdca1d49f3f3e363ed
+3aa298ed3cdc4fb4b0db3d5bb6cd4f3f
+3aa6669452dbd6184cabeb67da46aeb6
+3aa6e047b6a695d6548e1ace434ec5ad
+3aa6f09a58afffe81f1c6fd391b6e7ca
+3aa8e51bf54448b01d61d568467dec0b
+3aa92d2a07e833a2ecc8b4b9ef98f540
+3aaa6e22a47b429eae81f57e1a8d52c2
+3aaaa5bd75c52ae8888ef40abd96a1c0
+3aadb657236762da5b3e8a7ae1e85d53
+3aae840def45ea99e5e92a87f29a7476
+3aaf520570c69dbd3333917b059cbbae
+3ab051010c5f0d3b5c181e67e614f3ed
+3ab08eba5b1d3787ef20e242a6d47c11
+3ab0c8173dd2b246282a74097d279796
+3ab29d1e36ac7767bb5b769768454456
+3ab3316e3c5f426a46961f7a065d6a03
+3ab856ad90752f4add7da2e2393ccd55
+3ab887d352edbaa3e54b49e06332da90
+3aba5b02170303d93ed8420d18ae5f8b
+3abc409eecb30bee30a1a88a09699e4f
+3abd9069a548fe930d80c241d0db2e58
+3abf727f6a140e9fbd0d93e4bd9141f6
+3ac0ba454f3eb15f7ccec9daa37af963
+3ac0fb750a8275691b7a538938847926
+3ac1de1233080588dbd0b515ebb547e3
+3ac4e8646ef0385d31dacef549c54050
+3ac50bf2f7d2d0fe4a9a25f9c85e95b8
+3ac52710c55999bb0958d054792919a7
+3ac667af4b31c6580f390d02404d5e57
+3ac91a8cfaa9047d04845b167c87b04b
+3acac99e03d6687127611c48ba11138e
+3acb4b0475c89ba5c73e8b99a8cee9d3
+3acc24d5cf67c1c65cc6949b33cf82e7
+3acc5f464286d8ebbb1c66b59e975365
+3acebc8ac46a6846faba3d2602256699
+3ad01a65840245d5dfd035f2a92443f2
+3ad0e489d11b828834f2137ea2582bb3
+3ad55af032fde133b721f98ec4300f9b
+3ad7326fc1a18d32f1e23733359d0777
+3ad8dd1d1bd08a9afc5d44d9b90bffd3
+3ad96737c09f5ca625b413e9a866534c
+3ad96761d9c088246d97f43061380e37
+3ad9a9e5444a23d5a5be99e88d14eb8f
+3ada0216319796f276ec2908b79ec2f6
+3ade2406aaad19331447cc6f1bf78ef7
+3ae403c69edc4d50abba199e93b39f87
+3ae4cd097d8eec959ec2351153fb6551
+3ae61795af6b41b472486d31e9096848
+3ae68048fbe7f41a1edb570a31e8fadf
+3ae6d40995a5da596b514d62a95fbd38
+3ae70768f9094979ad5adf3eac775926
+3ae790eb4ed906595a4e989d0dcc2830
+3ae85a1f291bf2af91d73604321138a8
+3ae8888372f0562991d958c78e7a0a80
+3aea415997e52adb9887e9826d229125
+3aeb492d7fc7f4d21975ade1ba555cbd
+3aec644d4a5b8342c4f3172aa582d912
+3aee24c8b5bec82def4197727eb6d325
+3af14b98295d0ca1f39c67b89ea2c1f3
+3af1a9370928dca6d28476a9c7587f6c
+3af1b86d1baaa8a13f624e9cab9eec07
+3af3db528e9dbeb07409d35b43d14e4e
+3af3e8509b185ee913a787919be79eaa
+3af7289bca97fa75ea0b82c97aa73a5d
+3af8e8af7d71f5d39ffe6b047461ec04
+3afb85ae0175811b92414f8859fc15b5
+3afe04176a8d40e1886a03980cbc52df
+3afe3a43c1538ace3e595358c2d82577
+3aff28203e07fec1e6cdeda91fdf383a
+3b01083b32d1c9c4310c9e79b1ebeea1
+3b01e76a1c5e85bcd1f29e4b2275e848
+3b020c3907351b55b0ba558dc099849c
+3b02984f4e4113863ca493c3a477b863
+3b05c7d9dccc31342d888de0d7ff4d9e
+3b0674a7d7a4be60b84d289af9e531ca
+3b0689437757c1b265ac8caf2be06c72
+3b0863df941e92ebca66d91ca8710f4c
+3b0881b571c5870b92b87a5ede107c4f
+3b08b7bb2f31bf537c13541f8887b312
+3b0a39bc95f731d961b112136b7d5f1e
+3b0b6e2797c1f33a505ddcae0323d7ed
+3b0d36611c3e381967a9493caa122742
+3b0e6b04137ed435eb3bc7462447dbaf
+3b10c3b758685326fb8b0fa9dabad5b5
+3b141d5ef3d926be4a8dc49a82f91ebe
+3b1480e5dfa73eaec07960dcd3386426
+3b14ed56a08209bd12b90c252f41e0ef
+3b15904e5554030f34d86643a4762fcc
+3b17c0bce5f6c3fffe5d15713713990f
+3b190309ade5c1dd84021b6db24e22f8
+3b1a3132ee3ffbd040ed031d6e22dcb0
+3b1a585ac2af0c70b1878b1a053f8f1f
+3b1c02e4d1d4ee930a8e5511cc78e238
+3b1dd23289ce9a672de7b295ccffadc3
+3b20b7a9831d76f28dd8ffc229f24f88
+3b20e6dbbba92464b145f8f8803c1244
+3b232a0288353f9118c1840ab82bb85e
+3b240194f4499e69336372c4244b1c31
+3b29b555425f86927d10205ff7a9f2ea
+3b2daa82154dded54cfb2d238d74d3ea
+3b32691c6a3d7ccea8ccccbcff037e5c
+3b334f7e730f7d835b0d59bdc862e627
+3b33823c69a3266982927254f7bff94f
+3b358900d7e5e2130918b2803d61bb20
+3b3715266b10d4ce1a0995fbc0f20407
+3b393672fd00026d1caef171c8e575c3
+3b3a38d4a683aa9e0292aff1609bb26a
+3b3d06c6060ccd370a0ed8edbfd025f4
+3b402eb59e605a7d47b2f2cb81ff236e
+3b43c8f4c97188bcdebdc7953c021e0e
+3b47db796b8d1ed64610fe7c919d57f7
+3b4863a3af62b57aeee0ef91e052e41e
+3b489d1d8d85f7aaee9a5259d2d57af3
+3b49d503d63e75c35c8c67813441be6c
+3b49f390693e5fb48b7e7f170519461f
+3b52125835ed0b7773c1ebcc3c07a73b
+3b5492065772b0019aa2e58c3946ffce
+3b559945cd7b3d5d02585595c6d8da6b
+3b583e437ba3c39d2118968fac41b353
+3b5a51e1e2a98337e50f0d22f6df8b43
+3b5a7e95736e493933ddcfd441b1f4f3
+3b5b2d2f82cfb6103de2fc530444f3b3
+3b5d0b964c9c4f99e1ea9ac942254df6
+3b5fa2d88cfe64fafc7e1578f3480601
+3b60481de33e0f5e19f23c20fc1f5058
+3b6c1c1c38f57aaeb5d5357e71ec1990
+3b6e31c76860d03bb89b00551bf3ab86
+3b6fe49c67184602e6cafa891a23943e
+3b70b9c92cdedb981e4fea675beb08fd
+3b725def4eb6b76b0fde2fde7156af3d
+3b7631dfe2b8da532a4ee836f11d7872
+3b77ee8b87b7ab2dfcf205fd09721ed9
+3b7952a65f91c133b66cdc0d15bac0cc
+3b797f932e334ef4d7d5ce5f043a8e61
+3b79c08a1f5d1c836fa0afb1c70a16d6
+3b7ad5494cdc4e82c4bce947b5130417
+3b7b3dd5a657b46eb64afe3149e3f3c1
+3b7b99a2c8e1a883c69b0f4272d26369
+3b7ccf5cee33a00c51403085b66bb978
+3b7ec95ce66e25c659de59fbd8aac503
+3b8046fa0107724e1b8f02238754d939
+3b821194b64bd2e4ff76bad23de53e87
+3b82d8e20e63c42a2325a541b594b32c
+3b83c2338f2ba75464b67d81fd0652d6
+3b84f182f2d812a527f5be84125e1195
+3b85fd8347b56dad24c327df43d0fb12
+3b88827daa16be4e3eeef8965879839a
+3b889618c59a51634a611f5e019438e5
+3b8c96216059a790a34c15c7c1c1c075
+3b8dba4b8bd0cc6a155187959b9f9917
+3b8f9728a76fd52599aa6799af1dcf96
+3b905a970cbe626caf135bca4fcef131
+3b90bf4f2781a30deb87976c5dd8fad4
+3b92b8d0d597ee47622c1ea61a787fb6
+3b92eee6edebfdc56483d87d98c465e5
+3b946cd74121cc34a9c0b3c2f8ed4251
+3b96abf0fcb55c771453e00d38000d12
+3b981c901e89d141283cbedfa5133136
+3b9976b4ef538126cbfbcc910f6a42b1
+3b9a0b67c1c122332b95d8bed6590106
+3b9d410a5523812237fc067aeedd9607
+3b9e584cc5ee8ee437c09e4aa122cbcc
+3ba198515bcdcd00d6eeaf152cae0c77
+3ba1b67db727736b3f29592302cf9014
+3ba29da298559fd022f3c4aa2c1015b4
+3ba45bf23c3b08697e404972418dd6a8
+3ba7c64766592892a406d8e44531cc96
+3baaf9cbf95feac1ae2607c85b52622e
+3bad2c2ac6265ab3dd7a3f46d0e98f65
+3baea36bed11ff3421d15a78d97553bc
+3bb03d464cb330116c05e8a0e727bf03
+3bb0d1c4c83e0d299ac2077d704ecd05
+3bb12c27955e2502a8b2571849056b81
+3bb3475e0f17051240b50dd3aa1dd277
+3bb3c85b2906531c261a20be2a2dc3e6
+3bb4a8fd1b4f6ba6ab89456eb2d4d24a
+3bb540bc22567f94ab2bd27f78a02d07
+3bb5d2b691b4d4fa01d9b4c2338d2619
+3bb665ed6bc7137f6eb9ce3de733d788
+3bb6ebfb6f6637ee49111807b83cb272
+3bb785035c254f6a07d55f7f8b26b575
+3bb7ef95925d41876cb215c255f35036
+3bbc2f6b0bf4de92e3194ed41a1cd683
+3bbeaef36677487c631840274a74aceb
+3bbf1265662702f9ab80f4da251a43f5
+3bbf345d324c8a440619890ab720a90f
+3bc07b4ff50675164b4fe55560fcf78b
+3bc1aa4203f9d63726a752406f2313cf
+3bc2ce8b4bcbcd5a4e157053fcece199
+3bc3187c3f76fbe15ef53264b999676f
+3bc37415c58707da8856f69281c0c5e9
+3bc3fd7d88d831715588a356041c7c5a
+3bc73dae5adb310087470d3bb8f4653c
+3bc77b482b24186b82b551fabe9116a8
+3bc7f96283eea916bcd797892ff8909a
+3bc882abc4875a2fffcad33ce756c0ee
+3bc97705932dc2e81f1863598ae19389
+3bca24c03ba0e86340114b38ec5e7c35
+3bcc356a3bb887e5197bff7099f77cec
+3bccf8638e604d7b97851f18fdb47f1d
+3bcda9752cf77c2341105215eee48d4f
+3bd016a11100db8a4928ade809a1e56f
+3bd4778c7b81b92271a8de5eca1dd7b6
+3bd4fb3afa03383df338a1d7796a7ae5
+3bd52ed6915295790c0401bb95f7dd41
+3bd6ca9ae6bdd9c4578c7530109d7b6c
+3bd7eefe0a96e242e42a2f2637c02e85
+3bd905fac9d4e8d2af6623703398e646
+3bdb4d287e70ea10edf42b27ba2b9372
+3bdc70074db775afcbbb3f0fb6931eb7
+3bdedac5b21d23b4c4e4021c31f3023d
+3be0aaf090bc082a99ebb50712060f2f
+3be29f8c77682d7a6ebe3080a9e4b6a5
+3be985fc58de16b34117385ce9708f7e
+3beb88570ede251539996e9c9b94bd68
+3bed5541057d884130b17c612394e146
+3bed7702292eb09ca95b622d893b1758
+3bedb838d5f29a9c15ef90810b2d1482
+3befd41df2c9dc22564f111c622e6abe
+3bf3af3718d13123da499cc4af7a71a9
+3bf7edd2dc1aa3d6a804f40a5397db3c
+3bf8bc79b7274a32e7f64e27ff8d3e49
+3bf8eba7e4453399801ba30ed45d46c1
+3bfa5b7f0702c3cc848b69df7818e25f
+3bfa949e8fb66fc879e92a2a78c92a26
+3bfaf898ebbf008de767202186a61b48
+3bfce0e0ba659e7d808a8c69ba8af07f
+3bff876df800ddffdc445db2447767b6
+3bffce9c027401b58f5105746e3245bc
+3c00468410cb99171d414953eb57a107
+3c00c4d23995e917f247e45472de266d
+3c0255efb70068841df4d776127375d7
+3c0389e02a3fbc6068684a8b584fa160
+3c0401ab0915581a6d3d4bfc936d8df4
+3c05854c39b99367751fb54a0dfe0c0e
+3c06e5c2de1ff0b9da9325797ba5d2f4
+3c07d6eaa59bca6377b38e90b7fabe3e
+3c0bc08cfd186d27ef1d33e9d5e79ace
+3c0c0221b94b9321eee8cf74c9b98be5
+3c0c9c1647bccc6dcdc44027c1b28a5a
+3c0d45d1f9edff689b0e7859d368af7d
+3c0d7a5f141a3b7bb8ba8a92adfd5e0e
+3c0e4295908f0fe9f7289220c08a0025
+3c0f1bc1da419bcde6774b726be27e19
+3c132070c5d83f1ff29ebd54f078bba0
+3c168f0739056be2119650fec2e1b3db
+3c17995659584892d4e9aacfd7438342
+3c1822000c7b4a41b3eb55032841b10e
+3c1a29a68b1e9c113b599f4d9da7e15b
+3c1b2f1ea1d1974ad0a60c74597be96a
+3c1b69dd4c05cc419652cfc566895713
+3c1c07421d1e7c6964463b9236a9b7bd
+3c1c582e74db73d247564afaf8666bb4
+3c1cb62516603b26b2fcacee10b44c61
+3c1d6c93e42a9dce5085017dd7c38623
+3c1dd83863d01980966e20e0088ae0c5
+3c1e4e03db5149a75b2ec6f79329f5ab
+3c2023f532029458b33d4790d0333d4c
+3c21a7b882fd269c14a0aef55db11e7d
+3c21b61595618b17310f0018251aaa12
+3c2457698274dee7c6047b743b613bab
+3c24c6a7e0a8de3f8a90bff56406ccdd
+3c24ec320533a9ba9823f9998d8e957c
+3c25e30e6c1bae5dbed94be617f3a744
+3c26a85f432a7069c4590d6d9e88eb44
+3c27522c464ba187ef8ab84869bb171a
+3c282987a2cdb662ff106239ea133bc3
+3c288cc5b8badd804ebb834595e8c6d5
+3c2939f87b5e59515fc1dbd0db48141a
+3c2961837ca950f1fa5b6bc956c5a53d
+3c2aabf1c67cd8cc3114f507331c0d93
+3c2d742dfdb830ea4d57d9f549cc9769
+3c2e8df9ea605c01c1bd2dde79d583ad
+3c31658ddd145e327ce126e450599d16
+3c31986a00b0646bf96e57fffd631835
+3c368b4aade7ba1e6a1ed6af95c04662
+3c3693cdc74e0d32df84fe5a68a526c0
+3c36a91e1fbc1cd2a96d54ee96a9225b
+3c38414ddeba374fb47112da2224750a
+3c38e183a1313b252b012727215ca0b7
+3c3ec6e3424574afb2d9cfd3c863e070
+3c3fde300fa22f494e53e3d1c73dcb0d
+3c407cd5d8383d8f78d285424872e75a
+3c40a4126da908ff82b8398fdb7826b5
+3c410aafe6a2a08faaa388810dda0f65
+3c44229d9b1f99a8cf9e2a1ef775d50d
+3c44a80e992c79802741a886a9d34d07
+3c459f47452968a1d4058050a007d94d
+3c4753a919e7d091343e4d49b131b1e7
+3c4771fe45f359532104a5059a7cec74
+3c47adea6f64a3da5889ebed6a04d62b
+3c4a0bc7cee5946d36de13a1d60b1068
+3c4b6e7c77c423c2e82057d0bc018fb2
+3c4bec5640f724b139087ac6222872cc
+3c4c334ffbd59f04902d6243b5bebc63
+3c4de3178831c953408a4f61f3a94654
+3c4f7fa189eade989a599025ff57beba
+3c514d7968f5f80cadc2f234cba205dc
+3c54b0a9221e922971ed55df25558916
+3c58fb0710177fd97b5124109eab41bd
+3c590df560a535a974dcd8b8aa7018ef
+3c59118990ffecb6217e8616b7d8090d
+3c5b9b3eda4b42a8eee57843314b6191
+3c5c1abfc0a1c07e2e8cc44b7275e11a
+3c5c2a8f06b2c0b6eed6ec8146b5bdb9
+3c5c6156c4b343d4c75fbbdd549c3386
+3c63398d8e2809a61f6c78b736964f49
+3c645d9d08e4ab7e9dc2f61cb658884a
+3c66393e200327c9901251abf1c76855
+3c66a9dcfdebed9469bfc22ba2000228
+3c67f4a919ab64557c2e2ec3b4f66830
+3c6a894a73e5561d53e97ad33d1a40f2
+3c6c441bc6092df71e6cf4b147a43661
+3c6cdc2609d1a30f67f0d132fb0ef69f
+3c6f77de8570f80f5e56f16666b05340
+3c70d3842f7e642ee7196f79900eb218
+3c73a531e940b286bb46becd82087664
+3c73ac1a7a07d3869624bde75ce1610d
+3c75235e83008cfe7700050d11a2e4f8
+3c7622d9a88b8d7060ce217e01955f37
+3c773a525b20814280a55283b50e4676
+3c7814d18ec603a511c0bb2cf73da2fa
+3c7981547dda7af579805a459fe16674
+3c79f5feeaee4559eed7cf68af94a6ee
+3c7afa00f3dd6cabcd812a0f5a046564
+3c7ba8193112ec3dd72755f0ded0078a
+3c7c613880b907983ccf9e7dd8dc31c1
+3c7ceee8abed9eb7bdbf32c11dc26f4b
+3c7d636af2c8d16d5b6140ee45ffe417
+3c7de48538328d0523691683884d87af
+3c7e382231fb174ff93075b6bd1c2132
+3c7ffea92809a7cd5bcf2dbd6b5c7b5d
+3c83dfe706684d2d984e6b7b8888d837
+3c856288a877721b34e68b0c12c8fc69
+3c8728e8be131a3c0455dc357acec0a9
+3c884677aa9835e40a8458d3d87707eb
+3c8947e6e4a9f101eebf508be68e2302
+3c8a98e596ea2d0e980940941a2e0f18
+3c8f031dd30e3b3b87b68912134b1797
+3c8f0ab6ae19460bae98ad0b4258965c
+3c8f21f65c5e0b6aa6f2ef179307e294
+3c909a0850ce64e4e1ba8dab2db68220
+3c91989db0f0226cc0ca739f55fe2416
+3c94039ccab68c13233e615a0c0501b4
+3c9672f0b5dfa3edccd02e9a0e9a4a67
+3c996a0c1a72893f6429aaf1356af42b
+3c9cb5c08b0f3c1a25f3aff12cf6a8ca
+3c9ce4a5043276b21632da6308f4ed4c
+3c9e4a5873c2271ca0093c2aebd6a3ba
+3c9e546a9ea25d84370fc22604a04408
+3c9fb4fdb9851ee0643bbbca22cda959
+3ca424e3b30286bcd311830559520517
+3ca45aa948043b665bcb061cc664230d
+3ca584e1058fb68199ebed24fd102ea1
+3ca5adaa1a0b1c2059e7fe7da1b1da29
+3ca850c3bdff5377430679f415786b9d
+3ca933e842a993a0815bcb2966ffbd08
+3ca99c436de1db3810b1ab1930f7e44e
+3ca9c94e3cbab929fc2e76e9fbeb6dd0
+3caa325bf4bde90c67e102fb15c330c3
+3cab39fe34fa1d84ae0206a99a94e349
+3cae23a0e8bcc325050fdeea48d3d7ea
+3cb0eff9420601632bc023c05244c871
+3cb1e11ab2a8b7ae915d827c84079533
+3cbb8e8e77259ebf07b132d41199d49c
+3cbd260966e3560823f91074568ed2de
+3cbe2a321c9c50cf731571d83b9fc51b
+3cbf338dfab4699eccdfdf7f06136244
+3cc08160f2aad5b18a20f21cadd0e293
+3cc263ccd6c6b5ce79d1ce36bc36e0fd
+3cc2f7d5df14fcced02fd74aebb4ac9c
+3cc463c5e17acab9bf0c8322d37d90ed
+3cc6af087f22a8c285bfb14db66e0eb6
+3cc832e36d28dce3579fd14c1ae87cfb
+3cc86c7c5461485366d40a3a74bfca4d
+3cc92fd751e64a6c5cdc90932cebbb2f
+3cca6c4a1435fc95f083895fd04bd320
+3ccbdb16a577fa870047883417490568
+3cccb7cb8cd5e2331c8329f957722b2e
+3ccf515de8c12a23ee1a28f9a288f02c
+3cd2f4f812baeea44cae508a7ef3fb69
+3cd3710467e3e090f42e6713f542dec5
+3cd430620dab9a163a485e47ecf221f1
+3cd4d3f231f0edad45935445861c9ffa
+3cd52ab4d0e7213b81bd7403157a0bfc
+3cd53549f1f4bb9e3645c22d5a322200
+3cd6406c8bab86aa7d3e68725bfa8ef4
+3cd6c33532d5288ad61fe7f4c2e070a1
+3cd704f20deaf2b258505450581af3d3
+3cd8f72b89e6d4ba77d26a9410df0399
+3cd8fa6321d0df5960d8b2005afb9bc5
+3cd949685e8251d5a493c2cc6d4187f8
+3cdb5704ac0f167c86a41c45e0738ba9
+3cdbee13f550873cb8cc8066d5fc46fa
+3cdc807740e804111596e2f60654fc48
+3cdf6dd77372b058775bc0bbc8c8b10a
+3ce031095a0cf7058ef42165db157536
+3ce386941f7abad624f45b99352353d2
+3ce44955c117347ce33702d92a7af61b
+3ce4f9832617c71b39d7164ac517f7df
+3ce54bd7147957a53fa2d387a92bc87d
+3ce741acfd103625571ec27b8a232222
+3ce7ff071e0df17efa0e5d17966956cc
+3ce8ec1b963585ab6dbe781aa976da36
+3cea024fb06359a94c56a0ccf2158c67
+3cea5406163b5f2e2a56d64b106ee482
+3ceac7d9f30d846ef28cef1328dfaa5e
+3cedd4a3f43dcc4e8bf9cec36b6aaa14
+3cee24064342a4bc231d07cbfbd5f625
+3cf028affdc1ce32c87a21b18abcc665
+3cf0728fed4a63b547b2f892f7e86a10
+3cf19a3811cc3be424a78c0727730851
+3cf4a6c9027cd027d6f05675235c9864
+3cf57f562f2d63808b983b9cb8f441b4
+3cf653df8e4fcbc2609ff610feed467a
+3cf7f85fc7932876af46649d02e6041b
+3cfc7c59b85be0cb085cf94bf6c901f8
+3cfddfd6feee50a9db8974354c92a981
+3d00e670d35898f37365a5d7d0a8f3e0
+3d015f1010fc9e4f868957ca763bc09b
+3d0236a1edcbcef2610bdbe8f6624c70
+3d03575dd2a9df47b64996425dddf422
+3d04eae10e1c0ad86000f1e7824e10c1
+3d0642de28df143a2531af20566e7b55
+3d06c54f973d403128e54169ca1ffaef
+3d06ea6a69a9e707ab08b8fa074df046
+3d087b670e492a7dac9d0b4b0a5d8c7a
+3d0bfd35d6fbcbb1d52b2fed1569fece
+3d0c580119557ffe62e926350c392f37
+3d0df6f16ac447a782a5ab55808412d5
+3d0fb5c43f74d3899387e5674857793b
+3d15e518ce417a4efa3f64800759d886
+3d1952122716fcc229e9551f6e69f8d4
+3d19cd0e7e2b2c65c68ec4841c9bd742
+3d1c0391a0190965dfe06d9b9c09b717
+3d1ce390a81e034a6bcf31be98a79e5e
+3d1d5642e200b9c873d55711e48fc365
+3d1f7691d2e6f831ba33054bfebb65ec
+3d21e2092b677403eb61ef71239ee361
+3d225de715aa87890edad401b22ecf7c
+3d27517ccdbe386b04ed50f3347f0bf4
+3d2834f5e417f68c61f9ad9cf71f2ca0
+3d2d3adff179b5e2df98a3e85c4c7fd1
+3d30b5ffc66d72775d7fb964d0c7b2bd
+3d3433045b6b329404ae9c2e39e745cb
+3d3782074dd04f55c3dd47ea728b9cb0
+3d3887927f9f507a02c2fe4119dccb5e
+3d3de3721af68032c502270d55e26b3a
+3d3f2262977da9bb5d62905e1654ce4f
+3d428e906d49824eeb7a4aced000772f
+3d42d0f4224340c239d8b630496a1ccd
+3d43385a5fe890d9dd8adc3418ba2c73
+3d45f2a138507bf0c8643d738377a8b7
+3d46f50379bdb826026d705a60db3fe8
+3d4800eac042513f0e21cab2c9cbc964
+3d4abc82204f8abb9ab08133a50cf8af
+3d4cebd6e027261d84e93c49f74532fd
+3d4d3fb6717b6ca6a2cceda622613e27
+3d4fa5d83a90e89a117a2049bc7d3ee3
+3d504ada6a3b5903886be22d1eb022fd
+3d53abf677190ae71c595be4e56bed8e
+3d549527d4c41297b259626a42cf00e4
+3d573d323a0523bc4a4c07032ba1d8c8
+3d587745f64be0bcf8fcdfcf95f13ea1
+3d5879617759610152fc3816de38ac39
+3d590eff28b595f499f1270b5ff90ca8
+3d5d6151aa631a4ad46510ca5a4b06c2
+3d5dedf47638f800a4fc541dcc828f06
+3d5eb68c8fe71ca5e514241317f3ab85
+3d5fa0e244f6efe36d55a07c4cee3a34
+3d63f65b8a6818fc308d96752226cc2e
+3d67c2cb6443734ddebf5573db84da64
+3d6a0685eeffe1de2b66c7657bbfb0df
+3d6a464768e9edc046d7ff5b66f3f6de
+3d6a5f25a5a44d545d500e7036c3f23e
+3d6f77042ca7c463aa3ad33857dcc596
+3d70e4d40d2f6a24e498cbfc4996114a
+3d70fdd3fa7476acdeb9c0fdd7c4d141
+3d71a80ac34dd222b9da883b75601050
+3d71fceb6aff5c05a64a28c6ea7cb9d4
+3d77a820d1a5faf3705c17ab7b81ae67
+3d788ea4215854207262556cbb4ddc73
+3d7b13b947dbb17d94f6f6d89565bd29
+3d7cc02a3d586c6fdcc6efe080f424f2
+3d7d4c2b5e80f54e4b977db8d3ec6d1e
+3d7ed579aef715bb1bf95ad3de8da089
+3d7ef045339a005ad3c0dbb97a796d33
+3d81c6ad93fc6e4442f9154f2ff54baa
+3d831885a375488f27d567141dd985b7
+3d83d79df654139e39414a069cf3b49a
+3d84e9615789051b6eaf40f0f19b8e0c
+3d865bdc8080f835f04af56eb440657b
+3d881e254d60268d4f080dc7ce5489b0
+3d8c2b0ca573053b7e366a5f3bd68ebc
+3d8f499cb34c90240bd2cc00d58f055c
+3d90ee06b99f2c6facf159055fe44c4a
+3d9137afe45784da3c62d1c70f08c2b7
+3d9322ba60c2d4f735b736dcf2852c0f
+3d9367d124fc26c3a7aaa2e21b9c5b43
+3d947660d7a4d041c941c9990f2aa647
+3d949e83c13e729a8c27e436ea155040
+3d99b44bd87da556a1c596a7ab28b9a5
+3d9b012f2e85f6d81d0f4488dfd46110
+3d9dae3e25aa1019496f004cf1c5aad3
+3d9e82a75e5a9252dbe251755fa4889d
+3da09c0d774787306f2856a0daa21e5e
+3da0d821d0417100da8577ce0c5b9a11
+3da21c4148b06254b69df9f5a87e9013
+3da2999902ee552c9570c1c0b08e4efb
+3da30983467495e455e0490fbd08721d
+3da3bfbc73c859eb79cd704154f923ef
+3dadf9a64746f368c0c2d6f9d6b9428e
+3dafc78615f7e07a40ced55abb086a78
+3db3811bb97c3ca9df9035fcb4e319aa
+3db4f8f53b6e43687d783642fa96d8f9
+3db69850d2f11f4c3e8e06780d569ead
+3db6d01d0f3c363b28e2341a58f1702e
+3db7ad4a943c24a95f7baec8a53a65c1
+3db855a2dacd71376254da9e20beb110
+3db945fadaa4d2105e4cad5c0d36a3a2
+3dbbb715e4a3588c815f708910662561
+3dbc9150c5cbe5ec7bdca628cbd18c46
+3dbdd3d58d9410bb77f35ee6be7575e7
+3dbddb644a0368ce6ebccada8f47f0e9
+3dbef658492206d3c8c50abb251474e5
+3dbf3d7f80061a1ef2fac86370ab0fef
+3dc2d5bf768104560608595889d0db59
+3dc494d8dc468c53d0f3e47fa7eaf413
+3dc4b0b0f09e21a2e180f2f723f24981
+3dc4dec8e9c6df1737c2236577371252
+3dc74a61409cc6afdd0d2e2d14c58943
+3dc9e08f639c371e5c25ce103a0e61fe
+3dca5f09c1d825773a553149a934f71c
+3dcee384d3ddb8cede6ecb98302a40c9
+3dcfb3f1b02bf3cf2f471cc2a70c1560
+3dcfdf6982726a93fbec22507f6db688
+3dd017cc985085a886097442661e7157
+3dd1a6b49c2e552f7cb85a89b5433384
+3dd29b520b16cd06596cc74b0ef3c0cf
+3dd4bb8c17802d55ebcfea276043745c
+3dd5bd9f0e8766aee190dcb88137a825
+3dd6f4f7c6c93648a44c6ac1812a9825
+3dd7764caa5e715e107eaabddd8a62e0
+3dd8a2543015c48ad2ffda1fe82d2a79
+3ddae4c3c89fdd11fbafe870141eafdb
+3ddd3da1597eb5c6d0cec96f84f58d43
+3dde02a50e5c24164462328bd40cb8b9
+3ddfd5e29648883d0720724fde8b0d16
+3ddfe9d2b13df4a4804b5a3403ecc8d5
+3de37425967c209ea14b70a19eadf349
+3de4b8eef3cbd4b3236cf69bdb44c111
+3de755f02b75174ce8f73f7cf0e8759f
+3de8b31525449071be8655cadc6125d4
+3de9622e0e3bbf930bb79e2aab7ad97f
+3deb5b21adcd57751e488c23b5221d84
+3dedbb68c07d99a8233778b555c86eec
+3dedecd2b8921312fe5be498ff0be576
+3dee195e66d17f0c509d2942a963d4e9
+3defd5d062422531fe2cdd5311216d06
+3df16a25caf9f749971ecbdea34bb8da
+3df21cba5774b96fabd97434119907f7
+3dfa2edc2ee83eb21bd180eb63ab5515
+3dfab7c34e1dda742b6c5e6463e0bb26
+3dfbef2c41d08b96335d61358bb98c9d
+3dfbf8f4034bca36a9ab927eba5bc427
+3dfccaee5ab9007b45bef17ef489e6b9
+3dfdf602a38cb082788e2e855fe490e2
+3dfeeadbea2f4071dc3eb8cf5fba674c
+3e001d87b20b6e59d51c2a053f6b6ab8
+3e017515f5f5d58ac0b45edbd9347d4b
+3e018700293ea123b1496a9a3c1147d7
+3e02b99e7f6a9f3be7e210167b2ac1b9
+3e0449d4ecba8f08c1181abe85ef31b3
+3e0661eaa42caed02203d7efc8f51ac1
+3e096a04d58f48729a36cf90164c60b9
+3e0b3c27136438192e190e0260fb7dd8
+3e0e4adeb5cd78bcdf06ce2aa5ec53cd
+3e0ea44051e199504bde2690df8e9d56
+3e0ed5b9ed38a114386784dd7bad8bcf
+3e117ea1e5a153ee2160298fbecb40c8
+3e13b7e5515e5b7dac5a637a44e5f0f1
+3e144846ebcd905bc28a6f1df46c7d51
+3e149c7608a26f3344e705e178de4273
+3e14e4c75369939b0483efb25ef2d54e
+3e16986abaf0ec6cbfe7276a82327668
+3e18f8652ac45200f7c869c204059b59
+3e1a588cb45560f3a50f687e4a92f108
+3e1da5d2af7d8a34b57e3186b714a73a
+3e1e649524b100d35fe825e4016dc691
+3e20bc124516567903bd4c705e604017
+3e219c9afc9f1ed6be0ec765fc970e68
+3e2221fdee645ee888939f3febf62f51
+3e22980a94b523084d0db19c8a55ccd9
+3e2489b2980464d173e6a278e3d71224
+3e2564469b55153b748241c8956848ea
+3e27e355d351ec66118919d99eb1a53a
+3e28147a8058ef2f38bf1666f10f257a
+3e29d72d6567075a39f3a3b9f34f9553
+3e2bdec5fbb2b1d2cfd5d952dbc965d7
+3e2c6adf2e9b515686bb74e0748dc134
+3e2f30ad314c3a59e65c87b6d406b79d
+3e2f456317d4631b1c1e21a9bb23cf7d
+3e2f4cb3d9fbff406ce1d6ce1bfb17c0
+3e2fcbc4c94dbccb4ff892f997e4892f
+3e32a1c5e3b1d095f38aed39bf3c84d5
+3e33252577655aae45eee546fde25286
+3e33c329505d489747ea26620b558ee0
+3e34225eb8b013d6cebd9495e36a2d14
+3e372ed9b8dfc6fa54b4d750c750921f
+3e379abf2fce66fe66197bd3de7d77e2
+3e385bb38db48ce205589e04b21c429a
+3e398f6ef2edb51c0d665d5378bf0686
+3e3ad846e1d1e80705b3b709b89d7808
+3e3c5ab43f72f39daf4ef606ac75ecda
+3e3d1920766e372431956b04901fdda2
+3e411280711c64a3f5e9137296786970
+3e41b6ece4871dfb201db6b2c3a65e33
+3e421e5726eae7b4049513b424e441e6
+3e461d46617d6338ae98c7c43631ceca
+3e4b9f467c75ff9d021b92372b90467f
+3e4ca1ff669c5d83890bbe630e57a23d
+3e4ce038a6568c4ff53becce64d6423c
+3e4d06ae8f64820b6fe74c002d4b6348
+3e4d3f30d3a6f29f250f6037bc70632f
+3e4eac23c982d671f93462b410c95647
+3e50b9d5fc0e52c137401a01019d3e12
+3e51f487f41ac2b8660d8808a5de478d
+3e53a16c3aaaaab88e1c019d8ea18920
+3e53d2c54a2d28b1b3b1fcbf74c3ab12
+3e5e0479fd72aca1d930adac5837bc4a
+3e64dbe157108ced1bda1319b5a315f6
+3e653a5f841bd5ca46b1f7ddd4ca7548
+3e655a6d9b700633807519e6ecd6cb8f
+3e665921f1dbda9fbde4136ec725b146
+3e684cabede2737007c155d766e22bf4
+3e6aee6859a250d4705547c321c80866
+3e6af36ace422dc6277e2552fd9422dd
+3e6c0f3c8fdc1e0394360e1055fb4dfc
+3e6d23b31fb6909cee241d53100c972f
+3e72e13495a9278ee3a2d233d6536ef4
+3e745e585ee1ea123894c937cebe22eb
+3e76280199ba98025f30d8895086a577
+3e76e30187bba823483189b07a3f083a
+3e786e5d7a6686e9c28b6e498e5cb5ab
+3e7920f3f1709f2376778819cab23cbd
+3e799ab7a7ca8b8ca14fe437855cf51d
+3e7ab4b868f29a789a409374c393508f
+3e7c1a88e7e689c9c357715d3962c261
+3e7c4b89a4fb3fa64b21606944b47041
+3e7df75d96ee71dba93c6af4de97c968
+3e7f889572ac80bf61ed5bd0617ce1c3
+3e80cc21b09803e62b97a74c7aa8d509
+3e82ab07ed11b4d0074f07ab2f53b330
+3e84a9b9acba27535142858f9586badc
+3e85a723f0b5e6ddfbb42d28a8bb206d
+3e86bd272a287819acd35c180ee54c09
+3e87bf5a38f67b982a7463c8575234cb
+3e885b6a8fcf6504e48cd58f3e6e6561
+3e88f16ef9f556cb25fc7b45c3887b91
+3e8c56e6e55607a26b20de293e958c1d
+3e8c5844ee14ad4c347f8b373e58a1a6
+3e8d8f45f174b957c8285c28bbab4294
+3e8e303fc63802b71aa12fcf07318f77
+3e8f88d6aa4406e0243fa578db469e4e
+3e9028911c38eadd97858f5057b16047
+3e9185c542220d604703e8e78ea70e2d
+3e937e89422b1f961d09a9722feaaae5
+3e93e274a9ba5895190047ef3407bfeb
+3e945b92b391b3e43c5384b1510f5f1b
+3e9539ce9ed291e7a617d43d2f1b9b9e
+3e966f31b9087f52707278aaedfad03e
+3e96bcbd502e6feb33b5d0f779a11971
+3e9871fbee9421ccf32e0c3a029d396a
+3e9b6a57389ecf24c1172b5183bcd3ca
+3e9d9eaad98cfb19e5d95dbf660fc441
+3ea312e9703b77799a1c520e15f88bc7
+3ea36e22741265ebf9932f0a35d5657e
+3ea54e3198b4509396ce594940685ff3
+3ea596594cae5e39d6dcf634f551367e
+3ea6fb91dca7671c9b731257eb95896c
+3ea79a7f794fe5650eed2f10e12d7dd6
+3eaa3645b6e85aa0385afc516afc0987
+3eaae5e4fbe4d7840219933936910f5f
+3eab3ebc2a21af31ad5fec4bda8212b3
+3eaf1a2d1c37e5c551f1f38d6f2f8f48
+3eb2d00e6d4f383500dcaa47d1701f44
+3eb38d9737c113ff7de2e295ee0aab1a
+3eb58b28537f15ccfa7a4950869aa210
+3eb768776f5d7b0f08bfd2b1d67b3f7d
+3eb7cf74f371b87a5ba5f019c89e71ca
+3eb83a31305eb11966d8f9424fd33beb
+3eb996c364e2f02fc3b02acccaf48654
+3ebf274d825d273cffac4d8e2470da10
+3ec0af76f81d9833e8b619df98721d99
+3ec1d65a065ce5b491106a4db87cc18b
+3ec2d4f94cebcd76dd9d8c83002547e2
+3ec4411ef17eac6d2b5d4166699de40c
+3ec4c339fb64fc356cfe743076970f0a
+3ec531bfc9d4b1bc60bb1c1f2837ac0a
+3ec6056c2947e33b49a1e5eded4d8b55
+3ec699e6cbb6f05f606e88ce161e099f
+3ec8e0fa4b489b8b0bdcfb1c54b0f390
+3ec9e7553ab968a0d979e94bcd3984f2
+3eceb053ac65aa92dbe68c13411bcc22
+3ecf4b4fe59fcf33b4f2ace4d71996ee
+3ecf94d7e1ab604309242e72bcc57b27
+3ed0efcb9b157aca1d2a9964b4c01739
+3ed15f0204faf9249d681f6a0b4b2d8f
+3ed17d6257ef9181f7e6302f06ffb645
+3ed5fed98f592c44b4158f894ec76b3e
+3ed609ded3efc6acde431068f8c03225
+3ed76ea8de26c93b5f636c12099e22c0
+3ed7d369f0ebc8d47f605e4af8969582
+3ed87da6d667aba306945c59e8b36279
+3ed9384d375f052597236bdb21fcc729
+3edb6e0c70f0596e8531f1bf59ff8508
+3edc49749a31c0785eb1b7bcb53f50b6
+3edcfdb87b120e132cfe4e59a35e9419
+3edd13861057c11cb8f21c0ad10af175
+3edf21cfd1fd490fe71509f229ed0007
+3ee16c49d209f94d6e53b61096a3874e
+3ee8b12021f62e03bd381e1b9b34da90
+3ee97772c9a900f5633774f056d4364c
+3eea27c64fd62eb3bea5d503e91a3c37
+3eeb961240056b10d2612ec0cbee22d8
+3ef0805ed8036ec769f120986495bd7e
+3ef0c3f7676726e4ad3880d08f0ebf91
+3ef1d612bfe109b151cd5fc320c85542
+3ef2ee0b069b86564cf05420d3f329e6
+3ef2f00e77116b7bd51157e9c9023ba9
+3ef352c2fe6596294741552c66d346b0
+3ef3ebef19b659a56d98721441845850
+3ef545f0b0acd9af9f145deba954913d
+3ef62270fe5a66a3daccd8c7015102ab
+3ef65e9ee85e5fd3797a8ab3c4e5c50e
+3ef689be3853d35e84783983b0c292b0
+3ef789657c5577a65da765ca73899bf6
+3ef7f9c6167dff20e1af6c93506eaf4b
+3efa421c937f5739322cb19edb0fda73
+3efa4eeaff71367feb4be22ac8d9c44e
+3efbe74535529192bfb3bc67deaa579e
+3efd20c0d3f47a58e6e4211dda473efd
+3efe1a97b34bc9c48761610fc6e44e37
+3efe51b603500f536a85ad5a0a4d1951
+3efe5501bd862bacfe7dc80f27bf3fcf
+3eff1b7eb7088a5b560a39f7a01b9dca
+3effb1fb2518a007c437279fc064443b
+3f0236c42f9979b0dec17e13c38dc85c
+3f02dd32980c368217053ccf72f0f4b7
+3f047884e4a6a6cfe58c6363418e572f
+3f057c09941b292478686da07d569311
+3f05d0d777ec8428a156293cc039fb60
+3f06133aef1498de51286795c4fddd0d
+3f077490c53bc80cc15fa02340dc6f2f
+3f07bb2cbd2ac1978eface84584a9b08
+3f09958d77a71704b97936705f02e757
+3f09acf4569cd3696596894d58575836
+3f0a555949648b2ee1827ecbccfaa75a
+3f0ae172909e2e905291e48020ed8248
+3f0d8e9a064026b3d71f84393ac2bd35
+3f0def365a1fdbe457254738a8e7cccb
+3f0e5bcd0c79102b3666ffe078adf354
+3f0f9d0a42519e6cf4ca790b479a8c69
+3f149f4ebd3e4ce4a369c717249d6458
+3f18e7f3527f455bab21626165f69fd3
+3f1a1e96b749cd07c21085f9b7f31c67
+3f1d7d6d5dd78b767dfa14dac4b634ef
+3f2116bb42b1d613dc3edb5e90ef9d4c
+3f213b6f940c0293794d02a8b2215104
+3f2232694e4610ca0a8b3db345e4cbaf
+3f226f3779c804a21f5c686cc7e95316
+3f22dab389b21fee8310cdc33cc0bb51
+3f24964b12f0ec214acd3d7a38f02382
+3f25ac245831901ba5750f5da7ed2d4c
+3f26251b2b2f659e5fa72e5eaaa4952f
+3f28e9194dbb0c0a0b5496cf7efb22fe
+3f2d26dcd741945bbc008815220dfe68
+3f2f1e31d95c5092294bd5b4fc04c375
+3f3011a724b58b5dedb0a4ca3801e949
+3f3061a6b95ef8d3308f5e0be063e029
+3f3085a9dd93540b0a76aed093f0d047
+3f30c014ec716e6151d841c425904493
+3f3129aff61336a0bb54f41c48689f8b
+3f319347235ec3e39002f9718228f833
+3f32b1174f0674892b53adef3bcda92b
+3f32c1fd3324109cd79be864fd90a961
+3f3418d5d28d34c069b55b5107598d72
+3f34869e216e990c22fe64945c770d29
+3f37138944560ea363d26d3feb949fd9
+3f37930433ad28e06ef247dc3219f30b
+3f3c047ef78a2271df4f6917f30765c5
+3f3d549591baf01244e6cd3a6505a72d
+3f3f339f433df6ec1668c1fddca92606
+3f409e920846d9cf2ef6599cadae6908
+3f41fcca900a60a1444346350e9cdfc2
+3f420e37497118cafb483500f797a34c
+3f42e114e428c9865b3949e144ae73be
+3f47de3035e295d35a2416d6b8bc3a00
+3f48443a5643ba36048d2cf251b5d1b6
+3f4c941f4e3d478a7bbd8d7397a91608
+3f4d019d9b5336585ce811e6ee1add12
+3f4dd722b7fca4705fbe18c517c87d1c
+3f4f823db877508d4bccb1af55d87503
+3f506f96b7c775dd21a289dc2e5a2468
+3f527028088e0f42ca97e13b0e1a7332
+3f56d8772e62335cb7de1e9b949114ad
+3f57621afe706440c8ae50f9e7efd5f7
+3f60460f508d4144db5837a919264521
+3f61acfbfec64de65b270ed4e98ea349
+3f627493d684c00fbe3cd5c6a5c7ba83
+3f652abe93ac9d0c39c917a7e695f3d2
+3f68e02435c98122b7dad0533203e39f
+3f6ab011d1c8fffacbdbf8d9fe960dc7
+3f6c0fe63ff24e51f67b3c7c9146ed87
+3f6d07e7522586e006ae199d785092e2
+3f6e961444df055ca0e12a9a76144422
+3f6f41ed4bebc4a6a593cffb7fb5b981
+3f6fb35080c4248bcf9ad13a94e72866
+3f709488ced9f5cb8d8765018e16bc0d
+3f710ba15c8fba0422cbf81e937fe17e
+3f72da3188124316b9551b6cec7eacd5
+3f747d313b11d8c2bffa218b23d4ba75
+3f7968654cd6adb79ff95e96417e7687
+3f7b9a58cf0ccffec0beee3715b1d8d8
+3f7c9f4601534bc366c13bf813dae2bb
+3f807d59c1e6c047b90e0c7e44386419
+3f847cc93e19943daf982798399627f9
+3f863b92d8d41f8a6522725591430102
+3f8bcbed20f64d22065ff6d051858de8
+3f8ddbac8ae9bcc9e4a706d59f3e0202
+3f8e17181ad53ba92124e92ad893cdab
+3f8e5fc4181b1374d1ca3c822cff47f0
+3f9040e008bc46be479f31c238c6efd2
+3f984847a50a89ba5de40894c696e57a
+3f989ad36f64af7329d0000f86446e73
+3fa1b4dab0bfcd98eda0919ea25eb903
+3fa43937ea480320d1afdf564b078611
+3fa4f2c1bbdeb8d14151ba5d26a072a7
+3fa58d5df808e8b7cf1990363e266eb4
+3fa67ea4fbc892211b440fb18d0afdf7
+3fa8172cb3d5c7f43d71f1ec37b8cbc5
+3fb25aacefd73bab30b16db29fb4bf75
+3fb34848b2df1605986c0bc78bb204af
+3fb5976f184cd00a0aaf65ec51eb2be6
+3fb6f0a67d004e144470444637c3d109
+3fb70be3d9447defe470c0d8bb67c93c
+3fb9c6c9623239f5f987c0556ce2b12d
+3fbbb6da41a46b5279bfdba9ef42144a
+3fbbcf4524531a192e275e6dc1c8b548
+3fbd8a012b9ab3104722891fdd4fac22
+3fbe55be525de40e6ce0f3a8f3362194
+3fbf39be670691eac1a5ea962d4bc482
+3fc2548b18d2034935eaa636c537ef03
+3fc2dd55d684bd92d241d44d5bdf7e3a
+3fc3797850c3b9088de1ee66270a21c5
+3fc5ba02b7422525e1b2f774fbb4bd61
+3fc715a6efbd28037acdd9bca5dfa27d
+3fc83e5386bb17e35ac11396c56d6ea2
+3fc8523d1aae2b183f2003a667abbc89
+3fc9bef2440f4b9d455d1de67d5a2c79
+3fcd0fbcef3d823050c123d0922998f2
+3fce10a5015f80713cd003fc83cd083c
+3fce225fc5a166c466994ad18371a851
+3fd1f53f6aee7de8f2200aa4f678ca3b
+3fd1fa292b84d1a53a4534feb6eb8980
+3fd912e9a4419b9591d44f10d58ad71d
+3fda81d0a78c843cf54e98c2a1f8973c
+3fdb122fcecb4dd94bd9b699f1076a69
+3fdd67617a7db1cd2209027b30f5a926
+3fde72a4f0db16f84e38463642eb2d8f
+3fdedde385e9c69df33e78804a2d30dd
+3fdf9e34514e3b06c376ffc42e538b07
+3fe0552532c04aaaeef24d96ec1222c7
+3fe262ed347ae3af35d5ba2e50ca53a2
+3fe3261041046a2102aa66e8e5fb564d
+3fe394e541a5be321b35e58e2e51bf6b
+3fe3af995a4e99ed155088e540b41eda
+3fe88d65349b049e630743a8109b5485
+3fe9209ff87eaf409d167253b815f7c6
+3fe98ee7bbd096e213423889675822a9
+3fe9987a2fa1263bc1b0b05c90fb9fca
+3fe99d3df49bd726dae9d7b315550e84
+3feb1d0a6690931ca05a07e3455b6a3d
+3feb8a17b983d8fa6e8413b2875025f2
+3ff0a3f34b820babdf53b4aa60b3a629
+3ff14bc8c4030f1a85f10006f036a2a8
+3ff2e061c416e4bb9e65e82e8da09417
+3ff41df90c3232a8c97a448c1466b3f6
+3ff43b0bc9f0262e84b201c40e61279a
+3ff6c2cb28b25ba629da96454f50f15f
+3ff7f312f98fbc09ea8ce9c7e5fbdaff
+3ff81d92b8a3497df2796d36b8b7e730
+3ff884bb153b5e6b0892845dbcaca489
+3ff97251dc6119cfd28ba592bfd8718f
+3ffa11d022c2cb2c01788b314c65114c
+3ffa730af5596591f37832ce34026dda
+3ffe305ac328a3345811476467628e1d
+3ffe7312241dbe702421a1954b1f239f
+3ffe9ef22750eeab19d1469ca768dc46
+3fffd6eb6e0898455d9a4bd5ef3ff76c
+4000ffd1b515f2865057bd8500e1c218
+4003a0c1d04027e762beef42d2015233
+40049a2209a906045c20c2fb9a2b7b17
+40082fcaea0609287e72996a2bf53cb4
+4008ab9acb2110a24873cde546903612
+400a150fb40aa2c61fcd71d5ef34f727
+400bb09d5a650bc0dc09c974786ecff2
+400d0596b9abc6638e1d98e34c8b138a
+400e511121f06aa5ae62adb4568980c3
+400ec1eae07e89ce44ab5eb1aef34129
+400ee9444dfe54b57de7592dcf46ab95
+400ef8727a0fd5ffb7760c37526f7b05
+400f1b0e8688a39d0bebe2d9047647d1
+40100d49329fb31455e87d54f82e13fe
+40103a5eac79ba3d1ae5b2f1d5d9fc41
+40107bf0a74657aeb7f7da5ab2c8f9fa
+40112f04b89b7db6a5fd8464aa02a271
+401203cbcfa83f02bed0db8cea0e6af4
+40125491a9f5ec92cfc24454350fb018
+4012fae19aa65240d760785274369715
+4016a4927786d6e458dd68d9db758b80
+4016c7d63f07b628bfab6fcbf2c9d62d
+401787de3c3c865bf86069f878d51c1d
+4018efa2e9f7406ee3ae0630a1ce5df4
+401c834177a2b90b2163d23d9f31115a
+401cbcf582066a7fd163e55c107f8956
+401d0b503d351f16675f4f6053557da3
+401ed34fd97a4e0eaeb10674f7c7e5fa
+4020352328ed7dd4b80831a7030712d9
+4021257861144486e5afd324348b16b0
+4021a9c27af4a60d2c975dc2bd9a75c7
+402252efa3de164670dee4b6a52b8f0a
+402291407ee1c9e7c8cf2b4aa6a85c13
+402293aa9a01674a098781f8e7735efa
+4023222355cb776c9e97bbd39ffd856a
+40249ee657be88f5c1fa91902e420f2e
+402560deb8a3e92b1bd3d407888dcc9a
+402666c16a295046e9ccea00e1041503
+40266ef571684a45587b93fe7cb091f8
+4027fe4ab7b6b10c8bcfc10b9413f387
+402af7d5286137b9808eadd561326116
+402b61835ba8ab20423e00d454cceee5
+402bc0cac799b231a5b8f42c6a55a892
+402f5ebbfbf10caebb07b86baf175a03
+40300bdda75103a7053c3cad84d0d094
+40316774044047317de2fe43276f1a4a
+403459402a1d190b58cac86e5e8d7c1a
+403603c30f8caa5759ff75ab6dfa08b5
+40368e0a10fce66193b4263f1c19f9b8
+4038059c7f3d905be8320ac40a2b6a3d
+403a8388cde8f500ed1675db384a1df0
+403c45b0a1096ff0ef8ccc39826bce47
+403c9492df05b5cbd34b37e2a9c11ce2
+403cd689d2dd49ced15dc3dd39836af7
+403d2b88c1b56474a428515160cc14b5
+403e2243ccf5419aa17c77e2c7e06f8c
+403e52f8d06ff406f720fe8234144f2a
+403ea2737ce9e2604c665ca790d0aef9
+403ffd01f578f1100c7091bdca1aea2c
+4041556bb3d40695e8271dfd184db5e3
+4041f435e23c509b14a620e7a0eb19c3
+404262222de184d1732d10095b8d378d
+40432c1a189139794fbe57112d25b59e
+404340e9975ac911fb65bca3f8aff6a7
+4044c1ea878d12f3d7fa41120b0143e1
+40471c80c974943d5bb721b07268c853
+404afd013461391d228264b5d7da441b
+404b9bba1856555e901cd7efbe0c9522
+404d7cf77828e7b9df64e96be8593bee
+404ef2b16b595f16580a82ff5e533167
+4050388f057b73556f6c6c94422651ca
+405128e81e451c466b182b794cb787d5
+4051a15c270b9a7c070db1a95708af60
+40521e8ff349ab9a1c3ad0038576af0a
+4052675ab15a88b37b440962ed47d003
+4052a6e79b808cdc9e577bba851c466f
+405516d9a76ae38ecf28b1595d723d6f
+40574a44ada40c20b413b0c2ec1e0275
+405946ad35ca2382d6c8caeb9bb36aa0
+4059dcf4f49fb259ab794b0b8b235573
+405a80c1f10b144ab5308ae426b9441e
+405cb2cf3da45ba09918d46e84d6b12c
+405dd1389fab2c2f861c23014c84d1b4
+406289c6f04984ed502b5eda18c0c59a
+406575bc513688b7c4277e3b95f86321
+4065a82cf5a117361f4fe666901e7726
+40684b24132801c79271366a657ddf04
+40689df8257b52d5a9e4039a41f15705
+406cd414b08c8e179a683bc92fa516ca
+406de39d7e6c8b59634f2bbd011f7b63
+406f4f576de2537c173a4b07aed078d4
+40712d6b06fdf4ad4362070405841268
+40718abcfe173844e8d0eb17180f57d8
+40728d794ff698dd0c26da2a896e74b4
+4073230b1f75e8906c34dcf3a504c95d
+407557e3539c92f3bf159e1923ef98de
+4076915576a8fcb369c7db4608b27359
+4078055052c12e527b44711ed2fab0f5
+40793909193a17a575a3976c214a8b3c
+407a5e580a5270b3f8b29666491d1b08
+407d9b7e084c1a342e5dea24b2a96d16
+407ed137051fb99fdea5c62cf6438553
+407f696569038fa1a4e8fb9d8cc6d935
+407fa71f7a5a19f351c8c3c5bf982a34
+407fce46cc2d26e8c02158dd51f45d25
+4080dd3ff8719d3b6dc18e899cd59eb8
+40848201168e32e05b9ae7ce56692a45
+4085e1b3e76ce3a4157f32ef256167e3
+40883682171e1d81aa5bb66b794548e5
+4088edc46187219368a685c6e3cd3103
+408a376a00135bc714032ccb9506dc2e
+408aa361f273e371684583fbc9494ce2
+408bb96d986d096f2523259b2f944da3
+4097c2f6ddda8a16bc5b0c455e1d6b9d
+4097e01e945806a1c25facc587561c6e
+409810b807486a1e945b9536a7c9cde4
+4099a29367a6ed598ebc9ff549c99747
+4099dd7232333c32ffdff3b8da89a2c1
+409a203522da70662452b38e9a19c15b
+409e9cdde3c5aecfd853cacbeb6b2249
+409f4f01ec049b5e883900f9c685f823
+40a1062ae8723b9212095881b9abc378
+40a1900797d63b8e38ed5f0d711b4aeb
+40a550f4a0f36a8d783ac3df6523cbef
+40a7217e89618b959c9ad5258739b458
+40ad8cb6b0a30549d251ccdb15db218f
+40af9259f9cac81868b1847c59b3115c
+40afdbc2650c0bdcf9955294fab4a89a
+40b014b189a23023a9968c13f6216fb5
+40b0cad4ed3bab8d9a2175284c3d6208
+40b1121dd05cf6177badef2842a26261
+40b1832c39f132efab1536d7e543b782
+40b2ab591303a7ffd01222aee78a4be1
+40b2d7b828882c69c991765c6dd127c8
+40b36ce0fea725a7e489a454bd31562a
+40b3713157a5325fcfa4ccad92a59d4c
+40b51a62e60776813ed5443c80abab4f
+40b53df1bcd59c0c4247c7381c4b2f91
+40b59d0d2faa40652e7831ff807c8f7d
+40b5a0a7713f18de77879b1ca9fc1529
+40b60938c2cfd86c8d5dad302b4efa67
+40b6bb0df66360560c09ec31106e296b
+40b9231ca23a9f5851eb61e87fec6aa7
+40ba4ef322db3a9fabe64202c3a612ff
+40bdf5fa9ffcd9e42bd52bc36834c277
+40bf1f7b1cbcb2d1f8f6ec66c0ef4c76
+40c1f53b969abfc97743d2ab68828087
+40c27f705d67c2c26e58d49aaa19defb
+40c32518bc051b70b0f4feffa7609fa2
+40c3a4d1ae728c127bfcb76e5d235ca9
+40c5d990883e9ebe837e29a72413e064
+40c61d22b076035028fcf344afb84086
+40c668c81ce79695f241bf557b06912f
+40ca9dca222ee6aa0a6ad3ce2baf0870
+40cafffa5d03e48a918cec4978b99010
+40cd7c0a48ecb3278342ecbfee0cc35a
+40ce9c9d7bdf182430aea2eae3e53b7e
+40d117d31d7826d7d50d7f321016e36f
+40d17f723372a84035ba7228ff601de0
+40d18fe772dfced2fdef16276f2b625d
+40d22bc8ee7a0031fbe1b5cf59ff410e
+40d3fa3c4670b22e8bd4d98f8b2f9974
+40d45ee25ba2901c961646811f31715d
+40d67c30649267fd9ef8c47bf8ee7f2b
+40d6ceadd26f85cd119788cab7a08674
+40d7ee603399d79307ee106a82cefac4
+40d856694b275c482b8a397c4f756330
+40d8ab2e4ee3f2fff780405c6449e6d8
+40dad2d977a9dea63e26d2bd6da2686f
+40db990078acb8274af83a4b4f6a61db
+40ddcccc518873f0b9b71739a74d5317
+40e0c4d353731f78e81c6689f492c17a
+40e3b597db6b5d8230a47bbcd2621c0a
+40e4f75a0be5757545a7c63cab7b791f
+40e57a97883af1f6f2ea4753b1166fa4
+40e5f45f7edb5581771005483ac467e5
+40e66bb3e127718c7d51ae6d5ca9f5bd
+40e701311855a783211afdc43cf00434
+40e8ac24a336302349375a25fe535c4f
+40e8c7ca865da3b2e36d16f458428188
+40eae9d9051a0fbbe8717cb158b8affd
+40eba03ef332b2e3660b5005fd12505f
+40eeb4206b0bce40cc624c8b3cdadbde
+40f047b67e9affa1e7600cc1c8844190
+40f17f37e73b4750fa8b0c910c5f9f87
+40f1b1cb8ebd2f3753f91cd52e8e6ff2
+40f20853ff796fb6506c2b18c21e6ee3
+40f2c2c48cd45d3bec64e249123a5fba
+40f6b0c39d914a070a1a5371858772a1
+40f70ed6c7b30c67fafb1ebc3bcdce90
+40f74bdc8e06030196428582d7fbc778
+40fabb508a6d91ac3d7b16d1ab374871
+40fb71d7eb9b5b251b53b356eacc26e1
+40fbf2d773fb711a8814d275127a52d4
+40ff037779278496af784fa52307e412
+41019b7669dc7fc9904ae5ae17f8382c
+4101afee5071bd55c991c502b9b4ab48
+4102d875528593fd73279ba6432d0292
+4104132642f5a8aaf4be3c7487958d9e
+41064f90416c4896489d911f3222f73f
+4108dda267c497d29de2f3a46c266e82
+410a51df65d48f2329322da2e215e1fe
+410dbc60c0bd6a4a9141f194983fd52b
+410e2bfabd0675e88a6b03acb04b5326
+4111678fb1cb84b979119d0fc8a2669f
+4112c57bf460e2410192fe358d81e67d
+4113c121e912619ecfeb5120abf9a56d
+411422c490eaccaca77f31e077b2e03d
+41153e362071df7a1dedeaf5f6c1751d
+41181847fe2da8f65817f2bd139f6c89
+411ac6a706fd5b3758aee8ffdc8a610c
+411c0537bfca3dc63968875c9f9f0e5b
+411cbf399748d10d8c3539f6d477119a
+411ec4333f96479f88c085ed97df7e50
+411ed4697c3561900d160d14a6a2e999
+4121adf98a43d85c1ebcb34b1ab1d4b0
+4121df666bc00b2b3128b48d2841fcf2
+41238cff2423e402ede6af03c4a57631
+4125f4d508943dfa8e2cb5f8ca1eeb77
+4127c289fd8bcb976edf4a4d9cb78294
+41293f156bcc06f76b7e06d552eed963
+4129f433313ad947ee61fc3363fb9b9c
+412bc7aa78f2e9fa5069a403001113cf
+412c5801300e25b4c30f7a80bca9b736
+412d1843edcc217b11612136a49595a8
+412ddb95abd6de2c999edee2ea3c62e6
+412f17e347c42b9591927dea001eeb0e
+4133c9da43146c4e249fe14e5ca32697
+4135265654bfe0e1d94f3b8008e7412c
+4135ba32865592d5358a9775b552fe18
+4135c1a49a242773a74240d91577e683
+41366fb3f65f86162f393d57b81aeb65
+4136f1ee7baadeca682db3981d1e529f
+41375f1ef6ef53b3ed4a648f940d2b36
+4137dbef65997c19a599e5189edb027d
+413841cab895473b7177454e0304e180
+4138e5f698cba3b40b096262d44ab8eb
+413ab8432006292651c0c1408bd12d88
+413b5f2702903de8c5d0e5f69c9ac880
+413c1ef13d90cd86ee4015cc98e17001
+413f87742a2b9759f04c02a23f7d4be4
+413fbd39d55dcabe40edb99f19feba41
+41410d292de98ba5c9157c4d6a7ee42d
+414118c33884ac6ea46c4ee5723cc08b
+4145215cb615d7726e6b4f563dda905f
+414546e0cbfb5880c0ce9526d6a62e2d
+4145a9a30d1f31f2ce3cbf67043c3458
+414771349ab78cd43c431e3a49611933
+41479e2f7e6d2d6c69ee26fee0c23a43
+4147e659817d3f406ab2630ecc8fef03
+414929b9daf1c9e042f4b9d9adae47a2
+414988f0509b5648e6ba19f81fa784ea
+414a7836435d3bf8918d5a129ea67f71
+414aa1d8a65e1d12abee64c87b970cb8
+41520611b6c3c1625d709969f3057bb6
+4155587c94121a75c25b8d6cd72e438c
+4155c99ed5045008eeacaf3242ef782f
+4156d09deef99fa0ed5fabc9cd068461
+4157f78dccb893c4b1367a30c00515f8
+41599f22a851f7d61262e324160f1ed0
+415a61d5995551ad063e08576b334556
+415abc09d3752cb3a0b16ec54057b45e
+415b3b9829e6da11898408355881c658
+415d2fa1f3837d8dca7f25173fc3d9a1
+415dd58d63055a6a1560c2658ee7e5d4
+415ebb9d4e42d4f87ef4a2515c5c63be
+4160d3f3c315293195f70b6267b296aa
+41610f4f4771abd13e46bd320fe0f105
+41619fc927ff28676cd0cdfe55764d71
+4165f14a3db9b08dbc87c0f95b59eb25
+416664e3a471d4e639fae61c2cad28d7
+4169e98ce95fe933c0e996afdd0f99e7
+416a97a2205df8f54f06f6a61dcb73cf
+416b1040726095c19b45bc3a62000205
+416b1f6aba90a3743228ff3638be5c6c
+416c46822ade215a4e2966c42b332535
+416c5f7dabdbfb72a79f801bacb4399d
+416d7c2362c8b6743a73b04c6438dfd1
+416e0292bbbc90c700a17565ea8b9ec1
+416e88fed12bcc8ab2cc69065344ded2
+416f79be45b6a9a9c2aa8e01bb90d6b4
+4171721ddd34a8f24a12a6b69dde6792
+41752fcd2505495a50c7777fbb17b61e
+417635ac80e373373b40f8eff385a46c
+417f397943dc5e83789d43cc2b262f54
+417fc4f35bcaa010e5e218ecd49318f5
+41811070bc8ce4a10e713db79300dfd9
+41852d280315f97032346673499336f2
+41884d74bbb50e62c91dcc9cc2fc7bff
+418a574d897345c99f6b26aa45ee02bf
+418a91f75b1549b845a7945d3d0aab86
+418ca751e07a9efca344d18a054a831d
+418fa78e3020af6dc4f52a5931e18567
+4190bbcd76cf8dd7a95d861ef07ae75b
+4191c38474f242ce5544607cb5c30ac9
+41934bc4ea0b0d11f8ae1a2207c09cec
+41948d54613af1f8145ac3466781125c
+4197a78414c4fb2074131d32dc80744d
+419934bb4e79f9b99849ab01e7f5aae0
+4199d40edf447accab273d930e70ec92
+419a753d0977ddddf70bc60f8b3a34ec
+419e340841220de6c315ba9eaa8a6c42
+41a3214001b39a1bdc7d462d83f6058d
+41a33eb07633d098dd1922f6a23b9536
+41a7125aed71705e1cbac88494345f40
+41a951acdbbebdb088891c3540e1cb24
+41ab46af6660986e023451b13c42924e
+41abec7e3166688c2e83232e8df9d715
+41ae8ba02e2200a3552e2efd0d73a3af
+41af2403d1c1519f8113b2d03450d6ba
+41b05bede067e4d5a7e6168a08c22455
+41b0711cb656f9af97bffd26297d7088
+41b32295baf7cedf392ec149774093c9
+41b37fec172d5394c70043b175f71ab5
+41b4735ff8298cdbfac134fc11556975
+41b777f8535b9b5649c71eea7270385e
+41bc5017d7ec0d2bd96094f8a049a6fe
+41bf4adc6ead1a30d4ac29534e279c31
+41c12a4f2f16e77c6efb81d24ae75ff1
+41c2fae6a8fbf2adc5fa0649b2e1c045
+41ca6d9390d7513a1dd1ecf3286cf00c
+41cde0039351adbce5695f29615869ab
+41cf4c68e4f29d210126f9df897ec6e5
+41d33d14012a9ef0064153b7aad3e847
+41d3a96d629de25911c8a91bffa84c11
+41d5850c1f9fa0fd08531b70641e6eb1
+41d67b3c513d52a56186802a532a1f16
+41d723368802290ad2d956e6f58beba5
+41d7f4a0b4fdcf3d34745595481186a8
+41dc1deedbb8e2c1b45cb94c04d4e03a
+41ddc179ccdc3c71171a48665c2b7e3e
+41df15782c0b9fdcf8634616fdf2915a
+41df46e516ed39358d9ed89d075b8a5f
+41dfbff826cfb21828a06827316dc94e
+41e4f4cb364d2dc779fb919e9d0a3575
+41e5c2cb373d3214c50dc93ede557b90
+41e72692c542c25526dbaad4d412e031
+41e88a1e59acaf4b04c7cbd15b24a7e2
+41e89b6c5b863a8ca2c24fc4de68c0a2
+41ea629ab3c78d74bc98c41de2f8b9cc
+41ef0545b9a3d8f2fccde2daa1f370bc
+41f15d64694db35d50e82a96224293ee
+41f3a958a3ee0621408176a43a0a8818
+41f4ad27397d8f990605986c4d33d58b
+41f77b6c44e30897c9c169d97b659018
+41f80421d04666eeba0b8bb2f998135f
+41f9a93816f30eaf5c43a80dba99e3b2
+41fa09550baa6720b89ad14a373171d4
+41faee026666183d5ef11b5d94011511
+41fb3ac8e4615ed259dff202d43fa6a0
+41fc74d7c81de9fe734c3d0ce37ec662
+41fdeea3323e9efc770fa3c95c6c31eb
+41fe4ed42f3525e099f7551c1b43b61d
+41fe95a1058492d81dbd5707dd7fa58d
+42013626a74af3855afa09928281f277
+42018da1bfb5054cd6cf1027adc46124
+420354c617ba6a59fc64c0b340bf337c
+42042ff4d73237771cf05a81b590721e
+4204ec473840d4751e452f129abb24b6
+4205e410995898e524e7b79bf1da4983
+4206e8107dff32ab153335877c6176c9
+420a5e412a047427a4a947670cee7bdc
+420b08f5c1262601c922351a6ae99edd
+420b16eef16ef34be772b30f8109e21e
+420ca9682a4d7684173676356294c023
+420d70c336f4c00faaf6ed3f77c2ef39
+420eedc9b7da410f66948e7c8bfaad6c
+4210caa5b5afe2783afce20300e546f6
+4212b65d558deb1d9d090b1991cee164
+42137741ea902c4adf87e04ee4f3fb9b
+4213c392331495b0a6b65599f7897b9e
+4216fece31994c145567c49b71c8805f
+42173bafa1c1377bf7dafe5c902c37eb
+4219fad12f42f63e23d139fb0986e34b
+421b59c8087e01569661c338fc496d07
+421caae75314271632f2225d27485778
+421db0aa5e1ed771cea8ea66101aa6b3
+421e79be4c69c2c59e7ccb7ca425a2ac
+421e8fe4caff83815fb10e5386cd0171
+42204b0f6a5906bd37c26065d5311313
+42206eecfb924993089d54bc1a8c93ba
+4221892cf33ab54bca39f36def259a47
+4221c7a399fbe26edf850f1fd1e5e496
+4222ffeb3c49b89c82059acc83fe916b
+4223691d860b3cd478e86bdd8e679012
+4224e1f7cdede3b4d0cc83cc63da4c3b
+422555ce8189220b02fe1bcf1719edd7
+42266cbb29168b6f3b60b96a2b70c41a
+42274587e9f4100deefc0edd7ec2c155
+42274d4d8a579b0d0d574067b311273b
+4227ceccecb91a82e67c59df7df59f14
+422821d8d2ad6ffc1a387259ad3aacbe
+4228ad1f0d19d1ed2f5dd22604aec26f
+4229d494986133e53d735f2df752de7c
+422a2d2be218fc7d709d7269a2f52183
+422bb856925197703e31febb59a01190
+422e792c5abfb7ab0b62b4aaf86c7c58
+422f49af03f4fbacc802519deb358be2
+4230526e7a2d70a2c7b71a368e26ca44
+4233265a6a9a04260feb8f8b6aef1b2d
+423357cb5ac46ef48ad40acb58054b88
+42343166d37606ba4c8eb661d956f666
+423550055157fe0e0670f571aba8a58b
+4235c03c9846f05f3c2ee0da26dc87f6
+4235c6a979393790d60c7f59560f7404
+4235f476f12e3d354fcbaf9d22f464fa
+42367cd52e67ed3fad82d7d11f0e1892
+42374d4b052b08e50e716715f21114a6
+423759224e41cba37f9e8ac149a498be
+42385fd7bae5d31364cd22161a0542d0
+423a93c9de63173a6ea313e0cb73f7ac
+423c56c5a7858706f1cee647b224ab82
+423c680956f3e91be34b3f55adc1da12
+423ef5a4f9b947665f9f1e99ba9df939
+4241467de02bf34ae12b53d5496442f6
+42421ec2ae29d5de7505c783754c61de
+424491c0de9f5238ee82ea0eb4dec3a9
+4245d3c09ce889cd81d479c1eaefd8c9
+42480ec0ce3e351104be8a9619e05921
+4248a5c8f656b29667a206a8a945ea0a
+42493f55fbcbb5e92af2bb793b6f21ea
+424a1f26ac3d67dbdc1a8932f548cd1f
+424f7d9588065a8a1babedc2efb5cf92
+4250f2415ef9927f7c8a5a85689ec88b
+425100c6481dd7f74def2f8c01ba36f6
+4251936acaa6c2a51434b4ae05af7335
+42563c077fb9d138aa3f47b01cf0a2af
+4256786c8883b4393d93f492fafeb70d
+425a202e8f0ba13ddd01e3ac46316702
+425a6a5f74c9db90c0758b50f1d6eadc
+425c7b37677fa79b568442a21176ff7b
+425cafa2a786de9157defdfead4c4fe4
+42632201a82e54ff11ca39a76c38c12f
+42636449c827425b6097ca7a13638f3b
+4263691f7c58a3aba416ef304a5d87d6
+4264b109dfd9f229c4cc9aa2a17a8d87
+42661651032c79c5de0ed000804afc05
+42669b2312606c5c76849bcceff308ba
+4267d12cf229e21043276169892bd3e6
+426a4615ee936704115998f4716395c0
+426c0773b54ba9ffbfbcf2433c3a74d0
+427210a84c65e4b9569f736579987114
+4272c9bc66c0b2a657a42b80cad75100
+42730097c5978ebf08750063f827c9e3
+42744f233da2e79f70f66abde1d75ddb
+4276c99a1be67023bceeb5a825322a91
+4276cd231d484e1968d06700e3fc1ad9
+4277e23e57605ad0c420ca6982437476
+42787b47e1f9cf39a870cea54b8dc6df
+427b73a1ef81fe621ee72feecc513512
+427c33c60584224e8691d804871d3db8
+42810a3a14eb8f692bb5ad5d6a203895
+4284d654f13564f77285454292426f76
+4284f656142bcdb95a99895036937f0b
+4285a45e7afe93860ed55f3650697c6c
+4285a91dddbf43fee0312a13be9a037d
+4286269942714de71e8e18e9034d5db5
+4287946be484866c95a04a4a9aa5fbdb
+4287fabd5691d26db3e863018d71a262
+428a4eee6ffc22c3dda73cc4f04d8875
+428becf1abbd6cdf959054251dd11df3
+428d60ba97288c9d09f2d96d72fdf568
+428e19d526b3e3f7bf59a430750f73d3
+428ffb0f3e270094886c25e53581a998
+42918004721d71d264ffee6a8e379893
+4294fa7f8a7ca533c1eb3214a65a3970
+429587ef692f14fbdc3ea6ddf91d949a
+429919e08486340ad479589ff3809ba0
+42993b9a75de2f4523122de8560c630d
+429cc9f59b6a236c9202c6a3ac5dcb01
+429ea38074d5aa96a39ac08efcbda6d1
+429f35ad4fb04796d57c3814d00b96e4
+42a2e6ddf77217831bc0f58e802c0c22
+42a4061c510b282f358447d8e201e1c5
+42a48b36c46501fbc5cfecadd624660b
+42a5164089e1b35a356d5938ead9abb1
+42a6f7e4a402d5fd7740698562772722
+42a96120d8c294fa39f139783a17e698
+42aa50285bfdf2ac831f859905f34cf4
+42ac91a5fb05d8d6001294263db4f7a9
+42ae1262a041664abcf08b9843e3f79b
+42ae79f064ec1c20036b8294119d4c3f
+42aece39ca522866d4a81679beb5cdaa
+42aeddbf53591e60c1a4ddc32d5b5de0
+42b19cc1f1460b819730a7d11bf4a734
+42b214f4618fae53e60d1685e0d61851
+42b2e49f56e7ffdb13cfb3dccf5a0aec
+42b34520786e8192adf519d650493b04
+42b3a5bcdbd19c00940c84f40cfaebe1
+42b43d3ca62e7c442387df0035ba5416
+42b4e0c3233a4b96188647e424c58e4d
+42b57c6cce9f19df110654a09fd625b3
+42b67f75312c7a7e8200fc38b3bebba6
+42ba7292964e7e9684d329a8f3e18725
+42bb177884c886565292873706c74ffc
+42bb88c33b26a4cc67253ed8d6abaaf1
+42bd9bb5fec423c6c640ce8e5a8c20f7
+42bdfd9a3e088102d26160b65a033a64
+42beb2ce347ff68c64f1049375aea829
+42bfe5b3298c8de0283d22fdf4d8e0e2
+42c034a5032c8eb74c9c00705ade3082
+42c0db1ed3799083e07e66bab363c377
+42c21e1a308d7f1821f693599eaa710d
+42c248ea0e93256bfc35f6db1477b751
+42c267a82c4911c4e6cc1572975fab20
+42c2babca761ea216d00f876f29d95cd
+42c3421ad246b3b727ffbf8add512d7d
+42c3884440d001e8cdf35c726ab8e274
+42c3c062e7eab4e032798409e5a198b9
+42c48ece5330b9765a382df9596a3c99
+42c848e7d5968ab98b65aa2b4d9b7b13
+42c84d4c4cc1fe72d6690bb2bb53ba03
+42c913157a0a820d7cb43b6b51c017a1
+42c9b4d6ce3959b65cb5514bc347d8a9
+42c9c61858d389c4d99af8b0267002f8
+42ca2965a8babc6e492546b57658bb95
+42ccee77117a8fedbdf471a6b4d8a1a3
+42cdf4919c8520189572a1f2939b890f
+42cf020d0c8a9909d9be6404bf789844
+42d15ac774ae01f4e69ea1c8f26d0133
+42d4a0d0c3ee1a84ebbffd47d36eaa0c
+42d4b31bedae2448192181d8de6ed7ee
+42d97da30fe9fbafe166c6880e1b8135
+42e1c81e6b64c988131b0385cd688e88
+42e43b2953d06508da13d6fb80113e26
+42e4e46f14c8f98b060efab7dc996708
+42e61acb78106006fdc69e7d4efbb8b8
+42e70e85460efb4b486ffd0569f67cbb
+42e7fdc589c7bdb33197decfca641085
+42ea6890b142498a1f178657a198d0a4
+42ee610ae52f808f329369cc2ae23c0d
+42f353a43086f44f5c82f7d9a9b17873
+42f42c82208f0ed653b2db9b4b8f376d
+42f7ed3f3e87e6698fa1d039fbaf2053
+42f87159802004adbd7f7bd41c7de6a6
+42f8a1ac92e711710b1ff0d3a6f995b0
+42f8eca4d57c32230a4f0d6f02aa9960
+42fa8dd9d785487c613b298bc43271f8
+4302c9c352012a304484258e9112208c
+430598d4df2e430ef8f2a135359035b0
+4305da77febecb39480fe03c5de71ab5
+430713217a7c78d73f1c6eb89b09f556
+4308307f24dffeb0af08823314328118
+430c0d4d833c604e3f26618929a418c9
+430c52078e492f6284bf4cd522d4e287
+430d383c6f81e0abd7e63b543dd4ffef
+430d4abfaaf329c5a25ed12461303793
+430ec7bd52c54894fa4cd236df95e708
+430f557e319572a0092bd7245adad7b8
+4311848d03843ae124dbb8d153190539
+4312240e8e91b33ed39ca88d892b70e0
+43131e3f9cd25cde859adfd48da33bf8
+431597cf12bffd6f3217f44a6fabf1fb
+43159c4e169466ece09c8d067c44a4dc
+431707a2c4dcc8023a03a51d70407bdb
+43175f3fc31e544a55e77271c9ecf6a9
+4318229341a9adc45dbb4990b82d766a
+4318fa32bce69090a2b0715544d782c6
+431994d191b465f6c9d1a2f8a2010b8e
+431b3455620f6c2998301ded60676b2e
+431d16d731a60ed44ec100befd5704c3
+431e1c3c6a6fa7668db0dabeb52f567b
+431f2609672e1b81e7669b4e767f2f78
+431f93e5a70cb134c36716286ec77470
+4320ddf2c0b21dca6f398908172e3916
+432469a4bdd725527ac11acd6e7155bb
+4324cf094c8ff59203a11454d749a2c0
+432544e2a4ed4abe14840db4c9a8f2c3
+43260bdfc2aec27c4fe0e73f32cdc2f4
+4328168529801aad486486af8567b2cc
+432bc49a69fceb9101add2ad38bd77e7
+432c28ac6aa1d19252d297f52507297a
+432cdd3f2fad54675d12a1718d748583
+432ceece9a3168502cfa0c4120ff1568
+432e8d874f26dc2457df00ffb6de61cd
+4337a84a2895f550ed573fe4a06c591c
+4337ab10259d7cd6e6cbc40ff08a248e
+4338546ebb26db1b28161c313de2fa67
+4339f7945f2adb101c5dc187794ee9fc
+433a11ccd5c183b8aa5351a09ca6f543
+433bea65d0f61db48178419c97ba0aef
+433c5d464d3f954b91a304224345e123
+433d4e3238f2a3582737e27b25c8d49d
+43410bb95ea422454de4a9b76c8a80db
+43411359cf5eebd477815cb9a3d0cdb8
+434415aaf254c5624f86f4e1808363a6
+43441808242986730bff96faa978e13e
+434b58643efe42fdff23508b5b1647b4
+434b71162e76969fed09a9f12cb670c4
+434c84cb70f856023ac7fbcb248c481c
+434e6700ec7058e76811bc6463dd80ab
+434f1675d18625ac22579334527632f0
+434f2f1960f9c3f04aa327bc88f05bb1
+434f70472646c4eac1fd1a01c593e30d
+43512f0682ca39b897a4c3ffe5fa23f9
+435641f35513acac927f0bc6e4d555b1
+43605f812b98e4879c2a90bd971c7c31
+4360cf0eb955412004d2124f083444e9
+43656b87cf770ce024b39806e68bb983
+43659f426e4e19c457a92bd2ed7f5c8c
+43678c023646353ed839acf4ee65864a
+4367a58929b3c431a3fa2ae8bba6b68f
+436cf6dc5619b571fec6e4f6930d228f
+436d21ea6ac9a50f61e370c04cb3753f
+436fbaaa8b6b49ed846e8a99b262149d
+4371b1b49fb6bbed85c29b82620b21f2
+437295b965d9bd2e5b4a821275cf5925
+4372cf766a55674094405d72dff17c15
+437b2f364c54bc59dfc2c96fff319401
+437d2a30e2f8e94d0c519a524b3f6975
+437db62b1872fce224cffc5cc38f3e90
+437fce4e4e217018a5e6c5fcf954c0bb
+43810613de54fb79598f341372621370
+4381159499672dcb6162abf5f0e9768a
+43823309851b8d885c67867273ad6080
+438373ac8c2ac2e1a967b74e856885c7
+43837c5f80a1f9056edf8b89e83f08fb
+438849f382ed8ae7cde9dcc0533e767d
+438a10ced0ab38e1d2907e27ac69a261
+438b47e26ed143470e4e4245d46fb9af
+438dc737a89d9ea66e4662e5f96ed8f2
+438e9a87572338437fae9f5c83326bc1
+438ef0633fd4495b915878184b7ba3b2
+438f1b55fb3c3fa42e240352e5329841
+4390b85b771b5cabbf7bc2bc0f9d305c
+439133d8ed34964ef23a77627d4c9731
+4392febd9f9fef1267cac9753a94651d
+4393429b94c68f3ce7127c909573ba63
+4393608ee40c8b7f5fd5b44a06c1f32c
+4396088db299c8f353815e82d67773af
+43963dcba33a3ce7e3f95d5df3d921ce
+43981ce78ccf46a0ccf9f8e826461a30
+4398f5ae7ea20cc7444211cf23cbcfae
+439aa12386f51cbcca9e6e8bece7f81d
+439bfd6790085495a0e8b58bfaebd962
+439c513c213c528821539a9f08de8ff6
+439d77db56ae4821b2328b3257a3e44d
+439d9c045c03fc558c04684b3fea4d4c
+439e0ecbec7eae3354bd73f6f16e7d42
+439e6983366813b65357e273f424a60a
+439fef7ee5267773fb4a4a2c264e8c08
+43a0e2ce28b8f26e9628b706f0039f6b
+43a221c59352e5c4ed9b84085250487e
+43a6fb07cc4e158ea48b3aa06abf5955
+43a70ad9194fc0425529e5abe9845e9c
+43a9e18f2054aeafc8145a7efaf16c56
+43acc7447b2d869396a529969910d450
+43aeaecad4573b6f4e6cd034808c89a6
+43b1a07f3b558a8dc2e19b65f8667f48
+43b3c5e7e2dba357c4b786c08d447327
+43b642aa8bedb44ba32c20df225d4db5
+43b6c80c688abc615d091b03223517b6
+43b8199eead6d7521b8d3824325652db
+43b891c9854d1a09435dd49172497073
+43ba59b80aff5e9b50c6ab72173a1ba8
+43bbb50f3a3704870c05f608945fa4ea
+43bcd47204c77586a115001dd7e7c234
+43bd2a235d01fbe2358668ff58549e7e
+43bd92427192b48a6f0ef6b59f5a41a5
+43be2baaa1490ec8873d39bf9d309a6d
+43c12cd86cb5aa5ef999bae74b7aa013
+43c19ca7c047a86e215f3d719e95952f
+43c2c8747416df4227b9359721160f8e
+43c3808a1c96f07c94daa14d5832f858
+43c3a898f8be2d3079916bdac660d5a7
+43c3ca858f9f35ea701c88ab1e03998b
+43c3cb5cd64da06adf27886b4d5d0a04
+43c49b03ce3dabbc004bdab35c5810a7
+43c4bb45838e56fc48f1fe1d5e9f719f
+43c67d7098b7c0c172363d8efc598ca9
+43c84636144af3849713105a0566f34c
+43c85ff3ab172f71e2f479bc91a6a64b
+43c8642468fa77f61233eebc4975086f
+43c8a41dcf09c1dc4e8bfb2fe48f6fa4
+43c9a41b169ab70902809ba30d23e259
+43caee33cf78e050975c12f8e839644a
+43cd401442da64ab6ddb4f9def6e93de
+43ce86defb0e4695170cb5e40c78bc32
+43ceaad8f7eb15d996e36d0a1d3d5f3a
+43d30cd20fa289bc23007ac1ec52d24a
+43d360ec4148728021a3d815f771c768
+43d3dfe688085fe054dbc128d83d378c
+43d412294cae90894af97d603a979951
+43d9afcbaa31c297b7c5fb679ee1dfdc
+43dac02bcc00fe8ab16d8e1b5a8f846c
+43ddfe870f096c8f448a9b142e2f055c
+43deacc6bb829fd341fae0db04ce3fd3
+43e5411df4d6a90192ac3e77619700b7
+43e7361b61c2174d0365c5c544c1f78a
+43e904df0640d6b9d0bdf07c55d5fccd
+43e9b1b9ba69640bb8878701f5533178
+43eb4b1fa083083ac0244c7424953e78
+43ec31606e03577a20757a7e5db6758d
+43ecb168d20ded1062257f6c4022b3e5
+43eebaa289d008202f4b529978876a28
+43f18d061a871ed820c7e6aa0b122f4a
+43f26f2f2525c241cf3ab6c88c335919
+43f500f3ee6b712929b212fb86d8ec65
+43f5d1d3068d8215b150e7933daf018e
+43f8fdab9ea3cbe4721e1b208019a7b4
+43f90d8b8e9eac5060d18a785a8124b8
+43fb628fff034e92aad9456ec92c8246
+43fe9596ba644eb026e5397501f82b37
+4400134a41a304c28c191ed89a96dbd8
+44004addeda0749e5c4d10865b3e1516
+4400aeab5b6f43f3c94fdfe0a64475bd
+440124d8176b7a7a88689f4b73b03ebf
+44097c21fb5244e7923ef50e31e13ee3
+440c173d5892a0d031ad9e70ba9d1cab
+440c917d2bd17fada341ab09771286a4
+440e465410205695776dabe27ea2f74d
+440ed9cff2a5a18bc36479465e172b44
+440f40c4fc6f6013a799f8d8d0ce5053
+441204002d5b67030ab89cbdb2fbb898
+4413510ffc9d96b21f748ac82cd74d23
+44135a0ee35d6bc613e4f5b293aa9ede
+4413a6e8c2ec51d0a87197e7a435b14d
+4413e1db88f5dc906138b87227002cbc
+4414649f7d2e0d782fe5ae486afc13e1
+44148a43ff011633754960b70f07d939
+4414c0de617d249e03823ba8a1ad0165
+44155ec72fa694c0643308e3f04008e9
+4417553d47df2fb06e2cbf506418c0fa
+441c9b363ca186581f27de662be49357
+4420cc90691128a89414c8182fc7e049
+4420d501d0bd1c0bf0056cb2e8803c62
+4421d5a4e307ccf31ce7128b466d62f7
+442252b9fb9a7433446bf68154325838
+442695ce9e03f9281293a47f291fc127
+4426d3f7143afcf41e15a7e1f2c69dff
+4428e36d05eee60c8c3e2f934b475544
+442cd20f020e8ea6629c01b0758bc6bb
+442d9d1f3c437524a42c430d54da9ad3
+442dc5def61f05b9a111925631368a5a
+4432931465013262ce4b85e918d8197f
+4432baaaf21cab35f667862d57cc1f72
+4434205dca9ba653b406f3583aa121d9
+44345babc95f04c3684a844d679292c2
+4438214602af1aa9f5299f3ade2873a6
+44391bf5e4d8dbc287404dac68c600c6
+443946ea99ca12def045d4a5887340f6
+4439d10502e3844b15bd440848cd5d44
+443a6b1e66608e76ee4fe65d4c260704
+443d0f4b5a323ce224ff332e972fe35c
+4442455034f954ee036a39d996cd62e1
+444279564c55565e12711364cc58f49f
+4444e1cd1439170be9f59e808f366387
+444845b21866042c5ef6028e5225750a
+444a927884777a8b39d441fe3c89b8f2
+444c869dc3906d98a15cfeb2b7c04aaf
+444daf575c25615cf5adb9eac5cb9950
+444fe0202e5698467228fe332e11aed2
+4450e51a64adb6b6b20562744874a370
+445267742e565148d298ee911dac7621
+44574bf104cd206dde9a39a527425974
+4458e3c3b2d2f79752a011fabb8a53f3
+4458f678471ae0bfaff0ad7e253be632
+4459a2070d6980791debd3d79e5d9d54
+445ba1f65267807328cebc56c16ee6f4
+445d07ae80ebd3577262ca0135ef8dfe
+445fb82d2c79d8f865f163c4ee4a3338
+44610fa000a8419f62c7af19b8054830
+44621958f89f71b726ec6781748698ae
+4463576db582b91bfcfd798c37646b3e
+44638cabaeb0ff2dd03b3e596e0df515
+4464254aa50708f31386fd639c81f1b4
+44684c59da1a5aef70787175b96ee73d
+4468f3c5a0802550c15a1b0bee92c575
+4469084ed10c817a215c6521f06d34fe
+446ad7900eb8c58b1aeae50d0a8b51f1
+446c26767b10dc9e510662bbf217801f
+446ed1548cb3de2693343b51e35946e8
+446f833d98f34ca97e82d21ecf564a3b
+446fb11a864d5cde75d4c4ac058a46ab
+44707ecf8747217619c3eeab4efe1335
+4470c1f88c9040b8af798e8544349d14
+447348da2ab19f5c7404b6d5230c8c64
+44741f10a39b3f7224565d5bfa5c1ebb
+44766338ec43f62494201a7aaf11b1b2
+4479503adcd1626ef98dc7a141400a9c
+447a1bd4f8749d887bf8f88bb357f5ed
+447a56bc0a43fc1a75044e5f53b28472
+447ba3e3ddae789f477ccb69e2b8d6fa
+447f2158c1c0c781884cd2b18f43c3ba
+4480039d40a0ec153819a6cc4a04c292
+4480b3f3656465fce2eebf6a5a59a80a
+4480f3e08a9ad4c01675cf6b54fcf91b
+448175e8e6179c8f14a7519b19d4fe54
+4481c0399bbedd5ae07f5d5d430ffb71
+44838e49c54080c831d17ea06f16a29f
+448662e87a32ec62d9627a5f747f64af
+4488d62f487094c1cd7a1f1227b51b00
+448a55731795e17b004e766e2f47a6e0
+448d5af09adce70d5c3d4c46ea147a69
+448d6f0355a0b728eeaa26181f0cd753
+448d99687baf4baa9c2830fec339c55b
+449388b9efaefa176a39329ff23fd19e
+4495d822e3a87c5b79f21032586c42e7
+44984bb1522544ae4cdfe8999bb36bfe
+449a50cb81f60ca19cd37a3cf6f40bb3
+449b59b1f237786cb951d6877f505fb3
+449c907511463142f7d8275be8648017
+449caffcf0331486c8df5d491593e0e8
+44a17c9ab9116efcff4d280bb803c78f
+44a18d16acd5abae0004afd48343c972
+44a19cbce7f471b683978384bcfc32c9
+44a20aa1def9395475b5f1e3b090b28d
+44a31ba21d52b17655ab3949da7333e0
+44a474a1705048a996f14ec9f96e1858
+44a533e90428d80eeb5e7b84bae5ed28
+44a737536345c3834351dc4e4a34828a
+44ac7e0a10c22d163bc0dfe1fb3700f5
+44aea46d57e6bfcc4a05ef32b8926564
+44aeef8e354166d2d8a730802c00e6cb
+44afeec9a6b16cf5c3d9245647868b8d
+44b25c3f05604c9053c382328c18fb49
+44b2b95a636f84f8310962da229f2d6c
+44b2bace50624232924de7a7f275c5da
+44b2c51e2129795af200b76de1354d6b
+44b50efae9fdbf86c0315f2978821617
+44b5ee0649dfbba1f51965e557e4db70
+44b61d1cc831cc8b840c5de76fe2f6c0
+44b7a53ff264a6452af3ef5330323b23
+44bb167fa464c8cea4182ff829ad593d
+44bbf9ff10311812ac9cb9d4a14778bf
+44be1420e7b8bd926b39855518954c3a
+44bf632795fa9a2000da59060453be98
+44bf6cec77179544f22d7f15d6a187ff
+44bf83dbb839468a9e60655b2f6ee649
+44c24036368765e60c980e062dabe4fc
+44c31b486539e1946a531470055934d4
+44c496474333968989d2404add15ba8f
+44c84902f9739f55947bec0caf314e3d
+44c8878b0b2c4709a9af132ccd3d7703
+44ca0de4836719f188e5a20b641c2009
+44ca1b7c43f5828c7c13c4b786ad4f2d
+44cf2a16bde86f1f7fba1f0c33e3b432
+44cf390b70b376ff8c3dfba6c40f558a
+44cf50fdd8a06f4e5381ba0d7c324793
+44d0cd9ce7413eb3a1472e94014cbd82
+44d177514560dcf6ed37c67db9d85cad
+44d2395e28ef51de4ed1ab91ccf2b05b
+44d25c626e92c0ce998c134d30367ca9
+44d4232b99207587ecb426993407ed1f
+44d4a06f15e6fe4d3854a7ea92231c30
+44d4f0f6808a22ad71275890fa0b4838
+44d536fbe05e6c2ac7eb5da600f6699f
+44d65013c96e605af4f986f3ffab5d38
+44db457435cd0c8a95ec022bed430d0a
+44dccbfd3e4e744d6ece4af55276db1f
+44e0100588a048769208803229c67354
+44e044a5820c3d29ab5be5c13ecfe943
+44e57a86c47d103c77b9e513848c5d9a
+44e5bf503c43d1c1b2c0f849e62ca521
+44e9a43565593e4e73869a5d43f9c606
+44eb4e53cded2adbf129967ddc569538
+44eb5476928c0aa716b0727375e98086
+44ec00115933efd9c66b18b57e486262
+44edabf040b39b61fbaab490389722ba
+44eec755ab157adbf5d8f2cd00091274
+44ef03f54a60366f14e50c32617f3cf0
+44f129086d532b15719f079a0364c13d
+44f2acfb09ecdb6c44971398c0cee70c
+44f335d4b815f06c86811be7ad241333
+44f3d49cb46188360ede2c926831a9c6
+44f3ddc04b39e4e9d365b1c753b4747a
+44f5397671eddbbdc626cb99bf9de924
+44f80c5c67e63167705862f7d08833aa
+44f8617073f5a0bb44dade9677eae4dc
+44fa568781df1d125120ecec9224eabb
+44fa60c30f3240e6be272fcfac574a30
+44fad5229781ea15f7a97e5d9896d77c
+44fbb4c014ec70a3f3f1b6fc03d10e22
+44fc0289db0af4311672c3ae4eac601c
+44fe3736372b3e0ef0ae84bd44700f09
+45004d5b117d1904f77aac3c89db3027
+45017254704dd17b0c3fa6823f72a9d9
+450193ba3dfb13ce3387de6a6be294e1
+4501ad15ab43b8d32754a05a553c773c
+4503c53684e7783a8ad8efc15f332d81
+4504033d4292fdb45a6f92daa9551276
+4504999d921c9308e1b7b3acc596acf0
+4505b885e21e31cee20f9f2dbcd521ea
+4505e90877710b386ebe8f0e32fc7917
+45061f46b063171e7bfcbab7794118db
+45088cbb325573a300eb89869c404488
+450d1f5343489b9dcbe9dbf6d45cea34
+4510601d673ff508535219115c57e071
+451181f39cdc91708566fe4073b7f174
+451216c650d384a96b7617749ec08b6e
+4515e1a3918f66efd3f58a2519b57695
+451649cfc3ebe98e30491242a65a641c
+45172f36b0e4a0333f7a8b53fd600e2e
+45179d9f9d2568d614aa317459db6dee
+4517b70132dfe193615340d253e39b5d
+4518aff2908d63acb7b75a0616f3f0f5
+4519dd06e5371f37409c093efaf1a28a
+451b135443d1db76f04108524006b6e1
+451b8aa03b76f0610fae4d201299c4f4
+451cfaf82d748da1064c67cada458cca
+451d7de10e24f782f2f39fb8e2b816e5
+451e234378b1ee825577ae4523f13166
+451e256740fa9aa45cd8264dae3045a5
+4521e755df9d4459e587f34a69c559e2
+4522a2b70cd4a97474dbba2657f41bc5
+452379a09a5da894fa155e470e8c8a50
+45243a4dfe771ae5fc4ac11107673d14
+45243f170e9fbba7c8707baf4183b0c8
+45256f44d10bcc9e7e9b2a695b9afaa7
+45261de9d3bd63fa73156f089afd511f
+4527dea32a84d534f4bf2a7a4f87f9a8
+452dbfd811db13c04644d7119c02df89
+452ed45592b0e8a3b6e1aa5c81c46b3b
+45309e2d262e5801361aa205874fc29f
+453126de9107b0905e24096be27c070c
+453b4600c4ece261e0ef33ddadad8de0
+453c8f31907498b714ddd931691b1d77
+453ee68241357ecb070b5e57695a8e95
+453f6fa7ef70537d6ca9dfda03d1c99d
+453fde836f45f6ac4a173e004590e67f
+4540fe8437406ab045e89ab45c9fb70f
+4546727252bf58f4ce4a368cc51875f5
+4549a269439544595c9961257b5a9dd9
+454be8cdc27968096eee0e7f90acffcc
+454ce30a8392666e072e9dda5ce7db17
+454e74777761111b10d605bf77d91d4c
+454f59304819bc979315f9f4c4e45350
+4550e62e0258660cbafa88eaec12fefb
+4551130561cc77e416f086c4688eec31
+4556621ce62fe0ca6eeda2dd7496124a
+4557e835d62267fc8f037ae5079f4650
+4558c641343fe2127f6a9bafd1e6e156
+4558d7f1fcdf10e800c58e0f973d0448
+4559b3e547d0bf48f7343d454cc559c1
+455b5407ca36ad15ffacd6dcbb9bdb4b
+455bcf54758c554bf48093fb9be7a4ba
+45633d9660012d45df31170235ebd896
+4563ff689b0b986846c4fc79bbef7dea
+45677e37346d859c18e61f024497fd4f
+4567bd9a2388ce4e274922b547597a28
+4569b45bb9295f3810bd0b00daa0bea0
+456b28e609d2f3f127887bc2e55e5692
+456f11823d95b967c25c9af33c2c4968
+45713d40feebf7e487c5007ce529f156
+4573d4488727cccde5f9364a200f5817
+45740324146635c69ff18a8fd7a03360
+4577786aa9f49dc3933cbb10f8ecb229
+45780b4cc344dc94da21882e8ccd501d
+457b84157c97fc0ed12ab5c849c3f4ff
+457ccd66ffe0f5e3678e482fa24318fc
+4582226d784e64d9863974ec0a327352
+45843aed44f0107405f1bcabfd24302a
+458592896cd20368fc2d138999207788
+4586f65df73fc7c71c26c35730ce8d47
+45877c11c2190418c40893f5e9924e06
+4589fb0485f7b73dbe8e5eef306f51fc
+458c20a11fc24f19be2bf57c639e4678
+458c4be810ef38702f5183f54b7363ea
+458c779f4e87400ff156c81e982c0e21
+458c7f272e2febfa1024dddfeaa8069b
+458cff25882632c63a763a1521d8c0f2
+458e759663382ec23676c5be0c39d1f6
+458f2ed84881e8e17c849c34f1ef87d4
+459172261049b16fffa7675654723b98
+4594f29588689ed2a192adeed7eaf437
+45969b43dcbbdb0091b176ef28b13019
+45972dc3a359d73d95834bfe9a703c66
+45977bd7ff53bab044fa89483a89fde4
+4597d60f32f3483f04b10e190424d669
+4598cdd9f0d1667491a23630fca9b28b
+459a577a90c09131ad3832bfca60dc1a
+459b2de201352aecfa63352fd85c6b7f
+459c6069f8430ff275565237b52ca9bb
+459d574dfaa6c5773af3067f0765127b
+459e5b8e44a4b842507e73687a230ed3
+459ef70b58c51b102846812933a3e79e
+45a1dfc26ca0e78058693cb80f6e7b36
+45a4c388512a3a1efb0d7d122244a204
+45a61502936314dd2fefe089580279d6
+45a7fa8d771de60f6a1aab021cfbd19d
+45a820cba54f5799902b025d69f1a04f
+45a8aa042d7599ab44166da01fcacc38
+45a969aba8d88304649acb52c61a94ab
+45a9b5dc18237b48d8070fbde50c9220
+45ada1dd8b2ac2293b7df9a6e277c6ee
+45ae078abb4fdb68af99c4c78e27871f
+45b0f8119d312778ccfa889718ed4fca
+45b2ef614ca475ad65d251eaded321bd
+45b36f1c559e8ae7d7824e8708627ef0
+45b3ab06f316a83877c2707a4679f4b1
+45b48c0077e7c1c1eead2f946aedd2b2
+45b80490131493fe8ecb43e9774d2727
+45b8e70fac8dfd09ffa0788fc75b244b
+45b9d62389bbc0960c8715f23213d539
+45babd8b33e12a7bcad2dd39f13ea3fc
+45bc167a1670454fa84f0f7a243825d4
+45bc5b0724254f977cda3dd4b5f55be6
+45be6d402dd757bf4093373966e90fbc
+45bf3aedf52e993154cd889d982feb2c
+45c1b6c1322b1687e229981026bee6a1
+45c33bbeae7a685c908b6a6ff165a35a
+45c37542fc32a2f80a81e0ebd26025fe
+45c5d81f0b4e0a55e1cabaa80b28e679
+45c6443c0758657571209908b192ab95
+45c7f397f2b20bd47778cda5f3269313
+45c811c490d6f0e377246184a518169a
+45c9e92a1e8e6e63e629f55db54b80c8
+45cab5a5813166af59e4bd839207ca6d
+45cb18df394fd3ce9385b7cdccae6d5f
+45d0f2acd5c5fb8ae9358529893c9271
+45d2e4fa8a501bafeb5287f0f1f953c9
+45d545dcdf7cd7ef52b0909a0f262ca4
+45d6524f92876ec69d1e5e8c598cd4f3
+45d6a8e3ce2481750ac4914c918c37fb
+45d8597673b346d79375acb9b1c6811c
+45d867161252779f3edd5c09a164c84f
+45d9e78d3c5a1488fd02dd429e54b676
+45db12a392285b2a79a00610ade30c4e
+45db2579c0495ef7b88862ba3e0ac03f
+45dc3db77914e2e81f45aa94e46bbf62
+45dfbcf1a239755f567a9e618116dc0a
+45e0030b9949a556369a52d150d26f54
+45e07749d9fc60cb0be3b9a609d62547
+45e0c5d3916ed493f7cc425acc005905
+45e4d257c22b1c9ef272ea393999c3c3
+45e5278727ceb349c9774a6570c078db
+45e7adc888b33cb12eca02322b5b67dd
+45e9ff8241cfcb49f1bf368e7a76a28d
+45ead397ce775f6b4bb90be1f663bf4b
+45ec0d06cabb5a7eb61a0fd853e612b0
+45ed26ff43beaed41607ecee5ed0a273
+45ed9973ae7f0678e69bc490cf525e53
+45ee95a1868e5f019ddddc12ba7a50cb
+45eed5aa339112855d93797dfaee5be3
+45ef807d604cec1b99dc16f10abd6e3e
+45efbe27f7faeb6db67dadf1fdc69f55
+45f0b45bf8b8b544197ea131d3111705
+45f2d159ca972fece5e3b581a6557ad0
+45f357126fa3c0d301d7333c648c2999
+45f36bf149298c20f297977e8bf2587c
+45f47ab2142af78e907c6c8f14cc5a04
+45f48f531c97cd4e710c200faf13f9db
+45fd4a9500be6983ebbcb31c1d0767a7
+45fe47291d263d4718c8f87e32318796
+460006099388cce4b59e537684095cae
+46088d233fe1e552a8bdf763ce4f9a78
+4609632c32f5d9dee560663b692dab6a
+460a6e2fccc860fbef2bdf4b6d411cb8
+460b23c558bd5de51a662bed74e06c2b
+460cf6ec226f1e9fea22a96886835b99
+4612b88c55923fae4a5c4b3e4df28b96
+4612de8266d01d5393d190ea56b8653d
+4612f1630dd38d046f341dac6fcbdf7a
+4615badb3dd26558d3733ced18f3f255
+4616f84b4811c44f70d5511992dc7b74
+4619b08f6a9d60819df27771bcf894a1
+461aeebdb8f08a7e4a1ca94c99da3301
+461ddf8fe66281dc1a5eac161118c1f8
+462094a0ffc3e678e4c63f844318cee0
+46209cee8500734d04c3dc12c859f741
+46236973ee9ffa55e35e7fbfb2bcedb5
+4624456b3b4ebe4da8424b939da584d6
+46277dbd8beba3289a45fffcffecb810
+46285254ed48704333a627c0dd20fc27
+4629f105f5f793945935876c1d17cdc7
+462c642ccd7e9022a8d75b6fa91b3383
+462de91638f89d5a624af04af4c05eec
+4631b9cdbd1e343c728db951a9f2e38f
+4635147bcc5ab5528cb00991681edff9
+4635c6451431d2aefda66e42aa47d29d
+4635fb65617564312a317aaabda4b1c7
+46391a017471ffe034428862097fde6d
+463937feb81c81ee1c4b3677947fa280
+463b13da544f0e7495c9fb2b51acd1cd
+463b43358ab91f43220c5ec2e319982e
+463f8961842974a8a2f16d3665ba809b
+4642eb64fc499858116c1cec40791233
+4645a4ea725050f4bb17440803c1c5eb
+46473a8fc8c5174a9f3a1ddc83d10cd1
+4648988abbc3433a5d1390ad253b3b13
+464948eff059a094c27cf540e6afe526
+464ab430aa003cb46cd22902cbdb2f2f
+464bb77f33ff7e1a38e7ee1f0a8269c9
+464d13695e6d540f32ed54cee2bbecb1
+464e69973404f7c123efe3956b46a8ac
+464fe9cee3b77c84519ac4b8c1650aab
+465129cf6b1de2f3c681504c90f10721
+46519b2991b0db8f6714b5082231c06f
+46521738d0320dc5bc11ef30d785c910
+465256714140eb1e2882c775f1b8857e
+4655c036c2ac0cc012562c8ae00a174a
+465637dfaab56b8c9c1028923b081f8e
+4659de97a8b9e648317a2edac9a2ac76
+465cd614f46725cb6e52a09a3a160b1e
+465d692274c2d0b908fcd64825d6b4d5
+465e9119778e651b72aba5eb7683e5fc
+465fd9067564a3f1cedef6c1d0c73b8b
+466130509010a6bdd4b7c2e1d333027d
+4664c9dec5a43f15590f3367b71d103c
+4665219fd8480018bc3999cd4d6946e3
+4665ebf0d93852120766d57250fc032f
+4666a738eac94407d2191d6b6c198377
+4668657d12ede34cf5f1be439a179a5e
+466ca353c78a05da085d107914a6c37d
+466e26e2b6f4361cfbeb920dbf44b7c3
+466f71aa284268708f03e269585252cc
+466fb71e646deed652ff72762004a91c
+467300416ab302407fbff3a3a457a797
+46747f6d4dc02ce9b05582a5c5b13a01
+46783380c6c6fa5868ba15e5ee3ec3b4
+4678ae4647367840f13c9650e27a5240
+467a0a8d6f95905d688b124b6daa969a
+467b64cf30be3816be17619c6a77057b
+467c09efaa7e0c09f5888a4f944815cb
+467d296699d2721648736870c44510c8
+467d314043a983fe5111553a69348874
+467e284a00c60953e482908d3054af9b
+467fb49413b6af1b64c0ff26d99bd981
+467fed971fbd81f1ef3d06602c53cea8
+4680be69fc88dae9c7a4f3a997150a98
+4682dad548bedf7420033aa256601a5b
+46832707be2f3f6f18a0c13b93ba3b26
+4683b472db37d6027884780923899d8e
+4683bc943ecdaedb777b6a4d72a10f8f
+4689ba89654509bc3c0b964e1842c1cd
+468c2ee2f11e29bdec9f1f6ee09de1de
+468c6b41d5706d0934bb4af48225890d
+468e729086d947d3c81647c064720a09
+468ea3412ed89e434a929293d4f1eade
+468ec3a5fa92d7b373076122fa1b7abc
+468f62df06db6d227a7928994a752444
+468fae7ceb6c9f3b44bcd908c52cd06e
+468fbc216722c8be8a4183f7b8d47cc6
+4690609a0c86d83ed90063b2cd387df5
+46907e3747b9de46fd0a20f8ffe996ad
+46916e333b002285dd3b76e8bdd89633
+4691c8c972874acdf9c0128544180c18
+4692d1e0a516cd4732c8cbf5f4422eae
+4692eac475e44de63727430b6cdb37aa
+469422b36a6e63737debf1ac288b087b
+4695e93ea91863364082d3a6507a4cdd
+4698a90d8af43d76d0434f2fe7ad034f
+469daf5308179fc545aa52aa9b88d046
+46a25332c596b83ceeefdbc6e77c4d48
+46a2f15bfe8b2e7d8eca525e9b9bda20
+46a336c0cce8da8cd58a0f11772549fa
+46a4f4908f1d165d3bdc0ab20a9b4dc1
+46a56400fe48912ee574fd0851a66c5c
+46a61b22ec33934b53f01bc55eea4f21
+46a770748777efd51f0aaa73aef603d7
+46a80ced56261e250f7f57e385e378f9
+46a8fe453332f65ef9042c6040841284
+46a97696580854d09040720ad2494969
+46a999b8bb1ac342c19f667eaa2c8e69
+46a9aa0faa23aee2f8004ecfbfa7e7f0
+46ab08a0c95da92f6af872ef46ca8fad
+46ac82126c721feea1f313bcad970b7b
+46af1751d1172d31ab88e50f9657438b
+46afa208083d609c936398370208137f
+46b0a098d347ffeef33d5abae67a870b
+46b53e642241b29ac1bd951b7519bc5f
+46b598e6c09e2e0bd13bf7e40b2a4b6e
+46b638d91a75881cf259ca615687f78e
+46b6c913cb5b0f8081c96f9ed16f06ec
+46b7eb0069c34b5f32a1c1d039f0888f
+46b8682a15f0fe3147f163e2452dd597
+46ba003f3e30d2dc8e3f624120c9a35b
+46bb372aa7f28f10b37e0933bb59ce7d
+46bb7c01864b09221586ea9cf69ff2d4
+46bc59720fb5bb6a03687a56ad924424
+46bd4b2de72f6c396e914b56f81094a5
+46bec85a900423ab4bc30109cb9ae494
+46c070f3c65f16daf74d91f481c1d1b1
+46c302b9e7783ba91e5d323c07d85806
+46c3b7a6ccb316cf779ac881df2e3ae9
+46c3d5db7c22343bd1aa06a40431f455
+46c5f526109df13dd3f848065c9d9a51
+46c6bfdab84ac9e0710bad5ebf5dc815
+46c7e27989277ef9c3dbe2460e106f5f
+46cae35be29f7dcfedfb50a8003f7e26
+46cb9380cb21ac41b3d129f9e8891ea9
+46cc36bef089ced341446c2abdb0e37d
+46ccc3aae8d41df82cf4d9776e74007b
+46ccf323a1914df94d5453d3222a305f
+46cddc64fdfdb640497d43669b588422
+46d32fac19a6c5c4880ed19ce57e6faa
+46d36114e5d892d9269ab00f4f650f5a
+46d48bbc04ddda5a154613ad8676b5c4
+46d4c67125ba1fe718cbb8e444c4a583
+46d6c9fcc4a99080d755a4e41087d6d9
+46dab7d2ce3dcae20935d972e18776d5
+46dce2f1fff840849338cf4ee6da370e
+46dd2e736a3a6aa8509e86aebdc69309
+46e27bda1271ff42de833a7fca9c7dd9
+46e30de98a8cb4283651aa8531720fe0
+46e57c4f79dcffd3df62aa4f5e27e8c9
+46e6e149de34b15a8bc46cb6fe1ee2df
+46ea111d7ba52e0a5140d8d3cb4c418e
+46ec8ae78ea8ec9a87477a9a1509f356
+46ed5439b9b24c8e3e4857fc45472185
+46ee0f72266b1c86eee0c7152a880a82
+46ef5559ae123a43b8d4048ada6f1d01
+46efaf56b959892ab63bab0f38c84a1d
+46f1aa877b0f11e8c389b752c40a3d65
+46f1acad8cdbc7abb403df9dcf3f0799
+46f25128a4f7a4f2f7ab7a9221fd260b
+46f2cabcbde0f06f3d8fd217851ba8d0
+46fac0544e9d515098fa7285c74cfc9f
+46fbf3331347095cc096754539976afc
+46fce2081322010b5a284b2b6b243ff3
+46feaf33f06e88f668efd1a178fd3090
+47036e3eb188bd0e7f96400fb723e200
+4704325bae6f7b896ceba4a8e9cdca5f
+4705876937f77a2ca8bbd13aceb013da
+4708efee58d6c7729c0a66febbf39928
+4709f97c6e9e9e000834b242fb8994e3
+470b0d6ff9dfb5c93728db71f3a1a860
+470b4778c30c655b729afc3c01bea8f3
+470bcdb3d8ac8b4e7bfa4da8f6db7326
+470c6e1cc5737b60b0b62c3d7d181b93
+470d6c1305f23a78354215abec126ab5
+470fb475339fff90b89474ee3e7d4d23
+4710497acea44a379727775d4f076e0e
+471281cd0a687b4a24104137a117d698
+47195a883033cd4f510f35b02fd5bfea
+4719c6897161adaf112cdcc5d21b69ac
+471a0562ae4fda1174921273aec5fcf3
+471aed025bb7b36cdefd161a3d498632
+471b52494fcf020f42f5c7bee7c2a9f9
+471d5623034d60487a3980a676c1e02c
+471d906f41f6267a4de253b8167161fe
+471e1087358b5aee93736c3a4521d682
+47207b991c4a536908dca1f1002984f5
+4721adf0bcadb82b401bb3323b51c2b5
+472229e6288a08cdfe861b166a3e9d94
+4722ce54964c6a12baf46356101a53cc
+4729e6616dfe0db8113202337628daa6
+472ca3d3b145e6ceb9934c0242f6e8ea
+472cba040aa09a03cd7751acafa5e41f
+472cf2000130f8a77e3b4de2265facdc
+472ea38a6ea8b937b2b957356faeb06f
+472eb1b0e2872a7fb640cf4458606413
+47308d6435df28cf147327d0133f9371
+47319e8f31483f99b93643760b370db5
+47342fcb9583ba20c9c7a57ad068cb84
+4735eab6dde8e08adfae258b6ee4e73f
+473b351edbf35f4b6bbd1619f5e03f12
+473c57f1cb2f656a414bdd356ef4e5af
+473c81793ee6eed1f25673a7006cfe70
+473cfbee0ab70bd4119651b67840b976
+473dfe82d654758cfe657d9061bd6343
+4740187409b2e5a7163dab602dde963c
+47432277bd7671f8a4486af6079c404c
+4744454ec7a7bc79afddd0b55d4214e6
+4744d72923371afc163762ff622acae8
+4744e57feae8899ccabb5b64df28a77c
+474595358b86f93dffa0f84bde31c7dc
+47478b25e22d9d4fb061989d2ae0bb18
+474b5424c7b97f3c15f40358e810042c
+474b60bb7b373e01376eeccd76abd439
+474c6b76e438e14227be81d7fc68d0be
+475153a8e8bdb223f44e9645bc533243
+4751f6f2f22bf9e2869c193bd881a78d
+4753faba4dac0e32ef63865a7b21507a
+47547e4c1ec13728ab4a2ec4e73cf483
+4754de24180da3a6652260e9df8f8ee0
+4755074c0230385403513529593e7585
+47561618143d3d1713f25bd61446c39f
+4756a0945fe4252fbbf00d9cfac5886c
+47570bd9bb629541ac60281a28050a04
+4757e623c00e0a5aa0a4c1160c43064e
+475895e9e85eb08ea70adcf767881be8
+475a542e75c66c16764c7dde959a179f
+475ab110fbb065f725a2e3245e1b3913
+475ca0f147f65ccf9f4f1d6a311e5beb
+475d539980ee664aa14fbf6ad2741b63
+475d921ff6eb9d0795a2a87ee06ee720
+475d94075a513bb0a25256b48334ca87
+475d96ab99de8c33a0e8f8854b714548
+475ea7c0d0b0bb100e4ac1e8431cc578
+475ed87f627026c0e40da3fea32d7169
+475f3e17a11d8ca1b4212802eb665cb7
+475fcd63b1ef20c79b2cd5ded67b37fa
+4760e0349237ab1566b2ccaf1cb41cfa
+476448dec03bbe849a5b89de7b8c545c
+47651d15f6d17dec7cda9ef2cf4eea42
+476546fe28f4c1768088e9d1e2ae0686
+47677abeb07f8006c13b2e8d954ed8b6
+4768c7cdcdadf443ef9f634bcc5a953b
+476bc4309ca662ce565362f5af7b1c75
+476bd4ab719942a358524dfa057493d8
+476bfbbd630829bda9400c4f77db1434
+476ea5205f1e6380a58a6df08c09fd16
+4770e684ecde467d17232341a0977bdc
+4771115cdd6a5cee3f4c97abe3818b5b
+47716cff18857a44c141168d141e14f6
+4773c38157fe6efef0e6b137907bc754
+4774b7ff4969f472854e4fae4d3a6cac
+4775dc9069682fa94b47f7c46d1d28a4
+47778e2338a215d38c70d958b0fa71c2
+477c0d72f8bc5327f100d7a8219d335f
+477dcc1fe9932357abcc6cfef723c0d8
+477e393aec99d4146bd0e5b4f8efd151
+477f1609629dd7944ed97671c27a1cbf
+4782796c8abde35b98544fda9b56f0df
+478564ed0e760d108096aa8b520518d6
+47863d6d8f34acecc5d057d922972c8a
+47867584869ff8b710bd87aaa26b792d
+478676863a3d40c3852d45ce1ffef4de
+478a666d64da8c5973cb2eb5609807f9
+478bac549ba7eb9874aa3af571f57501
+478c1199bed0cd1850ce66b77ce2190d
+478d4ccaa1d29478275582520869c8b9
+47905c017c59605a229a85d02340f301
+47922ab1cfc7c82ac8ee4829b2900f43
+479327a3fe931bd0ff96f4c314117f1b
+47932e30f4daac1e83cf2675f079939b
+4795d3aba6620a72c9ac0fd03d3d3a31
+47969d40bdc03d53362aef9fe3a8789e
+4798375b0d2c3a2b0c0a277de68a47e6
+4798fd9b17a5419340306a10991c82b1
+4799b7d59476f9e734165ac75dd3f722
+479ac6a04e557f86bc9dd1abe80ed4ba
+479de4474e4d624851da8b53254a89ac
+479ef932e59b116b51651cbd65695318
+479f9e2fc9bf6066197568eb55a2ecfa
+479fc6c8bf9812d21f82c5a13565d6fd
+47a04a404c1dc41a45b9c9eaa0bac240
+47a06a5af1038a033ec6fb196afb8662
+47a114af1805f7af1d592fc9ee3baf9e
+47a270ae0149cf2bde4aac0d1bc51aeb
+47a2a6e283edda57ce0b735e7c2292d4
+47a3440afd24e081be3cdab031721602
+47a344ca5ece622e093001c7ca25d19f
+47a3ef8c4162c10e544677963aee5d57
+47a462ad799cc053fd2ea9f00fceb8f4
+47a505ae0d8f28b6174a1bf41064883e
+47aac651666aa779ad3672e45c8162e4
+47ac7a74efeb6d524153043aacf8dec5
+47ad8e7c0fe59067e8cbac46668b0b1e
+47ae25f55bded85a47e6c26b3a651bc9
+47afcf337381064c5b221803c4f6bc66
+47b1a876739128eafb175372d0551d5e
+47b27d94a7ac92c13140f46cb281788d
+47b53ffca111e1fa5996637771207b1e
+47b6ae75c1c6f1b1b39215f8b1de6829
+47b99a4a52567f7d46f3ac195458e4e6
+47bbed66125f7455686793764e865098
+47bc88269dbcb3a971f7e55f35d9af23
+47c24994aae4fabab0ae0549d772691e
+47c2dcaeffb59fb3bd4bdaab6825b94b
+47c670e3b161fd8ac83b3f09771fe732
+47c714b8b5f4fad8271eb2f32d0f0dd3
+47c7bb3e105415bda8e60b435f9024e0
+47c959bb3358e2e21724a6693de5cf5f
+47c98b3bb79ae5a29dfd21aa46ee60d3
+47cc715435c737989f2ce97ce3afae4a
+47ccebf02b6b66bb789d4b437e23955d
+47cd95cfd1042fac3527f7fd7aa044c8
+47cdd5ab1b8d917e0195e35b34a69013
+47cfea70d1a05ffaf39b7d614ea08a12
+47d003461bef85719e96d30845629481
+47d0309897bd64e01401f5d5a2b6864e
+47d24632d913a6ec7c9ccb92c648ad36
+47d2862867ff18068bcecdd14e1b4167
+47d2e9a3e1b8f838dcb4aee6a6c5f626
+47d303740ffa97772fd3dd7488388f03
+47d3e772a6bf50f31ad974a0bc7b2c0f
+47d65bae395579fdc75a17b04fecda10
+47d7686ffafee2d73cd9691c39309b8b
+47dbbea8add8153b6d05c633de0dc792
+47dd32c7279938be5fac0d92214e489a
+47e0272ba7de60b04782ae2bc6d9d34b
+47e2ef088d205eb838520015cca93df9
+47e309955bca2e76d3602f99a2ab0a63
+47e495841162601a1d8cb95277ef6fe9
+47e8a3fac046b30da05481070ce28cf4
+47e8ba98786c1cb27164fe254ef51803
+47ea307a4610599ab562ba4639b58a86
+47eaf3a680a4955c3734d0589b74cfce
+47eb7b7c0636e8112f70323b9677779d
+47ed41e602a78b977d4ce854591b01f3
+47f221c139ca5a12922c4582f1689f52
+47f44fd30b50bf77e1de23e63304bc98
+47f48ff32b1825dfd60bf920126725bf
+47f8902a7567b93debde9e3e7aca3f2c
+47fbd36f44afa6f7ea27ee587e21732a
+47fc3012361f02f51365aa80e7aa8608
+47fcadfaf93859c733a993936c0871ce
+47fd512ab5a8b49f46a8282f18fd8a16
+48005a5763c016485026184c02bfa2ae
+4801ecff8bca85c9d2466c2a8626dcb0
+48028e356719c10b97b2422989aa3293
+48057f1e3324fd2dd65f4e4b4952fa1d
+480955590593db12435e30ce06f1d1d0
+4809c157ee2be679285dd1fba4d012d7
+480ad9805829302f9fbb3fda898c19db
+480b2da77879d0b8dc6c0e19ae5f497e
+480b7ee6f08a53245c05bf6ac15cadc9
+480c8c9c3a31fb4dc033b272f965471e
+480d752cee098318a120568487c8f995
+48100e194c5619f7e473a403f59f13b1
+48112d8f97018750ee7690f7284e0942
+4811cb5912789234e8659100db5dc78b
+4811cf310e20adffbb78292ef954df6f
+4811d5b51e257ccb20a25d820a3de346
+4811e8d65d40f19dc3d2d06772bef702
+4814cd6e4e72e7e7fd7b7083320bb98f
+481556aeb98ac839867df43c1a109337
+4816162e154fe84fbe0c7975d053ce01
+481782900d62330306a48b942d63b246
+481889f317ee54f3d2ca9f3b01d98809
+481a7fcb6991089f6583100b25e284a4
+481b60ac03fa57481aaf8c6a38d33b88
+481b69518e58e23a076952e85015649d
+481c473a43f09414f5cd9b40086f1349
+481f544cfe5c6bdf353d21c6cfb3eabc
+4820a8419e6279452e9d60c247f04802
+48221697714121dd6b1fb5f8e11d1ea3
+4822dc97af8018a119ec87e9b4b1b43a
+4825ce8cf6f95137ca626ac81732344a
+48263ec33fd3119fecc8efd597ab0ee4
+482653d71a12ed8b567f2cc6879f205d
+4827eca332ce7fe89cbde3a82aa2476a
+4828066d637a2fcce063dd896d0bd618
+482aff30e1b166c7cfae82aadf95fee8
+482b2b8c4b55d900d0c1b13762ab1dab
+482e30c8e8bbbce5509c2900d8a79aef
+482e69fade922ab78751b06214da4715
+4830a4204f45cff15441f53e6fc90c48
+483257b8fc67924dee252a546fb4387c
+4832bc25e8aafd7468c78f4066b265bc
+48338d2bcca36d310865acc5c070dbf8
+48341ba3cab0dba97c96db566eea674e
+483493b6df0a5bd53ecf48827e7ce475
+48359c9eb749f43094a2ef57dfc24838
+4835cde96626909128ec3be7adf7eec3
+4836573ec2b21552b95144f5e8887813
+4836da8f3bde1333b5dafd2d1e42cbff
+483723f493b984b4cc828632a4ed8749
+48372f82bdbaf21f17a3a1cdd6a3d717
+483738ac56a9e88ed03d14226943566b
+48379ceb125f3d9f42d7132dc1e92631
+4839197581aae0400802a34059da635d
+483adf46cbd474e94e08f88468da3d33
+483c71c92599af3ca4df9a32d31f4f6d
+4840e2034697e27608737cd457a4d7e8
+4841a9712636158aa9bbcddd46fa7138
+48420e143062aa8119ac0ab8ca1bd888
+48423e691400fe4f261c7e8937b230b0
+4845562e7a500608274345fe2a5077aa
+4845dc79f9b6fe21c25bbafd6ac4976e
+4846657821bf777e81ea71e365e3b4ee
+48482357f5224f475a1e24b33151a777
+4848ccc6bb90dd81a3dddd37dc59bd63
+4849cc05dcb11e3896e116a3454a732a
+484b979160efdfe9c94268185292f478
+484cb95c953786c0c8be29d75d4f43fc
+4851c0d260e1a70667363209735d84ea
+48526e7b92c40bce71fa4df183b2dd8d
+4854a9c7060e3c4ee1baee60ec5b14fb
+48553710712803c5de74ededec3aa50e
+4855a2fd88d423435b0ab92fce2279dd
+485a4461ea8387a8b137b8d922e14397
+485c9175d9d5c2f0c287cd75f9256b54
+485cd902ff30e5d28f423c6476fe1cb3
+485d4c0bb6edc6189223d0051f4d4896
+485fc64fd22a8e47e3324d6733d327ba
+485fd719beafb5c9d06de31318187794
+4860c2e137ddf4095ea41137f09d48b5
+4861a6998a12d11edec711cc21efab21
+4861b6110dd1f789befa80d75c6aaec7
+4862d56157929529618b21d4661c397a
+4863c43fd7ffd256768a158851592139
+48679ec2f5eb21d364ab696bd27d7d02
+486879f2e69dc0043cfda81c8b2b8732
+48687abe0fc4a992fbd4d9184ca1825d
+486c475cea18ec07536bdd901d95dc77
+486e0a7847ad0a20bcaa9b75f34e9cbf
+486e40ad432016f3e60c6f66408abf56
+486ef2a887a0b7eb6da7969ae3b97e83
+4870278244277de1e836a3662df13bcc
+4870513c7cea90fb2651c2a8438a8949
+4872288cfcd68aee28448714782261a0
+48725dea6d1fb481a2c743be69354d53
+4873b8c25172b35e718090d4225fe348
+4874538ebab9578794ea401ad7616a4e
+4876a4c1483ad3a5f6c876d56082213e
+487812b8d6587351d270b776cb8db108
+4878478b9a9ffc6ca2d20a583aafd850
+487af350a3f94efdbd53e049ca2331eb
+487c8cb44f801c091c7863119e49b9ec
+487d1065cecd187e434e1a5a893c0486
+487d29a015e37acf6bbcecb45792187f
+487eb10308a207eff26d12ac554398a1
+487f2ab3caa1201d07d34381719e6b9c
+488018be4f8df712e402c8601f5eebbe
+4880c91c0b2c010acb527fe72f06ba81
+4881813f43e92f5cb64c9418478f7fdb
+48820b84c6891476fc04175f82793394
+4882de33a82735d293090bfd4a57e186
+4883ae4fc853b4c2d2b9decc337d21eb
+4887b08021a85074f467c022b719da8b
+48887e3450f609b8d13f1fdf828094c9
+488998d7062920b5ab84d7b4a1335c0d
+488aa15a63067d9633bd5ea0d42b4616
+488b079cb62599544cde58c756c385ba
+488c2141b80130572f397f177512bf41
+488c831ad36f602d46f7be305daebeb8
+488d6ecccd986df1103d4a840471bcbb
+488daf5d35ce635a16f8e7f1c9fe5f8f
+488dbd41f8bcda89d739b2b507972559
+488deee77e666b927f4acec8100b79f1
+488ef3f348afa9c4c076bebad0a74118
+488f507d8a2cc33e411f39f9821b8441
+488f5a61bb38ce5d09bcf32a9651ea66
+488f5c7e21a08fd09e21c4797ca4a6f4
+4893dfaa45c85290c8a288b59dd27496
+48940b87056b8c5e4031920e7e131867
+4894623ae7d51c01aac4288a1a43d894
+4895a1304c02020f92eca77de8fffd75
+4896b53834c3ef657d4fb2d0781f211e
+48975e07ad417010ff7eac269f010df7
+48982e6d7b5b24a8bd5afe88889d6f96
+4898d5a2cb226176c86bcde91928b489
+489a8f6075edf758c0fd26a0c0abb500
+489d8f72be3bc48935b79ca2497636ba
+489d976be125c00d5b1688c3e959bcd9
+489eee5eeecfa9a9e3d813336ae1a95c
+48a14f2b4eaca93355233c58a171651f
+48a3306d96a427cc67a7951be7e962ee
+48a49febec488f4cdea8fe850be7d4d7
+48a8360b64b5e0da263ddaf7262ef633
+48a8dca670bf9ffda2dad7abd29ca201
+48a985037b9870335d2e31d1b5649443
+48a9d18c867b0875a2bd4127a36863ba
+48aa4471c01eaca67c445f5147aa494d
+48ab512d1210dd46ccc7a6a5c7736f70
+48acf031af35453e291dd1cc7d47a279
+48af88347c298fe912ceac5cefed6a6b
+48affa43b9801983c105cff313d88120
+48b0e5952b22a877782d6d9c9e576595
+48b1262c007b2aa89fd3f8b2658b7041
+48b28a26242aaf0aba1f82fbb0e91f57
+48b299db5a7866ace5f450017fcd8d32
+48b3603400e4e58638ea46897cc5fb93
+48b3a3c94411a0b8fb91f36b63f24720
+48b4ea2e00782c70dc4dea912d66c530
+48b51e939a643ff13e2db3928d1a28cc
+48b544767fdb7ff3782116dd70e9c83b
+48b7dcd1cc5d7050843e668105cce111
+48b9933597dc8a007c46027b7c998604
+48bc551873f8272167e299041a7b3460
+48bdb05a59aa51ecd0c85fe2bd751e0e
+48beb4f4918e6fcceaf4192fe4d68289
+48bf1f9402f10ad1d15938703c7b4eea
+48c0688ccf7fdd8138729b1d2e8e7375
+48c0d528fd6b51d5962d4cb4fa801ad8
+48c1b98a3705da20a92afba543830ea5
+48c1eeafbc9186744f04f3b063365643
+48c2b5f3362930e84923810a3a8d95d9
+48c3e51e0f54e438781498dab9bc1dc1
+48c4257d10baf415c4bee1f947b8ceae
+48c4f27bfa1cf9016642461bb71a73b8
+48c52446198e6b0f45ce9565b44ed8f6
+48c56637cb20a182e5b44bc5ec796fdb
+48c5ba7dcd419bbd383c8731bcada442
+48cf0e2fe014059761e74e40f8656427
+48cf56051ebba0ae4e870292030456a0
+48d24056b3530ed2d8b0d8eecbe4b498
+48d3adbe6d61869439bbcbb51ea3377b
+48d3b8e40fd12cc66643f7a063ae61e8
+48d47ffd24e340cae4992a8a69178301
+48d51795e1b4c15c8885d0331abf5574
+48d54b3b1e40a36fb41cf9b3bca0d69d
+48d6b2b1354fe0e1b70c2fb519de5733
+48d751b5b872ee5475f18242fce425cc
+48d7e1900d7d9117dec4b53d55d58522
+48d861bcead0ead58c1d603a5ec3a2a3
+48d8d71f972d2166724e3878f1aeeee5
+48da5ee56184d9ed227a895fb919fb2b
+48da783967f18fcdd1abd09f4b158265
+48df5a9d3a0ef55ea1d25708a3e49ba4
+48e01ca6e4bb8bc6990b2f6760be16ec
+48e0a23a0c744b40e81e696a9265f6d5
+48e3c5b42315c6c319a16b1d59da4d7a
+48e4c5e29af89e49360a814129fe6b52
+48e5909d423170d23fe07cadffe69638
+48e67e2504eb27d7b63a74656d91c4e9
+48e7657aa76ba5783c2ee3c962af9c5e
+48ea1d9e1d4ba19d4e497125450e3b75
+48eb54aebe304885f83e69359100132c
+48ec5da2f6874ac307b9828bd2b5d250
+48eeabb293e05003343e907258a41f30
+48f0940aae8673e60c1ddae856667a0a
+48f6751dcea2af771617c7345a54a224
+48f79d20501ecf15d66f72eb19dd74c4
+48f7df2adc444389fcc466e7948771f9
+48f8f2a2d3d052c223b26dbde0b8c361
+48fab35d9a5dce7b3ec13d6e751fa237
+48fc6af29385c116d37c8de5696dca44
+48fcc2ddcc188a4c5916ab15115e35c9
+4902f48e7bc0f3b51ca1cdb2ab37e83c
+490403f5ecb4dbe3d1eeeb0943e55386
+490540cdb17bd218f1843041937c2f2f
+4905ee878e5bbae74d889030b5d5f7f7
+49099ac26c9d878472bcb57b4a60c4c2
+490a7e0f82ecc5d02c19c7eb0b95131c
+490d2c124629ba8a8362716b1764bb9d
+490d8d153f20f3e811f5c53a70bb90c3
+490de80ae35c4b07503ed85c1b390ca8
+491159fd9c4b76b478554264aa632c93
+491232654eedc7b686fc3f345d10f698
+49127df7cb1eb3158730dd188d212441
+49149ca72946aa4c22a4771e838c0e94
+4915cadac3c5bdf50b7d77adb37b9309
+4916bd09c617729be2d5cea105d8f8c1
+4916d3251ba97ba7940ac16b8fe273dd
+4917c962ef029fc509b6e4bc8f1488cc
+4918f29e88a79da173792415b2fe6eb5
+49195a2247d3703506a3fb0ba2bd102c
+4919ae4e4bb7e8cb016df12f0fdfa962
+491a9065ed4d9fb611e74ebfa2807add
+491d0c8f21895f18f7d48e994d44de36
+491da9bca9a335daa064752efe3b60a8
+491fc557813e8a24cb47a82c2a46e43a
+49209d486336f8410e8722033c311884
+4921a80d49345693a42b3b1120739db6
+4922da9e3aa779da68f9270028c8c0d7
+492545f991be1f828d490529ecb6ed29
+4925ded6b9e79623b2bddfa46737b387
+4927a8111fb6e56535bfdc6d185b6594
+49291b3dcabfe241ce34a0a3138d1569
+4929dfd0c9b060b9e658a858cf1ae65e
+492d6dd43835913476d7089a8ab79bfe
+492d8cbe1efe5527cace05417ab46ee5
+492f0c7e79bc61457ee63a1c6fa5c978
+492f242b32884b283aa7b3559582cf07
+4935611f89a78fa232860f201217a819
+4935f729b1b021fb168435b2a2278e8c
+4935ffde15ae8bf94cf2598a8d2247da
+49391a06447fa9cb7a3fcc8b2a3eaf79
+493af307e02ef17bb93e11f7afa48b84
+493cfd0b503c6b8d0d33ca13d692c49c
+493dc0d6b1a87f606138adabea7e80ad
+49408ed43e330d486c9141ae29bf725e
+49418548c4f6bd001775567e47d499a7
+4943ebdf3141e2e24b8e51ae4ebf41f5
+4944c83a2339eba84332388beff1887d
+4944d2cd597e6d62e460140cda6cd43e
+4946a4f79b9e94e57536ca819538a9e2
+4948ce9b865ad5edc36f1ab76109a76a
+494963e48f3697c7a424612144e28835
+494b14c347d6734163e9eb294de3b8fc
+494cee0a3a4bea4f3c157bcf8a3a89de
+494fcfc4c06c80d8f066fd09eb6fe855
+49505e7fce96815ab031494595af3afd
+49512af0e5d50885426d3f42269d1d50
+495468d4066c94110c04eb8e335642ba
+4954a773b916a9bb6bf5351d6ff90eee
+4956e8dd877629963c9949f75825db16
+4957e47e824073d06b6b56dc4c35f268
+495ab1007685182eb8d894d809d5d10e
+495e1323f3d9d01d96f40f9fb6852ab3
+495e5e822712a4c7461be7cfafa72409
+495e733742a32bb34a87972af139f4f6
+495ed26870ecdfa96ead1aab0ffaeb7d
+49604d62d0156bb291560423c540b8aa
+49606a0fa48095bd5bcf0b5bf9f8c5df
+496241816c686f1ba89992d76e4fc20c
+4965a2feb86ffa7128d82aaf97646597
+496abec28a8ba7567bb34134c231a798
+496ac0566a66169c497833992e2246de
+496bc6e829b97499ff1d8b565503d12e
+4972e29196024a40b33c9eab1c27a9ac
+4972f5ca1fb892fa146627b1d5241b40
+4973a450cc3ea5941852efdf1b087b4a
+4973d6d74c066cf9cd86fa7f3209bc5f
+497718edd975d6c133ec8f46d81d96a8
+49776d8c7e82bdee3ccd30f1941adad1
+497809cfaaa231b2de2570566a2c75bd
+497a34ab173caa762dbdc5ae84ab1ebc
+497b95732dc479d211d10b453622c6fc
+497c752b22dbbd5f614560da32db64e7
+497dbbadf503c2754e3ca8f4ade772db
+497deb265ce2f0116bdc534b3f994cd3
+49803a449c802932e1bf86b517943153
+49803ac0fe042bd0d8633efba6b71765
+4980ada81a0cf0ec9e8f2dd1d28fa03e
+498178e06d720459eb9019a310cce979
+49843aefad8415f1b3526ca34e0c3f35
+498617ba82ba52c96076e6ef2fd8af23
+49886634c03b26635fae0aa4bb1e3cf4
+498bdb63e91e12418ab9135f0ac62c55
+498d363012544b9065486670301a0b00
+4990362e1f27326b42ba2c7e7cc83b2d
+499319e5d67dd5beba629fe3f11f61b7
+49932300c421bbeb9a755d0489abd2d5
+4993d004ccac45df3dd5725fb10c8b8b
+49953c2c1245a315372b716e0bb96dc4
+49955f39f093eba6ed7cc3e3f03ebef1
+49958031ef035df5534c5cefc0c38f4f
+4997318143ce613128638f131c340c30
+4998b7521e4482ec70aaf90baeb2eda2
+499b0047e243d902ddaea5c7b922b6d8
+499c539731245c647d2373688413eb15
+499c9e9cf215ae72f3c725b69d4a62c9
+499f80023fbb0a18896021eee9cfbbc6
+499f853b101d65a4ee41d3834d4ce68e
+499fb15b4ac58730a2b0c765c81babd9
+49a111500b868f433bd51e8cec5f22ee
+49a22c0c9b981e016ba3d1d9608008c7
+49a2aa80b63bca539586c920cb3dd01e
+49a4399c1dadf993d4dddc6139feeb78
+49a541ac92cb5b462e5d4a9c89412908
+49a98eab2b020eb2b046927bfa17d9f6
+49aa593e02b5137d2819a3e48d4641f5
+49aad05887f5acfdec77b1e34d5fe1e9
+49ac2246182eb88843e65b9b24525813
+49ad0f4440d68108709dd61df4c62ca3
+49aea937afb0fa62d1f52be5f85d0190
+49b1900dfb280ee61c655facb9fa6ade
+49b4a5faa9c9bb7ce584e7dcd8ac7805
+49ba50d324201db70064dfd5137f31e0
+49bba6c1fefcf4d4d8376499e6510671
+49be705a2ba79d028f95646ce7ba59a6
+49be9642743db4da19d851417f2efb86
+49bfc6ba4ce5e4ad7bdfc55f233fe7ff
+49bff914bc13646c29204e6788718781
+49c28fb898f882ceee81c3228fe8a696
+49c370198174a036143fdc28c9013ac1
+49c582ca5110559d58fda170f6617bfd
+49c66331bffea2895a5367e6b0943958
+49c88d80f985a31cee3cb8461fc8e5b5
+49c8e270dc8c34a40ca90e3c8baccf65
+49ca4e8d1bae9d01c9232f77ccf42c7e
+49cb8b8ef4d221175382c83c291568dc
+49cd71d611b4d53b58561763b37655d6
+49cee72c6507c32d18854a70f6384199
+49cf0fd7948c66790533ea96434b267c
+49d54c4aa77372709b8b064b911417ac
+49d61265b06cdf330c613d01f8c7ca42
+49d7bad00dffd42d1c58e9c2effe68d5
+49d82296d0b4ace987ac1c3778ad40e1
+49d85e3e4c53cdbd0205bc46cb672067
+49da2851f659811a955301f8aefad57a
+49dc471e6aefadf2d9e5a634a5294baf
+49df72e16e261cefe68ba1727abfb4d9
+49e4d28371b377cf0d9a766b90e8ce56
+49e5a26a35e6e95ea307837cdb437ae3
+49e5d402e0d3fc2f9456bde636c8bd30
+49e682c9735d307e9843bd0db7004ab6
+49e7fd3e1380de337c368d1e7339db25
+49e95400a040131d7c910f3a603dc2f4
+49ea5fd7cb280756468e6b554c4bd322
+49ea9d70d883d911e2b19fe1564a140c
+49eb0fd47a704c986110ccf87627b6cf
+49ec5fe921251b8efedf127c3b428c57
+49f1522f6cfae8c8aa1e92f7c0a6405d
+49f1c934ae3e3df282d13fb8bd192809
+49f432576ecc02420a0c5a16b2172ff2
+49f5b0e943b3f7265bcd320bf42fb084
+49f61a81e61ac77d88bb382551fa0b03
+49f7bba3a740f4659487bd3c8c3c0432
+49f87ddc55ca13e3c901fd9d7e06c2db
+49f945bbac8b563ad109ee7df71c227c
+49fad34235f4a969236063f4e4bf843a
+49fad95575b4b9c985053f5aa39b1275
+49fb55890e0f76f4c3b47bdba1142325
+49fb7045df30df154c196b145cc98ea5
+49fc628514f8671d4c27c15824f45c64
+49ffe61bf66ffb14c1b37d58ccfdf7c2
+4a017223ebd66f64c732102ef8f684e9
+4a01c4c3cdceb4cdc388e8a3aefd5010
+4a02189403fcb696c201c44de147cbbf
+4a03eab51ccc53760bbfab0184c07817
+4a03ec00900223af086991db4fc58be9
+4a09b406213a78bea0d12561365fea7f
+4a0c88c254a986b68cbc1a4f85c7c4a5
+4a0d0d23fe339be0c12260e21ac9c274
+4a0e584cd992e9fb8edce67278b727ea
+4a1082bd98123d8c89df974237b60dd0
+4a13632bc0a3fe7e31958fb92c7f4a7d
+4a13667c7fbc7b459795c0587292e67a
+4a13fd8d8d682e93d36daf353b3c7df0
+4a150c00cd574656b314911c4fdecac3
+4a16e41edcc3f4389deaa0185564e9ae
+4a17dbb556bf915f4ffa92e9b05ade8c
+4a181493736e225921eb5ee488777ead
+4a186bf2257ba735e07ff96ab15fd078
+4a1a8fd7061e61804fab62152c008403
+4a1c4707c011e0ceb61304bc28a97228
+4a1c6e8c5715adf1f31ae1dc954c7f01
+4a1e45e1d91fe32239c36a8592e37923
+4a23719ffceaa5b141613e13dd660482
+4a23846f7e3550ec910df68fcd72dff3
+4a2617787733220bef76ad1acbc5e549
+4a29b5784bc42ee795103192192b4b34
+4a2d4a1e04acd169303d26473c272990
+4a2f000541481eff36e6001ed3a28362
+4a30269a0aee7d695a4eb7e505ef69cc
+4a30b9cd042207ea8ce712eef99f797c
+4a30c6779106fba8efdccb55e2faa881
+4a329e29ed8dcfd1faccc6f14668570a
+4a34fad21e8dc998a48025ee6c4ec3f3
+4a35b4c71dba7173959bc30515c83124
+4a3608ddef78c3520b834f15ed9f652d
+4a3785fb28585d41791f96f01b0d1351
+4a387cc18d53950f83f482d3ac16f953
+4a395a367cd706c50dbe0ce3dd3ea38b
+4a3b10fbdba81691b2ba5c842d786371
+4a3d4ca936dbc0722a3cdbdf62f7b2f2
+4a3ef8674fbfa68563912c7602ab2051
+4a3f66428e721cecda1a0107582bee8c
+4a4278266f2edb50ea6f73f156be5098
+4a436f8af658e0f9eb0f697dc168e088
+4a44311e8ec399959e7f3d536dc4f6ed
+4a44b69de263f6cb771220d6d083c38b
+4a45f49e6be4fd25f656cbd9d47fbd91
+4a469ab6a722c77ed0b84c7d3076e63e
+4a4993662234c462df700e69ebf42724
+4a49957f628f6fcdf8eb9968272b2469
+4a4a1e52e1207d86d7c08e993ab19c7c
+4a4ad7e1b4b7c10bc73f94a3cd55f16c
+4a4c816de4ea040afb389108dc122e72
+4a4e894d08ff8a90488a5aa5d87cf5da
+4a4ea2ce0a1b7a0fe3b46645acf70c4b
+4a5033966446bbb981f371305fffa0bd
+4a521fe0b85a1a83d27cedb89319b48e
+4a52f385b3bf5fdf356ee0b873f4a010
+4a53af939e0c5a4aa6e9c6721fccd12c
+4a53bbdcdbb7a5b26ba0f7d101ca2ffb
+4a53c8db9a53e289c538308f346ee5db
+4a563ca215c3cb47170067c594cab78f
+4a56a4827af70a04a20b44aa39694413
+4a570d605911763d4dce7adc33363136
+4a58bcc937633183364d2c24e94ab44c
+4a5aec3904db81195762af51cb911b8e
+4a5c4b2b3e0266369cc003d9d084f300
+4a5e23a24163c6aef646f945877d0204
+4a5e2ba6ead1c2c9654ce2178490a8f9
+4a5e6159dc5a47acbc20255d1aae15e2
+4a5f1ef67eec8a8f4e5cc224f83c9ea8
+4a5f6d7b869b49771d6866fd160da39d
+4a600315b683240a53334a80e4d690d7
+4a634e6bce37ec4661051f2afc69259f
+4a6378526a669e26d9a768f35b989c7f
+4a672a26578e1d9e1bf8ba187522e1f3
+4a683ba4af061819432fb0c511578bd2
+4a6f3ecd507263aeaad1e599bcbd1e51
+4a716a171897e6bab54ef6451c7f4807
+4a74fe6807a48c7ebae8004969f442fa
+4a7650b634908b499cef3ab34cfce316
+4a778cddbee345883b9084e395e1631c
+4a77fd6ab4ca1eb73fc65dd58cc74a6a
+4a7ab28e345e93e0b8bf1b82117fdc5e
+4a7ddc0df49dc5642ba86ca3d981223e
+4a7e2c4a6cc7ff687a5baae0c08af60a
+4a7f46d40c64da4ef83f8d10cd05b794
+4a7fe5b6f0930798dedb51b33bedbe40
+4a80758b6d581c0a31fc2c9fded8e40e
+4a85b834208ecbd7fc4b12b33e9263cb
+4a863e490097f31aae317bf47c945051
+4a87a5d4fa37d0ae86bb05bc38e50494
+4a894d1bbe76e8f37223923497c1894b
+4a8ad6abb442811fa53536bdf3af5482
+4a8c8450daa236cdb68657fb363f5b8e
+4a8ed015eefc0e2f943704f8703e6330
+4a91174f04bd407a69d79995b155e4a7
+4a91eeda9d3798360cee46df6a3902f2
+4a974688c5e9afb3178a655eaf1e40ff
+4a99aa7495b8c641ccc1513404c2819f
+4a9bf8eb3bb68163c3015414a6b21b3a
+4a9d77a4c039b1eb0359772c6da59022
+4a9d77f1c1227b7d231dd2cf3819ad38
+4a9ebaf200dd40a563b81309304e989f
+4aa25e517e6089ad16d71ad92397e7f3
+4aa807d19b7f27808133882214e60f1b
+4aa93690bdf1525f97a676f4fe437d85
+4aa97158cfb78fc2284af165183f5419
+4aaa7a7fd41929e7fb391cb407074af8
+4aab9d644c70ac371bcb0fb7dd6628c8
+4ab029c9f83553544261ecd5bfe3b4aa
+4ab1e88412202da1a83dae7ceadedc5f
+4ab6096364a52de007483a0c5419e8db
+4ab749a3e5a009517827d43a00b79a31
+4abab241dc090167a161ee676c0c84d0
+4abb90a67293b6c605c281240b1d1c62
+4abe3553c208fb9abbf8f8c95f436c9b
+4ac00a35ff695b61d8ac8dbbf96683eb
+4ac01a01c07132093ef0e943d32c61e0
+4ac05efbaecea2b3c0fc25fdd029a222
+4ac4bc5a8930e0c1d0c0f71c88a90196
+4ac7b562a74ef606e819bdd6e3d7b89c
+4ac7df7a7d98713d28f96fd099fca00f
+4ac7fd05e733f1d52f02996221618dd9
+4ac9f938717bb527bef6166c54cbcc08
+4aca6e6564460a0dd0b9cfcdaf1d6ccb
+4acac2cec895c4ed5953fdaeb39217e5
+4acad7eea8c131d8ad2f131145b0937d
+4acaf94efbb9d0119cb2b13fed2971e6
+4acbb499a530fdac7fe6b3192c8ace47
+4acbe6b9418d95b83ca258d6ea3328fc
+4acc2fe7b15ee09f8e7e52e214da13f1
+4accb9049c7d3d268e753bbcc0a0c908
+4acce0e467c64ae6265516fa71fb18c6
+4acce61e5f94605ff9605bf10039524a
+4acdb0e6e9d17bd6d85606c2c831cdc5
+4ad0b70a064a75c667cc121adcec5d22
+4ad136f7dd8b0c21d931580cefffdf4e
+4ad14262cd59de786ccdb6c6df44572b
+4ad188a64dc2ffb6d8ec8d4daabe27de
+4ad27ec4873d9075e4ed8877b1db7a2f
+4ad32f6ece5afe41ca579e36535363d7
+4ad361a3517fbbd06795432d28b1c9dc
+4ad3bc92a461d89c2c9b713a3e7c6bec
+4ad3fac2e04814eef5bb1087c9e28bc3
+4ad42091fe7848d141aa01a9657395bd
+4ad569920ce0a04dd1a75f46f9c20787
+4ad8f41c8001987de29e6c1deff123d0
+4adb9bd1e56b21c5d7d4e54f41de1cac
+4adca296b6f9567a6c2fa53f27865d3e
+4add259046057425791175040aa7f5f1
+4adda6f7ddab9ba85f1b1de9871fe32b
+4ade764d537dd318472a0cad35a79cbe
+4ae094125c6f16d728bffa43341dd3be
+4ae1087d6e5b6561a03e563003de250e
+4ae41175fd78d6bdd82ad36411f30e0b
+4ae4281e4f443e0851c17ffd0142f50c
+4ae8c513f9e1c8a090416bc864693c11
+4ae9770fe0a7d6ddce188cc11fd99b79
+4ae9941421bff3d502410455005956fa
+4ae99efe6f6dae7c81748d3a56e1a777
+4ae9b8d33620bd7e6746336ee0122842
+4aeb865d2be93a8326546e806d39908e
+4aec0e1839b935ae32d885d3979a95b7
+4aee79171c490a5496c7bc94197970fa
+4aef4604c0cf8bf3c391c5479947caf2
+4af1ea18c37b03ce8250421318096c6b
+4af2fd4c69ade8ed705bca3c0e05ba74
+4af356ea48409bca5e2545e401948b96
+4af63c9cad115a4f3fc5419af3d7260f
+4af6960df8c01089732736eb9718d16d
+4af8f581d23b9841b0b15bf604cfa63b
+4afaef83f9fae47e9dc0ce99993e1627
+4afb736a5146a4038f925ee709ab7cd8
+4afd0eab3fc014309380c8a9c1471594
+4afd54420bc0e052736ddecdc57bd2d5
+4afd9d7f817e804e51e80b55023048ee
+4affe98213550e8194e1e477950fa053
+4b014acd2cbf3f95e0fc7a78952716a4
+4b025ac62534bd85525047a1e21ba6cf
+4b02ff02759124f6f7af8747ea810a79
+4b037f4feff133b24390879a48d46274
+4b05cb3ba70a649dcdbdff1cf8ffec6e
+4b0667268e517bd47ca7a8f68f835838
+4b09b1fd22a2c8a9237836b9b53dc080
+4b0c6e56b3f64b3fa44c491dc2eb67e8
+4b0ccc004be9a9c0f16fac0db6c48406
+4b0ff12412c983416596dff191b20a44
+4b1045ed7a4d0b03d4b08596d66aa228
+4b10582df1d1cd65a49a9753c55756b9
+4b10a684b1930e80202896908fa6256f
+4b12290d14c112841d6518defd153995
+4b14582a1f6dec4ac546070b786b6489
+4b1486b466f1052b9e0c346e573fae63
+4b1542804d209e432d3fe9dae7c21518
+4b15634022cd24757d0aa647cb62cf2e
+4b16eb1e4f3d43db1f83c5cd49887546
+4b181d0fd2f57f31bfa9ff273d7b37ee
+4b183a4d59d92871d144fa232da2e134
+4b18d0c2212de60d91e9aea3b7db12c4
+4b1b413307621615b9ac9b4dd024c17a
+4b1b5e161b9e6fad812b361995aa2300
+4b1e09861757e894a3b9073b3a8820c1
+4b1e1ee607b3da4749b93218a4c4763a
+4b20b031d4adbb9a9199339013fc5db7
+4b22a1f7c35cb1e295e6f3199c875608
+4b22acadc20da8a37ca49668d161a147
+4b27f013d1404f1c11f0c1647bbb1979
+4b28a8dfa9d96dcab1954732fb8c0221
+4b298be88fcfc2b79af4f9aebd33aed6
+4b2c0f13c17368442eca0e04e859a708
+4b2f009751f738f17a94669e64c8763b
+4b2f6768236d5ef33d380f1fed3004d0
+4b3071dd07b8cb88487ad6cfe9ea74c3
+4b30b9c3326a6521055a8eb1681dcba0
+4b32d939a682e33b857773c6d06b98b2
+4b32ef66e53c1759fdc4413b1754bb2d
+4b33d60a89e739483ab9b99d086c0f14
+4b390621e766df5b8fd6774047b27bd4
+4b399e6d3f181e7bcd116629029fe3c5
+4b39d215d915049e85e96b459a5ac2cd
+4b3bb9bbed7606ef2b0394be638ef251
+4b3e2437f831765dae329824332c6e28
+4b3fdc31cb306ba18dc782da91dd2661
+4b415abedc9e9ea7a97e1654aabd25eb
+4b439b44f125f156ed123e4e816f5dfd
+4b43e15fa04034188bcd27dbc04f82fd
+4b46c6023bf4d9f6df879844ddcaef2f
+4b477041609029f77e1013c08984432c
+4b49e59459e5680c54998383dbe45d55
+4b4a72e09c14ea3572ddec5e3dd7ccd9
+4b4aefc207d8bae86119787340c8bb6b
+4b4d94c2547f02b926a02ec922a11be5
+4b4f3e8665632035ad073babf06bbb7e
+4b50e834a33ae00e03d477d4f51cb496
+4b52defa4b871556d359578ff7418075
+4b53ed9095cae3c19a7381ee53ea987b
+4b56cacc4aab3a4143db1ef1c3c110bc
+4b57d58f4618fd67c885c808fe4441b8
+4b581a0d05465ce655e7de1bda1bed61
+4b583ed5efeb2515bcd76fa30c397ab4
+4b5f587b70b43c7ba20f9ee8bb3e22a5
+4b60b78739755e2c7549e40c83bcb08d
+4b6381bf65927048a5c2d95d50d5bd29
+4b644c667bd3d7fec3adb8ffc9c2542a
+4b645049796c5c6fb5125819bc7ff3f4
+4b65ed2a6ac486ea20902c4763bd581b
+4b6704cd4dba911e446e07238595af9a
+4b675472788a9dfd3540a2c6b75cc386
+4b6834127e697bbc920a6e11a01790f0
+4b6868a9c7e4a66510bfb99956043eda
+4b6953fb0c78f696131e16573e296ef7
+4b6c048a27bff0b610e908b04a14fa9d
+4b6c8e411ffeb7ad23f5b534415bce08
+4b6da7b381e043e187a222516eb6ae38
+4b6dd5c9b55d1a8b37fb29d6e9dd5dc9
+4b7011a27383015496e8a3cd758165df
+4b71a07fe22f57a3d704bd3b5482ba4f
+4b739ed8012dbc36fa8f708e2e57eb08
+4b7641b6cd5716944a6d0717482806f0
+4b76ff295cf4325cdbbfb239c7d5d2e6
+4b770f15b10cad8d309a06829da8f148
+4b7752ece14a65b1b5d141a4953a6c4d
+4b7862af03aaa67b5d18f79857981755
+4b7865d26af8393951d856628d4015cd
+4b78a73caa423e6ca467a93a16f833aa
+4b79b76cef26dfaff1d70c9bb778b7a7
+4b7ae76c7cb07c1ac7694252c7cd02de
+4b7bbde712056c5aeeb6a921366d6c1b
+4b7dff265f7dbdc932a4a1910d833100
+4b7e798bc33d719a79b3eef09e12a1c2
+4b7fedaa6b0fd70c36991a6ec3b3eec0
+4b8044e4821b8d648fa5848db10e5fce
+4b82040caa97c99e5d136ebc29fe01c4
+4b83819effb68d57088ccc7f832c3d15
+4b83bef8d208e0aba2b72b20c1a368d1
+4b844ad06e61b6fb016f4bcbc9a2db6c
+4b85a38eb1c0436761de5003f4f6e60c
+4b899f03cb6aea227cb4198286735e76
+4b8c91bae122759d6f145a2e229137c3
+4b8c99dcb12fa4613ff7bcfbaaf1b7b0
+4b905fcdd146c682adda12bffd7513d7
+4b9128a9e351a5d3ca649afc04a065f1
+4b914e1d6af9a474f8c820366dc265d8
+4b91796c53e61b4f016a9f08928aba3e
+4b91ce182225e4f5e0f74b85898835df
+4b937f045e9c84fa281bae9f38abde36
+4b97a10cef4d91180fa0f719e27a60d5
+4b9960c2cef32970a82ccfbf345e3296
+4b9a9e404c896826777d59ef72244404
+4b9df12157560e4748f8d80f2b736594
+4ba636e2178a20aadd9e878977b8d4dc
+4ba71c4b615e5b82e35290bea9a68ac8
+4ba9dca58d431c458d8e98445eac2b48
+4ba9ffaa4499f0919622896e239e9196
+4baae66b5ca488eed09420f8bd16d820
+4bac298fe6a094809d860921a2dcfd9d
+4bad638c6498bc534e682f4e8cd79cb9
+4bae8b4f634bdf83ad0373d5076644d0
+4bafa23c4bcd67b5d8800c6453e48d56
+4bb0678293f385046b6867d4a2c1684f
+4bb4a5ee3651f1696199f780f08da015
+4bb640b05bd32055c7a271a73f49e94f
+4bb678e18dc42db76c35eb93ec891626
+4bb86787404ed8432d1f6e3545ded1f8
+4bbca93bb599736db927857563060621
+4bbccc181acad93662a498e822525e2d
+4bbcf1a510ac3b79daadf1c9b37d212a
+4bbd13671934749cd6cfb0337d58a97e
+4bbd354d08f3c4a6629645b35b5890e6
+4bbf47a48884ad2673b928bf64f4d35a
+4bc1fd5484cec6b6f7b14ef51258e23a
+4bc25a78df127290f0000eec7669c74f
+4bc31e899c68856f4533a9d5bebbd9eb
+4bc3574dc23c9ee517d41df6b615f0ca
+4bc37b0d8eff20a510592f78bea31acf
+4bc4e1d52d04fc5704074ccb77948f7d
+4bc6c0de8283a179d573737e02c34b5d
+4bc947c01caa37502e8591cd79a1a8f4
+4bc98dd57c0a4bc1306d1ea0187fc4c6
+4bce01ac54f57099b1008961386f9fbd
+4bce23a609c6c645119096d22571d5d2
+4bce69d0ee8a1c1c77f50f4534e9525e
+4bcfd76a6b328344297c8ba4493a07e2
+4bd06e342d8c7abadb209f8559ef5d53
+4bd07858be34ce62b7273bd1cb64a9be
+4bd1f9effb6d0d067df8962ac3be109e
+4bd4036f9ffbbcd81a27fed7ad8c6052
+4bd48eaa3c32621af8109f29fe3a5e21
+4bd61e78d2753d6441f22eafafd5e86e
+4bd6fa8269867e3545a28a8ffb4e3579
+4bdb1c841ff8630b3ffeda18667fd2e4
+4bdc1d18b6a76d3bf9bdf1fd567dcaac
+4bdc27ccdab8b8e0a5fa6a8a9f3ebf8c
+4bdc3f922db06ba4af79c3e65cfb9e49
+4bdcffebe21282f5d54f8fc37cce5866
+4bde32a7274147ea1be8198cef914791
+4bdea1203487efa98231dd7b14633256
+4bded765bf27a0fcfb2a04ccfeb34ab1
+4be02b5c1098f705b7a2fcc6ff6944d5
+4be172115bb8de25493eb2e0637d7688
+4be1fa005bff29059408144789ef799b
+4be2c7d040376531f0f42b95cdd0a7fa
+4be418af3077dddfc3d816405e7ae9c0
+4be6ef25945a4a188993b91d1089372a
+4be76718d2110190a50067491418e270
+4be7ba83d0ec2334bafaf3fb7db79747
+4be9836fcdd3b2ffce23f88aba087fe1
+4bed8c90ebcdf9d5476109c83995ec70
+4bf4aff1882af607929229977ab85a99
+4bf4f007e5f9ab56cbdd35b828d2180a
+4bf50a6f6436a9831f058ad3849ccb05
+4bf5cbd8cc399b6a878583e2250ce696
+4bf5f6387e2cc978aee95d0dd73b690e
+4bf6d6978f5b8a48c855ede3760f0913
+4bf8fa28e7af0ccb594832fc66b87d69
+4bfa52cd7a390ba331b67cf330cfa7ab
+4bfca25b324a305d1cd808dc0227f21d
+4bfdc26d0056fcd9c947a064eac88533
+4bfe32633a8139bcd01297aa39c24823
+4bff62b5a37d94b7294ee557bc0b0b7b
+4bff765ef612ff577385a77d05c2fc29
+4bff93eaec19ce30c3e3ef72113fed0b
+4c0300ae18938a558da6b51d14df51f1
+4c037a6a8178030ab010e4b1727f5e4d
+4c03dab3e2f4ca1e5667f50bd72c8273
+4c04493836dabae3f1fa427fd9a70892
+4c044e443e9b4ee254d4835fda09c7cb
+4c054ac5a4d63a3df55dfce144b356a9
+4c05aaa1baea329015bd7ab44fb781c0
+4c05c2ed401c585928aa3bc342d0dcbe
+4c0886e7691557b9795bd3ebc3a9f3ef
+4c0aba3796608091d5e9a003b943ec47
+4c0abdd061d888edfe82d1cc6054843b
+4c0e28ba7cb83db579ff54681645c005
+4c0f4953406764981bb7d24091da6bad
+4c106a4e2ed6d37112fea67f44d158ca
+4c1524bc9279717a67d14df9c693ad22
+4c16659c69b7ce2485664687bdd5d9b4
+4c18087648f3d0c8966d0574ad5d155b
+4c1a9efdb63ed59cf91f40218ca36f58
+4c1dab7af174435a61cef88ed8c498a6
+4c1df0a74859e57a9192cf17e40aaa29
+4c205e6580a8261f72f8ccd91fa2312b
+4c20ca877bf4a94e17e2e87e589eaa7f
+4c217642f2e3de6a84742593bef883a8
+4c2302853f8db07dd061817c2847a594
+4c2387a7cf7679b466aaa4cfff71f2be
+4c23a2ecf8a3d2b96d582158d5b4a8aa
+4c248d7a3050b5b7f1a8945502a3df58
+4c254084d60116418d2a1b6ac0a1d710
+4c28da8427c8c834a82152ccf7934e8b
+4c294f6052f8f8c9a5a13bc78395c692
+4c29946fb44ae757b1ec84ee95b0a951
+4c29c60a9686df0bb85f210a2f48320d
+4c2a64ee2540abb4e643170c71f54e2c
+4c2b43c9ac0c25ddf900d34385cc6a45
+4c2ecaa7f0034d3674b3d07053456fb0
+4c2f35079d720e6375f5fd6e011079fe
+4c343e5992889c2ea0421b122a5b7079
+4c343f4c5310814940828ddc13bf02a8
+4c34bbb5a36b74f970e04ccd4e2b94b6
+4c39a86f9b85b23eb25cd5fe91b3152f
+4c3d1d88650ec09a770d98f91d1315ab
+4c410632c7e920e5e6ad44cce47d9417
+4c425905363ce69009b4cc24bada7be6
+4c432e6d7fa7dfc0554f4a6883a0b09c
+4c437bbbe7f8149a86f849764387ede0
+4c43d926fe29dfa2190b92b48b8978d0
+4c44d8580a59820320a2067ba95aef70
+4c479a7baca6ffae819e5ca3e61d5bd9
+4c498af961a3dcf727653c31e1525b13
+4c4a97fc9fc73a33cfcbfca1172d2afe
+4c4bce279c5e2f29e2fe8b5eeacbbb67
+4c4ef19e7e5985d773169ba2c86087e9
+4c501554918c2b99652092a70ec8cc8d
+4c50babb8a77a1ea5d8b23a74d5d71e1
+4c51a183366044f0621ccb1f3b1635b0
+4c52a92598f6a02a3506b97dbdd9dae8
+4c550e0335f9aedf90152a13a0bedf86
+4c56db07d13a6690ccc2e86a74a14395
+4c58daf8e090e26173af11ff8642ab30
+4c58db646e5f049c9414a339e793e69c
+4c5aebb33942297ac2340c5130830825
+4c5cae9c82641ff746ec4552d9a858d1
+4c5cf4e9a05ebca9526ce53c02964f4b
+4c62980269a5a217960d1c6c028c3dc5
+4c63336cb578993664f137618ae1952f
+4c645aa88b4c77fd78a05688cf6c06e4
+4c669cdea35028744118d2d2b1d64a4c
+4c66a8b7c32cbe94ca42e399fb3a5d91
+4c671c616e156001bc0c9b29c181b2ac
+4c67af1b58f4c246c8f89a892b25ded1
+4c6d28a2ff5e474e78e309ac5c852051
+4c716d1ca1c3e8af085a627e5f8b9a2c
+4c737a317fec6d0951757646fd9ba94c
+4c73af02fcb5688e0280780363dee85f
+4c74f50488921545626d1d68686391b7
+4c7574bd6149ae5df29f15c3403ce2ad
+4c7624709bb2ee45ea657939300bbd81
+4c7d63833799fe6df5e7883fa2e1362c
+4c7e3dd11be5c87f4440ad13869def81
+4c7f4b4674fb274112b0a963f7307510
+4c83a0cd4792ed935f101bb607516fa1
+4c846f816b7cbbc25e69e62b322fc990
+4c84a7230f98daf15a944289d8c46069
+4c874e6ecdf4863490764644c5dc7423
+4c88c86ff30a31bd655d0692cb29aaa4
+4c89b42c879717ff79abc5bd94694072
+4c89dbcf6173036fb509ea19179584c1
+4c8c282619c60953ef362fb6977b37bb
+4c8ceb8836177bd8224aac144f1743ba
+4c8f0e8ebe3f64c2594fb65b3a53897b
+4c92ed14c5af409f732471a2fc2fa712
+4c94f30ec4fbef1d723d2801ba3ecce4
+4c95521415a300fd2cb76d4f1551291a
+4c959036bc4456da89df49ff0663ff63
+4c96aa70a6f20a69ca6a2af3b2595c4f
+4c9774498589382cc9bc06f603cf2642
+4c9901b51dae158e4f3a511cd97328c4
+4c9ec0e1ac824c5b2a3bb85b71b19b6e
+4ca035edb826a080a3368c50d174abde
+4ca2c61eb985ea43a8ef09030d576a5f
+4ca45989d601c1c59852b2fb6d574e75
+4ca69e5fba473251bdc1a5ac8c18a145
+4ca939eb5e01f3495c1270599eaeb991
+4ca9e891f5a89903d0d51d45e265fb74
+4ca9f931f7e5ee1d9d860dca73ad2da5
+4caabda66c2563763f560164868bb475
+4cabe3ab390d593f0265fdb0adf00a99
+4cac765feeab6f7a1cd0196fe4959d6c
+4cadb0cffe22a7d95bc62d3031c1b129
+4cb08d8cd64db51beee58b0b13ff8c7e
+4cb132e1da16a09e1e472428a68da277
+4cb14e5311f0dc436dc5e82c31d8685f
+4cb45378d42ff86e4b948f2c6c4f05a3
+4cb55ff2a5eafb0c4d18c04cd4ecbdbe
+4cb84ff6e627cc660af81c8df97f4667
+4cb9b767bf5891b291df15f4e37d0b7d
+4cbdf7062183a256db043d516bee56ac
+4cbfab5befdb49e4f48b163a1038b5ee
+4cc011c6715d3276f2fbbdb29958f999
+4cc0e6b83a24c2c12104275a14465035
+4cc17f0c154a9c3ba6ef124eebc2c976
+4cc2380358e6730e1a55aa725c34738e
+4cc253b091f98cee9f85bc6d299c773d
+4cc406f05ded523da1aed94f34abb495
+4cc6898836ebd8917058266127033778
+4cc9323a149b02a969a413a79d19ea0a
+4cc9c253a70e1be116ce3efe53d975c8
+4ccbf03484d0efa952c9fecfaf93919e
+4ccd64ec88004d2b371f09635ea6ffdb
+4cd27da951191fa120c6dd4aa75c8bd0
+4cd28f62f932abbfece1d66bbdbda343
+4cd505461e36e6d41552c6b91b1b88a5
+4cd638246295e9f0d23dc5b0eed0aa87
+4cd85a0b9dfc0e0756e80dc54b21e5c6
+4cd890040312267d4dd38c6f6ba46864
+4cd8f39721feb50e1273e073144e4915
+4cdadfda86e975c7aae03efbad6e408a
+4cdb02466f86b57e88ab3d05702a9611
+4cdbee7783747e0cb1911fd769210d68
+4cdccb3da2bcb774c889cdcf503b5f56
+4cdd82fa4883d5c564eb3f035ec24a16
+4cdd8525644ee4d7275dc19c3456f886
+4cde9a150cb17c5658ad8d4f26a17765
+4cdf51e4e711681dad9927d424c50fa6
+4ce0491f7cb8efdbd5408b726a4c1991
+4ce04ea860942900936d01b74b528381
+4ce0f915f67dfa44cb14fadf037cab16
+4ce4c00c01ceb27c2becf27f1f2ec350
+4ce5f1879b071eb43da5394e70820d0e
+4ce7d5a0e7337e8bfb9da1f2c62cedab
+4ce884b03cddd72a98eb6704ae7c798b
+4ceb0fbf94c6dc4058eeff3bbe2267f6
+4cee770b0ca3eb320581f60b2dc1205b
+4cf10c712f636a06721db29e41088836
+4cf17e0efa997c57100bd1c69dc0f72b
+4cf2dd8b082c2d3e0bd7ff04c86f92bf
+4cf37117bba5dc4ec64e0e8587179e7f
+4cf63f75c50ad61c7d71ab2bf25daf49
+4cf9fbfef72c2c5cb0695ca6d72ed40d
+4cfa4d023575d40222e12bbaf3abc112
+4cfb9d510352e653924f2b4a7c4f3a8a
+4d007566f9502810b4778fcd805905ca
+4d0152f85746953ff3e6a97bba75e281
+4d036a0446a0186b6c422d981026709e
+4d039973fa2b94b30fe519e41a184de9
+4d04f81e7ccfdf33adf0cdbd91ecba2c
+4d06a7c9e617cc392966b48f91700d83
+4d0da777b03e67ac165a4668e2089797
+4d11b2943a2577d708f7ee43904c3d1c
+4d136234d4430a2a6c04ec9cfece1061
+4d14d577e3a9cdc9df0f7e723616143d
+4d15964b44b6a178a5351bc1bc2b831e
+4d15fab596524d8cddd9a00335624bdf
+4d1738f6b96e0440d9892a3570c9dffa
+4d1742f36ceee2da405971fecc05e82c
+4d1749f1b37c96b3b7cc389f96c42960
+4d18de2204822203a001743eee37adad
+4d1c338fd39c23fe7f4983361e9b47c2
+4d1d2ae40f0db1cd8f35d36168a22840
+4d1d97f08c3ff33977a59c584e64ec5e
+4d1dee9bf9d8df55bbc2afeb2dc05e4b
+4d1f6d73cb5441ee3d44d1c50740dcb4
+4d1fa73133b7bb4f8a8e8f270c3c8a35
+4d1fb2f514f2bac7aad362cad207571a
+4d201895b255f80147be5048366486b0
+4d2461371b3c0d20e9d403e29d93301d
+4d297c6124a9d7635766c1153c3d1e65
+4d29bf077250e94019e58f8ab584fd55
+4d2ac36fd2b497fdda0913937e09ce30
+4d2b1cd7e0b342d7a9ed66a93c99e0aa
+4d2bf8828ce3d321e279cb429addb2a7
+4d2cfb153906912edce336c94425214f
+4d2d3396c1cf81e9839e18ab3ac0a3e9
+4d2d6eaa71a22fa63d41058c1204a789
+4d2ee9e6175bf710ed5f60d3c272ae91
+4d2f9ccca1a63f058a72b0b64c72528e
+4d307c41e6334518f5de283f2389e2b8
+4d311e73bd7a41b8f29998b41bfb108e
+4d32d2793a5bb42a875771adedff14b1
+4d33654d8030a6a78a1c803e653c4041
+4d37c0e6fbbb0d5b5acc1d8c5fae8341
+4d3845b3f9afd9a8dd93cb776fedeb32
+4d3cdbcc57698524bd2fbc945b41d6f2
+4d3d1bad01bf9e438828b7e4c22a1bd7
+4d3ead26c008263d640c1e811f8c678a
+4d400997728d4ce237247560088ffbcc
+4d400a1480a62fbde8fec434bf4dd8e8
+4d411d0e1daafbc50cb470cb9809610c
+4d41d83a4a49ad0b203bb528ad1433ce
+4d428199c38f8767080cc2d15c225d55
+4d42daa484471ee758bd85bfd5988592
+4d44430f0f23fe647f8e9e1cb0d8364b
+4d444e028a7e0efd54fcd2b5cc529360
+4d462e4548125083fd63b86a8f31e5dd
+4d46666c92a70d6027466f608968bec0
+4d46c5c1e59ed442af7903c77d095683
+4d4a17b8824e2790ce08b1fc3650eb3e
+4d4a46b2d1b7805840e49a4ed7b4f795
+4d4d1b7115d9e6629595c45df1df79f1
+4d50214a4ec4961bb27e2dc4921b2f5c
+4d540cb8b3c9eeaecd7546190adf4dab
+4d563bdeeb5f78cd0e0fabc9f369b509
+4d572e9503e7b649fe0ff0830a36923e
+4d577e6f90cdff2a150ac137d7c17d26
+4d5d653d8824a9865bd8e59dc076e2c9
+4d5d9ca8a103642efba3883b9e96627f
+4d5f5934e399d84f6b046fa9041299dc
+4d5ff5a290f896a5d51309354fdda5ba
+4d6252b6a5f6aae96e6b94e060ef084b
+4d6301f612b77ed571bf93a96f934862
+4d65593c16d62d3136c692c239af298e
+4d6705d28e33bacee63273f3023bb9ff
+4d6aa5ef2a4a28fd99f7e6631a3507a9
+4d6c4e7cb8bb4790bd369977b4f76956
+4d6eefc376c421cc348755e10c2fc130
+4d6fa4d56c5a6948aed1ba9569eba1f9
+4d6fc6ae74b1636840fe9bfef79d8e35
+4d70c658418a5c7f96d041499d4ab1c2
+4d72b8dcf98cb15e221142264b80afd1
+4d733611301749e6ddf2c85356675a9a
+4d7661527fbd40d156f07cdfbc72bec1
+4d77df19a3597da8f60c52905be30cac
+4d78feb02cf52cd35632c7c008f9fa87
+4d7a35462f946235e96c8836629c51ba
+4d7aa570b3272f1a4d672ff0eee67420
+4d7b199468a09b7500cee06565e8c80f
+4d7bc51e581260be45e1a43cd7766a20
+4d7bca3d73c7f8586ac97e79a16ccd3c
+4d7d0a06a36b9396a55a48a4dc013f3c
+4d7dd4973f7e474f2089920d83a93055
+4d7f2b38ad312193515e1a264408edf4
+4d8426a8e3b81818fc6d452e2d11ae4a
+4d8522adc3cf6e3ed82b4b1b20aceb2a
+4d85d451d8560b2df535b7371aa1d4a9
+4d88b781c640ed21d693895a4a8305f8
+4d89da8611064e4b8f120ee51a03ec39
+4d8d8b8a6413f78bfaf740524e31e95e
+4d8e13c4edaced86ad508787254f4ec0
+4d8e8c5d8b0dc5c64af4a008430e11e4
+4d8f973b37ce704f9d024d444ac27863
+4d8f98cc0b8722354d1c09c990a5da28
+4d8fff4cd183510d73c92f224a1bb4f1
+4d90506a585205448ccd443e925713f5
+4d9450d21e764dd94df09b852d0b066c
+4d953d63bc0d33b80829a33b82f2ffec
+4d968cbdca5b4b562ea13d9ac83fc119
+4d96f5d6f14b93cff8a84d2b0cb7aac2
+4d97992dcf9d59dd9d7ff74c5e208951
+4d98b065f0bfb5159f8a10049f03974f
+4d9a925e1a8626ff3021d2df5b6638e9
+4d9ad559deb8d6081d39b005c78514db
+4da00850807d54ef79b9bb28e2f9505c
+4da03ec8d5c2d9b31768e05204d9a8df
+4da2a631e39de36509465509c16f98a3
+4da4f416ba59bb4550fcfb5d18cb72a8
+4da7779527ecd6e8c80efa6495cdcf0c
+4da78bda3fbcb982549167183a0a821d
+4da824762c1d5087e2de46364cab706b
+4da979a18d8076a223afb020855946b8
+4da9ef00bd691d80b6e367b0f34a6778
+4daad7e0904f6e4512e05896e1cd4a72
+4dacaddedf6449aef26f4113361a83ac
+4dad054b8e6b68dcb1bc0e207d67f271
+4dadc169a307baf0b06dba86bd1f4a23
+4dae6269d6d6fb7f696e65f57a105244
+4daf4d6b6438a7df06e8056d3f6d12af
+4db0ab3639098a4ec8308cbcd81024a2
+4db353a04507c760474e6f07ab23fce7
+4db3ac33666c1f56a15fbed486a0a130
+4db58b03a10f3e9e7e2978c0ce21474a
+4db5d748d7b9a27f9fa364f2485ed49a
+4db64909fca43b4ee3163732b67f24f7
+4db7650bef330987b9f7fe54fb546770
+4dbb9828d7c80916d98e97e26794550d
+4dbb9d02f8881d30d7a4660ef3ff4608
+4dbd8a8009a7ecbc0667d541aa536e63
+4dc0445a322a47708b1609c3b24ae421
+4dc04fdc26e7df10670d21fa7c80270e
+4dc099d7fd49ccc6ba633f816fd8c967
+4dc21ca96fdea28e80acf3f2eb434fc0
+4dc2d61cc71e3e10b7a1e176987f8415
+4dc31d98c88aa438dd024d7c42ef05c6
+4dc3295dd36e7f057538013dcc2f0fc3
+4dc36ea61e3779b5bffd73ed333550bf
+4dc629c120590d75b951285df2efc233
+4dc893e3cf9d5aa4aae21062dbe882c1
+4dcbc6cf3b452f5d3762728d0bd0cc0a
+4dd023c313784e4e66454390f97cbb68
+4dd0f5ae02e94be8e54f4489c58f8732
+4dd1948411af64a4189ea96c823f88cc
+4dd23c4ef0a0e6108d9fee3bad995f13
+4dd23e0c16e46a71d004f5e82c4d54c4
+4dd34f5e41e99bbde744693f87c731f8
+4dd379e7b6e1fdc2475c7085fe9d36cc
+4dd54b00d1bdd1db7d59748806e32992
+4dd5b9eabac961a5ef057a8d1fa53ef0
+4dd64f7da8421be80d76661c8bb53241
+4dd69aba418a300f5df944c4a133f4c6
+4dd6a220ade0bc8f84f1b85addc6d4cb
+4dda279b3fc37feab4ff3b4dbad6b7d3
+4ddc11b36d972b85bf567ee71f46e062
+4dde35dfc1873e7de15abe105ef87b27
+4ddf3f3402baad0d5f7b2e18f93b50c0
+4de376a3e134c4f5f9892f249483f3a6
+4de4047c552c3b7f0b6fa9a3c15541bc
+4de5b934538e37e030fe6b6d911de5c3
+4de5f2a078f59c318d5394ca71d70fed
+4de76a814a2e22e86aded25e3c8f3e87
+4de77bf4cc61fd6f124cf66aa27c94e8
+4dea978d5c77e8fbf11691c2f7f68334
+4deb46f2d180a60f13e186a1fb90db51
+4debadb886489c480c69b0396603dd40
+4debedea61f602c94397558440a507f9
+4ded27870ed39c0c414d5b10b08a6253
+4ded28ee973157cbc5bc309815bc6c84
+4deebba43a9f96d5cb368f3399049e8e
+4df5172bb15fee78948a178904ba0a8a
+4df5c15adba7f1854ae00a9dce4b21cc
+4df65984a034883dd1259f8a1cfe2131
+4df6d53280dd229febad2ebad2548e82
+4df6f9d653efdc105756a1c11caed458
+4df90177d4ee7964023573fd41a3dbdc
+4dfb1c8dfda52f691c8fa13ffa6b2b8d
+4dff7473ffca9d4e6ac22955e90bd4c3
+4e03122f142f7d1301a38c8844b11331
+4e08c12df4962152457e12596d308229
+4e0921e958833846c7c5efb1dd37ce5a
+4e0a203200a41638f42e2176e5280c53
+4e0ecdbe2600d9deedab998424da4c4b
+4e0ff525b71ec0065bc40f96c3eaccea
+4e107553debb6a29a8744fed6bff6635
+4e11a6c771566e19fa47dae3bb5503c2
+4e11df37f3ab6003fdee530b0fcd3d47
+4e1533e6fc7c090f0934f0df2ee3e4ae
+4e156ccbbb87d1b3f06eb7cd1007b723
+4e15fed9fe096323f21347c76a86253d
+4e1877daa42be74954f4d032b4b3ced6
+4e195bc4ae3eee34aafd0dbfb223b4b7
+4e1bc963ad4a9a29f30fec3508812505
+4e1de1b5713f317ee955f08c60d4830a
+4e1e349b844b7c26182a90f5be97ca78
+4e1fe7c0e5bc563a466f1889be750a71
+4e218cfa800501bc9f08d9b91bbac990
+4e2505d288cfe63060c532251f365e93
+4e25127e33820bc620354eddacb23a6f
+4e252431d2580af8c9fa544a8dbd62d1
+4e25ceff18b592af21aeea1e763987a7
+4e2aed86bd5bae7a1b8eda758d4241b7
+4e2b1ea68710256d0e0612472bab5c58
+4e2ce9197110394786f68933366f18b1
+4e2fc6472283e6f05c08e3bd2b8483c3
+4e2fce1ad5ddec735c2a4bcd1b10bb57
+4e3121581393cb1e7dcdbd2d72d3ce8d
+4e32a56959ac4c9aadf937b24c9b03d5
+4e353e56fe8c6638c26870656f977ce4
+4e366ae4ed52b83b432ca5a32c8e0bc5
+4e36bcad6a6027f1e94cb5b4039ab42c
+4e36d3afc71e355123bcd6b58dc921ca
+4e39d1aa49dc5a8a058f3cc737486779
+4e3aa28cf1982ad04625629348c1a006
+4e3c206fa489f000f8040feb40990547
+4e3f8ab7579d35a8631a4e40d199ddbf
+4e3fd95cc87f022e8bc274f022428131
+4e40222f3c3a3d2bdec894ce4334629b
+4e41f02b3dbcd7cd245475dacb7c83e7
+4e433fc3b5fff12f4894acf94ddb6b32
+4e4459c1c8602aef9c77094de40ade5b
+4e47fac41f15200d9bce68df8f245358
+4e497afdffaccb24585431d2df83894b
+4e4991bb09c2f268b08efc328a643b36
+4e4bd8fa220b49ffdf828c17d5fe4911
+4e4de82b1e3494a9de7d8a169646175a
+4e511d2d749793ef16fba71297151497
+4e521568816af8440b220737e53b868c
+4e532ebcbede333d9593c9e8fb39d533
+4e543d7dd154046c833ee0f59e00366d
+4e557befa7bc776bce524530d08c749c
+4e5617c667036e976398bf9f1d04642e
+4e57c5cb658baa7465212b72bf596bf9
+4e5a0c021bc2e7a0d2b8eadc1841b18c
+4e5e1cccd382826050f8106f63b41d47
+4e5ffdcc0d39511b6fcbd4d927a97d72
+4e63a617105b72b89b1724f91cc1c9e0
+4e6591664f87f7560d6440dc6b07ea0a
+4e65c054a86cb5aeb169e00133d30815
+4e670ee7863a9946e9027f1fdd0cfcf5
+4e674654368866b821b8a7fe1165ee3b
+4e691082ccb87596eef14cb9412258cd
+4e694cb858a9f6c1103f3a75c540b62e
+4e69d09d99f928779567ea9d72522223
+4e6fa82f3ad6be8fa15dafa2888af819
+4e6fcae82fcb7a09ab29e88c691923d7
+4e71120b241aa9281ef0043850768505
+4e716784684d95017a8e08af29be1eeb
+4e71b7ce38325275fec06b095f92d28a
+4e7396dbfdd3da30ec057ed08a1759b2
+4e75667e5160ffb53b8053020fdab865
+4e770bdf47ecfbad742b418ef2ddfb36
+4e787fa16b24875a0b787e8064754e83
+4e7941eb52fbe81a69a2341a21524093
+4e79c0f0df09e94565867232896cc080
+4e79ed0afaa087123528769ae605967d
+4e7aac0f305ece6ccacfb58b9b530418
+4e7bc9865e52be0a4a3d94c6d1d8be9b
+4e7becefc34d876b1f3ba3ebc1feded7
+4e7cff2cce04b127cf4f884a30836ea4
+4e7e25f36a375ecea363016779923bbc
+4e825e8d3a661f11bf358fffdfb245f0
+4e84a8da41e90a5bb325075561685e6e
+4e856269daf3a56d0efc0398224365e5
+4e85cd87869360d2a60f8c956c7843b0
+4e863f3030229ef117c1e25cddbaf198
+4e893f0d6b17f195fa61c812f07371b9
+4e8986296c777778e9e83912e7891f9f
+4e8b62382e7f2ee6df9c061b2847e39a
+4e8bbad290645c786a15f8647178e875
+4e8db97512db31fdcb3b7f577cde567e
+4e8ec4741804311dcf4b94d5fb951aef
+4e8edfc70eaba0639d71aeaaef153812
+4e9144bdfedf1e20536bec375baa9d82
+4e914730f777e29590365f71d9d4251a
+4e9237cdb16772dd0ce058cede63b314
+4e92b5d85215c6872288d1673861fc39
+4e92e948e924e294389d3243caca3a5b
+4e943b5e9ec3eafba97659d5a6557ebc
+4e946d48a3fe46aff20d3659f8e717c3
+4e97015138c25d10a895b6fcd1a66706
+4e980edd76bc258df020dc000273ba56
+4e999b07ed34eb57fd7c83f675fb789f
+4e9a39259c0dba65b9a1de944a846f91
+4e9a86f562c9c6299cd2e6ecb6975b1e
+4e9bde5ec8a199be9ee3b888f45509bf
+4e9da2691c637f0072ca3a26be6b944d
+4e9dd6bcb6902ccb62e83111a9402482
+4e9f2f50ad2f447a0bcb04305805334a
+4ea0134ad97a19bcccabe542eda1bb4c
+4ea0e23b32be671b6f2cd66ca2dbbb9f
+4ea263c257e700be14083d9d64f4946b
+4ea33f2fa3d496e1cafb93cd02e60ad4
+4ea4656c51a980a7965b78235e93101e
+4ea4ef117b7d1a333d317657a7760795
+4ea5abd5c975aabca04427274ae8d948
+4ea6fe529632da52405ed79481cd170d
+4ea8595f077974cd2977f6eb28f3a953
+4ea85c368c0fe1a20c00d2644f08b937
+4ea88616c63c9a379379c69dc7196da8
+4eab5e77386911559358a84907817dd9
+4eabe0797099c3ea38223cd1ee6528c4
+4eac266d7a172f5e213b5130fa9065c9
+4ead46df9735ffa822571aaf129a3390
+4eadcece053cdf6b8385465929e73a36
+4eae696a74121da6e08bdb703c608570
+4eaeca52252770a64b2a8c2f0ec319e4
+4eaf2e17dc2ec5b0c80a6e1441ce4cee
+4eb115db5200d6557c457f9fed434013
+4eb15f1306ccd70eaae9da483cd18d2d
+4eb2e0480e24d991bc2bacd44b23791b
+4eb37c2e08b37e72b34b596d6dca5e3e
+4eb38956e62751ffa9f4ca750632b82f
+4eb4a683ca8277e9e6e95ccda97774f5
+4eb4cbd425bf334f3fff86ea7b2ec94e
+4eb5b2fedefcdf1d4cc7839e9986f1d1
+4ebc4a5bc3046744b142eac03640f9f7
+4ebedef7e5f9a907b50052b1e5a2f30a
+4ebf4e7f6784762d877d0df9c728c0b4
+4ec2f7bd978b83aa238f0a20fd426fc9
+4ec3e004a262f885b7ec55f2bb0b44b2
+4ec4140fed778f329f7e2be95b5ebcdb
+4ec7c5f865f5c6b7a9faf9ad7f7a4660
+4ec8cb25d1cd8e85dff742fa84a99cbb
+4ec9bf53452d57520f4a85ef03e30412
+4eca53ce86a71fdbc9a1020cd0777109
+4ecb42cb9984e04a86b2efe5d605edcb
+4ecbd7871cd58ab2c21dacce00cf4232
+4ecee14212a5a336bfdc578d23a6e238
+4ed08e10d0f3b72da861da9bab084014
+4ed261c8e056a3eeb289f2848f2ed86e
+4ed2dcf300b836e850aeec9684160a89
+4ed3021a2526445fa90a1b33f2bd9fc8
+4ed33351c67123751f3a3f0b5a6b45be
+4ed7760b17f6c3cd0fbdc59ebd91a0b4
+4ed853faceaf9d4cd7b19656d40d5862
+4ed866f55b071b51d3be537320ea643d
+4ed8b6513d4563e5d7e652a813bea5b0
+4edb5e11e2e3d75b631e902799fdd85c
+4edbcfa6d6d123f9627f01b2c3670b71
+4edccd105914873d36705b242a553e5c
+4edcd6a77ac222551d11d9bdec297734
+4edda37453113b1b3e2c8314461eef0f
+4eddade3fe82fc5e8533c3d34bb89bd4
+4ede54c4d79eddfa61dc3cb74439ca73
+4edf9349f49b8471dac8f6c87208b08e
+4ee1e3d06610c886cf4ec78da3b9087c
+4ee2736f74e9dbf1f432bcc4ce6c6e77
+4ee2a85054829b56e965c1659d2cf998
+4ee32b708e8218bc9cfdc347c8a27551
+4ee382ceba1f0aba0758be8199c8e48e
+4ee4342b80e715598c8c153f83561a86
+4ee487a19482d3125c49276f81631582
+4ee747d9eb14cfe8faa5e98f7823e203
+4ee756725faa75fa3b8b4b7aa38d091b
+4ee7c01f36c96faa56fae0dc200b87e1
+4ee8a9099e907f121b69ea45460400ae
+4ee9a949b04f6f8c2cc5ab15590d3a9a
+4eec0f0380c1036d194059038ae1689a
+4eec341dd60328d27fca83e063a5ffaf
+4eed3017c1702fc56c39f573f34faa82
+4ef0098609c04148923c092a9a21a9f9
+4ef017673188762b80196535024d711a
+4ef0361ff7201f78ef77b549f64763d9
+4ef3250947360cb44a7f6ef4450d674b
+4ef3a11f4a2e992b3953423455174e18
+4ef3f5d9ec5a6b7df3c21b76cb0eb77d
+4ef4dcb0ddb2931fb5b8b1b340d94f1e
+4efc3e7f25b64eafe8668127c72dc7aa
+4efcc43ed89043fdcd599fd75a40c308
+4efcfbc5416a38ff1343ea9ba2ffc2b4
+4efdafe3ffff48e26d4fc3fb6a116c29
+4f0155b6c60cbfdf366750a0082fed85
+4f01779cd64dfd1d2e2dbaee14ff05db
+4f0183f39eded12bc70a190feb2361b3
+4f01c63f9c70d6f54791d7b3573cccd6
+4f0511e013e9bfe4a587969f41ff97af
+4f055409828fcffa8ac15af8f8c875ef
+4f05e12c2617383e78ba67e63d5cc41d
+4f0fade7fc80fa561b41d4f867fde452
+4f11b95b26fdb3c9e6289267767e4ce6
+4f13ba4cd6f4b9db462ba88ab943e9c8
+4f146dad770585a75a97f899df835b91
+4f14a71b2c00beedc763404b65885d93
+4f14b9de37d95cbba67e05d2f1772b8c
+4f1583303461d9c64218e6b6c46e0eca
+4f16e1a12ce201eb4ce085c7fff3ddbf
+4f183d85494388583b174c4b54f1c79c
+4f19218912fe870f9b3ae18ff7211045
+4f1b099f6294307da01621e3d158e7f7
+4f1d04f5d6fa3953c28bb6674170e7d6
+4f1d055bfecea4e1fa94239df8539599
+4f1e0191e7a16ce761c3628a5e7106bf
+4f1e0224fc38d2e24b9162cfc07986d2
+4f1e8f5885a0655a9585468465e3f523
+4f1eb5d9362a16992e151e5e4b927846
+4f207ef15661aae3f963009b76a17f17
+4f210225a01d1272e5818c88c4af1ba0
+4f22ed862e51389b7918da45e843b27c
+4f27445536fedc698bb831ba9be40adc
+4f27dc5b3b035696411bbd647cee3316
+4f288ce57e7fb48b4cd7f733247c55fa
+4f29313ad46c093707d356cb3f29d277
+4f2988d667e946c5addfd09b10f19c56
+4f29aa56383c8c27cd739b95f1f1faef
+4f2a522ae224d5f051d4201559dbbd11
+4f2ae6ccb6da040f5609b36dbe505cec
+4f2be320180fc16dce9c683912c93f4b
+4f2bf6c582d850ac42e32fa4acb36111
+4f2cd2ac3a7556f0f6fcc47b284df2fb
+4f2cd915fbe71ef1962a94cc511efe8e
+4f2fc88404d4f0c2222b785db0675849
+4f31e303571ac9dbace3eaf33859af00
+4f33d85c1c0e16ae7174a2fca5abee64
+4f33eb53fcf744def1e38612a7f56927
+4f344e3e23a272dadc1d0122c4648f52
+4f36914483f8c621989e9a6a47b93cf5
+4f38f7016487e20d187347bc86c9c4f5
+4f3aaf0562fcc24063e0d5396892d7e7
+4f3e64637f0fe5f99bb85fceb17ecb35
+4f3edb86c8542999a695415371904561
+4f3ee6386e8b717ea3ddf9a673ea983e
+4f47bfc48cd69b10c0b995dfe625eaad
+4f48dee1786480e1057de71647dbbde6
+4f48e60858dc789551af56083b5839e3
+4f4c14821cf1feb624738914f98bd4c9
+4f4e3747b33798a6f56057e06c1faccf
+4f4ed1d1fa97143b866ca18c249e0442
+4f508771a0b6416abc44ac911b5224d9
+4f50b4a94147a5034f019040becce384
+4f52f3fdd7b1d0ebf8938517ff1adadb
+4f55a6a69f4fa2f58de643977e532e87
+4f56f5886155b2c3df324168c5417654
+4f5788a73760a3017b5afc1b4baaf5a4
+4f585979d91aef504c7266fd40fe6bb2
+4f5abe53c16b09896daab13ae221ebe0
+4f5aece007e1c4719f1a48e9cf26a166
+4f5bdf578e059ef6f30bdb772d022680
+4f5c5585419a9fb14bc0ea77d16587a4
+4f5cafcf7ffb057b9382d4c8dd17d281
+4f5d0978dbaec80477f46405b260150f
+4f604c2b3b15e4815c6dd60d51705fec
+4f6057636433a3b727f8dfe04c8c21fe
+4f646254091c840b76f6e286eadea0fa
+4f64921026953edb6bc83a021892cc06
+4f64d6a670aa60104481b55ee889c58b
+4f65c2209e3ee628ea1d045b978208c3
+4f66b9ea10c10f3ab844c1512a23bde2
+4f66fa624ea823eb116328b6816fd5e0
+4f6c4bd15ba77045a1addd1c93e56d1f
+4f6d1f13ed47ba986e5b63f2645d31ce
+4f6e5faf600cbc11c28f7c139d6943a4
+4f6f53fd02a978db9432c3ee73842543
+4f71a0450c91a800340ab58e2dcaa8b2
+4f732b83011ebb457ddff699adb0aff5
+4f7476ec7fc7e81a18be156c556e7058
+4f76f76c7340b2437831bab6457a60ea
+4f7839e45a1f67150cf314e972e1d5c6
+4f7b868f7d6f5366037a65c15c3d6e4c
+4f7beab435b94c8c2680c52317483ec8
+4f7c418b0fa6eb8fbb05677125b64966
+4f7ee34e9deab9f670872bd088b0954a
+4f7ffbc0a42825a6db25f9adf1422401
+4f8243dcaf8145d97c3a7db5759fbf59
+4f85e53fd7e870cbd9e36c8008cfc703
+4f860a1b246a9060e8a314ba5aef124b
+4f869fa2713344611338a84fc6d626b1
+4f870041561e713adfb058c0c5c0c6a2
+4f888cfbacfd53389cf07fcf020b577b
+4f89852b0b7bfa565004c3d3188a10e4
+4f8be3729c02abc24169e633312efd6c
+4f8c5418fc4f2aeaeee404dc43862e26
+4f8c55122e3a44e5fdd83f589d28a8c9
+4f8ccbdcd017115e35f28e3bcd776c97
+4f8d8d174195394feefce54c0226496e
+4f8e2f384e3f6472bf51aba7669ca3ea
+4f8f1bc2295f0d3339c974bebb403799
+4f8fd51911484a75996bf1ce4aa3a378
+4f9030ce41e05c95a588128d2118fe21
+4f91f47ad4280a66378d0922a7ba30c3
+4f956475c2df8d82cbdbfd67915fe998
+4f95dae3132285cd3d5f1f8cb4113d87
+4f96fe29513b4f2d334954984b6376fa
+4f97af31f6f50ec157faf6171fec7dea
+4f9bf2aba5e6dfba7f9da70a44be9a53
+4f9c49bb49e8f818872bb7da765ebe16
+4fa098e48d8415a952ea73e8bdc06b9b
+4fa37c81cac27c9316d94e6206a030d5
+4fa7dbfb933927b4a964dfa5bc2a8074
+4fa845c7adb9addc09c51cee1d7caaa2
+4fa9f3120333ebb5cfca1783851df323
+4fab7dfcd5b14066ded7c03293c1fa22
+4fad547fb97a82bece8efb7dadd5c538
+4faffb1a437067bb5e01030ee4bcfd8f
+4fb05135847c3fc26a2eb00d92152607
+4fb1a665ab70eb65cf666fe268cb93e0
+4fb2c696fbf97427b875867aeaee0116
+4fb2ce6ff72241b33c7a25194c15985e
+4fb320c153208269dfa89e6688534a8a
+4fb589f2c9f1f6f343b1330c205d627f
+4fb594abdb8c3a5d52e3ec7fb0e159b8
+4fb6937e608d962b68fe4fa37604bf17
+4fb8471348b397f8c40cd5b025f03064
+4fb94b6b7266d19fc0e8a7923a136708
+4fbf81afff921fd0052f8832a24ca29b
+4fc0be4e7662bbf64030b15b475484ca
+4fc0cb7bafe886bea9b335b8d28822e8
+4fc1d36c86c0f2f95c11c78adc830952
+4fc3cf28ecc9e37c1b77ded51df6c273
+4fc61108651c0fd466fccad318b08721
+4fccfeeae378fcae675e03ffa26fdea6
+4fce0dbed230fa3d750e9b3bd4698e74
+4fce5dac2ff06c0125c5080d6f0b7975
+4fcfe5d072b547ac15196cfb0fafd933
+4fd0479ef34aa0347b35b7e1fa3e28ee
+4fd050d75e8a909322918f111c491a3e
+4fd1fbbe6e51e7483fb28f678bcd71cf
+4fd2dba6ffa7a9a22a84a331c3b046bc
+4fd355e1c8dfb45615b15f64beaa2871
+4fd3e296eacab1521c60f89a66eeed8f
+4fd4cb601693ee32a21f7a4ed5b4f4e1
+4fd58aa59ef497460af721698fd4143b
+4fd7b771620ada116ebb031787201830
+4fd97f74147320cb6276c4b8cdbbf1bb
+4fda1fb05a3c72a2fcc45f0b28c87b7d
+4fdbae56b8fedf211af32a64c763070a
+4fdcc0c7b0a5d2529b4b0581903adb47
+4fde5d5012b85d197d30f8aa1bcae037
+4fe00689acdc3a03b950737789bf4a28
+4fe47a878c6ccb38367f1a3e0faeb1ef
+4fe4f23d343ff283cf8980a976ba9a02
+4fe4f6844529d625f9ea57d9e6672443
+4fe5bacfeedfbf07e7709d0511f1739e
+4fe74fa9330c94513e68c16cd32f16c6
+4fe947eec101fdefdae4019a0e0da729
+4fe9aad46f5d2e3208e3943bb27f6152
+4fed079bef01af38fd05c55e76a0984d
+4fedcd0d97b7e39eb42f4651e9ee2c43
+4ff499b93811ae357be7c6046d8d2731
+4ff4ef60fd607e78b22654e21fdf680d
+4ff5004d4e8bd04511c21b9df39c4900
+4ff53154d7e8e85c691c702d0b3746ea
+4ff61040177bc8823e0233588011ea78
+4ff6a4046994a6e48a7ca7114ec7653d
+4ff7194fa6d2800a77e15537dde4d8f8
+4ff8d64367e4af36ae25446d087ea012
+4ff983f642461588c35681667b7379be
+4ff9ef93f87b28406cb6dae77773c260
+4ffa03e5387a0c09f3a82bce353d7a2e
+4ffaaf8a88427771155f1dd191cfe693
+50028bc9550b6846beeffd17ebcc3d2a
+50033fc4a214d5131764338b263721e4
+5004f156bcad2cee429e0240418969b7
+500720bab658f8a75adfbadbb4ac6f9a
+50078b74ad6eaeed7d49cf89e10f4e5b
+500a1de4ce79e12d5ddf5d87ae834df7
+50103b6d4e10f18666a4924fff3e5e0f
+50110d273b121f2bef613cf6e8df427a
+5011fd98a6ebeddf080ad8aeeaa44ea5
+5012804725fd8580d80ff2610be925fe
+50135cb0d4d76c575316c692983ef32c
+501972b6604d0244d99202b4e60d704f
+5019e4fb5db79364d85b1ee787aff994
+501bcf6680f8f3eac0e6c2b696b803c1
+501cdd01a4e8a1b562e99a40a4504219
+501edf56c8a17f509d495558e66132d2
+502566308dd75fd8a78a755ebe9fc396
+502760a1d18c87651ca4f53f89e56bcb
+502f4c4191ecd2682c7e3920ec669651
+503066e9de73c5f71972f8736402cf87
+5030ff731e085d061692a451cec29941
+50315dfa46591fa98d1dd29cb6fa9f77
+5031d604ff0fee7eb98d3a381907dbcd
+5034ccb4c08e19a43f4d617f058eafe0
+503a2677dd1ea2730676a66265c7d6f9
+503acefe8718af00574041c414153c41
+503f69e62fce3aca7aa4cf287d0a086b
+503fb060e3e74b78f10f3e8fff2872ac
+50424ab07d42a1542563eab9ed59a40e
+504723841ac6fea01ef4a95422c94ddc
+5048d8f3abd2d984195e86e44b82d6af
+504aa04bca7fe1364daab11d7a290b90
+504ad0a2306affc3f21f5bb7a06a4221
+504bc13fafe1e3d73cb30be53414fd50
+504cdaf9edf1eb98c42346e578b98fb1
+504fc6a07f41703520c23dd4c77f3f50
+505043d5344dcf4a1521a324513d34b1
+50510e297659b03bdae6ff558e9c6419
+505449fceb6b80034bd728ba02632055
+505620ff92c5c1ad39144130cf4c6a8a
+505636ebaff579bc493b91d96866f942
+5057a4f8330d1371260fb28630c34bea
+5057eea2e7cfb79935d81ac23fef8c75
+5058a98a6446693d64158ba82aef377d
+505af381a69371ff0ff122206902849d
+505b335cf161c2be74d2d9803f3816b2
+505bda1e15ab0ff92703f248c2860d8b
+505c1f7ec0dda70362ac1e53eff67d50
+505d0cc414ff9f4ce703fe95a303e209
+505d9c9b022d8cfd9abb1da00db66cb6
+5061c1c0470532b6b69162bf4f0b034b
+50631d46a35d95140da96b8bebd5d34e
+5063250eb40c305240577b7e6f2169b7
+506597dc9e330eaf61840e915e446d84
+5067546f4b60631fe963c255b9c7a9f5
+5067c75fb9ffd5dba353493eea89d0ad
+5068b7aaaa801e0352c74c144ee456f9
+5069076c76ca9f428779146f1346fdea
+506a0960b6ca3180e41c6a70fe2f74fb
+506bcaea9038c15848a59e3526538035
+506c6376433cf00251112b7535bf3cfc
+506d93d30f6358aee07a415ca6dc0c14
+506ef8c3509480b139c09e678d8a6a4d
+506f3d65e231d2e59a6097ccc53278cf
+506fcd465c6586439d5cde65f70af9e5
+50741f79b96ad2de28fb8947952a6b21
+507444b68bd8d780ea8cf64eea2cb96e
+5074661503f1ad716578b442f7c937b8
+50756f2be4f2d1aeb4473e72b76599de
+5075b56c7667e7ace961409e48459c0a
+5075c31ced93733f46878cf2725bf3cd
+507978cbeea547b80d2408395b72e00a
+507af35bd2c4a6c5a38e25cf904ceda3
+507ccdaca2e8c993e6808942c9339b87
+507dd86b464f4ddb5ec3425fd59fb09c
+507dd951154a708dcea6eaca0490c243
+507f5f74dfb8d3678d739ff3c5a04922
+5081222ecd02f76358c0a6b064ecd7ce
+508243aae6951a027cc273efb3ba5e09
+5083a6894808501b742f1bef241c18f0
+508407a26cf0e19bf322514d23c0d8f9
+5084f41a1d06da79d7778bd50086dbfb
+5087b428ba745231068295e219f7e5a2
+50882b771983a455048d26b8f4563df7
+5088cee84155ef6e081aea9cff4cf39c
+5088d369235e78f30ceb5a851058789e
+508a75c18f450163ea9a96fc2758655e
+5091968a4e2faea2f5bd6756e406975a
+50931c61f9d790ff41fcb449ec0950ca
+50943902f960ae3f1d8f220f692644b0
+5095e0b3e5d4f42a59c46dc08644d97f
+50963b8af6c435561150deea2df0a65c
+509dbc2f6b6b37b5b9a88e34112d8a51
+509ff6181617a97488901bee6235a68c
+50a10e89a94d773a84a4bb99bf2cf251
+50a1aa138c31187bc3976cd062a2519e
+50a5781812f9208f3ec6e68f378d0d0c
+50a7368454e58f90430dbc902d14a67e
+50a7d8611b2c5ba70140605c0fabee59
+50abdd2efd4519b1632b6730ac076799
+50ae62d9bdd8ac5d00bfe89a3d05a4b5
+50b07cc6b81aa969b6f354ed32926f27
+50b0d3d792379dfb2c22ebe6cd3ba2ee
+50b18992066068fa55b2e2a4fde51645
+50b449bdf9e43272756a934a16ea14b5
+50b7cb12d500e7a85e6e2965678e1d03
+50b7d0acb6575322679f80f47a663e07
+50bd9efaa24805765e902c7e2999b4af
+50bf0b01ed8b442091a9e9ded8b99de1
+50bfaf2ae6295b00d9519b59564356b4
+50bfeef526fbcc4ea002615373e4c12a
+50bff042f7fffeeb5a236f3d331bac1e
+50c0483cda62dbf98aea2baa07a9c39b
+50c1c8955b673f95b150e23297298874
+50c2b398906a66dfa210877565c30d1f
+50c5635a5fe322fcc5d9d794863e07f9
+50c8a0bb65623e46ecaa4b2de62bc598
+50c8b381f708bcaa0194ae070a5d52d3
+50c91b20dba944682d8dea61282289b1
+50cce9958b206c200e833ef0b78c597b
+50cd25d6907d9ee8be2a211620c4c5eb
+50cd8054c6baa78ff45ee8ef3d99575c
+50d05716026c79d30a92e78ac35809de
+50d0fc818641a73e67eebff0eb21589d
+50d1136b2d9e346e9ff050d472f911b5
+50d127e88d0bd3c98daa8006ea28db50
+50d188efa228529e2aad6a2ba7d95044
+50d1de16973f3be118568479ba96b9cf
+50d4ea2f83eca7276ae1bcf7344bb736
+50d5b2945cdd11e492547b9896926afa
+50d65b56fd4c9f716af5ae467ccc788a
+50d6c60e488dda4fca99c7693da0f4af
+50d8381f3de065ce0404aa0ceda63a16
+50d99671b8d50d08c754a0e93bee1310
+50dd1708be48f36fb7a0739daf4698ad
+50e3d5204efb90a764b4fc8a0783b695
+50e6ef542dc892adad99b53e18e731b5
+50e7ed89c27732b8f45e462379ed6541
+50e9c70b6476743cc0599195c3a0dc4a
+50ea3a2149fd8fedb59be2a650b18928
+50eb76dfe6246a704f846371d1926d6b
+50ef91530cd2f2004a89c5623a094295
+50f0281a3312f994e45ed637a6e84321
+50f15ea61da0a225661b9d45c063bb60
+50f514ca6ab020b305e43dcd6e54591f
+50f5939dcbcadca470241d448cbd203b
+50f65394e6b823a0c0a403dcf7bae3a2
+50fb1498d3b7666fd8fd3f1f641872f6
+50fba0b0b9d7cb1a2e655fa16ce1a78e
+50fe8137b900e1335b2b1cf1de23f311
+50ffce71f24edcec31d22c88a1555a53
+51025779cd25b1d5af94ddab19c96570
+5103c86f37301240ee9e2895fe70cd86
+5103f0107aa408b0e7d912b02a4b815b
+51042e0fb2cc1d12672b2e15064988a7
+51046ce4b6b873eee3a3688b354a9c79
+5104c08228a5efe28ff493a5862560c8
+51056dac3be674cc6fac108d41a64aad
+5105e343039bfd9c2eef71dc51d3e0c5
+5108a46234af5dfe0bd85aa7fc623b50
+51094151484506345802a8aee722ea5c
+510e7ad5ba61c753cecdcb5b272e5ea9
+5111fe0515e3734d76f8b9400a329146
+511393bcdf3e52f0a580a50acde1964c
+51142f139161c15026799d0df5cc2fca
+51178f8ffe267a4985df5b403ce23830
+511cf2df29aa0fff54fbd621b3f44cea
+511d0324d8c5dd06643d4c54f34a14c8
+511dacc64b45b3c18d6d60326924c7bd
+511ed03a69dd3628dafe6244adeaad2c
+5121fec93edd43c587943aae3d4ae7f2
+5122b0130e2a51d0ab38f262c442a0e4
+5126b518cd85559bc29dae91fe424339
+5127110cbbb16a3d8f245313e8646c8e
+512715e138ce7064f554561a4aeee189
+512760d864c8d7bbd37507c2bfa4752c
+512811b8d5fc13ae4ac1067136dc58b3
+512aecfc3b0e8251d9a3a3c4647e1e02
+512fb55153cd0647d415e1afe604a0ff
+51301d9bec04a96a4a60722c29ac30b4
+513025bdee28f854f9e2400554b5f1ca
+5131e718170bcbc174cf55382b8e6d0d
+51320285683919770f2faa4c6f7d602e
+51374c799ae60f8816f51e4a776fc05a
+5138d515972d4dd4588fb67ac0a1f819
+513a0f26a252667f62e549ac035f5093
+513b1c35d914c99316b348199fb79ec1
+513b978e58b922dba40fbd9ffdcdb454
+513cd6430cd4247fefebd590474f2b86
+513d5f5b1b6b0287d7ed9f5826af5f61
+513e3c2c2ec83c1710731807630c3c05
+513f784a2c4515f014de0adb2772a30a
+513f7c1883393eafd6ff9e25dd84a6ba
+5144c447e129a36b7ae55417884091bc
+51461607add9229b97f16ecf8a0a3012
+5146c455d7eb63ca21c75a130a223aa5
+5148c0ece381d5633eaef9fc2e36f183
+514a0aff366ff8ee455c3bf1cee0aac4
+514a294c2322e129d19fc1584d74c577
+514adaea7e0ced7a7ada382839a82005
+514f0a9bda96295383c939a25bea1909
+514fdbecea0f3f40544c0aeac44ce693
+515106097017542ef0dd6512430258e7
+5154c9d72e55f94569378d2f3543d787
+51571da43e45ec568dc1791a7897519c
+515844ae6b4f4485e5eb821e48953928
+515aa1d5e339652396b55c2c005909ac
+515bff639ee1dc9ee0a903b99120d5d6
+515e93c6438d0d4f52103c9c014b17ef
+515eff801f732419b9f824d3f2180397
+516280426cb783ce2ffb535827ed98aa
+5162d1510d40fa43643925c3c01397ee
+5163d66999dbf93eeb9f0c99af290826
+516631f2ef2bb8bd50dc3a86db14a198
+516743ccca71e93f76350517615c6066
+51679a1a8700c2e66e7fef8d1307c44a
+5167c4246728f083540282bfdf6363ef
+51684b7807ff0ab7ee9b1be2c986880e
+5168e3735e2e118a737a4d3303a06cd4
+516ac427994880370839088bfb3d02c4
+516b070e435988c3899b35b86e2953d2
+516bc5136c590a9b2387d8904d7b04f4
+516c089665e6f5f5cc2bc99c16089dbf
+516d19c362729c70b377f1e8698bde4f
+516ea60b548d7992df14cd8bd5852017
+5171d5e043ab6d315e786b47666935a8
+5175c1977332f8ec57772184834289ca
+5175e49fe2e7e4597db86f938158eed9
+51765c9627e205508fe721a41225bb42
+51768902ac94452774c6d03de394dab2
+5176a34a95d0390021464a74e8c94b2c
+51792c5275a43c870749b9294e8fedad
+51795e003c12aee8b7d69897e0c842e1
+5179e4db03602b2b6f4154a3c59e2163
+517b4eb64c2725c037b13b096ee06ebc
+517c2d84efdb86583a810330ddc12297
+517e0f2b2b9af39804d9beac25f7ea4c
+517f89d7aef428be8915adb8625c91f7
+51807923a483e24ce0399c82e34f6302
+5181476986315b78a69542560e66d8b9
+5186f02aa7c5c9460ac6656565be4f69
+5188cee5f6224418f7499c7afd0990cc
+51893a9d9aab6442558294ccf6519618
+518afc3b085fdefe6cb57350195e4abb
+518b47a1cbd93ba412f0c2d7e7a4ec43
+518c52a6cec33458b786929dc56fe671
+518cf9bef98c4121fd0ffad398c91cf3
+518d292e1466c12deeca4ee24e207bb8
+51912662690fed540cc6b01e5ee022e7
+51919d149ff0b15deff01d24615f4948
+5198d3b8aa3412dc737a38e2e0300ac5
+5198e5b2f5b915f08e9d528c63afa149
+5199b8331b9acc95bb61f2232e981772
+51a1e213a1f488022511ffb053263afa
+51a2da1832c6cd2ec52dc0542fb1ab97
+51a2dbd1a649d7e85962ddd8522fe722
+51a421a7200cc6be612dd530a03375f1
+51a46f9a4caf3e0048c5ea5e29a985d7
+51a6d41031db861288ff378ae0bebd6e
+51a9cd4675c5bc9eec8c8ba3656b5ca5
+51aaa1f686a164af20efa5a230b52c2b
+51ac42e66f90baba12bf2477b99a815c
+51add48eb0c9088c5a1a0d99548bdeab
+51b1ee1dd4ebe9c3d229cf8874ba553f
+51b37ddc1acde6bc6d7cc05597f58f14
+51b697f728e54a57ebf4beeb2f7f26f4
+51b7b75731d08a8e8803f5768e7b1d06
+51b96c618fca2bd539fc2e56ac46ea06
+51bbed6e04a0f234fb8e0b84b86f6cf6
+51bc3fda6c506e444f8dad9b2677c14c
+51bd383240fcce841f61c926b89d48ee
+51bdd99c74a7dde069fe5d2bcdb8216e
+51bf4979603b25ebc4555c0951161a55
+51c2287ad8276a3c9c1d6afa70535add
+51c241d2b43722d95ccb945a3f2fe8d7
+51c2d0abd424f88f6a112d0ad1f8005e
+51c526fcacf8e0f67e5141d1fdfb991d
+51c6355005ea0ac3baafee3517864c45
+51c7dcb93e6e4c35106ebd108c84ce50
+51c7fd71cdcac0c5ad3c04e9e8af1a74
+51ca7b3d7394624af7eeb804cbad8fc8
+51caffaed0f001e618dbb54308957084
+51cb55861f0683b8eccf6df914499b38
+51cc12e323d58e20206b4b8410a11364
+51cc4bab29df9a8bc6d99449f3e9ce80
+51cee441007cd28d8c1b9cdb067ccbb2
+51cefe631e0cf345bed91de296e0907f
+51d053e21debcf335b1a90b979c2d711
+51d4456478fe2f030c0fde7ca81ea13d
+51d5e7233f6b31ff716e8d531ae7f40f
+51d618829c18b3ee7d3298539556644e
+51d70d649e3711bc3f249c57cb372a82
+51d9c95bfb0feecf6c811f94e1a337e3
+51de220ef593320509f08d394e6748e1
+51de58a3028fc5f126799a95d015a282
+51e09eecd7f5e21fdcc5477d07a2af33
+51e0fdd432828e255b47240529d88dcf
+51e15c63c35ae5673d7fbea36ad63382
+51e3be019889fb2d8fdd7fd5d69cf43c
+51e50a7bb9572e14b6d7b6095c59a617
+51e78667e9c2773de119b857c1d72330
+51e7a1d6fadd0b7b7bcb4e8015d407fa
+51e8b4b921ea22aa1a39f1531b635d84
+51ea80e2310e96729f81979a1104302d
+51ec8c9776461a7b508bd6df402103c7
+51efbb013ff28d45ffb407dc36394907
+51f2d39a789873052879976b9d6c1aef
+51f352e079ecf22a09b621cc63409e09
+51f68f5f212851a2c0d0abde41ffa95b
+51f719f2b444cd3beee8cf55741202c2
+51f9388c1f661e9fb33cfe5492e99174
+51fa137e399836dcf43feccf5fc8191f
+51fa79fcd5bec931c4f0e3951c54ed14
+51faca51e5954ca26d39c03c8b77d581
+51fb99cd928c6cdc55a78112d326fb4f
+51fcb752075afff896ac12d809acc4c3
+51fd8adb4cff16b05b99cd7305e459e4
+51feb9aea43db7bcc0c5199d7b9a0f7f
+51fec8af55b322dd46860d7cd3719ea8
+51fed03b90c0a5d052fae13e69266d2d
+51ff4c3487d1bbdb16a2e1f027644379
+520171213451e1ebc54e03e077477377
+520278815ed992ab3265c48249df8d5f
+52030f2c1c050f59e1520802fbae01f5
+520325529c0ccade21c210c6771099ad
+5203d0988bd0529c5f8c7193c8485a82
+520962ba20c0c42c5fda41013418b8c2
+52098fee5cbdccdca26fa96630d80f6a
+520e1de047a24a938b9292e7acc879ae
+520f383ee38e7aa57490dbb4afb7dc20
+521229d81e0e43febd04c5481f6171ca
+5213968bf33047fa4f7f12a12a4e9169
+5214560b9b6312c4fc45f85a802a5cb2
+521be75b70cefec8b38217c0b2ef7e0b
+521fa978e4301793993327642cd25fb4
+52206b6b55c2e744bfefc52686afa123
+52253b4f7559297827e115007615ef02
+5228f7eab0566c617b2aeec8fd0adcae
+52296755499cd21274236b6aff3ad3cc
+5229e72fa7a3ac50505d5373915718bf
+522a84d48c17d7f353eb99d7378abeeb
+522c8df73642669bdc40e75b52a5e0bb
+52305cc395699a26060f98dd65eee5ea
+52310f26b00f603a77689a7beb8d0f1a
+523113710bfd80f304fa37ad3a099347
+52348a7d9720cef78653922dcf58a5b5
+52354c87d12e969b613386856880c13d
+5235c6c43617b8853d63b41f2e38d8f5
+5236104d0ec1bfda696ea5a3b5b7e29d
+52361b25793b0d3f0b16b5217f9cbc9b
+52390f12923c68231b6d9efe5a725d47
+523a02ea35add4bd39cae5ea2327bcba
+523b985bc0d6cfbc051a4a34514c16f4
+523bf92fe5543544937769575e9a459d
+523ce4ea335cca1427540af34944e7e3
+523d4433bf00ae8534f932a1f2b0a64f
+523d4e3cc851d5251f092f021fffd4fa
+523d694ed8bea2e15b308560ffb938ea
+524106c64938f8b43ea5edc81912effa
+5242b5b59107bed19b216ae8425754e1
+524383766acbc7f229c0116b5c3e6f7e
+5244890f6805f17831a8c4f86bda08bd
+5247ccb31145d2cdf6ffbcefae6b4d04
+52493007b5e0cbacd755b3a3ad2d4c79
+524a25b9d27b360f5adf86c38e59a824
+524bfd33097cbbdc699ee57f8a8e0383
+524cde52c476a89b3d05408e292cb65b
+524d9a9fc833ba66e56c0054d4d160d1
+524e1df3755d48f34d6b7014b0c75b5e
+524e8d1bd93f0b74f6f78517952bacae
+5250a8559197aa274efe356bf5e8fa1c
+52553aa70a78c7fcc4c45ea8a443c7d6
+525580ffc74e679d5a89530f497af735
+5256aeff83b307a9dc29bde51c696050
+525734290639c77ce5196fce0c710e16
+525764b51b298fbf0d32a4dcc4300434
+52583beec4461481f7d507b246d290b3
+525ee47df107ac05348a8094c2ab21e4
+525efac4fc2b606c4dd81cf401b11ffe
+52623b84258d4dd55b9eae1f81c1dc04
+52623fe019424df170d19c54d78cfcf9
+5264ffd54b8c5dba90a0d55b32cc93dc
+526542b8f5ff7b958c0ba60df91767da
+52658ba228477a4936a9bddefd1587f6
+526968443d773b476f9b9ee4c818a04d
+526a3be9fbdbe2c5fa4763d286afdc6a
+526a4df188a0b75f070fa0f0d310a44c
+526a871713ff39f4c055487d0ab1336b
+526c7a69b160b1b0f5591b270d4159a4
+526e7804e6ba4af67a6b20b26b1b85ef
+5270a059e8e476ff45da6479b516c914
+52754339e1a157a8eff0ee2c0a99f6f2
+5276d4306c9a4ff953b64f03064ddf7e
+5277156589f74e94bb8859b3d84aa552
+5277b514690a61b4d9fbd6958618fa24
+527ab8144dc197e572b53a3598b6e62c
+527ba9cbbae5f4bee866ae74b170dc88
+52803d7d2a7aabb5d954a5413ba136c3
+5280ff760b526f11342020f4c0a51d89
+52813ed2bedcd1dce4159c7c3a38b4c4
+5283fb08ecb599fc0e5f0d591553b15e
+5285e0ff46a723267cddf10da4d41986
+5289d77ad8b71d2cc2ad4243f17e30c3
+5289ffc88ff0442cff2dcfce0532f4ce
+528af8a5498b754a2c59e692e2085631
+528c3ca3c37f3ee1f1948635aa996084
+528dcc70d5fc6d5476353f36fbd46365
+5290637ff156f9378d3ca9fa8e36baba
+5292158bdf359b4a2292fd84e4017af5
+5294e4422b391ff4b9bb39147addfa60
+52950a83229b0487d59965a0cfbe49e9
+5296815501e5eca9d3f63b4fb7258ffc
+529850edd9ca33dcb66eec55815c3035
+52986baba17dc73806912fb20055333c
+5298e1d28d03607ac5be5407d0961111
+529980ae025ae3c1872a5dd191174817
+529a85b89cbf5b35cca4b3c613c484d9
+529c79325149834aaece1ec426df1845
+529dcee6d2889fa0e578faf96301edd0
+529fc3f0067f9dc25a2b4c5155980bf1
+529fddce0401d4505a483b4aebd5c5f1
+529ff74e49db5b25bc64657e0f29234c
+52a05ca27bca1bed98efefa0d09e4c29
+52a0b571d68868311170138115c4df8a
+52a0da128df4d28a88ffde4e3e2baa6c
+52a106636b0d3b50ec568255b01ca399
+52a1300526424d09a4304bb482a66eba
+52a1d21fa7707df873eb0a42fe6133bf
+52a20121814b684f5dce8a31e0f485d0
+52a2700e325c6a0e4961730ca9c697fa
+52a3d1694d9ef7ad0ad055087c05b9c5
+52a45cd0730585e90c54035a1ad7ecce
+52a47269eac840ec0a7a95f28ffd4fbe
+52a53ba4f9bb99faa5e61cc0132cca95
+52a542f0b23bd88c2ee182690e6f4161
+52a688f4f8baa8b5be367c98062cf723
+52a7f6e2f7e6f364227e140136887524
+52a87d049123a60c34eedd847fadc3e3
+52a91c2d2fee0274c420f4245788a0c3
+52a9c3c990464234a2ea65bc1ceddaa2
+52ac0fb766dd9788dadb54c8cfe5244b
+52ae0fe40d13c2b640818b7d5fbdedb3
+52af43bb2a90177324b0332ede38b100
+52b0e0084151b601df19b6ea5e84e618
+52b11d3ce5cd5ab64703448f2530e202
+52b23f8caa522c1bc993f811f6cfc6a1
+52b244ae111362b73c0e215f39fb7da4
+52b6610bd472bb80920c30667b478f5e
+52ba05e8ee1a12c91deec5ee229ac394
+52bb21e21d13f52b7d89b9927eacb152
+52bb6c18e026bf51518d64886a7216d6
+52bd596d40c14e531a4393f0c7d3599f
+52bf1c5601b0cbb6235bf19f33ad7285
+52c153e20066d7620131da39ec8c0a2b
+52c2dac95dabaebd032d343e33f988dd
+52c2e59c4e0d734f34efcd6da6e1919c
+52c3edc19f7a117a355ad4a4e48a71de
+52c61e25d8dc5f8e88b556a7f499dcb0
+52c74f8cd6730cb89d4663ad29a36d56
+52c79013406d0a93f30c90f6428079f4
+52cd5bfae8ac37ea597127ceb9683244
+52d719364b4c948efd22b7245428756f
+52d7f48b80c63212f4c6493922eb32d3
+52dbca5a4b893c9e09d7947af221c41c
+52dce9141629b846a65c960c71da4818
+52dfa2933a0349f8d100f47fc73ae9d2
+52e0338873ff6930c7591db7fa0e4203
+52e2eb81971ae4401b5cae113a2719dc
+52e42c7109c5c5fae47223865ea2c0de
+52e53ab4e55dddbfbf77917738f4250b
+52e8736d940fcab3e3791f31286ea081
+52e8784d0c814a3fec7ee956e9f2f841
+52e8b464f24399ab2de55e57477a2ae2
+52e92503db9977a8857b88b614332fd2
+52ed12cf809934942959bd2fb4f89db3
+52ed9f33717f5dc78392dee4c7239c3a
+52ef38acc813c3262607d09b7db148c4
+52efb8571eea24108caaf6e491949f60
+52f1e52c8cd9310b50edcd65d6c40ca2
+52f471a3033d1b0602e8babc8bdd1d26
+52f48947b31205a9851cd8b27aa1701d
+52f590d12af77a436696692cfd3b504d
+52f5e2d3d405ac724f2d125e09556700
+52f73fe26c0964bb5c7588b0c41d393e
+52fa16cc3a52ae7603011cdfed1064e0
+52facc9975c3d6f367d89d9c91ad79f6
+52fce820d29de4875e4b3738d56c2b1c
+530081e753caae0086ef39506367e8c4
+5300ea2afa75c219bc1d4c444066c34e
+53020b72a913cf6cf744b1fec7b895d4
+5304fe09965bb02cbff024dcf9fc2828
+53099b98b7149af51b6d5993a14c9578
+5309bd09048b9494373cfa6d8c7468d1
+530a386faf89b113b9e04a97e1156c5b
+530d7c4bd2b33b3f66efb249a67bf6d5
+5310f18d7f0692fb57c0cdf544cada91
+53131effa170643046ba202544d925e1
+531469f71846d228a70aa476f42b5d68
+53155da80d8f9951d8844f48b15ff019
+531681623b8f8eba0c6adee9d55f10bf
+531880f1622d923d9fe3e1c19b460bee
+53191fa60d0407df72cb2c5abfc40045
+531bb4d4df969511530d22776af964a4
+531c16f0d2155e7a25bb05182886f6a1
+531ecabc0fed5473645b051d767cdf6b
+531ecff8de31fbc423efc16cfc3e8cd1
+531fcbf0c87e00e25799184404477208
+5321934d1658844c9c4d80f64f0b3890
+5321d2ce12f5cd2c2f2f5a60481e5706
+53223f9302cafffb98caa53765ed456d
+53232d3e7907f9d498b9ceb7d88bfafa
+53264ba24de8e442d9f50c7db61a4332
+532662d31d64110b55c15621931c8453
+5326c29f98cb866578a7cb6e36c8c128
+53272f2b6dc727c3fbcd4938ec9768cf
+5329bcc1eeec8aac4badd596e03ccfb3
+532cd3e0723cf443e547218f4a6a75a2
+532e64af301507d8f624f705d664b44e
+532f3dbe4172c7594a35f93eec6afe33
+532f4aa29715eb782ea1d42d8ce64840
+532fb5ee4f3e93721b10baf3b6ba4207
+5336400b6a74354c458d31247d532726
+53371b9cc4f2f6caa5d8137b239bae10
+53396ada794e714b5032c850c9eb6402
+5339b63984bdac695fe49fc59b4499c8
+533a6b1185e209cb73ed0bf2619d3777
+533b392019de16bdbb6db8b6710ee621
+533ce74cdc5e3a1435e91578016d484f
+534031c58adb3603188129883674022e
+5341155db1201d5364b7f99517e8d49b
+53414e3a5cc5723fc7518ab10ea59587
+534389a161ad2e6c3f7834b5963ca355
+5345c16cb6242f5becab11da3ca2d9c7
+5345d9b7daf3ac5dcb6e93ee104e80c6
+5346ce0c82e65625d16fa9b7dfa03dc5
+53496a760ae53cfbc03d8f595cc58221
+534ca6a4454a4f2956e777651970963c
+534d172c210a8d9673bda4b510be8402
+534ef150f04a0c841420620400685a96
+53512f74d4421042e5d653e7c7a5be1a
+53516d786a766ea11a61bc5fcb44650e
+5351e21ce5b81bdd7c0bbf123a2e46a2
+53547354630ab0c3835938e2b06c130d
+5354b7173d8ad0005d056ea7c3978578
+53565ba6c97a1be59297b7da99db89a6
+5356f31e19126c7acff403aa85fd3c49
+5358b771d7e52f1bae7884e84f795335
+5359d6bbf9b2a66226f5bc42a8c6963f
+535d349e8aae99b98b0921794b053796
+535db42b77628804619c431f52e44797
+535e1b10b357812f0e50e099e9bb7604
+53602373d403de59f6f401ee918680e9
+5360aa15856ef3f1cce9be8d26f3af99
+5360d53135c802228f816f3f5c31d57f
+536374159acaf11a4a8803e7dad5c9b9
+536391461493eccd17ceebaa079f5948
+5366f42afc3a5e6cc1dcd853027c6883
+53672bdad82e52c8cc15f374a995e386
+536796f0bb8c7e03649d46627e1ea4ee
+53685d7743faf1418620bdc0e2f2a5b4
+536870b7582a74f876bc6282da0a1765
+536bc88469e9b665ea802274dd2a1ecc
+536c783bc68e32043c4a8a9148ddc055
+536d0252dc897c06c1a40a7d5ef58066
+536f464c033fa2b8d7ebb0c5b1a46421
+5370f62ff2f5add020eb04f40aad1ec5
+53711519d286a8b55f22ab744da9b343
+53722d1cd19ad042776675e05f70ce88
+537237ee8c2d7956222aefbdd85da0c9
+5373658480eb3b62b8c24234eca05aa0
+537690aab9af4bb8f37421697a8b3b2a
+5379c10b2859b1c1c8d3b4e1f5b673c1
+537eb457ee63eaaf5b1c02e617f8ad72
+538051cacd5d0f2c66ae259c177fe8e6
+538056f10f2ade7d38f70901772ea9fd
+5387320c17d49d0e72cf9dad7419e1f5
+53874940cd56edba920dfc1d0469ce86
+53888ff8f214ff55b258b2c7e741f5c2
+5389107e4727b62e80f26c2495ced1e1
+53891f6752eaadc4532c89824464757d
+538ace24217856ba6aaeee1e2ee3fe6b
+538ee4bb4aecd995c8b2be7c43a2b2b1
+5390cdb57135416388394dedda1ee0f8
+5391641eeb9a825f9c6d3667432f5492
+5392fa99d681a432043575deee893090
+539357ce31041319ef83705444e9670f
+53942efa2784c0acc659c339d0cb4f0f
+53949175303254e4f6ff3af7d527d580
+5395ef2bec73274877f642060d19be2f
+539629e1525d6b8efc7f745ea042162e
+5397e49d5e8ec597f90cc9a3e7a64721
+5399ae0da26e5d33b259a9af8ac2a8a7
+539b07e2621abf56a8aea9ca1412851f
+539b94014beb121579f09dc027ecfa06
+539d0c4e75d433bec35e86774631b986
+539ebf699ca37c52583c88c367541425
+53a092bd642cecb71a68604cf96cac03
+53a0a7ae0cfd2a2024da25d925d001c9
+53a23d47d4204737aed1af290dd42b91
+53a634dcfe1d6e2196883754083191f7
+53a8b37c30c190751b3a339409e71247
+53ae21343beb14657400eb23f048355b
+53ae223fe919df6639beeb47fc118520
+53ae7835c7e1d779d3337579db81a3c3
+53afbb24b49c8ebb0ea769fc3a7fb7d7
+53b03c928a44f3ddfaa5ee60cf8bd4d3
+53b0d4abf30d47fc45c7652d2843051d
+53b0ff189e6789dbefed0dab7d2bc8bc
+53b5582b760d212d40155f6409e812d3
+53b5dc437038add25c6706b79738bb5d
+53b9e492a6634f8e1cab9d4cfe5746ed
+53be2e73951710bc59200fc0bd2b2887
+53bee6f86d72d18959eb6f603a6964b7
+53bf848eb80e550ca85245907373e1f5
+53c030c294d0b45c8860d39030ded8a3
+53c15dd64cbdda6c667b011cd27e1859
+53c247959776c72ee01c4b8dbea22222
+53c26115abd47eadaa21bba11cc454ad
+53c567a78ae5d0f0ca9a274adfd891a7
+53c667aa6f4ab98054edd68f4d0e1bdb
+53c8160f576f30b2bd9ce3f3ef981758
+53c8efc8bb4365a373154b7a1c0fc6c6
+53c9b98d9ef3bc8ad1ff4df6b927f318
+53ca0d3b561f3014560a0477e00359c7
+53ca260557480e1faf546ec3d2329189
+53cce88f1a657d98182c71f316cec5f4
+53ce39009b21f8e9b70a8bb9da63b8bc
+53d0297d68dc03fdd922dbb4f9d7760f
+53d052f749f1f393bcef77e18c6ce2aa
+53d2798824494ab1c454b26dd1b3fcda
+53d3a1cd177828b484c45819874cb23f
+53d44e3031d74239d0d72d9da33965f8
+53d4da6f60fefb8d7125e7cb22a52532
+53d6dfc671ad46a468dad555da8b9488
+53d75ff4f8ea9d54ea6c483c657b2323
+53d7e258d6ddb47617a94343591b6add
+53d8695f73de9927f80cbdc05f8af7ac
+53d8fbe788910750b255f33f8d74ccac
+53da2423eef5f5b2c3a88328ff2133db
+53da9867940e56e114718712eec94283
+53dc5322a74b5ee94d3d33fc8a556f7a
+53dce45cd7acaca425a2c45b8a499075
+53de747a1223818fdac428ae5462407f
+53dfca3aa478a61a4c126f0b742dc677
+53e1133d7e1c99e1ac2f746441173d96
+53e24cc1dd854d4ba3fe0fa5c4a0727a
+53e4a417711001026924ea6477ebf48a
+53e8399b8dcbf9ba5949ec841d7e673f
+53e9540cbbab6da49d61baaf6cdce1b2
+53e9608a90becc92bcba836d49e53d84
+53e97e41b7c84f64e47ff91e24242017
+53ea611c23db0f3a286efd18eb860549
+53ea7c60c866768f3bb4df2165f032de
+53ebe73e2e3fdac0b29ef19f5a31d083
+53eca4f4ae98e790c33991a82addbe99
+53ed038df6fbd4cfe32e085e05c21dae
+53eeaa0485cfe23d9b7801fe3a1c4cab
+53f064fb3fc3afc4988ac13e04900920
+53f28ef075585357c240c462936c5ace
+53f4145aeab186fd4383c7271ee58870
+53f4a47ec03b747e22faa4447fc429f0
+53f57e34481b08f49e8b9baa23d7846e
+53f67694e97139898417345b39b594ff
+53f695ebfb89b121b596fc096b004004
+53f75b0e4d8c405a60188723077c86e6
+53f87b556046ebc22351544423cf1794
+53f9f4b8e42ae111e2ad0d4fd9e7db26
+53fb27cf9e7fded3b35d87ad47d73ed2
+5406106762cffc23d730a85af219f7f2
+540adce538413d6bcdfc59f6b9034d12
+540cffe58619a93f753bf65363808109
+5410a8fc06eee62d37b79109bb821a14
+54129ba4a991bab79463c211db2bcdcd
+5417299457c4193733f4ea34326354a2
+5419d043b9b8dd8ce42b69f571579218
+541a2629bd428bf540170673d190ad25
+541a57180662e79556d5c7fa4b53aa4f
+541a940fb6a2581093c026737dee418d
+541aa601c2532fc734e817c2ce74b518
+541b7bc4e236adb91e142f91f1a0e5d8
+541dda9606ece2e8b0c3eb2be166a0d3
+541e24028c54bc86ca92d7c6a825525c
+541f29cff0d8e96236077c479cf046e9
+541ffd6007edee91f305b3b2b8791d4c
+5422a54ca63cebfc7f44303f5c1e2038
+5422cbed9f711797f1d3a85a33129356
+54263f5df1b2735eca863be84f584a8a
+5426e73f66b0a97cd30f4187c6ae3040
+54277d10fc0c6f0668e41c5b43d7444b
+5428bd78a68bcfaf467a73bd526e6776
+542b277ea9c67b8d9fb5ff7cae301c84
+542bcdf6c8644280b19d4fb5121c39d5
+542c8b6ad4a627c4d7efc6687ff8074d
+542ca3abc958c62b3d52882651b0b106
+542dd384f16a5a416f9b38e2d262adce
+542ec06ea868191da71638adb9aecbf8
+542f8925929f061e3b143753fe45318a
+5435ea028c9d0a2e3993eeba5915a4b1
+54386dc3c0cef34a60631fb40e67a4cc
+543970e9dac4ba6fe9fe743f6d6b7e47
+543a1d7c67b03524b47034a2e2ea9958
+543a871c76d5feff2f61841352f48954
+543abc852feed5f00c78bc06a95cf543
+543b73f97cc9a1ba299fae06761fec2d
+543b8e48c18a4c4b0bc04941de92467e
+543f7a5e8ceee3ce20e449f0d44c2679
+544002de1255b4b3bfe79e6058f9732e
+5440fcfd0bdee89c4efdb04100aa636f
+5441ce1bef9399fb06e1af2e6e98c8a4
+544263dec8db18ae853077c36c6e9b11
+5443750bd9acdb06cff50d595362435d
+5445834875acd90481a1c91ab5411963
+544874826a38150b18bf554403a03357
+5448a093aa4d398e4a7d4c111b71f053
+5448ba8680a4cd3779400304a80a86dc
+544b49682cbef132bf0c7368e70290af
+544b5e3383aeef3ca37b66eb42feeaea
+544dab34a60f5278fda8c81711d9224f
+544fe090a14bb96d8183b181b8265f8a
+5450eca6dbc5923da22d63806e496cd9
+5452b1c76c1bf1dd866a9dceb938f4b4
+5452b759495ffd0d6ef9b44daa735542
+5452ec712198559fe9bde995b713e26e
+5454d4616b6404c3275aa070e833f006
+5456d98def586eeefb4aa1ef05137cdb
+5457c1ec710674a19912f30184dd4674
+5457db240553d3c491aef03a86ca4234
+545917713376c36f2ace6ca0c63c1c5e
+5459a21046acfb11ee7fedcc780dd535
+545a35273134f06cd9b8dab5676053d2
+545b90c97dba67b8055053d483c4c12b
+545c99fef0d3a2991ad336cc94b523d3
+5461950392606b482e02f40bd486ede4
+5461d577d833d623c39c14c0e59d5abb
+5461e70b0481dfce29c30fd08ac91693
+54635bb47c051529ae7d152ded2aa0e4
+5463868704cc51e2f7bae769d3a297c5
+5463ed4c177c172f9672458d4de649c8
+5466ffaeeb8daf95b277e46b5aacb0d8
+5468c56ea82933d40904ef3f607e6c65
+546b7e491c080d8aa7845ef650723347
+546bce32407b99d03a3ad19fa548ef12
+5470e080315f3a13739e7dce9529c74e
+5470f4b6b69573c155db4bba8dbc94b6
+5471de790404bfb26b451f2dc97786f8
+54733fe74da20908913b10d0b0902845
+54738369e6269ee2da54781ac70103bf
+54748318f231637a08e74c3de5997427
+54758e006d88ecdfa314211a6bb6e6f5
+54778753bfb8c8f43b88e5ff59d6527b
+54794b125d1e856b3ecf7f99df279245
+547dde4f95392dcb0a5347fc98b994ab
+547de81567cabb6f7248364e4cc91ed1
+5480b490fb44d056227638c05dc2f13d
+54811f084f552d2e5a4348ee60ec3669
+5481bd7549d821ec69cbb96b080a052d
+54842286a49aba78a57bd67ac97307b5
+548495d42b159cacf19184b304e7591a
+54849c89fde9e179dd41a5fcca26afe0
+5484cf4c2514f58775a89cca1b99e8a6
+548540ebdd0deab6ce3023a19c7a451e
+5486f169bdf6b77f46295b7ac6e42be5
+5488e18fe1949cbb013d3c3a34190bbf
+548ace16315667caaa8b73495a6aa539
+548cd3fe9714b9ddab7475bdccb0e41c
+548d15a3a85390f523f595a2b0898251
+548d1ed64130ff250a4bddc7a4383528
+548fc9fdb7afb49fa28a031242d61b9d
+548fdf4dab05eb03d994c03f0038f8ea
+5491264b7508d8f931ef84bee81f6548
+549382a307f94a7f44e65760b0538ecf
+5495c4ed5e887af948dfc44a61684524
+549776bca0832d632375cd151198bee0
+5497979ddafe7739529db9252a3237ff
+54983483a272c5404ec7988ce657f952
+54983de79329d8666abc9f07518e7e18
+549a58466242dc6f478a4df4cbb3ee8e
+549c1c3ec1e57cf60585506b9e09294e
+549eb877661973f81fdc427d2799bba4
+54a1173435b243771c71a8b3f2348aad
+54a1d05ace9e002edaf47242f22202a4
+54a6f4b8fbb1b11a388bda7650cdebcb
+54a9cd2a9d32ee5a24c6a519f5142ea0
+54ad1a4603e8f64cc35b16989622f584
+54aeae4b60831a864ada55c3ec7c6696
+54b2c22268938d7dfcf18c7b78bd41d1
+54b2cd32159308014a8307af2af34cde
+54b41ac50582fe4862ebad182c69d59a
+54b5369f5a77917add593a665b9d0eba
+54b58fd9b62c5dd4f51c1d363c4536b2
+54b8b3b60c48f22cdd1ad63e73cb2962
+54b93c9b78a834b38c75001330c7c339
+54b94d5f25f90bc62271523c9d0d346b
+54baa3ba0cce22fac92a7007e73660f8
+54bb951cb326ce144f2d82aaecac6406
+54bb97ad57ef40f75b99b4141dc7dc95
+54bc844fe2c4e529d2fdde636c380733
+54bf301c7115734cfa42bc4a95cdc286
+54c1ea0ae506468148a67d2ee08f54de
+54c2f1a64f534e8c61a539142b5dc4f3
+54c316cff265b4fb5b6e2dac817c4d61
+54c3d8c0028b4b2e82c3bec29a99e9fb
+54c6fe66aa1f1cc93704199fa4960daa
+54c89d544ddac82aedcade2953245674
+54c8e39650ea0e90be2107014108b9fd
+54c934ea80d25b199170610fd697dbf4
+54cacba9daf3d984893033b962d02a51
+54ceba3598abc008ee1c45faf3a36b97
+54d044f7b314aec48c5be952b0dd0c65
+54d4a58ab6f47a5794bef893eebe0e79
+54d800d16df29cae7dbac0c833b0de68
+54dbdd0742060ff49119d6b6b593d597
+54dcf63416bcec837d193194028c46ea
+54dfd30a28475227deea1a60babd9f86
+54e011ea5ca7c4f12bd36294f8073466
+54e02cd7aee3068e77a079a33d8919f8
+54e2279d312d97b3fb04e17cd557dfda
+54e35b61805d757ddcc96c9eb392c489
+54e48986eb745b8e7235ecdf535a9b5e
+54e59d2a672b08a656795edc686b8bb0
+54e8706cb015af005ae508db5eb38fde
+54e9bf156cbb75530cd1f1239db93d93
+54ea295267ffb15eaa8807b9258c8bf4
+54ea403c70c882d2fe9725e2b12dd22e
+54ebd212ff26f3dd50e8567d94c5d687
+54ebe1922790a5e74af9a317655f9227
+54ec53d4c5a3ac1a7fb08fba242e6c01
+54ecbb32f20b78e0d78aa0dbf401b0ad
+54ef3ef3b3cf31e027e8cc2fbf597391
+54f02f3370f5a56bb05972c09f91aabb
+54f31d911b7267e1ba0982fcd93e2003
+54f453a58a7d336fe2607fa52002311c
+54f4a0048f4faac762b3e4f2df6c113e
+54f583d279601c440043718f5e491471
+54f5f6a95170752f6e307b385ea1fa79
+54f67aca0de4e37d9b23ae8d2beff2ab
+54f728ae8857f175d0a1171e81c2ef30
+54f769c8dbf845c28ecfc2fe698513b5
+54f76c570b84421c277e8ced16936792
+54f92dc9bad561011225ebf2297c9315
+54fa64cc2914172bf80f62703f371f68
+54fb1e60887b49e4f195d114b937493c
+54fc71d6f67a95be39bf65ce7734110e
+54fefa369a288b8dd3ed1fd8d92de684
+55005f101f25051445c1417ca0ca37ee
+5500de1b1be9e36958400e1cffeaa7c7
+55020973252822eecd55b92d5b4a6b72
+55038a30a5bdb16a12eecc02bb0c834a
+55044543148a729eec58f93fea69e992
+550545d9662a70e6dfbf3d645c95d8e9
+550696e0acf1af54b6502a560daa4a42
+55085a461bf9638e3fe59ac48e7608d1
+550bb34fbf8ea5dfd4ebadf10fc1e666
+550c595fd38fb524cbef935a12bf34fb
+550fd76ed53908f848c4b05d657fa3bf
+551409600861579fed6b245cb2a2de26
+55148daac43741781d44512076c81609
+55161f92230fe35a1fef2ea5818bd522
+55163254f81279ba32a6a8b82630fa1f
+551d734abb9b0c55e548ad99c363f60a
+551fe418e18b9d4cbeaae8f402fa15ba
+5522460f5d8b0fcfee8f9ffb4bced5df
+552272f639af284cf98dd9d6067887a0
+5522d25714d30cf0a0ea7bfd1b878dbb
+55254cd18c71f899153d01cd16fe82ee
+5525ae0e2ddd50577e476cfb56e58e16
+552a4ecee8658a2c548e96b41b57d30c
+552f29b250be78875de2b67866378976
+552f4f2478bcc1530b682d52afe59144
+552fe8f3d14f48e3aff18f82c9d5ea13
+552ff9cb9df6386f8ca3be5488555408
+5530b826f8b68f51f6cdacd1c419ca75
+5531ff38e2c64a06a65fa6a0e21ecc8d
+5533562773a81187d18118c00b635d63
+5533752db20533cdbc60a663989a6cc3
+5536a148271415f17e68fd757422a3c1
+55385bfbfd41d60a9449047b46de8619
+553940fa525cdddf1af5dcfcdf312c06
+553ae61897173290704277da61bd9e90
+553b26c7c2376f75ef70a973beeef876
+553b80297605bef9dc80803fbd76e6c2
+553bbda10c7113968380a71e6fb7b534
+553cd01fc5c21b51315f5abf8116c6da
+553d83ce45299e57a560303f8e2634af
+553f23fdcd80ef034e7ff4c2d4c66611
+554141c816a5fb5942f6830ce92a0f69
+55428b93a42725be0afba617d5885783
+554383045804dbfa5fbda57c1d13459b
+5543f33ff78e57e7ad841649e7e3d849
+5546d967770c6442c5edb2da758f3e20
+5552d5b1aa1508fa03f8d554f711b7f2
+5553b4d4639b5c4870d9a21e3b27c142
+555436354ff6de6b00771c4ad6b5063b
+55555344fb31a6dfc6d6035998e2f61b
+5556dec002853cd27ccb02ffdd8a7d07
+555711daa1d016979377c2df4ef1abf3
+55589833e4eb2fb7df0ec44a16f33125
+555af3fc0a0e039971cb09576a4dda86
+555e326a9694903709b63a49949c0744
+555f20e729a7d74e02f34b315eddfade
+555fb32a1654992fada46e1dbc2bf76f
+5560ddc713fef285507e9e247993a2a0
+55623b6d40acddc56fc6468e33b0fd99
+556253a7f30ffbf55f469d034b65541e
+5563040319928fb256c71c16ebdaa45e
+556604c0b9440a11b6979e7ceb867667
+55669e3db0aa117a6a5a5e7c525d45f5
+55670d9abbe69a29dc47d0e647f0b05f
+55684c8932717d7bfe6047bbd8b7ebf9
+556aa2299955ec406478a0813a388e88
+556b41826ff1d56e432c798ec8abd7d4
+556c82c10c337cf6f09432f177f64dba
+556d9328d175e0028019c36a0367d133
+556f667d5fc051cf5f45077bd302ab7a
+5570e7486b49d01b516afa1adc9c4914
+557108dee102e1bc4719695cda87f439
+557312fde769b8516ff78caa80b873c0
+5573762077ad9f4e29acad78158f8671
+55738694323e7c3996af9ac33b70ab40
+557692d35ef6c754c655e38330335cde
+5576af1bc9637029b6bdd290c021520f
+5576c8f528d02b4e7971ac22ffb332b9
+557a8b79fd6b6338ff2f6e11bebdf573
+557a93bdd379f3dcbfb068910be2ccc0
+557b3feec8233209520d2ead467ab938
+557fb020cede10823aa29b8c01b67f3c
+55804ac69dd261d4b15fb5c109adcd1a
+55805f3fbdd38408405099f502499acd
+5580619205d558d1fe7efda62da255e4
+55818fd2d2a57f1009a145846d614927
+55867393b81d9ba98867defe458291c6
+558ac6c5a0de70867a690a722f25539a
+558b039c15ac46443222315a8800d279
+558b74dd2556f1f2e0b6e172a375f4fa
+558db8ab7828a7dd7e6f2336e507e5af
+558e41e1d103d6edf46176efc62b6ae6
+558ef7c2b1e781c90de22035b059d0f2
+558f2f3370ad5b3793abdd232f18cdf4
+558fb0dad21ffcc387399a4e7f1ff9f0
+5592b01631f75138c5f18880493d5334
+55941d36f12a52458c0c671de36aceeb
+5594beb08feff0edc12f8a4bb4281c44
+55962e1c8432d1fd57baf041a499a011
+5596e627d251a4ee59b9989a98c500fd
+5596fd385cffc75cef9c4aa12ce37d82
+5597dedb4df28da85fa55e37fd3923f2
+5597f0f7c635a735c9d54d53a272ee4e
+559add6dddf39b3913a49630c99220a6
+559b839f172f1af414e3b629ce9750c2
+559ccb30f0d466b5d731462c73709f99
+55a2fbbffa51b99c5e014e7a776e2d56
+55a3bbd2e86f2ceaab95290d5581fc6e
+55a4730049260cd33872ce0130e880d1
+55a65284de71a9fdd38a933da52d82a4
+55a66d2de3b6f4784bce57c5fd1c5931
+55a85153a36ff417b0b93e358d85ef33
+55a96734f6489b41bd27fec987e01b96
+55a983fd353ca76780236200ec9639a6
+55ac83de7e84c04aa8ef0f76e9bd2c36
+55ae68079b3c32473d63236fba7498b7
+55af3a91152163bd2c574d99a17888e7
+55b084848e36158ce383628a3409674f
+55b0f35cf18302dd3e2445c600f5360b
+55b1b3b89327c2c4b4edfaa7176a5a2c
+55b231f137bdfe764c30e480f12c60f9
+55b53bf6afd2ca1660302916a321b8e4
+55b56c53cef94d700f3a25f98cc45188
+55b69ca2e426fac5ebec7fac289f9536
+55b7de0d020ba21614fca99610850873
+55b865da7e1c71aee1049a85f8c97a38
+55ba2818fa030db9d87c999b33b1c687
+55baa67005f3ddaec01118c9c45d950d
+55baafd8f9928cb841646476572ba040
+55bbd4dff6e040066df9ff343535789f
+55bc46f70cb4aa303c12196b128285a4
+55bd1fcc901a27674a747c26a802e525
+55bf785c7a4f965f02a4f1c545b99778
+55c10db1f5acf720604da2e75c108232
+55c1760615078aa336541183c35b98cc
+55c2f5a0ad4b2e6614c9e76739905af5
+55c5594f1c04c11857ffd285d0a74dd2
+55c574551a4770a5f9cffb40b4990a19
+55c70e57f7f4a4bcb79f09042054e6cc
+55c790ba962945bece51d98977d221a4
+55c7b27e9f90f88b6433864671682867
+55c7be0889b68056e11d91cdcf83198e
+55c7ea9b6d4030ff048d69cf23cc1cfd
+55c875b9657d75ecd767b3b6f080c2d5
+55c96449eb6270fefaab390df54f97cb
+55cbd1e0b74794dac56f77f59874f871
+55cf4ae28bc5e21851e853dbded6a523
+55cf8fe27a84f8e1ec91804c1af9181f
+55d0dc4a97d7e21963ec6a2ed2bc0ab9
+55d128a4a50dc4b4f36d2d00cf9a6a1e
+55d27b05bab7756c24a65f833e450459
+55d5c5523f3e6c47f09744a030c6803f
+55d6fa5162c51d2884e9fbdfcf367c27
+55d75aebdd41b739f783c8d868b645a4
+55d8fb534717d087fdfea0fe4468d586
+55da13977b34500d72b81fb43de25dbe
+55dd33bc7bd3729f22af3fe72ef4074b
+55dff4a086ed49d5622c2bc3e16ef9d9
+55e191ac536a5097a9d257634b393327
+55e33da09a07207f4a9acb46d1e27ddb
+55e63df04cec0b854e06249f1e059be6
+55e9c3ba5578404f43d5030cc3d10601
+55ed517a2b39f80a7b1ab398e1a8537d
+55efa3da7182f285fffa71f66f09d215
+55efa97004f99776f51d66fbecd72a2d
+55f230ccaf5c83da50aa9b1e7393524d
+55f29408aa3485c0700f160a9ae01b12
+55f402fec978d6496fcbbb3cc3b37be0
+55f53d5a8e1fb0292911a9ffeb56a02f
+55f70b4bf59c8115302d3a895b2de462
+55f9565ed0b894023ffd7df5199ba8d4
+55fe2120dcdb2d3596f79037efaca4b6
+5600637e1fbef5f9e278dc7b6185bbdc
+56017a52973d5d6d82b8fa6f576b42ba
+5601a5897b33ff475be1599e8d9c97a7
+5602234f75430c79153572b53a9a2ab6
+5602e158f5091e8a1f98cf6dcda9a5c2
+5606d8dbbbc84a30854f4d97dfac9a8a
+56079438da4c7051d9cf18e84b4a42ad
+560da424a58920d930e96af8b2197b68
+56107422ec37d823f28453971a51eba1
+56120b114dbb8a52a234e1040b0761eb
+5616d0de82f76721c9f482cf009fba5b
+561dc1abc10d0fb7eadefb34fe5df995
+561e3930d3018b618c041c50750b2372
+561fae812fc4e38819f32b41eea4053c
+56207c5c25b34ef673ff37c94d4fa3a1
+5622ec80fcfae0b8b5ed26c81d30716b
+5625f24a65be274599546d7bb03fd73b
+562951911c1d54a96bc5d5bedf76dca4
+562ab80b49f2b179001a3cb6454e8aba
+562aee029fa2f61f2414632cc426e136
+562c43db3c64974d28d8466f8f7d9bc6
+562c7815dd276901f7188239320494f2
+562f38b0aa672a4d876fe333ae87db6b
+5630af588c6e460a0dcbc6cebbb9ff48
+5630b716a548e75c59a3dd0c2910851a
+5630e3af3dfb9c3e691da520a16198ae
+5631840a3e1edb16b049beca22a418f4
+563590646a85a011c2749678baffbf21
+563708fbc3e7d683b890532d6a2d9644
+56387576fc46b7ed5be52259328a0100
+5638907db49fa2c1e1dc95254459be21
+563aaae033944ac6b450de04efd1f601
+563bf34c94e6c72615430549b1629e24
+563c9c1d4711aeec931e78bebc4f594a
+563dbd7a848a333f34d759e65b8a9b6f
+563ffe952443b244bd4d3c15b623a777
+5640619b258a53cd7f830ee46e51f7af
+5640dc2c08a0184f2c4f946e7b413a7d
+56414ae5deef9d847a8ea374e4324ab7
+5641c6582d688cb3fc61ca4cd2c7f4af
+5642024706e74564c71d92cf11de1534
+56444d3bed2b98cd612358fccbd94dd9
+56448db25ac077d75c32908a30edb4db
+5646f6c99efcab909707de471eec4428
+5646fb25fa4540f2579785856fb0c93f
+5647e8746de4d9141a0774664441d63d
+5649575a2fdbb34e3400cb28c01fb7d6
+564df56f7b38b93010ac2b3709490724
+5650607c838795bad6575a7d0bd141c6
+56563c75785832e2d925ef14ced10ad5
+56566ef04debca10d2d4e59cb4b73219
+56588093a6b112cffe162f155bf33be2
+5658a8971697f599c78941d430631960
+5659e33538795b8c827ebcfbf2407f17
+565a67126581cbc0448b4944af586336
+565ab7ebc363f9237cd2dc15dfa89ecf
+565d7515188ae19d70879bfef3dfdb0a
+565dfd0ed13388abe93befae65ae5e5e
+565e60df5ec4fa7d25ffccf80c2a1aab
+56674a7749fbef97ec6473ad88dc65ad
+566ad1bf7aa36cbf7b0aa50e2a28ca4c
+566b597124e68a1a9b6ae4ce7f646669
+566b78e458caed1b5af78bae39fa9534
+566d8b8a093b3186432f3fed0fd39a8e
+567122aed9e62f9ba809b8d03148a0e9
+5671a78d913d43e638f73d1ab9e44323
+5673c0be3a6c87e3488cec3186b61025
+5673c38c5861f2e85e142f79ea37ada5
+5673f20f1e6934c8cbf3d67b4eaf432f
+567672e6e87336efe3122b546add6741
+567679222c8cc4415fe91ad70327636a
+5678b29fcdd59ef67ef4712a213a8a4a
+5678b37c7fdae89c37a664bf46d62c3f
+567a1dcc5ab9d6f170feba0c51dc3af1
+567d33ce9642537b151550829e4b1c42
+567d868e184910da53d1cb1476fb361d
+567ee06745e48a82a85981fe14d9163f
+567f3641d12489904051a6e6c7b87056
+567fa1b91d9edcb8892e8fc3f4d4463d
+568375788543615da622637a2a1b1580
+5684425fb9b7fbfaaa39547d26c3f7c3
+5684e0a9db320f14367b45fc38e3b651
+56876a828d7258c7c47b466d7fbde78d
+5687e75fcddc3a7fedfe0bda4b59a1ea
+5688632a2c28bca84bf37ab6e5fec41b
+56890bf613ea8090adf8a9c39a8a6c5f
+568c48195e7b26e13a5abe2e48fc9448
+568dd82d6ef796b4aed735b628258204
+5690be8fb3e96498afa993bdb2900a8d
+56926c181985900917e993e63df85f6c
+5695ffd8ab28bedd247c7378a88b9abc
+56973ffba2c04857419cd5e5751094c0
+569840bf00f2e8f6c5b6fa0a35fd8692
+569b613e862f2cd2f76ea62ed4997207
+569cdcbfb6b238b20ef8d886453bd81d
+569e280f3a8550196cf8587211fb9b99
+569f823de4523acc7644a9358dd5a8a3
+56a101917c9a29eafd044d0ed3ea3927
+56a1ff2719cb7b61b0ffd22defbf79a6
+56a31f0ed48ae4627a9b9f6a26ed30c1
+56a43d71ba7f4fd64d52d64b76cfbd04
+56a523c0766705675e4eff8d7d11c124
+56a5631a866efa885882efc4e13b5837
+56a6179b84671d7722ea81d23f28837a
+56a61afb9855d17985006868df7b37e1
+56a6bc978563cd2d08270e6827476423
+56a7fb7d08b6b826c9353608e40ae245
+56a8814c63cca0af0d7128be50da5aa0
+56acda1c562bd7c22a13a27975419188
+56ad05df55603bd474bb18a9563dfe20
+56ad333a506d4bc941df7dfcee8531cb
+56ad4eb8db1e1cb7d44b083ad6b8be27
+56b1e66217f5480a74be912ca64a75d9
+56b2a48cd438051e224405cb48723582
+56b36d49642d47c280fc6fe054fcc1c5
+56b4b4327aa8f6922a0242dd04f54316
+56b4e124304264bd80263a8f6cfbedcd
+56b4e99c0bc92262dfc8ed85ede44b48
+56b5707145007961e8c9ad8fe4522fbb
+56b6e85e4a3a7c230d57411f2b626f4d
+56bf5c7a811545f2045411596208e7c6
+56c132a13f14c75e9fe74d1a2d484961
+56cabc8f37fea70193762280c6840152
+56cb8b2efbbf32cba853821668e0f18c
+56cbf072da6e9436470f727dddc9dcb0
+56ccba3846e59e04610b00d221315ce8
+56ccfc8e0539103c822b0da538d8af02
+56cded6b5fd03ba15fcbdb687f0fb2bd
+56d01cebd1e39794740b6b0ad10574c5
+56d0d39f525f2a0eebede4575ee0dbed
+56d1a8c9659dd7f31554bbea180a7291
+56d1ccdf652c5da447826194a75b62c3
+56d32ce9733246f93d3c78303696b231
+56d3615baa39946d85d90a312a52777a
+56d54f84a97797b355f4b9366d08b39b
+56d6c4921e2b4f3b9ede94837b0fc814
+56d794311ad99ec9c67035c9b421d9d8
+56db0f6567ad4a3b09de36f9144a31f0
+56dcb167dafc38ddb8190c9b1e6ed491
+56ddf27ab8b0c52fa76576bda3c0b5ca
+56e150b691494bf6c4df6b7299910aec
+56e2963387270604c596ddf7e7e43f61
+56e41ee19e424365761b8f73652f06ce
+56e48005d6fe7420dbb86d1bbf1f27be
+56e6127bb9c2a589ca25399d07d0e7ae
+56e6ef3800fc50b27fce0d0c52cf168c
+56e767e74ea699523fc603454ee5b299
+56e80310bc9beef1af9be7fe68173a76
+56e903d9c8bd78d7f67527256187d85e
+56eca39b890617dc9f71f80c899bc9b6
+56ecf96a051177ae8fcb8eaea6018e02
+56ed7daa1b6a0bf8b21a700bf0f864a3
+56ee1c1ba186799af88c962deda3af7a
+56ef97f21a5be75ca0aba5e2c578988b
+56f06800d1b61f8095853234deaec9b1
+56f1779e58ae952a061486c59d599f30
+56f1e7ad82c8814417d6a19efaedcf61
+56f46b460375a8e0e7ca80bffd7b75d2
+56f485b049d040a9b197a28dd43b7023
+56f4d6466397d94b156e2420e0097cec
+56f50fb7693147d0de0492da385e1f25
+56f7103325c186b673c92d5faa3549b1
+56f8626e4de38ae29491259b1bdf1453
+56f93a4bbadd417026707ea23d200188
+56f960a4b583df33ca37401c5dd5378a
+56fa87d0daa6df7245fbda8d5d52a897
+56fa9ccc86aa043083898df129bdfa13
+56fae3ef9540595061d2ba31b3bff36d
+56fb9b7fa3569c78ed038b6abbdce800
+56fc17b46b5f8aafe03f7a7fc1bf1129
+56fd01b77533f152db60472c97ed2ac8
+56fd2a06b14a1d324af7650a0549c6d9
+56fece784d09a1dca5410e01ba18a71e
+56ffa3d20aa1abc277f07fed624d2f0b
+5700a851784f589a2d785aa32f458c62
+570133b1093eb4aac04205e96178f853
+5702d6a366c01956e52da0001e1181e7
+5704ae629c66e1c546e18d370052d975
+57050c5d926347b7fc7fcf9b897926f9
+57055a49af9f53bbdf5db4d92dc2c5aa
+57058aef899630c3cf5547087710552b
+57095dafd5feaeaa5c75cfe50cb24ab2
+57096e29c61fd979bf4dfdf49e27e074
+570a810adf599ca3c6bf3aeb09379773
+570ae3c5a035eeff2b0eaf50f01fba8e
+570da4aa96052e51c7c30af5161d556f
+570e3c3a363bbb6f116b4591b120cd83
+571134872562da71c4e8ae7161713102
+5713b037ffd4a685778cbdd88bff886c
+5713f94dc6201bca0f552bd2c167001b
+57180e688bb7f9f118be3a5eaf15170c
+571b4d1e55f6873e1d994052300c41b7
+571b5ddae3245be083035a6524eab6a6
+571b61b7cfcb8a12916ce6306981df30
+571bb120ff3a6f7585143718d78bbe69
+571d940c8cc7db26fe833d2d9511eddb
+571dc32dcfd19e33fedff5b4c1370529
+571e0b9ff37a7d698d095708abf80b9b
+571eda32c9d1fdee1fab4661f5a3e7ba
+571f76ecdfaae30589329c9602559f6f
+5720d25b130b56f849c2c74886eb87c6
+5720f9f1df41216c7d9112490acac863
+57212b91118be36ed7a5f0a795a27dd0
+5722396e37c11dcdf054bca5e3edcbf1
+57251900fd828915743b5dff6b15bf59
+5725b2fe0922162c4796c86685461d2e
+5727b5ebb1ed3e37d77f77093887d43e
+572a9a13ad4054bbab942b9b37e38b43
+572cc24fa0e9ad2b8b7f8de53964be75
+572e7a1715475001818ad896337de268
+572fc3f424bcf71cf2f11305e84d907d
+573039a2f258862bf4492a8534f0baf8
+5730703327057127f2fbe881460358ac
+5731818e1a4fca49032b71645789794b
+57327fea8be7df7c7ab34d73064f5d67
+5732927789a8dba77159395b53144ba1
+57331bcdb49884c41868a0bcbaa972a8
+573417150cf9d6387117521194c194ae
+5736e5f8afdcb6ad7f62367bf4e51052
+573787fb3967c9515f1736f6c132162f
+573919c232c2f803f870b0b7cd7b4eee
+573a81fcb9c39e9a752d4e2edd0858a6
+573ecaf13360bc6f5b32554d0c279b75
+573f37de7614d2496405c51348d6043e
+5740e6280339a22fdb90b38f748a33e4
+57428e3dc5847aa523dc8f1e826dbdea
+5742cf7e0599edf7c90acaa7dae547ff
+574380c3e4fbbc96ba2fb98b48d15911
+57439e94439bb4e6d9d60d56191c60b5
+574812128ad7d581e3bf0f4f51d54ea6
+5748e6b3b4136e8aecf3206d144cb24e
+574a3e9d268757f5b8ea921ec7ddaf65
+574c35a2a1a3cb942bb7dacaf9cc389c
+574cc9e66788fda64ea35abc3b8bf35c
+574d258ae4e5d8a45298f3f8e797194d
+574eb7ca78defa3f0acd739a659a6d6f
+574f93707d81b89d3706c13afd9ec714
+5751dec506f7c66df4bdee121b04f7f8
+5752ab43e81015b545b4645e382a4b98
+5752ee63cb0815a50e386bf7fe8a22ae
+575aade1771c3ddb8391cc85111fea27
+575baab9ff00a5ee9f0ca600d28c5318
+575cc60adfd1d3aaed320da0a52f3256
+575efbed7c91bf5048ff1e05297a1b8c
+575f475aa47715cfb7f498742a3c494d
+5760271b6b83a25a55a82cda6fbb19ba
+5760d081f6151583a46fbb099479fc0a
+57615aa7c26c5f0090010d4b1a55ad87
+5761a42f1abd15893b25779f5c397bf6
+5761e79af314f67e8a0ccde8cc4bca35
+57634a6cb80d8d500a1d0650c4352115
+57638bfa278ad3249e6be3a5ecdaebab
+5764320a12fdcebf5070c858ed822291
+576567127044204335d34838e93ad057
+57661f410f0979d95164ba53be5bd006
+576694413c0f844098c7aa56fa2b08fc
+57669f661e536a3a6a6508b352c18b50
+57689c62583fae6502eb22f73ab4f925
+576cdd2beb67060f2785906257c138c6
+576d4b4a0a5821f738edcc75a174de2b
+576d67216c9e09b65b7461d82f691e19
+576e042a3a4689b337174401b21d391e
+576efbaa86785123f8badbfe02d15fb7
+57713e8ce9788d844daecd9fa5e1dfb3
+5771be44211ebccdfcfc6f7d475fca43
+57728d1dca18eb87115a887817a10338
+5772ba065411a0aca59ac1eed2b25423
+5772fa61779210e1ddba56a1b1119a64
+5773c9c96f2c8a5a288732278eef271d
+577584137361687ce48ea7f4eca664f3
+577a40648ecef340878b5b00840de4f7
+577a47ca34f563b87c31c30c9448a957
+577cf208b191769c104b764da9b88f9c
+577e667b1e3611dc4ca4fba9abe062b7
+578021f989e436ee67f0a1ddd96083f7
+5781364f52150bcd2551491d26586690
+5783657df1917d5f2a51e00dad9c2989
+5784c20d0cadba7e1c9e126b1d7806e4
+5786261fc75f6679ae09692aef84e379
+578754dfd03439b4362c2b9c798d981e
+57893055886fb75715915646d6ac1062
+578a396ca8df731cd4a3c2ec2d52219e
+578c0d8184ce9f559b2975a8b6517688
+578d54a663c52249f588207717ab0300
+578d71541d94a60afab5c16809dfbc06
+578dade6735abda2c697bdfd04a100e8
+578e1dbf2ca6184abb05ea9f9aa36c11
+579105cd72aad337285f17889d1d2962
+57912c167760a755100f722e3bfe9553
+579300f4b5d3cff3da9fa4dc19ed6b31
+579462a7810b8881301802f581c16c6d
+57946c03899dbbeac7b7d6ec2020d5ab
+57953ddf01a2c65ea3b3c3fe6892f988
+5797279ff8821b3c1886c62fca956771
+5797d6fb84a2b76c8e170df32f6868a9
+5799f8d09a4c06240166b386e9d834f2
+579aa7b58f67e217d0a4a21ffee0e7f2
+579b9062326e42e3f557f776cd0c29bb
+579d136f566ec7a523272f34cad084c7
+579d8cd82065a4ce1efd112ad5d7dbe7
+579f54a08b641f75d806124b915f4a86
+57a1fd5b12730a17689a214215b4beb8
+57a2202dfc4b13c94be6759ff57ae010
+57a2856415c2a2871caf2aa32dd0dd71
+57a5368c3b74397616e153d4b9670858
+57a574d8a4b4e417e7c6c9875a7f7712
+57a5afbca4c20e6d59a1ae25c156709f
+57a7a923ab2cd1fada86d9a457b88e26
+57a8c4e564ea9abea20ba83a3f3910d1
+57a93e7cfc069d67afbd8f2316386ee1
+57aaeffc566541a830c745af0675cfbc
+57abd0a7fc79bf6d69dd50c8f492a4c7
+57ac67ce167b58936e81b2c05466a1ee
+57aeaec04791a52e532a60961f6c722e
+57b12d77517c6a2f01cb075873fa0dd0
+57b2d54eec97e87f120426067cf722c5
+57b928766c3e8e94d42ef9990d41387d
+57be11cfaddafc8e250cba4ee4dc6a2b
+57c01c9c0b9e2d09ad129f076c4a0a61
+57c2aed647131c5d3465c749eb4bbef0
+57c2bd470a1babf40868ace21b72939c
+57c3810b9e6d4b7ea32ee22609c4613c
+57c4df4fdc1d460b8d2b46eb3ac70a72
+57c580cf7ba4c16e5316d46820189679
+57c5c78b56f8021533757742ed7cec0c
+57c6a2f77fd8fb73172dde201ea4b5f5
+57c9d5bfcf6a84e86269a956ad0d0075
+57cc8439bec971e72232cd9875b4a74d
+57cde13b7f7f2e61c5b8e971dde206a7
+57ce44b434cc220351ab6e7a565a089d
+57cf324b86a7a4c295ff0ec7994d2247
+57d108ce1a2a57f8ec9cae69b4c1613b
+57d4ef3c65ee7ebcb90bb92b82e05824
+57daf1d6bbe206b53bd8675dedae51bf
+57dafd2dcfe0c049c3f5af009abe9ee5
+57dc84a0ae91273a5858373d965034a8
+57dd0296d054fa368c4d9f9e6c0abee9
+57ddee0ad87c0cfcf59ddbbc438f07c7
+57e1c1cd7604f52a373b6ff9a6b90fa3
+57e1d0d001e2a96ae72736f58736edb7
+57e2d36e172bf538f8b55d32b2b4353e
+57e2ffea352002a0a725d61fe8dd269f
+57e41a31eca940e70727bc9398728065
+57e4931911fc9b8291933c00c1022b10
+57e7307fdceeadc124f46e8803418941
+57e7921420eb3b6bcf286d711e3c1f90
+57e8c8898caec50a07db06cee78e3487
+57eab63f043c605f72a1bdcf041754fe
+57eafb0e50415f64ac4959e6e85a0ca9
+57eb7bda8d41ff0e4dd3d5a889e2a8c3
+57ebe12969ce53e64525849a05f5661c
+57ec2e8a0ce9b54d4a74551312315b61
+57efdc746cbd51946fb81dcf997001b2
+57f150b93ce92888508dfcf92e8a6ba8
+57f1941bf1df87ae2f1cfe7c4091cd58
+57f7f8bf5b6e316dcef12db0e89a69b4
+57f8db61b680e01a4aa7d6a646c1032a
+57f8fb7c5f4cf34ad51e9da295fb08c0
+57f950dc5bfa894eee79e868b863a4ce
+57fae90a01da08117e8d1160e4840492
+57fc8a800cfbcf6f9d366b63754b8ef4
+57fcaa0b67dd3e0972d4cf1f9bbb965c
+57fe69ca44852498b16c944ae77303a7
+57ffed54104a49025a5119ae117a3880
+5801ddc339cbc4ce4efe632a0e3616a7
+58026195f60bd6b6dfc25a110e12c763
+580391bdc0de28ad9de2ba84730ad983
+58053208c4ad65b13c2424a1f7e66f04
+58079d842db755304f1b06434e38107d
+580a6cd8a89786b16547a01ea74e2997
+580ae21ad39e5f3bcd93e81bc58837f6
+580ec6d054d939fbff8d51146836a980
+5810bf44ad5625eca881fd670bfacd89
+581113f47be6f299836b74ff7e2103d9
+581356f085e9340754fc6bb130c9aa89
+58136259ab38d07477bc5e275f3967c0
+5814395da4e6846eeb7242e92c81e2da
+5815490aa8a9c5229779965037b457d2
+58171aebfbe3c99a3eaa59965412e63b
+5819305df011000127784bb1aad52b97
+58195bab1ec1d6abf0fdf038cc98b827
+581992b45fbdc09db9d8327df73bffe0
+58199d92abcd1fed03c16367b0d23896
+581a630645463a93c44d1361408e55fe
+581ccda86a8daa0b9d47d9a7e6f5e47b
+581dae8f64e1b92fdf00c172c5957058
+581e58f8e250946f7ff0078734b217f6
+581e83b46ac42b047ae903b82f771202
+581ef0b82a594ffe5f99c6c392b1c9ee
+581ff7e22d542f6e88a9c0f7bee0da75
+582096af1b06a06ad8180450c640d582
+5826405379f3a5decafacb2deb4a214b
+582855fe2526e5cac250c3ee1ee7c7f0
+582a6679c87b34f0698c96454fbc5132
+582ac2d3796356c8bad13fb6763d0d15
+582e9bd7174281fd891627861b0ed53f
+582ee4b5f8869a5b50449fb6bd2233eb
+5830760d5d69ba23232ec1f3f83842f9
+5830cdfa1ef57800a0b72a3ffb5befd3
+583173b28cfdfe0c1af96802545cf9dc
+58357c8c5da853a168c845628b27bb79
+583628e868a6b38988eb68538eeb7c89
+5836738fa003dbbeaa4526384e55546c
+5836b45ec0cf29436c447a5758ee5460
+583763eeac1e00d24189c50d325ed7cc
+583a153d4a18bc39639f371ab4b5adef
+583a454af35c7f451629236d5fa00ab5
+583a4ef4d0dde051d0e9d1856ce4b849
+583a5f6d25a01991293c9ec100725f12
+583a95e38f86acd8d708cfd1bf9d819e
+583bc8a53b0e9f6ef06b4b3c23bd4fb3
+583c33227b9008c7a17d3dd87557f4ad
+583d6a9e1e1b25f44bf863baf2b260b4
+583dfffb675421c3c0c6b683b9251445
+583fb659e7b6ee009cd5eb3d49c99202
+58409833f3e84b482990d6def01bbc6f
+5840a703fd8850f2b5c9cedc530e529e
+5840b59a48af3a5d911eb7953d0efc44
+58418935eae8c34a00c2474a5a45ccab
+58418ba11b58b4b13b0514f915c72acc
+58441fe0fb144ca41d7a3e829e916f40
+58446803d8c0f9b1ee0e22bb13c2046c
+584643528e061e2994c8027daa5201ab
+584872ea05a8450c4935c9fe9f949177
+584a627bc4825712625ec240d4f5b8d5
+584bcc6b3840b66e2b5d89f91b6c94be
+584c968f19569675aa49ff1f03965783
+584ee791f9a414ac9845a4630530c955
+584fc45661e18c082f676b6a680ab9b2
+584fe417a34b4895e31b8b6512d10bcc
+58548694ce0860092a1258c9df0a1c58
+5854ebb493f0a6479a03c0240f0f6e6e
+585607805d1b9db98c054ae968ff95c5
+585775325784f3b5765fb6d1dc9e7ca6
+58592f77f7b952d31dc69de853571d01
+585a6ebde15ec8ef702b3519a76dd1a5
+585b3c14938928236602483cbc796a74
+585b864d7c70c19c8ea52856d11f301e
+585c1a8d58f332bd629a146011649fc5
+585c27b0056331ba2cec9c3c72be7dda
+585c8071bbb44b779904b5e125eac8fd
+585d254dc25ac76b8593e5c1d3c7054f
+585e3e31ee1cc856c1ff1f9b14dd1fc4
+585ffe37cfc32a2b8172f5fee8032c63
+5860c2032b3ee15264a9821bc3ae04b3
+58628436070e7e78b336751476fda428
+586383c2bc540b970853a8c5293e3c86
+5866a0927e3ff797286ed74181186db6
+586734a012fc3a8dacfe013f32a3a1ee
+586a7b6e23cc6c6f17359cfaebacb7c5
+58713fd3c52fdc24cd72ca92e3d68329
+5872074c337950d5f9ea9c33b924ac86
+58729458318001084ce059280c3bcef3
+5873ad241098211b9a78e2e52bf902eb
+5873f9f36dbc6514287a8900999b1560
+587431bfc12ad716cbac61abc7474251
+58755e06097797b557589e714c0f8b4a
+5875907102ffda7de155fff22ec028da
+5875faf591aa69949ac10492f1f4de93
+587c81868a4dabddc0c99a616cb68abe
+587d8717a6478beb7937c455aad5ef1b
+587e8e09971fc29237b21f87471bc6cb
+587e966f198ff5a4669c0974cb838f23
+587fc2af69bbed10797d75ee6f9d8d8b
+5881a533fe5e4f1bbed96db95da07021
+58823950f7029fa34dda95e6ca0e2b1e
+58834dc36f9c0fbfc809b315800af671
+588359890f4940b43c47d3149698c739
+58844acf169cf903507b23d3e7071489
+5885ea13ae760e72c17bd130deac191d
+588687c48dc2e59b71f9aa505fc13048
+5888c1bf19a1a31ad8a3c9c1aa31fffc
+588a158a729e2d74a9d48607e6281ab6
+588d650ba5ce33d49854feb519519a4c
+588eebc25f88211e7e0fad2f666e132b
+588fee0ec1b5b8e9d9944ae98df5c306
+5890850a4bbadaaaf40929ce1db50455
+5891f1365c41ddad50fef34c08b8b179
+5893f9925c79fa288b385529b19869cd
+5894f4249ac1f783c23e8126fbd297a2
+5895188d9f187eb2ff3b3138a895025c
+58952e27d74572dcdb276c2e0c2c8eb6
+58959d39e21bae923e3d28dc62b447e5
+5895aeb8d81c2c84044a40ee1cee60e8
+5895f895653b2806cb8410697a4e5d00
+589850366fe240629eb715b9aacb830a
+58990140537f6647fa694ded29ae721d
+58990bdf8260154d43dd1c12f9cdae11
+5899467d9879223cef91e5111f54cf61
+589acde08b57ae755a478b2ae69f531e
+589b634b43eb6050948ddf3e58bab06d
+589d4a52a0de00aa0c0447c3087554b5
+589ddb58a858ede45c8a43aec80bf3fb
+58a062ca863cfc51c3f2811aacefd609
+58a1abb92f4993f890115e3bf9fb9e2d
+58a3f910051220d846b7d1a40587b84e
+58a600d94817918d69410bc7c91dc113
+58a7abfea058bd40d84aa45e519cea2a
+58a8618318e262d81a8c2f2f4e38b47b
+58a900dd5a34cca24ccd09459a0d8a82
+58a9ce5d7a03c47ea25461c07da04ad5
+58ab3d3b5b0bbe4ba552b130dcba28c3
+58ab707b5dad81f7e04c0752d7659aab
+58aba2066c51b013d54c515fff6c20d1
+58abd6bebd1b6032db37ba1c9270d703
+58ac457cff0f82b7648691cbde55516b
+58af679252c19a7321941eacee38a083
+58af9f9025e433c4bc81ecfe70fb5ae6
+58b1da695f53ab8d0c91337c99e18c35
+58b224d16aeb4d733e98e874ffcd9f53
+58b687566b4e1a1a68029a3b90aaf019
+58b700513e1454a9ee475c9b6b284236
+58ba26bfcd34c285d982c9dd34e0bf2a
+58bd8dc2c62c12f19e08fa7e431b92da
+58c069752503a00305078bc462375ed1
+58c1987afc8d5961e309c41c4f698c71
+58c616da2b621d77f3c1819494db68a9
+58c6367fa0fa718e8bcd6b0a782642d3
+58c6e5e300d603375b990b86f242a6cd
+58c8cedaa2cf007121aff2bf2188c56e
+58cc8e84522955685f52f21c4d76743f
+58cdd0e3d79fbee37e3d85cf3e8dddd3
+58d2eb47eb8c504ae72dd7896892b5a8
+58d351fea425c25f308876099ba1effd
+58d3f9cef28c5d07c78cd2809a0134d5
+58d666f7a65ac4be7ace7b821db42fea
+58d759be1b40a97c5446049d5aafa394
+58da140b2732980930af15bdb8a3e73e
+58db735337e0db4849d12e3ca7a9ae27
+58dc6d061034bc7949cde95967165d2a
+58df1d3d5ed229be0825c2f37e452df1
+58df5c51fecacf8bf30a8ebb3566029f
+58e142b71bfae1149879a1232776f978
+58e171837243bc6d94419b751c2d9259
+58e277df61c6d9be94be65e671427e5c
+58e4fd0acfa757a1913d897ca16c213e
+58e837f8133b426e98c449b441e521b0
+58ec280e1c3127def18a187193dcdaaf
+58ece7f05b7931e940d3cf1ab6fedb97
+58ed844ec72a88f7806d01b152dbff5b
+58ee72408e69fd5cfa0573a6ec99352f
+58efc2326b54db375f84616178494302
+58f161ae98f0365619039ce6f53ecfca
+58f2229eb88dde4a6da3b36544cce0c6
+58f22c534f78a68488fedfc042793c19
+58f47cf46cca8969561ce56d2846865d
+58f6c8f0dea1a6253f32622035ae75bb
+58f7b8ae5860bbebedf61b05e45d607c
+58f84cc070e6048ca8f5fe8512b4e111
+58f9f53f30d1e86e844aa9178816e085
+58fa9cf70e1347e3095d42511aca8e0d
+58fae378010064341e73f8c94d56b0e9
+58fc37a06de2e1b0bc824577d32cf632
+58fdfef2a8a1239a816cfd71a1604db5
+58fe60613bcba7e27fb91213029373a9
+58ff4df7004d6281bbba1d384fbb3d2a
+58ffe00d3c8164e97875b2115dc147bd
+59007821fe5529a99a12780cb4d05e8b
+590144663fb6ff35025fc4a9a72c39cf
+5901a3181ac82b01b72710cea1d9dcc5
+59021d2479732f3fac0d82fd89898b6b
+5904c880dacf98a709a471befb3f25c1
+590ad716c99a48f04db0e2c02b700388
+590fa5fbf3075d14ce887d06ed81d4d0
+59103ac5ecb3666bb78961de1f29b091
+5910a2e94c3208d9ba6806209bcfc9bf
+59114923497f110e1fcd9924258a784b
+59160e3c5515f1079e6166f12c43b20c
+5916c830f23cecd581ba4d7848f6ec12
+591870a48d9eac24580251f5fb94dcd1
+5919a83ab512548be873610a315602cf
+5919ec5b0c289390aef9e4c9a629ec05
+591a00b709f44595ed5e71ff8c96816d
+591b5b6ab6e009003d051818b12b40d8
+591b6f943d145551df3442bd2a4683f4
+591c8db8640336413ff39d53601007bc
+591e58d99e2e8d05ceb1437eb578b601
+591f0aaecb90e0517f1bc85b31d42ce3
+59264e8cc0616723c008cf2735b06bd0
+59299efc3f8f7fe4d4e9db611644274b
+592a22eca0a9cc480316f400416a95c2
+592b32df1cebaf19ff39354b3efec6ae
+592ef1260d3105f60ffc633121674668
+592f490103f2c4123af43144343294cb
+592f5b84311a04a426d065e84b6a0aa1
+59338b40a9cc7b892c6b34f17ab192d7
+59338f1eadd06a4b0a67fdc4dcb17f99
+59341df23ff8de4abb03eae1b632841c
+59357288c79595d99df3914cdc29fb55
+593ac696d046633e9342cb85fdae6fc6
+593ad1c6b8c7ecccd6d1471d2064338c
+593e0bc9254858c4b5abd1b49a672e4a
+593f091df1ebf00ca288f3f266daa901
+593f1e088e6f23ab521fba0ec78645a3
+594014dc5a5483dbed45c2c7c4e95831
+5940deb51ffecdc2ee6a54333c23460a
+594406baf94ca1af52ebf3e48ed6b8d9
+594814a1fede9fa722dd0674099d3997
+594d2fa080cb24927b49029d3cbe8dac
+594d58092ccd5579627365c88091b62f
+594d7d9cfe6d835ae3bd0c670474179b
+59530c908967f0e63b6a95875e31ec13
+59538327da86d9c11a2519810da04927
+5955476d34fd9fb030e473ac47884545
+5956826623aee5b23e0ffb9bed3c59e9
+595794ed477359ffc80e689f2cc7ce08
+5958450d4bae96013b49bdd596105669
+595d9cccb4a60d8624c40bbc618d8c2a
+595de3f08dcd63c3f458654ae1c77fa9
+595fcbccce76471523373ed533b7ae5c
+59608c6bb526c5d79fddf40a85e6de51
+59610c1cdbbea7577e512ada7c16c64d
+596280812c3c8765952a7ea5c17e5608
+5963f6cacade1e2192b3f8c0779006c4
+596431a846b9127f689d11910f0b0c51
+59645e5fb68bd1ed93dcec0406a2a77d
+5964a05204d798b2149a66052b50dd55
+5968b2f1f6d4b3406997b7f7e79240fc
+596a244d85b83386a2462fbcc7ede21b
+596abc1123523f570a3ff80a6919ed7b
+596be6175cbc554aa579e421503e1d1c
+596d26aee759bccb05a2a1e264303011
+596dd3778f753bb0187b871beb6cecd5
+596e43ae063470fc7e6efa2703ffaa6d
+596f8b6e4bb87f7f1d1b93dcacc480ef
+5973910eef764dd80d57ab4f11f0c838
+5974da82e14f213615bcc33a1a36323f
+5975fee5c7b38c81efb5d7f1facb50c9
+597693eea3255d90948307d232f287af
+59782cce3f505d86eaa15c38f3809960
+5979c7f1a2cd44ef85930cfbc0c76ac2
+597b40bc50b0e5cc81960849ebace209
+597bec145c3f043444f1814ce238a697
+597c4aac144ddf53e1961556d4b3bd10
+5980f757fa9a4653ff51fc47ec35b1e7
+59854a0d14609eb0c2e4c91288be75fe
+598a55d44d0de589f2d4fbf8c39a3e3a
+598c0b9baca1403b44e7dbb26f008178
+598c1d38d1a6dd68c5230ed6fdc1e35b
+598d94c4bc18dae1ac73bd05eea52fee
+598ef88efb7ff7694350b703fdd3a671
+59903fc455986aa8d2ff9b854c5f88e9
+59911ca7ba509119c85eb0ff6435576b
+599460bbf98cc0e3d5b5bb3c12fbe9fb
+59947ecf9f3214f4c58117d0bd0ba6ab
+5994b7a3e44720dfaf90a24ef21eb255
+59977ea1c19cdd5800edc9bddcc441dd
+5999359214e8b53898baff4ac51cde55
+599b76545d5f77f36d377f029b94db2e
+599b7690185e8fca6805236a428e73b6
+599d03ee5dc18dd256a57bb8737133a0
+599f1ab520f921d45563ca41d35aac73
+599f3e2b59db1fa9be48eeac55f0a6a5
+599ff3d0b99308a8746aeb7e9711440c
+59a247e217298c6e177bb01d20b68b14
+59a34de450e4fd6808d6a50eadc9f526
+59a40940d13f68d4334b3bcb12c7fe86
+59a4858c6ff44f02b7fa9b2871f051ac
+59a79f7c637b3d1b74569642276ac697
+59a8903960f941ab7998b537aac08c89
+59a9029323a37b693ab115a4ae43b34e
+59abcaa2ea49c165c5d7581290b15539
+59ac2e8ec80629e246dde99441ba729b
+59afe335fbd81866d1e075c60d961952
+59b290b97a89ffd7f9762c81e5e45d08
+59b47b1dea4934d8a6d47d3380a5e150
+59b53d9342d2f814093ac660e5a3d74e
+59b55ac0a22872184eaf52f5a639ebe4
+59b6817b5374bc71d557ed9808b68c26
+59b879d2fda52d9781bbd53ba101f2fb
+59b9344c7cf7ea07cc210b066a9377ea
+59ba98102a07f58dba7e2690a0677301
+59be63cd107c4d6b4b06a8cc24a5b653
+59be6aef751b4a7975059e073596465b
+59bec1a62110af95570302bea2b00232
+59bfa7ded768d1583415d84ebc960e82
+59c0159fa4b55f6095452d931b57b86c
+59c052a01d813db84435517219bc6330
+59c23767a7501b08a14c6a85c1cc2468
+59c2a5534791865d4820ba165727d666
+59c30a1a7c1527977a47d5b80ab892d2
+59c4be64af960d08a0f64b0acfa227a2
+59c5c1a73d1982c6c51e069244869c5f
+59c80074f1deb1463e7333516aea7627
+59c81aaa939266c819d7209800fb9a9e
+59c926a81f91dff6e41ce7d9225fa1ab
+59ca97ae3d4c1b6d8b10fd68d2888086
+59cf54cb86e2880def728a1ff66d61b0
+59d1ac4682a26e7d6a425ac1f04e142e
+59d1b10d1dfe5bc5995c60f859d5e83a
+59d7d1bb29fc47cbdd1f9de9e9146f59
+59d7dd23e59371d1cfb73c2b84880862
+59d80def8eae53d77ba2e171c944bbef
+59d972a9e310b1f83f273b5fc0fe34cd
+59da134c65330c21fe2af8166e10cff7
+59da33e3f2a584295d259e59a2efec16
+59dca481f815627a9d8cf328aea426e3
+59dea5c357fd04d3505cb4f0e49565c4
+59e11a64cfbf9b552289c2d7f21e6223
+59e1295e762f9bd880e9b9826d024bc2
+59e16043e7d0bddfb03c8e5a2d7f74c4
+59e2d62288b60cca8331e9de24824148
+59e36c0a55c2fab89dbec1f96a4bbe9a
+59e378193307ab19604473b541b26cb9
+59e5e6aa2bfd7865a49ca63a9356b033
+59e9b7d39828f59a093dbc7efa2c10d9
+59ea3933bb57f3b03f42a26182a1906b
+59ea8446fd350ea90c920a782af10d8e
+59ecdd36ee9f8be3d41cf10ef5cb1340
+59eced118b6ab5221f17cf9794263eaf
+59eed33d685fe1a5b8cde844c3e9718f
+59f0e3dd09d17038013cfc3265c4deae
+59f162b1140e97148da0a84709709b6f
+59f3c58fed0be9dc40d4bd04f496c13a
+59f4a0ff1cf2cac1f76900be777facd7
+59f802dc7f2482f332cefb26bcdc7d27
+59f83463dfa9d898a2c164c4e6963a4c
+59f846f7ec1bfdf0e913d0f8aeeb0a78
+59f8c085b974e610a8dd9c5c9cd62503
+59fa5d4eda08ae6a0e12b49885e18be1
+59fa6cc6f9da4cf2d590526819bf3272
+59fa844e3d8e2a73f5f71fcb9509ed76
+59fdf2349a99b3173e3051834efc563f
+5a02227fbf7ae628cac2448d595c3b61
+5a05a8b2125998c37e37ed287e818850
+5a060ca0dd29f238249440018262b251
+5a08f6e598cb95569d0d2090457a228c
+5a09ebadfe85b7218371edf3ed654ca9
+5a0a0197a972489d4f78c3b8ddcdb16a
+5a0d3e9911881d90219e384a7041a74e
+5a0de3c839f89e6ea7eef665ff69b640
+5a0e44cbf83cdd11fc9e99bebd06cb35
+5a0e7091b01d1d76247b41498545b7a2
+5a0e9ba7a276ca39d8d92c8e19a161b3
+5a0eb624f6a6ffb5d4ac571252a5277d
+5a117bb732f0242a24555157d1e0a814
+5a132c29e38aa7f45c3789a991ea1e26
+5a13446555aa1ec79d0c3ae55df809bf
+5a1345035e0c8970f859e81c0c7f58b5
+5a14ef8e4762bb7a88641030837335a0
+5a154f454973bc6b70a60182a409d9e5
+5a18e5413e34fe2d3ce64839069bd124
+5a1c6e65ea51073499f99fae5dac6bc3
+5a1ca65541dc947e90c713967fcf6c3e
+5a1f58c86fad38f9ca4d18440a134986
+5a20504e59e7a703da054a2a8994f592
+5a20fb3c73b658607ff8a85fa745f7c5
+5a22eb95e1d0b276088eda43e7f06be3
+5a232c1669e47ebc33afb3d882427256
+5a23ceacfc69695ea1308980c9c07f3a
+5a24f2a9460c5c65334df610b02afed8
+5a25919331e4fd58faa97fb40d41f9d8
+5a29366a0a53142daf43b51ace1eda47
+5a2aa906666fd1f3c7d176f8c745cd06
+5a2ab2aa8f5895b465f2ef64c28ba7f6
+5a2e2e581c5e66750eabd5d536797a38
+5a2ef4f0c4e138ab3039429354bd885a
+5a313e0547519e3cbe0d478b792debb3
+5a31af8d040f4e9b530fa5f77b1ba5ad
+5a321e09795ddc91bad7a872dd43db2e
+5a387922342857ab49eb9df37eedf7fc
+5a38a7273aa895a42cd4fd3a5ee5068a
+5a3a3747a3bf721b4c4f96115d410563
+5a3c51243391e693176cdfd5f6476e40
+5a41a868fa0ac6c320f3ad24ab892a5a
+5a41c86120c2d93faf68a74c03aef32b
+5a44d886435012d6ab4b009b328797e9
+5a457e7bbb8538c6618958e837ded122
+5a489e79701bb32096c77bf3c45fe212
+5a48bc8e49ef8671075ad0dfe944a255
+5a49f8fedf56d66e5814685802fcd11d
+5a4bc6bc448c8cd14e14c9dd3cecbbf8
+5a4d645772f83d7f012751e37fb288cd
+5a4ebb5dd95ec4958d06d0309eb9bba7
+5a5279fabadd6151dfdf05d25fa734c8
+5a52a40b9b7de00e7b04efb23cbceb4c
+5a5727d8be17fd7c820ee29e6adb70f6
+5a58e72020ec00484714e0b55bd17a6b
+5a596b9800ae71b4d24c0c669ce73c28
+5a59fb517e4601e5f57a022ebd6fe184
+5a5b47c5249f309406019ebe43a1225b
+5a5d06ebefd75523a43d9bcc616d2f9d
+5a5d737e693309dbf6f4e742b1b925bb
+5a5ebc0f5890e7a8b9bbd8e17e90dc14
+5a5ffe20d13f502da751918c5d1c4408
+5a6108d9775cf79e2bed458e6dc831a2
+5a6227f7d16e0b84efb488089dee0563
+5a65357dd2143c7e7e510ea154e71a84
+5a669ce92d95b27fead0fe13733182ca
+5a678e0e9740afe99b4d17c435f2395f
+5a6910ef51c12e1a25c755d7164f6b48
+5a69ac6a81b869621ce0610fcb720ed6
+5a6e2832cf3add44b8ed8f23966087e6
+5a6f55fb9a74e47d1c7b6b588b6d2c2c
+5a7114f4eee1c143222a9d47cfd5430e
+5a712378d3aa0c9320f3a6782712512d
+5a72b228bbb599bc297cef1db11cfea6
+5a733ae64fdb448583cda856f2a4f8ff
+5a748272ee005828ed2e864f37dc5f5a
+5a759231a852605f3594f980b513814b
+5a77a57f441fe13ad1eefab995a007e2
+5a79b0da4de1e3d83093c076a7d2e7a3
+5a79fd0fdcb5f399a22cc500501ef08a
+5a7bd9b4e432fc72a24392c3940dfae2
+5a80559775a323a3b0edbf39c4f486cd
+5a81796f87821a5ff0366e242521ec77
+5a81b6ef8a91a52fd0f9fc717e87bb7a
+5a827ba79260420e33accd8c902cd9aa
+5a8314ad689f312aba42ac56da0816fa
+5a841949c35a6f134c5d7a53495abc07
+5a85807f1c88c5d88729e4c7acdddc8d
+5a88f1e204817d7198a8a1fcda02d2eb
+5a8d2dd9cc7fa2c13f545db46bac4f76
+5a8e20c5bc40481b4a3322c07559d0ed
+5a92852e261d11caeafbeff9a563c016
+5a93eb292940cbe1d0bba47f47b10f14
+5a9728ee9a271b1a0c44ff02f2532bb9
+5a97765382ac7411b74752f935edd585
+5a9780c5c1902d024d0cd364cc18f884
+5a978e277b358ce63a041b65c28932ff
+5a9895590942e66e9f4bb553cca4a454
+5a98c3c93c2b2abd8ecdd3d91880ddfe
+5a98c5b1b5446cfc2d1f94a6b606e382
+5a9c6c221674a2b7d1cbfc0a521ceb54
+5a9ceb0ea2e9afbdb7dea5b88cdea692
+5a9e642b1b4680768033c55ffcea120b
+5a9e7e61a19373952768ffa0821e81d9
+5a9e8cdb98194f8aa10e91cac1a5f788
+5aa0d3499b17a8a40075b9b8e0c17724
+5aa997d955f75b95fb3fac37ade64b13
+5aac70d7d96ced54b2abba11a21bc9a2
+5aac9fa084bd8f3525d2e9c996c84b99
+5aacfc76e53c0c7e753bce2b83f0ce8f
+5aad85cac3ba5339a30c90b8fc1b2cad
+5aaf764c9f31025ed1b9d69d7ce33706
+5ab12db9e525075796e2bafeabad6160
+5ab4fea2643c931374379554a678f2e5
+5ab6ae5d4cc60686800d81d9c10218f4
+5ab7e5f3d4f5cb7bb9f11cee62273d6c
+5ab8714342860b0d4a0e55ebb3274052
+5abadaebf45811fd742af400ce5636b1
+5abe6b62722811278763ab520f7dd688
+5abf8d0e811b1e021acd6e92f6a9960b
+5abfffa5d71e3416f1e8f9832d1a60b2
+5ac1d02eafb967a15ecd72ca20a690c7
+5ac4bba37463f79651a376e8696dd361
+5ac51f84df9f3ead73d7264a698f78cd
+5ac58e0630205485766dea32239484d6
+5ac666c362d84fbe28c1cb83b08e8166
+5ac783979abcdaa843f9f84f6ccbe476
+5ac7d930ea2695f28c25c84d2734d205
+5ac906021b71a2cc180a532533d12bf6
+5ac94bca8fbeb71d0698b7afe3aace65
+5ac95ea062bd617e85c2562adca125d0
+5aca165462e4f409dd1d3148f78dc052
+5acacab80bb2985cc9a0a75fc53217e8
+5acb7d9147e1ab6ad9d60183247ed5dc
+5acbd2297ebae4705715f7e3f7953d94
+5acc78f029c52248e5ba4bf973ce793e
+5ad6ff6d2c98559910731af1771d0d79
+5ad73752b6544af3bd0ffa6cb30803c8
+5ad7b01795e7d3e88e1e7e2474b9237b
+5ad7e38f9772159835bc949cdb61c26b
+5ad7edc57cc4d772953e1d0e644d7644
+5ad857f6874cea90cc2e562fb01fd9c0
+5ad906fa62b6a9d5fe08bbba8178c75e
+5adab1ce05350e145619b457a1efe50d
+5adf41c9e25fc7edfef0a152f1210b94
+5ae51114fd114027f737305349b97b9e
+5ae896524de3dffc76dec23ce6e51f74
+5aeaa2e489fa08bbe952dd61b761825e
+5aeafb8887b9aa7ec0c8079234182fcc
+5aef327bd6f2664c8d2ecf81b44047fc
+5af135f48232eb30e2d50cce60c56961
+5af1e5bc2091b8d85f9a30285a03ce1a
+5af2c1d2e351a0bb7ebd756621316b05
+5af36e966d85c246ba36d85210ba270e
+5af7644cdb950f15371f3e19db8a3e0d
+5af7f046e7c1caeb9eee7c8e4588ecc4
+5af818896c37ae9d970f33e4ae68ae9f
+5af95ed8259ee23d1cd8d42511b0f4ae
+5af9d170e5e57ac1fb1ed9d91c3b77a8
+5afae651e26969e7bb0c9ea77daa6181
+5afae7110c27916dcc4bc64e1b3102df
+5afb531194cabed89caae7561aa3b06e
+5afbc37da9d64799ead81911b3589144
+5b000e964f44acbc0c7b1e82712cd3c1
+5b00120a1720204945ef509824e9f38b
+5b01b7efb343db05992c95f088c25e9a
+5b037b1c4e0ad2952246c2294093575f
+5b03d4dd0bfb08656e94241cdb28a7d2
+5b049ba5cf5a56c4fe651a3fa1fbfc04
+5b04f8f1b26aafdc2428beb0561e1ebe
+5b05c6f97918ec772ab8def1e1af6464
+5b0d615f1c251d9de9dd29416ee7eeeb
+5b0e2423c636ae0026e1c78c76e1874d
+5b0f13ca002837e82581ef103f6d679e
+5b0ffde5d5304b4907c8ce162e98e81e
+5b10b369819a14d0af295d924c081c68
+5b1285bba51f3500ca9ec7b534c3c23c
+5b138cf0f415f34c367e6ccd0518098a
+5b140134436ca76b297508ac3d57e8eb
+5b15d21e7dd2c3aeee03b45fd70dedbe
+5b1749c7890c6745c68f3e0b854e808c
+5b19251d574ccb40d4e33d2fa1e9aa9c
+5b19b83e3e5bdbdf18cd3dc565577c7a
+5b1b1ecdfbf590354a66c79d11f5fb81
+5b1c058a1d758c3303b669bf6d23a3f6
+5b1c1b63d1341737e45dfcc79b1b056a
+5b1c3945852430cd590f4035af8bf53a
+5b22dec73046aa089b23727b6dcb374d
+5b22fffeeb2c1d8505bd904608413ff0
+5b23ad95095d92e80b1ce1d09a14fedc
+5b2583e4f7ccb7a4e4387d83f1ac537b
+5b259863bcbfe0e008f753c788d71467
+5b25e1541dc06d480ae64901a66d2b6e
+5b26b309dd1ab700ff0c6899c9b0dc57
+5b2acfff7cf531598ca1f37d4b0a3808
+5b2b0af5f7539c133089f60855570e57
+5b2c1cc770c6a14150cd0cb86e80c362
+5b2c21752e3aa4a5bfaa94064866279a
+5b2c5a087a2bccd5dd4d523494cc896d
+5b2f0400c41e9b31ef78e5860894d7d7
+5b31a16769b27d18d83dd0be28f3d339
+5b32019e481f3e44439340b793aa5be4
+5b328c3fc42e14204c9db754d18105fc
+5b3449b95d3f74564097002636524067
+5b36a778abfb9ca43c7366c3c8333ea3
+5b36f6c34d05f8904ed34b13820bc705
+5b385fecbefc68e35acf74faa924ab26
+5b39fdb609218d9e51135bc651fe49e6
+5b3af12e0645d61b9e5807ff9c228449
+5b3bc098ad76863a6f4072ad8f3e5032
+5b3fc65ec6dd8c3ef1c9c89715de1726
+5b453945de590ec89acc7639e651d59a
+5b4d0185f2e9b5d2b0c88c52bcf903e4
+5b4f1a919c6598b2b2c31ee662707bef
+5b5128d16d942bdd349682ae3bf7f891
+5b51865b217c41b02f7c9dca964a782f
+5b525a0b0e15cd64a33673d52b4821f0
+5b56605b02ba975c66f3b1724de7641d
+5b56e45dc2859125f1142ccf25822dbd
+5b57da648504c773ae72423893cd4433
+5b5802117445cc3855ac25d5ab51e243
+5b65182cec68b11552492504f8cea0b9
+5b663214384262752fd54c4578589a7f
+5b66d77d269947c806e3491184c09848
+5b68665a473f5b57b0bdaa3acf83bcda
+5b69af95c853a4a6081669f4076bb281
+5b6a16eb0b8556fd04f94b6fc4660bbd
+5b6a661f5b8473f91ae68c52680210f4
+5b6afafffb1f1ce0823fdd043fcd5ce5
+5b6b9939d16168d10bd4d1c45954c497
+5b708f5f515d09324219a38aeeedc57a
+5b736a7e66f433d7406d113fa0ff3fca
+5b73719d73a22c240dcafaddabdc3f3f
+5b73edc44f3c30a2139a3052bb5ce368
+5b76bcef2849fe871e99876c7b23ec99
+5b78581dca647062bd70c44ca6e4c879
+5b78764169bada39057cfc028477703d
+5b7ca4b157a4cf78bc6dffb7fd1d9439
+5b7e1ac7494a53c35729afb2e6a4c760
+5b7f1dc95f69e2aa7304acc13c3c5fd8
+5b81a31e336ce7e952f7439df9a305e5
+5b84036b5095a214f43067ee7a6d7364
+5b84845bd0530c62dafdf3653c374d91
+5b89a774c5e70e591cca58c9764ade74
+5b8d6a787647bf68893f6120aa2a250c
+5b8ecc2b21ba5846e3825a4cb3305615
+5b9233746e163745fe7cb49558ff654e
+5b928732f1b5da79511db29ce88f2889
+5b9444091a4dc7bd1c94ca593b268893
+5b948bf8b491c15d3e7c252425b97c8b
+5b956080605d9f9120e51408e067d766
+5b985c508f9d48c6cbc2b4108d7c8df1
+5b98caca62c76006d88ae6e98fb83d09
+5b9b9ff424c95259ca18a6378432ab41
+5b9d2e53113c837627ef1ec5c495d166
+5b9d72051ecd0084dac2ac9e0629e090
+5b9e723130a9b35ddedf2b4339efd384
+5b9eb18e810d25721afbd76e391d7f81
+5ba0b9c44fc91b68c0f087b0e1f7cfe8
+5ba192c6fc47c06e526e6f89e40407f8
+5ba417c6d3accc6689c71d5403b112e4
+5ba4d7dfa091a88cff1c9bdceb8faeba
+5ba4d86c328682643ded571de8efc1bd
+5ba5b8d06b8cc7660f427761c78338e3
+5ba78c6eb26c71a8620f4f47280835c1
+5ba7cfef3d097c1b9664d40fb4a2c771
+5ba8cd1bded0ff3041d2903ffcff18c0
+5ba93a15facc68b40fa8dcaeb98d3e6e
+5ba9bec153b4d6f85fc17c4627ed8754
+5baa411612be294e38df2ae108ecca27
+5baded52f04498d0bcb3b63aef28dda9
+5bae1bd6f86d53a9ceb3ca6e91d54164
+5bb002af0ce3fc23cf5870c83b9e130a
+5bb07a8167a967d771dcfb176c430dc4
+5bb0a26356afea878b6edb527c205547
+5bb2e9722da2198cab641ca2a188a6c8
+5bb3372c2221710589fbfa71ccf4042e
+5bb3bddc2bf41c57995d3c93c3113e15
+5bb43f6ca7972dcc9faf65da47c1529d
+5bb5670957b605823aa474707472a4a4
+5bb5fec7bf7b879f63f94deed4c77d2a
+5bbcf37929dca9fd8066b0d0bfc428f1
+5bbd8a4927e273f56cf1b5e5e3fc2002
+5bbe4613e54405c50ee77d03a1622e40
+5bbef6d433c82433db0bc56a535edcd5
+5bc063af48c8d00774847154c8a6354d
+5bc3a21240bbb500bba3f4f06f11cac7
+5bc5581c85e7ff821a3e9b470a54ad02
+5bc602a31825c0cca6f60a51987e1d5a
+5bc8001ba1751258ae1ac2ae5e381ff2
+5bc81824a65ed1ea9d1f4452cc3b97be
+5bc97481099b03393b8a66cce21eb26e
+5bc9e81aa529fab3457f7e954d4f8316
+5bcce7448e4d755bc0de8bf8cd17f76f
+5bcda44521ea68bc0dfefcb2639cfc64
+5bcdc379bd837ab3d7c184360cf07271
+5bce1f56d9fdeed3f46288d10c34c098
+5bcf5c59fc1218fff63159a80058ebc6
+5bcfd59853445d37074bcf4bb6d86aa3
+5bd0c67fe92b7df4141fd78e0c842e96
+5bd1f6877a4dfe159be2ec4a59260b58
+5bd3496e8310cb3eed7cfe2eb80cc0e0
+5bd644174e56321dc7781941f7521d53
+5bd9657ba0d8a972ad0c1d601efcac67
+5bda005bab6f8fcf4a5699dd122bfecf
+5bda53827ae0b5ad827a48595789d60b
+5bdbf96aee6ac78da023f7887728d7c7
+5bdd6f3d180e9efbbcee32e6c425d087
+5bddbe55a6a7e16fb964883b7efe8e5f
+5bdde126215d9a481a1961cc7a4e21a0
+5bddffc0410ce6cc8c4315f557ee01f7
+5be0c0466a6dfd5169c32f04ec53b4b9
+5be13ad707b62d2208ecfd3af49bf708
+5be29dac39e124564326db0417999f09
+5be39f303bcf5b19babd063905cbc612
+5be782808a884f86563207b3318b34c2
+5be806e563a02ac26712fd4cc71c44e0
+5be89b887a3a10a622487f42fe2b6062
+5be8fda5b55a5775bde37f4a05c9daff
+5bea6b437eca6dfce4f92129ce1ce462
+5bed0ef550ef0199cda6c8f0194f6f5e
+5bed67a2757340654dc6d22ba1a1e7ec
+5bedd8f636796418c8382376dabd9737
+5bedf91d84e6e73e0aca3e939473392e
+5bee6c53ee159292ba415db8082b09de
+5befc47ee7c45446823a7b3bf7b18133
+5bf08e44a179f0ff3ba1f972a5efadbd
+5bf33bd5e5cc6e701b592eae65b5ce4f
+5bf3e6c23d866e54ca10cffbc1067adc
+5bf432e5e36e1618a35357b8fd090ce3
+5bf5c4df8dc9ff4e4e14d005134b0082
+5bf64f1f2b3f6c36fe1e9d534f92c357
+5bf77209a804fc105b7366ddc708cde5
+5bf7ea5a4c4a2ee5a3a2edc9b0e0b0de
+5bf9efb02f4e17cc36ada7b2a9648d6d
+5bfafc079992df00a7a33062283dfa26
+5bfb21a1fadc4164e75ba6b55c7c0e6f
+5bfc99ff3124c4bec3c55a6d4bc7c8cb
+5bfd1f927da0013d83521c3acd0a1a63
+5bfe1d454ed14b3d3793a3c13eee7072
+5bfe7045ba325993590663f6ed166f22
+5bffdada48eed466dca7abb3c7ed15ed
+5bffefa1af06d89b52e6fe127c711600
+5c00dd8c7355b2b9615734b9555bb354
+5c00f74d6338ef53d182cf1eb3570e7b
+5c013661d37fe135874c2b49b4b943b4
+5c024a9d1da519b822c23ccfbd9bf010
+5c02e329b26758c011b839494c1abef6
+5c039df04b8b868b58e634a5277fda08
+5c03e2fd747993be8faed0f4510bf461
+5c06cd201c2df97879b45132437ad992
+5c09133bf45c852a1aacca73b7329d05
+5c09a6f67271275ebe0df6d1962bbead
+5c09f1c614b0cf95ac7b3589ae36b137
+5c0acb8a6cd92af6ed5b4d6d6e04f498
+5c0bf895bfb5f7e64bcbee916005ff31
+5c0c50336ba6061140dd253b74e6dba1
+5c10f57396e39a85f73963965ca4b92d
+5c132b611e494ce710e8fd09062550fa
+5c14a1cd163faa300ba253ac043fd100
+5c159b3401b013f2fc119f470e08ed2f
+5c184f186af4a4510e4af3accfb90ab4
+5c191e344c1f451a4df9bd3a799f22f3
+5c19d88133bc37c23f050aa7f67efb25
+5c1ae446734fc3e0c98989f77d9b534b
+5c1b61fc81a6c1d8b18090bada20af25
+5c1f3ee41841072615ece00302ebd6f1
+5c1f81b333c99f52f8427d081d6b609e
+5c20bb6e12bf19b2adfad70a818c3ea4
+5c215c9bde42dcf129ccbad0493c5689
+5c21d6b054d409e24d04edb0a9572deb
+5c22e153b709e48cbf90e867d2bf28b6
+5c23005a0db463b4ab216e1d18e36694
+5c2820a08946a28cb20d1dfd2638da48
+5c2889683603c384791f62002191dcab
+5c28fe0cf732d0dc7a5e8cc756f760ea
+5c2a218eea875a2c4fd52f0e210dda36
+5c2d7c5d857a42062ca3e86a00b30035
+5c316000fb42cf709fb9824327b91989
+5c337e0cd5661a410f87ab6c9bfc8f2e
+5c349d30a593b52229e240e8251fbf54
+5c35c3d30c76d8e0c999441d686340eb
+5c39084af3d49565873b7fb50d740dd5
+5c39d98c45a023f288e64aab90f23d00
+5c3b4e82b8366cd3a556080efb524fc7
+5c3cfb9ef91baecbd79b792207c14695
+5c3e00df4dc2f3f984fe2973c64d9845
+5c3fd8c572a18ade9eaddd7997cec72a
+5c42b40b302dea1f942c455d3fdb3b84
+5c4554446dc83e51b3d0c04e5774f385
+5c4825623577d9a5fad099e7c62ccab6
+5c49fdd8ee0ef2136daf97423360a32b
+5c4bcece70de961bdd5df2353b2ab3ad
+5c4c234a35138f857c115da817c2d387
+5c4d7eaa1f7699dea14bd5bc5bf84a5b
+5c4e21a37569a48d343e7f9363705b74
+5c4e2f0455f2d20334f5fdbd4a0b3305
+5c512d23ec47700b7b3bf26834386002
+5c513d4644c8f32d1ff565c464afc25f
+5c527140edea52a1b93a198186283d37
+5c566a8f85424361718d65dde18ff9c4
+5c56ac47c06673ac60181291ccc65315
+5c57aa039081b7b32b411cb72dd588b4
+5c57baadd4e4a25f0d2dca6a87c50972
+5c58e728fb64b0554fdbe009e560c3d5
+5c5cebf55b3755c8b7dc1cc20493f501
+5c5e74bbfb0543aa3f6e58a312c4f0fb
+5c5f73c0dd2b4e76f5b382cad2b2158a
+5c60b03f5ed9ab7f559e84226082ffcd
+5c6159006f69a4a3247fc5e3716e38c0
+5c63b144a03d8ee19c69b4f1febe3de4
+5c64090e02149d6b932d74a0542aaf7c
+5c665ce26c7312ff5e0f36b244bf0b5a
+5c67d5daf2a3ab755286dd1e5abbe4b4
+5c693d82845ed9ffeb5e246c5351ef49
+5c698fb72c910996006df40b508e7d29
+5c6a2e3c5b5e68a2662d7b3cef82c69c
+5c6af21fca240d81dc5ec58c76920a1c
+5c6e89d52e01ad93f7769d717f2cb818
+5c6fea1b23a9bcc01586ca28ab7f69a6
+5c710387304d6f7dc5c0f295f9e345c3
+5c726e4c66495beef7d1ad28ee9a2c2f
+5c754fd852b0e6eca46663967dcadaaf
+5c7554a36261630fe429937bd8343280
+5c77cec33e2d1e5e2e9fb390210a4dbf
+5c7c55e42571f1abffa03f1ba073ab67
+5c8135aaeeaf406874e4cc6c5932cffc
+5c8290333ca51a5ec230bc5966d3e152
+5c8394937fb5d7e91252a9cc426ef537
+5c84910c62ec024c62117bbf079d20e4
+5c85688e2e00aeb70038f24a3f142f61
+5c85ae3dc9d28039af97fa91b3972114
+5c85d1b4d869a923a36deae91626580a
+5c86aaf6d84ca176a974fcc1df88f2e6
+5c86f9cd3924f6afaa0a49db77a8e697
+5c88ce714f4b223c89f6bbe31ced301d
+5c892535c74d4b9dbf29db48b3997f92
+5c8988dce448ef446c2f68471b9a7bda
+5c8a0c86e332b4189d330b42d7e48094
+5c8b8bc2d90d2217a2dfa33e1cdf9787
+5c8d3e6a3fd00cd81b447357cdc49d77
+5c8d83ffa50c5b31dea96b7f96f70162
+5c8d8c18ec8e1ee1c47a8aef673be05e
+5c8de7833324bcfbce5332f8457e8347
+5c8e1bcbe44eec9374b770b60079c5db
+5c8ee05b3056389f961bafcf7a1d5e46
+5c8f122a36356cde0de62519b143735e
+5c8fba51a90921dd44bea21834d34775
+5c91e0bcd7e831829272b4d7351319b3
+5c922b29aac89168838d740d1fa30fcd
+5c94fbb4c2156be41376fd270942b6d2
+5c964ab3727365e1a1803023753a4a75
+5c97022d802c04efb0ca80d971a8b950
+5c97aa61189b8b33c3959dfb3634c396
+5c99402c57a1cd11e19cce64dc8d4951
+5c9992b6b14f49db7782fc1699b3c7a5
+5c9cbb5d24b1f75ae5120777807d8842
+5c9d377cefea10de66a405abfe321b53
+5c9e041f72f1cae58935e643fd3cb795
+5c9e314a5c8f2c49af252827f15c6187
+5c9e6697293021b50b344db7e06f368d
+5ca03248c8cac7b08f5fecccd5bd1aea
+5ca2892ea4ae82af8600b5b91add9a2c
+5ca39f3cd509d22ea05b1d4253799b4f
+5ca61b05f3d12117514f58aad8ea5e1b
+5caa1540367baae9931573414e1bb524
+5caa97e2b261f2d8b16ae946d0c0add3
+5cab133914067ec3bab739b60442d663
+5cab200560037e1d0f6f85b40c77fe40
+5cb15b4a6a2718c90e8513bf4cb6023c
+5cb22a9b004f155e4c1d59d46b96ae8b
+5cb2e89953c8675b8d9e4795f8c42205
+5cb384b7154f7cc579081f71c3432b90
+5cb6deee192f16fd5903b64617da031c
+5cb825a9b77408e56d4c9ecd3b20306d
+5cb8f3e8fcfa682b75c151686914df64
+5cb91518ad37652017437b5a689626ed
+5cba61352c3e708f40567a99bb036095
+5cba83437aa5499d51cdebd05152cb2e
+5cbbeada99b0f1ef15fd1eb44e9fa4d1
+5cbf520ac38177ee0a40fca5a0387e37
+5cc027608e203ef90d9d45e4596ac569
+5cc0fab505df0a81c1787ea6897add9b
+5cc1aaf07efe252da80a915555e14ff4
+5cc38a26a15d92c1dbb453070056af2d
+5cc3bf3867aac4b8a105857c941d2d42
+5cc51ff3407569a994b7aa994feabc07
+5cc5f602175c872b771466d08e3dd5d9
+5cc85dbf759246fe2281a149686a1d81
+5ccb2944bc825c0fdc894d2aaf40288d
+5ccb7c66e7286de8c403c151f5a366cd
+5ccc097d0130393b183d19b4625184a1
+5cd0317cecc259d939ab282e7d8043c7
+5cd15830de7d5c2ede110e7156de892c
+5cd217f27a109d4dec11fdf77ceac4d7
+5cd2ba155200f3146c14f73f1461e904
+5cd2f294a18674bd5a219cd250b04822
+5cd2f9a6e3b4845c9ea315d0b9ac74db
+5cd405b3f7a12e211aab69977239cea9
+5cd6f2391ce1ea08c19fc0a85ce501f0
+5cd78583609df734a0cff3408715d1c8
+5cd7a35b147b7144fdfcdddea734fe64
+5cd7a498370d0815f369fd440a21de75
+5cd7f092062d87a32180b7765e0c57c4
+5cd8a45b9273c653197fb8661c055944
+5cd9d9b4413b3bff707040e719e76288
+5cda1c31c58018c4ec3aff1f80ad6639
+5cda285fa870d4c08afc71d07ed14127
+5cdaa4f51a6908fac8dc9baf775cf738
+5cdbbc4adf724f7e3025d594a44b2c86
+5cdbed5c4852c07a9f8193e1914b58b8
+5cdebcc7034cd6277d9ea85cdbff9fa5
+5ce00be4be11c656cab911a24a8d8115
+5ce421e7d7e76eafb8e322d3c5825834
+5ce50d4d38584d40f0e7be3e4bdbdd76
+5ce5d006651944ce1a70e15375c6e287
+5ce65dfc17b0cb86ef6ba0f7fd32b638
+5ce84f3ed25e902aa3c8e65d9361dc06
+5ce8fdc3c976decd4a075f65f4045177
+5ce95411a8ff1b0c182f38b14c41f7a5
+5ceaf7e749787cccb9c58857ce4f9927
+5ceb2bfd215c45d2f3d7ba4c85edcfb8
+5cebda0ff458cb8fca2a18856f3f021e
+5cec507478c3402e7532f0bc74306f1f
+5cf1af512ce8067bdf248dffb0d33048
+5cf210f045b8eccb26bee958bfb9c9ef
+5cf2aac5f0403da4b19f5f9be9721a6e
+5cf2f99d6dc8f7ab6d08f0e62657cc82
+5cf348a63d8e712c4fb962cd05efa4af
+5cf3fca7620070a5dfdf8b16936a67f3
+5cf4b596028e729ddfc35b8a8cf8033e
+5cf4ccfad5bfe255f4af4735e3cbb452
+5cf5b32f9e11340e26c7a1b09aaad95f
+5cf66b5440a04d6d8b8e3460241f61fc
+5cf70a8d8d770a89a985edadb4d2cfc8
+5cf84f6ba61afb3890dd79b521265d75
+5cf9d305f0367257d7e63c679b377b93
+5cfb5642b8b9e455f458dd6676fa2ae5
+5cfd807b2f5f8e45c80869e2ca85374b
+5cff9b8ecab14045789d86a1fca4c5f8
+5d00d1faa8ee907bf533b40028910b88
+5d010d5636ea5eb6d3c2e3aa34c11da5
+5d06b50815b42d339f97fa5442981c13
+5d084f07492e8cb204cb5caa0db5bd5b
+5d097ee943a4d964c3499b72bd1eb8c1
+5d0cfd6082e4516b39ecfffbfe75aa38
+5d0da20f4a541dc45af1aa2001ee4b97
+5d0ed9294da1be8be5c92f8f117fcad8
+5d0edafd728467f5da441f865fe031bd
+5d10d316aead70d401a72b5d9e64d2b7
+5d13af3bb3d10adb4b4bcd7e0ba2b076
+5d17ceecadfb567c4720b072807114e1
+5d18b362d49eb721e31636c281ca4c51
+5d18bc654457e4434415e4598ff1b9ac
+5d1a0f08983761f046c9cbfdf23ea284
+5d1f9d7cc2155deff09275bf98735c9e
+5d2053dcd78475a46490c5b278a36054
+5d206661ef747052ca2a2c135e223e08
+5d24c14930bc8bbb2970784225e84668
+5d2577947fa92d1789c65332948a0424
+5d25cfb8b37ff77ec7882a6aec62e0e1
+5d26b88a6666d7eacb85ae3e391e4c09
+5d28c33fa012334ca67ff7d7903b09fd
+5d2976dc1cc5651d8b20e2e8c766d624
+5d2b1fa029fbe6da51a992bf24e99834
+5d2ce3379d6387db336f0589aa886b86
+5d2db3b1d9835bf21ccdc1663f732157
+5d2f90e199e040277d36586f44ab99df
+5d31311c9d7ddc7f125c9cde3e80b24f
+5d319e19fc5055853721e15e7c6f683b
+5d31a6761a6fcaea1a819ee59e6c1dc3
+5d3385811c46b6d6cf9a4ccced1dccb5
+5d34d6fb1366ef8e52886555f6f01220
+5d356a794029b611aa15afa259cf5337
+5d38f74af05559ed3ef1e167ed5c3408
+5d397eccdea7440533035989f1d657be
+5d39aa75dd8aaea70bb59f7c506e5a53
+5d3b4ba187db1d392e89e56be027776f
+5d3e1caeff0e85b88a4bf99b8b75c180
+5d3ee2014ff1a5b8d99c9cd19a6874a1
+5d3eeb43b4aa203dce9ee1dba68f077a
+5d3f8199d17bad19bb0dc8f8aadf16a8
+5d415c585a4ecd0e9a949b807eea4c54
+5d42e741ad85e1523589c0868004646c
+5d441f2a53c15027fdb230f22cd5b1ce
+5d4468bc892a83d5c79a360fc3c1dfeb
+5d453ef77f525eb3b896981052555e1c
+5d45443c7c9cdb975333ddf36172d081
+5d49183f81e65d621b8d25a433d416da
+5d495a76bb15de81695df2e5aa578626
+5d4962a566c15b3f281f87b5557f2bb2
+5d496f15a3888a71a33f0624d3b13501
+5d4cf609ed33d0e5c962222a4f62bc2e
+5d4e7fe2d82198354e408704e7533d28
+5d4ed47446d65b3fd7a43889f0ea2aa0
+5d4f94e392ba154527d88f42a3af841c
+5d52da859594f095d1a3b7e574d41e55
+5d5351b57229dfce62a9c1de79c0c5a3
+5d547875bc58db048b3ddd1cb62e2584
+5d56331cd8dba8eec2490a6af8c17847
+5d57b6ff1db158300cb76d897714acb3
+5d595611835589651eee63268b1478d0
+5d59639992f8758b337bd3b5b59a17a7
+5d5994e21652842ea45fe2621284e4ce
+5d5a1baf2868885d16959cee31b94231
+5d5bda5b6310baca0d4ab7641001277c
+5d5e22b784a82a4581b9dc450f2a3630
+5d635e7bba585a1444f433eb85bfdccc
+5d6646615a9e34acec517f5d20a584b0
+5d6673e25f6a64ffb8fc114149d6b05e
+5d66c128582fc956eaa5e1473cf92973
+5d67c7a28792bbe40cb3d16d8db4ef63
+5d67fb40c5d1242d1b2463ae2db55cbf
+5d6938e98e583a50a0e17fd384cc8808
+5d69906a16963dd79ce384d067b06584
+5d69fbc045debd048e4e5b756c6a3574
+5d6a495ec8d3007106f2c368cad469af
+5d6a76cbc1968e24c7ab9074e3cef4d7
+5d6c71e530cdb3e584a6e1b10817e12e
+5d6e43655861042d3aa4b3ebf9e8e3fd
+5d6efe0f34db9d881c13bb93edde7ebb
+5d7350e2b131248d3a9f96563232b470
+5d7521cd88b5623414c7cbd5f1db2944
+5d75a9ebe4ec4d3a4cdfaf774fa0cad8
+5d76ac30c0765fa829806753a5d343f1
+5d771bc95d58f22f2513a096b13820f3
+5d7911d8ab62197335c6024a89a15322
+5d7cb7a3a3ba6d5fe06db956fa2d7398
+5d7d51883011cbfde65292b0730263aa
+5d817ce474d1bbda6228722b3a13ed51
+5d82b6bcee8c087a1be1e8d7839d012c
+5d8318492b4f8b82d154f0d7880e7555
+5d8336685eb38b1a33c2bc27f9389f77
+5d868443185d876c2645352ea152c389
+5d871e9a9245881ba21fe5b05c96539a
+5d8a7e3a69681d8c4ade22f284a01032
+5d8c2c9826629330927589e1b968459a
+5d90971db9b6ec2e468f1b541d852ad3
+5d91bc5a51a724c5e73936471dbb2bd6
+5d91c5fb1024d876d4f210f80c0b82b5
+5d938241558fccba61e6f31bc0baca95
+5d95b5846b040279b4f200ef505b3aac
+5d971cffd66a038644f584da8b249105
+5d9a4d145d7b37ab32f55be991f47610
+5d9a991afa12f19c92acce953e40165e
+5d9be76256f01ee8f8cac90836260e99
+5d9d26b2c6cb7aa4fed549a470aad2c4
+5d9dddc8f2951d8584e991b2f93d09a2
+5d9e6e8e574b05f501ee59c4d1b8e4ab
+5d9ff0f34f61faa749358f87f99cdcbe
+5da05a370d719c21bbbf89857b9ca5c4
+5da244d6e8458aeb2ec548a8ed3edaf8
+5da45672ec37e58c10a4640c548c94d7
+5da7325029f0c7d6203cf80b7497a695
+5da7df36d30cbc85e84313ea1f1313db
+5da97e11cf07ae69e2fb37bd3028867e
+5da981c202442334ab8463726c0c60fd
+5da98553e951a0df2945beabe7636b5d
+5da9d421c0b5ae5ed35deb3de10ed330
+5dac7a109de38db7a163b7d9759a9185
+5dad05d89961ce17b0df518c38d23069
+5dae60e9e7188817574d3f8bea9d9daf
+5daec945e83f8d8aa62429eb09b7a9d6
+5daecb6596bee4b194325c5a4bbb7068
+5daf0fc47cc6d2c8f6c0d5403e5465e7
+5daf8ce971b96b1ef5efc1acb1b9881b
+5daff4100f31ac130f917816fa222719
+5db1e0aad1ab0f47837149ecc21d8a32
+5db253ab4950b9d8417140c91e79a945
+5db475c730f7987e1df3f116fb70b69e
+5db49ee1f3cf8e6a1a24b99ff17af38c
+5db6d0502c114d60f832b22515c01967
+5db708ec090788200424571feee7a35e
+5dba268e600e58efcaa6d0fb3fd91ba8
+5dba4226dc931378bab4c4d36c8097e6
+5dbca9e268008670355372149568eb42
+5dbe0f3c52d96e0707932dca051e52b1
+5dc2105207dce30b39f309480f197ab5
+5dc30f318375d5a34c5032b36a8eb42b
+5dcc239727e56b84d8d8853e44178393
+5dd0cce4820023fe487f4129373f3740
+5dd6098b1219b049303ead391af12742
+5dd702c0e749fb78ca70dc07f274323b
+5dd76c78640eb81ad8b425ce0bab8b37
+5dd8121ce43dbf72ea0f53654a7a9a15
+5ddb780489b2926332ebcc4e731679fc
+5de39301b8cfe55cd1af96c868667ea4
+5de3a2b0ab675336c3199d48a8e91776
+5de3abb093eaff5e6c807c85bac7d0c6
+5de4663e09464cdda1c5cc362721c1a6
+5de4fd2f42533912650533f15b6278ae
+5de670127ea1f815bd220c5ac45534bb
+5de8efee2d9636bf29aa630dbca9b9a2
+5ded2430dcbe855aaf923ebd89b250ee
+5ded937a63b5f74d83bddb118b146d4e
+5dedd18bd868e9f08ff66b382d4d1683
+5deebcd37e2e902ec9b0dafe36cc3d09
+5def6a58ea608fb11d4e4e42290bae16
+5df297c85d7753c4dcb2d0a408d55772
+5df2a7e0e1877f13f22ea2eec880f8ff
+5df4d6ae2ab2ab04f9024f628c25548b
+5df6475cd09335a6a6fd97552b3c2265
+5df8b59a7b2eb6e9f835b6bb454d30ec
+5df8f660668d62d022378cf2dc7ebbba
+5dfc3b7db692f86961d9fa3b1e60f16e
+5dfd04639bf91236b4528a41ccf06d9b
+5dfd7efbdd345098be2571c60ea45166
+5dff6456d20a4b93646916a542c06d76
+5dffe29e384117c689c2b89e62cb4923
+5e018df7ab9725e8601d6151269673da
+5e0378a18bea2020fce64ce31887124a
+5e04696794cfe56a6fbc3e4e8834715b
+5e04ff74d2c60e13717e14dedfc4e3d6
+5e07b9a56c5b5ec245f30cba947c7cad
+5e086af6bef5a437cf72ac423a4c457c
+5e0953f28bc30e6385d941158853e089
+5e0a7bae859838952c1878bb940b5cbf
+5e0be735ea060866ce58258f091a706c
+5e0c79a54cd258e9dde3d5663a3b0351
+5e0ced3658ab5771828f47554752efad
+5e0d70ebce5eacd2d19c75f428aa037e
+5e0d82135d89d5216e7bd13ebc763902
+5e0edf1e073a67b7c1c43a8f4bc2f56d
+5e11cb88810a2a595fb199fe51f99375
+5e1479ee20db195bcf4431e792e7dede
+5e14f211afe6224be1b5fbe94fb9cfb0
+5e17adadd5ec0a153d7c0dd11c9d2470
+5e17b8bc2604d156130047df9763b909
+5e17e2c9c3e1de0f82f0ca5c4c69c53b
+5e184bf3a25e86e80d7f45b5e38f7aa5
+5e1a083b0db1d9fe0647aed0e7c85d42
+5e1af39a9ad5f934839c4b70dfd8ece7
+5e1e1a27acf55a4a4bc29113791c973f
+5e1ebd340c9698efcc8e5e0467a236d7
+5e206267810e3f0c952463fd42edc9ab
+5e22de1f373a4ce556b92378aa36e939
+5e246461222199a12a6fe3f1c03ce35d
+5e252b1206716ea0fa0eca40da6fe507
+5e278216502d5828f323c7e3689e9980
+5e27c57da6b690b3b1ab51b6f6888964
+5e29c7f6e408858d46c9c01c8ea45e44
+5e2a3c9fd3cdef2a56f8a1075b4775ff
+5e2b31a926985e33ff65dac9fbee45bd
+5e2bb9f9ea61b9366585caaff6ca754b
+5e31ab98969a09f5cf838b1c5553b2ba
+5e3211897c646dee049b0fcad66b3617
+5e32a43cb1ae5713de2ccd2e425dc8fa
+5e334cfc14800cbe82717cafb66c3227
+5e35011920497d580d36b2d566e639f3
+5e378551cb037ba53b6db6cc8925e8ce
+5e37c72552eb748993b1cef6c52272bd
+5e399f2a76d3f900b258d7a9133e0bda
+5e3a85be09fe8b14b4b4ffe2cfb29820
+5e3cd6424220f8885447730b2e572531
+5e3f141e1b827e7efec0534ec515ba76
+5e401aa58418a7475b6039072e044c6f
+5e425bada922ce53ce3de8115010c9c4
+5e431674043943bc2dc5c91485864790
+5e4398445684ed9c83e45d7b9b0f6621
+5e48fd69c7d9b8ce0e4b9efacc691583
+5e4db6f1e1640ec1a3e63d97e627e35f
+5e519b71bac98302ebaf58884318ac10
+5e56b3e74d3fb72e6feca19ffbc800f0
+5e579a57fa03cd89961c7c6a9c8a7919
+5e57f5114e54c0c7c0cae9e702a8cfc9
+5e59022f6fe36b2b8f93b130cd033832
+5e59b1191392e23eb228e522ca78af0c
+5e59feed4a0cd70e21b380189bcfe66b
+5e5b22dda333e80b8ceeeb87081df96b
+5e6159971fc8f97654389a659e7647bf
+5e62a0ec808b1d933b058b517811a859
+5e6396ff9eb1883fbaa1f8ab5a672f31
+5e6533d3e1b898332651b1c70c2c768c
+5e657ffa3b3e15af98fe886006fe007a
+5e6a8f18471a20337ac06c255f86b360
+5e6c66ccead0e24e312521fe72b3ddd0
+5e6cdba295e166163f38c200b37f4ea8
+5e6dd2d8f388ec090a9a6099a2c54f51
+5e6e1ad978c588ef0a4c6979a7fd3454
+5e6eea65f5623ae754d430d3253ec7f5
+5e711feffb7d3f0ca3249a7ab1f291f5
+5e71ce876029126b2fc06b9f132ef648
+5e72ead354380c51ebed0c5e650ad288
+5e74b92d4f91e9ed1b3fee592cb22635
+5e74f67fc8121653b6a6a801b86a49f8
+5e7944d6e510e7e0960fc9e4d28b3385
+5e79a7eab3b2c2c654b0e420d1348991
+5e7a62dd5b3567e19cb57e70b8cbcb1c
+5e7bbbf7f6d7c565083c2b3a4b920334
+5e7c8a674da371eeec4577177aea1a98
+5e7df55bbb4f3f3be261577491f24fa4
+5e7e5b392b34bad7bd61dba3f8590291
+5e7ea177fcfbbfc4d4647f2ec854a4b2
+5e816789e6db69adab4e516321a718ed
+5e8353e468b45cf08971060d9660b373
+5e8389e4b37a6215573fb2015c547e00
+5e849e09221670f35f75c4d34cc145a9
+5e86070a356d2ed4a036a28bdca8e059
+5e86b84765be8eba76e7620b1e40e931
+5e8b88bcbfb24a37bd8fc5534552b152
+5e8d7345618f025a78644962b0ec28bd
+5e8e1d139500893bedb076d1dc01ce03
+5e9256fb218780ac0eaea829ac848783
+5e9333ce096a576d59809fe98c6c7bb9
+5e945f28c037d057178e3c40b0b08fcd
+5e94b2d405497f422b7aef152e0d31ec
+5e94c79d74a1f62db43806873904ad27
+5e976d98a1bf3bc86920c51e09b4a3de
+5e98386e3c3e582a1a52bdf2c4ed7f7d
+5e9872159973f42c3c6ca127f910483e
+5e991f221f160ef2b29f7d7cdf28d444
+5e9eda907377c7bbbc4ddf252530a8a9
+5ea311d64891c8828bab38edde460f53
+5ea31ebd6a8abf232e6ee2def4a3c1aa
+5ea4aab0882ee4864ec36eb4e07f2606
+5ea53e34eb494c2fc9cebf3c73b2ee7b
+5ea6584e1af079d8e04b09cd799df139
+5eaad75e6bb592fa1f25037a08633345
+5eac7a09bbc3d4b2af84dd4172e1eb65
+5ead7b232f74da6a12fd686a6c0c807a
+5eb0f8af6eee1b2a42cf4b75823c026c
+5eb2ff20daba1d57135c87f6afe7763c
+5eb62a735987b29624a2f19caa1da494
+5eb6cf6d48336e59f159238e7309c552
+5eb873e4994dfd64f9b83abd363f3ee8
+5eba6b4de99d50b2316747a258c505b7
+5ebc160f6779b9666f257efb865e6979
+5ebcd9e3a56283d09f42b6e416001644
+5ebd16cde0c38582bb21adc48776225f
+5ebf68e418f4ea2171110db0561128b5
+5ebfb072e0151b813a604ff8635c98a1
+5ebffc1604546b01bd3ace514918fe5a
+5ec0de5c5c56a22862541315b1de48f4
+5ec1c8da841527149325e7db5ce8f946
+5ec23bb06dfc6412c851546fa96a7e5b
+5ec26546da95b06456e2d34b53f4e1c8
+5ec359de5bc102281ed54736f9c8a58e
+5ec692a163b3ea004eee06694ea2a454
+5ec72f6f47ea28cfa2146305afcd2d1c
+5ec843d67ba52f02d22281c4b7d7d311
+5ec844669aa160cedd91448ca546566c
+5eca650d9e620793be441b547a62fe5f
+5ecdcb539ab5a735b300de8f42370192
+5ece03dfdbbca725b2d1fe1489afbca3
+5ecf308103e6e6526e599d3d1afad773
+5ed03a5c35868ec35ef79c908b731f25
+5ed12f1ab1bce46d4b1fe2c5606df155
+5ed1b6445f7999935722cb877519bfe6
+5ed1de5caee13beb54eb17e053b09bd4
+5ed620a92aefc63fbe66a7e6b7900b46
+5ed642d47de7ca0952b5932ff638d385
+5ed8b85057924bd2a6385e3ceb8d37b8
+5edc098376bce3a48b81de182c18b4e8
+5edccf52eca8033b46808e7fb898b7d9
+5edd2fefde21a3164f1853e7020284e4
+5edfbd19bb7f1850bd6a7af61623a539
+5ee6cb6f97474864bb9c5cd496b78df3
+5ee6ee7e04645e000bda30ad53bbb408
+5ee8fee9ecd07b3dc5de009b366bbdae
+5ee9b4c6ec2b4ccbf9080028be6f0930
+5ee9e36e49049c8693525c8f0fb359a1
+5eec36b769b94d5695d50a6a4665b50c
+5eecd8f7c3b013fdfa82c67706a151de
+5ef5f0355f37507dd8a9f7edebf7f59f
+5ef65a4207de6cbe1be081c9b0ad6cae
+5ef67ed76795621d64d7eb4929b9f916
+5ef7d68d49e3286ba52508ea2d96f68c
+5ef81a8b1288edba7f5c7ec0116b2194
+5ef89be1e831a823c4f987c32f037353
+5ef97aa69c593aaa051c8418b7c54105
+5efb1e516bbfdb665868fc53a3af0de7
+5efb72b067d51bbbb6dc8daf3027271c
+5efc19eee8e088301efadac44b1c32d9
+5efed65a95588a524432f4e80f57ac09
+5eff5f75ba4bda60838d557516b99a12
+5f0241cfc5ea149797b9e22ea69fb9e6
+5f0378e17102963b37d455cc0f211b2d
+5f047f82d12f21ff793e7214932324a6
+5f04bfc1c1c6df3fe505ef36e022e120
+5f0843f3672ba3950c031845e5248922
+5f0954d4e13c571366860df1fc43eea4
+5f09751cecaf4754d0a6e9aa615286b8
+5f0b7cc97e82407be348271151f2011b
+5f0c71ca3800397e26a92116e71ed9aa
+5f0ca1dddcaad709e845cef806801504
+5f0d896da4e13bdf192bd237b7c9524f
+5f0d96744cf75c55fdafbe63c8e61289
+5f0e64ab34b0dfe2df63236dc9ddecc5
+5f0f3b8bd53763edea39b07682e43ba6
+5f109d7f4a883f0b7a69486860f394a5
+5f11b095d63244094efb79fd42d3405e
+5f126af7a77be3f48b58b3a4c7f8c6f3
+5f140a216136ce86e7a559515be7c08d
+5f16ebef27248deff8f7b6f4b2f0e10a
+5f1900db8ffd1c2cbb6b4289aa4b3a7e
+5f1a62d66739f19b241ae69dd5901c76
+5f1c5cf375c8666a310dd962ffe65144
+5f1f5d0cc416496fbfce7b2de6df810f
+5f2559dcd8b54cf95ed797b26ad12788
+5f2595c981efcd858e07cdd02f2f985b
+5f2627f68fd1256c7d31afee0e8a76b4
+5f2684044900c9ce7f435b959b975612
+5f26e31b7a76c2f4611138e95fa59a59
+5f2b6110db206466481b700c0038aacb
+5f2b764316eeb09eada49ca7b6b25fd6
+5f2e29815ff49057bbc0d4bb392efae3
+5f33338caf1d0cb299840711477dee4c
+5f356b8e6749ecdde2c342ca3621742a
+5f35a63c8f18d5f5b1061bbbef18485e
+5f369dc4bb39df9f5df9d399748658c6
+5f3a0c0f790bb629bfe6cc70439595be
+5f3a21dabaec279d94d8b35a51bc4b48
+5f3a9be5227fa3185c99de65d7422e77
+5f3c9c2da5bffb5cb5eea3c7dda03a14
+5f3d006aec739377d2f7394468aa71d0
+5f3d1b7552a11f3b5d0190b2c4271c7c
+5f3d4a4c04a0d9d69d70835276e242cd
+5f3e12db7ba8654b840c8ec0295fece9
+5f3f00edce9fae2ced1c064b14183090
+5f3f0835e92f75bcd53218007f6c0db3
+5f4022817a5ad4d4e07a169218901cf3
+5f43d0b2a81c9777a942f6a797e19b3d
+5f468e62f5933fcd608e4f00bf5e7978
+5f4ba8c029f5066d663466890bf87e1f
+5f4fc57ec40df0bdbd4aae8fad7195dd
+5f4fcc036c0a097fc14b137bda7fcfd9
+5f53892f891cb0f1c1d07fb49e2a94b2
+5f548fcf483414def431da1a13b6a478
+5f556a7336caeca71507f36504848672
+5f55948bb5440be0a9b855c6f5d806f0
+5f58a41f1b75253fb3bf3bd2450b1f59
+5f5967d30b8df4c1e93016cd16ef9826
+5f5da9f966bffce7316dc1ada688703b
+5f5e46992efa9ed389d69516754721a1
+5f5f774a1d5584ab6a518d1cccb28f7d
+5f6459c913196d34a37f9455acc4711f
+5f66b5b354949e3160ec60ce737a5fd5
+5f6883f9c057f72514cbffc4956ddb11
+5f6c7fd7f5d7d1d6ed51203d452ec8e9
+5f6d16e5030324c1da9ce229d13f5e5e
+5f6feea7f4e1f912482dae7d0253d55d
+5f737ebc74fa734d47f9e35ca6e5fc91
+5f737f8dad0e87cd6cb449ce8ce4c885
+5f7769f7e9ea853ed9f3b5dd4e174435
+5f79e08ee586574fd425cb9678c751f9
+5f7a2438c9467597971f9086e8cabc25
+5f7aa973591fc55345788d7eda9665a6
+5f7accc6e2623a9fb105a21fa4ddc32e
+5f7c66385d9513a6f17aa2c8b05771f5
+5f7e3b31e52bdccf9575e4e37c5000e7
+5f81737fceeae5d41b936e3127d690d8
+5f8278860f97b7aef35db974b36fd7f9
+5f82f8572629d1762dce804cfe27dac6
+5f836cd77d406a15c229ebd4000ee0c8
+5f83b54d0e757d43ed9c7c2865fdd906
+5f86313b2e10abc3980545b82c68bff8
+5f87fed679f1bb16ac45b3f39c724a68
+5f8a1492abe655392be6a92531c0ebb1
+5f8ded808b9281b14f2a93e4c65018f8
+5f8ea98b5af886c6bdd35e4f6158af0b
+5f9037ddeb6b4fbef938218fcc2e86f9
+5f91f4e57d8feece78e4c250fd683dd0
+5f95688bd32d8bc88eacf0fed1d35c18
+5f9577b1bd42108ea5bf03d0ab8d2457
+5f9623883956bded9f5f8c686b785543
+5f96c751eb0c2cbbc14dc879a5ebe620
+5f973891b458c733238ae45f6396ff30
+5f9890a98c8548f8906c2a2c012d43e7
+5f9ab442ba05cea3c6d4010a41001c89
+5f9cf7de5cddb4f3a7ce6240e602ee4b
+5f9e2b1870dc9d0704573955ccc740f8
+5f9e3dd8b5cc986923cb76506bd55763
+5f9e6ee4737f1423ae637cc63e5b8949
+5fa04d58c5fcb617f7381b47c1e7a6d3
+5fa0ab184558b0c6b7b700bc0bc012f0
+5fa35219c40fa4b9577b5624d02782e3
+5fa4a5cc98cfb41831870177ba0abfef
+5fa60ca3caceb9eb97ab8bf57ac33e0e
+5fa8e14354e42d025ef1b026e803d9c1
+5fa8e41a64c6c964017557bcb3debb39
+5fa9eca5006d1c871b5ed8497adb36d9
+5fa9f3258e73ed78700dbc28eb427bc1
+5fab81a779686745c32b358592ba3209
+5fac97dc7e354944b2fb1bf3c0100b7d
+5fad1763cfdf81d6c8b1881070289011
+5fae322992aaddf35b0d26e21404c0f9
+5faf9cb2782120742becc0d4e4b65ab1
+5fafd3381f3642a4fd4d49b8803ae996
+5fb1a7ab3280f099f04a61cb8438d668
+5fb50f42685e2dd940cbfb469eaea260
+5fb71c9af7aaca446f68fa0c4b72f406
+5fb91ff55b1d58d469bc20747ecf34f1
+5fb9a6bfc156bb4877990af0d18db54c
+5fba81ac80e6887e8c7325a4e7443161
+5fbacdce03fb9c6256a1bdb64ae50788
+5fbef3040385a8894458a0b321e5dc90
+5fc11181759d4d5440f2db916366d116
+5fc54f761f1d3e2b418955c88db80e24
+5fc73b574b425da4c4a2049c3d9ad39e
+5fc79da802fbe1557d6a1da364baea80
+5fcce5c19d2e8d1ec5796a8a77f4e431
+5fcd1ef456214912969717a5c5405c4d
+5fcf44ff082f35ffa4c1e97800eadea9
+5fd115ae834b2471aef74f2cca747601
+5fd25305d53c1cd2c986dc48cde36d1f
+5fd280e5001e721864c0f567c6be6e78
+5fd7a10d8b3ad7b7be2122302e738aff
+5fdce476e89d783dc403bb2487744e08
+5fdd74d9a292404adedfd54d61be7a5d
+5fddcd5880f49b725d1fee3eeb08c0f2
+5fe1a78c46d4e755ec687e1792b3bea0
+5fe256e1a1c9290cef13133673146f6d
+5fe290c2db83eb7a88ce7ec3ffe63a0a
+5fe407e1615f38f7274010dab30b33ae
+5fe48b1bd3e7105f10f3935ef9af822b
+5fe5b0760a5bb64458a265d4ba7d8c3b
+5fe5cac152a89ea0293d47b8f440a729
+5fe91b7bdd6405e7a478e02fe0f67a0d
+5fea1a958fc0400dc7d4b297b345d93d
+5ff1b0d5804e17df5d337393456bdea2
+5ff21c36a612a3f82c52d0c118ea63dd
+5ff2a598a6dbe7a0e9f5ad1179ff6979
+5ff31072b83e8eea6ffa8b5184583b92
+5ff31c8d9e9d2bbda43965684a5f7831
+5ff5721556c402d88e54252cfcf89ee5
+5ff6cdb5f259a8af4485466a6d778598
+5ff94fb90ade2960aa8c30a9ff3ccccf
+5ffbdec60ed3fa3464b5ae154bc47b8e
+5ffc637b09b92365624564cd5ee09d3f
+60001b1061e883c274f67980fb8a200f
+60022e1a848d20bea2698166eb71c7b1
+6002a6fc5ff728839a1a2b204579d434
+600557f7466dfac21a7b4d27b9f34732
+6008201b695aa96f44a59bcdb0441cdc
+6008716c0e80b9fc523816a7371a6d94
+6009f0cc6b654c1df86f7ea98a02a90b
+600a088394fa930a7cef8fdf6d1fd7fe
+600ae4f86c5c92466d884a55d4688890
+600b07f943060b5e1a9b3b146a13ddb5
+600b45417865104be16c6b7bbeef67d7
+600c654e25d78d5c54813aff3ab45e85
+600c72ca319d17e9505a7a91c22ee54f
+601011e3fd5b31fe099fa77f132b779c
+6014d8a8db13dbd7e7f5459ca7ead299
+60168a2f7bbd6a708f16b5767df79232
+6017f623128671b434bfa2c84b37dce9
+6018c71d46c79829f48d460d025edb4b
+601fca1c6258277c726ba0c943569f7c
+6023324dd02f9593c73db284571bf8ae
+60251dfc78cc5b2eefcd9aeb4297d109
+602a21d2210418a36ca0ea6f64da09c3
+602a48c91ef581462fce3a8cb08e2b67
+602be7b1b887997e1f37065a85381436
+602dc18bc1bbc393e995f0f404946ccc
+603013fd36ce956035126258572045c5
+60325835a08dde2fa4ec4f7715e6b556
+603472aeed16f4bc08693312d1a875a3
+60354c6cca5927265d3ee190b929da77
+6035b57f314652513f5bd81afbb397c4
+603a8a4f465ccc0b125ca02ede8e3111
+603db09f99ef7975fc54cc7d3e4059c6
+603ddb46ca12842501fcd43cd59a9561
+603e2e6b2b115ad65676426dba8129ed
+603e4c40af54b1173493a8412a6c14b0
+604158a692d4965e9453780b92dc79ab
+60424cdea57c44ba61a8d7b4c336480c
+604670629b9511e51e799f9063c96456
+604772601d9a530567911e010bb11521
+6047cfc909925ca2d88b999a306a8595
+6049868b266303cf8f46ad957e26aa61
+604a914ad26cd42f77b6cb50578bf99c
+604ceb2af216e503c689a1275193eb51
+604db755266230a38372857cdd1946a2
+604f809b2fa293a3982f6ea57ad2f3c0
+60509c0a465beeba57c8eea187fd2841
+6051ed72faa8236624f30ed2bb9022e6
+60528101b284868fb2cdeabe282670a7
+6052cfb72ba49e91debfb407ea53c6f3
+60538dc94623543492479124f361bf74
+6053a8cfe60afc208609dc0eb36ce9ef
+6057b12536ab5b962ee54cb690889e7c
+605940078ad3c95f30f01334ed90eef8
+6059f76d0edca32ceb4707872bda5bc4
+605aec38d3bded38df0da1b774c7272b
+605bd214e925d5f6923e7efc38aa25f3
+605bfb48d5c40dd85b6f0251ada67846
+6065ef88a6254c5ab0a8bcc161457ffa
+6068b9ceb5c0a3f78b2a472f150e3a14
+6068e55689f89fbf2655e39d2ef66edb
+606cb4140c6053b2a4a07b8400795823
+606d352ca7a5b4184963c08f5582388a
+606e49a610436fff15e413fcd7a373b9
+606e8831a2957bbe3346bc9af2ed69c1
+607100133275017f8d0cbc22fa73ff31
+60717f245e398b6d16524df6a3426686
+6071a96c3c797c8c887001bf943d0f2a
+60727c78810be7cd5098abed50b1840d
+6072961742e84b53c09841de95ca57df
+6072cf955cb4a0b28132478468bc31cf
+6073eaaab2156fabb20741c46a262f1b
+60770e978c9c6e491b033c56f0b562c5
+60778a63a17fb5285a435073e8df40d7
+6079222a92da45819815ba71afc945ec
+607a2d09d75b34b9278594c9649c4340
+607c7bd28c93695a09edf21c8d4b0b9c
+607fd0e226d16eb2c384f4a062058569
+60801cb6022a095eba2d19a224a24365
+6080b05a99d4dedc89f8bbba4dad780c
+6081bf5a7c2f3395ff20af01fe9cfb99
+6082f04c4bc0fd3f14848ca298b0d05a
+60832b9cf45b9f60e543feaa0ee663e3
+60873b8963dd642adf9a9366d740c338
+6089c33226633c9358e8b142d5387d30
+6089dbea40b0ba329b7f62b126594cd0
+608a3f47d4a052ca1500f4838297a282
+608af3cb54ba456fe7adfb6c9a240710
+608fb0ddc6202f02d7bcab836fc89c21
+608ff0918c4b97906542f3499ed1b869
+6092ddbc0628fee7c0652614afb937ce
+6092e8a74fb6c6366c399617c9f50aad
+6094bcaec290653a83a4d70befa28304
+6094f00e768f93d8a3fe0f7f7050811c
+609666a9d6745fca83d6ccd896d1b3ab
+609999356775ee8943544150820ee657
+609a062e592001ec5425295094a7310b
+609b1a670973242802c2a1fc2bf24410
+609b2c6582701795a37c4a8ffc6c07c8
+609cbdf1b610ff190578c705031c6f51
+609d129e5dc4d74010e4cfb09a8ab231
+609d9bf9d3b8431b12e8d1b165c0b300
+609da260dd8d31562f3c825a3e6c252b
+609f2f18e81807e1f02289cda81a2865
+60a00838c1e28fb726c14c593314814a
+60a2551592f385077f2ddee88da2d712
+60a329b9eed91a5b8ac14d03c73ba674
+60a3f23b089563ee5e59cf37d677fb58
+60a45aa0d2178f54977d5b346a587a70
+60a45dd2495a569e6bcdc6eb1d21b8b1
+60a47456c42e2e714ad8035f747acf5e
+60a4f7c0f0722bfa959083b8ea35448e
+60a91542747760d4fa8ea28238d5e4d9
+60a9a978ee5d1be19b7ee106790ea09e
+60a9b787fb248ba1d0f3dcb573eec325
+60aa1a11cee4288f071092c43c8068a9
+60aa787ff3638cfdb07b0c674d1d5d76
+60abe51263000d4cde18088c70d41702
+60ad6bfa8d67e100bd844245b74bb925
+60adbc40ba916ce65095be66620fafef
+60adc766902bd647ac6220b6dd1dfee1
+60af626e389aa3fa7a2aad20ccfa918d
+60b09a21bb210391d7f56a9c1b95b370
+60b24cab03f6f1693251ac4bd2b1f45b
+60b27b01be2cd3109f6204ebe22830a8
+60b7620d9526d967b62dd166111c04da
+60b8255ee5c021935fd93030d27d1ec6
+60b9fc6a86f33de07d5a61e4caa41e71
+60ba013a2dd5778e73d0535d4c393426
+60bb8691c19ce98401997c0f8c55ca37
+60bda2884d43f87806971fd7b5cf5f22
+60be80263062d433b9f2966b40e5d634
+60c0ef996a248dc566d3671ee8a50560
+60c14a6d29dd83a02842d89974fa879e
+60c3f4d56d4920a1091deeb97ac6fd15
+60cbbe7d0a7a6c3eb4df780907673e13
+60cbdfa1c793e0113aa165b811d9b9fb
+60cd01d839f76493fe805cbd08fa8699
+60cd1a58db261d5747871a2401f47999
+60cf7e8599e5381ac276547c19aa391d
+60d016fe006f0af1315f0122ba4d33b9
+60d0e93a1577100b4d18882fa296bcf0
+60d37aadca821331d76c7b5c2682b3c1
+60d60cbe705db060c63e344a63d65413
+60d60e21c19e55ad33e64dabc4b6f8b5
+60d640f73218d84ad4a885033668acdd
+60d89860effc0d9d584c21446480c6e3
+60d9012f8c219237973102647d1b59ad
+60d99a0a5e538ebbdeb4aaa21e252e87
+60dcee357d820a71732e3a04b21444ed
+60de2bf77d24d11468163772305339cb
+60e5207a274abbaa9c08b55fc6c78322
+60e76c1d210f64e28edec50881f8f0d2
+60eb666917d006cc03c206e4c727893c
+60ef3180b60f8f975807b506a061c6b9
+60f1019dba8940a284749845a10940c9
+60f1c79b6f5da89bf1aefa69792749e6
+60f385958e08bab5956b5b51debb66d9
+60f5f33a7daa48f8ba3bfdac152e0ae2
+60f657a4feec53e1d1337fccfc098b4e
+60f6be6ff38e78ff71342964a1c65b4f
+60f817faa5394abc022223676cd69572
+60f953c8e503390fba20ca483bddedb4
+60fcc1e3ceccbf559d6e7ff3d71b502b
+60fccfc21436d35f636f93519dd96682
+60fd8ba3607117647d84be16b311feb3
+6100458748d511cfa722ee5275d8778d
+61005ed52c5a96d33a50216dc0626ecf
+6101547fe4327cc0469ec86c6c6d107b
+6102b572351e963c8368d7bee73168c7
+6103e56a614c20ee801c44d04d2834fe
+610760a358a73e9b098632a2a69eeea5
+61087474c5bf1a7262c8e2ec0b6c83d2
+610acf9b2db790694ba898e4f1e5e109
+610b73cde6723d1c23374cd4a3d3e60a
+610e0cf098d04b52220d3da3a17b0ed9
+610eb86c6194e0ac01c085e7091108e9
+61112beac342957895d1d5468cc949bb
+611283d79722ab8d8c4b9d7854428a9f
+61139de56361ec585ba3e206cc247d07
+611519b0c962fca3cee1085f3a6718fb
+611548d936cff55229b5b10f085d5aa3
+6115cdfb1f925d7e6d07e0d83654d55d
+6116469778dfaf46bfb90f473fab4606
+61181c991b9c9a6488ae22ce4324bea0
+611874e68f6b110610d3465a08eea501
+611bc942aa5eeb93cfb8bb33f3bfcab3
+611de7232fe220eea186a3480f0fd59c
+611ec8a28d609506f030eab100da8b0f
+6121967d7f7eccfbaf6b646967b1add0
+6125eced0f07fe46bfa0407ca5a25b20
+6126db0a3d41685083266d8b69b27abd
+6127353cdb7929b354f18b8ce75ce245
+61283f3d2c6425e80cb1abb8db76a8e5
+61293762c357cd98ea6cbd5aa957d55b
+6129dec72c6462b7672631b491a6259d
+612a5869eb76140889930773ceafb1a4
+612c7102f2676c6c8557e2c6da76942d
+612e5a80989dc7560bd5faf9b2f4bfbd
+612e8eb1f3caa07e4b97fa7a60fafeb7
+612eb1d97fc312aaca596e4018af39ba
+61319d579b9a701b72648b68d4d9bd03
+61325acf66e072e3b875c5120b7b82de
+61344af44561d2a66086f53b19a7e38a
+613464c69c66ccbfdbaa7e4a21cb16df
+61373da0a7ba151355eb30f118536125
+613c505ae13d4207764e1d7b6bf13cd6
+613de410b24ca8be05f77d7e05747515
+613edf7233fe22c3ab23a714fc1c5898
+613f42c98cd6f5e50dcd712270c2e3c9
+613f67592fe56f06b2c94df38a0f1c10
+613f8c7caaa6c2e1834add719e00783e
+6140e2a34e3c0a56081451a35a43f574
+6141f67fdf36dc6ef3fcd9fc45615ca4
+61458a00027930173690bd831144a152
+614c8abd727ffe52631a99d2263288ad
+614ca0b2562de5b8945f38a816ce0422
+614d46156e1d8d6c426ed37f70d6f95a
+614e09684e0ce918d58f771e7384368d
+614efd0079fe4581b41c3b51eaea10ea
+6152d2443ab4e00b716345dbcbceaf84
+615460c923e0fea86cc47d3ddd63c373
+61547ae4990d98384b2b0d12f51d31cf
+6155d0763757b3c1227fe4a40624df1c
+6156f37c525a6e8dc95939d6e76a6263
+6157d402acf9c06196280f09c56fe03e
+6158be6db77e2293559d06d2b93cc32a
+6159d86cb83753cfe2204a493beaa75a
+615d8e6a22ceb103820439b79e6f7c04
+615ea93e1de6c880903fe86bdd4394b8
+615f027f7206d7467bd487920aa9a1fd
+616026030691c80439175f129472eaff
+61626545a4e9addfc9b4ba33054dbec4
+6163c1abbb26896255286b3d5c5d67c5
+616438cc463a5eeb4ace4a55928f006d
+6165b5e1edd56021aa8628aec9b58eb3
+61665ef54b7f0afaf107c85af1f80585
+616cda554c8b3608543584d9e30943d7
+616ec6bb8162d63eac4768cab1b8eb0a
+61707ae2fe4a2b6ec1e1659c5b5af0c1
+61723f57ad49146b09899e5117940763
+617290917eaba02203400ef388233123
+61735550991373f20a9f6b431deb3437
+61736c9445d6b01f11ec3f84dfae96b0
+617a79c7ead107b0cd9a40966f47e1f7
+617be0fafb7abee054611aac170640e9
+617c5162152c0881424a163c70187af7
+617d610a3b923dab9c34c114af627941
+617de62c41bce57dfcd3331bcfc0459a
+618002bca963763f74c8dbd6c3374b6c
+6181fa9922917fa392e042b7b287fcbd
+6183267d00a9bb60bdbb7d1c4d219752
+61853e0dea1db36b3306960e86d1bb63
+61873bf9aba32a11332ec2de77eb84f8
+6189d1d5d578896786c80e69149d8962
+618a932b2c0baa9e9f4b3cab76dd26ee
+618e35685d2f791a00a50b1d5d6acd49
+618e5b547f2ad2406d39fd17d918f005
+618ff6e760b78ba6fa09f80a911daa09
+6192ba60f2d6bee4c29a2b0509fe035d
+619379fe3994a42b3a6be6a2d4cb378c
+6193bbbc14a6d5a4a87c606394548f3d
+6195299d433d2d7b7e4526b2684f4253
+61964403a082163896cea6cb50ba0893
+61976a08d16f7e50b269936c58a9972e
+6198145aede934ce84346410a51f1626
+6198f6a52b8e9e72ade81482ef1ef193
+6199d5f062545eb44ab81b0c07dc0e48
+619c4159d21f34bf69cf90648ce774ad
+619dd9d75c91d9ce2809fae2a1dc706a
+619fb6823eda82b71346a0e84d867cee
+61a14fe538674983d5e7f14a233bc506
+61a1f982d85deb6f4898c0a693b3140f
+61a406ee4b79b035ed3edeed7f533a07
+61a6437b2aadcc5256bdbad9626b9f1c
+61aa7aa7c17afc262d6088400ed3a3ed
+61acb9bab5991a2656310bdd772adb2b
+61ad0902f30aeae388a98254e5e22a1b
+61ad67d8d8576f3d6d0b9546fa4f715c
+61aead9e5d20a9d431a47df92da08194
+61aec8b05686621e7cf47d14ce3cc728
+61b00cc217168aa8df111b0c1d448b8a
+61b37498225bdae67b801dc0f3e82410
+61b480c1813c58d441c37ebf5af928b5
+61b52b4ed7a7740f91720ff0a2257f84
+61b5bfda396b42fc77b2d055425bbb5b
+61b60a306a1e9852e9c8638afda97e95
+61ba1ab34dda4c9ee0055600d49dc66e
+61baba42ccd9597e67c71978d9391eb0
+61bac609e025a77460cf00a63972cbba
+61bb023df8dd5087ccbb1ef332e74e6f
+61bc2df553c00d2671b48c0536f842bb
+61bc6b0ffd70577c89f13611aeb2dab5
+61be8a5a02582aa1df311bf2c18adcd0
+61c060a7b435f5b313b0bf151bf83fb4
+61cbf006ec5baa41eaf7a9e57e0065ea
+61cc9b5a249c582e4c3122fe7214ed2e
+61cea9a1bd4c0fc9895677e7d284341f
+61ced7a8164ea9cf16ff2b54deef3621
+61d2b7cbcd9b69a462c4352439adf03e
+61d2eb311736481473c88621c58f0d11
+61d3e9ddefc779223e50cb174077374f
+61d45df7b62a084b50e5f6fd58e16b86
+61d58f031364bb4355a9e881b6381a54
+61d73ba1c31a10c185006895f7104189
+61d843e673ea5fc5c8e1878abf6e7d06
+61dac6cce11a2f333e17ecf48430b60d
+61dc8fc35f96da0f99a379d8e9fa1548
+61dc95c6833d4a86e0e6236c1434a460
+61dff17bf11ebc0087afea293609a10c
+61e39d2a5d28fc2bef003d26b73c6a1a
+61e3a9a58614bfe3f0dcb9b86995a751
+61e4dc49dbb8c1554a86723877138ca5
+61e53134b982c19f4758f4ea4a25d47d
+61e5a9529f446d524ad653daaf70f938
+61e76ad43a46244e120631dd97c7c10f
+61e8703253f468f13b3fab2b470d1050
+61e9d8b2162cc360fbcb9d3fa18bbb3a
+61ebcaca0fa49ab276fe51a643035aa9
+61ec3fe87a46fe5dad7506f574a9143e
+61ed3c07ce1dc11404b7ba241fe6f30a
+61edcb90bfe8e93794035cf0ec5055b4
+61f005e0316e6a33ecd85a7a840d1a7f
+61f023ce7228c3525988d1084c8272d3
+61f4681707f33c7c73c85a9e0fa9becf
+61f7e5591be2727ef323a0983a782c24
+61f918062cdefed259999e4fac188649
+61fdb12423107b003c549eb049a3888e
+6200968dd17e6a6b43accb378b055e39
+6206a0bfac0659c0a7ec19ba47da6fb4
+6206c355c888ae5c84453c24b04f31cd
+620c34d90d8d46582e835f70df88db99
+620cc354049f84a4601298938ac8e822
+620d260bca94827279a172f0408853e0
+6210c681468317d3d1fcddd098a0d812
+62117f7fc5a1f3350b2476de6c00cf39
+6212600b2c5184b921158979ad3dbba4
+62127f24a9b9811e4c1e6c9d4afb8655
+621284b8191669248df7d9d52baf75b4
+62129a842c3eefacfd461feec73d6f88
+6213d50eb126c4504577076bc8e21095
+62150f0b38f5d83e80be2bd49c19fe1a
+6216f84f74e843dec67d3a210f49dbeb
+62182ea4c491117eebf10d4a2ba55b99
+6218ed5ebbb2ea68e62305c2e4c5fe89
+6219685c8f5c7b68802831945fb53f4d
+621cd7041fa5a2eb476f60509c65ee36
+621e3c3d53383c9d68ced349118f502d
+6224de483572f59a37d3d0ec48415f3d
+62267fde3317f8ee211f51ee15470bf7
+6226f71af63747544bdff0fafbe1790d
+62296522e11a16f201bfae63a3e4f0fd
+6229c530f1b3eedbbcb4008b714a1d6c
+6229d9d461579ec5261bc68e3bf4cbac
+622b61d5d4a7ff668d54f0d1ee6c6819
+622bd98fafafcde12062bd089a123d9e
+622f993d24633059cd7d36cd4911f8a2
+622ff1d78b93bef482622eaed87e08eb
+6230e9587bdf640f2d8e119bfa1ec169
+6230f1eaf664545480b0983372e283dd
+62312e4e7442e4f488595f718d231553
+62346068748cfb7f340c62e566ce919e
+6236d8b7729640215d02ac0cc3c4cde1
+62376c9ce959b42a512680a502045dcd
+6238d4fb4c9f2ba254f09be446010e9f
+623935d53e3d0522cca5140e7c582aea
+623b903841786fd9fd992c2471ed04cb
+623bafd43889b712127bf6de0ff485fa
+6240d0f17e9f7fd15af8c74895849fee
+6241e5dab66360578daa3da18902fbf5
+62423323d29333936b01c529b2077911
+624365af6f40e646762e81d1c6dddee1
+624483c3b39a66fe023c7d60993f7b00
+624509fa43239ace52a0dfb93ca481c8
+624583415bc9accb34140c77d55551ca
+62463a2264ca98da2810676a844370b6
+624736ff350e1b9ba873071da392084e
+624d657aeee9474abe010245d332591a
+6250d90928a105c11a5fc6750cb46807
+625403850a5cf445aad882977e285054
+6256691603bea509a6274dd99f521197
+62572164e55569a3b207529c3aed1770
+625e2f820e367f84fe22d7f8e1a96482
+625e80e8a476dce9183c7edabe1c4082
+625f26b87e3c07aa8f1c836b5ef0fc56
+626023d31030d2d4ea784679977fd1e2
+62603d007266bba33a533c5c496d1091
+626055f143412174f5a5ccf9a264c756
+6260db919aeda9032226d7730719923e
+6263676d5b792bde74f98ddfd7abcab7
+6263f734d3e157c68d91c3aee9f42550
+62642db3cfbe7272c762354f8c2902ee
+62652d3625a4e542dd6ee20dab8d63ac
+626535b65f8e6390bb80a54dfd189334
+62671c82d33065f7dd1d01d39ed759ac
+626b2d894d0930e649815820c74f82e9
+626c3d600313bbdb4930e9f94da7965b
+626cf7a05c102bd0c8f75bd7a6e6778c
+626cff8a6b9120f817a01cb4e4f676d3
+626d5684b2cca5b86f58d33e3fdb9dd1
+626f0289cddb9a7a849fd8fdf9d813bc
+62715e520b7bf7f17135f0f656ec9dca
+62734ae79c9f5eb8c7ddcaebdd3e4c4f
+62752d08f95a64813d26f798d1697658
+6275ce563cd9760b4cd65fb3e1e76f07
+6277455815002f3acaa01e06af196d96
+6279c6a9560f0cf88154e021e59e9f57
+6279ee5f5235f1b4d7c8e27a0b5d9196
+627cddc8e6e8ac3ddbbe6a1b9eeaadf7
+627efaa6496e8238e0714b3161d8b5d1
+6280a64c1fab3e69f0fe37a7aeefaa88
+6280ac58fce9ed30bf7f45d6f16b95e8
+628212f6800bc3c2d339babf38b06180
+628308e43ca25235cc8cdebd79a4e303
+62883d482f62f6c32e17ba2f8dd505e7
+62895bfa1ca3bc2232a146421123c22a
+628a9f42609424f84dabf5b9beaa8367
+628bf65b31ef2b1d4076acfe14b830a2
+628c74e159d1b75ccd874389ef66eb4f
+628ceaafc376654802dc6f7e657f6ff4
+628e07d84e7effb600cdad205edc67a5
+628ee8cc820ab73df9635fc46dffc247
+628eeb1956f1c6fe1aad9d5398186bac
+628f46c4696ed8fae06e143689b62228
+6291656debb17540c384dc95c0a6f696
+6293667ee65a2a72ff22fb4d9a3aab3c
+6293b20adb50d18f51076c0408a5cb33
+629aefbd846e3d660e7185bb96811a01
+629b09c0379476f7c610dc09c17d67c8
+629c52e3da45d3a955ba0610f20aa09a
+629d8c45a19df46617bea7f44eecc141
+62a14907dcf399aa6674e27a705d91d8
+62a5fdc6d5fe0baa9d0a6700f43e6b93
+62a71bbecadfb793fbe7ffbe5a6ad7c7
+62a7c4391e5da8c9589a90c63d439a6b
+62a81f5ea56f352248023f24ecd57efd
+62a82d92abfbcf43a52c9b544b2ee77a
+62a8b6abd6cc0043bae9cf08f2f106da
+62ae5276dccf8eb0a1427c1677b03e38
+62aef5f2fa7300fbc9c8fe3b222ad20e
+62af4d1c0d0742bf4ad1b4fe864329bd
+62affcb77b09b6abc8f5ac8e7fbb9ffb
+62b142ac3fda19210fc88d6c48da06ac
+62b2809df04ed28c95846db530637f34
+62b2ea9b623e2774411ebeda3ceba519
+62b48d9dba8a76ceeb36b23b728a9db5
+62b5ecc8d63de3a0c682e5fa83b4e6e6
+62b9b63af083c574d566022687ca1269
+62ba1e72ec6c141fd1d714f47cb29466
+62baefedc59c779011f2de31e673e5f3
+62bc4d7b6901faed53cdb3ddb103c2ed
+62bc65382a4230a4913825a90081f2bb
+62bde25c1c578ee363c8ba5f40961f7d
+62be297cbdea296e83c702806064ef8d
+62bfbe0dc0921dce2f0cff73874a21a2
+62c0561aabf989db4df6ed023011f312
+62c107f3d19915a3debfbb1d487ecd36
+62c6a9c07bf408ac4736d1526fd4f70b
+62c74b97a44b3743b5724ea5c9b1065a
+62c76a071775d3cd7957ccf0594c50be
+62c8189c8668a8aa9b7147b381646ebb
+62c8d304a5d797eb2338998eacac13aa
+62cc1ff97ecae8186984e6f3f16218bc
+62cc808701d5a231de60d8b720327ca5
+62cd12b33de6a095171fbdcf5be32521
+62cdcc4f89199bcb2e2f5e93e973c805
+62ce28298eaf6f9d267ef3798cdcb817
+62ce2fc18c76c072a1fee6707617cb76
+62cf52ea6b0eae23bf26d29f555aeac7
+62d122eaf1ef68936a00002d792e26fa
+62d2751296fbc6fb6980a0aec4fb5df5
+62d2ac171c4da544b8466d1784ca6360
+62d3cdc386d8c93ee4d2480408cc18aa
+62d58c1235151c27ea499d9b731fd907
+62d67555ef4162c0ad73587939bc0898
+62d717955d239c38039f968d432f3f70
+62d98b3bc75ea0b8ccd4a08e3e4127ff
+62da82ac6ea93e81477dd4805a8259ee
+62dc0f4b57a7050d371aa249666a6046
+62dc312441bc65dada5f1ba92bb5b33c
+62dd9f62474822af1b27bc8d4f424f0a
+62dea479d2c2317a30496b0d2bc433d6
+62e197a86f8a7819a713537cc06b53ec
+62e2e184ddafb0d4367bd4757a976349
+62e44430780d2a6f0db37f26408ab205
+62e7e9f53460133a170f3bbba0546ade
+62e8e879240e9f1766313df442a27630
+62ecfda53397d55548448ef01c60bc5a
+62f277f8dfe84d29041187edde69aba3
+62f5ea822c30f7289884819ef2275569
+62f62ea8f8daa78aa69515b88b592e08
+62f689a29bef6fe8acbf07e163da1535
+62f7c267b7f0d5dee96813c1d46e3f84
+62f951a57596153f30b7c1bc48fef73e
+62fa0b9fdc83097c07528aeeb5dc5ed0
+62fb604c0b4341553102df8f7d412ee8
+62fb76c9a9fe17060797805fd8a9c338
+62fcb9cae74bb89f0042ab75ca9d679c
+62febbb14e2589dab413c75dcc9887c4
+630072d5038b40c9aa87a5218762ab91
+6301988f75e80fd73506f9053f7b747b
+6304798c3e80a1d5fbaba504a763f423
+6305426c16c3be83ab50b9a9f0c5d5d7
+63060325143d33d2d019e4491c92a7bb
+6308f83cb5204d41980c922f2b2f5469
+630904d1d7a08ab34d645fdc39fe769c
+630b39caa000da18d87b388a2d53db73
+630c495b200242c10083e9bb8013a14a
+630da14030bf0434a480762155380900
+630e629ae99ca0f1099fb1cb379286df
+630e6e6d61952cfec988be88819b59d0
+6311522bf92fb666757c17d4a039e9df
+63115464a68602a5f6af8409fba52631
+6311e3f10285201f9208c1a5513829fe
+6314e06e193861b9537eddfab78c6631
+6315fec8a12ac5c9565c9c337882fed1
+6316c8aac81603eeafca353921ecde04
+63177b0b5e823a090c31c0b94c5a6ca6
+6317804d05a02777f1c37c9eb05bf062
+6317f48f55038bc84f32b0edabd37968
+631b84b88291584ebb7e718dafc5d103
+631f28c9b842d8582a72889ddd578b81
+6320e43a8fe7cb90317c133f60816f1a
+6321928016a13a15653f3046c9b3efa2
+6322eeddc6aca19abed546ac3d09de52
+63239c013345b6915c5493e0eca08ec0
+632542be1251640a11c9ea7b25dcf54a
+6325ebd6f21e0504f7f9d9bb8a645ea1
+632768f7db29776e968bd3903ab61230
+6327a8ec827ac8876f380f7368a9db0a
+6328f33c800d12371d2c5ef87c19002d
+632a86f1b2c16fbb4365e0faf28b946e
+632ad047b15f1c70a4198f261205dda6
+632c39c33e551f4d71f696b6739a7bbe
+632c3d480855e07615f7ba490a342765
+632c4cd0bafd04096649eb8e095881cf
+632de849b6243a525a2f04f48deba75d
+632e26f1b1b51aeebe6fbcefef1610ca
+63310de2a82eabf75e7417541109d353
+6332e9e9a38486d418638e1f8e8ee30c
+633305b03e5f493c6651fe8cb2cb8a4c
+633495c4f11b0dd28dfaa65e6ec43a3b
+6334c5488f2d3a72ce85302522651af2
+63357191ae4d3fee6d6cb7ac62dcad48
+63377c82cf9679ff7ea65473066f0b75
+6337ee76caea26f655374c1dbd68ccf7
+633a5784dd59c693564e2bcd6f412e71
+633a62b9d270ad92f1b2971a7206f2b4
+633b3c9ac70e2af7777c938e2f245236
+633daff3369f4a2a487d0d15f69483fb
+633e782faedcf3437207fed9bbaa7f45
+6341c3b0a9febc53de05e0bb420f62f3
+6342437eb7d26c249fea7122f5b4a76d
+6343c8e3cd472fa3f21a98b18e187f32
+6344f5491a2e7a39024d167084c3e4a3
+634656d3d6059e617648401fd47d96ea
+634658064ba6a7748ca56f9225be908f
+6346b455156dc7f7eb77921b430d1982
+6349e1911099693684b84c655f86d8af
+634fd97a592120302627e972f6945a7b
+63509d4aef3b6cc3e04035ad6bec3a66
+6352a19cc5a14494dad16d8023470f57
+63564272fbfeb42631c5eb9b464b0498
+6357523aee3af7bf91b6974a3357bc97
+6359202b13765019fb967fa2fc996249
+635a155c5e9fe11036301b764db28991
+635aa4d771991bf7b90229b08535126e
+635b19c8ae034526f4ca593566188a13
+635b890b9b5e8c554b0a758aafc6a5b9
+635cae325d49679e13aa5d2d011c7e9a
+635d7cf7eb0c15ead2e0f79dfcb7db35
+635f142c12908bf601812d412808141a
+6363fef4a6e36ce75c9fb01d536348cd
+6364d454f9d84faa03b683186abe6498
+6365f4b330eec696621625ec871efe36
+6366dd5cd2ae8f14cca2f8390d8b1398
+6367cfa7eacfd7134ec256eb07c23080
+63680735c422847cd3415c5beec13148
+63689c477f25ddda11ab457850c442d0
+636a19d912fa7361c99795baad27348e
+636a2b3f4e4486099921f4c5ed174b79
+636c80bed4a106dc80f82457a0cc98fc
+636dc11464f41674de35279bd200973b
+636ed4171f6198e77bfa109b2ae26c2d
+63719c4daeac7896b676281b05f56bee
+6371e3d4e88f715400d05d6f9013230d
+6373a050cb11fc7976d4ad805a8458a3
+63754385ce7e4f4d52fb14f667bd0f3b
+6375b6d0a65f6ae2df972c3903184989
+6375d25cda81268ee43388878efed8ff
+6377e4a491e9ce749f71ef1f3445481e
+63783a4c27f3421b0f2b94a6105e3e7c
+6378560610c8784dbb3349c59e1db800
+637a41add14d531f1c550f15db3582e8
+637a8498a41cce6d295ccf7ee01fb06e
+637a96388857c68d6c92e36204e41313
+637a997966f3884185e309cfdadaa6e3
+637d547201db989751b295eac9b1afb4
+637d8fb43acf3cdc7ddc467d7919c146
+637e0a03c3445ae376d0963110f4b923
+637e9e2ee692e83b148e6df56069ec08
+6381e551008a356862cb8003e83794f6
+638255db88b3e89c2d48683fcdead75d
+6382b91795333a71e37879b1f4ee1578
+6382d0ccaf5dcb9fcebc38ba3ed9487c
+6384294a7883ac653dc374838294dfa6
+63872fe01e0625421101f882d778d0a4
+638746829397573341b4ce8be96c89ae
+63881b8820c3e4cdded936aeee5750c1
+63893816aa3b139332d0b03e35f300ec
+638ac12243bd3bb1c728504f3e234a04
+638d69b5bc6ee7b15421d1aa92e09894
+638ee7f44c4a986a8650d778de774901
+638f7381ddfd1280970f094c1aba5d51
+6392041c4a1e35f5a63247b7fff6ed97
+6397d6f3f0a07387459b51a9e03ccc7d
+6398f80ae77b4c3083a64a821d30251e
+639a42e8cf3d7661ca9c45813a8855dd
+639b4911ce792ea0ab9be6893845b762
+639e43cedb3b4b380df9c9181480e963
+639fff585af16beda029304a85fc0573
+63a06dcbb9b5801020bc89adedfc52de
+63a189e8b94cf5d943141efd02f45c43
+63a2964eafb3741da719e2f408e510fd
+63a54987081cf5901a0c82af83360f1c
+63a7339478f9a70a1e316993f2ad1e05
+63a8610c1e3e636e27ae2ef350d151e2
+63aab92655da08f171c98c2e50311c81
+63aaee0edb53bc3842636dccf7516df2
+63aba76e2b6b2ff9d51a9f37c71381be
+63ae0c76069444ca1d935444050eeb3f
+63af2d2678172cbc2b2ed155c994fa0b
+63af5322bdf0ed0ed8cbf5f826602a61
+63b1e19d9e7620e7ef2b325e31c270e5
+63b21a69cdcc5677ce96b4e8ce915dab
+63b55931879e8ccea27f14e7835aebf6
+63b64d0ea30819264a09e4f1e32d015a
+63b6861aa68ced9d20bdba20fd6214b3
+63b68d1ecae2b59462bdbf79af0ecbef
+63b7048c2ed0405acbc8f5de3ccdfeb9
+63bad3e4b31d2d8201117e5c62f13b0a
+63baf7c1f48f8996913efb44dafb9a15
+63bbba2a727a9ad8d463a8b8297b943d
+63becf7a6123d1a40cb6c46785e42a25
+63bee63f508f4177884edf487dbd29a6
+63c0c1d2cdb8a3100a121fc44397a85d
+63c243ca80a9da8e748a0d2ea2c5a78b
+63c33293813e36049736c75392c129f9
+63c36b5ec8bea8b20d907ed5c9534aa0
+63c38167cc29cc493db9d18945331402
+63c4430ba8d94d7c5b86a6b1ae70fb1a
+63c4d323a03bb8da99d0ff4cacda7d4c
+63c5e500fb5d744f5a2cc2edf27f7e60
+63c8aba952a723330eb1626674b8c3ed
+63cba2fe7b63f6264b2f873938442bdf
+63ccebe769c893d6f94b9d435fc30b74
+63cd6593daa7ee6bfd6f6f98238666bf
+63d0ce3fc9dc86b9b43b0b01d5346b4e
+63d41d3c6c39b076d15d3ec39cf98602
+63d5188e34cef30ee68389134c57142c
+63d645687e6f50d9e2ec0b3ee7ffeb1e
+63d67e34fa0c17e35b0f9029b2bac944
+63d899120e2a885670f7b02e2e7c05bf
+63de77c58dde81f5beffa91bc0f08715
+63dfa561d9886ce5b2d84d14c0d05d45
+63e38d12772a283bca25542dabbc6327
+63e42ef0d1da4cd5e390666671a47959
+63e9743ee6f0c6211c4afa09ccce102e
+63ea0b07d1e18c6436d95a6309070263
+63ea178498cadf70192b0b9cf8184225
+63ebe9556d432b2c3068c461cd2373d8
+63f1343ac21239de6fe7d98e541976ca
+63f59c03c3a0450b68b900c088ab057a
+63f9852c7dfadf56c9c4400d5728691d
+63fbed8f5e8dcb8b4e8c5ec3df67619f
+63fc0372e04f7901895853ee2bf009e1
+63fd8591fe1427c1fd692f9605f6a8f8
+64000627986f72563438b8be5f247f43
+64011746a0129ade3ea7202eb3e30f5e
+640302787e5f55bf5e00e1a491319a42
+64037ee4b32a99d515afe31b8becc04e
+6405029263b8053f492569cc9bfe116d
+64052c351bc121ed0dfc66e0eb9af5de
+6405d75ad00e1d7fc2a481965cf0b9bc
+6408a5d8c8f0f03da95b9296939956e8
+6408ca83ee05acdeb69d3950b256499c
+6409c3a90c86b5f7b226609e4f652832
+6409d672731d31266fbffafa384dd2d7
+640b51799ae543abd2084470887e7946
+640b9e714377d1c520cfb7c6a647cc6a
+640bf8a87bc86ca18744e6a48d38f33a
+640c147ceb298a1529e0293742f250e9
+640c664aa4a4bea6a74cdd2308dca819
+640c815dfdd5260060f0b523d8776f76
+640e56ad9d125bdd0426c5428f1314ae
+640ee5b4c56ebd3f4db4c40df0c484e4
+640ff9b8056a367284df7ac5c44bf685
+641027ad5a4d1e44c08ee6e32e29ad7c
+6410a6c5640559ac95ad09e6d8755289
+64111f7cd18b1f54dce437311e6f5808
+6413d57471d7c5208f1a4ba53c5e6026
+64144f3292384192741fb6779c3ea22c
+641512678759edb4b30c8a09c2fb424c
+6418c5a8f34b53efebaf222c8615485d
+6419f333e22c5dd90c11fb0bb5ce17bf
+641ab563b34c00bb78bd1a6df6e4a3b2
+641abbb88c33aaae4fd0e2d4b956d355
+641d12d1fc3ec72139e421ea1990980d
+64200ec16f14c00bcc650f092f95a9be
+642098cc0c5516d8161a0b31f5b8809c
+6422bacbabfe140403c7ea5fcc3d3ad0
+64241e025668118df9e704a5dcb22c78
+6425022b3ca72ebe9c332c4c1e8ba41f
+6427b754d93204a45dbb95f0f0eea6df
+642b300b1aaa5dfdd7772a1cb78ea40f
+642cec039ce4eab4158b87580259ce5e
+642d96cf463f0ee650d1b8d9336765a6
+642f76ff54662616adb675b393bf50e9
+6431a9805868ea41ec7f0f430887baee
+643926b8dd769c5a90d3ce29aa5cff68
+643ac78e602c105e4ca453a08f36520b
+643b28dd1dc17c5751bbd3bfdb05f081
+643c121a066e361facab00134653103b
+643c773c3f750361725b8a84d7f23005
+643cc924cf21e746c90aae3645402814
+643e2fe68ca020bc0fb7abe5781ea771
+643e3c4590206e455310c5688a1d245a
+643e55448ea8edcbe4d48368f3435d3d
+643ffe77569245654f293fec82577f91
+64416e9b6a62fa2d58e04c81bf1e870f
+6441b666d75f75eb4d92ae8b50c1b60f
+6441eaf5c46ecaccaef98350ee1e1bdb
+6442e9400abe41189ba43cd44bdddc99
+6446da7e20c8f6f1c828f7c0b0d6813e
+6448a059fc8117ad8d4eb9e79b533d00
+644a51d6c8bdee0ebea63e077741e2ac
+644e04c7f01ff5321862009061bd0d56
+644e2d168f8984bc90804852edb50b3f
+644eaf92f45587d7cd8bad6499af1f7f
+64519dfac522d08720cfbf666ad89285
+645314501ee4c9b24288a9a3c87bf0c0
+645486b586da1a5d480755c45b86f415
+6454b7af68d96637d17f0e93df0c334d
+645614c5f35b980abf61cf6b017dd1cc
+645668e1086fb8a04e6047a86c04e5f1
+64571889cb9563efc09adcc12b87d754
+64571c4e60b4a334c89371058aa2c619
+6458a9320add944853ac6f09031d3cad
+64595feb98c2e435db9c16086346cfee
+645a4efa5d95dd9eb6e2c8e0822b8c67
+645c484678faab6d765c98a6004bf52b
+645cc3bc15e70329904ebb9c693761ce
+645cdad1a2a04d7c28ea0404a307d7e7
+645ce71bcbbd9a7970c47ff0f5ac9c50
+645ceb0b8294e7c6b15fb06ddad01198
+645d035885290eb82add1dda18e1cb5a
+645d57ca6dc8e5a5044bddc11321f56b
+645e5b11649760de461706d41de72bf6
+645edc541cf4e2cc23f0428bd23e294b
+645efe5f71717005f2ebb8431f18acec
+646041ef861e4f0a13eede603f1b8777
+64686ea836532d5f58309464068aec4c
+6468a1f13ef9809907e6225f92c70be2
+64694a2e1d86917f0e6529a68f95bfdb
+646a54e3771759e4dfca94912ab2dec8
+646aa297c986bf323ede607f09c37f73
+646aba4dc9877303c554519ab7bc9121
+646ae148cab6b7f102e83d0bd8f6c122
+646bb8bcafb251afdcf0d424ed16ac27
+6470896680a6859a0e48b4c2fef628f5
+6471f318e18c9ccd918c0f0ce681f597
+64724d9404560ea4bf8b890e9370abab
+6475fd7b45f59633cda95867157ed9b6
+64779afbc01a4defc12e2421d4d055eb
+647c4d44883f6951aae88f330e4627f1
+647d5119a5af51382060a0976fab45ed
+647da9ca5d28d63e26f08a03bef63ddc
+647ee92eb1d407a7cbb74890e2d3909a
+648120a7bcf21425c224f022a8885865
+6482eb800b727e773f09ca5ae5da10e1
+64845e0dec8ab59e35fb42999ed7c561
+6488e761fbb557aa44e83131caa14770
+6489eabc8328547665d702f097b67296
+648cacfd11a0e6b4205373ce992017ca
+648fb0f0ad781eb6067e7dd4245b409f
+64909ed216242f6b414ac2f539bda1cf
+64917da89289b39342a033072cd0a84d
+64919a9f509d5aa60328f48e345c4924
+6491b34659d03d6f30320493c3e818ed
+64954ab5709e6874b016011fa17c98ea
+6495710e496dc63a70f4e08e2ca655cb
+6497e1d8ec365846fe4eb8f7e71df28e
+649da26144129ddd28bf160166bb76df
+649f9623bffa2613ea9aedb5ce48fe30
+64a0a0b8b3bd4e66f8793978546e8a60
+64a175569138d5f9917b00c6038f5830
+64a2087a31b712a293c721261990ce14
+64a484321096b7a5c6fe6d4af29e82c9
+64a506019b537078db5b918f007897e0
+64a51227ca013bec3b4ffbd064b3e7d8
+64a5d6af398763080f539f344974a16c
+64a5f393298b377121884c07b1db6bc2
+64a75811d7232c1a28d3130698b1fb91
+64a8478cff65ebbddcd36967ebe12a6b
+64aa066da5d421a445f8420cbf16bdfa
+64aa24359a6df3a85be234baf7ce2ed5
+64aac95bbde1504c5885e9a74aea7b46
+64aafb828877c5a456204f24dea2fd0d
+64adac12deee5e538014a84474ba4d0c
+64ae80f320168d6c61c5b010fcd08014
+64b02ab41c31c9c06da8049c59b749db
+64b04c1b70996491673626f918cdcb36
+64b1e2345edd62b60dcc1b5cf1a08ce1
+64b20fd965992a511991b09e0e16e994
+64b36d910f6906b51ca70a37cda52177
+64b55933a6be325a0a00c8ef6951961e
+64b5a7079ecfcf3b664d1ecd8b1edf8c
+64b6bc39324267518016803e1f1acbcc
+64b71215b860f52f08a6665d5e43842e
+64b7247ac0060206bf40ccf1f059d3a6
+64b8ffffafdeba587514135a9986f8c7
+64bf6f6b597d274b7b5702d3c8781d49
+64bfc2420d9eb925a4a6927391717fb9
+64c0a47bceedd7457f12e6318bdfeedf
+64c11400ae06f62f02e7bcd52e74b036
+64c5338ea15535a4696d3cf86c1bb598
+64c60e99ad9a082d267b1d08f21eb4f7
+64c695a9fff9aa8d101871b0256ec339
+64c83fe5791b25a898d062e34997be0d
+64c8c4a69c1524644c8ad363fc6bcf81
+64c99a95711072ce551b1fa6ee15a998
+64cb28d93d4960818756ec87fc7935ba
+64cb2f254626ec3a9f1308ae98f17719
+64ced227fbdcaed2e756d10a364e6ba1
+64cedfb72a72da333856831ae6e410cd
+64d3506918f58db727ddea8c095c73cf
+64d3c286245d7fc197a1db212b3421fa
+64d635ae3c51aa29b674b2f81554d68f
+64d744809ac084ebcbf60ce80608c090
+64d9ef92c8b9eb5239e5e1c03aaf3850
+64dbb8160eeec432aa3b3cdbd2e1cf02
+64e2ad6482e2d8b52c954afdf644c5e8
+64e5354d2ddfc4479786cfeaf74f43d1
+64e562eb8d298dfcfd9769d4ddf3427f
+64e66fadf0d2664b74b0d7e4cfddbe06
+64e90ea3857f62cfb684f78d37f5c142
+64ef52e7c05ca3fb839ca18522b69aea
+64f0a393a9fac5e63791de4a445c5600
+64f110f249c82b79006a3402d13504be
+64f24172b4f9ca814047993a436981d2
+64f2534f4706a82de539baa77b32b4c9
+64f40c8e3e78f3cb4bfc361df1e3926f
+64f5dc442dcd886a00a91cd464bcd637
+64f89ed4f1e9a816d96922a6ceb91ed5
+64fc34e2a6af6c9110ee30e462de559a
+64fda3139ae6fc9e7a40f5b067916df7
+64fe1cf48f6ef266164910ce7c1f3130
+650186189ff0630080f0617fbf200736
+6501ff62498261f65d58891371c600b3
+650202f73b98e5afc6a72cfc91be74fd
+6502781f3107899bc94d9bee82dc4423
+6505cb9b05d5cf7501e0415692e58c91
+6505d542f17a0e7a84d4ea49df54777f
+65060cc801d7878b4f769e5964cae4b8
+6507a4a2475da0d4c7200624b840119f
+6508090cb65da9904a526be8095e2cf3
+65086bf21a0d50da5a4fe1653d2255ce
+6508e0cc3bb43bf9a20fc59f14b2a99e
+65091b5b727a9e84fdde479fcc218e7d
+650a2f34640d01336e92677f48e16c9c
+650f0c108e69489ed47fd2c8ec37d60b
+65148de6f02eb3534bab5342f39df111
+65152649de0ee3c8b7b701de6604649a
+6515e764955423aa336d1edbd08d2d94
+6515efe42314143a821164971273a810
+6516dde4dc9f2f28dfcf3bd26927a660
+65171339cd67df9ba4adda44d9ae123f
+651a29ff177053dac32759f4eaf7fbff
+651bc863f78a3a79b4857510178b7884
+651c7cf9a5c559401a10a4355f1b6487
+651d0bc173084b33701060b4524e3e9b
+651d0da5353fce7559340f00306a12e7
+651e3c1b2dcd8fc6251b97ce9b260c0e
+651ece6fc6a3f377b222ef1185c249ff
+6521070d9de4b77f40803bfb870eade2
+65213f6336f080f286e0936af87791bd
+652178809d75f1d69f3dda919bfa98c0
+6524c80e19fa1fe3d8aede9379a011ea
+6525b0ac5d118f6bb4096525d587323f
+65292764e98e4bef877f85a42c50e0c5
+652dd0b146156258bad5fa1e851e3101
+652de7e13af75fe5d1a82d6c30a732b6
+6532c6cd26932967bb1da05ac6eb69d4
+65370337bd6e72ab6e7387316b56a183
+65373c1c39c9557ca06a735160f4d7d9
+65381acd37fbd31ec7332d91c24b9e62
+6538ad26e7555e1c6f89670be2dd294c
+6538af985e7b29789a76b974e0b904fc
+653ae41e12f340a0db7d5c9e3105efec
+653bf87aecc856e007040453d06675d1
+653e0d85da3a3ec2153c15e69018c068
+653f59359044ade07b8f4eef68072bae
+653fc3b81b7e0df95fef88fb7e160456
+654333304fd21392c50cdd3db491eaad
+6543a947e7b77866c8e6a73914ac534b
+65448a50c4bd088e94e7b5e0b9f3fcd5
+6547403a923e938e768104907924e009
+654784806bc822ebf7b5eb176ea9f563
+6548019305906578daaa63e2031d580a
+65481673794949305aa723c0a4837301
+654a2ac52406b6130d1bf5fb0cc30568
+654a5aacc558091bafe7b141ccb0a736
+654a6859d59176b3764b7805527b013d
+654abf702e82972ff28d21c261c577be
+654b395206f15d77e29e906711d47d63
+654c74eb050c92fecdf9992a71858d91
+654e3f314eff09e52baf110439b8ca6f
+654ef7f4b1152607473ae359e8a1b0a5
+654f4574342b02008b2bbabc48886979
+654f88c5e09e407f55d7ca7ecfee55a1
+65503bf663c7bec4efe49bd5e3b7f3e8
+655174636296643d5c5aac71de1667e9
+65519a257716ea0368f27f5f327caed3
+6552620c4a43006d58462ce7ae797534
+655377e6c15ba7defd7c95b80df18b65
+65539562f621ba8b3adeb28236523e49
+65554d7dd904544049883fc1a2a5ae8a
+65578c777b4ba668b8b3f67cfb394ed3
+65597be94a50eb0a5a4ea8ead565ff2e
+6559e5f6a7612b3ed11c923d283eee50
+655a19c01ddef387243147fd6058162e
+655a9c28dbd91d16bbe28b7809ff3186
+655b9529270b16da5117a37b65dc28ea
+655c50ddbf41474ea1d3e3063d1bdf1e
+655caea11148b916098ab5cd73f49bf4
+655df20371da06bdac9b89dc0389e5ae
+655f5135f9fc413464730d6c0faee7d1
+656087bfbe999dad408e45ed938b9e1c
+656685ad8823e9ff81a07a9b075cbd92
+656fc7d529b3ca989e8b5e58c8a9d29f
+6570a8836ca4117872776d60306d8083
+6571fca72ebf3c6230d9d74775a5dc96
+65749271465ec3d9187b35c2226c501b
+6574bc14ca20c47c69ff83a780ae1ad4
+6574ca793d9412928fd68a4564e409dd
+6574e47541b54e3ae908ef4613d5cd34
+65779bc8a253b01c0924f0640e8417e7
+657842e763bfd6802fce5fc855e93c58
+65794787749febb85846fa4af390bb8e
+6579adc39980f4242c45275b4bcb07ab
+657a14b7aefb2b5b30f07f70d40afcfc
+657b38f223f56232e57d077572162c4d
+657c020512a17bd7c66561514cc98923
+657e7443d9bef6e3f931232e4ee5f2ee
+657f2b9c8dc12d08e3d73eeb5a505069
+657f79f652e23a02a69332de9bdcaa3d
+658150e0143a54cc22f7cfcc883b2ef4
+65832128ba4b6e8dd00240fc473c374d
+658461930db45db09a61d256a12acdff
+65887ee536e89ccf3a1c22bf121b33b2
+65897be195eb7fe9d6bf1eb3ede1bd0a
+658aab5f4949eb44ac349286008c45d7
+658cb8ffa3f7c49366e8301640f5c431
+658f980406ec7d24655c2565dcf9b3da
+6590c446caad78c319f7860857215f0a
+6592fa8dfa78165a855d6ab38432baad
+659323e3afa1bd6bb4d23df73bdaacb1
+6593d8fdf2201b1964f446466a5d523d
+6593fa792f7b02f26e6f0a2ab1a70010
+65941798b3af5c6d581750d4c940a58d
+65943738dab4a8c5c2b328837cffd484
+65944c8d6430d1d882c179c7d3ec7eb4
+65988aab527712fc34055cb1c6db60d9
+6598c6ea38d69d69b59fb28bdaf56784
+6599ace5940493b124c0ad6034c41749
+659aa65725a6054644cd1cfe49635d1a
+659d818df07f25384223a873237cd7b9
+659f258c79ffac16a82109b55349bc04
+65a07cf0d6aacbdaaa854914fe8b59b8
+65a27cf32d4d8376066ac2fd30c821be
+65a3ea8801e6685c8d83595b5b4abddb
+65a6306ee5a0987ee4d5dae548fdf342
+65a63f96a392e262298a58e0bd315263
+65a6497ca1a3af9ec34b41288796b44f
+65a78d1161209e83a31633fb25b8bcaa
+65ab1cf2366750106941070b790955e1
+65ac1aba745857cd13cd851e75d6d832
+65b0f4ac03cf8ae920fb08f2a22c469e
+65b432f56050bbd6ffeee26226bc5878
+65b549da8a525afa377e9d75a615ce61
+65bc2015ffb648258fb30847b5d785df
+65bd01bf281d4cfbf32e4da068768c26
+65be155febda2f0246bd163d170241a4
+65c466276de9e62d98a8a73868897fe0
+65c46a181fb3b23ea3a3a8c5636f32f4
+65c5c5904e47ed634e3d5274a97f410a
+65c6279aba2ad3e7d5cb81fae6943b3a
+65ca97fded3e60260e3d56af6e5f223d
+65cb32d5dcacd10b9ccab96a8cdd4c01
+65cbdad78a0d973bdb8a9c026d974f95
+65cc7defb85ee791dd4881bb11fced87
+65cc80ba36fe3f3fd175a49b30e8939e
+65d1790c149e6a07eb8dac8b4ea1c024
+65d208dc121c81e622f7c23f4ade1588
+65d235134d6ab01abc8286b435613b51
+65d2a4f30b84f6ebeb770dbe26f306ba
+65d357fd2a51e65c95d376c690ba35ab
+65d61f095d9522d154aeb3ee58a5fb0d
+65d695bb09c3579f43f0c681be35f0e1
+65d77eb10a5368e84eb9e300bd0ba843
+65d7ee18dbc4123106ef5141008ac36e
+65d814d172061316ac894b12df532c30
+65d9934583b800d80c0532be0ae347c1
+65da8b209d5fa2b20430caf2ceaa6c89
+65daa63cddc8c8d881dd06bd7cc1c051
+65daada43d1cea6607a68b60ccff82b9
+65dd66f4afe435c940ce2ce11b0c59e1
+65de041819f0a2d4e52206d27a34a907
+65de6ed1392167c919043bc047751237
+65df5bd1887c714bc85a0fb2d169d543
+65df7838e388abd748abe23f82d0c050
+65e4845c6fc7030a33995c07c67b5330
+65e56391b362fd9914585deed803b029
+65e63e67a1df9aa8b2f4a12a5b727c94
+65e6fc8f5bd331e1f10b292b29ab2f9c
+65e6fd079fd4812d7a221acc5d04c162
+65e8037ea0ffc564d22a8d7a7a6d7ab2
+65ee7faad42c3b99dd28fc1433808a62
+65eed3b71d756ac5e080831f4f1a6227
+65f2665e6122ac4bf9e77116b776421c
+65f347b94657152f68754532117bf7b2
+65f37c876bf44423d9ad67ca4fca9e3b
+65f5cc2cc26c93d8b7b98126581ac63d
+65f6373e1c3956a8acdaeedbc29d4777
+65f7c1fd1b5d928dffede00ed340e77c
+65f8c34fbbfd7f5d2b6e8d29973b2501
+65f95ba02629065f174ac46b5c53fa46
+65f99ba0c909d1182e56e2577d9a5667
+65fa41dc655f262a278cb17cf526ccc7
+65fbbeba4f82411d1685601c4ebce751
+65fc2744667ce55e4cd2a598c49f8181
+65fcb31cb383195eb29bae2fea4ccba8
+65fd2134e90a6e24ce1f1c56962044cb
+65feda8333a13e4e9201d46c3c6fc87c
+660081cc034cd7c6b071f4fb0529fcdc
+6602abecb2a9466eb6ac8db349e321ba
+66032207a797c8a3ff798bad60c7c416
+6605c86dd975b842ba3c263c866578ea
+6605f3d5d0903ef7db263b5233e53f4d
+660690d2359dc3368405e523eb2e9968
+6606bf470076976cb33bba5b3e16854d
+66077ef1ba186c5b187fa2305454b862
+660857c0bbc1539d12d39c34cd53fc7d
+6608a7d36ac667c1d158bfb279c6c33c
+66098f91a80c2a5d30e633f661302408
+660b355867370de9f0251c600fa553d3
+660cac1bb7362a75cec077e554026db8
+660fa1df64c0980a3ab096230c615798
+66102b17649b814b7a6f8668de47ffda
+6610680ac8efa614ec318f7b041dbb74
+6610a56f640d130e4ae047e2fbff30be
+66138ade9fcdc14e48d6c815499bc3cf
+66146110cb313eb5637b9a9bb29a1410
+66146c0e48601bdf5802317cb9c8de0a
+6615e4048a20987e8351fd9f375eb8ea
+6616979d4f673416a4196715ac336f78
+6618ab0fc78c493a5161ff17a08f7f67
+661aec4d051a11b97707dcc40abe2387
+661d74fe6b394ac715d0f7c916bdd069
+661daa090402d07ef0c27ea0aa710b32
+661dc1df59cd98ae41bfbc46caa009ab
+661e656b3a05989d24f514f56e7eb3d4
+66206c6896fcb1d4db9237eb7c56ef91
+6621bd9fa03d5e7ba5a44c21ffd46965
+6621bde5a4c69f191540f6469a18d5af
+66221f0d1587da95c68ce1911c4a7511
+6623fbba15fd41c3a3af4610b85dbefd
+6623fd69a4220452cb3ec9a19ec46d7e
+6626184a648bb9945748ba6913b71559
+6628057e645510a432ee358a096fe9e5
+6628677c36afbcaf9a151ce65b773372
+6628ff366ac65a911a211111322cc332
+66295f145de1fbb9aef51d08d7d807fd
+6630050ba5708c40301139cb1b508891
+6631ba580ecbece3cb5b2f98c4339a02
+6631d2d50194147a55b65a6fdf80ca0a
+6632d29fd3b0e0b2165cf3e79af61b44
+6635094c969510379ad930d536347122
+66351c2f3942e928c69cfb317e40cc98
+663cd845af82fe8cb696f52d297702a4
+663d9297f5f19ace60873b10445e82e5
+663ed4eb1f95144ed609e341929dcdd2
+66410e18c1f61ea117032ac5d6430a3e
+66420133775509b7ca77d84484aae699
+664250d0eba03e4291724c7024fc3974
+6642ce928f659905dba610344311b257
+66445085bb882049c1c214ed795ea95b
+6646274d094ea363f71439d7f3e29da7
+6647f15889ef674bcd8240214f323d6a
+6648f617721d110dc7564a4fd85fc0c6
+6649415c6ae156447930df454a136b39
+664abc5e0b1dc23aad380b3b3c2c5fdb
+664e296283c1d7b6aaa975832ff49e85
+664e51ef7e25ba774c15688309bf7c85
+6650684526b3c0f5a10eee0f6b790fc7
+6651499eb91df180e3f81c193f4f0f72
+6651a2e9d83bb5b885f6e6a5126f5995
+6651c2d83bbd62e01585ecaff6a7511b
+6652c84da6551350a8b468393b6caf72
+6652f549694e06a08e9fa420b442b6f8
+665440eef371f38ad0b4dec0a77c8546
+66544337f7e14bce761c51c1dd654e49
+66546e83a376fde8df7c8254b95047ce
+66558804cc47b20f5575f3d47b2349f0
+6655dbfad7b6e0b607b1a27cefb72f67
+6658b22823f2f555b3547dc92636f31c
+6658d9382cc94e6f267241f315bd5de3
+665aa194b0b9d0e4990923e9f88f9d87
+665b1573f29304ea52e1a393bcf6a5a6
+665b245f7d7c600a5c22bd8447ea5f7a
+665e893d1a3c82203ef7ae2b9f4c82ed
+6660da5451b4fe2eb7f46b95f2d6eeab
+66610b3822cd4e1e7d793037fc08f1f7
+6662b561477c11ee264661c793c27031
+66634fab5c3974b4bcd65768508e0ff2
+6663c6c274cb055458a19e19f7012c5b
+666522c7188ae53a782c36e35a0b1e95
+6665ea8acf16cc1f7af1c1be4667625e
+666650c70f8025972353ecd8348f0510
+6666ffd1b87fae958897ff6386dc78f1
+6667c345de226989e753f6aabe8f374d
+666811d46ed32cb43c4a1008a9ad3d26
+6668549f2d390202130a53edb2159ec4
+6668e00876de451b4c4207c6737acd3a
+666aecdeb02685ba13bca9fc2d94986d
+666cade985d9661d8d117b8512237326
+666d4fc32b48ad5ebb652d7760055e24
+666e93132fbf0af39832e5c122b798ae
+666fe6a63446193d91a1e9220137b0b8
+667142b1005eb904761a9a9f38ead918
+6674a702b73730cf0eb9bed67c58916e
+66775908368a3dd8bc1964926b56cc5f
+667b33aedf4bb7d98759f2a8a864177d
+667c2fad5fafd6b869fde57165e8f816
+6680a7593b53deab949fc893b1081242
+66810d8e1b28d5c7cba8c8e892935c72
+66823cdcae40219c88f5a1da74f0fb46
+66827bbae3057e9e4a1cafca897b5364
+66831bcb27cf7a907cb102a521a36835
+6683829e3564adf18337eaaedf8f2db6
+66859029abdbe942e0a9928d383a0ce1
+6687af4cd908f11bfcbbc34157351055
+6688ce4dcbdca859896f05cc4f782166
+668957e4628c38c2c61014aeca4f283b
+6689fab2786bfbd09bd2f0985a20724c
+668a0378dec91781a927d68fb642a4be
+668a11eebadb0a7ce2f4fa7245639866
+668ba652cca5a910378b274c2281abde
+668d3e42c90e2485e69dd27933ab5446
+669068f3c737cdf5d8fa5d5ab0ec03be
+66923419f319336524da65f146dc3bf5
+6693dc95c5063c4d882304046dd155ef
+66965aa95aa09dd031ae930051e3dc70
+66983299fb4e30741f875351dbc3e2a4
+669d6f98b5963693084aa1f5e3c72bd5
+669d8f442e6f24cf7b6ef3a4ae523423
+669e9680deb41061ec6ec2592fa6f290
+66a06b9e1417e26c77f3916146f72faf
+66a1491fd90bf1713bea8dea47e5672b
+66a2377f2b67f9134b206c2c4ef4ccfa
+66a447d3b4ee3605caab8e7271f453ab
+66a5c8c63a74dd88259c18a6f807f2ae
+66a7791b4f3cbe1ea63738378ca73073
+66a7f4575d76fb99e0e765e56315e1c2
+66a803a42cb11aeee596c6475373d1af
+66a80c6f6117f7636424d09da6a6c0cf
+66a910dd8a4a36c4a97e6a0952143098
+66ab2c57bf6c519855716e1bd31cbe4d
+66ab9ca37b0221e38233fa0b0983c01b
+66ad5a9714b59cf7eba87dbc670ebb1c
+66b0282b24dc1c1aaf42d06d6014708f
+66b0a5d6b86c709655d2b78ae7826074
+66b0b8378c191e31b1b5343201297250
+66b2a17fb45b7325e1901a531ecdac87
+66b3ae0f238d0da08e796e87200c41a3
+66b48621dba091642604fe544b960172
+66b5b24ccfc9e86027551fb475ba8f6a
+66b687efe8ca1433c52c9c86e2ef9d18
+66b726a84de8ea226de6c8efdb52b967
+66b7f2642ebecaaf8c74109b173efa9a
+66b9c0026c80ecc96b1b31cbe52af4bd
+66ba30a947ed6e896da11ca33de44325
+66bbca3139c8c45e6ac6e434aa95b65f
+66bbe6ab0ecb2c20a18cd4f1f09a183c
+66bcaa94f2ac846553ce745288bfd299
+66bd56d93072633cd7b68a8a0f765fdd
+66bdcc30ab55aa789e60780bb55ffae8
+66c13eb7b7b68b0596ed40e2766bd36c
+66c1b45c49b29e376690c943b6ef7c22
+66c1c196e8353adbf5474376ee2130a6
+66c217c4ae6a533c0427b3cd6886a87a
+66c6c1328fc0372e66c13c38fe47121d
+66c745f4ad589cdb83e654010e100984
+66c7dc675112c0e9cd83dd2b51562c2a
+66c7e02eabe081eb4bf81026d18f4767
+66ca0204fbbf3ed01b7bdbb82851995b
+66cb9c9b4421ab0e08f352a798e4d2f7
+66cbe9bceca821e05e6b8e50a4405955
+66d4225411ab0f4e325148fabb229bf7
+66d630bc05cebde95bd0e415df831621
+66d7a27dac757bd349a69755fc0e3722
+66d7d39bf0b9663249633848d3aceb14
+66d8ed87e387591cbcc571299cd26cce
+66d930fa9fc856d0e6b3b2a030b71d48
+66da240d05ff5a9b5e996fce1cfe82a2
+66de8259b70940721aaef4a76f5fb3cf
+66df76db5ab0c64a3f5f91e0775f71d4
+66e0142bb6cc42651118d7d70e7a4636
+66e03bee0dbdaabc5aa949c097e03964
+66e6046c2c0a62d3a1835faa95a2cb18
+66e64fca3c833fd875292761071ddb63
+66e95be6727965bfcf4bba7dd21e9b19
+66e9dc76040ac238f7a57677bd0abfda
+66ea50cb45110cbc8980600f832f801c
+66ec2d4eedb9ab3eb0bb39dc5a96dfcb
+66ecfd0e211ebac37bb6dc72a3432436
+66ee4cacee05f8209e0671ebc25cad23
+66f030c9cc93e25a588d9234a120208c
+66f304660386bce82e7dbb89b738dd91
+66f38d4f9afcdb6d0040023f10ab6dd7
+66f4f540f91b4eceb0c4a5cd9900549a
+66f598124cc575db3e76412f57818926
+66f5c4c9a5b5a58827ffcb6447ac3d67
+66f5da9ce7fded703a1056daf65ef0f0
+66f7f59fbbb600cd0b5e272a73e53317
+66f8eadc3a33ca75670b001f6674bc5e
+66f98d0535d8333746560b3a3fcce87f
+67000c6aaaf02ed463c8374d69f0d120
+67007e1b509d05bfd35c066a939ea875
+67029b8a82de2456f40082d12cd08b48
+670333bb5ee5c2bbacf90836f011837c
+67039ccdf1254d644be3fa40c1082f0d
+6703a86c28cb449f8c5aa18cc2c8c982
+670430661e8150e681b56183eeb726dc
+6706507ff943ea5256cde8387db24dc3
+6708c221900a4a00e78e849b3f2c147f
+67092bbf005064eac237b08b187364d7
+670a9129d5e5d6f0a9677d96f2b8dd12
+670aa1a4f59dbc1fd0529de16c8cd443
+670c68f729abefb7b244aafc145105bf
+670e99b7aeddf69bbca880e32deb9199
+67104b26cf89421a35703fb278633a01
+671118714acb4ebf2bfd965c4ea1e593
+6711789e13ccea9ad714d5099be4e1ac
+6711f33d7298ec108df3bcf138515ea1
+67123c6781e4d7ebd5f113d9a3de322d
+6712558142cf739cf0afadce3f5e1edc
+67132fe7037407275536bdefe190e165
+67156ede48b663816230257f214e765f
+6717437d4ab2293aa17da8e477657e9c
+671c5ac82cd2d0a754ff5124569585e0
+67206e8721ba079f7b837f3f0c5decc1
+6721d4078f78f8bc97d56dce90309189
+6722f4c1dd14f921d3b4a0972fb905bd
+6723852d8e7600f4f7c5ca1e34fc3a1d
+67239caad1421bb920a3efa8cc127452
+672409f46df80f2022a6ceb1188f3099
+67262d824240e0547ab839f00c637b71
+6726efacdde74966c6a8f46d5c93d07f
+6728c3b870c3f59b43dc105dd65d71b5
+6728effbbc4fcc38e53f74de04783c64
+6729fcaa7eca21499cd139222b604adb
+67307bcaa306557cbdd058565947f109
+6730d71366e88f6fa73b9474f8a7a474
+6733bbcee8d1b23c7a090b6bc090f782
+6733bbf3de196badd04f02ec6d40c903
+673441d62576ba480f4d140ae1970d48
+6736a0e0d573b134fef71b0b905f3103
+6736e11218cccfe695052643de9393c2
+67374f49667410d8f3a41530795f78cd
+6737fda83313b1dadde371a784f1396c
+67384a50bbd05707eacd5606ded50c48
+673aa975774fc3424e2ab54c5abbbe98
+673ac3d7a6a04cad22a9f9902d4702be
+673ad86455d01e530a4a1b496f7d9bf5
+673d168b1117792c5246ad22ddad4c0a
+673d545d707d6d76db076dc2e87df23e
+673e04a20ae1bbcbd78cba2604f1f7be
+673fa9721051921826e2dadc2b90848f
+674095aa1044bd7976af8bdf5e6fbcc8
+6740c22c5b88297c96494d335306d2de
+6741bb1e273fcec12e68f885e27e06ce
+67433a384ecf8e9a27b95bbfe3c8938c
+6743cd98699ce40fb2dbd4b16e01a505
+67445e0f35cad7de5cffab72bd31158d
+6745eeb71a3f6fe8b6e72f609373b085
+67465a9427a3b0dfd7e44cdf89502ffc
+6747ae2d473acee47c913040e90d3fc7
+674d4c4b6a9dec7e54abb94fcfab4009
+674ebbce748857abbf63ac872dfdd7e9
+674ed7d8536caf5f4bb1a748d49471b6
+674ee9514a3a455da63154b29ed2f558
+674fab4a97ba9378bbf8cfa0bccdd671
+674fe4b8074b9329d83dcc78d85456cf
+6750e5bb0b956a66acc418d6db008a41
+675242d6afce9b05aef088ad7223e01e
+6753222290891910d418786d4b16c5c8
+67535b9207e1c7766b433ed1f5d6cf91
+67545b98b229384fc193c275ea52b0b3
+6755e02daef4f809b4294a467dcc672d
+67570613c62478289cdf8f3589eb7fca
+675857eda73192a383a78498cc90eb69
+675b651eec66f13b07233fcaa7791cc8
+675bb8ff9595c6c389d56d2158eb576d
+675e50b54d3fa1220fa44f923bd69563
+675fcee32174f75b0c58dbc02cc69629
+67622d98662b8d345f7ca28692347eb0
+676295c7a01aba2471b24367a090d2bc
+67633ee3cacdf3f76fdcf135aa695f0c
+67635d3371acc553dd680b0eab2073a0
+6763befde2da8f68490395bb6dbdeff2
+6763fc754a5dcdd7155f7fc83a8fd7bf
+6764201d4820d0741c6dcbcbd86bfb44
+676428476d154a5c905dd1aba4802161
+6766e7fa68bf27e8a9c81fc97572d1e9
+6767dca03fa4646e454c3a4297c4d9e8
+6769c068cb790d4b93aa36c689a03236
+6769f7415d5c4e48ac985ffc84c004a1
+676d019aef8b4eb2e66f9eaaf902c5c9
+676e4103a08b96357a30df8c3154465f
+6770edba7688f98142797dbab5a0c55a
+6770ee75a86fc2c79ebb17e50a5bfba7
+6773f563b6caf338a70985d7c3fcaf62
+67762b9253400e636420a4e374cdc085
+677685c0eb658fdb48074b4e89bfad71
+6777d90ec99189d73be8b817a3ca7803
+677862527de3ee3a29cb3894534dacc8
+677d547d58de15af49f5f366f51f12fa
+67806ba14a0a3e9201bb945ba02f0ba4
+6783ed5d2f776d639ced2b85e8f52025
+67854229ff65bf6b3b616cda279a3fc3
+678875b4b8b7b95d9c72bba8c59a618e
+6789c5095767791872d63b6d6be64725
+678b3ea3c6e29f95d566ccce5f892cf7
+678c407b9d99c9fd9728a45a7d0005b4
+678d4c6c3eb5a96a6e4966852ebdee0e
+678ef8a242c762fb30140a7d09bf4d22
+6791b22b0b9111c2ca2f33eef7640c53
+67952d5995855fc0d8b2c3a9914357da
+679b390e4e14fe8f487b074a0eb75abd
+679b8539df8217c79fd1e6370778e88d
+679ca442fbd0591b564d8a7f011ab155
+679cb80bfe447e211ed5bd959d072bac
+679e4289818511c6e4699f8768ba9349
+679fd11c1519a8a576f21eb0d4a43d80
+67a082af5b8ceeec2e00724c5faf0d54
+67a15c36f2b065f6b0f30a5bf4aab082
+67a28f90ff7186887c65150944191620
+67a478e0dcee432b403992b229faf428
+67a4c834e4e95e0cea47ea22fec05411
+67a4ca56fba357552b1a6b9313962f60
+67a661baee35a3430b0136128bc3551d
+67aa6780ae602300d0e1779bdf58e54a
+67abd1ea9889e6682c8a9c988d98668f
+67ac4461692b6306330ae8f39a9757e7
+67ae2b1d4448628420b831847f86c84d
+67af80d4e70d5937ec8d5bdd16fd5dcd
+67afefcf2d89cca840287a0883297c06
+67b117b8b31eea41de811755194816f4
+67b16750a169d7260e2fb5eb963d9bba
+67b1a62ed76c0d17dca93945bf076448
+67b23e4164b79e09a0e2c447d388a93d
+67b3bff954ea9b5c2eb0a2c2ebde7879
+67b5dbf2f351234c0095200e4257b820
+67b5e28f9412a56ab54b1fff5ccb1152
+67b6cf092ce338301459aec0bcf7a357
+67ba0224a5de764356bcedbeb87d7fe6
+67bab17e574e41d28d1d6067c62d1433
+67be4d9b7c8462cc8483817714dbe36f
+67be6cc7342657bedc6638fa7ced0a53
+67c061d3c354c25bb8a70231f69a759d
+67c1948d16477990be951efb035fda10
+67c30ec41f4679a777800b9cef483730
+67c4abf39b6781c2c2a5e2bcbfa3d070
+67c4bd4a836b431b34bfc9c92be8ac99
+67c4cbc32be0bd61b76d612a379d27bb
+67c4d1a0e9c35225306be1f023622a49
+67c75023a5a77931e77acae9cfdf6ba3
+67c77f14006a7ce459d32ca535122b3c
+67c7f973e51ebab666551efa950b6a76
+67cc9d4cb68c2da00de513b872151464
+67ced3a23e5d29840b9ab2b8619eb28e
+67cf8c10276033a74409efb370f7f2cf
+67d04f87507db1390881e667ef9a5d8f
+67d052bbf7ddf525f13c86da71113aa0
+67d12342898acef37ba4cd93b0cdb916
+67d23bafd877423b33dd15583f901fe7
+67d2f3544f57ea2a0450b55f7b6de049
+67d5d5357766da10fffcefa8266f73b3
+67d60c45d8a9f76337c5ce2feea57b3b
+67d6ed0c4b18c8f82fef1d00c1e4e5c8
+67d895a500060664081e9215a2f8974d
+67da2cc3772921a7e4773aed87af23e5
+67db742e3d2dfd1a9f0ed83cbabf77c9
+67dcb7704cc7c60fe448525380dabd93
+67dcc517493769425cd48c318d2a6254
+67e09797ea64fd4ef13454e493be36cd
+67e1c7a450cf9dbfabf8719dfec28860
+67e53e28d32b59db4e65841a6c1c8b5e
+67e6ff6db6bda507878bbf173328d402
+67e78af6d77df71324c23a91ff8b8d63
+67e906970079ff5f95ae613b2afed573
+67ee16fee2709b9e10c8d7d0a579be24
+67ee87c26964cec2a40a536aff7d68df
+67f00afebf455e56f6de061f145205b0
+67f13059d212c22db1479d37b43f52f2
+67f289d2236b129a458bb9a8cf56ca1a
+67f582a595207b1f2e2b74aead969cf5
+67f6087cff96a87878539b9ec59fd6b3
+67f7153bbef9dbc48c91db5a953fe425
+67fe5c504cad7431145ab3f1785e5c17
+67fe67d608bc6e5a70bc4c4167c4275b
+67ffab7023ce11792f674fd0b198ac87
+6801f54cc2a6069d9a79e66b6d7b4dc2
+68037d43360c8747a40c06b6f9d0e0f8
+6804a908c3a214635aeaad8df1a5336f
+680661bc3ab80411a81a6656bcce7e63
+680675275a223003583d1fc31ab0c949
+6806a4866c7de104ba2edb140c3539f2
+6809f588665cc14e9549d422388c03cd
+680a41ade0eb07fd3167ec8851529b6e
+680b8a8c9aad51c1df1cac8b0afa8fdd
+680ba98799de1d607fd97c478f39702a
+680c15efd5df74e90c17398b5de5c3ae
+680c4d5cda8f8bf3f17358da5cbf507d
+680d15d51e6bd11657e631ddd2c2b8b8
+680e6003d92fa1e3a7705b952fb13ee5
+68115de82d1d22e679eb0f8da2a49dc8
+6811e14f1eabe5dbfe4e3f1389ff6cd0
+68120261d7b7115b380c0c93d7d92ae8
+68123af1d52e59984a710c426476de29
+681470a5fd6072b2a727bd2bb63e11dd
+6815850f90d972d2f8c4fbb5aab0462a
+6816b79639ef551da2f252ce6731e0cd
+68179603a8a8aeae2892514a2f91cfea
+68188aa6c41075ba57a179be9c185e32
+68190d55f6ea6020afe5be0fdee19641
+681954c88b7cb251c0211411dbca2433
+681a984b0e162de77e2a7a9b9e635b13
+681b442910848f90c134b7823308ed98
+681b92d41a65fcae128480fa9636181a
+681e6a5186b214bcbced167395b4ef19
+682033bd32d95f382ad78e4cde6af770
+682173c0a49f6db73dbcf66ccfd1dd16
+68221fda70d6b7aabbf7daa57bffad88
+6822a9353592f45288e04d57a35aa12f
+6822aac5584c5b5d08f049c78ba48984
+68232b8e7aa976291f14ce4aea1232e4
+6825fd67beba95fb0135e0dbda446db7
+6827c4a54cf3b935732608f6d8beed48
+6827c55cb45aca75fdbceea955bb4c05
+682ae9883275c2d210957b23225f288e
+682affcf1e274afe00dda2c0cb6c2186
+682bee4522c2812638f3a3020327c8ff
+682cc9943564daaa499721eba56fb927
+682d4d7136f8696bad9b4e6373485113
+682eadd6e94732728665ec181d5d2ee9
+682f21bddf64c8fcfcce6de8c6a45cb9
+68304d6d538534b19fe12c4d3797f16a
+6830eb4f0c6c62a6b49541fab61b5186
+68315e758c1d2f8fa4cb0f2aaa8a5dae
+6832930284a4f930f154cf7499b54723
+6832aaddc1ef04710d101b97ee9aa050
+68336c99960f5568d66b67c30e5977a2
+683760aa6da31fce27d08932ea495065
+683775fa628bf442d146a560fe676111
+683930a6b1140622fe79eb0d2a7ccef9
+6839b0909d72cae1a3a3f2e200480e87
+683a316c4c202152700fc6ddbc6577ec
+683ad86039882a1c6cbab46c75eb23e3
+683c24b13d409c97d720770dc6804c0f
+683e42abaea3dbf877902ec5342be316
+68420d04aa9be9124ed5603ac85f2d18
+6845729f2fd392ddeee06797d2ed7b50
+68465db51faa6a5ba825a9e4374ea592
+684706ea87df11e1c5cd640dbce8362b
+6847c227564b65bf736c6ebedef48daa
+6848c38185ebe64d3a3aa9cd8460954d
+684b77bbecf9f676ba9cabb9b713a84a
+684ba3fa8f073e3e4253c26d0f0ada00
+684bb5f2b1151287cc0eb50909036878
+684ca46efd79301bbce75725e1033f18
+684db6c884bcfae2070ac4c1893d16ec
+684de2406f3fb1e046c1e5315aa33553
+6854c3208a58f66ef7424604564a2988
+6854d4a813e8af8045e8b83e91cb90e4
+68550206633b243596c5b268f26ede54
+6857acb1c8e143d73f452c1a64a594fa
+6859dfb5fb3e8cd2041d45057cb5be3e
+685c89226dfa5da6fde3deb35f5da7cf
+685f39c68eb697cc32d6d2eacd4fccd8
+686479b9fc9c37cbedd04c58c2ca2245
+686619c37260aa338853f04fa727cfe2
+68671327dd9fafff08ffb0229982f39c
+6869484fb2cd002e734d6274a125e584
+686a2bd968179d80f23a801317351bd4
+686a8640195d062609faf2a4425df7b3
+686d0ffc149b1783431ce1c05070d325
+686f23f3d65ff35f1565e5b48328d08f
+686f84df51b3169f24add97bfebd219c
+686ff34f5b371b50a2f48689c2153704
+6871e01df041d90482badba866d80719
+687318df41118869610915998f406b53
+68732620cd99e9c676fb61b2831c0714
+68765bfa2bff1badb02899297cdea4ab
+687877f85630691a64bfc9f048dc9e2b
+6878c69eac73897d7207367619fb676a
+687ae62b05067782d7fdbf67e26ffd66
+687d3ee55fffb00fab1a838907e43f96
+687e724fa5bf2b175f949d08f019dd08
+6880440bf714a1c925e36be8fe591295
+68808e3687424bc71cd60091621209a1
+68820d37ebd80607113d45684fdcc486
+68864aa8bfb2188fa80ffe4e4c830893
+6886bfb0e1ebc4ad28b6d37fd546e633
+68872d580e2b399381f875d55cd1856d
+688753d9969a446838c2226321d86335
+688a40dd7b76bb37f00773baee51c89a
+688ab0d391a92dea10b000416519d113
+688ab7449dee363c0fd5bb8752be70f6
+688b5f34c0ff709769735c79396c3165
+688f96710800b3b505b6bd1c01ce41db
+688fdd6fa158e346c424fffdc75e1c9c
+688fe4075ffebbe808ca060c39e11cef
+68917747134c30b1f50b7d8f9d4e26ca
+68937d4bf04db9355c9927943595ebb9
+68951c9b67598a73d694b8e3bd326c42
+6895e131befc440a7d228d311d087d33
+68961fcd907a181a1ae3d479c09a4532
+6897816192adb30bdede2c30e6bcb91a
+68991ef8ea0923f129b482c37b0ca6da
+689d7fa2aa4380798cafde9d71f94b52
+68a244c6e9692ecd6cce284ea432bb0a
+68a30596ca521a7d0efc69c075ed839b
+68a46c2380b39d29371031d30f7efede
+68a6bc86e9bf53d4748bee66e9fc2299
+68a7f264d5d9db07bc3fd8deea7dcbcc
+68a800a9d70bad2a7ba550b0f0f5c637
+68a863b1b51ee3e6245abed49e97f260
+68a983d6f691f22d0b6bcd108eae1428
+68addb9d67e8e55a7460bbaa1163fb30
+68aeced531a9cadb91ac7eeeef23986a
+68b1d34bf34981fcfd29dfbcd1803928
+68b1f564ad2a298c3510e036d334ddb9
+68b268fecf172bd3ebf20b7d711ad139
+68b8fb238e9f1649e96992ec8259ddca
+68ba413fe46ab0bc47b4f808b9d930ba
+68bba239505a30ebbd9fbaee63becf23
+68bbd1748bcf38c6ace70e4578f940de
+68bee79681eeacbc00d94821612d25a4
+68bfac986f5f2d9b94fb3e4fba6f71a2
+68bffef33c52e0aeb031451526bf7401
+68c0445e38b9628ed04118a9f3e21303
+68c21a1eff9f299d176668096c7d2e89
+68c487dfd58bfbe4f380fc124bc45260
+68c5c59c0fd073e080080081f410c38e
+68cb223042dbc5cd4a696eb209ed6d19
+68cba8759e21db92facbfdc870e1fa42
+68cf397ea27e9d377813dc3bff529107
+68cf5f2f1a6155aa6b1d7063d2e83996
+68cf757e04c3461a28b08d999056210f
+68d2371bfb007767d04b9875e780439e
+68d3bf12946cb08fd334c0312032f1ea
+68d4ac182666ba14318bfdfdf552ff1d
+68d4c9c5066af6c484caba5a3ae1b3f5
+68d60ad7ec6faa9cb314653408e5346c
+68d8bdb2e61da8aa12cdf3c7bf54bab6
+68d930294b08178f3d143fc17ff11394
+68d9ca6f33f8edebf9bb8a2208fb3bec
+68dacb2979a735123e05241e59573faf
+68db93d5ee3dda75d78697b1d49e7be8
+68dc5eddf921465aa108c02a57d4b7e4
+68defe203dafd0f67f5187a21e2233c5
+68df25a5c43783f49dc9172cde84aeb7
+68e3c497975b784f5d98c7d11460cced
+68e5568de325176afda38ca6637e8a19
+68e6652e6c0a21e7632bb35657fecaa5
+68e8b0567c8d917b3d498a7c768cea82
+68e94f366ab4f17fa5273fbf229ccf13
+68e9df94831408360cb8f37717be9f02
+68ead957ef0484b3c0ab5689625771e7
+68eb8a0175413fb1b03adda09df17628
+68edbdadbce05e79f4dffbca9ef2a4aa
+68ee9359339c7bc8a311c77124799edc
+68ef020f6b5b7b2fd4c5085472e7e829
+68f09ef8bdc6d52316be27dd82a56f18
+68f17cc3682a2b804b024f3a23f33ff8
+68f3b2a2d4bfa2eb156784fc5eeb1b55
+68f6618fa39b27fba8ad9e13210c4e01
+68fb55b385f62a5a3c27b7900662d4d8
+68fe2c4785a83c02b126431051149406
+68fe427ea829f62f5a358cd92488daa5
+68fe4d1106e5d5d6a3ba33caad44f9ad
+6900347fd59dafe99737e452bc022d76
+6900b45aaa7a7df78be624ce551720d9
+6904b4d84dd1ddc289f1a60a07aba1d3
+69059d854d68de5ca9b00f76b73e8a21
+6905fbf78a94098850aadf62f8da4398
+6906dbd1eb09342a1e6262e45c987d51
+6907d8646e1980740f730b4066c3ab54
+6908dd6ffa078529400c2714c64848e7
+69091bf7e3e14468cca4053dcf262ab6
+6909b8f222675444200c9702be407e3f
+690a2cff94fab90ed552fc27cda5c666
+690bcfd5b6d53511afa04a895a0166ca
+690d7c3d12c53e2d56fe7efb583587a9
+690f02185067e1a4c2b7070cc3328059
+690f8ec01bfb7c8af689aa887378155e
+691178ada138db5f1f7dbb21a1a15f4a
+6911ba7b86c38ccb4313e374c49ab398
+6912068e9310cc6a9a25eb0e974af473
+69141bdf24d71e98f85be48dbfffdbdd
+69147ee89844d876da980b9f7f081817
+6914aa2861fd34b9e98788e6ad82dee9
+6914d1fb28d5fe47495f49c415236e17
+69153f0c9ef8ba4f69f8dafa298c7898
+691593bd34cc2afba45f45af52f97323
+691601ff58ffed233ce550c4a4e12fc1
+691bc1e42ac28c31249ced51e2944136
+691da4b60ecc966e293d4e8844ab199a
+691f410d24db7a094e34659ecd86128d
+69205c10f930415d5a953170907fceb7
+692215cb14417231f7db5621f4eea6ca
+69232eb2bcfd4ebd9cb7b99f9ff7495c
+69238156da07104ee745f3e5bb17269b
+692662376d050b93f53da705df99d928
+6926ff031d0fb5b4a7457001b1a52a56
+69273a5213656e2092bea2e98121d295
+6927673db5845a5f4ccdacb88d066026
+692781bbdc233fb9e2a6efc8dfb9a91e
+6928079f326c8cd5542ff5ed96a62aaf
+69286ef418965129a4858a28b52b25e4
+6929f6ea54ac3517a27ac05105ce8b77
+692a8861d2a0241b7bf7e135847b328a
+692ac69cad3fddaa91b20730dd055c1f
+692bc4bce857adc2ccbb7d03e4608d36
+692cd67c517c7e833ea70642d9becf11
+692ddaaae9d2ef4757dda0d6b14f5725
+692e86013a17752b0d5dcca73609d237
+692f54ab6969c06688848561cb79bb08
+692fd0a3f6fc296218f7f57a94e62858
+69306c186a6b94d024deca61a9ed54f6
+6931cb0e9cc8b4bae90d47d12f2e4de4
+6933a0bdd38172eccb0198021a097f1e
+69351b4b8c0b500bfd0a83349a8f5058
+693573045f3051f13c68f892a6e7171c
+6935860c0290a88b6e0cf70860d008f1
+69369dc518c14f5d3427d011ccc4cc02
+6938aa9c590059d106570e5cc3727735
+693a739d09aa7e9984e3ad496e3780ac
+693afd1d63db5c24c93e352087503fc9
+693b517388088528725f1476d5d7c179
+693c2b896222b85f09b7dc4330743029
+693c676a02d133a528cbf3fd4415c944
+693ec9a822bd60ec62f585020865c0d8
+693f158d557aa8ae0858f3053858e389
+69428c2afcbe6470e3789ec5a3b419fb
+6942fc929759931bf2b68351da45e5b5
+6944b6298d85bf250cf02c86efcc2305
+6946335a841b135a1484b8f057ac7674
+694844be61d51afc6af70fdb38b94b3e
+6948c7aecf5dc72cc9831672caafb6b5
+69498f94d3bfa5e2901e6b973b6225bd
+694b2b14e3eef8e8ea236cfe139c2e2f
+694c76b6869134e6594d276c70f73440
+694ce0e1bf1b7d9bbcb12bf1bbc63227
+695056b81b578931910021c9c5955059
+6951805bd57588459905ced7e95dd08f
+6951d36863b27a1951b896b765778ff7
+69521fec2454d4c6c16da9cc209cd746
+695221c9e23a9a349a1150f4a4b30a4a
+6956b38e87a8f5bb6fb7e4e6a75e405e
+6957b90a812171e2281993201a106416
+695aa8e7d05ac220df41580a6bff32d9
+695f29bfc747de40736a8c1e8bee5b70
+695fbe71c0f633c81eb22e58dc48b52e
+6964f7fff1346e82facc15026de838d7
+69655bc0f11ed618f4159f48c64fd9e8
+69656e40287954c5ae46c5003647e288
+6966a04c4a143bd13addbb82f2672343
+6968466f089b8a58bc51301c9d9c54b0
+696c1a59db8138a585ac243730dbd6ee
+696e6b74936dd64399b90e901f2ed554
+696fa2e1dbd1dc374d05dc303b3752fc
+69702bb28e88cece3216789d93043aa7
+697167dc138ad560e2b508f8ed746b09
+69717e3590ef2c9ef13b07e08647621e
+69725e935a3e7c9ab3370862b33f6730
+697285f312b25d17f05ad8d30ea8f0bc
+6973d6480eeb02baf665f9a235db850c
+6976431788ff260356f43dee298d55ea
+69766959fafb8982d39b13c86700db49
+697831a2811912b202445ca5be0efedc
+69786b177f5a9c3abc04c9f2e0b4a972
+697b0e8ca8c00322b3171577b7287632
+697c05ab5352aca9ec654104a23b6e70
+697d2f8a8b1922e000b640b2904f55d4
+697dac063e6746251cc825f5b135aa5a
+697f097cf674811634fc4bb6c8457041
+698010a64d2b2661c0219701fe1ce0ef
+69835e6efea0cf7d9d0ada001be65a84
+69873fdd95f4a1b8ae2685ad6a29a452
+6987b75716a4126975574bf4a4aaa2d5
+6988291bfb36064e2eccf8eda696f4b9
+69885487d5dd9c50985aaaaca06b771b
+698a24d85e8c5f5e9333bc66733a354d
+698ac6dc688f69b35d86d2c39cb49cd5
+698d227949146d188b1c323908a7b0c2
+698da1897085d2f736dc4a8f5d6f0f91
+698eca99112291fb1862d679c55f20b8
+698f2a13c20d442547e53c91234dec38
+699112a8d93d6e081e1cf9d6758e7c08
+69928dbbd60a2d60abb39690a10630b7
+6993e328808ecf97a504eb9d436fd995
+69954de691ba22f96e32451d4b3e87b5
+699635f3de7c8959b4c427c6cb32703f
+69972718fc6136847548f4821a1a7ba6
+699744983a510016d0361242a802f88c
+699b18914659ab9a64bba894924e70fb
+699ed6b681d5653a133434c0b0cd48c9
+69a02c944bab219da53cc3ef67af679e
+69a036c59fa2101b725fbd5cd65fe5a5
+69a128fc71256fc48f9168d9fe221b32
+69a5103866e901981c6b92d870da9027
+69a69ab1cddc1c02190f10b788d54d83
+69a6c422cdaf3bde60b11fc815152476
+69a9197f28a0f60f0bc0c2fc443d7994
+69abdf1b94d4e5e9521a013cf368281d
+69ad9db8a9f8c9a4d76524a1eb7af79e
+69af184dd51a8918f94e2469810d4eb5
+69b0452c395d47615225978a4d070cbf
+69b16900d625df740ddd1cc07206270c
+69b1a583108331fd19bf89b69c10208b
+69b308e06f01ec00f96848201ee47a49
+69b43ba137c5327d081836b62f815a57
+69bc0d2ef916efb6cf8ea8a02d4b4576
+69bd3e0d4d5eeb7da26b99b75543302f
+69be6e73389f8d9ad3b1eea4d97384f2
+69bea2b054c324ca47f57e818f4c35ab
+69c1271150f854f5133002cd92894f2b
+69c6d5a0334f11d818a8c2f1e704419d
+69c9f19c213aac3cf44497d508811181
+69cb66e81d703ecb580da5d7b7b6ae51
+69cb709640895a6cded7c4443bdd8bff
+69cbab4d3e16ba052db3debeb74c173f
+69cbf33ba63dcea134a215039b74ec10
+69cd6d4842f4b9319995e25c0ce7833e
+69cec365001a772a42398da78558fe97
+69d04b33baaa2aee2ca0c8d04c254e8c
+69d06c604319a2687048ba28a2b0d278
+69d11fc736c9a53dcd1c88598a88fa9e
+69d5cfddb5d3f746b8c31b4cee024782
+69d6db5dfe9c1acc5ea2bae99469ecd7
+69d7a0286da31e885a85e62c77064c60
+69d828844f960bc9a675c1b1d3b90a5e
+69d8e66f4bbe5e89c8f1f9f230a9d387
+69db3d300ff1fc897cff80654d3787a8
+69dc2ea9ef60bef771756260283c253b
+69dc762f367ccb7c783e12b7322bbc52
+69e0447fdd993f59ea14bea47e55c9ae
+69e22efca6d3d6d6f6720769cb383131
+69e5e61f392b138b8a60a0e01ff1111f
+69e8e1f1d3b3e862c6a86ba757d3f026
+69e9162200680fa0126890d09446a276
+69e95d6d4f14b098368ea7f635010783
+69ecaf1f9f3edb5bc96e01af4677081b
+69ee934b52dee0b3a42f8d08da30c826
+69f05af4d0471ba8fb5d62a565ed5b43
+69f3c7eb415e82bf4679270d8c46ee6d
+69f613dc54f072ca5e96ed8555c3d74e
+69f64f29dac017d7a4fff5591d921736
+69f69d685673df7def6a900fdb0b007d
+69fa6a9c45441f0d1f2facbd99df781e
+69fbe8dc05378835e36e6da3e40ebef4
+69fc233a05f935bdec08d8e13f219202
+69fc33c7147e1afaab87e7f2abd6fc85
+69fd84c7c153c3f53a77299d8fdd6eb9
+69fdd5c56f8b49bc6398023b27e0bdbe
+69fe34952ea1abe70f1bb2efb3fb0f56
+69ff093de53d2c42ff6b723704e1934e
+6a004bf7221ec4dcb00f2d07ed0696a1
+6a01cd6902194eba8e1ce2264e00fd7a
+6a01e0a85f4d8d7e45f3a6ed24614e4e
+6a0399abf9fe9f8b8b8dd83601bdb3cb
+6a041e58af48d4b1629a375f09059ff1
+6a04c13cb8328d89893304012831022c
+6a05387c1afe6ce4564aef05f72970ec
+6a079903fc94b2a34f1bf1cab873e2e1
+6a0817a09796b2d4752eee6b6d1ab314
+6a09767cbabd3984284395f692a65ed9
+6a09daef3823f84e8d4a8c0702cbc469
+6a0d47fe329905c5f35d2c6d27a9786d
+6a10d25a1d9fce702110f5c456d44b77
+6a11110dc559e8a23bd5d5d2a486fec2
+6a11737ad40111b4464a9a3008538dd5
+6a134c24e4035acac5b4107aad732421
+6a1a4272c369ad7b227bb03627174186
+6a1ad3b97e47312103b1ce20f5faa81e
+6a1c3056256eb2acd1055a87b4377370
+6a1c43cdc0a2af5f28240a743282d8fe
+6a1e74c6a53a178b0f1082d2ef5793cb
+6a1fe91b1691b53795300cd10286c915
+6a28482a2110fb969a037a145f9addd2
+6a2ce2a6b507054ea368049c48172d33
+6a2d7b282b5d13bea6f5fddcad447fa1
+6a2d7cb4820aacc516cc1fcd1bb07b1c
+6a30f252a92357e255a63296f8c02ea0
+6a31e57059f3842dec60d7ea4a501f31
+6a3903c657f49a62754cc12c0e46477c
+6a3b46777a1a769a2c279f4ddb62f4a1
+6a3c5a60e510272e29d5b94cb4f35f8a
+6a3c7309dea9a527796b739381ba5634
+6a3ce0853d904a658b8cd5794570239b
+6a3ec7fbb8aef2081c806813775ab399
+6a3f4531ce3c516f0c1c81402812d3dc
+6a3fa0eefa4d42d33e813ea082a120ae
+6a3faff798f73e6a618f7d78fe98ca6b
+6a3fec32cdc00dd48d7e493183ed2519
+6a4093c36b629a83162c27e064e9e55b
+6a42ebd4ab0fad4d5469205c4e88af60
+6a44e5efb4ec9207d0eecbb08bf73a89
+6a4552b94a00dafcc3efc009602d42a0
+6a4a9b5ba1867f7c9f9536e54a1fa22e
+6a4c63d9a7f5285c2c10ea3c1a63c2aa
+6a4ca8e90dbd7b46ccba6a911b39c258
+6a4dbeca8e1a0383941dfc68cc12ed0e
+6a4e3161ed525cd01650fde09385db2f
+6a4f1a33ca118427f1ab5200bdf50f8d
+6a4faae50a6693ac481843b1bfd61f7c
+6a50c76c243260385e98d5b794c535b2
+6a51e1951eb49cd9acb37ed2fd7c98ee
+6a520ee3f9f887ab4bd2f839bac6b9a0
+6a53bcb2b6079abb1b8412e195bc05a6
+6a54b8176b5ff07352dca7f307f49dbc
+6a55330a7f231eecc115e1014a7f4919
+6a561ac2ad921e2ece5a23fc9c397a73
+6a5700d2ff0556ea908e60e44ea3c4a6
+6a58b02c02816588ea662ef9adcca8c0
+6a59923d444a3dd97651b333c47e6cd7
+6a5b686a3d4479ba9aa64f29830e5ab2
+6a5e0ab1eef1d623a15b0b235175d0a2
+6a616e4fbc57b64d8538611a0bf0a423
+6a624ccd9e0ae51727292052f2414861
+6a670c9ed095706958eba3a2f43291ce
+6a6867c621d7272741dbb7e73dd3ede9
+6a6bdd9a9588f07beb5eaeadc0d611b4
+6a6fd9fd12392f7b9b20ffcc99bf7408
+6a71918f3a5fd75f7fc8a82deb9a15c7
+6a732a0b4342e00056e5190da845103d
+6a77f1a1219a75711094822384073b86
+6a7a810ce8213a04046053e80bd4f876
+6a7c627c9eae25af1f2f8dd16252f5bb
+6a7d60cd8aad67ec4338cb933d34f69a
+6a7db68c79289cf85508d35e883b6600
+6a82a269dd41fd6aa65585f3b818d839
+6a82a5fef0ca8d90954e044af1b90e55
+6a837d867f247e6cd8e5591c79d7b2a3
+6a8479335cd5e6e54315a0a293e75da5
+6a878e02661393f21540b5b3b44279b6
+6a8a1a3a16f78294ce20a926ebe181f4
+6a8bd0ce1f8e39c9520cd5fda3d76a18
+6a8e1c8a6cb9217e0b92b79ce1f39173
+6a8fcef0d289321d6a9e65d92633eb4e
+6a9001fb65f21b07d0360397b502929b
+6a90ded7921c104860eb8fba95b62b20
+6a9185b9e61fcee664fd58ed10fb7596
+6a91be077377eae1087e595cd2d5f0b4
+6a934e96fb342f9f907349c062c4dff7
+6a935dfab0f6ee5779f8143b62deac0d
+6a9481fee539785a31bc89ba95df5ad4
+6a966bd5ad16d110cfa96377a5f25dee
+6a96f2c2c1b4e3122d66523af44e924a
+6a98698c61a113a1f08b62a5162d7fa6
+6a99638a4c7393f37002260fe3b7e81a
+6a9b05a811c791fa93ad23bbe74b4cd9
+6a9b31f4e0d7d97a9c24172e6a04a58c
+6a9d4f0ac5d75739dcd24c937eeae68b
+6a9e2bc5045d8224ef337b72f0f6fb30
+6a9e86b37e57229afd3fd1fa6cc6e681
+6aa01be2b0246b53a64e83bf121730eb
+6aa1a66a99c73a54ac5f153976c8796e
+6aa1d7988ed1133c8a41369ceb1d9a22
+6aa2aad6aebc9505ddb64e76771081c0
+6aa4cdc49e3293c80b8414a9329e409f
+6aa593d48bff6dc100f34f1523af589e
+6aa79ecb4feb63ec5884aa7413db53e5
+6aa7a8919eaba590f48538d620db4caf
+6aa85d60b8b52a99e2b41b1f0166d20e
+6aa8f591b861550931eee1d93790261e
+6aa9387158cc8567d4a792eb528aeba4
+6aa9506b49d02823f402f1e9e9a7fda7
+6aa9769702e45a40e203f155abf0c665
+6aaa03b03d99227ac43f3bc9a2df472f
+6aaa9ad9267c3f7e5a5641f8e747a2b7
+6aaaa59a82dffcf6356bf342be708a53
+6aabd57b48f9def28cc68f6e5a8dad5e
+6aac9356dad3d212289b463f7d9e7717
+6aad9021581e7fd34701134f056af620
+6aaf256d7987d6973dc8af510d2a8849
+6ab1ea3ee6845d0d4fff4f385a704566
+6ab339d6971964fa44759636aaac6b97
+6ab3f0c6f0f9464061b9bab55efa325b
+6ab415a4de6d8260c8ecc3135fef7c10
+6ab585343b116a6513debe6ffb8f8853
+6ab6691b3423b21dc3eaa50a0decd580
+6abc31e09f4ac20e6a6a337f06ae58ae
+6abd10bded619dcea23c04bace80870d
+6abe2a657c2043da4bcd4582268bb08f
+6abe6d8b9cfdc6e19cecf4564a1c7bf5
+6abf1592618ee73bd78b34a3c29e1832
+6abf50afa7893c81c32693771fddce7a
+6abfe7d84546ca6b314a50045f7ccc7f
+6ac1599ac02d4a39ecd7fec020e2a8af
+6ac8a61f30570324bb4348f0f88642f1
+6aca905e1ed1e65bd27c10ab7e027cdb
+6acaaccec320a02c789c23a824ad4bb1
+6acb6a07c672389f5f5068dcc032642c
+6acbd0d5e3c9a399edce1c382fc9e329
+6ace6b2b9672f137929cfeec9a63fea6
+6ad234cfae5e0bde4d9ebf8e4b145e29
+6ad32849be3b52f78272a19b347f2552
+6ad776bac1add7b139402fac1dc366c7
+6ad780608cfe4d70f8e21982b49d00cc
+6ad7dcbcca1e5a9b5ac4476edcdc359b
+6adc0f24d020c5307fee7e0d2fb93954
+6adc7942dfbefa422356c00d11277e3f
+6adda43fe1753af7a7f1e2a979e552fd
+6addf3edfc87a3cfc1fba06e67ef0447
+6adf5dba72441a139b1a659011b65b0c
+6ae01e7ec9e221cb4d92b45e1acfef12
+6ae0324065a04537fa8bebd61425941d
+6ae0c7a85c648b90dc2eec269818d6fa
+6ae11fe42b5bb45c008670796ea41a3e
+6ae3a3e48268b9f0aff3c2b6abbe601d
+6ae525df67765596679b3c04f294d797
+6ae5b551b84db72ad7b05c1a6b1505a2
+6ae5b77982b4708996b0433d53072fb0
+6ae6f4f0f166bfa2fa4360c6331ebd4e
+6ae75fb9b4df45c5c61f985e709e4130
+6ae7b53bdd65e6a808034c90d7c5da12
+6ae7c6675fd15d925e6f3dde967397f5
+6ae7e3eed8062d7a0ae96fb21b397b86
+6ae8990a3783dd6e91007cb5ed232858
+6ae92f58541067a276380c23c76eb466
+6ae937184d0307c3339e3f48dc23ef69
+6aeb006bbf90214bc37f044810959b42
+6aecdf3f8b468f195592e07cef30631e
+6aeebfc609b3cb8d9470787fe43f65fd
+6af006119a36aca9eeaf04abeec9ee7b
+6af1647de593bc3d5e44ca4cea95f25f
+6af1cdfd811ef4e994910913c400d950
+6af22a5a2c2c74c36780dfdc9a15b1f7
+6af2f846c9b8c52b68b170819daa5dbc
+6af3a8f613504a2aca25ac453ae9510e
+6af406f684ff90ac88f7197960db5680
+6af43cd0668cf7e76b97112fbe38ddc3
+6af4797269dd543e31d148097022c829
+6af4cced14017bc71d82e19dda001a45
+6af5b105930dd8e238da8ace6690f077
+6af6495c0a991eff0b913049f7f4050e
+6af68094045ce396e402752b857b685b
+6af6aadb2f71e73f05305822a22c93a4
+6af7facf91d029ab0a07408e420e142c
+6af8586727426aaa8f58bde386155dc1
+6af875167a459f14aec22d4bb6cd734c
+6af9b168fabe5dfefcf00f1f7d8d1547
+6afc096e963e0c94d68bd808c4effe8b
+6afc43d9d66297ec105832c111b892b4
+6afe51d6feafab74e3630042333a7a3c
+6aff0a6bd803f9e3a422c233572b68ce
+6aff0c98990d1d7b87c0c2a791099ffe
+6aff5d17c71c958fa5047799faca018d
+6b00521285dfeb11d4392c7d9389987b
+6b01e1d6a1106363e5e50bb263b80251
+6b02c9c4ecbdf3d3c8752fa690854b3b
+6b02feef4c83945a1d7f3d5f37d091ac
+6b038439ca169313085bb4d0aec781f9
+6b05c76e9326c47287f12688c35fb923
+6b0b58f984052df470b3558e80a8b34e
+6b0b6ed778128a3b5090983a743889f2
+6b0bf198cce17552291f8c7c61e5bc86
+6b0f75291eb5ac99b143b60ad828a09b
+6b1010174bc4f4e202e9d1cdb14e91cb
+6b118016b4aeaf714f6f731ef39e3369
+6b11912caad51fb4fbc085d83f664c6a
+6b14315add69df67574a85e12400de74
+6b1587ea065b5e7505214e830e3a00c9
+6b1620b3990203d01aecf82dcbf7024a
+6b18a2881d187fa58c1fb920f6480d5d
+6b18f227a0f7e2e513baf4178ad9fdc7
+6b19a4e583b8ea1dc54beee28ec4054b
+6b1b31e610419b60b043cc1ccfeb381f
+6b1c77fb814d0210bb3b11dccc85f814
+6b20c2b0731659fa5535f7c41db49f66
+6b22d627ba38c711133d7143081e7edd
+6b23106ba977040914bac9dc7a1a97c3
+6b24c5d093d455efc95e20cb9b157385
+6b262309f427da2628437a5545a0cc0c
+6b2717d68b943f3546191cc489bd2146
+6b2842e1b33250b65bfa28b7974539ba
+6b2a0545e25b2b675b2034ce65611002
+6b2a8957de5cdfe667ae14b022eeb944
+6b2bfe71ff803e815d5081f18310c14d
+6b2c5612a1ea8b66ed9a3797ee128e57
+6b2e2ce831428a6e841fb979f4c17dd9
+6b2eb6a0bed750bf4f8874c8abafe12f
+6b2ed598dbaba0ebab411a8232fd3bdf
+6b33588375d2ec88864a33b48508c16e
+6b36217faf4250cff6df8b4596b65ead
+6b36dae536e117760ead1eadaa9e2fab
+6b3c2ae9c992991ace87e1b35b716a8b
+6b3cbd5df915c7798cf5e78d37c50797
+6b440cbf6ffd3d0dc36335b0b3d930b9
+6b451bf110a6660eaf1c73a805e2e7d8
+6b4650d2d1f361c3f76afa8c178c7b68
+6b47e1423664cb28818ea9cdceb7810c
+6b49c9a6e9e0ef307ed43412f4e835d4
+6b4a50c0b809116c3a74ef18c2778b73
+6b4c11a7cebbe7a9000ac9a5979ffcc7
+6b5175bb3d322cc5795c221bea2376dc
+6b5396ae29ec555664681f40a3a07618
+6b53f948235852258729ec9ffa8766e4
+6b5551a66a6e0383d6d97b76ce41b541
+6b5551d0a330d0aa37423bc136f1db17
+6b565bcd388ed4a2708093b8e2c549c3
+6b566fbdd43e02e337afe7f9baf3a909
+6b56b581b13a5717eb95671b78c0a65d
+6b577c3f7ae9cb642a71192dd96b50ab
+6b58bf4ce290a7554d65749eb4ed5336
+6b594e19172dbc635b049d1f2539aaab
+6b5bb88f3f92a42c9aa7ea6afd25908f
+6b603278adf5f0f09c979b52719c5caf
+6b6499171c74ef4b282c4a6ae4e4d92b
+6b66c7b4f64d46f741a0ef9b5731e0eb
+6b67e115ae9d2e8f1707a3ebb7ee1f3d
+6b69562272b9fee77d91c89d3a370884
+6b69dfddbb682a7ecb334bc7e8a10627
+6b6bc4042a1e13407d2535c6af9c96bb
+6b6d0150d9b730ec78043e21229bbc77
+6b6d58bd9e0764f483d1fd1e5a5340b9
+6b6de4781d082315f38c90dc6c2233a8
+6b6eb66fdbef789077b5db61e69e36eb
+6b710cf511ff60f25b73dcd712560a42
+6b74819a794eaa975e852df65bd6df4c
+6b753a2e6feea9dc4f264405d9c8fd05
+6b76dc6047e83e0ea30bed251a1b25cd
+6b76e2d755806dd1e02d0410835c6584
+6b7ab50fd7830de0c36f799e77a92e52
+6b7b1fd94edef6de936ec1f0da9283ca
+6b7b95e05a7a2922bd7f22d40f52f23c
+6b7cd9a5df985295d25543cb995958df
+6b7d3121899a03d377248372d60b5f14
+6b7e45d7cb40e1c42da49b2c69d3235d
+6b7f0dedb7c66a6382dc0b6f659e2d45
+6b7f7d78d415c50b648f48b5cd70f4c6
+6b807ad0b2bf947c4dcc3ff4b6cd4e74
+6b8144696d6e3282cd25c04b32cae383
+6b827fb5fc362e869f99812362d9e9f8
+6b82a0a923f0e52e732ce44096d45918
+6b82d50581ca8e99a3b3d1012250484b
+6b832ebd5153b056ce3decc4f9f4620d
+6b839cf0130457a4dac7cc24e5039ff5
+6b83aa0cd4b31f90dd35bf34480d86bd
+6b88e542f3c1766a949ddee931d27b98
+6b8bb991367aa1cd2612fd2d2585ed92
+6b8d84441411270998276c8387b12a11
+6b8f0fe402c4999cf22daf7979bdfecf
+6b9111b9f49826fbd0873edaf96bca5e
+6b92f94691c16adeb9a876b700b1f642
+6b93f3be03fd9d52dd1cbc1faabc975c
+6b948bcbcb52ba99cf4e29b0246fb939
+6b96b6107bae6a0d85b0831267e6d1c9
+6b97f71f83f042d450e0af2b38ee2c36
+6b9a30079fe532a371dccd956fdfa526
+6b9c3b0b55f757cdf3a70d35892b7794
+6b9db7a3526ef6f32c84b7d45a819038
+6b9e58a9c80a2261bb86d15178241c01
+6b9f32749b8c7645d1d86a9451dd0fda
+6ba13802e986c0accd9c58c439519819
+6ba5070812e9fc4a990fc04781ee6a74
+6ba5c657530a89d4730975ebfdf7f210
+6ba622f41fbced6e070ff151099c75d4
+6ba7d3b5ec357222d55811344f8457df
+6bab3b3458f8f4b8b722e8ff99c58dcf
+6bab66265075dc238d94860b4e2856be
+6bacafb91aaf70308040d26c551db87d
+6bb724a1b9902ab2880f949695d12960
+6bb78e2eb7376ad77719384cb4a57bfb
+6bb8168363c4de6a9ad3699360a2102a
+6bb9a51ff259c19e7d22aac1bf3972d5
+6bbae088fd0bb8857da7c463e73b096c
+6bbd08508b9e40c500a9ce97d0037cda
+6bbee55928265a95f9815df4032356d9
+6bc1619bcfed71d764d77bdb71f09678
+6bc1caf3c7f62a83ac6eb2afc50fd153
+6bc39c69b59a715fbff2bcf232de12a5
+6bc60328ec90003d3bc385198976ab51
+6bc72ab7986b472bf24ddac073d65307
+6bc8fd58be131bd5c864ec9db93515ad
+6bc9206f1876db2d3f9afb5f850b3448
+6bcc3bd5fb727bac90e6db4f66abe20e
+6bcc546507c3dcf0e5c4df35a667a2ff
+6bcc9b2c3d4d41230e6457f170e02e37
+6bccd6ee48c2adf5e47527396ff193c6
+6bd12a8d09fac9dc538bfa7b715c16fb
+6bd2624960cff3fe61287f81485bb0d5
+6bd3f3f7a5e135998ee55ae0a9455fc8
+6bd61850b1c648474cc92c9275151984
+6bd6436c7e1b5c3592e84c8183a046db
+6bd670156c855a827c827e537a10a1ef
+6bd6ad38a7f97a4a8d848c2b6e51b329
+6bd82b4ebbc5ff9367177d38b9d81972
+6bd97f6418b52063522f46c45ca22289
+6bded9e0a8a10bb4d9adcd3156e7de78
+6be04bbb4a2d74af862ce3388acfe46a
+6be08506e914784ca5f2d99fa757ae9d
+6be085818e722b281085c05a0fb46831
+6be18d73be5978fc27cad5fe261b21cc
+6be2663a0ab51cfcdfb79998b43de3e8
+6be47a74644fd0eb185dece01d31b0dc
+6be59a8289ee2c021a0adea43078178a
+6be66484ac02f1c404775a6c33131957
+6be709e93fb3d26c7184d0f7829f2825
+6be73251574b3e6318ba374858b13d79
+6be922472806f94d7c151af68bbb7606
+6be9af862d9b829c79111211c11c6a6a
+6beb09452e4f0cac3d93ff4ad1bf6199
+6bed57435a8dd22f6138ef7698916457
+6bedabb65155e967422118a4392e199b
+6beef979beccc263a5feb2451e2fe15d
+6befeb4c405d8c578d76410d326cc439
+6bf348fe9ae9dea0ba33447b5db6bf77
+6bf569aeb41c6d4dbf447630eee52365
+6bf5fb954245cb50a89aff4e92e05260
+6bf624f0cd302056bddc34e52d5d4b36
+6bf8931a00e1c87c92f62074a5f0201f
+6bf8c2f91d633230f26a107e0e7fe398
+6bf9e713fb27e24dbe124e0d8503458b
+6bfc027794c9f72f417e10e4713a5aa3
+6bfc32d585bd3605a596948db76828ab
+6c020d4c3f83f86c4e629497e872a914
+6c023b923352f6618c890660356aa24c
+6c037651131bfa50414ef24bd7a94e0c
+6c0443ad7f73c72b566850a13efb24bc
+6c08e20374065f853e901a2ad0466436
+6c0ab6cd4ecb7665db4aa2afb8dffc02
+6c0bcab2709dd004828e540e166804f2
+6c0bf18262dcce03019dbb45a83ccc28
+6c0c00d17f1c1ed64dc7a6154ebc0753
+6c0c9305d77d2e7b05d2baeed3a6fc60
+6c0d809fe6fb5b1dd6f747e687e44872
+6c1142b431d305efcc6ea8da1308d164
+6c130ba270cb3d4c182f2986b9cf3ab1
+6c138f5becff39c23040bc950a88d0dd
+6c171e43594a5d92e96adc40c9f01a1c
+6c1cd99ddb4b01a7c08077f9d5280af4
+6c1e0a5c6969c08abb78d4d078ad445c
+6c1f5f5a6fee22540507f0d73d64bbc4
+6c247ea7a91efe16861b2a1453e8c4f4
+6c28aa863807f67ccc3bc3c18563ff17
+6c295eaeea1b40d7a2e236bb8de4b49d
+6c29e4042f33e4b08044caa12bc46227
+6c2afa5ccc470798a4bd3605b2e9dede
+6c2ca7eec1e8ff465658007941dc7934
+6c2ce4b6f424e76d993fc6356dc84311
+6c2d732c306d53dd222dfb4d77342943
+6c2f19d0cf81ef6f3be35242c22d4150
+6c30b7fb38d14c60d9e8daac0c1a634e
+6c329cd42cbaf846302d357f7e9ee3a6
+6c35e56c2c66853aa779076425ad0621
+6c365a92f85e041a6f07ab560ccfb1db
+6c3742ae171f1cfff59bd5c3bf27ecc6
+6c395fdeff8f49dee2d9e35c1f9d1c97
+6c3aa048100b11a97a6c0dfb8933ff6f
+6c3b433733c1cd44a6eb065c3849f201
+6c3b571a7f747d81d5f9e632637b33d3
+6c3bbc425ed964d050ba119b9d7ad610
+6c3ec15c3e977d1ce0943ae9e3f62157
+6c422919e2a1d3557d66a7d1dfcb60ce
+6c44c7182b6b1b82ee6da0c2d544946b
+6c450b8fa8aec8552ca8f62bf1d43fe7
+6c46f2eff97c32dca0e3a77690485989
+6c46faaf620e1e5d283a6a24fa60b57e
+6c4940d0fcf8c35840dff803e4fd8476
+6c49414a65fcf7253037f24f03f4361c
+6c498da3d6c56fe43f4ea6a3618a7c40
+6c49ebe264f24667d03a4c66b458e63e
+6c4bd0d7c65373ef125fbfaf0b82b7b3
+6c5082687a6fe9484542769c63529e83
+6c50d5933cfb83cf35bcabc95e705b59
+6c512bf20ca7641fc6a7a57d237423da
+6c562d0dc6d4248bfc846f87bd091431
+6c57e383e232f4a1f1719ece7f6529f8
+6c5a8a47b8b2e8e73958c2b4c08315d3
+6c5b354dc3c389ac586de8fcb94a2392
+6c648a98859c609df0f23f084088c7f4
+6c668ce747cec4db799b99d321686251
+6c69111286d42034a2f18eaa275e7418
+6c6925aa698534b879fcab37350d916e
+6c6c27c7e06bc1bbc9b7bd4847d43423
+6c6cc96da6c0882a6b2655c7bd9aaddf
+6c6db2f9a8f198fb67a714108f7fcba5
+6c6e8350a82409a701222c813066ffbd
+6c71a397c0e3359ba2635df35bf14550
+6c72b919ddac76d122d82f4adc61ab99
+6c74635e39e85c31d020a8ff2c501321
+6c75c93fed4e47b0aa860a9c74690e8a
+6c778c08bb6e9a8191ad49fc15356ef7
+6c77a5189f0ee78ab65ee5ffcf2b2c29
+6c780b642ef67aadfa48e7e96dcf6f8b
+6c7911d55985f04fb69b2076686797d6
+6c7abbe3bc3df8e1abe314c00c794604
+6c7b17954c905905c6d0affbd67d816e
+6c7b2831f30a6f3b9f3fc1f7b11f12e7
+6c802883140ba8fad2bf94699fd0eae2
+6c82f6e093f57688f222cb61662c6c98
+6c8495ae7f800718db598f0d0d64a012
+6c84c5fe4da210d633db9542b076f763
+6c84e10e5666a5e8c214d057146de9a4
+6c884941aaa15044397732b8e15592d7
+6c88a8fc3d4ef620d1075eabcfea627f
+6c893a1f334d535b4bd7f79111f75bb9
+6c8aaaf6cb42365699c7750d7bb851fd
+6c8cab826b218e1ce10f1a3f3e01370e
+6c8ded9771bedab36912de8c16854e7a
+6c8e6585d9f6a2c807ff6a3c49f72a3f
+6c8ecbe10fca14d290c9086ce8942682
+6c8f752ac32515b8975b15c00e68b6ce
+6c92049ab0cc5d4c0772d118ef7ae2e5
+6c950ef65e80c083628d4d0b19cc17bf
+6c96ab98b191027801796cc9489e0ae6
+6c98887fe66a9b66ef09a57949dfcc0e
+6c98a86a0dc546c247bda66e4ba1e70a
+6c98b2bec3996bf1e515fc66680dd7ac
+6c9946aa3f2b24650f11dd3f82892f4e
+6c9b2e730a56158b1b3ae50e1c66ba48
+6c9c1e11be9edabbd12a49cafb8ff4ee
+6c9d4162d44c624b90a1238ce75b2abc
+6c9da575091f4eaec4f7323b96c5062b
+6c9e4e04c844505f9e5820833f4f4e24
+6c9ee5307e0930c9c6fb720bf55b45cb
+6c9f25b9522d4e7ab697d8df51153b70
+6ca00fd41ad9615351a47b9161a19dbe
+6ca464a6216630d5a6407e0e49ade257
+6ca86c0f8c0f9365745612a494fdb21e
+6ca93f483bf4315df9018ec3c32de5ff
+6ca95f703a605b08e32d895d55b67c75
+6cac4eb8f7869475eeaa8dfefea77ed7
+6cad845a2f48d7f93c745476b63e54df
+6cae6e61a426a853a31a3b42ce6eb00c
+6caf67bd7d3f16a433f9dc580632e03b
+6cafe3983e3e1037069eba41268abc11
+6cb43623556dd5a88d8f0950cdd4b0af
+6cb4823de982ec30db59afebe897b097
+6cb597f9ca168c1f5e4291b5b01410a4
+6cb722bf226d03025cd89ece0be10721
+6cb747f4d2307aa2377f28cff4b3c68f
+6cb7d44fe9855f0aecd06e1c0f5f1f3a
+6cb9ae8a1664f705ed9d9258c96947b0
+6cba0875d9f1143f67ba724ddc0f9f50
+6cbc209a23896b517138943fd042c4a7
+6cbd972f0ab1058ca89eaa8c1c1aa76f
+6cbf350ccd968fb8ef055677d0cc1728
+6cc02dd4f4eb9d49cf50eba4ab9dc89e
+6cc05ffc2b875424cda9ee3c48b83d71
+6cc06e4c17c5ddd430a608ae7452c373
+6cc4b0ecc0c7158905bfb77fdb83604b
+6cc4dc4233ff9305a95d50666084873e
+6cc5afb7c5967218768c1bc63935825e
+6cc764c2791fdce4622374fa2f94645c
+6cc83694280591837e342ebf5bf45377
+6cc883a1b8e0f264f274b282530859f0
+6cca843e133cd053b79229bd595d23fa
+6ccb1365ee650c737216db55bc392ff3
+6ccc8278dbdb9452430ffd780766d206
+6cce42a6fb7e76be4ea941cc048236ac
+6ccf5d7062c0cbfdefd03ce1ff0e2172
+6ccfd1355f9c4c9d61fe3cf1bd86dad6
+6ccffc10eef5b84f68d819edc316341b
+6cd08d2c8051f8d7af02bb03adac5351
+6cd3dc56f2444fdee53eec13f26e301f
+6cd4de7d6a98d3e2e886638a67485462
+6cd6247344c220522cd0009bd8967f81
+6cd80634d97a8cb858e7d1f50de36e0f
+6cd9af9edf8b35680aae92272a0834b4
+6cdc299fbc1aaccad3edb54644177ef6
+6cdc8008052c90eb0e6505c2d15377e9
+6cdcf5d04a6449b43aa3adaabebc4c11
+6cdd89b1c944245d773ac91b91699068
+6cde49ab3d7fba7526b9c00c3bb172de
+6cdeb7b1c2a168a0972f102f721abf83
+6ce0e2381ea2c02de04f274a2cc9c76e
+6ce1fb664ae7d0c9c9806929fbdf2cc9
+6ce6aab593e2b0b7b8cc24f0eed75b1b
+6ce7f03a69cf7c1fd26ff8734552464b
+6ce9d8283c63d218425b437ad628852e
+6ceabdc8549c6a7da4f8d7c126188a90
+6ced6f613dd7f9185494644543148777
+6cedb92375e64089d2a275bedcd7cd8f
+6ceeabd4b5bb2b66489eca335f1e0899
+6ceef4fbd458d99a31082f6491d1698d
+6cefc34af5bccae2284ad5ece7fbae24
+6cf4f9383d193e09d37bf58e9c887ec5
+6cfb3448fecfe170b0e07c218fa3b268
+6cfc2b27b1b6956e8205308753173ffa
+6cfe982d9fbe14c0ea70404e73e99374
+6cfffa42ff44203a497f44ccee883e6e
+6d023d99c894a19843146de756165c92
+6d0491852b1348c99c8aeed7f737e88a
+6d04f977933eb9915aaa9b1d4454ccae
+6d05d217c9a20ee15b2cf60fb748a101
+6d071076afe0caf12ca6d0f063a2e84e
+6d08900e74035da9786d389031fc7aaf
+6d0a13400f91bceffcb4ee0ce5d5b358
+6d13172c301c39feaf83d1d9c54355c0
+6d152f9185aaa7267188145d02ea46d9
+6d1655c85b94ac1b1ada1bd03471c7d2
+6d167077ea49de07212e30651b6ea3d6
+6d168fe0b4b172203271b3e2cb82ea6c
+6d16d71a4f87c1e2c15cf78afc9f59e7
+6d18a1dc6de92a2d25e7776ab0c9d5d4
+6d1b4fddf9cbd47ffd0b5c429c7926bf
+6d1bd4ef7293d195ec61735acb2e1df3
+6d1c8c7df4e04ee1f5726775b81bd34d
+6d1dbb6712d7ef76a659d56d43d3711f
+6d1e016f565af8f69bb8a09bd563d84e
+6d1ef843ae5e1936db51836a8e097e70
+6d1fadc1f763ff4434cce9ddc1397ed2
+6d216f45400d0be062535f04d527b9aa
+6d22d052e545afa8b6aac07d626ea4f8
+6d261755821e376a860d8f7df02ef1b7
+6d27671c6ccc16e94e5036de78c69e65
+6d2a9f073bd6bfa927885ee80466be80
+6d2bf77acd93f016c645d083681306ea
+6d2c5045fd20f1689cc912dda8680046
+6d2ca63a190e50ff6df7baf32711cba5
+6d2d6f4309c21b5a5ca1be8971b0ba98
+6d2e403c78034ba6444718626b063ed0
+6d30053f0405d44071b1010d8d3d2c96
+6d305d365a5739aa5885595754a0f726
+6d306c1fff21ae67a83c2afc7540e018
+6d307b61c62020dd5a9f57679fa074f8
+6d315b858c9b1b383103d18e656f4775
+6d31aff63c8ee335305cd59b31cbfcc1
+6d33883624f8b18732362b330208da35
+6d35814974dbd37c8ac2df2079d34fec
+6d368a4e7bb6a96fa1704be2f0f7e74d
+6d3798104a9cd423ca390349a03c40b7
+6d37f4a2fa064b8fd0828856a06c8797
+6d3a0f41d0c3c289aaa894be4581f216
+6d3a9492194a33edf3da8827711f93d2
+6d3eb1d55fa3def926c79afc34e221e7
+6d3f9369dbcbbe6f833f09ec9df95831
+6d3fcba3bbfc06bb0caca79bdcd63c73
+6d40277d28a1fedcc41b075d9a8f2572
+6d40a3ba95e286f70654dcb7a07e2d0e
+6d4108e86d4fbe1fec05bd85040a97c4
+6d42bf7de53e2a5323384b98babc7e62
+6d4318f3eeead0ffd7f470545331e453
+6d434f160bd06a5adff0fb974bb91534
+6d43ef55e03a15295b2ba178674f91fb
+6d440cf78846bbbd678f8654f383b137
+6d463c7157a2eb1145f92cb2cd2969b0
+6d47bd32e6c42a59de10f887f4e154d7
+6d480d39cc24fd4931a58589dbf6147c
+6d4d9f25c26bf96f23efe4789b59ac9c
+6d4dc53eaa9f1b3264db171c6520e08a
+6d4fb46c50d81d28fe6ad005d3ed7af9
+6d5260490e71936ff3adb479bed5b425
+6d547520df5d06eac235eac03a960b59
+6d5783b961f3fbcd0ec9af0de674b5fe
+6d57e5294b295ad4ac8fad0b88e1907f
+6d59fa5e6ab8c27110548eb20119e926
+6d5e78acc718252d273e4c5b717bde82
+6d5eec73b6541206f43a71196674c79c
+6d612f119504b16d83896a1911b5a538
+6d6188d1594ee5336caa0a84b9b0f3b3
+6d629ef4936a7f7239b7cf89f9415e72
+6d6613ce9108869127ef59a32f74ab80
+6d661a4cee4ff82a6cf95606b74288c8
+6d6654a1152d1bf09445a5abf17bf026
+6d669dd8d31ee153ba3e03ac5f0b4115
+6d67161d0d496252fa89d66749b04c1b
+6d6ab4cdd7e2858320840cd3234fbe43
+6d6b4099c9de2a4e02cad5d4fd2c795f
+6d6c2beb8d4a417caa44ea9bce10f9d2
+6d6e7a8324508f2864afc0078c77a5f5
+6d7103ce2ea8e725797084c196afa58c
+6d738938b3d69bb46af66d6971072004
+6d7527fbdef9faa458b8d3e5cd66f297
+6d75e6ab71621090a2841f9a79db520c
+6d767c03520ff13b11b5d18eef837bd0
+6d77b2510809d7d513b86a49c17e4d10
+6d7858d395da46cd32c425f4737a4615
+6d79c2c16c5562f8164be3aa4563bc71
+6d844b0d86631a2d8e5bc898e9d36b57
+6d86a8492f95c3b491d4aba349601a64
+6d87237d40fb24e33bb059fa0e4ca984
+6d88538804199a0eaf35c0ef9808b9d9
+6d885a37c66a40487c1d0d9163a54e27
+6d8b1cf6206710541fe1b3bdeb5724e7
+6d8b30be996ee5c8a36ed96997324fc8
+6d8ed7e54963f4c8d0c73e648076ed69
+6d908df76e65a14c19a2eb03e2877578
+6d919199271a1b3283f4d19c0b1239d4
+6d92d48f4c3a62dfdf3b7f770d08da0a
+6d9331bc36b5c2d61b94fe8ba64be367
+6d93c745a45ef2d05a8dadfa6b0d0a61
+6d94e0f956268d681362abf96cac28c8
+6d955034e0a39e50e549b1ed16f87152
+6d96c07e8393b4b4448c47584dc00429
+6d9763c8cec927ab216ddf8b82081bdb
+6d977162409b60814c07f59a78eab717
+6d97c408c49b83ecb1619d4146cb8d56
+6d99ed69df464b2f87c828d9d458fc87
+6d9a34926c2c65caba9c4a4c88932f55
+6d9a496417581ced03617d2bc2b22197
+6d9a94c6b3713d702c6b8457f739262f
+6d9bce27a89e366cb504eaf2215514a9
+6d9d525faac15726efe7f0312fdd464e
+6d9dfa048649ff8bbc6e1d6c7f0d81cc
+6d9edf21820ceebdefe2ac5c1afb5233
+6d9f1cc7c9822f773eb6968346bcb24c
+6d9fc7343ad2c81c90fb8e27c196f503
+6da2c728b45c2e8650f8754cdc3499ab
+6da3866489cc43f6048408ad5fc45fae
+6da412357d5b6360e3104fcfda03a2c8
+6da4e6ee9b21cb6527b80e5d46f26f73
+6da5d3e13280ea2e4cac89d4fe66bf52
+6da8e3b8f74cb4180fb87811f8903c86
+6da937142d9ea9ee1bd33fd3c80dafcf
+6da9de1c0964dd6ed315b91d922f1508
+6dab3f07d5470bb60f6403d3e8660c4f
+6dabcbe3f2d04672d7b37c2815a8cc14
+6dabd3fd382180264e649e0e77d7fbf8
+6dac1f5b5d65b886bcd400f91f8caad2
+6dacfeb86aac669a8a488c21f348a839
+6daddbabb49772432c908cbc897f1078
+6daeddc9b55ed9472a156e257dd0c0fe
+6dafbcb49b82e65fa1aa8d195a38d31e
+6dafdf152cc01fa6a71ed9d21771ae86
+6db013bf32cde546831ebc87651d858f
+6db13cb0d2d2b07ecc1519519b4b56c9
+6db34839b877f069eea2b2010793d9fc
+6db727e33090141ab7db61fbc363a8dd
+6db8aa1b09d5a223781f41d79ca5f2f9
+6db8fe2a31703c954afeb5c84d0e958a
+6db9348f7067096c9d778e6eb39325a6
+6dba58c11d69ba5efcab72ea0d853178
+6dbcb3185eed907b36e1a89b090e49e3
+6dbda9432f7504b50fb2088ee034d968
+6dbde825f9e5b9a239152bd3d2e668ab
+6dc0c37d0a3a82e7f3f78854892289a8
+6dc37f14b78fcd2a0c6a51797482317f
+6dc468b01d9151b4914037e5b2a4ef77
+6dc685a56120d99446e2b208d9b30f87
+6dc70e0b7a629636bdb288332ef62117
+6dc9bf1d67177d63dce23212f7172f5f
+6dcac0be368c24863085d35149f8144a
+6dcb042af1f3becafaae52f4c7eab416
+6dcc7c538b4f6bed902082e02f83d282
+6dcff581d897f573f66ef72a25d80efc
+6dd0938ba312050b071f08f669532ff4
+6dd0e6f00174e5c0cb64964d5e14da4c
+6dd5dab9b7b65b5e27dd098e1c76ba4a
+6dd5fb0fd6f0990ae83ef1386cb94716
+6dd6e7c14768e26386e59ea328963511
+6dd70436550e94e9c287c42f87e34507
+6dd7e704d0a5f0508c959a703ba34999
+6dd90e27a7cb68f70306cefd602fae42
+6dd99a536802f7b4171872632b5f384d
+6dda7dce8f347158f375e75710a04c24
+6ddd6b2f6e020478932bb92eb193b920
+6dddd7221d781f752cc696168bcacac4
+6dde6109edb758e38b94fd87e786dd5e
+6ddf319ca399862c002c3b8a3d678799
+6de0287a5aadf8dcfd6180601816d92b
+6de2235cc21ad5bfff811d7cc33bdfdb
+6de346506292f7399f4241b8f67a1b0a
+6de355e7f5fd65368af2bbdf5da83642
+6de96558c560e7a7b498ccba015113b6
+6deb5c904df3c8182c801a8b43470eb9
+6dec1c302ac1406490391c0e2fda2db9
+6df03ddeb8f4d12922347f96a7feb9ad
+6df07538175cd5b146ab4b9781bcccbd
+6df2bbaabd77f6e8218dfc963eb0c438
+6df49ea6740c5b40d70b62e5f358c8e7
+6df6ab5d1082483040cad79cbce540d1
+6dfa337a70fa817ace4f1b4de1bd0d51
+6dfb78366fb41381d05cba9fa8b814aa
+6dfcb92ae1156d6657be96de455fe1d0
+6dfd812ebc3218f2fb473c189864577f
+6dfdc8ad9422c3aea1ee5d2d5ccbaa91
+6dfdccd35f6bb38326822250bb9fb977
+6dfee46601670a9e60be8eb78df6c98e
+6e017069363d2fb85a8f1d5459e7f612
+6e04bc04f598cc7147513148e4e5f5a2
+6e061d30dc6d9c3e70847d5b4bb19aba
+6e094c3ce4294d18fe8bd2f275c9622b
+6e0acbfe8c30838e138b3563ebe9f36d
+6e0ba886dd5c9696eec472a220ad8d57
+6e0bf0c398dfcc1df4c6e1cbeb050fba
+6e1020bf86ae67eed890c2e55eb69e16
+6e110e1e14e6d150187b9c82386e55a8
+6e112018c1d629b8b29ba40bbbbc12f1
+6e13ea663958fd6a20e712d8a1c815dc
+6e13eb8cd0a3b2e2171abaf5e849501e
+6e152a80dba19ab8e8eac0ffcd422054
+6e15ddaa0764200dc5a609fe115c5c2e
+6e188b06f5dea26cefb8b3536bd70541
+6e1935be1a50248a64d285bc7f7b96f5
+6e1b25ddea833218014b215edf5af5f3
+6e1b52af8dbe31619562237f2b0e96f5
+6e1d1732a53d08176c872b323eba380f
+6e1e00df7b20e160ba66c5b4f8106780
+6e1f7953208ae370dfad1818458f0482
+6e1fc31b8c1d428da3fdea1ecaa81134
+6e21e7ee5603b9663cf1e8c2bd097e4c
+6e24862ed889e1fbcbe2f8a72ef47dda
+6e25d611a4ae8fa2566e8e6eddf1bd71
+6e285abdb67e88294fe39c2c07a1209a
+6e291790efa4f76dd89d53abe2d3c767
+6e295679db96cbde573915b76177026a
+6e29fd1c59447f29711b5696a68d639c
+6e2b7d40b068c4a53063cba4363915b5
+6e2dfefcadf5183f280107ee3e180651
+6e2e3c5b826ec01fb05153aa18f5b97c
+6e2f6da2c31d34ad4bafbe1b2d42c31b
+6e329b125f072f1581b5ee6db66e371f
+6e32b9e2a12cbe8f21990d269ea8c079
+6e32bfa906ead2c666d9574e603452af
+6e35047bbfee0d2506a966a827b9976b
+6e365c759885c695b76f7bbd82cd566b
+6e366bedc6ce00ca2dd9fad0ccba831c
+6e3aa28154a9972439369361c693c698
+6e3ae457f70ba8f570e7cf8ab291357f
+6e3b42ee89acac74b4c1ac9907b1e745
+6e3b826641d16549056267586e95657f
+6e3b8f73145e6a36a50f28addbf5cd41
+6e3c8c3a8650fef386956190cab4648c
+6e3c9b26316e686c9e11db5d433afa8c
+6e3d117e499dc02b0df3760d1c7fd191
+6e3f1e1d9376ad011eef2477e9e0a3ca
+6e43a0f950cf67d1f17b339cd13234e1
+6e43a362e6c04dd0ade1b83d7093b274
+6e444d73ec1489bf3fac4a0d9fb41680
+6e456700818bc91fef02af71f4257240
+6e459e7e011eb33d5b828d47241d9bce
+6e4bbb06ae8018869b72815e7ebf78fa
+6e4d122b8e3adc5f3998f6ceba427499
+6e4e29e23d1e07dd3095f03ff5f624ee
+6e4ecb20b3e8429af2e45e0ed044369e
+6e4ff8a672dcb6e7a85c93880c802f83
+6e52b4d5690d8425a050c4b99fb835af
+6e533b14680595ebce5a3d1f4605f78d
+6e5341d73b11566c7dac342f40b0f529
+6e54cf7b22f7f730caadf8a53a236db1
+6e54fbfe80d5f11eab4c5def48112042
+6e55d5826ca850f2a97570674dc12d97
+6e59d3eef06c237da0006c85479e7438
+6e5bbd88c608789b7802dbd3073ef03e
+6e5eb13d4564bf66e3325356f307e7de
+6e613bab444df20d1f48af8772dba9ed
+6e643c9dcdca2cf14a7b222858fd27d5
+6e65f4022c5cee3d5e420348979e77f7
+6e67538f4108989e0f53b6b08371a40e
+6e69f97a1a4127232fc4c9fde20eb0ee
+6e6a6e06fa76e176e90a3aa56ea1881e
+6e6aa60e8912ec05d69013e9ee4f4ea5
+6e6be63c81dcba30048a6c8de84e0083
+6e6d09edceaf911b1352fd28b8781d86
+6e6e60018417ff14809bf5a6a78a50fa
+6e6eedb54c4330103ca60845c3014fc0
+6e70021296f93102bacb65a4c96618b2
+6e704875be58935346433188c3170da3
+6e7292cefda5953128390c28d9c208cc
+6e73a963a7e609fe0fde50aac48687ce
+6e749a4466dbe912ec56b4b854fb553e
+6e75ab9eba0f57dfd6342df4b94d3776
+6e75b52b74a192f7a188d6bf07e882f9
+6e7802e78f7863938f69e0b693c588c4
+6e7b5f9b91f6ea196d9db88ba8cb8b56
+6e7d7e8f77d47165738062794caafd2f
+6e7e573c74884bd5550e1bde013a1d25
+6e7f3a53ab722699f7c7d39ccae8bb5a
+6e80b985b3f6cda4c0aa0ea210b803b5
+6e815af85a34d31bf91f746d69b19e82
+6e845a3118cd850856f20855ad3bec35
+6e8494853e1905e124b18a6f9b0bf9fe
+6e8b0ee649728dcc18898cffe9e8a87c
+6e8e290c2b39b1b38cf0f185c6b42e84
+6e8fb75971b917201f496201b66970fb
+6e9031ccff77c9d72ce98e7c7e53a949
+6e90561884e603577f5f4211ae10d06d
+6e90e334d900d53f29fef6b92bcb259a
+6e93968a0965a30ec02ba4a5a62d92be
+6e985861f98ce55c9a5d0aac6ca527fc
+6e9a0724f59f27a4a8221ce64245ee09
+6e9add5c20e92429f89c9b57e42d166b
+6e9b1ea26e04bf437a42a446741ad890
+6e9c64affef1926e18774299e6aa7749
+6e9da68ce4f84d91201963d86993627b
+6e9e40a83cc28fc245d52ea18cff40f1
+6ea151f9a8df0d85be5cd7bfe4e25c06
+6ea2906fb18c3535e4b77b486027e857
+6ea389636c611f76804f5afb19b214ae
+6ea43e5f895c5e100bb95b06fa394ec7
+6ea440957a656b9fc55a5aff56cd990c
+6ea6e7aa2664bdf96afe452eecd6b962
+6ea8438a823fde80de9373315ca22162
+6ea93225e65bf36b67247f0ce39bd46b
+6eaacaa46c4202b732e44052e7e3f9e4
+6eafcd7214bf791967695f62192b5627
+6eb2396245a59236d5df54e18dfb5c14
+6eb313acba02406cf35b950f0fad9669
+6eb3d69f2eb761e03867e80048e55dc0
+6eb45226caf1b5a299f02afbe069e5a6
+6eb4e91ce11072c3aaa03018696eee68
+6eb5c9b9380be6e373a773a596cb989d
+6eb72ede7131e220b6973c01810f2d53
+6eb85d1a8f23b7d41b3001433512c404
+6ebd09ebb2cd0b9f7af8bae546695b77
+6ebef3aede68bd9a94fd474e9aa040b7
+6ebf0e9237a5e75f935e0e2a752d4066
+6ebf7cdf54839242d71a0b84488f89a4
+6ec173af5aeec1eb93efc7b93a6cbe1c
+6ec26fc4b3181c6b75b62d0cd6218d21
+6ec3b4b7d9a311f86b30a765030c2a1b
+6ec5512689d76ad807bad4cdd38fa81e
+6ec625a47c1dbd17532b802bfbc5995b
+6ec74a3c1012c0d29e942a595cd77b03
+6ec75cecdec1867337d47cf95a51166d
+6ecb295be282ed25e5c079dcb75c32da
+6ecdcb58cebb16654c0f3136efaeb8fa
+6ecfe8cbdabef5ba74baf069f52b1ad8
+6ed18b4a3b4aa81c0d3cce77880e7eaf
+6ed2144b18ca06672c8e1e080c09fb7a
+6ed46278029637a966a40c4a5f8575c1
+6ed5bee6f1fa1ebdeae1b977ddd2a6ba
+6ed743bb8135e90cc3b7157a4bdb17f8
+6ed904a7c60d842f061bb76be0a4c456
+6ed96d4bf928fad2b6811ad330879d2a
+6ed9c7691123020a0fb4b2bdc1d71d17
+6edac8bea4689142c93541469bdd6c38
+6edb2c310e7f6d6bf6b6f57e77b9ad9f
+6ee016c27dbecda811ab19724045195c
+6ee257b4b8f911740007be2f5277ef26
+6ee2a8aef40cba875633eafa4f1266ba
+6ee3839874b827e7084bd7067b44b010
+6ee40b2ca4e0041d11afbc1c0c32282d
+6ee4a769a631fec2c8c87f5d678d6345
+6ee7347d07e6c200fd6f5bd5a683f198
+6ee75b548682b182bbc2ab228b1c014c
+6eeb2bc4f467b1a3c77170a151daac82
+6eeb776484e7ed3bb9760f858d628076
+6eeb824e54b8a88c9b2cb480980a533a
+6eebcc3b95600dac2517b34294082c45
+6eec03906aae0ae3ea0b05a981255ee0
+6eedf6293039c8ae5b99f8b439ec5505
+6eee166520141c7450e37ce57ab195c8
+6eee52c3a9bcc4d54289ed2748217e51
+6eef7eea5fda71323bf52c4412cd9057
+6ef28b14b58c838e265a5cbbe9c7b9f0
+6ef3988a0592a6a143c072648224b1f6
+6ef3bde666d6be0be7638ebb7cbff32b
+6ef439fc36091df6eae1a7360071f961
+6ef4d131f12081ac5801eb24996d1afd
+6ef4f6c00588421adcc1cc19c729cda0
+6ef801a0124b2bc6efadfd0648ae6a62
+6efc7ca1492f680b83171d6409b55dce
+6efce5d9d7372b251a7ea09641fd5534
+6eff177a0e61cd3402e463c3dae511e9
+6effd9c2f0ea0f2abeb3dbc3121d7793
+6f03243f05dc9d354acae9d09bdaa81b
+6f0401f3869bb53614a463d9202469e9
+6f053e2d0e59bfffbf6c56fba3a72e90
+6f057232ac35ee80be7e6d0132cf6ec8
+6f065f30eb83550bf82220159df49182
+6f06a25f3fa8a1317c55e99f261bc066
+6f06ef9b48be8f296ece2c52f888db7a
+6f071efe4f46a82c2906ce072c353b44
+6f092c305b789be568f99247ce7f3abb
+6f0a8c4e9636d20ef6159e7b709f5348
+6f0e899137ba559c704b63ca531eb135
+6f0ea00dd9b0c894d4f9780f6ad31c8e
+6f0f6d2cf70b877c22496e40c28c64b4
+6f0f8025b3e89d33c379b020edf3bda7
+6f1459c915c4ed6f37f3dc3038290827
+6f155c390d2cf5002cafb02ac3ac59d0
+6f204c6e6f5d3c7c9e17d912780f872e
+6f21c085649b355098e2991b77dc67e4
+6f2713f58ebdd405751cd898f180960b
+6f278f2b46c7df5ee485b8da61057c17
+6f27ea81c59356bd72b88f7094d0bc8f
+6f2aedca6f089c1193f4753b685e614d
+6f2b6f571e3cca02f2a507f7f567661a
+6f2b9f7f218485a441a0c3601533e68f
+6f2e25d6e5ab5b38d8a021d53d8915ef
+6f2ec13badb0572c3c8168d4fb83f482
+6f2ec87be1ad2e852203a487bdb826f5
+6f305ce0a668a3907bb770932b8a54da
+6f338e44c9d4a0b3152d920b1de4b41a
+6f3500c2d95493d3e216e125b9df419c
+6f3a25894d6242c523b9d1d0e5b0cfed
+6f3aa6407a637a4bc53a476f0683e695
+6f3d7721216ae3f69a6c7d691bf18059
+6f3dc9be86e6142178f63ce061ba6e77
+6f4274c6351f8b49fcde3fa1e9bb75b3
+6f4399b6db0255f742584b4558cd0376
+6f4425a3d6ef85a7115b6ad306b54974
+6f44397602357803081113dc23e2aa9f
+6f444c09eb6881fb2a3c5cda84bba786
+6f4651b15377f0ee5fef353294885192
+6f491f63a5d1bd97bc76c23067926e54
+6f495ff47bde1610149bbe632767874e
+6f4cb867fd2cc360cb99952d4fb9ae62
+6f4d856bb7284ccb1734a14b12c0d25b
+6f4ee309a8a9282bd90d450bce333830
+6f5122a5a62bc65a118e41ce61c180f9
+6f528d8ec9065db3cd64bf4a31964613
+6f5412186c7aea3c2aebe1dbbc93563f
+6f549e2b887258be54ede623524bdd0c
+6f5563e6812df346685fdc1a89531e94
+6f55d416fe0509c8d4dbdfc17c26d481
+6f57af6ca26a865c8e3a7d8e1f60afe7
+6f57d5eac5473a1d1d2dcbdd183902a2
+6f58026814b4188bdca665796a8ca7f5
+6f58892cb0661216a49259c8d242d14a
+6f58d564fcc2cb1b47cdc884f1213a51
+6f5b007ec941da5130bf0070edac185b
+6f5d54cc2e32e5ae277358e31c8007d1
+6f5d9ba7b17e031b360f070c019c65ed
+6f603b51e015a20bf00a1e1f08d2bae3
+6f63211e3a26b73d2359d27f46ff58ca
+6f64487741169b1f3d699fba7ec4829f
+6f68037b327fc11582d808e70b6013ef
+6f6903113df37ba6a3987a4c2d9fc716
+6f6cb491bccc7343dc60ff8513669d31
+6f6f54b7656456f736f2ecfdc51dafc0
+6f6fb3d36bf952ba7d81e82539e56dcf
+6f704c226aa22dda47e1522081a4b9fd
+6f710d565d706adc654ab0ea1b91327b
+6f719e7017ace6640663ecd7058cb1cb
+6f739d620dca00e1465a30978a5e80ab
+6f756ebd34fe55cd37b13e9b6284c8a3
+6f78cb5dcd627f774c2e12416722bcfb
+6f79e1ecd1b25404eb07ef6cd7bd335d
+6f7b29016c49bbf9378ba06d9fa2882b
+6f7cdbe049500a29ca5200eed73183e0
+6f7dc6472c189cdb87713035856355f3
+6f7ede37ace73c066a324dfe620c127e
+6f80e49e6d46d8ed13cd57e62c779c94
+6f81d178c3a2d2f87c3fb422927eaae3
+6f842c1c2ef7ceed2e6e16153953668f
+6f852399705133e1a630e8b18b8ff043
+6f85dce3996619dc4ddfa2e2759d24f1
+6f85f3a21a714084e72086781c6ac9af
+6f85fda1c236a1395841434f7c15f36b
+6f862304c668e4f1d132e3e25d50c668
+6f870212a109d84d3f147ede87d605c8
+6f891c60c7de838e12dda668c804ac38
+6f8bff5460287e5d607a4a2251570b22
+6f8c8db89f662b7fd4e017c7e0521840
+6f8cce7239362d713fdf8dd058a712cb
+6f8d2eafce61d71b48b3c089ff427f68
+6f8ecf141e30f61fbb38e02283693b94
+6f8ff9722270246aed28bdf9655a4500
+6f93ca207890e1b8058ae8f11972fb4e
+6f94982ea0a242db1dd411054fd82f93
+6f94b258c2fb21ca0264ddb22950b851
+6f965970d7d6a086f75e3af34b22e9ba
+6f966f906e8a6468e3b92ecd9293899c
+6f9895baeae5caf79780dd4df7ce2ffa
+6f98b1d17c7288237ce36463d7eb1ec0
+6f99e60f921c65d210c5a2e1624f115b
+6f9aa9adbf6e57de1cc15509f02aea10
+6f9ca348533c0d41018464bd931012e2
+6f9d0a26895959564b0dd1af367d99b8
+6f9dcbcbf17073b32ae49b72be6d17c1
+6fa0324c1381d9fdbfdfd3b205bfda56
+6fa063dd4c98be4cd062402fa4db0153
+6fa088b9a43c3dc6a92f2d9420804fa9
+6fa230407961f58ef1ebd2db0b12d8a4
+6fa29360930fc5141e8a3108114194b9
+6fa35a1bce36ac9a7e8c366d74845d3e
+6fa3cd190565e80bc3068501094b8ef7
+6fa3d1faec0e5b5af7b54ba3a7e16e4d
+6fa4d57411ccc8bf7772dc3bfd2d7156
+6fa59bf9b2efb9348021f7d3ca8079a3
+6fa675016aa3307e888eca5198f09a62
+6fa79b6691760cc22a5e32ae8be86738
+6fa7dabb713165e99ff9eb7ec00140db
+6fa874c2100da27f4a14c51dd78b2462
+6fa8ba9c0ff1d474bf71ef56431c775a
+6faa804f00735c8049c87446bf5bc2b8
+6fac69fc85008f3827f8b5cb2d1e4993
+6faf4609567a17c17aeb7e7c2dc16841
+6faf78de9648b90cf863abaf66a95a0d
+6fafac15fbbe2f48b8d46fb93b34335b
+6fb191395de1402099731a1918f68882
+6fb22a4c0a694c56453796cdfb1ddaf6
+6fb2793ed67faba6355277bc9158894f
+6fb2b671e5a49af962cf17a63ff776c4
+6fb3d250e36030bc0fbfb21e9f6ea7fe
+6fb4c17a8aa687b22518fac921d4739a
+6fb5389416cd4f45e2c921ae0c6e6495
+6fb860a65a8d47ce0d0e3f9f8c0a2b84
+6fbe416caf0c60c1c1d6487eecf625a8
+6fbe8f8b377b94f793fdc87a4a95597a
+6fbf8168c65db758d7a46e8565b4d281
+6fc112abc598e2bee9006bb408c132ae
+6fc4a306aa36091a42ea690a1a48d970
+6fc53705156434d55276f88aa60f4387
+6fc59556711d44501a82d4b14a07a863
+6fc80f4eef6574e0234dabf6e24a3df8
+6fc92a6bea027576445ef81938e8dec4
+6fcac9dcbe138744d448377f1870ccbd
+6fcb46d78059390d0ebf2ac8d5f8020c
+6fcbc2839dc4e23f8b17241a39e328e5
+6fcd2bd560073db774501bd7dfb7199e
+6fcd85ec45014d11c1d3c7606540ec2a
+6fd07e5092a512b32aa7fdbbdb04584b
+6fd0bd65726a4ce6eddbb6bcd6ee72e9
+6fd240539a8d514f80d66ba79aff4c5c
+6fd416e49a14b0eafe77af148c40fa46
+6fd531a9aec34d10a03c75632f894e60
+6fd7a7c1f28bd7aafc843a4fb8a3aba5
+6fd9a3cdc4255aa6bb21143a15f4e08e
+6fdb499b0b66e6547623d29fdd487796
+6fdb74b4c058c2e22c1ed00f4bc63719
+6fdccd54aed49e2c2a94cd50dfd655a5
+6fdce4cf44b3428b1b779acfb7c52fa2
+6fdd24c62e8500a82d634311ab9486a8
+6fe0b3288ece16ccce2f558d386f0c67
+6fe2858db6ea265b2203aec30dd3c13f
+6fe390fab69761c7a247dc70996748e0
+6fe47fbc4119fd551fe482d02b1a0b21
+6fe4edaaffcdaed765f117fd9a95c4f2
+6fe58c60b003abadc2a1bd5423dddda8
+6fe864ff6dfdf6bd7b46fc1d57aedfed
+6fe8ceac65ad8b0d8d596e6b4218d02a
+6fea6fd95364b1a7539bf539c8cc1bb8
+6fef1308f45dfc03bba4f493fea1f6e2
+6fefeeebb6b1fe262a79184b00393138
+6ff1d742f04be49b9baadeec76cdc505
+6ff2302e8114c3d49df9ba31fd881c2a
+6ff35f28e3f5e615e3d0eb1788d6a5a6
+6ff465194b7325025cc57ba339367f0e
+6ff49234485cf9d53b190a9c75cc5d3a
+6ff5901d82d0e8a412e8a9498fa3a524
+6ff65014ec474d7fcb88d8a95b73579f
+6ff8678ebc305b8c87f901cc18c481fc
+6ff871f8c411976f8bf5b0aa0e40b757
+6ffa4bc9e779feed145f71b857e647b4
+6ffbc3df5df005db41c7adc321b49580
+6fff70d00ded4353883a3ac908ccf1f8
+6fff774cbc0b3619b6c00fc019ae52ec
+700104cd34cac9ff93aed895691fe2d9
+700230e08cd0d54563c828e1125ebd32
+700267515a29503c9e3967e7e954eab6
+7003379d8d46bbca02949d333aadbe02
+7003d884133ab7a230fa2b539c655d44
+700415fd92ecaff89a20b674cdcf2827
+700a09d3ec6468b6b00153d2b078829e
+700aa76a278cf6e9f9be53357d68c2af
+700aba2cd367f9c07d3d730f2d77b8bb
+700e8bc6b846938c443040b8a6a55616
+700f0050b3ba8bc916f20221bd6642db
+70101a433f152122a6322395da9c40d2
+701057135efe9e98151f087f59232399
+701183097e624acba4fc961de7b6dffb
+70134adb3fcbf1638886bbb9d8435e36
+701620086d2457b65d7b8f705d242930
+7017f130e76951bc939aa63d4a4bf0fe
+7018cd92fe2494f35e94cec0cc272a86
+70190fe5341f44d787de2a8de0ef0250
+70196145a8095cabec295d1b8030d61d
+701b474ef1dfc6e5b60fd416f19a1b42
+701b6c63aaeb84e23aa1fd7ce9d3261f
+701d4ceebc77dd9dcf9bcfeaa8c3d9aa
+701d9ef008ab9a36e78cc3495dd91f82
+701e3ce3b804e7e9c57c34bdb9e5b619
+701ef72e0160ca9a4efe923447e5c69a
+701f377f3497dbb3cdfa9496ff795cf8
+7020b89aa01fbba117304b8031e9652a
+7025416053faf567dc725ae97cb838fd
+70268e529442a8eab9723962ec899df8
+7027fb97a1a17c9e996b8884f0b2a93d
+7028329d008bc67b4d05fda69286c563
+702884f588846cea9e4e44f350ead097
+702b74f6c72031f985c046cb92966869
+702c02c37b320a53c29dfed457436ef0
+702ceadc82d781e8204228747dea6cb3
+702e3bd4da2a87bb6fe4be4c8bf87dfc
+702ec8b77d6205685aff963e6e0b4788
+702f3c56b78d3cb35bf2c6060675c7ac
+702f4a146b90539127c1ec8708c80ce0
+7030118ebbb9dcb95c38f9beb655a2dd
+7030f19bc1d897d5251af28050690195
+7031b15143f93d0f82e83b20ae0b8d70
+7032eb850085855a99b3a8ae37802b3b
+7033899b62be00587c5032aba905f1f5
+7035387363214692ee9ac0efd037052a
+70358c5432a2bd68738b1ffac4cd43a7
+7039dd3d204428929681bfbe01d3a057
+703a1e043ad3597bd593d70a50743871
+703a4123dacd9178153479c4adc99bae
+703b479168dd83c03074c50a975f3962
+703d4fdff240eeb19cc5fbd18348baaa
+703d92b7508e3bc61b58bfffdb226a89
+703dee7855fd99d4bbf48c928b0e0ed7
+703e7ae177a0eff6e33bb6e747bfa12c
+703fda1ae7717a7d1dee5cf9fa5d7fa3
+703fe424276f544b4612b33068b106c3
+7040021ed38457baa359178fd76fe920
+70450be9535f5ec4d8ab0a913ab6b358
+7045396789edb33a54b64de2c7b2a520
+704614cafa5bb263657e2150b0733f5d
+70497cb1aaf0d0913ae972e0d591e178
+704a8d2c484c5f306e2a586e334e812c
+704ba30354eb53d5f2dca0dad8ddf6cd
+704d1fc5c314866aaecc6518f4404897
+70513ac80fa04ccaa7ae0b5169a8d688
+70513e02f93f9f495a6e7b0e58773978
+7051e976c80478bfed584668a9b19548
+7057deb526f2ee6329a2c9d705cd3c7f
+705941aec673e91431d272f6608a84e4
+705c7e34716c15bc1ec88b443b7d31a2
+705ca7ec889f2688b7b8df3ee626f0cf
+7060cdc128c6ef7495b5b20e93228431
+7061b33b469ce83cc1710f423d2e9ef1
+70636f49a2964319101ddb5ddc5cdafb
+706761f1b4de9859a9a04767a33fa14f
+7067e455f7d2ea6835991b08670b9bc4
+7068146e73b3c49d37505e0ea77ff9f4
+7069df960b531d65344001c693439d09
+7069f5f9489e93eb353281c99f0a05ee
+706c597ee2103585d6326b79fbc4d3bc
+706d66e8bc0d850b8df04efe5c9eb707
+706fefff0c95abde36afaa8b1eead700
+7072ad2830b796baf734acd1db243f6f
+7075d15e64218993fa763c24148a5474
+70763d4c4776f0ac078b148478a75a5c
+70783d44ba7f85c37a0aa6c3f720dccb
+707992c51f193607ca589265b1becb62
+707a107311012ad210f099515a24dbc3
+707bc6943cc4b60d4848a038a630b2cd
+707be0283c0218543c838fd2d62d1f91
+707c32e21a005e3fbbc07d7b1e107d3a
+707c86bf03a5f916c2fe9f0effd658f5
+707d4a2cda3ad1f1f2427dde457644a7
+707dfdce14c970d578ade8e2cdca2216
+707f30eb67f60c7433200b3abe1c3297
+707f9390b28681b68cf479d827d19af5
+70811a463aa14ac77edaafeae411c859
+708211472d4555f7284efca3c027ccb4
+7084a82f0b0ac0a31aa3d568f858e2fa
+70870454dd9134026e2de497f447a91a
+7089ba0e833c11fd1e3d323a8dd3bfa1
+708d97e840f30190e2aed2c3ebd2cfdc
+708f4905dfd8e8ce941a7e3ffb710ae5
+7090e60276b744c64306c460c7dc53b5
+709148ff8d1b33b2ef5f203c841cb127
+709227dd2f4a438d60756be60724e216
+7093038f4d31bf39da46a169b1d41f9b
+7093b4d1837a6a6206ee37961800294e
+709574fea6bce0191aa83a9ffc5080ab
+7096f9c1f32360aa477db3c4a210d764
+7096fd8ffa70ba4cd93721baa3133e20
+70970ef2c90f6ade7a062bad79321fd1
+709727c2f023c756340eccccf712396d
+7099a174f4724670025ea3337a3e2b16
+709a1367722002d93f702f8692082037
+709bf18787b6f19cab6135d3e83997a4
+709daf1e0ae96bf32a89e13a4382ea6b
+709dbb611ae20561a24dc22d7cd2ea70
+709fba765d524b7335f085fc92156cdd
+709ff6f5d7ffcc7a05ba58d56ca584fa
+70a1fb59a0abdc6c950e60014036d42e
+70a4333014bc14e74ca36830e4d2d765
+70a4b2e776305a9c402a8db1cdfe3a3d
+70a65f091aad0edce23f887a0dd377a8
+70a6657d4d54bf183c3c1d4dd8b8be4e
+70a7f7b426729da0d06a7ed1a85d53a3
+70acb7f045cb0e67265e14ce399e4bb4
+70ad12ce765bcffa07ff30222e30b3dd
+70af9d0a4e8f9afdc4e85f561cb2fb8b
+70b0c3eb4040c7fd5b9f71f49b0dc4f4
+70b0f8a5bea59ceefda2acc077b171d1
+70b1976f379e70ac287ef33f4183b184
+70b1b952ad5534b61dab6d1564b38ea6
+70b26ff703264031513d9021a77d5721
+70b3c3d69433a9c3a2aa8d2b7f1701dc
+70b439e2ab8e1d65ccb71627319d0de3
+70b6ec7c726c17c15f83c4869befecbb
+70b965b9e0cebf519e3c1b665543860d
+70bd8b121f49460ab83d7236f337d539
+70bdb461e50c08e2544ba6691049b3d7
+70c026e6ed8adab262ee8dad4741650b
+70c42f784f77f2013a39a825381d346f
+70c62a999d32b5e132e9eace511d9a76
+70c77f897378a1c0d6dca67cadcb6b45
+70c79aed0c1c1f079d1418d58e472713
+70c8df87379579e8a86ebf98915d1e73
+70cd3c7784ed6c63084740451b3354f0
+70cda0ec549992322848971095f99a52
+70cdfdce881159f4bc101602fde9b547
+70d0c225d44fce9411acfa4be98bef56
+70d23c82936c3e7a25e6e812650245d4
+70d46bf2de292156a8d3baaeac28f42b
+70d690dc629241971f51762253a5bb33
+70d7488bc68328e8796f2aa0cd3afa1e
+70d77093ba6589891c5f40ed131b9608
+70d86b98a08dc492123f75237729e568
+70d9aacbe3cd3a7c5e6022ad2da541a4
+70d9d98892311eb101aa1bc10e56eab7
+70da5c68c8e04a9d1b3f45b86ad1a016
+70dab77265f0c683fee45ee22bcff9a5
+70dc9b6b5f7b11a8e92cba57a470240b
+70ddf260affdae11ce44677c07c1fbc4
+70ddf34b47ee650c627f512bdc767715
+70de180a45f8a93c47ab4ae59b15cb3a
+70df189c6d2d1d56a2e510b940e341a0
+70dff34eb2cacda75b2433731c93d47f
+70e04ec10f308d71b75a7aec03d1f058
+70e1c291b400d0458cf5794374b261b8
+70e4c2263167fe4667d117e4f6109ed9
+70e7de2331a28b10f294a60caa4c3448
+70e9f7964791be94566a9c3873140909
+70ea007a895678f8f0df649ddc8305f0
+70ea5d586add402d4f69ba1b63a38f94
+70eabd87a9324f25862866fe063d0a58
+70ebbfcd19a4ec41fdfdcfb2057fdb32
+70f0213947aaaff89cdf8baf32b6bd40
+70f1602ccc9327792de4c6117fa95a32
+70f6d39b2595d8050cf2a9c2a59f3c88
+70f8c381b84ec5c22c5eb18ef2e7562d
+70fada3eb4a9ce17e4e16fe77cbea696
+70fb528894bf117ecbab3148747edde3
+70fb5bd77b55f223cd4ae7ac95b06b44
+70fc2debc480e4180a6d6fc5d9eedd9e
+70fc578c1089b8b094cf234e2652b216
+70fde0b461fd979e928d17e413e46e1b
+70ffeefb7deafd8e96628396be1692bc
+71011fde4873d26f8828e6d4681f38e5
+7103daf5b2d40982b2a189061264199d
+7105cda114f00ca57742b006c28ed2c0
+71080e5f0a951dd28a2fa3f48eb7429c
+71091a4bfe23b654e868c140eabcfd9a
+710930c72a3aefe8a6b1b3175e0a8fa4
+710a3c0269a97b6e015398f26d681a12
+710ebc96152791c32c99e8469e5c81c7
+710f44ad95e4fe8ce54ab548598e2a41
+710fe70a66f5c8b993f1906dac3e5aab
+71151f5ec40f58ba9bb19fa1f8b7fa82
+711ba8136fd9cd7d2e1c47d49475db49
+711d4cc2d6f51b1c02cd22df9bdbde17
+711d6b567730f09a576c2ff9901f82f8
+712193453e6d4786c609440b1daf1634
+7122650f9ccfa421004957c955c85285
+7124efa1bdf231db493156e5caaba12f
+71253352244cd5442ec9bb74bddfca24
+7127b309d3f2217f43db3776e7971cbd
+712a3f9f94a2d6d8f296ecf427a80ba7
+712b89af08b924d631206c0bb44b141c
+712c89e71aa8600b8b102304e21e8fd9
+712f8bb544fd6478a6d2b8bbefad14c2
+712fd460e5f5d6634545f862da42f709
+713030130a135f61d56c271f2b897160
+7133c0620af7aa060c05ff86c322da19
+7133fb60d4ea3f71cc9a9e13caf4bccb
+71341f4b993113c6f84aa83f4419ea30
+7135070e7ce33d52920dfd6d8b10b9b1
+713548235746e06498f7b258d4d4a02f
+7136c21170c20aed21220f3d7dbadf52
+713961ed7b62099ee54e5d8fd3639bf6
+713b9cc28cce42012a8d0ae302e9f4c9
+713db89b73b75e49e6b46ceed483990a
+713ed16db13dfe3aa4a91341507b758b
+713eefcb03ce01e6899cf72176662007
+7140987d09f9ced5bafd0faa26eb8570
+71425886d5fe44e61c7a3a078b796bab
+714896c3fd4610aa99f49d8909fa7dcb
+71490a1692dae0577d0e4878cd3cbbdb
+714947f73a54c4385268f9e9db4ca55a
+714c92b0a4f4df50f863064cfffc2482
+714dae84bdcc2bc7d5063a72fd267cc2
+714ecf619f5ce40b9b8efe0c4ed055b0
+7151aa2035d8dffe075f41f144d0db00
+71531e5b26e95a152dfbfb8acfe5aa24
+715434b54b25841426fcdf57193aea79
+71580a67d65212edd4f85c3748b771de
+71587fb4377b11fae5bf26043b65c178
+7159dc52bab0c7ac81fba96b3bc0109f
+715f0b0c40b783538e9dc79ff8062cff
+716148fce28e158301bb7e1231dccc7b
+716281269e0da0f18f9edf0d5a2e3374
+71639047f2eaf112580349c27defd6f4
+7164563a783329fd823e54dd9162c81b
+71657a0dc9b1f8e7534e88680d8c1bf1
+716a8d2addac40455e1fee9110a15a36
+716d60bcd312df8c0e9819b9876154a1
+716d968b59038a90ca42eb5ac4a90ab4
+716ff5d0608d5e6f65a72f26515c18d7
+717529454e8b4db7f52e72befe989e8f
+71757e38cc60efb13e48c1a9d4262dab
+7175b599b02e7bd0013eab03436d7f91
+7177325a8f63b23e86b2f0226f3eb8ab
+7179179034cfd1988e314d5a18e45b8e
+717a19b8a75eb4d5a0ef50fbe0055d3f
+717bd0d248f6f054e6704e90218bf031
+717c7bf184d0671ac4ceefcb10788189
+717cd0f4480db332f70a9a2d150f2382
+7184e2697d179adc102de4937bc21924
+718648d7a776e0133a7298fbce4dc4f8
+71881c54bc2832b4a65aca3fbaeceae2
+7188259c3391f9cbbbec95c38b7d75a5
+7188f58d655f95bc2eccb5014e1a9420
+718ccde2b8731c5be61a6c7beb1f6627
+718d4b398d3f787cec72d2287b77c805
+718d76d0a0aff0f5bd31c89b9b450055
+719396ad57cd92819d02f5c6ce2d42df
+7193b4c990cd0a595faec7180a77d49f
+719468658068cf4fe1b8c4312c7dd4d8
+7195a5c529f5f19c6496aa88900f8947
+7199cdc8a77415389e421c0491b57067
+719cc121301654fff82d807a6eb1f36a
+719cd7ca9889ac6fc8d95ce095803764
+719ceb68536f6200f4cbeb3b89d86b57
+719d4ddd91774551d4041d0a348b9551
+719df82bbaa486042444c3da55215c56
+719e9624e234e991b0f4ca6def98e5e5
+71a1a6f917bfc12045f4c00c1516c7d7
+71a559e5656a0a164e589956859376d9
+71a5cf3cddada8f35fc87eddfdb17e67
+71aac0aba100d0c3938b63b4f09fe7de
+71aaf3d79f18467200768b036a5d6bb5
+71ab2b9c0cf76f65eba699af50456e3b
+71adc40ab17e42461f21ffc544485bb1
+71ade3c1ea4a0604ef336e1180e83f72
+71aefc38f2495398c7f1f9de36471c2b
+71af623b9e5b8280b7a95384d246fa5e
+71b3619797f77c792ad50af04164c111
+71b581f2094799dc623210fbc0c05f9a
+71b6073b891a6cfaf973c7cdc72f52f2
+71b9623f374d47250ad4ea41b70d82ae
+71bbcc4abcc6ae1d93a7a833bebc471c
+71bbf46d84e70f7e946e2afc144fc701
+71bc455a0627b31d3770a01bf448e635
+71c0c7d2efc84e88d36708f8935ede93
+71c4b4399c336d7b19771ae8c4d8281e
+71c9eec3ed19a02514f42e160b09e5c5
+71ca6a2b26444880fdf903f59117c6d6
+71cd71b82c219adf67dec1c71963ba50
+71ceb864564e0067ab716e9531e452f2
+71cf083d4cdf617e64761bbfd3b460e9
+71d3c503bea1c983fd385e0f66288632
+71d417b7bd56ed589a764d9ac42e4c8a
+71d4b403336be34c06a7dcbf0ad4c580
+71d58617236c9cead9905416227ce12b
+71d5a67d718553b81590a6415a2d74c1
+71d63205538ba8f485fb29024fece305
+71d892aeaad97670bd09961035b0b97e
+71d8e23593f632b505e430c72e4feb19
+71deab86b1a4c13a42ce0cab84e2d811
+71df931fc9b74f86c5da8f6be022ef1a
+71dfccbf77aaea3880f20f27ce18109e
+71e27537b640e4a113f70e6680624851
+71e436fe5bfe338b68bc3ad35107d73f
+71e5636bd122d8835258e7c0857deab1
+71e7c240c1b62673c0a7fe289445cd75
+71e86b1f7d7761dc1f0a5785e3338017
+71e8c2a9a897f4684e5a5a30f44be029
+71e9810c8b14412404958ed5babbaf8d
+71e9ba7cbeadf07bf553dc70c04a8a51
+71ec841d96d835f0980c78bfdad1c63f
+71f013539cf63927dcab761ae6f53731
+71f08e2f92fd2817c7e73b255a5d8b32
+71f2e6eda8628061f38ed9b5363e4085
+71f37d66cbb17372adedfb172ff8f7da
+71f4978cc2e697678c4d8465b65842e7
+71f6a43d2864aab38954d07873b99629
+71f7833f441d7de40ffa574623d673b0
+71f839b30d480b43bb792388fbb28442
+71f9a584502855bd1e08b34827705d37
+71fa5c79c17002e70705d7ba5a6f33f4
+72058267b04aa8ee382051674efb2c03
+7207e887fc3bf0f2576d8824e69592d3
+720a2e634987bcf3a0fff3ae5ddc7e9e
+720a47281c1bf4c490ff1f1ff0cf75a8
+720a61c45ef33ac2aa26ea0eb99c767d
+720ac5c0dc7964d4d30bb6d9dd9824e4
+720bcd05d6528836d40940740add618b
+720c0139e74dc2de830a2dc0535adfd5
+720e0d545038ea2829901b4d44505b74
+721aa453a6a2f3a22752b0be1bfc34ae
+721c3d75bc6e7eda26203d8698a5e6ed
+721cd49d150b2510cdfa896b870bb39b
+721f7f57c3ba681df8b9bbf92a77e4e9
+722324dde81dbbfee13119f6c82df425
+72238ccd26fa8c3e8673f87ed9a52527
+7223e6d05df01443051ca722bc90d512
+722425de6d3087fe3f484df8b29836bf
+722474313936b7953519ce8bfc856635
+7226c31be56c9adaccd5f2c24fdc1c59
+7227a4594193950ccc644bdbb9daf78c
+7229e51e7aefc81389868184fcb4b3fb
+722ba8838c107e8020d97ca2b3705549
+722dcbe196f0104344946c3d7a3f6582
+7232b1dfa7ac41043c01619adb9480ad
+7233d381900936e92b66b52aa7336fcd
+7234e0826737360e571b032dbcfdee30
+7236eaf169ad6e888f9714746770080f
+723c9815e63441d80bcc9a41753d379f
+723cc1d5c1016ef29be4c86f97c7c753
+723d68b9b8590e2d8b667d8e7678e636
+723dd5c0da8f83e5ddf2318045f540a5
+723e1b8d54931ca4dafcf440a1250d92
+723fdbe07081e9f27207108622c7906a
+7240d05aa3d80c7d1c3b6161a33fdbdd
+7241745f0a020da31bb4b240e9141072
+724299f6d1509cc9453a8a44118ae387
+7242f168a061add6fc00ac1dad6288bb
+724440064f3407a39a23d89c90f851e7
+7247d62f558f9ddb3f4dd65849d583d6
+7248b4561b8575b4e0d8e2908b361e48
+724cd145af4e0dffda2cd3f9951bd24b
+724e625a7c2ec23928355d600f65e567
+72500ef0b832d582be9bfc030cc4aea8
+7250856c2c3c97535d798cf612682bb1
+7250a2d23324aa79aaf9aa50f5e8b007
+72516fcfa7d2fd009d20c65b5c5fb9e8
+72549e78cc3272047ec138a497f295b5
+72550b8c08f9841c683d50722f7de465
+7255657c7f5c17490c6a557c14a53001
+7256af7f0626bc1d7c6eec9692fc98d5
+7256d91b915fb960965fcd158af3762f
+725ba098c17fd51e42884bd14a5a35d2
+725ebb1e0073aacc8351ff8759cce795
+7260464defc63bcc63e0c29619e6df82
+7264cb40d391feb41fd9c26955c949a1
+7265449b54bae1e3aa0ff10b3f291e21
+7265bbdc22ebcfa3b83f03d1bdab8f1f
+72660bfef365973f5bf81346d4b232e9
+726663fe880d0c649db0e57e6142d3c0
+7267d918a8fbfc981f4dc359ee9143d8
+726833155386c2a148d908e53ff89115
+72687ee1eaef2cf32f965b297eecd226
+726a6070a9e2de9c127c099b9234ce66
+726c57a805b389273f869b45aad30ecc
+726d3be11975be12af84e29ee168fc69
+726d6f81b3a3baff9cc2adc2b45b50c7
+7272b27ada8c67ebd92fbeefc4d9c34d
+7273b6a93c656916fbf2c81c15316084
+7274209521606ff186c28e5d62872eb7
+72753393f7bc51584a59857c05a22771
+7275b9c681ee0c9951434725e8dff326
+727687edbd01ed952c58db75dd732a09
+727988817c973c69480535dc896e6599
+727a22289c6c0dbc42947dc8bdae5046
+727bd4de12a689ff2e3c3ba8a66015ca
+727e7fe3448a7a75c1de83c4e7459976
+727f26141e113e8a76b844e22dfed126
+7280f097db5b3b17d2f2e05677130a0f
+7282979b28569cf2e97a73cf7e244c84
+7287c05f181cb6c26a8bc2ebe972ec1a
+728824babd06f52e48b87604056f6639
+72884502e9eff6d152a0788e16682f9e
+7289b978101b058eb3c19e0a53fb2203
+728c83a7e3b82ab557f1b351ff64d4cf
+728eaafa6eda22eb3360889855c4c136
+728ee387f5fa4337b3870d5e59c514ae
+728f1448f1ed7448247911e9e37347e6
+728f2b7f7e2001432ea6354ee53a9779
+72901b744e466de398e14202e9869a03
+72917eaff4f85bce53e62199d0155bbc
+7291db7d186189d1ef6fedd9fdc38d9a
+7291e550cf2a6d8a4e63554507b25ef2
+729277fe638e259d15a0e59c8bdaf538
+7293b02827991dddfacde8e567bfac15
+7294d97e75c14786f3e1161b65c8e2d1
+72968ee522f104a63f6ca36639bcc385
+72969951cac039b4af192fc4c80fb3e7
+72979a652fd9bae3800ad458a168ba1b
+7297cbc73cbde6228a59bb98f839d190
+72983b351f133f84f1c8916c15643642
+729aeff05953e73a0aa8e55f43b1b714
+729bb25c4d59ca3232c6fbcf6f85d342
+729c5aaf43577bf64fc13c61514f3338
+729f0cf1b2b7a57330993a3b0e6f7d95
+72a1ddc114ee9b48207ae74d65a8672c
+72a2c1b4ee729ec315d767142c216681
+72a72a8c351a753c1c88612754f3161e
+72a7f5c6b9ff389e88c7bdae906ad969
+72aa1a2cae9a77f881e161897c8a06d7
+72ab8a4b84ef8d8b8dfe11f831a975b6
+72acffff520a019e47f64df0fbb44de5
+72ad9e3d2ba823b53d4d1fd4e2a5a4f0
+72adcee1e2317ff91def0fac60d6cbad
+72ae45eb18f85b6afcfc8658e1701247
+72ae5b89e436df42718959f911133d74
+72b126f0f1e83cf88ba1cc2c793f0c60
+72b1df503ee2a8956970a5f03bce97e4
+72b20b4affaa5ed5743c2c0fc7238e8e
+72b5157c09a7de11f630017bae2e41b3
+72ba0619f2bc73258b1c2d99423f1630
+72bc732a19dd7a6077b124d88d0e24fa
+72bcc9e8b74f401570deb71f438a9867
+72c36e466cd72bb1b7237a2ff83ae23b
+72c42f10be0cd4683520407457b932c3
+72c43659a9efe1843840a97dad388ad8
+72c7565d910534bb3357206a9282eefb
+72c8584925cf446fa8c1ba782cd63c3e
+72ca6fc5b5726046280509ea604f5ab8
+72ce3b8a62a34e7b78ba210c03f1fe00
+72ce4fba6b61a6c239c0d42385539c33
+72ce8b250b8fa2b2cfeb59b22edb9273
+72d26767141078393595d6e69881e368
+72d2f3f08d8fa7c779119e4da1c27fa5
+72d731ed6fb3747db31bdf0291ffc307
+72d75e3b2a62d6b14978110bf0911d70
+72da572196afb1af401085e310cf7baa
+72dc041a3661e912d87867cece103521
+72de0c595ecd8a6d00bf22ee2220d048
+72e14f9dd3fcaf2f11e00c91e755b55b
+72e3188db1f00747889f249daa890495
+72e342c82901096aca7fa49894e7374e
+72e5027c97c04838dfd4b590e2ec0eac
+72e5360a8ec09995ca3c852e28d20eb6
+72e70d8ea51bc30d46f547365a9b5849
+72e85065afd572a9ce57b0ed45e20e8e
+72ea14bd6c57c500734d74cca072d0cc
+72ebf0f6c9b3d20bbac909d6a51e5cca
+72ebf7c6729f078dfb6e78cdc03e5ac8
+72edc1df5f811c0a9942c4e59ad08ddd
+72f3049c7688dc1bef2bd4f2894a2538
+72f619fcec150751be340cfba09fda9a
+72f747e47120ea0dbdcfeb9e936bd459
+72f788fbdf0d29a0ae4f55ada4fc03f6
+72fbcb2400215ead4af40d77e22363ff
+72fc917fd440e6d97536da4ea0d8cc46
+72fc9cfd4ad6445aee55c0cbd61380cc
+72fd3f3583980b486fce629ea29b9414
+72fef894b526050efccbc5394fec5fa1
+72ff6201fd4915cc681051d74008cd45
+72ffd3c559582fc06763c6164aaddcb3
+73009a9402af2da8e1e5720a84b1446a
+7303bb1f8693a3f30c41617a5baa1d1f
+730783d10a53df8b0a8577fbba724544
+7308d0e628f6d3dd8a71aa6ca656f0c8
+730a22b5dcb7176642f0d5641e73294a
+730a3abbeefb2422ad12e2370280d79b
+730bd7a8d996e33e6182d4ef655e46f4
+730c18f75ca8f262c8cf0ee611fa507b
+730ec23d61d28eaca7943decb8b9b4dd
+730f2344f89598a4e8d38ec5ffce4f7d
+730fe4c1d1a732c93bade937edc23cd1
+7310a420d457b59fcc9a5a985ae92af0
+7312950e52097750e7b672af8fb29823
+731532129555e673db79999574f01b93
+73166173b2a6eb77597e311e02ff7e2a
+7317a0442680fb2a883c9c615a9e24d0
+7318bb2bdfe7abe8321591abca9fab00
+731c1bf3680cb8840f1ee15d9abfb234
+731cd994e2136ef6da88321956a4ee04
+731e7ac19b42c702967204f60d5a7a63
+731f26429b353f2ec487a3043842e05b
+731f50f4b8e7adcf70bdebdc6be79dc0
+7320811413c18ab64fac2283b6ca0f15
+732096264530af2652b5713d989c0176
+7321837b0394382fef599677ffbe08ec
+73242090d1711af2dfee21d19ede69cb
+732a4ccc8ad195d9bb93afcbb9f8848f
+732a730ec6293e67d59fb2f0b9f8ef1d
+732ad78cc1c3a58740da0d0fea603d2b
+732c15c6e40fc63c72eecd6d0151a3c0
+732cce3aa1cde7a210a8db3a35657ed6
+732d0cf02896d1ce71edf08e8d81c9ec
+732fbb7576e25cdf5bda483c2a9927d2
+7332c3ee4515cd7f7e8e7cb4c9a471ed
+733303873d999fc63a7f88a18642e843
+73339d3157923c9254a95f0f01ae93ff
+7334bf17056f90fc03e4d6ce60eec5cb
+733740b005e6bf2370d62dfd4f55dac0
+73382b58a1cef711286464c280c3dd3c
+7339b3c7302d69cbbe0f32e4cc7144c5
+733d3c9c2df2db4f8ab57a562bce3362
+733d793672b6cc061da0ef3f41e38c91
+733d91cb67872dd577a1f7dd15ff487e
+733e9e72be0274ad651442cd3ef3756b
+733f782649cd0f4ceb376b549906edee
+7342e00ce8e78658bf0675bea21e717e
+734316ced82ec8b9c73087eed6d719e8
+734385787492d70407ee70e4ffa0a30f
+73472321db207616c0cfa49561207d70
+734a1e3b88602cd7f5fc604dd9195eda
+734a9ce4726176d9a3d228792af2a144
+734dde6fd79bd8a577962e4f620d1e48
+734edf3427a50a4a21de80636c043a77
+7350dd68921576ea29d134460908793e
+73516ca9aa5c729a0b84c5b1cc096842
+73539c08377068322e1ddb8dcae92f59
+7354768ab21d23ee02a7b14f9bdd6a79
+73576748219d57e3ba215f07e0b66a4a
+735927794e58fdf2a564f68e2345a058
+73594fd6df8e799ef56a5e67b682082f
+735edf9a87c1c16d4ffe820c61886f37
+73603bab56b0188946e193934bc48e3b
+7360a42c4135ce5c9fe486c8a5dc52f9
+7360f08594b4c43451519b030e302126
+736188a49cc96c1967af1598a6c694fa
+7361e372ca679264d0d7c637b678f551
+73621e462ddb3deb864a17f8f192185d
+73635285b052e8c38caba5e006279070
+7369e446d7b6f0ae04080d8040777c0b
+736b737d42af557bce0b1040c5846eb1
+736f3500cafe0bab4d06219b3667ddab
+736f40f23a23515b93e820499e694d65
+736f95f4fe409d74b8aa1f8b1b12f76c
+7370a5735d577e656ce8bd40139df4b4
+73730ced0065c2efc6d7b39c7f586f89
+73745a54d4a424feb797fab8de627851
+7375432e36a630e7cb2910a46e0f093d
+737654896ac1eb126b2562ca6adcd0f3
+7376e1d1bd38c98268c3844f0828a561
+7378914d6e3d2c1e8ca16eda6f33daac
+737f2a1c4ae76f4e7326a6a972be481c
+737ff97f5631b406a08d765d7355cf0b
+73800d7d8e2a86deec0e3e764b095baf
+7383e0e501b513991ce21d82e37c008c
+73850859bfd341e80c5182a26b1ee6be
+7385421fbf5cb41ecbd8cd5e87a80e19
+7386dcfe66f95b17e33e091f8265998d
+7386fa26f1e67e54c0898c1502c91fdc
+7388608d57046211cf195292ed886716
+738b34cfffaaec1fbf09ca82e9f56eb1
+738c5bf18fe78f85bf1ff57d26dcb81d
+738d2cb27ee0343080a94982dbf6fecd
+738dfbf4885cadc6715b59568a70dcb6
+738f595d489547be8758f2fafd972d21
+73900b5938afb28c5a238758743a05b5
+7391386407624dfed0ad5f10a78c250d
+73923e67457ed90a3c87529b606c1e1e
+73938b9e8685d0954a0e7e39526693dc
+7394ad7385471b48b953cfc5ca41e99a
+739712434749a89ccf38f2d4feecfc6d
+739a0f912f3db4e7b9cca41a6c5298f5
+739b3bb5e968208efe3a009c2e9d9cc0
+739b5a34d5848250c2642fd2a070c817
+739eaa07e33b85a06c87ea87e61b5e74
+739fe886398d3993d9362a07fdaad8f5
+73a02e7dde64770d613d6146fcebd13b
+73a06a4a91271041e4344ca21e681410
+73a0a6b5d8f24467a34ef321e8cfba7f
+73a455dc3d388b0d06bca02ecf9968e1
+73a49bfe132df9a98f1375e202d1241d
+73a5d58a7f0f6ba3ce68545869c7b3a0
+73a631da7eda99fb1f5fb9aadd700bb2
+73ac5b9f81ad6ea075429b33fb3a8c11
+73ad3b2132d434aab7bc502808915dba
+73ae54bd8a8a735f97907e8ad1e20abf
+73aee64b234d652e8172ca2917c31818
+73b427ad6195ddafbb3a45f6885f48ed
+73b4568b316fc30424f09d31e145199b
+73b5e2d52e1e932a8c217669fbff925e
+73b633b067dd8af0b7cbbfefac274d4b
+73b6c52535b038f60ffd6b9eecb86d7b
+73bfbea0c672eea996097c874f1808e9
+73c11316cbc71f67980a577b288451ce
+73c51acb29da830ab1bd35f9af2c39e6
+73c72404b1db99e107ce71f14031637c
+73c854693644cd41694b5d55f8e5e052
+73c9fba7fd9c93511d9b45680a6ff5d6
+73cd3a1131a26315d5185ced1fd1567e
+73cdef0968d451a70fc7358c2aa7bf40
+73d2685938ed445fbfee036d73f35c35
+73d71e12eee2be7403cfdea548f167df
+73d76b1354a940341aeb0d36bdb107a7
+73d9977441111b67f36bf508bba9a1d7
+73da10f665f3df7fe2ad128256ad4ce2
+73db0c9d8b142dc77348e7833b1fa6c2
+73dc5f64d89b534ebdbb00b54212144d
+73dd45c8045f8a1c1cef91c00b242f53
+73dd8f76e0fe8196e258fdaf0aa37ab2
+73ddd088cf5f5e2e1f6159352bccfbfc
+73de73e7c21ad4cdd2e7608f67ac6c48
+73df0da3461d00492b51687c0d382b8a
+73e06d3d4207106c3fc881b1c834122b
+73e07b17a824af5a8044248fcfdb271a
+73e0f73a54c221c80e5ca09e2c66af74
+73e3b89b0e57c5a255bf8fce5c427b43
+73e54edf0c9de4fcdb396393e793af8c
+73e5fe373b905655633680f0f9fbda97
+73e699eef5feb47eedc89cccfaf123f9
+73e6c467e1f7725b04e33af25f5d6bdf
+73e74501142e471610fd11d626945683
+73e8de6af8c58de2499f69d8a52879eb
+73ea2a2f6ef0c61b457bd3779ba033c9
+73ea3aef31821289c3c17809dd0838af
+73ee76325e7e66dbc823d4320684d0e7
+73f0ec9e1fa29a4b5241a6ce94d6001d
+73f140d8de649c20fd56992b8df5e020
+73f220c074fa8603d0ccaa4299ed8933
+73f27f8ae7de64e7067d86f1aed6adae
+73f46f1ab2769034536ac8a001499272
+73f5f78af94efd557aa15a5453bb8886
+73f6c0e2c3eae7d75d8f838f6428b938
+73f857f2bdb7172196956fba216673fc
+73fc418ebac9d06d37998d3ca11bd9ff
+73fc523908a5f110b34ca01a29c45cfe
+73fc9dddd2e618dd8f985d16d05ccbd8
+73ffe2144e5025b16ff89f1ac6e3d8fd
+74025f5321d3f2b8860ada325a2bb6b7
+7403a28c4be18ff829c8659ad7baffaf
+7403dfb6902906f26735f4a5b1e14350
+7404b94c35c506bc7d2c2512750dd7b4
+7405be2aefb8c21f46af61ee37df010e
+74080da430c01b98213fe4ef3a963438
+740899bd5f0aca7305476f88d0c08a7e
+741004a2e4691a8114760e90134e0606
+7410734c59b85af83d0261ea6f97d11c
+7411b8c5c4e77467eca34627196495b4
+74121ad1974cbf713fbcde72b438e5f1
+7412c33bfa9db3a3700e327a9ad82082
+74137a27b1618f7bf41f5a6fb47e665f
+7415b71dabd10766174f8848032804fa
+7415ec0381014a7972a15101c25c6d8c
+741675b424e9ab59e1f74a1c5f2f4c8d
+74170a801f5e1f97b5f3e09b191545d3
+7417c3943b3836aec1ba0d06c4af2d53
+7417ef19f57e6449654e9371352142fa
+741b60a21a773ff6ba1a7eb3d2d71fec
+741c69a6993a2e46aefed85abe09e0c3
+741db754968f26b5bd0dacf7fa98f700
+74205614b5645047b0df2d48d3b6e463
+74219b088ec2890a32eefd5175b1ae0a
+74234b37489c7af6e5346bd3eb61b6c2
+742513c8f5c4be0ea6d74da1cc8b190c
+7426a62ee8d3fd58fa30a2cc9d5ee7dd
+74287d4f5a793df3bb020307516fa93b
+742afbec7a00203f8683e5b15d6dfb25
+742b4e6179edab9735f96a7ef3f58358
+742d3ba3050255ff05b60c905b83bcfd
+7430358dd0889acb845d37cc2c97c52e
+7434abb2bfb02fba9615135a4f5a7ca7
+74353b44e6e5b9a2e8e0ef6d6850c608
+7436d630dcc3ed42db0e62983f859ed4
+743d5f5db9742f18aa7f60d10c898c38
+743f80356df5abb9e73f386609d67fdb
+743fa42c1262e9946d5f25ea75dfd2b3
+7441fed93afaec98d1a9c494d4904ec6
+7443299623a081258cd5307ff6f8773e
+74434e11445fed550864b86b1f25dac6
+74460f924a476dc8c371d10b0ef30e89
+7448dc739e7237b02248797ec002b93b
+744a03ebc53d45a54485e54ed3ede695
+744a927c5f628c3f4bd0e4c8f0a00f1c
+744ba0c389c58dc64a3f83ef913b32d4
+744cfd8783ab687c82992b010f286edf
+744f1aa858838b157771e0d6906c0763
+74508ee819e92408c97c92a17348a17b
+7451b0324ae648f9cf76d0bad16ac2a9
+7451e45c86d260c09f1bb7c7887f80fd
+7452ad5e492daf35280ac2f4008de755
+74535b2af000aaa6dc2de085a21ec7b5
+7459e9572301cad87e35ebceea164d46
+745a9fb37a0c109f3a2e711fcdc0739d
+745bb539e57b2875b6cb90c85a97900a
+745c169769267f380f978aaf762766a0
+745c51669ae05fa2e285e1f81d992523
+745d695051a5a6fe20c54377e886543b
+745e442f28ad41d82e0bbcdb9cbb138e
+746024be667aa5b4d58d2a04bb4af2f9
+74624555cf0d8dbabc87caefc93a7752
+7462681ab608839f960d660a23c823be
+74627957863e5f1755b4b288f7923786
+7467ada3459d126e92f9e2d57e1075e5
+74698a9dae27a9b95f40a280c0e5ef0f
+746a07ac3ddaea77e2425033d731133e
+746ab82b11cf0d185ace008fc0ad5adb
+746ca5ea5acbb03d3ef19fb07d3f5f97
+746df3b49b812184f646c7e33126c388
+746e854b36914186ad2f415d7004d5de
+746eede76f6f9651439db6ca6177f19e
+746f3572965fac5dc67507565a63e1f7
+746f58a34a5c43bb28b5673dbc5f9419
+74703c91ce77bc2531e4793268157d92
+7470c1f16f60675488c1d07e88ff5cf4
+7471bbda83b7a0b53efc392765b19b39
+7476b14d6e8ea8cd5722ece3c6a37a0c
+7477dd1f4b47cffd13052c320576a5e0
+74782ecbb7dfacc4dd88533a6be54c56
+747858b927312d90464ec99a1d8771f0
+747866dc4a2ea0b63afd7c30d35415d2
+747a3c31901378b757b93667c54bc197
+747baff0e4d6145cfc40696b2e5646bf
+747ea4ee66192ad882f6d46359fe28f5
+747f4b9c5fd7d13f1b2611732745a589
+74841f2899533f8db78c898cca15a4c1
+74850be58d8daafda6ee8fdf3d864734
+74851e300e04b4a1d1fd356f31df117e
+748735160895517fa79a565f4395ff21
+748742a2e411e0ae69f1c7c0d4091880
+748c2c155f988c5cf204b5e807f59ad9
+748d8de4a8048782dcf9f2cc8f7eb817
+748ed5d0287c1edfb69b9e36fc58a3f6
+74932933de88c7468e6ab5440b66dc5f
+749593ff01f546fe64e27fee650a597e
+7496504d795f032731f550be6789ee3d
+7496569e48dc3e578c1c9e165d6a129e
+74982f82828c7685c9f1eccaca56c532
+749bb3b1088d4f5b40865b3e7e5188a6
+749e0593f66dc5254dcf0c02140622e9
+74a1f583ed3eae0053cc0f9a056f24c8
+74a205d80449516f33989b924bd080d4
+74a2a464ec4e50c2d24f79ce5486753b
+74a2e6c29f5c426b2852bf4f5ab5876c
+74a3257bf080920e94614f2bddf6dc9e
+74a51e2c08838bf786ff0a4a1b631a5f
+74a6149cfe776c091b7e6480f687b550
+74a6d778a41dc2c8875cf681866fe4df
+74a7258e6b5f14341346c2a55282d291
+74a7f45e224613728e0fa29847fa5e23
+74aa335a3621a424a91ac70c4617c80d
+74aa4ef525cb513af3666e79ff5ddc35
+74b216776a185b60b889c138bfcdd8ce
+74b3b45527c06379deb4c527fca24062
+74b411bdb589730bb0dc55f62dd00795
+74b53c920d89e6370c3f904e7391e3b1
+74b5658bf5ebe05f717dd07f29d6ffc2
+74b5b1cfcdef5ad6f9bb7f2552456711
+74b677479b37e69e511ce9fa5f892f83
+74b98d285071638d46db8d62a2090c0c
+74ba1a053251c09486f1e39a9ea44259
+74bd4cc3fc1e68193112f905805f3059
+74c087ac78640c919782870ae10c4184
+74c0eaec18664d62e1ea109d23b4e906
+74c1e464a293a74bbea5a01824df560c
+74c2b954b3f25c81d828570e230ae80b
+74c7945a12ebff2287f92422d56110c8
+74c7b7b0f0ef58e5d34c6d58a374e37b
+74cd47388ef43b799c895ae422edbbd6
+74cd904c8b8c0546af153bb38ab7a202
+74d085fac55dfec3c672e7c75fcdec96
+74d1fa0e17c04403e12fabc2cb81a110
+74d208edec901939d09101893c6998fc
+74d293509644328bf25c6af73ab894b8
+74d4f18780a66703012fb3a0eb0dfd5b
+74d581b823fd7e50898b56b4c72ab6c3
+74d5f64471119715be7f4e8615c3c539
+74d6d7ddb327b2a408b81ea439850cf9
+74dc835bd5ab91ad948280e85a4c3a38
+74deb3ee2113885d2aff2848a37bc3bc
+74deede98ca8606028e83a4242074170
+74e03aa8d5c83ef850204cdea304eada
+74e0d89d4efac68ac0866df945465112
+74e118f76612c372d01b6e2c3dcec774
+74e383acdb930228f9a9a1705b7412d1
+74e3c4c8b52bcf2faf7b3f7b902d1f34
+74e41883e1504136a4ba0f2e4158b60f
+74e6083f8d4fc71842bebcaa185af863
+74ea0eaf64a5c9faff33bdc0f30af287
+74eb232e75b6507b0e1296e1e3b936c2
+74ee1ae433693eb7e8e1bbb3f5be1f9c
+74efcb4a0d188cf1d16d9b68d5c4a1d4
+74f01339f864596746f6568306dba7d8
+74f02efaae8165e225653248a6372120
+74f18374515f699559876f76aaf0f0d4
+74f3e01e1dc87635d093ceea9853cf7e
+74f5d9ea9a051349b7a856e2a380168b
+74f6bb9d0a48a0bb7198e61e20c717e2
+74f7f489c15494eddf736e8b360c1d76
+74fd7e962734b7d662115d8decac03d9
+74fe58ec9aef5dc9f70c550897b33c00
+74fea71a45a55a9c86e0801e47bde7b5
+7500a349828fa323e5341dde55f93502
+750188bb2b5acb75aec33dcd44da2e03
+7501f7bee27212c6cdc20eacdae53612
+75039a365e1e3a1d0d47214818671e56
+7503ac5557dc643516810bfb87232741
+7509fff59eb32f2ff770cc95ff605052
+750a70e327e769a9dc31686a9073cb6b
+750cbeec5ed989b7fc61aa6c5490fc20
+750d28bcdfa712227a5ca6393c8942fa
+750da3beb75390d332944ab7bfe55989
+750dbfd184be0f1554d38247468613df
+750f729c8e2a6a6473ae91237f29af25
+751164187f6f0d850f4e5af4168fdb5d
+7514345ff4f7746f7fef1c158c58a888
+75151762895f5afbb598f406d5de78ea
+75152ec42b2d09d7ed8c0c6e6b5a316a
+751685187432e011a09f02935aa2dcdb
+751ee67ddf48ad1eb7439c260c6e8ea3
+751f1dec5d5d1b4dec62c972b9b37960
+751f31d4152c3472d275cc5acaa24bbc
+7520b6b22c042cdcafae14c5ea41e5ed
+75223b15ec0bbde4410ecad4e756f196
+75239b41ed665246a4d7dd4950f3087e
+75250977229a423a7658f37ba1d271d4
+7525d4deb95ad651fc5231e338ff8a59
+752651207d337fc2b37c644186889ae6
+7526f46f3f0d046dc1d514624839b0d0
+752a604b89b727954addb98cadc85d74
+752b9ac1dd91c364dc4a7e11d37e608d
+752c53bdca0d246aa011d1d04f89397d
+752ec87ab4834fe2d143d254e1a8cbb1
+752ef51d9352b539e9dd3b766a532c31
+7530d73a182730e5ab7ea73fccbf9f26
+75328cd04be0b83f68c1609d134206a8
+753461a8e2c2fd862193aeadd9bd5a57
+7535d1f289923d2f4334ed94d9dffdfd
+75363fdb229b130cdcf2df8578d3e2ca
+75392f32d496cc16903b15950212b912
+7539dd3fd7f256fd9d902fd12d29913c
+753be9a49aa90addae0f9fffe0c61dc5
+75427a8de2c3207430ccb38a9aa732a3
+754314fc5fb0e5226b86188383184d2e
+7546b37843b35b66fb08044f9b95fc0b
+75470472463da1aaab3e24b2ad0936df
+754a621259b75c461ccc9a8706bb56af
+754b0855fa53a7bf7f3a3affbd2a3d8e
+7553a7fa946c52504ff53dcb85de8d62
+7553d2f74b8fc6744608de354c9fcbb4
+755404bef5ae044ffd724b84d6a35ef9
+75552b80ab6ca4b8427270114b721d66
+7555cec24a9418d88a176c34dc395185
+75595cc283bcc77f7f6a4b9b4bac191c
+755b9ff3a8b5b791e83541482a825c9c
+755bbc7727ede06ad3aba598a8ae11ad
+755c69222245b9b6f158f514a93a34f7
+755d2713365b9e81f6eee9d438122c1f
+7560100107cd39300a037634781e6230
+75610c6222a910fce4284ce71f3dd004
+75610fa24304cd15d1f11dfe7d2dc2d3
+756141351c01ca7c52c800073f7c691a
+75638eb1b63e92dffed2e3afe4bae33d
+7564680e8b3c07b21f1ba1a4455aac21
+75657eae2727d6cf4dc34497389d74d4
+756680734afcc311edcf454a07dabd90
+756729c9a3e9fb7e6c9c4aa4b0f96485
+75685b6b17418623c2d4bc20bb97b979
+75685b8a938a55d4f2fd197f425e9f21
+756860ec198201b3a3d649df4786ddab
+7568af5cae93470f3586674730e1a8e0
+7569bb749bf0e2b4a04de72a1c091485
+756a282fb24bcf16f90056a6ff2f7e9f
+756a376beffcfc6c09b1acebd26e338f
+756ad34f64ca92ae1186bc2dd37f1634
+756aead7f75f041c2efb75a52aa6907e
+756bda1f2fb84a6c0c43f9a19ba0375b
+756c506b4dbc1d2c2c54538a31588c44
+756cd6ff439c490a164db526800cf6ec
+756daf1eb890d206908b446a07024aa0
+756f1eabe53576d749b5203f60369c9d
+756f80e92a854a7cca51f4a51878da92
+75726480c80091736ea47295f7de5cff
+7572bc1923cfca4076754f35093166ed
+75735d793341ee9ac6cb0619f0fd8083
+7574bdca17dc11d00f2f3246d3aa1b8d
+7575433f7f06e586dccefbcefde64b94
+7576275bd45b56feed62e708b71d38f2
+75763c44debc5f671dd89cdb29dae86d
+7577696a33a283979a5d4d5b79f30393
+7579905272331e84a2f5585123c43c52
+7579d50b78567b59ea761179afa7d3c0
+757a65d5efaaa42468f02df51fdfc9a6
+757ae7ca6517416abd02b50c0bd12383
+757be04c6684d123b6bf75f6fb0bfeb7
+757d27b12ba20189a4420196b0e21cc7
+757f99061974cd917acf36e3455a149e
+7580b7cdc55a88b053bcb197522472c3
+758123c957d314164c7ce45ec02f8c2d
+75862842c95b9f534bb90b45d71ed95a
+7588c6be2ab8ff03240947905b7d1c06
+7589ebeb336ed8ae95c26a69e51ceab5
+758a6c02637e7c2e89b4051b104b32ae
+758da834d2534ef753ede33033455c1e
+75903b470a0a83ce48205b4ceb83d0e6
+7591f53da32534622422036c2748ffc3
+75951e7b281bdd8202840f903a07c283
+75965f3c30417806d1def37cfb0cb3f4
+7598dd97b0cae154b3d859fd280386ed
+7599fac5cb87c6e26dee41e5ae515add
+759ac6bcc7c5cba5ed4e9dae0491fec0
+759e78513fefb6a335b942fa63ff25eb
+759ecacaf76e264b76988fe29e73b067
+75a061a5ccbc08fb7adc343ac9d1ae85
+75a1f16c5da4fc2e14f06f25306a7af5
+75a204dfa908cbedce0b17b0f228efae
+75a2cb2bd3721226bf101544f33fcf94
+75a31aea4562e3c8f3206a885ce8f0d7
+75a56590e3a771fee22e10908684db2e
+75a5f7a796b017b8d4dc9bec7ea163a0
+75a64a02f96a6d4c51ce740211bbfd35
+75a660fbf1bec71dd03410a0bf35729c
+75a764e7ffbaeb90df1e4115c58e4600
+75a7890bb2464be719cd7aa4e490f27c
+75a7eb541a3cb23e38663cae0e5f5916
+75a9107132fcccc55d13603f1db2c020
+75a9114ff9386275f898e35786d5ff6d
+75a99e659205856471c1b1aeab09c158
+75aac3311bd5fdc8666024407f3403d7
+75ab7eb2bc3ae25725aa4addd12c6734
+75ac19cf952334ea660defcae70b28f5
+75b42d7a2e160cb2c92b1054eb8f3986
+75b519fc70615de7a1e3a634af6bd6bb
+75b62fdfee732cca7de5d308eeafacd4
+75b6e3c51ea9f7b87096a380d16f65e3
+75b7f9dde35ab9c5328980525e6eb354
+75b81a44ec2624897d5a50072f9e221a
+75b9430e87638fe94802cfc968b50278
+75b958fc4de7c8b8974156b85cdbfacf
+75bb22c806b2d2d28430dda9ceb6f6a5
+75bb54960ba8ad5e6ee95f23e7d3bb9b
+75bc66e6f13f3656223947146fd18ab1
+75bd3293c2146197dd87bbf7bab169d6
+75bdf5687a82d8a041b7b8cc019fe688
+75be95c4f7d28838997d8c16fc0b29de
+75bec2bfbe507095a4eee1d3092eb20a
+75bfc8b2ea5eaf8d0bfd691424b76606
+75c06283aeb4b0894bea403cb66772c5
+75c1d9cdf070b9ac39ba7a07097820c3
+75c36ad054ff18c67dc880cc9d604256
+75c3a8ec43345eae9919e37c612ccea7
+75c82f3a9f2c3cda3bb20fc059752d57
+75ca77c3ea1207b79b8d678fc73bb1c7
+75cb5ba5a7b70ea3d9ee1b16f6402a76
+75cb7d1b8c9a2742595c4b96edcbbe0d
+75cb8a2378fda15577cc41d2ccf03660
+75cbbfb6081af3dd71b3325fc5d40aef
+75cc36a9779198fb7b950803936728ae
+75cd4f2c648c08ee65fbe9fbba414694
+75ce3e7420b0a03838ae58527a92bcfc
+75ce461672f7ffc5c366b545712c4eab
+75ce772c3619d44df32f1862f9e1b2cd
+75cfa2a79a3d332842989c4e253e67ac
+75d03066c0d25b470ee4168d2dc2f049
+75d116a48b8660ea61d838d4c991436a
+75d1be6d874e7f1220a9e1cb27a39b9d
+75d5f129a46378a474958e14e07c4dfb
+75d6716f5303804103d7548158d1784c
+75d7ec5211a938f0a072f6ce0b4684b6
+75d847c133501f39e4a4b6599b590e30
+75dc1a2150f3bb30362beeb82597bb52
+75dd7591de07fc0093bb4b3ba98f6899
+75e12352e5cbafbf0010f1615badbc80
+75e1faff31da4b1d1d07341548f784d6
+75e25261a8e1f12ddcd893e49e8bf51d
+75e41c7f2f7be33bacb2689b3a345081
+75e5746071a09c9c2156fdfb5626b6ec
+75e5ddeaa9df6209a19916df7b458769
+75e63b052374ae25f58cbd73a8465f79
+75e86eaf7ff9d7e2431b967c149c5bff
+75ea88592f7586bbbc2778164e6c6d98
+75eae2100b15db737369ed4168cecdfd
+75ec5bcc7162dcbc9b6f9dc04dbe494a
+75ed214cca6b8d72fcf8d77ee1d56a5f
+75ef31d6d1e7e57f05969dd1a5dc07b3
+75f26909afc1c485a59a6b7464ffad0e
+75f4c55f0aa2297ab2ae95d6050acc47
+75f5d8f6e18651a54575d7acc19ba59c
+75f5ff0f5db3df05ae63a97b608ff14e
+75f6e7e0f401d311e9b21cdd86a1560d
+75f70fa11852310b9f982e05dbff92ce
+75f8303d3a4cf645ba4775b5613362c0
+75f84f68e5f5daf2c952c84412a4596d
+75f8fd9ee97eee2c358f2a3c9ed6cf39
+75f91ccd0cd76775505d988e04d337d8
+75fa872f3e9531ef2d0b8d765974b89d
+75fe010881c622d257e78634062bc2bc
+75ff52089492e16421019fffed59b09f
+76009342ae8f996c20498f8a78453291
+7600b994de3d055645f9397bd6e5e023
+7601153a4b73cdd4aee9991a32644967
+76031fb5ffdd3cf03bd28a9461a3d428
+7607394e421df6e48bebfb127c072ac6
+7607bc98b05f11ed9d8a7f7b46c828dd
+76080fd492ab84d5d1d6ce0ee076411f
+7608cb5a72f95d9cc5f3cee825988ed8
+760bf130791092002df19da4de4c8513
+760e8b6af37e2a93c62ace3d144797ec
+76127bbc793ba33321fe5ed0b319b696
+76171a6d2e198c51399c072c8c1a3f44
+7617bb14a961034cb3dbb511fee5f871
+76184dd58db95ed9afa403cf4ff3cae9
+76198249db02529642f053524b4e6470
+7619b0e839c3ad3d8f8ccddf2e7759ac
+7619f075406605f4f6e480d64c76d74a
+761a27089e07282c78943359968eeabe
+761b7170375c6094a980c448504921bc
+761d18b7e1e16db1aefb118966b28951
+761d899b480344f1260c819206669a2f
+761f60bc095b609347360887a519efc9
+761fac49aa7858693deeac7b58cb7578
+761fdb566ba41ba6934d56e6231b0572
+76255ebecb5260109751989e93cd4da1
+7625e6819d152c59aadd211ac0421c9a
+7627eb28c53f9a931c3c042d50304fda
+76299a2a869f4b916ca385c5e87dc65f
+762b055b60a9af079841ea320c28a4b7
+762c800b0beedc00ad25bb08ae2d727d
+762e189dc74bfda111aa65078d333e8a
+7632f441f07e4ff0ba342138423fdec3
+7636088181bc5ffa236b7798a502cafc
+76365401ec0a14cfe5d430167e60f793
+763696ee1beaa32cd87d51434cbedb14
+763edbae067e371ec9ee728af557be50
+76434dcd345cbe99fc1c03b93ee1c277
+76451c5e0156643431767fe64113f16b
+764b91ad44767e67b5582c6cebcdd84d
+764bbee44c40b4b377c245e40846ec1b
+764e54dcb3587e6214f6ded8601eed90
+764ef90e1e9c0caad45aa2ddbe7da265
+764f5901b9db7cdcc7d5932b6d8c25b0
+765368d75d8e89a971e52949193507af
+7653aebbadbf23423f59a5997229f012
+7655637472af77820e05bd83d0d872c3
+76556ec2d83afa22f0caa65d7714a839
+76563229842904c36a612dea8f42753e
+7659e478620fa04a6d8a55559d2899c0
+7659f5dd277732db2226727790c1de92
+765b6acca3dac7f2356dc7aebe6c0975
+765dbce76e64f5e24eea46fc89a9e380
+765ded42ac52169e9d148dea0d7fbef9
+765f2d1848f5f9d3c8ed63f4618ca0a6
+765f7add89c065c13c3483026d3082a1
+765fa79ab2a1cb5f6bf086f7c2c1f26a
+76607325dbc512bae1ec9ff6e926b517
+766238dc39940cfff4105f2c6cc48b73
+76629718fef62c9f3460e2ee323526a8
+7663838ed1f33994892d4d41079aed2c
+76638822d2c4b1d5860e1081467ef8dc
+76649163019ca45264f7fbdc7ccfadbe
+766505e7b08068bc5f62317b74c8bd41
+7666c7c68e986e2ecaa651b215337530
+7668e487efce447dc84aac24e0dfb616
+76697b8ab0155ce1b74635ca5950f149
+766b2e79a4adf32cc3c5d6fda95ce9c3
+766d2d365f92605c2fb8ef16495743cf
+766dfc84f668f1d71801ed37d6454a36
+766f9e54d5ae91dc583423360a441033
+767012c299b1fce299baeaf466a632b8
+7670391d2e6ae709c3de65221566cb35
+7671807f57c4800ac822da2be6d9d08a
+7671a3ab2381a854543f8225ecfb3773
+767251ec8529ec97398fb30a9e9b4b0b
+7672e8d96e407cc7064185d7c66fc0a6
+7676751b74ad398b2b8c4ac5d10fc9ad
+7679a474bc36525ac70f9b8757eff310
+767a0b3a30c079dd3876fdb432070e60
+767a62b4762602d0891f692ef02270c4
+767a8c7fae5cd15b20605a3cd0331384
+767ad655ed82885410909fccbf0a3cfe
+767d9da631d601908aeb725675a7aab6
+767f8246b40f5dc84cb66edeb0dc62a7
+76814be8156e04d5fbe2d92f769aef1e
+76815e64e14401342b1e852d09a4cb1b
+7682f00a267748468fcdca40f16668bf
+768328413075628d8b02697e91f2c294
+7684eb521411dd37c508e18f04e06a1a
+76853a4dfb2156687f54b47574b6d2d0
+7685b53ff4cbd20d3933f055c6db2421
+7686320daf01129c86218d15a730008e
+76867e1cfd205c4aa7e3a33ddfc9aabe
+7686f61dcd48553bdc5299e229ffc273
+768899e1c070ba8564cc45d595acf897
+768abe1f43fe2c55f67f1142d2e36783
+768af472e623ccb160d0388ae99f928c
+768bfa07fe85a3b1c7f3b4d1879829f0
+768c86c293e0228c4e9b0a9b4e7609e1
+768dc8863736bb679c9a35700fe3014b
+7690bda8a23372847d3624cb0d715caa
+769105930d701e93c5c19efc03ad84c7
+7693c5f25cd4f9556397061f2a2b09cb
+7695790b05e4250102672cf12803c31f
+7696da11dd801261d5d9c1118735a14c
+769793cf60614ed827114eae8486978b
+769907303ba1e0fe4c635df229b7268a
+76a0a218486a26d486aca6e5e450b081
+76a2cf20ae22842cac67c2b84f692380
+76a32bccee22b96b8e05143f3935f4fa
+76a34649d9e2cddd90baeda3b74db01f
+76a4e0b9353f37e7fbcb7229d98412b6
+76a622f75ad9a74d05949c8ed42a9e6a
+76a71857957c8ac43be1b70a98e9af24
+76a8af8d7917936123ab8916696fa2d7
+76aaea8d7257ee97823d35e0d0ade2d0
+76ad5f26225698759130f0f6c0e24a77
+76ad9bef19347cec3ef2dc3e110e5143
+76ae2572699935f45bc3b80a042d53a4
+76b3573ab83c1c182e2c665bf97b4e1a
+76b4cf96cf96ede42de839f3791488b2
+76b662e878923ea42ce74715dcf5a0d7
+76b89820dc7952e7f29e56ac01f48eed
+76b8b716627d6fe227e91fdc12c360a9
+76bad596317167e08fc2e1048dea78f5
+76bbc03b318614f9f8927dea29ffb5e3
+76bc8ae2a47d1d3cb78fecb513504abe
+76be668f145191fdfa9e06916a5a1340
+76c06f86fff707b797ab705943f4198d
+76c1b9a08eb7545c7c5bb20629405872
+76c279f72b97be96109acea635db0a27
+76c35f83c7eefd25e2613d618042a45c
+76c3c6d16277589de0d707d45e4b793d
+76c57d85897e270eb684a289c5976153
+76c5a0a676ed4e040ef68aa0c26775d7
+76c77734877a35e8a186f93bfd8fb588
+76ca5fc8aa44ed7290e8b3a6f498615b
+76caae2134246be94d94610661e1db68
+76cb57fb8eead7941032781012228088
+76cda79f9541d33eca3f3309343c4244
+76cdacaae25015bbe5abc9cbd43a088c
+76ce2909146e98dda90a78bc299e70b1
+76ce99f35e6b96149facb47f02d07230
+76d0d38f2903d97523107e22d543843c
+76d3203cc086e312a2b0af637832b4ab
+76d693148a0e90af8fab110694bb215c
+76d85eb151e55bcf702e9306c1091667
+76e106e5b118c51c5fec193c839323cb
+76e2da5790b186836eb26cc8ce76ce44
+76e382e5013b6682dd372f0db2d95020
+76e4d311d362a6230e8b0c9e5b0afdbf
+76e92715bc6377df686d4160cd7e0e45
+76ea08f5afc8a51e5a9ac665fb94e912
+76eb6d6d9320b69769e1c4e9fb2fc919
+76ee85a4a08602abebeea642b9f8d08f
+76eecb0951eefd733f5069eca7ba9d4d
+76ef6e644c7774dbae1e44541948d82a
+76f10cbe2d8aa06fcee033f4f65ce651
+76f1a068de3cbd433dae7146775b6986
+76f1a46ffad3caf1dde6e26b1c1c3ac2
+76f1c5f700dd6f573b5757481381e50f
+76f1d0f69ab492310708cee7ce5c64af
+76f2a099b9f1f1a28f482b987ebaded0
+76f509576ff1f823ad0262b6234c8d86
+76f5a4673b7d0198a5b7964112fb4ad5
+76fa5ca871be5525a9ba1f45f09628de
+76fdbda2bfb22b239079a8b346a9746a
+76ff567188b793f04622bd10346765c3
+770008e225edbc68ed5e6b90161b8206
+770083cd5f2bcc26389660994066fa88
+770290157cd2374b2eb72b5929159b53
+77090bd1f6939aeff93b51f948445d63
+770a094113aef2132e9c63aa0d42fd2e
+770a70fcdbd0f75753d48de3700a5432
+770b7a9e7eb98ae9c543b142cfd8c689
+770dbd8494cfdbfe7f5f78c00bd2b1c0
+770f76b682f2e28e36324c643fac7037
+7710054c0952c134de1c5cfc466f8040
+771119d089e19787dab0a25e8d3cccab
+7712a75943c6cd478273cba5b1af6c9e
+771363220aca198a128f39df5ff62317
+771456b5200becd26e6f1153eb2fd3f7
+77149b51c7832e3c76d32dca2a36d592
+7715422594b72166ec93a5220053c941
+7718c966d56b0b7d3201efd03a62a7a4
+7719ba479ae6ee85588e649cf11b4738
+771e92b40696986b90d1fb35bd3b46b9
+771e9ed3cdcf27e816825a007c00877c
+771ef84bcbbefb37d2675e2b2551a827
+772210ffb643ac5d5d97a45658f04a62
+77226a7d2293447fffb54b052073c2b7
+77230595b9d4b322d0c4ad42ada9cbe9
+77271ed69da14988f56ca238bce073f5
+7728bd7f4f530b9ee80049302e983dbd
+7728f5d0cfe258d130c460a5f637a021
+7729720472d5d2bd0928fbac485f3787
+772977d188e0f158d4532028d9d2ec08
+772a4f738b62410daa231a77c18fdb05
+772afcffb33991103eeb7e4d44a22e81
+772cc1843ac897dfd5900c4861c13515
+772cd03cd64d1845ecfb39a7c898a989
+772f34a6c476709667030675dad36612
+772f66885643a7c740fbad203f8472fd
+772ff8c530337c8443d8e9fdbf6e9ea1
+7731dfcd001c11e75d8781d084890f07
+77322fece31e1c0b2170dfddc71ed2bd
+773250f1bfc439fddb9ee4a8f00cc44a
+773264bc519445daaa92f7a0c871d000
+7733112961d338d3c2b3b34b249b6c54
+77346d7992de3a34ba4f0f6b78bef2e2
+773767eafb6cb369d5df2e1cd5580c35
+773a8196a84a459f7238d8e0fe91f6ea
+773c1924ba24ca13864d0387bf4bc81a
+773c9376acebbe989b65171071ba7e81
+773f433d7ce0dcde71061392d0f7eac5
+774147ce68525da917463e153b46ed25
+77426384cc726520f3608ebed05725b5
+7742a55f3afceedec928c46506b00f9d
+7743e0ea52e9eb0189c4a652cda515f0
+774672b8d4672eef0ef3f65995aa347f
+7746d92c1caa8933884db0541cc70cdd
+774c8cd0c4ac9b1c7fb559e867486376
+774d2a5ad949bf178f5c7e60f4b881ae
+774d9c42c7593d2775cbc4c77036a712
+774f2ded0e126546c215258d2d49c2dc
+77500f41d6e216b4985c151cc140c03a
+7750a3048976f9f6759d56c4ec9d9654
+7753323d923cca74080d0e3ba2dc050c
+775392426d76b091616a46fa9b842142
+775396c096a51efbd4d9777c69c19d94
+7753fe5b0a70dbd0b36e95e90faebcfe
+77577297a448b6c0f451b258fb2642f3
+775781837e0670eb0abb8cd318664b80
+775841e8fcacbecee5ea87141d64daeb
+775b634e572c2556b8466fccb4ac9eb3
+775f83524a46626d4f3879828518c6f4
+7760354572394611e7701b1f13b00bd7
+776239277baa147728b48174c301bd19
+7762717f152c872f5e8cbc56818a7870
+7762eb1aac8775def76b5e14c3eaebcc
+7764239b1c9410d8bac159d43845017c
+77642c224df5fc38ce02c37af4fe413c
+776572386a034b549aaabf0532d8ab94
+7765c8af5bf85464d549262086b135cd
+7765def26a2ac3f881f6c023abbf612b
+7767b7b1d1dad1c2a9ed3f31130614d8
+7767bc9c652b1049e0e46b7bd9d42d59
+7768a32007279e2387090c589197c0be
+7768c8a8a238d261bf96047050d86fef
+776d0287c4a3e429fdc15ecb83af26de
+776d36fdfa6f43d3b00d79d319d4f3b6
+776e695c111abff342199392d10ab3ac
+776f7cb48f3e8c59c97d4f8dc8439bc3
+776fc276b20d0eabd609aacb9de42543
+777033250ea3b2792d2cf83d01fd5867
+7770bc7cc88dec0f4aed1ed90119f6bf
+7770fe7ef3cc7f2661943e1c1bcf30dc
+7772104b6a48d0a964eab08c35b1e4a4
+7772db192e29a0f36e81a7ee1f866fa4
+7776de8a06a145d461aab48d3a6b6052
+7777ff7c9ece94b24c685daf078827fb
+7779b417e32678c94a59969de4617f23
+777a10b8942c68d0266f25f030359e29
+777a362eea1fdfb519f75526bdf30286
+777a538de43f1257d89cea8115b45b90
+777ba41d8e23f80fcdb57f42dbdc2529
+777cb032bf5a044d37de8b34447855c3
+777e061c57a6c24372dfad2b8ad52dee
+777fef630a080d54ccf77b278bb014e9
+7782963631230a66e1ead7ca76ed0bf1
+7782e41382ad913d475485f23556b6df
+77859d8a35c43866ea5d81d1a19f0266
+7788db63e444cb5c3613062efe1cb530
+7789147af1d549cff0ccf98530005f8f
+77892af404fef357f6d8878e347d4727
+7789609e3d9d6955e3384d77ae815ae5
+778a4206c65c60b96c7bf4558f41e3bc
+778b0d8e331e37f3f4e0d1cd4f5d4e7f
+778bed418ac6026bc849edeb43409464
+778c81b8fb95838b8d70d84dd9fbfa6d
+778fcda080a0c85a3068cde5e60b599c
+779127caa3ecf696be8650190116895c
+7791b73de84dd70b0d820a27c1ace434
+77923d1bf035278be7b1284c92211dff
+7793c6dd52b1cd8a5a6c2caa2bcc242a
+779732893f44dccc0b0b690a16b4b89b
+77987bb87c061f55596c2e1ce1361fad
+779c9fa0d2d95ea1505bbe258d7290bb
+779ee912ca8d4c148174ee9c990d58e9
+77a0eb4741fa034ceceea7a89676d43e
+77a36ff89f19e5c117e17e8952d536a5
+77a575ba2c666c3e3382d701d4a8b033
+77a6cbb4d82698381353de0fc616c1a3
+77a7168faa5fdd3cb2ab45711918c5a5
+77a987560007eb20a13622bb2873a031
+77a9e1612cd750b41fa61757d4d68877
+77aa01040d0b22cecece20ccca3c226b
+77ad148883917b85cd7346acf8652141
+77ae51dd66be6eb8683592ccc596284f
+77b034c9bb87f441649722c8075fc077
+77b128e5cd17b363a7991db22b26d673
+77b231949ba4904d7d23f4a6cd2c8dd1
+77b3da2a8eff1f911909104022f16e49
+77b4659485c8c0bf671b14ad659909e7
+77b6b028486f5431bd1097ed331ddd43
+77b6f59bb54629a77bd3e3d675596511
+77b79feaa65922a75907458ec250596c
+77b8185523c075c4fada9c994f6a5e2b
+77b94e86cd93af8aa6f10cbc3edccf79
+77b9805f015145585243d754968d9052
+77ba6d7cb88747df0b640db3b929cc78
+77bc4b354310e95366576cc317775f79
+77bd0cfa9deecfb90dcbbb3b9b76434a
+77c23d441864ea25bd27c78759871429
+77c52f354b2202a8f94c5b2a03788801
+77c673e2d2c36e4e54cc02406d1ae3ae
+77c7a56602be97d9c6090a39415c1562
+77c7c347f3bac2bd21ff471bb8e66b96
+77c9fb8cf41b16ee29c7186ecfd86697
+77cab676895d75370ef776c99ce29d08
+77cb81eae4114019cd8e8baaa302ddc0
+77d03d27b69f931b23a49d2f4ac51aec
+77d16004779fc4aa2e52a5a3129485a3
+77d22316bf50a026848dfc7d7d9c9bbb
+77d3c991a662b87068fda9ffc77d10fe
+77d871fd463c521dad19611ca18ee0b8
+77d89961ab2f2b3f0f9dc71eb54d9b70
+77da519913b081ba34cfef082a52fc19
+77db476e202f68e6f13570e8216bc53f
+77dda55b96f8ededd8363bba6dd75378
+77df6e8280eb6ae7212cbe3ddab11087
+77dfd264d5ac91cf0beecc470c81808e
+77e052e0b7cb058a2de324a1a45b7649
+77e39b312b4f8e8470c8b114f4dd4294
+77e6927bb9f2ad1e7d9d2adc36045103
+77e822b8495472ccc3d78a6aa96db11a
+77e98299b4402f467fae5da747821ca8
+77e9bfc85482f66956f87c5009ab1c0b
+77ec2a2613a13b96aad36469eada6642
+77ecf85647962b102490822ee8d4e069
+77eea7fefb7a336a059b74f6848de4b1
+77ef5431cebeb5bd356db1300a6bed36
+77f0952dd05ab68188ae0353dbe812a9
+77f29fa42e74b78abffb0585ced007fb
+77f41a84d67efdf1af6cbd135651997f
+77f4688c7b07852d52379bbe745cf8ee
+77f85ef553a64b9eefb399de742de714
+77f9117884bc643ac5f726ae7f65b66b
+77f96174209783be0ff061c1ca0cb8eb
+77faf6e758182c8dc18be7bdd1359971
+77fb4e91f977a000b417cc5a44f99680
+77fee2fd1a000fa4186186bf989e026e
+7800e7a5dfac70041678695a3aa5831d
+7801579bdee0f8ed243ec22b48c8c991
+78015d2b51dbc17d4d696f89585f6d6e
+78019a7e356738eb6e4722be932346b2
+7805845520fead33e6abe5a7563cda65
+7805986fab6c7f4137febd105079e668
+7808662175d47e184382a36a20269865
+780d1eb461415bbf30520179f459a2e4
+780e2a865ebe6762ce5276b0d207f4b0
+780e625e9dbdc2dc0cdd92a93670cc67
+780f420f5a9843fcd4f52c9f0f22f6de
+7810ca4e37ef6b311117343ddde8c163
+7810d9ca371ef3dab39e36a825cb087b
+78113b832e0b372a15c9cda136011556
+78113f4e4b795c037102f1522249fb9b
+7812233092636a8cc80a75c9129bf664
+7813204f188eb6899d1634824c0814ff
+7813454108d5aa6af2a0a3683cee9058
+78137ddcac84db12d14a7acbdd0ad3d5
+7814202bbbb01913511f9a8343d6b797
+7814abeea0ed796c6c9a7921e9e583ac
+78168e511585355cafc891fa8cf63738
+7817d06e44d1d761e5332db82be1fab3
+781b0fe1fe8a7825cdfcbe6fb3c6371e
+781b65200d68792e3c7f3b7e82445be0
+781b80b83f2ed5d63069335a240e8f0d
+781d65e987001643304f7e684f883b79
+781db07c11c6461fb96e8cf9fdff003f
+781e7efa433f9e5348ecb080d749fb46
+7823351a0010db45d357816d90b3e096
+78242cf915413e16026771c7ad937090
+782740698d13560e953a76ff55a228ca
+78275abc31aa7ffe972e45d3ab869a96
+78276ba17b81e35dd9be35cdc5946fdc
+7827c944f5c2b2ea78149b1c1941c28a
+7828d40aee63e50e1c0f740eb7ecd609
+78293908ad71c707c05a3223c6ccb22d
+782ae383ededb9be3da7c5027292f39d
+782bf247450224831354cf237c56c61e
+782c998707b2d61ceab2b34b5eba3ddc
+782cd8c2754b778ace4856cd85e3f711
+782f70c80e5f626d8de0dfb412f143a5
+783354fbdd57ffb2a746ab263778b1e6
+78366cad4903755ddce9548e7243ace6
+7839c8170c6d9b25fc60e7bcd10ae558
+783a33b566b63375001e94609e3f8e9e
+783aacef476a7b5f5dc50903a65e5554
+783e1a0f310d7719a49e738dbf5341ce
+783e4ad79b1a267432a1e45cd2d292c2
+783e54245957f75c9b3a906d111950c1
+78417b6b569524bbce94fdfcdd57aaaa
+7841b5e62275d1570402fe32efba33b8
+78428d802993938ad78a9c4b226b8f15
+784294e2aa48b75df41908bffc5dfff8
+784667b1469c5844592fd59c3efa4359
+7847759b14cfc2545e295ad5b4fd248e
+7847d20db0bceb94f93f0e87ba96fdc4
+784d8ccca165e797f2fc82741a73655f
+784ed53fa39f1b8b234fbd5f125af206
+78517d982ee511293bb9e5593f7da641
+7854aff7d68d4a5aac52edbd496cfd8f
+7855ababe4ee7a53f8806835236a7b77
+78566f74caad6f98d450b6e7134b9e7a
+78569f7cf6c6be15fc58ceb9e0b94b97
+7856fcd2d42964948555ed8561ee079a
+7859b7f818365615e243c6140c7020e7
+7859e870022f342c58bf661545bd88a3
+785ed2b6840a5674df6027e39829f991
+78628a802d679ba83de1fba9016deb52
+786299c812f1f8035616be929765f74f
+786410752874111937bfc838dc79ce9e
+7866670e83fb8dff959db686c1ad127c
+78677bef2c8c515af57c83a4840e1993
+786c2271e92fa7f135dfbe39f3563a18
+786c303379cbad65902eedac8815d895
+786c7e6fd5fa1ab6621af1afbfd80d1c
+786d79987c01946470f9b27ed4f8c70c
+786e3ab912d8b936d2419eb881d676c7
+786fa72138d2445e73e69558a23eb485
+786fa7d62c99d8e098f43eae734048cd
+786fcb4db107eaee3bb10fdef8812435
+7870b85ce4f5c3028cac7e5aea212e70
+78713fe73f292c6a56ff755594e68516
+7874c378896ff89ae7508d2b47639e81
+7874f4600e41e35a134170e32a6c7739
+7875517eee90d46d5a32facf8f8e1fee
+7878c503a99452126b34a9678dfe5d83
+787b4b9d54a7a102ecf601484543e8a1
+787d99f892f9233a3b20767c485cfae3
+787ddf1019f1a2727ca0997c74c65f07
+787fd0c866c6f705ad3ee228cbeb7997
+7881f34a7f3ec531d7fdb3b998839879
+7883611dbc87bb8182b8fb974d545afe
+7883cf2e3376f22c1e90485a2ade3003
+7884c67ab833bfa586f5a1be415f2d38
+7885c653887eed4957a4df9531452c59
+7887aa90ea1dd8fee81ccca23718ecf6
+7887c50f381fac7fb2415c96b7e3de81
+788889627f4b0d9580828ca97254bef6
+7888d24a01d7d3aec25900775004ca0b
+78892669df3489a6c3a7da6b842f63ee
+78897344df384d0fe7b7d0ed4755d446
+7889b11d99a431bdb7ce64a5571e07dc
+788a0deb0264da6ea8e8c76585cc18d1
+788a131a4603338ffd99640c8ed08919
+788acc82e61837142ea96a0fe18b861f
+788ae763e2959b010bcabffc2b4d780c
+788b53e6edbea8622deeee183683aacd
+788bbe6994ca50b1799b334773bac0a3
+788ca1975b98783c5f6388b7221a246f
+788f3fb1dd4a1ebb98a00673c2f74c66
+788f91df63bf1d7c7d2ddd030e87df86
+788fa4a7d6e2b6dec38cfecefabcf826
+789032974b6ad73e46479bc5a0cc658c
+7891d8524ddf09b39c3a9fcebed6e547
+7892ec8ae855cfdffe02d08f6d892dc1
+78938a2f96ad676ae0b8539335e12c7c
+789555366690949ad659f4446e15281c
+7896578870ae75025390f0c11511d78f
+7899db101b66732940d374617decc50c
+789a15f55d5c2b97b1ba91bfd896ec29
+789cf5f6ed9908f013f7a730982db529
+789fce2588a968105e9e7b13b2d8e70e
+78a0602829772da242bbb635c6e4b962
+78a1da907d8c193072b79907506d0889
+78a389bb11deed9a1be79ec219a28809
+78a48d02562142d7fed242828b14c7df
+78a49188bd626eed7b68222d785ab7cf
+78a523969ce53bd58e6e82a0541a1b1b
+78a55dbf6e1acaa155d26842812772ee
+78a659b6df16e3658dcead92475f5120
+78aa575cd9fe47a113af8a90d7be7bb9
+78aaa26f678b155aaa198fdf871f085f
+78aafa3f89cc65c3145900c43b83bc0b
+78aca406d2f0e51da78f4e4d6092708d
+78ae96c8a50b35fcf1eeaf8ad9de25c7
+78b4b4660c4db8ae579bb7460c24c7f3
+78b50879cf1ed1651ac816b13b8e7498
+78b6952c3f846be50e62ceebf19472cd
+78b9e7a2d8d12ed1581661248c405ab7
+78ba7d63efe81b88d8091d412609393e
+78bb8f5c0262014ee68d4761af92c448
+78bdbae06fa818f7929bfa307a12bcc5
+78bf751ff25197cd1ee8c29fba66b6e0
+78bffe753c1f08b5343c5beca08c44c4
+78c0267d786d1567a58ce4111a1a5bb3
+78c59507d5ad81ea5ee07f1951f813ba
+78c7c5866e70153cca255926573694c0
+78c924ca1e152fdd88ebc772a84e4524
+78c93a61d3aa383f0ca60b0751b867ab
+78cb7c7c31c9635a89b0bd13feb257d7
+78cb8dab1d10f90d93f3710ffac94291
+78cc75eb174705c1cb14eef9a891c9da
+78ce5ad040e06c58cde4de011db7552a
+78d1793355a9e97c73d9fd5adbcab833
+78d232961526827c31127131792f04ad
+78d34f5b6ebaeeec3233f12cf78ce47b
+78d737c8ec70ded91442770af85cece7
+78d74a35036ef9976c57b31f7c2819d9
+78d8218acda65afe66e8e065286b5ee9
+78d8e630cd8567056cc8838166980929
+78dcebb1d8c10fc40fd72715e462e06d
+78dde448e653e6302809233ec0cb19d6
+78de4d44486c36dc5547c67b9423d74f
+78dee1311798c407fe985ca8ad4afe92
+78df6d59b68519e1ec40fc5852f08b8c
+78dfbfced373358f7b4f536a85a13d04
+78e09ed4e0c3e3aac389f9deedc33669
+78e158543fffc826472797986e88db55
+78e216828ce758827b96facc5b9c2419
+78e2a6946a6551139a899f159d027d24
+78e30137b2326e5f91150384337ff244
+78e40d5b0f3dda46ee7e9785a6970c83
+78e455e450bd2861258e7d597e444fa5
+78e8f6dd2628697057150e1cffeb5171
+78e90cdc064d70aa1809fd16bb4e9cdb
+78ea05a60010cc035af37a280637f134
+78ed5b250f96bb826275b3b16bc3fa95
+78ee1bf4e43182c7b49ef0d2b329e63d
+78f1a315e81b0b81aa14133e409fd942
+78f319e595d8cdc8f901aadc2ce0c08e
+78f4b67957faa1a45f3d3a2686d9d77f
+78f648b3f2da9663ea99318220b92631
+78f697cb9528de4007407b584de27b8d
+78f6d313b33098cb63adbffd942c2692
+78f749dbb9635b61d95fd77c654f09e1
+78f767455ca53debd589c48e58bae4d9
+78f9a5e8c422aaff7f5679e8f1cb4202
+78fb2a08083bf61b45136bf561c134e0
+78fca5c2d1eb265388365b13536d5f84
+78fd4c7837ebb2d45ba6badcdbce2622
+78ff368f3c36395217d6ea01ddf2d25a
+7902b1a168d69ed03091c041610c7c06
+790348bda5b59e26466f7f9f20a36445
+790538b6974bfd0a6d564b909a92ef45
+7906495a15f82da59bfa79e1536e4457
+790b72790dd5d508a42139b622912edc
+790d9acf7ad26d4720ff09e27f8c050b
+790f1d6e2a924822938bd473d0db15ae
+790f205af1a17dc5b7cdc3ecb997409e
+79100b0cd76ab98535b7fed80637915a
+7911ec9ce4b85dc182111bf13a75526f
+7912706d0c3c6a6b0e68a387c4b52542
+7913cb3eb256222c5b9a142b7f15b8b5
+7913cd130e18265104f42fe4d4b9c0ba
+79146eb45115d71f4778678e5cd03263
+7917d4fa7e763db2689abc98acf28efa
+791a50ad6c8d218208a74f21e3be8fcf
+791cd49f7160b0fbafd5e676b5aa4f64
+791d0d5b81539610d4b4fcd594e0fcd7
+791e1fd7e44160d4c76ef3fdbf3a1329
+791ff52835a2881eec06b11343cf0b21
+792048a14a704532bca033f1ffd0cbb0
+7923719f3af61e820e391a5995ae230a
+792640c94dc6d8a13b70af1b22a3e88c
+7926757f6ce3e7cf7e8bb1697ec10e43
+79273e653dfc7a104bb0d3c4564b5ca3
+7928632cabeba99de781f50ae909e9c8
+7928f8035489a286786827acabb980d6
+792934ea073ace55e18fb4e8530ce8c0
+792a38c756291254c57999b6e7e285a9
+792a60f0b882e3e44f408acd886a9d3e
+792cb3259029d881b14170112bbb04b9
+792cdf2009d91529e363ca13b195ac22
+793003df0fa1a8802576ba755c36a98d
+7930623f70c285c27eced62cf1ece718
+79326d73f2b3b214cf74eda564e861a2
+7932881255e53f2d97fadf8a679bc436
+79379cae614178aec5686622e08cead9
+7938434854e6deb1423ba4cfbe2857ab
+7938c5b3b66339dcd790362eded8c632
+7939ca40e5f9f0ef8b4efba20121989d
+793a336ec08a6fb33e5e6d712cbe967a
+793a488ab6f319eb5bd6333def2bcc0e
+793c5384284fc4be7036e4d87061848e
+793da4c34a36a951f582e2ea61ae2553
+793f88c92760e52583d3fe884cad46d8
+793f8ce4fd2fbbeb14f60f3e27ccb17a
+7942d3107945a73c384dad5bea211654
+7943bc4a287ba4507e5aa0bc7798ecaa
+7946080466aa7bc217076d14e934bd73
+79464279f478709560261350f9523cc0
+7947531927e8992f03a8ec29b18917ff
+7948c3f29f005062bc94b31c5c90399a
+7949a20ca1c1a79ffd1d2ac8b49f8144
+794af545cf12ad46ef3988fc465ba390
+794c202c3b281be505998080bc7192ab
+79514b72447649610db18e0aaeb53dbe
+7951f18200e920faed16bcfa80e62c0e
+795573e8604cb20802c014f468d2c1c6
+7958541558abe625338c4b1dce9cec80
+7959e6df9d373e280df48c484da1effc
+796491e43f8aff2fff0790dce552875b
+79662646e9b8a7c6c9fa7a2a35883f63
+796eba8665eaf6d753d2fb0c58dc2f7c
+796f8bd8555d2b46dd4a28008c7176e9
+79730851f941e4b16926459dc2ec9f60
+79736d63ea9e5bc07e4fcfcc54346fc4
+79745b1fe46e7a55368c7e571f56da66
+7974daa188e0ed7b51ab060b658fb927
+797987c43e057f0aa673cff76d3b1d4a
+797b684ba66fe3a42361bbe90b79d4f8
+7981087e629805464fc0040cb9a48c60
+79816cb0fbc8301b7d10d7f87e996323
+7982901d32053aa71575f35f01870a52
+79832dcc133aac0554d74783e0df57e3
+79876b43065b114161a2a2a00b24ffca
+7988e73d38fe30b3f4f8379f4c48564c
+7988e75a8e9f46904ebc476a352d3944
+798a4a5dce1a8b146ddbccf2e3aa11b1
+798a5267b5662d6e5d93ebd8f7158013
+798cc6ede2f869671fef0a55c1a072ad
+798d1d9eb113cd6d2d3b78fb524c6968
+798e5ae737c3e8b7840f5a0775d06277
+79933e97a568811149beda08c6992bab
+79941d9494aabc0cac79f17c27936fec
+79982b35df1834ba003d463b4de60a69
+7998832a321e24c9be118c333f4113a7
+799940916e52418aeb24d8d6c871da7f
+799a9856a22b6d9038597eb8a11a45f8
+799cef9d3674a62fcee7801442a90893
+799f27b344a4da49a474360085974c33
+799fbd7abefb6e3aa5863faeaf40e764
+79a0d0a3f20bceeaa459e9f4802cfcf8
+79a16b56ac472f251f56ca9b15f36ee7
+79a1be17f5491ea6e95f6a3c16bee3c4
+79a49ffb6a0b36804fc9c4abd66b76fa
+79a55f70f3120c1ca75f370f9745e527
+79a5e2cad1b6044cb0e5247204a5545c
+79a7be4ee8343bd00d5c8318bbcbedd0
+79a96e997022319a5a36e73f60521779
+79ab79a34fdba6a6d662cfebb229d1ed
+79ae2f3c6ad2c0855e449c1761800e85
+79b194c58d03a11243808612225cc9e6
+79b1b21f0950102da33d2591b0f5ca6e
+79b2e9ab8065d49cfaf9e17845dba4cd
+79b36e4458c293a6bf93e7f6e8c59184
+79b509936941e3589c6570f24c31401a
+79b78c98e6dee19b2cc193810609ff89
+79b8de7e1268430f75bf4e24a9830a0f
+79be487850dd3847acd02b450b2c5fdc
+79bf9d4d1867995e86c26121ad922f83
+79c0395061562e083eee6dd78a8bb2b3
+79c13bff25f3e88f365644a885cc85fe
+79c14f8cef45c1d04b18840f63e83bfb
+79c656c62c3385e06cd08e8208837da9
+79c691c360d02a00074b1bb7d652acee
+79c7e3fc551b4e41a3b167e4ac684f6e
+79c8815548e52747dc904dd6b7bdb336
+79c9ba5237eec035f48f5a3241bf6aa8
+79ca5bffea4acffaede18055d6a859f0
+79cc110f1fe671f4fbc7014f1bda2461
+79cc18458d3e03f58bbaaf921946a168
+79cc5850b3f222816c9a760fc7aa7948
+79cd31ee31f2a272a9a365af517008ca
+79cd77f5e3f2af3eadd7ed6f14aaa780
+79cd93010468035595286416da14458c
+79cf549eb139e152370ecb75f0bb5692
+79cfdb9408fea80210183c8d4d97504a
+79d08b82e1075d72a2da57d87c8978e7
+79d1254b87883bb41acf73c2554ca644
+79d347c2772169a60f18132204489e0b
+79d3e41597266298071355e8949c46ee
+79d3f8ec97b4c38ab2e2a0d2d468ed37
+79d5a4fc7abed3fbbd89f316ef4a7029
+79d5ff161a8388ed4b60ed40e425124e
+79d64eaab1f5ee502b4bb0305100cacc
+79da32158539de71b0ad19843509c270
+79da5c23e6a98075706e5d784e521348
+79db5cae0f0c6996c9451d0df65018b5
+79dca60c45db6d2ada2d1356076f17e3
+79ddd46712bf5f8c87b79db9c23c8670
+79df27edc8416cea8329d062cb7be46d
+79df41dfcd5464bf21f0adadf059b9a1
+79e1e48f93282018a4d7887c8fedaa8e
+79e6927c7adedc418865b44517a36a83
+79e7af930f42b9e96c942dc9dfa520ad
+79e7c6fe22f7382ebe16abb230b2e7f4
+79e88432f367af562c7f4af5a7b3fbc3
+79e8d1aaa01de70e8584406fdbf4cfcd
+79eb9a4e97f876457942b1dd86a5bca9
+79eba5fa7ded7286acfdd19bcae2643f
+79ecb5c591ddb5cf99d1e206c547e3ee
+79ed5a85a96292cafc4baa41eb96ce65
+79ed8834f4a47b917823a77d197cec64
+79ee162c6849fe512833ae10893aec5f
+79ee9d39961a70f6bd8637487797b468
+79f3585c62972095e04eca36da01f5a8
+79f475feb2a98845cba93a7cad958823
+79f4953557798fbe2e5caebfa7b85571
+79f6e4701eb16dd5a48f59d6db27df30
+79f7a06bac6b499132c19caefd5b9718
+79f825f7dd03e29242c9189f454af1e5
+79f8a41600be68ffe89fa83b5075e602
+79fa6ecb56c7599fec398d55c50c8ee2
+79fb4bddcd4d5ed1b58b93712cc77af2
+79fbbc22e665960207b2ca0464bdcb2f
+79fbc81c259314d3fc2183bcc7e77f5b
+79fd2fa49204ca3e1de242e69c303cb6
+79fdab856eda9072a918610a8a19c4fb
+79fe92f82a8f71a6ad7aa60badf7ad42
+79fea968590242fcc91227885fb68918
+79ffad0d06b1044587297400b2d6fbd1
+79ffaf8082e825b497d39fba6314f02b
+7a004af390ce64b63708dfa65afe6e20
+7a00643fb00c3d20ae4d4d37c88e1dd7
+7a00d83d51c910292d3b97c753534b7e
+7a0195e63af4c6637721097584a19773
+7a029e72dce9d5772809d9b9b76eb854
+7a02a152a071e2ffdaae84c86c52b90b
+7a047d89c889154be8dbfc794f163f12
+7a07235e7cff1c4a248209638bff4d82
+7a090dd90ea8e60cbcd9090647a3b024
+7a094a17dc374d06f822e101511af3b1
+7a0c91856e1e0dead7e2977df4fd86e9
+7a0edaaf0d3a3074e3113632181b5114
+7a0f89ce9fb46fb3d71828ba15ed1e51
+7a148ceb79ce2c21f4ce353cdceac353
+7a14feae3c4f85af0bef9d3d4e139e15
+7a17bfda27edd8e02062ef17d85ddbfa
+7a1ce4ea19139a68f6831c9141e2c63d
+7a1e1cbd69d4070f9ba914e3582d3ee9
+7a1f6ff59963f5e7116da1f411d0a74b
+7a22805d92d5cc7c02e85998d25ff458
+7a22b2dbdf1f5e177a1adafb3e559f64
+7a22c867fd1d5412f69f5f98e64c1936
+7a22ea9304af8065d8c8d588872eaba9
+7a23398f0b22b427eab3e890c4a7144e
+7a24ae681da4544142e279907d9aed2b
+7a24c6c60515c4dcf1de3717f8fcd4cf
+7a2737147d4ac1234b4d7b962aa8068f
+7a28d26ef1dce076f86d53c9259bb3bc
+7a29bad12fdba0d1e6642073c7ab0d56
+7a29fd41d15c720dfe0e9690089a1787
+7a2daf3c3413bd1d910e92f5e7b6e651
+7a2e1cf0423248e87343a81bf7973021
+7a2e49987bc4eacb879b692f70bbe5d3
+7a2ee088cfbf2500b1c97dedd9eabd70
+7a2fa297f6f748face2ceac77814c5b0
+7a3188356888c2c6f3f6f58df8ca3649
+7a31ec289b5e6a3e15b7cccbb7d44f2c
+7a33dc7bab012c5b51aeab2fddbd7d5a
+7a34964d0397ee6bc784a736f1a2c569
+7a358636acb27d54e77d7e2c6176abaf
+7a361bb6c9294d602ed5fcdc8d6f5a54
+7a36d81e2c8f7b96de864a8bec1ae8f9
+7a37064d5b914ad4b72793a3fadf06e0
+7a3841223bad21b9541677109ae50114
+7a393a97efbd32cb13707a9b32cbcb3d
+7a3acafd3eedd1e0f2ab0782ff62368e
+7a3be4ce4d3ac3ef4f50fa8d37c40d02
+7a3e1c0807ea6c4399ef18430caf66d2
+7a3e7e046ecefe38c9e68cbc64b4e833
+7a42e977fb23fb5895ab423ac97cff13
+7a42ef1eb19b571a47dc201ca8519317
+7a434519c78d96a1f82ae6cd1f824b19
+7a45785261b7e801ac82e0ec3f3e8fd4
+7a45f297a70a14d867c3d9eb310c4b41
+7a467a76cf1ff1297115becaeeb1c589
+7a4869418a33d13d65f198338a25727d
+7a48cf7cac8790f6d4866ae9cec8eaa6
+7a4971a3005a07d4ada01c42ab52ce81
+7a4b8fb0f69ba440325c5f09681cf7db
+7a4cad9f8034fe9024a55535592a08bf
+7a4cae07f21b78111e1aab10261d1270
+7a4cff6cc24cb06a1a6d5ca37186cc42
+7a5420b968b6006b403975182cb4b613
+7a54637a4b0145b31d10939345a90630
+7a562dd0744ec0f5e6dc3e08122806c7
+7a57685051da88d966704c620f83da00
+7a578f20842ab0b4239932e6e331c953
+7a5883cb273721fc6694c073cc554505
+7a5919630cef7fe324b7ba1d292cc84c
+7a5aaba6700299419624e03a312ca813
+7a5afe20dc06a683e6045fb46f3633bd
+7a5b6c6811a28048bb2b6b4bb76fd62c
+7a5bf5193be49a94e467bc28da5118a3
+7a5f40eabb6cc045075a1701d81bbbba
+7a5ffdfafc23325153586b30be1238d7
+7a629b8cb73ba10d4f9fe7ef05b85652
+7a68e39822d803be2b1b3d26766551a1
+7a69987631992d40c039bb9fd71b96b2
+7a6d065cd53c6a419e4373400c368d37
+7a711621dac81ab207f89a771347a9e6
+7a71c197310d9a33218f93b7ed305822
+7a720f93c16eedfc776315ddf5b825a7
+7a7776ef60b6cf8eafafe0b61e1ee2c3
+7a7a54254abe535b30c0c95a5ecf35a2
+7a7c35c631e0f1e9ea56f00a771f7795
+7a7c956b3c3caa8c3ee0aabeca0f1539
+7a7daeb4ef6752f9744daa75e1097ea4
+7a7f10b9628d5270c8dbaf14dc46314b
+7a7f9fcc4740dbe0ac077db6ae4d910c
+7a7fa55634ab825641682cbd1b50f186
+7a800b3349435a342987cbeeaa3df911
+7a8301087052ae84dbcd9eb099eebf8f
+7a85d7a5cabd2293063a6691a4efac2e
+7a85d8eaaf0455b93dff85ea4e5ee98f
+7a86ba7015f033ed922c99dbb87caff3
+7a882b4e95e352dca2e595b76bdd2d60
+7a88f5d98e14ae65ea93226467aa38a6
+7a8923d8e7aa41219b16a5fd9c94c5b7
+7a89907f45868b1bdc884842eedd7fb3
+7a899df09d5e6f43854576d41ff7e9c1
+7a8a71ba52af2199bf56a16cbb0dc4e8
+7a8a77ca6c254eefae2508d517734206
+7a8b79da9ccb04839b4e3a2ca34e5943
+7a8c5c00c977b493178bffb249c2cdeb
+7a8cb64b6ec1c495391ccb5e47fba95b
+7a90528da0d2b3e1d22c81ac1081aff9
+7a914c3e8acdc4fb1fca289d9d831ed8
+7a9164a21bba9867f4fec396eaa8f481
+7a91d052e60d9c05d76dc263be57fd54
+7a9399fe903acd773d0e51e22993ae0a
+7a93d230d293239f19fa90be8b28784d
+7a955d5f88bf074a12b14b4274b6ac41
+7a95da3be8ab717502d317c33d12f1cc
+7a97fcbb9e2bf94703555a7b78d1575b
+7a9b0a626ddeebbd10ad309ff6bff903
+7a9c23c1acc153e27b513f539b657dde
+7a9dd700b977733d196204430e748c4e
+7aa1334f76fb8f198643a0e1c7764796
+7aa1f84ef334fb484347b5bed4f84ec5
+7aa45d9d7c325b8dc1545762eadc1074
+7aa491075903c739890aa9a3f35b4901
+7aa60b738933b29e7adbb89475de863c
+7aa6a820754ae75a15b6750cd57e778a
+7aaa0980c95ff610b8674f2dd52182e1
+7aab93dde979037827384b33ab311bdb
+7aabad2470955c493f8e23931412ce81
+7aae04b7f01a0dcfde37aae4eba08a31
+7aaf11e04738066d17fbc953ee472b84
+7ab41e37bec918de7cde9ecb20c72cab
+7aba96bac4ec894e5f4716cf141caec6
+7abca3f5e7219532aca6ba989662c01c
+7abdf500cbf0a92fa587302e3e3c0dc8
+7ac071d80c5d733e5fd02215777ca92b
+7ac2a041b34f9f3db7fb7bebdfb1d47f
+7ac3a0092206d487d186f997d6e3f2f6
+7ac3e6a92877ad59d5baf53de27a1ace
+7ac3ff9faf65b2edc3fafd27d71a8732
+7ac7a5d181c77bb914074950b3ffb56b
+7ac7d575e5ab463090d3f66c002cd66c
+7acbb5e9b5183fa3d3152545f353c09a
+7acd8ac45a6fd2ac766612491f2c9d07
+7ace0b42d765607715cfc90a59055b7c
+7ad0d488837f31bd9df4b22d41a1629e
+7ad1d2ad467ac1c16d4ae797e3c5281e
+7ad339a8f1d527be4bc8c34ad6e2a389
+7ad46ebe0aef62c6650def37251394b5
+7ad55bc2e4645975e1f1e982843ad895
+7ad6868e5ecae31c98dc9bddd59de89b
+7ad6a12d33629a50f2f82a356dd5b944
+7add00236520952f7368d976ebb08473
+7add70a1a7abce9d26bddd418791ddef
+7addbd9544604b943f1ef540a4617e1f
+7adf918bc5996dc0f861c505d5f473ac
+7ae080b5e3256381543bf9eb427cae54
+7ae1143f293212d9081166736008c767
+7ae36a06049dd5a66d96e41cd71e5b86
+7ae40838417a1e1491cdc9af9508bfc5
+7ae599919ac891211dd3274648dea0e8
+7ae6d98046774cb18b2ebd232a145a72
+7ae8287895c8c8213f317768e6b60fd8
+7ae8a46c1ae80a7e94030af67706341b
+7ae927f372dbd30bfca0c74fc9a65634
+7ae9cc169e9ba57b02bcfa11c2ca7b57
+7aeb5450540e0fd9490d550e59ca26ab
+7aebb0f8170d9558ee0a130af83f7a61
+7aebdb1b6128ce93eed9a089929f9bec
+7aeca1437ef8a123329019c0df0d15f8
+7aed2b672938c1a4308b235be468da6d
+7aeebb22769a63dea80368fb1563c123
+7aeebbfc451404cd31da4ccab5eeb951
+7af19bdfa84a7e55f8ef27195c6b7647
+7af224912f88855bf1b8ba18fbf9dfcb
+7af389416b52660fd5c825d0f9fe670f
+7af3cb643b72f45870ac32a53bd3450f
+7af7dcb71f74734be0ea396a2c436000
+7af89290ee47cdf99d145aa4405a147b
+7afd50ba03ba3ff3e574554e15f25874
+7affaead8e98a6da6d0c85c5142692fb
+7b0140b840ba6107bf1ffb314c9eae61
+7b03b578854f6bedf80864c770ae5f06
+7b05f3e6e9785cbe01c653dfb28e21e8
+7b062da8fd54c145d543f36056b0095c
+7b097737166e18fa941adaace7f3d86f
+7b0c892896c3f7354788408e8a2a455d
+7b0d03a6242fa31a6af47ce5f76362ee
+7b11116f9799777113a8346f23f15898
+7b14594e92d6f013629df4c096758185
+7b153ea5acf5ecf4e892e03f0c23b0b5
+7b154424762ba40d24eeaffa7cb39f81
+7b163de3a892186a19f346a203d97569
+7b17553b8e6293efb651d21a52dfb60f
+7b17fa6f55b82524ce5e3d9574e136ce
+7b18f2b9b349ee13284ceb4935bdfe8b
+7b1a37e9ad2ddb783682b3da8695f1e2
+7b1d31c05ba22180574612fa4a241d6d
+7b213c4efc03f0375381c8e16ee8f49a
+7b225685ee3edf502656f09256a2c6c2
+7b22a4ec1466e66e4d89fa49b80f9960
+7b22cf7f16f9e434f11b6a673acd193d
+7b23ed1d7585e7989fe3d399a8661300
+7b309fad7ccd301c55f2ef4914d435c4
+7b32f2d8035c00b6edcced99a87ef1f3
+7b3588f0d983994e25688b44b795bf26
+7b37edb1175cf50b808f3b6b8acf4722
+7b390f74b79b6f7ac21d32ca4563f1bc
+7b39d39e744a4d7b06e0b2c158fdc01b
+7b3b45de5d0f7322f356b1f742f2cbea
+7b3b672ab3ea1b3e46e23e45e31a9401
+7b3c9448ec8d1b8a9810fe83db95c427
+7b3e2a73b9b8246e6d7585e3820caf42
+7b415dffe9a077afc40ab30f717aed4b
+7b41de902de99b4957cffc29442b0e85
+7b429043f2415a0b44731f5641504b4d
+7b442b1334b98ea3e5f41168b4ff558c
+7b4ac92d4b514cdbc50690b10fb7eee9
+7b4bbcfdc3755f28f9229329db17a64d
+7b4fb2cd15395af5ff2ab984c5a8c376
+7b4ff592be71ea0a94584f3b4586986a
+7b50b2e497efde2153b8bd0fdb2c9dd2
+7b528a38e65934f2a68e4a06fe4ecab4
+7b587f5b676e0d0918d985a75f5285ef
+7b5b7028cee9178f7d00f3c4a5490ae3
+7b5cce2a43ff02e1da704c784a89d73c
+7b5eb023a0dd9d643f06305d65defcee
+7b5ec44896875bee754b20c78499f4e6
+7b5f508db9ef8066882ace7260a73a02
+7b60951212342f949c025bbd7cc6ef67
+7b6178e74ec89038d1b909954080492d
+7b628a69bc1731fd679a1a23eb87c157
+7b63c6b4e035c6f75e83c4cb6c148142
+7b63cc9360fd77b94c7e47e7ba1ae88f
+7b6702b1b3faf33021cf7f360092d358
+7b68b151f1a7ce9f733a92892cc6d2f2
+7b6967cfc8216033b768fef9e11dea1c
+7b69c2b1c13b5307ae124b9a0feda140
+7b69c81d459923d20d156c0bb95d0c4c
+7b69d5ffdcc7a9a1a46c0e84e99bc806
+7b6ac3a283aedaad569750d477adb246
+7b6af02cbafe0f9c74985360afa7f8b5
+7b6b338dbe5bd2e2107929f6fcc8a808
+7b6e6934f3d62b3537261d8f317d0dfe
+7b6edfecfc8f93978429fab46785e0d3
+7b71cbbd72e74c19ac03c781392e3f08
+7b71fa6e7fd1e6c321d94920e900c3e5
+7b7317bf9902dd623241d0d7b42d8255
+7b7595e06263fd7f46c2351c3b9f0dd2
+7b772650d9ff8bcbf8ca593757c64f05
+7b784bbd7df9f42031f2576a0d7c6bdc
+7b786a6e77c7813cae6cca340e1c6f59
+7b78dc578a5d348cac131ad88a88cef2
+7b79f80bdc15de7a15ae9c1d27ce0145
+7b7a1ce2703492283b6eea885d36d952
+7b7b33ca337880f158970b09f5fb529e
+7b7b9713197aa5e04e7b3bc195105150
+7b7cd584f4c78636466e82bc1341a1ff
+7b7d6e7858c8cabb93c911a5d5558c31
+7b7f950034c825544a6df2cd3c0f64ff
+7b83cf312b364b6e50b3a0e7fc7bcb9f
+7b852b22a1d18a8cbb5f142010e1742d
+7b85ddf653674784aeceacb7d320adec
+7b8947446b06facfb6a4c342815edd31
+7b8a920f0fb3536848eb0359f5b7fb05
+7b8b41fa08b9c075f750031379e4bcdd
+7b8c76094226a32f3d8d77bb4c763f96
+7b8d2b1ae1174b437d498096c0c9c007
+7b8d74175d798b077a60e7bffcb88335
+7b90d21217515a211b91a6f8a6a419a8
+7b91b940f3cd94cd37e9ba194d32fead
+7b935b99ab33ad2c7347b49aff084148
+7b93dc69018654419ae0b8f593251ff4
+7b94015985937346eaca9371c95bcf69
+7b94039042e12a295b6385093319830b
+7b950756bbf425289f610a86f9061a7e
+7b9513b5cf3bafc3e5ae98f0c1889237
+7b954f1dee0516820164e9510c0a2ae2
+7b96005cbfdd5aebce53bd016d04f563
+7b9618bee238215bae18574e0b2e9ac4
+7b96b7f1c5649bf66bf90255e5bebbfa
+7b97ebb3260d9d1ddd13f35aa2f9d568
+7b988001d23df851f47d2c6cabd9184b
+7b993ea3c8a58348daeb125b2e050a32
+7b99b23d805faa9ef0d9fefa6c279ee8
+7b9c3ceb28947e6feefb1c7fb6381567
+7b9c5a3785a042553b795ab1747048b0
+7b9c965f70072c2e34f4cd10fa8cc870
+7b9dfe0568a703298c4a971d2aeed343
+7b9f34087dde699c40e31aacc5063792
+7ba1de266086cdd9baaa5c8b1bedd1f0
+7ba28a6465643b9262e97cbe00a1f1c5
+7ba41b54dd2065d1dffa52d8fb786731
+7ba55fa28b4b8ad8effe6f640b1a5f78
+7ba578aa32fc5c6ea247eba75eedfe3c
+7ba57ffebb8e12a4b36c9a54f909e05a
+7ba5b52ef1a4554d4f7b281ccab01cc3
+7ba871d7091d7a7d4afde47fe1cbb3d1
+7ba8e0a2db5406716d9a4ac1e5aa0b21
+7ba9608396e4049789c798ff0ff8f637
+7baa1392e03609803bbea9e5659d1f16
+7baa6d9dc521db9b5631b265ea6b7046
+7baacd9e63c7b6c9247ed4ae3dd0e5bc
+7bab7f3cdbb0cf76c2122308f5c43abc
+7bace45e0b7d8b7baad0a8d65ac3bb72
+7bae76821b9a7596db3b6a3b05095e62
+7bafd06a74b4ad7ad2cbb6af25078cc1
+7bb045d509491fea428e61711944cb5e
+7bb1284c19daad261e9c65858fa57810
+7bb21055cfb29a42c607e8d362f4a1bc
+7bb25d88d905c1f4155c4302c882a2ab
+7bb2d3fd15913efa32aac62ad4ed27c2
+7bb48ed058aad494a48f5e8ec836bab9
+7bb52906af96bbabc0abc3fdaed78281
+7bb74e8a31fc42f2ced83f0a5fe1b87a
+7bb7b320d0d44a6648ab0dff34df6469
+7bb85511d657005c7568353ba9538f56
+7bb9831a4363fe3f86ee54b070857038
+7bba27097dbe3338a630085a00ea839e
+7bbc0703a151f22ae5fa89947eb2485e
+7bbc27e30756e1599cbfddbcc7529e9a
+7bbead025c086daa9e99b9a0277516e9
+7bbfac9c71c1483fee6451e17b7f2f53
+7bc14c66b2e0157555586f9418b9773e
+7bc3479b0d655cd84794fb7f940fe694
+7bc3acf6afb74e2a2a4f3ee96ace350f
+7bc3bae0f8766c419f48a57ce4cd087b
+7bc4316933330f0864d8591a16b426ab
+7bc443fa33fe2947e2afe92bddb9a905
+7bc50f19180ed63af24c5835ef97af01
+7bc62587f1fc6b329260ccd128a784c7
+7bc72bd7ea0cbd8b55b5cc660bede77f
+7bc733101c18a022c1e2afd37d08a7ab
+7bc74d8c9c00e0d578b991f703b8cc26
+7bcf303489dd8e48259d64c78e59bcbd
+7bcf509228f55e8d9fdfec6a6b169be2
+7bcf847807d9d0581834be88c257dd08
+7bcfbf1971b77469a481e21b1cc68cab
+7bd164bef2c79504eac96acc9e79f100
+7bd1e9e4495ba4a4c19d3243614513f6
+7bd21b193bf2efa103aef06120ebabf2
+7bd2a7c61b3d948f2a0331aa35b6dff6
+7bd39abebbc4f5a676dcf0f73838a64b
+7bd482b0232298dbb03b85f2b9becc8d
+7bd50b2d13596eb18fe9dcbd787f0fe1
+7bd620bb7d55c0d7503d17844ea24ecd
+7bd62d84c071ad18d08245cd0ca71d66
+7bd694ad990fbfc0af751076a607db44
+7bd809ad87174b993b7245cd443f8afc
+7bd88744f16c5596aaa0349a956482fa
+7bd8c8013161148d3fac2304d5acc660
+7bda13c1e80520b45b3aa45c5fbfd562
+7bdb34037968e7b70709ac41a4517a1b
+7bdb9da6d1ef645a87a859f49982b2b3
+7bdc2d2e5935fc3c90568c47ddfb6824
+7bddac91859ff0fb16b9c66fa99d1e86
+7bddacc332dcae08800e935ed93d6ab8
+7bde0510f4cf964a46997604b10ad60f
+7be0fb5a1076a7d916e269e58e32daea
+7be29eb361348f8e9fe2d74ca12b1a87
+7be30cb2dd098f4bfa62c6022a827449
+7be6af9038bd7ffb585e77a22cfd82a6
+7be8b94ff7eb6ef451c97a4b208bd582
+7be8e454ec97b36718ab542215e56560
+7bebc5928a98f5b4d65bb78f20336093
+7bed540e84c95adda43e0a2a999ef46d
+7beda83cd9f60c29309413de97febf2c
+7bedf8e57470243462296fcebd40944d
+7bf0151cdd7cab73fa668de92ec9e9c5
+7bf491f9e1c779cd94f0e329b784047b
+7bf5de8ae57f7e158b17cf8eb24b47ea
+7bfa4fcb9600173768b0558e0fa37825
+7bfe072992413425f3bffe156cf3423e
+7bfe5c98a1436b7e41acd100eb5d0ab5
+7bff1d338732f189471bb57d277ef10b
+7bffcfbca52acbae857b449b688bee25
+7c00e81f64d9a8150936a3f6fc501f9d
+7c022193abca976b2efaddc5f52c6730
+7c0243001f7afe60d7fdbe20d70813a6
+7c036e3cc6952abb92b51e71f2584d47
+7c04e0f26314183e3797cd340ec00fea
+7c05b3869ba8f9e990ae3ea4ccfb7ef8
+7c060d9671b362ee1ebe3af3918f24f3
+7c06b15ec83048e9c75959461c70eced
+7c06c61c6de78af7be148edfd5943e83
+7c0972c5bea361b16db8f60e6e3330f1
+7c0a025f5c1f2407a9cfd7796b4ea07a
+7c0c63d1f3147ad29ac5384f54acd4ab
+7c0c84f0a78b11c35a29ec24a5b8e877
+7c0ced6a19da6720b32ec5bbb3753ea8
+7c0dfc5cb499c165d38d88117bfe4d2b
+7c0e97093c459948dcceb2a9bfa14fed
+7c0eae7363218b411c35c1fc05e4c893
+7c0fb8673eeb3af431ef8b6c0d2de686
+7c117e7f592496e55accdc82ba5bba4e
+7c12dc8d3378ce11f29e2e4dba454218
+7c130d9007b6a7b35b96d2e918d1e309
+7c14e0cb788b270338323a30b8356299
+7c1508d43fdbc6c2bb8ed1d905526e22
+7c15c920c724cde1fdcb384fc215d865
+7c162f118f7bebd9f37775b9e874c2d8
+7c1768dac42314d7456314182076aacc
+7c181f12c53899fe7fc01101929cbc66
+7c1b3182277453cbee001f1c62e9c475
+7c1caa0a5410436ffa3cf2cee9c01d61
+7c1cf61fb82a616825920f704c97e19f
+7c1df6bd892f2e205f5285467644bb9b
+7c1e73da534ae68381d4aafa04d49f54
+7c1f0b150b88f2f18fb7e5d5c295a845
+7c1f465cd71296d72ddb6379922dfb64
+7c2004ecac7364540b93297722915718
+7c22a8df35c1f990c9624375ce777657
+7c24acb5e3baba618abfbdde9600c566
+7c26050a6f24560d21b476208ad203e9
+7c261ea97fa4cfa230ca835d1e8eeb8d
+7c264a78d37cc881c4ef8444a5fa55b0
+7c275ba67b5da741b5174736e3f0c812
+7c2779f4a34a158bbb4f6a1bb21fd032
+7c27de2b68f6398350c7d527b9c27735
+7c297b6a7df6239590f9ee5f8a71d643
+7c2c3d69010499ab56b2af4564737440
+7c2d77114b66a15b9dcf7f74411ab2e5
+7c2ed7dd1602af288bc67ce15cf27687
+7c2eef5b6132c9366df606a50297f6bd
+7c2f8ed908a6a029dc87030b3fbbf270
+7c2fb12104a46ffcf6ef034bf3a17567
+7c32534b33bb1b72e953ebded67d9e2f
+7c32801eb8bd44d694ef1df6181cc0c2
+7c36434e66a30c0be90ae1954db68789
+7c36b68d126b5c4f456087b2b16a4c0f
+7c37ea72ad547f496b11cff67f78c364
+7c3944c1da4c9f8e9b9ddb9f3f46954b
+7c3b0d2bec27251ae92c9bb1da6bfeea
+7c3d69e3b5a685d4a14e1863c1ac3fe4
+7c3f198d2628523c4d9313f7889341e8
+7c3fbbaf9ccfd81176a0b4c6a86e150b
+7c429060dd03337ea204395a661a35e7
+7c4550174044ee51063c779668e4ff7a
+7c485d2b5ba5db2e2b9d8af4b0910d15
+7c487ea71379518516c5a6e0aaf693e3
+7c4886f129e5bc16c064f62ac4b9f839
+7c48bf07ed473d2cc72e1c26854f97b8
+7c4fad76b8919f008d6d2958e902781f
+7c500be85309ad3d7bf7033d7409d003
+7c50c5d8601dcddc1a69ef554f2ac40b
+7c51f03d368f03528840e3eded391048
+7c550674963329215aca900a9376b03f
+7c56f4a4067065e1055acd4a692bfbcd
+7c5f38aa81dfbbdfb9b037631db5fb58
+7c6085b8e2c726d78d8fc00d3b39734f
+7c642c8932205835e4944ba86861e0ff
+7c6432951d9287ffaa6cb0be0a896cb7
+7c662c0887ef4a241004c5c5cd5fecaf
+7c682a1cfd5f68e33d50a68201b9fbfc
+7c683ef25406fe3694cde0167e22c076
+7c6855910d0f8e7f702b9ee862ee36a0
+7c69a0aac1e6b3ca1b834aa323221321
+7c6d7d06beda6cc724601292905177dc
+7c6da461ddd27a50abac5a3fa7ce96c3
+7c6ef52ab8144fff2536faad2899a8d2
+7c6f5d58c555fcf8c5a5ccf484e5497b
+7c70726c0d9ece2011c8c621707ea8d5
+7c7080012b23b7d780b3e531ef7d364e
+7c70fd545bb67a5a41b11a50ef1406a4
+7c7217d59164cd3465e0e1d41d95ba13
+7c76a9c0636cf1f0e9457ff97c2c21cb
+7c7712af68236a7b484b2f41c4623f71
+7c77fc49ca66d1e0fa032b9ead453c1e
+7c7b38b7f361ef51683a941e3ac74d2d
+7c7c3c60f3c1897bc794b203e6c07935
+7c7cd679a4489a3d01f4f64152dcaffd
+7c7d001878667bd79f8f81ff4588db90
+7c7e705871d824b9855e11608dcb430c
+7c7fcef28987003728041a594e1ece1c
+7c818d816b6f0f78632a05f409b3a9ed
+7c839882554defc4e3ff794dc2200f99
+7c84e51a771e9aea89971f3ed641b772
+7c8601c87206caa1e5422143875deeb3
+7c86c29f0c30f7c610ad6d78b16a046a
+7c8735257fc745058fc5527cf32c3734
+7c87babed6fd724a3cb0061bcc44eb44
+7c8994e1481dd31eed62058513200ccc
+7c8b8937fadb1b971e7f261d5d02edab
+7c8bdc0736d73c195d8cb5fa6ab514f6
+7c8bfc09894408250b5e4f2197ce2a51
+7c8d5e371b6f74aa1440a25222dd0312
+7c90210ca8a0ff3098dadf031e979865
+7c906485a529a0f09081550278ce4b09
+7c91f445c2c0f8a7acb8596e85c4407b
+7c92052a13450c11b942d9919673cc18
+7c92c76e72140f3daf7dd2eef2c113c2
+7c936768f9f25a9818bf92afaeb3db83
+7c954040c972085262e74d7329f90de7
+7c9cb39f3faf22441b8d44c8dbf8193a
+7ca06f05713165d281f57445c6a35896
+7ca496c4a3bc4f12e5470628cadac3cd
+7ca68ba4048fc05fd1e9e031a2c54c54
+7ca6b0af93757a202cf7a2d00dc8569f
+7ca7f5abc28e00f2c1c3f7ecde4b85cf
+7ca929c64c3bba0a7e75a019a151056a
+7cab085bace31474a39a2050a4e74309
+7cabfe9028a3c22ba123d0e785ee66f9
+7cae5610a278d30b2f5e4918857b80a9
+7cb05da2c17d485cf209f8c2fb165258
+7cb0bcf23dac153e26ee046e83385546
+7cb0dedb75a8fc5c99caa34212e09e16
+7cb1b157b3f921ee4e40aac57a9102da
+7cb287c644200dd754b925e9af420395
+7cb2eec90180c45b6fb351dfbc83647a
+7cb316dc63b0a9c4713c5e74a8f8fe5b
+7cb3d24a8219500d2cc2df3b7b07ce21
+7cb6758ca6307602dc6c3959117c99fa
+7cb710671225b45a1f087fbdb437a876
+7cb87344f6e712ad4a0581896d3abd91
+7cb935bae7942abd83c293afdaf041a9
+7cba4bc14fefcc7ecef1e49cc69d514d
+7cbabc8502c46555d608e218d9438eda
+7cbd3cdf57c562f94b7a909fbd0187f6
+7cc05d557d3ed9efb4e170843b24ff23
+7cc5c0f4d0e3099145f60e4909a8ed42
+7cc6df86adf835a0a4c3f313363e59f5
+7cc6e45c91c27141c61ce99fb9a78327
+7cc7a336329294b663c58518e8684ab4
+7cc904d7dba52b02251ea35404e422bf
+7cca11cc7ae6fa77b3c34c80a393307f
+7ccea377f90d36b40607f9cf024b8da4
+7ccf3c59f3d23ef2e19672b85204c4c0
+7cd5fa32fb9d9db83b9070df9b53cf66
+7cd643c3967a3a7e98df49e35a5cba12
+7cd70903020f35146613843d289af376
+7cd7da57d85ec141ff9363def1597ce5
+7cd8a9857a397bba984e942e8cb9cdda
+7cd936ad1fd9758d8e9e060d38b20486
+7cda679d7be7df703e530b91244ecd4f
+7cda93d3461f4b08d45f7a8b81d5e9c7
+7cdb12d87a4c237284f8a8fb58b7a0cb
+7cdf210427bad6e5e23331005fea49f0
+7ce0f3125e078a16b97e8fbbc954bb2c
+7ce25770cf735f7df22447f021765bbe
+7ce27fd803cb9d552f74d939777782f2
+7ce29ba3cf587f07bee4a24a05e21f6a
+7ce35ed02846eccce84427996ea78a9d
+7ce60e7c52ecbe34fd64317ff106813c
+7ce6518c97e1fe7446bbebca9cab2798
+7ce6e58cd8f464d8a9e1eeed208c68ab
+7ce79ac68d821097c585598d55545826
+7ce8dcf826f5226505119a99cbe40616
+7cea22d990c99db98ab3557e55d15a96
+7cea304541f21678df76a9f17cccfc0c
+7cf0fc5679d337c87efde6beb4674c37
+7cf332718da28b4114e84616199044c5
+7cf58eb4b46cfd6ab02aa1af9c62d7ea
+7cf6b058285bce677d23a765626657fe
+7cf7cdc7d475b804dd4d9ec3e6725323
+7cf81c42a019a4a47e472569e4b2af21
+7cf8a7d3b55e1814ccbe24caa9b8bb29
+7cfb49870d7cbba68a27a8641d1c899b
+7cfe7987386bf11298c60c2c99e53f0a
+7cfeed2cb2775b9bed1a5568eed0b118
+7cff6f9d2e0a9ab87872d3192dd8c804
+7cffc55b617e7bbd925e0e1b76e30329
+7d000ad44e331a9dadf2a359ad5f90c1
+7d01a58f3e80e40c30736fe48387c8a3
+7d01d498712d3fe23a912243b79e83b7
+7d02c477af05f252d667532b40b448ee
+7d033bf9b2a8c08ee6e0b12b9970676e
+7d03828c0d62e45765bb8a31a73f2c24
+7d04592f3735241681404172d94a2566
+7d04b156fd1b193771eab2b993237636
+7d04e56bfc7444c83944292bc273db31
+7d0aa0fc20fb9da7cf9c335fb6d71942
+7d0b1693f64e67feb23bb494d36dc91f
+7d0dfcf92ce52dd83f9d55edcdc472d3
+7d0e15b1fac881ea07dea1222996111a
+7d0f866069d416aee5cdc8cb948436dc
+7d1076a092137583f59cc7c8af528b7c
+7d107741f7b851a38c5defea6cdafbb2
+7d113cad1d3a249ba38852accdc4db65
+7d1146e8f051e81b5ee94fc81bd4d540
+7d120fea98407d573233ce1a897cf456
+7d14312f7f6fef0e7ee131168c63652d
+7d158c00609e65f4d7beb39bbb547880
+7d1610b11e414874301bd5b2f31a3b6a
+7d19552148675211ce53569ad1db97fe
+7d1ae9b82adb13df68a8027cba0d8966
+7d1b4e572e788aea62a8ea555c168847
+7d1c0846e48d75ce3977c600f088a7c3
+7d1d22cdb2bb4323f2b5d9c462147d03
+7d1f2bd339acc624f66b3b07527ad481
+7d1f3dc9df2def5a58dc5a29fbe45a3c
+7d1f5d19d0b9e402bad2ecd68c00f9d1
+7d1ff44d311a147069f750a05be64a41
+7d29482c7ba014c985a70498f1a2b236
+7d29cbb5cec5552f098dd2f6d46cfc6a
+7d2b310f6a25e56e5fc8300de823337b
+7d2cbe475c30c2bc4b4368b26722c263
+7d31e412094d5346221198fb6c0f8d52
+7d32097ab162d644f6adf2caaa9ae1bc
+7d33b8f388e909b7621aff8f5102c79f
+7d3629d1cbdd124d7f28f80b2849a1c7
+7d36f243fd925f95ded82fc12d877fef
+7d372c1853c6ac14a7ac9959acc8cb55
+7d3772574cc37a663ee4851b8cc47f86
+7d38ac588599055780a33fb5d624a864
+7d3ce34ee74c376d5bad5fb08a3e60aa
+7d3da0044446e0a4b5bf67c54fce3259
+7d3e8bf521b9a0fe1276edbfef15929d
+7d407334918ddb099397b939ee1a8667
+7d40d0e5023392d60e051d745c0b1fb3
+7d459993c35c7aa85374ad63b0a4a013
+7d459f28eea1ca39be4aead1b8608d6e
+7d45e5c223e76a51194a7d509352764b
+7d46a579dc564565cf031f3d792be1dd
+7d475835844d9c196f778cb2a99d51fd
+7d492c1ee6600969ef90d3323897b760
+7d4937b51be4a4412801459175721969
+7d4a580a98be59ef0369a08d7fa5ee77
+7d4a8ba92e4a0d41f4824baa65cbece4
+7d4d2b3da2d12c1a9b8654249efd6b3c
+7d4d462e4c77ebb093492a531be792ea
+7d4f9e48630e6370f9c984bc8e1ee055
+7d509f22df2fc9e864de96cd9fbec691
+7d51cd1c6eb9ae43966e9826d535310f
+7d51f41c5a9d703267b7e4ec79861f2c
+7d5423e667de849c6dbc512715c01cec
+7d54f8dc212e121350720e82e9b0eb81
+7d55d31dd71bcf0bfe0eb8bd65990981
+7d56f357556f23c561fa0cdcf0e8e6e3
+7d57ccceb2d54b54a595e971e73e9ef5
+7d5886418a914ad1c4d6f99c1949b882
+7d58edf132a4f268903e3b6874ce458f
+7d58fa1363834697f3260d264dce4185
+7d5b0629bdc79379385d43fc5298206e
+7d5b2cbaf8c8521888499c3f9106ece1
+7d5bbb2aab6dd2fe1e65c41ac3c788bd
+7d5d1bac3b691d494b6a5135741147d4
+7d5d7fc144475d0e4570690aa523d6cd
+7d5ecb638014e7eec7a053be0d20912e
+7d5ee8578ff184c9dcbedc26efab3461
+7d62838ae0379489af2908f06561b2dd
+7d648b4317b58dfc273ee69c6627677f
+7d6a8ad9f8bd703bc0e478b2803deeba
+7d6bf54ce106e7fd6737606210da25f6
+7d6c84df2e402ba79832234d42cbfcab
+7d6cd6b8f2a1a5ef128d2f90ac2abfab
+7d6d9cdd6749134112b785ec1e86279a
+7d6f32e195b1015951c57b84733b2230
+7d6fa3fc3bf6b65992fb58f69475b7f7
+7d70633ef0cfc8cbfbb6ac4b2e924796
+7d72ceae5e47f32b906d21efdfd990f6
+7d7338fb01cfe9cc26bc3bde96addca3
+7d74cb5610f31679c9d58dbe85dc22bc
+7d76fd8281ccf27b44da699652cb3976
+7d77cfad5df2ec3b514074cdff61ff48
+7d7a73a54ad8efcf4538d444574cb9e1
+7d7e0c5b270a7da2065206f3f17fadca
+7d7ea257b2bf149e2aca7b79426a25a9
+7d7f804e33ffc5e7763a3393d524ce55
+7d80cb02ee47bec254e76b0efc4b0866
+7d80f74b93828748bada213488c4e78f
+7d8274778291627d55d4aa9619103a83
+7d83380272eaefdfcd487c9db960f8b3
+7d835682beb54f37a9bdd4d563bbf365
+7d84a7615e85847c0e313a63800c8944
+7d8516388bbcf6c843e0a9ec7a21a787
+7d8621a17b3958ea744122ad5e28ce44
+7d89494402442054b5b805d4af80404d
+7d8acd079b6578e89e051eafe016f7a8
+7d8b133d1b7b1b8eaaa7f2cc0132fdc9
+7d8b671f459920e4f62e0d64f975770a
+7d8b74c479741b2fdadbb3cee23902b9
+7d8cc4ccbbb6fada25bba250bdfa607d
+7d8d1326178c56db49a1062a75dd4d2b
+7d8e12aea17e381ad66c8e5e8cb8bf18
+7d8f1fe1d09a8715ea04b7ab15fcb3a5
+7d8f4d9a747b0f48e30c9eefe56aad30
+7d906006df93161021a884544229d3ad
+7d917efd260f2559569f882c195294c7
+7d91dccb35072533d58a0c642b438851
+7d91eaf2b6f13bb0d5565cb9d3cbe29a
+7d92fbbe0d72360ec6b3dfe4de5e14d5
+7d9448d6b37a5308e41f2f186ebb4d6c
+7d99bb9b3afdcd06c4efddd21f7bac1a
+7d99fa9c45e62d57be3879284d9d97be
+7d9bac6fa473756f16e6a980f68ccb94
+7d9c3c073b833f6641790dc089c994c8
+7d9c6bb9fe68803190b749f1f81f4c37
+7d9d55fbfb64652fdbd1f346afb5ba1b
+7d9f1d858e07414447b68acb966606ed
+7da4f2a2d87efe1e9dad8c3a60d5af8c
+7da68c7874670717ac72e71d139209e2
+7da786c3809c8e8bb93f5eef1ab5e926
+7da7da1b05bf5e9045c62823f764f392
+7da9b5a515cf03b88cd36b23b4e499ca
+7dab65e5fb8a2afc2b6a538ee8fbead8
+7dacdc7a03de7c5f454303e1daf1d9f6
+7dad51c7145ea7fe7db47c2b19b6e9b3
+7dadd9dc52669c13172bfa2bcb884705
+7dadedf19c438b014140383e3a6c93f5
+7daf8798b34733b16500d25ac861edbd
+7db0dc7ec712d3849130b165cd78491c
+7db1e41928924187365bc752ece26b36
+7db3e5bcb7fe1bb380af497ed4156b3a
+7db4cb6601cd5e70c36c747ec3f94a2b
+7db4de5252fbd3b203bd8839bd6782e1
+7db55e5f5e9d9f40e48e837976aa5822
+7db57c0acda7f2e2f19d9c07f7157c87
+7db69cfc1e33de922c049ec66685daca
+7db9b9fce15db471e76c1128122eace8
+7dbbc89fa915b6e207cbf4136ea36387
+7dbc01a15448ba5ef4a418eb635b5a3f
+7dbd2532795b8e5cb4f00ca4860ea97f
+7dbf2e8b171b54759ae353ec0a8c7807
+7dc005d15a47b4f0d906e8a6eadb06ec
+7dc11e828b82274866c1be63329e15fa
+7dc1d442105839a87202877702db7bc3
+7dc31b277c1e86814d17e0b613b30def
+7dc6a2b4b7425a97947ac6491a4a5f6a
+7dca15622f93a6ae5df32e87dab546c4
+7dcbd89cd4413e4619f7969536acc025
+7dcdfda09118f8286564b244211d529c
+7dd00f5b0572b7021269e12d9ca6b55a
+7dd0b30e4a9e6ef27312c5778ef42383
+7dd177f363113bff54be0aa88054e1f7
+7dd1bec365e1adeea7ab29cf190f74ee
+7dd5bd725d7c33445a142874f690f3b2
+7dd74a6f16a8bb252fa37f5c85de6e02
+7dd842ce065369e633af708c46af5000
+7dd95389de2ed2bc53978911e6dad680
+7dd985d08da4d86c8bc7e05e0148c665
+7dd9f8398b13c73deb1d2df260cb6755
+7dda2c0388b80b450ea93b1926407c1a
+7ddb0bb6187e0e3ceadeef1b51191cbe
+7ddb6306488d9bbc6c3f7bb8f4e48668
+7ddbb285b6bdfcd1f328f97dc7970c99
+7ddbbf52901f938fac138b3135136be0
+7ddbfeba03bd109b23f6f39170de6ae8
+7ddc199f6c23da466869c90a19788ffa
+7ddd00725d2934615a81a0c1db5932f6
+7ddd8ed803905d958d2bcc6c4533a6d5
+7dddf4c2299dfe0cd3b0a048abbd26fa
+7ddeb951789296cf118875c137961448
+7de1f8f71cda51550798a4410e4a16f8
+7de208067d522cd94ff70ea7bed36691
+7de419fdb5788d46df45ff679979e1eb
+7de4b8931ceb72b229883c5e900629ab
+7de5d596b690088bd5f3eb7bfb43ccc4
+7de5d5b8d23becbb3933201ae48dda56
+7de5ee2ee9e8f381ba2a16164e1cd19f
+7de72cd9650a09897ca5e015a2800b14
+7de7725ce59a63ffb39e4e0179810a97
+7de7d9bea68b8cb3b881dd555460a59f
+7de7f2d1e482e4c36b984729e87f973b
+7de846887c3c70951d03332f8c374be3
+7de8d65c2cdfb5d7dbd90f9d6e65a96a
+7de98d411044c1865c8097c44d311898
+7dea870e25b5c18962743b07189a229e
+7deb748571fe156aefb17646efb436af
+7debdd5a9516a4480ac9dc75df85a21d
+7dec67cff5b030849ea2944d36913cbe
+7decff3fccc9cbac5452d59413360d64
+7dedca791119eaaba89fdc8d05d1078f
+7dee78437b42c41f0497b0cd34b373c1
+7dee78cdaab07d33f234b7cc7fb22894
+7df116299e45c242ccb4db6689a9b54c
+7df1354c7dd3a52a649686aad6c93927
+7df172a254ace73c57bf9bd2d5881214
+7df3ebffb72daddaa2011675eb60df23
+7df4c434bba020b1914f120b7e9fca20
+7df5de076acbd57eb34245f12847695e
+7df64878ff70a2a0f434d2b6c64b3eb1
+7df8445189cb8e6833140cc492154d47
+7df87ef36093086268458904a5090478
+7df92f6ae4d6e1800afd78df5bf0a8f1
+7dfb4e598c9648702924e32daacc58ab
+7dfb508b973cbdd41089cec1ca115fac
+7dfce21465098790210d8eb02328d85b
+7dffacabef9536cc7a4d181f2b76b852
+7e00beb8edb8b336fd385c5f6c0a3231
+7e02f413e97669fb7e347aa14a60667b
+7e035ed5d5529d4bbdbca268f1b8450b
+7e0634436fa59929e08889b028ec415f
+7e066c263bd9654784f3dab76a02d26b
+7e08635680d2c1e0ac14416b51b4bc34
+7e08ae19f4a8353c204cbfbf7fc9aa37
+7e08fb4c8c5eaae327c2a4b2cf9f97ea
+7e0c5eee845b76b7f2cde01a564af3f9
+7e0d647ad1ab16691ebf163b7d2e65ac
+7e0d8c532fe0c5eaf5580dd3335b9697
+7e0dedc22b25587edf2e29d18956aeca
+7e0e20d17d88d03abea88c55fc5ab7be
+7e0f6bcc73b55b8431ac605b63bea9b9
+7e11d66220fef49bec69fee9e47a6183
+7e1291a473f28022ffc4084ef6b0367d
+7e15cd5fd82146cf97f122de2fbfdfd5
+7e16cfc654decbcae9c3ff5c4cffa554
+7e1726698ef0ac11bf6b0262977d3dce
+7e17587b374f13391b8c8ce502235147
+7e17d9bb1e6057ee99ebad2938f8b7ed
+7e19022bcfee9a05a81dbdbe90dc99a2
+7e1a413f2c62de1664c1e4015caec1d7
+7e1a58ecf42d045db8218643f00cabfe
+7e1ca8eca3d90342e91d0a5ef40cb50b
+7e1d7e5c05f293fbbcbc8a3fd320b732
+7e209b87063973b5b0c8c635bcf055f8
+7e215c8bcf59343732803d25c16a928c
+7e263e706c1d5e14ef8f11f78ee34a02
+7e270232c1c5e3cf11d9899d0d61df57
+7e27e38b72cc31a32dba8089865ff4e6
+7e293f18449886a0d35a7fbfd41d2e9b
+7e297dfdab2247c50d4c8669319ce18f
+7e299d6c8c0952c846684195ad27662c
+7e2af4d07270c954f10bdd6228215e38
+7e2f69c4ff2235692e6e5fe9cf08dba4
+7e30a4226f50fff94d46493f9badc7a5
+7e317bb8be14fa2f0e5fc9591daad0d1
+7e320a14970d1676f55a1f6c8b1d0b2e
+7e324f5acd07527c0fde3d503347bf07
+7e3527bc6171fb9e7d7b94433406f34a
+7e36506d18d563659904a123857fa285
+7e36a094e7f0bee3757ebf262ce09b8e
+7e395e5c4770030a890f06c5a2d644c4
+7e3a3260daa1be5445452ca6c1d67a06
+7e3fd3e257ec8d9510163b7b3ab37aac
+7e403de505e7b523804addcd869f9fba
+7e40c1ba227d7feb4d47d3010753efea
+7e411badfde65e6e4509d9e7640aa18e
+7e4231aab014b61847ff6d7146bffb38
+7e45459e782354b49c65893f4671b9d9
+7e47efb9ec4d0b11dc10191125acd56c
+7e4984ba28efe20e81841ac8e8d7e4c8
+7e4a00c317af6cbbfb702bf185608982
+7e4c5c5e9c5bb442b48079b36c141921
+7e4c76b54145ca17eec7b345ac072140
+7e4e1855a3eb7d8c6cfe24bf4fe7b51f
+7e5008af79901eb1441ee564c7f42230
+7e511345dd2cdd7737089f4bf7bcbcb0
+7e5119c004ea79acf99a7bd3fe36ef23
+7e51a3795c729acf22dc2434f8b264bf
+7e51d111c63b0cf63ef22958a21226ad
+7e530645c6d5791549ae4a2938bf97ec
+7e54973abefb8f48aae539e1a317f0bf
+7e55bcca01bf50b97eb2c0294b4ff641
+7e5663986d8380eb4d2842b5821ca645
+7e57a2c83c76aac808eb9ca926fc9e46
+7e58e970e02b63cc2f8149224377995b
+7e59598f053544af806c495415d0f25f
+7e5984f8662299731197dadf924eafab
+7e59d2471ff1149dc66fce111ee696b2
+7e5a1866a33214f73c5ff61c3f176fa3
+7e5b6efbd2892807d42bf1f1bf5d964a
+7e5bbe723ef5e8cffd2e7a1695d80567
+7e5ef7a3f9ba0685067fcc3aea2359d2
+7e5f6471f7f2e58f338e2a32f2add169
+7e60ad8fd233bb460cfa51382a0bd304
+7e6279d877cdd182173db5ca831e3368
+7e633f8aaa2d1c505c1863bea4904f24
+7e63666438a42705caac112ab974d625
+7e63ba578bad3b6cded92973f95620d4
+7e68e88291eaccdff45d62265901fd73
+7e6957b58e5cbc1c53e823d96c183ed4
+7e6a17005e88e809ee09593170007b48
+7e6b29fb7684214958d389db42bb1ec7
+7e6e5f3435a1faf7aa83b55ea1454ebc
+7e6f19357865aced17373cdc81fcb2a6
+7e6fba38762d98e4c781e943bb1e5678
+7e7061063e151ed44ba20fc1647d6d83
+7e713862c587a85cb7eb472070f3e7b2
+7e72fd328d79c8415ce5c6615aa72dbb
+7e741d1115e4194fb18d793dc9391b65
+7e74c34e28e020e8f5a12e30512f16b6
+7e79803f29f3323d506d23c2abe2c95d
+7e7a5281a82e699337991c4e3dfaeb84
+7e7d25932c21ba85c1b4bf80c7b942f6
+7e7db9330bd36511a11c097f9a83212b
+7e7fc33aec4a5711e8cd41d945e6b222
+7e80230ed16a842564b1dfcce3426dba
+7e81c2e4a72f689f01966eae59172728
+7e82fc7626fa5303d50b97f77eae0074
+7e84b4b51e186a92842701eab64ac862
+7e870a57602c89f846ce5d371929ae51
+7e89905781d6a9f043513ae6fde23c51
+7e8c406a65a5833895e486cea920266e
+7e8dcd0c445eae474e6f40a1fcfe0683
+7e8e40ea512bba24c50ca00efdab9cc9
+7e8e525548eeb57cbad9e61def94f622
+7e928236febe9f2f8af192c042d941df
+7e92f2e356f0152f1d87a569244d2e1a
+7e93481b74030e0ebc595b77c1190cef
+7e935a13dcd27febbc1671c139c7e2ed
+7e941f83afb0727a0f91b110d6feb7ff
+7e94440e7fe7cd5c17c766c2baeaa1dc
+7e9590403500a95a94974f886c9f9072
+7e95a4d23618d84998d276330ccabd9a
+7e961bff64d9577e7f92189f3d586e60
+7e9677876b2ddbb8036f28d9e2f52f20
+7e98a1d4d7dc18c49b553afee2e9b8ff
+7e98ee02383e04dc686f30de93afbd46
+7e9a3609fe8a68c88286a625af81a942
+7e9a7dd29e11257ae1b2c0601c14e479
+7e9be5581a06116f1d869f5b18e3076a
+7e9db944a624650e0cde676027ef95ce
+7e9dcd2e118a6533690f2c85192c1956
+7e9fbc33831bb9dffe38d2533674bd44
+7ea0a35467b94e4ae7ef1c72df880513
+7ea58e0a8a9ffded9f864a3ad6c46abb
+7ea74768e8d487f678b012d297bbe07b
+7ea75b25b2132606a2ebec7b64aaa17d
+7ea896163a5eb681545661a51ae6bb16
+7ea99eaa46e88de99dcb2dfc4242a210
+7eaaaadf68af5394bf5c35ef82b2753d
+7eac5600daff1c372214c227873f71f1
+7eaddba13371733986794257e43f83de
+7eafa0a421fcc3cda9f1089f4f417702
+7eafc5e39c67fac372c302667f1b481c
+7eb0744e81177f477b2560bafff48f79
+7eb25c9df0a053797c71484067b7c6f6
+7eb46cdc187f6a894046bbc7eb316462
+7eb7166e568408f75d4ebd999881ecbb
+7ebbcd23e4c169394d64d6f868f86836
+7ebc339b6a39293471e4b9bd10e87c62
+7ec04474140affe4f8d9b957b92ed25f
+7ec0630d1acc231665813c24be93f682
+7ec07e5e47a8b524ec939103e2f8d1b1
+7ec2e9abd9c3c54fbc3fb16d29125ddb
+7ec61b4e98da0531914ba09104ae9ee9
+7ec8c4413c8ded4ba6549dfba60c5ee6
+7ec97036b59fd20f7a25ad5cb432cfd1
+7eca7c6f2982de81a6fc85663c2eab3d
+7ecc0aa0f5b2980243c96a284abe608d
+7eccbc2b5b0692a5ff031a8d9fbda204
+7ecd1364082050289574c325f073a1da
+7ecd5068d551eea9a6f18a3f978400f7
+7ecd641c288c539ff5e585699db5cb94
+7ecf740ae7e653b368aec4af0ffe6bfe
+7ed06acbfd5018d1b53159ac69244b42
+7ed5ab63b9aae91d215102b2305ae39f
+7ed6093f020145d0224f995b998b534c
+7ed60c743a0cb2664a610b344b60031b
+7ed631c2b4ff97ac0d6a289831521db4
+7ed67a67440f3ca1eb2b930c4116debd
+7ed67d9c7a36967b3bd5abf3026d4267
+7ed72b666ef1ccec68503d91b97b3c38
+7ed7da77cc62e989de5aa7d83858db63
+7ed871cbcec43f66310fa901bf0d86e3
+7edb7c7d7d20ad4226b0df26715a33a3
+7ede16faa0ec228c4dd2cd4f7a91a534
+7edf474202e25d9b112a6b96951da316
+7ee1bc37b3ee673cffd539f7afc3f8c8
+7ee3a70b1bfb698511261387a6390907
+7ee40d33732992a86e352874d74fae6f
+7ee51476a27e4491521cf4fb94ac7122
+7ee519180b857b07b8aada1c91401eac
+7ee69227e0c0a00b613a59a2b28fc6a0
+7eea5f5746027fc9f41b889f3592ca75
+7eea5f62a008cc47fec0e16b204a4b22
+7eed6e5676d94f3036b8e95958857fc6
+7eee62f49b725bceb2f398b0b70ffa33
+7ef06f46918b59b51f1918aae701a159
+7ef22df04a46c368591044abed30dc84
+7ef2eead9669efb6360552398388b4ce
+7ef5841eb5301152c12226118ede1406
+7ef6341d0b6b2d1cac54904cc9118bc6
+7ef642387f4068dd741deca3237c6571
+7ef6f91fb5e5d264f163bd9daf8abad2
+7ef92ca506afc5e34df42047c1c7ac2f
+7ef9b21d119356dfd515f6fa944c3e06
+7efa97acf52a2eff1d3d62deb5519d74
+7efb04f1ae37bbf5a75e097d91ae7d74
+7efb81417af2c9af2993035f463d0950
+7f0269812cd7cea9bcdf689be583d85c
+7f02745e23cab68d541999a3569799b9
+7f036b9339556eff73d6d107de2ecb24
+7f0448e52822992594828759cbedb60a
+7f0710612aa339547dd6354f750d5226
+7f092bb782e336d2c68efa46d2804945
+7f09f4e093868971632310b904dce074
+7f0b5b0ef9427aba94e0cf352967c779
+7f0e434eb68bd548f9c8e803c13d50a1
+7f0e80ea65e9e7639929fec6e22c06ad
+7f0ea89725afce67bb1edb0d9579ba9d
+7f0f6e0fe03a061eb2cf41abc6f6b810
+7f107f8f274903bc8471bf05dc46f526
+7f1414d4369c88ff5fda12fcd1e49407
+7f1453491d38078f677f83f3a112db66
+7f1a0d9605f4d100ea9bc65186f02958
+7f1ae34cbcf59729391a1257ca74cdb9
+7f1ca31f953e32b78fa4517fad7ff8d7
+7f1ee102c26d5e2449e43b221bdbec37
+7f1f2ee0d1ada6dda0d5190c3ee4b12f
+7f20fe266e4a054a83294ab90fec0b73
+7f211e173f10bd3a017352864f4c6080
+7f2275ce4e52ec9aede171488a4cf32f
+7f23b1ccbb4c84588eb439c3599dbbe2
+7f2471347222b46a2d7696175ccc0bc3
+7f254530791ceb326854d76ac8c49c1e
+7f28b1b162157fe95bc0cf3a97641e62
+7f2aa694a9bc451655e9097526463281
+7f2c644c56691786ddc169d78b89a0ad
+7f2e74d326dbb00e207e282ee377f886
+7f2ee8fe21d26303a80534cc029b528b
+7f30d0748669ac4f2519e2c5220f5290
+7f315a29b081b7dc41052a5d9b721fbf
+7f34590e43c22a93d460cacd51a4fa98
+7f351f31e1d2e197e33da2e6c25ce361
+7f364aa7a3d5b8967b377d4fc6a348c9
+7f36e5d3ac2a40d614752715ed02dc23
+7f372ddff28b7d71200607fa68dfef59
+7f393658816a60f523549585d7652c91
+7f3b6a6e7e87d5a93610ff9caa95f5a4
+7f3ceda701c9e669251f2b61d9e1acd2
+7f3d0f1072749c718308d7145059534d
+7f3e3408910e2e8666e6a368c8e61612
+7f3e97eb822588347157fff87f00f941
+7f3e9940f419deaf2eda89e25d3b609b
+7f402dc13fb1a14c4963be3ca84b36d2
+7f40721915cf50c1a64d6acd2cfc1428
+7f4075bf17edae852fe2c35d98a2135e
+7f41de15f5a9153edcaed9ffb346452d
+7f44ae4ba139baba725b61418b3858e3
+7f46f5b2c4683c3a16e1f3489d45fe9f
+7f48e85c62dc2744c653b56a54f98ec7
+7f497bb176533673a0209b6348d522d1
+7f4bd6994308225799bc200d3f2baf37
+7f4bd76498bf16b80849760d4076e483
+7f4e487d4b9aa9a1719c9143769e775e
+7f4e8b760e5929cb0d277115160d07c3
+7f52e2680bbaff762b6345ec28b52196
+7f547db4be505c939899cb9442ef6ea1
+7f5523ce9fbb0e2ea819bd46d58d6ea5
+7f55f752b540af29119e9e947d84dba2
+7f5627c8c31609a3cb00af34f2df8c29
+7f58855b59ce48464c7ffd1eeebcedca
+7f5a034e1cb0ee910f62e7ca0ac153df
+7f5a857341cc8eaa2a9e6ec4d6f03dfb
+7f5bdb3d3f923be256f39e78760c08af
+7f5e23d6b423286d5c2e5036d903569d
+7f5e48107e91613a352f561a0a03849d
+7f5e7e813a3a196ac64a6bc3d735064b
+7f60b43c85d3c449273b7545a82271a4
+7f6128a0ad41472325f1322a05f4060b
+7f640068a36ad5bc4db04c58f2131af8
+7f665b1a03c5c19bf6d014d2c39d236b
+7f678bba2c8190b081c3c00595a9d15c
+7f6c7a37330affabc8df27d0d65d7612
+7f6e6235f201aeefa74120b549f680f8
+7f7154b49a1166c3a6ce77dd07c0c60e
+7f71a4eb3d30cb9b3038545d4b344381
+7f752d04075cc79ce4567b8240c2c0b4
+7f75aa3dcd5851edf4bff437906772af
+7f76602c63250d2d670db96f35601b27
+7f76fa40c15319a57166676985a84531
+7f78b7608a63fa3bb824bd318c5b288b
+7f794c8e185011418924a0753e60e42b
+7f7ad84aa903b91bbbe7bc70821f9035
+7f7b6bb7cf38344704855f1d71cb751c
+7f7bb5c2cc5e2cad313d19be3acf56d3
+7f7be49eaf54c2458f271f605e847661
+7f7c9a2a80c0b51edfd6077360ab01ff
+7f7ed6beac93e5b1cabda04ff2154fa5
+7f7ef21fb5552458df18eb00c5ce3e9d
+7f7f1aa835caacc96173b98ff53b3ba5
+7f7f47ea78abacd3b54a7d9477bcdf42
+7f7f88fdcd9c4b7ace723df9caed35e5
+7f8362e97f76751c6f22447039f9261a
+7f83dd79375b017c760b34362d71e5fd
+7f84f74ba24fe7461bc2e1d4fe5d1bd1
+7f852535345209ec5a5d81a1253273e4
+7f859a2f4fd95c800c486b801ff9f106
+7f869afd06a43e11ef80905d155503c8
+7f877c0c6bcc45f6bd2762f06d19343e
+7f8b5b2ac8d7d128ebd0ab6b14028fdc
+7f8d377f1eb4a5fb4de6698a053ea1d4
+7f8d7877f9d34c4b446a0b76989f6d7d
+7f8eafc748f99eeab5b19b9b347ca9dd
+7f8ec7012d84f997ae4cdff6136f012d
+7f90ebd9342bac5d785085ef19dbcf49
+7f921676930653929cd074a0e1fe489d
+7f923f6ff6949fe8f1b909fe62803c49
+7f92630af32c4750f54e91edc8a2ad55
+7f938aa578ddfbfc9fd4a5c515a9c5b0
+7f93942ca8967ce33f89e6270e9d3080
+7f9556af600f098d868119b0b5b19366
+7f96d5b954677b2c1c0168b3f59cf110
+7f97e5a4d01c68202602a43d27d6d231
+7f9b4b5a95809ec678092227598ad260
+7f9d13e9446f852f45d7cfa9aa85364b
+7f9d82f64bc8d7c4ebe7e3f0a5a542e9
+7f9e7115483258f31e295e26c4961ea1
+7fa2917999cd7d3efe9d4d08eccf47ba
+7fa56b1360c989757e62e31bbd04a6f8
+7fa5c478e15c506de7ce2d34411af327
+7fa957f87786569eb6c3d73b970bfe92
+7fa95bb2cb629ec59f3b52f1b8adaffa
+7fa9d731110fb509a959ae3fc92e6f12
+7faa79f5f1017d290284bd3a2382ba37
+7face646dd54b325fac515858c9e3bf7
+7fad185d2517a99b1d7e7837d8913826
+7faec14b3829b80326a52ad92e50cb94
+7faef7dcbc425722e0f121f819d9953f
+7fafb6e5ee66069ce4f817f04e48dde3
+7fafd1a9ecd781fb9b927bfbae805b63
+7fb194616d7463e6cd2bfe918d99370e
+7fb3241dc87157df3a313394c4ccb2a4
+7fb3ddda51df501540fca7ac22ba4181
+7fb4367461fd7459a0eeeeab25210111
+7fb646f8aab8e99e447a2852451bc579
+7fb93ba66476316381e6cefe88d1d9e6
+7fbcda6087bd27d9f955e413c0d63b55
+7fbcf0b82dfcd72b59b8b761978d9b23
+7fbd559332cf9d9bfcd3e604c922e60b
+7fbefbd4adc895023215b48dfc4b93e3
+7fbfd39ec1ba941c70966b3bcfd23f01
+7fc02ca6897b1320a5f06f69a4d8193b
+7fc095dc97070eb4b1a5284792f1f777
+7fc0ffd9006e94acbcd5d7a9aeca74de
+7fc1eec5bcf5db4f0f98c7f4fab6d2e9
+7fc260034ff7bddf7f08dc94a8d7f419
+7fc85bcf93d13a1f00338342d04bb8bc
+7fc8f1145297e8256727b5dd87a6d86f
+7fc9396f2d064966dc8f67f141341a6b
+7fc9434ed5160a58217e363d755f619f
+7fca16c35c5011400f9de0385eed69da
+7fcc8134508c34e9f478363ccbd66bfe
+7fcc9c2e49e4acdd4685696948b51d81
+7fcd1ca33d4643991f34a653d25d0587
+7fd0f9929e5aa0c6fa494b46f24014f1
+7fd2f0033ac73c141a52dd691b9b181b
+7fd3d64e4f6bcba312b7d617fa845e3b
+7fd427e289a74878d355b4a85ab6b5c6
+7fd72ba23910cd9790dbdfd7bf36d862
+7fd779e9b060bc25a2da88bc57d464eb
+7fd90cf6fb7a04a431783b3e6956aef4
+7fda81a0c965e32e85dab6496ce8e142
+7fdb97bac835168fee6f6095866d55bd
+7fdbabbf8e6e174a1e5ce1f13ed2222b
+7fdc7bfb397683bd83f6d98a2075e98d
+7fdc9017df783877662201adab0e08a0
+7fddd775eedeefc9fccd444dc813ae6e
+7fde123967cf7e708bd2cb2a4e5cbbb7
+7fded1e73df7a7e8f21c7a70ac1043e5
+7fdfc28eea63fb58b8dc481b2a109288
+7fe3468481fb452b1ee8c7fe043cefaa
+7fe368cb15650c400e6a55016dc8b2f5
+7fe562b676ff133e9c7fe179a825bab4
+7fe5e1d80f481db506bcb9c94d0ff1fe
+7fe79b7b43ff64c9d68564efe4efc288
+7fea19a2557ed753a90929999c2997ec
+7fec93f76087d8084f0ad7901d775f78
+7fedd1806ebe1364957ece815a1ec0a4
+7fee6f349ed92583f52ec0cd75575e26
+7fefd432334cd74f2b54146ccbfc3012
+7ff31cc281d0286cc056fcff9ecf877a
+7ff8b19e11a713cc67e28bc8db5f148d
+7ffb376290cc2fadad89a98d2cfde256
+8001124227c6af8e0200c9e61aedca90
+8002d3e081c44116f345a0cb415fbdf8
+8004cbff78666b12090efda2ea5b05ac
+80081e99722f26e6e0e33c04bfc92262
+800933a191b67f1859016ff2af376fdb
+80095ba0f6a1dd0f4227060965a39153
+800a33bc8211633e3d3e211135e6a5c1
+800c810daddf420c6a44da46742db02c
+800c959852bd8b4640bfc265cec6aa1f
+800e87727a4e653e640c999036ca1107
+80107750e9cfaeadff8092e4841a0ee8
+8013bab372cc81fad3c92861cac71ad2
+8013d4e2a616d19fe9d8731f2c986701
+8015f00d13087b42c97d8501c216fbfd
+8016a7085d16b547db1b1526f97f907a
+801716a4dea2ed1b10d5877c717fa898
+801887f7c94da94cd497e5504a61c5c9
+801c0acfd2730ed967f6218b5f21c8f2
+801e758608bdc95206156fb1b9f998a6
+801fb7ee8d4f3f8ed37544d8438fde55
+801fcc517f0323c915b7cd0e0c474675
+80204c43e48e3634e7d25c4bc1c96208
+80220c2dd88ae3237c984ec1a26ae3fa
+80260467f4f593b0d30693d1d8a80fb0
+80262e78750d20341279525ed06741ca
+802791d09c053a473e345d4c3f441a79
+8029888f7c47c2558a304b04b6b9fc52
+802a5dccd22f62dff1e3b61174da6131
+802e2ec4fc39b27914331d0301965968
+802ea784cac937cfc2ad88b878f20e57
+802f7ab602873f8b6d8197f16b3c266d
+802ff63986ece417b765eaea27fda104
+80334898b0402331a646704e8982a1af
+8035ab3ecd345433afce3abfa617785c
+8035f49da15c862e5873832a58c9ecac
+80360f444fcd549f4366f212d5e26290
+803954280ed86e874d4e5ca5ba4f6d42
+8039bf3a441eb7a21c488847d7fb8489
+803ab06e7934a470b5eb398b7db94daa
+803ae4bb3e1ad2f40e43634519951a1f
+803aeb7af95f8ec7141ef645daa1c856
+803c0789d986858549f64a3294e032b3
+803d5dec8058efd9f0434ba3e2bb3fe6
+803e7ae7c3c1e87701de86745fc18962
+803f0578c931df11a0ad8bdab5df1a16
+803f8285f6113320fcaf4a43535f4c4c
+8042201b12a39ff2d8773563078664e2
+804323cb6a73954fa0edd64edbd21ac7
+80468bb73bf569986e4daf1df6a9234b
+804accd796318dd61726283a91c41e12
+804adec254bacf2c5b6704ad79cbcfa0
+804bada368cf783d5530a4a49e77c2b3
+804bdf481c08258d248f4696124d8d1c
+804c7712580b1520d59b2ff2e4a57684
+804d02029d9341e2a131a8b3a90f6340
+80518c73fa54eb1288c5dc540ee7fd6b
+80560da5eb084b79a1a326b46be3013b
+8057c6a210db187afd254bbe35879438
+8057f0dd1a66a43df1199477c5521fb1
+8057f5279b98880fbb52a84e7b9bd32d
+805865159fd3504789d49255ffb95034
+8059460fb03bda1701ddee2502ee390c
+805cd1fa1e874e070bb73e6613e49c79
+805f6a49f2d2b0219282a7d7a8ee3655
+805f7d04c98dd1075356db99d8f7d430
+8061a1df47839e059e4a581ed747d779
+8061d2824b0650d7a32dedb06a23b302
+806332b347a672b9e22e024b92354acb
+806436a4b2126229c389c47b8fe3b191
+8065796d242c92a8e027419a3392a027
+80666d2399d61dc9e462f1188af760a6
+80672e069a756f3022540372e5ec01e0
+8067da87e7e8bccd6038a23e8a387a93
+80687c9defd73daf842747e215126da8
+806889db758bfc9ef2f408f6e6f9e3bc
+8069a735e38d17765d96dbbb8202611f
+806dd637ea1bb04ac603d8501ecddc8e
+806ebc06fa9439342007ad05d27cd77c
+8070196f6b7a0ec7e3f1b144769cb3e4
+80706506c99fb6f35bac702f4fafd647
+8070b30f2cfbbde3654c13848dc69187
+80710478a322e990e0b4cfd6660e0340
+8071198535d5ec51bf774f8b1abab311
+80712ca660047c5b536a40f181c425f2
+807268c6ed79f1c9f9d51b12a4920397
+8073e1f6b24682959d1f2765420e71c7
+80752b6ca88ce119608b24e57c3251c7
+8076a0e0b45f14c834ce1edf48bef455
+80776f78fb791c4d23946a2ff446e163
+8078c0ccccfa68904634da86e688b526
+807c40cf8aff9afe4011f9f7c2fc4335
+807c477fa0f4a350d52d91a90a3764dc
+807c92cff297ae3254d38f9de3048393
+807c9b36ea559795914fc229b6f43665
+807cdec4dd3bc9ed334df05d567bb7f3
+8080b4e20fea202b04451ee182cd3027
+8081c4bc8b5aefb7ac624a814ec1aac5
+8083a4790855274c6ebba6889c259fb8
+8083af61c3c03e4dbc649df83fd2b4b1
+80856fcf38fcd8efe7492b57069881a8
+808578b3fa6fab92a3925e150afd06be
+8085b9bdb7d66d56fa2861d2ee4bb623
+8086aa5de7c2a6bf060fda348156653f
+808ab962aedf140d6c1a6292613394bc
+808b38ec6dd9f1cf3c92c67a5b70532a
+808b840029cd9c979ad4b22011f48375
+808bbecd06941a8f8ebd5a5b54169a2c
+808bc9b9aa5c539e483b53a1c7bb02f1
+808be26c0a5efb1ad27cfe0eab743981
+808c7854a38e49a78aeefa0205f6a012
+808e2ba8dfff961d0c435e36eb2c52c1
+8091b4de096042155fea37c6a93e8e92
+8091fe8e65d8c6f946fde4438895d8a6
+80944e267b46ecd88f40bf0a13d49f49
+80948f42637c7908564f0a209a5f4a2b
+80952bfe4b9341f7ea6b543d820cc322
+8096f121e52e1ad4383316dd32ad3392
+8097f329367f5321ba1a89ca4c4a1435
+8098364621cffb08f24d88915ff1b42b
+809a1da3afb36cadabf978296798c9fb
+809bbbf79f771ce3c612e7a0a36aa0aa
+809d97179464f0dc40e6503e16eba675
+809f21a913774f48bad8f4ddf613c3c8
+80a17e54721826002907f6d645899684
+80a3d5441e9d6d2f878716082412a7b6
+80a641f14b66c51c883e60809733f090
+80a80aa084323a94f27b2d26581c9d4a
+80a8118a1989392238ce9d9558e9eda6
+80a8cab607d6eefa87f07a5766648d9e
+80a9f5979573404b8c28ede1a8f5ad9f
+80ade39a6c6d84897925c3272c88e4b5
+80ae915f838f7560abb643452cf7255d
+80af6e983181bdec1aa679cc79fbf5a1
+80b035e7165e45e5855f5ddb64e34b98
+80b204e11b6faf07f542a410021946ba
+80b22c8ba3b71ee48a529314987a7071
+80b2ecb2a5ed4246232f6c20aec6401d
+80b5164257e7af08cd638d5adbe42d54
+80b55d61448121587dda2c3b1f4e5179
+80b76fe95c6316cc9a6e238bdba0644a
+80b7b6fcd33574cc40d6ecf5115d0b14
+80b86b2438d41327435761a559a979af
+80b916d5b1a9d2156e8dedf6e77ac77b
+80b93a295bcb044e4b9c0671c309933f
+80b9e7eda0ac67eb5618520fb2d14d8c
+80be88445069c1db1091d5be944a6fb0
+80bef68cf14296cf02fe380dfc823d01
+80befb4e9bf34560b46d753ee6115acb
+80bf875b93677ae7b1e74d9d6895dfc3
+80c359e90e01c55ec7f611c680148788
+80c3d596ff5c17de3ecfc1d61805339b
+80c751f7484ae209e9032d404c1b1e68
+80ca083b96b41ed5219e552239be1158
+80ca3694a9cd1260245bbae93d8d22fb
+80ca9ff6acc5779a5c9992cf00a49922
+80d35979301e9e3014d57c99796fa481
+80d4b76ecf92d3525e8497a5e28cd524
+80d5b76a3848d8665d9e333016834c76
+80d5f0bbf371af1bd3f3fb4b8072acb8
+80d9871a9d08436a2bb706aba7ab4630
+80e071040b122f6a28016ee67bb2f088
+80e4cbde28611ff4696222b0fb7b198b
+80e6375d85c678bbcbae72bf1f2a5a4b
+80e6515e8ff466adb395fc5b81e6d668
+80e6a199f19d8720ab5be142fa7c068d
+80e818da0b6c59f0e93061a0dec0e370
+80e8b074098ca3be6703a7326a7ce992
+80e9b2e7325fc1efbb10cceba2e1d152
+80ea3c1127d8832c1293fc56bfce0ebf
+80eba0ad3cafa219344b9e60d11d7335
+80ebeb440addfe5ecfcb69951e577abe
+80ecee6f8d1cc5808ab37dbcedfc3b82
+80ee11fc8f4201a5f985d7f007131b38
+80f487368634ca358ae180230e2655b2
+80f5a5df22356d1faca100de372c4638
+80f7b5a4f34bfec121cef5972775ab8f
+80f7db73a2142d3ce3928b0c3efedd6d
+80f8c0f70c00570b9412189438dc9a30
+80fa242542da2426ede716f2344326c5
+80fd282011e1f1f27bb9d0893f0f44d6
+80fe937892637423c12e03992e788bcc
+80ff295d637360578ed3098692555de8
+80ffb0a78c5c9e21448132f0cb3d6dfe
+81002f4bc1db9b19e45044eab0fc8ca4
+8100c9a74700239cc09a87bd0628e129
+8102645d4e6e5a3ee68bfd74f6bec7f9
+81032402feb4c0492bf440da7ddec6c6
+810586e3b0dcf0146c3a86c4f2d859db
+8108b360c510c7bd0e39c754211d1077
+81095138367282061e376e419271dc8e
+8109c9fbc1a8b898d832b79d01669a87
+810b87eda65bb41a2c60ce37932cf12b
+810e45d633f021cff90a0cb58ab2cd1b
+810eca859e29ac7d471e54c1dedbcf04
+810f3d0d0653ec14c29d971e92a5168f
+81127227b193c0631d61aa47f38d3bed
+81133718391d0c95be6ca93c3950e0f0
+8114676130953f8f4d9c9f32a90c2911
+8115032be418f62bbaff2bb5ae66eb09
+811505be2be3e90ab3307a3ea661d650
+8115157d5770a9c80621206b19fb56c6
+8116ad3c7bf2566f7d27551fd2a34dd7
+8117dd281cf613d3941ef27da5b6cde7
+8118bd037ea03e6966471687206da527
+811967b67f2048ba02b1fb069c72e3e7
+8120c82033492396d3504666eb3590de
+812331c41f8921b831d4c855a9edc7f2
+8125330d73deb1a51cb820c64f6ee52b
+8125d07137fc691d4d4351857481b1c6
+81271480dceaccfe822ad47149c45995
+8127613d3895b3eeef1a576d7d8f76c9
+812802b04021324f011cdd0b77827cb5
+812a39007380376a4badb7cc8137ebf3
+812ccfa6ec942fc28cd083a78a2ebdc5
+812df0bf21637cc222f1a66498c710aa
+812fd5e635b178b794de7e29bc0e799b
+8131642c4043d6ce84713e6c61db2e84
+8132d5f80492fb66fd2fa7463d4babcc
+8134b06e914354ad8af23a4902a1ebd9
+8134e52adfd2b79407fc9901ef83ac34
+81358ef57b292fc3c8337939cce8bf9e
+81364ea67ee13b2eddacf5447a0626c4
+8136d2afee51d6e7dbba6b99e6101db1
+81370374f04e3de48e59e0e7f0f0a297
+8139625c62b793fbb73112c4cb07b1f8
+8139c1bd03a7c00c62f0ed3ce5e8cd62
+8139fdb499987ad1e47e6829166a9fa4
+813c08671c604cfcc5d11c561b7e1dbc
+813d30c1454f6794be4b6bafc518bb26
+813d52d31ba09073e5ec18076ca9511f
+813ec2f77467f925007bf108ffa6dad8
+814082e3494d833081c69529f206b7a3
+8140ed83d1638be2eaf2a06b09962242
+81412196fad4dd6ffef4768dfd83d4f3
+81424ab2ee3907152f9cc3333843711a
+81439594652bcfae0141cd90e02c4cba
+81447c611c9d4ff34e8f80749f19d642
+814576bc8340c11f7bb12a0271f632f9
+814a8120a219ff6729ee4a248a5e195d
+814ae009a2699826745a07e1006d075b
+814b50013538d8ea5de8c40c78a4e749
+814b604dc153bfede548725b246368bd
+814f4c5e5d8be73616c76e8361335952
+815062b061649d0334fc9f0a42dfe8a3
+8150a97b0116269d998a8e6463d79895
+81562a70d5d8557ef4eefc4a4cafdfc2
+8156e59ced616fba412a234b1ecde3d3
+815789d99a81344467d6d83587f555a8
+81583e44737336ef9de5db8a5e541710
+8158bece084c508673dc2b76a30af4be
+8159d54e44ba8888287b35191ab74774
+815a5d4c4d43595dbc506903f3ce5203
+815a7e4a0f46ec1ffd8f87db757bfe81
+815da90d1d45dbfde242e857f9335cc7
+815e484f448a18abd437e20508584700
+815fd0f5890b565f77a435545228011c
+8162fe7f718ae8ed89286d6fc8885be8
+8163fbea55d60facdfbb724b520c7d72
+8167078ff01d44e38709bfadb099d522
+816883dd09c7ce3a6b66bbdd0f1a06f1
+8168f58ba45e9b19179704a830b50e84
+8169576874c298cd355e115e39004243
+81699359642b77e2d30bb5a56118da55
+8169eafd802a97c0cb60789570ad7dad
+8169f80244df9e0bdf4affb8976760d1
+816ac37fa8f6d938e9d41f209a0f2217
+816c3e4b1748dfffeb8387c3c38c5653
+816d5242066702d5ade063ff244a994e
+817107c8334024e5eb7af9c47e03361d
+81729494bdf829c8e82d003f804ad1a2
+8173aa0432b8e2eb06908c5ab66886d9
+81760e25b11669ce4df16dac41474b5e
+81762869a1f784709c6b9f9a299528c9
+8177855a9ee565c3892a575513e07702
+81786ee864bd3befc45162098597542a
+8179f29d1ae06906ed15389424f26703
+817aa5ce597f705cf873eed16d4d0d69
+817b625a77ae19694bbe3db7d1ce8c5a
+817fd5bf020baf7a24f2d794b893f1f5
+8180b14e8f3349de73d84369eb4a205b
+8181fac51c0d5c15d24c4d9ab9d31f47
+81824f931a3bca59ff24b2ed851d3c01
+8183870f8faa8304f34496f27893754e
+8183b77a14696c95b336b20021b6cde7
+81852cb7ab7ae65f62c0d8c4fb659ce7
+8188ea14a7c2435a4669e7798ea10712
+8189d39e4660df09fbb04c0660661bd9
+8189f2f40626339176e2f2bea6360261
+818bba1e61c4cf538c2dd2ddd590a551
+818f0d073d87adf2362224676071066a
+81902ae22e8ade62b011a493b910719d
+81922926acf00d7fe90fba48dec17766
+8193328fa715e04858efd899eaf6d847
+8193df93a298556262d45c6b50524ef4
+8193f89da83d1a403a3fad023a5251cd
+8195d7f53dfd25d5c698561faa5a1f89
+8195f51b7e7a69ebf70321cbefcc11e0
+8196cfe5b0c065b6abc0067ace6187b5
+8196f664df340f45e0b7e9a22c0a318b
+8197bc93084e778a1933ca6904b252ee
+8197d8ff9034112a68b73ff0f9d71c0b
+8199eadc3d87f1789d5f44dd63bf7622
+819a281fa37afc6e7fefc02d88411e5e
+819bb4b421fa00354541461f1a535c49
+819e1d7c4062d369717b773adcf95c1b
+819e53ced881582795d79cc9d357e8ae
+81a0d603cba3be4b4fee2368f968c7a6
+81a135c8d2d1f26e9788752f0d38aa6e
+81a1c500781e80144c4349fe541865f9
+81a3c91c0e4906028799af538cd5ae71
+81a416cdc8c39d3c201b2d9276976d46
+81a83750c765da4341d071098edd72df
+81ab7329f7846e2a1073aa67557a7cbe
+81af23316fe71904a19be7044826eb9a
+81b0032835de15bffc089b4a92077ea9
+81b0eaeb439539b7ebc0bb21a056035d
+81b28dbaf46f619e71d445684ea163d5
+81b28f0954fefe5802cf03fb2cdfbeb7
+81b58a0d64d1f784936a5ecd41d60f24
+81b78a61482eff5c1d8006d093f9e357
+81beb8908f5e870f07ecdc6191cdad58
+81bec247515eb0820569ddda3cb7edd6
+81c01c20a7f127abdaca99340807b340
+81c054ab72257f598ac77ef4014d4677
+81c159336da96d27e0f0039d36ea7733
+81c1711f7d447007b5b069f0e32f789f
+81c2618fa5d8710d4a321fe1da9b9691
+81c26e8fb560ffb12fc50345573a60e3
+81c2870086830ddd4abb499ac0a6fd00
+81c2f79c8fc8e35012c018b253f005c9
+81c617b9c1906597820122e9356ec825
+81c8266ad029d460dedcb2e32fd61028
+81c92ba78c4f35c2dacf0b56fa0cc126
+81cec86c6edaf5993f1823473dd044d5
+81d3aedacf97aee71d1b40c0c3a7621b
+81d4f9d8076717216bfaeeea3e7fff7d
+81d67e87259102e62cad5c0b35776f77
+81d70569ed6b35bf1fcb65e6ba2a7903
+81d816ec0e15fcc0502aacbd16c1da67
+81d864e27233ae0a9840e8fd93e5b1b3
+81d8b0702d68a26f29034f56162d2afe
+81dd2be68d0de0d392bfb9425287efd1
+81de2019672160e156419b090adf391e
+81e285a79d1e6bca960d788761f07a8e
+81e3337421cc3687eadf6a81f71caa87
+81e3c7920a3a68bc050907a0749834ac
+81e4d060a307790aa2e35abe9aad0495
+81e64d49b161145c622b4f1b7c9a34db
+81e80de208f9a695f8f088fd1f9d9aed
+81e8fc97078d940854911f301a46519c
+81e9ea953d78d0e60b58781a2a0bc742
+81eb0609b2386fca330d3f1e95bcc0a9
+81ec7616d3ff230a69c37b2f910e547a
+81ed2084916370a400a616e53b54e49e
+81edc020572a6b9117866bbbe7150bdc
+81ee2bff81bee04e27308726e6a25abd
+81ef9106ae14f48c29d9d3a3ce10bdd4
+81f009f867b3a7999bd993925f5db39d
+81f1640d92d3cf03f0bce5809ce93b3c
+81f24c9f2d355d0b642479efdf1df41c
+81f37738a888e69a4e03a0c95c13bb8e
+81f432694812f56c5652c5be00c97f08
+81f4cc6e9211c1d590633d3d08e0414b
+81f6bb450f38174d2ec4555d17e017f2
+81f6f56c4cd0ba64d85a7d1b565d789d
+81f723c483a15b361efd3a58006c47f7
+81f79b5d02885cfbb0fab1c7ea9cf20d
+81fa3c2fd813e0155e3f86d7fd7e323b
+81fad47c334aeac99fd501edc6052634
+81fcdb8cabdeb330dec4fe3ea2c6a380
+81ff1aceab84dd47a8b9d44d634bbd92
+81ff36968a7477ef5de20fdc9cf44960
+8200d487385c4b0e007df553ef177225
+82015a6dee9167d4b6a4ea632fb71885
+82056c17324ed6fd85c01b0fd9adc54e
+8208ca4398eeb573ca48b31ca45e0b55
+820a1b42bbca1a1c3dfe79e23e219b37
+820a9baa8962e0d210fcf2a2f124df95
+820c5ef69b07ea8af667b68e1c34e699
+820e87cdabc48e86c31f2cf417fb818e
+820e91577fb856c3daf785f7cbf30d6d
+820ee41a93b7b355734ca9aac9fb5aad
+820f356da3b8480a5c56f52f8389ee1c
+820f6bf09517560567c6863e9565034c
+82101df0f9e4e6004e9afa8a06b5a3ac
+8210e7193de347594f29617e64840c89
+82116b287cd4d4f967f5aa0c9c4a8ac9
+8212ff8a0e231a8165242846619fc353
+8213cb107716013405dc8449f6bd9700
+8213d8e0b116cd4920e43ed5fc9992a3
+82144ad445cbb2de6a03fb642f180afd
+821470b14ace0b28d9d2564069ceb328
+821609f309343282fafe9a64a1b43733
+8217a5bcf669b773e2518d0dbc815726
+82183884d167b3badcd6433d9d8911ec
+82183b66572bb99a93d9249c6526ac78
+82188706ae4ae926f3a0732ad9ba2dad
+8219e8cc8f84251022adf1235737d43e
+821bf257a6f39ed92dd54d0c711f02be
+821c6baa2fca066e4e5e703444262c5e
+821dd2e4467cc269e089421fa7e5178b
+821f16fa7e9e135ae6ae53da39226c40
+821f57c95aeca1459e85c20eb10f8e6d
+821fd8d6191b1a5f0f691770a3591c59
+8220a30980c93e3d7fa81b0bf0bbc92e
+822297a3b95c67cb4784c77e0ab7c000
+8223021ef8c2b88a53ccdb3b0715ae78
+82235088eaca410af92799ff52864641
+82241bdcd43b7ff8766b8103bf839f1a
+82242198b54b6e05c31b6bc28853ee4f
+8226fe6a34e214a919e589a049fc69d5
+82283c18a62fbb91bd9600405ec0741f
+822853e3217cc90fb53adf4dcec43d48
+82289e9ab038f444e6cc2b98d2b5c406
+8228a6fe3b4d00caf59806c36c7a0c99
+8228ad66197cfea9774893e8f8a5f798
+8228bf6ca98b0b7b3bbb7dbb9aa928dc
+822982886bd316fb09aeb8c4010e5595
+822bd3ad2c0082a4052550f4b92ec9b8
+822faf9392fd41cb0fa791ea951ed04c
+823003f7f66ea5d3de284af952a8665b
+823334e23d11ca49b12c2a2a23268d74
+8235ccd805e9bdfbcdec7c07659f7ccc
+823716b63a7f9b93d128eb6d57a80017
+82382979242e5ae7552ae2896a4b741f
+823ce596085ad9fcc0303ce4114d0574
+823eef9ed3138bf4758e0cac90587874
+8240973dba3a3527a130e85a7b3e6c11
+824500f3f21f7475077d6b89f2902e01
+8248ccff63acc8acfd2a8543588854fb
+825021c4a4dbe3277d8396db76137f57
+8250fe16f698fefdd189565b63e237e2
+825260b580ee31ceaa2674a06d61098a
+8253e13f71b140b09f83d9a81d9c1c22
+825606ea21672f51668b82903250479c
+825697728f369896e1aa7ca1efbd89f6
+82596d97a6205f8f07e1574243e35678
+825ab3fa130effdf149255c13b70d928
+825d5c957e8a56b7d32cf147a5a240f4
+825d9aabbcc18b29d9f8e0a9bf595f9d
+8260462976391b769d990108aa24d5e4
+8260bf2fd7da5816e2252599ac2275db
+82614144f9c533353c5d4597c45b1423
+8261e729b7ac58c40dc74cf463f2323f
+8262f073790a413ae7ac2e641fc59de8
+82639c8dbd1e85ef03b63c8bf9fc18b2
+8266047be12b9ddef97eabd3eecb858d
+826a3b959f7661e0ed12c51ef626504d
+826a424ecfc186ef65a6e9db3261f2a6
+826dc9e6cdb9384559db110ddc195de5
+826dea4971a547877e3827fb3d7f2c4d
+826f4ee664e8e755702f8c81c9e278bf
+826f5296e27d787f4a92a102cd044d9f
+8272bb65b0e54854f5f7f88726684fa9
+82737d45bc225ca33a7d31537e8af8b6
+8274ef499cc6940bd85feae096049945
+827547bba55ac35f5e8ce3f3051bb96c
+82765b9d05f39c35252926b5406dc542
+82768ba559840008989191ee84a674e5
+82780d044374d988fb7be89cbd75734e
+8278a6637d88f935d931bf85c3f02f81
+827de5f08e8f6b93a396aa883e137460
+827f3aa024cf44471a16f97ca795fa65
+82816f2a719d83d1689fce8ad0886f37
+8287f2423a8775e956667f17021733ff
+828953c755fa9a3fe16f8ecc0a31120f
+8289c7f00f75273ea30706e2a88378e6
+828adf2e9673c71abf8224c49284d819
+828b4381993f9ee1e8a55ee0a695ee80
+828b55d3591b5d342f3ca92b21d6e9ee
+828ff72d777eaad88671f8fb04a5b117
+8290d04118372306810a1f5489c60934
+8291bb98ded85380c68fdebd9c9cea58
+8291f98902958a95f7f0b0575578a10d
+8292cd86dfaaf107684523d706310eb7
+8293b497f376f115de7b05609c3fb4f9
+829532698561f1a4ba52b7f4b076230e
+82968fd8df91fbf45027087cb7eade6c
+8297ee74e6ce39f0b67090418af319f4
+829aacd812ef6b9fd4e64bfb3a3a587f
+829d3ebc2a627fbc301a352c1f18ee74
+829feada1b3794e355c7eaa3b0f84fe6
+82a46da7fca6cac23afbf49696b49500
+82a503dd73b1a5dd0c070aa2a455efd4
+82a6c8f5f7fc31274f86b8c9bcb4b574
+82a70eb29f65c19570996d20b050065c
+82a85e7a306420695a3d793a76fad8cf
+82a968aa47d9744ae3ebef61b55908d6
+82a9863d482562763f55b90b10e8da36
+82ac65b0f0b0a20394b57b9e5f0dff6a
+82accfc009d48cb484e8f5c20fddf62b
+82b1db8f2444031d9f49d9fa34a8aca5
+82b1ec222a925217c63a7dcacf5b4105
+82b3b6325b217c939b7d0654655349fb
+82b513108cfe533ee0ab529c31494a76
+82b5225af77f4487e9606a76cbb412dd
+82b65fba279c6e1c10502d5579fd6eda
+82b714bc6299fc30fc4459f8b192ec10
+82b72274bac15e37393c18b3085cc0ea
+82b78e0ff8f4f1d43f140e121df5de8d
+82b9217d4378c83695ac7a6b47cd563e
+82bb0e0607b262e8b13c5037b232f1d1
+82bb3edd785f81154f0d816c3442efbc
+82bbb67a3929653a36780e0ebb04648a
+82bcd38b903ffcb72812628d019d1c23
+82bd8e563033b6e3b7a07f497a061277
+82bf9dc62ed88c3aa4d06af9865ed4c0
+82c02395eaea970f78891979390c157f
+82c13e158b00321cafab5014e7e01c6a
+82c18ca6001b78d031d36ce836a14906
+82c493fa09f5db027e40bc6c8f997fb5
+82c6f2117fa87bd19ce87d6bfab7c8e3
+82c6ff6e8905844aed25811caf479bcd
+82c84f37082ffc9d45e9ba0fa60e60f5
+82c92e1340c26041af1dd3336e0647fd
+82ca74509d25520df3b613709a5c4a07
+82cb7e46341e3450a764984e780c69ff
+82ce0911b0f44a2aca0e7ca1cc60722e
+82cf3fda6b9ad2cb92fd95901cc54db9
+82d227076ae755438e2fd8d6b057cf6d
+82d26c7f1440941f456435cc1961ec37
+82d29a454ccfb3800135bfc0b683641b
+82d3bc5da153b1f124c126bbd5deb113
+82d56ab019de7652242685f419635490
+82d5abdbf8e204219a87e645168bfafa
+82d87c1410121ce5699b321e5b1d52df
+82d97ec708b5776430f9a0f9e8411ddb
+82da0e415274c55e5a57b7582271a2c3
+82db29620cf76c891735b29bbe99d9c3
+82db3af749a27f51a89e73182b08628c
+82dc2e54f2917715e11fad672e1333d3
+82dff4d298cff11bf60a5141c4823a26
+82e076c9dcfd04034cb2d24109310d8a
+82e36639fd504c41c6b27112f977114b
+82e4e332de7ee21e1b8994026914f66b
+82e6bab1ee4bb8618760158ddc75d21d
+82e83120783ba0a83c891d0ef2c93b63
+82eb36a7922e3f50cb7142bc866257e1
+82ebf7786291974323bc383ae33c1417
+82ec9bf99b184451f54f99c079998d62
+82ede6a757e923351d32044eff011e83
+82ee3d18360982f9cd2e43a75b455468
+82ee9200550b258236a4fe61301400c7
+82f11a2a07db83b5dc601eccc18ecaab
+82f3985cbc06221d5dc67cf4358f9a51
+82f3bae4dddb6db49b35e9ac9f6c833d
+82f4192a67f1c87a5e21f143001be1fb
+82f4cf4fd3e030fad546385007203f38
+82f667c3cf47b592e2385fc6cd790312
+82fa6fa0a3e1a88934e43df5a8ac3bbb
+82fc54f8091f854155cab2ec2403dc56
+82fd78511c9e8a28ce7e2be2242d468a
+82feca66471232b224790fd6fbaa904a
+82fef80d609399159d6a9b0a5e1908be
+83007b257e304d4eecefcb9681ff569b
+8302bce9c37dbaf65cd420f2977c8089
+830458baec3c72845bc10e6574c99448
+83075ecf457ad128697ba68fdf129280
+83077e3a02567b52d2b20e71f44de164
+83088737aaebc275c8e83f30d9580e31
+830947418b71054df4c0cb19b70bf909
+8309cc973fdb6ac83ea6fc4375f1680f
+830b8717c9c4cce5b218e4c7a991c43c
+830baa817a8bf5fd177df62165fac5e1
+830ca01f6c5707832bc98906905b4092
+830cee72b12c5c97ee090f94911abf3f
+830e2e3165bf5e9bbeba188c2aceceaa
+830e2e695dbf4319c95c542a362f4bd9
+830e68f7d77fd5089d2522051ab2812f
+830f1ad6cd69f2e4d29680d9fb84cea4
+8313a1430fa7b292e2c454acc0011331
+8319f4d68d7ef8162914afdc83c773fc
+831bca201af03ecbb32b5648da527b0e
+831bec36806ef92bf43434850ce843ec
+831d46db5a2f98fe7791365a7e587ea2
+831db29a71f891987a4e181ec647e19f
+831db8368e8fe4d103355a178e47a03e
+831ec526b2db75af6e55fc88897f8cee
+8322fb878b036b72f64b0fd1877d5cb2
+83248b9adab21b1cbf7d2d56e0fee145
+8325c932bed746f9f9350fe5e3dd8585
+83274986fc7851b2f6a1e92bffd47f05
+8328796fac20e8d372b62e183afaf1d5
+832919edd6bbf2f2b166fb11eb848609
+832ca1ec662d496e2de3aea88d92ce16
+832ed7016b174adff48de88ce3b366fe
+83320c0fd986629c918998056d15ab68
+83326516433dbc0681d013a2d33e74a1
+83339e6e18225b8ae0fc486ed9092753
+8334144ebd8f8757e36e206db6e77246
+8334163e7f7d2e5c1daeb7efe56381c3
+83365fc234cbba66575db54271345c6d
+8336f58d2745f5baff28c3e38e61ec22
+83376a23dee39ede8572e86ef3e90564
+8337eebeeff73c31e1137abe0a101ba1
+833990994cf074472ab2c55714d11167
+8339a343e150060ce7c2c1c31af8523f
+833a4f00b5b7899de5cd04546515a2ef
+833b9439605ff935c01e66adfdbe8855
+833c1ba7a61a3f58a9a9a0302b6c622c
+833c5593cefc856726603bdcd3d8faa3
+83412498f484678211519538d2bc13c8
+834162c3378bb09a3f8bd2c55283e6eb
+8343a2f2dff7355c258732cb7d1c63e2
+8346d239cf5cff5790579d78dcda206a
+834923719a5720e41cdd02abbb9ebb44
+834a51b85fb7f2bb75a15fc44074c300
+834d97b333a937558dd34a081e5c8258
+83520f967cf009ddb4c6f3da6057dda9
+8352210a4b07c4c585460cc19c1fe049
+835259d2c13bfe0e1c27b4a1f044fdde
+8357a579a6bf7d5e4f737c00e124d0d9
+8359268cb5ab6e51d5ed774455bb03d7
+8359e1f58f8914820a5dede9231468c7
+835a313f08cf694339d697625d2a3302
+835aaed3c22d08a196d3599545fb8586
+835bd685a1dcdfc4f90a1b5a2a6d0de9
+835caa24c207708dec43c98cf9d56bf7
+835d104ff8c4256f551094be8e26e7cc
+835d8e22a5df166e8f5cee385ffc61de
+83627e2c604d892056df3bd78b9e3411
+83636e853cb66147799d625253e88533
+8364282325357829132979022f36122d
+8364800975f6785cd0623208fb43a7f9
+836786ac31e394ae0deb26c50819c97b
+836bb82f7cf829f2ced53984e2d068ab
+836d2faa87b74daad504d1a2eac41cb6
+836ff5686f4d1a36454f2f79313e4e9a
+83708ca03e619dd2947359906dcfe422
+8371b99770e36222752e1e9b0f4c7e4a
+83735874cf494e32ecc1a2e9de7a7642
+83742476ff35fe1c3b7f157bcb93767a
+8374c1a08fcf3776f2677e11f02fcece
+837533363d12628c9da230574a3fb9ed
+837718d03b8d6acd34c48635d4135f75
+83777024c32952d97e66179926171ab5
+8377fd7056a587f4a518034fcbc8950c
+837810020643531478d4b91a6acdf459
+837a3db3977e6c6d37d1df240e30c6fc
+837abfcf16a56e5d50e6aac1d0cf1f00
+837b5942f81fc2ee464b92aad1af6cea
+837ed1eadcbfc6e6b2eaa4049b78c4a5
+83821ce457ade29f4452a7c59685cec0
+838253ae3df5760899d217b5906415a9
+8382564fba301eb7d973877d70d6fa3f
+838338d52d5da5f39001e6ea5c55b35f
+83833c66cfca9a1d2a4f40f03548324d
+8384974c911041fc75c396ad13b5780c
+8384d5169312d50e505c2efbdca14355
+8385335c2690830e04d3e03345ae2942
+83854c1cdd067fb96457c2c1fb1eadab
+838575406fee6f53c8bc87ffa6e5bc54
+83866ce35382c3be6c66e050d7620704
+8387e4b44996bb7841edb697237957de
+838d4da0dbc50fe734f8224cb13b1e0b
+838e2b673b4739578757578630629475
+839020562f3457d503c7f70cb782f194
+839170dfc31d06e5be5840c5c6316310
+8391df712c2007955fbf651f6f291a7c
+8392d8ab86ac651234406d7fb8d19542
+8395d8b6a2f1d57a5b94b7d4d4720fe7
+8396a5553bee246f6bb1b3e522675a45
+8396d1776ee4c6508512072695506611
+83978d16823d1bd2afda18ca796be4d5
+839828a7e019b71e53c62990d2356242
+83985c3e5f2746d13bdd6f54d2acad89
+839a0331b7339df7c5b6c61a451ed268
+839a5ec02beee88df484ca34135c55a1
+839b3b9f5e4bbdd550e8ce6d882fed9a
+839c8ea920f43d942d1dbd85bc30a84b
+839e2c06654690bebe239b3a379c533d
+839faa836922efd8474a14428f605b56
+83a0dae9d0b83b1d000056397cc5ba3b
+83a1d9130b611c5d8a35782c3f1c42da
+83a78fa5104aafbc822fcad682687066
+83a7b816067508e6a946b037f3fb7816
+83a9a7676ad711b8229dbf65bfdb7420
+83aa2c861f58f340c11888cc0a9d523e
+83aa35f49c15a68ab4b58d3e85766f48
+83aa89f6177e3f12628e278864ddb823
+83ab7db6fcda028c8bdaf944f9f4d507
+83abce2f06a43ad521cd372197c22e96
+83af2260eca30d60be8adb203b890163
+83b013de34fdf618c8b1fa7afaea6941
+83b0a45ca34b495dd155c85ac07ba7c7
+83b0cfec4d4a9a32f1dc7ce75c4e50e0
+83b1ae0290c8d23eabed047c5a97ff38
+83b4d66a3daa48ba6a99179d659fad2a
+83b4dafbd28409d9ee8212913c771c52
+83b5511ed2d40495b3c5cab142f75891
+83b6728ee7330a9b75f63cdb623dd283
+83b7dd74ac61e2c0432fd0e7f1383c9b
+83b87350b3ead3ad1f03b363160dd75e
+83b93a2c24158efa8b1e250dc8300d98
+83b9fffc8c19b0c259331a09680ef062
+83bacc9285b36502629fd055cba2b0f1
+83bb225cf1ebbfbe81d9f1139c0f8ecb
+83bb940190f161eb67407eb18a13d91d
+83bc823cbc68f621eaeb4274c1ad9e73
+83bc9e8859ba1c365045bbcf4c41c741
+83be1f750817ae53176aa3d3589eaf64
+83be20637e553038ca1af7c84b856632
+83be4c2c30c7a66ffda42e308a350fd1
+83bf3c6783db25dfeb78af9730097917
+83c10f5d8f5bbbfe53db4f35cbbdf348
+83c1aa3be4c0e268291f7b204cfad920
+83c236f8ae7a87b895cbfd66125bfaf5
+83ca200ab5e5f19eb1a3eeea719f3dbc
+83cc1e2fcbe55a25b49ddb90a4910602
+83cd6dd3d54e364c9ddb627f8f4e91ea
+83ce4329272e62f55640af0b413cca4a
+83ce98517a9c88922d1ce5d12e250fef
+83cefedc340bb78e43350544940ecca0
+83cf0aa31d59c1d227eefb7213d1d8b8
+83cfab799c4f5e6ad4c73fe09430c08a
+83d0abfdd5a06e83ebf150e1b011c422
+83d184467410ca0dd1c3c77bc7904286
+83d29644646253a5cd8604543f469d1d
+83d2fdfd70a7a65556a09ce84aaa1e67
+83d553fc77823675a504bbe5fe4257cf
+83d578e11bb42884c09427e66bd0cc46
+83d7f8ab4b5faefce86a7fe2a232a542
+83da1900e65edc1760622553ba5641fd
+83da6751cc467ecaa58de0a3b72b48c6
+83da8d70a1fae5502e7933784aea4ad5
+83db1b985ccce4d96fd13cafab4d625c
+83dbfed22a3e8ce86dbb2100254d37e7
+83dc8bd05d627941eb3199f8107400e4
+83dd57df335f6d740342cf9140e6d58e
+83dd9ea201c2d0d98996ae608fd0b9ad
+83de20d2ff8acfc8cb42a3243f4bb26c
+83e0a17a43efcba9ee5489a8784384a4
+83e61f8dfd677aa2d69ff8d986a047fc
+83e73db25d59ba44293b15b5d275c65f
+83e743c660223594e56bd9ea8dc60a53
+83e835d5d8abc7ce422f4976182c0853
+83e880394e21cfb20477842643c4cba1
+83ea64ff7669f6189a099bb9acbe8718
+83eed682d95ffc385c42160a78950824
+83f63b405d57e66520d44c5a2fcc8dab
+83f6537afcd024ec6fdd5eae4571f5d8
+83f904b7d6e2ddeb161555f322becab3
+83f9be1b35c81b52ec37992eb9b066f5
+83fdc5a977c2438671c0a352b369d9c3
+840063313d2279bf4463aab6fa64358e
+8400a1776eced39744591c42c0eb73b4
+8401dea3d964afc1a1bea6a228757356
+84021582a8678532741230a7c52ba01d
+840431a1faf54f6ca8cf0d165b2d9e8b
+8404afd7fa364f1502a29999b6f7f873
+84070993febd903b31b153ee1bfa65b2
+84074e5282b077847d2200c6a697065e
+8409669619c4271276557f5de98bd5ef
+840a317de117a8c434222cee633271f5
+840a409a046b6f8c9018564f309715f4
+840b16010485e56e07c9567eaf709579
+840ef19afb2a56a0571312116f136ed4
+841064f522cec4b96953110f7dbaba21
+841331a3ca7c71849e729294e37ce621
+841359a891bff28306d0454c9a3b82d7
+841383bb17acb88d7777fafbbabf7948
+84139ff3a182c17a9c6c668e12a1fa1c
+8415733874af0bb3a377ccd752cf31e6
+8417a5b2c34f0adde6c856c36db5c2cd
+8417ddc784be7461e5373d6a8a3fdd85
+841848ab7076b437f66826e647852139
+8419b5b6215fa64a7790ce443e147ec1
+841c31988d57ddb640b0fd60b36a2765
+841e012379a1cad8530f4d72937baee5
+841f40c5a2bc72808f1f583d804cc6fd
+841fe281cfe62fb199a5a303bfb1e2de
+84231032a8025e7500b21827756ca50d
+842326495aefd70ae467ce567b583fde
+8424c0c14abff235bda2715c74d5e70e
+8424d98a44dbea364f7fbf259e3f8e07
+842555e6a7e7d92db0dc25d6f9a1c2d7
+842780ad415726e7ada205f35b0a4f81
+8427ffae93f5a6c08bf9c93e96d54950
+84298c2ee702a08c10c18f5e523bbcfb
+8429b0a92e096d15fe3af27421f4942d
+842a045f12680b8f7b59570d85085f83
+842accc25c3daafd2c5f0b9fb0aa097a
+842b0ff59ec98757d17f67d72ca0b845
+842b2982af068108fe7d0f53b164bcdf
+842c2d9955795953faa9de49ae14985c
+842c9d49a1d3e20e2a7e74f9e465ca65
+842f5acc10a66317338eb2cac947d888
+842fe4d90ab902e0bd4db7282ecfd153
+8431792722234d66552e0989a9bbeac7
+84359add367678e856a2a82a3495a721
+8436310c286c32f5c98b86ebe0460a6f
+8436733d1bf8e9437ba7da6967d118c5
+843a0e0d8850d3226b95c7445febc8db
+843a20fae4bee6cffdab7db5372abb75
+843d335efa84d29f6e70764db2a0250c
+843d37095d7fa252c063a33e4fcdd200
+843db8da681e6dcf1e4f2fade52b12bb
+8440864a49c574bd75b0acf123c07b98
+8440bed23fccd506e6220e7395190df3
+8442c508f0280f36e67f7eabdea016f0
+84446027eb293d9877c38f86dd09be51
+84448ab93620892d5774f74131045fd3
+8445140ed72bd58fc8cbafe9bd3c95f8
+844517b06f1918cb1fe0d7a11e89d8ff
+84467e00503e11b3ca9c7701d2e4f5d9
+8448689cc009bc14dcbd3290be2b7d87
+844adab9c87048398540402525b1b602
+844b082df3cd31239e4b007951587544
+844d85d4b30844ae6f0e8106fce5efcd
+844f611ca7cdf77fcb39f634de1b61eb
+845037f4ccf0ecda2da9f9e4b8267082
+84524673de6cb7015ac353c0522a0ec2
+84542add2b736b1b3ba993a55a126e92
+84567eb666cc134c0c56d0f4cbabbaae
+845926fe331da34fc6787acb6dd1c39e
+845bc71fc764fec4d3f9dbc48695c897
+845c2d436d5fdc829d5c3e359c3f9c16
+845dffd1894110e1dba0bc6971fcad27
+84611041defa14c8ab0099f6bd7409c6
+84648acfde6babd9873e2c78b9258115
+846595af9574059dce14a92d59fbc4d1
+8465cceb8e0e242aa192c075b806490a
+846805a8024007d4962073697a4c633b
+846a4abb1dc93f26dc8078ef37ab8271
+846a76c40eb985c14788ccdf0f093893
+846b4ed64ebc472f39e341bb99c84d54
+846b8344e8595e6a6314e893889d33d4
+846c034de0d88610196d0d7358c724d5
+846ee2ba5dcd218f6a5b9da1b1334548
+8470b1419213b93a86dd1bbfd805f879
+8470f35b3da24283e6c0e06cbb8014ae
+8471f8ee3144094cb1122809a5a9cc27
+8473a57055bff9858d01aabb05693f3a
+8474400a428d7d9b27e9659e174ae306
+8474699d240e5791781bc858346927c0
+84781c2757e4416ff42b987ee5305442
+8479d6d8de0eac58aaccb2a15d74dd93
+8479e15393d1f482cbe80a699f0328a8
+8479f4bbe106a616c6447f2624e0a588
+847a469e6530baa12aef2d1409e83440
+847bee60bfe2344ffc188e1d1e461101
+847c6afaa376bc6e3aa90951a84e167a
+847c9e63db01375a5013c79d384cbad5
+847dab112da46ebc1c0178c02d701d73
+847eeefd1c68a9fd3feae98adeee2070
+847ef31c04af0a4fa8026ac9373ab27c
+847f98f98fcead171d56ba8fc27b3bf0
+84803e7bc6bfc5ed423ae99436e4460f
+8480c18e8263fa6798c62743528e6f87
+8483c7a6b304c9fbf30567b4a7f6eb6f
+8483dea2af2a8ce01bbfe2060b0591b8
+8484b8b462e6b90c95b00d72ce412201
+8485c89bd70b4acd595f8867a3813609
+8485ecce3c5ab8f2f97caa78cdab36d5
+848802ea565a6019490945d9b96afc62
+84888d512efb1ba0cea0764498941e48
+848a36ce27646835846baca0360ac81d
+848b487ba17692156478f5632f2da95a
+848b8e875737296ecc0a541ca2ddf3f4
+848c29652541a7e3550dc27be3b87eb1
+848d3095be7a3550c6d213888d6f89eb
+848d79aea0b62c632e660a59da4986fa
+848d951f8199110c7d06aac5addf0567
+848e490b9a79564b3d795091bf0b82d8
+848f5d7b43d1143814b5b24b359c2339
+848ff93398fb8ec0de7cefe9a4678961
+8492cf112d95a54ac9c75b9b286a9a31
+8493aaa3b46dfac3b9897e88f1c9d48e
+84977eddfb1f68c298f7f564605a3639
+8498cc1515f55de2c71e3720e7bbae96
+849b2dbd7715e611bc240d0d3aa0619a
+849bc17cebf2308b89c27721ed965b6d
+849bc83fd329c33d2daa6c8e87ba8d07
+849cbdc277f979b78e49f357d1473087
+849d8c1056c8abd8d382c6ef92f14ff2
+849eecf21071f319d439a666ee10232f
+849f8d2eec6c85360f8142ff4262ac7c
+849fa01d85e5f81deb282dd69a266853
+84a3e026ff11d6a308d987d8819e0b3e
+84a46f8b2baafcda5e3462eb2c0107b2
+84a486d3e721e1dbb0d0ccb47937bbdc
+84a4cb671c4dc215e9e855aafa956cda
+84a70b559ff9c3476396a1fb835bec44
+84a785d7abe40fbd471f71176a8fb134
+84a78b96b3550d10a9cbd045f1ae99d3
+84a7cc2356143f97a6804f21bf4f6e54
+84a955b89dc1a3e1bfd83050887a4efe
+84aa2d4633839b20731823aab139f8c2
+84ab195d29195183bd09ddc4d6bd42bb
+84ad2104f580add3e92613de0f0be87e
+84ad39b6f12bfc4fbcf3bedd449a2a35
+84ae9e1dd5aa3f09dcba441e35b6a15a
+84afaf1772d99efd889ccd47c918e7d8
+84b2a437a1f17aeb21956ec5f43c1af2
+84b4ef0a8c24de905348357a4123772f
+84b64890ae406efabc84c1a37912a1fd
+84b77b1c2db89ac7ed1e5a3cffe52dcf
+84b85ff5f11eacbec783a7313921bcb7
+84b93ea23ee396f13cee39619669225d
+84be1d13b93ed8ce0c3ae40052c5f493
+84bfaca3e4076ce8a186d91014fdbd47
+84c05f4b908d1dc9d6f17b94c13c8d88
+84c1c0900643f7b6513e497cd3f2165a
+84c229260f2470ebdaebc1c11eb72b44
+84c32bc66091a4edc2b43f24a4336e04
+84c5c0ef29c33c51f61aad520ba8f022
+84c62e172387d80a5051d8ffb841c04b
+84c6df61aa79415ae6f3f14a53a24bcf
+84c72b37e03ab9fb4487888fbb9bdf19
+84c735d55de9382e392270e2cb41948a
+84c9b2ed823fa43b4f3dd27adfe1a245
+84c9c3db92022d1ac8483e18cd1e94c9
+84ca372d670f238d3a36c96b6fd95a4c
+84cabde851a86191b2e11a45980f8401
+84cacb5c3bc09490b736c7b83e89a827
+84cb55a3b104c4d2419d068ca8baa92f
+84ccd983efda686e8ecda4dc86179ca9
+84cd4dfd5a579f6c928947d718cbeba7
+84d0d246820cab7c35aa74b52aff270e
+84d1114ae0ac89afcc1dfd9a267b873b
+84db2fbecfbc11473efc61e173f2473c
+84db31fa3cf7f9f9d20b8065b78b6ddd
+84dd0e5c64f27ee83fdd36200b2458ba
+84e0977853336adc9ea69da5fa7446f1
+84e1251954012c37a7d9d1390b894ab5
+84e1d9916a3ccbf211bc7abab20b67d0
+84e4a8be96ddb300d7c9381374a1180d
+84e5ea189992aa71797b0401fd2ebd18
+84e5eeb215893d5488d447ad39c3d421
+84e64ee7030b38dfc925f73b84ea795c
+84e7554ef8a152b1f670221a879d08b7
+84eab9dc431946b20625d79a9a2869f7
+84ed2966f4571d53eeeb8a089eaf1e9c
+84ed97b683f9ae0227ed21e4ae007373
+84ef0045f1c36d6b30640aec7c046b3d
+84ef05ff99fba9b107125cbbf962be3d
+84f04a81e1d71fa5e877952061b8781a
+84f3bab5a50483f203c98f5457eb30b7
+84f92ca9e7671d0013e633fb75c42530
+84fc84f46c0b9389b77dc4c64da89382
+84fe17119bfb9a3236fde20657fbe8d6
+84ff0e9c4788b3a2fdbd1f6734d4643e
+85003294d819aae09247b4f0591597b0
+8501d0d498b88e57bb6b74d5df332d7e
+8502cd62c7bd627e2bdf9327ad3ba422
+85036aaffb850d7251171d6dad6ddc6a
+8504caa9649fbf07ff75c03bb2300fda
+85060853707305fd6500d45a7e087fcc
+850813262cc2af06a7c86413f48e436a
+85099f7f9d54b6d309d7fe29582aab77
+8509a727a445adf971891ebb70ca4134
+850a91bf2cc79a99948148e47f3d9889
+850aa923e50bc43f8f4560929c78ec69
+850ae021176258cc0b42be3d53ec4942
+850f2629c7716fe4d294b2d4f831a1df
+850f7582ecbf7fecc56aebea5aff9eb9
+8510beea17b25a5565db1e7659cc6cb7
+8510ebb5d162766d83a1bd1d2443910d
+85113e0b4279287e9f2c0386ef3ff554
+8511f02cf4aac0e8ee5a7da1602879f3
+851208b231faad29be86138fb6d95e63
+8512c88dfab4aadbd6af89ec4151c2ac
+85135c3decb9d925621de5d89e2999bd
+851452cfab69a1b973f2d38babdac5c7
+851627d3f199a61fb6892c5b028d84c2
+8517f4fcae991fd54fed35a04eddcf01
+851b2379aae2d42e8e4e5f65d96c6386
+851c0f68e19446a571e3113020ab2152
+851ef9c08287de883a0f69229300b4ea
+851f91a0492860c14e1a71ab0263bcba
+8521221d8a690a6f0362bda292e9e7a2
+85212a6f5e4c8bf102dd1b71fd7f57b5
+852166b9d3af257b33ac8bc86aaea9ee
+852520bfc51ac6961c4c827ef476b207
+852570eba7d6b6fcab7e523e93cb4a91
+8527d957ba6576544f919ff6ce48e55f
+852817014e37e92559da2fcb782ee70e
+852940de16ef1c94de308fa572f59c0f
+852a20d7ce2964c422f78d80bffe40f0
+852cb5bd0c7e61312de30c90f54292e4
+852ce1ca2223b75b39c54ef54115401d
+852ce2f8dfe5c60918d328a92b8c260b
+852da969dafeaff2b1765b9fb4ec3ade
+8532b304547dcd50ccf4543c00c38f31
+85348f6d588749e597cc4c11ca711345
+8534e72e26649789a82b2f8d950668ff
+8534ecf3a745b361b54922b9c014d918
+85366cd079469b586ab2a8c5b849e8d1
+8537ee3eb9850fba65a6b1ab6a2c0fe2
+8538bc14d6f0c586ee94c89827e3623b
+853983a0b59b7bc2489713d17a022323
+853c5bd80ad863f52000c263e25d3286
+853cc76d373dc867f6819b649537adc1
+853d821ebd3d021c0a06b76a004dd4de
+853dd508fe4c9132bc3605a62b9e4c1e
+853fe955fcb0e5a4a6d8fcceecfb784b
+854173c365513d3d28fe51b0b93fecd6
+85429ec87364cddea21e9a18593d696f
+8542c8cd7c6816c3d703586ec9d4879a
+8543cdce73d8ddc9af1dfe6ac83ac118
+8544e6a65e3846144d6265e284d27dac
+854554201d59eb19d344b6e9e2ebbf43
+8546f35230c099cb875e18b5f9fe592c
+854883a6ef4318b54c6ee15283548ecb
+8549e4fd9125e1b91254f4ad8dc5e618
+854ab2e7e5739f7e719d506504c87a41
+854db32ba58bf53a67bfac3755f379b5
+854f42986f552edad42c25520d3ee8cd
+85504fa11321e8c61918d424834e3eca
+8550c07bcb0e357feabe82a1cecf7ef2
+8551f6474ed58d92ae56d98d60d7af1e
+8551fe91c30cf93c8fd94c9762b41c25
+85528d61c8dad846bc3eee8616d6a987
+85551f09c7da5506ea42b8203952d6f4
+85569ac20d46a4abecf5a20578c52cbb
+8556e1e8ae66786cc67a4af914417bcd
+855743fd83465a13708e04844c133b16
+8557a84779b20f31cb78220843fb4522
+85594f6fe239f4059695e72f51b099e5
+8559ca1c1ad1e7edb64313adb023205d
+855a94decc0f9292df95a4b10a203e6d
+855f1897e7f33a078b42a3a210c470e3
+855f197abe73c02f76d3e11e559971bf
+856074d7beba089b24d43888ea9bebd0
+8563177503654ad35b2a30f64e880a32
+8563b2e73a6f74e283a58ee2c8ba552f
+856523a7f95ea8abf9b758a733fdeda1
+85654a9d0a969b187d3c7492c1a679fb
+8565a58ba3540373e507132443e06496
+8566b34e8bf514e251fe5a4b14f6607b
+85683bbb130d27f52d70820cbe962206
+856a0a33a734b5261cf286c4c7d9aa51
+856aa7b91bf18b01664b51582f2a2dda
+856de97ac0fe967e3c31652577d637ce
+856e3798b8c00e865fd153317bb863c8
+856e7e5942bfdad56eb55f7bceb8f999
+85700fdf86861cbd9a8f6ade0fdd84c6
+8573c138ed3b5a9d549096fdfc28acf0
+85741021f1f29b06e6b374b9599d6196
+8577ff1b1a6e7dd27b80f3d4e87d073e
+8578279cc310c4e4e82a0aff41cacb47
+8579514365f9ac170dd675e764507bb2
+857afad9fe0f5afc937171d4ff656843
+857c2a95b0da3d7dd1b1ac6bf359687b
+857c57bcc58854ceaa338cb702a60d9c
+857dbbc127f009ef525e90df073ba296
+857e6821d7c79c38fb72e65dfa763d71
+85815c9b5c39afb3a3a5e2523edf00cb
+85852fbecc899a8d1490fda96dd71c84
+85857645bd72c23db465d4cb5b63a4f8
+8586153d0c1896147db51596ea1e3941
+858713ff39c6acf2b6e304032deea421
+858a1529fa4f36b5275fab5c1fee7738
+858a4eb6106da7fe4f235697a06ee7e4
+858e4ddd566270e581cbafaa1bd1e3e1
+858fd33959f4976224a6790126139d9f
+85900ae24433a3488365f594c7522494
+8590949f1aed4384a8952e0f90a997dc
+859235ac9aaaf82bf72f3a1f56c523e5
+8595968995563145ce91310cae9b7c64
+8595b19046d6ddf114f746504ee16a7a
+8597fc973b44b31ae6991d00d2628c38
+859cba2c4c07bfab9d196d1bc1daa319
+859e216886320857b02e6d0d919d6890
+859f6fa1e02a0bdc44da2ef614b38257
+859fbdb8d3427e3f191cc5e29c5b14da
+859fe5ae16bc592642c49ee95b21673b
+85a00986c936fb0963319c95458f576f
+85a10f8468430fa52471aeb14657ba51
+85a17070331706428703fb1d02261396
+85a47385837424916b973c6a24e61b24
+85a4e3e6abd7259b71cdb2dfd2ca011d
+85a55c8a33793276b51528af5bffcb72
+85a56e7261940bcd3c5499b9856c6402
+85a5a5aeb15a4e216f77ae208af3dd7f
+85a839757cf77b0cdf3910b4a91a6d41
+85a8ff1b6df262b72ac9d814fd67fef5
+85aaa4e2af4edd53d3360c454b7b221a
+85ad2dfc132baecd2eab5a299af7705c
+85add775fdb1221b258508127213259f
+85aeb69bdb17ce80da9409b5c60c9a0b
+85aed2b23869f27f380c4e10481d171b
+85b079ed7d15497e6bdf57a7999d5f51
+85b0d0b83cab7bad61cf0fb191c755e0
+85b24c4eb052a49a472514ac91cf0798
+85b4ac3c92128b917acea8477ec39174
+85b51be6d867461088452c9dba9fa390
+85b8752cf27d6b8c2f098eafbf7c4ade
+85ba9ce49738a495b71b589fc1f0baea
+85bad1e432da7438b5e5c13da4809c21
+85bc82719b899e64fe8eb08833cf6f14
+85be1e2ce29b944df126107125e40d4e
+85be9f06344fa14968b7bf8c83f4b894
+85c0adc578e5c7c4cd7fdf61015490d1
+85c35f4943504b76dff92de1bf0b25f6
+85c3d0a28e8829c9bbdf78925eb7ecea
+85c3e0af4ba13b308a9d35d51de0c04e
+85c7cec7f8708d6d3c54d5035f9dfcdd
+85c98c0729fcd754baafedcac874ff29
+85c9e0b7a4630c649dc0082864ea6ded
+85cadb298d7b8557de71d16d96d802c4
+85cc4ae96c1e84397637e30903e8e067
+85d05b647ab3be9b221d24de81960970
+85d1b94d4623ae6934a43f484e5f13e5
+85d226de15992403bdcf87b765fd54e2
+85d295b532a904280ace1f0c945b6869
+85d5e97b4c68d894bc7a7f59f48f7da6
+85d5eb8f951f42d3f6002878224c6d6f
+85d6e7ff4654a748dd1985771824831b
+85d78500403160bcdf330b31215e5681
+85d8ebc74f6f8e8eb7fd52c68b3afee7
+85daf5f2d7d6600026572fa29ba0912a
+85db6671127b2b516e97ac48cccdc69b
+85dd6c5b8e171d7ecc9b8f5cb87662df
+85df97d0aba193c01076011eacf3e759
+85e1bc302f308448012ef72975af8e3f
+85e1c6c50de43efdefdc48a76e772e14
+85e289aa04ce07feddc6c37b7867b93d
+85e597ea6017b70d49db82d48f2ff15a
+85e7fb50adc4546c0fb99d7fab733654
+85ed1f2c0bd0f21c8d58558ba618187f
+85ed655b587f58dac8b3513c3c7ffece
+85ef0c6dccbeb0f45e6aa4750e857cc4
+85efbdd16d11180ba3ccb78328a4dcd8
+85f01dab11f7a1553d7c7cf588e9639d
+85f24fabab2464452e6de5a6bc153f16
+85f2a1f53c4824388ce5cf47a45d5834
+85f2ab9fbd4abfb8b89cb7004fadffc8
+85f3357e0d8635b94f20143fd5e8ffe5
+85f35f42391d4b2c4e9a02a580bcfb0d
+85f39c76ce7ce0ababfadc984e22e9e7
+85f7ff945399991987ddb8605afb21b2
+85f8aab4495fd5d2f7df49a5d508bd27
+85fc208acf7016f851f6a9eec21e9ad3
+85fd87d05d56e553a2d55689f03a0fb9
+85feb6b1a990f51aeaef7adaef6aff44
+860012cee25223c013f31616d04f1271
+86016f1a9c1dc3f2b6f50aa01aed49b2
+8602d93aeff35b2fbf7b6aad1a2cb560
+860328ef8b19a83f32afea63852eb064
+8603fe393300f6a5521048be6eb53fc8
+860432032d951329b2ec8e25f2b91d78
+8607dbe8d09aadf667e15d4575a92ac1
+86083ba75bb7388ca8a050a5c10deb18
+860a12abb3eaef5de01bc32db23bfa03
+860a1df8820d5b1d65c8d6f8331461cf
+860c574d09b4682a82396541be0c6160
+860ccd24e795aca9724758b32b36002c
+860ed987747a10a19aab1d33d8de55a8
+860ef8b231be6068c556583eb94ace61
+860fa354049d314f93bbe907f4f2718d
+86103fb3be9355aac7f517a55faf64c8
+8610af95d99230f6b0fed3911d39fd38
+8611496d6ed41057c6abf8f37f27877e
+8613f7b7b2943ce57131db2c8be26076
+8614dbd2893686b15004d673fd1654b3
+861553e01c6de0d93eb0f10afaccd1ae
+86166e6ddc5ee24251d84b6f88ee724b
+8617094f5d6917f6d654b4951db76c1b
+86171fdc5709a49d63c721a56660ed48
+861997ca02652306799c73b13d537705
+861b265400ecbf22db4addf4ac8fcb99
+861d27610749ccd7fec1e38a7ca53a3e
+86201a4d287b83db2c065043d4e80312
+862025d7bb6ea11ffd839abbe4dc0212
+8620fddfaec3de219885aa2b403dc9dc
+8621560b13eef39521ebc2470adda627
+862475e1592bc86992eb97a452fa55c2
+86284784253d6933f26e48e6198b76be
+8628993158a68675934232a3fb60a2f6
+8628c34e6554d1c2ddec09a955f95031
+862aa8b87c0db8e732efb72e45147aa4
+862afd969522c5ab5f6717f75a8575d4
+862b305c4e2cb4f973d7617546fe273e
+862dbd3f1ee5e10b440e5056f2da01a7
+862dce45ae172ffd198b0eaa9fd5c29f
+862ef1007018cbc0320ea5a87305ef26
+86312af07d77528ab5cb07c30ca6430e
+86314ee56de9332648dc960c7c80ef02
+8632232e29e77cec781eb400854e382f
+86324b9f2f039ca94eac281f7b855b7a
+86328b094c7fd301fd555749e6d9cf55
+86338a617ffd5718e3573c5a493bbfe2
+8633f7aa91e09d45c5b4d09b03165cfd
+8635478d61c4e29bea82a9b0f005cd48
+863610ecc65d2c77458dfe70e964639f
+86365b8b8c34a7b2474affa9af469840
+863901c209ce03a0d26621dae68d3f1e
+86393795d9f5e201f94815cb88ef2fca
+86398e45e95ce1aba577c4713f10d374
+8639aeb10bfe3f8a2b25ce48217a5179
+8639d79fb13e25db04b9ddf976a166ba
+863b3fbda0369d094e80dc0d36918bf0
+863c5b87a10ac9b2b8a1e0de1a89b7f2
+863deef02938a0efc86650ca8a0e8246
+863f48d8dc0044080a424292f54d518b
+864030863e59d7d5391afa57e5c67c94
+864232c07cc73c68289c2fd2f58f1caf
+8643f4d05d024c9cf3eda4e135c0e9ce
+8647a44809158747080f9f4939f2fa70
+864c61f5142cf7499ef273d777704bed
+864df149d409eb6c9837686ac58ed9e7
+8653c88ac7fafc4a98d53342b447b436
+865485c3753da5f5e343d2c434ae327c
+8657417b73e9f68e902aa24bba5ad4ab
+865a8e63843778222352940f78118d79
+865bea65e02435c20e2e9c24d547464f
+865c225c0c091a22311aa17c78254ca6
+865c35f6df54ec21a36b16b37becbdd9
+865dc03a1bfe5b970057975f213be93f
+865e3159a160cf85de92e37a5da89563
+865f1226e29a596626eb7697691afb2a
+865f8afcbd6ddd7cfe39bb2679ca610d
+866016d107c527e5d2340197e0a87400
+866033e74fa5e001e1dc2e19ea447d24
+86617aa0d426dfcaddbab206b7ce50c9
+866290876852e24b02eda568a509c0f2
+8662a2eae9f9aedcb135120867a701e6
+866670e09867d7a36009f4c383574ae1
+86677ead60d5e7e0ca8eb0be2238f501
+8668e67d5ff2752aefef0ccd5d4b96c8
+8669a1fb4813f18d475ebaab885d28f7
+866a26f86b26627fbef07c152b46aec9
+866af44aa737c1d01d728ed1e07b71db
+866b1f697b1de6febac3760a93b55538
+866bf0601da06e7790217f985de865e7
+86714a6e9fa6e234507a40b5b8518e42
+8671e9d3e06f946090bc32babdffd81b
+867241d55995f5f8f6e9ba7c30746a8a
+867245882a7bc622cddb829476b353eb
+867373f64a3e0c2173d96f71c6f7345b
+867383b50e58d6e374568df31beffe57
+86741ff3cf1c221b636d2a8ddce3e0b4
+867459f6853e39fadd5c465e9530a064
+86749d8b570d6837a96872deac180ca0
+8677029e3b5b66d5aaa16247effaa732
+8677114fcc8cc04ae79df70e009a2d0c
+8677ae53cf03c0dc854d0af7df2392bd
+86791175f1f0b35397e7970c983ab6fa
+867d15963600afff2a935ad6ff131ed1
+867ecbbaafba24da6521f58915fb2786
+867f335ca7342ccbefa6565c90b56439
+86806709b1c6fa9120d728fa62b9e997
+86807cd7c7ce3eda2396ae92198f94b0
+8683773ec6d5cedf35b59e37fe08c47f
+8684166e9455e62f7e4ab4dbdc90bc30
+8685225a98a511b94bf08b66d9babfd8
+868670871a92491ca648f8bc95be5d9f
+86869686dffbdb388d6378863cd4bbc2
+86889a1be4afd8ec11326ad579d79128
+8688d5c68d52b47011849bb39539fdf2
+868c3a161ccfce784c7b5a8554935910
+868d09837d71504a52d9ea99064ad80e
+868d4bfc5164ae0be6e6976c704925d9
+868dc8d84cf6d6d82b4181a909ea1102
+868dd5ed63fb84b7595ec7d853c52e54
+869016219faa40dd2bdc3e1f0492fde3
+86905bc173d86351d0f97b82ce101dbb
+86953c6267858d3058be32ce12c1fbec
+86984658a05591915fae12cd5c9c9674
+869be2446ef4dfaf057564ccde28ea27
+869d1155363bc57711da4a35d322fd1f
+869d6f2b56ca354774092889d93dde7a
+869e34bd8ea8bc6ba82fc88392d45e25
+86a14cf69d98b0f8541980dfa5c5ae43
+86a5a3579153063c7f1222565fc1eea8
+86a5ee49a9f5b225be891cbe56947825
+86abbf169f03aee45d862e1ed464a792
+86b043277522360e10d5a1a9ec855a17
+86b2212d024833f6137b258dc96cd3fd
+86b418f5ffcd92e89c186e5643b6518f
+86b731d0f4a55150239cb917c8b0f5b9
+86b9eb76fca4780377a1a72c9eacd9aa
+86bc67d939898428b41be550193f5239
+86bcf97d1698e813b63b40bab5d4ffcf
+86c073e06fd70e5792cb6262cdced9e6
+86c1b70d5e06c03d0d9447dabcf799cf
+86c2428ce370a7c593628be5b18035bb
+86c44f8b8750b347577f230c82cdbb2b
+86c66b79798ea1595061e17e95ced7f9
+86c6aadbd0d30f122e1e61ddc6da9b85
+86c781af9d5b8ffd301b17f488fced64
+86cd7240e6d731ed1f5bd5513b143938
+86cef8e413fd651f2e034aceb39e04b2
+86cf1aafce2b7759e4c096fd805893d0
+86cfcf42d05d6b3d09144ea4c360e99b
+86d03787c1d155e8ac3af606ebc3c449
+86d0b897973e32ba209359aaf6103596
+86d2678e5bbc4e8b57a2bdcc65074627
+86d3e3af293567b2fee44f2d56d2349e
+86d43b5e496a4acfea9b1f6826e1ebe6
+86d4ec7fb0a01e887a1de98171d1c07f
+86d627efa40d0109840e2de077853b05
+86d689e138129562b5a2592b030be9a9
+86d69d48d65d559d57412c2ec1d3aa7b
+86d719c682846e957b817ca3a8ac3e9f
+86d8f20d84fa36f8dd842f3dce27323a
+86dd8538c477b0e740f5ce50d489bc14
+86dec86c4c9d67b2ffca5940d8f77c10
+86e3ea45e6cef4c1c290d20de3f2d7f0
+86e4fbba2abf29d2503efe40cf738b5b
+86ea279c68a7fc2450cfc3adba9df13b
+86eb388c2835d8fc9b3fabc420284607
+86ecde198699181c60a678c854467fad
+86ed2c95f3c7beb69ee33950862f904f
+86ed3e2407b5a45a89d7bcca2cd15319
+86ef728fae4763b0de753e67dacc3ae3
+86f1696c309b8d8777d2c136f8089403
+86f193ab198db71bbe970d3b958076f7
+86f1df1f382669385a6bb1647d707150
+86f422f92834f7fdbcb99f906fc04032
+86f4a5b4de875ba08acf2e02002079b2
+86f5756286246fb2448550eeb3271a33
+86f63e4451a90ed69bcfe96d162e6629
+86f6b3754b1dcfe5f0935a15a315b43c
+86f88546761d918c23ab4808f3991bbd
+86fbf796df4f9d52cf9667aec48232ca
+86fc0bc42d2f20b1776fb3421e7f4605
+86fe3cec391eb550a6a28c0f025f00ee
+86ff752db08cc6f6e87dda14e588bb73
+86ffb06b1949b86a77dd42fbbc01973f
+870127d314926f644d3d400c040618c2
+87014cac32ccae67bbb4be72032a754a
+8702c4db3649290892500179a786d0cc
+8703bf7f81b6c7f6f40a090d461a1ca0
+8703e4351cb4bdbed47cff1714c62aef
+87060eadc0063c2f2de5605f52c43dd1
+8707684c5c7caa01d38356cc7861ab73
+8707aedf7d7e91c95b95f1f3a1ed761a
+87081376c2ed97f20bfb324d5443b31e
+870d6120512daf4ef6086eec9eec774f
+871047acf4aa7e822ed180084b77f5ac
+8712028e568381475a8d520ede470629
+8713a8ec879cafca6e08a80748130245
+8715ba0a1e01c0cc87429e7f820e451e
+8716446aae72bbe4eb3b741975a08599
+8717de83eb2d1ce3b0aac12f65017143
+8719fea29173fa9710aa2d2f97169380
+871a249088426849bd13bde2e9824f5d
+871a2e074378bd8685afab0a3c9a7e23
+871a3e68ecc1819538340c2d95892a5e
+871bcf38fb28ef145fc158a400a7bd3c
+871c92c21e8500e05858bed6cdb0bff8
+871db9609a95315aa842431a546d7a7e
+871ed5187108c3586e5e84fe5df5f73b
+871f99d3581914801aac5d424af8e1d6
+871fa027399e020db43350431a5cc9b8
+8720a773c5243e9a2c862d4973d77864
+8722c9c453411e7fa6f369b8c96b6865
+8722d6cf8883f8449fdc94216ba965aa
+8724e87cdd9687639fcac3f71d40a028
+8728598eb0e75cb31126fcde46155fac
+8729150d8fc3c6c8fdcfab5fbc39434d
+8729863f9b1ba2b51f8bbc206be9caa1
+872bb22090c3592985e5390275c3c570
+872ca7b22f07e423f425707a2e295b57
+872dd840ee94706f639feb12e7bfee98
+872e361192d646fb9f2bb610ec09d71d
+873088af913942f6e5410ff838e8b2df
+87314318ce57ed8a0079607ae9ed392e
+87375a83b3399bd947e8effe589a8e47
+8737a0f9d3d2375c058288417796d956
+87395129238266bcf5d53163b8eb8617
+87399db91ab92178ff7ef28092b17e7b
+8739eb9e4deaf9facc531e4aebd5e13a
+873a10366fd532b4576681ddd8b03080
+873bb7f85eb40852ce1ddbde4554ff16
+873c2bdcd7122224ee88d6f0ea9b61e5
+873ca002042a50f1c110fd06e1ae575e
+873dc1b3428e65c9a405911e0ffbcbeb
+873dc73d8726188414f7bf743b15c517
+873e5724ee139da6fe844a82288a1e75
+87406405f72fcb37045adc73cabaf01c
+8742fcbbe611aff3bd1b2386d8f45e7b
+874400b6023e564d8d7c74e6d6077313
+87456cd4c2279e2a3ed734df87b6d8d3
+8745904f602bc1034904265bf237327d
+8745d85340ab2f387e16216bf850be69
+874609de4ee126c73c404fc7cb733407
+874bb3385e1bdd5b9909d8aa98683d4a
+874cc597b327db2bc8ea8a3656fcdf40
+87515d569a3398cb3e0aa3e49378c81f
+875294ab8b9a4a5ae7a472e91f109cfa
+87538ff4afb88fd75b3bbca68dcc3783
+8753d27b631361c63333fcc3bf04ee7d
+87540d47359b87a6880dcd6c2a016695
+8754b87e9ddfa4935a35706c475bacbe
+8755b9474d5be14f215935fa9f3e2d38
+8756fbc72ec26d85988f321af3646685
+8757f421ecfe5d2e4b517ff5f394846c
+8758fea7605596edbc63a27a1d136266
+87596f29697c7b856c02a57cba022bef
+8759c38c132a8a8cdb8eb34f495831b1
+8759e603baed292d098367952ff17e3d
+875a248932064322e36a015d536302d3
+8763b63b9672568591ee11c751803c91
+876429343e8448915dd04050c75721b5
+8764b38186519e6dbb5cdb029b1c5ce6
+8768a7db17446534e74be49ad25b61b7
+8769c525826b9d94c8b99afa9c71e251
+876a8958123b315712d6d4b51e9b63cb
+876c22bc6f59499d428d87a9f5aa1f02
+876cad519699c860fc5d036f8529294d
+876d4f1663fa370dd34fb653b070583f
+876ef8037992f34de20e06a6bb9a3a90
+87709115c86d7b3417c9ae29a8f5029f
+87719ac255d85e9ed535f73e4cc1ac25
+877274a90d34b70274cec078def7908f
+877400486e4e75d2e901dc5b6528fdec
+877579c6d30d077edfbd2bd05cb98b27
+8775d36bd44f5ab3d21e17454fc6c7b5
+87790095c98943b301264166fd15215e
+877acf21d1a43961c2b0d3ea3ac56769
+877b08e05a647c0cb3201721ba4d7218
+877bed8b17bb40aa25431287e1df5cef
+877ccb0b9624e3c90a7621ae83982ceb
+877d108cb6d6a048cea85d403501a9a0
+877da0e2b8992dad52f318f0fbc51018
+877e57b33a99483820c96b788fd9ede8
+8780b29f10787a6452de38e603eaafa4
+87826fcb42641cd269dc2984a53fabc6
+878359574f7b3d4726a59ff2bec6d908
+8784a110d3a5ea6077ae6298989be163
+8785f5aa2a2a3e97a8a139eebcb1276f
+8787b3c49142c4b76d8d07623647cbae
+87886417c9880f4e1a1d3838c146b15e
+8789797d61a3a99ab6ad986e00410be4
+87897f94d03a5d94a23e7cae0b253f78
+8789d44f12890c97cde505065f126324
+878af3581d8402fba256703138d2734b
+878b308c6e4de749b59e77708e04722c
+878c448a5ab2000ad4169c968c6eeebf
+878caa353a323fc18ff80556a2bbd355
+878e4fd666915d7692a56e3dfb769020
+878ee861fb120e58388cbddbb5cda63f
+87906097355d402b3c223a6b6fe38913
+87917525f38c049eb4ae3fdcee2d0cf8
+87932aa34ea39cf82f67d61a499f34fa
+87934d725d0fe38cf68052c06b352b96
+87982ce4a47617d32980bda4705f0e50
+8799083d380aa04b09c037756d2f7752
+879bf74226211486857e3f3951bf5a39
+879cde2500f322b66146c0c5b347df6a
+879d1a6eab1c1a80cc9237eba34aaa64
+879e0f4da97ac5cd06a4ae516a894349
+87a08dce9020879b1e2b48f3420ff5b7
+87a152f8dab8153c916edb64db539e13
+87a19586fb8f6b743a7c78b8c94f3673
+87a2cec408affdc8fb82fc1c51ef45f4
+87a64673800854e40a6cbca9d8b18ef5
+87a6afdb2516e73875c60ffeb40687e3
+87a6f8235470283de028970bbe3b8861
+87a7c7019ad4b0ca876951a6d8ea01ac
+87a90dbb648045b7ae2b12cbbc38da0b
+87a959abe997a40406ee5470617d35dc
+87a99a3b842a349745aec5238991fa29
+87aa0bb3be7c303a63f5e8fc2c4757f4
+87aa36bd0df5e11dcf64ea43411b2037
+87aa4448b19da378ebd376274f7f4402
+87ab631942cb7570701fecd60107b9c9
+87ac57e011995724e4298a3b96791a0e
+87ade9691d6ca8158fa33d407b1e20c4
+87afa5c51f8905bc1ac4f9b6475eab3a
+87b1b64e02f140eb6b60eadfcd9789e2
+87b2069791cd8ce4b5db983a3e067e65
+87b234dc619151fa33cf18f08ecace1c
+87b2a449e0d461af3ac87a61762623d3
+87b4e89cdec1c375895c6acae4dafd27
+87b5623a5765bd944148b644660a809b
+87b5e8a7e600ef06909863aad5818546
+87b758f0219e6798e4d6247dee2db264
+87b80e49ed626869e39e1946d1b9ce9f
+87bae3847c5fdd912d02b40fa76587cc
+87bb3434379553a8f15e1f59cafdc374
+87bb8f096846c7693936f150cea04c35
+87bbbb8bb39700e07cf216be8e8cedb9
+87bc2f2b8059523e3dbee9b30829fe54
+87bc3c1f4d711d3f8cd72a3978277d60
+87bcaeeea9a5f13d4ef300d345ea8c39
+87be89aa0dc7f8ab2bf0d13e1aafbed2
+87bf2671cca4418f5032fc9066eee366
+87c29318671855ab2d59d99bf93b7cb2
+87c34707bb3e5e38e392b70b94910dfe
+87c3e1ee97f6fa3ddee2fdef1a0febbe
+87c688fff57fc5a6978366f8065b4fa6
+87c6db3169b6a3f0612f48542dc6324b
+87c760fad00d3eb9000214c61ee3539f
+87c788a1371a7ac7585a74f3716a50b4
+87c9f4476af5f743b8b7e03283fe4e82
+87ca43533528fe47cab8250d2aca6c83
+87cb76b3d9b3b374ad27a136035a7392
+87ccac55f0af63fa8557bda648292ee8
+87cd3b0c5c672c73a36ba687ff3615ab
+87cee6e60c2aff13ed21ac185ef4a929
+87d09791fa06a6d28c4a1b88ac003385
+87d0afcaf2ff06435dabe43cfb1d0926
+87d143c0ea5db8b53ce55a2b91e5245b
+87d5cb294625696697e2c2bd4fb98f30
+87d5f3314f99e37c70f7c12a44557cd4
+87d8db9c12bd47776bf14872f0f73c7e
+87d9bd279f4b8abfa597f502ea86197b
+87da08b382dce0432e35e4cab5e3b3cf
+87dbb5c1d8aac961a8e05628ebefcb1a
+87dc050b05977c0aa55b7fdd2a495237
+87dca5d6b3609a32d553c8b5bcbcaca4
+87dfbf758dfb9a6191f8e46978492663
+87e05ceda3d199ea376914296dd3ffdc
+87e1ae3d3d2ecd20c87bad3a5900c234
+87e25d632e125b1bd084709de744048f
+87e262e9b6941198c07f6fc52b625979
+87e3d7b38ff7c8444d5471bbd85daad2
+87e542e1850705110f9718bbef5e7251
+87e557a64b42df744a4ae1a042766411
+87e57d8502932eb0d6c9434f0110d94e
+87e62ae02742b3991775ba5723e0fdbd
+87e7c562e0f3dd53048fc07323e38cf6
+87e7eed2646bf9f903650ac40385969f
+87e8625178bb4d6c32750fd8127b2c8f
+87e8bcabdea8732bb533079b8603c1f8
+87e8d204224a530c0acedca6060fbe72
+87eb38d1c84e65f62c11cb365089e2c9
+87ebd6582ced5b5667e5c19eec52fcbe
+87ed03ecb9b8a4f4d7b1d92e3cb85f3d
+87f901fcbd0e3a30633f119f35584f05
+87f9e0c79bc510e7b44e1533fb49b66e
+87fb48f7daaecbe2091d02b5bf818450
+87fbff7df49577d0dc6346159f2c48e4
+87ff7919696fc6ce73c7f7b63a0e0960
+8801e7c563b2c2bc7be156d6b397bebc
+8804853f2f63b20d2ce709daa19883b5
+880689d1de1b2458952c4af24f37655b
+8806c7cf328fc572e38963be74e3ea20
+88097f1e755b2edd50321ed08406d231
+880aaebab613db63032f6d0fb7b5eae8
+880ad32f0f95eecd94960f4339482026
+880b390e7ca81269661e282b5aeb487a
+880c0fd0e344c7b51231be27ebed29de
+880cd455eb77e75a2e22db323e0fc3b6
+880d3e089035fca27de7934badfe4aaa
+880e9628ad07d377e052c665c7c56b4c
+880eba2f30fdbf0f5277f62709f23a51
+880f01c437757cb60fd5958016600d99
+8810436384f29005cbd1d89ceb9d4c93
+8810da0891d2d64aca5aeda872ce2f4b
+88119934e7c5c424f7c2bb5ea940b6bc
+8812e45efd229d8232397da34dafd767
+88155dd939bc65bbbc4c826116c0539b
+881579a49098089ad3617f420fcf5f31
+8815f13f2b103c480904ca898bde7bda
+88179d1823f54ef23349344f91689e92
+881b9669e81d55d4c8b5f4fdba6185e2
+881b97000e2400105cdf903a63cf209c
+881c413f5c7a65a5e9f74f95689bf628
+881c4dacb44c30345a714aa46f601601
+881d18822ff122559d44e643e0338651
+882003470f1f893b68b9a18680d8bb36
+882143aedf62de9563ac81da78d530ab
+88254e668f0718f5c334caa99fa2d5fa
+882579bcaa6089c28be01e453fb5ed19
+8825dc29df68b90b40aa584fbe337bc7
+8826007a3ff852f1d65643e352db371b
+8826a29778d2e2d503f0e14a2e16b5f6
+8828f062c209668797fb239ff8b47181
+882a14545715f6f0e1441b68f8a819ce
+882b952f24a599c88fe98dd2dd1a5970
+882cc7ffc134d143f3bb798f65a1c2dc
+882e043bae8045cd973373105eb23bda
+882e55d781f4bffb29da5ff4fe345a4b
+882e6092c83d13dc941e8b26e0b0ce41
+882f6d316a45227d9589871e69ae1b6e
+882fc5e65e1863c7c3c5d2eb530d005c
+8830405557f66111b9e3d036e5ea6554
+88305642014bd46b3986470da85d30d4
+88319fa9c655d926bf7540eb60d95c32
+8832c94131abf952a9b60fdc72b673fb
+88355b2661e8d967d9f17af5af9f83a1
+8835db9c2709b303a5fff1fdf71dbd0e
+8836ef1ab01d31c060738f8b7813ceca
+8837983a26c4e0857d77f48b30cdaba3
+883a9254f042493738320ef02ff4e10d
+883cd1160648aa06b2db53f5128e041e
+883e65b36803f022b7bb1c7e70258422
+883eb29cb0d353bc580ccc861e2fd8f9
+88413cd3501820cd2ffcd69bd9c14f49
+8844911451d1383740575df568233046
+88465fb210dfb8d19370095b3d49238f
+8846901f9c82b267aa62cdc1d64c3ade
+8847164d9f8ddbec0c8067f053755f81
+8848a5303a63196fb021b0c8315bdc30
+8849b592b8caede34a8b47670d196ce5
+884a95ede3816f1ef2e0cbf0441ab1a8
+884b19c62ccd02a568483c12d907f079
+884c14cc0a154c1959e53eaad2c3c298
+884c41332ac82dec8fe5ecbba30a420a
+884fe83807d7eee778c1e3db6ea858b2
+88508df7945aeda03ccc8e48010180c9
+8850b15cd17bd5cd5c3389718b590dd6
+88522bfe68c7ca3ed0048d0a18583123
+88523e97772feb18c7d9aabf9b5808e3
+8852866a81f77d712e51cdeeb90ac031
+8853d7a42fa64a1423327f27f2c78b44
+88542ae381e359609d2dd90f22c9832f
+885a80dab4aa63f56f5033de1b571b0b
+885d59cb3c92473a257401cd918dd9bb
+885eff2ba360ad1d76047af739cb13a6
+885f9025007eca4e0ac82dadde6fa668
+88600fcd31cd6385c2a3c19b0d0d215d
+88604cf6cf65888dfa081fe12b1b5224
+886127b7185e6719dc2cd63663b9ecc0
+8862111313d64bde600dabab6f4c5b8c
+8862b122eb4b0151f43376cc1e62b1ca
+8862df0b61e5d102ea34f0241327e472
+88666cbd06301f070ea28893b7dd5a89
+886908697a815be0e07752ad69b8ca0f
+886b0fbadbe374623d2e8f156ddc15c9
+886c76b2d72dd7c43355bbe20d4a9ade
+886cfa45a3cda56508f4bc2eddd741ea
+886d08374f97a48df6069667eb75c80d
+886f47ca01dd1ae949c33dc0db68b37b
+886fb225990449a210978779eea8190d
+886fc587f5e5821396e3561e13c16844
+8872ea77a98538c7fc429525d4a4d438
+8873312d718f5f1588906cebb6438565
+8876b8a2d775df4db05ffc8bba103fb5
+8879591415fb3c1f4e924869a52445e4
+88798b2eb2e2801dfe8bda7c8f55db87
+887adc503d49f8acf29d04523b2bea2e
+887bd0b93b0abd116f9ff5892fa8324f
+887f9b24ae27a3747bd6dd3363cd1207
+888122b7b2a72e83079262ba1e598ac2
+8882ccbb4a67e789ace53c8d3c754d26
+8882dfcd3ebab14e5c7ee62bde2a1d6a
+8882ea5ec89b7ed77ffdda851f7cbaa7
+8883409243c91b0b3ef658f4245171ef
+8883b915e8336d32cd6bfeb73372c59a
+8883f17b8250625064d47f4cf9bc09a9
+88878e5063c6c5f63c7a644a6e2f69dd
+8889b70297f3df737101b0de0b9bc75e
+888a47422e5b5a079b4e3e50e0fe087c
+888e65693b62bae78b8a03905e31db9a
+88905520e38773b045554f74b0d3a3b5
+8890c391f00ab1b75eefcea166445e3b
+8892dfa749668f81c3f90c78b5beb6e5
+889302cab72b625a6c3a9c4667699d1d
+88933ac3b3f67d75634ed8c3f635bf03
+889439543eba60d1594f6c8ed345aef6
+8894d2045f6f343cd4a8a14c42a10170
+889638aed40f14568f27d3b04ddf1fb5
+88982dc5d93379bdca4cc95941d4d03a
+8898f01342a2eb77ce4851d3b16ce826
+88993980d115001b13db780b344f2d54
+8899635052941578f7b266c913ff8fe1
+889a60158b8e7322ac41cf986f8f075c
+889b9ae5e21ecb26025195756e427c9c
+889bd6b48573fddb566fec80a40c6946
+889df05d34f7a02ed627c1ff052d155f
+889e5828a79b3ae48c06e9321d561c1a
+88a066796deec15f71533307112a3c2d
+88a445d0b67b1814e2756a877dc4aaed
+88a47b2de2ba6a295bb40d8ba4188856
+88a5e62391feb4349b07e9592f8887be
+88a6d98bc8d93316118890d5dd083d68
+88ab703ccbd256b9bcab031722612404
+88abc68280a73d562556a21915019a8a
+88acd7003a58bb1261a104a2b955ccc0
+88ae302731da2f1257ff0504b4826aa1
+88ae4f0b2b868c551a1bdd7e4fc3d331
+88af338a341853c75b40eb48e76f68fd
+88b2b892f9333e9a58074ff67980e23c
+88b309d756f8ee6f7cd75e85d1db23f4
+88b36856a0fa650a28deea1e39f71a7f
+88b414cf95de36f624a006b0c3c503ef
+88b46cf24a7a3cd1cdbcb1029cb0c6e3
+88b47068a77bf00d8fb88bdd9af0713a
+88ba3ac511011ba7723f8ff0b28cdc6e
+88bac73b22b6a8eee6c3df190a6b93b5
+88bcbecb9f5f86227da39dda9ed791a0
+88be702d4ffa3b0b0226d3017cfb6878
+88bfff6391795b843b09f58d9781945b
+88c0aa474ab8a9edc9cb39083bd0c42f
+88c4199531fad78a97bb32fdba83352e
+88c54a297d94a301ce9449ecb43dbb7c
+88c750e460146876bff17166c45ec5ae
+88c7a699c9a540f6bc330398d63ce71b
+88c99b04eee5e3f00dd1c3d39cab0715
+88cb95f17fbd8c506aa4865ca45915f0
+88ccf23d5ae87bb032e25020d53a498f
+88cf51535c95081acf538967c5280746
+88cf8b7d748a24e63a83bbcfa785e067
+88d15e718cba0db954beb39da982c69e
+88d2055fe76d5f737b4dae04c52b6827
+88d29671b8fb6e11877e088e8f4f5eef
+88d3dfbda67669472dbaa0c203106eaa
+88d619ad026cf58994726ba000d0cf26
+88d677f78bb849242aa9c9154ccdf425
+88d7f32bf195921f2310e2984c2fbce3
+88d87c75f7098dabcb999a8637827ca0
+88d8a92386b0eaf96e96e0a02210586a
+88d954474ac6fe3ecf29c63f74db1808
+88d97e5a067fc25d6d113a484a6c9e22
+88e9c1ff00d55e5ea95314fd1038df07
+88e9f73de5dbbb96bfae22040fc9f5c8
+88ec8091a8f985d0f8c026b6e51d7761
+88ed80d7f0b14c39641b1c28a3f1538a
+88ed9a579cd578af80172c15f10049da
+88ee9c8a6595da8966e75b2f136a55ff
+88eea9cf9f747f822042b4fbb928bb69
+88f38f4992960ea60b45f7b5011b54e7
+88f66e5d4b4ee8f2ada07af1aef35acb
+88f6e2161c66674b414d60b0de4a4e7c
+88f813613b42a3e201d1e6fabc651291
+88f91c874803ea18e1922d3373116b8c
+88f92b9510709860762a15d59c09d4bb
+88f953bf631ea9cd19a42da0083b051a
+88fa1dfbd99a529fee01c4edb983a6f6
+88fac3d30efd15cf0b2621cc58535c1f
+88fadd6177cc5637a7ec419adb1e393d
+88fbc59dc0c5bf536b79aafe829abd1e
+88fc057e114065963ba75bb32b17cce8
+88fc110000361edbe9dd73416bd431a8
+88fc9cf7bc9aec29bac7c598648ce150
+88fd1f4496e673c34621210ec1e050dd
+88ff118709d6803b96be6e7222cd4c54
+89016f408ed2c3694d1956851bee10b1
+89044f83c6d544bf31013c77654fb2e8
+8904cddde57510aa1b92596144e98c74
+89078740af59e77912d4dd22ea3edc95
+8907b6757105ef58c8fcf357c76acf87
+890948cba4490f69025f0e3e31d750e8
+8909e455cf1594c19a79f641538fcebc
+890af499124e7c452f0c145b532aa4b8
+890b964502da0c7f81ff2c13570fcfc8
+890c34b3ee2ad8f0540004e1e485aed5
+890c44cf1e6d4c006afd934dbf64dbac
+890c6ae3ef77b86025db713c45d3cb71
+890c88426449f903733265a9e61daa4b
+890caa085850efdc2f2095fead9de856
+890ce5fe70b83634786d9bd2c35eb61e
+890d9b962e9efcf8c395a2b53665bc1a
+890ff3db30143b2ac0d3e5e28a2c9976
+89105cc177ec32901e9b01dcb3474adf
+891270bdd8276530f2e78b7d964a1c39
+89143aabe005f474278ff736e93ea5e3
+8914bab1623c526803e853a9f990d394
+89157369cd390483f1e284edf1105b18
+891994d21f66fb8d2567169e5830d078
+891ea05219b8c55e7f32d0c73b28ddf6
+8920030b0a41c34e3801851e34c5be20
+89224a4758e97ecd119431fc78cf3c4a
+8922748bce91fe214b6ccce57f2e6643
+8923c03cad5820d2123edef900b37359
+89241154254fd7c8700b67fd200ee1ed
+89255d118c23397cff000a5c4bd2fc27
+8925fb5073cfb453b1bc713add61669a
+89273a96cc0cdb10cc11e2b384f1a643
+8928d8905c9a358f39addcdbed0d22da
+8928ef6b2f48b64047bdd139508e4e37
+8928f5ab2eaddccab3cbaf750a60ff46
+892b53dccd474dddcc0f56e73f3b9bb4
+892c75530fae933df86eab72c297b437
+892c78276f5b160e4ce38c7ba496326f
+892f8f2dd1b23cb695d739b7e03b2bf9
+89309ec0f1e6531ff832f4358fcec008
+89324fdaa12bf9d76c4e7915fe39fd95
+89326e1d1004941dacc2a00b74b31ffd
+8933695c8a984739ef9d7fc5409444f1
+8933e50b597238274bfb6b8c184d817e
+8934bf0f1e082182c8db75a93532eb3e
+89358b8dfe4731902845de1433dd4800
+89359ac56f0892cfe9315ca09209b620
+893754c0fe1b30033103c3630a3fcb50
+89379df408a8d1c9c189b18c6af64738
+893cfebd1e20314126ad9f5c0536e27b
+893d823656327d8bd7dbfbcfa1c14a71
+8940230479a1a957693ea8980e46fae4
+89411d4ce0f23acc256c011c36ad64f0
+8945476af2a6f8112d7a59bdbf10db59
+89456516276cba595d7d43bc1bd1ad8f
+8945e049337dfb4f375de77c84ca9095
+89466348a1d8d9db84d08faadf1d3320
+8946eef725eea6e9dbb251835e7902d6
+89475674c1cec8d84362745dd6254f35
+89479a895d07e9fc801b45f934b95ecd
+894925bb03f5a369811844016904951b
+894c10088d3ff5c406ca9e695d2bf00f
+894ce878f4a36c41880b92d5d7e2bca0
+894dbf367e959678438e601ea32c9003
+8950ae6e8a4c16250cb5a0e6417bea22
+89517304ccb0e7085dd1a1647418b8d0
+895231c8282f4177f379bebca640265c
+8954d96c9da27703f0b4e437b3f0017d
+895649db5a2ecdea98d975f1d8d7c9e8
+89564d089bff68aeb6643777f3defe54
+8958e3398038129d27fb1e30a42973b0
+895c31f6beb3a14c6fe8e141706ae7d0
+895e567aecb864208ceca2c9fdec6b33
+895e7d7c0af700fde75ba22a132e37bd
+895f6671dd0f4cdc7ae5c5221660fa0b
+8961a4f41f7b9f825b0ad9feaeb22ee4
+896201d3ed5b6494c87e6bfca779c9ca
+8964d9f18fd72bde93424a8dc4eba4ec
+896573907b514dce764a7293edca82e8
+8965b931f6c00bebaa8040334e921c1d
+89664040418e4791d3cb7984d4524228
+89667ce2925f44e9e116ca2705d40f91
+8966b7184d4f5038f6e0b4b383424276
+8968be7c8213702a6490dbdc4eff0287
+89690bd5f6e1feb982e88516b12ac7da
+896ae9612c04ea0c64c603e2f8d35c9c
+896b1f65beb853744594b1754c04b419
+896d395107dc2cf56127c655ddd59adf
+896e122abc6550636354b3fe5f5a069b
+896e2ab90ba69f86400ee84489a2555f
+896e98ab0059d6cd5f1351498cd0dde9
+896f253ec444c054a66fdb68616c265c
+8970006cfa5871357597c08fa7c55aa6
+8970477ca52fed0cbd0322ccb6e6be75
+8970c0f35c1206338253ba2f85144172
+89739544ca7f60d32f67d63733ec4de6
+897b3c37c7bc7aee666e6934c68eae70
+897b435a43d828ec7e4d2855d3f1fca6
+897c8acf24d0cf87cdb1af2afb5a3072
+897d41af2801f4e80317a4ac29a111ce
+897e02150162ccadae1cff33e9e3bc45
+897e551d31ab084265116c4c1e53b9ea
+897efe230b2b9dc41ae7cdafa7a91743
+898129d23286a0571ea81a638390ddff
+8982066f06b0e98140dd23b39afbb653
+8983201eec34aed686400d085ae1ef6c
+898438d5efe154b5f09cb2e82afb0c89
+8985e3bee296d49e662d9c5e36fdd8af
+89897b1b9439f1978545e0878f81fd05
+898a608d20d7a186e459130d30e1b9d0
+898ade1a739a6ae86c4853454af5ceef
+898b2b1598f32950c5d221cd06624910
+898d2967cb03dacf73293fca321aa7af
+898df540b6b561b19606b16f469907f4
+898e4b4f035a1eeea8280f517a073714
+898fe049eae992d6ccac3321bdce11ef
+899073ca3d2b142d0d6eed12cd2e3cb3
+89929cf65e777782b053e3343d320b56
+89930d8f2f4afd3c4abcdb2cfd65c556
+89931af57fc17b6f83daaadc03af47af
+899332ccfe991e9b5a4521b87d37a956
+89936ce08a495cd1cc93403836bbdddf
+8993f9f2b6dcff23e16c94bff90e590e
+89978116d737e36357b4642f89f5d931
+8997ef27e44441828850c9a03072ade2
+899966f86867596b36562d55b02fb546
+899e8e193dbb8e14692fc69c206ef2cd
+89a0fdb1f8b3a5002be819a6f6acbed2
+89a28e6d71ad4e11eb15ff070a52d2a5
+89a33ce4930d836ab0797ac20c0ac06d
+89a3e1fded109b24d4e533704beff6f1
+89a42a9bfc77627b47f9bc3b7507c486
+89a44888e6c4dc32b7200b86159de3e3
+89a603e8f4328f2f18a4c815fef49e0e
+89a7d09a260428d9371c4a52eeeacd7d
+89aac74100a04d77dbf84f6bdab01724
+89acc66672e86b62a4c92832eeef6138
+89ae59bd87dca9e9c0d1fe584351b677
+89aeac908a84fa72d17a071f5b61e552
+89b125046adbbef9f35f1d45cf7fb970
+89b13d57a72a4bd93bcb01873dfd263e
+89b2052836dc68599eb90e8e3d701e89
+89b280d62bf10d7f7a51a2729f1d0397
+89b486a85ae7c21fe0c5c584a0da4ac1
+89b542742a8a840d315b3ced1e3150ce
+89b5cd6add6b3c01fae5b05c45bf7630
+89b5e72044b140011138ee001e4769f8
+89b6b0884065833b2957063c8d337e2b
+89b82a5ebc5d44de2bfab8782a1fc24d
+89b987af9e54357d6a65bf3b0f26547b
+89be5c65b25724a96c66cb0d0d5ba1b2
+89bf345bd8a04f1a10a39c6c09cadc15
+89c12f32d38384a3f23e17a2a295f374
+89c27806c7a69b987fb5d469658de7f3
+89c2dcc88141c98d3086fa778a13e04a
+89c5660783399e48904fdc87ca9ac1ae
+89c589e5e956047c10f74f515dea3d1a
+89c5f0b4d7587e038f6fd0b32b9a2482
+89c7357968c87c9f8683f4b3d3a1bae1
+89c8451b2ae033220320a503027eeff1
+89ca6ba30351ea74142d454dbd1119ca
+89cb127aa990f4b83341e02c92a5ebbe
+89cb29c8c2ee6edba34832784874047f
+89cd85a88e6ec7d1619f5fba3bd2c0dd
+89cde0c21322884208d02a71f17333f0
+89d1410e0d8731f9e6d32914085beb49
+89d167eade4927a3e8e13c1235b6bf82
+89d199215282a06ced19c0d51ffbf618
+89d2fab57ca476915e32f1a1f3810884
+89d34069c3e14b357d27421347db031a
+89d5f9edb3cbd246692ce23117149100
+89d625eee9acb4bce54980d3a7a04f70
+89d7ac21bb4ce112974a07f2896fc3c2
+89d8aa28dd4a5ebf7c0dd69bbf5db71b
+89da1dfc3a5b8e447b9b940f2f5a9365
+89dd2d2351ff7bbdd92226d121d8c7ca
+89dd354844113bf8544beeb5eb72abf4
+89dda8eef07ffd29633e7c043a4178f5
+89df624935561af177dc24f022924237
+89e27446774c4de4ee7dc50a5e842e57
+89e47f87b801ea42e452ec4e4362986e
+89e4cfafae505da5bfc19b2f8a0d64ba
+89e65319c94e9b4c7ba67e8ae9ddad91
+89e6dddbb89b13d0ae0848c5b190310a
+89edff3df70ede6919d3c3db4e523249
+89ef08d3897e162bd2e6d7168205f855
+89f165bb3f7bc2daba154c3d0835c960
+89f1983dfaba17a2fad564a2773e3cb1
+89f4e90b4ee68090a881f04a32d4b6c1
+89f5d527f0648002dd3ab78755c3e547
+89f5f14ca5e52214bd284d7957c865ab
+89f602b273be7f953519504341434b5c
+89f92de3d34aa227526d212921ef95fd
+89fad40c00a7ec8800357fd12563f7af
+89fb7542ee74516ebab6ef1c188bbf36
+89fd9445734394b5000895d6d881d147
+89fe4d24d5638cf28f996e62e34abba1
+89ff583691b1778a4c9d66ffa9652bb4
+89ffc630ad9d26719635820e6da25640
+8a0160cd26cc5c398447b1448a096040
+8a018d2297a672db2173d8e648d01f18
+8a02e07fd9ee4e469f1b26f9c0fb5ae0
+8a034083d40c9b814d701ac0cc4f0ab3
+8a057ca2ce5b2075e936c111f4dc9638
+8a06b21d69f64412ab271e17ebc6a093
+8a06b801c755b30c6f945ed13ca2dddf
+8a0bdfc6406a1a3a84d62da2a7e962f1
+8a0c21a83267c397265405f1aff167fe
+8a11991893a319fe2c40ee7a18954e36
+8a122a97fa94fe36287b4684ab044212
+8a131eb2be0ff15dc860e1f730bb1118
+8a1681c9de9051083ec611468bd27c71
+8a16dd9e0edf02a85a9644d81e8194f3
+8a1848d4a03a7df5b64ccfee0152caa9
+8a19ec97333f9f8319c46b03b1ea6f63
+8a1a2b4830bd879405165cd7c6218d4b
+8a1b558453e693b13600bf46ed99dace
+8a1c026bc010a5be14e36fb336a540d8
+8a1c052c85a3de37888ce81c5c7daf18
+8a1c179dd32739f31e09c12d751ac000
+8a261e11651154bc60630d6728fa22c3
+8a27084ad1f32a1390ba3a3881139283
+8a274260ddead5ef676afd2084ee605b
+8a279d8c43f5b98f2cb0ef25bcd0fb89
+8a289fa00cfa390dfc2f7be2a93af629
+8a2a10b40d8715fe2a88044e9f84ca11
+8a2b8bb91236a9c6d9b444acd8af649b
+8a2d1744f358f09546faee4d161c4c3a
+8a2f2cea60501d3777c5c616edaf5943
+8a2f3191c88bcdf6962d5be181b9d998
+8a2fe6dd445ea0c6a521a6bfd9302063
+8a3218b29a4071e8eb3387802944c65c
+8a37103e0bad868a91a6947885d376e0
+8a3855bcccf595fd772ed02f42d421aa
+8a39ee05b5e1429d2b8049244d49e11b
+8a39fa1ebbce83b7ac06cb535e0acb22
+8a3bf98af37e99d5415afa65e329b216
+8a3c8b8012998c1f78023722b8cf5c93
+8a3ca5a28907003052491f9e06c46d6a
+8a3d0a909794ced17d1857a7ea8602d8
+8a3d8d8ae68efc5cad12cd28ee4c5af9
+8a3e37c501a7268cf6b2c5f61e815492
+8a40994fcd02f3a6c52bc0365490c55d
+8a41bf38597848cef0154ae05f301de7
+8a4303ffb45cf12f3b6e3f29f639c2bf
+8a43f031777b364c9e6cacc7ecc04386
+8a440b18afb1d68e291174ae9f6b0a83
+8a4546b51392dbf5ba91f306d2a71aa8
+8a4767b8fde1da7e5356d86597bff5fb
+8a4a1712278fe1909f2685b7306f2024
+8a4a231f34cc02e85d1d3d786a54b678
+8a4e21498812aaad165f5dfd4e2a78be
+8a4e22703cb79118ad7c262fd20cfbb7
+8a4ffdd9edc8e7d4c3bb99c340c1749e
+8a535becd8c9efcdea2220fecf376cb0
+8a550bd5179b19c50763eff822cf77ed
+8a56d47c2c3a9b2d470f0499baa369c2
+8a572ebabc35b161a197ea078f2adf8a
+8a5afb5d559120d90e5b84ae10dfd102
+8a5b44a79d22b5b4c36f055bf6064c53
+8a5bea4572e5fdb0fe6721f13f47cbda
+8a61aa2925c1e0dbbc2f951d564640c7
+8a61ae4abfadac1f030aa9f768ae7893
+8a64f0584ecad5b98daba1fe66145838
+8a6572cdb796f012f408e7238af6083a
+8a667d6e92d9542e4cb69cc5b5bbc9e7
+8a6763ee94162e997fc8d0905c3959a8
+8a68dc19a258d9714415312236d81363
+8a6a5a58963c8f63238b1ef2c5a1caf9
+8a6b253e25bb0697a4935e303075345e
+8a6b853f26451c455129673bc4e0911a
+8a6c42141e96a0c5268d43ea25981f06
+8a6f1482fc1103d2b21eb3c9343ba583
+8a71244a090e3f326339f378197e7825
+8a73398807192fb6e60305ef22047ff3
+8a73816b5e2ffdde434d29e39e944a34
+8a73be28b66ad0937433b2ae2e846c51
+8a7440aaac7d5976b54ca776d4245c36
+8a7818951a457abeae076af4ef178709
+8a78c60faee44eaabe2a95a2d4bc0e26
+8a799cbd54e4c0ce81d39f31033250d6
+8a79f3bb3db3d4a3fe0a0e36841d45b6
+8a7af7b1770df68688a073da8ec7aa82
+8a7b452c574b1c6f0084f0fc3e7ddd80
+8a7b91cd1278b65ceed98a080dd9e766
+8a7db54c33aa7f66b3a6d7f50d958f2b
+8a825502e7cd4219f1b72f31396d74cc
+8a8274aa85a0199534c3af5dd9b904e2
+8a863f3054d3c35d5d6dc46967b39b0d
+8a86d850547f25f8209151009a176718
+8a86e54a7741a53e8b145ee0cfa41b92
+8a88ef0966e420ca5fd0bc65319c065b
+8a892dafc2d26fd64235093d1b228355
+8a8ec2f82a54a9e3489be4545f17f579
+8a92555883a159951da4e1e519cff22e
+8a965566a83a2bfc0c9779d86f2cff74
+8a96bb224d324fd3d99eab204be84ddf
+8a97557d881984f697b3d1aa6b42cc9a
+8a97a656afecfc0a13065edb24e1e178
+8a9bb3c4adc73f18a6455590293b52cb
+8a9c4ef47b28db66557561805605594e
+8a9c7a325acb3bda8785fd2950d5dfc5
+8a9d4dfa11755a8e5775393f74ad78a7
+8a9d8d57405e21cd8fc9a68684a9e9dc
+8a9dd170458ca22d8d1c25fde5b69d09
+8a9ebb91e0897950256e0fa54bc1245a
+8aa2d1d4fd9126a3e1e8cd7453e9dea3
+8aa5409de8d3115192c78b9c16ca97ad
+8aa5c7b106a968d7463865d3b9b2c336
+8aa5f6eb3dc49d9cbd966c46a0b4a54a
+8aa6f836006b2744a7f2e506457498ed
+8aa969d5028fae05cc68849138ec845f
+8aaa9ebbedf6815884b43207fa279714
+8aabd687628beaabba70bd115ae379bb
+8aac1eb97e2f647c9bf4fc807e7845d3
+8aaf2ece0d32b1e5ff73f98332483f40
+8aafd1d3e0b0a36d574752afce381d9a
+8ab14aa3f05065085e60cca474e424e6
+8ab3f0692bc3845cc04934d8e492e306
+8ab4f174cf53c938ea887a9d3fdb3edf
+8ab505d4a1762f87881615f19e8f60d9
+8ab5cf434446562ce8b783735a2c8b1b
+8ab7f61287f73359f9d1fb226ed13d51
+8ab9aecc3ed8b80209c5f7355cc236ff
+8abd118a600355742ca1587ba7a2910e
+8abdffc2469c1b5df727e361321c3145
+8abf67f14e1ba0656ed6737f12c03c2e
+8ac01d301b7ff5cd4f3510c59e1693b7
+8ac03aef63ffdd59094010b0d5a0874f
+8ac10af6dd050ee6b0322d86633f72e4
+8ac2aa58ce042398c2533630f061bc04
+8ac4a65b87e45dbf63144fc62a315f0d
+8ac4bd53afc1ade38cf661be283967ea
+8ac7877cdab6b0abe16e1313c0e9506d
+8ac8ca393fc71c7a0e3fec3f5b3444ea
+8ac9579360b645adcb00c7a92809ccd9
+8ac9ae4dc71aeeb9d1f6bd4b543862a2
+8ac9e157c77fabaecf1bc541ac2fe2e5
+8acbaa434ab406715dd6a90944821030
+8acbc8cc456de417792e7f8b1ebb6ece
+8acc5ec7378bfd8cb109e7b1b41de5c8
+8acf975dc5c26883df5e0326226d1907
+8ad08c608771950c875371e95359b8cb
+8ad2c1c24a774c2728437b452f9bf05e
+8ad444a0d9a83b8bde16e777e7eac482
+8ad4564a1daee2641a4d66a04a604023
+8ad63a775e262fe94d278bfd2bb0a4ff
+8ad68d5962150cb85c347e562af2fb68
+8ad91d26d0f5a01ec835b96b7027b3a9
+8ad97d7ba8379b12b745435b849d33e5
+8ad9e4371447cfc56926a80443e21846
+8adb27e1b96a55fc68f1829e6acc9f81
+8add65c8fd62359694355acf46f52cb8
+8addb6d816c5fbab2645af75ef42c604
+8adf4a4710627299ec3d28dbb0b016ec
+8ae0c1908cc08176dd70b9c386a54029
+8ae0c21d0b0c8ed13d9989174f7a0a9d
+8ae155f1741d92fbf053d916321d0bdc
+8ae190274e9bde043852d6832133809b
+8ae35df902bca8437255bfc1444f7ec2
+8ae3b15149b91893ea9ea170bafff816
+8ae4b36cf19b30b3029241fe90915155
+8ae57edcad71123777922674ec57ab45
+8ae6351deb3d1fc5a48e86e07ec7cbce
+8ae698bc0e6e27fdc35ca6304c7add83
+8ae725c961de30e8e3f2eeb19d52fd95
+8ae72b29effb69b68d30db85a26017b0
+8ae74fb0b13c680fc9386b7185a789cf
+8ae783f88c6e0ec8107000d158a86e9c
+8ae8976653ecb188b785053be963e5a5
+8ae8f44d8faeea97486d15b51879e41f
+8ae99a8183fbc23029476eb77dfde306
+8aec9a9c0652fad8a9ca08af96a854be
+8aed3178a01990787d25f6b736beb87f
+8af06ca36e4fef637aaf29b0978a7f9c
+8af1aefd2fb0fbf15bafe3a8b16aed05
+8af235481608387e49ead9488dd3a695
+8af2f3ff365c8e032712cc2458308898
+8af3421d4635154c146c255597068404
+8af487d23e7ad5fc8a16fa4636d0def7
+8af4dfed145ef20d7ea6f0a9056fdd8f
+8af6b2e4ca0b0082536850169fdc3cd1
+8afa4e0b2ea23e1956a15be594204125
+8afb37aab6ea2d898619093707c2c912
+8afb4ad321187fd93231dc9d343eee3e
+8afd19891a1aa4e10d0873548a9943c5
+8afeba7e2dd4fbe73b53b2086c3420a3
+8affe0801ab7d641f0f45ae0c67f1676
+8b00a90baf63330c5bfdf4d1fe65f8ef
+8b02199db66313615775a64b44a0e8ce
+8b040f77a0915260e94204409af0d664
+8b081322045e8dcf8b8e263cfbd404ca
+8b0865f637810638f8cd9c74d064c6e3
+8b095a393af573a84a97d2026d14f340
+8b097356881c1c315c912dab27999df9
+8b0c8021ef8e07e9b635af5a3a89f724
+8b0ce37e865f6f3f7c1a29531219de32
+8b0ea861ec8aa0443dd3f5ca40753c5f
+8b1231332933eee9a0a1e741ea03d276
+8b1790b1a4d95d214f5196f3bca13a5f
+8b18a9bdc76102a360c3cb9504703d55
+8b1c140ae354a0f19a270d486dd485c6
+8b1dd70e7c1c75c7720cfcf013b94a83
+8b1e823bdaf15160a10927585c734a03
+8b229943e61e0048403d8a478416cd33
+8b233f4a0d77ab5dc6da0d38a543c02b
+8b257f6542339438be1d22e582745696
+8b260e0d78c7d589e6978af3fbcad711
+8b3017b65280b326b6c5323fe5a1aead
+8b30fb6ef9a057abf0e0054c0e453a2a
+8b32e4322403693d3ba9976a284687f9
+8b33703b9b4144cf814f3ece4de14f47
+8b37ff93d2cd5faac87d5122d4798c13
+8b3850d0e171586160b1a4a18b3cb0c5
+8b39e381d3e16c4815bd80fda976ad7f
+8b3b7052cd530dee03f1133c5871453f
+8b3cb4988aaaafc0ff6a6490bb7a6b4f
+8b3ce45af2a781d373446536e8aa8468
+8b416b22854a40d91ec5735cb11d55c1
+8b418059afa7b2bdcc560aef94d7b199
+8b41f556daf93d810c884da29b0c0afc
+8b421d3f18b987d61e36707282fc4e68
+8b4256d450bbca698a0bd75f598a5e2f
+8b433f760acaa0fb04611f4c812c2953
+8b43913acc89efebeb272befcf5d3ec5
+8b4629ba761940bfa1a9cb17e415a03c
+8b47f79ffd278517558cc4c037559193
+8b483b47c9d08cec5c1ce1413fe58f2b
+8b4a0533b673290fbb8d7b0b0fd8c85d
+8b4cce257592e3642c7b870aa73193ee
+8b4db8107daeb777ab2b39209c47f4ec
+8b4f9c67d9f40dda1aff5656e2999409
+8b5281b4f14d28ee964ebbf8d0276ea0
+8b52c4d0ec972b72048acafee5994c3e
+8b54268885193be7276522ea667dbc52
+8b55ec13610a215efbbad2abeb012f16
+8b56bd666b4a91d9fb2689ba108fd0de
+8b5714caa539737d515b54a2e7f6813f
+8b57fda9236d1d399ab7223d3831abc9
+8b58b9f8f30bab60277cf1dd5b204264
+8b59a6638e98e9c3b638f7483941212c
+8b5c870399c4d683819f675382d2296f
+8b5caac1fc15573ea354aa5db05e09db
+8b5d1a997da00ca395d7be81ba021886
+8b5e8367fbe95af71a3dae944be379f2
+8b5ed3dc115ccb7dab209e24edb9ae3c
+8b618d81ab210c369d850569b8e74530
+8b61a0e6fdd49f7074b453632b8a978b
+8b62684d624e6d5e5eb8b33b7ee3b0dd
+8b635abfb386c6efd9053fda9037525c
+8b643e7b7efdbfe091ec410aa2cdbfaa
+8b649a83b06aa62a72b9f7e601796515
+8b64ab727581942bb7caa209bb2c5e0d
+8b6560102f177c116e793f23b41d9f61
+8b6969880d14eb3bcbb266fa88ddd26f
+8b6b51d69238137b57d2940e1e0f4cb1
+8b6be8a3777e232d46e067829b71884d
+8b6eab8a40d7867d82218b58d576085a
+8b6f0d429f34bdb035255246ff1979d3
+8b6f218b4a3ef86ff520ff9e93b97057
+8b7027b606d7f140b427dbbd38f7a2a9
+8b7150f7f0bbc9ca56515e3a39f44017
+8b7477c363c6abb337a302b0450a3ca5
+8b75325853d9e574e1cc7aeeebfffdd1
+8b78b5beb791170ffe9f07353778cc1f
+8b78f855d453f10b9e702c46ab0ef9ad
+8b79df2f1ace1b47579707edaf370982
+8b7bbb4414afe313c84749bec55017ee
+8b7cc8af0cd71319bec1e25eee1ce114
+8b801427d14ef0b1e7c289eeee4e0567
+8b81ea923c0a024fd49b00a63df61ba6
+8b84f22c487da719eb6b123c32c476f4
+8b862dc598c7b3f4f1cc110760189cb6
+8b864c714ef7a06c229abeabeb842ff1
+8b89851f4543900ad81eec11fc1f700d
+8b8a865a84ab9507fd7c25c0fe87324b
+8b8ab4aae35f4da2bbd84ef616509efc
+8b8b3863ccee37e0a60155e689acadbc
+8b8b6b0632068c153f6d490865d90dfe
+8b8be6c831b165d0affa0783c36b06b3
+8b8d0d4443f4a7338c4c7d7ab8131c1a
+8b8dd222cd940fe5f4995d112df2e77e
+8b8df784bd64fbfe9e6bf2bdf44bcd2d
+8b91f4ca66732c655a1a51df222f20a4
+8b92256a2af2eff412e14ba563e9d35c
+8b93f9483ad3b062178a21855ad44514
+8b94ecb0a9965908f785dd968f489a82
+8b95a036ac6577336f69b0a1c4f33ef8
+8b98dd7d8a74a9d429e0628f098580e4
+8b9b1e9969174a37cd885572b5ba3953
+8b9ba04c4930a97ad35e78a55f9dd7dd
+8b9c9357cf057b2cc2b1eba1e7018bb8
+8b9e1ffee31866a41fd60f2c0cbcf86b
+8b9e6ffff0e6477a691cda75ed8dfd25
+8b9f86786263380879eec28b328b5fe9
+8ba01d9b0aad4be5a252c27ead3caed1
+8ba2b5c1e540998c8895182871290e97
+8ba399e72be110da997255b66393f335
+8ba4a9a881e819a3738ea3d5dc981b68
+8ba4f5a9168eeace34e6f8ddadcf5f8b
+8ba752a6248c90466f8c98b706153cd0
+8ba7dbafe9246694dea886bc2cadc79f
+8baa86674dc3a3cb69e061b77aa22e86
+8bac0a620a36786ef183603139a66703
+8bac33853b3b0351a130e4fcc7fcbf1e
+8bac64659fa918bf14edb0007f501229
+8baccace5279033717bb971bac37479d
+8bad458e8f28bb8e35b805a93c8e105c
+8bae71ec346e14e082e51f852fa943c5
+8baee2f82e6e7e1c2debee214f3a27f2
+8baf46a23ba8ad68f9c869453304fc58
+8baf558e7d7da54cb220d903b6c67d87
+8bb09fddad0879fd9eb5a575cdf60929
+8bb27be0429be86bfa61a98dedac95c1
+8bb5244f5f0f8e7300bc2cdff21b0664
+8bb5b588da6c0dba3cecd7f1db492f1c
+8bb63cb33e7c47ed9f2b4cee709c1b2f
+8bb6d61fce9d0128d34149a9e90626b2
+8bb965578277c895a15b6be96886fcbe
+8bb99938d0b2038c99d741143247edaa
+8bb9a06bee364cfad34001d339ce217c
+8bbc024a1b59881eb0850ba6ac54aed6
+8bbcadfb79be01a36badb667e5795df7
+8bbd3d57415d97091ffef9fad6870c8a
+8bbd41a7d2e14acf333a54e7e3cc4e96
+8bc24f47416b3052c4d1a91d0efec774
+8bc307d02c6b6384849e9c7f8f291562
+8bc3af4ae8ad12c41c9a5ae2377cf1a5
+8bc6dff2ee45be0ee9d25a3608d37f9f
+8bc873396bffc3119cdd5c3118adbbb7
+8bc985cff6f59d3f9cbccf5835caa61a
+8bca502854cf6ea6865692fb37e5a487
+8bcc9d8bd8a08bfa8380a9a8999476cb
+8bcd154c0df3732f6361a0420e3e9b37
+8bcdd9d109ac80b9cddf0cf17a3aca0a
+8bcfdea1abec1d447a0b6562378fc86d
+8bd2f4bc3cdfae147288fc62fd79e326
+8bd442202186375c8ed9707ce2cabc97
+8bd4546cb622ffa2d0ee2c89944817c0
+8bd889b4cd5e60f79855f19909e36c46
+8bd90c0bfe0318b0705ca6ebb2ebbc4e
+8bdaded1230876f788aa9634f1538830
+8bdc23cfa1e06cb6a625bf8a12f53931
+8bddf52da04bb08ae59f2dbe82cc91ee
+8bde63c685384fa760218706ec974002
+8be0e03d7c3b381cf8250c3d7932eacf
+8be1edb8f9fd9c5e624cf895ab84e0c3
+8be606a833649276df5c7db55a8ab36e
+8be964e0aba26d47f049ccbf6c3d3cc2
+8beb6e2c52cd946a3fa7512d7251b3da
+8bec13abe84a133a799492adb013999f
+8beda2a9fdb2f0de87b66b25d5838fce
+8bf043d3ced6f36c3bcfba409e2b5025
+8bf05546826a31bfc5b787afb714e926
+8bf221feb753d7848cc54ec57a490588
+8bf447c68597bda72f6aa00c39a9fed0
+8bfd95ee070ca192a7d00c12bdaf31b5
+8bfe04d81176b673fecd43689d944f6a
+8bfe1d7e3a94d876e0c735e833f3755f
+8c0053ece2533f7ca0ae7b6acf1e4d07
+8c00fb2ee5f48a55f992a926aa6544b2
+8c0235cce1c43daa144160c8eefd7270
+8c02f2a76fcafb0fe66d920c0587f17b
+8c0358c59498b15e3d55f13b086c8ca5
+8c04cb6d4035790ebbb77437b2f9a8b0
+8c053754f273bb8dc07b3540f0f1b405
+8c0696053a40112ff61b20be5efcd8d6
+8c06aa1f8529cde1e5911b909387b201
+8c07011c105c96187a9fb9005fd2e96b
+8c08a401543e65699ff4da6c75b91cb4
+8c09cdbd26bc740723b77c88c4bdab54
+8c0b933e62ee0781777697c17c0d2053
+8c12bd5b3bb8708f27aaab1a006b15c7
+8c13e0e309cad1e27d01f3fee99755fd
+8c14640bbcde5b3e928e3e0d98997207
+8c1491de87600a705fba03bbf315dc0a
+8c14e1009c5e307962701af9d3c7be2b
+8c1549b178f5c6558af5e70e77a4837a
+8c1824946aac4a85c3d5a37a6d26953b
+8c1866fdb133730adb039d01226ec83e
+8c18a84df9598992832677124ae87644
+8c1c233218a0355ebccf71046c227ff9
+8c1c41be252c5c8b0aa3b0f4b22813f8
+8c1e9ed004b5d96461adfd0e05ce6aa2
+8c1eacf8c9bcedaafa9d67bb7abc264c
+8c20306baffab74f43ecc86bfa913377
+8c225d6d19232df8f39f9b185949597e
+8c259fa36c9f53ed55ae82a65a66ac11
+8c2667ef6d7549bcbabe488771f0869c
+8c2c7869c93683547ad52900a79314e9
+8c2cf5de6509ece10ff6ce6083aad3ce
+8c2d4ec65e5c72a25aae2f00d5e46b84
+8c2d6e49eda6d2d6feb04f2c83aeba79
+8c2dfa7d855f61618ebc4e3e4d61333b
+8c2e241a7d9f6530481593bb6091132d
+8c2ea48a155bdea73fb2e4c40c7a6d94
+8c300579d12c19265e0915e5a2a87ed4
+8c340b97303d4dbb6cbe5cc38c744f0c
+8c355b187218d356c1abdca8c5f422c4
+8c37f3a968eb44d0f1ee4f63aacc6162
+8c3b49dd6f0474353a5eff44733d0893
+8c3b9059cbf9644ad8a72f360146300e
+8c3ba949cd905f318a76fad65c4d569f
+8c3c744f4e0567e68c3f4f45cd5db506
+8c3ce101cd875de05f710eb6546cb871
+8c3ea492ad927a869e3b54cc201a3893
+8c3fdd225f12364e94b0ddd245f24dcf
+8c3ff7ddf583a769cd41bc478a051206
+8c41192d74a40340efd013b24ebcf2a4
+8c4bea1fc3818ebfd9660179f0addcd7
+8c4c7c3de220c8a771d0421d583202a1
+8c4c889b667bff44bb80a6ac50a12d8b
+8c4d6a9a5002f55032be930937ba7dbb
+8c4e2ae8897cbfaeda46d9c05b32bc60
+8c5006576fd56d2b36fe7b1b16e181b6
+8c52e3950463af2503f20e1d72532d6d
+8c539dfc1a8af564b584b85ad327f055
+8c55cae88406fab87c222ba0291fcabf
+8c57906b7afc82e5ed3c454634876586
+8c57c5a412e874ab0b12e366e13f4196
+8c5943d95dc7fbcf7ed7ebb403e447f7
+8c5ea4ac8a6bae5a8af9cdb9870cfb32
+8c5f51e61c7da214d8333a7bb1b38b47
+8c5fedad52dab554d40817deeba65d85
+8c603eb06837d410d4456cc0faf739dc
+8c618787f5492a2dea345a57ebb5aaa8
+8c6381fe612ea6aa5152635341fe702f
+8c64515a8f2e858653d974e4b351ceb0
+8c6477653bd0adb513d3c345671c80ea
+8c6495f31006f245458ff98fba3ed807
+8c64abda26448af6a9d1e509c8c449dc
+8c655227e5f6daad211a07cc58bce0ab
+8c6752a131501fbe826b92bc2c4e4718
+8c67ee9cdd5596da5789230f8d197c25
+8c6968b5946a177459376148e749453f
+8c6998253d2105c5117feb7278c21b2d
+8c6abde21bd20320c36a80c31149a0e8
+8c6abe02b0287c6ec09aa6c74ed7446e
+8c6b903aedf0410cf05900c03ef01eee
+8c6c4aadfb253f8fedc46f568066f7dd
+8c6ee2d3940dfbc38cd191a8884dcefc
+8c70752a68db33f0b78a400649f8549a
+8c710ad168b1a6753d351c20a6fc1806
+8c7149dc8677d12ed28c902fb73b491a
+8c7272e79fee4fd65860daf2f6cad0dc
+8c727f83074e2e44a896aed2b7e31f9d
+8c74e8bade4e05950f1953270eb0cd1a
+8c7780ff7e5aad97f93433cf96044059
+8c78cf2ef0e6932049ec9a7845692f9a
+8c78d889fe496cf530e926bf382ea990
+8c79441afd917feb31ccf4fca40879aa
+8c7aea267c12643cd7d3ac9d09fa70c6
+8c7b147d5836d6594350effe134245a3
+8c7c26861bb7174c6cceb03f33101e2e
+8c7c34995c4df6ce090d449b8d883a31
+8c7ce06515308de841f05df7d0e07808
+8c7d853675fe71d60263e0e83e6d7a43
+8c7e97a2b8675d13b645b7abe5d3e4ee
+8c7f91edc63e23016d8074b0fa6dd16f
+8c800d27afa14fbe4e63608c50eb5798
+8c813755ad8612a0343d88d26a2e7528
+8c822c7b19b52878de44eff1b5627e3d
+8c82a84fe17e48dc021fae28b6c21cb9
+8c83bdcbe08195d61b0f3575a255f785
+8c87ff6eb943e4723a9e80a28e40d3f0
+8c911b33fd0e7353c50a243d217a4220
+8c91a7f930991b349cbbd223f026fae9
+8c93954715236f748a3c4046f5d683c4
+8c940dc05bdcc6e735030685cacf6ee1
+8c973c3e68a86d18ed0d55d6eb481fc5
+8c977a1e5d2b0778256bf7ea30873dad
+8c97e81724ce91debce866cbdf92edd4
+8c99a05b6ac68a1abb7dc57b40013170
+8c9c2744a3617c558af1db20df4d59d7
+8c9db74eff6ec9a7e9923b82b665005a
+8c9e01460b393401a143be47ed19db81
+8cab6ecdbd3b5843b112b0837b991a57
+8cabeceaf32f67936f216e2514df2ebd
+8cae910c1c5fb2a8ddaf2e4da0c10f08
+8caf219daef4e96d5accb73bd17a9cd0
+8caf576cab815e269ae4421fdd8e5c26
+8caf6f3389e6b6e1267e45cedc1dece4
+8cb33f31192cdd3fde9aa9a6a97bb930
+8cb3ada88b206df46a101e3d00e53c54
+8cb64fc7168f637bc313c3bef3fa96e6
+8cbb1df0ac40b62148f15824e0ee2c9a
+8cbd36c1b4f60f2a33aa9cf0ceefaa4a
+8cbdfc05d921f2b83fee125df0630cb1
+8cbe028ff23442522e32bb4c0258e81e
+8cbe1dcfb1778f1cd9af93249fdd734b
+8cc3866220048e7e44f610b8a60f52c5
+8cc488605e7dd17b98941416d78ebb51
+8cc7aadc854640af86b052ad52468011
+8cc838ef9f4daf2a66d5d6e64f8f3090
+8cc880a20c3f1c1f0d87cda10cf1199d
+8cc9f7d56930fbc24ce5d35d14e67b9d
+8cca8f7a2c43214e6f07e43c11b2a403
+8ccc3d98d8976c053cf0d5399088d3a6
+8ccd5c4f6bc14cd516d95a203a9a7cd1
+8cce0fe49239fbc91ad0371b8b0e52d0
+8cce4b6e0b7ef9cdedac88bc8f15c70e
+8cd02421cd74b0ccada8a4b3adf60b76
+8cd0276031bad47e5c0003699206e112
+8cd08b7fafda8ae4632ccd054a9a765c
+8cd0d2b018b7bff99058962b306f6aa2
+8cd4a926ff21a7b845c5a46070d343b2
+8cd8b8bbb598e1ffe5b30d6d442e07b9
+8cdae0f17223fa77a7ba16f60e66eb62
+8cdb7018fe08912e30cb437cbf358694
+8cdb78ba7c1578e72c7b7d9391df4813
+8cdceb79e12e7d27071aaaa989889996
+8cde1fb2bf740d211c76f35259a8aad2
+8ce0a1ee58ba3be9d93a9b49035e74e4
+8ce1a0d2100d307812bf390e53c372de
+8ce4b4e88af3a22c7c9c5b01753e410a
+8ce6e254a04bdcf5c196399fcf6444bf
+8cebb944b5daab5e5e56fa2a6e194532
+8cebc5e028aac0e507e133da8ae83e1f
+8ced2a25962ed0e842df4c55873f35ae
+8cef8fea3bd01ff09fa2a1109ab2a215
+8cf021cfe7ceca3f054004eb273f43eb
+8cf0fadf140baf991d11eebe78a55ae6
+8cf157d4abf8710e5f0d01cd9e7bfdea
+8cf219c6c2c5e261c9b2a06512cbd3f7
+8cf2fbd57cf2e7c084d3380c8d31c19f
+8cf4f290228be50ce2e840bbaab36816
+8cf62ad77e2c9ae68e09f9b6f0c72e11
+8cf62f9876be9bd1151f1863b3a57758
+8cf6c7b032e91531c1356e13e7155358
+8cf7b6a8b62c5f19e540d54b1731f323
+8cfb4996fef7b5e081589b3f19f649ea
+8d00946acb13e90bd8a508308dc9c060
+8d041caf4dad972a1e3bff481e65e968
+8d044bea68932472655a623ea1a606c5
+8d05c337e2db4906b1918666039bb6d9
+8d0609533abb0b68fac7f4bffaefadc1
+8d075835a18d36e58685dbdc48c38ba9
+8d0779c5d7f08572e84345e73b4c9dc9
+8d09dce4cd60516615ffe7233e368164
+8d0bfe92bd4582b1f8c5b6060519eeaa
+8d0c5980cb7927e364a583c25dec7830
+8d0d44c4baf15828f73da552be18d7da
+8d0f2dc4e6cd3e2031d7bcdf312acfc6
+8d107d6684243f82eb437f2d5af1ffac
+8d10e8cff24f4ca33a79586e7ff1626f
+8d1195efdc95ec51819e7e5921bc7639
+8d11f8e83a62044fc25a5bdca4872c96
+8d12673af7a76f2a18216434de7e5217
+8d141b5ad8b26d9fd2eb41cf8c6f19bd
+8d16084d93d4ee2d49a67465de840b44
+8d1aa4665b5762dbe6b30cb526729b7a
+8d1c4fc5204b600d9ba25fc408d2412f
+8d1d51a71c1195b0fc7da5caed8ba7ef
+8d1dd59b538699ba61e5de1e4e009145
+8d1fcfaac59395212f322bd790b1f429
+8d208ea370b796a08515b90e1d8333ba
+8d22964710f11c420781f230094bc142
+8d22eeab7f499a1917847b29477dd47b
+8d242eaee558592397ba1d577723b1a3
+8d256da87b2e2080281ff8effc917ac6
+8d26b0dc4cfa7cc96835af4633265812
+8d2a71f48200598a1f72e6ef3f836b1b
+8d2b1304e979aee0a292faf9a8579ee0
+8d2bffe93011d84523b0770bd3912e28
+8d3153a1663840647ed50e821353cd53
+8d32c54cad68e5f5522346785b86a489
+8d33ba755807d49ed0bae51a91ba3fbc
+8d34d9edaee7415684048f158ea9cddb
+8d3583e948e2ac463725f1287264124e
+8d3609c232f621da53a7121d5ceae424
+8d37e821d2df6589b88ad04fc53bf6ea
+8d3dcdfc13295d7c8d24f029979f324b
+8d3ded933e0de47dae22597be7e72d05
+8d407ebaf20a150a4e9dba86280f4e09
+8d4492a139b5138739b1cf20a800f294
+8d475b590ab51ac4f1fb7a7cb5475c8e
+8d47dbe8cc466e5c476b0a6cced8a75d
+8d482c21857c39a10f235f20567374b5
+8d4b90f6839d7871fb20ac6c875eabdd
+8d4bad225c98b4d19f03c23f13b40aa9
+8d4d963d648d702fdbae0c04bac61e76
+8d4eb6c7410795044cbc15f6a18dcdb6
+8d4ed7082583e1acac02dd258e9fd407
+8d4f211261111265d91291558146b1b3
+8d4fe5f378fabad0dc458cf844d18178
+8d5035c698acbc065ec2425a07a37fa2
+8d567c13a05e682ce74e7162f6e16e2c
+8d5ad04d2e73632167041ff22ebe028c
+8d5cd25d6dd0c81ef89f8c590371eeb3
+8d5d62e989a955bc510b5a844f6f7230
+8d5dba1ac484bee0012e72ecee7ceb99
+8d5ed8b719e33d95ecbe15a299268c7d
+8d60dfd8fdbae40ffca725bc8ed51cc2
+8d61ee1350f473cd2c6232c5caf619da
+8d6257308ea088e1bf9580924ad15a22
+8d640357da31b0033610cdb1e6abce25
+8d65a6115a034f3c96fab27a95c73065
+8d66e9c804c4e43caca4ad06fe69bbd6
+8d6b516f104588e8898fc40964b33501
+8d6b7100b78085754dfc0d330b235993
+8d6c8b8e7d9812acd32957d174d99e70
+8d6fed3cec1e3b1cae4d536258be32ea
+8d71b726c74e8112a3b7704e39847f18
+8d72f5883c7d47f6947f7fc6c37b9ba4
+8d7394672dc97f0272f1d20290fbcce9
+8d74e9be6f9fdfe55cc951ddf50d56c1
+8d75a6c48e4e39136aace5cc2ea79d9b
+8d75e7a2033dfc697bf38d5bb5960ed4
+8d7625b479dd0e0ec10af3c32b1c6ccf
+8d778fa5f9cc73412161ec1ba6413548
+8d78e52033da94cc0b335aa01186a4b7
+8d7c4ad83d47386360971a7bed959cb1
+8d7c4c1b3e92326b2b7987e818e8bfb8
+8d7d837da0dd5bca172a6e04946ce705
+8d7eecb6a1bcd76b4aa830f0af7565b2
+8d7f3a5c0bc7882a7d033dbb7d7c3c2f
+8d81c3a0d0f865da84ba6ae76c220387
+8d8239940aabfbab05c78bd804839b79
+8d8826692c21bbfbee1af1f947b74669
+8d8871a03a339cf84280decc9686d1fb
+8d88b8c3e657ff7c0d34feb912bf8abf
+8d890151cecafc2cad37181dea22212f
+8d89d9a7a69435b7e07b1d7af3619e79
+8d8a1cd6a65a737a40e60a77bbe00737
+8d8a48446aa1d74296aa07fbb0c7fd4b
+8d8ab853dcc43fabcc790b96ad82a2c6
+8d8b1dd0255abaad24cdfc48894af231
+8d8ed3d15a60f3c628109a4356015f44
+8d91374568e156a30139007f7aff764d
+8d9281eef6a05ac4a7e57403a9803609
+8d93811a25d457b78f3bcb816d1aacf6
+8d93bb0b5d2c68051de050bea62ad185
+8d989c15d102a1eb228202b311c2a970
+8d989de213791633f03f7c0dd708f878
+8d99109cc6f0940841b8850331b716af
+8d99f6ffd30bac5e638ee885e1a3b64d
+8d9cac763fda46394f217e1e67c78d28
+8d9fa943ee0231683fc6083e6174e3fa
+8da468ba3dac51ecf41c8ed5f59cd811
+8da4df72645a44a2602ec6561bbbb283
+8da590b29bf63da90c0b01b1e603b2fb
+8da5c079b27249612da11dd7d96c434e
+8da6537c8175e9d4e48f8fbc234e2f32
+8da870b1d850914c18847e2a57e5b519
+8da9e645d8d9f67113a4660021c707bb
+8daebb7ae36bffc3f63c8736df0e34f8
+8daf49dcd2be2f1798d036757d256bd2
+8db088ed3273daf7eb03d7b787bd690d
+8db1fb856449c604207a23056aa1f5ba
+8db28be1fd5b9af6acb307883379a33f
+8db54250cb1bc9f024435889ab582a71
+8db55b67c0fc79a82bd3e53756559c89
+8db6013e3fb6f8b4e35a4852ac6e2f31
+8db7b76f63867a6469ae791b9f366788
+8db99161b6e3904c7b98fd3a080c7e16
+8dbd9885fc2d30f1569aa87da9545af2
+8dbec8287723f891c3d548faf7c75a6e
+8dc1388173deb626ac65e89f8a18e0fb
+8dc2bd536230dbe0d6352d1c0e2c0958
+8dc3d7d2690831a609cbda677d0f8c93
+8dc3fa60a38cbcfebacc41885a78865a
+8dc6cfaa957959924d414c3f08970799
+8dc7c929e84cabfd392be0fc36e2f206
+8dc8eaa2a95bd562d6ae0d4c45c46b40
+8dc8ecaa5db67d73016f9ab44fad99a1
+8dc8f54ee5d9977ee836e405cd981d0b
+8dc92725545fecf5e3e4c1d9fe6ce070
+8dccecb83c2b354c8ad75abd36393aa9
+8dcec7f91d7414d40472b759f9f65407
+8dd7ea376948d270747012c937e4beae
+8dd83140bd6784a94b3c576deb878944
+8dd87d392118bc113f4a4ead627c2e5a
+8dd8f32a321d8ddafa560b146ce1aab4
+8ddf5712664c55962363c9e39d695a9c
+8ddfdea4545adbc47aab93f1cd1036ed
+8de19b2071b4336f1c89ffb1a610e518
+8de2143ff019c8141d782ed93a5aa826
+8de7415e7db6532ac7f3dd4f3c88b402
+8de7d0c7908275c1a3b5ce580348420f
+8de7dcd887225964a1c1057835fe60f8
+8de9a01ba286e96406b2385e2d362054
+8de9c7d78652148a3bd1dfc6361ed8c3
+8deb2ce53970d6b58fa6680fe7631c37
+8dee5ce4d28dda63a5b35b45487bf7cf
+8deee6aeb279b0b6ec0e086c645b7b70
+8df02a20a1c50ad070cba7860f746e4f
+8df2206c067edeab95a0b2f4be425855
+8df3242f7bc865014741de42701a9634
+8df36c1c887c540968c8d050c82d9bdf
+8df7835d9ab748416280451f45511fd8
+8df7b50d27a770265b3663d2e95492cd
+8df8f64e58f2f9477ab4a33aeb55d0e6
+8dfbc30d7184dffdfc118bf2df353859
+8dfe24c1886ea3fd985b4a9dc347acb7
+8dff49000cd79d8f5b4f61e82a9c463d
+8e00526b9f62e662bfa229c8aa1edaa6
+8e00b586267fb4b08e0b1a22c0927c4c
+8e02c0d21c60b81f83a4ac5a964b96d0
+8e02d1917dc691586e7851ab4ccb9383
+8e04f31b976565043ce74361b597fc03
+8e0738360dab6b7d0ace8bc1c7da8ee0
+8e078c5ca3d9919409f687e2fc216df8
+8e07d08ee83eb6804955feca827c5813
+8e07e76e7c0be71dcb6e08e8efe6c0d5
+8e0d126be6bb1fdac462f54505695fe4
+8e0e8629e4b85cdea88da485c0862a38
+8e0ee8082ecfa1449029dfb2a8f79189
+8e0f1c82f8f921b2f1979e9c6a687a1c
+8e10b3938c72b80ba86c1d77b4120c07
+8e11a831d45a83104f5898a6bbee1c12
+8e1231ca4b24cdd7a9544fa8cb58c726
+8e15e9c7bf8eeb71bafe349ab94b3e6a
+8e188e047f34a0be060f4f1f55d7769e
+8e194408054edeea76850dc480b145b1
+8e1b02f0bda99bbfe5ab4bcc3c2a0314
+8e1b69c1feb339d826cd4118acace6fd
+8e1c596c88f9df3de33487bda03bd8f9
+8e1d564cbc28187388c6e8054942237e
+8e1da1a3bb697d92433bff919456594c
+8e1e32ed1b27e05e2cc2e1f83b5bfabd
+8e1e396e2067b5a47b49e2643aa6ea4c
+8e1fc6743830e75039556aa30b81e849
+8e2403f8a00afee755407b2dd9da94fd
+8e2424d6e0c4c174b14deab413ceca41
+8e24443c0cc133e136d87a96199f8e31
+8e27f4534dce36719d07685c5405252d
+8e290c60d20ce42f8594b18460319b80
+8e2c28538bf91309de370b24e7317901
+8e2cb06a8e0c05177f3c4b9a90ba8cac
+8e2d3e579ddc4f0fd7c5e06a44544388
+8e2df3499fa05ce52753650d2c04ad95
+8e2e90222bd202b54a04d18c74e5be46
+8e2eb9b3a2d57d3ca07d883e4b4ae8a2
+8e2ed4e47e6279bad173f6a8ba1fa8c1
+8e30d103bbd45f2cb961d86803d3d718
+8e31d6658ed3f4330f545236a8e32734
+8e398b43d19c961b600d9def195b620a
+8e3aa245acabaf2fe0591d17b3b78fc8
+8e3b9a0e60a956b2f817feab49ad1379
+8e3ee78d12491e7e628c9a7b853bfb3b
+8e3fdb154f099c8e5b20e0117ed65346
+8e40453d073cf506ebb54bd6aff72a31
+8e40e48a81fcd587c66baf17d468c879
+8e42379da0124be2742febd38433a3ed
+8e4291d5f565a9a2ed049272e9625ef2
+8e431e340de3d338e048635cfd6346e0
+8e4652b2314d5aaa7e022086174ae72e
+8e473263a9b74e8c84da86443454ad14
+8e4915f7ef5666a4e42cb34c9738da60
+8e4c9cfb4e8f001299f004ed81cb9634
+8e515015595f4fda24f541bfd93fd816
+8e52e5329ef1a0359fa2869a0b41287a
+8e582c332cec9246ab924bae357ebf49
+8e5a96509d6f13e0e9a00018ac54c2a5
+8e5ab25068c039976e4c3d29b8f8d227
+8e5b7689804defb624a05ed62312f2a6
+8e5c2212da7960a0280a7f7f89f16c03
+8e5ca0ae8b56a36b977e8d41abc99579
+8e5fd26183b85073cda3593010014f7c
+8e5fd62313b948a0d5fa5de10687d615
+8e6028f72569eff2dbb92fd62a10c4eb
+8e64f6395969f699acf4234940273b8d
+8e6824c01d170a0f6896d5fe1302a9cd
+8e6a5217f2351070f497df3b398a1246
+8e6aac78581ba6bbc92b67364a4316b9
+8e6bf7e819cc60f6b55231d2ebdf7d41
+8e6c56010ed02d9cd7e952bc2b77258f
+8e6ef594eef8098584d67f2da8e2c212
+8e6fb197164fa0ff10aac5ca41eb8551
+8e709ce410a08f55b925ce55d46115eb
+8e712217e4834cd1f26e2dfd6f5b3850
+8e7128db337743991b7921b00029a9a0
+8e7288bbb188d8ed090bf63e0aadf970
+8e7465f8da30d177252dc9542e917fb3
+8e75d74582f9db2b31678c47aa9bf16f
+8e7808e9f22e95b59edfc582554f9997
+8e78fce6dab36f63cc3a5cde476f98fb
+8e79d57f75b6e654da8f7920b3c5b4fc
+8e7b01312ed54f6f7d3f2cbdfc582932
+8e7ce8a4b1c2b6ac0f5e4ab3039102ca
+8e80e11005a3c085addd46bf8b53524e
+8e88b28268cac25607d0646d142f631a
+8e8945bf0d331748afd52ebac7c59f18
+8e8a05f05f7df9df6bf4114cfcc86eac
+8e8ae389ee65ad3e610be0b1c764064c
+8e8c831a4deaae5323e6a708d212547b
+8e8e888bcfce691e554157a14b69e95e
+8e90bf9b2736d353bb2d9bf95729f5f4
+8e90cf49210adc5eb774e647ff196f4c
+8e9462f5dce924fe97a4d5322a2909f0
+8e950e68b35e970acae1080d3898e657
+8e9ad87b3e5bddb20d03283c47b7f016
+8e9af3caa8fd519721a7dc10557b86bb
+8e9b3697fe8c404a04100c3142b96e5e
+8e9bcf8b682d7e0610746396cbcce339
+8e9dd5d70386370b323b2f3a7ae77f08
+8e9f8074d486e4e4435118bbea7e5a91
+8e9f8e56d7d54904587ac42819df026f
+8ea292449440f637b14b3bb3a7d463e9
+8ea30cbfbb0982cc1c4826eb9897c541
+8ea3d7813e21c03aa861c07178835c55
+8ea5981ad80bdad121dbed253e4b4e17
+8ea6336aee6dbd25e0eec48c86b1bbd0
+8ea70044976072f057a4f9366ab37f2e
+8ea85fb45058312a5e5c7e4c7cb09028
+8eadca9660c0d8c28494dc138bb19177
+8eae485e8dfa384efe6d1a72777bd6ba
+8eaf6852c44fbee4d5686bc31bdf03ef
+8eb466259e0bb022df0cdfc93a62d72f
+8eb5aa21250a12c49bef81fa39f8bf3e
+8eb648c183d1344f31eff0b40cc4b704
+8eb78005fac72a7e816d3803aee41e00
+8eb7f88211f18185bdc65b6874ff6c0e
+8eb9c0a149838c27d0877911eb28e7c4
+8eba7cf00ddd5d7f4fe521815c257320
+8ebacce065b60edb4fc2adeb386bf445
+8ebbde8a6f29bae80b9bf134cb604d1c
+8ebc0010e1dc8fbdfbe47c602d757317
+8ebc58f649666c795a9c34b4ff1db710
+8ec284f23ae6ab0c6544c547c556ae83
+8ec32ea72a76b68fc7db9800a8f17e30
+8ec3f7806715044e5e07b288721bc2a1
+8ec9360bf774d333fa8c33b2f0a91095
+8eca9a2c6cf73f9fff4e3d032feee377
+8ecaaadafaa4f8f0f173cbde92a27b6a
+8ecd40f79535644a35979f8288b84a43
+8ece52404cc724cda425f063de6c0f19
+8ecf56191c0548bbd5c0956efe526081
+8ecf8119fd329a8dc0afff08c70752b2
+8ed072d33439a06fc8feb53c21069595
+8ed2d02e31d2ca29c4102dd1cdfff17f
+8ed7582a71f5e017c6f8a52ade39db8b
+8ed8d462a869723ba32c791fee77f612
+8eda4f1ff0eade046cff1e8721972888
+8eda5af05f34693b5421d4d9871f82b9
+8eda661a128ac77658bcc009a035cc89
+8edb5698d72aaa28b01a77be107076bb
+8edbaf58eb37b0cc81e96d6b9d1face8
+8edc78e088036c1e82d7bdddd5d4185c
+8eddb6689f1fa04f34db2795bdc75d22
+8ede2e92a7aebb469b7df500713c7d6a
+8edea6920583b7ec43f652183b0ee8b5
+8edeb6d11f406d5c2fa9d7b65ad1e4de
+8ee3798d374b0c6d698ed2605f43f2eb
+8ee63e83fb0477e06aeadafe0b59ac82
+8eeaa50fd5df308cae3d39da50ccd681
+8eeb0a6b0f0ab01eb3ca0f4cd1fa7303
+8eeb5a76d7234fd543e48010a5415742
+8eebeeab9b012bab6d75329490473a06
+8eef3bf21fee20be02163b7cf7041b41
+8ef567913c918591a18f8a9758225197
+8ef6ae7f70a459af57e05fbd9121eae6
+8ef8e32faee8cd988a27983c7c51eb6a
+8ef9fe05e5e0dfe3be70b117bc844362
+8efdbed41be5e34b564d7f7330f94e06
+8efdc6ce6a9d7713e64f561d8f9b425e
+8efdea7e997f729fbaecc9f544ddd0e4
+8efec13d6bc33c56f2963e051d6dd603
+8eff4457e3c545c971813f1c4d1459e9
+8eff4c4b9657334dd2c22233765195bd
+8f003d7e6a8a39f18978e2df8ab2e3a9
+8f010afc6ce27f997c483303134d780b
+8f01d96c2ea0c231fdb1fda0bdddd9f8
+8f06e96bea3cef4a8ed5efc694594681
+8f06f28b23dcfb73584b2fa1b371e1e9
+8f084ea2379b07e9c25842b96feab792
+8f0a569574a64a6430c21825ee741ad8
+8f0b9823d18f777ecde5662c067887f1
+8f0f46b488915eb53d276e2a1167c3ef
+8f1158695d2a7326a5ec4a6174bb323a
+8f12acfc09e45c48cc9c7945e32a10bf
+8f14da461e768f649fc624dd2bc25beb
+8f187b57e8348beb5d78cc8861cd9e57
+8f191c3d0fe746fd0b34fbb25860becf
+8f1a0b327a8ab7f38dcb67c0a18c86a9
+8f1bf0884c9e3d6b5ef3afcea4352c48
+8f1cc6206fbb4b6bb2c840e9cd36101f
+8f1d12ad0e1509725d1e021acce0d0e6
+8f1d3bee6a5f2f5065797897b53b8c56
+8f1d4c7214ae2b6b2b888d94746f4392
+8f208c28cfd040c3e21457d4c6ca870a
+8f2123d359157da5cd7015e04d0cfeed
+8f21ccf33342422550123741773742c7
+8f24f7348863eefff5526584578c4e7b
+8f253aa1e98173c7cf091b1bcfdbe5ee
+8f26498677a724fc6955750680226b71
+8f28a171325c4f9b777224c52f7582e9
+8f290db0f882b04989047693b33b09e0
+8f30d47ccfbfd8121bee4a62d32d77a6
+8f3783b747e1399a858a18541226461a
+8f37b3171da9e29842183ff086e92c2a
+8f3a6e515a2099daf2277e2c63d4b580
+8f3c77537df20bf6d7527d49f4dd2af3
+8f3d1ba750431204188187178a21c5dd
+8f3ec3587752efd663fa30d9643cde71
+8f3eeab8291e405bca29b99820e9649b
+8f403dafd43add0766c246bb58fce9b2
+8f437c03360b57a4dd9939cf76eb6729
+8f448608f9742d02e345e65643a8783a
+8f46f07c512485cdc33d1a846dfe3d36
+8f47131e8e7e44ceda62fd8238984135
+8f471c6097ca0ce1697f6d26d5287fd9
+8f48158d041d97366457860ee6ecf5ff
+8f4913596356008a2aef90dbed8a9cab
+8f49c7ab0568c1c323378803a250886c
+8f4fd11a53df1dee6c6c4098203dca0d
+8f4feac0b4ecf3c2dce33e8665428621
+8f50ee4c49d2114500edc6df0971ae79
+8f54cf4862a6871aa1ed1522f9bb8595
+8f57bf30fe1d84ff617e619539b89169
+8f58432d9e9b20ee145729b64e0645f2
+8f5ce1d0efeb17739af1bc745f65d1bc
+8f6020d826d2add4a62e373ccbe7bfe2
+8f6050c2ca896b014f3e42c6d659fdbf
+8f64b9c5f883addca8268018358855af
+8f659148bb3b0ca61346f2a06278a951
+8f67b3bd87f65965872240fa684c617d
+8f67d1694bb89280d1302f17dc6b9e4c
+8f6845b06b76d37e4e0859e06e780e29
+8f692d6104c545e71a72c0d61b8974e4
+8f6b4feb37f113feba60369637adec02
+8f6c2cb48bce2a0cfa9dd85530282c59
+8f6e36bc22ffee9347d27b63e25f972a
+8f6ebe197eb37fa89541c68afeacd98d
+8f6f978899db12ff1974ae088472c3c8
+8f7069841ac5af6fe46f82370da2b067
+8f712832ecbb8e8c5da0c6e16f94ac18
+8f7247346dbbe5c64f2b89ba4f01ea6a
+8f770d14fda54dd5bb0b88151b976017
+8f7889e69b703045e10922ccd4858f21
+8f78cfb8c6f3b9e45e13269e59b41e8a
+8f798ac2cb1fb634ce9724fe0d6b83b4
+8f7a0a6001640a45a2311c4f0c878ff3
+8f7d721d7bf0e3d170cb7ba8604b774f
+8f7da3029a5ba5a8b46043abd36adae4
+8f7e6a8487852a6a605244f54057173b
+8f83a53d333ffbd203ce134a32c63aa3
+8f849cca0595a8ae6ca65b83e64810d7
+8f86c3a2a514171a5dfbb578a55b992f
+8f86d6e8e16b16841e1e665a39dff6f7
+8f89f0e4b7262b6169557e2387772f76
+8f8a2706708d7b978434bd1b6bae54ec
+8f8a44048b45f6c6d15e64a5f9caa8df
+8f8ae3ffa10b3de30741ab8209b8a70d
+8f8b08b0729bb8b8e44b57b27a648c62
+8f8c08a5deeb282ee17ad327d02a7d3c
+8f8cda8e252dc360c6f3eb24fab8f72e
+8f8d36bd0cad2c3988155574f20d8e7e
+8f8f7e89e1a28ba32d4a109088248a15
+8f90735d673bd32b2a737125fada7703
+8f918313f39ed6ac9cabc5ab1f3de691
+8f926d05a763d115f1da8b0e20ec7d69
+8f96e07c61b57b474faaf0e75e15c008
+8f975f2f9ad91b4b78082b69872215a9
+8f99cc263995dfd5b9618745d2936e16
+8f9a05f25c9b6361ddd37e64360324d5
+8f9c9e2b3f1e4481a96bfb74e894bc61
+8f9d70fcdfd052d2d87ea88471f1b6aa
+8fa1882b5e45a5da5d3df638f887bd54
+8fa47d1a79072e7cbd40fe1f37a0cf49
+8fa49f735466ffabc7b72262b232bf31
+8fa5daa34a7a1eb8644273314a63f411
+8fa66e66b9e5742fd2a85ee9609fcc44
+8fa79e45c02e289d3cb907ddabb363f1
+8fae035a7bb4c007df711e9697e45ac7
+8fae3d92be87bef0f6c929b2e880a023
+8fb3f65cb8a43918c0f69205087f1477
+8fb56baf14013de5c230e1fd9e8e9711
+8fb79c7342f48a4ae064511a810c2e99
+8fb9ae341761692d15ad688488415790
+8fbae769a7f843637d9502bf0c55957d
+8fbc64128520f81a7b44374b1fdd6c77
+8fbd02303d6e6fecefe9a25559bae50d
+8fbf991741032e080e259ab963750fe9
+8fc076e4425f30c9b0736208fe8b0dc7
+8fc100b4275d64424ef2acd0527d3aa0
+8fc326b714af6797eff1497495982d54
+8fc4574553fa410e4e518f4cba9457c5
+8fc501c45b9b46fddb5e88718792c51b
+8fc74ca90d5d6c1808534f1aa0e84f26
+8fc785a30d5c253651cb7006fa662f72
+8fc8decbacf64638d74c8f74a5d2bfb9
+8fcc74bb599a33bdbd7577525077512b
+8fcdac475ac108106c937ed3233e1cd6
+8fcdb8afb822153b6b3566841b4d5509
+8fcf21020c9783ef5c75005b408a93b3
+8fcf6a98afcb6020c223e19b5669412f
+8fd29dbb4fa6a448a86861f01da1be8f
+8fd33bb9befddd5c2201709aada6412b
+8fd6dfd037b7c8a1f9d3c044f3517a6b
+8fd95bfb1b25684ca2d38c573457e2d5
+8fd9758e848bfa5812ea1f30eefcdc2b
+8fdc0a1080b363a8799335215075f63e
+8fde9591cc510a683f8592a69faae303
+8fe0a3b6fae92e460b27201ee61fb197
+8fe15d1dace5f8d63dfaf9c69718b2a7
+8fe19a77439aa79d03f6df0137b7c981
+8fe6b953bd0bb038d5852897a9e2d806
+8fe6f718cc488237f9634b8f759e3a3e
+8fe7604f0337fae0fd6fb9d27b6d3f21
+8fe7ebccf14502220be74377b692bdd2
+8fe96c6bdd3f53abe68709aca2f888be
+8feb2b7eeab8b941ed0f092a91e7c11e
+8feb434cea971fb73e5810a26313274f
+8ff43001bfa0790801809f3380cbc6b2
+8ff4f499dac4b59264c38bbdcdd1d861
+8ff60a4bf8f842b49a00b82be20152a0
+8ff614530bc1d8e3938630d82d3a5b97
+8ff6ebdc7ca7bc970d03cc047201412f
+8ff95c0fecb08048a4f11903d821486b
+8ffb0744a4a697c86f2c4e3797cd675f
+8ffd01d13a8c25bf2506b4f9cef04cef
+8ffe5d74601b69b1c65763be130b4654
+90010f7caa23e4d257f2cf6435e17167
+900274df47d4e505dca881754bb5d5aa
+9004271230db6fc440e7e5fd31585958
+900462c811d9f67eb0eeac8e234eb30a
+90049b2910fe918cbaf52db263c4b117
+9004d3c476861511f2bd9575f34c7043
+9006e07b4d3ad1e97f3f5eb1fd48851a
+900702bd7bd267dafd51c57108522385
+9008f842c2cc34a62ed7824a7596bcb5
+900be593558faa81a1075cefecce7441
+900bf52a16d7cea824bccdc5731bb74c
+900bfaefecab9d09edfb32bd7ade8281
+900e3b13fafa6500b12b88703a1f0c23
+901027e15299cec3255ab84d45338b65
+90111803f1e5a904d5651868fde2b0ba
+9012d80f082d688771a9b3d0c17d672a
+90139936cbd39d94b6b2416d9611f4c1
+9016a2c72b46351ab733a9084ac92a30
+901777048ec9464dae0f41bfc195faf2
+90189010c22cb6b6983f7c8c09a90d2f
+901a144e3da929736ee4fc0bc9ddb184
+901aa78b2760411f5c4b7d18f6151654
+901b7e4c19ba1e1bc9487cb59c01409c
+901d9a9a08b29c29888779e20949a136
+901e7d74b4fe4c3721da4b15c7d8de01
+901f7b8e1763b5ed62d6fcb3060c648f
+901f8abc79bd16cdfb415d44cb509971
+901fa22595e69be00eba9386b92458f1
+9020b39d7fac5f3ac7e10f6f7adb3943
+90219ac9602e20227f734c9f78311023
+90245a412ce28da43027c69af071d46d
+902496a7d67a762fde1c66001c0baf8b
+902571ef2d7495a6dd77f99de7fa9000
+9028c048fb6125e00ec0ca053eeee60f
+902ef7ed3653fe5d590dc52082e42c23
+903245cc56a2639d36a1debe3b379cdb
+9033668ee796998b7486c9b5f852aa57
+9033ac51aa2a24366e3c10841c9163ff
+9033af9dfbac6608e2f98011ff4f178e
+9033bfed1943003c23d1ca6eda8f2f88
+9034840b93bf8b013f3d72d34b68982e
+9034f3515ddb27dc0b7910614160ef1c
+903526dfd378e3d67d482a0712a60ba1
+9036fa76e2c90af943beb875debcc6b1
+90374253273d438253c50f11777d52e2
+9037e21a3750fab30a3654e17a1e84de
+90384fd9a7fac64e48ea08dd924d0d3d
+9038f9d79febdbe36d0b532cd79d9427
+9039ddabf57192b719688867654fea29
+903a2079b53668b0c5ddb66c7a8e5114
+903c7804573c821da6cf7ca754d2062e
+903f8de63707989e2363b64020740658
+90404ebfeb7ac08c0d08143e750e8ce6
+9042e1a2c33d1e6b569e9e4bd63501f3
+904445861e305194ab7ec532bb5a5da7
+9044547c93bcf483b3913d148650ae5a
+9047da6f77f7c3004a4b2f96aa1b0b43
+9049757eb53543d528be2f5b26da9c18
+904a4e53ef11ecb021a858b26a9f9e8c
+904c124d117243ef4736e4e5f7a0d21d
+904cbbfb5825d47254b87a7a163d3413
+904f826fb200ca0a540764a0ec741dde
+905133361c38a893bebf41484d0a59e7
+90527313628644ebc0a36ea877fca1f7
+90547489c9f1c5d83f08c96403af54fe
+90565fd68040cf2925012b4331fc8346
+90567c4632ff3c490b69f3cc12383d0c
+9056a27d05b2ea2a0a1046eabdc096f2
+905b9c778b2f955fa49a85eb8adf830c
+905d6724222e546145b269b9b99954e2
+905ed43ca3f90f4b515213dae8da2f5c
+905fff028c0a0bc315adf0e783da871a
+9060569d4f74e99234e44d9533e3cf72
+9062113f2a3d990b82121f48e8c9a391
+906330a303b977258a40032bbfa38a4e
+9063f2370c14c154cfca9234885c4a69
+90667f24a8eb2868722998fecf886ba1
+906c14ac07e207942563cb226f25304d
+906e1b52b35d904a5f79a73b133a8a04
+9070c3e0629614f682c4fd5cb15c881f
+90730d994684eb0171f427adb9a048cb
+90741b651e59e45a1a6aa455ab7b01d5
+90778373b6fcdd37f45db92e031580db
+907d228225cc0ffcf57942b0e308ca2d
+907f6b8327388a7a3a72ce3fb5edd3b0
+908064bb3af304fc9ab0a38d8f2a6adf
+9080babb3eb654df959693acbbf3fe91
+9080df3bf976f0894636958be176a58e
+90849b8af9972c20995ec8264845052e
+9084cdca90a1b8194ba4abc24d836e99
+9087d51959752f319840eab9867a1563
+9087f86e4d69bb858d975ab64ba6738f
+9088f9cb7c1abd4e3dcbe3e97f780e61
+908b6138840d390bc0f1c7d904c8117b
+908d1dc099b0ae506ca8465afc0afa36
+908d52a24a4c95926eafea098d6fb559
+9091494449309c976b7ebfedd571ef22
+9094dc037de885245aaa90dba85386f6
+909673d08df4a7dd32e8c62c714ee71c
+90969bdbad7d09361557a70462b5b2f2
+90978aa5b82e0b4bce17109e614dbc41
+9097effde3a1e4f835eb4fc75aad65e5
+909af4d61c5d988d14b3b96727f72d51
+909bd2c856915de4c1432f06095ad347
+909dc576218e8a0947a3b25cf306e30a
+909ec21b0e4392322bb90fb51f4186c8
+90a3e4600a5d2253b70d709989b6215b
+90a43d930b93befe7693d0b3fece10aa
+90a4a9f4b183e0a1a87bbc7d77993b7f
+90a645c83407e9aa7ec754f27c00da29
+90a6db3f59a3f4cb7589800c7ff233ca
+90a952ca43e04f7e289ddc5b62115961
+90ab4b92af063d89829670dabfd3f0b0
+90abd81df9f214bf39d6ad08b26e31f6
+90ac58709e80268a6932aead7feee2a4
+90acf654e4dc2db50f39ca1e35839400
+90aecc5836a79103c445e36e1c68d12d
+90b2c19f41b696317b7b4ed8260f9cc5
+90b3505c4a0b05e9c0886a28e1705d99
+90b4e40d14fe3f7ae4113389b4418481
+90b55a37fb405e9d27fed9e286bed9c2
+90b58ff83ab87efee0cb73f62ad75314
+90bb3a927dd9d865a08cca9f66abf0e6
+90bd8607a3e6ad1e09a5f2bcc44070ae
+90be107dd0f94a6d8033e9da750fdaa8
+90be3c85d6ee7bd630527ae4dab2375c
+90beb55891492cbd10d4393b9d8ed876
+90c27993aee14a9de0bac4775025d75f
+90c3db6577b6a27ef5916d7ebaa40f4f
+90c40012ccd30105bbbc200e6829e28a
+90c487fef2c007e430ffd88099321613
+90c727f2bcc997802142bddc8ee3962a
+90c93067c632d8e8735a332bce14702b
+90cc0edfbc8632ab7af06128f160c33c
+90cd00a685fc54fc3acdd4c244c53d4e
+90ce407d28d5705a3eb35974eb542e24
+90cfaab6b35ea4c580fa0f4fcd9ac221
+90cfd556dc1f235a9ba71dfc9b46c78b
+90d23403dfde1323dbcf902cd2f869cc
+90d383acbef34415cb6ffe3872199164
+90d402b67a453a88163ce298592fa6ef
+90d779c94de2c553c01777c7bacea24a
+90d85be82eb4abff58b5b9aace28daaa
+90d89de66e0cf44ec34c61db369b45b7
+90d9ea66407a5285a4ec2259636e780b
+90da5195818a765b3bc2d3c483938a92
+90db9a8eaa708864ac802b9dedcc9ca6
+90dbc6ffe116dd704992e3e78abe74bb
+90dc05b61e06ca2f4a447a85b780a3b7
+90dc8e3810df7ca991646c8a1ef60a46
+90de2231303b28299d32e62b1ec70c21
+90e25b4340437321811f7c039a70445d
+90e3a63f91eb2a29d89410b2aafeb1a8
+90e675e361f8378a3853ff14f177ac7c
+90ea59e39966e49d6f7839f34b6dd660
+90ed2fd6fe6aad201b4c292051d82e26
+90eed17a44805ffd165bfc11a4b6fb9b
+90f1874de26e9ae12f99679837d372ec
+90f216f22ce6c731dd9143ffbfd483fd
+90f2441259d0881a58f7bf896f086913
+90f4c056a58c0cf8009b987159347aaa
+90f60aa004f08ad25ed7b06b5a6ff5eb
+90f60bdbeb2c70f713204f64d8d6d413
+90f693c6edaea468b7d1eb5d9129d98a
+90f75bcee255ffb61e14897a6d2bb56c
+90f88a4bd58ec0b8dec554c24917f77b
+90f896c32f442a2061e65c4ae9213055
+90fbdded3176e4471bd124a7928404bc
+90fc0035bec0d778540912c473cb9b3b
+90fdd9d7be331f48a273f12cf0af5b3a
+90fe7aae1de1a82e4367ed0b171e211a
+90feb8a9116a51ec497045477d091e64
+90ff1d09ac2d34b0f46a51b42d3dc83a
+910086af51b55b8ec58ca89d4a4a8868
+9100b44390738b179b6c35ac29f2fad7
+9101e02e294417d06951579b80cc4768
+910874ca9b6b932bcbadee4c91a1ec55
+9108dc0c2da0eeca73cba59e0566f418
+9108f50db378c47204e1caf07ade1fab
+91091fcdfff01c142111227b502c5858
+910b2e6c44d8a28228692c0eb15f4e21
+910b3234f7dbcfab8fec7cd532dd900e
+911231d82d67a78605179c933c2f5091
+9112d1d05f05d75fb23d799b36316f71
+91130445f16a8caf871fc071b210187d
+9113ef531293a7ba9110d6d9a2e2509d
+911480f9c0106c65770c55203f842927
+9115801a709d978d90f1ad9a17cd2b32
+9115c46bb98720c98d1f8c8f853415b3
+91222d6fbc917ce8bf2548584fc55e49
+91227147981b7df86e18df3bf00c5a8f
+91246d1e3d47ead307e0c54847004c56
+91247da882c0b535758ee134aa2386aa
+9129a676aa7287d6bd3ccde996b1f6c3
+912b404ee6cb5f3fdf8a393b23b833f3
+9132b0fd15ef5233a651f928984f1697
+91345a0fbc0ff979c1ab80a86ee77101
+9136901a2153e9666545871e6c2beb10
+9136d8b1e9e69cdba1aab4ad818a5fe6
+91380d74e1da667902c77284a62dec28
+91385bf24188125539465f232f18f004
+9138662f35d8996e21f7b968ee3880ed
+913931a2643297a6b82c71467fab3abb
+913a89fbec23003dad940caf52c349c9
+913c0df4a32b6bae68fb02e7043d76b3
+913c98a229a07f7f6d1f2d0a68289b6c
+913d5903a9fae8fb1b56e68c700611f5
+913e1d76d0ab3514b70d70e801cc4388
+913ee1499bd492c224ef20741104ae55
+91413de75444cee3cb0384021fa09a9c
+9141ed855f3583df448e5fcc96256a88
+9143a8c9231117602dc638ebaaaa81ad
+9144f95c1c92ff94b0ec5e339437fa5a
+9145358788431bd0f936ce4055f60c73
+91484e1cb0a806a6770e903e9d483594
+914bb39e9abf7d4d9da9669a47272c63
+914ff4506330e95a75b98bd246b35f10
+9151a7feded8ea46b516c6c99d25c40a
+9152d60c8422d4852c3f76711a1d77b1
+91542136cb4a05a639494b6261ccbf3e
+9155412287507a0748fcc7231b5e38b2
+9156df93c991749fa8069dcdb1de4eaa
+9159d7e66dde47386f0a0b6e1357ee50
+915c4b7e81ca5cd4664ad527d4f28aa1
+915d6c3439a0ba60800c6dae4797113d
+915fa78eba3bfed9799a86d878cba799
+91610f9fc477ee362eacf5ed155cc7e1
+916285338e6bd6724b5754565670ca03
+9163ff6c8cf4a0edb46f0210d322fed3
+916640d4f86b882c5dbfda18b7ceacf0
+9168f5252be58d05fb0529dc58cbbb27
+916973e03dfbf32babae8b71a679b318
+916ce6f0727cfebb37723fbd73949233
+916e9a0e9aab0ad38c240c7a75418373
+916e9c57d8e3c537e7cb7d38e77a4ed0
+917115dc40cc3dacb72abf2952129861
+917268a3389f04852a8a9e7cbce9b1cb
+917278fe396280a2abfc3fe28e6ea79d
+91730d59032766e96a0a3a489e9fd689
+9175f323276fb6275836aeca4b228777
+9179319c84191801718d75eda902356c
+917c81144c9c01671be0c3871c0e73ee
+917cd84932813644b972af5b0a55adc1
+917eb498a90287522a20a348b9adde18
+9183b8d5ab5b44707833863c58f11ce2
+9183c2674f84d031640fcda087b89dc6
+9183f5231abcdc099aee4cdc00f483c1
+91848d592c8403cc45090aeb0c916e86
+918660656160c59649aa917c24bea021
+918876434598e5002f2b051d5a5e63a2
+9189aae6cac43eb92131c5f0442396c2
+918a81f2455b4e5028d40337faca74dd
+918bc9c5ca408c47df5b2f83343d678e
+918e9521a37ecf271841949a4bca89c2
+918f372ef21da673b02064599e7efd38
+919038adafbf39a995fdef79ebd2eed9
+919198f2e73b7c325b3abd92e4a3fb54
+919364d26be03461b10fc3e99f9dff2e
+91946678096d57036b68ae27060642af
+91961398c6a1e1da8d27e1a272727e88
+91968816cabb5d710a6c74214a88077c
+9196db07a3e9440f18fdc311afc1025a
+9197a7b12f79b577ba4f1e21e7d8d98c
+9197bd46a6a375ed0a2d13018c29550f
+919afd9ef35155bd013ca0c0b214747a
+919b9c45b80705ab9d3c180b93287418
+919f909c6deb57eaa6f36dcf5e6ee6fd
+91a2e44a8f6db641ae68e5a4d00e8259
+91a42ef53f0758c18632218637fffdd6
+91a557310da4289e0027bfec1aaa427e
+91a64cc47042eddaee05260f95c122be
+91a79288dc973ee6f803779b721bbea0
+91a8ebbdf6b9c117e586ea368cb3b6a6
+91aa9a1925bf1097fbdec253be6e7b99
+91ab3593f0045ee221fc96bb92ae2fe4
+91ac2d1a86f2a351182cbf73bb89e566
+91ac4f6677563da4acbf06935637ddf1
+91b41e97787d2b4e46a34013d55759b2
+91b4d42255d9aa88aa49b052e0480270
+91b4fe75569911ae520237bbeb2eabfd
+91b665a409777731018aa0c14d5ea7e4
+91b70e906fe3a88703f8d3ba83c8bf32
+91b82fa02109806f5181ded7d41b3b6c
+91bde367cd1c05abbf0f2463a56f0c89
+91c487dbeb2e628f82ac8581bd83e723
+91c6488b55cb01f304a99e787a344db2
+91c69db6055609b03faaf08c034be7a6
+91c81b996dd382db282c1fa59e9751e7
+91c95ff4b8d5f9e711a71e3cd597b467
+91c9ca3fd9f7f7d618d65ac2cab0d96d
+91ca4d098420743a07d6579fa3daaab3
+91cd7296d6532de83ae917a5f470c833
+91d3220a350922b09a67fc8970a58fd6
+91d3b782599a36bfea56c85f419ecb5b
+91d48d78347482ab2a1c977c47d66c75
+91d552ec6072c9e548543478664d8dda
+91d8a1533df2d5f0cc8111b744fa8b6c
+91dcc2ee059fc3bfc6144de24ba6768a
+91dda87e90ecaba02eca3b50fc42126d
+91df3cb5784b55d9fcd08e4a95e550fe
+91e24f7daa695b46b698dca3322b42b0
+91e80267b96e6bfd55eeb63fb1e68adf
+91e819fc2c34715a77bf3f2a92941793
+91ea8e1f9cc435948f2881db2de2e035
+91ed606b64e88e41a15fdf317f7d6187
+91ee6636d35062a7812e79f718840a41
+91efdfa898f47e25e155e77d945cc285
+91f08ad481ab7aa7c85ab7fef7ad6a6b
+91f17ffa57921ab61ac42c2c1724a39b
+91f19c02e08cfad6e36810e60d132367
+91f3bc7d3701e633ed343cca7ee423a6
+91f496a941a7c76f307da0ee26856317
+91f7d79c85db6be2d66ab595d0a1a845
+91f9f2eda30cf79a3e677d9a1215f5cd
+91f9fa4bc534bd84dacd0eaa4724b8f6
+91fa5634c761846a94136ed32860845d
+91fc26b3bbdf5b9579a37513003a22fd
+91fef1f20e68bfc5e063564d7732e418
+91ff0ec55f1100fd30638fd71b93552a
+91ffbbab63ef17dbae365cce7a7452d1
+920074caeb020dbd9b194673c7c2b277
+9203836a259272de05b13e834ba5560b
+9203d41c547f00c21e950c68161ef9a8
+92049b7c2a5542168d301dab594ab676
+9204a4beba7878ba0f4d0d74c82547a1
+9205fde5232191d7dad321f81a7f42ce
+92063bd5c398f8a471579fc581dc5297
+9209ad7f53c39aba9cfed276bc480b27
+920c4b62ca40dbb12a73d8def641a529
+920ec0d328ed3874cf6f61b882cafbaa
+9215841de26684bc753f86a62d2587a5
+92184ee1fa5acab9a258910a13dc33de
+921a12e1bf6579399ea1feeb5966d5b8
+921ab370a90b2357605bae838ae54919
+921b95f850196df41b240905618df4c7
+921cbec61797397d17143fa389f18e0c
+9220f5fc4308231ffbc66be30a1bc466
+92243c5d2134f809e479770e7e95847a
+92245c1c1c448a84554fb0d5f7090837
+92285b9fe220cf83b66e72ef84eab7f6
+922bddd4818d9bcda9c1142881e10ae5
+922ea18379bd56bec6173b3ea3903863
+922fba877cbd3ebd56cc560b4e5a35be
+922feed288785b0fefa3405f67f4a613
+9234d943e1d83c0bd638696f62a3de64
+92350414cf21e6af364788ffd28e06bc
+9236bbba829b2d069f7148fef9abc264
+9236dadb4c7b2021a31f8ffaa9f4920a
+923737699969e6f9435b15d5ee4a95dc
+9237cb9076b92eb0c18ae197b658202b
+92388653361918222a0aa0da1c33fc08
+92395b41ab4c8c757c24794e7ce6d4f4
+923a47134865b36b8130df243e2d18de
+923c8331087f592337ce4b2a6767018e
+92404852f4744cd353d9f8f99b2cfa55
+9240768733b4fdb8833fba4a5724dec3
+924150acbaf1bd2c425bf160ece91902
+92440c86f9ac2a081800e3babe1e163b
+92448866a30a0ceec7c1efd907d326fb
+92462c46c5e3c3d8ef2a033c6a657527
+9248f5db79e8a67c90ca0ad4ade91799
+9248fd5f235ecd36422f97ea8f7b9c60
+924a9fcf49dbabde46b0e90782596b28
+924bdabc2ebf48a51ec8a89224e90fa7
+924c7c31e33b0bae559ec5091d991a67
+924cd19428fff4a696906fceaece00d5
+924f2ecaf5999b7adbea3920ec3008ae
+925096442bbc41bf8a193cb957abe744
+9250cc682134491c57a5155bdaa799bd
+9250daa08309c56241681eec576aef21
+92516d6d447f1e4381b70ac9b4ebce8b
+9254da672b914ff66991c6a1cd0b6430
+9255816f3f747d04ef157afb00a1bc49
+92558c8a8d6beed0cc835a688e092e4d
+92566a71f5f86ff71bf15ec6ced0ccc6
+92567eec2bd4ca8a6439a39cf649cf9e
+9257b74c7e2b941644b72640c9cb415a
+92583c24682ce753ad6150937b0d225d
+9258fd7b8c429b0b95a9dafc1b5d427b
+925e25f2ad8a3f866fcbe2b9d5ec4972
+925f714b59f80360c2216e351bbe201c
+92603d3a00641f5a0cf13df1ea4cf131
+92628044714ee28a3e10a9eaec6c32a7
+92652b06e35aff944b16ba1491ef2841
+9265756b9834fd66baa76c5f52610795
+9269ed563638f136f6c06c6b726460a6
+926aee2d7cb5c6c59812523514ffac3b
+926bc9540f5de489278f2122b376842c
+926bf3b86859dc27d11b012ef9d798fd
+926d353cd90824a190da4d2629ce9f25
+926df9edd92cbfff4acef79ce71ee222
+926ec7c3df28d92daccf5fa47d72bcac
+926fd7fdef736921e92e12f1097bd575
+926fe900898390a3196030251a2b2bea
+9272275461c42428fb85d73833e58781
+9273492d76fe97774fb81bed9a8f0a96
+927354d63e839b46893ec8d4c74a6055
+927408ccada9cfb21488048a991adb97
+92757afb1e36090181350f8ab0bbfa1e
+92764213fb123a13c3a1d663ec8e94b5
+927646f37d12520a2740974ad5398667
+927851d763aac8ded7be47ab06024c1e
+9278c582f7e04d1053bc7e6e39ce96da
+927951e506c5c512d32025bcc4fd5b25
+9279771e81aa5e215f35c796075fe99a
+9279e229158046fd133b71bcdada3f4f
+927f6d2545cb0142eda845b9d4eae1cc
+928040daaa04d8777a57c5f81da3cbed
+92823117c2fef274a01b1fbab63e8d8b
+9282e71c03a4078e535d07460daf2007
+9283f06c7596a332cc416af5f35c1143
+928551262ce1101abe36c7918f2eea50
+9286a5479b522aea3dffb20f55302ed1
+9288d5a6a5b9bf3b69884977b341ca89
+928c1b8cc11cd92166b6eed678284e0b
+928ddd4e23c1772507b34ecc88408909
+92903777e4f272efb6a137c0ba370778
+92911ba3d57912394c5e8c2d0754fbf0
+9292f0bc6ab81efce8b3e8176f10368e
+92947fa4e9e659472208100887d86427
+92969c92ec38bdedd7dd31c85826d268
+92990a24ffae160918b1b42415f9f663
+92992ab3590370df1126196f40b05676
+9299d90069141028e70a0ecbb20f47ff
+929a8573f9f69c172fb3cbdb1931e5b6
+929eb260791837b6c64c12a7eed6abd1
+929efcb17b11cbd0599b347b5c8fd4a7
+92a052b67e5e0cd940829bd551b098f8
+92a856ba24eece8d37ff32eb62b31be0
+92a8eec8f556218d098928681be5fbd1
+92ae4cd673d20bf1437abc1071808998
+92b64b9960af990a09b348cf1890f9d5
+92b65a8d7c6b858f8451adecf86723eb
+92b70ad63af2151b6476b4379f9775df
+92bd5eba2fc0cc9731d8377204034d74
+92be3da40533399f8bf2cfe2264283fb
+92bed906e3519b0ab29e537c18592479
+92bee067a187e9003a169f0ca6768e89
+92c04400df28b5a089b66d04ef075a6e
+92c20a2dc5fa66339f34d28a84c80fab
+92c27fd1fe47952f6b93348c3c4f4b35
+92c366e7f64e2b95c62ccd135406b657
+92c36f053220afd1ca3341fa9d8cd582
+92c900a0d75694bb0067701422910871
+92c9414d4b5fbeb5da0caff842987fb2
+92ca5c3f1e95634ba0e7d057d8177a11
+92ca6f9e0d2b95804362335b06bc689a
+92cb1013af1af9987b2af263894fe151
+92cb23f58ce4b861aac0b77c7eded58c
+92cc1c96d19bacaac8754d7027190536
+92cc81ea83bb641c6039e44359bb46a8
+92ce22d54dacbfbf249df37d3ada007f
+92cfa35e952f489de0fcf0af70fa0697
+92cfe90a1a3f501028eabfdb05c693aa
+92d02e041b074582c7d3d4f775a12938
+92d19a957c24e402c3a0dfcd2b7cd89e
+92d33bf6d5b58d26adaa100f4a6fa0a1
+92d365eaa69060b201ef18a56e93fc03
+92d79edb91d8a1b0f30ab66100bf1353
+92d85c8419e344a168760550bb84ffdf
+92d8fa77d76a7bd49db8c25812c2e175
+92d9fce4b13ce861dd7ad4706ec6b878
+92da9ea07ce38596953056ab60b49c10
+92db1ce2b982fe1bd04894fa92923ae3
+92dd8f618b123141cf895563c561ed90
+92de4a97412ac414e414b1dfead5fbc2
+92dec3b3a721b5e9590bc94d6c0e2321
+92e0b55c049f423c27a2d2a6c3dc3006
+92e0db778c9ba7d5f7355e62949b0859
+92e15086fec3362b31efd50281658b87
+92e185243e96624fb2dafd12c5bfcd5b
+92e7da95a4edf692988d9ee014b61f6f
+92e8042a88983e796360c1d097196dd9
+92e8348bf1955ab2affbe4873cd19723
+92ece9065a90db1a6df21ef760edede8
+92eebc6039a816bed151e8ea1989ff43
+92ff89d9194ca424a6583e901c352e4b
+9300e667312d89a16e9bbfa8604049fe
+9302c3eef9c90b485c1147b1633a7fbe
+93031d6729641dbda4e23fc32a926d4f
+930592249c1f07a2d6175d3d3e944adc
+9306274f6788d7ab5460bec227d8c151
+9307770777b828e1d7818f1624af23ed
+9308309e95d9165facbe0cace8e24d08
+9308af89228fc764e2cc73bad41a7cc7
+9309ad205ef873c3b32f0808deb97412
+930b2cebf353d8a81a2caca07995ca8b
+930b56bd53fb00b34cac7e9aca3d6e6d
+930bf54945dead0562b8e72f37b9e54a
+930e1a7bdb1b4f181311db2ffea21ae3
+93119f4bc6d4d36f5c55d438ac5be1e4
+9311bee92a0f9fb76b678fb015ec2a3e
+931240d009b84da67fa1ee7e551dc271
+93129557e4cbcf6c5761d9a77981a2be
+9314b42fd82790fe406fb302f8a1ddc2
+93154b86229bae0375691d35ffaeb987
+9315f0648f29ddbaba4f62aa793448b9
+9319b418a1a297afdeae92860b37c2b7
+931ba5a196963513516e390ddff68166
+931c0a852a0d953a89fa76cb69a9e65f
+931c9a60ec4ab3d6fa31365d5a035678
+93241cbb9a583e8e8c8de670e0c257ea
+93266bd72751b4f542217c8453f00f5a
+932a14ce5e2619f07bfa5a48b0bcb6c0
+932cf249f0b7fc30b4e6e293f3ad4331
+932facc0273581febe60292ea07e6cba
+9330b7440a8a754533a8c94e5462c52c
+9334f8031d855343b2fec476c0ed7c45
+93376becfef4824622e122eaf57aa3c1
+933906559f6c2d466ba71f53eac099a7
+933b1aecf799488b3e77e0efd2966bb7
+933d8369d75c3f461da748b926dcba98
+93416736c0a543966f4f3cc2d792601c
+93431223cd7fbe464448e274e38f1524
+9344bc075e077a39b9d7d2ad5b1375bc
+9345ea7ed31bb22b264ecae9a0ba5c0d
+934776c941c5dbe294eb21e5746951e1
+9347c668dfedb81372ae36502a51d284
+934b09d105b30b78c5698b69fc68a121
+934baa26cb6a7bf1201973f0bbbbbe78
+935287f24bea1646f304bd50166c9e64
+93571f86d3eb0a5d1ec22fb525c645d7
+9357d64a05a00922207f9066dff15751
+9359d78ff85eb442d5e3fb0e2b607d82
+935db2eb3b1d51a040fadcc788702fa2
+935e87804c47c36de757d9fcf6d0f455
+9360e210e7f6d8c4ffc3e4e8008f3dbf
+9360f5a2f60feeb4edef047a8753c599
+9361567ba48d4da25caf0859efddf48d
+9363f3a7a91d8fd21918125343afc332
+936687e77d182ed8dae41ccee77a1d4f
+9366bfa8ace13cb629f135556b7205d8
+93692e47eb197a146dbecc0462a0383f
+936e013b89a70078a80ddafbff8ec029
+936e504de361c71c87992006f84ca4a3
+936f1baa4e4fc9bca398fc6fc5b91490
+936f31628f48fe9eb7e3d41e62a05709
+936fcc6f0fd3332eba6eda3ef46c784e
+93702ebce5fc8cea9c7e7916db0f449b
+937130ecfe5e03824f1e674bf2b030d1
+9371974c333accb09fa466017847e201
+937251405de54b8e183f4c6377f85666
+93727b5271da8e236eb12e947faa8298
+937348d9a2b8b56828c0178d1aa5aa53
+937357301142d440caca96bb9d700c3a
+93746e0b10b16b309daa22152feb6cf3
+937534a2d7b44abfddbffb05b54fe281
+9377317c042c057c2ca0c6003890fbf2
+9377b4da61033a14ef84576279bb783f
+9377c2f69e9b6f793e03499392301fa4
+93791e6e77548eb4afb1a8299c919ed6
+9379de3d96b7b50d3fc402e32d8de06e
+937bd72f99ecf41bd8725369db7ea36b
+937f6fbeb865010035d5241410bade9c
+93861bd73a7226b38e791be091cfd651
+9386f630f91427603614b2c50218fed4
+9387961772c485cd4869b66ad483d73d
+93890492a8c1433725052d086a2f8db8
+93893788bb959d3a959f60440a8b5930
+938b510137a7afc178af2b2be27c1ca9
+938c13d476192377316026c9451ed77d
+938f6fac0e28907620e588e59639dbf1
+9390e0932c478f9aee409fdd48b91159
+9393190a4958e3b9ff262f414ef670b7
+93964a19e92db4a38676766fa19c2ca2
+93996b2e604d10473164f6d41bf5ad69
+939a31ee128529163c2e1b3ffb7a1ba8
+939b484223fd16d444a3279b41292e90
+939b8e5793f9c77be6685096e8c93002
+939c550b4ce776fb50e4a5ca69c6cb97
+939ed87d38a3762a98f79b93e5bc84f3
+939f2e9d93cf60c9055e7d295baaed06
+93a0ae7758fdd988027c2bf72b9ae594
+93a0c9093f097fc53c4179dd01cde90a
+93a8860bad9f442ebe8f32db068db6f1
+93aabb6404ed6184549c16f1a899c736
+93aaef7f5181286d8564d38d8a3c7b18
+93ab1561b999f2a05a92d93484a2ee75
+93abf25378380a3f050f43b4a4676335
+93af1ea89ba5530ffe57c399a54fb811
+93b0f66d51601ff783dd2639b9471e39
+93b25ea241417e6b44aa21ea4ef79d2a
+93b266a74e0f7c876d7a674236721550
+93b2bcd61c9a9dad1aad0b358045c2b5
+93b2e34d506a71678ce0e14d111c1080
+93b587b6cf45d14fc08c54556d60989d
+93b76dfbdf8886c1dab7d971da88e71f
+93b811b672555aecd352c022b51fe818
+93b9b9c660169523cf5532267dabfc94
+93bd9d6ed3eb8ec532c03a30df3a5ded
+93bdb71547fd7f1d1eb8efa50deb28f5
+93be78ede6240b20d81b76148d12e1a5
+93c2a652c77a2068666fc17a6c8c60f1
+93c47adef2a206c46114d113259e0e7c
+93c4e1b609ff82b3e24a19d333f2d078
+93c6a43bf364d236e9c5c6064db21b2c
+93cd15ea1cdbcd1e19137a6c14926368
+93cdc1546089a7147ee5455c3ac48982
+93cf0510019b59743c79ca600c06caea
+93d12dc41f485434426942eec7699c8a
+93d1fba7ac56123df83caeffe5aa3752
+93d239580f323b85cb237c3067712f07
+93d24049cde6d1c822e6ea823ecc7722
+93d3e5942f5a282a5fabe699ce54bb23
+93d5c2f73f3f09d2386966c547d9b702
+93d6a1625f29bb6617853c482fd6e3fc
+93d83aace85e574c50acd45f4b8d53bb
+93db0d78f18d2ad862a8b3cc21c47e4a
+93db12f9fdcbd825788783457059529e
+93dd096251b2159af04dcfa39cd893f5
+93df4c0ff19d24f641053df578c5e553
+93df8e02f13353740eea882e0cfcfd84
+93e1f86f011cbc7d9d197b37a428e326
+93e216d9c5b5aba1ae1fbefc98e77227
+93e443c47a5ac9fdb8923ff179343b29
+93e48654708960e25631eb3fed231d04
+93e4a46fd1a0ec52734941a304c69cbc
+93e56d5d36c4163e6481363a0d933bde
+93e5ac5b67e9dcd4da01cd7598d88bfd
+93e63dc831b6a0e9483d24efdedc39fa
+93e829780e9d81c25b498fd2f7a0884b
+93e9b75ad50462a4dce621271b03e5d6
+93ea077bfc7d196c20e5dc16d14411d5
+93ebdfffc3a8bb0d82b11b912dedb8d8
+93ebf628c32427887a03faab1e501619
+93eceb84845ba9a24b3e998775351435
+93eed2619e106a76ac20e4dc71c62f55
+93f1d6f9bee5e8462fafd7b6a29ee149
+93f266cc35d5e73fe160c94318316396
+93f37167eefb615c9774a3d2e68e1e6b
+93f4517704a286507646bb6dd5043b2b
+93f475927714445f199a200e34458c3f
+93f4ccf92f05aa86365bbf33e4c6740b
+93f59f428114c83012185a1eee9be70a
+93f68a1fca04fb5294246242648dbfd1
+93f722ba149f123f93fa7b632b04a20e
+93fa669f70776a4d545103a16df1f325
+93fb2ccf8d89ded2ecbe3eca2a4eb128
+93fb852a3ec8ecc1ebd5ea0c7692b225
+9400618bc3df790bdb4fa11c6e570634
+94014a826be5662f5bd094fddab035e1
+940163698f6bbcbb74a44fa502d373e1
+94017e5b0fbcbe5cc64fd669a1ed2b27
+9402202925152f29a8dfc581d67c3745
+94024c7a2ea4481af810995b0bde7e9e
+940378b12c5e8c2086ca87729594241a
+9403f378ec5aea1cbf44b4e4bbad8c4a
+9404a66fc9c6c92e417e19f438d5e6ba
+9405bf318cef1ec23c2756a733c6e4bc
+9405df91fd384649064659aa38d1cd95
+94075987f8db123edc17bdba27904805
+94079b727539831f5616434b751fc994
+9407e2a98e7a9f498cd18337d0a431c6
+940a73d02fbde5e953f0a37e8e342c2d
+940adadcfa39021af6862d9ed052a5ce
+940adeb70caebcbe5c73bd0450ca86a1
+940b4a63ac3bffcf5b1c35b6092813d2
+940b9855a8f371ab5893d9a7b25c29dd
+940bee17451c0cbb87153525a6af49b1
+940d3cb20fb5292aa6173120d2ce0419
+940ecfefc39cb15491c5b563dbf5d6d9
+94134f907f2f5b635c3d227f1310b2de
+94164f0a864e4e12316a7cdc597bce98
+941791562f4646e29adc4060c364833b
+941dffad0588c4b292fe17b3c3fb7893
+941f56e724c546a3fa9e835213a60333
+941faa40e238fd3c65f9da050cab21a3
+94264cfb3987affaedb9ef8c8e244314
+94280655a84550a56940e51becdc2448
+9429209837ba8febe942828a72dc863c
+942ab2b6e6016ecc1ae90215304d09a2
+942d688ab776281cbe1d9ee4ff77699f
+942df4b8ae38b64e0afd84101a3fe249
+942e0057fc84d2ce34873407596fcc24
+942e2cc312a779d717f38e33bffba341
+942e459ae28f91e703979d1e11e1022c
+942ea5ada569a4e7e7c5ca8742cf4fc0
+942ff960cd5950d8a297ac8abe3e9811
+94313e083cef8a45eb1570fe01f4197d
+94337b79d0f0076b6119da3b1826f7e1
+9434e6f004570c73c1bd34e89d71e6d5
+9436e3b0186dfcf94263cefc8bfd8cf3
+9437d0b3eec4d150d987c8810c37b079
+943923f6fdc760a08c8987a528652e14
+94393b12529aa3921d8d466c2ea8b062
+943a056c2de7efc0b4d10f8e78c6f36c
+943a45d8735fdde1fe1cd2448df69c29
+943ac0b0ad0a9b071308b68c527a19c8
+943c2de945d5fda17462316d3e1de58d
+943d82c81185239d756d98bc64d33ab0
+943dde72b5afbebef1494c23fcb54a01
+943e5166ef7ab0203cc0a1f264cde748
+944060319841cdc449f93e376a160ac3
+9440cdf06f5b8827287a35d8cbde251e
+9442a8bb48d6b66cee00bf7a5b1a1599
+944314c1557cca545fabc107c62f5793
+9443487f24f43a532685f480d9f5924b
+9444c5223370389ad29e2e8e360aa482
+94459abeed23f087cbe6d5fa01b513d7
+94463726f19a3fb0840067e3de4a3e43
+9447326f5314f1f106118f5ef3faca67
+94496df65add4e7c8f3aafa084a894fa
+944c0cead9fe446ff7b68ee13997dd87
+944c22e0fd714e33419216ab66f2b5e4
+944f9b0a14f27e361aa1189467400d4f
+944fe398346134774ae7095d8237e3a6
+945252227096842913457fbca2cb14cc
+94529d6d18063aa0802060f520ef9cef
+945357859c1f63f9500c9647317182b9
+9455f84b53301234711c12a090a9685e
+94563fa32bbf3e04677c78f71682f8d7
+945676fa148668daf4d7676a4c0b7eea
+94575e7c4065ab8ee73e22380839092e
+9459b357d21c58551360223dba13f0f4
+945a1b974238b4b2710c53344e80a399
+945b2b00b88148ea9320f1aa0c6599fa
+945b73d98f4a45ae84e8c421b94c8d99
+945c5cc998f86e9ad180013e397bf6fe
+945c7cf7ed6b9972f011634d5b05da65
+945cc31ef01dee5c9698ca1b5035fd78
+945dd6e1133f0fc8732a4f1d7f685c9b
+946105a2b83870897915c7e5bb2420c7
+9462d9168b7f46a672504d1173b1a773
+9467dba9b01587d9cb4b0f1dfc5f0c8d
+94680ee1adec2063dedda657d098db94
+946901e3917e006d78ae8632468f9da0
+946a494b45acf0a8c1e840618fea809e
+946ad1e4c88b3204ee2f31cddd794760
+946c54f7cef97b0f61600571e5c2383f
+946f216c124fc5e8b93aefc3fc1fa3d6
+947083bf3633243b5b47c22ae7627ae8
+94746e5097cbbe340de7d48e146fcb7b
+94773eb1ff628584ddc241aa195106ce
+947775f8c42c7cb31c79a34805d92aba
+9477bdc5e8f6ac36adba056e1ae2affd
+9479c1a979f15e12ee81049acad44693
+9479f97165cf87eee2a6ec50a24a0200
+947ff2ab617be63c08f00c77eef488a6
+9484dd4bff94d0698ae4e8c7a793a50d
+9486b9b5632d1a2105a281c2d4f8cf9c
+9487262b21a05dd23affc67557563e15
+9487a3fd5cfb158db3d130777031d7a2
+9488e2131b7df571a8c95a6b749700f5
+948b71a10028f539e29d60dd45d37d43
+948d7cf5fbff334f30ce6fae19bc9dd2
+948db3d5ddadae4fdad99b19e83ea9c1
+948de0699e52a78f535cf24f0e3fca28
+948fce0e25735cac0eb2874fee85a77a
+948fd7294f9e47ef6f36cbdb2cbfa04c
+94911a33fce6a0c208901f96c1714181
+9494b3efeffb0e285e84d7b68d2f7f03
+94953ab4bac16610434a8f6e78305984
+9495a944f7cce258c09b1ceba9d980aa
+9495ea31975a5a8f03ce9cae1866b8a5
+9496c4bbe2b5268480acdff0bb4dfecb
+9499224c964f30bfb40ce8aa05d7127b
+9499d72847fdd4a8a96f9416ba91eab1
+949da6c4c6c896c3a7692c2afed505f4
+949e1cab9625367b8c1a30b5995defbc
+949e5ba84dc8acf97ee6271b630ca5d7
+949e63af04b85cf2f1e58bed063d6264
+94a41b3d7a328414b886ba924dda2037
+94a5822e7b243198fd8d08f12f3c4035
+94aa85b75d1020dea3a48fe51148d06f
+94ab78f0626943fb47b0701a1282f29f
+94ac4f545763b88879c0cc86df974403
+94ad159ca30180d293d102c0beef54b8
+94af0244b3a3a087ca7c26488ba65d89
+94b0f7cbea9534db2b8587cd9343a191
+94b15505a86c166068520abfa2d906c5
+94b264ffe8a9048706b167217228f190
+94b2a347e17a744824fa165f60d19ba0
+94b442daad85ca878832332d6a604e52
+94b4b7a2f25852649b73e34322259679
+94b52a3ee9b9cd74943a4956d3826d94
+94b6ead678277ed64e6bb3f67cbba2ab
+94be132f4484f24dbef167a3a206ef0e
+94be17bee26b15925253cc8e287f4a59
+94bea96f3fd5235307b6cb9c8e57552b
+94c077a5f8895a1b578b29813b50226b
+94c100c6b5866e42de374a3285491d3b
+94c1f8b2b1dab2cbb6aed5f10c9b8f3c
+94c24fa17e31040cfd7f7acd42d35f2e
+94c7603257d0c004c559f1dd5f336ef8
+94c7ad7262786fa4904a8b068d556a68
+94c80fb39b467469a69a4253dfc85cba
+94ca72d28a2c00920380623785c53578
+94ca951affd836cc9465d65c6bfda399
+94cc0428d197c6a67b73fa3d1ce509dc
+94cce0ff05498be0d43c30103fc05801
+94ccec90a26ccfc86ace6fed5dd45e3e
+94d05d249541dd52ed3b6b1eda94dbe5
+94d1d5975643e23b106b2914b145b5c5
+94d2db0bb7cca1611645d2e897351b42
+94d4441fd25a121df00be95260bf3c37
+94d45147b6c2e18842a2410af79adec1
+94d48fff0ca9abea6ea5305a6b98e71b
+94d4af81f4ce3d05afc44f714c7bd5a3
+94d505de8bd81108ec78d5f1776dac6f
+94d643d0c82daa4700963b6a1054c307
+94d6b63d66d5426e8a53807975f5dfeb
+94d8806c3aa57ed0bbc3a679558b95f4
+94d8c5a640f61bf427c756f70bf3dc3f
+94d95577381bf2d6890b28a946b3cf7c
+94daf44ffbb463be0cd16e683a0a1da5
+94dbfcbbc0459e36b807ce4e54d6a0fc
+94dcc1a627a5a8415adc2c4f770b8728
+94dce6fe5381cce10eb3800f21943e49
+94dddd80a3ea688cb44d7dcc42c40dde
+94de6dd8c01c3e04f4bad25a160aaa48
+94df8d9e8d5c48662c6fccf72c2db5ce
+94e22cd21ee6e3d00de342b9fe3d3664
+94e257eba36b28cbf94278a0a70c6abc
+94e273808b81c8613192c552bfa50b93
+94e34579459b8bb6fdd5249a5c46410f
+94e4afcd1d258be25bd6ee328eb32c2d
+94e87e5791c676e09317441829ea649f
+94ea25775c150372ffeeee8e123f3514
+94eb5b65394a42d5748b6dc4b6f342d4
+94ebd40564394a3e360030a94513eed9
+94ec418e0a5755d812a68a7b64ce6ae2
+94ef84b790633ebfb0b06a7c5ef041b5
+94f1ec892671db18137d6b88ad065ee8
+94f27b436874dc73c5c71f1b8e2c6062
+94f2a054875f1ad3848ec79093117241
+94f454f154c733d33bb3c91ae4d7b925
+94f56a15311c43d3bb2a739bf1c23858
+94f9546f10fcc237c63e148e2acf10f1
+94f958ea32b643757e13d64f0ec91c55
+94fbff43b3223c2f3d73190c36046017
+94fe1925394563f6bdc93dca7d1abba4
+94fe53bf2313ad8130d05e1a727a7ee6
+94feaae334a11dcd98095f1866a3d1fd
+94ff062d68daa28832d806520bb1f44d
+950398e16ed9bf8dcf8615a9c8ba9676
+9503f6dadba2b360d8f8d57d4c5caad8
+95048037ed45508470ecf6eab23c5f6b
+9507dc0db915da1fd923d5af310e87fd
+950b009dd2f9639f832b9fc18e85809a
+950e52a5cb3812ffbc5a0ec7b355d52d
+95143b69290e0e1f4a30adb1f3f490cd
+951472c794d163389410fad3bc0dc89d
+95149c592de6134370b7f3eef52996f9
+951706454f0e65d189865e67c5a77b06
+951a63eb5a2003768959024df4977b49
+951b2962dc4d8fe0f7cf7de103252ded
+951d00ae1d1e0f9796962df1c2cb6dce
+951dc0527150ec581eece1f9aad071ef
+951ecaf086b1c0f2acc34641035af2f8
+95206289fa75b316bc8bf4c84a380a33
+9524b7040c121289f60b645fe5287dfa
+9528f1b8a25870e83de997ab81ae63d3
+9529b3962128a44d9cff968a61f89e9b
+952a18b5d74c338e3702485155775d9f
+952ba147a832ee0bd96a92df450f49e4
+952fdac982068909c0863eaae5dc3cbc
+9530a8d08e821fd17aacbaaf90b452dc
+95352904287aa3de187f22a8f9ded3f8
+95356c18f423c973b923d6811a60d9d1
+9536db8e9964e1c4b876f593b1e3e7c2
+9536e36db830f81e1ea782693685c00f
+9537eec49f9db9908f2352a0c6311982
+95383baf3e106692e3f64af6d3d2534b
+953b831b06422abe96859fbf55c6c3a1
+953bdfedb3b7460f944e04508c07b2c4
+953f7a1f4b1dd26a4d9b62beb00ccee7
+954184e454a2a6f00af4942be79f1e37
+9542af53dc48782ac811e3662f1acb77
+9546a95151f296a317451119c57a180c
+9547625050d10b4a115a0652224edc06
+9547b712351a4f7b3434e3d10f85478b
+95497f4d61318abe139c920931c54b1f
+954c1a815651a699d384267b7edc4464
+954ce78b1a311abfcf5cdc7354d18e43
+95517bac9905743f6562841a7cbe610f
+9552070974f24d8c56b93176fac754e9
+95526ca1f38bd70397d7b87d1d434374
+95543791a144bd81378cb888735b976f
+955483f6fe27857a90579455bdbfad53
+95568925523f931b3c01e3f2b6f658a8
+95579978b2e4e8b9323a6f1d0a043ae7
+9557a40d962f06ddbfccb4e716670534
+9559ebc509e4c0adc76a87695d753e7f
+955c5fbafa108d2f55a5d28e75a3621b
+955d4fdffee53e7481f22234bbcf612b
+955e447882e800e34a1fe42d9fa05669
+955ee7b607d73a439f85b2e8570b941a
+955ffa47b2faad849584b53cd20eabdc
+95618abee5ed2560a176b86c831e288e
+9561efac43d7b9b4aee96da6ae7677a9
+956204b9d79593ac96a6ea0537d66b43
+956288a4c054efe475c8c01e95c1f1e9
+956322ac35244d6e90c65aed122a1246
+95635c188435fd0efb32720499a75432
+9563e3b60bc61825a1294fb3e4cac518
+9564749048988608b7195518e8361581
+956530908dc64e040710c4b15ab479d2
+9568a882d43cbf6087a821e97e512f0a
+9568f556a1a5cd388c019a37891c6215
+9569185cf10112b8533bc06e6ba4ba12
+956aa34725afd967e3cc491401800391
+956b557444177134b4a9a9fe735926e8
+956ba01362a80c8e8c29d7ba7a7942f7
+956c205bd60918942974ce977b628bea
+956c3e22228317cf0b006fc5ee228931
+956cc29895abe7b4cbd652e4ef9dee2a
+95709416186b211e59643efe69678a55
+95726306daad5705522ff2da89a2d5d6
+9572d6d669df79bf32aff0af4bca8f6d
+9572deb2928b3a3983cbce513d3f3dcd
+9575002752a36ed63d12ca2b605cd369
+957672ebbb97bf6b6a83b2a016cf99b9
+9576b02a2ab6236f73fcbbc757499389
+9576d41cf1fb5d1623d4b039f0e7fd75
+9577167b92a654c29d2762d1fab39c60
+957749172395669b894339102c3d8a39
+95787222b92efa7aa9ef22231cc9c390
+9579239de038fbdc10e77ce2950b7b3b
+957b718e6511d8d70334698462d94552
+957c4a5ca50886aab9f63fd2a89d7a78
+957da99f2d7321048c1aa7e47a7742e1
+957f4d2e2ea05f6fd6752087e38d6e63
+957fb41fd83989fc566367acb3c6aff1
+957fd79d2def88179a72b2f01b849c54
+9580e1cc863d9875f35ebe80f3c62037
+9582298c1acd5dd713ce6521de38c0cb
+9584d88b6a7351c209474463b22c67fd
+9584e768dadda20e91be6e1e458a781e
+9586fdf7b9f318d8519cac63545659b2
+95931f7707ba535ee7ad380c74913fb2
+9594211cda6e060144a3c50f55222ae3
+959431c3e033bca646b600f970ea9d1f
+9595b6faf82f5eb80d5d03af9c6a8af7
+95975107efddc11ec4da9acc6aa33a38
+9597568bdf6bea083b3ee284439fe729
+959a1acbde11ed25a3b5009e3c4c2e43
+959cce0cd6cc8dbdcdfa6d0841302b45
+959cf332319839a01fc46d347c7820ad
+959deb22525f32f72882ef46d48f1364
+959e25c44ce6a81b4721f7233318499e
+95a04d924e9e40525475d3a55c758982
+95a05a1dc9184e9422b7d799a4a0b402
+95a0a5dd201c88e7cea3612ce0269231
+95a14fbe774ed423e7ced17638412500
+95a6c47275dc24d28e8c5a3af716d0fd
+95a8c0afe13c4a5ff30cd9392eabe391
+95a8c4e1ae8115cfd5498c24661ea57a
+95acb0b826ff229997f5dd5897189853
+95ae059c4b561fa0c6516520820aa4c7
+95af948fa45832d74ff6824de69b4135
+95b1d05ae0b3c1f487a1bf1b121df42c
+95b3a2a03842ca3ef59f7e601c2213c6
+95b3e927e8dbf51cad1a046227b2aab6
+95b43153a4cef44b19be47efb7da90b1
+95b5827db79cb9404b469f59e0ea049b
+95b685efa645063bb6279cd5c116a99f
+95b69e335e66c424f2c027e31f31b886
+95b89a223a3aa9f85a28886bb257593e
+95b8f1409bca511c85df2e1955401c0c
+95be71f46a75be56e26f217e47af0362
+95be85b4bf59b5d2be452e9a0e45ce33
+95bf11e237d0f134dec2edfb6315317a
+95bf361fa193e5ae1204491f0a8416fb
+95bf4621fd05089c985f25a839cc2d4f
+95c01fa830be857714193e4423de3abd
+95c251b92a448929550c9ce60ffd10ca
+95c369bf2c4ff8b82034a9e4b891ea1c
+95c43ad21780e807708797819403508b
+95c5064a43c88a2c76c19cfd9b52578b
+95c6fd40fa965e2ac702822181b8f736
+95c7e508b4b8c473aed27a61a8b46ee1
+95c9bb6e6603d6abd974b6d02142bb7d
+95c9e9a582fedbcc84c66d7a5a31c493
+95cad17384e428550b4dc09dca10df1a
+95cc7c545efc1d963bede2ac34be70e9
+95cc8d0a303a982988a677b6fae3445b
+95cd977087996a6cb038e1dc70c904eb
+95ceba7caffca3c435c02e99e690b3dd
+95d134677d40874142d2d4e8f9607933
+95d2a6eed9de3c2b3c21818873b336cb
+95d79ce9d11485a19558dbaddc0b1b98
+95d92542d8466c01f1d429d8af2658cb
+95d9b3a85c62990da03e29da0f49cef3
+95dc9345dde8c12172733c284fcfaffa
+95dd26062a8bc431e4ca671a538303d4
+95df05ee579332e8c177fa56cb37d7fa
+95e19dcae54556dc035d04a144e9e407
+95e274201101f216e8bd92e62c77f6c1
+95e349af5f1d42016da0eaabc869f2a1
+95e93253a619126cced4cbab5a69e33f
+95e98b4525a64f899f666f36746ad4e0
+95e9efcba1cf43a5a8e904189f1ca84e
+95eb06bc411c527628cef89509d068d7
+95ed931be3c18a71c57bcfd8e7c4e11b
+95ef06ebb51c43d4ce11f2d87fdc360a
+95f249d8bb9f878eed833fa75bfe30d4
+95f366a564afc3ebfaa9e709eb9dd941
+95f5b72a4331a3051fac26c90d96f320
+95f6217eb8cf6112c4e8fb86701fed75
+95f9dfd6c3e934eb8074b618c4282e96
+95f9eeb1d2a52337167593a25983bb15
+95fc57cd85c9952a48a4d586c2322dbc
+95fc5ddd566c1a10dd245e673eb923fc
+95fc5df0db86ca8b364e63e743da50cf
+95ff6ca0dfed9b7fdce343f18a7c7c51
+960020bc7d4db24bc17f88f279a6a690
+96004ca362b184d78b8b169562e7b0f0
+9605631eab5b1786e40bd763db860efa
+9605d0a275cec44d2c15a7c5ef795e1c
+96081fc904881e9197c5fbefbed14d6b
+960b423bc75c01b30d877e98afa68486
+960cfcf08e3f707e06dc7c728dc44ace
+960d39067781bda30261936e7d387f64
+96114a6cc60f368aa63d79b41e6cb6b0
+961177f98021cd33621ae71b9c3349af
+961260f8e1141b22680eb8c9cdf13909
+9612a55bb3d270edb3ff48779f1b8dbe
+9615012ca94a2a7faf5c577164e6ac3b
+9615303944217bdff0df04413d485d8d
+961550afd0e4be07c7939dc4851d037d
+961b60acd2709d82ab7d52915ba23659
+961b8ec30c321381f0435487a2f522d2
+961ceeb9171b20a71ae613baa55f7ba7
+961edaae432aee6cf9e3c4a0f80304f6
+962030348b3ae25906196356130de69a
+9621b6b20cacb1d476d51e0796a2b049
+9623f86e43464df3831cc8ef59c6a403
+96250b25580981468376f5c7fe043dc1
+962b578e4f5ada7a539588261421a5c3
+962bf63c5e2eec7a288a7dcff5867d56
+962edd266a94eb557041fbf8c5d30c0d
+9631f57788b210d50bd95278112e8fe6
+9631f6852b33e78439807dd3eabc0461
+963359d4ba6890bc075dd8b5709dbe42
+96345486562a23d236dde8fc51464339
+96358acec914b44de042abefd6007e59
+9637816570776f912b0155692eef9905
+9637a3733024406ff619a46651d1c385
+963866bc2d0dfba40d0c5f8de251307b
+96399e179c628c4a0b871707ad42b550
+9639a505d1fa68796faa4201d391155c
+9639cadc98735d4484ebc753e1c70052
+963a32fbb93d2ce5da6eeaf87f17c881
+963d8925c4bba55b7db9beb8af066d06
+963feda4a3e5eebbb82c262e3f0a1b59
+9640daa6500892fbd666dbb246317b39
+9640fbb83224700594e24b4bb8327adc
+9641600e8db33145f4734df4f73e7f76
+96430376199f3babf09bf8771bd66e51
+964329b46929f3630fa52d2a17faeabc
+9648373cd903c0b733d2839de485964d
+964e1fe20a067d5a7ba5dd50ebf6da2c
+964ef34ef3ca4085dd96602ee7b67b98
+9655dc19b609bcf0f518383135c67ece
+965bae01c0d0faba1e876b9cb2c6e629
+965c172188615b02fb42d6f355b761ee
+965c6dcc2af46fc35ebd07ecf5b0b033
+965c9e390f0f05648efb5cb1d0549b1e
+965d50a34ec78c688c1cef071d62406c
+965db93df2f1a54f9692fe1fb16ac075
+965e22b99ee6610e70d17fbd3192be9d
+965e96619d2be826cabca87e307a53f5
+96603c780ac50a9646c1a1695e9e57ce
+966092f432301aa489de4312113ecfb6
+9664aadeca2ca62e8f5833fded6b42b8
+9668abae0d9ea7282c7c41cae35cf973
+966903b92dec62c16fd3712343150853
+966b9cc6164d0bfcf1649f977f00d69e
+966bc855fb3c62d10dfae9134be8cf90
+966c40df94fda58631afabf629c31ca1
+966c9e975aa0f34b99e649f0804181e3
+966f16a8f7326c44abe5984e2a44176c
+96707493f2379580a8dce9b55fa92ab2
+9671f73989e8365baab4d2e2dabea24d
+96721de9a2ec101cbf50a79c1ef1dfc8
+967226f12c9bd1949441ad2b837051ab
+96729308f681640ae95a1403d69e0732
+9673aa33d6d2ca4e67ad77304ceeda4f
+9675e053e47d92683aadda86d64dcbb1
+967758403d06ab582e3174920a9ca912
+967780318d93ad4189f371646123f773
+9677b6ad6164e0a3a6dcad90ab9c7c94
+967832406b104cea8fdda445950980a0
+9678dc590c691bc5317f560a6d9d3687
+9678f610950c282722077a70094a7d7d
+967b01a89ccaf0e7170c35d24980e158
+967d91865819d7c3b09c26bc144eb484
+967e02266816e76eaec83d6b5ec9822e
+967e69b63c886d7634754cef39911513
+967f9bba25b593cc14faef9ec3ee083a
+96801b71580f7fc3bb3c1b1fced8d71f
+96824a20e5fe8727d18b3df47fcf6e6e
+96840f642e3176ad1927296210c7e9cc
+9686e40302a3dda7ae62716dd382077c
+9687d8567e6c5e90f2395f001f9378ba
+968923ac315a91ff8bef4af03e87b2ba
+968a3648a194558ab7eec56529eea978
+968a8b55576a711a4c4eeb9216a6ce15
+968b3f04bb9658d8e2ab1455d5440aa3
+968bcb427771195307da425582bfad0f
+968d6b59da995cf49969c0c2d50dd2d5
+968e9f366c2d643921af2975f251aa2d
+968ec3fbfcea9a7a7458915f07f05009
+968ed51d3bd4f1de205d3a46f47a7abe
+96909ab1a89609af5091fbc531220b38
+9690a8090d6c1475f455114f5cc09763
+969234a5f1a039265fbffbcf9bf8f235
+9692fd9ee7b162e4b398295b23ffe4c7
+96931d4382f413aff121babc8a704a83
+96933e2083f795d973fbbc521445b003
+9693c24b563608299c8fcc738f6e2f7a
+96947baffc7b44c437dc8ad1b204f239
+9695156422b65190455e68e4b4e0feb8
+9695d413cf8258255d6467a42e79afb0
+969614fac19521f70d44fecd4422f513
+9697c00ab179f0d9e343b92fe93d11a1
+969aaa64e21216e17c966fec36aab44e
+969ec07f32031e4e69d2152c369eed03
+969f7fbe03c64ffa81b1bf681c887ed8
+969f92e355057e9f1fb366ed177bcbce
+969ff44228aca4326420b47ed1cd7b1b
+96a03a6fe10840ecc6765ab3f62bb825
+96a47ca681fe7f7748dfde0468496638
+96a5bcf540e903c0a1c1bd594e680c87
+96ab52aeae0cb530858a185c33c894fc
+96ac5c125a0fcfba26bea6f63d245832
+96ad4c0f8e15adfc5615c9ac9fa418f1
+96b166310f26ad17a6aa7c106711feb1
+96b42fafaf0d64361b398106466fe72b
+96b438bc0cf9c192b59da764d47658e9
+96b616dbea1c1cc776de7a979fef42a2
+96b6a7df6adf1770489a8b57bf753259
+96b9c36ff6b2586721f77f985adc668c
+96ba27903861b1d1da5333400a52e98b
+96ba9525cce04bbb55b0d216ac78ff9d
+96bacebfe68f215c6ef18eb5d93953ea
+96bc7f1618f99e33f564dad29e2059c6
+96c1fdbbaddabcfcd7164faa9e096317
+96c3fc5507bee9c4fc32823a8bb70a3d
+96c5aca4068eb1ee05b0972f2476077d
+96c645bbdaa47c87d71f9784116ec9da
+96ca2b6d86fdc7753a7698335f9235f6
+96cb23fad4377eb141fd445036b1cd0b
+96ce3c296e6562e85abc2f018dba43b3
+96cfd85329b61641f7a4dee16f607157
+96d2317d0338095686eed4f64cf735d4
+96d3505cd26c19a06d9f6f824e9558d1
+96d414451e2fb015fa71294d8778aeda
+96d4ab835c5008dfd25d81ca2e6a02d2
+96d544812be9c1f263f6e9380400f407
+96d58065ecd127881027ec5908057fee
+96d877b3d121a8cf994b16ac990757f4
+96d93bd9cbd444bf29847621aeba1fcf
+96d99ab9da6523be7c95a53b4f08a0ab
+96da0dfcf8a263fb94e0131a8278e16e
+96da4b6e258d63ce003310472ab60fcf
+96db766a838e8f6278c55dadc041ef97
+96dbef5564a54ef5991a5aa38025a0dd
+96dd160a7a868ddef83ac0663ee434c8
+96e1e34e25dc96bc1b208d803b1a2eba
+96e38c398b2a409995fee9c6c2d61c59
+96e6a0bda5f3995b6f6314c446dfaa89
+96e900c5dd0de55d2bfc0b4c2522fa87
+96e9a3ba79c5d299629fd3464583e469
+96ea784158e4b550e51df6cb67b4d122
+96f1e6764f58deac3d59a6ad68a75592
+96f584471dc2afc6c224096004d450a3
+96fb57e3d2cd667f83171b3609458912
+97000eb39afcad4dae654bd4fd5fc5db
+9703bec9b58323d86e37e03c232f5e93
+9706720fcb8f2e71013e6ce329a621d9
+97075cea2c6d66cf5c02fc7599e8c04e
+9707e515f1512edd1b26ed4f78347988
+9709d09efd9edc1dd59c96d34aae9044
+970b34c6924b9fa1bc6ee146572e5cba
+970b912f4d1a615915070be98036d230
+970bcb8376045a34b7eb1807c0b22083
+970fcfb4389c6e4c690a8c6beaea65ba
+971002557b2e18bd5c676dc01f8be2c7
+971041d9543367a1566950cd77d751e4
+9710d47696ea52ef14ada6dea9900c9a
+971136f7aa547d98287386474d6047cf
+9712a3f2cb7b92445be80f20bba10d9f
+97155ef4ccf2bb456fb4fb1628d85078
+9715be8b968a75e59727cbdc3ea012db
+9715f24e229a7e4a1534c5c622ab1728
+971632af16ce958ae5c40226ce32e13d
+9719b6ce55b96a171d5f404c685bb70b
+971a23b5412ae6924134eb571fd36cc1
+971a32ed02421832921556610bdf0d3d
+971a392b8795692089b350166c9ea737
+971ae29d26ab6e6578f3358fdd99710b
+971b555cd07c78a9481be72fdc043ac4
+971cd2caff894d86e93a1c2a986dba73
+971d7326c79bd9292ee5f2861a9cf563
+9722c1c650f00c1abccac843e79b2f5b
+97238a7b56d968cec7ec40d9342f89a8
+972475297dc24672d79d8814004cf9e3
+9727a7980ed239400129bef3a7b3f5dd
+9728bb415830634b9260fe1415c155ef
+972a63e62aca267cf49ec23e79e3c24e
+972a74380f71f2b9bc40d9b6345006d3
+972b5404d5006614f657866985da1c0b
+972c487a3f86e3084c77a8368b1cd842
+972d0c265aa50c438e2f464d304de766
+972daa442f9a0f386a39d1a22b490bcb
+972e575fa1b1b3b298f2807a657623f7
+9730134970ab4c43b7029570e5f26dfc
+9731f828d6b7c096626028ea25811336
+9732853e72000038f2b3f30b0f974c99
+973364adc55a1fbd6e08c10d4cb6e0a2
+973526a994fd3d8fbe1236849190e2e2
+973793441794e526e52258f53e467391
+973b7470f87543bb74df76bce77f68d7
+973c4623a6e7da340eb60e5e320c97c5
+973d0d7d45186b481783f0cf7e481f48
+97400420ccb743eed952d23aac50517f
+974275821b31f94c6d523e4774024bb1
+97441a83ab5ceb939f863d0819bd313f
+974489a7d051f11d102d94bf28b5419b
+974703fd7e0188c2cf42471c48a6c9a5
+9747847cbf4b831b1d257bfc3912659e
+9747b9b930e6563d6b070f720f6c48c0
+9748d5a67d8e1f59ddd154685af8a278
+9749b4337dce690b897ad0b9a9e55a24
+974be5a085d18b5041456e4690ec3ae2
+9750c7f8fbed952e5fc66f64a105ef54
+9754524b5b3d8b43f833e896f579cb05
+9756f3811491bf1091c4cc2c1ffb3fb7
+9757145ab6447209f8aebd603df2af8e
+9757670b24c3362103d8599467063074
+97597992f1517fac2a77f45e544e2748
+97598b07bde384ebd26e0c4162dc3079
+975a09d3f4baf5a172d09320c72eadae
+975ea8c0ce51b3e930b527cc8d22f009
+975f1770a97a4e03ac52de8603287d4a
+975f58a90fe09213dc1103b3b3b701f7
+9763752e237891e56cc4e12d12d05c0f
+9766724a97167f4dbf39c6eb7ee3a5e2
+97673a1fd4a90398320a4fa91a3ef4c3
+9769247562cfc366ca2336424ac23b2d
+976c8c13cf2fbf8c06fcf679672803fb
+976de60823b0520daafe310d58079b8a
+977003a964dbf61316ec4ab678ff7073
+977133371f5e7c0f06209e2b727dd44b
+97727060dd1463f91d10093e59ac0d1c
+97727acfe5566b28d759df940c8e5dc9
+9776357db5da42b16790d3f6acf04ed5
+977840b5a78f4a0dbc68ee930fb56326
+977e1826b8e83dc15133d6957e51ac16
+977e88b1fd19b8eb605b28e273c7a26c
+977ed173ab8d94eb051454233290d6fc
+97819d7ed60beae9904df331770d7cc0
+978526f87698ffd7d724341a0f1d58ac
+9785676618e2d54d4c2e57004214ca45
+97862edd3984cf8b7bba30d4fe82df96
+9786f47b68c8ea80fb3968760ab61f79
+97888e9cd2b84d23b88c4be8b8a9ebae
+9789acf3684f96c2f0caafc477252c7e
+978c734dab40b06736a1b626016c92f4
+978e00ef2a6c3f01261f87a94b76ff7e
+979203072d263232c12986fd6eea3193
+9792f0b2cd5777188cb18729451c3901
+979306a7578a5485d7ae71d89463a252
+9793f6d99179c27a0b9d299c72a88624
+9797abbbca5933094a0ebae59cc10f84
+97983cd65948f23f18fc7e2a04e466f7
+9798934c007a9fc8c8ab35fc9ad0ede9
+9798bbd73111e2f7b85769a0de824eba
+979934b721efc93daf358bc3578ceb63
+979b448186900bdf7a4455a130982815
+979cc8d21c3118c846153c6abfc98d12
+979d8b817ad6e8d00a32699621ce0185
+97a02b2c8e117b1721a4e68a017a628d
+97a57d307b3dab3ff796277d89861d26
+97a5da8c04f3c82cdaeed5b57a4f483a
+97a5f2a87a2c8b0ad921e76997e5bc42
+97a6699f99ff79842ca9fe877ea7051a
+97ab5f3f77804d21a7f67d6c37b1e1fb
+97afff61b33296671ab46f12190f4136
+97b1e4f8518fcbc1dcb257a1c317d6b2
+97b37f899ed7c1d3a4692f7b18543bfe
+97b4d817fa3d5fa7eea3a1d8c53a8b6e
+97b80dfaa68568947dd40af8758e110f
+97b89a29a2e73d704f62d126314fbace
+97ba3fb75b7f2f2a9cdc62e3841844dd
+97bb2458eade2296df1a95fbb2af59dc
+97bc5f1a024dd9c014a36c5dc7277c41
+97be6be77626d8804c6535d02eb6b8da
+97c00e8d22c938955164ab4513f05838
+97c18ab96139c38e425e2a6fa8d35fce
+97c1962f6d5a586e24c6015870e53118
+97c32555bcea08f6724b00ccf9efc6c3
+97c3f6e57138784921765d5a42df9114
+97c3f7944803dbfec48508e6523043db
+97c50cfa52c19cf9ee198e450e93410a
+97c605921227b927c710e272ba97b93e
+97c77c125b0de1ec1095665946f9c6b2
+97c7d25c4308a96b02241694740f23e4
+97c808ec65ba8b8b2dc8dc20d8692b6e
+97c91858cecc18abab0e6cdd3a033a9f
+97c97da66d792158675cba8ab8dee5ce
+97cbf7e78a508e4cda03dcc559d3df1c
+97cc6f90976a38a1d32537244ba63075
+97cc7f6fb0ab3c6c1d5e789c53aabf35
+97cd9507160c578e0e60fe9a3f715a32
+97ce03e2f456caf925024d1580a9562a
+97d070eb2bd2539573d6b54b91f8ce03
+97d13c1d9357fac5d672b7f4a83b5c9e
+97d2ec12cc4eca4cee9d3f4a1b4b9665
+97d43db51f02f49a153e021cfe1a3f8a
+97d4ff708a7016f0925f1e8702655a3b
+97d637319d9f05fa5df166258cc14a6b
+97d71df148de615207ed27e840159c5d
+97d7b66a698b636a7e6d0e13e5f9a127
+97d9558f120d7d4b0a81115cb50622c7
+97d9db5aff2903cf49e5791e969b9600
+97d9ee5962039ae20953848336866a23
+97db192a74c0d7713ffebd54a18ea4b0
+97db2f18d5ad1bd289d2339e6351c461
+97de93477d7179b2cf79406623d54ef7
+97e0084f311d1045fe27ecbf4c21fdf2
+97e0153fb0557d0ddb6b7bd2ca92a251
+97e0ef40923041f015e2da04720198c5
+97e1c3d85d1366707773b65b0d53f116
+97e3313880ab659b8f21843ccf039f11
+97e549cc05604b706b7ae88d9f52e9c1
+97e5829301aa1c03739f8b576a39b09e
+97e7341b469e0420f003758134c4f379
+97e811f17ebbc078d0b75c72ea0ccbd1
+97e8143397fffb51f5bb125828299e3c
+97eac25f41b48b5a4f156058feb8d7ad
+97ebd925908801c041d5e02d8612a9ea
+97ec2a823fa4c7d37380cf12108e97cc
+97f0afa684c351072d65474f39ac6979
+97f0b8e84b352e20cb5118638fceaa30
+97f21ea489e51471b8c677ee461c0af3
+97f2870bc46a8d069ad0051f8370ee00
+97f321151d42bb74cde79f96d9861511
+97f3bb9c0880a5a4eb6cc531a636af7b
+97f48a5d07163d8928d8088f9ed7ebca
+97f53fa9b076ca3ecbbb833ef088d143
+97f5af9844f3bbf3b0f82c992a24c731
+97f640db7545e75336ca64b62c6f84f6
+97f6f78641375bf421cde330845a4291
+97f9c72fe28961bec9a4523121264741
+97f9ec06dad3b7faa5029b398560f143
+97fb39afee32ec6fc9797763c60e1183
+9801051dfa98d753d3c59f4d9b93096a
+9801c89fcd7ede5d2e7561297b93afd7
+9802b04cff3e6274c761e013466baf44
+9804e0e3ebccd359ef91a18588182b3a
+980681e134cc3aebc605e89b1244ba99
+9806b54e46b6b4291ea779bdec6d4e7e
+980afc7ce8ce82cdb35f2d5947793a55
+980c90ce1f01ff630410891f76bc68e0
+980e2d49b141e552cb07b08276ef8be2
+980e856ae6de91b26ca5f991bf134422
+980e8d19d5c1b7d268e80d74fe3eb964
+9810b239f2ce7c1c276c6164259abdda
+9810e8045e6a434dbf8add75e4959655
+9811667bc0316001ded1738e6581edd1
+981233072ae033a20cf158a288b858ce
+9814409a50f8815561c4b1aff7ab9ac3
+98167be8d8b471093eb5b8dc051defb5
+9816d5795f2123dc3400e522101a92e5
+9817274209c845b43537c8a3fc6f05f2
+981c7eedd05b75b78e0599ce00065642
+981cb56ec7b7c2eafc9a4d61806d53c1
+981cdfbf0e06b39c06d517d3609f0622
+981e2924dcbbcf253b5afa514cd2ddb1
+98206d07f341039d436007bc119bbabc
+9820b03da3e468e7e8749b7297854404
+9820e3f71c19ddf149c59bd53c43f2b4
+9820f18715ca8b1299171e2631927de5
+98237bd28eac299607d400889f968e03
+9825b208635bd6387435d44af37977e2
+9825c8c811ff05d452e8176cb32fe578
+98283fcc2c61eec1a66216a08a51a9a0
+982936dd97e67686804ad8368c7b9955
+982a203b018574d758327b50a7c43fd8
+982a988bbd584d9775d07a6f0ae8e509
+982baea2a19b6a9a8a93fcc513e9837f
+9830a39accad3c14e4d744e2ed35b9fe
+98337bbc1bcc2e57a9d4ef5645528438
+9836a2d691b71c2e2951fc75b1412fc0
+98389f8ca3d64c754ae66ce151bf5876
+983ae757b940117f971b18787e4c5e2f
+983b6000c6696a7cf1a27994011b3d34
+983d2e3cd6bb649bab0161ec785a6faf
+983dc7469c8d864ccfe0e1b27d24e67b
+983f6865f264a7eb3e53a4bbd8e8b12d
+98413fa459af714715a5e075a31e8329
+98474a755183568649fe96b2c1504235
+9848237aa4bb4bbd746db3e3abe334fa
+984c342094eea7e1c8752637f39e4b28
+984d4aca35ca1780ddbbeecee84aab20
+984d56acf46b943a9ea8f019fdcd1780
+9850413262acc40d3e791b140258e55c
+985409c48103d5367714b9cbda8b9ac9
+9854e539d203750a1f54ebf2201e780c
+98561af35c4611e827b03e6c9b2a0611
+985a4cbeb150f9eb183c82e5b3219407
+985bc061e12cea0191f04d13f69b09d8
+985c5b6dc81fc75077a13ff6b7d0f87f
+985d2f619ae51b57162f30dc2118dfd8
+985e4fba1f6f5d20edc234b123fa5a16
+985ed3bd4c034ef0bbd42b5e36b30a51
+985f8e919a0707f78311fa3dd3733ea5
+9861858d5633c6e9c9f297f221f2002b
+9868b7d69c85281f9223b5937b189121
+986918bdde49c7fd75724016b8e2b31e
+986a19a2a2ce121fd0d83497d268d00b
+986af39f8bed3841397297561d5adaa3
+986cca8ab073fdfdaed55a013fd3d5e9
+986cea2e01b74ec662f136fd8826c19a
+986d1fd156c4976fdc2b3d06376d964d
+986e17089a441cb05bc200977b2c0137
+986e8b420f4c9b04e89eae0827fbfb8e
+986ee8e7aa770dc1aea8fb3851280234
+987287a38325b00adde3116feb171455
+9872a8e06587820d2a93987a72a0f36c
+987393e0844691924f19354b41be030c
+98745fe9f4c53a2081be4fdfd317f150
+987764eee22989f43b0bb9e72bdc70f1
+987819a34d36edc44d7a143970b1d2db
+98787e2d7be916860eb51669ebd2f68c
+987b7f048232976ee9abafacacc6614a
+987ccb87f2d7f6c7e2ba7d5a7bba8720
+987d8fba44296cd987dd840a3aedfaed
+987d907787dcaad18d8c892f475c8021
+987fb583d5198ab01ffee3c3f9397abc
+98825389e5572fc3ed5ccd9a826daca8
+9885e301b5e24907dd884ea99698c66b
+9885e5b58f22a4e0409df34e4e93b674
+9887c8112ac7108fe005d6d3459bea34
+988add19399a04fd2ed6c81cd0d91218
+988b41b6925343c90aa98e50f4b44699
+988b4d533c0d971f953c48c5414ad203
+988cd02fb27cfad102fe1c06b0d8d7b5
+988ce9b9eb36a9e7713b58ef98db37bf
+988d37ec4bd213a3473fed016104518c
+988ed8a8315531f344f7314f39b2c61b
+9890a6674d627c7f62f5240c46d0b008
+989279c6bba50c54a82d2419bf2ae212
+9893f84aefb2266d323171527c3b3c11
+9894248fa20ca2d268f91e62a25794e3
+98962375ea9c8f23462fea08d72385c9
+989677edfc59ba2af1cddc3b978e55ca
+98971604de800d47789f28c4c287f8e4
+9899fef5ae94e00b503cf86b71f0d433
+989b4ffad1c1d992b16ce0573dd3adc3
+989c13c7c95514de4b43c8d755da084b
+989c26da2579bffefcd2668772187c26
+989c51673a3321f478eaa2cf9766b6cb
+989d439f68307a8cc484dce3b20dcc73
+989ecc240324f997d5e1789747af9053
+989fa9cdd5555ea0a833e2c5f94fb5b4
+98a017740c918e32758d76bfb9107ad2
+98a21fa3375c9034ec80a0754310157c
+98a33f660754b552369453714ee176b1
+98a50af46df6629191a60801dad60a4a
+98a5f93aecd4ed2b77bd36706307bedb
+98a6b5608aaad73e6295d2054bccd3ac
+98a89a22c99f5b08ab3810a657f54507
+98a9c5415c2f0f13cab2da05415e27f2
+98ae9241c41f7e4307c01c7e22c9dae1
+98b080bb9fbf20f2bd28903208ab53a1
+98b25f00b25fe75a9871840fd36a17f4
+98b421036cdb3c4c29980e4af7966306
+98b49b184deac6f2d9afb4e24cf9b823
+98b4e6bd0bee591b85fcd083e4800311
+98b58d0b72c48109ab8d268de9dd0383
+98b6eb643a27267ae252bfd1f003165d
+98b7ec1e19905d36d391b04c8c67a445
+98ba34b4cb528e2392b612dd7d34353b
+98bac60c9e8bde43b68bdf2159e69d99
+98bb467efa0b403ed1b71887f74c945f
+98bbfbb71c020a8a9b3fc77fcce32b89
+98c59b5a2be1f6586e85cc73abd19b07
+98c9514ba5acabd49f5ae5129c2514bf
+98cae71ef499a79f2e55da7a7ae1627a
+98cb8907d50bb97c4955a4fc3b1828de
+98cbac8f9a5ce70be5a294f15ed8b224
+98cd2d4a4c28d79d9f26d0c2bd84fb76
+98cee2b85abcc24ad41e3900486549eb
+98cfa274959e8e6cae7ee76ad5f9683a
+98cfa35f3a56bc474ca26a4000e6253a
+98d06d2f5c94ccfc9e0b513643e52000
+98d10f2f909e637648fcc9a402d3bf0e
+98d11258621a8311e5b8bf4282e6def3
+98d17c640d00a52005af3b01b85d1ab9
+98d1a0dd9273c2534b60be6eb54d782d
+98d4ac893dade12bb28fe9a8d12c2b02
+98d5ccc20ab779b85940fdc6d4d1a826
+98d71bc91ada8740c6f95e597ce1573c
+98d76c085fa43fe7edda434645cf5613
+98d791eaf2ccaf6c262235cfa270131f
+98d8c4a315d60dd143003c8e4209e28c
+98d9819375d562e5aff3a28310ce203b
+98da3c083c0a92be9786d3dad55f8cf5
+98dbd5f79f4f3187b4e5723fdcbe847a
+98dc646fe50fa365d904b3da5ce9632e
+98de165d9606ea821471fb5e5aa23dae
+98df4184eda63224b3c544e9eb958fbc
+98e16830a0441aadb24eff7edbc61201
+98e2314aedc82b248ba09e5f34bed98e
+98e3130acca7b432d2f1dbbd6633dc61
+98e518a8c243575ff831256ce1aa5d44
+98e6bdb06ca41d3a5efdb83da60443cd
+98e7f279a2f29c974e4e0f1328b0a286
+98ea69946f549a55f78e08cf6a54e2cd
+98ebd9a569cabf61ab8da49f6f72c432
+98ec6875c25d881ed5bbb6a879376da7
+98f2caae06a62f193fac4fbfd57e9441
+98f3494373bb5c5f27ba72f516a2e840
+98f43aaaffcbaf05d85bf8ed19f9316a
+98f4ad3e528d6bff50731b45e029e778
+98f7d2ddde6853188ce00e023b1d1359
+98f8449e4b0f2a0d416cced5745a97a9
+98f9b7f4e4e394bec9d14b4fb6bb7e93
+98facfba2597a7c47ad55636d5cec8a9
+98fcfb0895859afd12a58beaca740a64
+98fd725b009ff4dac3b9d02bed4c488b
+98fe0cb4b061c20d3d12956c2fe65512
+98fe618a3ef98d07d2bff144d1c53cfb
+9901035a6dcb97216271b5a71370a0fb
+9901401fa189ddf261ca67ea0c5fdf10
+9902fa5013c30c2a5b271a6987e5d0d9
+99034797bb929e721c3c601c88bc9ad8
+9903b0218c7fb88cc023f6a066cfc1d5
+99056b0924332fd3ac6318169a0e231b
+990571d689c56c4ce346562095777f4b
+9905a10fcb1e239eb99ef98ba577f901
+9907ddf8105ad98579bcef30fed05647
+9914b1b60a0c66e29efc5b8d04445aa6
+9914fceb5130c6927d80d65db68dfcb3
+9917ff6c80ef40106ae72e963b4b0483
+99199d68e7acf2945a2a23ee94a14dbf
+991d4044a887f5a82635b7b7d88c8885
+992184d8fa76392d42592356a4df9f6f
+992218012a0e68d19b54e45f70094af2
+9922a604f9c4a84c1b9ed2f4cb00cd05
+99248daed04fcd44bf84aaf83e1b71eb
+9926c127c70fe6c4769eba305eebe12d
+9928457b727a892ff83cbc826b966e00
+99288eb76f57b3f7ee1b3bc5f47d0d15
+992a2acc09d0f0202b25370b8f135d48
+992a94b402335f58b9efe1c9c90a4f5e
+992bf5935d5615f3d18dd84855d9e4fe
+992cd0096a4cb3fcc5821fe8e19c83b1
+992df7fad95f19cfdbd0881ed1296a64
+992e797cb38c74a5f22a55f6538d68f8
+99302c5415fb90717b60c79969b84422
+99324e6c0d05d721a048113cdcd2f433
+99337763e3010e4722395f1e89642225
+9933e8ada843fe5cb2660a60a9ed07b9
+99343dbacb7769710289f5cbea75b4df
+993448cb5708d02a06c728c627b73f5c
+99350b554b7d9570af5240483771d647
+9935d15d6347b509020fc164337a5c5a
+993835a5762033e25c6d31d27d35af77
+99397a093960f75cada201535d8afbc7
+993b875b84f7b0afb2857acf87bb483e
+993ddcd4044305bed0cbec5983897f23
+993f03a49f08e60fb3c6eca9017cda8c
+9943ed8e082075bdd74685fb7472f4eb
+9943f41a2ce7663d3554803aad3f3722
+99451dc3573da46aa887dc090b9822de
+994560eb16de1702c66481ab3feb7873
+99464d154eb9a605723c9f1b553a1aa9
+9949355e435526a7869ff9d8de2bb4e0
+9949752757d63a6dff10bcdeab2c872e
+994a674946d9e8deb1e2cfeaaa77cd15
+994add08ab5945115bc225f2efd20cd6
+994ca46f045d336a9f0f83e65b432cf9
+994cc0029255e3f3c1790954c510c4b0
+994db0e95edcfea2e7ab2f0472f221cc
+994e8ed3d2081c488cc2be64bcd50bf3
+994fda5c6428b6cec80085aa85bdb2d7
+9951002f0580d4b64e23651721c33f82
+9952a011ec7c057d42d4363088cfe566
+99535060cf025b466808e63cc69fb6ab
+99537572a95b5c80d7e91a4efd17dd3f
+9953e33ce3ab7c46964bd18dfcc88a02
+995c2ae2796dc65ba029f5f2d32dafa7
+995e7a67a91d096ba2f1712d72bfb5f1
+995fed90109786812f210b4a6e0ea587
+9960fefdff8a58cc8160fb215f644bec
+99614e108361e58e7190464275c0bd5c
+99619c8db4f22015ee23e47d942d3977
+9963d659ca33e11aaecba218e957cab1
+99673019b873ffd447623d24638c7ea8
+996ac73d24c90bee284d600e22f74cc6
+996b3d59753e6ee7732666b1bb9154de
+996b9d4b1ad7b443331d623be1a5e24e
+996bc0c25724c0416e1f56d4e18d502f
+996c4ebfd1cb46ee46b204970c4a1a96
+997114917a37377a3e5ddef3bfaa459b
+9971cd31a16792847480e0d23b1060e9
+997207b98a8db8be45fc9ecedec0344a
+99728f565f0314165a3972524647bce4
+9974d767448ce0170576627b96a2c8d8
+99780939e1ed1ac4e510887dae1440ae
+997a1d008d5ef574bedfe17178fb6091
+997b3a72aa16f5f7ef4a11834bd4ff94
+997cbb352f71d3ca77f386d954aff88e
+997cc2a04813d5e7d7b2ce197a1f7b70
+997df4a45bff429898bf8a6c2825447b
+997fb3808f9b0f63bba29aaed121c0e3
+9980ab57721b93ad056468e060a07f4c
+9980bf2d6748b4f336a43d2430608d67
+9982948bf46b7bd3a2c433958ebacfa8
+998594acd134e1b53838898830d04ece
+9986868b49c9074c735e276c8036a8b5
+9987ef4061c2ff1800ca453af66d96fd
+998890cf75f79653fb947cba18ea928f
+998c725af6e82fda4cd0d868984d70d3
+998d197fbdd63b208123048549ca5e14
+998d1ffe2a5cf2ca133799f3013dd58a
+998d249449c72d142a0836a869c75977
+998efdec2193f73c41d22aa61fbf767c
+999013cd579d6615d8392ea87db9e137
+9991d033cccfd2f89ff36d7a43112722
+99952e744dd77a7fd2e60b986294cf66
+99961e55840aa22ad931190c59a6bb07
+9999625c365576c3896a1e731a484442
+99998e4299ef52ca965a0b0e86d5f230
+999b6d4679b3e255a6473b55a0fc2de9
+999f12c9d09ac4ca808f596bfb1104cf
+999f586fd524f6933dd7239dc27ab264
+99a0a77ed3b046c70949f19f0c1bcf3f
+99a24f766ef5c61b6f6b3b3b9a12e1e6
+99a330c92390e40958754a43b185b6b1
+99a45058d5e66262ca657291c27e8c65
+99a4b2843242522a4f060f2c408b5e56
+99a654a338efbd6fc6a0e2d7e5f1e632
+99a6a86fceebdefac54cf19d6b544875
+99a6c68f58daca9a3bd411349cca4e05
+99a92ff00b672928f35a12964c64f6be
+99a9b282ae165463844b3109dac3c1f2
+99abf9acf03ce80d058601f1f901e165
+99aced766ba4642ce67f4ef075f542ea
+99adf0a966676582a1eacd9bbefa6512
+99aef1139cb457401d6b7e490bc294db
+99af31f0bc744916b5339fba24489f48
+99aff8cac7f4cbc8918af23c3b13d20f
+99b01b7026a89999d010d56ca65ba83e
+99b78b73e260b25e311cb1610fcb7149
+99baa4f6a3a2c3200007d3c01731c0e4
+99bc56ad959f27db04a164f8eaa39f86
+99bedf22341c75c5eca47d8d6d9b0d14
+99bf225e1efef3e56af900c5121bd8dc
+99bfa770e4d9b824f91faff4d1be5eac
+99bfe19ba7b8458439a986bfcb800e69
+99c18fecbd44132720aefb2c471fd417
+99c2e87ce4a61709cf4b100496d2c57b
+99c386b4aa5fafc6cda2afdb2418048d
+99c65ce8b44c1de97d503bcb6bc96d40
+99c86f3bc07c963165ff5b76e4e40e42
+99c98728d2c69e17f7e90e491b33d0d4
+99c9bae7c134453dc8754e98c1fb9c19
+99ca93e3a9595086e2b53c0dd2edd365
+99cb14d3245a9fe797c0b6774e33da54
+99d0afbb440990d4db1fbdfdd17c2bbe
+99d1501077821b4c90d628ef705b949b
+99d6019e97feabcdb49f68d3ed019364
+99d60658815ea18c01ef1015c6204787
+99d72f0eb6b8202ca80e29ad6ffe6868
+99d79b6da80cf762a4c2f5131e735179
+99d97926de2f6bafde9f598148a6ba5e
+99db12b4ddcbe31519eff9ab61a3ff3c
+99dbf0a6cb4914cbfbb532fb36e80785
+99dc43a6beac54b53f1b79db129f14c5
+99dd2aa7449771be95323ff5146d4b40
+99dd7414b8472cabbe7912f358cb1378
+99e095ff0596de6b0fdcfd5f9f2c4069
+99e1b97286f64c7fd80615281774a51e
+99e3e188119f0d72d5ce4567f5216972
+99e43972c52592e4ee8648154d8b4d4f
+99e7ed9ee23834eca7b2d74971c9c0de
+99e879d68929a5267cac5cbbc44ee393
+99e8cbc39085551a9b243b64beb788fd
+99e94a467c42e52736ed0fbdd55d3d00
+99ed4d1e4de7783ddabcd227316308ca
+99efc6aa5734929fc362095636aeaa64
+99f0f82ba5febb60af18640c9538842d
+99f148c5f5500a0dec38e5d8870b23dd
+99f3e356c386afdb233864e8ad214177
+99f4191ee726bc014f3f353ad81db6f3
+99f63115edaf48d2e7bfd1ca814122b0
+99f69dbd30e3d9651f21f243a998bebc
+99f868eb6c6190075cbc47dda930ba74
+99f9a19a39d7619c591e309ad111ae08
+99fa550b6486ca2baf3d873480e91891
+99faab60225e8572687023f52eba3238
+99fc1f1099bafd39c166e48877826037
+99fef578fdbe2e00a934c0f33ee5b42e
+9a0042adb3bef413cbc61f510430d27f
+9a013b74f4eab865984c61fd7a47919b
+9a06af1f9d9e9736936e883be7344d87
+9a078806d0fad797d6dcf0603cbd4707
+9a084299cf87ae5d7388985b3bdd6231
+9a0928a55c4b05be864333e5e56e8e2e
+9a0a1a1f410604d8f4b8c024f138d170
+9a0b28358e1d3f0807783982aa7a3b7c
+9a0b8cd434bcd328fc660906b6376796
+9a0e19225e2fc7e56b120be5f3400698
+9a0e2bb77baf3929a5f12e21d477bcf2
+9a106f7a3e72a0ef1c29532e61922c48
+9a10a881b79029b46e1d72e629788106
+9a10b0390daff5ed34eb7c14d4b45e3b
+9a124b15d886618bef3eec663593a862
+9a14e44d49950f917ebdd8c73c56e08f
+9a16a55e9e38535cb17be2a548161509
+9a1706060c181cd8a421d50141286fd4
+9a19a40cba123acef7a7208e745ce0e5
+9a1a7bda7a63e278d5363654911c7beb
+9a1ce9fe7027ab43f229773b4551c940
+9a1d2ec74cbbbecab4f6c78a0a3ce330
+9a20995a6f80d37366770ba8ceeb72aa
+9a20cb9d7b4134e82cf09a6856c6671d
+9a21fefcaac971d304d9f89d0071524f
+9a250214586226a36b5839c6db140714
+9a256a607d7ca3ee1e74876a37a0c86f
+9a26f111512f2501e6564060c8ea24d0
+9a28890315ba148635f9b25b89145023
+9a28e554d42bb75ccc5a13df1c3a0dad
+9a2a9ff771e845bfb2377b07e6351ee6
+9a2c1b80e41024ba2251f780ba56615e
+9a2c350de7a7e9ce34e12366b948edad
+9a2ddd4d9eca07be5a1e31a443a528b7
+9a2ea5aa9ab20e52fb23c2ecf70b0a04
+9a2ee7f3ca47738218807d82a5be8dde
+9a2fae2409aa6c8227603cc8537da731
+9a2fb00189e84eab5b319134f18f61b0
+9a307dba1fe1ed7b336c031867decbb1
+9a31dcde5e864c7787bb61542f3e4796
+9a323025e305d89eb7f7c7f692bcc15d
+9a3299f800b6ebc2460e74a5ba53e491
+9a32ce62f945095bb24174a5ca68c921
+9a343c157a67f56be2fede708295ce62
+9a344078888fbf5316d8e9ee9ef7faca
+9a37a4c307c08b005eaad5b502cda3a4
+9a37d7e8009f715faccafb1847c62e7d
+9a3851bfdcc0454734ccc5904d1b22d1
+9a387d8cb566ee78a96193ef1a192850
+9a39bd3b56fc6072ae4fa02ec00c769b
+9a3c78875547559cc2af54ee9ce6ec76
+9a3e17fe7d84ca993efb7893f24262e5
+9a3ebf7437eb122060efcf4e546679b3
+9a3f65d7fb3314f21a85806930c814d5
+9a40b6205c5c91193915fd7d191e74d0
+9a41684747f999bf3140015de9089dfa
+9a44edc4aebf7b3dec1c6b84cfd74c11
+9a47e278f1be5690eca7572a3a6dc991
+9a483b125208a2d1f6d61add143f8248
+9a487c6d6b7f7ad192bc1f7c5c5bab88
+9a4e11c5e489ea0884c589f03f60e4d4
+9a4f5ae8d315e68a537b6f8d658c8990
+9a4f9e1b5f3a7d385c0aed9d81707d1c
+9a53e45d4e14eef26d91eee1b010c76c
+9a57d32a7c634be877e159fc78ec9fe0
+9a5a1b6dc3d469253ac25694413605d6
+9a5a20527e0d20dcb9136240ce7fec00
+9a5a305228cf789f66c0e0ed2bc3d67b
+9a5a9392e70bfa48b66306806293f1d3
+9a5cd4f3261db1dcc84295dd75a38d13
+9a5eaa85758ac00242d40f98b791400b
+9a604110af202551f31755b60fbca1ff
+9a6104705ec55b6efecdd74940d1a19c
+9a617256546e94b1fbf9ce2de483c36c
+9a62ba696d425b32fce529bed452e374
+9a6322a2079fbeb6b5bb82a2c9c640cb
+9a640b5756abb61711666db8355cade7
+9a64df7df0da564a7401070d395a1f3d
+9a64f0135177a7b77398221842c7ffa8
+9a6694746af8f583b9adc5e0fad82ba8
+9a69576ab28f270e76d6d4cdcc862874
+9a6a0f4b7ae4668d97a5c989a3e36896
+9a6a702bc26aaaa36f5c3ef36f02b60a
+9a6a72d3a452ab7a12a892f8ba5cfa78
+9a6a95701ad00fe7445025544ddd543e
+9a6be354dba7af0982033149b10ec891
+9a6ca5902386c4361a343c4c2f0a30a8
+9a6eb714517ab8e1044124bee52d4573
+9a71a1c8b2f2968785fc15b60a745594
+9a72fff9cbb5c9f2c5c3b9eeef939253
+9a73a3e8849a0220d47c42625444eb36
+9a75575efd33dcb6c6863b0e983e9e7b
+9a7643836824e3b6e136c049da1a4235
+9a764c21f2ac5cfde2131406208cad75
+9a76ad439561cf5b22472bb3309ff997
+9a770b51ec2966537cb3d80614f0fbf3
+9a7914740f658e560401e94f698ccd16
+9a7c9468e714ce426f35f54bbb634662
+9a7e280f782931e129648003b7911463
+9a80162cddb4d24fb51a9ba812809954
+9a823353c6290390b281aa9fbdacbe30
+9a85d93930e4435cde5079863e2534db
+9a8738f9d45279fc6c0f06e15dd31116
+9a8794915bd768502be873fa65da7d75
+9a879591420bd3775dea24c85a2ac67f
+9a8add0b5945dcece09fec916eee6a91
+9a8bd2965ba1a8bacb3e5592e8e12a24
+9a8eacf8ca09b27fea96fbc02405911d
+9a907225731bcde4561ac9ab66e81472
+9a91719444a63239af0d86c30e134976
+9a948ce761b24b4ee16ac56a1a1949e6
+9a950a641179ff88fff59a4b6d91f048
+9a95935195ccf304f98559cc4b372d12
+9a9598aae42ae47b7653d48d6f316de8
+9a963453a5e0ad1a9a4277fc1684b2b1
+9a970b363e806d01cb4a34c1ab72701c
+9a972f7fbc8d4f6222d2ce0f64a1c9d4
+9a97a3314c361ebadfc2b946adfeb872
+9a97ca473bfbaa05cd78484275caa40b
+9a9c8ece56d0965a11cec168d13a103e
+9a9f3c13d262557e798e360d0b2da5c8
+9aa41d99526540f8304bfbbeae2e86b7
+9aa5751e0c5741bf4798e79b38027b8b
+9aa6584d2e2a55eabdf3cb98b0652ee5
+9aa6898c6b00abdccd76a70b72986aed
+9aa6e4dd838aed76de4a37777048e882
+9aa8295fdc5855782213084cf32f3599
+9aab44127b950ce5c75082b70a507e69
+9aabbf80d2d2115acc7c8eb0b958dc9f
+9aac444845ceaeee287bc793b5610568
+9aae1a6eeb6a87b24370bb0ab0540e31
+9ab14e8cb268e58a0307d31927d2f3ab
+9ab1667664b6653cdfee0d6c58f338c7
+9ab4bede1ce07cfec5d26c1bca57a3ba
+9ab5dffd08d85503b59e53251bd61ead
+9ab5fe4f5c3968c2df5be82f4a6bacf0
+9aba5148c8f1694b878141559bf150f5
+9abb1975183ed3abfeaf4ab6bee0c2c7
+9abbb9d3f9f78aec429ff5abfb0b7c0d
+9abc0348f19e2a7332a452761bbda42c
+9abd2cb2d26fb8ea31073c27d9952cc1
+9abd80e905c1c28e89da71600d041f8c
+9abe589c3e32d0d0dfd2f931c500d81a
+9abee557204f22f21125694601e862ed
+9ac181158957408884b7f815607e6a7c
+9ac1a3463a77339b55bc797c7f676b5e
+9ac395253c70f82527c8efb1ab5f5163
+9ac714e51c0004f08ccbc666a3b8aecf
+9ac856a06353f0661698308dd6a49a17
+9ac86cbe3d00f521ecc29750dadb48d7
+9ac8eee1b24b4be5f4bc70b187dda1ca
+9aca2137783e1295bc137de21c926057
+9acae185c15b3a8e1378f6d407e45a67
+9acc1408eaf275d80955fb6d7c86475d
+9ace31b0e6600645fc369a137c512c16
+9ad24d9a4b634b1434d1a392a03fc670
+9ad2fde5ea54120a6f2f4fb5d2459725
+9ad3ea7addc4eb56904e9c75efc0c0b1
+9ad5f81f42ac4cc5fa678824d6911665
+9ad64c30bf5ef07727e45cb5cedf8fa9
+9ad68ae0de501ea6275c76ea3db906b9
+9ad6ee0c86e99f59f1ed48ca054a1b26
+9ad70cc24ee79a4f1d4890e061e8112a
+9ad80c2ee8d5cd7aef2d9fd823874152
+9ad8e6b0f8c80b493de87151098cb379
+9adaccf78f49ccbc7b766d49b0125186
+9addbe765b40096f3b88b72e81613cd1
+9ade478b79ad75aa21dad9d4e08d94c8
+9adeafee3e09f29abd0eee2289a66d23
+9adf444d801740d252a3e1ef34a03d0d
+9adfdf1a4cc22a5556d243b90d7c9d41
+9ae29f6a00e7a9baaee545fd347c1c0c
+9ae7d7330bebb73cd79980b6bd7bf5be
+9ae9591be382cfc45425b95e71309701
+9aea1f1cac816ab7ffe0baf7a0cc2e12
+9aecc3a565142f991dc8162bcfd7903d
+9aeeee853a783b8945a7e886e8345b12
+9aef5784383ad9508600c10cf20f14b3
+9af463c3fe323a8171a042fe761d1601
+9af9689d5634fa5528e40940d13f132e
+9afcc4867d69c82cc9d50928317ed6e4
+9afebdd6ddad9e336c20ce436f2dbeeb
+9b00a2073747b328c253d18fb9214165
+9b027f6d4013eae81228245c0fba1a99
+9b03ba7e196667b06a96ceac6085b168
+9b04dba1dcbcc4d2df88e720ef3016f6
+9b04efa0c668703a8e26a8ec0699b7d5
+9b050b29a51c821352328ad36b75f675
+9b0680dd24542c87887b28f6c69556f8
+9b06ac784f943e6965fbb312dd5c685b
+9b086150b6d7d8d4c52ab13bfe64c7eb
+9b0a4826c0fb86294da40eb77038a3de
+9b0ad244f144cca9ae74eee77883fbd0
+9b0b20131e2d7684f3408d8101d9be86
+9b0b38c2fac9b9142d308bd124076a83
+9b0bbe3e9d21d537facdee9448a4642f
+9b0bd19a572d45da058f1ab843d1e54f
+9b0c6a63c2d58a1e8ef9e01e75ae7d58
+9b0d908e4aa5cbb474e5d7c90fb8ffdd
+9b0e335d4f2a92586d3ac00841d542db
+9b0fa5111a4133758d56a2e0b60c66ff
+9b0fcbbd1476966680ecc0f0bd7fb3cf
+9b109829547e4352b3c882709640d896
+9b11a6b940fe19583fb20ed7e2432b92
+9b17a662f37c65be1dc0a2601be67d0a
+9b193accad73f3a8c533af098efb8669
+9b19956efa8bff480a5ec4228fc36999
+9b1a0335aad03487fef15abc30ea4d94
+9b1ae07290d1cdf2a87e0505e142f141
+9b1b1a6a31f32779a16657d36bca1efc
+9b1d1f271805ec311012c57a612919ce
+9b20bd48e5a73120b86d1cbbe9d6e978
+9b22f063360d957b7d362b32720804b6
+9b23168e739fcdb4d4559fc4128c8bc2
+9b23d6a1117d7d245a34799957b60d75
+9b26586e62fc26a34d78da1f4f29541e
+9b26fdef8e7e71e50d25975546d454bc
+9b274ff7ae36193d84cd5f8bdacd9468
+9b27cfa7cd034ca572953d8d0536f8ce
+9b28b371b049edbc1d37f26de7597b18
+9b28c190fb8af1835f12e78527c7d7a9
+9b29631b084552d7bb89f9123426499d
+9b29999db3bf9e6520389bcc4e9641c5
+9b2c272354b6eaf5ae9766f56cf37587
+9b2ca3e22ff66628bca4a7d3588cfba8
+9b2e54b0692c0f1b55ed016814eb56a2
+9b2e59be34d858455b40949df2158649
+9b2f940062185a39a905b47527c6603e
+9b305e24075b2f8c143d85131229bf09
+9b31642686b3a94e234a1098c5c1d025
+9b32bfda75a54110ec51526f63710b32
+9b32ed36c490edcbe22a895bb36f290e
+9b331b7f941c24675945d7eac784075e
+9b33af312156a23ddb1e8403d7b1706e
+9b34f815259bf17f55ad50496bb4cb8c
+9b375f4274dd410b60009ca24ae6826a
+9b3942c2bd8376dc9b3dd420579c4b8a
+9b3bf44c4611ab5f04126c9d12918f0b
+9b3cf868ad4700c4cdbb460f4b4e1994
+9b3d622cfd2d967e71e4bf0ceca38c4e
+9b3d96d2a9e88b99066156a0b2202dc5
+9b3f2a04a21480621a49ab5ea27ee1d2
+9b406eabeb5d06a582e5731d45e96a5a
+9b4303b36a2a88f4a95ab0acf4c11026
+9b4419060654d4a053c0c8743d85cb8f
+9b44ad0969c2b8677be1d630502dbafd
+9b470327cb323229d8ec942b4cae9bb6
+9b48ef903dc1e34b06e6aed7e7bddecf
+9b490280611349fef187a9b7297bd1c7
+9b494feba9e2344f8b4441110e4d9fcf
+9b4a6e6351db7e6c50e3c91b1602fff1
+9b4bafd24086d8428f11ce53dd18dbdc
+9b4d17d31a2b8be4b19a0045074bfb64
+9b514f53c63fd1d3203dfdd82c5ccf62
+9b5164216d76cb31d1316bd1d0e5f966
+9b53a09083ba1d651e726528795ab7e3
+9b553826884792184e5c6b79aba3e8de
+9b581050e2ecf0b9f9d4c378a4b25463
+9b586352caf591e6ae404b6db72f6380
+9b59989bbdc05148caa21fbd71495b52
+9b5a1dae532ef9bf9dd37ba88d3c8710
+9b5c02ac15948473e91c6be7687540b3
+9b5cf170de83333717ff38a11bb22502
+9b5e31bddfaebbb14c5f91c0327b9e8d
+9b5eb5b92aa9a2fd3264db641f9c3cb9
+9b5eea025b77256b7e2daabd2b697a3f
+9b60df072c6f3027ee44a2100cb74996
+9b64c0ad5cb62fc0f42e519b1c5da203
+9b65c07002b3fd5225cb7a6696725f20
+9b6642ea6631e81a4730200b1bf040ab
+9b675666ed680d0dafe1a9e55ca93dff
+9b6bfb8c67d4a2a6c0e2185ad400318a
+9b6d797fa0a605a5d4f812a0b6e4fa4b
+9b6db70cc4bfcf9ab45aa713258fad16
+9b6dd83a4787eb5fa608d580628b2aa6
+9b6ee4a9dbb1184c00391993aab48080
+9b6fe181665f80ccf11f4821917f059f
+9b71b9bbaf01598cb9bb3d5b8b88a656
+9b72375f708b0a62cad42a72e4afffd9
+9b74178c59ffb899d9e6a90f0d5129c4
+9b7486947ad365fdadcc773a75720c26
+9b752f9ad3cb9eb248fbf4f10f0044a6
+9b772a3d24e02bf90d9b4137ff67c81d
+9b77fdf446d5fca8799d9c1becc07e14
+9b796ae99a780f985c10c01d3642fe51
+9b7a257a3ffb10c392954df98e94f2bc
+9b7b944fc950bca5edce4c8229038ef3
+9b7d88067c11d22ccd9f86be4577c7f9
+9b7e3e613cd060cce8432971440c1a65
+9b7ec3bf23bbc7c0a527e3b62bbdd33f
+9b81275021ed370fdc3771c473170e2f
+9b82f38ee95a8efaa7632b63d315ace5
+9b83337aa3412932c25f40176b5ee1c4
+9b84e626f9ca33ecaaf826f688838a2a
+9b84ec457ce27bb961429561751b920b
+9b8554f6ae48eed99f4edf4d66524dfc
+9b85fc71907a78d1e28cc7d9c6195185
+9b87c0427f7c2aeb069160f3d18e724d
+9b88206b84290819d9df8994e8525aaa
+9b888245c6602a635c577d89df5f63d6
+9b899d1c6b7618e7508c1b7a487c5629
+9b8c5f08ce3b46911d4e25c6ceeb2541
+9b8c8f74ae3f9bdf9648ed7f04e4324c
+9b8e39015c70880adb9c10c2c6f791a0
+9b8e5013ed0a3eb00ee34ffbc9d89395
+9b91c09cafe91467493be288ade8ed9a
+9b93a36769cca46210a9bcb8edacbed4
+9b942445a0bd32aeeb86bd922cc0636d
+9b949bdf85ac91b8dc4eadec68fb7309
+9b9638e3cd3451ccdfdb8f069461df58
+9b9692fe9beea6853eea8dc16596cc3d
+9b96e63e346c796eb4fe46675783fd6d
+9b97872f6a3e1afd88f4ca8db9cf4988
+9b97f24c07674e8f710a9446ec90cd3d
+9b984da00ecf7f85ed4fe414528e80b4
+9b99915386ca2e806c70efe225e70419
+9b99ffc090fb4a108d42d6565f5fbaf2
+9b9a37d1700eafd0e896bfdc7cd67f27
+9b9c096618636608ffbb0d893d7af5e3
+9b9c8c0437dace5c7e1f63a94cf11f62
+9b9f3d4702a291ff307d992164fec34c
+9b9f8a532206cf3937b03d74c2803951
+9b9fa53cfc4598207b83d39372c43039
+9ba35ea204c86c15353707ca77563e34
+9ba5421e0e20f7348a5479b56bf3c002
+9ba56a1ce567d3ede0e8a63ad3641762
+9ba710a773525fccf0d30f540474096b
+9ba71fabbd17fad154c97e3ff28eab01
+9bab936a606915a42c18ae6b0b37a4b0
+9babdcca2fb7e9411de167206fa248c1
+9bacc40ee17421bd468812e58f128310
+9badc65014a9ff30df6d469fb5897689
+9bb2b84b477a44738c474ddf3d8d800a
+9bb3a061ff824e7e10fcd6216cc93859
+9bb56af2d871fc38e91ca63daa6921c7
+9bb577c465048325e6e40bfbdb74298d
+9bb73ca867c339e40f589956a994bdac
+9bb76a2fd2a6133b9e671d30aa7f0b30
+9bb77065dfb09b41e9ff3a5b45c451e7
+9bb94ab9484fb359247d990b91c74475
+9bbb4a6ff9c41c7e005f02be540d3d90
+9bbbcfcb1d19a08dcc9035687d7573a4
+9bbcb5ee28c5b48f56179822ff686b0d
+9bbcc52483921294232637d6c65cc737
+9bbd613b27c0fc94fde44f7bcb1dfd67
+9bbd7c28e477df9d44318daf8fdeb535
+9bbfdd076724c6f0f9559a0700e3e202
+9bc1c16f7c40c78747370024b0c0d9ab
+9bc3a8c5f0c2c3069c8054d3333bfbe9
+9bc3c2c98032a670ea0391851c7c08d2
+9bc60241f70be80046243f842702c282
+9bc60eb2112f11c439e1567c3b50cc61
+9bcaf7a94a9db8a662eb4fd3c3d50e49
+9bcb4c9e19fc61a804285da5e79c9ddf
+9bcc9f5d8fd12e09fd0641fe3e40a841
+9bce3b08a6723cce1f77995f5dec2488
+9bd0d6395ec1495b949fd800396cc7d7
+9bd28d6a97409f949a66895ffe8b833d
+9bd608a33735bb22a5bf09b244ec1d34
+9bda9800e66f4e3a9cb66973c769371e
+9bdafc4402508864b66a2fe546f0ed5e
+9bddecc39197487fe8d28a853c3075ca
+9bde563a514d60ea5ece05d7d628f770
+9bdf09aad422f983392dbe895e4c60c8
+9bdfa12c4b74441da0d8e50e74496e47
+9be03c915a2792e8c81d70e38b7d840e
+9be0c5a04dfc3103d7d528001ed70446
+9be18ed5c964b7117e7851c778b7af7c
+9be314a6af4bf72219be4aae60d3e692
+9be393e35171c337a27e1b347d383954
+9be3ddf99d8ff3336178670fb9f535a4
+9be525bc8faf2fd2ee9305052bb82e3b
+9be6a6266bb2cdbf00bd26bce35deecb
+9be7f989e34dab92492685e9c0e9bd60
+9be907d1333c349d642cc853ad841d71
+9beb5d6c2da178aa97a73448973b5c4f
+9beb95336723c6b98663c26e4cc7698f
+9bec66a8d0298f9de34885308982b946
+9bec903d0b79243db395f751f69f1cd8
+9bee43a6be4282534ba4278e60a08d8d
+9bf1515d303c782486ca14ebc2eadfe9
+9bf2ef40b22e4ea068fe2b65903f75aa
+9bf34dc847b4be090accf308c53a39c7
+9bf35ee3a9590affdbb97f7c4b9f11ff
+9bf4eafb9d21f707ef148cdb0db7d01e
+9bf53190983aadd81f53e18d234725bc
+9bf6488e4c528cf72a466bb4ffb30a20
+9bf69d96fb8d15687b74ee8aef46c4fc
+9bf77f6db4eb511cd2b8a1cb3af44708
+9bfc78c4290b03e71411ca6fd4b95479
+9bfe28fad5880b23d388dc9de3587263
+9c009bbd9c4b85f7c4648d75d172743a
+9c01eae02c6441623ed57465dd36d244
+9c021ffae8f545ea32483562e7e8c6ba
+9c034476a870cb2b09618988d07c39e3
+9c03dfc873c31ae3108b94359e7278e0
+9c041b7b8ee47673a2b979276561782a
+9c07d7dd7f3f7c0440bfcd89c86365d4
+9c0e2403902ae525cfcf16c71b831a46
+9c0e56e5aa2d0613d3f636c9339cfd20
+9c0f9f1b2eb384c914dab43606b631bd
+9c14ab70d8ea2613b8a8db6b6d8ca889
+9c188c0402bf930dcc47982dac988900
+9c1a39cc913424c9fa03540d7d79e383
+9c1a485bb8da2ed34e39457932623599
+9c1a9da5ed714c198b89fb0f1626165a
+9c1aa2667ddc3a4fc7865f65c4ae2a06
+9c1cc8e613cd23910819c17d71c2e403
+9c20a1b507cb4bf56b7c7720fbda7abd
+9c23f54ea5b67ca34dcd3ed826835fa8
+9c29dcf1ba9edffd4e8e7b8efa20a880
+9c2ac8d127341092c560f544d44870f2
+9c2b7198c5f9480a2f79f5690a4990be
+9c2b821b4b016fd977980d108636e9eb
+9c2bde90d2462140588a7bef6168861c
+9c2c5340021622a5d1f6b340ba259ff4
+9c305d9d9dbbf9126837e7f76caf54d9
+9c34a63695206ca9c6167c10d76c7de8
+9c357d95439a89a54106aed62ea6d1d9
+9c36de49a8b789926d0a78db397c187a
+9c38de2dfe61e23ca86e57a0c1dd3dae
+9c3c18e67a28c5a69f0f7c1b8bba2701
+9c3dce15a4c0b2108f7227894f91a95a
+9c3dd9f31384073163a8c3c798a36d2e
+9c3e75db9f7f94aa582f52458eecc3e4
+9c3ee59feeac225fc1a6efcdf758102d
+9c3f8ba083740f9bf7badcd9967ff895
+9c40ce86b63f479ddd9b0f2968a142a0
+9c4294953cefa61a44ca1d5ddf6b0fb8
+9c43b05fa37cf13044a912309f51cb36
+9c4514477b208a2202dfcbeb69d11c2c
+9c4706ce76b191d72a2eb421cd625e17
+9c497aecb96abc2a5cb5c360c7f8d156
+9c4c797a190551ea7f34352cfbaf0456
+9c4e31171417d805ae339d110d65087b
+9c5098f0d6c6ab8662cb0531cb6ad7c1
+9c521b366b4068f855b2b59401857f4d
+9c53767ca6a6d29cdbbaf5765781fe18
+9c576a4f4136636528827533bfbbd8ed
+9c578ecd19e7f72409fab6aafe006540
+9c58ef77734d2cd34a9b80ef8545e797
+9c5a1399393b786dbbc982e030d1ae6c
+9c5b45eb98c3f73de95dfafa01777816
+9c5d92b824054528654b81202e6987ac
+9c5f81df4e7554e8ff465cd670837699
+9c658a56d72aee15bcc5f03109b99065
+9c68bfcd79c2031f41fcdb917c40f6c7
+9c6900117fa30344cbc40d6562190b99
+9c6aacd3a127d07011c3c5b9663b4e6a
+9c6cd7cc2a9b0137f8f64fff58c97fa9
+9c704dd69e7e44f0798ff98fe7c830e7
+9c70b3a149b3b009a890594933a6af18
+9c724db389ee002d4e04e7ae635474c8
+9c73a77d09af1fb55dca288003c32e18
+9c73aeaffbb4512a6f8da6bcce055c4d
+9c73fc6c2670e1cd300755af069d9955
+9c77b77f356058fc093ee8e8fc9e8dc8
+9c79e8f43423fc8aaf5b0e584acc882b
+9c79f23c8d4fe9f146ab04285631d4e0
+9c79f44ffc67c70461f8c81c24e2e8db
+9c7ca150e74eac943f5043e3b7f2eea5
+9c7cb21550a968e3e7cf9c985f63d067
+9c7cea6550b4f6830a9df5cf2cf50c2e
+9c7d9b1fb07f13cf267aec15124782db
+9c7e0fc8c87d95091a105ba5b00ab731
+9c843cc321ec5730dfb015abae7b018b
+9c84ba7c5065f0ada916a58ae7714294
+9c854666998a1c1cfbd741e9e4a326de
+9c88113660125d12585c1553ac40e44c
+9c881e9dcbefca8e2e896663a9f25d66
+9c89ff9b1f2e511604e89976add9bf24
+9c8a66e3a227db22f792c31bda87b3af
+9c8c3f99502a60fb004285c651b33046
+9c8d808cec56ecfd58a0e5facf04a18d
+9c8e62a07e31d23a592bd073716fcf0c
+9c911d1e91da1dd09d0db7b49b8d6652
+9c921edcf290a38a9d0ac33445a46668
+9c9412b00dab9ec82f5e2810226b7081
+9c9705a69dd2da51358aa9cd4f829231
+9c9841faf98479622232ee9fb5053b91
+9c99cdff1d852b6cb47d5efe82fc2cf2
+9c9b56510fda23ae95de29584459cd3d
+9c9ce55fa1d014542e8aae67204a9729
+9c9cff0970c8488bbf7b2e8653a5309e
+9c9d7760f6042f29c9396d3eae5bf5e1
+9ca2e50b7009f49f2cbb777874f06730
+9ca4eaedf8df09623f3f466e3afb0104
+9ca72b464ddae54828d268c5de8c4850
+9ca880c32aba4908f82562db7fa8897f
+9ca8f5fb7bee23ee68d0b9b6d7ef81d4
+9caa2a0c02261e9b83b3b74ded77eb72
+9cab61f1c300809d10b3d8820d8959bd
+9cabe7db618be23abb862faa2ae0043b
+9cae465ce665edb723db5662ff2e6d2c
+9cb03083a669f675791a810c8efe2e5b
+9cb0625e1a0388287855c979cc3ccc1d
+9cb193e8fcb1a338b6a8353fd27c293b
+9cb1996a09cfdeca7206379800733c05
+9cb60393a36d50c19b0b9df4e6d00d70
+9cb8c52450f2908c8b5cda073bbd3caa
+9cb8d5d634702be8dd4ad894f437897a
+9cb95f8065321e4e067b4886a823f9c6
+9cbab19f988caf90a840d53c991f07da
+9cbd15df7a85061fcf73260894f3b66d
+9cbe6d605e37458214db9c220167e75d
+9cc003b458a8b8e2818934a349fef105
+9cc2f1b9b7fcd1e26b6696859f972a78
+9cc36479da4def730b9a70630130e976
+9cc3ac90c9dc891fbe7c26deadbff358
+9cc513dcd5f39a4ac3d1b879ec4324fc
+9cc55e75a445837a30e19812d28f439b
+9cc8d9f7dc9d077b1718835957c2f8a6
+9ccc10d9c9c4d05d31254480607d8f1e
+9ccc655d9d3cb48e7826d77de353187a
+9ccc98a21806d1399999a1905678b3fe
+9cce3e1cb9b6d2d82d2054588c93d0e1
+9cd11c7473772e875dee00b6abc87e1b
+9cd4dc13d9b2770dcdb50c788421b43f
+9cd55fd5c46a85f03293f972441d4742
+9cd5a9c3f9058b32d2ade35c89b9066f
+9cd8615097c47d9e6c07a206cf20b7b2
+9cdaa71d475b8655e9304567c45fd2d8
+9cdb9987fa143095c4524eeeb12aefa8
+9cdd4f5dcc015846ab92db8e15373835
+9cdedd882054902d8e4b207080d26e3e
+9cdf403f99c55197f124add3d2140480
+9ce08e10c5cfe510e10979363b8f17a1
+9ce30bd5ae43b1ed48a5cfbec57dc1c3
+9ce4443ce1a81cda5f8331d30226fd67
+9ce45c528bf0632bbec6265e7b8aa451
+9ce49f66d05a3698e9672ab71d93c022
+9ce50517dfec87e177086a5a61eacff6
+9ce5469ba4072b357e54e6f1987fb419
+9ce567387041f9761ad8de80bc0837fd
+9ce7bc22ee0b4c94b69d2870ce93b277
+9ce87826775400947921bb97275d515d
+9cea425cacb5efbc4fa255e5e115b262
+9cea6e5e888a21f94f4204a269629e41
+9ced070b1e707da845e7801ae376ab1a
+9ced740d11d5d82573d11d779007cca3
+9cee4b8e63688c4e31a4014519887836
+9cef805b0701060b60589a350ddc3127
+9cefe9e9c3d0733821a75e70213942ec
+9cf060ef314746a5aa7130b6756ee9ff
+9cf26af8b2a328e30d1d2b03105dfc9c
+9cf34101a4f4ae8fcdf3b4958da6b76d
+9cf3d1f3e91679a7f672b5d273cefd30
+9cf429e423d51ceab0b58d7ee16493f6
+9cf430f4db4b660c02277ad2ff90b431
+9cf54de5b4ff94c066b81c44f5202633
+9cf74b63c65c07c4cf411c29c63ce314
+9cf7df01ae8072acb25d1a63304ab909
+9cfadc41cb03901487ce757a2f4c762d
+9cfba90f300f65c50719f82578666bb2
+9cff15d6979d8f29fa227fb870b0ac4d
+9cff32d1a380fc3b0d4639ae166db2c7
+9cffc140796ada1441709baeacc5062a
+9cfffaaf32542f7748d14f949c1dd763
+9d005dbfe3578a14c985dc51bbbf416d
+9d02afcf80e198045f91e6f942630a2b
+9d078ab0bee2e88cd5f7b2fff2784327
+9d07b1ae10da8e9f35b674c7f8b8b52d
+9d08178093c7494f6c361ad6d734391e
+9d098e4b7afeccac106b96cfd1285f59
+9d0b3fb79809dfaaff0aef57113459a7
+9d0c7aa7e9431e99902be6f8fb7c5339
+9d0c8d8df24157c5945bbc71ebc65f05
+9d0e284ce1c45a54b87eb0ed1ac45ee9
+9d0eaca84ba9a3576218da3e9f807a66
+9d0f7cfb9074a828c725c50f43348666
+9d100ee4267436898e861fdce9baf679
+9d10100f21200dd19215a1136f62546b
+9d124680d303f3bdc049f18844a22456
+9d124808d20e471bc123acf80ee75083
+9d13669a54a0641de3d5b7f46d6d10c3
+9d194d10cad48bd920fcee7703e07199
+9d1a3cceff86600b3964561365078e15
+9d1a3d8295436a7a9112023f6b789bfc
+9d1ae5e64321615c5fbd4081b04eb4d9
+9d1b7f6f2875e0f4922608eb2187c47a
+9d1bac4e0bcbec10b9aafffdf7950e14
+9d204ae75b9614f0495be3932008ea95
+9d211485f0425899f86772c85b0e21a2
+9d22406b94231a8e4c0924460b83fd05
+9d224f123024711c98f73a14ed5dbb04
+9d2a2a2c1a900ebb5795e2b8824554ac
+9d2dc9b135294895cbf18e5593e12b47
+9d2eb770acc5c5faa3eee32e7c8da74a
+9d3097766a6e3454a651cb4e329046ff
+9d30ef61feebf6415e212501fd3b8051
+9d31597c22b68583b5e982b415d349c0
+9d3332e7a409eaf74cbfd4639c63df9b
+9d3380d1be4e70a90fabe8fd242ad67a
+9d33a1b68323b68f950cb2b28223728d
+9d360acb7153b53fe01cc54e4e603e02
+9d3614641bb94ebedc3ca44ff1708a6f
+9d3ba67014de60092c2f3786860bcc64
+9d3bbc7e385a3426b8111c525a49f58e
+9d3cfba4cfb1d0b1111620251f9d68e2
+9d3f099f43d33cff18fcab8783540f3c
+9d3f31bfb2a361197b2e13b616c20b42
+9d40846b6d94f8417df6b600fdc6eda8
+9d425346480c1aebd702c800051d5271
+9d429492d0b4dd0abd1245fba71a385c
+9d4521ba2596ccd9be3a1fdd7039a375
+9d45379eae41dfe215655a11a9860d24
+9d46e18e290d2a369f02de6bbf7658dd
+9d47541dfbeb98b52d05dbb61889077b
+9d4a639cce13727cb814cbdd32805e0f
+9d4a6d27595211666ec4dde3f9898550
+9d4b0a3b18f24b672e6542049bf540fc
+9d4b6bbcd89cf1e406e1541c79ec1995
+9d4db32ab640fed0e13590b68e302204
+9d4f0cf25ae0a482d02c71544545ab54
+9d50b869f9b90ccc73722e94c57c348f
+9d54d328a0b8ef4c18d65199f28381ab
+9d568cf5eef459c42fa7446fe8be6816
+9d587a46370e6f4535e4328810b7f230
+9d593ffd35e14f83ca530c6ae366b618
+9d59a17fbae31ab2076497004a0c2213
+9d5be346a55ad49c86c87b306fb9dc92
+9d5eee56eea325dbba8ead8b3f34ec1c
+9d610690db279eb197640002c5c4076f
+9d654ef391fc0b7b24a03a923438ef27
+9d6600f52a7853f0c3ec34d6da5b4488
+9d684edf7521a78d694304f956c60c93
+9d68887561b4341d2a71115bf15afb8f
+9d68fc2311aa5231e1612b6d800795a0
+9d6967337dcedf08396cc28f9dffe135
+9d6d78535a1bd537fa65e85990fd7efd
+9d7308a8ac964c411a1818f167150855
+9d736e55c3cb558298331f65a04ca0e6
+9d740e9561cad60d64b606211fbb0735
+9d76061f82456d2ec96fd51631fed5e9
+9d76092362328ed92ee148ff35fa84da
+9d76470fe58acb8480f19d09f578c403
+9d77a87db4ef8c114183e373e2b4bd0b
+9d7d00c58f10cf04ecfad2e94a6cf500
+9d7f0f9159d23aead37a2e98162324a2
+9d8090738c3a0ffaf540d98c7988185f
+9d8287882a1e5e60ffe07b9a31d8ce85
+9d82a86f826a5e67a077a8b6d6156ecc
+9d8594df78fe04181d505e1a7405d0ee
+9d86e9caa97d78704d3d5d742dac748b
+9d89256bf4ddcac11d3f9fb9a8589a55
+9d8b157d41cdededb69205462dd6808e
+9d8bcf59a6c555dfaef0c54c8aa5e75f
+9d8c62bd32626c8535b187d9d598f67d
+9d8cbb2c167f4da9fa25f55cfc9d8b58
+9d8d406c6424d35a34f3d8c6db5089f5
+9d8f554ba1751eb6f1d06e8e48d829ce
+9d8f83b4507e617a4fad5bb2bc9d000f
+9d946c9515cf0e4bd5af8ac30f7398be
+9d990be0a303be11b290bc443da71f4e
+9d9a5b6d6f0639b847befa9c91a36e5c
+9d9b0a750ad0a8e3e85ea2973ebda467
+9d9b38697f104cebf0913dc7aef7e4ec
+9d9babc6c47ab7c891c5c7bfbaf4d750
+9d9dc45cf4df0ff83a4d29d7af519b27
+9d9dfced9f1a192e7a7fbfa5d3ba9ebd
+9d9fe4f303406b22d6011d9b8693e316
+9da066609ed76e8b989680e9bb41a25f
+9da0b109187d85409160be3088401cb0
+9da17bddc551171017b0f73f861ca136
+9da2547cb56337f074341fe1aeaa4a57
+9da30e68151a854380c520733b56b899
+9da468192ac338c0473dc462af366a61
+9da47f91c2e3ca422a0879fda9cfbc4a
+9da4ecae0d130472c782bfae637e1d6c
+9da53f9523776c17a513b3b57c8e96ce
+9da7750aab2d3f09939c3db1b68edea4
+9da7d1b1282fbc94b45c3f507cd2b096
+9da82c2fdccb96ab140f80fea2a52c63
+9daafdd849dcd80e1c4dff3b18d72bbc
+9dacbb6867fa634529ba85b2368c9cbe
+9db607c1f5da6d9afb22b3dfce7eeea4
+9db61601f0efb4673c5be1b595441e25
+9db91ff1b7a7001c4d3cb8f84307564a
+9dbc8c7457e5186c46729239b8fb336a
+9dbcba23b3bfc76648d971b518507129
+9dc11c9295c43aca9633b23ea160cc1a
+9dc2ea6141a4440908d9a49b2d9fa677
+9dc58faba8c34f18d3ce6e132814813b
+9dc618d9a9127f0cbadd62039e223782
+9dcc26ae2fedcdbd6e2bf15440709486
+9dce91a19248d03352bf24ad50ae5bb3
+9dced5d83227ed323a9bf163e462c66f
+9dd00a094f41d53f106d9029b6059ba7
+9dd194dd70c454e38a2df74ab5b6a7f1
+9dd33bef2522dc45c17b1e314c23cd5c
+9dd3ff08414810f3989ccc381eedb4f2
+9dd4361a8e88929f992a0469f95b2594
+9dd8a8c01c49a12199a749cc2524bf27
+9dd8e5f3418bfe4257d7918b7c6975b4
+9dd9283587b5adf91d1168bcca19bba5
+9dd92c2b143975a56fe6ee5882e1f811
+9dda3c336471ba35e99884b6ae2c794b
+9dde12fe0967db35242c10c5b9a995a3
+9ddef2982eb977497b7138ddf2b71ed2
+9de0d239265bc7b1fe1b96576085021d
+9de1a0062bb6fd4b2e45f72417d12e56
+9de4979ab21a43a73ac7342f4745db90
+9de7983ae05884c96d807d72f1c4f275
+9de89e1c7632e9a67e01581e5fcd7f55
+9de91a46f5d854e031100fb938abc2a7
+9de970cff69eed314339b65abf1d54f7
+9dead5ad348a9d28c376925345b37a87
+9dead5b0311eaa074fd01ecde371c3b2
+9deb970d7b9121a768ed2c839d6d7957
+9dec6bc06c4e5abc29ab9b0499cf99c7
+9dee55f66b8d72ecea9997d37893c678
+9df17204912109ac06201eafb3f0a28b
+9df54218d3a9a22211314189d687dab3
+9df7a5e1a54055104f962f191ff470bd
+9df807fa61108e1e67b58e75f94419f7
+9dfcfd3e7e949342bda423eef79be5bf
+9dfd67e0a48c312c9706f322c743962e
+9dfd75aba46ea417eef17a532f8ec5f3
+9dfd87493c53a8f6f6de6ddc40305057
+9dff2e651bdd7d60559a1c84850752e1
+9dff57c66e1ad292389fedde3dd370a9
+9e013bb197bf50edb23b990950d7f442
+9e01a8987ba546da272650586c3b6f1f
+9e03879007d8053efca40934b49b5df4
+9e06a079e44dfc4bee4eaccee0c3b62a
+9e077ac33744093a3959d16dcead94f3
+9e07802e6a029f49b5784a6fd02d61ae
+9e0a91f902379fd82139c7a9fee75a51
+9e0ad8eec4a43ebb1d5eb04e0571d726
+9e0bb92a61d7791ff3ae64a8159f7500
+9e0c52bf16e684d0cc552dc7a10fec46
+9e0cca5024e72d46a341e63168f290fa
+9e0d1e4055d68588d8eec1ef3633f25b
+9e0ee38ea6f5674e37b42cf41548f81f
+9e109f9cbef1843c36b9dbe13d9016b2
+9e142166c9308950426e391af76ff4e7
+9e17dc72b2ededdb48b35abbc994e8c4
+9e1928f749af9c4546fecb05af1a5511
+9e1bfdc09b7ad24645a3793cdb0bf403
+9e1d97729a7385cb8676662e2141ba06
+9e1e9f7ce4d0ef8bb4436eaddf6ca94d
+9e1f1fe386b62357defdce84d1fb4cd4
+9e2003c91f74c728a302a3b9bb5ff9f7
+9e20104848c4d81a4ff7487bacfd778c
+9e2263ed5301aa806ff0981a576492d8
+9e2449ebd974f5596b00877e08f5cc43
+9e2451ecfbad652c32c3acf739d0aa02
+9e24c3dff63e37fa5b941081d22d3e92
+9e2580cbd9fe4337d88158671a3996ff
+9e2606e32f73457d0d9a9b2ed5bb6f14
+9e26185adc2d6c0048dbf14ecc715071
+9e26d544984bc0c19cea63604c1ee8cf
+9e27028a4dda8d453a54f4857ae9b5d1
+9e27244e16bae1db4ebf271b2c88ca8f
+9e29070cb899154ab43ad5a9ede4c4dd
+9e2a6facf7b7643ef558434fb92b12b1
+9e2afb5f6b76b4fd58c0534f24e423cd
+9e2c915a46f79672363d4eeaf39ed8c2
+9e2ea1a748f199b6e64eefa1596cb171
+9e2eda1c4f83929dab40f1a2939bbfa0
+9e2fd2975d70220b1be7b296b0cf32d9
+9e31feda2692a26b35e84aaa3f5f2dc9
+9e36abe16a5a3cd99e656fe029ad38ee
+9e3874fab35670418cc07f2c414d7646
+9e396922c942e5e60714f6ef859aee03
+9e39b4fe9fa642952940f79dc0353244
+9e39bd820d236220ee60588ac21a7789
+9e3a77f765363e226123a56a55131c29
+9e3aad39819f760fa31779908c25d11e
+9e3c21f1f8986e8a2a025b797dd19a85
+9e3d72262bf8cc77f97541926e1b5a58
+9e3e5b4e133500836fea21c710313a39
+9e3e5fcea9d6e3e6fd99c17c1a859467
+9e404573ddbbb8c0ac88b2c7da52f1a8
+9e43a9f00927bea30bd780a117a17e76
+9e43f9d05fb38177e10edb82c1bcad5b
+9e456866be7057383d137ec8d330a5c9
+9e48ee528f13794a4a9943d21f9b19f6
+9e48eefe7af772ccd97a9c9ea4daa7b3
+9e49906ad75b1116e35e724fb8f73d74
+9e4dc2e769a7a61dc0e58c63e5272383
+9e4e33940abff4297d44d15ca2963461
+9e513e4ace5f991460fa2b6046bbb688
+9e5362af5453ce4a713ff8ab0d18d429
+9e5515ccfe7d2507f6d70e88cf7417eb
+9e55a743993c8cfd0e154d60160f69da
+9e5665e3a588ba5b536355a740ffbbda
+9e56d410c89237b7ccd62a4e03261c6a
+9e5712c955d89028108e52e13f5488db
+9e5fbe79cdebbf6325bea2f1a675dc2d
+9e60970247999d68e9a14d96d13ff2a1
+9e623424c081318359f63cc0eb3a8f71
+9e62b20b25dbbf39dfe0ce04da6ea213
+9e63176e91947975378a71d1c6f566dc
+9e6411917539350e8afe57036814444a
+9e646154ec7a3021725c7b58fd563d2d
+9e65acea6131a104f4ce2d1492551705
+9e65e77aef4ea9c86b27f31f1d33fbc8
+9e673a0b197001cb97f901cfdadefefc
+9e69460ff1b8a9d872b3f7ed14f4018c
+9e695cac5ba4ba9e130e1d72e9b7a539
+9e6f0cdd81a8005f60952c4d19089c57
+9e70e776c8df8f42af024f50b587419e
+9e71b16c0d9caa9ea68e1b484220ee43
+9e750c0912aa4f4c8163aaf7aa373d47
+9e7517b00149d73d12dc81801b2580ca
+9e78187bb93be7cbf784d01650fac418
+9e78a0a3e4688b35241c2a8aed02657e
+9e795d1193b73dc22a1b28d9f07ac99c
+9e7982cc0b45023a84b8c7e6ae7da71a
+9e7c265425a931f9cf4b81dc102b801c
+9e7c7acddc8740c5b2b93a9773e2f17c
+9e7d2d00c674339f4b617051092ac574
+9e805dfc4b440d26548b00f442471d56
+9e8105e0a0aa5db3060f49843cf5486c
+9e83164f9ab3f7d31f901e4cbcdb07bd
+9e896a007979c0e7ddcaca4969158f64
+9e89bf5e50d829c15323d4f5a4f952ed
+9e8b20430ca1d10fcc33c691e0d94830
+9e8bc9f9733dff0c40731b53ab857325
+9e8c3abc8d7df28f5e3e1b2cf64444db
+9e8d46cc05bbcf298ea169f4f8db485f
+9e8deecd7c0bf0a42c285f50f41b2df0
+9e8eaee1a942c7c08d8e669df0733e57
+9e8f07c47dd370b26dda068ec696079a
+9e9125bc1b297f6cecad5dae74d2c0cd
+9e938d92fd659cae26f2e70de70034f9
+9e945aedf671ec4ae1f1f82f2f19ed72
+9e980600faee964f0b809daeddb852ef
+9e983fb9f073a81071d15725afb740b0
+9e98d502855ec32495488fffc47a3d19
+9e99070827b1225519f3b9c4364e1857
+9e9929d130e5fd8d9197611ebccd6af4
+9e9b2bffbf566ee5010a4995bfbd3ba5
+9e9b94fef02331f40132c12b541f5783
+9e9dc101289a06742f847bc6c2950b69
+9e9ddd94861db26d2c5a64a2db96aad5
+9e9e1b9d604fd7e6f4ff04b04e3bbec6
+9e9e1c249dd975a2c7b53fa451012924
+9e9e9b0cef9abef0f980fb2818306b9f
+9ea107a05dd8df3e8fb8ad46b2880bd6
+9ea192468455dbc845e090ed3255bca8
+9ea4626a8010f6b583910cfc91b5a521
+9ea4a36bed9e163408222506300fb235
+9ea6931d74a6f3d25125d5a9c4489505
+9ea7829a5d5461f15b081eac68be11aa
+9ea93fd4b49046d774b32ee3a4e3dca9
+9eaa0a513b77c3239ef6304862677e27
+9eaaacf8776f959225944ed2777cf5a6
+9eaab062b5bb7d0df37c95221d6d8ce1
+9eac60d7b6f0f0bba7d942f7daec422a
+9eac6f0bd10fe3d00ee70196bc8fb226
+9ead152a369d3e55e2f4d0a5cd22987a
+9eade967a04df82a064cd81a0795f1ac
+9eaf1c105bfa586c6fcd793cf314a686
+9eb2f0af835e54478407de50af1c5539
+9eb4873a9edfb3bd7cbb7a8763ff1332
+9eb4875ce7817f4adafec83d8f61eab1
+9eb5bbee6b5f7de30c2fbf9647155ea5
+9eb7acb72abe07970be8d104bdbff67d
+9eb9e645defd5ebe40688f97890c8158
+9eb9e791e0bd2efc7db603cda00d0ee0
+9ebace1f07ef14b0a385b1dec1e2e82e
+9ebb1e809cb4fa361a81e96671ed05ac
+9ebb9f70b4da4bb87393af9c45337bbc
+9ebc039ee7d4f98ce0b4db291ddd8169
+9ebe6394d67ebc50e06a2b1c91339a7d
+9ebf8caea2dd59d21b96b47b5a5f19bb
+9ec069c22f8166f342fb74e0281032c6
+9ec07f28bf0ea0f7cd05575e38813daf
+9ec1a7390e2abd75f4f103443f1c5f70
+9ec2c99c3239edd406401fd4183cd092
+9ec524272ccb3d8df11e4a76b883977a
+9ec7e5483b022460569ed90706810f1d
+9ec8fa62a84cd0f16fc855307ddb33de
+9ec949aeffbe3eda8eda3fe6bd7c07d4
+9ecded1a6ab550cde56df31d3764b40e
+9ed0692ef2393843f82b5c65fddf219e
+9ed275eca75f5508c9644d75c24cdff3
+9ed287da4322ed403329154b1d2a8717
+9ed2f890cac2a45bcccc16cc22ba924a
+9ed4d63dd66042d1932abf0b4022c132
+9ed5fc56b4933f077046a5946211c947
+9ed6f754c45b90168d6345ea46410ae0
+9ed8824b48e7284d6b59c871342ef332
+9ed892cb9f547089542142963857aff1
+9ed93b13f75c1de45ea3aef7e378b8b9
+9ed98fcd08e98745f21261e719cc04ac
+9ed9ae8daa85753c44165e0fced406cc
+9edb5becccf3197b52fcebbb0f94c787
+9ede9023f2add788bcf2a5f9eea8bfe9
+9ee26a17759ef3aa19c0d21fbcdb835a
+9ee55290bb9501d1d80cd9780c39fbf1
+9ee6c0a166e295cce272eac2814fe4db
+9ee8877450a0584c2929a1f47bc06636
+9ee9a19588d35df27803e334dae77fc6
+9eeb10506db1c8607208ddc0884a2f9e
+9eecc4004b024b4ce907da151f3ba1fc
+9eee43584f1a2cca54110124b54badba
+9eee94438cf6a63ddd668c1651b23e94
+9ef0c0886415755ebc83bbc088edd058
+9ef3bc88f5fcb2ecf97f10cd2891b16b
+9ef4a9740938ea6973c84fef9680623d
+9ef544158297a18345658eb1ff59c3db
+9ef6abc4ebf3b2c4d8fbe4e787f7f374
+9ef6bc5f51e416c57971f4928acaa41f
+9ef756856aa4546570278f3bf775131e
+9ef77fc74087caf038bbbc567e6fec74
+9efb1b0eafc0e4cc1185fdd50f655855
+9efbe81ae962c49e243f4de5763ef92d
+9efcb933c571cbd1401dc11fed8f16ae
+9efe4e239a38810d27ab822f6fff5532
+9f0007955e55a3c5e5d29bce15fbf1fa
+9f000b4173f83ec586f9aaa27fb689a7
+9f00d5ca8707ac39840aedad433acb30
+9f0182e1c2a12fe49a2828f860f22b4b
+9f061da9336cfb3611f2409df64b0aef
+9f069981ac5d9200048e36282bda02f3
+9f0a2d612b7d277d08a875647b5c1999
+9f0b58de44b98ad75c0e6128a34d637e
+9f0d102ef26d6a9eefdeddf8a75b7eb1
+9f0d60b95a0c727130520cbbedf0f76d
+9f0fc610f5f06a4fbf685be3f0314b0c
+9f10fdd0ba7e9aac0c1233da980a98c7
+9f11a90b94c077da0d46a8949b94630f
+9f1312481c6fa84a9783f34cd3d3a16b
+9f131459b1a81e80322485cbbd0612bd
+9f14db0d811603a507effe5234db5f22
+9f154a87e3e6aca6bc0174b780412bc7
+9f1741e24207ec85de99653036a9ce2e
+9f17f176ef631dcfaf1dfb9d8728b95b
+9f1a00d4000333cd6145ba879b57c60f
+9f1beac7b6a2d9550cde5fc502f1050a
+9f1cc2b639554923084000cbeba67bc4
+9f1fbab35a344bd13e40b4267f935932
+9f200e257386f251c6a3bc58760c313b
+9f229afb1cb04371508464560a802190
+9f22ec6a4c346791eabe6b063482df7e
+9f23c6baaaf188384b8549841005bf2f
+9f2428dc093640cbfcd662932fee1ba7
+9f27ce549dad2b5afe31a8ca8aa4ed39
+9f2851d219d4991d4c08bee1bbb6a4e7
+9f296aa8cd3010e4b0a986e7875bad46
+9f2c09e61e8b12a48da9bf274cc3d8a7
+9f2c6b0d979daf69249139022c950a18
+9f2d4c97066c677839e1911b80c8d2c4
+9f2de3ec64dcda7364a5f67f79265a9f
+9f2fdffada3489550c55faf2a6b2e78d
+9f33ce84878221ace4c3e9cafc52fb68
+9f3504bb84b9fa5a36ae57934f2a3d3b
+9f352c638e001638ce2f1e195d9c1ef8
+9f359ddd800dc12d8fba1907aad2bcbf
+9f35dffc3d3cda81d59614720655c628
+9f3634505040fcf1a591c66d1c4ad4f2
+9f36886024be001896a00613c7c2f29a
+9f37932dfa37bfebb9fcaba9f99cb6c3
+9f39064c48dc286f614b2f7a5aa18536
+9f3afb5eb23bb9f9255e7c88665114a8
+9f3b651213d6b9c0454807955dba40ff
+9f3c3d05d119f58e6921f097790852fd
+9f3c76784f0eef2ef62e2d191238ec90
+9f3d8dba56bdef867427c5d1e7cc626d
+9f3f091bf3db4181262260b9cba3a236
+9f3f3f2efcdbd4bd71c58505803d7820
+9f40a3680758cafd42c99fc4c89da896
+9f413eac9608562ca5bf5599882f1abd
+9f42212341ac615d096ac994f755d0ae
+9f42db0f6f25442b3ce94b11e1277ad2
+9f42f2e4ce869c4f167cd990ccbee162
+9f45bb5b71cf0b8bce4462723f96a155
+9f4611657c4bbb7011eb63e7b76d426f
+9f465000cb3872e5ed7240ef2f78c168
+9f488d2da29772f33246a3421c022a25
+9f49e9b5366b093494f2527d87b17da6
+9f4b23b51a255f0378c74b765fd9a5cf
+9f4bb452c51568c326191e5eb0002d1a
+9f4d82fc01fc559f2abf9a1af5465e9b
+9f4f7998568a5e77311490d630f5d6ad
+9f51f0824a9507e7b994577f450fcad0
+9f526d52fd5ccf112493aa3ace5e1230
+9f533a0aab2252dba560ce6faac419d7
+9f554f84ed931e4e79af03f72404189b
+9f5770ff50df9043a74ac5e938d1a9b3
+9f5804ba72dd3283889c7e0abac99b65
+9f5823f35e680152c48a1c427244f2bf
+9f5aa0b7618b5a20ea6666e47ac2d2d6
+9f5e6f5635c1d914ab65ec80dc136d58
+9f61a79bf942114640ffc67a925632d2
+9f6223459c7a03f268fa274f25e96ca2
+9f624ea2b8a931773fa243089a96d1a8
+9f62bc6f1eae1ae3830ef830c995632b
+9f6452f426be17c55d7f48913f018198
+9f64bc1417b406aa7243ac89bae076d9
+9f6540289c2f4f267549aafe534874db
+9f6898876cb87a0a54c51d8b7fe5fc04
+9f6950410e52b32056400df783e2f8bf
+9f69760134426376857f068f4d3c1b91
+9f69da1478ec466fe325a5f6d94f725c
+9f6bea8ad9df9edf0145c77cf498142d
+9f6d8526f6d3f07a36464b2954311623
+9f703ad58fca11d8fe8a2415ccaee667
+9f709adc5cca4eb8fda3809234ef3844
+9f70b6f9f8bb172fd232bfbbb3c38208
+9f715a1e507020983822b2e3dc21470b
+9f720ab249687bce193c040394ba585f
+9f72f4558689fe93a5ec7986cf218f9e
+9f73e2e27d431644211607b6b280fa3c
+9f7a9ebb3ee1de201ecf85e86b770b5e
+9f7bff7564fdc05ba1e00ec396939a65
+9f7cfac24ecca104f50303a0a80d25fb
+9f7de705bab82c8507c0b22353415608
+9f82341fb405a64c44ce46c4fa058ecd
+9f82e22e11c7661cbab19bb518681be7
+9f844fdad91d93a3fecabf616026b43b
+9f85175ce91cc463aaabc94a98b8045f
+9f852d318da591785dff8ae2558de636
+9f85aaa5cdc8c9c0d242fd8b0eb6bd58
+9f889b9f4b489515a52720daff6717be
+9f891a768537ffe38023c48591684ff4
+9f891c569980f3a1ef2e162899273441
+9f89cbac0f046222a66bea041493b2b1
+9f8a586b3ff3e9d2aa9dbafc2083df72
+9f8caae23cf3428924635ebfd9df1cb4
+9f8dbdf6a81ca82c98e24643a0c5c844
+9f8dcd074e90eddbbb61587e50005d83
+9f8e10a32197b91f5b94e57dc207a1a7
+9f8f67e3d25063319da01f0b388691e1
+9f8f97c9fac59f8a85c09c2abe2a75c6
+9f90f37981811def10318462729eace6
+9f91c435b05f0d1d3a23a8f48de20ed7
+9f91e6af1a20712917c0dafc1b9e24e8
+9f921c723edd536888f7a88c15836029
+9f92c604997ff9e64db6a58ae597dea0
+9f9376d1147374e529b58af4848634d2
+9f952171b872ed2863f41427097dab9b
+9f953152db90da6cc41bb63e99aa3f6b
+9f96155edd1bed5402fc8b13a0dd4fc1
+9f966959344257f6499be26d10568d2e
+9f96d72f152eed7975f27acaa38e05aa
+9f971c9f0ff3314bb02d2aa2279bedf2
+9f97d1b7b4256d0f1e399a7d25ac96a4
+9f97f83a929156a29d8dda7dff115541
+9f9ba3c30dc9317968e8ec8f29de488f
+9f9cd9e74d283fc2c58b814ca0f63e38
+9f9ef883fc42ff7dbe9dae63054cebbb
+9fa2e1b20efc133915582ae1540945e2
+9fa40bac98bc767edf2c7947d106c7e4
+9fa45f99159351c49a79a2397e3863f8
+9fa4f56294427f51d341eaf39ae5636a
+9fa61a6b88f795b6f38bf453c533cae6
+9fa86487faefc1570067fa177f6e6f13
+9fa9b539ecea0f0f083cd38d376705a6
+9fac9dd7abea22815be7b6c71ff18f4f
+9face3e2c2d30beb0a23b9aa56e6391e
+9fb20ef0107bb08f7adf80847c465ab8
+9fb284ffbb7fc70d8b572c53d0353811
+9fb4256b73ab0e09f82b717322a73c53
+9fb630c9599530f5c27796fc588b0c6f
+9fb7068895dc03040c3616eeed0bb44d
+9fba3568fe10fd78780a1a793e055ce2
+9fbd8cc79ce854c4a5f2fdcbcfa8fc73
+9fbea916f47ca09326b00089b93dbfe4
+9fc04e0bcedd7185adbbf70272c8a37e
+9fc19357977760581706234cc2c95d39
+9fc52ac044fabe8a05a8d2fb5872c107
+9fc70205451f7ca0f8da1f370388150a
+9fca9d73fad4933e9540bde9e5211b2b
+9fcb4d2d86754c670ab97c73251fda03
+9fcd9a9189418c170e71d28b148c4239
+9fcfbf9c239031127eecc55625545b5b
+9fd3e4e469e7ca11b840bfa5cccfe15f
+9fd3f82c06b724071bd5abc326b32043
+9fd529ea0cf805e659059e1087535b95
+9fd557f9ca0c2e0c2d13b2639da8b34d
+9fd7bd663c87fc1324981d5fc33f898b
+9fdba845d5fc699d9e254a86e0d6bd08
+9fdbbc5721448d6912f168bdc396093e
+9fdbd3b38acc470069aeaf1491d4b9fe
+9fdc99297647c4e4caa87dddf9e82520
+9fdd870cc9fc1be2c11b33001d44c175
+9fddf6eecdc21984bc9cfb8d668eaf91
+9fde0f34257ee1076caf345bc24b0f76
+9fdf1d41c0ab7d7819412f130430a882
+9fe0af324b2d2c1177a8e369a9f5cff5
+9fe12f14dca0d90ebf230c636c6cd074
+9fe2a5704f21a7a62e87cf7eafc4a8e7
+9fe2f4a9ef6e476ec69202dcd6a262e8
+9fe3a8aabb8e8b8664c7012d4ae97d88
+9fe70d38beeea21444ff97568dd1219e
+9fe72fa11c0cb8cb7380cb3bb07ec0e5
+9fe8cfae43f8e710653d048e96185f5f
+9feabb1cdb2285878947b1139ea32d8b
+9feb95c7c9660e5aef21ac294e598209
+9fee9c40ee1776c78161b1d26c522992
+9ff04e7a817c17801164b9e17f3b5275
+9ff1448d1caf6ea4b9eea7f684a483ef
+9ff3308a130fb7bc45916aa8c9794b2e
+9ff8c9f18433037c604dc4f7e16ef9e3
+9ff9f8fe246893be7387c9af3f42efc4
+9ffcd297a413059b0029a8c4ba905493
+9ffcf18b72ae0de030d2c0ca0762cbb5
+9ffd5acdec3df62c9d67a2d076770a62
+9ffe0594e8a8fa1ed41c4502494401fd
+a0004cc45761704b7972c4d3448bfb21
+a000b8c896ef6929eb43c35e699cfdfc
+a001aa53c992b8e1b44507178759bd8b
+a003e41fd0930cf26defae93d0f0bdea
+a005d053267da46d0fbdf438ba2c50bc
+a00bd37972e644cb0f4930710c866691
+a00be5fdf5f1f983fdc2d2cf162e07c0
+a00c775127a8792cf70f5bc02c6bce02
+a00e72fc8ec744bb23f75fafa571c098
+a00ef394ce0659d8486c02fd0a689356
+a01013f15ee11b694450fb842590b930
+a0114730d64ce167863996a68d990f6c
+a013928ae16933699840f88c1634acb7
+a013bd7ec569bf92584e7779860f0696
+a014ce4f7703230efb2cb598f43138df
+a01509f4cba02c116cbdc88d5665ca70
+a01512a3055e7c01a51d4a6575e4c31b
+a0157b399ed6aa6f47a254f0e5dfebd3
+a018435f8894eda43b2ebe9e7b9252c5
+a0184f28213ff985ad7ceb0a55f67731
+a019661d3d4a64752d5fa024055b5a85
+a01b069bb752667d25574145e5fe2d1f
+a01cd71c166efebcc3fe549a26fd95ff
+a01eb567c6f10c7b300116baef769c95
+a01ecaea2a557707c7d59ef31a77812f
+a01fd31fed303d81ac67ef85bfd51ee3
+a020575d3895034db7ef52aafddd0457
+a02188409b5c324afc48250850db8bf1
+a021ae7c424b5a560d9da319c348ec4e
+a021ea56fce6aba6652c78c2a1f591dd
+a0225b4cbb6c419467e5a16e894e95fc
+a022874d1adf199f1caa1266cd9e8db0
+a0269216f1dfa879d11c92253dcd29ab
+a02a8dae004c46cc48d1357f5fee97e9
+a02b3990261ec355ee967411d6d9b17d
+a02b63f92ebf2937215b1c3cf31d7e7b
+a02ca6be594fa8abfb3b1f34a0fe2396
+a032a5506ae4f1ba3ccaa931fe055186
+a033c3f2565a7b5364d347c61ecb3388
+a034022394e00c130275f9eca73f86e4
+a035f04bb7f5218f6b8761633e0c8490
+a03625c2def37c3c32fc7f4a23bfa79f
+a0368dc68ed3ea366ba3b0ab31dc8ca4
+a0369f54a720a6c64cab06f671e39f85
+a0393a5734d5077247868176ad0aa983
+a0393a8e1bd94b49a5b04a742be0fcba
+a0399b4d8eaf3dcccc996c5c6004e62c
+a03c44a2db95349a2162a337a1c277ab
+a03f2b6a68b7b33715bd7afe74b9e77e
+a04085bca166150f1c20079eef68ae9c
+a041c48aa554e515255c8d28f7d43991
+a0435489163daca68f30b971d5580f9e
+a043756f898f1a40c15ed290eaa8a49f
+a043d2945e309b11b79532c7c711ed54
+a045996ff25d6569362ef78e09e503cb
+a0488897391a9888584aca133d8e1b46
+a04a230e6289cac0fa9d66e22a80d5f3
+a04add201290aa5254a9219446bbb199
+a04bc8fab8e7951f6d3d98e527e3eb17
+a04e5434222f6b38984e2e2bd0344f8c
+a04f2155f05642f50de892165578c061
+a04f71ccd09db430d74f8b4dc6e7d9cc
+a04feb568ccaf0dd30e49f25f89f16a1
+a050ba0397d5be3e3b2275958c6462b3
+a05223d38ea206b5c86afa29be3243e5
+a054f6fe22cde40f4579b91c42607bb4
+a055349829c710c19585f23b850c46c0
+a055fd93fcf6c63a0c45578f5eaa13c3
+a057a4150f4dbdd91ccdb1c7a9e04ef8
+a05a303d9506f7adab59e6a8ed4991cf
+a05d329f999f15d99ce233a4f6f042e9
+a05d34d6e0898e79bd3c282ab96a9309
+a05e8e2b51e154f26a573a48b73983e3
+a05eaf38ada092177c2d6fdc001f6cd1
+a06109b31d615e91cfc3aca249a6e9f0
+a06140cc77eed5fba2da90990d0ba0ab
+a06502f70a918219709ef5fc617e1806
+a06b9c94dc37086ea32aace2480fb650
+a06be29dbfb9030573384361ae264b54
+a06ce69e36e8003de48dce635ff83935
+a06e6a008270f161a5787bd834cd074f
+a07617d7680b1959d9aa44ef087240c9
+a077f1f81587a55c832327407a907834
+a07c32d30456c644b471a81e864d05c1
+a07e9a11166fd3b6103228ee2df311b6
+a07ea6c526940edfdd2a1c4157202ca3
+a080995f4cd0b80414e711722da2f29e
+a0811b7e346af11a89e5688bd2b2f171
+a081f2fe0fd13dbe1f1c54787d503a93
+a08a46bb4eb2e4844fb6abbe852cb3fe
+a08a7b7dd858b97585b69cf0b2b94425
+a08bea980c543455eb44abcb5d730248
+a08cc02354932fe88bf9c7a2c7a09e3b
+a093860bbcb3f7cbd088e07d179def8d
+a094e410ec544f3e8e63ad7e2ec63901
+a09529409e141df2468a91c665885e4c
+a095a73f4a69500247fcae9a2db8ca52
+a0965eca64fc355bfd6715202559a33c
+a0969e669e7955bab79292d13fb5c88e
+a099080acfa27a206cb2535a52e11e00
+a09936d7c6fa4590cf2d7f4032023ce1
+a09d8cc4521b68dded9c65969a5876fb
+a09e6e1e5b7f2c71f31139bf4e1e40b4
+a0a0f9bbd65c868e8bd69470a2ea8445
+a0a5e70cc01288bc3cb941683501b17b
+a0a6763683106dbaa46ae263bd05df50
+a0ab163bf35f240bfdd5bacdca2a1763
+a0adfed21f13453d2ea745d05993129a
+a0af52e055bc4c663c968038c2bb86e8
+a0af6594eb34895029b017f1f973fdfc
+a0afc172c8c8af7fa3bfc0c4e93d2c35
+a0b44b631f7a287ddd7b7644881174f2
+a0b751384383cd99025f9badf8df24f8
+a0b7a1544775751254971721e5bc1690
+a0ba8ce39fb5de311936be8510a9e259
+a0baf29cd8730765c3a788803291688b
+a0bf49b1014c4e41749ee6da9cc8f58b
+a0c2011b7df862e4e49ff37232965ea1
+a0c45450b4bfc86da85a166c969e573b
+a0c5546ac5d1dc26284db9bbe62d286e
+a0c5aedbd48af78ac8d4cd50165f2930
+a0c6a8d79b60fad32b707ba4441a2d8b
+a0cb44fc35a9f0a5a8cd284cb88e29e0
+a0cb46fa016ff078256314ab5d1330ce
+a0ccc63b8e22cb992175ea59c6438bf8
+a0d28d63266f4e88457545ee4e61be8f
+a0d29963d6fae19b76a386e9948b7e13
+a0d311ca4a24c970102e857f96d058b4
+a0d3d4e1a1da0a93f39458becd8ef866
+a0d5d7485a6dabc9eac9e87b624c1bd9
+a0d609a8d35d9f3cdf7dfa6d097d9bd0
+a0d69d7b821efbba78ad204dc0887f47
+a0d6a09a31687ed48a52d41f659d9d98
+a0d728f55c8b9dadeea9d3d92938b24e
+a0d90c3ff08f0eb2ac242d8f257bf737
+a0d9a723b315fdbd223d2fa4bd4bbeab
+a0dc8f31145743b6723d07b039d7fa56
+a0decee73201290649f2a1ecf40f2696
+a0e0d745fb6047130de8deba180fb973
+a0e22194a7b00ad332e4d20fe1455f49
+a0e3574df905d125b4a214de33be1874
+a0e45e8c5d5dd532b5d8ae915dea04c6
+a0e5d3291be6a0aecc64fa4d1740b9fa
+a0e710f5491a92cd9bdfac9e43799419
+a0e8f78409db01a111d4e711fa11d3fa
+a0eb7f77ca702bb3ae4d05b43e678e5c
+a0ecd003daeacf258586cf204ef4c035
+a0ecf529454cda3171558468fee38f6f
+a0ed123ecb48b8301461717b02d0b726
+a0ee0b2218b35e173a5de87920931fe1
+a0ef233be498ebe3467d291ccece81f3
+a0ef4e4018c123c5e2901881d48653d3
+a0efbc1d0dabcc87dc696805b074dae7
+a0f1e42fc13b9a183686c53b27c59c64
+a0f2b8b5175c510bfe0b67394d16d70c
+a0f3c060dae277b1e570931664bdbbfe
+a0f63669d28fb30900d8d8a14e282196
+a0f683ab4bab6271d4d547b700f1d725
+a0f6d2af7082969e6552dbb65ef01acf
+a0f7f49f290e5f26872de6e971fdfe30
+a0f812923f9a5411a002d5e04c43ac84
+a0fa317beea90acb71922dfde0c97616
+a0fda27b7e28b245f25cad478199d1ab
+a0fe25961f113ca8846163e5930af167
+a0feb511734a69d4c663eb48437dc336
+a0feceaddcdf1284dc2422562a5ec452
+a0feea46c4a5417a9fcab952b16e4894
+a0ff1321c7c05de00879b7273e2e3ca8
+a0ff7be2533f54c78e67f3814671f26d
+a1027a816f3d9af938b192a2a7e07881
+a102b5e18e1a87f1a0f314397a8e6bd5
+a1033a801e0f1ae4a7c3330a3fe4c8bf
+a103bdba4ea11aa9f738057f724295cd
+a106ab2e6ebf3c2abe105bf99423d3bb
+a10725d00e71bc614e94f14003835699
+a10987704dbb214b42c67a9ac0d9eac1
+a10a02fbf914069d8976cbdfc46998f4
+a10c2a76372116de1035d30f6b4d64cc
+a10e41c9868ca874a31149dcbc66c9b9
+a110f2d0957ed4cdaeac7b81558c70f3
+a111037291d55295435d9b569bef5988
+a11232ac6b0d850d9adf9553c4a4f37b
+a1147688cedc50bb366d2f4833d6085d
+a114c588fdd324b11a9b0cad73555f89
+a114dde443e52cd622c64903d085dea5
+a11558bd2148bbd471c6e43439483634
+a115f40a474c1bfbb5f9fe2366ac8e43
+a116864d8aef840fa108a7b0f35ba96c
+a119432528bbd3c5d59deb956c7a73d7
+a11d9b7632170908595d27142b2462e4
+a11e7142b8b2eb09e09f5793466f81a5
+a11e8309532499083a5443329a07d077
+a11f13cb0db16cd1ba1fe2208655b366
+a1232c2d54d60ba9ec2d768888b643ef
+a123309a557d414e980bb04b2fefdd78
+a124b8c83a2c19aec0ea3c48bd57a867
+a1265824bb85f6f69857771910e6c71b
+a1271ac307f21e56a1aa1012dced68cc
+a1272007555bf5800838148e14c61987
+a12bd667a302d14a36aca80393c34d37
+a12c27e78de35317dd25fa0f0f47d731
+a12c81719b73dda0e5589bca45104a00
+a132fffea969451c00b144f62447a53c
+a1347c2eb4d56aa9f4a9cf30967c436e
+a135936ae123fb0e30dc3b091f5f1c50
+a135f88af9539b4948969ce3e5b8befb
+a136dd13e3df5ac2fd915d46c4423209
+a137263d32b1ef8a0f3a006b6024dc32
+a1373caef3d86d0a55f9c682393819c4
+a1379176c82568aad96b337b7fded2f9
+a1386aadd6cf93519ebbf5957ff8d3a4
+a138b796a330069ebe694f7eabe8e11e
+a13922e37585a74a9174e8fda7fe796b
+a13f9e1ef762b1798a26d1cb1332a8b0
+a14251e1c1f33ef5489815856f592a7b
+a142cfc629c2a95398ecd155d6c02636
+a1485aebdebfd1f38d368c6dc1375497
+a1486f440c9bca6afa07dde6e6745680
+a14a1c5220130b6c133f1ab184e3a24d
+a14d6d92386aefcd783c636cf887e8a5
+a14ddd89b37145f35d36abcfe2b3654a
+a14e727b04cd31f115c9658c457a49bb
+a14e787b9d4caca45ac2ade19bbbc259
+a14e7ba7b4ffc122d2af8b06a353edeb
+a15397fc4949ffb6dc4781a74390976e
+a155422c453b0c4c371635ae33314481
+a1595359a12a89ff51ce36b5557c9e71
+a15c53f51c8a5fccb39d47e6db9961de
+a15e04bd26b3a85d8dc511b4b3f64a1b
+a15e20c5db499250b4565a1f66609b2b
+a1627bc656d53060e43503cf993d1808
+a163383fba1daa097f0c9c913e1df5d5
+a1633c0274ed56d5be01965a17b9b86d
+a164e2b185b69f5aad47ce67574b6f38
+a16675e63d2e05b28bb88efd03cbfcfa
+a1689a2b819145db32d384c5f479cb03
+a16a6eda353a4e9f4053059fba8b24f3
+a16adbaa6a5434c3c80526741d6ffa12
+a16e2baa1e3c8c1cce0c932e9433e237
+a16f21ad17310b4b704ba9b51f422f06
+a16f3f16d0838c1ebd000eab07874f71
+a16ff0ac63eaf42f3b74c9f9559b6fe1
+a1709a664a351f808450789ae98d22dc
+a17100edd4b71bb83a7da6108dd759fb
+a172c579baff44c1d5a7b938bc6cfef2
+a173b9a41c234bc5ed5b494fe8ad3d72
+a17453413f4df5dc9e9ed72d5413a884
+a1746d2d2c7170a79b268274668ecf1f
+a1772f4941ae5efb2cc25d43602f47be
+a17766709ccf653ed24a7bdfcb483b42
+a177c332f5962047a15db842e8a26686
+a17900547afaaee64722bcd7efb96508
+a17cd12fc311c61498f54fbf363418a9
+a17da48a8abc29a54fcff471d6516fda
+a17ebf12deafa59fbd175c3fab32eb2d
+a17ef5c7cf925ee6aa20b6c800f8705a
+a18080f0e1a1ca24f3944d7a52a2b0b4
+a1824531bbfabb13c161679c2b3f7073
+a182d920c4ba64778174e65b353df98f
+a184d285788846488064f3076a7b8708
+a1857d0dadff90f4827a5395f5f8fae7
+a185cc931de239a2be17e5fa8896c239
+a18854fbd2777150050fb3c7926b739d
+a18a432026ff86de54e4c9a5ae10a9f2
+a18b7b88db6b03ec2bb70f9d556ea3cc
+a18c09a851d8d1fa950062f410130669
+a18d3520c76f95e46cfa44f63db8d570
+a18fc245b7269ea294a057dbf8abc8ee
+a19152a15598aad20488194474efae80
+a19659fc95db10a9d5df4cad11b87f37
+a19b48a13812ab37bfcca445932f7c31
+a19c7b96ba4ea8eb13a7c41d3b7c14a5
+a19ed9e47f0bfd73c9ace792bd072852
+a19f6075f91edc39b9e22325aa354cc0
+a1a06027c43c930431e1f9238a405d0f
+a1a3d35a6db788de0a19e05d0e8164cd
+a1a3d77cc43dd59743b8b511ecfcc5bc
+a1a40c3b7c92a7af9854a57876bdd957
+a1a44cacaa0f848a06a42dc57a73aae3
+a1a45925c361970f3e898ad4fa4084c7
+a1a4c98fa831a2c4ae4165b9dca79104
+a1a7936e6cd3a97d602fc2536c7e834c
+a1ac1b30348043ff60e2eed52df6b65a
+a1ac43b58d9e2cbb66ab1b29702e0e28
+a1addcd7be30562f5c9050e63d787f63
+a1adeea36189d0ebf54268a26afd4317
+a1ae194ae74f175fd247617c7f8b89a7
+a1ae85f7cc770e0686b386c3a9d0c6db
+a1afd4ad9d0198947673f14c2a17e2ae
+a1b2632e1f2167b9caa6d31b5f1f0ab2
+a1b48f22ba0c0ff61e624a378d3f1675
+a1b6eca3bbbba008488541fecc86dcf8
+a1b72ab2439c8a2a13f32fd72e111113
+a1b81be61ca82d63145660ee7a5d304b
+a1bb2c812dbdf5f447ad889514b53d08
+a1bbef8e278be6aef5bc6680b0dd10f0
+a1bf596cb6d003e3850be6d9efbdbda9
+a1c2561423aff7c1cd62f0bf2c0a8803
+a1c28da16fde36ebc2a27a88ce1a5b82
+a1c460f9e47a826b1dcb2fd52389bee4
+a1c48f6f27509e10318d582cbd0ea848
+a1c4c89851502becffd8b733f4f05f73
+a1c4e3588503477f6a712fe7bda7f849
+a1c5fe780a5fa5cf0d2e98043eddd9ac
+a1ca40466fa575cb3001673551f704f7
+a1ccaef6851d55dac70ec6d373d3b5b0
+a1cda912ca1f9ca3a0d8bebdcffccc15
+a1d05df16f3434664311a483bafd5f25
+a1d2442c8ae623793e6658b8be0c9099
+a1d428c434e172b77845884d6b1611bb
+a1d82a1500f8e5cb19feba2cebf35473
+a1d94e1fbe2a6bcea015c76564b10083
+a1de5cb72294e4494fdf5e499edf4566
+a1df29107ef82d1a14c4b6cda0e23f37
+a1e139c0352e76302d6941118cd8f3f1
+a1e19f4169a29ee36314aca51bd7df0f
+a1e1dea2928e80608c5e6b53fbe92ea5
+a1e4b54303f52ab0e514447b418b27d7
+a1e55f79317c3583b12e8ea60ac3b046
+a1e78d7aef8c45ddba47fc9b6d8b9ab7
+a1e86b77bb61f32cc0c1addec93f53d6
+a1e8856ce6950745921c16dcaae4de77
+a1e8e5c5c175e3bff2dc157c88e9015b
+a1ea0777a27a1b56ffa635c58900f43f
+a1eb345e271b8da84a3d8c0af5077121
+a1f021a18f99a8ae182d5737653e59c1
+a1f1c8e110503f88e0113a9fbbece1a3
+a1f417b32068f6a80fc8a55efd503151
+a1f724358f25a1ff0cf7f7828597b205
+a1f7ffa58718ad7e6f0c52ee562a34c3
+a1fb7df56deedbbab04db010cc2223bf
+a1fcbff031d5ecb02d24ad0f8fa57ff4
+a1fe044a2b98cc6493f29736e27611e9
+a1fefb1b98da3cff0b91394e515f6e3f
+a1ffdb301be7d4de21cbea53a4860a3c
+a2015a224442cdad71ddd6c02b6fe7d3
+a201a390e40cb5e2db7dec9c22be376a
+a201ee0d9122a01477d14c5c9512a328
+a2078c1c11e09abf8a2b7c9e9ed82ec4
+a207b29a98ccf8c33c592d7ab2157682
+a208186f0a2a4455fc0029cfe45fdb67
+a20a50320cddf4b10b5b424aff00765d
+a20b2186a2630b21be787ca1114dfef4
+a20c20ada4018428e9d8efe99963b0cf
+a20c8de60acf1cc52767edd6e05676b0
+a21460302525000a1c9269abba4bf069
+a2174ec6e7e77e76a5a5c3dbdec5509d
+a217a99922c988fde0abf094857a75d5
+a2192b0b3e0c6cb6c7901ae7eb21b962
+a21a80f546079a9f57e921916be9e822
+a21e92cdcf6b57f2789ccd9e53ce038b
+a21f3f0dc29f59bd7c5fed932f913708
+a21f75c18976726f78fbc748cf6e166c
+a2237cb6f02e1b463f051e1a01af58be
+a224dc8fecd6d88c8e3d69a639b6d631
+a225be17672a7d6dfd0e962240909048
+a227fa183e4da14105978ce29da2c479
+a228db604527bea8d3b1ba6a8f101f7a
+a22a00a6ac4bc1191c18bca60a95d72f
+a22aa68401d7ee94c657de8db9989ad0
+a230d7fe30c30d2f66fbee33ffecd6bb
+a232bd4b69779ad14f9b43b7687ce376
+a2369f88dffa7e97468255ee0fb207ba
+a237106f80106f4e5717c6c5c2860071
+a23974ed2545825ae387d8048bf869fa
+a23a77e52e46b661603be079bd95ded3
+a23a9b4e9fbcc6cf725607a137eea17a
+a23fc9b47b0a18683f64c771a68e97d8
+a2420036d5a6a018975efbe551fd74f7
+a243d107986e4e0c1340c96a4af026e3
+a244abd583d589f13c29a2bffded7af2
+a2458b7bff22a1a44a958f9e47772643
+a2466102fa7e26373c86dc6f67b95d56
+a2476549ba30b0fe4d84c360f8589f81
+a247d86a850ad860c666c5931653174e
+a24a6a223865a61626f0e34980581c60
+a24c24a6e82edb116f354f72e851d337
+a24c9f862cc22db910c9f57acbd5758a
+a24eb7efd340ba67212f645d3341a897
+a2505f34dc1a893d79c863e37c81cf73
+a2511b84b2475410148f5b7b3e33bbbf
+a251ce38493f3485e7f215dce24b8b8b
+a254bd2d62bd6958aad41a65ab339fa4
+a2556a587ff3b4d25a03886b87068516
+a257b7edd3db6c18ac7b3a2a59ff53bf
+a25e51d3bcf312125c0835bba76ed55a
+a25eb2a27f0834e100731e864264c95b
+a26077209086bd4ca3cecac772e7e9a8
+a260ee7f14e6a70335b685408136de75
+a263285ec661e3b4646ea00f219d9abb
+a2638750565d43bbbf65fe6d56806c6e
+a26443dd10a593b2daafc3434b21f0c2
+a2650e05fa51fcd062b884a8746b5c1f
+a2656a6e6273bb78be4827c5b55ef214
+a26658ffda2b39008bf4033ffadbd5df
+a26c1490097730b94d0f4779854e5a95
+a26c65e1e1743834bc5e42bfa85bee5e
+a26d24189a0212b3e9374f06400036d9
+a26e18ed7d849900ff84356651daa4af
+a26eecdfa63527c3370ed96300dfc6bb
+a2707531f822a4a50448e2ace817e2e7
+a270d460cfcde919599c00039875e432
+a271dad3419c597143069d5c9543331f
+a27209cdaccea5d40dfaa1b808541400
+a2735e239dc7bc7701a06bc91ec5b9a6
+a273aa9348b34e813ff403769040e515
+a273e30fa5c8b46720bcafb47832f28a
+a27754fc5ac425838294cde5d6d364ca
+a2786105cc3b7cba7933dda3a2bc452a
+a27930bd6c2c473037a67b1f5de77d52
+a2797ee7dcdff93e84c63f458a4be892
+a27bd3cdd88df2d097fe184bcad4dbae
+a27d6a92723ef338be6e49779bd8c1ba
+a27f3bc78e1414b2b8ac13b04c62563b
+a27fa2770a8203be5849d3dd118bf5bb
+a28076910c95c3c6e7c87e89058f3fb9
+a281b451bdaac030773a255cad4b37f5
+a2839e76b82faa7a3ca76c52040d3897
+a283cab21f9e27064c1f3e718342a97e
+a283d5049a8c5b4d307eaf6416127d0a
+a2851d41e700b0173cf7fa440faa83de
+a28602005f68660f2d13c621fd82bc5f
+a28732724e402de0b63330620c730e1d
+a287598ec401d4f8619c60c14029a4bb
+a28817c201b2668dd5c0e58fa9e302c0
+a288619b618f47c2074919762be76ec8
+a2888b4a920aff6113322178e5f2aea9
+a2892708e8d5996b6660475276cbd2c8
+a28c86f57a9df3c49b9a026de8c4694e
+a28e0b00285e12f1c01427fc1e34e3d7
+a2927d5fcd5cd44189398abdd152b8e7
+a29939b3ccf1d42781f652b8d9d41462
+a29d13a9cea4a6875eb5db0e673c9d15
+a29db23a8dcbfca6e3e5199abf231f07
+a29db8790bfdd428f91d4a77f534ae52
+a29eb4501a17bdc156dbc525a9bfc13b
+a2a3cbdc810ecbc4404bb424d7dce422
+a2a429a38286b06742433903cdaf2bc5
+a2a4a6865139925800a95975a2625bcb
+a2a69781f1965590122fc5c65cf7d7fb
+a2a7f820135852c94313be64f0399d32
+a2a86698baa6eb467a2f0546530e3534
+a2aac11b515b35dc50b8c9321580ce0f
+a2ac6ba26acb00fd1c777b2d09921d22
+a2aeadc4c2496f6dbfe369cc5e75877f
+a2afd40284e582c6b0f9311e3cdea432
+a2b189627da7238195c096be458a1c6b
+a2b4b46489b351f648c5b8eccc197a1a
+a2b4d31315674332ca854a6b6bded98d
+a2b4f85ea0ea909a5d4fb5e71df29b1b
+a2b5e5e3b99e918e5ed3b105b7eec3b9
+a2b656fac1f6b2d18089cc2282e205b5
+a2b68a02dae916998739601a243bfe94
+a2b6a7a4366ebb1a45bc24e0b1347918
+a2b91cfe8ac27f7bb6a631a3dd8c1b75
+a2b9fab6b4918b55c9a27cc4b9f36a8e
+a2ba4c04dcf5a15d870c452c10643872
+a2baae05041bd56eadb716aac0898156
+a2bcea4932dbaa1bcab273d9bd8f2d8b
+a2bdd931e57708d5e7a048cec0c2aa1e
+a2bf5a6dd9f13f0775119dc5e7aa5e92
+a2c275770eecb6b88e5d847179a09094
+a2c2a649fbcc193a34083ddb7c5d8636
+a2c4418e01b1b8ef6333afd91dd1741c
+a2c47b917d9bd0ee4a255238eb0c11a1
+a2c57bfdbc31410130920dc3f03284bd
+a2c9d97b621982bd0c889c8cdaa1c9a8
+a2cb37454cbabe283b060c260a16ef45
+a2cc34abcce9a1a4d6ef8cc3dac45352
+a2cc9b4f9046bdcc01052ca6d059701f
+a2ceae794cce3b67b4ff177c9d720cc0
+a2cf3bd2583aa9f3946f9606cf775af6
+a2d3782bdb34c5bc6dd6078338caad08
+a2d54e3fab0111b1ebd3ee3baf63ea95
+a2d6fda7f19911b75b82884de9715a5c
+a2d72336824d5017e35a9cc1be5b2724
+a2da59a042c28e21fe258df0e8dd471f
+a2dbc9cfb16e247906b2b097ae077ff4
+a2dc880685a3f4664bf447ed721f83cc
+a2de8fb9324ea99a0ff583cb720bea31
+a2e2c1f31c91e6ac0eb791bb2f98ae3e
+a2e307589c325a760ae66f8f6f19e6d2
+a2e3e0d40b7d023a2ddd02534cc2dc61
+a2e475a45944c84312678f1151292987
+a2e5452725aa6e541d089bff0ef3a6a5
+a2e9eac821a237466584b954e5311150
+a2ebbf0dc39eb59a4c9565df4b0d634d
+a2eea4a114bdd300b25ed3b7789df603
+a2eeccfb068e316a54d4a18ac8a23dfa
+a2ef4e96e4cedc44c45adff20fa84700
+a2ef972a833c7d3b21778c510fd14f45
+a2efc5bbda097bf697788c791df4ee5e
+a2f0b358ba935c082179077f5eac8788
+a2f27ee9765a0c4e74d48dbe862ec81d
+a2f41b6b1a00f4d20866b74121e35552
+a2f62be28df3a47a0abd0b7b9c99ca34
+a2f63c22e3e619644d2a1e98c93b085f
+a2f77b93e28d5cfaf3e986298bb7acdd
+a2f894d394069eebfb6a1d054df75394
+a2f8e61b61e1019ffc7826636e4612df
+a2fca6c69294e7d7a3c84d4f80732d2e
+a2ff75d8e56d1276c57e26a482781153
+a300d0f4f7d403cd50e66ab0619b5cff
+a3010ddfcfc489f548bbd7d7b2ec0d1e
+a3023a0fc7e6b17108840a4c9e1a6212
+a3028ba297f7cdf3ffe4efe56d666e3e
+a30522a6cb75765eb8eaf8124c418873
+a305f4261058d2fc570e344d079d8515
+a3076051255c9bff513d6db11c0e022c
+a3092f580183ae315a25d1695c77e97b
+a30f51a66c7dcf3f5408539bc215b6ea
+a311d7c2751094acd3fbedfb710ff99b
+a3137ecd503a17550871a76a5d75e373
+a313bb280d7375bdaf50d094ba745ce4
+a313c216fdfabe7d12ecb63644ff9576
+a313d97d324b94487910fb9f9ac7853d
+a314e93c0e078f2161a7f569d556af36
+a315e1eb90cdc98318f05984d2ca0fd5
+a316be77e3ae57bd993ceb6b29e61c2c
+a3195cf6b6f5b369c5001dcb13e28146
+a31975017b4e2893e860736269151bc9
+a31acbf82158dfecd305b0db0850074b
+a31d16187adf6fd939dfcd5e54cd15b9
+a31dbebbfbbfe952bfeaa02e094a2c34
+a31e7c460ef44f0df12942171807fb3a
+a321c7bb48fa28e2d2cb88379a3e2aac
+a322c5394972f72ce12ddd40146d2194
+a3239cccd4a8c02a96fd451f061dec03
+a326605e7d21f596a47b227d39bee204
+a32758b257703474913ffa47353a0fd8
+a327ace6eb3d55a5defc68e141d57ebc
+a32813937248467286c321bde88fa896
+a328360f224ebd412ade16132235d9b8
+a32877428a645ac790fa33ea24b12f2a
+a32878ae4d95c9a84c7ffe5f67dbaf0e
+a328f49725869fbd3e21f48ca9feb856
+a329ae26787e417768b9bade028ef239
+a32d3d9552908679a2db728632ca0af1
+a330b5275ca0a78e11b3703caca0c1fc
+a330db395009fef5323f3397081fbcc8
+a333f72fd313ebe2855812fa2e36c5ae
+a335136a20e458ccb266edcec0bbd5f6
+a33670de915a4181148951848063c02d
+a33711bd6c9fdf460cb79a92b50cc674
+a337e5bdc1701c80b780062edcf18950
+a337ee3f2e74e2fbc263e67de45f9b7d
+a3392bc8765e8d98365f020235c684fc
+a33a8f6631035dd6f2b9d6b44312a375
+a33c3fccc23510eeabc7503f1a3d8d30
+a33e52e5c5e1376369598c748ebb84a7
+a33f707209fb9b20cf7299b251aef901
+a343b8c0c5a5d371e4e2706e98130c3d
+a348307d38cb095792e560546f157258
+a3486e3f4013a38d66cc9cb59672c0b6
+a3489db9cab7af00370767201a5f08c3
+a34b2472dadba391bc4879bfb596879f
+a34cfdfc1d9d0a08d47b2ce9074fe4cd
+a351bbbee2299f3dc2180a2510c610c2
+a3530b03fdc5b47955683bf9aa42b8c0
+a354e2f5330379cc99c3e7790cf27a53
+a35826b11edd9c2c0e0baa35e51b9c20
+a358dba532c4da0477c25f8444033d4d
+a3594a37cdd82d5f77c90e3071f6a475
+a359563a4d3c7c4e5de49d3b61e445ab
+a35bdf7834b84db78a180e0ae375d706
+a35c0287c66b28694a69cfb9a83b67ff
+a35c15b07442c0393cee4a095842b9d8
+a35f6eb41898251e904ee6de7c75d290
+a3634f26d9148ed79ea528f70e47a3c3
+a36587b9d2ee5ac4f92fe39c26e6f75b
+a36ab9ae8f1901c82c597a90b84ee5cb
+a36b1275817af346d05ad3b0597bb964
+a36b2ceb329885570c3960165d5edc4d
+a36cd7ad18294f9fb9ad25916b66c2cc
+a36e0afb3a2df8b18af48fac4874b942
+a36f112afaab87ee1bb28000c931113f
+a37482e503177b7a35ad575650d2f10a
+a375011245d5a52cee9b3584e49c6cfd
+a3762cd7d5934a6f64415a90982be20b
+a3785072775184b318be65f21a4189a0
+a378c3414cacad8344a152293db0c0b4
+a379b0b92ee844a75480c841f4cf340e
+a37a784d2914eff602935ac0af278254
+a37b863a5bf02d4b1c3d543d95318a6e
+a37dba8255da222dd4a2ac391da05495
+a37dbe82ffb8a8368e8aea409e6cce05
+a37edb9e1a4580b7b89d4262879e3065
+a380ac9c8583f48d77d5a690baad941f
+a381a0ccd5f95d58407c3ebdbd104ed9
+a3826415e48918abecd1b88be4b64873
+a383de85b18f907c4331ca1392cc4dbf
+a385d1a5ef3680d0100f66478004a13b
+a3875a8601ada07ff6a71ffe99f19f18
+a387a84f2e235848bfd96f4c5c2aa3cc
+a38807cd676f69e148f16785de41a392
+a388ca5109e88383e3e5f9c38b36fc69
+a389c17a58bb58b775fe153d4a589698
+a38b01d0530f14d7864d2cd9ad17e436
+a38c1b466f6c496e98343398d461b307
+a38d0c02434199da8e92971aa4422f09
+a38e76d20d5e2ab5233cb1db7fad3847
+a38e9979814fc15fcfe707249925f203
+a38f628d2cb455adfa5ee55466f8bc6a
+a39062057682700d9466098eea366f7a
+a3916369dde6be2fb0b4dda782155012
+a391685553fc7ef77a803160c07b7933
+a3921e5a18902e4e24594dd9545aee46
+a393651e0377b19f99619d791d50fd9c
+a393de9a54565414f62fd461460275c9
+a394a2ccf170940dedaaa6fc1ba883ff
+a395d412521a9bbc200c4b39a6080e5e
+a396df73804dd927c256ad9f74e6d1e2
+a3974c68710067c94ba2f4a012a17f47
+a3976088f18a564c144ded81c9bdd860
+a397daae52ef036e7e03d025baed03bb
+a3988137fdd555295bb334d7d297b52c
+a398a244e412a4fd224cbb62f68e8dd2
+a3992ed3bf9e5c495c402a5c147d92bf
+a39ac8295decdbb5a9892c55497ebf9f
+a39b5affbf5b010ab7909d95fe0ebe7d
+a39fbf2bbc24e255ae157fec09c5a670
+a3a30104b76ba3a368525fdcc417fde0
+a3a43ff0b1efd9129dea540dfa3f791b
+a3a56045629d866ef413cc12dd6eb5f9
+a3aa120ef89d868db26bb4e266f6b1b8
+a3ab5a0b368b618b7a5c02ab276eab74
+a3abcc45c7332cd40a947754539b7101
+a3adb7597cc3038d0026f5af8108265e
+a3b1e135f2b0865e2f6af6f9b2f91179
+a3b1f9ca8e61a751f2e458dde51c0de2
+a3b96b28d05e1830d6f6429e3cc95e25
+a3b9dc909b41d0df04c06d3e7b2ea6d8
+a3ba874c8d8c673587e1131fdd89c093
+a3bc33196cf63351d19b0d5f4d0c3953
+a3c04b6f6195774140e757ae30d8a14b
+a3c41a40f82f32c5029bff42519e3d20
+a3c4c435c5fa8ddd2f3a5a8a648953a5
+a3c575cfb911a1709fc9aba6c7bcc693
+a3c605865069949892a251b555131208
+a3c656adfd2544447d72890e9297fb3c
+a3c69ee4b74c444183dcb5ec5775cced
+a3c991552eac98d9dc54fabfc5ee35a8
+a3ca674816300d9be23ae855471093ad
+a3cae2d50b545d871f092b50e2b3c836
+a3cba816aa3308521c133a3743a55a37
+a3cbd78b5f3d34405ecb858ec5aab92f
+a3ccaf6aad908e71d6d4bf6bdd42384a
+a3cda589f53b2cd43be1451a82e96177
+a3ce8f5c1ee631a6d6fd53c970461793
+a3ced701e3f55b325ceaf917fc2d28b1
+a3cf782683e71ed0907584ff10f335bf
+a3cf9509f96879fc569ed21d73192360
+a3cfb706a4fe5642e1a3f760d4f29e77
+a3d00ec39b07064ab79f8299020d55b1
+a3d3459667384fe5824ef1fc63828aa1
+a3d66c5485cdb98e5e32efdecae42426
+a3d6aa9f7e9120824523d9cc81556523
+a3d7b80491160294e495b767326f0c62
+a3d849627945901657c2029140450671
+a3d87983ae25bc9b8e26172518a0652a
+a3d9cb437cb331f6338db0dcc6941b1f
+a3da36a93fc376682a0f5ace5bda0724
+a3dbf5f3b540a6fde8c1b228ee463097
+a3dce7409739001e82d8ee7b9905c736
+a3dd61fd4b7b0545042b15cf209c8726
+a3dd6c54d63a07722fdd67483a60ad99
+a3ddea7dbad6be7023838fcb39a12d42
+a3e15a88900f7aed7fe2b36a8962cada
+a3e2a7464a8eb63258f47fb4ae45b634
+a3e4daab6dbf18cc2d34de4311374d6f
+a3e5611bdde91f444176f4463c9a4eb7
+a3ea1f6ea91944dc5346d870016ea5b4
+a3eaa4fef9dab48b8d681d4006a63e0f
+a3eaf18332a3f84027919a28ddf090ab
+a3ed008cd86edc1b623cf31609bcfb22
+a3ed74bca3cd465cf6393085bdf466f1
+a3ed8fd6fbd5b24f739e9656c0f7939a
+a3ee94296aa34e69159b631fbbd3b7b8
+a3ef7d495ab02dbe6908d008045c599e
+a3efb3ca3076e00ea4aa819a8e037ddf
+a3f04bee88df151c12c5b5dd627d752b
+a3f408a26e46b5590909dffaf9417bf6
+a3f74fe7fe757467099d28748127c316
+a3f991d1fe812d9c077ce9acb2ad5df4
+a3fa8f28e0e96ca0475589d720462adc
+a3fbbf92f1d1c2afadc66c3a949749ce
+a3fec4e4a3a1c91c8b6fa543b63bcc72
+a4004ae44d809b75163846255eb00fcb
+a400aa95ac89c4c97e3c21888b0883b3
+a403b1ffc717c8344dab04b4f999e16c
+a405898093f1d9fa2c0ee0a01d768d94
+a40600e7090a76c29a330347c3efb67b
+a4066e96911c25b9620bdf03dbe1c924
+a4068a8994233359b26b0066648444e4
+a407766bd82262267d666ebb2bcada85
+a407e3734437da008c56bc3d2cdea39f
+a408999a2587e9a93a0dff5698aeec21
+a4093cd23987cd0897ca863ca3529324
+a40b37654839ae60aaae19c835e37aca
+a40e80e39bc21cd4cc00f220a6a0d966
+a411ce194060a1487d28324d79804b87
+a413c3599f4c20afcee4d919b9258c85
+a4143dce785c7d910b45927d179c802e
+a414508b05bdf630f0c93d78b51c0f5d
+a4160af1242c503ac85733e59775d8b9
+a4170c1d89958d1c4dedd06ffac13573
+a41a1e8ead0191c73f00f839ef5894a8
+a41b8484e0101426e18b17221af69d60
+a41befb9171917fdafdb554a11347184
+a41d7c155a135f0313fa2d02ee22d497
+a422788bfc192efcc3741880904ab5a1
+a4258d8b8dacfb95e79df3554a587774
+a4279a13a95e53879c65350d814ae0e4
+a429071eafffea2082306301b93df058
+a429b0d661b302ec43bddde128dd3e79
+a42a33fa343a16bcad72d2c7e6663a67
+a42a4aab80a3c28d1a5820b47649f8e5
+a42eab6930105da2e2807fe6f309b735
+a4302cc20eb59ac7caa2680f17d49ff1
+a430a1139530da49869220489a46f417
+a431a78b6eadf7ddca4e01544730e225
+a432dcff9af843b79132e80164852eb5
+a43327d926f98e51204268258fbb7f6b
+a4350dbfe734a3b518df966b58914a2a
+a4353e9e55d717be29b9fc4b84e4f056
+a4369a8f5e39245a9aaf35fdce9acca5
+a43966508c5c1285f89ec358d3b464dd
+a43bda7aee775b69b20ef5715007c78e
+a43c5de704b36e3b1e015a30b79a7dd7
+a43d81089ed3fe696688943bc0ad5d5a
+a43ecc1af75a31bccb870d31c0a9dd92
+a43eef9ee0e5bf1be241eedac39a5d9d
+a43f3b98b6e0b9b199788c25571457f0
+a443879d36ac5ae023c485a084474557
+a444f4ab2204174dd687786541e3d780
+a44548150937c94204deea154cc73004
+a446c381d60e71906b9f3e0a4d9bbcbd
+a44728ea7a2027f486b389441aecfd98
+a4475a40e0bd7a180a62a35bc0f35b60
+a4481c3693d7e883ececa9c8390ab93b
+a448473b22e9e70273250ec109f5ea97
+a4485441ab0b726d5a44c3ee7564b62a
+a44989b64b1450f255feebd379170ef0
+a449fde00fd09996b5f6daeb0061ab9d
+a44a1e07a708be4060ea523ec856f633
+a44a4754ec265540e391b0459791c32b
+a44bf1e0aa4cf8acd949f5cfb8876a9d
+a44c523d09061b6d60e659992cf1a5f7
+a44e2112b2551b3bc5f8edbe5911455b
+a44f6b434a0d4f1cb21474427e744263
+a45231051a73088c6e13ac18de75d0ee
+a452cf8eddcb8057e98894385734327a
+a453ddc22a810fde62a8728a88cc3e28
+a455e330c26f5228c8cb94d7786b5fb2
+a4562d21cdeeae66edc965e7351525e4
+a4568cd497ef1ecc377c97a058a7c0a9
+a457503495682802834fe512a0f4615e
+a45c20ac2284758565b083e22fb2f68b
+a45c53a161bac48701b41af31aa0bc24
+a45d966f78ecb1e9c47b9765315ad7a3
+a45e4b894ac0aeb948b8def8a180591e
+a45eb7e15daa2aff99b56de0c1542b78
+a46388ab5316f8dcca51089d164e704d
+a463e70763df336643d3ec4959133df8
+a46662b956a8a4b56c5d25afef1c0cb5
+a466888fefae2baa72cd09804ef4253e
+a46698737cb4f089f78cb1a184773db8
+a469247bf364ae702d3dcc9c548e86c9
+a46cb6c157cdf72cd384e5fe5cda5955
+a46d885929e971a7ce338df14ded0370
+a46ea2c7973724ce4714ee7f9ae51b84
+a4705a855ed70f80823d30a66c544db0
+a4732b662d22af92d2d479c3354b20cc
+a4738da2bd3933dc40bfaa6e50a99dc9
+a476a4cd5d0d8502192bb73c09fb993d
+a476b52909b88e49c41be3d9a60937a3
+a47ae23f48f6e022998e239f9984b8d8
+a47f0ae965d95473f224e34717191727
+a47f6b202260a2aca5a4637fda968a9d
+a4814f62d05f810fac6ef602a5c5cdc5
+a481a09509000f666e7a5a7f25d3456e
+a484718808eb98fe0f318f0bedf3dbd7
+a4884dbf970f050baf117463dae3b799
+a48c2bc6799061dca6366b08fa965378
+a48d43a4d24ac81c6650e3ee8607f8a0
+a48d684cb45cdbf4014fa912cd7e5a68
+a48f40ed4d8a1b8428e0ff9a9f9675bc
+a491935d5162ccfb22a63a75d5091075
+a492e8293a8983f0ff2f77834c2e713b
+a4958a034c4301a72739901b75766e74
+a49655ac980172038cb3d064c33b2ae7
+a49c02ce65fca446ce693c3d319b4f89
+a49c24a9565bf1ce0c9b46fe72827045
+a49de45233b07c84f1840021fa895637
+a49e3f67aea9848501f92d0bed90edd6
+a49ecf5556c0e72f6e66fc7c413c5cad
+a49f2869f219eb161ebc7ad9769c431d
+a49f63fbc31b8b3ee6b2263594a4e342
+a49f9914ac0433f7978922cc4fca9651
+a4a0657c1c079520b0af84fcb0490756
+a4a14c6e4955e61ce77e6bad654ce8be
+a4a1d589d464ec42b66e460a9f8b7821
+a4a4bb531882309e8ca8324de667b44a
+a4a4e525032bebc61bfd70c5b7eca5e1
+a4a7b4e118c8f7040990c416c103be99
+a4a8fc4d7adb760e2c6ba8588df713d4
+a4aa1f5add9f67dcf9b66c533c5151f1
+a4abbfb8f16fcbd250c960ab9f657990
+a4b072d4978526c6e499d5f879705c64
+a4b2747d9b2857894034a3589aad575c
+a4b29072ef5908180aaf58e72f1073d0
+a4b4d2a65a15cad36e33aebe619350cc
+a4b4fb8b0df5270e3cb907506f5219c9
+a4b63effad0396ccd2458d6f02e46d06
+a4b71511a4c6ccda4f38e8f79f5d7342
+a4b978bbc218d5f45beb1e6bd01c9347
+a4b9ec26acd050e5534c5e6109364aaa
+a4ba577aa4c2d4c9758a4a4720e5f2d6
+a4ba96773365a2ebde22524955bdfc8c
+a4bb318d898b729a38f21e24ea527319
+a4bbd1e3df889c556d02c229dfe9adef
+a4bbee27a0eb37bf82d9bbe5b2c438c9
+a4bcb34168a6426fde09fa3250c175ad
+a4bde247d19fbfab6f7b8071bd5815c9
+a4becf06a6d96ea349e7d43ad02d8cbf
+a4bedecd7acf6542974d0bb28b5967ed
+a4bf711b391a75ac9b809a830ec2d6e8
+a4c272db221225dc146e3e396bed19b0
+a4c39421c09a940f3ae9a9e83757e80c
+a4c4e60b53400717935bedf84ebd1f0d
+a4c51c47de24de70388f1b1239955b76
+a4c57b8fe56ea7d87a2c27fc775ad52d
+a4c7a254426cb4487140ae17688930a3
+a4c8722a74780c59dfaaa7a7e55ce6cb
+a4ca4fd1cd532a281032d4a3c740062a
+a4cb690cf10466f72098da9253c38495
+a4cdad07bb2d1969dc272338886148fe
+a4ce6f91231f133e94b388eca0f5e631
+a4d0e27c6ea982b32847923c3ce6b76d
+a4d26986beafe5d532dac54210501ced
+a4d2aeb539941ac2915ac7e2a1320d66
+a4d359adb840ad96398e7f39e823390f
+a4d53c1befcd246f174937cdcb93ff63
+a4d58f7204d703b567390069852af237
+a4d5e2d38af074e04292d17d3f56bb99
+a4d73c41e13b0e61a232e31472d5f323
+a4da6db4af64c2ddef220b487bc77d14
+a4db104833b9ccc9befaa3a19c5d480d
+a4dccce5d47fb1643fde00938399abc6
+a4de465248f984b1090b3e33e9260af1
+a4df58d4efb6ffd57e638d0f6a45a85d
+a4df5b423db888c2b64d6a8a5141a35b
+a4e1177e46b0ca50e6fc37f4018dd429
+a4e22156336d9cbf25f440c994dce108
+a4e247f2f36a2850d9035fdc84110744
+a4e446b5eeb722b3fc77848928ea03a3
+a4e4503ac3cd7f5beaea4b281cc0c915
+a4e4fab6719e3e6de73a7c7de7e70014
+a4e51d673fc3b10cbd0d29de73f46845
+a4e5dcd71d99374a91689a775b18427f
+a4e7cb66e8755c5d02a78c61f3bc86fa
+a4eb08405fcdb8ad2b9bf627c777eafd
+a4ebeaad86a52686faa0b07be519f873
+a4ec383f72f56a5c152ac1d8e0993b68
+a4ecea027ecc6ec471da793bd6c82588
+a4ef9cda7b55f7f220ffa4d7baa4606c
+a4f0a52ec9396ff20c6f67d5c3d3fe0d
+a4f2cd0ea26b434ea6fbec4da3d9f3d3
+a4f38ec6e8823ad9cfe4cfdc86c204d5
+a4f412101763c05c4e089dfe5f8bc138
+a4f97bc93ad86cb900845beda8f0540e
+a4f991af22ffc6fd738e26a71b57c342
+a4fb781aa749b6ca97ea02ca48a18283
+a4fba2b55b650dd0b20eeedb2253c27d
+a4fef1f69a166e5d2e4deac9dd095f2d
+a4ffa5f0c7fffd24dc93017cdd9e7881
+a5000119cfdf0ab7885bfb4e1a79ee30
+a500ae1072ed6b44e6422f912e842ab3
+a5041b1dce7b80ba16db3ff6c69754c5
+a504477598d90019ee9e2898393cff49
+a504e96cb1ce1dd7d339e25c3d448e3a
+a50607067909197a8f320fe10f6faf2d
+a50859c05ba7de0f32fa5f9b379bd868
+a508cf13830de3a9e9ca6098a2a31d9c
+a509e3c03541ccf97cb27aeb6a1c0635
+a50a7290ec1f0f73d00f87b26763221e
+a50be14dc5dfec312735de378a06c3ff
+a50dcf5dbcc38258afcf7a19cad7ee1c
+a50e2705e488ecb19283a1a794c3cb4c
+a50e5373d996d45d95784c974d020be2
+a50edf12b9e5d75a0a846303cc9f6500
+a510bd092b2b0ea44c19c6092c55aa6b
+a51145d7b6fbcc43597785ccaa857598
+a51195c937c1439f66f7f42756081a76
+a513f37d7f46d5ec13a1d88d7fedcbdf
+a51534bcf0425380186a1e7d147ed719
+a518589bd1e8e71275d94f55c2335d4f
+a518db31eacf6ce9c2bd5f6d37af79f7
+a5192af6a0f00b168c6fbd640fa56e1f
+a51ca8c17f9487941945c9ff5fd4f61b
+a51d363c7cfc28541d6b2882edf58f84
+a51d7094d4e8c3a94a8207af928e633b
+a51f0960322fb6b4381df61162abb879
+a5216ce4c388a51c5ff5307861a189ad
+a526013b38e55c7c71a618b55825577a
+a52860ffbc2d736ee5bb2241254aca80
+a52966a225ccbb11b8f221255931970e
+a52a22dc8391fa2708f32d2aa34fa146
+a52b48bf6084404cb834c3637c94ebd2
+a52ba0b7cb3567710a359bd1d313c1b1
+a52c4edc59cb9cb1d1d9bc1e7896efda
+a52c8e1999d80d4518780a1ffe845dc7
+a52de324b24b88208f19ab541c24dad5
+a52f0aececbbeab17f505865b6d93c31
+a530afe186659476ff1dfd3363844835
+a531fb76b507a09775525133d6086951
+a5328ca5eb5c464e8d9b94eb9747bef8
+a5330e19705b9a32f3013bcfad0a2a0e
+a533de6514b3449b0533d5cf7685299f
+a53407bf18892176f41b75fee94e8f8f
+a53523e7dcb9629fd1c9999e4984ba74
+a5383bb03c3461e6c973a9f60ade7116
+a5386ceb39ba16de4e8fa79dea8b5564
+a540e3809af132b448e9b58533ff2e69
+a541816a730faf173a113811325a1d9a
+a5439c4fbc1e5292f960708bb76a2442
+a548605c5c18e451ab2fa5238a880c0f
+a549c8c5918d6c6317cce4d00adaf99d
+a54a8c8d8b2dd73b3faba5feaf4fd231
+a54b438b4163d6226d92919a86990548
+a54cefe2741c8530a8f58d8ecb32c7bb
+a54dc7cd4afc766df88a4de48882edfa
+a54f4224eca3ef532b7eb258fc633075
+a54f7deede6b53dedb7aef92f3e6c61d
+a550dd89a280de79cab592c5f16b50c3
+a5511558def493a0ed7e5efec8e1e17a
+a551a96dcde83b4f80e6b6f1bdc08def
+a5521aae06964a2b4f447bc8693cc5a6
+a552555201886152855e204c5a4976c9
+a552e110caa5c5e8d196404ec08ca009
+a553024a3acf3da321acd23dc43f2c8e
+a554e9cd2da04bc9426c95c7c4405042
+a555674c08ab8284316120812ae14119
+a55593ab968726da495b01e3a83a7263
+a5570a7e22addb8fc7b22662e67429a9
+a55719db1c5785f03050e21db63f8fcc
+a557361366d6c9b892812fe2c52e15d1
+a558f56c776414658d81880395c2b385
+a559413b860b8630ae98f9d362154c3a
+a55c68e95fb3d9b50af77a005f6cd2a6
+a562e80c55ad9d85fdf984e1ecf70a03
+a562ff5c7233f6174b058bfc00440ce6
+a564522862ae9caad34d913933f15e27
+a564f4d0bad1ffa1cb27bb8f648d2d54
+a56606953402b42ca1643fcac4b80de1
+a56666641ab13a091e101900b6da25c2
+a567d92a5d3903766bc011f3adf656f2
+a568775c41cf254c64f76223044f84b2
+a568d201d1c98dd40b7aca4f5082e0d2
+a56963ed55086bd1c0e732c92623b557
+a56c66440f4acedbf462408f6c6cda16
+a56f3f0805758fdb59e3b09f14284f4e
+a57028a3e7e7095c11a0461d970651b5
+a571f2054b89e696e8d4e0da113a5f49
+a572695dab2c78225f4ac1b89a354d5c
+a5727929bfa0f2e6130ba6d1258405c5
+a572f8020f06438613258742bf5da531
+a572ffd122780f46a2ee607c9b8730bc
+a57365453b5b293a41aca600b4e6ab2d
+a5749931e8fc371d3ef465d4e434da06
+a575037e4e544ed432f8f294846deccd
+a576a8ef3263e9020573562bf9d14a49
+a57a0a351cdc9edf7efcbbc6d5198e5c
+a57c4431b4ca3bd3c8a63b8691bd6f9f
+a57d5414d6b45ce43c5f05de4a71f475
+a57f612bd6380a6d808dd2b4cb547c4b
+a586ec469376dda5dcd4a4c1fe49e986
+a587d7798b03fb591895d63167f1a2f1
+a58c9c9dcaa8ddf717e699ba7dd43e5a
+a58f21d260a8a1b769479d2295600f61
+a5907092e8a476dde856a90be02a63b1
+a59105a3e94a657d119e904551a7fc66
+a59264fbb291ee4a7e6c14f7d9a04323
+a5945d4129214ff646db70d16d2ca368
+a594e9d84bc8174f9c73f512785e83bd
+a597b3bfeeb37fc6d2947476c56fa518
+a5982b0dfe905bac0ec720cafdbd0ada
+a59a17876505130c4dcb87a7a06ae7f0
+a59e15dbd9e53b143423adc9906d127e
+a59e734465c5e07e393291d7628aeb15
+a59f592df7482d92d9e8eb6a8680c887
+a5a3515fe5ff58737010df98d9abd45a
+a5a378aa6f7ce768e005d2467d45897f
+a5a45f4857362fccb9a6d3bd747304ab
+a5a552726577a65460e6ad950dcbfffd
+a5a5d63f4013fa732a1318041521973b
+a5a689cb9d9012ec9da00f00a73f3115
+a5a756744c92ab61e4c325df72df5ed6
+a5a87953778e89bcbc4981d07f7c6329
+a5a9624e2263433d2995c88c8713e7bb
+a5aa78c9a6bad668df875a6ae1562d29
+a5aaee4d3a2341defc2f0ddeba6c7871
+a5adfa5b769005f70f52c55dcf8e53f7
+a5b0e845614d983a32dcfe5725eccbf9
+a5b1d1a32b2b41f184d9f8b57b456864
+a5b349294fe7832d189a76eca3a20efb
+a5b4cdb245a6378658dfcbdd37bed055
+a5b899c7020c66000f2aba2740a0b498
+a5ba1a2b2f6db09cba767ea1dfb2fd39
+a5ba332f799080d6488748d3d5dc1094
+a5bad6d753e622c1c112491bafdb26f4
+a5bae1a6f7f66aac337c5d1aa9983e7d
+a5bae93cdcbb62337893ce59af31384b
+a5bbd521ded640306a5db08e72dc460b
+a5be0d7c0bfe10a98d9547a281b82069
+a5be22e1e9e6122a78e26df4c33e9575
+a5c0a24ec152c7b56e4e7ed0167dd224
+a5c65adee364c70ec860a9e058e4cdda
+a5c782086ad9692ce91c714af0951c0b
+a5cb98d92f6866b36e1ee8147df77f44
+a5cbec9aeba9d02b39fb7ca6eba05f1c
+a5cc9a6593e478ceb7cdd3ed85516831
+a5cd8d4546ddb90bd8533631d8cc14da
+a5cfecbbf0db5b2923e690dc97918718
+a5d006b7611a107bdf63a57f2075510a
+a5d05d21a5d367d76657a30bebad9c28
+a5d1ef06e4dcd20237535ad389aaa232
+a5d602636c189438f48426d3b3db611b
+a5d751b835b2d241fde300fe690b463a
+a5d7de5dbd907476dcf3cbaad0638afe
+a5db22b1f6f1b0d031e2fb789226b5f0
+a5df57edca47a1f717d8f6130a31d450
+a5e2217c969e9c4e6bfb4832d74dca36
+a5e223e6db6a961db1c89ba150017e18
+a5e3ddb792ab55099d0c4b900300a196
+a5e542dcc14988c0d96f2b481f9d38b3
+a5e9199ba6af82a26fc4e6ee51671726
+a5e9d92b27db72e73775af8acd89f364
+a5ea19c4c52907675150d51b706e26b4
+a5ea1a4e59d06e745772bddb404dca33
+a5eb1831c53a222f2678ce9e2a3405d7
+a5eb6cd40310afdd796bfc8fb35c88a4
+a5ecaac54ac4058b76e9b74cbca8826f
+a5ed6bdf6f25917397b585f98cb9c7e7
+a5ee1aeebceead355bbd62bbdee3f315
+a5ef453ae71997794093b8d9f62f7659
+a5f17a9ad3d65f7224e59e64ae049395
+a5f1992ffd2bbefacc174520aea1fdee
+a5f25d3e6cfaba8ad613303167cce778
+a5f2c990fedaa2747ce413422a8c59cf
+a5f2eb996f7b1f67c948fbf9b0609db8
+a5f48e4e0c0ef83220e634a711e1c7de
+a5f4ed3e58ad3b20ccb2dc01c99261cd
+a5f8d14eae46e42e2b6ec8d42a6456b3
+a5fa999ac25f428335a669fe964379c4
+a5fbbe80f61738b735ecfe8163ca3f98
+a5fbd4c850aee312360f2e892c3ab2ac
+a5fcfcc4071ba89ffd5c76fdf9964e93
+a5fe6cb745f5ce7f04dbcb1362d4d53e
+a603e2a23bbf1cb19b6c96ad3a7aed22
+a60661879da6882d7764924e73dce1fc
+a606df1c57c8d9d1646219d896e8defb
+a60752c0e4a8d3fe61d29948a25b26bf
+a60833cc66b9535a4b41228af78a4bda
+a6083d27cf3d89dc9662cbf08b2df8e2
+a609305b13b6d3c156136689961a8de0
+a6093f7d08b8c5b16c87271ec838afa0
+a60a603ccac26d59ba85b40b6f726171
+a60b6937538d756cf769ab366c211593
+a60c598018d56688bb8572389934988a
+a60ced6916af7ae2b72f2e9788fc923e
+a60df7d7961650e90708574d75faaec4
+a60fc9a6dc9c517a0514ed4ed43b110f
+a61237deffae1fe283979ea379e72734
+a612da4b93d33a4c1b4ce66afc454567
+a614e0bebd1982bc90f0063500d905b7
+a61528e076dd42faccd703b404a769ca
+a6173d0e6a3fae04e10cac652975a15d
+a617c47e11aec104dfe1077684ae0bef
+a61962c7329c084e6347c14d14cf09b1
+a61a08f753062e150110b53c8ba6ca0c
+a61aab1b9a16e5883627cea879c2684a
+a61b15e25f09460d642f41946129d0a4
+a61c0f661fdcebf2f1c920b26bdcd6e7
+a61d2317ee4393fe16d84d7971f17e1d
+a61d7ed03415b6918bdcb6a5bd5acc26
+a61efa33aaf660873c26fb9438085fee
+a6201df4b75230379987a71dfe49f6a2
+a6213ae452945f1c59390aa573b72eae
+a622eca604019ad1eb180a568603754a
+a624e1a75412b99becbc255954045ddd
+a6268449874faeb263c23243d3acdf0f
+a6299c78ffabe98f27498cc5398b2aec
+a629bceeb71553e1354623b9dd71418f
+a62aa2d0aea162f405bfba7be7b6ac2c
+a62cbc3e1777cb728add27cd03a4f356
+a62da9f29e3065155d66e41ed86f4df7
+a62e20f49201c5f28beb35039919206f
+a62eb9392a4de07eaf38d6baed6c0f4a
+a62f20995b167153a2c61978ea5908aa
+a62f734ee98798e151ce468974207494
+a630cdbc4fe9a24c9b6331aa0d5e9bcb
+a630d8aca0b846a64e0bb8a60da58df5
+a630e033562b2502f1f098ee858d0e73
+a6313f628960c1ca462ea852f593bf15
+a63197b3c93ac9bb909cd308b3667a4a
+a631c1419e03f84d3d1ffc0ad3751163
+a6328860f557c0ca5180fa123e3ca168
+a633a35dff021f9f56ffed752070f9a9
+a6343515721108ddaab24ca02301cdfc
+a63597eed3eecb29917e646a8ace39c9
+a638889b0b8fc569b269903602095681
+a639cea41157ccc829d39be4cbfd51a1
+a63c1351a81a7c7fd4bc22492f9c0708
+a63ed5460ecdd22ad282532bbb8344f9
+a641655fe27d97d4216601df35e33fb4
+a64207e2c02761a05cdddf99d0a97746
+a6421cbaffa2ae3c8865adae238ee0a7
+a64373afe775daea0ebd31f6366e205c
+a646a76d216e0feb00dac6524bb7bb9d
+a6475609bf273d78a247c3b0fc82bd55
+a64a29a174f936e7fd844376cd250197
+a64baf29e67b1b3e3eaea1324462a851
+a64bd99d41bd3d310ea6b329c6352524
+a64d166f691e1adcea02d57c2ca15fef
+a64d1d3d35cb0a9566a232106f66e66d
+a64ed71f5d5d354be359cdc5f9172a35
+a6500ed28412329959407ab1fd189813
+a650f1be5235bba5e3cae340675fdd3f
+a652a870100eccc9d146aca3a2ef102d
+a653919e154904e74a0b51ca9473d7f0
+a656d451d4cbdd0389b431ff218406c4
+a65735862a9203482cdcf3052d8681b7
+a657627db459fd15f34a669a69dacc0e
+a65928090bb4434056617f44ff06bad3
+a65abeaa00c047bb6ac4fe79313c018b
+a65da9a19a867caa1c73368f36156cdb
+a65fb7a591532dc232d88fc8312ccff9
+a6603a401ca57a68d2bc9cac8bbf34f4
+a6605e99a0565773abff44f1baa0d40d
+a661ec652c02185bd50427539d92240d
+a6635204797f76b63e0181d5e14b93ea
+a667a0c400188adaeff5e60b7e378611
+a667c29358abe1cf8258b00a4f2a7dac
+a667eed86f553f3b3254210f0f5c97ee
+a669e7439f892e2850885d1009904325
+a66b1515617577b1c1478dfa903c6a0c
+a66f2aaabe35123be31e60349a0c65f0
+a66f9eb5f41c866d21ce1f25643dc933
+a66fc931e2dd5c8f8db1082624022ed0
+a67041cdd3cca2b34bbbb3a855fdcc81
+a6716da12d51b21652a316ec928404ce
+a672d722bf7d518ffc50ee4d5ad25681
+a6764b06e239d78f07c7fafcf0efac80
+a677442bbd185712c60f40ad5a23f105
+a677a0a3eccc6ce9f7f15d0c2f5748d4
+a677d649f2aa9cc88b523b0393b1b29a
+a677da74bdb2887d910822fa6c56c874
+a67a666a8f52b5a264edcf53c779b4c0
+a67a972dc93f5d4360f27fc1b506da39
+a67aec050ce68048f0f90426bfa7d669
+a67f5ca69a37ca93ec9f566bef3d962d
+a681b440a53f79047b8a6a6130ea86ac
+a682c01fb330af148ba62a00c64f9158
+a6862548fb3ee37a1eb192a00194c9c9
+a689b35dd86aa6bb963b53199fc25b95
+a68a6a39c5266b539dab3bedcd0e164f
+a68a7e3e817b7c4d422eaf80189107b5
+a68b4f0b4a534c696196cc705ed56dfc
+a68ce4bea33f74fa911f9c9aabc9a5bc
+a68d6491e35dcb7ceb89c93683a12cf7
+a68df55bd0d5074934cec61e87d2aad9
+a68ea93506b02802ade07f585953ef93
+a68ed4b191e408e735fc65a2b6643a25
+a690b03a447867fb4d2076d07e0e88c6
+a6932311c0212dadcb7b07aaa6d8ecd9
+a695b6dbefa5a5bacc47f305817a8b85
+a695b8a6a985dc821d4f2c131aa9b5ea
+a6989e0a23139b9226ae2ff362e36b3a
+a69903a53829b5600422e6783d19da53
+a69b7926a2e6cdcbd81c4038127907b7
+a69de5c4a69414e9330d64e68fab7ec4
+a69ef562048276825c7df9d8f9ace3dd
+a69f7667ed253337744afab02faba012
+a69f7d65f6b6d1d4d212bcae15a679e9
+a6a0d78a803959be9399c8583d53fe22
+a6a27436ea028c7bd0e1d25b844beecb
+a6a59b14c4a0c0fa5c1b6208fcf2fac7
+a6a79540390c0e8775d3369ed01e1d70
+a6a7f11a21fee5c42a9d408f90e124cc
+a6a8702c98b41fc83e7645fcfc76cdcd
+a6a88645093db1fd6b7985353924634a
+a6a95ce6620756006862575e7a3ad134
+a6a9fcc573e6997bf21ccdcdb0f7ccdc
+a6ab51c700214046418db114d198fefd
+a6ae4873004df86610953aeadc01a123
+a6b0cc8b01689f46130885eaf4d32f8c
+a6b0e489863fd0949f04f53a0945ddb5
+a6b2128800c0550e87229b850c5a7da0
+a6b23694acf3a218388b26840bd59bf0
+a6b3910e8f5f8cddcc98ed28ffde8eb1
+a6b8b75ad1c4abfe721ad00128c88ce6
+a6bb205b6ace0901bcaf3c1666d209e7
+a6bb9cac2c81c9e071d229942fb30029
+a6bbad8a6f7a7de8a25081209ed56a57
+a6bd31fa87cc99c4df00b03900deeeea
+a6c1ca3ac67d7bd35f840745d428e930
+a6c39a6db242cabaf3848418dc8bc62e
+a6c4939a89ceceda85439692be403ebc
+a6c7d0dbe9d7445a9ce19fde1c0a88e5
+a6c958b2aed9b2153bf9cf9caf3d64b2
+a6caf8c60bda1a560e15bfa202702cd3
+a6cb0f8b0a49ee1544d7d18a641bf910
+a6cd3e4cceb1483a3bc2db2c73c6aba9
+a6d44604e86a19997282f5deacb3dd3f
+a6d522a9f5c300e3be7c5eaf19a4ab00
+a6d5d2ca27de290fb13dd7d9ca10336c
+a6d5f08b9bc5daaa1335c99380c84d54
+a6da2bf9a4385437c0579f3952d36c27
+a6daa4f8838cb7946e335b639b23b6dd
+a6dbb0ca18539cd62021c1bbf9d134a7
+a6dbd30c1deed7bd726bdbc4013c67a5
+a6de8a765cdf65b9711b4e546c34b365
+a6de9caaf0657fcb4da8a3520914d6e5
+a6e1f30d95bf23446248a72608108bfb
+a6e39c633840192ffb571794bf4a4d55
+a6e55e52ca1ce98b813c97730a460637
+a6e5eab5b53b6e0471f6c4a7ce687402
+a6e6ea68bfd7ec7b987e13d7deb319b6
+a6e8286aeb801314c41a689eb0ade725
+a6e8d8669ad378fb06e8b6d1eba7d5fa
+a6e923a2a91b3d313916f7fbee9d8465
+a6ea22f2fc414b319130a3a91825620b
+a6eb384cb16aab840f8088b680c9468f
+a6eb4d459f265c76d1db1b085ad8ed5a
+a6ed91e8bf8397925be0c76300bf432b
+a6edef1451200b6f23c90981dc6bb4de
+a6f057d6d83a0993b6901d88d27a5acb
+a6f10a4c241dc47ed943b1fb98f5817a
+a6f2d2df1a7fcfc2148cea8ff1a18598
+a6f49617d2596bf074aa4fcc2504f708
+a6f4ca2fbe5ce24a81cd7faa25bb6859
+a6f56366959bf744901a75a3a575d9ae
+a6f69075484db186e7016ef55f9dbf22
+a6f995548851270343cde1ca53274771
+a6fa5d1a53b7eaba5750062b6efa37e8
+a6fba9ade2705d80bc2dd21980c89d8e
+a6fd8d71223b138992c77e5e27be0ce7
+a6fe189a1d1627d8e3995e18cae9f9bd
+a6fe8e7c1f9f222a0480d5463d4ca5b2
+a6ff33b7de7cd82872befc1e9e54ef6d
+a704494f9faa2492f3366d989de41356
+a704c8585a793b5f9dd05754f7213782
+a70563e4a6202f1ab9266db523808791
+a705feefbfc3ac22863a199881f705a7
+a709996796e85a4857c2aea2e97c74c2
+a709eaa70827b11f4f3e13f05875397a
+a70b09deb9f45c0e2bcbd2fb75a7b072
+a70b58b96379747477d011973abb69ee
+a70be5b9486560802e177e75e3d7430f
+a70c1a4633c7d8d0092a3e4a2d31b5f9
+a70cbf606ba19a14284f4424354de825
+a70d8b44d1e9176a8279bbfbbec6f114
+a70e9347c23fc3fe455ddfec4f0400e4
+a70fedf2ccd98d08230ac656de2078e5
+a711e9d04637aa322351f1afd21c5a52
+a71379944b401d96cf290d19b750bd16
+a71437e6416bd9e165ec4ca4f673fcf6
+a714c1e6dbfdb204a389c42c490aff96
+a7170f566984184deb59eaac1c0ead63
+a71833011f93ee64074a33daf77f5538
+a719f420334dfd10890f0a75febffac9
+a71b51b50c37cb13f94dc3e401e3e382
+a71b9a8ad7380328940b221883b4b346
+a71da3db30fd21a1400162dd2fdbb27a
+a7207cadd256d09db3235b638307fe11
+a721b5980fa2324587f512ed8e191653
+a722c6a97b555feba7921af166d40092
+a723d2e50507011effe89804bb02dfe7
+a72683b041ac85f14d95e3b08ef5f8ba
+a7273b61d2d749d7078254a4abafbdf1
+a72760025cb756d8b3e9045dc03f03c9
+a727bbda31d7543dfef7eced5f46b76f
+a7296cc4146b258112bdf3a0512d5228
+a729719668427d3b66f91d630c1e4c78
+a729ba205852e597bf384b6f8544373d
+a72a27b2bb8e2b4ff8c6263428a99e71
+a72aa5b78adc0fbd042c98602520a44b
+a72be6c9dd856f5ae05b927574179ac6
+a730061b86f005f7db82e3843a68c3fb
+a73044310bcbfa32e05db5c3e16d1a1d
+a7317dedc7fd56b1b3db8ac32213ffd9
+a733955e3ed3ac0efe6dafd8ad530e42
+a733ca390be5db0a096af14b33df73c9
+a7355e48d98f1c7f6e05457c549a4c92
+a73731f00577ed707664ea5a47b62415
+a737b54dffb1dfe5d50101f9d37be83c
+a73bb73c108ed63bf2e6e697c7890604
+a73bd906b3c5af56f46634a74b92661b
+a73c0821f6b0520de88512d77de003b9
+a73c216642bd3cd70f01b48bb27ddcb2
+a73c75f4b7885704fa7d17cf6d18071a
+a73f0d690b771fddfe68b2f46f24d48d
+a7401f7495ea5945561450b2f9836a00
+a7403c9bf31a8bf1f759f8c1b42c1657
+a742071006553a4f37fe44457a9fb709
+a744352198e7260b6a091e1c0536843c
+a7445663e47203be1bfb9c21165d234c
+a744ff73c8de24e5daee397fd225a80c
+a74699e359f0d765168219a4d6239089
+a7469eeba20a1a2a83e29e85aec024f2
+a746ed980abcc7fd6ef265c4169d170b
+a7481c5afb0977324a19bc4ba123b78c
+a7483cbf7898a617a17cb1d997790680
+a74948873ca768881142d0bf8dc63982
+a74b1d299d1cc3be949104790d574522
+a74c26fa584e828e03a9bd9850fc8336
+a74c2f657ebd65293ef8fc9c4bacb4ac
+a74c819b82b717637be3f32aff71f38d
+a74d0d698fc12afa4526cfe1096bf222
+a74d59a1d4a67a7d706aa7e9b338d1fd
+a74d684b313f74bfa48db095c264e908
+a75138a67818690b647a5025defabd27
+a752f3184fdf0dc88659d1a822936bdc
+a7531d3e8877bafa50248a6256cdffe3
+a75429a6aaeada52258abfebc90c62bf
+a7546c599593af9867ddfba5c77ae85b
+a7577cfae04ce78e64f3d6152da0d5e8
+a7580596de3fcc70da26ad03a462d700
+a75875392521fb89186d716a392e389d
+a75b517e0603c580f2045aa5bd68ebc0
+a75c7555ea80465f5e13ccb686244f7b
+a75d2dd49dfabd6695483c96dac5c5a9
+a75e9b9181b5246472e6b357892e8fcd
+a75f95b2db3f2bbdc89cf962e203e3f3
+a7609d57f26f53e0f324685e55413690
+a760a8860e41c4412c643c3e6c0be7dd
+a76139ea6391449c43f519ccdea2347f
+a761ee2504cc0fdbcd90ea44121bb78b
+a76668e9bc6bcdfca036eaa187a1e955
+a76726a1bc7c504c56acfa0809421bb3
+a767943204382fecc21056b63fe4fdb7
+a769a1d28b0484c7b2c42871e374f2b9
+a76b32c5f4b05a8353468f20c9a7cb6f
+a76f6802f3e4bbf5ae9d8fb6d3c39c7a
+a76f71009c980003eea2062414ea11b3
+a7742a668365d60c9a44495a4329e3dc
+a77445b146425d6f1376a0dcce77ae6b
+a7748015c29aea4bd98eaedc2a8be721
+a7786698b995f1d3e19823a834537dd4
+a77a4359f273e6668aaa975672914808
+a77af7c1e34d19ec3e9c080bba9dfb05
+a77e0fb08d10f652b73d61b72f85b606
+a77e874fdc8ecfa7ff0ae87ea7e0a513
+a77f7d310fa589bf4e192fa26832e87c
+a784761d6d59569d87a53b4276f2b6f4
+a787e1e19a6d1233a104ef3a30b5ec85
+a7890923e6b2af0b5e0e4b942da647d9
+a789fdce26fd4f54234c8bbc93965c91
+a78a8f882fbbcca29addf5e5c1b21894
+a78c3df1755a65913e38773546b78537
+a78da4f37ec9c67bd4308b8d15e00701
+a78e3270e3c099b06ff9b33eeba090fd
+a78e408b05897458924dd1efbd01d0d8
+a79318e43a4fabcf92a962abcfb43aaf
+a7967cbe792110c24efc624f15a55c5d
+a796db57e69f7b5a09400ef8edd9b0cb
+a79aff4d86a6eeea414a372c6c5acfe9
+a79b6c73aaeb39826652e9a045452f49
+a7a35a3e5464c0ae3c535988f6630f16
+a7a3bbb1de7838e037ecf5109c05d669
+a7a4e5ad412360adf690d4ec93b275a8
+a7a5aa57fcbba7aac17a114f90343e7c
+a7a703a2d060297cfda56f90af1bcda0
+a7a71bfaa697ff117f264b4fdabbbe9a
+a7a8757ce72ab5b2e5fdab1345c8b4ae
+a7acf550050922572f474cef0a28ea4c
+a7ae94667d76c4e2f63596b80246c0e9
+a7aecce8b6a6b1b2e2e9598f0fd48639
+a7af00a6571cdff703b4fa4280d2e783
+a7afb9aa698ced4796120f01619eba96
+a7b0706771033b27660113a764d72257
+a7b3b36c0dd819dad2dfa6253abcc750
+a7b51868ba51e047d72b272bf1a711de
+a7b5574538d2a224748763e8b309a722
+a7b7d4156dc3ec2af83fa2ba1a322473
+a7b8209a7a1fa7b98ad3a4f8ba991985
+a7bbe9f61cf29838e970e909ec025786
+a7bc0595121b98ba6ee6e5abc4cc49d0
+a7bc1e9b464e2e126a9396d16b0e0810
+a7bc439551bd2c0f4c5c9eb6c08b71ef
+a7bd4df68516424b6a6014a344628073
+a7bde1219f61810394b1563d06fb1075
+a7be60ab3118667a751f6afa33087089
+a7be645680cfc6a6a78705489a12b697
+a7c1c293b816f4ec8340539e32b2cc9c
+a7c4ce1fc929380fb5ddd4f55926baeb
+a7c5e8e68159f5e81d3854740def76a6
+a7c6992870485b434a142cef86f292ae
+a7c7f697212f846e21d8191784959217
+a7c87ab075d9e0aafe4d8bd1907c2106
+a7c8ddfb3bd055fe217b0041103c4ff0
+a7c9dd52af173616fc071c6381fbb0d0
+a7ca170e39ab05879f4ac8a449b69d7e
+a7cbe07947d87a7489d836477b906db9
+a7cd2d3b32f69698938f4d1d8154511c
+a7cf51894b8bfee1be3bb1d27a7ab215
+a7d059c3327c62752d0d4ae3a725df7a
+a7d0c7f0bc0d0b45c98d111e8225e25f
+a7d1dd354d6c8f00339464b6cd2863e2
+a7d549859cff9f0271c4625ce7a25b3f
+a7daaa7aa5ee6d4f6870cb435c1dc83b
+a7dbf18feb9278bb41e7941ec16f8477
+a7dc404a9c96b0b73202212487003d5a
+a7dc7fc792fbf7a677f194859a43d584
+a7dd49820cb00a76f7e9a44ae024f82b
+a7e097eced828dc7b20946c7d21cce19
+a7e0aaa8995edc2d1a26c96479232536
+a7e16a26bfc9ffc01c640fcdc5b4c99a
+a7e47d018632e3033a3797c33bd3b10a
+a7e5216dac1a21eb81e7161bb1026ae9
+a7e543c7b97d0bd74e16404326cc9d2e
+a7e7ff7ee800ffc3ef59e2692fadb08d
+a7e9404e3814b03ccc32853bfdf84c6b
+a7ea09dd1056187b020f522425202386
+a7ec5024bb58bea40b36ff0b01ac357e
+a7ee06eeeb4edeac3a9f3c524cb9de8a
+a7f98d4f48b341975d342145d30f32a0
+a7fbb144eb5122a9affed9566dd877b1
+a7fbd30565ab1ecbe17b6a2e8369f32f
+a7fc44809aa8ad09b694d53b44a63c07
+a7fc889585628e86efa7e59d1ba41f0d
+a7fe63c4efc8c37fdc03fdb4e8060ded
+a80043dd59d47880c0915ef48e5c2e5e
+a800e90378934446e443bbf1e60dccff
+a80132df5c45d5f68ab8741656176fcd
+a801bde7b013adb54761ea8de91233b3
+a8073fcf91ebc0cccc01f0fc3b75d697
+a809655dd2609d7035f8679829d79725
+a8102af8d966f45ae95f7e0717475eb6
+a8127c4bb076387ee98257022f66c503
+a814335405fa135d8bad638b363cd701
+a81547743d0a8047bd66265e5f85e6d9
+a8157a7d0e3e260cb64a51cff47b5509
+a8158076acb1d0b0a296afca4c71acfa
+a81647f31a1cf99ce576e3735c280896
+a8170abb2bae8b1288566b5fe754d3c8
+a817ca6116109abab0d9eac781e39136
+a817e478212e6739337b9ecfbe254ce4
+a81912d089d896cd4ee0675404b8cec7
+a81da28b983324bd0fa612750d4bc1ad
+a81dbdb709afc1d586f0ea8dbb693616
+a81e625437e235d331ea942018ea0158
+a8203abf1e658a7ea30939118a5e0b40
+a8240276d7d77f56bf359465f02c2195
+a826551ab6f6247902fbff6456f1ccfd
+a82871d0cc9546dbd57d46025b1926d1
+a829836ed37c10c999004f0e2664c287
+a829f6a7bcd56075cb922a50875ca871
+a82aefa5dddf63ec93b7ba3c266d9fe6
+a83155550873db875032e27ec788864f
+a832335142c3eb193f76595b47755466
+a8327e2938384254c5c52c9356319981
+a8338de28b7b0d08032fc6f46c423592
+a833b0e488c0df72e86a053416a5b5ec
+a834f42267654f376e354f3f729fc51c
+a837f4d396fe60211c6d0c9199d80931
+a83a26176e34595e74059c8fe5c5144f
+a83bbaf5e60ca3f2c1e006028a0f0212
+a83dcc35a788be3ed4ae0d33452162de
+a8418f118b480f3b4b1e4505429241eb
+a842297060bb977826d5d6458731eb83
+a8443ff9f2cc0af5c4ec1057035fa898
+a844dab44ddee9941902ca38e7ad55b6
+a846bb26e39cd27d986dd30f12f04f2c
+a846fe176e50c9e3b0e7e51a05db8d4e
+a8476727289c3c96ebff9158d9f479e1
+a8484fbb5be4335760489d6eae2e2e48
+a8497a29a88c27227f251de5a28b0afb
+a84aff98c850bc5ebd0555a9333ada5f
+a84d4b4f38fb136dd5cd8d0457c30232
+a84d8f93302e971a8bef0503d3d40b50
+a8506fcc5ec0c54e2b843fa88faa4ce7
+a85351599e992e57c0b81dfbca5ceab6
+a85376a28b83d79171bad65d5c0cd17e
+a853ecf10e295a5340ea1916400d528a
+a858c1c6ee95e5954a6d9f596b5f168c
+a858d80a6837c4746e09fbf12724c318
+a85e6e8f71660db42bb262c828d7072d
+a85f6a6b4e355b614fe72a6ef12a6fbc
+a860b36a9519b92ac3e83507e3b200f6
+a862028eaa54603f10883ce82b85aff6
+a86319f8eb3d1425c1ca9647145b8528
+a863f31ec5aefa4dceac46d23829f1f2
+a865657caebab175ae1a8dce9ac46c2e
+a8676ff679be268e84be90d9c3050fc7
+a867cf3e7f532a89b182de63899b790e
+a8685dea82a1462afb91383f171a4c37
+a868ec15de8d8a6cb40fa32c1b49ce39
+a869a5685c5a5c51a9f31731a9b69ec6
+a86a4f49bef16f0e7d7004d0be4b3be2
+a86aeb171959e769847870e08169309d
+a86c8d7114b8e15a8e15c2bac1303d80
+a86c8ee394f34766141210f5dd15e9ce
+a86dc14b0553ff9303d948480370ec92
+a872a06d97356459875caea1ea589aa5
+a873affbcbe4764ff96b432609271b8a
+a875d696d204220d40e159c97ad910ba
+a876f5234fe9808cecafefb0970c9661
+a877d6b474ee2f29819d5de32ff18a41
+a878e474925867e4119a21c6208e89c9
+a87c3eba09e1b464b7c8945849ffd71e
+a87ca48bac8c1e3ec69d98c92b133e24
+a87d6df7c3d34f0ba9beaf04857ab1a2
+a87ec3403d66c8659211e14733ca6533
+a880c6ac3c72e1a5ce3be7ab21b48a8d
+a88275070380ba9d690d0a63af839297
+a883716bdbb98fe2cfca16c4167e7f4c
+a8855c82a02f6f44ef48badd52c6fabf
+a8871d48e1614532ba760477754392f4
+a889b2202a150e483e8a5dc1a313fe72
+a88c04a5339fb5b03fb8426d7712a8b7
+a88de304b8f3dbd55bc76c77724fd081
+a88eeaa20fbd5476eebbf86560244b15
+a8902b45095f2c0d4f7097c7d1a7a890
+a8935081a34db88ada82054a2b41d71f
+a893582f19784ab1961180ba387e4aae
+a89481425054e5dc6b805def6568268c
+a894b716742a49443118d32cbbfec570
+a896b4fe578ae7e848ec13979755bd11
+a89a1c71bf1582e83cfa62659f66812d
+a89dc0d291324ddd7fdc9e54c2badae0
+a89fe66cbcf3435b64986c910af8dca1
+a8a3910c01303a363d7c750fa6455c6c
+a8a4896255ec1b9f571e5f04775080ff
+a8a4d4182e96c7db20ee70502f226206
+a8a5eaeb18cae1746e6c2252a1d680c0
+a8a63cb7a783a611e0eb21040fba040a
+a8a9c3fa3937200deffb2443657ac3ae
+a8aa4d7001ccf054fabc302e84efd32c
+a8aa6134938033a6abcbdcceb5530c83
+a8aae098508c9faca418b185404dcf6e
+a8ac68600442239508f3564365eca842
+a8ad867e6d6b39534325529b5001233a
+a8b0e4ac7f4b0f03f914db520576ac24
+a8b221e493a15fa1ccba30061f698c6a
+a8b3795ff4b72d0957678f4e5ca8de04
+a8ba540d9bd8109f0364d28533121079
+a8bb4ed1c99db149c001774adbbf4a55
+a8bc03b7c13071ee9ca02ead1c41798e
+a8bf82a3b387382f8188c02c187b7525
+a8bff426604bef7d9b92ee2d6ef75675
+a8c058d73044babdcae58c8202da614a
+a8c19d3771220b69b4caf6e890dcd220
+a8c23e02cd31e0fb5b5ccb497931342a
+a8c59828cb92a9ec28fadff351b79f88
+a8c6e7ecdf3e371843ba5f4de4179668
+a8c6eccc64df09225ffe28197d0089a6
+a8c899b7aecb9ac02006f2270e1dff9e
+a8c9436e53fb1b8d07780f5049bb19e5
+a8c96be24390dc7884ae9f609efa496d
+a8cbdce74463d485b2ceffc4a37aa21b
+a8cc2dcd76ce1605aa5075b8e82819ef
+a8cc8024641084471311c63dff83dcf7
+a8ce9b503c4acc2b8987420941cc6979
+a8cf4f37d8ae1dc0f4f1479411db4c1d
+a8cf8c65ad81eee70d4e637a9bb9642a
+a8cf9af04737673b8849214c8ba93495
+a8d28d6aa5a06ef2948812791fa3e1a9
+a8d35622e2358e91d0eaaac49284ad3d
+a8d465d6b03ed27165ca787351372c08
+a8d4ad54a4be944799ed44369357c632
+a8d4f28e24b5c609d5cabd96b630a85d
+a8dc61df0decfb84f6f813dc903fa5ec
+a8de34a78bd57bf560a15f2de7372c56
+a8e03ca309a0c6679d8479e63ed002a6
+a8e6291e981f4ae2c4ae13cf21ba10d3
+a8eb76b4267a4b4991f69a1ed2570b64
+a8ec39e07edf3439c208d912294797eb
+a8ec4ce34b67baa8be48c75ed47beb48
+a8ec9963d57f2342a547aff422b4eee8
+a8eccdaca5fee70ca3de439c29fa8c15
+a8ed3b9e2f10c8e21a659a2c212e8e03
+a8ee8151f61d5ad004847e47ccbe7508
+a8ee86824ec476fac701bac1b42a0fe0
+a8ef515aae9770df131e07eda4207f37
+a8f1605b5d73ac9de48acdf40858552c
+a8f3099b51b7a7e0eabc4b1b46a7c69a
+a8f35bcd4d447d2761349856fc68b586
+a8f3a3f16162fb3b63a112eb07fdb9cc
+a8f5c71f90159a16d57c53feedfdb1c6
+a8f60f9f3db81585f291d9fa66fe1fa7
+a8f7ec1c8548afec196ef57f137a1c4e
+a8f90590e5453ac8d33552abb5edb37a
+a8f9acb5930ed8c99a3e3abd2651ee6a
+a8fd96e132a38af7969cf9319c4976c8
+a8fde0e5846ba67cdebb478b0e2ae43f
+a8febd7f0f1892e8dadf646b3e7450e2
+a8ff166ff37c3a9bfc8256e43882a300
+a9018fd2ee5b961cabae05de88cd2dbe
+a90218cc777a80caea486ff12fba003f
+a906c77060f00b77a2b6565460db8e65
+a907e8bea226246c971972f83b39690a
+a90d05ac8389010dede7f401c129af2a
+a90df28c9fe5c6cdc3c073ba77ac4423
+a90f9716df8663c2342e5ef9e7b2e0a0
+a9109ccdf160ba6c40845fe75cbe8640
+a914f3159555514c338ba3fe76b70361
+a91560e1485c20baa247d63144912396
+a916496ba165f42c9f4cf9c2d34a6cfd
+a9177caea8003d483245baf02d6b300c
+a918f9ce35c37500731b271712e7cd37
+a91a9af3964eb7c7dc2efe5229c0e17b
+a91c983170f6ba2b792070a2dc8472db
+a91d76834d3333cec545c8d03489e52a
+a91f1fd29d379dffe32394666a4c6d43
+a9203622b38560f5b5508750b2617a8b
+a9241c05fac1c727d4c3bc1d3ca409d5
+a92601ea1172620dead87f68ccc31c8e
+a9275aa560d9aac32d1acf6eab6fb078
+a927c28dfcb8e126166e007660567493
+a92a648e812a9b648eee33cccb3d8f37
+a92ab2064d3a9620bc45c641d19c6b4f
+a92ad81e14ef68a7efa446cd513f6528
+a92c86b2f88bf3e5bc78966ccca5124d
+a92f0e3889be852de30921305280ddce
+a934743f78797a646c63cc2c96c0c7c4
+a93521740c5d6f1b8a73212bbe466892
+a935a16872d71036bff8f310489cb4fb
+a9363d386dc3f1757d21fd1df75021ef
+a9385bd154972c429f6b0f34671d2003
+a93892cf4b4a1efd47d33a5443f6d92c
+a9395966cebfda1a2aa518a1114e12f3
+a93964e91f6f0d45d7ac80af6c9e4c28
+a93cdec32a1ecb03f6c08672d327519a
+a93d2180529cc19c278ee31b947becbb
+a93d35765116314f01efc647bde9293b
+a940307cd0af50624f8151352fa658db
+a940f4dc341a9b03ec8c2267fa59d68e
+a9431a62b7ebb044b489e3a6b1d0691c
+a94397f704e7d51ae3e62517f2f4d440
+a94ad86cc3f8fa1fb816faab4abfb90b
+a94cad56c41823b484321acee181224e
+a94d6e304f24d1e7d7cc7d07e32c2f72
+a94ed1195365d3cc8aeeb9b08d3aa4f3
+a9506d330520c8f0b9137cf5627ffe8f
+a9509a7bd9bd790eea584df6613c4e15
+a9512d54de43b1e1157a5de637db8e33
+a9514ca80c7067426d808e7d6ccc4298
+a9516e7961aef0ab8e55f4fc1b2ea685
+a9547293af267606043dc73619a1d8bb
+a955fa0d3e02dec7f1c59c85efd88cbd
+a959baab9b0e84bd4055325fabc8382f
+a95aa1fc4fb9bf3f3cabeadfe16c8cca
+a95b9e4510e0084d70ed7b6afc496df8
+a95ff95c5ac004b21966e94465fe325b
+a960727fb14449c56e0daa264aee5623
+a961a3676f696ea19149e5637cf41fc2
+a961f54d0f2a6ce0ff9f7c074aa0c0b7
+a962bf47fec073ef98eb69c07425aee9
+a9630ddd54b7ad136cd38b580b8a79a9
+a9657f8cfe63c6a695c766b2358839a0
+a967f57688e95f0802189163f26d765d
+a968d3514f684a57507b45d79a84c285
+a968d706553240206c40567b517769f3
+a96903f1a3e3acf51924d1bf7709a6c6
+a96a1da56fbbbb3900737d6c8607eae8
+a96a256d2ae45b5ce69f5645d4344c24
+a96a4df93fe35f2601dd094ac2bac991
+a96a9163c99f95eee3184e213c0ffb23
+a96b0d7225ea68bc857580cab75bf633
+a96c5e4475d607f97d660743e4933dc8
+a96f0ac06470f8bb462a17d47de91fa6
+a970164bb3d2f3f4f7a3a81581e38115
+a9703ded37523cb21a65e33901b6e6d6
+a970780b84f90d1957d61e29b561e58d
+a974ef3756d642393d3694751842b936
+a974f5b3f7744b7058cf2df64dc8f8ae
+a97542f9419d9037d19a93b93a28e6d8
+a9764408cc58de3f899c6112d49931dd
+a977582d3aaeb9fcf9c1b2f7c9ffd833
+a9789d1c54f68cc87a734fa67e97ad23
+a978bd2e500cc447292995c9fd73fb4c
+a97bfcb7debcf883acb3557079856942
+a980a3cf3d5c2815c799b487c336fa03
+a980beedda8b3937e1fef38c9c66c531
+a9836c71b9af5f390b784d9d19d159bd
+a98383799472c1839c390291bd1ed0f9
+a9847b7830e8bb574bde3130dfe9f031
+a9848d5aeee01bcbaf133012cdef83dd
+a985b36a19b03e2024ed5f959977b9ac
+a985d70cf346a0a2fb37d8ddfb076916
+a98606af4bc7987021bc38d6df6d6bf7
+a9871f8539751717b9564729882c7374
+a9873fbc8581d66af8e8b15d07da1e57
+a98a7fe4f15d47c25db9cf857e266f86
+a98bd690ba41b5ef011afc354010137f
+a98cec9c7b35b35f37fb9e540dce9dd5
+a9912ec4a28091a316986d450f7ef2fa
+a992b98266ae970060bde8fe03fc337e
+a99ab318f0efeb20c129c4f9b6368277
+a99b21d6a3b75c48df947071a96a2966
+a99c6cf0e9b1338e3565333658f5f780
+a99f517d1cd2a623f096c0b34c1a5a13
+a99f6fb54acc674007f35f87040b852d
+a9a04fa1b877de43d03175e2347f3919
+a9a1091cbc057d2e578a86135221aca4
+a9a323a339bffca65c8fb68e8084fd5c
+a9a44fe1f7b040ed2f7e1ae6bd3a2f15
+a9ad2b4357b50f807aa85f970aa4c84a
+a9ad5a84cd4555f1582570742883dc9e
+a9af1cb992cee0bf785e0117ffa5ffeb
+a9b43bdd60f328389455011d0f622982
+a9b465920f32247a543d9d51f3c1943b
+a9b47c9ef0e45f721ae405c9c88e42a0
+a9b7c1b8864216c8f3c045f3cf8ab426
+a9b96fb72bcdebe22db84a2f6f1e5c6c
+a9bb5fb6bfe48c23992ae091377fda23
+a9bd9b414a12424ccdf8372d17afd9b6
+a9bdb5a8db3fbee439f9532ea14aac47
+a9be1a5f5bd1897e65d513a39f1a0fff
+a9bf3b9ac11fc355efa9da970186f927
+a9c0a6bc0e3dbc9363cdc323b5d4e71b
+a9c0d95f487a876afe9217aa0ce5eb22
+a9c15ca6aca2c390ab605509a6f32b24
+a9c2800307fb563fa64b349c03dce43a
+a9c506cf4bf7c97fe61d7af25cf34c88
+a9cb2d0559d60a8118805e74034ea428
+a9cc6c747f977a126ec1dd9f4fbe389f
+a9ced68ed00774ab8fb76fca3c8bb21a
+a9d57efd56642588b2681f19791391a0
+a9d5d4c80e48f641abd126b104a4b401
+a9d6de43029602c57de780c8006e5e17
+a9d77fdff295f39067bc806f3f440ec9
+a9d912dc805fe4f6f62a8798456594ac
+a9da20325b224d7f1086969946ca6d29
+a9da21fa6b50de0c5cdd9a0c55f82537
+a9db85d9aba2591780d3809f8eadbec3
+a9defd75f895a8cca8055d2b4c8dcf3c
+a9df033ddab0922f9f654fc941983ac8
+a9df4b86662cbcb5909bc1a2b8f9b7d3
+a9e0762d121dd846f85af4c4bdc64e22
+a9e0d106b3bb15e48f5fafbf6cc262a6
+a9e10975b0a85090d2ea01e2737a4dcf
+a9e13452ea060e3e1558f36931ffd4ca
+a9e1e5f0103e7bb5669caeb2991f2aa5
+a9e2477224a79e6ffe3b4abb9a8eee3c
+a9e30b27994298003028140c318dbf50
+a9e3d000c5820ee245692af81a0669e0
+a9e412bb1870f3d57ed3f15ad6eac7dd
+a9e6bfc3905b24446b27a607db6a4bc4
+a9e9439d16ec1408318610c28c80241c
+a9e9a7c0335d11b48760a0149bdb0a5b
+a9ec20e25fe5421de79bc80c974ef427
+a9ec6656315c8709427a24d2d323379a
+a9ed0a1040f7f6607a4f84d973141491
+a9f2834c58e6901c05c15c7c529755f2
+a9f43b80193a482372b3ff3515545373
+a9f4a6691f03d69bbd00946494069f88
+a9f4da1563c3c5fd58d2f9fd7022ea18
+a9f54d0e55cf472701e49c8c707f2d2f
+a9f69078785078fdcd7401b4d78335b2
+a9f90111525b29bf5b8f9e1f93f6ab31
+a9f971ee54c6efa85682282f24a2d25f
+a9f9d19a9decd58123659aac38568793
+a9fa8f65d9cdb8cb80086f8a96e5126a
+a9fc20eca9bfbed94b966f4d5b443760
+a9fc2d8f200877e5dd46b1fc64a5c97a
+a9fe223319a97d9b04baeb1db2554deb
+a9ff3f97be254f0a31d46773aac384fc
+aa02e0822ee98a2e48574b473303e843
+aa038cc1d30011c6409c25567dccde81
+aa039b14fc3e8451973337f358ea63f6
+aa07898bd32308b5eeecc1bb0c27571c
+aa0897670bd8fa8c6322cdd689ee6157
+aa0aa9ee33bf49745bd2a57cece739c2
+aa0cac89237badbe456f9ed4b3b9f05b
+aa0d3595d92be2c6238d0d401da81dbc
+aa128d9bec09e3505571cbde4e579382
+aa13891d30cbdd13032e0dd9f4e495ea
+aa16444c37aba77d3f90b3d854a7dd37
+aa180ed9f313885d16479388050dd171
+aa1a37dd2258643005515da16cf9ad8b
+aa1adfd5010c0b9044498a9d7112dc82
+aa1e2232d4ed8233852af3d1f69a346d
+aa1e4aa90c0e12f9e40385e187aeac52
+aa1f717e77b530e8ba25b207d49e1b7b
+aa1fcc09399e5732fdafb11de3479676
+aa24247cc7985004e1feb39a03000cf9
+aa2d895ce7fde04364a79a4af041b488
+aa2f4e0e91d73db77274b3b5ac6cdcb5
+aa357de3bcd5b163d39cd33fb4584b1a
+aa35e40ab502bdfb28ce07d4eaceb515
+aa369f1823db1bc950463fbbe78aa4d6
+aa38a59cfb309eb04c5e19b383d8eafa
+aa38b0c91abcb07416eb20e4c280766b
+aa3ec2ec91db3af5829e3968a81e9d01
+aa3f851f2ebe97c73274c2cca2f0c1dc
+aa40cb206b6259d2e601200f81f3f79d
+aa40f4728e5198893886391cfb769c67
+aa42a33b3d4a98540b89387486ca3314
+aa46daa97d1df13201ef13a2bb3eac9c
+aa4b40a6795c42fed6b3e2f4d7fcdd9e
+aa4d1521b76ceaf6b62c505ebc2aa276
+aa4eb21df5b479c2414d8e36c3e73c5a
+aa50e72ac0b357b3da25bbe48948e564
+aa51228a4a7efe52d0342783d81ded36
+aa54cfc3fd6a6900c1a698e8d8aaf800
+aa5559c57eb83aa8afc7d751872d7e73
+aa568fe4b95bda72cd123505d0f76332
+aa56ea50d873edc41b0de587d23c2ab6
+aa56f00ef1a759d8590c916aac609655
+aa576dc5b8175d47178909226f6c9ab3
+aa5abd33a2c35ea275715775044bbd94
+aa5d77c54b85b330ed95db2c41afd394
+aa5e5bab42e8d10d88efe8ed58b9a487
+aa5f42136161820cc6a1e653031b415b
+aa63fb5d06c28bb47722f7b4df7a40c4
+aa698335b07402d9e912f52c5dcf17f0
+aa6ae4b33f89a70d8fceea52bfaeb94f
+aa6b2d060a58fe75f2be369081b7c060
+aa6e999fee6a2bad549133bd824f891d
+aa6eb13fadeb54560db07371f1478016
+aa71501600a0398304bc0ed04bbf85a6
+aa7150cb03a0df1eee70734fd2a311e6
+aa71fcfecf4885291a10684f107121c3
+aa7210422a34db2b1a8085e9a3d61254
+aa72118e4c8d35544bfd10a42018e9cb
+aa7309d837fa8c7188865c81ed4f4b18
+aa773ac66b9183c42bb383e037fb685f
+aa78a339e41f8a78be228ce62a6bd5e2
+aa78fef8a47c2e213c86f18111249462
+aa79a30769a53b9b3c11ddb4546f787c
+aa7c640fdcecb35c9e909b846720a3c9
+aa7e2a515c937bf9a877ca76d41aed1b
+aa81a46a1f1abe614a6d40f7730d72d9
+aa81f3ce07b1174e500a22d3354e7d35
+aa84de4e9746fb29fd9d0cf3bf7a0dcb
+aa856116bfb065d4aef6426b70414c35
+aa86276448557a68d6d5a67e2ba0045b
+aa878c6a95e5e2f534e053768abc270a
+aa87ed68989f095482cec3c9d687a1a7
+aa88f995cdd6086b78e60c28d7599b78
+aa8953b9c0cfc171501c0887d557f53b
+aa8dbee4a607a46c169c4b65483f5095
+aa8f5298abd62760dc6e1f00789b0012
+aa919bfda305ea4f8d7e6993e2c147da
+aa928c0b2cdc42615102e934386714ec
+aa9429843900cdbe80a3b2d2072b8c00
+aa9473ead7535735811ef1f6673faa0f
+aa964b11a5bd7ca3cf4124b57ac2ed1f
+aa98627ed261dff7299dbc5f85e823da
+aa98a5565fa4ad0358fd4a8fa181d26a
+aa99d13d49ac869e49f3eb55eab97384
+aa9bd6b2993118ca922adbf92220106a
+aa9f750b091b415f1d72baaf20b42d8f
+aaa342c030fd6af5c43e768b54fff29a
+aaa48e9a63a7029d48b0db26dcfc24ac
+aaa60a8c7bc7d4227e7c732626fc96fd
+aaa70a1b581f556054bc301551f5485c
+aaa7d4535e6f28bfa38596f0b9c58979
+aaaa6b9c7a28209bd9a0b695a847a616
+aaaa76f196158648f339627d8b976931
+aaaaaf03a3786d3e5042e56765c530b6
+aaaace0dd089c65e0e2c1cabfdfcecd9
+aaac993a6ad8325acb8c2ca7a4f3b4dc
+aaad20cca406dedb93c4a6c96937da91
+aaad80288dde8b48abd4d106fd0baa0b
+aaae39dcc8c14702ad3ac1252cd5af9b
+aaaeb9a04d4f7278d27943861f223fba
+aaaec8af41400b5425aa88909a99ad34
+aab2120f486b8ad58bd72e73213df058
+aab3c095aeb1a3b4474a4adcb793a522
+aab44764c79a1ef274052d5ab794c0ed
+aab5a1a520ba7f28870638bd772e2ac6
+aab853cde57e032984af70909c2bbe36
+aabc0d1b10631c4ed24f2e2cd64e2d2c
+aabcfa1c431fc0ae765fac01d9ae706e
+aabdcb0c6b01c0f8193fb5de67e30fe3
+aabed767c8ba8b8d09a1c8a4e8738fc5
+aac2305652bdd48a89f72b5a19514874
+aac301604ebc388f17550eddd56a298b
+aac3a0b0c3f9b427d55e80f8df428368
+aac4e926a05f2746e20aaf34791f1710
+aac96958138ff9e4a9da07565986c7e3
+aac98b01c8bd0c00b7709ad5388423c3
+aacb63dd80bc889a4b66718bad1e5dcc
+aace982196217136be61368a3c12379f
+aacfb786060e22687c7054f2131f659f
+aad00e972bfbc629f7d888fdcb31623d
+aad22d001d4f4dea91a076cca09472c6
+aad3e65709fc70b1718fe6dd9bd6222b
+aad4939a5a4af26ac88ff8e394e86069
+aad7a29325659e62b1e040d858a50ad9
+aad8908cd15c7084935489e2904aa8a7
+aadb0566bd02aa321fa530f74bfb77d2
+aadc8a42f28346015200d9c2681aacd5
+aadf0e20aaf99c522f547cea603d8203
+aae08c272c8db732acd0979aa47d5864
+aae109a785b410a4a4a87346f756689e
+aae1339a205bdeb1378aa607d7222da3
+aae21c652e844583b797f659ed29cb66
+aae337ad54410abe22085fd79dd42421
+aae3e0c0d866b2de371313c6cf6bd1f3
+aae88c4b4ecd8e448cc86b58215ac7a3
+aaea906a33b1ba2efc24ce348cd0b320
+aaed0f19a373b16d58a4b57b6c5a2e6e
+aaee6988e6e9e22c8b41a35834ba866c
+aaefbf4a9a676c931ce2ece0e5a9b201
+aaf0f12f1030f6de0349d2bdee82e682
+aaf274024103befd5461b8e1d98b49d6
+aaf3eb10ee5ef36c60c7e07ec0c57bc0
+aaf3f1768e8e20bad630298b6ab431aa
+aaf70e5ddb5fd009d1c3b1eb3d9d9fba
+aaf9807161b07f2b717cb767f43bde28
+aafb046387657077d4774f188af2c8c6
+aafc51892e961797d2fe309a24d0b94b
+aafd4101a9ffd1b608fb0a06156768ae
+aafd84655b1d4a142649e081e628b54f
+aafd9088b32a3c5b0ffd75967d9cfd79
+aafe7feed92068342b23a2dbd954e133
+aaffd0539e8f9bfdf208a43da5cab70a
+ab005b69b31308d300d8a94f8d074172
+ab00ee593703ef7efef877d573015aea
+ab019d41253a3293474c714d6b21e82f
+ab0b3596e1e7c1ea8e9e4df6d45102eb
+ab0c7dd1509d25a42ade4fc2b2d7fd2e
+ab0ca955717e1575a07e695659bb8090
+ab0cf798bcd25076ba80589dab6fbb94
+ab11fef8b20d3c1cdb8e265505614a16
+ab126f27cbf101fc3d6b29a00491b687
+ab13bf2ae39a5224001823fefc326e33
+ab146112363d155d72e31698a0d55a9f
+ab1822ca2c501a3b7016bb01fc34b592
+ab19d0b708953035a95954fd4f28204d
+ab1b52d263f54da00c37ed6278acf0e7
+ab1dcaa6907d46cc9ddbd359f6948b94
+ab207e8555d07bdb112e36542bc43d08
+ab22a662ae82fe8ac369dbc1e80106a5
+ab23f37a476d5ece25036f9039532fde
+ab24b1b9397699dfea0ace179be3cbd4
+ab25fe34683e1120a564bb204b3f0baf
+ab275ab49cc962bbdf78f2975c31d092
+ab28ba9015a6b8d92f592045e297afa9
+ab2b62dcb1789350bc663992e1466109
+ab2c53f341d3b9aef5404d1e861c0f53
+ab2d8538b7317a357caa451049590266
+ab3023582c42a868a77a586583ae2e69
+ab31f1c5412cec32e24e2ad83fc9120e
+ab359fc09c68e94acb68661cd9a5fb80
+ab39f6032fc72c4d3b6808fd6656de74
+ab3c217681203ed6374af4be9d97f780
+ab3c556300a80c0446da674ccbe1590f
+ab3d4774f46644206b473acb8663372e
+ab3d6050f237bc6b26c6e99799d34aa8
+ab3d92e13605b778a315969ed6d13f79
+ab3f08d7269ea2c79d6c7a35bb4d24ea
+ab41bbda6ddfc2e3dd698d069149d767
+ab41fb3d91253f5057b5629f8c345e59
+ab453983a49fd8f19f44ff271c75a927
+ab4638b25ca94f4d22f516c5a6942660
+ab466924b64626a446e0c0ce2522dbb4
+ab487b762f5c6672465271a96884ec50
+ab4a1437954aea29ac6df34c2044b6dc
+ab4a72b3e62fc18f91b5f7e510f2fd24
+ab4b8218027f959ee0becf44cb80c2c2
+ab4b90145ef236eb341768795b6f0236
+ab4dbac9f96ae9f14aa35b792e438771
+ab4e511b3aaa31e853a17713aa8c1b62
+ab4f7418b6a11287a87f9e0307cea575
+ab547502c6654a7341626f370c8c1bb2
+ab5759d607181185baf91b5d5d0f76cf
+ab57a7d018305dfa4b4b834d3d1a25c4
+ab57fe3151f520a6335e863671737f74
+ab583191dbec06f188c09095cbd6cd62
+ab5b4a626337242e89b47c38eb930893
+ab5b65d14f3dc86cef65a528a62c946a
+ab5e91739495a4529085b93df631a1d0
+ab5e9c458c8c8a0b069c01aba540181c
+ab5f079048d33fa150d567a493b4a648
+ab5f0a63b94cda6c90a0615c6c24782d
+ab60f63c792d6507ea43bdc0adea3101
+ab62f8f380ecd91b11c588d7f58a1e5f
+ab6602f682faafb05ad3793808afb478
+ab6aa5c71870daa409f2c72777b9e11e
+ab6cfaa7db2639c5d44a3ce9248a74f6
+ab6e0578dc15aac24a70cdb94c159a6b
+ab6fccae0cb0ec5a63de70671c805cd8
+ab6ffc8d57ca85053371c70b2e7e787b
+ab706649c76179481c1d5b842900d9df
+ab709e11382cea356ff1e508a7506805
+ab75031c78b5fb0d716b34d8d16d1af8
+ab755079ac0b35b8ed4fde1ec5ade45b
+ab7637913bc3be415c79131ecac548e8
+ab781bdb74df08a595424c2991f10f43
+ab796c8922b118fc1b4805c911e4dfa2
+ab7ce75e17897292d8f1b63f56ed2160
+ab7d686134d63bf3d7ad3e4189af80c2
+ab8019ebdf6d9b86a48a22e0c0694062
+ab8083110ae110de368adc5cd118f27e
+ab81188554f057cd054aeb379e4e6e86
+ab8166d0a47c797c8b11f1b86b7caee3
+ab819cb41953d8d1d2f971617f0f41e4
+ab842a5d3d3e59a0d4ae5ced387d1b28
+ab86614227ef57697c17047b85cf01a9
+ab87b7227329cf76ad58ce85650df016
+ab886bc2621da408966079f4399571ce
+ab8d936d886d93a24b6a8f60aab7d30c
+ab8efffd9df47e2ab870d61fcebdbf90
+ab8f7dcd9a010ffa9686118a4faec004
+ab8ffdb54e0492226702eddee8354e9b
+ab912910ff3465fd5fd042095715ac9b
+ab92086952e96de8cf0e0e73362d5f65
+ab941cfc4a558417c1fdceca53a00f55
+ab953aed3fc16cf00619a5b6c7ec5065
+ab9715859c554cdb0d4121239922e224
+ab98a06700af0658c86517888d67cbdf
+ab990e1e37828fbba5808b11dd5097b1
+ab9b6514828e265384c75d5f1b0c670f
+ab9d60e5a0c7ffeb86f9238a5e0c4387
+ab9dba2d9346915d8a2d8dec235ad6f3
+ab9e0a2b522d7e39458aab500a3ead16
+ab9e3b3a74f115efe8c9eb7f5a0226eb
+aba001bb2e74fa171e54a244c8f4237d
+aba0a92adcf8c5c52f73a89e02e1f7ca
+aba30058484749643439fb4f6a06b3f4
+aba40c1226c50fcae9d5faf0b6a3c9bb
+aba8945050c4a94133b8f1f4f749e97f
+aba8a6d3d4697dc00afc77f730dcd29d
+aba913bf8fecb68046821b21d32a753f
+aba947b0945cf24cff8fa86a03dfe139
+abaa709b6fce84b4d35eb41e9a0bae65
+abab31c3f484c8cc553ca98449f96961
+abadb7cd92bbf26e67f672f168d5d486
+abaf519b0c3c95f5f75fed1f9795b8b1
+abb0ffd13a6155c03bdd0b852640f81a
+abb142234163d8b88cec2476bc4751cf
+abb2c76617a43c0872d45ec706ab199e
+abb3839f46fbbb92ab027845f624456c
+abb4b0fb4284a5748015c59687a028bf
+abb594ffada4c4cb4aa8332b483ffa94
+abb75a46a7fb855f41f5f2b2ef1b13a2
+abb8e5b549fafb761720412b838b6e2b
+abb928191cda054fb7ac7cd5c2b2304e
+abbdb194ae74dc24bd2927f6503a196b
+abbddb3e715f767107803b9d9be1d5f6
+abbe05fa5e53c345a6923d3a10cd278c
+abc2b43737cdceab87ae36d7c700620b
+abc3746d8f56775793acef08f6a0f962
+abc50aa3b0555db74b7c59fd52843ad3
+abc6a40d7a041a8d8af371f13124db6c
+abc702dcf3673fb787b5dc721719a718
+abc73db1dee2a9bf01277ad2d53008b0
+abca8bcfa8de4d13c74a46a2e8973d3c
+abcbc22893182c9aa7edc407be69e800
+abcc73fa62c3cee8cd6d19f4a1058440
+abcc7afeb67a0716942b7f24da60142c
+abce8ae52750e00ea4c250e6aabafbb1
+abd05cd2a40153675b96ed5053e0b68f
+abd14edecc4af9b56e2c002cdf30b52a
+abd27262f30453c584110a6f8bb488b1
+abd307f26d776bed767633fb3c8b492f
+abd3e23ecf3610d7d5736632bcc9574e
+abd3e2d2803a4311f61bf37171bb75b2
+abd403b043d4a2f6e1faa6de003ef442
+abd86bd379ae5cfccf5265a5de4ddac5
+abd91b08dbb7c57adde70ee539a0ec5c
+abdb8ced6946df56347667b94c7a19a3
+abdbeb1ab45fd6f72e1723e3944bc168
+abdcaad782b8c7a9a8dead9eebaaacdd
+abe27c7f7dab0cbea056328712ad83c2
+abe366375a00485e5e5acb3075042e00
+abe4693da90c02553e4dccc6649a4505
+abe52768990a5249f7ded9aa22634f3c
+abe5414a04820a86f9bafe167b9b3884
+abe840e9d6ec8cbdce518530bacd6f18
+abea56a2952a72f2f3e273a1421888b1
+abeaf1607620e64a507a94ef866a3c5a
+abec859bf830284bf254c619098e851d
+abec8cf31f0cade3a6fe8684af55ccf2
+abecf4775e52c1f2243590114d2c6775
+abed9985e50933fd0b14549ee819afc1
+abf0403db9a676492399fb32258fdfa0
+abf0b581d818962266a8670485473ba9
+abf1b2799c4043522b202dc51b609ad2
+abf255468eeb1d22b3388e8b0bbf6994
+abf31170a699265555c0e4dd56bf6895
+abf8c4c817c53996d578aada495274c3
+abfb1b003444b6847597514e1e6701aa
+abfbd98afd86ec64208305d01a12605d
+abfe2315aa7a806dc0ad2e43f12dadc6
+ac02fe3164ed4066842e0dfd0984a7fe
+ac04012918c454a69b09c37d791dbd1b
+ac046e469f522769c052770e8e406c5c
+ac0d219f1c7cb31e4f3ce800e88690de
+ac120991de3bb7a21613775c669a40a4
+ac12c5a936da317bbe80a11a1712d8c6
+ac12cf617a4f43699a180d63fcd61baf
+ac13db9e6236d76b4c73620859ee72ab
+ac145be49a7e2b5be53b552168c6bbb7
+ac196f1b80eb226bb649e0ddb540c3a4
+ac1ad7b78d91158bd576079f39ae22a5
+ac1e077c3e4624f46d0faebb67ad7a65
+ac1f1756f2bc49281603e34193d116cf
+ac233d953c1ddc8c8a7d971adedfd74c
+ac25a190bbde4df80f35972fd5131798
+ac25d27d54b470d9fe812b5a76ab2e84
+ac25d8288f2f00ac28b6694540a092f1
+ac264e32fd9f555b3043dd58d7a59796
+ac298bd5036a9dfc9b5665322400915f
+ac2a33f18f3f8b4a8439bf250eb7b307
+ac2d04cf5537868d8f84b2eaf5461c5d
+ac2def6e8bf752884314bb705e758310
+ac34fc54ca6610442f71f334ca32cc4f
+ac35812a45b817afbe552c3eb4103abe
+ac3aa89b2785a4a8adb0f90bbe479291
+ac4046a312518289a6cbfbcc9bb005b1
+ac406dd73ee55937847b3b9a3aa25e1a
+ac42f67d218bb47d22db32a79f0ca25d
+ac45894560292f5769f2f6f2b55c9478
+ac46a1bb469afd0281fce6b2997b38d2
+ac4722d30f2a2b459a8a45b929a70efb
+ac4942cc26d37aacd1a602ff101c2b32
+ac4b649aaaa06107b23d3a06ebf41d49
+ac51cb3273de58d2578353bba4244568
+ac528d33203bfb9ec928745a90919c8c
+ac53ab555ffc311fecefe3d5d5b0a699
+ac5448940544419a5099fc1db8bfa949
+ac54aacd5728d0192c53fd9338ea4056
+ac55c471cab26d52ae8f1b9839480726
+ac562754332572391995322b70b9b6b7
+ac579d7a970798a2069f686991de51da
+ac5bc39e5cbe30c60955bef616e95a6d
+ac5e6fbae4d2620767d5dd79c4974cd1
+ac6076904e1b62ea0605d9d615d981b0
+ac608e35d0323104d2b93a2a5398f152
+ac60fd6dfcf0808d8a625dd4dd91f9d4
+ac63070c14f9feda5b38ab0b7b63c8ed
+ac6367ad90687659113bba6748bc54f5
+ac645970af153cb35b54890404cfe169
+ac64f17e5843ca400c4314e3d3903950
+ac653bff39f4394820b00dbe385b91fb
+ac655934e88ae84c41f994023c44a92b
+ac68041cb82908286eb17a5b0ebf1614
+ac68447150b34f70117c16ab0f12d29d
+ac6915de1ca5f4665af4ec013ff592e0
+ac691685a848326a54db6f8f18686413
+ac69843c6fce2b70deb6bc035302ae9c
+ac6a3952b37d5c9277a8d9d8b7e98345
+ac6bfc2b1f35723980495cb51e6fd05e
+ac6f6bb847524859dc1d592b80e8e40f
+ac717f2d64c53dafbd0df0ef0360eb5b
+ac7206149e4dfdeebef959d53da27187
+ac7631d6d4b1685f1dcf317fcb89d66e
+ac765dffbfe1681d0a5984f76a43a213
+ac771fd042e4c9798b3bb59ab12e3dd2
+ac77d68291b8eac9cc4d5425fc42b169
+ac7a5e6503eb2c117277af014acd04f2
+ac7b24cd138c55f9dfb7f7776eb55301
+ac7bc3e84c0c892ca71fb4b19c0ff95e
+ac7c190e654fcb75a263619a3033d03d
+ac7ca355ffb9428df93e6814f10996eb
+ac7d9805fbf25fcb128006a76813f34c
+ac86e18e7078d5b4807b864ce2bfba84
+ac87726eabbe9c3aae4d30e40cadb20b
+ac87941c0805cb16fd74cec864a93603
+ac87b4643a162d169619097738371bd8
+ac8a05d1612c03a1842d4622a4f247c2
+ac8a97792d87668ebc9eb08a3a3f9ee3
+ac8b8d53f8331417d6eec6e6f2dfad2a
+ac8c11d89cb78acea9d3e79e660dab45
+ac8eb3df595580580f25353eda07bcdc
+ac8f1cfa55e155bf2564b051f7a88c02
+ac91b2ae9a20b5c3610c396a94355ec4
+ac9324243e6b465d8d694b25f263d737
+ac94298aba2302b25c1344eee84d29a9
+ac95af9fe02b9276d7e0fd0c32ba923e
+ac997754e918fae7733d6137ef519590
+ac99f7ff75bee25a3f4f92279cbbe70c
+ac9a755549431fe06844479fc0f34fd9
+ac9ca06dd80a2efd89736a667f98e6aa
+ac9d06ebe085f82309a98aef5287932c
+ac9f91831c99a9c6cc2b3a35f66a85eb
+ac9ff79b5994f5b7594fb39bbeed56ce
+aca1252aa52cdb29db67cc7e31056a34
+aca1de9579dfd73ce031fed056cd2e0e
+aca3b381e583bbd6e5384cc3ad0b980f
+aca5fd46586ca09ad7ddbffda70e7071
+aca626a311e659f5c5a1b8affb65a260
+acaa80b1088bac61a21e9908dd970ebb
+acad05515ba97e152a05eee364f7f751
+acad0fb65d48338634342567e95ec514
+acad5009ffdafdc88cb2b10620696838
+acb0570aedfb89b85529db2b2e195e66
+acb1e69defe8ced0c37b3403310bbff6
+acb3dd445b5f996747edd8932121d0f8
+acb52195c2d2c6ccf22522b907f1457b
+acb6d980aa022c4f96ff66e757b47bea
+acb933af30c19d7cc4b06fab709bf803
+acbce3fbc2c94a3888319c7f31d47340
+acbe2e410d659840b67a872afa773794
+acbe7f3439fa7f77b2008f8159458717
+acbf13e847ac2085eb510780dd7b4f33
+acc2db60e3fcfa35cc80f2f7371ef348
+acc44615d89fffacc79a3b2a203d402c
+acc5b882f96a344852d59ff4b0411c8a
+acc78aafd7d5a2615cdf7668fc29bc08
+acc7b9362edd1dd2a856ceb2a5559d78
+acc7d6543a93c98d6d1787a7cc2c49ce
+acca8136fe0a889da46d6da12b2c6996
+accb746d87fac836a58dd043ecddc16e
+acce4d5a212b261cbb7c26d61f45675b
+acd004085ea907d706c6bb1d1c00ce09
+acd2b22a2b7ba474152a566cdfdac161
+acd331efa5c1d06ab112651a77fc4c5a
+acd55db4868a01e3d94f97c10823e380
+acd5c30a88089b16ecbd91471eb4c4f0
+acd9765b5228e5a68c82362e61df7961
+acd984510ecdf5461c112a3c0b2c875a
+acda0f73ec9877c1486d142faa20905f
+acdb56f775256937ea3aee4b64b1956d
+acdb83b6bd1c98d6c8a1fcb19e271aa2
+acdbbe6b31ba1141c2ed8f077ba733d3
+acdc8615fad5f7937b4d9c96fe7da4d9
+acdd10d2c5003f10146e468aa03beb2f
+acdedbe878e59413ded26c0fd1599393
+ace050fdbb45d54eb879be101b3ad4b1
+ace19169dda29142cebd384e38b7af1c
+ace19407f8860caa886d21086866a44a
+ace2258446a48c7e34a9fd48007cc166
+ace231c6db2d8d3cb6a75097d803660b
+ace60b3dea972144255fa5cd00061330
+ace73b793bd6e1eb0b84ec88d9c76dd5
+ace967816af932910830304d303cfecc
+acead24c704eb51f67ea479d1074bc0d
+aceb9cc5f25dee4a54201e6201636aee
+aced3a3a14520be2fe57e080609b8789
+aced7b36912517b925c393c5e2d0a55f
+acee102fa8ebde418e8777b9cfe583f9
+acee42817574e62951aaf741b5d85702
+acef487932486136bc86f0915f580718
+acf3dbfbcf81575e67aa4941579c7fad
+acf60d32d84f3854ee363280df76aefe
+acf6a22fdcb22eb45b8ad8bbdca72ea5
+acf7438e262cecc4a212edc2b63785c6
+acf756e412497b0d23a686541a6d80bb
+acf8f5a26e94020a9379c2f215b4fa8e
+acf953c26124ad06cb218bca151d9ffe
+acf9a30954c0bfbb808716c0a9a37636
+acf9c470405948c8792de30948a7e5b8
+acfa5d4693a91a5411fc086686bd8a17
+acfb5e475e7bd46efeb4ac4aa54e4d72
+acfc70094c467dd263fd18a3a860bebc
+acfee8ef9a37a7e626ebaadcea0cb097
+ad01f7dd22e54bfbee6bcf4de558b57b
+ad021bf050257ce3e735d404f1354946
+ad03709055e2c557f86f083dd6175d6f
+ad080a692a622b71e64d3a1ad135c90f
+ad0c6e9eeb25b982ca6cda00586d051d
+ad0c707a2c603732386db23aa5d0f1c4
+ad0ddb0e6e11f4348ff4eaca7e86be79
+ad11cbbc91ec36ac61404971d9f0b3ac
+ad11ecf2e0256ef72a6042a4d76dfb7e
+ad13c05c9f5d5f82cf07e79f8f7c1676
+ad13faf6160fea96c2238ea00b823100
+ad14bbd7d355b53bbabe73ea39a0881d
+ad1553af989087080f628469b9ef3378
+ad164d93afbf4739617ba9a0b21f44a6
+ad1804218786ebb9ee0641365f264b3a
+ad1958a7311fb6b7cf575332339f08bc
+ad19e7a2ddc7e4a5bffd421b377090d3
+ad1ad09fbbcf4901723a31bb714ec576
+ad1b826c14e52d9c4c6e2b5991d07546
+ad1d6532b626dc7e2419f2980791ba53
+ad20b0aadd7469ec05c462b027ff6323
+ad20d46c66beeb14901eb3b1ba47a9c7
+ad21a80c07bfdff100a6dff26085f27c
+ad21c0600d1fd58e9cd764d313c25e7c
+ad220ce16a19c06cfc284abe3f35d04c
+ad223922daaee509ab4b533bee252155
+ad25824bdf852c34104d66218b040877
+ad283a73622ea98494de620c16d24e51
+ad29e082c66369976c8c2d7d836c0ac6
+ad2a528243394dcffa7ed8ec4cf5815e
+ad2b436411e03807cabe5b2a3bc74827
+ad2c33edca0d770621373ba0f58808bc
+ad2d9a801f1d5773661f217abfd10085
+ad2e68ba15e601f3aad2ea615008e49d
+ad307afc9013a76437b8149749e98a90
+ad316ae1cc286f5f282e3b847f2d3419
+ad3175dd9b980e9b384c4c0d50b6a949
+ad348329ebb9a4fb63c48803a2a6869f
+ad368f9ba7b30e5d57339f85364ae72e
+ad3c3123f6aa18f7f326f38e1d604181
+ad3c940839ea530ac8452bd3514ca6f4
+ad3cde9d38ac8595b775c7c2c3a6cb19
+ad3ee435d3ffa3e6e308039d862ae6fe
+ad41cb412a43b9a0d4aa96c8d9397a9a
+ad437c4467fe05535ea0d0fff8a85939
+ad455b8784fa0ee9a396ff6b1bd74a31
+ad4566074b043dc991b7562167c0d6ff
+ad46879e929314a6b756cdafe0eca759
+ad4817c6a5410b7e391601fad44e4b8f
+ad4989d3d8918eeb945f19397c09301b
+ad4abeff2b803d2d7fe8c2dce58eb137
+ad4c8312d59329ab92a2ce9bc9a6ee5f
+ad4fa03740340c10a2321d1e6fc20b06
+ad4facb83019828863a8b9989e68ed6a
+ad4fb99a250e233fec9f5ae7634a43c0
+ad52099399c6e6e10371ece7bba7838e
+ad52f9984ae752ebbdce5296be45f4ae
+ad583964da1b629961316a4158b302a1
+ad5872fb5f8cf9c3ab5e715500b49bc3
+ad5bb3cccd694610bfdb08cfe9286941
+ad5c80db3ecdcd0fd0ecb974734a8335
+ad5d017379633df15994a6832eef23da
+ad5d8d7216b8a5f220d02e59a1f8d3c2
+ad5f27fdce108ac7e002f4be2d67bc05
+ad5f98e857392cdd6adb664954200aed
+ad60ab7e96ef726b5b4b8f56ea21c0a3
+ad610cf84c8d83e7800d634209ff5eca
+ad61703959edc2de8b45b8f38086df0f
+ad61cf21e0d9f6b48d426c625fa75d88
+ad6333e7214ed8c9f2a2f993c20216ca
+ad64512d66b20e6dec2b522b19a865f5
+ad65fa45e548091ac6ed2a635e29eb49
+ad678244b6e0d50e418356b2eb8b0e88
+ad697ecb628335375d33d6514eb666e5
+ad6c8ee1006fc80b74200bd9879ab88c
+ad6feef7a7bc2853ecc2057c2f6fb720
+ad71cd75212a86ebae5f204ecaa3d22a
+ad749fb8af47517952a023c67ca22d1a
+ad75448b18fadb47bf6ff9b0f0300ed1
+ad77092df2fc7fb21bbba6bcb0b85d88
+ad794692bf7695dd01f79f375fb29fd8
+ad7d94adba8f1932fcbec926dfc79dc4
+ad7dd855065c8bb1c3a98cbf2e1fd4ae
+ad7ee4553787062987f52f68ce064f5d
+ad7f12aaebff16ed7f9a2a7a50a6aa6e
+ad7f339f7424d915d03d06ff85d45e17
+ad7fd9361eafd5005a2e4b57b022b8bc
+ad816389533699098ea36662483cd523
+ad8252360f79ccc527a83602a91dd317
+ad82f82f770b441ca546e11b402d3b22
+ad84f6298938d684a727887b727ea564
+ad8556798acc964026c7497b384984e4
+ad87c1648f62143e685bd1d42bf36706
+ad87f658eeb51cb7d844517064bb382d
+ad884988cf041a2af08e3e7e23c584c5
+ad88a5c7b3fdd31e673708286b2044f4
+ad8bd21be0689ed471107992968a1ee8
+ad8d391393cdcd26b4072f403909e7ef
+ad8d4bda7c60114fa1a5b603c85cacf8
+ad8db15378fdd0aaa2d19b98b88b6147
+ad8ef563025422f862666a61e7801531
+ad8ef6f215d5dd273bfc639d0979e028
+ad90211062af5aaafedab2b4fbc1615c
+ad91cdbf6d0228a5d12c860e73935dae
+ad91e696ae9ece7ada52ddc1e9f59904
+ad927d6005e831d219fadf46ccf3ea32
+ad95008005643421f80005021169c043
+ad959e15235351395edf7776412406bc
+ad96146886d0e3159f04ee0b10726857
+ad972903c257d964dd2cc8e9e6359726
+ad9980a90384e7e71b5ad14a4cfe5e5c
+ad99df8f1fbf5235cd42430798741305
+ad9a959db8b2d6bc312bfa56e1412178
+ad9b104b914b0c58ac9a53eeb1cc3327
+ada3b016b429273550b26a703da96603
+ada3f3765794d7a1dc9fa3932a2dfef6
+ada68b0af0803a4910bb27c5bee25c56
+ada6c3b2ca9f237e44561f7832b7f498
+adab23b34d43e86d7029804168720938
+adac8b89defa83c8ffb1c0cab96cdb6c
+adaec35443e1bebb6656a19906d1de14
+adaf07f869fa7906e921e560b380af69
+adb0811fc6cba841637d7fbcc8522984
+adb10258e94823bbabbc0000058ce236
+adb19a03e33381c596a46ed1eb573972
+adb2c47a309a72087971faf0ffe04e46
+adb6370ddf7a93a90a75a6d59dd9ccc7
+adb8ba0f3e8ddb13bb6387534a2d73ca
+adbd3fa587191e293206fe816549ed31
+adbd42b12d1809e7a6530041ff6ebf3b
+adbefa5a0455aba391fe8b6e41d10075
+adc06a24ec0eeceb296fe9eb91421971
+adc1974be058cfdc05e71baf2015b211
+adc460f797783f5377c8d54d19d76170
+adc4faa690815f5bb94d10994b93aa78
+adc535847a51b67d005bf20fe7b61858
+adc5640b393ab96dc096f4e3b63c22db
+adc639271b164694a62408f965420367
+adc734f88e6c66fcc336fe5703c1776d
+adc7efa7a9da7d984887e74ec76b506b
+adc8abac0b07e0f880f093b6ebf7b1d2
+adcb168a4f4920eb76fe72de68297bde
+adcbc5246ab68a58ad7fe679c8c298f3
+adcc47bc0fd50b2ca64b476e2586e658
+add0b76340904ca970959f1f621971a9
+add1dfaa6baff517756455d6fd4c9725
+add2fa8e3624807f5bbdcc19fd36bcdf
+add3286015badc972e495be212e8d148
+add334ebb888ec68c58eaae56e6ef49e
+add49ac7c2bf5cf2062719ca1c5650b2
+add54d8a75cd7ad828927843caa3bd69
+add5936794c5c56a2ae1b2dd0b4b96ef
+add5ed27ebc3f22e0287f25607026b0d
+add89fbc6effb54a5ea07ad6bda057db
+add91a10d40111971688fe2333717e31
+addceb8d02a96a1ebc5aed1f168cbf5a
+addf18748b98d177c55538733d691453
+ade14a86707a2576c5e2cba801bf8ab2
+ade183d9e1f12adff682249023898054
+ade219b866afd6617fd0bfce019c25b1
+ade4d81dc21ee53a5943e8fbefd28272
+ade4efe4122631da2ee20778cbf8207c
+ade63187e6b3f20dfa42f2feae24c6f4
+ade664148ce481938bf38b23b588f8f6
+ade822c462822575f4bc49479571f5d8
+ade8643c6d2a18d71141dad6a0e4dc66
+ade960391db6bdad4752e9845a72ea28
+ade9c82c6a5c7d209f1c86fbe8c1b6ce
+adeab3ee5b4ab1493c728699b0eb2337
+adeca55c0e17ad269ff6f82f30444bb8
+aded2156b5767f1bc12664fbd4f37a6b
+adedc7c241069557e3b6629f268fc244
+adee254ab06cfd81a7b98a9bb468c7b7
+adefb22fa12271199fc33bfa0fae693c
+adf178add825348006f5bc814b48527c
+adf32e9561f53e14c9157f827c7ff1e6
+adf361d64ab1f5083fdebceeb2121ff3
+adf3b65f9f539d0668c69edd6d33dfb5
+adfc5059ed9df88af6a42c31d70259aa
+adfc72e6d68b6fc0dbd137128a3c1fe8
+adfcc43de05b258268a40d06c9c17be3
+adfe1442983b52a68c50ab10b426a597
+adff0e5ffbf6a8163b0a92946dd672e7
+ae0068b6d0301f801cf34590e9520296
+ae023a3535192a8b2826918786cb8140
+ae0278fb2fadd69532bc5a35064a39fd
+ae02b08686deab4907156c787e6130a0
+ae02f25bb32861d87a6917a7b38ecf6e
+ae04ccd6ef643f10b17146bf2de5217a
+ae06162e9d6903cc4189de5d7cef59fc
+ae09cb5a38fb77a5b524b48b84fdfbbc
+ae0b46c78b3fab232fe8e1bdb9bae1cf
+ae0c84296748f1be1b184ebafdcac6a8
+ae0e175e8a40e9af970e71b980abf474
+ae0fb809153d29fe5cba4493cbbbdc76
+ae0fb8ad3ea7745342cfc76e49951cfc
+ae11190f2856340cd99ddc636ebe2983
+ae131cd6ecc3cec04760aeacb769e991
+ae13a19016313ad9fd07eaa95fdb0ee1
+ae14d4909d2e423dd301b5a0c5b04803
+ae1524f2024ede5b27448a03bd1e4bf4
+ae155d7cedbf68df21a26d50d06dfb88
+ae192bdf5fcb12deca3a87a7fd2de7cb
+ae1a873f4052075429cb4c2f392cae3f
+ae1bb2ed630d0a4ecea9999d3af08afd
+ae1bd75ace7d7a7a6bdec14ac7b534fb
+ae1e94859aea651395cfa52d1b1b269c
+ae1f4acfa374925f30a986ddec06559e
+ae21364ad937db64853f70be9384cf29
+ae2166cef4787d2e7700103ff0638f8e
+ae24df404469c8091734d00fafc813aa
+ae26d3ab43153d3d19d7623992eece98
+ae27604a14ea53783de69e5c9130a504
+ae27d3bc50a28d086840696f4be1e923
+ae281214c4feb22aae32b0aba9d1fc39
+ae2888fd60f4468e0af15dde9633b47d
+ae2a3dcb26d8ce3e794a5a9b4677a2a3
+ae2a96cb5bdfe820b1035f478756c6f4
+ae2cc4aa63fbf399fc19fafe3e704686
+ae2d2137a094185486c580d280f3aedd
+ae2e040b46c6aafe35e4376f3c1637eb
+ae2e1db4fd969002db9407e24f6ff8ad
+ae3081918fd943bbdc453a7814dc7a79
+ae30f5280a52bdc0c90bb399571da1fe
+ae34bfa8c80b39adde7dfaf949958362
+ae353569960675888ba7cadde53bf921
+ae3693f203c0be9a08bbeffc36de9281
+ae38670267fb47052afcbe3061a67132
+ae3879e0841d5358cbdb34a293c2f506
+ae389e648696122f783805890297c2ad
+ae3d952e089bf458001f0b4aedcb7ae5
+ae3dacd844f7f360da2a74551def5c61
+ae3e52986e389163ffae3cf3320fca7c
+ae4057fcb87e99095e34131c489b8558
+ae413dfaf090ca287806077c70faab25
+ae414c54022163a3ab126f92449d1099
+ae41ec9c663f62d34d87d499bb070f59
+ae41f507d2e3e34ab6e758f4448236a3
+ae431b939a3c331ef6da5b01e1b2e701
+ae465f17b482443f12bc3e421cee01b6
+ae4749c10cead0d2d2709de11c42cd22
+ae4797d4311d01d45e095393fa215257
+ae4836d71786a0be2a97d6eca5e09bb1
+ae4867312f826c33e1fed2a8154d0f27
+ae49b3f58a0309fa6601f02a6a39cd51
+ae4b8a07015424861e38c64be89fdd7b
+ae4e4ca52249f236d4c5197a798d6427
+ae4fbb531c95dcdb3ea7aa70c0be6a59
+ae5052265c022c2581386f107883078a
+ae53ee7a67650c8e1812afa473fef168
+ae56dc13019dfeee168801c8aef772b7
+ae57cdae379fef7b69cce83f9ec43009
+ae595434ea13223e3f4cc4f69b4af0e1
+ae5c5181347a34fb127dce4aeda18a81
+ae5dfac12f6a0d39d15c11d9878535a7
+ae5f40b514e1cb1809293f71bffd92f7
+ae5fed091b11ae60b43a9da9585a66e2
+ae61cd7e3c7cb379a0d7fba18bff26ed
+ae65f351c83681f0d2ef9afd9386ac7f
+ae66277a6f5e908a06c5754b1a20c8df
+ae66590090e1d76b4d97eb499e69df4f
+ae667a3bc81461142cc59051586770ee
+ae67a4420d79f4dc88f3fa0c5b543c83
+ae6b713e6ff22da8a04fb001672820dc
+ae6bf215481b6fd2895c4362fbcc8fd1
+ae6bff4e8e665a1a7200ce4a4d179e00
+ae6c3205c99e90e292f80b6eaed6e2e4
+ae6d99c66fdac4e71677a318a4a193dd
+ae6f14aae96cc6817981032ab634663a
+ae71371b59ab1917b2afbd73d06818eb
+ae71dd72450506109babec4984448c09
+ae732674959eb9d03fb9a1446868b1b6
+ae74c4d454025f2b9fb3d2a520927867
+ae760f8296881bfb445c5eac148453ec
+ae7949709e3bd67039231d80a9ef17eb
+ae7a7c5719d1b9afecfd2ae584dafb6c
+ae7ad526efdf0d81c40f1565119dfe60
+ae8218025b7aaef0e8aebac4e997ab7a
+ae8432be01aabf5271aacfc4e108f0d4
+ae84dd57a0f0ba7ea460be47c9b9c034
+ae88acd7cdd5e5c441e14e916e345c89
+ae88b142e3e3cc0a21acc28099aa47fd
+ae890c77dcd028caf8586ada7e7f348f
+ae8a2724fdf6f20f9080b2d85b40c253
+ae8f68ff9f59ccfc5fab1e7d3ac8dbc4
+ae922a8c860e7bf2910b2f98b4a9b276
+ae95878a8a2703f78332ca217400a35c
+ae97debbb516edfcedfa4fa046b5fad2
+ae99d123b7f95f4d40613aa4d7f3ef58
+ae9b24939874ede0ce138534c8569b44
+ae9ba541d00f5c3b7dfc66f9a8f0f23c
+ae9e3da6bba694fb8737d48f74542a80
+ae9fb1e284b0514df9b8e22e1ed9aaf5
+ae9ffd410790661b33cb161ef79c3d87
+aea0d11e5cf469f7e15445d1dba0ec4f
+aea4c9010becd1b2dcbf04eb46bdaf1b
+aea51813be4710544d81841871fb69ce
+aea6efdd4d0fb75d74295e9c27759834
+aea7dd28abfeb2b7992c60fe795d2225
+aea8c24e33d76b7c1b8c58fd0c31a454
+aeab811d08a5c9144d50bcdf487a5636
+aeac44180af0057da4844700eba6805f
+aeac88f4a4dc45a4e3c45268a8c3f179
+aead83e0a027aa8167440c8bf653027a
+aeadab88a5cca99f1ba7aa3cf9d29d60
+aeafe412fa8ca0082bce20ff64cd6e37
+aeb0da2d6263773e3cdbd8d0bd65058c
+aeb1c952199e85aa1085e72ff78e33b1
+aeb1d6cff99cfe0999b6ed458d91091e
+aeb249d2038fb35f2b1aa1647af6893e
+aeb4bc743a39e7be65d9c44c13ae6696
+aeb50fae8d517121ae51e42fdd3101d4
+aeb5e7601391355031da409297959063
+aeb8a5e8a13f3dba28cf8552d97f0413
+aeb8ab06b8684a6f0fd1b198448b3319
+aeb95a4940d14f5212b3bd08b39958de
+aeb9de90fa966058e3cfd45cad26d589
+aeba152442d95b5eccf256b83e2849de
+aebdd410a225ce92066b618d89f73dad
+aebe2648181f6de36855b0ef91d09c72
+aebf3e0b1b8d5711e482e8d60310aad6
+aebfddb65449d2b8197e868386154c83
+aec1207b96bb604f422e25be1c260b32
+aec1914f4d7ab2417bcd07d53b12c1e0
+aec231aa631f46bf60f239fa34d520c4
+aec3ec2e0605a03d1a8b486fd767c56b
+aec4b05f6daaad73b9805f9413693104
+aec4c019f71c551499c10a396f55c65b
+aec5c9ac2f3518d52b513bced57692db
+aec67fd75a41f5d09cb4a6110200ca7c
+aecf4eee92e928506022bd29f4c7f8d4
+aed0952f9655247f3b71a750a8f5e748
+aed0a9e04484e61dccf499fd400c9390
+aed0f5ed42272f679e2964a3455e5606
+aed40b6675ef6751501ec826d4f86ebc
+aed7511febd66ebd0c2b8c195f79a364
+aed9770f0387b6ca9a829477c9908461
+aed98722bbd6ec6a88ea7975043c0f1f
+aeda51ffc3100fe83b330226dc3d13d1
+aedd6ceb948630b608f91555da4033d4
+aedd7b03972adf996f28186890300e4b
+aedd9c531f44cf0fd8667a0d5b0975e2
+aee06ddea3362830e048f20f1efc4eec
+aee0d298184fdbe48ff5e4d5bdf77a0f
+aee224dbb3227a228d1e698db478bf38
+aee3edb1940d83f9725820e766e0cc5a
+aee4c779d95b6123921f7e1fc8059426
+aee746816534167083de1cfb3b067fd4
+aee783d964e8ec665525c46e24744aa4
+aeec4ca9663ffb64f6584eb5b5ff5d08
+aeedb242d9e6bc72647f0aa73ef328d3
+aeeed96207535fd783eef544abf3970a
+aef607bf92f4be7bc011e16c968cb77a
+aef6e1ef2be49c341334dab7741e7f22
+aef7e2c9398a897e165996c43292546c
+aefa292033a5ef22e937a6504221b7c3
+aefb3859272db1aa5439a93c5c1b039b
+aefbb5bda80b82b5b8d7c4e7f2b2dad0
+aefce60666af56b305caf43be4f0eb58
+aeff5675b44a005119a165e0711d0b2a
+aeffd3180e61f4089392517f6cbf8b81
+af053c0171955f2cfa91aba294b0e309
+af0586016ed4111c728e55be41123563
+af0600bad7dc3f190ca6a64f90422455
+af06103ee9ce8f64d9ceb6bf3edef0d8
+af0b4ee4ccbfe51263eda294d112802f
+af0dfd62cd759715e9a7db665f6e9c52
+af0e8fa14e00075fff1b37bf5597785b
+af0f6134060fd7969650b37eb1a617a8
+af0fdf21f5528fd4a42b59c6aa85d1fb
+af123aff193c9c3eedeb4992a19361ec
+af127b546be8bfc59b7a108857999b4b
+af151bc1f80cd923d04080c602cd1cb9
+af1794e1c925b3db0f30273e1dedf850
+af17ee6b2a7e8ed7ad54ca51b09a036a
+af18a720531c2f1a914dd963e47286ce
+af18df60b83225839a4ee33d89c94844
+af18eb76ba5562d39d822e74df58c5e7
+af1b985f6ab0e4e302df88b20ab72bc8
+af1bc6c08b9876410aadaba0f4f74605
+af1ccf8c770f402eb88fe4e64ad28606
+af1d7e023bf7c67455e63c37d941ef94
+af1d9b2030c56ce93c94a4453dab61f4
+af1f26d06ddfdcf118a6162f768b0dd5
+af206766a15f4bc261c83bc61dffa5eb
+af20a0bcf312ecafcb92d7d8a29600eb
+af2851144f41eaa76970f000fd5c018e
+af28a9ce0c334117f23af86d07b33311
+af28b1255046e259b3f4416ebda9cdc2
+af2943a519534b065be5deedfb2d59f6
+af29a7a9321c0941bf1200a2159f95b3
+af2ae014dc93144238b7951296bf6a06
+af2aeaa639592c175ce6f368c1f28a6d
+af2bd497c50ff86216daf89ad9332a5a
+af33c04b9f3d17e7bab61102634e3413
+af3420035d6e3f28041cbd243e3d2953
+af372365c89f4da8fcdcb987dd636319
+af375bd40a428956c470d73dcea1ded3
+af3b6f3c6ee0966f5b2dbe57d2d9eaa6
+af3e45ae5efbeb209b8d167b14a0aaaf
+af3e9821e83926e72345b82c96a1924b
+af40d37511714a65920e03ea6dc87591
+af433114e8bbe0097ebb739a301a680e
+af45354890afab2d3704c41ecc4e618a
+af4858674c652551b87f06be82d3be4e
+af4906392c40cfefe61c56cfc474bc32
+af499709bcc8c86eded1c991e8c3e839
+af4ca8db70e2b39f356221bdcaa07602
+af50b4f884299f60ad5f5b70183ba1c2
+af53307aa3a3dd5e940b08ec5d8e0c39
+af541a245bc254a79bbedbadc52ae732
+af55d6361fd8aba2dd132c300e9371b6
+af56971fb1e394b06d8e071d4ce2f93c
+af570b40cb0bcffabeb9f14375c49967
+af59039f7fd030221accf7065d289c8f
+af5a49d34932d2c221fbc4ca6883cb56
+af5c97c9ad40069de547879cc34d371f
+af5d934ba16b3198bbbb2eb0eafea2a6
+af5fd4a0b138a7cb3d722648fe9f76e2
+af656357dc7ca3f568e0c6331495128d
+af67d598838637d4c2299843ee81236a
+af683e9bc3d22fcfb02bd187053d9cb8
+af6a1e18a2de837f64ff43b8cd026fa1
+af7163adbcebe9cfa5ba72ab93c6f51e
+af718385f5d6cbb52022938fe4d2f62a
+af73cfd8ccc7963d8e86b2a54efb7d6a
+af73f434b7d91d5f460cef8d7f88c372
+af7587117781a92a7cdf85bcc2ebda20
+af765d3fbdf0635f2aedcd7de1212382
+af7704910a12b691555ba2cb2bf45155
+af77e42025a0f942bbfe6f029f67d5d4
+af77ee7221781de8be38b8e398fb5ecf
+af78c16d879dd602b8e8391369117743
+af791f3bcabbe62573dd841e59b345fa
+af7c31d1529764e002a45f102fe5d284
+af7dee23040e91baf82ecdc37fa53915
+af7fd4187e21d38124dd09e855bcbc17
+af817c74a01837b7025f865389dfc203
+af8220f0b4c16293d034d4d72b3ad6fd
+af84c9606c1321fc7ca290754b6fa715
+af8628eb6bb6e7f32cb91ac931e9cb9a
+af872faca6301d1af131e581ccda915a
+af880a0b10968845b2a69e5b4746b22c
+af8a20fa2e5dbcbc9d34bb6299843100
+af8ad2a3aca502400d97c2a817722aab
+af8b0e32d4533947e0b84e19a9636836
+af8b952be71c4b996b0be144e1a9ebda
+af8d34f8092bf7e2814f29e7451699df
+af8e95b1b259cfba760c45921413f9d5
+af8f9af08f94ac82a8fbee8e4864be7b
+af904077f32ddd4b38313ddd22a5e71f
+af95448979091cc9d4f4eea2d4be9a99
+af9b75e9d5ddcc07ab528ecd4545a9a3
+af9d542362ef4db8540efb0b553eaec4
+afa00581afc286d3bb47d3c19091f1a8
+afa32d64646cf4fd62b556316ae33e4b
+afa5921fa3d566e7b035b030cfc10752
+afa5e02e260003e7e12fa89e14974f6f
+afa8433d258373b53252d7f3590155f5
+afaa34774aa0c4b0fe3efb999e1bc850
+afab22415a00b452f55ae5536b46a8ac
+afabb37901cd47f6c225fca939e87010
+afabc7d02b419669e3549cf0fcb8c57e
+afaeb566a2329e6c48c68d1dc5ba9461
+afb0d0a02918af4371d90f3af6a4b223
+afb1833c1265f6106c39c3dfe63996a2
+afb3d65b40c59eeed5ddc0b4389a7db2
+afb403d8762ea0459c586a7624c89997
+afb5c8c62cb25d3b176bf80dc964d9f4
+afb618c4300402a6ce5f4bf84308881a
+afb731fc7719f91be6efc9db877b896b
+afb8a6e143b47e6113fff9acd55d10e7
+afbfc663f7f7d801d2df7911a50aea24
+afc2eede4485470309be7f80918cb30a
+afc377db7b09267cff2aa001c1ba03cf
+afc3a0ab831d7ab8f3b4e8dce04ac559
+afc45100957cd7234757c04ad453a8f5
+afc4995349d2c221b187d1c263e0f84a
+afc5200bc6c6f8540659cd10501229fa
+afc59efd427a340f6db7406fadaa31a0
+afc6533924aee63adb52d7a23869e26e
+afc6a99acc64bf94200bd85e72fcd7f1
+afccdd1649487197fefeafff49276bc5
+afcdc47eaeb2a195d61de28c511d3fa7
+afd0c3b118ffab2aed4d6075ff82afbf
+afd0cb290fd37a0249caad0374c1a9ec
+afd132aab934c51837137b0ddf904a15
+afd1c3f291da477ce8cb34ecaed18a4e
+afd1c74be55be88a9781b8f962879d2e
+afd21138154cf18add1a4f9e53316fb2
+afd354f01ecc1199b2fcb6edb1bbbfaa
+afdccea40475c3047e19c184e7d25a7e
+afdd5c2586eb706e9a01101a4be81a9d
+afde971233393044fb66d1ebefaa67fc
+afe1b7788c9ab0b179df23329f54fd53
+afe34384c2d2d83951034f2502dfbe9c
+afe5661f29269bae1e4fc100eb87bdbd
+afe63e5ce761c9b5c1606818086426ea
+afe716550173ea58269f9082473dbce9
+afeb389bca3db6b06725ea6fa254d778
+afec409a1a09dc74f37abe9f24019130
+afecd94e5fe149ca84548f37edec98a7
+afee52a413a1e06b9af67dd327d27cd9
+aff39d197de0aeafd2df7799f280b535
+aff95cb6a570b4b458963c6b6a121510
+affa0819d9bba047379711759f108f96
+affa208224faffbaa43022423b1029c9
+affa47858fe22ca285e49d5e7f52b109
+affcbc60522cb62a40244e54e01272a6
+affd3cd81beba94b562c833ff185a052
+affe379686eebabe93fd0ecba27037b8
+b0023ce545c557990da3292d3352ef75
+b00348062392a28fb6f64f55f8bef5d6
+b003867af9f085cdde5dc0b5ede43ac8
+b003ac024df6081d512dec7048711d50
+b0058d3dd23a8ecc32e4d6b42abc53b2
+b0072bf689bf5b08e0377fa084a65b76
+b0078c7b757653c9c0b7a2288920fa7f
+b00a0282cfcc9d4426ea6a4d06a02486
+b00cdb7416e4ca0f092186d8b5c8b281
+b00ceca7afb0bdd1a2b1893fc0a2982f
+b00de7161f28797061f60487a9770365
+b00e42a3bc94c064cc6d47ca904a7f8c
+b0114afe0a4ead66e2084e338892cf81
+b011c3a13c4b4e4da0ff82af65810432
+b0126507a9477d265dc01312f0c09366
+b013d0adfae044addd9f8dc998b4b0c4
+b016968885805a2f4ec1a0e8ad0a7904
+b0182100b92e307f7ca956e565ea383b
+b018444fed284473d85e90af265bf4a2
+b018978eaa0c9d34e285140e8b47c4d8
+b0189a9cd14937e54239a22fe508f060
+b01944d0f8a77b94269077a1a3e25732
+b019c1605f8368e5bd89ed527a4d60a1
+b01afcae08babe504d65e3f59f19bdad
+b020f0f8e2be76262a30fd2cce55cfb6
+b022a4e37a5002bcc96270a171460b17
+b023eb5e222a3d1c6952b25671b55beb
+b0240f075ecf03141e99b871362b2915
+b02668a957b127a28767597757afe13c
+b026f167e1713e0b7f92db52311fe100
+b027c1b2613854b6c4bd3cf76bce6643
+b028010a6101097af242a2b9a648af44
+b02804238536c56c5596fdc6d7e966f4
+b029d5fff80b63b7d0d62b783b457668
+b029dd4ff5784be726458f57f3bae466
+b029f6fd93590761b64eb0660e3f41b2
+b02af3761879800b344a37b4eb16e348
+b034ff0fbd084ba84446212d759f539e
+b0351b4c8544f7722b160c09f40caa4f
+b035416c67fa432c05b66846195b9da8
+b03613bfd2f07bb3d8ef6570a9d7e7c7
+b03921f1d5675449db946cce11341463
+b03937d9adbd7b22d81e1515974792b6
+b03a4565ee7a5cfdc4f6be016b3209fc
+b03adf067126bf8d046f9674cf500c86
+b03af17e55de781a31bd7e75e4d36d5d
+b03c110eb71bf61c60a052aac9cfbd06
+b03d44fc8726d3ce3a43abd1c8e35e3f
+b03dd4051b0cbee245194248d69fbd7e
+b03ea10ab8bb65563fdafed5c4256835
+b040793d50e24b294be205372e9be74f
+b040c895327b8bf967a7ef83ca9a2fa3
+b041039fbf449f6491ab15288170f269
+b045356ad7e691813402832fe64d4d28
+b045cc5ce477c6e665eca3fbc1de562d
+b047d2f50c4a95574b5431cae512c88f
+b048c3b0dbbf1c8eeddddad457fb0fae
+b049787e6e808cc241f385380647f98e
+b04afc6f2a5352ef65da3911d927f33c
+b04c85705fde19d1f0419c99c9e3ddb2
+b04d07a1fdd8827fe543dd85033d266d
+b04f262825dc79e7ee0285ad80ecee7e
+b05b00e3875ff55bb77cfa33e35146fe
+b05c7550a2c4cb538286278027e31b78
+b05d3eb72a82650871cbf67e50969ecd
+b05d81b31ceca0cc8178f2440bec0bbe
+b05da5c12bec67f2967b577f9e61dbb3
+b05e207fcbef4293ab2c10159d87bb19
+b0612e7c90242f97499b9fb293468ba7
+b061a36e84457ce83f7f8d2b398f9754
+b06361edc0b57bd99992513dea2a3065
+b0636799569acae92f33b46faf3fa02a
+b068d4a6dfda7e6cf507078ca3748244
+b06938bf8d1cd2e5acf1d43eccf77bcb
+b0694fb3833a352815a0e1177e0aa21b
+b069ca76763079792490247f4433c61a
+b069e24f70c23dfdd1908b20d46a26b1
+b06a2b45f0467ff6197097f292fd4d8f
+b06bc21fceb9fe01427f93c14476371b
+b06c936a8db65c6fca6a28881c5e416c
+b06e959dc57dcf57f2ca48eb0b78681d
+b06f07a58bfe9d34c56589434bc8c3c9
+b06f5b25100a9f2afa1cbada975ad0a8
+b0707696ba91652a6b27917609c35424
+b0722d74a9a440945a8007825c0f729d
+b07382b8dfc62fa4a670e5d4182333e2
+b077d1ff85932951f1032f8e5fe7d495
+b0780a49b7e5b04d3097689b3a5bb0b0
+b078351a0b0a1403f0441c64206decd2
+b07919c013f51df76f1271d4fc792d7c
+b0796421e2c79bead63b24d52d5124f5
+b07a424b2a2c46de2e76984129e4c841
+b07ae3517e72d72746ea7bcb41eab72c
+b07c677b913c7ff2f6c65de4158bc66e
+b07d97574aeaf22c3601f39151bd98f4
+b0819b4a1273582d07adf4173ae67814
+b08361a4d7b1607f0932f25d3236efcc
+b08524449b18479855098142e8f5d3b9
+b086a7d1cfe08f0f0c97849fc6c55405
+b08cf561c431095ec9e8808f72511170
+b08d0f5aadfc78776946c35e5ab8f1e9
+b08da3ce6e5e936ae1ed04abaeb1e5c8
+b08dd48b987ded3e5186c4fbbda93326
+b08ea19a54932bad3b31c6293caa9ba7
+b08f5a5ea04aa58ac348933fbf527600
+b0920fdd36227c21f04f84f0db7c869c
+b093e89e7bc0aaa1e0e00d3e85d5c39a
+b09440cc34e63922ba7b1ef48c27b9cd
+b096b88f4e68cfbec253eec740fc4aa6
+b09724ccb17f368f6dcc7aaba31cfdb1
+b0976d5d8dd3dc219b8bbd70529ebc93
+b0993338620994c0837ecbb50fac12b4
+b099c5e1e0a96366b4b63fe6c5a6479b
+b09ae8be9397fd08c04b5442c2bc63f1
+b09cc3c319419161c2db3905da1071e1
+b09d7522cc51e67ef7304084b4bab911
+b09f9184cdac29fb91a009fe009c4242
+b09fd90a299fb244feb9704aa8d9f939
+b0a2ea7b5b85d90d01c4ec9bd25ef39d
+b0a301443d5b422ae3e82f2db0b12ba0
+b0a49bfdd92a7166aaa22ae88ac73aa0
+b0a6681ad69eacb7889e1c1e5f38dad1
+b0a8e6f685eaa127be7efa3a093cd20e
+b0a99748474ae701b4c885414151c9dd
+b0ab76af879d8c92086d960b476342f1
+b0ab8fd0edc0fd8b8b6da25ec6f4880f
+b0aed6cf8d48e1c2964dcc9ccaf121a9
+b0af8a15da5d662d4900dce3379a5191
+b0b0c709f8a52d22f780261939df1b0e
+b0b190fb0f52ed04bbf8014537f43669
+b0b300a8a40fd2d9dc39f3149b0feccc
+b0b5c27126d91e21ed0937da6839f2f6
+b0b699fe21e88020f6a1c5a027be1edf
+b0b75ca4039c86bc033dc651e6c550d5
+b0b94b0a3463d60d953939f4689b2877
+b0b9cdc4ae4c91f7db3f78a65febb701
+b0ba0aaabd9b12161d4ad113987b83dc
+b0baa056e5ec62da32e2828ca4fc60f4
+b0bca52f0058c1d955ebb636fab93bf9
+b0bcc932257d2e424e99d829da4ea248
+b0bd7153629ba0fffe5bd096035cb8ae
+b0bd9570275dc92a3081a078d74fa3e7
+b0be126d4ba43dd5276f5d36dc4aa604
+b0bf983d49422c4aa2c27dbd46963023
+b0c22392957e0ceb7a0e8cba3eb7828a
+b0c297e12429822baff57b741fe5ffdd
+b0c387bc67c599b52a11b9b6d48b6ee9
+b0c7719fe369c0edbf6ff789f2aabfed
+b0c79bb3e1c47ab4b308d8b50d3c7190
+b0cadc6066db0e1e4fe640c4bc59a72d
+b0cadc7b2cac2b8f2bf4fda135c23c5b
+b0cb5f3428d1aa11ca6bf92017fbc0f5
+b0cc0776f027628038deab65578f60a1
+b0cc1c77ea4987789af4af9dbc84c770
+b0ceb1dcb24bf679fce27c89318c9cb3
+b0ceb26248423d7bc13d202c2cb320f9
+b0cf9bfbc95f54d1e97ae6a1219d65c3
+b0cfdeeba2faa6aa79ccccbd5956fb0a
+b0d3d748bded19d1d51edd133df5f02e
+b0d41fbf8342564f05b26890975b2be5
+b0d4e2510795aff0607768296bb54413
+b0d6090d6235adbf3ad65cfc621ca100
+b0d9791b91ac882436688c897b1623d2
+b0daad94ad263f2529f77efeaa966948
+b0dd7260658158dc6288aadf887f0b20
+b0de0a2550140b6708bfac7fc4d1311e
+b0e00e4364188ea1cbff06017d97974b
+b0e06b0e665e463dc0396d0adaf19b60
+b0e21c27cb43325f0d2e4b68774c9e29
+b0e47d951f8fc90e72982bd82fb825f1
+b0e580283d40bc2cddc96bdee652d456
+b0e62eadc8fff702de36db462f916158
+b0e77801ffc758af791e612e4ea6bb7b
+b0e847cdb66477587a793cae3a50849c
+b0ea259c8c9c2bdccdad7c045a2dfe48
+b0ec0ff1fb581f89ed2409ff6f09a14c
+b0ed2a706cd57c5d84867b10f0c71656
+b0ed5168ed64c5ea230e036ee49d17a4
+b0ed70bf96b459883d2562205e142db8
+b0ede2239efd9774001187a5aba97d81
+b0ee816f433717323efdbe06bc385245
+b0f536a2d68e78327547df0aa7fff1f9
+b0f5f097139fae9d01a5f0a66c0bc771
+b0f6431d297ada1f20db740d5fc714cc
+b0f7475cdbe5ba7bde5d9d71d1c71cdc
+b0f75bdaecfe85c81d7bbf83442978eb
+b0f7e6fee81aa9edd3b1d6da66741a58
+b0f8fa6f73fc0b5a8aed4eb8c9af1b0d
+b0f9433ca106f6737d9f774b1a842286
+b0f9bd21ab19cadaf86ae6f12d8a4ce6
+b0fb0b0c40095e2c36fc81a99ceed70f
+b0fc3df34b82f65a61e0b6bcf53ca4ba
+b0fddb40cea74bc83829421ec71a60ed
+b0fde3def737cc539ecdfafcf53b9160
+b0fe133cebb27f479cd849156143fd4b
+b1006e18bae5edc0640177167e8eddba
+b1019823c8ea057e922002e0fca0ecb6
+b101e0fa1c94776e95b6bb370b927628
+b103f56aac879cfd4d2601072633e8e5
+b104442cf29072010934bf328d4f1ed9
+b10746410f283681e0d57340f3656594
+b10911ab64751005db4aba9f63d9df62
+b10a20e1b7e60ed31daa8ce2c4081b7b
+b10f4a0102dde33b4e41f297074fb404
+b1114179a50a28812ca7bd9dfad19dba
+b112cb81c94fcbb708bda0b9055e5556
+b1146dfa8ffbfa6167afb0a0b9b605e0
+b11bbf606f600ab50aa2a5ad8cce265b
+b11e01526ae9dfd2e509617e6a33864c
+b11ff28b6159ba51fcfa219c7d773aa5
+b1204cc92defc8bf3e64bab30e221a70
+b121205ed9e49767c22426d9e023fc5e
+b1212bd7805c3cbf6e1fe5cf4ec98d69
+b121dcdad5ad8ccdfd768f493c071d04
+b12378cc4e6cc89228ad7b722f7a1025
+b1267b221819f8d9c7e76eacff83cfd1
+b12b7b5f3619697297464b2931fc28c7
+b12bcb43d36f80e32b5c7d85b9af4754
+b12c36d89f359589e4b24ebd2294de5a
+b12cfdaed7541d7557cc60af068ace97
+b13097efdf6a87fbb494aa7e212e4f71
+b131041da698d9df6eb243d147e25aaf
+b131c13318299709402bc08df954e568
+b1323713ab6caa4d1ded14c52e49aad4
+b1349eb094b84c14f892679a7581fbcb
+b1364872987a21f1ca39f9886479b7ff
+b1369900c235d99f3c57dd84ee394933
+b13896956ba6b1b5a51632cf1d8055ad
+b1389d2acbb0ebf5edc7fe49ef60bce1
+b13944daefefe8f1cb4e087700f17654
+b13aad5f6c7023e71c5f92917eff02c8
+b13bf725a8e2bfa89664b22b4529f1fd
+b13ce15fe6174a07b39d2b14bf554965
+b13d02599fa582da288d2bae69876520
+b1413766c938669730761bc6005199f0
+b142e024f80a40c441be9cfefc3dfe05
+b1454cd29b5e5d49670feb9dd861eb4c
+b1472d0aeb8839b61d94a10ab32d481e
+b1478a119fac333a3edfdc7567d2ed1c
+b14a0cd1bb8f3783d4d5400aa55d85a6
+b14bf89192bc622c4d2cf83939e0b487
+b14c1f25953e74790bfb7979fec8c7ea
+b15061937d59e6e102203c896ddfe95d
+b1507baead651d7e9e0c95eae3cd7063
+b15210d0eff633e3b526f1db2b4ebf55
+b1541ed4026c7b929bc1fdb978fe9450
+b155036cae26b5c5a44137a0162b543d
+b1569410b74419dfb0f7020e98f60eb1
+b157b93be085c79207c9422cb7e9e33d
+b15913f1f5f5211b28622d9dabd2e7ee
+b159938f15e78a4cae5175030e866ad1
+b15f98082ad7f490d45f5569fb499e33
+b15fec3050984e101a00e0077a4a5a5e
+b160692237247be24409094ee0ad95ba
+b160ac12c2ad53feab264b045bd64d53
+b162385a2d1ead6e03b5f46fef0c9cb9
+b1630cc1b27834047847ac61599e4c0f
+b163460de7aacff6a278e5ac7daf25f8
+b164ab74eb5c3d6badcc075e0b95ca55
+b164db3867c6d87ddfa6a94808f0c4d4
+b1653eb64b55a7828155c9892ee6505e
+b166d51fd6a36efcf180e30482c20793
+b16775eeb4430de4e9411fb6ff3ccead
+b16961ffa3a09580846e0412fc2eec95
+b16b0500d47b9cab6ca74d0f3cd9325d
+b16f48be60f8969b93bc85f966ab9b86
+b17204f54cfbc161424dddb9c8bd2529
+b17207c63ccf0bfdbd655ef3ec5dd384
+b17541fe46aeb075ee59e3a8da16edb7
+b17778b3af0c4713b713d54972898a6a
+b17912a3ce4ea0b7222e4739909f1416
+b17994e00ead525d7b5e9cd70c2c70e5
+b17a84254b6354f6dfa2a17a1e844b3f
+b17e33d2688e58b9b1b7f1426c4dc1aa
+b17e4eee58f92715f75b9befeb28a80a
+b182f3eddb71893945976d4fed27ba84
+b183c425efc80d455e4b166d0a95bbdb
+b18458f81a7548a99dc34f7edb25ad16
+b187ff8c3fedb0480c850f8679a3eba5
+b18d9ad11c1c77784214a5725b080e81
+b18ffd3abcf540e493835984088d53e9
+b1907f4a203ef7a3b1743931cd6e0ff0
+b19164a927959f00719f4e3c2825ac10
+b193e2f5debab5c5c9ee7f313a7dee36
+b19996ab23c7493987fb14d8ac110be2
+b19a9db22dc2e63bb4f8ecf422635d6f
+b19f22462e4cb12bf3a78156b03f3404
+b19f2ec7dc50dd91edb294e496d6b9bc
+b19f31da27578b77e120124b7e91b8c7
+b19fb628ff498ad6da4faca70400dfcd
+b19fbe6f338d3555a96101a62b1f9957
+b1a0f1711497c6f16d3e1c816aeddb4e
+b1a17f9fe0410979bceb956c8d0a9a1b
+b1a1b455b5f123afcb78ce1e221d4850
+b1a85ed495cf5b61d74742721590d872
+b1a8ecf2b7210cc10ca489c4fc658fdc
+b1aae0148f6cf59065d0888dfd4a246e
+b1ad7001fc46ab778fd01254d8ff4745
+b1ae7467e18cf98d445d08d93ebf90ec
+b1afd424c65ef6eca78aa133ace0d070
+b1b035e30af19c19ec5f86f93e674724
+b1b1f620b43bb68b2e2895f7c521129b
+b1b3787eed2d7316efe50219a4e06c39
+b1babc0de4c2c452ae1bc8dbba1ccab3
+b1bd0a9bf7ef833367f8ae66155d7c21
+b1bfa2662017f2fe7458a218117343b5
+b1c16779248b02505efebe4ba03b2cd7
+b1c1b6e520d097070b176bd0dee29974
+b1c227d0f4d64f9a8ffaa0959e56a92e
+b1c29b3f63834c1e1e72e0d69c2bb482
+b1c393e4d5b776694ffdde5a4bc4269a
+b1c3cbbfb0af640969b64ae9dd4b273f
+b1c42d05130de27cc18990a86c0e8f00
+b1c79036c2e37132df6beb4cc7ce22c2
+b1c8b8d0134270d983c63cf05f0681d6
+b1cd4ca15c3e4d2aa16723473f7575ff
+b1cde64b94bdf0142c7a7d96733fd381
+b1cdf4ae749fd3f4b2916f90c207db12
+b1cef8da6549dc882409685648317e4f
+b1d09265a28154d9f6bddacc6d0d2097
+b1d0e3b5dfe6e31dc1a3296bacdcd723
+b1d2a9a4ab2f1de2f206e138718c1536
+b1d484d850eafad65cf720521933236d
+b1d7e67bb53c64e2e50066bc03173505
+b1d860f980bd59617f7d9e1530483fbc
+b1d86e7cfbf245c3c9066e9c90801de3
+b1d9bdc61f8dd3af82e23b610b6f7fe7
+b1dd462253a6860c6197ae6e5dfcc182
+b1dd52b7dee5f9bf828d1a7eaba32406
+b1dda31c9a8f0e4b43ea77a4417e423e
+b1e060cd82344e3247a9293d4b26a682
+b1e3ce89d84300594e6f13b39a4baeef
+b1e475e11d62d09578f399dafd7214c1
+b1e4a759ff1a2707d1313415da657516
+b1e64f85edd44564a7f548a417712f3d
+b1e75ef9f125bdd179ed9c88f2c6f3bd
+b1ec6b81376ab48db730a3283ade2ec6
+b1edcc609d242c8ce75b56e8ff0345e7
+b1efb02a6a743916e473c155436e7407
+b1f2fbc855a5aa07de3e63384b7defa1
+b1f33c30345bc9e1287eb488bfff3716
+b1f346d4add415024bba3a5ccf00bbc8
+b1f4acf9c73f5957510f91758c804325
+b1f59caa1b42ba87703b722c6567f4c1
+b1f638bb8ecfac7c57e2a4edc090d7c0
+b1f7fd7f20576c15c5ecceedd93e4b73
+b1fa69f9271812d7881637c349340e09
+b1ff0d219255972e58380c0d1fec53b7
+b2019eb6c10d3df138c7a70b35efbce2
+b2042999ca8596ce5f25f2baba4b2df4
+b20624fdd7d972eeec1207772a660e19
+b206f33679ea56623c70fffb7f6e7339
+b208e919b9fc71610e35bc8ab0b07892
+b20b37d23657c5f0f190b7cde67d808b
+b20cde64bdb7efba64390e9ffffd8eac
+b20d0e523b032b58b7233ab399459e0e
+b20da28c0a3deb7778857eff3458aae8
+b20e21fec520c6e06d6d2492f9150a9c
+b210435817a2cfb27b194dac90e86161
+b212ac09759a82c64f17eb65b1c25cc2
+b2159d6e2fa22a96d0c4eced5cf5f7ab
+b21661fdb6098ab88703e6e047899cd6
+b2171461dd57720d7fffa6bdbddbd8cc
+b218790ad42a8fa55d27737892b534a6
+b21b5b19eb5b75ed9ffa662c4496378b
+b21caf6cfd151255c175131506b2b8fe
+b21dd16b20aa780fea8553d86adb9552
+b21e8cc81a67417ebd457ab61c912c4b
+b21f5410179264c91cda0ad877d4f1b2
+b2206b53794bada25140ff32791d2bcc
+b224f95a3d85b355015ec7f293671da2
+b22682010e6fbeb4f7ae518caef82d7f
+b2295934af2a48ab0205ea8f6dab9517
+b22c63290111e73906a8f924d4fc7360
+b233e53c9cd06bfb6efb90f984faef0f
+b235e5b89454bfffda572e6c0b36067f
+b2362dfcf73a0313c923e3b2906ff194
+b238b464e64cbbd4bd22119651bbc93a
+b2390dcb52d5faf0c620df796efe9269
+b23a6f450f8bd4e65de4f88510d8af29
+b23c91060a9172b162fde7923d1ab0fc
+b23ce970ffbaa94585acd769f5ac8842
+b23d30dacd203346b063dfe141adf749
+b23e10b9da1f7de481cb8581dc713e12
+b23f0964bb3a6b236025de57d0cc3ce5
+b23fad36f1d467cdccb5cf578c8df92a
+b2403ebc657f8fa7660a798ba6d5f923
+b2405c0d0232dc7c8e2e2c2e5b01fd7a
+b2407e2717defe784a20a33fa232fb41
+b2410fb977e732950c4d584a00119c64
+b2413940be04b774de28b69b11a97646
+b2417b1f409bd52495c0c61f7c6a594f
+b2421eb448b8a88d367e5d1a5f263855
+b243d0d8527a74881625f348e5c3543d
+b244cf417a638b78a539e19b86bbf249
+b245a11852555054217f06148ae9ff7d
+b2477a03c2cad05d743fd0812806c0d9
+b2485862f12383e5d63c1e25dd774195
+b2489887002ef80078d92854e2d9bb73
+b24c6362c93dfa570c2f7619816f946e
+b24c96a752dd665739f907a0007568b5
+b24d4194b3ac784ceef2abf28720b0d0
+b24d6dafad00052b6748f394dc93f4bd
+b24dc65c6f54f69810dcf5a1743c7e0c
+b24e8dd70fa553b2f6d03bfd9b468115
+b24e94f047e5ad1d80333374ad1a36b6
+b24f7e0ce96f34b5b69a44cf98e147df
+b253ea3aec6c3f496255b36414194760
+b2541b1046bf5bc50e71f72e33b07411
+b255c0f8ad30b74ad8d3807ad4add3db
+b257806b24ab69d3b98bcb28ece0450a
+b25816af2c7e4750fc35823e691375b4
+b25c2b1ffd0b41f5f7c51f44d745cff4
+b25d6c4036b74f5c52d9b900ee008869
+b25f1cb7e7a14cd0cecfa39cc7d100d8
+b26056cc8fb324ec2d9c47979ea82b38
+b261fedea116dc136f3ce552b9279ff2
+b2629218de295a49e3f1ba7e1e11c941
+b263849e0cf554856eaed06c5ce0a7ab
+b263eb9f0c9fe177143877a19c897af1
+b264be736acb8b6312b7901aa01fa879
+b26505c6ad9b5432a9a9aed9f5fd27f3
+b265e79c62bbfd8b28a593a91d3964ab
+b265f0bb5216ecae8d34f9979cd8b50e
+b2679a7eff46a6b3d1a8e7f39a45172c
+b26802f545f1576c21648b92e282293d
+b2691867ee7ec82a1895cf72fedcc57b
+b26919768dda1dcfcfbb4929512d139a
+b269e042f29c053d8d8746da236c9720
+b26ba6140f635d718888fe229fff952c
+b26cb01a3efc6ba45d38fb828a2b98e1
+b26cd03273c9b8cd3dc860276c4c9dc4
+b26db0bf383246e625d8dcb2929fc2f8
+b26de5d9a874f4cee3cc78850b7f2f1d
+b26eadc04e5dc2cb71b0081c96a6b289
+b26ee8bfe6e722f020de7c35aaccfb57
+b26f4b2bf98ea446a4c10fe6b258bbc9
+b26f799b3244f1c25b6c47600c170967
+b26fdffe21fd612d141a0ba803b0c306
+b276e04bbf3f76f937e2079d222d7938
+b2794d1e3df2b53f09fed8f2dbc1dd18
+b27b74e34e5f9d55452d5c28f6998c74
+b27df0e92d9c6434841f1cd77d970879
+b27e4e1c5932fe4f90ec29f6da0752d8
+b281b0b28a6721fbb160c3297a26ca0f
+b283e7bc984f4ffb13fbc9c1f9e95465
+b28448e7e19e0a27766b400ac289b00d
+b2846ef1ec126c594731caebb39edc9b
+b2852e31126c1cb04f8d28269def1b06
+b286056559b84e710f2bb5de7a848abb
+b286aa60904b4f09cf808d95c668b1c5
+b2884b48912af2eb391652f4d1739ebe
+b28943dc2bcf8e7ffeac05577efd8a44
+b289b76d12aded2f7dff14342390bb70
+b28a830a3f305b46079e5f0558ffef39
+b28b018c3de8a202a7a1e5ce6c88b6a0
+b28b4c6b36a31a15e2e4f5c6bdf70014
+b28b9686c0f0154612975e8710e310a4
+b28bad4d824946e71ecf110ea6c6e923
+b28eb38c4eca1c29e862110737b402ae
+b28ed31cdc34b2f42e77863ba45b6ccc
+b2906e1841b85dd22f01a303b167bd41
+b292fa1480cebe9d4b74ea6632c82446
+b293ccd904eff216f617eceac55021c4
+b2957bb54ea6cda70766ee5c79069083
+b295b977571d7800306807133043ce21
+b29603401ff2cf963c1b01a75b9ba5dd
+b298d9a269b571d14012a9f92ad902b2
+b299e95512422fb4e9a117a62aa722ee
+b29b12e87e1b352ecc31e46cadb93e4f
+b29c5b8723ef7ba692d60c37b778dc54
+b2a27102e23abf83a48946d92f0d6471
+b2a5672d500b935223f5998d7abc73d1
+b2a572699634d0189e211409e7f27deb
+b2a7bfb7eb867d7a956c42c27dd23500
+b2a9514a459d6608c9048312e0ca208b
+b2ab826cfd03eab7d655d25d007547ec
+b2ac5728bdb8f9cf8e2d97554f303a40
+b2afb6f4bd2dfa2b607e91fac3b2ae3a
+b2b0e347e56e1aaced5debed4deb944f
+b2b1be8dbf9bd3df77b314e58c3ec1de
+b2b2530a2821b7860493d832753179f5
+b2b6e4b87298780d28a99e9cacde924d
+b2b7266e8cc610d70bcb3b07903170e9
+b2b768aab2541ed7ce410bdcec42958c
+b2b7df3af217f92e5883f199ac962a7e
+b2bb59bdc79a692e5b6352f4af2b5ed6
+b2bcff107ca4017c577ecff3210aa7f7
+b2bef5b72202e3383de81e5dd04b71b7
+b2bf3b33e4445a983cb2624d843df7e3
+b2c012cc1c535b51507db9677c7d6103
+b2c094b1bec44be6cb3afb28c77c3593
+b2c0bc9623a5714e881e041fddb9fa1f
+b2c11b23998f7ca974aaf60ce3e21897
+b2c2bf6c5ac22001c7535c6479baf0b4
+b2c45a006b42f143e8ba23977e89ee86
+b2c8dc5c3f5cca4458b324aa730b4d1c
+b2ca9b37f73a9aa996a50608146a1429
+b2cb0ee3e1447232da3b0d0ded76b697
+b2cb495e14f04eba872f9c52dfc4935d
+b2ccbe2997c329fb4adb2598758b79e6
+b2ceb1576cd1475336e8823f4622c78a
+b2d1ffeadb8ab0d9210ca3ee7d15539c
+b2d22d11e08b09d27dc05d705df602bd
+b2d22eae6cf3e4e8d676b6f4cc2c5f97
+b2d32450751a27dac911f847112faf6c
+b2d62e396e63f2aa68ae86b8986eeebd
+b2d8d1eaec313f9382cea7eb6c59c5d8
+b2da9ba5361135deee3b3e3f94b06f58
+b2db563db0c255cbd33e88744dbb2eb1
+b2dfc563e5d968b9c2d94560defff9b7
+b2e1c3861608615a734fcfcb3027d896
+b2e2ee3dabe16587494bbf027cc40ad6
+b2e3e030ff235404f2e58a7859c37d83
+b2e52b041f272d5f0d70492c2db7cb8f
+b2e59f8f8c979490dcd95de39dcdd5aa
+b2e8c7e8f8924bca673da771889b5326
+b2e8fa0582800341f74fdfd75aef2007
+b2e9a90ae7b1472aa69e1bbbe047efe9
+b2ead21f627d05c3e716e88b73c46938
+b2eb1cec1b6b65b087a9f0aa75261501
+b2ee2d0d61c73a85f2b78b1ee3de7473
+b2ee301e895fcf2f28fa3396287c8ee5
+b2eead69bb798ac9c073fd1ef9d715da
+b2f04d34285fa8c9f26489d4293cff00
+b2f06125b65e54eb732f6bb4ba9a2200
+b2f0ae71f092441cc0f24a7c4a4e4abe
+b2f1b5f8101ff76a913cc09168531741
+b2f1db0728d62ebfe0be35472d632674
+b2f2949dc60f16d22a45f181b6fc6e66
+b2f32125c2b9ea6b03c035444adb7a40
+b2f34ac7291278ce262722a51b11e5bf
+b2f4a81fd6ccd56861fb1a832dd44a00
+b2f6898028f5b08ae2b31ea1036e1e5f
+b2f851925f34079598579720a749ba3f
+b2f9773b4b22d5d0142358a7f433cedb
+b2faf7db82d342a63c2741b07e73dfab
+b2fafcab71ed8a7c5e5d56c14f03a716
+b2fb5294984ddd83d6aceda2e628d114
+b2fbb1b6564afcc28f4452a8627071cf
+b30a0b2950a55da4cc9268d92cf40375
+b30a14cb8792f2c7a54827d6cf7a0160
+b30a6aa66cf11ab718038f76c6acc385
+b30a8ddb8e5a4bea22c4bd0700510151
+b30af080339e55e1531646746c429dcb
+b30cc2d5b12cc00ba0c6f44c4a9deef0
+b30ecdcef6d970087958cecb4d1e5e11
+b31102c192fc4329ad23706a654845a4
+b312702a11bcf630ac4b901595748cda
+b315de1bd4f127ac60a491ab197065f9
+b3172b22330be8a9a5d8283be82ff828
+b3185a8e2ec2e4b67b436f09ba98c8d9
+b318ae5dc9e25570eb32cee44850e7f3
+b319840c52c1a1bc5dd0d4f6a2e3484e
+b31af3ae74206a48f89ce2fac89c5caa
+b31cb5b539ab30dad854d8915cca6142
+b31da65a8024cd27f21df8062d05da9c
+b3201365c838a8944a49d11493edf7ff
+b320903d6ee56d8b25f0c5eaca4f3917
+b321891be669b45b6c7a6fb8f0f103c0
+b322576c0fac3e0f5cdf43a8693f92a5
+b32380c8bc69d76d631cc7397118ca30
+b3248e915320ef82fd72140822e1e2c7
+b324c5030e553f8fddbf8872e5cd3bc5
+b3257f9a3924ab04e3189c483737be73
+b32ba919d581a91cc07c00c53a25c4ab
+b32d46f87ddba9e1faeaf325319b2dd9
+b32f4cda774346878d27b030e002af0c
+b3355357bbac407d8f55cf9daf00a3f5
+b336de89d93e6922117671168d1d94d3
+b33820c6be19412dc6bfe3f1c517d3b4
+b338418c1aad7c529d610587efb7b386
+b339dd91f1a530daf17c2050c870252b
+b33a12d455a2b127b13f797c478e0959
+b33a8af991c79e4582e5aaf362ebb1a5
+b33c575a82070921d8e15eb93593b587
+b342d2b7e8575cfd5258fb339e08341c
+b343417d9448957e249e26fcbb28786a
+b343fbe0b8ce802e2a96f6ea5098a747
+b347633e486f7117ca1c456bce5e9215
+b34b407a87bb1ff25175544d72d1f96a
+b34b9394716b3e9b2545b885fc8dd055
+b34e7a09d00601cede220fcbc244822a
+b34f7fabbbe1fce362abf531542bfe3a
+b3513727d09c09179e40c4a383a0ee8c
+b351e55643d130a080023e4129ee3ce3
+b3520cd6e36702eac3b01b70ae4dc6c4
+b35349e69faf66564b92f42a588ba94e
+b35369edb8b34ad65a95f176f027e749
+b35382fa8b5b16009d2a83a351a44bae
+b355d75e295dd72d4da3d5ff7ca5e86a
+b3576ef3f5c12757a91e324cf3abf627
+b357fbb4df69383b91a6b815af87dc2c
+b3580573372e79f6a234e6bff92ee5da
+b35806fd336fe3c8eb175c1d560259a8
+b35aec3cb72a2e04283007f6f6e56c5c
+b35b3fa58d03ca47795283bd783ad3ca
+b35be7a4c8f7c757d74608be9995e9f3
+b35c2611e6501346039f059d692e651c
+b35d0e271c00acf51797a0e8765a9fb3
+b35e9da52e25354519821579e940920e
+b35ec4d713062489be967eb54122a436
+b35fd122927103cd9f100c903e7b4f1e
+b36175d75bd798e1350318a1dd650edc
+b3623ebd31ba11756f291efcbbc93d52
+b36281d2b360281f9cfdf2db1d18d4ca
+b367b0358f125f9afe1fdceb1c01454b
+b368c6a80d83570d679da36d388efe66
+b369353de54c8384a2292eff88082896
+b36d96665f578ca728f63710668f6b11
+b36e201727bcaa234ecb197268095eb0
+b3722224819f809b0a1c8d1f4a553b4c
+b372599e9cfa3a43e4bed96a75182f03
+b372ba10255f53a089a04f1faa7183f6
+b3731b1f430de79ee8c5c693f42af1b2
+b37455e8605029af34b292bc5791793b
+b376fb1036220f96e52e3f07b8c0f0cd
+b379b06c7131405870ac98db03c9da1b
+b37a2af17bcbc7bbd869c156dd1fd7ba
+b37bf8e513438ec83ab68853c9d8f279
+b37ef70fbfae69b81c4ce3605ec57916
+b37f58070bf9982362eb6e62c79391c3
+b380a03bd791054659ad95d6b7c47762
+b380afa9a04d01fc1dabf68545b08188
+b381533872948313ef7e22340849b98e
+b3839855294d6813115f3cfb4dbf4e15
+b383bc465d064b100ec3e909625019c6
+b385080e9683b2b182587017d166b2c9
+b3851ba4825844148b27f8c3a9acfbae
+b3861cb9a9625a25fac7e8c6ee50a23f
+b388e612eb1c7bd3624fb5032b0de000
+b3896aa82fb0e01f0f09983e790d9fe9
+b389f7dda2cb51b28ad2a4c32eb02e5e
+b38b66a31066c8942c0c2b63e1d79fef
+b38bd2666e54749f9174c96e74feb7a3
+b38e4732f884909e683c09e772ec2404
+b38e5603d32541abbcb6601c399ceaa0
+b38e86f5351228e3a1e791d0839ec254
+b38f30f933742b76919c55b687096c94
+b392d9c9463ae8c581dfd8d6f2c35730
+b39373ff83ae4556a7228446521e6433
+b39591b1b5f5be24ec5db0b9fe64a3dd
+b395b879d2dea9e3a52eb2750c37ce47
+b396a05072c33d62d4a38e106fe6af61
+b396a416394e7b2a78cb2ac2f542501d
+b397862b0eacb677b0d0bb1f7c8730b6
+b3984ce51d18b9bdc9ea9a60f4f90281
+b399ec7d1c2af23ed6d671927a346902
+b39a925e242c3a722784c58cc18c355a
+b39b8d9cd84bf7efc8136c4c4d816bce
+b39ba9182271b0ad6bce9c68687f34cb
+b39bcd9761fda15f5af44c8dd33a751b
+b39c51c6ebfe70f33ab91ef5f5b3ba2e
+b39c69740e04821b946c9b1d8b843a62
+b39c6e2725f3aecf70a6270d2f9f6307
+b39d8a4d52c0d5c53bdaf1cd2f819a67
+b39d91eb144ea2657b90cbdde4055ded
+b39da5fd535c4abff3ba6158db8f3082
+b39f6909538e91191905245aabc3ee55
+b3a353aea9aec2c321dd31a0686d375b
+b3a437d6b6c8604c2fb733758cfe63c0
+b3a59f6ae8e91c09434e3d0ed3f39f35
+b3a6004554ea8b43e2bd0a85d03e904b
+b3a65f8660a7fd2a35d4b30ad17cdc3e
+b3a6ecdbde98f36f4052135e912ec3b8
+b3a7dbc4df2ec4f21eca8df202d73ad7
+b3a84471458313988d09ba3589fc8ad8
+b3aa2a7a41422bc7a6480d42ee5d0451
+b3ac1706158b87c313345a03e7eb3c1a
+b3acd677a8b567c3498bd5363833ca9c
+b3ade0e1561e9f6e2e05cbd65e80a9d2
+b3ae49e4c3c9cbefc64af37ccb7071f7
+b3af9c6e2e2df6e4d7717adc71d470ed
+b3b19940b79b98862a36a0f8b7836073
+b3b3dcca29282bd30b4d4e43f62ea505
+b3b4303bde4ddf5cb4e8d2325792debd
+b3b4475c9ecb71496150bb76306ce07b
+b3b62c1891ab5e5ec83492189cd81815
+b3b912c02fd00001e61f3d39ecf47e08
+b3ba0df9f3ffe84696a692cc13290bdb
+b3bcb90bd3ea737faae306a40783c946
+b3bea93f7d8399462899a0189fdc1e8c
+b3c0bcb764bc8dd61fee703642206373
+b3c0f70df9d89a6cca003e4e4425c544
+b3c2db597483d5e73b997bf753efe220
+b3c75837643c153f1ae614afbcdeb2f8
+b3c8104287bdd9d55cf13c3cf43e9d95
+b3c9538e0db046f93bf35974ba508732
+b3ca9d6645b8492028eecae144bed957
+b3cbb0242eb8852820db3e708cd91237
+b3ccaa5501aa0c9923337af72d7afa03
+b3d17c6a9b587e3c2da96f8db97c751c
+b3d4080e7a3b1a83c93d390b5d98db5f
+b3d907ac63376c5a926a6d20730d1a25
+b3da15507f868d91002fd1b091c5f699
+b3db28c4f695faa7008ab2c513b40888
+b3dcdce6b28b1e229e2e24e9cbf92e8d
+b3e0f92980ab57a39bfeb0cb624a8459
+b3e4daa9dc1e1e01a687052989c09d42
+b3e55627cc2a47a2e021b31a9c64771e
+b3e786f26782e46ef4291f8fe32f83fe
+b3e86deed6244e60d35e3cb7368fb06c
+b3e8f3f7fe6f134edb4fd4c9921841d5
+b3e915831054ed3db24c914854548f25
+b3eb0295a2f8db8caadbd200f6b02edd
+b3ec29e659abae7e1afbd033ac87c6df
+b3ed09d9861879c3cb065dbad834da3e
+b3f291a6723d69b7364320cc2fbba24b
+b3f5830586a4a3c4fdea2b571f6165d3
+b3f6f71e0ae171d7b63c3fb49fa65ef1
+b3f71215faf9c295cc3a1609ef43d825
+b3f88279551f601132dab0e491b2ef0b
+b3f9fece9967896f7e7965035d059b2d
+b3fe701ef807b5e235ff5d06b6261c7b
+b3feadedc512fc98bc0dd82c3647e651
+b3ffb216160b629d196243237e8c7aec
+b4057835bdd097e6a275ff066b747468
+b4059286e09974abc18a56ba7fcc9eee
+b408fc99792547be484d15a1489c4a0c
+b40959f08d54bfadfcd2d1d0cf5f5d2d
+b40a2263fc3174798ea74af71b0e7777
+b40dce3711877f0e7854135510f3f8a9
+b40e785a0f560db099dd2e43fad86e69
+b4105031581b675885258fee502cb93f
+b4115e04295c8200229a424f9f28bd6a
+b41336ac875f4b1ab44d9a3ab61288c5
+b413c3b17aa56ec1183a2580b8f75929
+b414d2ecf5d93c31c5aa64c3393fab56
+b417c733f1584d7ad4157a533433b29e
+b41b53695d9294e78ad1db2c484b6110
+b41c82d9583d00cfbd280a47273c9b32
+b41e43eaf64b569f92fcafa829c2412b
+b421e3adf0d21a655520b2d836d523a3
+b422d3a3e5cb05ebe4a76ef9ca6d97a5
+b4267f08277b4d621afa5b4737277a80
+b426e32a07a144477c28fda7168fead3
+b427a23d2c25ddd3bca012260e1e3912
+b4290d70b61e0d597332ae1f50633eb6
+b42a67502ea1750e07d4429b229431fd
+b42c057630f7f4f1ad80977ca24c0121
+b42d5b1938638f38ae1f97c45737c314
+b42e1d6c39926fef922a949664136450
+b42eaface7b0d9da2fe8a178987d67ce
+b42ee55d0036530e7626cd6e88937c16
+b431fc43f4863e08df969096f415f58a
+b432216db666cf4c5e7d265d189b9c04
+b4350c822e414a85f403129d630e5274
+b43563040b3669c1a707bb791c265f4e
+b437f77a67b0a5214b388e4415630fb7
+b43a299ad0ff5da232d18d9f8b077d3a
+b43aeef95e64c7032032715ad5e52343
+b43af6a09b032079b597b1caea126dcd
+b43b2b908b261d102f6fe98baaa300be
+b43bdda1cadd6fd30b0bcc0d93105bc5
+b43cb84ec8c80a529a282ebf70861e8c
+b43fb32de597dc4105b763fe364dcf3a
+b441bb81f91ee1b605ff79f9850cc247
+b441ddd790593fab30824abde22a9c16
+b44291f978c4a5a086a73ae3991f3aca
+b444908f4a4e187528184ac29e2af42e
+b44760993d5e68c1dddd5d4e1202f5bc
+b44b462e92b9e9f9ebe7a3b82a9596bb
+b450f778ab866ee81f2bcd880f9df1ca
+b45101da2048e5ae86296b68b0f8fbdf
+b4526b938108f3b955e5053b66836f90
+b45395dbdd076920d52dffc2a08d1b30
+b4546f2a6cf5d9940d422911bfee942c
+b45637bc8be31c80c3972a69f65d035a
+b4579508a77a30a6c18b309b49203d9e
+b457beb9e98059249b5cbf39c4806fe9
+b458b08731fd82c6a7f607972c8d12aa
+b458c00f3c0773108310c4c6a128e23d
+b460ba547cc5db53bd1ebdff9b2810b5
+b460bb75d2d0d7bb8b6751a584c2e2b9
+b46156b26e88aedf422e4355b11a3db9
+b462cf1332c2e747411e4c3119404f74
+b463dda52c68877b8af8c8d9e5b8f8fb
+b4649b456b52a4eec121775323d3c7d7
+b465d209e0a93e81c10413606447b405
+b4681ce6f72143bbd086dff973176654
+b46a4877465265919446253fabe682ee
+b46c3b7e1bb9be9a90fb6dede1f5aa86
+b47217003f968a3818468548b7977a5c
+b4723cfebded504afcd8ead7d396344e
+b4746f5c18501ca0b22356f18ea2497a
+b47bb9810c7a8d91c947651507e9af57
+b47bc6c98fc5934dcef4154de7f45d67
+b47f07d5d9b3131d98344b461cba7e95
+b47f109833271c4a720a6d5542452843
+b48169ce8072a29abae48affec58f073
+b481f6b418c637e60f56d40a708452ab
+b4834819d21ad6752a2babd15be5f33b
+b48534ae93c7df7c318289c6c9e1a5ab
+b485e3be738dd4bf3e22a9390802982d
+b4868958d11a557981e978b758e14320
+b48805cb8df329f7895146aeef9a9f53
+b48884312ccc2e08bc372759bc2ff668
+b48c7364eb69f9f3dd65689e88937581
+b48e2ae01454db9ddae637b957fd32a6
+b4915eb38286404f2671908745165223
+b49616f90e7c8e803dc9d14063b06b7d
+b497d5b8d3934cb154876a4f717fa87a
+b499d8ee3025f85279f0b8ce5a4987b0
+b49a81d18c2a7d0bd3d0e7b5bf89fab4
+b49c0dc3abbc3c0b8989376c8656606d
+b49f1e6dd3903709ac293ff78d063b87
+b49f7a1a2977df47f8463fa588f43240
+b49ffb80b22cdc282826558e89044a17
+b4a3f88cdf326388120d85e075101fcc
+b4a4465ce878e1a27c980c5ea4399e26
+b4a457570eec841f39f5eba22fdf9ca5
+b4a4cf809e635eb019cecfcfd330de46
+b4aa5959f778b39940e9cad1549e61e7
+b4aaf962feab9458903e7d4d116e3cb9
+b4ab0c96048fd7a61c96ad13abcd2015
+b4ada0b891a86a790b8ce7ee2108b757
+b4ae8196b54813839672e01fa11d8bca
+b4b04035a24c51d7943bffec4814ec64
+b4b0a403e012fd5460353c46ef7e83fa
+b4b180e0dad7c69d859ac96af46972ab
+b4b203d1b0a6b91778635335a8612218
+b4b26c990b635085f4e6bd5727b176ff
+b4b427b932ae2f03c622d7d690c43de7
+b4b499b76b1cf8375e0f57fd82d86ba4
+b4b61e88b33fc603dfb6de6fa1e5f89a
+b4b6a22183963af9580282dd6c4864cd
+b4b6a261fb3fd975f2e01b444bd6c21b
+b4b72fb46b8e1a492c76f50a4037eaa0
+b4bbc9f090fa57b28c0207123c5ba2f5
+b4bcc934658663804589e613674f52b3
+b4bddad7772aaa0673b347674cd13396
+b4bf09fa993343776cae8ea3836acc33
+b4c02f044bf4a6003dce93cf1b3d68f2
+b4c038e3cbce873c5ce8937f1708dfef
+b4c03a5aa38a0ac13cef5af61ea3564d
+b4c07fcbfb5d101cb311a1e4aaac37e0
+b4c3f55c8f7611b27925baf355e8918b
+b4c4579b066f45d4215cc96b63065fc3
+b4c750b2fdba20efe9fcead42d0effa5
+b4c9645dce46dfd073176194acbd8f3b
+b4ca2154ef7960f8973c4deeb0e70355
+b4cdf3714c945823bf106531266c292b
+b4d03e19b002738cd7ee5aa4181d45a7
+b4d088f0c59da4eba1d619dd8b03528e
+b4d16fc6080150cb7ffeebd2985ad760
+b4d176ab6a90da63fd9fbd1764187661
+b4d3724f9606189aec0cb6aa31f756d0
+b4d41898e444514a16e3bf233722c079
+b4d5081d91c9491c6e6a7e07619fe876
+b4d648285c33f8020ed81887dbd150ab
+b4d78a6c15c84c0a630fa5658ee48814
+b4d84d93e341fca667ede86d4de1d5e3
+b4d8525cad03567f8a9fda86c5f2dd5b
+b4dac4d57bc375bfe8fbdfc259449f97
+b4db483ff09a0bcc497fa7cf67b26793
+b4dcccb741ee42b8c7b285526884337a
+b4ddc5ec2c73af23a97e25058cfa9f54
+b4de5daeed519e12b83f30c57df33769
+b4dffd69309687df9c3c5741cd262a3a
+b4e28271ac834ab253210f00dfbc2ab1
+b4e2b661179a85af3341278b2f69eed1
+b4e3ceaa438567fa7133412db3f4d8c4
+b4e796e848e3b6231cd756bf8b94710e
+b4e7ff9612cf42b0c0fcdd781ef8c71d
+b4e92b72f6a5cde9e5d49636137f584e
+b4e977a45b0e995e4d9b70a0c0d2fa2e
+b4e9d553097e8b36c8a7f434ea69ab77
+b4ea68e6a3fe7b3af88ac33e55560e54
+b4ea6f4acd733d6cdd921f4562183c1f
+b4eab49bc3aa9ee00bf7d9342e90c72a
+b4eb35b03c731ede85afd662bc157894
+b4ec539c02af8d49a1d0bcc466b14a3d
+b4ed82488b7eb85cf6c37499a7fd4996
+b4eeb6bd5d7e3275c6bc0736dc027bdd
+b4ef9f6a2a08d6e950461c4c1be9c174
+b4f3d1e8600ce693824105d22e8c742c
+b4f55b683db13e62bccf9cb7d3216386
+b4f61a007366d5b2d8360a7539f1ca7b
+b4f7056302cd9550f895707cd9049578
+b4f87831bfbfee3b1f1ca2fa089bf9cb
+b4fa4088b0ba45f396eb229ac85a41c3
+b4fb636dfaac80c44c37b30fdffa0282
+b4fcf282b5119d2bad6f98d45aa8a301
+b4fcfe324b4793df16af037501a9621f
+b4fd3bc9366a91a4607c09c6e4014bf5
+b4fee6a2458413360c42248ec60ef61d
+b4fffc5075cc9e8009099a3fa36acd70
+b5017363161e802674ba90177b9ee4a9
+b503f1e476910a3eeb0b0294e94384fb
+b5044ab4755e739c22b9ea450d662b53
+b509a632fd34830e1a33dd9f3359de1e
+b50ae85ab8682c05625f2f5661eb5d5a
+b50aecc2dd0b7f8b71413fb9c64c24c6
+b50b7d08c4d9ff7b54aff68c8aa1c708
+b50dc9100ef2b5120252325308279b1b
+b50ebdb71786e5d03bd7b2dce857052c
+b511d597e8c4b7d91ec8269bdc52d9a3
+b5121b742dabdaed7710b3e4181a7236
+b515483dc3b15a8b797e0fb363798792
+b519480ed53eb4ea61f30842359d1054
+b51c5a8b0d46e6992c634197be959060
+b51cee3f88e6b43cdddc469163ce9b26
+b51d20c416090e70b7cf77f8fac17d7f
+b51daf54113a28b9b19218a65dade30e
+b51e41905f088714d3d0bc3cb2cf5755
+b51f4ff52325483bd1a3eb1090cb3be1
+b520d4f92b069ac021f2e3f1a5f07f9d
+b525acb667bfb9b38abccf9cafc184de
+b526d99997de432004a6891553ccfec2
+b528a60db04dafebecd064d7c709c3ec
+b52ba17abc5e8274d909af61dfe578d8
+b52d8f2c079035bb0cff087c79c7628d
+b530fadf505509fce5b13c6c8404eceb
+b531e9d2e1fb9f16206d24913cd147d2
+b531f8a6127c1e2334669aad2702c422
+b536d62d60865212b07252b613fb66f7
+b53937c2c33cff5970f7263056346e29
+b53a82529c6235151c720adf9a84639f
+b53acdd4547140209f6f9bc0d78c1362
+b53af65fb58e9698c0c1a021fe2f38fa
+b53d726301c751274f5decb79a499a10
+b53e512da982d82228fce6750accd1a5
+b53ea43d620030598e04382e43097884
+b53fb8570c9da115708e27a97d3b8681
+b54066805bdda8385012588de1ea69ce
+b54122c6f75a5a75ae6a132f96faac3d
+b541299b3475aea916457a4737516764
+b54741350766dd015e188686bb15c3f1
+b5475faeac6ae602fbe1a7f7cf3d734b
+b54858eddfc85c5062756029b5b07905
+b54a13d2e6ab83c2ec5d360e6a30e9a3
+b54c80f2b9f28ed1268c9aa58675ec16
+b54ef082c6949787f56e3f45a5c3efb9
+b5512a2e523081ac5d45b4d8d75d6e02
+b552bf5e6737864508ca08a1d3bd3e10
+b5542c2003efc970af3a5f55ba0b8c1e
+b557d5baa473a0f01a5b3b898c38aeaf
+b5592119c2428a65546dee0cc6f7e022
+b559e9fb39282e416c0ec2f25aa18054
+b55a33b4a109b7e6aa49549fed4120d1
+b55b1469818d69489edbca29ac54a2d2
+b55cad10b14ad719d2605fedadcdfeb3
+b55d79dda9688c5890959a01fc1cec76
+b55dc190e39c2e57472530d11af2c928
+b55f52e5be86326234ca7d237d98fa05
+b55fb231b5e1c879427ba16317f23a45
+b561a3f62045870c2b85853036b59aa3
+b562459e2cfa4f293db33d49bbe267a5
+b56276418dc1fdbfceef5ec4dc23a9e2
+b562d87d375ce33ad57dfc3d72ae55c9
+b563f09efc2ad25628454b916a08910f
+b5644445c6da4e9edb3aba97649b7b2e
+b5687bdb75fff9332a746932a5d0c07d
+b5688642d09a8c0903a7c0a62c226cc6
+b56890b54c5db11889788882a267e56e
+b5697fd50a12bfce80322574b250102a
+b569c012e69dc3c35317ea35b3d2cf4f
+b56b262fadbbbbb6a1608e818fa1c1aa
+b56d38c75346d0f941e8aa58a129db31
+b56d475681f6136c4b1f15e51fdd57b0
+b56db6a1fbb11ec8a6bf7ae651d277f3
+b56e2205c2769cb26e89605536a16c5b
+b570235e1b29d7d1f171c16f3fe80aac
+b571126c8be1e3eb95229103c6438f8d
+b571cfd172e6bc7ee77a462a2d23e6e6
+b5736b11f7b1c68644250295423df53d
+b575f5ff3d60b580b9363a0e2a41d2e1
+b575f6deaed55c35e4785cc6d31f1049
+b5764f8f5f0ceb5842a2525c09a5efe8
+b5774c86f6758d618588eb211affd93d
+b5775372139709d1e7f1fa20940a2b8f
+b57a664a5a8132bd46981d345e9c9a76
+b57aa638c3b2280fdbc410a30da4b25c
+b57b35f9c63697b19e94f3ad2058e170
+b57b40e3183ec68484eb9d9f9fb5e96f
+b57db92095e48f2ab4aca9267e304db6
+b57e3fdfa7f86b1c93d6ba59c102fb75
+b57f061a1325dd70e267addcabb94e4f
+b582be8ccc74c87bd685aea319ec9744
+b585162e73efab205530a6dd32f3f7fd
+b5870b3c843ec1ced9ac76aef237612e
+b58a1a50eac1c8e7a8953176c69452f4
+b58ac64489bb38be1efff7a320b48fe3
+b58b8d1c9b7220d6da125f61a65bb3f5
+b58d0b2529429f44bf24dc691bb100f8
+b5913ac5cf674d8ca9e75b3db6ca6116
+b593489dc95ea1c34724fc5309fe30d3
+b5935d95164fa2624c051f8618d69bbe
+b595130792db59a4ad5d5f18fe78a8ca
+b5974b4cc849fe3db0baf54b0812a7c6
+b598f328aa3713d361084e8a73e63724
+b59ad1972598bebb21ce7c174f4c52c9
+b59ea6268aecdcd09e3e3d84540b442f
+b5a0fc784279541f81d64b28ae984dc4
+b5a23560615c3dfa170a60c8393e0763
+b5a301d559d88ab3e9d99635df8254aa
+b5a32260676a51bb1b1ea7afa30c8c51
+b5a51737e16706798f7e2961367470e8
+b5a65193fcd5abc5bba68a59e4394399
+b5a67d12caf1303cdc841824c0ac5325
+b5a697cbb509c9cc3f3a72ef4e2d8677
+b5a80ffb00e8896d5b1dc00bb3bce5c7
+b5aa8c42c174afa844ef5dd7d603086f
+b5aa91ea815222b8adc599056f83ea49
+b5aaa6b3928ccf7f14f0c68a8e19e666
+b5ac66b401763588f5f07dc51a4df7ef
+b5ad44162e58b9ae8198be5a741aa388
+b5aeaf850ee9b1341a16f88598ac961a
+b5b3917b8e2b057ae13c5a54e4e1378e
+b5b4320ba22944cf6bbd49866ae97ca3
+b5b5e57f18bf03ef0d4ff37dde0074c8
+b5b66830189ab4963b32052bd6898a84
+b5b9084aae1d37b5750689fa51133626
+b5ba093f8ec1bcd82e32332b6e8f329e
+b5ba2ffc0bbb894440b348598488d170
+b5ba3f91be15c51d3f72644ffd66ce72
+b5ba9187224cf9ca004484d56c41fd65
+b5bbcef3b3509ee2ee88a356aab69722
+b5bd81791daabdb0bf6f853493f80736
+b5bdc9e9dba3fb9859c22362d0fccb10
+b5c11f5df3b752249fa4b360c7a20995
+b5c1fe4afdeb13ea6508f7da9fb53cc9
+b5c3e55567e93d10270fb29884697ff8
+b5c455ab51e7c5ef054e1e50328c0a03
+b5c4f51fa3de78fe5a94bfcffb8bf571
+b5c99d08c545abaffa7ad813fabde1b5
+b5ca00101275b22e7f52520051127417
+b5cb1333371793b699ccec828b08f773
+b5cb8f75338f420aecf66f682977cdfb
+b5cce7d256bbb2cc6c1ab34274756f52
+b5cf971ff85186a4f752a046f8f27541
+b5cfa56fa65818c45f1ff5176065b1bc
+b5d09f7f4b2d6c05c44b164a844325d7
+b5d1bb3f17595b8be5c4084b67112925
+b5d1cd5a8b5f1fcda7ca245845ddd697
+b5d2659f1e36d48599f4a90685818f49
+b5d279062b0ba10001fe801e40ff90ac
+b5d2f91a7dad51442603ac08c3e28f67
+b5d3171ce9de078123df81b99fd7f300
+b5d5b54e29fde90f4a1509d72a0c8aef
+b5d74611027be2b9bfcf0346dc2166ce
+b5d8bd3c48ec3e0ff9754c4c37937444
+b5d93584ed2dbbeedb85b0a494d7573f
+b5da12470b06d1c4e3f846fccf61465f
+b5da49cee3be24daf97e72184241960a
+b5db7c99eab404f1dae2508b76161116
+b5dbdfc83c991dfb6717609cd276534e
+b5dd9625f2f49471d2b272869d97fb7f
+b5e393ccb6e7b3a960eb0d1bf6582f6e
+b5e47b5b5c65c026bb10488d57c2cb67
+b5e5a37c52fb349213fbc2c6e7a367a3
+b5e5eb01e1905193cc1aab0bd3313d71
+b5e62d3b612701209985b4a5cb205709
+b5e6c961a353faefa2a630a7a0b91b4b
+b5e851ada4e53b040c018fe13beddfbc
+b5ec0f6db540bb94da5b5ef640821efe
+b5ed0973744739960edf380294744844
+b5ed6b5965eb31765665f5539a6fcd59
+b5edc32341168f16127e19b377dabeb0
+b5ef14780240e2216d77695a064a1493
+b5f28027b7f083f72558ee49887f15d7
+b5f3cff93232e8e509efd0468a4bcc07
+b5f900475a2c33af75aba0dae7a10f2a
+b5fed6bafdd943b37f5ba3140bcd0ff8
+b60010aa222a6cc2814cc5e440e5171f
+b6025b6fec92c80e2277abcc477da256
+b604d50e77d8dd3fcf925a55fa43e407
+b605670516214e4fdb4ede76ee486c22
+b6065bf5901d6636ba0f3cb1c5e75aa1
+b60a952cf58572aeaa0b034aa6e3e018
+b60b1e2f9c0461cff486d3c6a0e028a0
+b60fc913535821cc620aa2eb07bd518c
+b6120cab2d46fcb726feeea96ef18071
+b61465306b71401b68ebedb7fcecb846
+b6149cfb1c5e2b75869b52035a3b3225
+b614de1e22b3889c29b07f97940bef74
+b618c9022cc45701a9cc86b03c89e987
+b61bdc4533e5eb937939114e375fed77
+b61df0715a67d3dc50b24f5996c854f5
+b61df124faf5f1bc2a39ab1b978db6eb
+b61e40d22eac50b2b90375f347c1d90e
+b61fd109e41fcd2e0213a44e6d6509cd
+b622013b047569b884daf2908d275d8e
+b6222138cdc923a53dc652b3403b6a32
+b6227c537e5a6a8ab0356be47dc7b52d
+b62362bc78e4b21c4dd5f02c4ef34a6e
+b62821149a80611f6567672e3facf38e
+b62afe39a777e1c2710c56fd4e41fa8e
+b62b5335aea70d46ba1cb6823fe3fc6e
+b62c9d90e83b6176a76ddfc938b7b624
+b62f75d18380d0f9aaba6bd07e21eb88
+b6331bba73672af033f050618b935291
+b634c547b95b9dc28e41ae0ebe6943bd
+b6359af231a49ca2c91480a467676d39
+b638bfdfc5af7c85449cb815f327a666
+b639495358d62618ef62404e0840a60b
+b63ac2446b5f65b7b171d7ba476972dc
+b63bce1c9631f2e187211de76797daa2
+b63c0f8798d85e7c4be6e2bab0e4900c
+b63ca466a47b2cd45b53a1fb5925d1b9
+b63eb537755ab7e921bc567ca40313a4
+b63eeaf418ec3e8153e36caa06673e1a
+b64090b69a5edff12fd3645498d835a8
+b640de0c79fd8029d34583137c6c65d0
+b6427c3c35f9a81d84ac094d331f236d
+b642849fe4b52121fa2786c10f4ba356
+b6434086459942467e936baf3710fc99
+b644133f996054b26834c5501d5b12eb
+b6441f34dbe606e5944fcc8605ec53a1
+b644dcbc7cd56912173df423e946aa07
+b64802fb6ef38a675aeef3ebe9d4862a
+b6495a62eb76e9b0fa16fdded0078bd7
+b64a0e4b07a4659f46eef2c47c2a16fd
+b64b4cb78547cf149a07afefb5f8c3ee
+b64b8c16e6f822d94d49740fa5d9f1df
+b64c1c474323919a08a986574f187444
+b64cb569fce7eaf525798fed49851a7d
+b64fee61df0c32b70707d22ef70a6885
+b65122cfc529c7345852a02a91fb59bf
+b6512f8f9ba8e3aeee6016e1a8562e46
+b65212042fd0a87a3162f39fb081e30f
+b6531874d2ad0896386c93c7da7178f7
+b65382037f910f0b4c7c04fbcd42dbcc
+b6562cf7ccf3975fd25218fbdf96f60f
+b6567649351c638380654cef019f6506
+b6574d97eed06ca8eecea1b22ae82541
+b65843aa523573400f4077101624d952
+b6585888bb6f94c91f8a88ae5e1bd6b9
+b658b366484a604315cda8cdcda56897
+b6590936d2e002a5a321ae1ee1f6faed
+b659183a171dba2939be779853369897
+b65a1a6676e8bd0ad2e3971720b4912b
+b65a96d8057f266be9cbf444473c979b
+b65cbe6b6af3b79030fe0bd8ba90d759
+b65cff8f8f46e4ee0e2889d92be4ae13
+b663f7d1c0e9f5d010fc6fc72644bed4
+b6667a90211d22ba59f85f81b6005d26
+b66770c6802907ae75c211a8bcdc561f
+b669a4ba8298df432a3448f084d90946
+b66a312145da35a63e26e430402855b0
+b66c19832b40f6333e593b82cf86ae47
+b66c2f43e6fc6fb95c55bbf82619d206
+b66cd0a70fb348fdaac3f4a7dc1c921f
+b66efc9054036454ab089d16a8ff0015
+b66f6509e67fc7ae4fa0c7de39c2b9e6
+b6725f19bf5be9f301634127e335a26b
+b67314b3e389b9e12d2be640e7b9ec24
+b673a685a63be2296827fd63c637ad1a
+b674028ab82417277f688e28fe10884a
+b677afda84804f459f3eaff41cf13514
+b67994acd01b4fab48630a1a176219f3
+b67a0d4b1cd27f7a1c9cc187a4c85d29
+b67aa6bd93d8966f009433ead7590d18
+b67abd8745088088562b7c3054e985b4
+b67b41320d666de90c671b1cc55c25fb
+b67ca69830c2a0364a3da2eb6314be90
+b67cd1e7ec47cf17702f0f40ad44ced3
+b67d72a856d02ef29945cc108574ebd4
+b67f6231787dbd5a41ae6c77d388fa3c
+b67f941a1a146b0099b61749831b1431
+b6818eb5f2069ea51198cbf329feff46
+b681bc77e93ff8e79835a16b8255bfd4
+b6824c9940bcdb0b0569a13114b579a0
+b682aed5ce39d733972670b15c7c2376
+b684062587de7360258e86635f109dad
+b68717367c0e301b4219cb6490555ae5
+b689196b8e683b585e6f8fac5efeaca2
+b689ba4091ccc73d8b8f43eca407bb5f
+b68c3a0c81c2f13b52a043259b9baf84
+b68e4d57266db46ee59320546dfc438c
+b690dc2d92c6ba264df3be3a071ae708
+b6924ece5f811cebcc464fb4739aeb78
+b692fecd518cded44061f656907fcc0b
+b693f854067e4847ce98191d585d2293
+b69532e3c697a5a92f0676edd17ec345
+b695a5fbf1bfb5a12183910ff74d3d4c
+b6994b323e0c476b6cf0256df81a885c
+b699c21e2498b9e965d2607e9bc44b9d
+b69a57ead54caa03d7a7eec71d0616f2
+b69a6b77f5977286f90ba55575967de4
+b6a13d03882bd84a1c4ac28baff416f5
+b6a16377e445995ba97524270bccd1a6
+b6a24066052492135599082429156ae8
+b6a307ce5bd2b3274d7f33c628d1c29f
+b6a6ca5da9a2e81772ea87d03b604d31
+b6aa395bccfb94cd8e401989eb14f811
+b6ac61f5391721ae41083df355ce6194
+b6ac99bdd024f2a97c418d150ac11d0a
+b6adf73bb44363514ff04f3696593992
+b6afda3dfd18e00aadc1f9919f268538
+b6aff606bce405cfeda5832fc2ffb995
+b6b151f4b26ae1342debcd6c6582dc32
+b6b1f612e33825d437b4bd36c744ef8f
+b6b3cec946778923c0d52ccb46e932fd
+b6b421993991371efaecaf33d40302b5
+b6b4546a45481a4e896745d3b51ff359
+b6b84a08249e745f4c62eb244fb1fa19
+b6b8dd73b8ef88f313767d2465bc4442
+b6b94610c6637ffebba711252719f0f6
+b6b968afc377e66e209f9a4ee4d21564
+b6b9b7e2821fd1e11fc3d4e873c78e1e
+b6bdbc9e7c602e03c0e9fc40052a51d2
+b6be103e57094c62e3cd44c6281a8538
+b6be211e2567f012466bc22d80d291e6
+b6be5a7ec921f4463b619b779c62cb58
+b6c11c05b2484649bedf0fab599eda94
+b6c273c695ffd3b7cfc461c3d3880fbe
+b6c32285e4cbc27c45950f4ab0e5b7d5
+b6c3400dcde0c29000959830eb554db4
+b6c40b7209b9109bcdf48a9ad27c1cdc
+b6c52e58ecb6fa892b4e8f0e1309b9bc
+b6c5662b094b37b3183184f299c461a8
+b6c5c2b467afc042163f5cf855c6f747
+b6c84212e65a73bf1ce64b353271e191
+b6ca4feb6431aadc13845c3db7b25270
+b6cecfdd3ace937b93447625371ee777
+b6cf5a7cd3dfe7a13625bdfaca18eb0a
+b6cfdc39325157bba8b997ef41f5d5ea
+b6d022d19e9b137450717bebbf0feca4
+b6d18afe1152647442d4e6c28d431d37
+b6d235eb3c83522ebcfcad237c5e8975
+b6d32801c194685f8b65e62f6857ea28
+b6d3321b0690ce132f9625d75c38e96f
+b6d33ac8e3eb527d04166de681c3aa56
+b6d3cb1f0c1b05cf77b1a2b696f3fc3c
+b6d6b54adfc3022c19aa84388c04d901
+b6dc3daa2768b34786cd4f111bf23499
+b6dedc92d9e4337ccf4eefe514997861
+b6df286258c49c3429df849312e2c650
+b6df7d974116955384102b8d124092c1
+b6e0797969687d030eab4926f9187006
+b6e408057cac1f6beb7397983fe43807
+b6e417254db5762120a95df433f1d23b
+b6e44a8ba457e0312f596d1c5f61a8d7
+b6e5b7503b12e36bacb09e1c6d152e75
+b6e7a75cbccf4a48dcb0ade6a0018bab
+b6e91afe52f3a472305c83226dab81be
+b6ea1d62d81e149a298b95e12ef94b27
+b6eaf5860546197da4f42fe65aebbcc8
+b6eb8a5962ff3a198f3d22fb4575be40
+b6ec6982420987d50b8fce17635c83b8
+b6ed6ac189fb8c48378e3ce6ccaba302
+b6eece823e50bf6b073f3bd26541e70a
+b6f0a5858abc74789a72d73cd13ed549
+b6f16ba60f36675d33a027981c4d3fb5
+b6f2e9f00fc3f2d542d224239f2ca13c
+b6f365492f560529d50a742028d2d8df
+b6f46db752b9962402e09ae397451bae
+b6f5d035254c07ee11380a2a41d07298
+b6f644509d00570fb134bc157080ac71
+b6fb4ae57dec5f638c2a0b725ae1dda9
+b6fc246834effe0116ce5c9ea7cd9962
+b6fc9b96f828fa76a2cf3171466301e6
+b6fcc2a4defb158f47329afce6d85825
+b6fde3c37381cd2b75e1d0e1d5fb6b2f
+b6ff2b3add111601d019466269125112
+b70063ff38f37f1a162e1eab9727c47b
+b7018c6bd8c836d3da7ab1c4434810aa
+b70491268e0c42d4e6df51e1310f6891
+b70712befd8dba36d40f628acc5ddc53
+b707d603846113aeb97bb479e930ecf6
+b7082c3ef834f1451281a2ca69bc6bb8
+b70bc84fd3b06cfc3d2d3d89233ef1e0
+b70f667c69e67feecfcb81cb6213fea9
+b70fb86dffb8aa21aba3d970ea23789a
+b71298fd5d49e9c5009e5d5eda707436
+b71378a4027fbdc76646a35d7fee0738
+b71436c49a39ebdefd1836d56a749596
+b71442f6563ad3f90b619385f594b3f8
+b714fc05bf961ce2cf939bb773ceb9f1
+b71685fb5f95926f9916bf068ea32ea6
+b7174d895b21ff5d0643636456e9a6d4
+b7179a48493bd2fc624e3399bbb59a2a
+b7180894224967821cad25da1e251fef
+b71b6e788ebfbf88b29a62cff3945a14
+b71cb9dc08d4edcc4ca80e3e66dfe181
+b71d04bbe03eeaaab6315aa1998750d5
+b71e29c83c0047f136c874cc16e3f892
+b71e4b9020964fe3e536a571d84901a9
+b722d3b5f62f8846308f78554da688e4
+b722da0f598dca4e7b5d976a29a5cc99
+b724857f6afd01fe91951044b431ce16
+b725d67e99d644f465f251817abe4e4c
+b725e540c6478caaf1adcaac75d08106
+b72767739ce4b19826c27e6ad40d01c1
+b727b952f399c19eb29e423a8ce425d4
+b72a93169db476878d45bdde9b1c0333
+b72b972d46ce2ddafe37920a2f51577f
+b72c9938fec0da144724fc29354c9b05
+b72ffba4cf385093b327c192f77ebe9d
+b730dd3ae46faedf44e8e8887786a5d0
+b7338f537756c787d8d87e9a366cf8b7
+b734961df5271b041cde1f844935ecc0
+b736e24ab10ead2cc2a6d42d2d4827ad
+b73dc81698aa9246a574af2298085318
+b73fad200a42d089d116f53bbac116c8
+b74473f6d717c7f20ea20dda5500e50d
+b7461112f87c3c1676ac9ca6ed239234
+b7464c284be72047e773e8bb5ddf7366
+b74705c05aa01c453532ff6989a4cd42
+b7482be8e3b0fbee0a2cbdc51f635503
+b748dbb46391e22596d7929495e47c5f
+b74a0cdc89325f8ad6ba5c4fdeb160eb
+b74a758911baaa8f429c5a0c4980545c
+b74c9611f07618c74eb0680298963796
+b74d61822330e9b15dd1a3cebbf0bd42
+b74d66adacbd5224b074f18dab60b507
+b74fd017ccfafc319ae5833dda070df5
+b74fee2ec5ed883ca504cd70fc3fc096
+b74ff09242c4a69de7cc065271932e6b
+b753f78210fd06c4aacc4b76c3a47440
+b7541ba0f1ad6b2851afbd8742ec03a6
+b75580a562cf1fafd4ef714eb0f2e2af
+b755c11d673036fec8cab7375fa7d65a
+b755ec8dd7ffda517baf3fb64cf348cd
+b757e6e043cc0d9ca825a2c4c6bd641c
+b7590b83b54c4963ae2d3ff8f74e9bbc
+b75a6de4a004c5a955c4e2e713782dd5
+b75a8beab194a2a2df0a5a4f86435fe5
+b75b1b3cfde8f1f61c356312726d3c04
+b75d058dba8ff1c6f8a0449754330a77
+b761d150bab0312976b719b3a48cb991
+b76312fa0457c1f5fe83aec9371c299c
+b764c98ac87eef875113e726a8c15e49
+b764caa4ce0f75646c3d0aa26ec1b3ba
+b765d0de6cdce14264b3c359976ce1fc
+b765ea251f92805a6487dd226e6b9453
+b76617223a4efbde6e2f590df7e87b26
+b768001e49b90a090d81851045a96aa6
+b76836928bb6636df46d796282434843
+b76b009efb46fe20bad875661ae3bbf5
+b76ca476a6f5ca19c483db7bb63204f6
+b76d48e9561cd5eab8178753414326cc
+b76dfdd802c24543ee0be0c61f6a7e28
+b76fc2e9d395046023968878820e8320
+b770fffc4bea5fcf9d43b6cdc01025dd
+b7743b56f82b0faa54cb0e968ccc2f8f
+b774b773b4eb127015b1ced0edf87dd3
+b77529ba410e1efcad163f1e4be78c2f
+b77797575ac991f1d80710f103e0801c
+b77946ac2083f3c95561964c7247095b
+b77b6c4c66331e507b5922a8c675b4a7
+b77daf32c1c93efa0ddb11fc97ad0b6d
+b77df26f2edfc7ff50f9e0611a140da1
+b77ebf6a874332ff6a45c9b87f99e510
+b78490001873decd7006ffcee8b9a099
+b785b511b11a7f991fa371ab52febf68
+b785d57855f0dabf498c02a8760fa19f
+b78732d8c96532ba15bda3c40f9765f0
+b78ac07dcd59aaf04471de85b050ed5a
+b78bce4547f510619d6ffa3154c22d56
+b78d48062fedc51a43aa0666603ba3d5
+b78ed584b092cc383e74d49ec6a842df
+b78f253bf4339a700e9f0585399279e2
+b79235e68dccc36d1fe1a38350daeefb
+b7937c5fb23ba8da8eff406f0c4c14dd
+b7939fd331d332e4b8985cd9aafde654
+b793b81bc0cdc7ca8a6800ab8700dca7
+b794607add88221abe31eebed29c7026
+b795feaf6e6c021abd8ef0f28bc900a7
+b7960534f23560dfa4af8fec23a53d44
+b7962205ccb4fc664f22b7af24f2ca4b
+b7981e743d4a87d5b74b6244cca2f609
+b7984b3ba8f64ab3b5f89c4a430a72ae
+b798fe5f9c1099a4da5ac4b17edf0a38
+b79b3cc34ecc8c93b61b54a519d790fb
+b79d4f91ea23a2ffd41b7c419e2ce3ad
+b79f599dbcb864f64417934021e0a900
+b7a0955d53c00c38554ed70bb2cfa8a2
+b7a1261cf4722136a80f462ff5d003de
+b7a1bfc7e42afe289d975e8bbe62dbaf
+b7a2a3d08de9e783bebac5850d3f6574
+b7a4068f5970c90a517e08e8a355c526
+b7a6614063c540601a8e31b8240bc739
+b7a71e4d72c1bad52270698c9761f5de
+b7a7711cc122d243853bb80499dfecc4
+b7a904a481df8e33e338a42fae183b1a
+b7a9297d6ec263cd46a267b7801ec95d
+b7ab219558d2f13ea4a014a71049e2cc
+b7aed85ef3092ed610d259ea379695dd
+b7b0711e44062453df9bc7bdab096848
+b7b32645b47e8e48d0ea38ed49e12b07
+b7b47a4042c3acc8963819611bab33d6
+b7b65426c6b2143d52954c2a80ae17a9
+b7b903ea085c9a9361d3ff29a4b16702
+b7b91b1aa361d80fda267649a213a4e8
+b7bb61ef335462344dcd7b228f2c2b06
+b7bb87e8d3d782f0fe0ec0205397297f
+b7bf58e543dccd92343e9a389cbccb4a
+b7c043510b9865764dd8463d099366b2
+b7c185f3a5afa9a5d056e72449d385fe
+b7c4c4fdd98da015cacd78f81ac3435a
+b7c4ff13131ee171026af8717e3a7bc4
+b7c6bd332f9652defb6f742121575cac
+b7c87fb6a7d2a78646c8763638096ae6
+b7c9825387c611a832a145c8435b18a6
+b7ccf1d6f125d0fa153e24f93b85af89
+b7cddcfdb12d5a2cc6c718dbb19f9d3d
+b7cefef41b6f07008e8125982e21c761
+b7d035b0744aba89d210b76876f5cc76
+b7d2194dabadba6ff74f26a99e83897f
+b7d41a21fe9ec7ea35e315e6b1e3cde1
+b7d536eb1b5591170fe621e793501d8b
+b7d5e369473a9f9c66e24e9cc6e82239
+b7d7de092bb84d06ad7492b7bd634e37
+b7d7eaf8210bf44ee5b055a2431f1a74
+b7d93add6d5d52745d16a18b4339c0e9
+b7dbfe9d397c49e4bd65920c76ef5efd
+b7dc560c16120eab64dc69d95f184c34
+b7dc951127b6edf700b0555b5c502bd2
+b7dc9e9525125121db81a1ad0516cebf
+b7dcb6f99e3d59fb0e625731c18738bb
+b7dd968ccf0ebcc6506359c237d91789
+b7dde7cb2c7e169571e125ec0420b2fb
+b7de463d5cd85055a56923b49be81f41
+b7de6c25d7fafecbe23eed3bf53d52e0
+b7e097fea412d0ffaeffe7482d3bafc9
+b7e1114febdf0bb8b71318c84bca6d35
+b7e4439c8508f51d511b0f22c2e4fdf4
+b7e5a0ae4766394712125c86326f3204
+b7e5e07e701bf9fcd8275e0eb16f70e1
+b7e6d180209de4ef34778e9831ea5ada
+b7e84922a0a2e466234e7c064401c042
+b7e88b18fde4eb706f25e6de018e6daf
+b7ec9bd24198e813f7319ea19d503d09
+b7ee4b29e02600c8445a47b778aad9c2
+b7ee97affcee8e22bea29210f9c878ff
+b7f1d443b6e30649451ac82f314f9ec0
+b7f2bb74015f08d5c501842ed8ab3bf4
+b7f48614c183cf1c2d1f1c6fccee2159
+b7f5579be26a71146689dc45447d6109
+b7f5d16c4f260c102572fa095c0e014b
+b7f6c13351322dbb1ad225154ddc163e
+b7f7b1c42128ee5330da892579a91e26
+b7f7b6b76306a9fb35e8465dc0ea0cd1
+b7f7fd8ad3fea5a56ee214a2855a8021
+b7faa2eb7a64bd18c36cf3af588044b0
+b7fcc5d6fa00c318f9218937f87007d9
+b7fe36558af2d9d8db609f9472dbef3c
+b7fe995c8d0e6b2a0734e75cf68de102
+b7fef3da71d6f0bc314a1fb4c42bf0f3
+b7ffe5501e109ebd77be5adf22dd37c2
+b802a20dc32e763aadfd284d2b7a24f0
+b803fa73890c296ae2383019306dc750
+b8050b50b157c35353dd739ac4978cd3
+b806a0601c7e4c85f34f8c2426f793eb
+b806e82910039d30c9340f1d6845c5b6
+b80f2a2fa6aca91c6979be21adbe8f32
+b8123a62c559b51814f47e46f0a2d1db
+b815b17eb39317c232e49c659c9b6d6a
+b815de8fe2e3a0076430075fc7d4dd70
+b815e2cb479a67f3ab790d97cfe26a05
+b8168193cda0c59717dd2d289ae2d1fb
+b816dec10e8c78db386cdecd8dc6ae48
+b8176443e18c8e61d3f1f442e9e51c78
+b817e3f6beed7dbbd71ee6bb32e9f5be
+b817fc56de55e6f02ebcf9a9f5f7b146
+b81880393285216a31202331df8c2c75
+b818ad64e1776b4d71dccd187896464b
+b8197c38d7cb8f2846bf61e313d91855
+b819e77f2744732b93bc6c491e9a8b2e
+b81d16e326168188c51be48602b8f48b
+b81dcba0273509e87c11dd7c4eadce53
+b81f88beccb25b90b051bf6e4aa15464
+b82095a70c1e02f465d205ce5840c424
+b8264e0ce162af0b298e4b76c2681e7d
+b82749ab5ccc4657e6fc1d4497a24d84
+b827701f710f2fb8df93786acf203d6b
+b8277d489696913d99c31517f57b945f
+b829413d60eec2561ae7708ee5acb91e
+b82bff5cda7bd5c496c8d47b8cb62fad
+b82ea73e39ec97b1ef3668f4c7c30b07
+b834d6e9b1376e6a6af9effbcd7618ce
+b8398cfec5691071721ec04989ddc0e5
+b83cb322f39e66fc960d2ae0cb8321ed
+b83e7ad7f316fed7f0bc9b67fd1f342f
+b842251a36ad4dbaab18bb02d05d37c2
+b84288746165bd36636c5d9249dfc1ee
+b844801765d3ab332afcf42d7b7c0c84
+b84642c4fe4b4a23664d8336ac9ce089
+b848fd63c0366464157fbab9591106ee
+b84ca71d7811d9d780a562adfe6ac207
+b84e663dfaa78f3787aba3cfabcf1fbf
+b854affc5b3758932f8a77a66602a66b
+b8550286d5a8093b4ccec9eb9c0b1b16
+b85777bb33dae3dd21a469fea675ae34
+b857d1a845b2a265c58bf9a0c9e993f8
+b85bcb365e48aa1116f4312af3ef7215
+b85c6178d82ae22952c39d44d6efdcb9
+b85d8ce4cd35f7cc4bd908e6ace282e0
+b85dba08de0103eccb5ca09095ff83f9
+b85df63d5185312832854e603d204c29
+b85f525d22aff9819bad54d133353f7a
+b86191e9c5f313bd1379b87b7e8dcc74
+b86346cfd904ac9964df0493a0a8c610
+b8635dd12cbc033ebb7c3f7cff6e158e
+b864094d19d5986cc21cdcea390dbf0f
+b8644704f00d5bc1b9536ed91848a5f1
+b8664dc74099f912862f788b9001a51b
+b8689429498f957a43f783e98bbddad5
+b86b8ab06d3460afd3f600fd06384254
+b86b8c35cc3038c314e13f4641489cca
+b86c5336c805d24b7b4dc2a36ddeec22
+b86c801b9ae81b5403cdd0a01034ad6a
+b86c8bbe672b01b92039f70d62d27175
+b86cacfd98879c0ee58d7cebc6d7a147
+b8739d7f31246b121d2857679f1b726e
+b8741f9ab210fc4d3f231b690bf30094
+b8742012d291e6d5734ac18260cb6494
+b875bfedc6f2b2ee4dfcb5d907a97d97
+b879c9397e40d4fe6e9a2f8fb111dbd7
+b87cb56ab4945acdceeae33e5361732e
+b87d3d42efa93861f70a8a1e9c19f788
+b87e748f75970438f767f5f01e5eef83
+b87f2a23986e5eff956664f114b78a37
+b88081f08f8389616b708592637fbb13
+b880d7a18e53195f80a58bf3135d53e6
+b88284c6b210137eee2a59879869b7e8
+b885a525377c8f60dda8cfddc830b106
+b886776d1670cedba8056ebb074ef68d
+b88832f6ef3fd387becc48e0dfa98935
+b88c4633f0cfe47738f1a87fb81b88be
+b88c897503d163a6a5a69a0ce312d628
+b88cc8a53b0c3fdc8ae7f4ae4428a3f8
+b88e5bd71f1325244fa9e3bab8dceeff
+b88f54fd0de7302ce1679531888351a8
+b88f94b40c10e1c449b5584d1b660351
+b88fc60adfb3b490b27944113f00c6be
+b892b4e7fe0a0aa42a044ea209e89e42
+b89463fdb9deaa333c35313a31c97ebd
+b894b3668b85d402c86874a2584ed469
+b8956184f872f1e1eadbe16ea97f0cd3
+b89571d7335e725a9b0bea6b8ceefa1a
+b895d197391ad65e2659b1bb088f3422
+b8965d03096762a8d765bcde9043b9f0
+b8976f61350bc485a9c07b0d14908606
+b898a6b282c5177934cc8a1a37214bef
+b89985ba1e234d49b286626da277c4a9
+b89b54ef805f8301884e3490d9ac593d
+b89c35b03bdb3a01918f55e676a8ec6b
+b89ce451c6f6762a47b6cd5de32b098e
+b89ceb01f66ea35bc52f041a471e508a
+b89e1c789dba24341408f43bcd40697c
+b89e73c185403bb0cd9d02757c9ae4bf
+b89f0e4f50630ff3df7a4479eb279c8e
+b8a317445bce2000993db6a7eb92ea8c
+b8a4677fc066c8852a892e56a571d06c
+b8a4caf5e5d604650255502cf6cf55f2
+b8a591a48b48be2e5a9335846ea02130
+b8a5ca58a6bd24acd64503a5bf054cd2
+b8a7d094b15c03f7896c96a6f40cb710
+b8a93fbafb984491cd7bc149ef820c16
+b8abb2138a471eeb20215aa7ba7948fd
+b8ae1bebd23317456611d102eb25688b
+b8b21c95488a0c98c17b9a0533a5ee14
+b8b24993085935d831c2c197b5355284
+b8b41dd7a20834bad48b3971a8b1aff5
+b8b6396c5e12dc79c3b36b7c46bf8751
+b8b886a881c069430c3595ff35b4cee5
+b8bae3af2af4b35644fa5ed295a055d9
+b8bbc8726a00a498bcf5748885a34fde
+b8bc594c50a06066b2e7042c3915e325
+b8bcc42578b54f5b4cacb02e837647d9
+b8be68d787ed8e859cec4a72287c7ac9
+b8bf24473f17b3e835f604da1e9b0b3c
+b8bf3c2dedce91e8d81e0a7f581a207b
+b8bf6b72acd57f38155d79446fff6e4d
+b8c5a693e1c506790737d711f33625ab
+b8c5b9de601c5b03286fa26dc523549f
+b8c76d73d57f049e9db3b89d88bf7ab5
+b8c8f7f77b5e103a4ba2f3397c0967d8
+b8ca52cf07eccd108bda5e79368dc750
+b8cb7a9fdc7eaddaf43112f5840705f5
+b8cd7f57f9b52fe90ac4be0c8fe3cc64
+b8cdadf78e717dc336f244ed733b53ad
+b8d00d65870ed4d2bd9f765097fd4029
+b8d0dee04decc668a24163aee079ef51
+b8d2b77d4e41e02d46eff9ebb663607b
+b8d48a68e732a2aa6fe4c704d7708ad8
+b8d5cda5d50bd4126ef23e73f7df4d1e
+b8d613705e3ea918fd6c112c1c3f2e8b
+b8d6e93cb3570bbc338a442c5579fa73
+b8d73e600d38a8f3f1cb664d949277ab
+b8d77974b93beb854f48aa4eef984e22
+b8d983e492f8418c7d5bbe6ad5d9c1da
+b8dbb16744158716a6325dc6eb014549
+b8dbe8fa3f8d9a295881f60ac6d83646
+b8dd05c9a7d8c6c7657c5b1d14b203c3
+b8dd0bcfe56a7750fbaf00881ccb3d1f
+b8dd35f14f4621552021f93307423480
+b8ddff5aff691082a7ea761a608f2b75
+b8de7bb2b6516b50c0418b186993f3fe
+b8e4bc22d65b021f1ac9c0e711c4dbe7
+b8e4d3520a5e33c24ebe9cb5fb8fcdd5
+b8e4e4fde51726dd6969067a6b0b6882
+b8e5bf4c94585489695b97cf1e46abe8
+b8e5dfaa96ad1130d45e62402a802904
+b8e6ef060fc05d62a17c331cf39f4919
+b8e71fbcb37b073babb20a07cc9f95bb
+b8e7786919f4ccba6b9da7cec25291e4
+b8e7848363de2ce8cf64e9ed360fa936
+b8e88962892d7d4067d74bc1a407740e
+b8e9f2a9d65616a880975ee59dc4f128
+b8eab2ee2367ba66b4dbd4acd1033278
+b8ecc110a5a4e068c43c244961e90c10
+b8ecfb5f5aed2d30aa21a7a81b06b05d
+b8f14946a441b73586834bf6aebae770
+b8f28f5f90eb130d8c27b9ca02c23f69
+b8f46eefc3123298c3f6ebc2257e7c3a
+b8f5bd4efff95cf377d23586a32aed94
+b8f81b29e3eaca0da5fe9179c870911f
+b8f915cf383c5c570e3fc338badd83bd
+b8f94ac90d3f06bb41f7e17659a38cab
+b8fb2c91e26da0bcace87df327968846
+b8fcbc5310a41acee5a0261df9f3e89d
+b904771d70bbe84ba9d63448004f765d
+b90518e80ced0ea79e72b6ea53ddfe75
+b90623c2af7e48cb3664446d89321244
+b90a423f93383e86daf778ead0765d86
+b90acc85bde3a5fb5acd30b7bf44ec3d
+b90d8b47933f866ef2d76f7e73b3af24
+b90e2eca6e5e1b5595be4aa3dc0c4c7e
+b90f7c8343b735dc976bf736eae329d5
+b91282ca624f08611047dddd083760fd
+b914d964925e3f9f56a5487ea1544b86
+b918183e0a3e6bbc7ceb98d545d9bcb8
+b9199cc12acaf8e032054ff607c83fd8
+b919a4737753232797bdf717ea2a3db2
+b919a7b575c43451b2e92732eca6ded9
+b91a2ae3ced4f098684ff3b9b0c6c592
+b91adf5d142208c65cac8a57b153f712
+b91b0eb468c2b82913ed45e02fff8bc8
+b91c0a842938aeeb36ba37bf90dc2578
+b91dbb96684c19add3355e2dd8b986c2
+b91e48e6aa5af6728d3ab2ef15c27e35
+b925d67f98efc17c0e3758ff17a521b1
+b926e88193c5beb17b1d1520f43b889a
+b9273bb950f7fa0fcbe7f31aeb546d2e
+b928b6f8e60baa7c30057313d3449473
+b92bfe1ea01a7967af87a8ecbe0bd6d1
+b92e6a2d10b7090e7b1cb41a6001cd6f
+b92edf765275522e327083f34847700e
+b92fc7174315e6e25494716e3fa3df2a
+b931f7445585d4ab423674eda85c87d5
+b93267194bca9b8978dc27294a932577
+b935a1129197b2df2c8677a5c9806feb
+b93620dd3a3792e7ad532079b044ff8b
+b93664b56741a32606e8fecfddb5aa93
+b938c0cce1a867f61beb9c62ae3580df
+b93966e655a965c004f091722375672c
+b93befa953210b9123f12d7c0d38c856
+b93c36c82a5600f67e6fee582a9ca193
+b93de27eeac524adf3cadfc71f97c20c
+b93fc927ac5578fe966dda4a8e92d775
+b9423e16fa1c0392da8ffc2c60dd0a7b
+b942b4ee8444cec8a1ff850666de3873
+b9432bcdc09574f4386b32a3d9d8e460
+b943aedf6239ac7257c49c665aada961
+b945e57413a7906380fdec6241ef8f76
+b945eddccd4531a49a75e60f82739af3
+b946924506c9210ae3d6d74c5422d28e
+b9475d9b9b9b0d839a89882a2d7ad13c
+b947ce49975fedacd13e001d1cd657c2
+b94995f1caf268a9acdd5d6b70d12eb1
+b94ae1e3c15c953eda3b24d812a07e38
+b94c82a2b158b8d2b8dae377ce107826
+b94e75e8cc27742b0869b43cf20fd674
+b94f8e08d217a38d5b6e1540b0536569
+b9509980f7c8b4387c7f3b89da8f0835
+b9552f45fb4d62e4a2b2e1fde58abafb
+b95608dc721cbf3dca15b92e0efe0f0f
+b956dfe05ef94cfe23d59120baad7c93
+b958a58f6e8842039fabf2ecf4928143
+b95a161718ff36c727a7f85c86fcb7a1
+b95bdc61c8761bb7cf94bb43931d51e8
+b95caeb4e6181914706330c20d7aa792
+b95d0d06f59a47cb634aa42a9d808ef9
+b95f1e6f97cececa522e1396ee903ef4
+b95f2123f3ca1a9c4413e6abb9a0fe5f
+b9634b249258f434501a78c34dc8b20c
+b96b6b5bf2f170560895d232279a6ead
+b96e3d0d231d0d1091ea3ef7e746dd89
+b9718e01ec2c7e04f188c59a44e0b856
+b972afc586c924a88a7ccee4465046d5
+b97720f039a2eb99ce6ef2666c8290f7
+b9785e6b87f36e1e5527ea8d7af8c709
+b980bc08567b376b088ec5ca1e3e7d98
+b980ffd694ebdd242391d014a323115b
+b981d1c6c52e0f018bba4f196940fa35
+b9830602bf0f3879c44e0ba8cd5ff84c
+b983a9d2258aec4567a02195c2b63015
+b983c7fdc34b28c1ca2ea8dbf8f1063a
+b98534c22fbb64644b0243ea6591b2b9
+b98778e7f2390f3c8a7b36df23fcfa84
+b98a92f98794673a9828ae0e2b7abb85
+b98bae1a1bdf2be0fe677fe60947f54d
+b98c36a5150b75e59f5ea6b1ee2ab410
+b98c862a539eb6a02ed648f3aef63ddb
+b98d2ad4407f378ab8ee4a5e5ea80d8c
+b99369ac8f828d8d6521334f760736ce
+b993e3fc2ae12b3f3e77b65c7784b726
+b99ce9cb2fb683cea01835b93a2596eb
+b99ebb5979f1900163945c5b7db09e45
+b99fa57d7e1f71529ea6750ff3b76840
+b99fc4b24b67034ef02b1f4bc7218319
+b9a07c087a91ceb2f6b5d889421fbc51
+b9a0b4720451d3f5ad194ca79cd4ad67
+b9a1573785dbe450f4ee28638d5a342c
+b9a25bf709c9ab1938d644cf9f487b5f
+b9a3ac7ebd19644d029e9625043f051b
+b9a52d9fd02f40ef4fe41a4335a6c762
+b9aad97e50c4bd33094ea141c872b3a6
+b9ab8b3c4528627516a135562a54705b
+b9abce049d7d18d85feb8b3a49bfabd9
+b9ac970cca94f1038bcad3629b3ec807
+b9aeb6a8fafb197daf63019a29e50aab
+b9b09c941593363c5b1135189f5ce397
+b9b0a192fca915c7b5a41be84fd59618
+b9b2e1b440d0923ce5abec20ad6d02d6
+b9b5087eed07e760ec53571fb354ab2f
+b9b56f8b413caa5a0154f0a7447ccfb6
+b9b5b2f41b355b7fe75fb5497046b170
+b9b9c7efca37ccc6d8f3a00a0f236a01
+b9bd70e284580747682b4eb153e60d95
+b9bf26088d3e4608646a6e32fec37efb
+b9c0653f025eb7bf4a47d77b7eae6fae
+b9cc3ac275011aa259b067fcdf315fbf
+b9ce4aa2ac8ee309c69eb5b841dd2ee8
+b9cff1e25d384ae556f985151b6da9ca
+b9d08daf77b8bdcf5c9fa32fa5a36e73
+b9d10012b1fd20f5b2b58af69155fe0d
+b9d137afd3e398edcb72a8444ac5c3f2
+b9d14dfc1b9cbed103d27cc73c4e21dc
+b9d1948db61cefe6b94a72d5b13c3210
+b9d2eed1eae3e8ee88c4f68a5219967b
+b9d84d4d47405fabf0c91bb09567a971
+b9d906cc128f6d5be535088b2536b957
+b9d9649c5007b1eb41125ca49868d44e
+b9da18a697602025d167a83aa8648025
+b9da4e61955ea0ad84e6a99223708ebf
+b9dba162b0c766d9a0fba5f4e832c598
+b9deb393b72ad78f31ea9b2ac1312acd
+b9decef584318f0cba481ec0af6b6bfe
+b9dfe6e5c4963e5e5f3b461dc25de552
+b9e185d0cb68f3750a6de8b0867b4690
+b9e6ba9355f626720ab16c7cc8fe7ea2
+b9e804caf37204525249af4adbcc5709
+b9e8e4b5fa68474d00036befb5706bd4
+b9e8f95c87319cb059d7abd7d4f2f6c4
+b9eff3df0c04dc428572f21a8ada9900
+b9f01b99182abbd9a6fcdd3d6706f312
+b9f0ae55fa1685c025dcc7e06ba8d9f8
+b9f456201cf46155a5a92d96dd2690a9
+b9f5b5a853c4d3f2a5dea251fe24688a
+b9f6f4a2e44cc5a8e86854f2997c544c
+b9f90dd52fb356c61ea4fe46902d47af
+b9f9adb33cad6f593900306e5ec6818c
+b9fc2d95e4216424102aed15cdacad27
+b9fd827d79d5478bcd69c4c417a695a9
+b9fe4828fa9f4a501d38ff702ea18ee0
+b9fea3b009496d1e8609ca86269d1c84
+b9ff6842cda7c92286c06c2ecde8c3ed
+ba00eefa71ba4cb3ebe4e7c066b88444
+ba0273f3a01c74387eef4191ead1fa8f
+ba0a2c268ba2bb9de422a8a0792e8b8d
+ba0a34d86108613ff0647813222b879c
+ba0b4b7f6c375b6e9b6e95208bff1579
+ba0c06f62b5d9b545d64e5e98bbb2ca2
+ba10e2a8e761e1d14069a2d839db9e07
+ba119723b31fb8467d98c87652560040
+ba12edb220cc509ecd4b8721c3cf32d1
+ba1309b10fde076fd9ad762b30272e5a
+ba154eb8c94d406bacdcd65b4f2a698c
+ba15bb2568586292b0b88c84df1f69cf
+ba177bc81e2c8da7e9600ac92fca7531
+ba17dbde1e603ac45ce6130c43774b75
+ba1866c8f86bb1dd1dc9bcd20d63be77
+ba1987ebfcf643da479cf344c9c2f624
+ba1c516fa3b470acea0646c4a6470f8c
+ba1c5dc91ab0aa52eec77889c19a85d6
+ba219ca9fc072219b42151075d1f3f1b
+ba231d1fb5df3012d746689133141c3a
+ba245c4d0f741f40fea14ff42ad75f34
+ba26bc129622c19f15f7cab452ecd98c
+ba2a83bc3abb6a18dcd8122f36590d40
+ba2b97d661158b006fc88924776a8f48
+ba2cd9efb34a17e872e7be5823d01cb7
+ba2e5fa862d7ff83e78b50f6dcc3f8d3
+ba334b7573f8ad1be92514285f99033d
+ba396cd4fcd2548f2d737ab710c8089c
+ba3a1f7c16a020cdb8238af301b519a2
+ba3aad7c416e9ccd1f42a3aadf9dc06f
+ba3b9b0670676a96658c1bddbc3d5e87
+ba3c20f6889c601273b3101114ba61a1
+ba3ce5763c7f019338e73c4fe12dd5e0
+ba3ea6c97b50b247e80b20e9cc02d184
+ba3fe9ad6768c5959c1b99cfb5716ef2
+ba3fefb19fb29a98b9dc891317d79b1c
+ba4116f6f912450d0bf3d82665754aa6
+ba43778f711b1b922b630c3954f432ab
+ba43effad1a1acd652a5a86e553ba0b0
+ba455eb64e35b00c579cbe198b53ea31
+ba47b2ce271ea4a04998e14a93a8d3d5
+ba47d9872c4d31f336b795d2434dc614
+ba49637f5c87b169be14a1a3b26bcbfc
+ba4b5d8e02273ea94baf313b75dae07d
+ba4eec446234aaecb82e2dae10bc7325
+ba514b6fb0333b79323031676f1128ee
+ba52dbcf982d1de137f234aefda10958
+ba53b9efb333514a92bb633488c4f01f
+ba54ae9701a227376d72dd1560268b0e
+ba57fbe04178bc1791795c2feaae2740
+ba5896d1e66a080a2258b6a61d3fed38
+ba591c9ef431b74705e04f58a2d3e91b
+ba5c2279911a0418e970059a88414b08
+ba5cd9c8c6d317459f53456ce51d63b3
+ba5deda920d853a4324c6ac53215f19b
+ba5e6da597b8fdf217eb3dd87d997732
+ba5e842e5d19ca31b0cbe1ed478d1742
+ba620755a3bce36d1057a888677f228c
+ba6347d7b787812fb521bc2b0d66ca96
+ba63927fa4012bf39dba71a4e9e1873c
+ba64af3bb24b42b0a072f1bcd3bdd262
+ba6501fa89e00888934512c7bf279963
+ba6515873a161e3988d071a6295d9992
+ba660b30030bb5687762229606c2e69e
+ba6718e4dd252ac9dad487b6bc894218
+ba67d52da2f5b83625b2a313444de95b
+ba6880ce769877faa2765f5c3a1ab4d2
+ba692b72d5125d29e07adf9c989de801
+ba6aeb9771f76b4650dd0ae6ed6a1bfa
+ba6cf514267d73624f1083fd255190fb
+ba704a8a582e01f80b5ff1fabbf57a63
+ba70d0f3bc9fd401c28c11493e6c8f9a
+ba7219ddbe45348d8bb2b6a8ddbafeee
+ba72a15bccfe4cbac687b82dcfa49d2e
+ba7385ed2c40a618cd024b14668d71d8
+ba7460a5aa8745bdfcd668577f4598f7
+ba77188888946b768099e57ec025a61b
+ba78b4f758112e2defae1a3475586a83
+ba798215fed31ec3da482a91de1b3445
+ba79a6caffc5117e8f3196eb7ff48ef7
+ba7cd5e3561851d5bd4f7b60eed78d80
+ba7d8efe795c88bd955de995665044ce
+ba830176431acd854dfffe086756f04f
+ba83371fd0dccfc018ade5f92bac2600
+ba83712518833dbc38720d1083e32bf1
+ba84935c099b0b8610ccd5223d44bd8a
+ba8518bc5ae2730d834e6d96f831e96d
+ba86892da706edc7a10ea8301501e060
+ba8815960c8d777c0249043325ff9377
+ba88ee111a06f38d13765e4e0196f7f7
+ba8a71e43395933b5010936c6c86ba5d
+ba8b9de5cc84cdfdbdddd4907130c655
+ba8d0b8ca6a227b5cc6dbfb749628917
+ba8e095f82825e714b51a75b1c1884a2
+ba8e72476a2651ceff0af7ee47f53f20
+ba8f69c0348e29ed99f538c1a26280e8
+ba90c94a738e87035cb6883d10d1f188
+ba923ccb45b83643fb450b5cd707d85b
+ba9331a0e5afe4c194ea5cbbef0fa0cb
+ba940f15bba5bdcf7ed2e53d7e6f7276
+ba941fdd11daa2f0adf55ea7ebe41daf
+ba94b07bff40e5ef853b8312c29713ff
+ba94eb4b3cddd0c5babc30462c30ae09
+ba95e61448ffd2c4e24834417c7aa19c
+ba967a191b7a5fd744a0179a3d3c5ce0
+ba97984f8662d263e29bf20cc6a91062
+ba9832331311e6da4c795935deb9f235
+ba994c9097fc8a993d9e60f0e3ee7f6c
+ba9ac8372be569772015b9abc58096d1
+ba9bd68859306e301053a875a4e722c2
+ba9c8172244fa5be78346fb8f1d327d2
+ba9df9e21545f62985b2de7983e8a17c
+baa004b3f1572b62c5b1b5dfc37fbde3
+baa1dda5d74a93f08b5bbfc3b4aef135
+baa219322ae8d515afb5a5e393c3982d
+baa2ab9cbb207e334d0f0a26145981ef
+baa71cc90a01e2a9aa690364f19c0f6d
+baa74e4490c56d1ca455432e01edd775
+baa7cd7db4eff735c254f30a8d5958a0
+baaa70a3f38d5d6198f87ec3760ce61e
+baaacc524f953944f615685668647635
+baae2c61273ba06a179d8a029133ffc5
+bab16ea54cf34e6429dd2daa0a944e04
+bab17dd780c9c00375e91e34cf0d2a8d
+bab3b10df3c5e0d89f922ee6eb8932df
+bab5f28479d1d345bfe69e1da79e348b
+babdf7c7b178aa142e1cdbca7dfb98c3
+babe3338e19b1a1caf286b2407c3a855
+babea3df6d33ac332ac5b7a083246c8e
+babeded7e56bcf094f399459ed1a4efe
+babf352d07f656e8f6886265877cd18c
+babf496bb23f316bf3f29a13c50b0fa3
+bac0d7e59b3971ac54c7bb0da2292cd8
+bac108fbaca1ed7220117feaac61a8e4
+bac134ffe9ed37a35eae941cd969bd92
+bac61afd144f3ae241404044cfe0ddda
+bac65afd4295d0bc16739d6aef4b9382
+bac6f9cdfda4772171acef2253a44991
+bac939df942fa2943dbf00a9953449ec
+bac9d89279954004a8cd76676d4883e4
+bacc19576f2a5a4b272e357b698f6de5
+bad16a6f3b694fcdeeeb6698f4c8eaa5
+bad37a0ea26271e3f0f295f218d14977
+bad37e9555a12869ba9648751569dc71
+bad37fc4e2ff156c8fe4e64cd6fb1f3b
+bad4b94cdb76a98934ddf561ddc801f3
+bad643cdc23d2244413db278e8214490
+bad674f6c6c2e4703ce2a63d37d2124c
+bad7d1725713015c7dfdf110e0a19851
+bad907a546dc22ac816f8ab29c1b6742
+badb89863438fb6dc644b66cacd12cdb
+badd40a9cbd5ee5adaecde6f12e191d4
+badef4f7aaad327b46a3153471976476
+badef9b2092f502429e9423e7301dbc5
+bae0dc5ccff90611856fdd39aea36da0
+bae1b23e2019f4c9b2ba0594d9ab8624
+bae1fc86036c7a31836f689779fb9394
+bae2db0dcc0dac05b3bef4adf13d25d4
+bae51d3e250294e50fc8be12acf58a00
+bae7b367846698ea59291104565690a0
+bae97cc36cdda7b3df47abbdf86d8de5
+baeb16af858133800547566c0667268a
+baee379194e759600e3c8aa85b9739c6
+baee6236ef998c27d8039e2bc6adad42
+baef1655dc1c67ec7e3ce10f181c4a67
+baef8f12be7881f197a66e7922b98851
+baf008e64f03c22659f8cab5ea95e211
+baf1d325e575f0f6ee0fc80da89ddd09
+baf259f9c8da9b9b12a1afa50aec5ada
+baf4253288ad73752bbeb6d62c64739c
+baf6ea191ed7a2cf3da4e92d6e627a4a
+baf84b45d37f0fd266fb4b9ae8547b18
+bafa0318438d10d3caaac95bb4038204
+bafb6176ef4c8d05f9d509d8076af046
+bafcd442b18512a386588a492dca5e98
+bafd4e2bd4286a0adc20497116f58e7d
+bafea387751f8014e08359da50d33028
+bafeca67ebaa09394547bcc687d69da0
+baff5dbe83c2c90feb0db4e680cd429c
+baff84651e15319d8341c02d201440f2
+bb001c4678fd8180355cd9e83e21ebd7
+bb01ac4de0dc21477968c643a81be797
+bb0294921332d91918fdef93f4b93313
+bb051c5998d807e2fa40e8df8836b473
+bb074f2fe212ade5bc35970f3ccdf6d2
+bb078fed043fda0e584292076d70f594
+bb0ae8c5760153518a3e4afa05da9a5b
+bb0d5fd4d3641a1d664e1aafde8a2d00
+bb0f1d2fcc22a9613907f616a0fd8993
+bb0f836b245a266c4fa163b7ceaf106c
+bb1073e32af7e4d9e28938651403a04a
+bb13a5e1261f2e605428ac459b164d0b
+bb175596ddbc62b96842a62ba9c20fbb
+bb194c5f49b38204f456117bda0c6b06
+bb1a2b161b532297cc9d7aac88af8f06
+bb1b18eaece8ebaa8db40e9449ef88b5
+bb1b3db178a007a844aa910f85f004bd
+bb1c78ebeaeba9e81612ddfe32be4715
+bb1d4a675756e697202e5f11946964ac
+bb20cb803a6b858d2f81e6d598cd1b0d
+bb21bdd82e72a163f2b2a31ab2071e05
+bb2236883dccc6b3e1c09bcd2fc6ecb6
+bb2525bd3c94483e9343f5a26978f48e
+bb26346b66a4be39f98390b20d7c44b9
+bb26852957dd27ac65845896428cf3aa
+bb268d53b2836de1d1b4d5c704ba0421
+bb2810b92b3460c41f279223bf8221c0
+bb28bbad778e97e8ac3ef25079d20eeb
+bb29dbd43af864dae0321ea2265aa187
+bb2a2c89d1981714886d53b31ac7a595
+bb2ae97c375b9a69ae8e170751a6bd47
+bb2b94b48ca8fcb1806590687828df82
+bb2c9db5f03126c9b830d54e77114b48
+bb2de530f32d673bae89a7d10b145630
+bb2e0c0ba15ea62784803f5c73c5e1ba
+bb31565ce1a1738395823354cf690251
+bb33bdf5b80f9598663bf544288b60d3
+bb372646e8292e129a3ebb36a179ef90
+bb37397c4f1bee9ff5cb07374c56bd2c
+bb37431c861823d8c4db0f348d1961c2
+bb3757250f97e77d3dad4af77f54043c
+bb387473744b32e37e6a1b09a34b0018
+bb38f2011d2021825bffa679da0f001a
+bb395590b854c7d62b633ee669148bbe
+bb3a2b318c1ee70b44aa28e485bb8e93
+bb3ab829942c5386bac7f43e6952ab5d
+bb3c0d25305b3cc6bee690f233bd1744
+bb3dded3702512e89948c3d87df95c04
+bb3e5a483b7252af136a9ba792761318
+bb3f6614cac8bb0cf7f23c08830ff9d9
+bb405ea068510105b81ab865ef2ed1ac
+bb4081d803a2bb97e2ba95af46ec18d8
+bb47f0eca04e6f3e90d331a10ce525ee
+bb48096cf8ad753ddd2571b2fbafca16
+bb48bd0d8e815fec95b73c89ab28c96e
+bb4a59a1b53e50ee302d922853f0dc2e
+bb4a8f67b0ddd74091330266fd63a1af
+bb4b5973caa6a9b82138424f0221b055
+bb4bff5cab67095d662588535ae119c6
+bb4cb166f61ea3353876faefc16c4a78
+bb4dc28bd963f2f0408253dfbc95516a
+bb4e08fc40328e4809c248109ac08ba5
+bb501aff29bc405007d5701863506a10
+bb53b417f2bbfabfacf708b36a5d742d
+bb57a43a5789bf0a1149c552cb65eb9c
+bb5a3c15731d68df3a415c1f4fa8944d
+bb5acce68a9bb3d35899a8f9f0e14d14
+bb5bff11148fa1728d8496bb8e6c7771
+bb5c11b791f795a1a394d92abbd8340b
+bb5d3e9df62da0b6f7254a8620e3864f
+bb5f9c0597f8b32bd81a1e4a6b684cbd
+bb6048a6dae3db314f9d029e435f9a49
+bb63dc6ff41f3c0d82801c98ff0b6bc4
+bb65d3d91613e4306d96824d54b1f0ea
+bb691097b70158808f3be28ea68ae16f
+bb6b957d86ee0fcfcac71ef7041e7894
+bb6b96f290a43a7ef5155560c3e79d69
+bb6bafed1c9be8a0d6a9b5c6ec1a0f93
+bb6bf54badc818717c4b0005778e35f4
+bb6c956b97ba9ed7a5af1346b0bdb6f0
+bb6d73bc09c58a3860fc65ea6e141906
+bb6e36681866c8acee06607f54dcec47
+bb6fb453c484b2946e4985fd63f5db20
+bb73d129453941cdc66ca5b9df2c4c19
+bb75146037b529f0e1d924e9cffc5379
+bb75c2b85d9fbb5e810bb001f6db781c
+bb7708288554cf3ee6bd735c75cace24
+bb7761bbd57ce4142d6070be3f16d413
+bb778609ed8de8d9e0f712d9cec9b62c
+bb77f8e8160aaacaaa924a453b48eaa3
+bb784f6a1bfc5af498231079eafd1fca
+bb785a4f1b190a0fe7f5016cc642112d
+bb7a0cff2c7103e1d42fea5e98d07b01
+bb7a82148c0b6a58adb5638a50bca3bc
+bb7b1140c831f174ccffacec0336a53a
+bb7bd68d9e1c15cbd4fc667b14212ed8
+bb7c3402d06be2b25b1cb9d10721a1b7
+bb7f4facc74f58abc3ce612792024308
+bb8162eb06e6c03acf3e8219aa77a83e
+bb83808166f66ef9062de2c69e643253
+bb859bebca8033774638c670c9f269a7
+bb8874d779c82518341fc279c2c0f3c3
+bb88afae3c77daffe8befbee730b42b4
+bb8ac61d9b6fadc02af721c34112f554
+bb8c0969b4b83e626765a35671db5ab5
+bb8c43d6ecb1ec1c27cb6ecb69487d6b
+bb9000bbdecf9dba1eae618c71d5e905
+bb941bb101b433550fe0c1af13c9af76
+bb94b69df6f085b769d91dc0cb533cc9
+bb97130d6ad4adc03a1201f416db2edb
+bb9716edf6cecbdfa7fd8213274259ce
+bb988802de8a4939be6000254628a0a5
+bb9bbce7bc8e498387649a5a367e0077
+bb9bf9309b497b62a9c5af6b9146c132
+bba3273dfd073da47f7473651c5df51d
+bba5cf2e249312ef9bb28803f387efe5
+bba7a5ded36653bcabf8f0d6c0dc1e25
+bba815e59950bfd008eff53dcdb309c6
+bbaa9e9317700954139b69c6a1438ba7
+bbad6bcd8c8848cf3ab4111cfb73a0cd
+bbae6dc0d7cee056babf5ed6d4af6e9d
+bbaf340e34cbff02767941f1a44e5ec2
+bbb08222ae7b53257c40b4f543521f29
+bbb3654c70d0b2a2427c7ca9679405d1
+bbb447e22e6f39eab1695d455f6e4095
+bbb6ff088850f0c52b41984f0583e73d
+bbb705fb0025f18dfd7142816b5ef639
+bbb7de5497845d00a68947c4f759fb66
+bbb96cbf838a2aafc7a5cac94ef08568
+bbb9bff8218de24f9096f56e801da001
+bbbaa1a974f14598dc6a28415e97a984
+bbbf764e345a83cbdd382b04203abf98
+bbc1985c34381d451f6903df38db4d57
+bbc3a0875ac267ff4db7236f86151556
+bbc3d5e225b0bce788192ddf93f80b0b
+bbc648317a6bbf9e955a1047a08490b2
+bbc6fb96b7a883aa73ddf4abfa08d617
+bbca16c458d67283b30e7341b8c6a29e
+bbce75e64faf84b15a0352d98762316c
+bbceb443078694c4d171ee5939545662
+bbcf08fd98935328c7ad792cce85534d
+bbd3e91cb991018db086e2a90985d642
+bbd4a4560f6c6b1a9127df10936ecc48
+bbd4f0a69a9ffde189961dcaae055254
+bbd4fe98ffdf5e6dfcdd92b9e65ace91
+bbd6952420f5b934c2bb47e7a688b218
+bbd6f08b0053d535d745a92be45333f5
+bbd82df26dddb2296c299db2eb827823
+bbd90f3034de7ac81dc674bd4bfb30e1
+bbda51cf8c13a8a58825f4178d0b97ed
+bbdb43306e05d71c70fc6b7ca4ff142c
+bbe0c7398a803171cabbcc3e428ed1b7
+bbe183677fb87f3b830a0124d9d6cd19
+bbe31d2e48ddf6b4ac3a2894a3ebe41a
+bbe3cb3cd38bc96714365a4f25f9d553
+bbe7c1d3334a0256893702be5d97646f
+bbe8cfe1b69032cfb9a135843427af0c
+bbe946778cd33fc93bf0f7842e2e16d3
+bbea1a270dea8439929aa0bfdca6a48f
+bbea6e49bcc14f4f1cf2f168b586c291
+bbeaa2c9ee8ab2b55c8ff053bf7b6767
+bbed51c270ddf590d221ba63a53c9296
+bbee19ca2913c8be31f49b685b3caba5
+bbeeb017392bf0d36a30d75eb024cd5b
+bbeeee07e9609be79ee564dee1c50377
+bbef9d64b891693fdbb800637464ca1d
+bbefa74ab2d857b0f5709e3788eaafe9
+bbf0130833aafaeb54ea5955d8b25ed5
+bbf36a23c1b0b951e75944d653cc7ff2
+bbf6b1d58a5969178796000eed295fc3
+bbf8ab18ab7b39262d2a4d61b82be852
+bbffdf1df7ccd9c4bf42a95ea13ad611
+bbfff75f8c9b436eaea8bad2393f4893
+bc0051b6d81246631aa693d89261bb00
+bc011f4dd17349a7709fc347f9b9a11d
+bc0169cd2cca2de2d4c0d6ca5ce6586e
+bc04b8253c25d620ecc83c3e8b2cc8f0
+bc05c2206696abd616809a50f926c3ee
+bc05dfc6e58e687ca779cb03cb7e77ab
+bc063efe302878d951a8319372f3306c
+bc13ae59118e1e5bf67620dccc74306a
+bc14def8905e6db3cea7955bf48ffe59
+bc172569bcc96ef42ab2a54e8d1971ef
+bc19c25288b3ed414759533d6d11ac32
+bc1a73afbd65e3ba6119b9f36123596e
+bc1b00dedf235c8c3c72d5ec97a40a02
+bc1c75e69d11e44f9cac50f020bfcd51
+bc22a54ac80220c55e554b88f2163e96
+bc239d6912cf334ff66c4c246acb5a7d
+bc23e222cbdaec8983526b7b49d51743
+bc274898bb463d176752b204195f4841
+bc29306185c9f61ee1869affc9c8cb7c
+bc29db5b95e4ecc77863a129eb6e6afb
+bc2f6e84da9a95626f584f54d170d8f1
+bc30525c7107e0904cb32483771117df
+bc3087608aa67e29dcf5fa4396567ea0
+bc31fb0486eea6aa5e894569e574a1f4
+bc3497b0dee58f7462426379e8d62a0c
+bc34dcfb22ddadd909ccf7015acc840c
+bc35909a2cce5c3efadc9e9a0ff4e169
+bc3709d7b270eefee2ae3935253ebd18
+bc375f5aca91720b6e8600fa10b427fd
+bc381f30b337d4977b0f177ddaf27553
+bc38ad7396bc25e7f7a99b6a019cda2a
+bc39d33fb044c4266faa1593f505c945
+bc3af35317d9f43f2d1f615e30ec2ecf
+bc3fb11e5e5b8034e917587b28ddf8fe
+bc3fc14b9409a63c377c50c265f30631
+bc41ca230fe8cd245181c1b4a29e7742
+bc431926bad6bf15aca7ed952e9012f0
+bc43395166bd73040a6fca3b8db0b81b
+bc4b2039c2cad8ed563df871b11abfa1
+bc4b9f25bcfe13b7c5fa5b2d1125fa41
+bc4d8c4544177021e6ccf1896c43ccd5
+bc4da0f651242f664067dd1ea4a1406d
+bc4de2329041f7b79515ec00b839b78a
+bc51fc72a9134f55ca49415bc1ccf9c3
+bc52eafe24b19fbbd79ffb1e1d9a23b3
+bc5304126375364faa22326db7e0ebcc
+bc55dcfe5dbded40eca4674d8442fc4c
+bc560a003589da1c40a7fe26f35c20d8
+bc5854fa2b4ca600d083dab14b9fc704
+bc58dcc2b911107022a64d1ced8bb98f
+bc598d9eb573fc6d5e9460345a70e2b7
+bc5b62b04170f7c207e6c753fa2c776d
+bc5e857a91f0b30336ccef947747c6f8
+bc5fe81066c6e004967903b4cc84098c
+bc625d9a3d5bb4595699a541949246bb
+bc63da34d4f8c2b59d1c941083e8e0cf
+bc64df93b22f21ca27ea892194f1f081
+bc64f5040720402bc72b11ac325ff824
+bc6690341c3f31633f2867b63650d3e5
+bc6a611a775217d8af8adb1829e9a4bc
+bc6b3662788abaad227e9fe887e8be02
+bc6b8ea959a88b9f9d3345860198313d
+bc6d1decf7b0cfb40a92612e11c2a419
+bc6da75bf532a7b985f7ce6c05e8ec9c
+bc6e49690876359a2e9e034b4289bbe6
+bc70672e96d6ac79c5346602d7bca436
+bc7251ebb5a208b4834c2e5cc68dd173
+bc73d19e5d98d2421fc2eaaa7c9b5f04
+bc748e69459fcc7a4c8d4cbebcf369da
+bc74f9cf03419c3a3702bad88fcacb75
+bc75c4e634b953e2d188f7b0badf34c8
+bc764f67f09708a897e15cea8c5a1036
+bc77cf9b9edf15c62b9fcf5febfe9f80
+bc78d1f8ce74979bcca44911bf3b7138
+bc794defbd28df856c429251ac6b5dad
+bc7b09c1d08993d0b178248a42e90d8a
+bc7c0b8575762cd98868b4f4da62c4cf
+bc7d012b047bc9114933ea297329b6ef
+bc7d388307b72cca066ca8ef7f4c5215
+bc7de8289d0c441f8512059c671a2d20
+bc7f210eecfa5304719f334104219fb1
+bc81074749b22fc9e674d414c6b2ab98
+bc82bc2356851b821e2176301faa5623
+bc84b645b9c5f780952a143d8b3f2cab
+bc86ed66bc30df225b248e040881c26c
+bc89a835e2e9d17e74862862bfaebac2
+bc8b0f5923949e7e4d6640e0887a42b8
+bc8be96a95ea9a0507ed04271a1c1a00
+bc8c59d679de2e0ce93594f669bc6c38
+bc8da576d737658d5283f3a0c385b5d1
+bc8dcc3a0b3c356b62272aa5be1b7350
+bc8edf1d260605d97e8632d3c0b341f2
+bc8f78ad91b161b39c86e7f60ec1ce70
+bc8f8ddb1fd5d3e56984f5355b390db4
+bc907e0b00358a2b930d09df3e42b838
+bc925aec35475c1ccb1618f5740d5050
+bc936b40362217cd3b9c0dc581378390
+bc94b87012f4acf499a04b81fc9c0c16
+bc9500551e8b9bb28f082db5df179777
+bc95a4ef8533a22135a789621aa958ff
+bc969fcabd8efa5607d0a9f2c47b6c04
+bc98ca57d780ef724fe4423d47b9b8c3
+bc98fb9045921d5bc386d5decbb32e4e
+bc9c5594b18de4f32ec8a34fea01d7f5
+bca14e10c3ec8953d50795b1b648977f
+bca197e88d3bf54377f7eb87c5892a54
+bca2317c77203b46a4300cc546df1429
+bca2d9e34be6fdb4c1784bd69fe8fb3a
+bca54e30e670df638ac255e4adf06298
+bca5b87ea0d3c9e05df01e2c8e260742
+bca5dfaf72454538e9544d8198fe54b2
+bca64765d9c5f2c085daf06745b30a9a
+bca6ac3a16ac6e47ba54d09355147d48
+bca6be4661a0d63e11bb04f6c8514229
+bca7172c4b87e931db8c637c9dc65418
+bca8e7d928a50e9d9b17c02509afc762
+bcae57c9fd3ffd24c70752ee0017806a
+bcaf015da5dd0b7eb4a79be754314a51
+bcafb5d88186310b33a1550b0927bbfb
+bcb082888afdfe9dac284ccd364a75a4
+bcb289ca155d7340397b126a28b90cb2
+bcb4d5b2ab7533b1f5a2cb50562d195d
+bcb7cd1b21dc55f83b25f2d0ba8b5544
+bcbe39f47b46e5399f354d5683df337c
+bcbe8348a4107ef688298f76ebcceb1b
+bcbfa250f1562cf9ecd0b8696f480af7
+bcc01b8900aa70d409db3b1e59fd2fe9
+bcc03034ca94a163925f725de8e377c4
+bcc2bf8f26861176817400ed6c2cf1be
+bcc4691738fefa52fdeb793122301be2
+bcc5908bfcab60757fbb0ca5e26bdc10
+bcc6f34f46b22cb455739491317813cc
+bccac029adc409a9bf50990436c7146d
+bccb0a8d7b6a9ef904d9a9661602b77e
+bccfdff9365853328320b0e7a480b453
+bcd289916c93b853642eb3634df7842f
+bcd4022d27045002f4436997e31e636a
+bcd729a6732c842bc9e784198b5237ee
+bcd747730dc6b2dabfbb1b43d9508a01
+bcd8f3cc35d7226d087255de8188264f
+bcda9ec8010c53c3800663a8d2c6fc3b
+bcdcb70acaef9a16ea3a0691308e98f1
+bcdce0dc757c8d57ebf893ecc21204ae
+bce09bcfe85b51f45ae667831cdc1491
+bce0f80f92e6a1d680bd5e6513510902
+bce10189e01555910e6403b51ab3e9a4
+bce194e685b18c48e8f57480bedd0346
+bce304b263f944ab86b0902c45494fee
+bce4b34780c1656e28c3d7ee5e3adfc0
+bce60a6a1a311f0a2758be81ef641894
+bce84b93e1fc910c4ca11a5c4536c16c
+bce88220ce02f17c9c0a5910c03ba297
+bce8fcfcc12af0c1b2a30a42e95c8fa6
+bce9254ca0dc2f257bfdce2feca75a34
+bcebba46754e0dbf2204e304d0fa51f3
+bcec2a4602a5b151d5a5dcaf2f7f603f
+bcefd169b74bc275b69569e422eb8662
+bcf0f86a15eb3ba39600de26729dad85
+bcf3a54e9e1d490cf8a23b41ddcb420c
+bcf4353c3b7bee17a60406946789648d
+bcf436404a7a7e1fdf2628eb8bdd9241
+bcf491700f138a99d6c7e9a90e0ac427
+bcf6d2200b185847acd4d1d0589f75dc
+bcf78c99583165301f2129ff4475c890
+bcf7de38d5053f0be7a8ccab395e5e0e
+bcf801558e1d56a1f5adaee1f8e874af
+bcf95e6ed8d6cb15d6ba8eac04713467
+bcfb4ad6c218ecf5a0d24f291a147e0a
+bcfe68c749003165b3125bd471fee980
+bd020787371a705664132c7c627c7870
+bd02dcce2334ea6b237944c4fc8f5b1c
+bd04eae23dfca483c8be031e27c71da2
+bd066c8789ec2a892aa93bf9b9ca30e5
+bd09802057f5b87d246a8ae6ef62ece0
+bd106277a17b68339711b18d6cf02a21
+bd12afde5303ac876587643ba77d18bf
+bd14b59dd5b36bf20d5dc8197bc750c0
+bd167e272290e9251c4a4b21c47bb4d4
+bd190ede9175ee6d5c335f52fec2ae54
+bd19e79efaf51bb9f729a8f88c98a0f7
+bd1e626e655f44112c014210e5c2cf4c
+bd1f83d36d85d86c81ccf31be7bcc4ff
+bd225f3367d5f4ba42490bfb7fabc2ac
+bd22a0d5d731211f1a6c4bc402ad486c
+bd2351e03f57c6c2507455a09ce79ae7
+bd282af9edf74b256b469daee91082a0
+bd290aa62f7e3adb59b5cc4c2bd7c8ed
+bd2a0eb73280e6853adb2449273c857c
+bd2c67357f39d770faaf7ec249a17bd2
+bd34eaa0f4fd1f4ad38fa9cd3aba70c6
+bd34f047454d4e47aa483587be990805
+bd36196ec9a9871bb30291ae60247ea2
+bd36b46abc3d6b608c34df682229697c
+bd37100bd677053d1a608e37bafbdaf3
+bd38730f29418b36df49065a9217b2ef
+bd398e824ba488fa9a2a1588039abe37
+bd3b3fefc77118499cbf74efd12cb029
+bd3ba3763c116e840bbdc7e3edb950c7
+bd3d246b9b6de2a50d394ada65be8283
+bd3e67df11e31c33f7d3ee6e939f75ee
+bd3e729a5a7d283039e7bdcb74a3fd0f
+bd40e20fa7d6959613de0e4fae9bb748
+bd41d920a4c02e1d35c1e7235162f21d
+bd43e6aa89b14b112fb4885ae7a4f072
+bd44db4e0121f2bd9315b94b82da4ea3
+bd486c48a5ccd9713deb064189c80e14
+bd4c51f2ee0e6ea37e440e372c0b6147
+bd4d605a7893ae28a900d0739f73ae99
+bd4ea74209b5cb24887842a5cbc7e9bd
+bd4f469941dd154500c8c309fc03e573
+bd4f7c2003995dd2cd1312be72043cce
+bd551c12756021127a407aee4bd3cd29
+bd5a74a0d6404418dfae506c23ebc503
+bd5a8d066af5d4644b56f3b66b5d356a
+bd5bfc7b3d9bf5cdeb3d00ac596905d3
+bd5f62341cc8c90a1f306ae48c29bed8
+bd6332b651affb13fb35aab3d36dd792
+bd6579e86fd01aa8a2afe0bb51532bdd
+bd692fbb7a59243aeac7baf81d34d72d
+bd69cd548744290fcc7640f23d4f65bd
+bd6bf5abbf7140c30ee16aae62d760d1
+bd6f6fb9c7e20a32adc6a53a7151522e
+bd6ffc7a7ba01a3954f2634f666d14a6
+bd7216592e0d4eb5db57ebd48a8ae79a
+bd724de3271ead67f90481d23db3c28c
+bd77107c575b25a8cd1ce223a9696b81
+bd791e179bf92c897d127d8e6a34df8f
+bd7ca7d35a402fe90ea21bd4128db298
+bd7dd69ff50d63a8e61371bc9da859a0
+bd7e5eb7babd048aeff454a0abec82ac
+bd7ea1e13b204040a85e59c6fe51a77f
+bd81404ec71d476561022fd4cce0abb4
+bd83307658d42b0cf24eab848c1ee03b
+bd8b0655ce0116eeceed0d36a550bc66
+bd8cb834867a548302b1313836b5a4fc
+bd9233b3d5de76751a8d54d6bccf7031
+bd94b32f8475a23ca5d080aacc7545ac
+bd951b148131985aaf836800c78684e6
+bd95a0f6c16b873a8e5947ff822b1e34
+bd966a8c450834f935e0df5143b5d67f
+bd96cd1b00a05c61b1e89fffff02f929
+bd98a1946fc6a3d1bdc7bd7cd3a69a8b
+bd9c35053473e17f126e992b8e172bc5
+bda3ae6ea7c56b9a2fd986b70a6765eb
+bda402ecdac7e8236fee90c9f2d14c11
+bda7cfe66b25e77c65086a6228851729
+bda812f951fb5542867ddb81e9dc8de4
+bda9c170ed50bc53f3ffa6b26433987d
+bdaa0628db431df9d2accafa61aa68f8
+bdaba093d97efaace135a7ab9b526b8e
+bdac2479036f418d868362a80191ee93
+bdb08c663c9ec990e25f3153940504b1
+bdb3a4c617b1b6243b800ff7c2731cea
+bdb456e6122a3cebcca4b431fdc5e32a
+bdb5ca7d0342f613998748525f7763cf
+bdb6000da200a514717b1be364ffb107
+bdb66d9fa18faeb9c8abbe6a534946c9
+bdb6705f665b1f9154ea8b32ac281931
+bdb900ee9d259d279001ec87477d5c39
+bdb90860e0f452c7e3468591b51232f0
+bdb9d96f758a6eb1b80c7c916f1001a5
+bdbd01278f40e3c439c4101bdbff389c
+bdbd0624ff98e3de531b411bb75e523b
+bdc0edf5c07eea7894be08c6392b52c6
+bdc38e6cb79e1d37a3b2f83e1363370e
+bdc47dabc7b8403e17db795dd1aad7c6
+bdc61c277611d00be4d86ba74126b852
+bdc6535788d53901f6780382c511cafb
+bdc7d8b9df25a8108d302fb87229c737
+bdc8afb5d0555a79cb0779a8ac5244c2
+bdc9529cc6f6ebbbf2e61fd4482621fe
+bdca7eaf53a4233474166a4bbf77bb72
+bdcb3598ef9fc64587f651aa87e17db0
+bdcbde48b367c2bd9699bebe4d4208c3
+bdcc58f9d18e4688ee255bdbfe8a6c5d
+bdcdb546275ddf548fb2426122f30b33
+bdcf00bb2671f164f608404d11dd0a4f
+bdcf70cc060a7602153f8c2ca327f5ed
+bdd51699a6e0f8e8809808498126d890
+bdd5366444bdece307b0b03c7df44633
+bdd581a4bf760f4d88d81ab5060de327
+bdd69b755725b5b01d8cc2d8e6c0d146
+bdd6bf65f06a4ac04b8fb0943a313acf
+bdd9e3fc1e658b6d469403e77cc161fb
+bddaf9ff8e4920f3b8d68e5dda429e52
+bdddb28f7e11219e2e5d2fd9804ac5fe
+bdddd677bfe6037115da4452b94cf9b8
+bdddf5422252ba5b9072bea47a856fb1
+bddecf8be5f541c9c599add4ecb84fcc
+bde14dd89bd61f7255832a7cbf759664
+bde2f987116ecab34e1cd2899bf3aee3
+bde838fc559a2ac2af8f156caae601bf
+bde909117fc114f238090b7861ba759a
+bdeac028193908ad7d991d264f436f70
+bdec385e84fc77a8740f679cf97d3e8a
+bdef2d965344ddc7b1e51694f44e139b
+bdef99d2f270883774f5df6a4972ce61
+bdefb5d19dac655603d2fed72d6caefa
+bdf56cf0bfdcfcf82dc5965c360912db
+bdff461f2217ffa9c894407cde8fa8ce
+bdffe6c7731552b6273b3d4d21095b03
+be00347162fc5896a8cc22c6f4cbce98
+be004ec9e761e6d302ec88f9d853bfed
+be00e0a046819500914a66ed247bbceb
+be01223e34a354a6e883eeae8819f585
+be018249b4ab8f2d8cb7a30cb18f503d
+be01f803a3e7a779e4eb30fa6eb5f368
+be03b13cd6932fcbea23cce36085b3ca
+be055a378ba92bf4a0c0f7a81254ca0d
+be05cfe1be04519f630325e7410ed6a1
+be075b7d1795f2b7bff518f1d237155d
+be07618beb3dc5e45f17d851fe794c4a
+be08366bb7427d8e696e57760738ab6a
+be09ae91184e890cf5d626191b999863
+be0f1c1b0c309a3009d5ae0d61929ed8
+be0fd8755263e895090fee64d37ca71c
+be1123d32db0abdc9c5340ce3f265934
+be169f7daa4a53a1e88bc6d1849e8b7c
+be16cec27bb60b69101e7af8009c86d1
+be172684db1aee05c865c0d02a8a0002
+be1764e132c8f452b24dcb07e722853d
+be1872cd6d6b94c0aa0705f920d5bbc2
+be1904565425d7e3ae1fea67dc8d16f2
+be1935c66cf9bcf29d5afa67b083918d
+be1bccd491d83f135cfe6f0cedd9e530
+be1d0e5128788570873924c3bbe26753
+be22696385df848cef30e5794f0fb10d
+be2368dc7e91584832560feda35b9a4b
+be24d3899c3d501430566d8b8aa6ef76
+be286afdc57ff409cf951314c0106e64
+be297985c9ae89a785719c214cd02e05
+be2bc5f435167276dba9354a7c7c17ea
+be2c94548fc05eca8c7c0f8800dbded9
+be2d06111d3dbca53ac2e89e39d19768
+be2f65c58fe5f8fb438e42569b39022d
+be31b4f8cc2e07b95a9a56083984256d
+be33e81c9ac6a1bbcefd25e568ac9b08
+be354b87774cef816a31495bfe857816
+be36cdfd862585dbebca75df5ea74024
+be383a1de953c205b3af52349ce9416a
+be3853160af9ad4e9148b1a4d6186c4c
+be39e64b7d1b5e0bc03514f271809b2e
+be3b757bcf61fa1a02d99cf4430fd4e4
+be434b93330a3ced391bddda0cd432e6
+be4363f7888451cd0b73950500221293
+be43b75420cc5c250f79887773722c6f
+be44ef6e6a3424820b896f739c7a9999
+be45533d7f413106c7aa6a0322ba85a6
+be47b7970e72eece304a67509d16e0b9
+be48de69016677e9c943fc26d2a29d1c
+be48ec1485d5045ecf80d3a28fc8ac33
+be4a0487941a70e3f61ac9d6750c5da0
+be4cb2663484e6f4626cbcea5676a8f8
+be4d071716ad04018a229f02568e305c
+be50220c4bfcaa522429989f4a727f30
+be503bca03814ff22411ef9df331f814
+be521fecde9789730a88bffbd3a92f38
+be5315ff6ca23f9972b7b8f844d08c20
+be53ce122c1a1a8bfa5fb0c758d66e20
+be545b4c6cc259d7aa9ce9d5b44fde3b
+be548fa337c5a11700f4371c59a4804a
+be591f443c71a135f74aa8cb1ff0b590
+be5b54159ad1805a36500ede43afe05d
+be5cdac7e3bd2785363fa666536004b7
+be5f08ba83310b8a4c7220c528164176
+be5f8c50d73a0e86a48511cb7e7156c2
+be6080ab7f9f87665782711e39f9d80e
+be613f147eba8274f5b300413664a6ca
+be6318988bac8951da24553cc1899531
+be6517acc353df9960e7d8ee1478d940
+be66bd2f5b757da8f31b71efe875ee51
+be67c6c0fc9b8ffd8886e31da96ebcc8
+be69096da808231e839afd6bc827a047
+be6b8eb3f439b02c4c1ea68a65f40265
+be6c8f95881a76536b8dc15b4d1a7295
+be6f266070d74edddf27dd2b20248c93
+be6f8ce1da8ca8a2c0e80fd190eacd2f
+be7054955d8f362bb1228b6e4c7591c8
+be722e26a11388df55372155042f0ba1
+be73be7406d3b6d30de4360ec6111215
+be752eeda05e3cf030de6b27eff5e6a6
+be774ad1b796b65bf41f1686cbc582e2
+be7859fb476af5eb05a495dcc4a5fd62
+be78c70ea4cdabc8ae2053e03c2c7fac
+be7a0f3a88db1893bae712f540f52582
+be7cba3a10094c351264d6a941c5546f
+be7d496ceec71a7c2f9384487944d75a
+be80b919c477d361c59601ee3f984087
+be80ee0cab81dcf60f47978ddf73ab5e
+be810bd5ce18dd69887e567f3f0e124b
+be82d7bcffa85242ac0b996d865e02c6
+be83b644efc752c7c0ab4e1bac7c4c0f
+be86b5ee041cd30197a48ef265420260
+be86fd614ced2fef635e870c06ceb22f
+be8776e59eb06a6f76c057b050c66734
+be8d7a1b153782a5dd6d410632a8f3ca
+be8e83ca4d1c2bcef8955afb6e88d375
+be9028c17d382dd28a49563892a5f84b
+be90a687591cd8ef5cd66be0538390c1
+be90ca129e7259504cb02afba5efb511
+be91cfa98ed866e54cc12f92298627a4
+be93f40f7574e8245fb5f9b2bdc8c81b
+be95988b30e1af7749aefb285355f6f7
+be96bcd53dd56deef7e2f135751a8f23
+be972fd73b8f9e1576e8cf0aecc6e1d7
+be9752dfa76e085f08dab00bf50727c7
+be97940c154f0e779e09b280e4bafd2e
+be996b52f43f196670283792a187aa7f
+be9a657d7657cbf881a6df011db1bfff
+be9b193ce9e1ce4144f2a43ddca30583
+be9ec304369856228884bad07099b2d0
+bea4e465996e71d46ae511e7d1e92cdd
+bea4e6dc86d9db651baee6b4eee49c08
+bea6c680c94bf7efe0e228973cc4a9fb
+bea755eda2d0ead2e545508e8b939a75
+bea7b9312c61438d2e428fd5fd89a8c8
+bea8bf4556b66e3f51a60259a678b4f5
+beacd19be8a4204b1f3f00dcbdebdb4c
+beacfa933aec442e6ca101ff121e9b11
+beb11e53b22aef05ccc2f9551aa5abca
+beb1af28e12d02b4a49f06b874116171
+beb2ad2de0dc556a0597e18c1a45cc24
+beb2be0f952b3401c5ac5b665fae58b1
+beb382e95c1aeb6034b052e8dc59330e
+beb3bffacaec2c3da65c1dde593b59cc
+beb3f44ceb81ba65614c2da119fc52db
+beb68514496a404a123cef6681f83ca4
+beb6cfc151c6b55e244b1991f05912a3
+beb84f37ba70ca85750edbc44f0e26ac
+beb90e272a4f60c64672fe320593a609
+beb9b5a60f61734a4b7d4fb05d989766
+bebb423830d2538d48effb7526337871
+bebf9fd7492e51c50095efdd8609dfea
+bec1daa91de3f050425a312621c104e1
+bec1f818840cf064122ef2bcff08fefa
+bec27c1fd3d4662f7f6043ede177a94d
+bec6bcc65b035f987fa34d0dc9db18cb
+bec83f404460602a251abc57459d7e75
+beca63adc4bdc9ced6b649e26365974d
+becad12abbe5aa45c1e880be81a08179
+becb2bfadb3176c91034b8015b9c0da4
+becba62c2de30cbff2c2e688f625641b
+becf8ea5836df4887d5b114e6e6fdbdf
+bed0a43838d99120d271321529388e2b
+bed2789000436aa2ba9fa18b3fd9eb05
+bed28141a88b3b26f08115fbcf67f220
+bed289695d377566678068c3eed32d99
+bed2fc3358b6a2c3939660cac400919b
+bed4c8595526efa3c4e97d2f12db02e0
+bed5962b6e5bc6cc5800ddb58c3f8976
+bed5fc87e7d50803605a4a8a4e4cc612
+bedb5b68f14c87de2ebb1431e262ad39
+bedc132473ad752234713ba7832413a5
+bedea6fd3003e973ccebb4c97d1d41a2
+bedeed4e14ca890c56aebc320976f00d
+bee058a1d05ca9051671629ce34aebb5
+bee3d90a904c23e75be2db1a312d2f09
+bee3e2ff08e342fa882ed8bb53e7f62c
+bee4535e13cce3b01a62d1ab5b177db7
+bee5a1cbda3e995890e7892259ea5d16
+bee5f5f5e49c3fd80a13c764b6267d93
+bee68372089b4770a3d9aeb40dc859dc
+beea50287baf295fcd441b139a3d20cc
+beea636279036f0d6cfeeefac5f3877d
+beeb58777c63c50583bc50dc272714b2
+beebdf81368d178fc949017cb728aae5
+beedfc57140240aa8cf10d6487e71c1c
+bef0f2841394b37b039cd033e24e8b4a
+bef4becc14c1aab24a41a565ed370678
+bef6bff7d67350582016ee83ce33b8ce
+bef70dcaba98392fd0aef91c3e2a5bab
+bef72ca33aa3219d25899d1c1cde25b8
+bef82295587a00e8cbc9d24b35cb41e1
+bef8556e56d748cda2795c9099074d23
+befa7c4f984a96250a7f292a6b40dece
+befbcd5af790a3534e014684b310c324
+befcc6ddb14c34fd92a04361ca947574
+befcd874971e674cab8caff787226378
+bf00d5a8e22a4918845cae91b4c54af5
+bf02ef86019778231d1736403a83a22d
+bf037bd468caf91fd03094a778285773
+bf04a8cfae74ec7d7abab57172c8eb22
+bf052023086c71b5f23a1d0d14615f38
+bf05d961fd7b1483ec69bc8705a3b470
+bf0c38f9eef0ff230af19be771b0a83f
+bf0cc30cc12cddc4ee90ff671bc2d817
+bf10e5fa4516f2723cd473d82c7ad3da
+bf14cbab4b29f590285e296515a0fb2f
+bf18021a3cbbaee34250a8996ce5c82b
+bf1a36587bd35ffa2dfeec52877ac33b
+bf1d3332e2ed4a3ad0e0e10adc9a660c
+bf1f228af1ed02dca3dd88c0da5e5e8c
+bf1fe7fa36f1f90dd9af1a08587ccf21
+bf214280a49e738d404e33830cfb6fcb
+bf22cd6157595e9c025c2a4adc3e1c85
+bf233ce1a481581d687bb62331d0c643
+bf236f619886d1030e9c3e147aebefc2
+bf2452793f3c6cd940f4b079e9da0cd2
+bf2834037b7e91f2e812c0e0ba2c5fc7
+bf2a885031f4e1996df3016b99aa53df
+bf2b39fc786993a52ee2dc935211c3d1
+bf2b4a8d619c0e3cee1d60f15b3b590c
+bf2d01759cec0e675716d0fecf1db4d3
+bf2d26bd40964b6839c86e39570324c2
+bf2e38a10abefe3d17521e7848ccd428
+bf308633197ae0d5e3785d5eef1cc598
+bf3134020de007cb427da00e40c44227
+bf327e13d9ace8decb023fcc1d956114
+bf32b8d96f0402f86e52e27a3596463b
+bf339307d8f5722017558fa9e5bd04ee
+bf339c88472aa909e73a3a491a8ebb30
+bf343f693b902cca8f5ac9c74692aa57
+bf3497c784ac84e384cdde2d261ff69a
+bf37856897a4b304f24ec175e886b353
+bf37d41cee19dc03a51565d81de620e7
+bf3a10b34d0edaa8ee34b5fc49dd81bb
+bf3ab1dbb24ad358e5fec2a07b452e2a
+bf3d06dd2467fac353d4543864e362fc
+bf3f011938560d00adef55becf2581bf
+bf406688150e523c03aaaa0558ee0f7d
+bf41ce2f9e20b93e11f85ef75b04c1af
+bf42d9affd3357ef148d89405ea8acdb
+bf42f6f4ccafaee64b964590193f5839
+bf433250e115c151df64157d2d0884a6
+bf434911a0ecf691ad9b7582d82600f2
+bf4349631b080262bd2c234db5bb970a
+bf43cf6b910f0c8664b298e5f6e044af
+bf489ffbe8b40ed4c9c2235e2a84d4cf
+bf49cf59aba5018b988fd8ea3ddea430
+bf4a139d336553b84f70049609c17ae9
+bf4b8ccdc42d77b2c7007c5063f73aed
+bf4b94bf10627cafb580b083353b0e38
+bf4ce27c44d10412bacd7d62e7db5115
+bf4f810843106ed1bda53365f6e2ba21
+bf4fcfb6cfd9d9bf7c15cdf7f8d967cf
+bf5404909ffabda7527f1667e6f98bd4
+bf55903a6943b3140b330d975beab669
+bf574d2d97f49d7d5b6e7d92d2494d60
+bf59328e9df87531370c449e686eaa54
+bf59b080df02f491cbe7a5fc6ca6c909
+bf5ab540efa0c8a475f89d88e223725d
+bf5c6fc3a042423e98aac8b23edd5076
+bf5e46214d06ecf18148c85a27b6ff4e
+bf5e82ad937d584f7270c5288448ecc0
+bf5fb6cf2eb081f5f892839c96831695
+bf636589961001fd28238fd4ae8834b0
+bf63dd7b45eb3656279507e8be1d8b8e
+bf6cc1d6f64b295f609d0fc8f21dee95
+bf6e47b4799db25a3e0d266664483b87
+bf6e79fba544c05b2e82e938c1a2a8c2
+bf7083cdfd3034b5071b0fc89dca19f0
+bf730c052365810c174a7bc7a303389e
+bf750d52efb07c09febae3a3efe035eb
+bf75e7d8271e2c4e4ceada220f04b538
+bf76e072abd75ff51a1be60a04873898
+bf7712265e5cdd530f43fa99264b2e4e
+bf77b952b9348c04c9e0140069028c34
+bf783adccae305309ab049a527ffb55f
+bf7c0e289811c0570ec240fcb55b5e50
+bf7c57084f4707af316efb7bc89d6ad5
+bf7e9148cbd769638c754d02be4d3acd
+bf7ed0f58f62862bb37390ce428397aa
+bf7f41258956e7df12a2fa541696dc1e
+bf8040f6b358ca6d6133c520dc265983
+bf81d49d108d2c270f36056da5072814
+bf83d7792c97afeff2bfb0b623a5d352
+bf8479e487514ef6aa4038c2ea3703bc
+bf85c467e639e47c5b072745ae471a33
+bf86dc5faa6890c5f4fc3cc7f2f5b705
+bf88f02aad576298eef2f1f4ce4ce24b
+bf89015b02b88a0c9ed53b1739ad40c2
+bf8a32398eb49e159250692edba1a3a9
+bf8fbfd38bb6741845ea04fabeea3c1d
+bf90cdadf4ef764ccaf46eb84d68b497
+bf91a38b1ad86adce187aea2ed360867
+bf97d69f5d8942819c8b06081129c8c7
+bf9b63993d540aceadc73c19ac7af899
+bf9b7491c76d79c02dba8abb3a2dd3a0
+bf9daaeeae580a4ef69d0f2f1d0b5480
+bf9fc37e24058f239f58c0e36560e9b5
+bfa05f3208c6c527b0486276d928f56b
+bfa39a0f00bc3b0268c40b577486abe1
+bfa649b59e78a2b9c47749d0531d9321
+bfa67f692d6d97c4e05b0305c05b5d5e
+bfa7726ba63fbab0d7e4f7105313391e
+bfa8801d7002c2f9c3d8efe96f3b328d
+bfad2d4b754730ac5aff41b91f82974b
+bfad9dcd2f17df0485241c2011512830
+bfae5d332d17efd4ee5be4ceb550536b
+bfae94de111f72a39ca2171094352c2b
+bfaf5ad0f19554bd89fd010c0d8fc954
+bfb169ab03d5f2110bf44e7eefb0729b
+bfb448821e33d0e31e8575380c72c910
+bfb4f18a47da4ce73ea27fad9310119c
+bfb77174aad9476026f1706a8b62ab38
+bfb84f9f45df45a46dd2b5b85a4e7b7d
+bfb8763e2be116faeb79b6e9212677cc
+bfb9ce0540a6bff18d0774109b1e72ec
+bfbaa35e55684e41a9dd8c15f5a6ae2e
+bfbb09c292d383fa9d8511f439aa0079
+bfbcb64152fdb427d1a4dda7acd253e7
+bfbd94c8b03d654e88587586c676768f
+bfbf316480b30600c2ae2e9b9c0f7818
+bfbf8e349f25c771d3152230e09b9346
+bfc09567cbdb82900d45b230162d40f6
+bfc0f11d7f69e5d97ea5a16092d77238
+bfc3fa4fb5f2305ac68fb374df71f83c
+bfc81b189e3bba28810f6e3e77b8617a
+bfc81bbf1d6af5d0387d3fcec78f7be9
+bfc893b7e897dce45c4d321676c7584b
+bfcb6fa2ce3a6e858691b22e7bd40029
+bfcbcc1b2c1938f4ab5ddde9765ea389
+bfce317ac0581d2231858920212ce3bf
+bfd04bb5d380e2debdf25fe602f4e935
+bfd1ff4e0ca22743a54068e55e150e64
+bfd2131bce19fc2f925d111a007404ba
+bfd3a9e36b0b4fa3111e648a03efde22
+bfd6121e18ed4d159566275541133d34
+bfd95171ffa2fc8911f9ac43f18ae06a
+bfd9a44877a75f064a3212064421f752
+bfda1207f4578cb7223755992c5c8372
+bfdacb9bcb08638699bee8a6456e5f71
+bfdc8a7e4583e36b5477471d733e160a
+bfde67c959d53992d4cc6280d9bafa87
+bfe35fdf2025998048fb049766465a08
+bfe4f8221b113ff11e30ce729ca95c85
+bfe9c45223d9e7232596a6df8e422d08
+bfea4031ad8518dff91a39850f0e82fd
+bfebec0d43baae845677b8604763df14
+bfec1446af1e4814f245c55b31527082
+bfed9fc4ed37eae1b880e64e4ee0a758
+bfedc8a2b57e682d807222a622fcf437
+bfedec10da0807975893f485381fa13a
+bfeec72c93bf2626d86dcca4b3cdbf1d
+bff11f269ba4f1b49239962d2ee164c7
+bff1aef3d5bda9f9aae3cc69ee7cf08c
+bff1cf6bccaf9f47227760a591ed6a53
+bff27d072f73c16e58acd6fa2c2ea7d6
+bff2e1d16108df81b2162419c362ecf6
+bff4afe089ced9438f88c2a3ceb88b1b
+bff4b4a304e57eccafaeaf36706651fe
+bff60d5384ab581cec84a33df9bfd860
+bff62adcc58d0b45a59bf029a0b72e7d
+bff9c29776e39d0aeda3153691cdcf99
+bffca52580233539d93b6f897e871995
+bffd605d4646be289eb5f5471cb6dfb5
+c0008307ba69fde18fb5f5aba5fe8aee
+c003f9aaaa55a8315db0e86aad09423a
+c00644fde02c45288df875c279269879
+c006885811fca93c23507daed13915a7
+c006ca0b6564442a9b5251c4c44e1242
+c009b9d3b50701da811bf68a8cb976c2
+c00b637b823298deda963bc1cdad07f1
+c00c022ade7487dffd608347828f5260
+c00e6cbc4440278e95539d280b678419
+c01065ac406eae98a9446f88948fb39f
+c010df27efb7c993388b4e795fccdf4b
+c01566650e97e7e78cba94ee7eccd8f5
+c01618ac8290a2f41c5d7fe148db7be1
+c016ab934f68708c71c168ef155b1821
+c0174a7029f8cc629eb175d0ddfb655e
+c01bcf736ea0da3ae4a2667de8eb1c79
+c01e8051079c93dfd67bff0b86e240bf
+c01ebcad489e3ef62a4e2dc21237800b
+c0214488215b553d3c93cead9bcb10d9
+c0217763a958670d58f8d9df59067402
+c027bc14d7d893965e434ad3d8de5cab
+c02a8835fc8445e4926e88a07fee402a
+c02bbf957354752bf5b77c2358b7403c
+c0355bcb9b964b3019e49663c58611b8
+c039971450c1c996d8b45958367c489a
+c03a4b32462f82f98a42c03b9a31b7b2
+c03d1d0a8a726af56c9bc8d49d4cc7be
+c03d903db301efae1e09bce48a4c6aff
+c03e34c929d0aacc1afceeb908175923
+c0429dce4e7b2fdeccf41a0ab414713a
+c0446c46cd0ac3a4908b4590d563244f
+c044e07d9d1f62f6665c63220f41855d
+c04502652672d3ecc19acc2d9a1c3321
+c04676fc42710bf7df64d5780e5a3dca
+c048198a8966486be8720352fb7391fb
+c048210161f4b1379da86b30af27a3da
+c04921bbdf30537beb14ae4445a63dae
+c049226cd84953f79cfada1fe20f2c98
+c049aed19ab4e0b848b518bb7ba904f2
+c049f696da857a2871e574b23c206d41
+c04bdc9bacd47decdf02108727351e43
+c04db6690751560615f1362f1625f488
+c04ed1b8ca6a6aa0cdac1e184b660974
+c050df4472a32b17307a0883c517420a
+c051a563224a4547ec337a1c2e2946c0
+c053f9edd418ae62bcb4241d74bde9be
+c054e01fbbb87f72096120ea7cddcf50
+c0559e025d808d5e79e496af6222910e
+c0564c02bfb82f53bf5a00f0a8a831d5
+c0566f39d85cef0afc0b9eb836d4b016
+c056a844fee0a118c529a073a849f811
+c057dcb244768645f75df79520dbac9e
+c05a566d9a55881a7f5aba0b34972801
+c05ada9089c68cd72957560fcb28b8a4
+c05deded23eb7ee3bb33e45b43af83f0
+c05e83e96da46c11ccf6545c03c65857
+c0628c034864261daa74e996e6911f0c
+c062adf31809ad93d23b3fbbe708e3a0
+c0639906d99206bfd72a5b75534046fc
+c06567ee263eb08f7ab4d465dc2e80e5
+c069a2c8c07e5bd64632ac05f51cc837
+c069d85fe813f55867ab45cec393bc36
+c06e61a6a1d2bda60226e14453e32694
+c07065d72c6492ee55045e4566810658
+c07129b5c2b9597e1a4ccfdd4d354c1f
+c072ad06b92e57001fee8610a111d465
+c0740f4f92671c26eb2f30043e9875ad
+c0748908318df7c066de172f934cfb20
+c074969ee21802ac649a0901be836776
+c076df1d91da2ef27732639303c24366
+c0778b27dbb1731ea7e853a1ebcce742
+c078d765b49d489731556a6d9c2c2cd1
+c07ad06666871da3eee7ccc8b55a55fb
+c08022bd533b48f4e348251629f04c28
+c08547d425be4f6e8eeb2109ac8908ca
+c087038de4a31edaf33be8cd8d6713cd
+c089abadddbea3075ae48d2496cffa95
+c08a727855754e46a14c5e70a7e7707d
+c08b94e460ac8d6fc2d64f9c3b772295
+c08c80cfbe3c53bc97686c9257dcabe7
+c08c9ce623c9fc7992a21cf90f5ed0c1
+c08e2c09e946478430a820e8039886ef
+c08efd8c6f4d0e49dea7d46bad4c63ae
+c08f34ecbea1887953ad8d1dd6152224
+c091423b7108f7b7af918b4e7d7af6f3
+c09257b135ce7226aa2b3ee82f252fd8
+c092ddf9182ae6fe5f0339219bd265f9
+c0941db736628f2ec3f62b846dc894c8
+c095949285d9bb5722fc04ee0689c45e
+c095b6fd8984f96a7d3d8151f7797a3a
+c097d892d81f642869c5d4d7ef742123
+c09940f4bad03366b1bcf78c70c59b34
+c0996ab78eac0cd40e335b1bfc232ff9
+c0998607f7b96a66c66f4a589870e4e7
+c09c2a3614814521dda966258fdcc5f5
+c09c41bac9f113389188bb917b7ae44f
+c09c7f8048048d28497004f974ab6fa8
+c09dac950fcd4cba8d030f5bbf0c4aa8
+c09daf097a92e08dca449447330f8640
+c09fb046702fa1a796c9a1582a5daba4
+c0a0377592e6100a3bd1cc2abd7031d2
+c0a16d1a772bfea947b5abbe67af1da8
+c0a249ae1a0660457d07fb99796420cf
+c0a3b1eec6fe9ed3be3c791a284b8951
+c0a49b3ecc9a90850b21186422fd871f
+c0a50b4c8616514ff9db36511516a1ed
+c0a51d7e51cb36e030e50ac1495ec9e5
+c0a566f48f511f5b2a9c82d7fab656bb
+c0a6fa86a5b37007c3095635a9ad4cb0
+c0a9ca8cd78f4133e98e9ff9c7e968a5
+c0aa8857a1e994b795dffcc3ce48770c
+c0accc875faf42a43a8a879020699b18
+c0afa2736713bd60f84387fc2b594212
+c0afe6b536fa6700902c3c6b1e7756c7
+c0b044255777acf9bda5aa02b2b98b5c
+c0b362e9571ecc43ee4d5228d3641de7
+c0b4cd2c6e64e91237210f1a6a7284b0
+c0b630a1795eee7296168956dd60a59b
+c0b638adf6fee927d2a7413dd3b2e1cd
+c0b6b6c7381cc64e3c30cae481490d8a
+c0b720808c3b7b7f33b4cf82e3bc1e76
+c0b789881bb1a28c45a1148188bbb8e5
+c0b79647e2490225414579f38e109fb9
+c0b87163e3faf1ddf623ec258261dd1d
+c0b8e899ae017106b3a1eb347b6a5d0f
+c0b9413754c2e004038367f05c0c6264
+c0b9a3c49c98c76f83a5c3554458b2e9
+c0ba5d5a6010db5e76cde82e96c8bb10
+c0bb954c678f64bea2e6cb12506bfe0c
+c0bc9f5044c19090e7251d262f25d49a
+c0bf4d2eea6a471ab9fa7ff8e318a854
+c0c4ce6586b1b8a695601c3f3c906c9f
+c0c6018aeac5d6d280f35dc72b3a2be7
+c0c7e59b0e8b45de7aa5e074910890f5
+c0c9b2a00cabe2344537cf62f6054edd
+c0cdf4eb3247445da434120a630e1c0c
+c0ce37dbea04aa8612623cf4dd1af4e6
+c0cf1f91797f5702030d520d17249b7d
+c0cf3c9adae08bcbfc097f0f4acc4291
+c0cfa28d58e70a5e258bb68f526e9e8d
+c0d0e54978e27a44fb420e83307cd921
+c0d876f3f9895d1440d03491785fd4e9
+c0dad5ef711a42ba6e845d7756f35a7a
+c0daf22052e1791076b80a70f197c981
+c0dc1314bd7754aa795f6a4a7510558f
+c0dcdb37fcf7a4bb8b655eee4eb1f216
+c0e36c1ec0513017fa74d85e6790c77c
+c0e381d5b3bb56f23945cfb018182e20
+c0e5cbd54ec9ef1c0470c457d4fd2221
+c0e7065961bb9888cc8ec7f82e59bb5a
+c0e7089d941e9b6164cff1480852fcc2
+c0e9cd3d6fd6b85584b8f1df8e48ab0a
+c0e9e90c53a524c3997c3cf976d04cec
+c0ecc247428e75480a6ddcdde83c3557
+c0ed71a7eb6defa7b7dd97600ab41c1a
+c0eddde19f347119f73c11d37d30e568
+c0eeee7e5aa7fe3fc5822c8f10ac6e04
+c0ef9d7dfed0239fed2edacfe1399c40
+c0f0918f7c920074ccdba7bc9285fef5
+c0f1f89292a3cdc341e45fe74f8b7306
+c0f3cffd3c09039978e5f35dec68745e
+c0f45c98f5199162f7c17a986ccd6971
+c0f50abadaf3c34b5fee45ec878edf04
+c0f8034bf44972cf649b13332c6a3587
+c0f8342cd38765d20c462abfbd809d39
+c0f9354fabe0f78eb2dd5b39572ad4de
+c0fa51e07547556a9bbca0af37e1b680
+c0fb022d954f7410ee93f56493d80635
+c0fb096baaf2f825c94b569a27b3fe19
+c0fc4d10a8d3162088d5ee794ef11601
+c0fdaaebd945c1eadad43df7d05d8f96
+c0ff3c587920fa9d75ad8983705b7701
+c0ffea3a4150d35044a899aea160bf3a
+c100ac72c110cf0d003783d750d216fc
+c100e2d273f854013812e5ce1c9c6740
+c105ea0db0df24bc6720eafc89535474
+c1066ffbc53e03550a26d6a37ca2ec17
+c1077a688e25b2b9a3ea8ff09945eab1
+c107bae2b141263f902c688026bd2b1d
+c108d809e8b27d3513f791bb92f2f4a5
+c1091e2ecc35472c66156935dd89989f
+c10a5311bf0fa8ea7f62b2ac271ee36c
+c10d56c5f56cfeeb5b7e9d824d90903d
+c10db45e4f7517a5bf8e824f4c314762
+c10ec2d59f876d3d1219f5079267b8f4
+c10f7cb4e1101bd34ada869e530714a1
+c10fabc9f54450336b2cebb29fc9ea05
+c110ca7cff44b0805c222eea5f639548
+c11137bf39c097757f28415c920c1b1b
+c111e16c61532ff76c48da6d02e0d831
+c113697b87df83662249646fffd7643f
+c114b4a96ceed2c2a840cfa402f0aefb
+c1169e32c51eed0fe10d0f37e3b8ecf4
+c116cf89d142493a9b687339d260b7ab
+c119a6f7872019d11011edcedd154c41
+c11aded8b6f784f801e4d784a8345cb2
+c11beef2daece4fb84d5177e3092e309
+c11c8e9b8fb6650f163d0dd43d5ccebd
+c11decd39b30a7ff2c9c1f7a352dc6e6
+c1229e9197d1ecd57b3c1f4d295fa92b
+c123c5bc4281a277e85f64831b51f710
+c123ee95e5584c0b0f2fd44928b35302
+c127e25ccbb56037898d9b1bb4af92df
+c1292c1ce938cfe13d6f7cd909682e5f
+c12aa0f7ca1a45d7351651fab9986222
+c12b395a8c3d2a4846728d0b2dd82e0b
+c12b9e70c0a2cbec5b93c8cdc080bcc2
+c12ba02973b898a30e78e5399adac5c4
+c12d0af94ffff16e65769fc9483025af
+c12da489a82b3668dbc9770973ba74e1
+c131bf851bc23302b26dae433bcb559d
+c13324b492df1bd94de8423e59811a09
+c1341f409958bf7a61d9c45f671e9948
+c1382daacf57a3be9e21eb4fcabe6c34
+c1382fad69ba7fcc34bf4ce3ce3d5f44
+c138ed68e806d78eb3191e8096598ba0
+c13c1185a16a43c48750e2d9171c2eee
+c13c1e676555e54d826900f67364a2f5
+c13ce887dbc851ce67020a69d4de82d6
+c140ce0afabfe385581852e1b17be161
+c14135dd1b54873c782a0adc54c7c6b3
+c14208aa93208fd3f305a9494f05ad40
+c1430ce579fbf59278158a7f1feda13f
+c146257f32ad527a0d982ccd65a3e6a1
+c14920ce2b6d00aca6c56b45f469c5f4
+c14a15ce7d5f2f2b951bee9695384481
+c14ad038c90397f7acd764b568018132
+c14ae9f5b8ef28ceb2521ff33f77ed5a
+c14b946c8a54fa1ca456e29675dd0cba
+c14d12b52c8af795f0417cd0dad686a2
+c14e81751ba1273b3c0368207c081d02
+c150999703c98586f7afdc45a5bb9f15
+c1517a0cc79f5307a4569cc8c5b872db
+c1518f7a0b95956f72995b4b748a86f3
+c151f4582cc9eea45f8349ca3f9b9dcf
+c1532ee68b229a5dde1b235c4a0a52b0
+c153864c98b95caa0147d97d1dc1a08e
+c153fd215f4ab6f83bb04ff260bab72c
+c1545f39142cd657988e318c262564b8
+c156be622f22ab12ed18debd5a958eb4
+c1571544816c43aa65cf91e67a4bc664
+c15768e4ee823987589974029531adaf
+c157bce0b081077d29382b8c63a95c81
+c15987d0de83292d14d9a1f33448e9a6
+c15a3355b39bd27e0dcce9498e27a8c4
+c15b1386801e7c77546f4544c8b577e2
+c15b4f1937f7c14a1b3c136a463b5aed
+c1617fe9bc202c5e0d7ca3498d61f7c6
+c1635dc502c644a33cad5281fbd8dd80
+c16361b7cfd71aa9603bc53a3ab3b0ab
+c1638d98852c9b84ebc32e4935fc2a0f
+c164ca1a77a9864575579fc9f00ac81f
+c1664ec573c995c2b0c90affd47ea1a2
+c166c5733ae751198012732de48cb3e8
+c16ca99639dcd2a16da7a525697c1748
+c16f5cc886f2c81a267df1caead91cb9
+c170211abc89b51ee24487e58d228f31
+c1711f12782a62c544af0a6fe37e27ae
+c1717ccb8b6140ea3da586ccd8bd4f6c
+c1733d993176bcc9678a278cd175281f
+c175a9777e2bca048a453ac3c92230b1
+c175afa1ca0c04e578157a21eb546d35
+c179babd30637d465b5fc26216958a49
+c17c1c3b29c1e3c1c032a6a83cb8b90e
+c17e5837941cdd1254fcacdf40fd90a1
+c17f2c7b637e87e40796193349f341e8
+c17f3bfad18b0d818e283bcf0461f746
+c17fa9eefd6dc8b809bb41d31d24899f
+c18008fe948d3a3c7732a79c489ebfc6
+c183b7a982c69a6a167dcdf70a420e65
+c183f0b7fa62ba82806ebd815e70ad3e
+c18506a35f2faebeed0e47045340f1c2
+c185c7b7c7059021b5d5a99ffc4d7c6d
+c1870365534632dffb1b39b5bdf4ba16
+c1891aa7f6c55c8924cb260e434314dd
+c18a2dbdac98b4377105377c38db75ae
+c18bae9ae7adc0866ab6d1e04c4bd597
+c18e24281e91611fed858301b4f6c5d4
+c19235506c4c0ae311196d36fcdb4274
+c1924192571495ddd15baa6f1e0997e6
+c196187e1f4fb907b0d11373fa837e66
+c196f7e0d6510299f20bac67d636df49
+c197845f0983a57f053e82adefa92c3f
+c197cdda7b70347466dd6851dabe94e5
+c197f171438a445b681264c95794907d
+c1982508ce868c20f0de0418f1a43433
+c198323bbb7de852b3129eb5b695a709
+c199692481f7e5fa335c82009d0c4996
+c19aa0e9743289fa1a85dd616bbf4c93
+c19ae9e2d51ece5bce39622052e906f3
+c19b53750ba0ac648586bc392d57a208
+c19c1724acd7d4fc795b5419db4bc332
+c19dd8d2fc027db05bd26d29bb2b2616
+c19deff62aa073fd829f74ec8fb4e09c
+c1a10a2a11a81e5ce88910e6718990a0
+c1a12dc01c462fb5dab64000037846ae
+c1a44dd6741441105765b774baa14a7e
+c1a69f99b44ac974b5981ffe10f8ef24
+c1a6a6064ccd27e629b2ff64ee63acb7
+c1a7b954ea20d05743edb979508e3e4c
+c1a8a4185769980526a4168b11762e96
+c1aac2fc27c2803ae5096fb06b1e3fc2
+c1af185391f88a837df1d8b4b3dcfb84
+c1b11b04e467c33097a75409d1546195
+c1b2663d6ae024332a22f241e636eef2
+c1b26cfcf760e75f17dad348e54c90b6
+c1b3bf5e7a350dc8f2992545ee5b262e
+c1b6fd8f8feb6261de93a914f232cf13
+c1b7bde2b5732146e878f62a28356a99
+c1ba1f06e7df433014acea446f37e977
+c1ba6069595d0ba157549c261e79fada
+c1bad74ab7fc866932bf91c4aa82f1c6
+c1c54329da37860fac894f81b95d5e3a
+c1c655c5967870fcc08781464e18c48b
+c1c758e15fe3fc0330cf8102dab13897
+c1c8bb38575ae2cace1bacd285e106b1
+c1c9eab6b10611651e99fe63da92e1d3
+c1cc5c9ebfcd48726847640faaed2707
+c1cd800a506a48509920fddda38d07b2
+c1d1af858131bba35327efba94ebb20b
+c1d1c5a65036e6f22e00d1ac4dfea4c1
+c1d2bd018fa1142b802866d39e79a8ba
+c1d35ff850735e390e6f8c5580b8aa5e
+c1d36fc1ebc0464ed8ab3184af0f226b
+c1d3ca42f345cdbf90d8bc007acc8eb5
+c1d54d847dc2e90b03cc0f6bf2e5c36f
+c1d6aadd7f90bc8f4d28528c0e38db29
+c1d72467d2bdd83dc35fee40788d04e6
+c1d7708b609e17e52306a1f20848e9ab
+c1d7ad0f121a36450c2392e9603990c0
+c1d802b2c48614edcdb64214aff9b840
+c1d993bb23b87f51350d99966d28a3d3
+c1d9e05534b0caec72f6462fcfc58f06
+c1dc0414ce3d4b5d19e88f4e12c66865
+c1de72b1417daa216b559a96df1b4faf
+c1dea1294e212508df22edc884edffa9
+c1e0a6a97b3288bac6cea66055b7abb1
+c1e16d8e55a68c8b518a3d03d2ccdd0c
+c1e2b443734d99ec7eb7178847395663
+c1e4368dbcdba6db5cf2952b4cecaaf9
+c1e45bf7680724061eeb5de90e496ef4
+c1e4c72f04221acb6b14030ef8efca79
+c1e4e944f7110da07da0c1a820fbe3da
+c1e5d705a9a62257b43e842635979335
+c1e76ea8839b654fbd04621cb7cf355c
+c1e8749bc810648e8295d6fc68c888d3
+c1e8b8bdede711b8ac62cd5368486d47
+c1eae51619fb1eee38417e9845c4977a
+c1ecc41480f21183ee29ad2d401bccae
+c1ee4d310780d3c9f36b8a54df4175d0
+c1f2156a717ada3d4bf786aba0f1ae96
+c1f36e57f5a282814b36b7469ec66736
+c1f6f033fae021fb5595619ad3f2d3ec
+c1f910e701fb096ce31d701888e01c9e
+c1fa098c5de27b840b850e107f5a6590
+c1fa525e4837723bd18594c41cf27ba6
+c1fab2eae4338738a947c23f2375411f
+c1fbe9d5a70c68de45ed11d67f7ae92c
+c1fde5bff477c7667250e8aa1e938bf1
+c1fe05ad6cfbba6dd8ae822b5a8e2a68
+c1fed076d732cbde354a7ef596f1194e
+c1ff557c21bf14efb3fd2d9bf727329c
+c1ffeeb374312f4dcdc3ac211d017805
+c201021b9ba276fdf4a5f4ab4db50720
+c203a7b62434370b076eb552aa3ece35
+c203e177185dd1990a5d27a6360a0fde
+c2045280c82a5953c70bbf73a9d73132
+c206c3c6a1c982801d65ffc6f977aaec
+c20789a206af5f045647b2175ac72ccc
+c208199fef03e5d6d9127296094252dc
+c2089d270571482e7901afdf569f070a
+c20b070e0ed2149b0430adf6db0055bc
+c20b90b283a9917d0a192d00f47c32d9
+c20be9c560369098df30a5b5af196306
+c20f58e2e2e9b45d297c61315a9bc914
+c20fedc45c15b0b06593e0c3805f8c80
+c2114e6ca8080743ca7a6ae466cd77fc
+c213bf87398b1542499482fc56f0b835
+c21a0a75c654cd6b2d2002d5e4d2538c
+c21d830da08ff1ddf98dece11c535b91
+c21ee42a4157974ae225a36d4bdfa701
+c220a5591fc61cb11feaf0bea96189c6
+c220c8a990d59180348eed7b10f1edc3
+c2220440cf82b210c161b24602185b51
+c222b9bdd7e928babfc041e1a9fd54dd
+c222cde534be59cc54abc57b10378907
+c2234e2a9186aa47ee220ec3616649f3
+c2267ee56197db3b74f2bb4df652db9d
+c22737b4f8ca1bbe7b0d3c6b9ac2e797
+c228b2b6fda296a38eb90b2126d25d15
+c228d0f295ae64c7399a42c6337cbdb3
+c22bdda431e4a761419f46e34018b392
+c22c40f3b80b87b0bf360e3331bd6514
+c22ca079ab884f4e3eff4309c1174ba1
+c22d3da08a632bef198df6fa216ff222
+c22fedeb4102828ea83ba7eacfcca3c9
+c2325bcbca895f1cfe75cb928ac1f637
+c23279dc7e02c5f81073173bda444b17
+c233fc8edbff61860f35c7bd456bb37d
+c23530c136929b12eaf175576cda9639
+c235acdab592e06a6206ca5c4c713d61
+c2394e66c7c540d7ca2f5463b1fa496f
+c23cf0bc312d621071fe365d3a072c80
+c23ddf1f85db3d6b27948f092526ffa6
+c23f341d53c606fe948056c99aef061d
+c23f5e292cc29251fbfb8d4921d48c76
+c2421b7901d2c7c946b9e1209eed44c6
+c24341ca76c23d072a9f4616ec91f0e9
+c244ff7816101126e10c9567aeded9ae
+c246bc48223311d06aa33a23f9576112
+c2493844148e20e12b1273fe8b11158d
+c2495604376bf4b0d4c0096dff641f54
+c24a792aa38293964e085c66381084e0
+c24abc9659d1c738c84fea437e4c6e0b
+c24ade6ec39aba913215590dd401df23
+c24ceb686a3048333a2cd1d9bc11e9bd
+c2520b4d870473dcf115f3f1debb8622
+c25212d2d290576c0c828f325f21151e
+c258e9d73d5f65ae106a91f0aba9f31d
+c259b8fd04daff7b1d4d328305870332
+c25b0a784db92363a4eb2a833a0ce259
+c25bf542e639dd5621af19000a4697d9
+c25c9d1d1e50d690d3b2e7e7136f13c9
+c25ce89fe18ec68ef6fbd4b8d0d716fe
+c26218615f84cc95f90c96377b62b111
+c264d79ab4a8a5285a270a9af437587d
+c265fd44fa7510fdd68071f91921c4b1
+c2661e983ba907b40e7ecb57f3a8a35a
+c266df1660c2a3a7c336ce4d82861ef2
+c2675add88d023c092187fa6eca63445
+c268b40d7c2fd8cc5381a0711f6b0692
+c269312ca75fb30ae083a1207ebe9ced
+c26d69a07e301962ab561736915d56c8
+c26e45979786681fd86dbeb8d9495516
+c26ea6fe6912e2fa7625ae97a41e1689
+c26f007f143b12f4652e71c22509e064
+c2703bebb985b8bf9a61b4f66ed0b7f2
+c27138dc68914ad095644a503a02d93c
+c2725db203625832e8ef62e7ef9eb6a5
+c2726a0377016bd92bc9bebc2993644e
+c272e74a374d24e77a1fc8477e085fe7
+c2730ddd6f1c0bddda0932bda4d47812
+c27442e7a72c1d94dcc9ea509972e15f
+c27491d36a0360d7a34986e582f71311
+c2760b88f6cb4f05579ee36bc99ff9f7
+c2767560d329c1aac91243afa57d0ff7
+c277cc896e428f65bc43269fefaa43e0
+c278278cf777a1b6c9167546c0ea19c2
+c27aa02f16e3a50963a291eb66894aa5
+c27b7c9a813cfa190fb3578caaabd381
+c27bc0e6a03c3b1918020d41f5933591
+c27dcf0fb3b60e3c23389e231a490e60
+c2805e367e5872cb915e60c5ad07ea88
+c2812b2b7d232c1ba4d8a5e245de2407
+c2820ba4993dbe47a0541706fb900b62
+c28506372af6a2364ec4f26db0359bcf
+c28728ffc5d176400f57423370902b3c
+c288e39d9344691d96127ba4bc31f720
+c28964d76d74738de8f0a3b3e0c5a783
+c289b140a0a9992e6efe94543513af7d
+c28bb64316eae681ed19c65b1b2e5c85
+c28be92fa250064579da779107a5c997
+c28c43258ba7f4cdb412a83dbe22b544
+c290896a9b6341cea35b0ef6d29adaa2
+c292b465d5ce946f2fd83f999a355f3e
+c293e74c6bfaf1248526be6e16bcd846
+c294497aa080909f504c7d7b543336ba
+c29668b210fbcf31ee5fa9346af6be65
+c299ffe4436663034bd9f7f303f62b7b
+c29bbf3c31973b947decc26d8558a837
+c29cc9154292abb5f803939aae7a4ccb
+c29cd9b73464a5f406c5092315ab85d2
+c29ce00fca5e03be4dd7bf2307f3f56f
+c29cf4c6bf5d3679a7bb6dbe14b74aa5
+c2a0104e63b0576b885a67c71ebde29b
+c2a30d74b4b974f08f29d6e16b292b5f
+c2a96581cb8ef2fbb8fdc32a79a588a4
+c2aaf8cce2ff7e0d6b40e046d4785e6f
+c2ab2c6d48ef5b425cc3d385566e9e06
+c2ac0eb3bcee592195fd82354990ea7c
+c2af3620dee4568e1338c7c2d89ab5bb
+c2aff9dfe1fe6af0e5ce838c916f6ca8
+c2b007e82160542a7cb766ac50326c2e
+c2b1005454c72142fa5b832020e121ea
+c2b249f99a92bea61d210c252e597b54
+c2b639152295c208c0a1fd945862330d
+c2b69fba4b898ddd93b81bc1fe4d5170
+c2b735d1af3685059bfd7689f86dc2cb
+c2b7934fa7e526b68bfb1cd9be9e5c4f
+c2b9131490faf2c9bf8680c768d60be8
+c2b94efb28dceace3974afe12d9a7437
+c2bae33db33ab232d526e71fcf074ca5
+c2bb29565f00807271630c3650b75152
+c2bb5dcf0036e7184cf48d611e7fe042
+c2bbc38a477d06bccb1e16de6e732fab
+c2bfd750359f3dba3cc209abb81495ae
+c2c14751575821ac28eb2135d848601e
+c2c3198268bca6304387b3dcdc0ed9db
+c2c51f0352efffce9c2961cbc5797b18
+c2c520818bbd88ee0a6a7199b1733934
+c2c546a4b55d1bb6e68aacb0b809945e
+c2c64665a313d0a75d20b11224c1f365
+c2c65339a28a09b7a31059fe70ef1833
+c2c6d09d28aabfe69ab037e0a8264148
+c2c8dcdfd86a9804fd6d5d7cc388f11e
+c2c9dab22c7763064264ebe7e35b04b9
+c2cb4e7086569fd88271576838b0ed61
+c2cca88aa9c5547005cc77c0a8598bd0
+c2ce03c156ff68513893a46912d865a9
+c2ce4d20152d9db1df23b41998212f55
+c2d371d1f2d7de2dda2aeb110f3cbcc3
+c2d37967bec7dfeb1dbf4aef84b72227
+c2d7a098ffd987bc3d0901a1d18d5a7a
+c2d8e07b5a5246c65373a6526e3605ff
+c2db13d0dadfacfbe911e0c9dc3aee8d
+c2dd05f4bc8befacf3c2f117deedec51
+c2e057462f4fec0afbf750715cd68bf1
+c2e31bc969ef92de84bc3b772e7fc96b
+c2e487d03af19664c5aec8f619e69c3b
+c2e75df944ef171774808c9bf3a68a75
+c2e76e47f9a648e69426a61a47b03793
+c2eae1677ad5748dea2a5921b9e12639
+c2ec5c14897f435b6418d4638aa978a8
+c2ed396f09ac4ba412139e6d9ddaea89
+c2ed45fc1704e7a5e1d8b19334133306
+c2ed49fd4c15d33849485a9b4054d7f8
+c2edacd62124f82320175b0003fee830
+c2efbba6986c3698f730e1980c1d88fd
+c2f0c87efe1c7f4c1ce642f36c810d68
+c2f1c58fdf42521b764e12da79547b65
+c2f23803dff72555bf1ca01923517685
+c2f36966764eb99f9edb90b81b4465ae
+c2f5d0b96f8da04c256d5841e326e056
+c2f6c6b4aa1152a5fbd0107ce9e7572b
+c2f73c332698ef87c8ee398f5860746e
+c2f81ddfdfa2b32e60499cee2adea05a
+c2f88ca070b6e22fe7e87c39b0b01494
+c2fa2cb00ba0612c1c6d88649568a810
+c2fa553841690d8991bda5f34f9f0dce
+c2fbf4fd75dbc170de09a47fe3f07682
+c2fc61e30db338089e9f7759efd6d997
+c2fdd3da3760429edad9493948504773
+c2fde8579fe12b1f7c5f45fc9e1a1311
+c2ff56c116d9bec3c7f8afcc7cbff013
+c2ff82b4cc17c014c4be2cf2598a5a83
+c300fedefab1cf0b5829a5d4495459cd
+c302993fa97a4a73e4af7d2d98233787
+c3034df7762d6da812b215439c99baf1
+c303abafe6404d30e37b7a9f4be82831
+c30403e478c65de48067d07a4862fa50
+c3048a63e25ca3973103a19ae7fe73cb
+c306590d9151852e2194baf95e77f502
+c3066997e078296a50f39e5b4480927a
+c3088df5b0329802554b01b1f3afdaa7
+c30af07c53ebeb5cee10d3686d19afbd
+c30b62b54ebba29c4a73280dea700fc4
+c30d7aec37302cd7447005bc48170668
+c30da4a6fa968b5a4c9b101f2474f705
+c30ecf6950a0087dd7acf7400186af65
+c30f0b1f6beecc3647f7754fd4bc68f8
+c30f2dd44c23502cf3d5d1b3e0f05ac2
+c30f7119992d04e7952d3f0068ce1bb6
+c310ca61b5b3a13770746e0e305ffcb5
+c31209044613a8b9a77e456825cd01fe
+c312b248949bb02dcdcdde2c538db4ba
+c31324846d27346c8d9d5eb54373141d
+c3165c25389a00286d4a16a46221b086
+c31696f5c54f9953738e8ba5c21c3840
+c318111f0e8b3a22e39f7e48d34fe783
+c31932bc11f0b29056eaa6e108440f1d
+c31ab7590b7a627b74e3c20f718f912e
+c31af0f538b12cba4dec6a51b85415fd
+c31bf090dc65b81c5e0a13c28b7d6a9f
+c31c092d0ab0c98e985913f36d651c71
+c31c695963f8854327ac30f6201ecbe6
+c31df035c599d41153977051f4ba20a5
+c320085a2488c47c27a3e487ef928d37
+c321341a0ed065d09d3f71bbffbf6efc
+c3245a801e35b35d9880cf424c6d4c1d
+c3261464850cd26d59212be787794d66
+c32aaa08b87ef90823e6cf7f761f1f1b
+c32ad66be4f1bf38fcc8aed5a5465bfb
+c32c62d5ac93de1d9e3ac82596913976
+c32d56f627a76fb2c55c4d4c8f153f34
+c32dadb6c9da1935fb7840ed23c9bf95
+c32fa227b25247ac2230376deba4726a
+c336e9f9d9f7212efeda6071622b2033
+c336ecfa407d79f8073dea458383b5e7
+c33875e07eeec08c263111245b00022e
+c339f857aa0e6f6ea6a814a07d5dc7c8
+c33b379fd2b4765434794613d117031a
+c33cd1e20ee682cfce99a5c874ede7c9
+c33e8d22fc85fcacb80e6f9bf611a982
+c33ebc107477a6374adf89c5c1552693
+c34170bcabf461e7a44784c8eb48c710
+c341771e5b1a1713074767121a4ff917
+c3419e4fbdda9f32b5a9a6c0e734ac77
+c34212c1411652919a0e7b8309155f00
+c3424dbcfa00ee6ab11f75a14fd21aff
+c34319a240701bdf58069119eccbe147
+c3451cfcbfc628aadee98193e43cbcd6
+c3452bf0e93490cb4957a7740a27ac65
+c345ffd6873948d92c1c85cbf4a2415d
+c34745c4102a713d7c7a9ea2f7ebb1fd
+c348b848a5ffa3e686b0f7df6df1f55c
+c34b026fc2ab73e6160a0dce8696712c
+c34b838b7f46b5af3b0a9e1f942b4e20
+c34cc04d088d32608db06c9adcca36c6
+c34d4421208a873ea79c5e98b52e3f5e
+c34ded23f547a70f7b93e91ae9c55e4e
+c34e320a7f20bfbda77c1fb4b1fd5e64
+c34e3b37928dd9aa6983417b49c87621
+c34f8c1c539302fe27b41a1c9f0c0a77
+c35118efad16ef224d9ccf25dbea2203
+c35209acfb3697a103b11221e338a88e
+c352cd6d889f366cb9f485c73e6f1528
+c35550cb1125c401dfb3102991221507
+c355afef105d21178db3a66f35163fd8
+c359755e89002d8bb3f14da9a8d8639d
+c35ab5ae0a6f9d64176b5b97ec2d54a8
+c35e69238ff278f304521307fc140d94
+c361b1c6600a744fe66f12875567072f
+c362a5f720be9a5eff0dc6783a41a81f
+c362ef7a2b2f4d9206332e481c67a5d5
+c365b0dd2879e5b9d522244ff93a32df
+c365e1fd88f18a8ccc660e43de55ae81
+c366c8f25d465ac0013595cdc2dda57c
+c3676d7e401e59f1c51adbaf6729672f
+c36ae620143adce2e1fd75c816634f64
+c36beff7bfb9eb53d5146abf5a43f3bc
+c36cf22b9d852d56b2eb2f5ec226e132
+c36d42872767d5e47152d5435f5b56c4
+c36fa6fdf4fd16d4e3edd97faef8a737
+c3719c178231464eb23d539e84153c1a
+c372398ba1f86a8112d3f3162804bb54
+c372f1e1872f9aba48b7e485316807ad
+c3791d291d8b1f480f34dffb383503bb
+c379bb4826135bb9cacb45157c510c8b
+c37a30a5e07d62afcb8b142de43b9f80
+c37a49ae06cb6d9d9648b35632518215
+c37af4943cdad4ec9c18e307e22c5158
+c37c3a1dd81faf0db76049e54c0f11ca
+c37d1d27cb0a043ace66d964a1f96032
+c37efdaa87e8d17d50c8bfd956d6ebd5
+c380ff3ebb4d8eec5a5289af3c7a8a6f
+c38159616f9f0002bc598001ce291af4
+c3849d8078fd4ea89d99baac28a8d9c5
+c38798aa96489f21c4f72cb0526ae018
+c3896596679e15e22d7c6f63e19538a9
+c38bca461fecc74d3773b4dd7bc0d57a
+c38d6cd3a5a754e359f5955dc467fc64
+c38da9350ecc780cdac09ed9d673da67
+c38e6452e05b4502036a0d2d7a6cd2de
+c391162f1062b1884bda41814bc6883c
+c391e22b6d09f4f52cfd8e9ff1192ad7
+c3922f0bd24611ec5c9f4861b1c89436
+c3948f8251c4fa9c4ddf65ea2dc2e252
+c39540e4f033c49e1093e89766270602
+c395a1540945bd4861b7a1a85d0fa6d0
+c397503888b098dfd65558dcabbe8d49
+c39945d6e5685482219261adcd297030
+c39991060fc69964338ccbd445e7a167
+c39a4e717f8c990b35709d5a393d378e
+c39aac161351c3221f00eda9205f6608
+c39bbbd8de996eefe8478fb287645487
+c39dcca688a1b04556fa8e9205bb5512
+c39deb75a287d07e6be6e666f87735c4
+c39e3b3762efb4a7d2c80fb674d0bf77
+c39eddb90dbe2d3115da7bcc01262b05
+c39eefe8b60e9e517901f99e87855216
+c39f911754be809ba20f47f6f9bd93b3
+c3a0a78457d7a0bb62806cbe84fbfd6e
+c3a3e062001ec4fd9a42f35feb37df54
+c3a4cec00324f18bc9f96c7d31825cf9
+c3a53a1ee0cca1c2eee628d99e5daf2b
+c3a558be6446e7fbab5699ff693b01c3
+c3a6fde943da14ea6f4933e6eb073b52
+c3a8f63c78783f3aa8b1320a72b36775
+c3aacf35c36797afc90a490da26b6acc
+c3ad0ccda4f1b7712bed8f8343a72d9d
+c3aee96874ff1c81955cd1df8bc38943
+c3b018bf85e7a771bb8f1abcb7f88571
+c3b137f11dca18a44afb514833f0c1b5
+c3b1d896ddff84dd075f6a9aefcdbb67
+c3b35010820bce8764bec569968c1fb4
+c3b4dca945cb024c9983cc71fab87a47
+c3b8427dd9debf27aa28d934cd7043d7
+c3bc189d0d3f41bcd20964409491e591
+c3be642d7059ae6a597f4a5fa21a8389
+c3be6640a721e8da50146623ecaef8f7
+c3beb4118d49ff3c77c73212a157e42b
+c3c0a970fcf3fb4f8bd7f3b707559ab2
+c3c219de129a75a04ac04f298ef257ca
+c3c2a1d7c69aaad2c57b9aa31ff3d85b
+c3c46e75dc0a979fb547ad4672c79ff2
+c3c52d8fd6e96fd5b07ca91ea0da9b81
+c3c715596094478f13ea5fcbdd5eff87
+c3c7b2934adc9caa3ea006923f599dcb
+c3c8792b0b169bd990a3ce8a41dbddd1
+c3ca250a07cede92b392d6444ae76861
+c3ca7c2e7c5e7193824ffa396be2e88d
+c3cb3dc113bc7501098877873684603b
+c3cc24b00ffc603b7c9dc221b096c161
+c3ccf8dd37918d824c00e69dc682af4b
+c3cd1c95d69859ddb4da04b14ce770f0
+c3d038a3b1ae5e02365922a81a585e39
+c3d25704beec98d035c25a6e81fd5393
+c3d2617e1adfcf772a0cd43a86e9df9e
+c3d2a727ca53fb4f81a5291ac6fadf5f
+c3d417e254a06460c4e71e2233a8abfd
+c3d57c30038a88251948419eff73f642
+c3d7bbd2b54c47789bf465106efe880c
+c3d8342f94aa8ef13dab9bdd51081e09
+c3d8aaefc21f100e7bd64ed9d95bf3fc
+c3deec8bda0127628d802567ef90e652
+c3df3103a79a516f9426091efc655b17
+c3df40f01a0ef3847a0ea4cb699b4a26
+c3df573610155449e421394cd48dcc90
+c3e1495c03ce29b9bfa6ddd99e91215f
+c3e3c6d98fc7f732fa02f95e6fd28670
+c3e4ae5e0c0a766702cf1e5ffa58cc82
+c3e5b88541315b036f8fff5385fe30be
+c3e74982eebb5c22fd3e5da5be899ff6
+c3e87a45da4f4804b9cdbedfb659f4b5
+c3eb6b17458b82802d6c2c1dfcbfeae5
+c3ed54b69e85e17aac7e5d8a5debc7a6
+c3ee0a5724b62485b0d49f272552871a
+c3f0ad276cf013723a91aec91560360e
+c3f5ff9d4e69b4c49e8dc31717c3c8b2
+c3f65e230fb02a6f462b38d7da3c0cf2
+c3f81dc98b7315ea26dc2b89f93be632
+c3f87f0626a0f8c2bbc7f159d982ca10
+c3f899f65803fa61dedf6dc88c908339
+c3f8c07d9d9f9798d851f9a8395fa0a6
+c3fc1a34c8ba507c7d2d152c3c868219
+c3ff6947fb8f8b9671fe4ad78f7d591e
+c3ffe43e49fbc089f89b11494a1b59b5
+c401b2cd7b2c1684c88e0fb26dd6d0d3
+c402703b89badac9661b1ac809ec6e6b
+c4027c1087a59d993c95577a1837a6ca
+c402875e8ca8e15fa4f9531e734d59b2
+c4048a86c39b8fd78db54e2d3c659eba
+c405a0802efb4a79ad3c2e9cb1111940
+c407894aedbc818ec260404f312cc21f
+c408a4fc231784912266b7084199d0c9
+c40c607c2816f152b40032cebf0f9c03
+c40f8953665ba213cf2e4e5463bc2e7e
+c411bc157437c6a7a1d6a648848de3b9
+c4139f13156a2203900fd92ca1545c64
+c4156f42875f915253ea7e9902de1229
+c415ec7d9dab0d08b6f22d1c2962d276
+c41619f1bc9f7c2af488bfcf9e847479
+c416d791a255c0d285b21dcc7cde1e09
+c4173bd88ab7f4f52e77111d4752fb60
+c417eb363c5902819ec10e2d492d6be8
+c4199c0de57911950812db778fc996e9
+c41ceefead0563330014314235c19731
+c41d9e55ecc837cc7f1a517a1f414c25
+c41dde305e2ed7b57358bb2432b93fd5
+c42013d775ae7a99f750ccaa44674a44
+c42025be9b5e9d11e7837e9dd3a24d32
+c4207a9086b99a626836760fd6e3b29a
+c42087c9d335970d66f45f903b1fcaf4
+c4209ba8ee8ef2de84e9c6d6603b1153
+c421338b7e3af83d4f02bc5bc77ae7b4
+c422ff690378e9b41ff57e0b1bca3dc4
+c424c688c78fd7f99ed1d37b759798b0
+c4252bf3d70b3840e6bb251881e9bb54
+c426ecced847668610c019d1cd4d8e13
+c427a5ee164308ca179bc2597af0dbf3
+c42890d7118c6404c9165433912d0bf7
+c4296492db90d7f81c796e4335c5c40f
+c42e066182faa3045237201801027774
+c42e1e8314f1d994ad191d6f0e535546
+c43143a767d0522bda0e18a574602975
+c43151cee513d1afbec884210a119864
+c4320976e5438bcd1cbc0738e68f8653
+c433109a0181a72e8e35f6c85da3011b
+c436056ef9aa202808f15b0a3ff5ef86
+c436288674d050559bc5b6203d0dc365
+c4385ed5e69f2cf5ea4a4d537114d857
+c43ae0db82d0f680f78ae66cbfcc813f
+c43d95f0d9970cfc109172280b306318
+c43da58814eb7b4735a30db1540422a2
+c43dbf57bece6961279815db75b61c3f
+c43dd5845458724dd27d46dc6136de5d
+c43edf243d77cfc1fc24510090ef860a
+c4415c136c169c7a699455bd46d6501e
+c441795db01bc14384c24b37d7f1c61b
+c4425106bcb2d555761ece9557931fdc
+c443c0c74fe8bb154ac6e08143965942
+c44406b3050250e526787cc5e4ee76c2
+c445d314699cbaa0261e8e3a56c02238
+c448781ac721b336624975656f60b2ea
+c449421e9f8f31ab93cf296d44e83e33
+c4496de1aa647fc6a64f8a775ab44801
+c44999712d2e30964d2a73e5c596c448
+c44c6e6fd3fbf3580ca041fdd46d4015
+c44d30d47604429bf4fafb822eb24b90
+c44ee64b2cdb5a8b1fd115c340877227
+c44f7de1505618d368afb746aba20afa
+c452fa86fec73fd4e44106778e035ac1
+c4539a6a0c27f56e705b7966fbcc886f
+c455118cbd5e8901653fccffd52672dc
+c45968ed1d167fdc0ffdc8f1b6ed5014
+c45980d7b9a981a140365571dcc4f357
+c45c075c4dbceec11cf08bce12a2d59d
+c45c673cfa4a30f9ac60ec3f847985b1
+c45d81fd89730b0c774c935f00e523f9
+c45f89b947fbe52876d5825f598413b9
+c460a38a4c715da0eaacf205e36c1dae
+c460d86eff86a7647c2d9868ca69050b
+c4614b631abfc821af96f2a271e0b28f
+c463b11d677b31b1e180961bc12707d4
+c467b8ce4b5ee39d8bcb5309b7bdbb19
+c467fd44e7178a3a81a6f397564136dc
+c46960b6d21454c819221f47d7c63aac
+c46aa6e2ce4eb7c2c6dbf5d5a9405d67
+c46b1092d2a7e6aa68e644e4ad30d321
+c46c4286b4fb6b749bfd0a0f676301a4
+c46e1377b8cea2a5fad3cca83d877d6c
+c470590db0e884e7d0e49c99113335f6
+c470bf5d8626ee62c03283f46f7d0d3b
+c4717d04ec723e5817fc900bab996942
+c47268c247901ac078808f645e58cd82
+c473c79c0e8a6ded20aadca1182daf77
+c4779efaa6e0310d681b37f4365ed37d
+c47863a0a39719ee239d5f82b8813e3b
+c478cf000e7b3faf85cba57e71d12ffc
+c47b88664dfffd247e58731693fa9daf
+c47c47e100cbf61018e9a860d4e01221
+c47f77d6ee076b723870026b1532567f
+c47fbda5a5399ece317a91fd67b60c5a
+c48288d4902ac8d13777b61e6eca0ed3
+c4853885a44ecbdb7c85c9296e025ffd
+c4857f3ad2128bd3f390b55faacca421
+c4886da36b252a1c39b6ac4ee68c6d3c
+c48873567a93654559d9434b6bf4d272
+c4897935ffb2bf16c555e8f431eb0f41
+c48b34880880261540f9be9fc0ebb031
+c48c57807d6caec3ebdcee674fb75ae5
+c49053d543c99c0944c19703c0afd789
+c490c814df083e9a8eb35a298104f10d
+c4912f280553171f766bbbf3d79a0558
+c4933f2f3c1776f96b9f60dc33718d0c
+c4939a757c3d0c20a74116560e5af9e1
+c494ed1ecb81d9fe2377d5786dbecad1
+c4971d216c3c760fcf7fa5509846f74a
+c49840538de0d0a0b1f56a0577b21f35
+c49903f266bfa3577dba4412837896e0
+c49a1a58b3fc3f4f72639e992df51f98
+c49b2bda6475c5fc8d2ed787fe780735
+c49d2f8c9b55d0a838709f9da2bcceed
+c49ecde71bd0826c22ccc9626a80f038
+c4a0b14baae69bdc8bd1d6474694b72a
+c4a4977d17cc37b84e48364c396343e5
+c4a6bca37fe037a424842617168caaf3
+c4a8eac25e93430b06f6fa646581e9e4
+c4a9384e620addc23e7f38853459afc3
+c4ab2092d880c46725a109c729ee87f4
+c4ac1d6df58e0e945f162f89f2c950dc
+c4b34d21a50eae2ac399191f5fcba12c
+c4b42ce50eef0ef45c07ad31b60397a8
+c4b50646ec235edad2fb28df35838dcc
+c4b5291d86d8e80fb8f21ba5e839ba25
+c4b59996e542b211f54f35a1cc8d2555
+c4b71065752f3d71af82af3408866b2f
+c4b771057c254657a994909263363167
+c4b81c628b37101009bbbd0af2fd6ede
+c4b840caf4de2eb7697ff50004b9b8d2
+c4b977e61d0a817a83007dad5551e186
+c4bc2be3e5377b353eaa33a42bf7745b
+c4bc66e63b16e3df3bfd270c50bdb488
+c4bcd2c2ec81593a37abee94b7f75e42
+c4bdba7c92f8b7c7b3c50f654a3b7d26
+c4bdea410193e77b2cc058c8157bb4c1
+c4bf11d1d39563da815eb1879447421b
+c4c0c7a36a8762209745a3a610824fb4
+c4c17a9c83ac5b1da41bd01687e4c847
+c4c2dc6d86bf1a729339ef3bbfaa16ae
+c4c3b5f4743036d6de3f4d5323ed9004
+c4c4167c19c3924c71bc3a23d970095d
+c4c8a4ebb01703e9c3a8ad4de1e9df67
+c4c93ad3a7fdebf25cd995f40da37dec
+c4c9a0cfc70f524f7c30a0ab2515641e
+c4cc15b2c5fee2bd4d178cf1771593d6
+c4cd3dbd8970e6a6c0f17a710160d896
+c4cfc3b7700ed841b886b824355bef4c
+c4d1f2471808c07e5fc7ee72d5635433
+c4d4977fb23650b6f9456fdfa4cea0b6
+c4d499f98d37985b97da5e6dd8404c90
+c4d73cf316d0b452c502dbcbe2963cad
+c4d8493e99b0d7cb65468c2ed303e270
+c4d84d4e95ce14b14d8f0f125d76564f
+c4e1500581097c1b04e39cf28ec092fa
+c4e176587bb1981632b4c9287c74995b
+c4e3cb852eab970a38ac062221fd7158
+c4e51065da7e99ced4d64a059da59150
+c4e53172ea6b222e9e2179ebb258cf51
+c4e7310486e9c6974b11520478188ba8
+c4e7994dec6b14a3cd630346c6a30b11
+c4e8844b98885c7f058d375e2f6768f5
+c4e8d6d6380ee37ffb4898e36e1afad9
+c4e8db87088776f7b9951ee4ef2d157e
+c4ee3b90883fc4983c04ed6758aa8cdd
+c4ee5f6da2d3e058a1847599855e7b59
+c4f3b4d3ec588accb8d6432e5b4337c9
+c4f3e1be0bd14fc74c245840ae343065
+c4fac24e126321360194ba6af2fc4bbf
+c4faf0716737705e07d5f1031ae8f251
+c4fe6722603e041578a8b72564f252b8
+c4ff9737d688fda840e69f2dd61cdf2e
+c500172eb063abb9a99f47ae9b3913c3
+c505f4eb85c0592013cfe8d4b89ce94f
+c5067035b350442aaeaffb4c9da8e620
+c5097ee8e42df806cc02edb3c6247b44
+c50ebfb88b39645a7570f98d9089822c
+c50f5009215d72770f5233cc6b7183c0
+c513ffb871fedcec9ec55c93603d5e75
+c5177f9ed080aecdd41572995751084b
+c51c7d1fff9e0a6a6d66c8ddb7aed37c
+c51eef267fd033d892c2e892022d4be1
+c525c74dc5878107488bdefad5b9407c
+c52fe07c54359a421c3ffe85d59a5fd3
+c530e658d0ffb6f9a0202e87a05706c0
+c536b5568a0e40b655a875a2077473c6
+c5386e8397753be181e1031b9ad161fe
+c53a012ef91ee82ec8182bc225331e73
+c53adacaa1fee7dc7e3b4cc08af30ad2
+c53b0b704d137c640b7a56980b4eb39e
+c53c12212e87782304af5c297f897e0f
+c53f1fb305303a39da7f65229b132575
+c53f2fc4701ae0efeb8c3f7ef07387e6
+c542612eeb1919f243f8ea588bbd7d1f
+c5447887e7fb9a484224f268bf5996d1
+c544a46797477c62c958aa524c392b51
+c54552c71501ea8d102b774e79eb999f
+c547a15e3fd649743f5fb7b4f6b81a1f
+c547c67fd5ac3e4e141fd440bd4774ba
+c549ae7cd02c706dc79c3e670efdcd05
+c54de6790c619d3c58f1420d59dd2bc5
+c54ec9a34c9d61c7348930803d854635
+c55167f1db19a8271e829d96265d150a
+c555e0140e1c2ff70b78edcdc6714c02
+c555f39aea4756809f2e3816f9b5fa4c
+c556068b9c30ef5a008e18d3a2d52478
+c5572d50590373a9b420bedfb8ab0243
+c55c14bcd98a30543dc8d3d6dbba3cea
+c55c57d311b929804d6d47c3090655f4
+c560b224da63063ddd7f7a11466f31dc
+c561002927ec366cf47ceb519a0856ec
+c561b0e66d08b8b3e7f78dd89dc03f55
+c56375f9d4ac0e3f2589a828d8106d64
+c563c96cbbaaacc95a071e0f530dffb3
+c5668d4b96f2b5dee595b10ca2c59ded
+c567f5a06f5e52f23f9a6309b66c7620
+c568cd2cb065319f1bece6a6db3fbe21
+c56cfbc2d4614222615aa41c8e059c2a
+c56d576c6a80893ed0f6381ee1ae48be
+c56e0a1f258b81ff542755060a160ca9
+c57150d198d435055978fd0744e40e7c
+c571adcac4f87f9749ab6373f086c982
+c577889f4e7b13ad169e8898cc92d207
+c577a6fab0f0307c520f93f60b6dc9d5
+c578ce232a0ac9cf9bc48a3f19692eb3
+c57976558b6d026de410bafaf5c7e548
+c579c9be27d18d064a1075f7e50a6198
+c57a71876f425e95b5a7d1e527609f20
+c57cf893b9980f28e06a24602526e3ad
+c57de47c4d8a1cedf631ab2af8e0959f
+c57ecfe583482b138d34d8bea92e58ed
+c57ed179ae4bf506be218281f8dea5f1
+c57f0354bb88553d921dc72079e9a13b
+c57f5675be8a20f941a48f30e89a41a3
+c582e6886fc7f35f689218a9dc01f3f6
+c5834342bf704549d3fc08c9c28b194d
+c5837ba6b086e93a193c582a8de32e5b
+c5841c4a31347a6b33603b24d73269c8
+c586a56b0cf889ce869a197c3f406653
+c58d3bdf1f9173fcd3a4fca1d5c69679
+c58df4c44c105eb53767bd13f93787af
+c58e76d6a3898d892eeb48ecf918001a
+c58ff3a71814fa00becee9115024d6dd
+c59039c140764053dc091ebaa959c61e
+c5913891a163b9944264997f6bcdafe7
+c596a1507a56c03913dbb44c45cca681
+c59c40f137ccbee7826475a8163e893f
+c59dbf6f49807ecf10a15ef8d88254bc
+c59e524a61b1efaa09ea2f7498517b17
+c59e92f4f3ba8284c18e0e3439562318
+c5a0cb55a624dc3838f375edb4e205ca
+c5a80403178a2ed656af8020cc2a4486
+c5aaa7732515b1dc8f5b4c04b8fd0d84
+c5ab653a92cb740488a85cce307e3fb3
+c5ac636bbb2912d382337d48d24e66e9
+c5acd9fc6390f3b6bfeed15aebaf9bb8
+c5ade3220ba15d3fc89f4882d8786c33
+c5ae2315bd9876c4f5a4744915e34406
+c5ae33405a57937c4aad723e8d48ada1
+c5ae454e97d603f116d851f491a151f7
+c5b2501e270e6b37ad51f5c8a46f62ad
+c5b2bac6d20906bf39c0a901dc970be6
+c5b3e3d971c034e5a82a93a4027ad0e9
+c5b4fd72470963b4fdcfacc4f448af9e
+c5b724d2bc57868768b0612d59ee9234
+c5b91a2df3146374c64aa140ad7e84b8
+c5bc9e39a7c421affa6b5146079a451f
+c5bf4b075df2e34e696795ddfe5c3393
+c5bf7a3af832c0d02e8583f2478166ab
+c5c008e092336f442cd651a52a3f82aa
+c5c03acf5e80e2b9084553b2b6ecf27f
+c5c0c7a31049d18114c8df41f699963d
+c5c192782edd08706660a2772d7a091d
+c5c384d918183a4e1d637e66fdd719a6
+c5c47722b9b06104afb404584e46f4fb
+c5c49d9f593ff16aa3979151e5e1c4e4
+c5c61059b70f6a98284656b7c31a6e17
+c5c62d71acb9958901b7350f76e5f3bc
+c5ca8e6932ac15a78853f2dc836bb7f6
+c5ca9127c8c727bd36699e168f2e9f7f
+c5cb161f5d934899ecf8fa5c891d3b96
+c5cb20c1dd2d4d5ed1230d86bc281dfa
+c5cbc904c7d25ebf062a9b039d3b6ef9
+c5d281e8ed70cd55903d26f6f0b2f5c4
+c5d563d08a2ce09e2001d99a21c29fc9
+c5d59966f1d12aded54b81a339a7dc14
+c5d5f3f986892ac5acb27cc2a4e673aa
+c5d938eadc54a5c3d72e25d3a66674c8
+c5d9705ef5422715b1682a9562e0e50c
+c5daed7ee246bd766317aa9f0bc943b0
+c5daf3307c879cf40ac7341614c0ae74
+c5dafe3a9958205f1aeaba2125c6bf5f
+c5dbe7257dd1f9adb2f1ef753febed5e
+c5de46be0e713d233b61aa0c9b092601
+c5e039c9e20862b8345dc7fdebb7febf
+c5e11e5a46c84c0dec6bf8f5cef3c2c6
+c5e3c27f4e673aeb6e688fb0d9887950
+c5e5a7063c4d0449c74df5c62e16a33d
+c5e94b735b177c02f5bbc87083d21501
+c5ebcc2395eb661ff434c266ac8e7b08
+c5ed0e8faf4501488fd4db7782a444dc
+c5edac9e6c51ff0a49c007b3624234db
+c5ee0e951ce5c40b4cfb194626fec6bd
+c5efd8642cbc34b4eb2479b2b129c6cf
+c5f0499c9e09f4c0323b17395c15915b
+c5f1c8ef7bb03cbcc6cd4efc8a2de4f4
+c5f1ee5012fd9c669184abf35a2f6291
+c5f6275eb8709c2c95cdda396dd60130
+c5f9674742f4248147e2221731c4b361
+c5f9a3e111567c01c0003559d04ef8cc
+c5f9aa4553498b34656a23546cbd36a4
+c5f9e9e4f9c8f897698a8cec1c95ddab
+c5fa8067700a448ba8df0102be559a51
+c5fd31481b8079e8d2a5321f9c22d860
+c5ff39a0c137741150a1f70b43b36b95
+c5ffb5e202698c909877dc749596107f
+c5fff2fc0e902395c50dee991639ded7
+c60030fa451ee50ad06748a6f8af5a33
+c6005b6496f67e1f8c11e4b495c06a78
+c601f273edcc4d4ee2b0241645fef5ca
+c6029521383f1003ef1c58e67442a6a4
+c602dd1cc48c46437536ef3501166107
+c60332f90490dfbf5633143aa79aadd5
+c60591498016122b603c6f41ed1025f0
+c606692e135a7cbc6afea64ba411a3fc
+c607232ce5757e87e00ded8014cfbdde
+c608fecd5c00bef5ad0d1dcaa549fcc9
+c60a7559ad4e1f4ec715a972902df8ac
+c60cf58c546bb5d7ea53e335ed99b1ed
+c60d5b54894272925e013177814aa48e
+c60da1b33bd921c11f3615026e701f05
+c61051849bef37219d120b142b1bb9da
+c610e6d7ae744cda1ea0b4bdaad3c83f
+c6115e6ddcf209055c141637ef86d8b0
+c613cc8792d23370fe8a78dad8fc4cb4
+c615390d90a6362f49240396adf9fb2b
+c6178eaf4b21bd773ee8b6218c27b7c6
+c617cc884237b6ddcd6d2bfc754301c1
+c618597b4bb58d56693889c2101c2dc9
+c618b8d973cda2b5f42944f4aa0581e7
+c61a9518cf479fc16ab104b3caaeb292
+c61c4cfa25a380b119b93b183e086e39
+c61e22f7837c0761ee70592ade73ffb4
+c61f477641ac977a949139b5edb22e6d
+c620ac819623f82d242a0bdb2dc5138a
+c623d062ff30da59a069a76b3db13a6c
+c62410754cd50812dbd52b5265914d9f
+c6282bec2477c342af3f8e6032e57b87
+c62a15086143d5df014198423ee4ebda
+c630dc84d69df6e338a0ca6b75b140cc
+c6310314b5b89790bfd37a985a7382ef
+c6328e1e68d03564e530190743de0bfc
+c6343d403dab3e1945eb202390847759
+c634a39654e62d92bd39ea9f3555d53d
+c634e76fef1cb882789cc81fd3c6dbc4
+c635e7b116e9a604f3027d487d635702
+c63c6c60068c83e90f391da7cc07f990
+c63d18482f9403274246751e1d5b6119
+c63fb774d67ceda3482ba7da8f20a1db
+c643279cfded35d12c542c7e8150fc12
+c64469e6751049c7bb3338e97fd5e2fb
+c6447bfa13f859288c154ffce53dd7fe
+c64577b9db3f2006b9dd80a887ca31d9
+c6479a40a2585b95965dd6a6c3336dce
+c64aec3ac5efb02fdad26684db4fe847
+c64ea5c2b4e416411f702895f246096c
+c650802d9c0181a93e070c224c1eddae
+c650af6b0d23d04e098a0855dc78ed92
+c6514a54029b4961f04a71abd2172a16
+c6519fbc9b68223f62e85caad4fb05ce
+c6527643d2e66f4d7d2cf62e78060add
+c6542cfdf5968279249e567df9b25b39
+c6542e9054fd2424c882bc6b74b7c443
+c6585222ca86f603e0eebacf9c9a9af3
+c65ce6a4cb0a227f1b1b59f8854c4462
+c65d72bc8937858783b12027e9d87e21
+c65e4248e74664ebf9bee70505d4e6a0
+c65ed1a8e8452f99857e6aa738634855
+c65ee187e142f4711d91810fd51043fc
+c65f55a2661f61cdad217d04f03d159b
+c65f67599078a1cd213c5f2098690b3a
+c65fc494f33e92dd46eac5f09ed9aad6
+c6611721ab6a609fb30de89dcd8c142a
+c6651af3c2f431520163f80cc2b80776
+c66689ba2a763f4f6bdd98695747e517
+c668a44b7dc40cf1edbaa1827bd67363
+c66980aa46572d7c69df85ee89e102eb
+c66a3219086322aa02279d433b451dfb
+c66aebb95ab4322967ef7fffb4c51f50
+c66c40358e84efda9163b77d2cd8f66a
+c66d4a40af97cdfbe6f23cea0782d454
+c66e215a4fa8d095c11cf3545c469128
+c66f73449f8215d2fce2b3ed931a341f
+c66fad6c7df648d5969fba0c4f02f105
+c6700b0525f6c2ee426b1d8974107705
+c67011898b7c4267b082dd4a8d85238f
+c67095b2445c6822f198ca3ccc51352b
+c67259bb9274fa237b8136f7c66673ef
+c67287222fe43e852381ced527751ea8
+c67314f9b73a7f20646ec829f9e84792
+c677f0bd631a4d852b37440165307938
+c6780e75adb1864e5bc2e3452fb982ba
+c6787c40b8226cda0b7cb7fe29c358c7
+c6799c1017b6b3e6ee1f9afc6959770d
+c67a10a8c0be6c33aae7adfb1bf098f9
+c67bd9fea40729a11f31c91ae49fa156
+c67be5d67e6aa5a6d96b49dc2db17718
+c67d38f2c6cade690213cdadab23d0d8
+c68100f5fd1ab567f2cf063c92eba7fb
+c688da41ebd8ad5bbfd7e46cda5604c2
+c68a65af32108fc340a7165f781849ab
+c68c436a8a26dae11f8c67df7b4dbda6
+c68d1254eb4a2180788975f1bd39a281
+c68da41d74d521055b7afd50d87ff83f
+c68f5b36e61aac7eb09bdbc7461fd72d
+c6961b3a24b3f5216ece4370978cff07
+c6996a277dba162c1388357d6347636d
+c699da7c803f61398439ddde77a4461d
+c69a1075a91581fce6d17f42a933a2c3
+c69dcb348d65fbd507af3e1baaa50b4c
+c69dd3c6a39beab559c172dacad7448b
+c69ed5e1adb7973404d431f4b4a5bb37
+c69f3b15ad73e8c4ec7ad1f4d6cf97e2
+c69f91b8434eaa34eef93fbd281e5e8c
+c6a02e2554ed8598f24621567c0090c7
+c6a09c694b9d095e7aa01a4fcf172e9b
+c6a399490f33775c8cc6635a8540dfb1
+c6a3c6d4c945d1dc9ec6b5d28c57c109
+c6a62306e2e9733df6f3908a7519fec3
+c6a8b59ea1d89636021c4c0c7486b886
+c6a90b1591229071d1df2aab17246bdb
+c6aaa358b602929411d4f96175b3e086
+c6ab0340832b0a4bc07704616c2ba3b8
+c6ab544c8df8fc2988704ead969c64b2
+c6abbb66100df5db27cf0812208afada
+c6af7ee85a28cc2f91747411c0126fbe
+c6af9f211e198a0594b39b0f8e732e53
+c6afc912c6326e5378e94b85b4edff7d
+c6afdd7e567e1fa4cb8f5028d0015175
+c6b1001b750a6b10825f4494d3c4678a
+c6b2806de12a5a66cc5376e988ca0dab
+c6b726a22678ad1d237859f327444e48
+c6b805984bfdeafb23cfbeade9221aef
+c6b80c408f5bc8ee061e7736d44324cb
+c6b931563a7dc6131428970870d38da7
+c6bb001c795adc83cf440ab83d8dba3d
+c6bc426932f5e0cf2b7ed0393445f965
+c6bd35108fdc4f275b224d229e418cbf
+c6bf404bf3479edffd886bccb71d26ec
+c6c1acaa047ab98cc71d69fc072ab930
+c6c25242985cb35843d8ade137334c07
+c6c2dfde59c81d458b515277242d6544
+c6c427426c299205f09d9747ec190332
+c6c4842ce87d4fc667606cb664638ec4
+c6c4a50375301f62b1af2f331d5875f3
+c6c5952e1fa10fc9a0fd62c2e433e873
+c6c672c6a78e6d751923c4f178ce14e6
+c6ca3c2ea6429c476cc95b25fab84352
+c6cb0fa1a72ba56a5a4c0efe27f989ec
+c6cb6b20ce632430ae30abf79ea21e9f
+c6cc0c0e472493a5af5cac468c80f77a
+c6cc618e12adbe169b17b5175414fd48
+c6cc90aff41bb2a594381be913878249
+c6ce252b2be297db0bdb6b1d9ae9627d
+c6cf0906b78a7a080c1f57d4a6060140
+c6cf0be571ef4de4a55b0ec4b01cea23
+c6cfe9be6835d5ebcc788bf4862b7a9d
+c6d265afd1dd402fa03adf9d2cb4b979
+c6d454a489e61d8c3b480696cc770728
+c6d4924cb82d81482e951ff092faf570
+c6d7a1cf407ce7ebc505a2e147dea604
+c6d8201405d94e266c89e78acaa7dfee
+c6d8f0b8371a993693172971ed0fe7bc
+c6da0de9ef3ecd42437b0e0362e51a1e
+c6da68ca121c7b17f9e9c4355d6b3f61
+c6dbc40140a5c96ff6d985a39e2db80c
+c6dbec94eb6f136960c66237905b02ad
+c6e4b1eb0fbd72679fb91aa903ec0c9d
+c6e5a88467e02a2e741728ebe16552fb
+c6e5c9cdb390354afd93bc991b365237
+c6e64050119f1194ca921cb472d4470e
+c6e66b37db918ba3c37ed09d37018d8d
+c6e6aa063054640260e197cea7b8637f
+c6e7622ed684d877142be34dc71bb4d1
+c6ec18e06c40d8443c1dc5c713fbe2b9
+c6ecf28956e3124002b4e6a9a81344aa
+c6ed02e7e14293bf59b0bcff341955d6
+c6f0fe7a4d2f6d4b8c74eea5a46d9789
+c6f3bfc245ba29dcf7baf2a59cbb63cc
+c6f43d367780633b44be2378af33f592
+c6f5f4cdee69523821f85e10c6125c4e
+c6f77e03d040d041ddd566497bb4401d
+c6f9e5099f20fd67419422b8d4a0a4f5
+c6fa1ca78a57b50ab7008515e3a84474
+c6fb552e975e5daa35d990d47bd20c8e
+c6fc0454ddeec7f4620e41ffae31c452
+c6fc4ddf9bb212adaf28be0c0015414c
+c6fcea0b382e244005f8cfbc10800be7
+c6fcee28a929228ece28aa713a941f50
+c6fd5a8ccae7ec96429b3e86585d245c
+c6fe0da6442ca3160f1ddb3af3d0e1c0
+c6fecf38b2f561d33cf52b15fdc48042
+c6ff65e29f53716e8ea5df86649562e5
+c700573f7c7c49f47c16e2a76502ff25
+c700651f40bf5cbd3ff4566a53eda317
+c702a340b413e9eed175ed2245642cc7
+c70535372cf63f08f54b5044fc20db14
+c7062774b23a52752e51fa5df78cdf8d
+c706f0c07e4d14e153f0e3cbc2e75748
+c7080c65c583fec8c7776e866001a7cf
+c7080dc19e47592154ec3e8c87d97000
+c7085882f8a23dfb5c4c5396cc2224cc
+c708e290f5be82322e7b548f1767fd80
+c70966a0cea3d1e67d8d8cff59493ec1
+c70af2fc90eae635527a842155fd7d6b
+c70dbe1f7c68539607ea9f81d3206ce7
+c70edf444f9e92d215e4f7964994a1ac
+c70fe8047dee6d355710a98111452cf8
+c710332062941ac0ca05b4f002c93932
+c710c10c90bf0385f8dd2392bffd80d5
+c71114f65bc1f06b718bfebdc778ed60
+c715d458ee41b8f8938e139441dbdf09
+c715eb673545fc4044bf9411ab43a0ba
+c7173a1d1f91ab744f1e21e76f961a09
+c7179b7d4a482c8d91f75bdfb788847c
+c7181d97e95156ad0d62a1a25bb2db4a
+c7197dce3e9ba7dd948ce72de53664a2
+c71a59f0ff70e09bdc5e3e83661bc800
+c71d49c581d77329d164c8553497d6f0
+c71f6d315cf35f16ff1cdf16cf0405c3
+c720dea360944c13a51ffd006d8768a6
+c722d71c2bc0447ad5221267938c0c82
+c723ce2990bf2bf08cc2f1854cb9b783
+c7284355a3d4519cbb46679fb332817e
+c728cb2ea61704eca6fa6a240d7947c8
+c72ac3d0771281a11b3c12540f35ce48
+c72ad6d7cf87e21ca2de0c60cbf78fda
+c72c6545c42fdacccd10c97e510e077e
+c72cc438071ba96b2053b6477fc53b37
+c72d1360acb8d52c0acde96738d09a93
+c72f177a46a275922a451e3fc21d3c85
+c730d85b4a69f7b06ecbb7a84532f22d
+c730e89bc12677fe8751759f95d93ea7
+c7322ad004135c3a9121873e6b6a1c45
+c735b9536a767af882c75e27e3e732fa
+c735c5e9a7a965f260c1427ed9d9196a
+c73ad8fd2b7799542ee21fddf1e897d9
+c73dccd08a572489bdc10819f5bb5dc7
+c740e2008f5ede17086a34db3edb8a0f
+c741288189bb7677408cfa5f2f8154d3
+c742edbb4ea452f994ed73301baa7d06
+c743363528ae25a5b140c79707209b08
+c7436143e7fed0edf980f645319e2010
+c74fb91607a7efd2bd77f2d8f209be23
+c751ca2c54aae9a01f5dfcc338691cb5
+c7539595afcd8da6c86b1297f5457c9d
+c753bee58a25656ec257e8eca5fd9b86
+c7557bfd175269f202b33b35b1887f88
+c75687951ace005462de49fa4c2609ff
+c7584430278bcbddec0f086fb0bb7443
+c75b710431f2ac27a805b99e1c9412e5
+c75b9f14a65b66a76f6e54c32ac1865a
+c75ceb97bc08bcbb71f1f028d873fee1
+c75d479638dace5bebd675a76cdc5ce4
+c75f1e5fb47ab37449e0b198e21ac6e2
+c7610687c2da77f58f4fa21005ab99bf
+c7629662d58e8cfd7166bbcaef487a72
+c7642ade620357d1933d84f25ca2c3b0
+c767e6095c17dabcdc0e5efb7ad9a750
+c7686aaf16a60bf1e1330d6bd28c5e87
+c76c0f412e3a97f2b1ee36dd3936085e
+c76c38a5d008c5445f20d46ca68efc7b
+c76d2d4b4d719a6a21a923a2ab8c535c
+c76d4351b68bcb479a87ac4a2cce4d3f
+c76d89f77df9ee4289de4d28f388b0f1
+c76ec6e43fac509f5204b89dcc11514e
+c7735f072f8f835c3f2b2626bb830ed1
+c77379ef579d1b8de864f395d34d09d9
+c7750a2237de3119ef2835407be16c69
+c7765ed6b0388523960912a82f7cf6e4
+c779b26557bad81a1e1325d5768a59b5
+c77a27a36dc8c8e4d3d573ef09bff4a0
+c77a826a1b122e4f6f902ac3ec08894f
+c77e3f9856d31687030ac6b76c08a2ad
+c78026edd8484474e021e84adc365b69
+c7821d2f7bacf5a1b1ffc39df10cb2d2
+c78298ace40151e97343e4eddf42f5d2
+c7848ff20e7d5cd3d17783cc6a054fe5
+c785a2042b83757f917d7cdc3a4f472d
+c7869b89e7a52e28425f785866f17436
+c786fa4c56e83e1db268ee9223f392f0
+c78a07dc15e953e3ea325bb6ef34bf86
+c78a9a9821b3466939194bbdbb2c0f9e
+c78a9e416e237f0343a540b084cbf2f9
+c78c9221587fe71c1ea20474e0978c75
+c79099ab1b6c02952b187f1bac00e18f
+c79121b311408be8fb36e4735835091d
+c7915e2d73e2aded22ecf7479e43dc3c
+c7921ea53e58b7944ca527a32712b529
+c79462b2607ace884103b04119686c15
+c7960a7d7d53f5baf5d090b8d49ebb9f
+c79ab7d4e57cbf3ce8cd6079880b21bc
+c79b349636aac6cdd5f205f5e9824a0a
+c7a027285c1be04cb67b9da83c3c495f
+c7a34f871f175fb71ea37ba52a9e03ee
+c7a4e47f8be158d886db493354a67a03
+c7a6f4953375a3b66d2c5a3c3bafe6f3
+c7a77340680547b3f9f3b3b466f56a1d
+c7a8b3cf219ac4232bc913ca70248b9b
+c7aa84cbe9f95db12b44c0ad10a6222f
+c7ac03cce0e1436dc6700c13fbaeb1e8
+c7aca572ca1fcf050e10b59f61aec9ed
+c7ace5bcf97447424ec21e1f6fe281a9
+c7b0a7490635200cfc310c6e6e86e1b3
+c7b0b1f2c4b23a0216340ab3fd9af285
+c7b104fd4659def30399dbcb210af942
+c7b4346548c2c06fd779c8a3a3ab4ad1
+c7b4de1a6f8711ad30c694dd70fc2c8d
+c7b63d32d804a071af1b0a836f590232
+c7b6bb2110ec7534530b252440894e8f
+c7baccaa1dd19652afd1d6af9304d70b
+c7bc2bd51ef03d1b1044447d54275a40
+c7c19c54b109d1a13087318dcf0051f4
+c7c2a24e0d8a067bf6bf5fb999bf2456
+c7c4735459531a21f4d8b1f6cd6de919
+c7c8f4c391aa75635f4992751ac13af8
+c7c9a845dc027f1f06a097c3afc1b1b3
+c7ccf5ba87c4610dfd35afc0f954aba2
+c7cf86a2e2821666fa674e68b16d6177
+c7d12b1204d663dc27ada96eba595232
+c7d1486b8dbe7248eb80493b4bcd90e6
+c7d34d606050d97d251efeb67ced32af
+c7d3c4c00dcf88ca9b1e47e50ddd9010
+c7d3e51e8730cafe7bd679d2610bc237
+c7d568f4e87e2e0b71381c24d47ba0a4
+c7d9085e58673018079c2a99f5abc9a6
+c7dafba858c458124024830aaf740a60
+c7db8ed89e4c747ae2db9ab9528d42a2
+c7dce23b322623c9221c9f66c43db118
+c7deafd4c683fdd9ab87e061cb4dd08b
+c7e01879f42002940afea434b2d42a4c
+c7e0231e3ff6a3f925fd519dcf73774f
+c7e0a0864622d86e21d88910d0675821
+c7e45738d36157795b31019fa962e7fa
+c7e4668a49a72f16fd2b8863d3fd5a82
+c7e69e73b742f06d308661d7be99f66c
+c7e6be298cbe1139d76450d24bb97452
+c7e7cdb1ba82eda7e4384d916c571bed
+c7e89f7a3efc8af530845ce85261b51d
+c7e9a5f190038c704004578bf30e53d8
+c7eb3e427e3f09a26fdaeb77fc7d63ae
+c7ebc1e79a02326a1d60dd1e7ee636ac
+c7ee2c85840800790d7e500c4e2c5373
+c7ef62447c8fcda1267680f1d5b47bec
+c7f1be74c68cc74a3dabc5cda65e953e
+c7f2f03510f3e0d1bac693bf59621326
+c7f7c5c180174d08149ab85a340f6ce9
+c7f86f7a59273b81a3666c1de2868ce0
+c7fb1690f1c352686153580261e7f49b
+c7fcbaabfb28d769c6f67d749ad3d24a
+c7fdc0a95c04d600accba09aae2e3a9d
+c7fe3df7302db1cd7b15adbe6ac12abd
+c7ff540959cb65bcfd86dbb7feb4f240
+c7fff82a77da14caaa8d3543de7e5ce0
+c8010f1f6d8912fecba617d37e6cb05d
+c802aab557ea92a92bf03a1450c89110
+c804baeb5bc541ba5d328ae35f0a8125
+c805f82d956c6e778b6bfcf438781101
+c806cd12f696205ef55ae1eb2751e4ba
+c8086046016f5225055a338281842d7b
+c8095711cefa59c34802290dd23d8b6c
+c809ac84e66228c260f360b5c3f42254
+c809f879f9e63ba1d8956f2a33dfa898
+c80a7ae9a7efdd50fbc5b8bf3d342dd4
+c80ce3bc1c73bdcddf3706a468a7857e
+c80fc5cb4f7738c6db9207ecf84c6ecb
+c8123d7fb18c8eaa9ed80ee37b20c238
+c812f096ae7a22fa7d682441b47f0fd5
+c8153be159e89ce02e09227e036d1bc3
+c815808fbb580466b395ba0cc11c78e8
+c816fe2ac9c18dbe3615d21a04be6826
+c8172e37743d093d5ff8e03298bbfd29
+c817ef492db82562b13301442fa8c6ca
+c819b57511198ad3d062c61ac0932021
+c81c369a5fa057c5f1f27c80671666e4
+c81f576252da8786f483ad6131e3835b
+c820d7b1149a2166b2a3c71892a2f311
+c820d91c8581f1902523160dd93e3a85
+c8240ad43e4e72ad1670d34a91fc2fe1
+c8257314936e2aeb839b07a4ac964769
+c826140a3f04aee9a2178d5b669b6605
+c826e3ef46a84fe05839dd8e47d48923
+c82702d9d59fffa1948d946280fb505c
+c82a2d189f943836c27ca9c5fe29e715
+c82dd07b5259a426e7296e7e9c63021a
+c82f244271dad1115bd197d6c81c1fde
+c8308e3876c92a5f112d5392bc35c81a
+c83267bab219a90951d2d13f50881d86
+c8328cce4f6cb7a5ab35d7aa71cab7b3
+c83293c7d6e3349799309d06a2d41c79
+c834ccee463cc2db98ee91a8e17e33f5
+c835248adb6b18e34a45770d864713f8
+c83649761cbf1c7f1bb1fabf7b5820b6
+c836c29d4d71f5119ec19079f9bb6d94
+c837b333d1b21d8b4cb31a26e8c2970b
+c837bc91c77865c507e0a2c04bb4daf9
+c83904ba3e1b991043c3a49a6a75c478
+c8396930f6930c06594ae6ea006f7910
+c839f23d6b14599ef2a1b5e7e4ff5d9f
+c83a426d1ef4b068c61a1c07f71b56d7
+c83c0cbee786abbde86d53772493d75d
+c83d50d68cc3bdef307c323adc70c9fd
+c83efd37c2b08d44e2134110ba3f00ec
+c83f9e1923c2d1c0d02108fe99889fa4
+c84200b4d307c8b3de24b7583c940335
+c8435dfae6019baf74777c1da167b2f5
+c844716cd21ef17efe8349dc9545cec5
+c847548460094f7fff5fbce263852a18
+c849a962f01fc1a3be1b81d30c2060b5
+c84b6c14ddd87407aff3de3a1885d89e
+c84bf9d23ddbcecf6e043d04583bcb69
+c84c8adddaad155b3ddcbe311a6220c3
+c84d57ed4410ca7bf270294f63ccb3c4
+c84d9c3e0074b371955a1f12c1e83a8b
+c84e7c41714d09604c734b2929f613dd
+c8501eef9bfef5698f0fe95054a83856
+c8521dfb6ee85de25044c97a0fdcfafd
+c852301e9b2483596139cb808929f0a4
+c85244138d9cb1f20231315c55759eea
+c852b9d7188a3db9848fc753f938001c
+c85403125c4b4cbfa64d97eec70328b6
+c856593ea7a2bbefe70128854c0c388f
+c859dc09dcd82324056a3e6be88ba4c1
+c85a70c1840dcd26833090419bdf1490
+c85c5273c96bde994f5e70aaf20f1882
+c85d29cb7d22f8165404ce1678696535
+c85e133534dd9a9d56d14df585cbfbcf
+c85ebd3a1e41bc969f47a0d13334da0f
+c85f8f9a6ceea29d3d521c5595b4fbaa
+c8602ba7337d3ad5c0407e2b41ccd606
+c8611f4e9baef149b31c97922710eda3
+c86155cbd365aa21d5877f81fb802fd4
+c863763f859c39f46f9c92d58b522366
+c8642c1f8b83f2e0bab695e912c1e0a5
+c86545926bbe3bc86eda43a3e0400bac
+c8654abd70d5e015e4f74cc26ac063b1
+c865e7a9ee3890f0cf12130c94a3044d
+c8668d3d217e92aae407bb1fef592d02
+c8668f5f5801db51242685fdb5141eb3
+c869cb515c6dbb013b65f87f566ef2c0
+c86b1f9ce91b56cc3501fa5312a2c91e
+c86bda2f0cb9ba3f103065c5e4ddf8ed
+c86da4dab55b202f113d787c7ac763c4
+c871510081ed58db7d00533a4c06d5c6
+c872988e0ce721e87fe5c8cd8309e4b3
+c87433fe1590beff2b859cc14cde0c65
+c874be529da09a0e76af541c9bf00d37
+c87568f69a0aebf2f3aae64e3560ba1c
+c875f0e655379f95cf549c31822e90fc
+c87976a05e613d8682059b7d09b8a5f2
+c87b35351acb00b81d44cd2fd8212bda
+c87e04d4198aa2fee677f8d01f5b919c
+c8826f70c0786fa77eafc12a10d76a03
+c882c117c0c1286954e385785ba7a66f
+c88301c7056f1754d84503292a6b8ed6
+c884da28f491ca078e976901f9b7a327
+c88667d23ba4768009d2198cea06d284
+c8871e594361052e6b873dab1e3ee5f4
+c8881e87ba1bf053f9f72dfbbdc01e62
+c888330662eb5f009394c1ecfdc05e98
+c88ab4aa35d08636d56201f05623ad54
+c88ade9a2ecc943bde56d61abe1cc673
+c88b09976ba23fd3a5bcbb29280f6a12
+c88bb0264adb0de47044205e155fec1d
+c88ce87cf8cc5084ece72ff95ebe141c
+c88d524e31ee4ae4f00df259c34a4cd8
+c88e0f6cdc9b0a891b94c123dbb93e80
+c8904b09657cb77927e72a8429eb110d
+c890e010b4226f2ea9e4889ec78d1fc9
+c89147644e10d1e58bd4b476b01c8b8d
+c892b8dae0a858465fa2b1ebe101647c
+c8934796dfe1ddc735a5ff2a56477833
+c89483cfa212dc73bf59dcd706df7280
+c8948640f17a05d1d31dc2650dab72d3
+c895b7e2f6c0bb9111c1dee0218ccc79
+c895e6461912d260087dbf5f99406674
+c8962e40ba6ae75a800e57c38fc9fe66
+c89956da8c82b79309037eac0f2442da
+c89adbc80cb1deb6fcc806653e6de031
+c89f735bdeefea9a4fff62c4c225a7b1
+c89fadecc776f7c981097ab95690b8b7
+c8a1a878e242d1b73c73e6caece56fab
+c8a1ee4a31ef64aa0883ee9b655e549c
+c8a289540555ee96696968dc96f0360a
+c8a4b35b16340bbc2d0a13812c8afc3b
+c8a5a517b8d94cf17744931719050a52
+c8a9c9c67000c3d43e29816a2a174df7
+c8ab56369f7cf2366dfba335740b936f
+c8ab6b2eb580ad63595d8962a01b1da3
+c8abe582b50455476c1e49fd5cd73601
+c8ac24963996be2f6ac30c4ff031a543
+c8ae64f77d055c29af04d1b99879ea19
+c8b0f12e343b3b0ae763153527a0220d
+c8b121246b1ed67c4a2b72e6d222772c
+c8b26ae0bb0bbb55e52464e10da9fdfc
+c8b35d72c0b821627d28ddda166abc05
+c8b4a5d5bf07af6f91e35a5f555a2309
+c8b4b8e5b7dffba06ea08095a51e4044
+c8b630467dd2390827a24416f410e49b
+c8b6542d2ce75d2488b777580d348bb9
+c8b69169000561c0f0096cb09f5ab3fd
+c8b7a62ddc9f6b1e02e758d8ec267ef7
+c8b9b13ed852c6206e387a91306016a4
+c8ba3d9b03e83b98b85e490635240802
+c8bbc8bdb61a90405210da982bb41b8e
+c8bc96eb5c25170768b0c5036201c1c7
+c8bcb2ecd862140bce48e107e89d48a9
+c8bd75e6f4146ad156494764de0a5e94
+c8bdfae6b3d263f59c2838bd1e776dc2
+c8bea55512fe02a005793abfe125ba21
+c8beea9df289fa1774975ebf397bdce7
+c8bfcc1a96693f77d5c7af5b448a96e1
+c8c1d895ae828bb4dbc90b8eec29850a
+c8c28221d79a1b941c03e48dd9663ad3
+c8c2a02245a9e46b81a4f9fe2582f1a9
+c8c334509660d685e16d9cb2b2ab77d9
+c8c5701d2919f10d03415cb5aee92772
+c8c68d6211430475a7212e24ad75edc5
+c8c73badeb417f5c8c5a4c166d53a587
+c8c96fb162ac7e861aae73d2a8be39a0
+c8c97bea3475b2eb9988ce45c427ff8d
+c8c9f12a7bc1fc700a14ea5e63980373
+c8cbba8ab7f883babc524a116d3fcb6e
+c8ce1003a899d28b8a729fdd083c857e
+c8ce94cf567ebb2767654345c6f0b68e
+c8cf23642bb68acdebf69f7b7818c416
+c8cfa138aea961bb355ab079c266b02c
+c8d2b1f42829a7e086a96c5e82730bbb
+c8d42e1f22597bb05ef3390f89c94680
+c8d4a912f346ab73c5cdbd0045fde30d
+c8d520d44a57c74c3dd2ee4d6769c6ab
+c8d6781a51f0c8a43e733c21bee7de10
+c8d89fca7073c5f74a431d74e7901057
+c8d8a489406780a53baf6fcb389321a1
+c8d8ebb214262ebeb2869816a03b0bb4
+c8d98920d5512f98b4915f33103eb491
+c8dba5887f4b01570a76d35f0d008fe9
+c8dd528c1e2994c710f69c6741b76df3
+c8df2997ea7fd5871fffaae81ba5963b
+c8dfaee82caf34bc38f0f4f6ff3df921
+c8e03e957639568ec0468f711af256fd
+c8e11d85d4fdb2fceb7c9ffc153800ad
+c8e1eb10941c11288bd9f4fe6dd4436b
+c8e31531598feed925b6355bad681cbb
+c8e3e65b0302151af1a2bffeba6470c0
+c8e4cbd62a0e20a93335582ade9c0601
+c8e523305bccc2da581d7f17798fd55a
+c8e7420c6a217fe0afa11009174a0aaf
+c8ecaff0982b1f059add2ab7798ad157
+c8f135d7af0845736762808fed834738
+c8f2bef0588cd54459868295b1d046ea
+c8f491c4c56100365e9d63132aeb4283
+c8f503beefe8af4c18da6c6fe3f3f9a5
+c8f6d19d949c950b36a114fb84df344b
+c8f7e0b244ffe3d7ae533ad20b75d45a
+c8f812e1700a1e978943848b3ded3990
+c8fa2ff944098ccd45024883e5359b73
+c8fa7418da2b22e63105e19e46bba698
+c8fb69f613e8708c68d3304afec8c028
+c8fb8223ba1c2db29ddf5145834136f4
+c8fd6123b876031e8c7b2e7d9b5a0b55
+c8fdca28c267e40b7fcbb0ce7dbf7aa3
+c8ff734e4fb5c6ec210e12e1ec134830
+c901c464200aed59fd677b71d4559104
+c901fc07f7b1036de6bc7103c29f2aa2
+c903d4418bb97cd067d64b47f41d2b3e
+c9040aa0515edd1131926f2aef078628
+c90538c91c8295486b4d74dcc9a6f73b
+c90638c4bfd289ed524b20d2f0e05185
+c908712814c515b6d4cd008437272afb
+c90b28604e8d580529dff0cd7032df98
+c90d8c4554d24db29d7d4374832008e9
+c90f62a8ed4240bcf1db3c900f1a59a2
+c9137cecef25a7bc66c2684d52839389
+c9146a0cd169e98f0fdbff459114e09a
+c914c03d93bfd9585472609d4361af1c
+c915acf60cdc64e894f1b7de044f1364
+c9176bbfb6b6c0b7c8bc9c33ca65b7bb
+c918c017282b70c1a95fe78f91e3f05b
+c919dd4b16e45d558ddef5d5579260f6
+c91b5678c4d73279b94c646413904116
+c91b5ac998b8cabd048a9e36afde00d1
+c91d1e87705de052479101682fd876f4
+c91d570d2ec34754efea1d2162253c9f
+c91de6d658d6d36391c00275d8ccbca4
+c91e040bf3306204bcdd84cdf62f5c9d
+c91f806dd7cdb5f4fecd5de239881add
+c920c149b18d940b09fe26805bf56180
+c9213a7149fd3446d84d6526dd77ddad
+c9222b63b382e18723d3a89cbc4d8caf
+c9225e4fdff0e0efb5cf1e195adcf539
+c922c72b0cfe251781dca5ded5501c75
+c928f37526455d9026f1a9c7745f9d47
+c92a5a113cc9729a620ab84a375a8a4a
+c92aa641c2942b967523b2699159fc2d
+c92c22bfc5f861a9a5c9ecf305c450fb
+c92df6e4a88a28a1df4729ff12d6dc13
+c930a267e99e4c905a7eac9d45202d7b
+c93254fe2f05f0c7e90471a48b447b81
+c9357051355651603ee67bc3c577e93e
+c9371a60155a352ce4931fd252f8249a
+c93813a60954bbd1cdab7127b81b1ecb
+c938d8c56b4b4bb80c3ff6209d1d3cf6
+c93a3797b5ffcbcf0525b3e88a95a7c0
+c93b8088eade7160a61956f349cb8393
+c93d6e4b1a2814434ec1dbe893cb4361
+c93dd6aa6c4ebee036d2b79f7b89e9ef
+c9409d7e3053ae782b65bf2d83d44e52
+c940fd9294e4d36243cc992e169d6cab
+c94232a673eb23fd3128dfed5a88394a
+c943aaa999a395a962ddb811e9fac405
+c944817c9eec77ab2dc24d68d22f06cf
+c9471c7e47c80b13f71cc3966a6f884c
+c94ae44a74de164615e67f84766352f8
+c94af86bb168828cd2dcc4f93a606461
+c94b5aa89573d2ad23de547423c5531f
+c94b60050fff10ff7c84653fb431a606
+c94d830daad392e66aec2c82542a3152
+c94e92c2392e59e738dd4ed37d93cec9
+c95048781ad1cac09f75f17950714b7f
+c951aec15d038c3557961f4069b1cf70
+c95320bf150cf9a3111bc40a85583fec
+c955c8c4f93f27bb8433ae7350084674
+c9572b19b76869cbc8a3cd7ee0379a21
+c958039f4ee6c329482ad42045105401
+c9585d1d5c7a5c87747fc8f33adc06b9
+c958f344fbce9975a4e8da476181100e
+c95a6b02adc906ce1351b2f37804be45
+c95b6d1dce3fef06c8322ca27f3e841b
+c95e34af3190254754a8095ca4bca892
+c95f8e03ba1bebe947f9f3fbe1848e52
+c96092c99bbf7c813321e5411b31dbd4
+c963f841a30d677cb2a34bcec20429d7
+c966291389117ab8a86117cec9871bce
+c966ca5c31f32bf252f8bd01eec08f58
+c966f607d9d9be581e6ab938956f4c36
+c96a727124d1ee4aba5f76934b655cac
+c96bcee932dc71cad4080b309ba254fe
+c96ed5755b8e223408d19c114abb1129
+c9706ae819a2c6728c4ea4343c0c4dbb
+c970e59dc5d45886682849ff7fcdacdb
+c97118cf064e3fe71c491f7936f098c3
+c97291936d5ea2bf81869ed0d464faca
+c973252d6544876a1575c797d58195a7
+c975325a193cc80ff6218239513cb9af
+c9760afc3b8ccb80de1018cffaed7a57
+c9766bfacea59e7eacc27fb8e9cf2e7d
+c9769fffe7e1fcaed0d692cda5f11cdc
+c9789314bd1bd6a0edd39f9155ea881c
+c978ce3385658d8d3d6c8a840e330699
+c97b653e416e2c64db919fe095a97c19
+c97c0606aeb848aca9d2063ee702c6c0
+c97eb85a03d93ce1d4a1493d6cc4c73e
+c97ee1594524cafcb26347f9e7dd4912
+c980388e23b789d7776a94b93e42f472
+c984362066835bd1e28cb56e3c49b93b
+c9848145f2d1b74ed7fc25535dccdcca
+c9855c1df25b014a29c3cb9b501d657f
+c9862da6dae93b5ec0e6343d7a7f9ca0
+c9883e43f842cfd6a53a41f03e4c8d9a
+c98881985e86db2793e77925e0ee1f6f
+c98b94c8fb7a49e0c196fdd2044e92b2
+c98c8898944d0af968f7ee15114567cd
+c98dd4b5164b5e9a1847a5dd172e99ec
+c99127003b653caeb064422c3bb1eab1
+c994cc4b1bfc162e1393fbbd91f0516f
+c9954314c0a4af38dd26a0d3c4d30543
+c9970a491af9e7e0a7abd25db95bdd3a
+c99780d5fe04ac61025d19f39e1cc4d1
+c99b76e0bedf2193c2c6d45296060ac4
+c99d64fcc7729d96d1d989f1eff9e437
+c99e979a37d7acb1e02cd491833341ec
+c99fec6b22c7f6e8c35e14138cba7694
+c9a2b8700f09c71cd0613822fb6d3047
+c9a5eb4ba38e9545ab6a78c11bae39ee
+c9a65923983f38dea3aed96f15da702e
+c9a74b268e8990f7ed4cb430974b0ce8
+c9a83cc7ef35fa9dc69d4d7bdee57eb9
+c9a9e7353d2eb74dd657402946cb62f0
+c9abf4b20e9ba9daa813e94774a6b70a
+c9ae773056f7d370502fddfa70488977
+c9afc919e0d692ee80d23e1e109779e7
+c9afd697913f6aaae911b4ed5262065c
+c9b10c0dc306f1ce7063eb5d49c97527
+c9b16953a3189f9f0f94b4b3052ba4b4
+c9b17506d16defebe23ce186bf84df38
+c9b77d033120de872dbe1b0ad9cbf8ad
+c9bd62feed525fd2cad60dfcd5bb934b
+c9bf6dfaaa219b25092f96ecc01ad88f
+c9c19d484b2b0b92b1d3b6ccfedea94f
+c9c4575da1d1db0c8e5e38a3bde2a3e0
+c9c70dc47a4dc88b70de6aafaf781c2c
+c9c750a36f45e640eb05b2e1d65c01ba
+c9c89f7a992872e934ff20257edc155c
+c9cb06caf8ee9cb407b9db57679b2703
+c9cca50aa0ba3381e989611825ca5a46
+c9cd99ad30f4d427ef928fa023633c59
+c9cfd3d1211f6bb16c6952e36fdb0771
+c9cfe17cd2c973cd608d0306cd2039f4
+c9d0fe9825d0a63c7c14d390b936361f
+c9d13338148ac7ad7feef02197dfa392
+c9d25ed5c49fb803f86c00fdafb2a912
+c9d3892d859243b65217fe5924ee3c0c
+c9d7c5113a9fbc54ac0f50e3208cad40
+c9d8afe4f371ba66ddff23bf9c1d70f4
+c9d988ef31909e06660ede158fcfc6af
+c9dafcbd8e6e35d7feb333f071469f84
+c9dc0c17ad22dd9fa0c3073758bfefb0
+c9dd859cf54d849b30cd7b3110e3af5f
+c9ddd6763ee1407dddfc422497b25ba5
+c9de3bb441a5ebe306fdf8a2076b4999
+c9decaa94f49b65efde0bfabec4ef032
+c9decf905a522ecde8710d3ad72a8869
+c9e0c78bf82650a462055f7494e70950
+c9e120d78b2f76e79e49841078cc56ec
+c9e22bfb0eb621a504869de732befce2
+c9e479668f5783a53e0de5b36a0484e4
+c9eb5936ebaf1afb70afb07442680ca8
+c9ecbcd7bb0738c12c02958c3c291097
+c9eed3ad3e58906fc69e0d3d67da90f5
+c9eeeed8b519da2b96f6f7674af9a9e8
+c9f2fec98cad4dcd4b570b35cb91a77f
+c9f4745e520949dbec32897a0960600a
+c9f5db8bc29714905358df69fae7969d
+c9f601ac68ec6b740f0480587b1acb6d
+c9f81614604f24f61eab354d3690f998
+c9f9ae44b3692440964bf56bfa545274
+c9fb2131e0598aaded04e3dfbdc8e71f
+c9fbe764bbab6979c02513193c68ed15
+c9feeb530b2b4f002c0b5740bad30290
+ca015d4162dd74eb4f7970a421dedaff
+ca0190748117809bd944084f75f2fd8f
+ca022b333476cf0f9c25e4b18a60418f
+ca04612fbae159efb02e52eed2407545
+ca0778635184bea008ed22b32a37e9dd
+ca0908cf1b532df376d5a4cb57a6c7d3
+ca09bdc976b58c7172b4bd278f307a50
+ca09db494d5b2eb2deb5e0b2fc87bac4
+ca09e4dad6e596254546de26f20e1fca
+ca0bf022fae68e60549b97a4943051a3
+ca0e0c30efce45e612eb80da9ae74f19
+ca0f87ae2740a4ea6f62e2730a90e89a
+ca1263d2d9f282063468dcf6520dfac6
+ca1495863fd5c4483090e4ff8dabaa65
+ca156c46c2babdb3bb0dc5463f62e4ac
+ca190238d2069686066b55b8323b3a08
+ca19ce33742928f9a98decb275efc862
+ca1af0bac10f552724a0ffbd8fdb583c
+ca1ba993e13eb7e111f486c934e6597e
+ca1bbbd7c69c4484622302edc1b43c89
+ca1c50cedf52354c711ab8cdf8e8c59c
+ca1da282ec652e3ac4aeee189c787685
+ca1e43b9b8b8dfb816fb784aa27f870b
+ca1e4be1c0117fe91d1e7b4cbd165ec5
+ca2094810ade8065e8ff3a5ed7aabdee
+ca210ae240da1d1adc2111e683b4420c
+ca2154575473b239d5762a9dd8bca93b
+ca232fd5cd14301ac37e546340748571
+ca239728f18aebfc4cb78c7d4981d8bf
+ca254ecf99ab8e16ed947af84c14c84a
+ca27f8440f908f8adf1b0bf4ee29879c
+ca2a30bc0261c490218745d09901e7f1
+ca2a6743bc1d1356776b7ecde4b40efe
+ca2b624043598b33d89e2912a01140ef
+ca2b9e4641b24e259ec28c22192cedb3
+ca2c97c052eb63b302d60c4cdbe1b771
+ca2d4315447ad01d7af21e6e77dbebb7
+ca2e6dd2fce8198e7f542fe34d6a64af
+ca30be56444faddf074951f5728d05cf
+ca30e970eb6d9b8cf4e0df36f7d98f60
+ca31ced64e07d45538084f78593675ed
+ca321c4c882a3b18257f9142eb51e2f3
+ca3287314dc2e6b2ab20af62dd24cce7
+ca3388bbc831185b94718b4fc460da44
+ca34c9195faed912347f6298427a58e5
+ca35a4fcb4685bc9a5b60b056b165d42
+ca360e16b9a34d4e67cf5c15cfa019c8
+ca368c4d5955fc068698f5ce8a1b65e1
+ca38808832c8fdef7567b47c68b761ca
+ca396872bfe9c36f9025f8bf66cb0570
+ca3c1e9fa0f47fc8fbe2f8a317db2464
+ca3f7636b5ad8bd9bdde34d98c0bcd08
+ca40c8ec7afef2afb0d5cdc7bb9b22b7
+ca44520498fc2bc31d1398527f3311d9
+ca4521708b7477bcf43d7649ad105138
+ca4819aaa883ecf50f58c4dd7f76eab3
+ca4819f751e477eecae751b87940e622
+ca483a9ab7bfae81187b126e9618abd5
+ca49af72e7517c15ccfa69912e7f439c
+ca4a7261043f16d99c46b29f8f255893
+ca4bb2df5b40a894a21e81526ac147f1
+ca4f5a56aaadbfd42b2c8dd98122e75a
+ca517eb11e51ed4f1a3987785673f153
+ca5477e421ce1bdca10c7c533effb796
+ca5534d23074699f8524be5c456fe1d7
+ca56725304d72128609e730ad4ba579f
+ca56a2bc0db84b8c869f2bb1ba8d8d1e
+ca56ae7990fb049e3439ec432596f49d
+ca574f6372548848ea6299138151e5ad
+ca5752b20db1a5714a2dc1296a9802a8
+ca5afc076122c1c5226dba9f3abb5757
+ca5b060c18094045a0cb01a5d40c8806
+ca5ce677031a6c8941677dd0329a6f72
+ca5eda939ba4ff11afee9348bd8a4fe1
+ca5fd8326ef3c98893e7a0145d68964f
+ca62317c2de134d3e27a4f073f53c739
+ca63bd4a860d4341e0a0fc01093701b1
+ca652e8b2917786a9a36b08befd0c468
+ca698d9aba3217f5a5bd6effdeb744c5
+ca69ac52f916abca680c5ed1157188bd
+ca6c05a92f95d8089523576d0d1f29d1
+ca6c432527d0e08a09d2486212be6be5
+ca6c7018721faf339e39f064d5f153a5
+ca6d62ea11f510fe8ba7bf4a918ee2b8
+ca7118679e983e442c4ef50daa692869
+ca72e3a911b80c1293e33153b3e1d9d2
+ca7352bc912e43ab83080131dad9fee8
+ca73a7a2b21cfd0acf0226ca3543a942
+ca73efce30c26a91180764783e4c25d3
+ca74e273fac6008b049087184be71692
+ca74f3dc84e82d3a075a076e4eafda42
+ca77ac1976311f268779d82bc631a748
+ca77d685e42cd5c39f3fd63a42cd996d
+ca798d4b3a72805560ef81c45f0be93a
+ca7e04dbc311f40706e190a9dd38b9d4
+ca7f90e6fea01789c9236dafb0bf70aa
+ca81988c016978c485bfcf4f3b433395
+ca849ede95b3a50d9fdea841ce556a11
+ca8b435ba70e6048ea1fca19c121eff4
+ca8bf5ed05247d969c89fdc295664f9d
+ca8d0b26aeff1efa0554c5de466edd09
+ca8d56bcc7e34c01ab47adbdae692195
+ca8e542b92488d1bf0e7f61bf6e6de26
+ca8fd73629e355d015e84dc6d68cedb5
+ca91188bb014900da3c8910a8832beff
+ca94cc6d453ed0b2d072fee031868d39
+ca9577bcf6a1343250eddc247aacff39
+ca95d80a480845d4f56089b93f30f554
+ca9a84f0bfa163a467ea626ae3b9cf3a
+ca9c5f08abcaefd4d59fd2078ae8b587
+ca9e6326bee3a5eb50583875cd220bed
+caa157054f0f2f315c79b547958e9ca7
+caa1f4818591218fca6ee290a2117eb6
+caa21042e28255b26c0fb25d2784397e
+caa26e651942dbae56bc1cb25fb64826
+caa3d85513f5f23f32e4b049dc9753fa
+caa4039f5d3446566d01d4039b105143
+caa4c01b31dde1924f8fb78b0ca0b52b
+caa5eb83c86fc7d77e4d6cdd64333c0e
+caa72009577e8f46133720b89daf817b
+caa87c7dfd33254ede6f24eccedf070c
+caab5582e1500cdb1fce12dd75f2758b
+caabcfcc12bb0ca17a0aecfd9760984b
+caac5af1e2125dec85e3f481a4a50ecc
+caaeafecb563ee0e7847bc52537fbe86
+caaefe8714062df108172a8e16531053
+caaf3edf3abc58763e50fb9077ba11df
+cab1bcdd0b2631a1817cd0c4c621681d
+cab369d3667ccd70b1269f42a4f2bfba
+cab4684f3297f516f5858f0cb2f1a94d
+cab51c9736915b98373030fe7e352d15
+cab606f2eb017b56c9fdef12eb939e1d
+cab8988457b3f2eca82984a3fe2c9dd7
+cab95d9f2b4f3dfa740ef9bd4ef35f9a
+cab97f9ab1cea27b7681f1f856b856c1
+caba02ef3c7f243e4a34f6dfe098cc7a
+cabab3f1f25bd18233ca539c79494053
+cabb605c84243d9af7bafe92dc4718c6
+cac0c7f789663104136570c58bba40ce
+cac11864024754fd487eab172bfd1be7
+cac28534f5b64eba84ddfc8805103f3e
+cac60cdc05afcae01708c422ade93c9c
+cac7bcb09a2f531e71db07f658fcc220
+cac8763a1f869d93dbed568a4369da46
+cac8d299e75c9a1be83d277ded994a51
+cac9f315ffa64dd6cd8273f1c8dbf61a
+caca356983925c20a7f1182d8c5bbb56
+cacb31845dc328fcdc12aedaed98ee57
+cacbfa9861bc169c12100837b60e4a22
+caccb4553bea14b850173ed929d48427
+cacea158c089d6f047298ce91ceb6778
+cacedca97c4979067966a58cb2fd45d4
+cad0cd81ed3e0c3d103ec9833a6e7bfc
+cad376d4cf459558b575f799e590fa32
+cad54c41579530a07127f1dc317d8f54
+cad76650641ef43923d50e791f696de3
+cad8092f85fc5c76675861f02811aa1f
+cada2934366802dda0bb05f45ac31a2f
+cade78891eeb015402ae5fac24eb6f91
+cadfaf3f77990b6f998930a728ebf1d7
+cadffe2921f997857e83fafba720fe19
+cae0a63bc46699f881fd05a1a82fb2f8
+cae212dfc74c97dc059442839c0879ef
+cae328296e8450f8a2b621b212bb24e7
+cae527d13edc8a3bf73576f4866f3e56
+caeb9e84ee355bf3254903b332df6413
+caee2addeac69191a2c8743459cceb67
+caee94bc413d0ef312718dd94e66ba4c
+caf065f29444738a99a5c1f923af161b
+caf162834c040c0ce4462b28407bf55d
+caf1ad6b4f75ea69be1f8ec48da57d5a
+caf2fa651e0deb3620da443904066d75
+caf2fce22bc78bb45deca163db3fc398
+caf3dacb3722737b50dd0a3a6aca01e9
+caf45317a4ea42221441746ede18b4a6
+caf84dfa8e407cf45a59ec044a7f5543
+cafd73c3234d89d2bf5e5fb35c0cbb01
+cafe15d7cfa5514fd6e2e11200a083a0
+cb000a0b89445812aeb015991e262885
+cb04359b6168da8562ab2008cee999f8
+cb05c53322ccc013c61e73fc324cab4f
+cb071fd1c728ff567043906072eba5ef
+cb078facace9cf193f2232b47023261c
+cb0946d5b58bebd504ea4f06a7ebca3d
+cb0c196a3a749f54689d7f00e5f56289
+cb0c3bf0d4eb67a382f509b65bdf985d
+cb0f48ca23164532d7c359006f1cb828
+cb1085b0dde7cdb08d62f2c96257a0e2
+cb1101ea6327404ad823dfb5af987aed
+cb1352fa61b799b87794a538861cf957
+cb13fe4ca6886ba4c6f7dd1e10289572
+cb172db34d8a97f84f31380175dabd89
+cb1808d59b2dfcac84b69e8fb41f2768
+cb19dc4cecedcc8292a558aa1e267ca6
+cb1a32bd293141d04e7d146406d3ee2e
+cb1d44bd9579be063428cafd5bdf721b
+cb1fa2ba371895edf5d83db8aa36d242
+cb1fb0701bd0d034f56d3aa3e960f8fa
+cb241e96ecbe07227d89546dd1a4d729
+cb258ff01589a93c190a66f537592c07
+cb27b6ea49ce86a9a62e631632a5b983
+cb27d80af4943092d63e0ac0175b3129
+cb2806597b69419878a7e2ca14ab655c
+cb29ba95e7bbf8d010511beb91b3212c
+cb2baddba2fdf3a1d8f0e8ebf0ce1ee9
+cb2edf61ee2ec82c9588a77574b167a0
+cb2f7c3653cfd92f75cb72fccfd25a24
+cb318531b18d23e5d5627eb841ad5552
+cb31ef360799ab5fb52114c11ba741a4
+cb332a11f7fed43f06b3eb006580f5ae
+cb348640f2f276db265d41b79035950f
+cb36242efeaf168ff5dd6c5c6c8f409a
+cb3c23fdf56c77b1cd0f63c1c10105c5
+cb3f91408bcf36b69fb91cffae517997
+cb411545affcc1ce86141c44a60dbed7
+cb454eed48315bf4051d2043f5308d78
+cb45c5dad9175962a38662538e25db0b
+cb471423ba3af0e83eec9bb2c0f43524
+cb49e5d94fb2b32ac6604b9c5fe07413
+cb4c6c6dd72009e482f9bfcc1d717444
+cb4c812611bc575565551b5c102e1619
+cb4ca49d868e4df000c65290588c9363
+cb4d553068de3a4fcbb4eca6ec4f2ccc
+cb4d85a00552c10686c6a333502cee25
+cb53e8cf3802d84ec22a79a69fb5294c
+cb55ef81f8c685a6f50f821f3e7462e7
+cb560091ac67ae3374038e98293d8bf4
+cb58fdf66ead44259a35f887b1878558
+cb599129d59708fdc4680b1ab3b53bce
+cb5a51ba00a55775af2203550999934b
+cb5a59ddf499e30ecf8ef398696fa4f4
+cb5a64fb3fefccaf0440bcad851a1790
+cb5bff56c5afacb033644fd2dfc1d935
+cb5d1aaa01f863cd6d37d3bdca4b907f
+cb5d8079b6547c51b68f1d70453933e3
+cb5d826e1110615a5fbcdd3f5454d4c9
+cb5e0d49e41601fd0db7027ee8fb60a5
+cb630218d649d1a9be5d43bd6d88249d
+cb636a557ef0854f80e4edd4a1b4e4da
+cb6621e2284ea6c6d2fb783248d43d66
+cb66f8963959bd8ca96af39a17f7b79f
+cb69923cbc5425a51ad94e1dcf1ba490
+cb6a0046837e7eac42f5c085382c0b8c
+cb6a99c74cffb1a6908cecdf16b20308
+cb6b158ef3c5c54cf4fe1d6bf8ee9a9f
+cb6dff36fc820b2d14256de9acdcde80
+cb6e8494b1986da9aaea893f89451f48
+cb71cce2c6007925111bcd1d97630520
+cb7314cf34bc73e19f52a34c06997059
+cb7475a883d17e1d52e39769fc8897b3
+cb75b8752778c4c049e899a490962cd6
+cb78a60b0368045c5c2bf05cbb678539
+cb7c0180fa8520c6a8ac2cf2c44900c4
+cb7cb819b971c81380255caa55a3e3d4
+cb7e174c0da2807c5d07cb83259b27f2
+cb7e38eaa7cbbb3eb4fb64724338161b
+cb7e490b9fcf18f3c58e080cd740cebb
+cb80634275bd50d83b232e1a5487cfbe
+cb80a8a3bea68a7ab0d7e7bc6d516dba
+cb81a588ada0518c10605186646249a6
+cb829e796053615673caf507025af899
+cb832efc2f35045f8291539cac901cfe
+cb87df1b70f8b4eccd669cd5589720fa
+cb8a49569bfdebaad7a5e755331b5580
+cb8b0a8779c20984b52b6b8f541e825d
+cb8b0ba75036eb81ea91fbd518c29ba9
+cb8b174fd84b0bba429d6ea876546a10
+cb8b45cb543be4f95e884fb0089a187e
+cb8e1a07250d7d60bd3286a6b6e6b032
+cb8f4c85ad8071e5b74062776d57819c
+cb8ff14795f811e18c703ff11bcc1d74
+cb90073116953868eb886101f021590f
+cb923ff71e018e37ddfe1525a00535be
+cb9269959a6eb3fa6aa9844a886e5c74
+cb93c26e070d7bb72cb6393e56821019
+cb9522a0bf9ee907f09e1563f3ec267c
+cb95f1d1072cb441c37eae905565c492
+cb966a10377cb4deac765ad75279f90c
+cb97c1d2e3072898bcbd2360249a5b04
+cb98eb36507fb5b76382a132466b3c78
+cb993f1439dac25119906217071d9d6f
+cb999860716a6e84fb4efa1269248d8f
+cb9a1cd5ab460ea252edbdbc26f38441
+cb9d26750a35b47639d6aa2f2df27cc8
+cb9f43ee8d1c509df1cc4bfdd4ac5889
+cba35b11ed5c9052076f4d5f2d1e3806
+cba3b6bea0e97aef4c104a27ca1e4423
+cba3f06de4f5a1bf582087625961c325
+cba6bc15bc42de0bbae9be915e1570d2
+cba838014268d18b2bb493c49052b8db
+cbab1c7b2c54a8068d6f8a51eb65497b
+cbaecc3817b5df9ccb909a2f2f7d4ce3
+cbb115ac4077403ff96b0a27fc18b6f8
+cbb1766d744c2b414ea1b507e1922dc6
+cbb2cd76f635a36aa24e00aa898ba75a
+cbb53b52cb34d8a7a03477c151f994c2
+cbb76f7859176ca328c8ad82312b8107
+cbb9b1c9fa3954a024cfabdb5e4b7a71
+cbba5449481b1bc45a7fc2dd9f983a33
+cbba835dff719928b24d94c253972b19
+cbbd2b6ffaa57dd6b2dbe5b364ec3ebf
+cbbf4b428f416d20c2767fb103af5251
+cbc10cf0cd55360abae9bf666d336730
+cbc20591c0e6a3ab97b8921821a8d0c7
+cbc4071a1461a6075638ad0aa8a16b47
+cbc4ab46d8845844340cc6e78ebb7fd5
+cbc56a368038201c79f2a8c1692926c9
+cbc7a15bdac22c8bc2e5f2544c7a33eb
+cbc8c9c93e81edad99b1328c2fb21a98
+cbc8d06939bd0dba702d2103fcd255aa
+cbca6feba8e363e304cdb8297dc26bbe
+cbcb2c0f4b496dfc2818feabffedb03e
+cbcc06ee780e9e92ebcf4fd558ed6e91
+cbcc3a6dc7aa5fa7eb1e5d05318c519e
+cbcd89debd24db7f78cc3dd738a712d5
+cbcd93d86aed18c394771e5805278da5
+cbced74435dce96f8a939a830e860763
+cbd2cf93b33afb7d6c374c6fcae20fce
+cbd4493806d133055d74b4bc23f163df
+cbd5680c7a375f949592c065a7396cd5
+cbd682859b400a2fb46ee83d41538f82
+cbd6e1c4071f5ab9e0e305dee43c54e5
+cbd8d99284066af6df43b3973c4c9f31
+cbda4808824e72e6f9732657ca92102f
+cbdb9c8075da1d2e172af59f08545861
+cbdd67670b05b8d422acd644bb9ba097
+cbde8a8677860e0f920198d593a59917
+cbdf2ec3a789408bd54cde73190649d5
+cbdff875ffbbc2214ae6cd9b254b55ff
+cbe0b69393d696c20de52c91f2335653
+cbe3c1175b0f224e2cf8ff17fc97dc50
+cbe48bc80292342db3813cbfc0d15585
+cbe4bb839d7abeee70144c43c7190234
+cbe4cfb3a5c61725aa2111f6283b2fa4
+cbe5c84b6b811a8ef4c6b2bb385037e1
+cbe65628977654514b8b0f09c60b96a0
+cbe8f4fe53ac9eb31ef94158740c9e55
+cbe99bae8dc31db33e874d18e9484bbf
+cbeaaf07be368a0b236eecfea5ce12b9
+cbeae29ae4d8d9017a93242b96e9cf1b
+cbeb30ddacc46a69c7ca41b8467e4321
+cbec3191cfdae90570c997055e9378b2
+cbef24e0e93d185c6d4e726682728aac
+cbf0fb8e8ea6922df85d6096156f8936
+cbf2154d7c257871739133a33178b564
+cbf2e72432a816d26c8d0999f20f2930
+cbf323a982d2423007eab2e2c8763832
+cbf37a456a0b6521b4c3e8869320a063
+cbf3f9688257cf3f1d3a6e60c8c1c410
+cbf6a0c5c41223852213036416632dcb
+cbf6aff2bd62a75ae752ed8a317791d6
+cbf90f72b032a6d680f844ecd6df5274
+cbf93c2a7bfcd430c22bb93010b23fe1
+cbf99849cc55f0038483de63ea178032
+cbf9fa4ed3f249cfccdce0d46132baee
+cbfa37241495279b52fe64fb6d8aa8d8
+cbfca1587ba1571bde42c843a7b8957a
+cbff27b918422f3f7863572f458925ca
+cc0124ac8f9772a49f6f727ac39bc426
+cc019577e798080dad27c6b34bef69fc
+cc023f0434ee06a7e2218622f3a35ace
+cc02b0100f7a63dfbcce6c09b2e11742
+cc031e4a02ff66290b2b7fb4bd519325
+cc0609c4466fcddaa638a5714b34cc4c
+cc0c600be175b105a15fb741c3b0926a
+cc10b8705e3bb6998f944fb90865ede1
+cc10cdbbbe64fc415e6fd85a6a8dfd5f
+cc12c63f4163e16ad34419e04d1397eb
+cc151a5ff98c521ea4f9660405bd956f
+cc191afd5ede7ca8b491c13fc96729fb
+cc198d528f67b5b006e4728fdd9ca0fc
+cc19e375e2e8efd996ca6a1ed40d174f
+cc1d14f96944593a2303c3b3c92c7411
+cc1f6eefa65fe0ad2d32de2450067068
+cc1f8d86fcf7a295444012c4884edae0
+cc23f86d37cb41531d636dcc5f304d4b
+cc244bbb63ed84bd484425f23bf791d2
+cc26ae86e86dd4cf5f7da62ca6b15dcc
+cc27648e7a6981e651dfc99b2f8980cb
+cc283ba548942bb55af3f19157d84065
+cc287ebc8a179bdb429a24c12a1accb3
+cc29123677a195fe5d601227bb75433a
+cc2a6a4e475587fe0db859bd774d55a7
+cc2ff76b280b3e939a994bd2884ae265
+cc30f677d7af3e03b5bc3a8cfa136acb
+cc3360de9aaa4fe0a41f41ea5a7cb19f
+cc3446fb96b14ceb4ce9a35d94f43b23
+cc3470a972e67e8dc382259a3d05fd53
+cc34da747138be4d9918fb97324d03b3
+cc369366e2adbc41de87d4d59f11208d
+cc3729ec002b491c460e2656a9267e19
+cc37c13b0d984602f2699d3f16e864ae
+cc37d0d168eab7c032c1ca76e36c77c6
+cc38072edb8418af75aa6fe9a26d852b
+cc42319c0d2b8c2794e9068f3aea9e6b
+cc440895dc3762cd41792886632a246d
+cc45c5950342b1fb63e9bb1ae5782879
+cc45e12892ad031524223d1f419812a4
+cc4687cc004e90fd0a4bf4d82f9fabd4
+cc4abb0a32f1d054a122d5c7605b653b
+cc4bfc3a46b4fa481eafaec0d2e009a7
+cc4cdbd542e9aa43fe23c4586615deac
+cc4ecb3ba344629844f4d7fdb3a5914f
+cc4f9e15cca669508de8db745d37912b
+cc50086190047f2487f6cce5df6fb794
+cc510d723db10b1c27971bb753213327
+cc524a87c0a3bb64786346972dbcedc2
+cc52c3e0fa40bf9902fbac333b5d960e
+cc561c8e6d8b3cb74f5c571fef59f48f
+cc575298911d8dd8e5969d704c9fcb79
+cc5760351b358708a886b39a3a0a1fb7
+cc57a3170659d54bd21077294675baf3
+cc5a43b54e0a0b481c10889e6ed6c675
+cc5aab7442f5478b548e5165e0d0480b
+cc5fb6ed6875c37e2b2e946591992189
+cc62782885db4c409709af75e976aabc
+cc641cd4a773ad9f4cffb5228f1a85f5
+cc6574e10ed17fcd7ee9b5fe064e6986
+cc6584f54f0d2ba99cee06f4ccd26211
+cc66392299547ce689cd0c1407b2e4df
+cc66c37acc67d49f9e145528aba30d33
+cc67204d264f71b7a0062fdc54eb0b84
+cc67da7dcef0d83d1c0cfcfed02df2d5
+cc68ee76374c07266c1f3c6d01ce1adf
+cc6be062768e334c846e051b4ebf5776
+cc6d14ad5c331ad04d56351648d261df
+cc6e76b559fb864675993b7cd1f2a1d4
+cc6ebb9c13fb140c81441e01dbbb20d1
+cc71b2fa94d18743c3b96c0d9f9a2695
+cc71ff1ca46ba592257a731716ab2c84
+cc742f2c760d567d691e95f692450d1b
+cc7576e2fb71894122df0a16e8164d7f
+cc776f9c265d59dac40f28988b709e1e
+cc780461ea336cefaebb576c3d8c0c78
+cc78b10098a955c92304bc92d42c764e
+cc7909eea2689ad5d2f6f8fa446bcca5
+cc7aa1abf5a15d51fa3355ebf875e695
+cc7b1bee46da74e2afbb6d4ada4d5974
+cc7bfa70c766782f3880da9f99e84aba
+cc7cf6dc89477cf7c614732b5362adc6
+cc7e647f85abb9fb854ed7001637bb6a
+cc809167f76c6d3409d508d7714010b7
+cc81e9011b3449cc05f80943955323d4
+cc8407eddf933dcafcae2a8f18ccfc14
+cc86f8a90359eb17bbf3399509067dbd
+cc882ab91d7f1f86a17fe214bff8943f
+cc88344aafbbad6785f72438f39743fa
+cc89cfec63dfabf2d030da7572ea1dc7
+cc8a7d3f83d0925b91a12c1356ccf768
+cc8b808b7a4c0d48fc236d5ee23aeb86
+cc8c96a75e7bd468859aeb70e3fcede7
+cc8fb366db50005055c37530fc3ce7cb
+cc9030d3e0be0caff4ecc992796d751d
+cc9194566093f036b33bea4ab6329393
+cc933a002104e0f3ef90688b149042af
+cc96e4ddbd096a4af52480ea620505af
+cc9914560f6197b696a08c827fd84edd
+cc9a495efb03bc6d3118470e230e91fa
+cc9ade658bafe3c3bf0192ba13efaff1
+cc9b40737b8bdcb1291b95bf335e3aed
+cc9b6b9da0c5a78a2c2260cf45542fc6
+cca02436f1954b4097709db575b7606d
+cca245cf11a377aba0eff5a6e5827c8b
+cca3e472da7adb52f6c9344890ed888e
+cca465bb210e8103261280e0aa597de6
+cca6a9fe9559fc6b1b351115cca8c509
+cca725e86d2a3e2c7446b6c511930617
+cca798ad16b61787167eb9d365d797eb
+cca79cc5ea29814e98e55837b315d788
+ccaa43756fd9858323ddb6e462d0f8ab
+ccaca57bc58df4fec1400e5b9eb43c47
+ccad02fbbf4def4dff2a2c3c612891f4
+ccb55c3b64b359540efaedcafaa7be5d
+ccb648ff809caedfae4914175544972b
+ccb6f3efb0da30fa33fc71961595076b
+ccb9a46f0d4f9bb2bec55d8c19ff61c1
+ccbb3de62bfccfe4c57e12abbc9bb786
+ccbb40fe494578b0da2297c811c38994
+ccbb557c3d020bc20ed1c052213504e7
+ccbc14c9bb61dc544b54c8dacdcc9254
+ccbf24a4d16a81fd842ac8f14254af29
+ccc38739b1e6488d8db15bbefcaf61b4
+ccc52d0734d79b5588e9c0e303f6b433
+ccc57e61f61bf97f570fde0e3a02c9b4
+ccccecbcf0cec12e9856f1bde6dc5895
+ccce38326fa5a1f1a89be8ea042dcc42
+ccd20e7eb53b92615139c3f94da5430f
+ccd49a5901eafec768b8c12634011b11
+ccd6832b08b8812229715f68dc4e0437
+ccd6b21179c3666982b9d9aba4264fe4
+ccd8ef5d36f3bb64e70accb65e3891c0
+ccda38420a76c7fad49da5bfffb9f98c
+ccdc4ab7c09feaf24a29f6ce12362ae7
+ccddcdcbbda3325403a7553cfce918b4
+ccde7328a7d300d0347a6cfc96319428
+cce089abba6eca589534deb1e630ee0b
+cce1fc1dc9d840f8de29dbf0e14e4bbc
+cce26208996d61e8d48af2ec74e9746e
+cce2e7bb817cbc3ca91184e3a942f6cc
+cce76f140aa971aa67257d83b24579bd
+cce857265ca25c8c514302eae85cfd3b
+cce989e7950311ec029b78ea688d7860
+ccee74bd72f7d75c3b0f9d339a4be584
+ccef5ae6cc18034f56e6c0db2d219a48
+ccf43be15ae460a5e981c6cc24b568d5
+ccf4c1fabeadfd9d5206589a9529a6da
+ccf7288201457015545b87c1f4e23137
+ccfb1424fdb62c66486923184c7af373
+ccfee191fab36bd275b4fbddb4e0a73b
+cd01092264efd09c2a5d39f129a2e6bd
+cd01965c341c41aac6b697c32b7d312d
+cd042b6a31b640f06e9241bd26492b6e
+cd065d1837560b21564477bb8ee8a138
+cd0b683827f310583f76935949c17a26
+cd0bebdb6fd3c58a18d24a65e73ab457
+cd0c9d1a6671edeab95fe0cbf49b52c8
+cd0cdbc6087b05d1936fd508a336e824
+cd0cddd8d7414bc2a0c3cff2f4db6cc2
+cd0d3609f5f761f7dec3d4a0750659bb
+cd0d789a624f6964cd8d37ff9b84339c
+cd10e789372447d219250a3b7340111c
+cd137127745f1b6123716abb05ddafff
+cd15b2614ce031e03c8e4e709b7490e1
+cd16edd9dbe49cbc57fc1b1fe8b8c19a
+cd17e0bc478e1ed43f2bfd12531a5eec
+cd1a94a842ee92983ad4b5412506df51
+cd1ae89b7a83186306b1b58633a2bf98
+cd1b28cc2fac3e41b65833562a00569b
+cd1b46830928679690ff0eb75af321c1
+cd1ce663de04959c9356f146050408c2
+cd1ecd4fac102119032c03e22f4667ef
+cd215b823abf65d8989c23a5744a4977
+cd2636dfd5c978af262cc37d5f762ecb
+cd266bab945f92e3643ab7b3be71911e
+cd29c2ef5f2d76f7bd91ef9865cf7f56
+cd2c36e816e8bc64a312c2e5e26ff9a3
+cd2e4208b086fc3b7bffdaae4363b35c
+cd2f011012cd3d7e9b2c640053489a39
+cd2fb561bfae2d90cf6a7b9cc52deab9
+cd31749bb403169ca578ce90e2098b2a
+cd35928dbf93e44040a199a7e11d9be6
+cd35c2a698a0e58437d529743131de87
+cd360819edf9fcdb36091e604161f9ea
+cd36ef0388c59bbef1cb3cfe196d48d7
+cd39800d7d2eef52fbc4fc6b8721a8ef
+cd3ae427aaef11b0f36fe4be47521280
+cd3bbdb619277bc6c0fa77cebca9936c
+cd3c6e9549e14e55807e34dba2d64583
+cd3d636d3a5dba56eb8be46ab8f3aeec
+cd415c3614f857a0b264fb0ccec3c323
+cd41ac6f780b63d38498584a7789e033
+cd41c9c98015c51091aa1c47e5e008dc
+cd43b72e2d6348f4f4f1ea1d5f4dc94a
+cd43e0c0212972d5a5533e98d68c1acb
+cd4461f5aed6bcbb0ac98315a18e0866
+cd4826dc122b79615a8ff1796d23171d
+cd4ba304bfa87dc86011c662ec32e78f
+cd4ed706a3c78b98e7506e67b3575942
+cd4f662d43bcd92c3efa84f9011e866d
+cd559ef1269e460ace8ae89a93caf4ef
+cd56d1d950dad8ec04a5dcba9d761ac4
+cd586e2dc3fc671f8908e90b9e4728b4
+cd59264f3cb867fd7be2a36904a0ece9
+cd5c7315eb3e4367a943e782b958fd2d
+cd5c9c2c6fd4434b7243abc90bb087fc
+cd614bad987d92ea4dbaf2f66e11af62
+cd628edf9b1271b1f4de15554ce540a2
+cd63d93a224bf25ec62eafa906e50e67
+cd643ec8edc66d87111cdaeecfb56e11
+cd65ce1dd745932c97c48fa429698302
+cd65ec9a85993d154696467b2a166f48
+cd66904f013121d89fa72ff0d02215ec
+cd66b734370e9ed7cabcf2a85e2c3c09
+cd6801a8fa99540244c0899d56717a6f
+cd684298800615c43ea2cfc4fcc03408
+cd68f06a46fa67aaa0650c1cb892b5dd
+cd6bccdef4046defc710486d329aab96
+cd6bd04dce27274d98dd2816693f5ad9
+cd6d1146ee30b6ba7d173847ff2764a5
+cd6d7e155397db5263932aa4f597706a
+cd6f87639cc14c6abd00f307792fa0b9
+cd6f90d84fefcd53d8f6065599837a7f
+cd70fec49d17635c39779f0ef836f7f8
+cd71f10f69022ecde8f1cdf631e93d66
+cd722c735f20583f226593ae2ec92f80
+cd7274f7344ef12037dd2ae36aae10c3
+cd736792c429a5fda3540179aecb4734
+cd74991d6af462004ae65a91447b2f6a
+cd75eef241138038083b23cc0a9c038b
+cd76cf2de6c14687b8998acc85f3c5a1
+cd7766ac8acfe52a3329003a3fe27cff
+cd794e2665ec10158ecc7aa2f7639eb9
+cd7c0999091c15b02740b3f67e0cbc84
+cd7c5a12fc6819693e17f5b662abf4b0
+cd7d24dddae3ba076e5de7527b948f9c
+cd7d420f9d60528924459a90a28a84f3
+cd7d53f85b4de1731e5f97e0bcabccdb
+cd7fc196a0c209648bc8602b78e672e1
+cd81b60b5148a3d51f16fbdd641421c8
+cd8253ad90c06dc3adec001572e4658a
+cd835f72297961c91894323851984169
+cd8488980307515cbaa0f91d839be4ce
+cd84ea170833f18c4d2d25b8e2e7a16c
+cd88f21eef8b4a4843125140b856990e
+cd8adbe1e796eeabf7112ee568b7480e
+cd8ceb03f61f0964e047d46574d7a299
+cd90083856b4dc1931189c42e25affae
+cd92657c95b7ca8e1d27e627a663f4e5
+cd92f56b474f2393006d8fc1a8f61da6
+cd93d1b0c245b62a9cf7a765cc04934c
+cd94778efc1478d0e0c66047f7ca1224
+cd95369d8663ca191d0198389515c0a9
+cd965f10e5bf7bd069d3130a98db14c1
+cd9676c54d90d2bd55fee226753c63cb
+cd98e1fb395d38d889d4a99c7e77a798
+cd98ea4ee880c322614e1362b7bab6a6
+cd98f0ae17e5018b0dccb6ed529836c1
+cd994f54b584b558868f4f60a9095088
+cd99a90ed54fc715fa4653ae9e306302
+cd9b50bd3ba7358cff2b7661c40c730f
+cd9bd38246b47f4dd6320a2975fdb45a
+cd9d7d47324b7c2f4dc7e6ce3eaecdff
+cd9fbe7d068ba85ed970b634161e9303
+cda1fd9609aa772fdee19be0cf4cc5db
+cda25f28df36e733bcdf6c88bfce3b1a
+cda3f165fc624dc19c6aa8c518e03ed8
+cda46c97e307ce8829bf756ffd576d46
+cda525393cae4541cf7cfa11304ad61b
+cda5c2d084002338cdc31307cd6b36c0
+cda78ef66845957041eceebc653a7937
+cda8b541f1afe3efc76d3c2ef7323d65
+cda93bb3065213b87d60ad065c5e42a1
+cda9937313c55594fbbe0b94c93e6721
+cdabfa4947415ddb3d0c94e833efdcea
+cdad26ac584c037e388e6834ba65bac4
+cdad9a447dd1e13591712a936d8fe2f9
+cdae9a5d536184d6346a79fc753efa1e
+cdb037c6aa7a0821b1ee81b7cb906563
+cdb201dab37158e6f735c9b881bc296f
+cdb33a3f4eb9f4da46bca663f46f1c4a
+cdb3d87a29ca9f284ff3972eda189d21
+cdb5202ff75ccc11efc5f2d31ad99f44
+cdb581b6b0fb44e472fec15839b94fd5
+cdbb3c222e051f6b00bcfa7fc64eb155
+cdbb9745a8bcc13bc1a72a188b3cd769
+cdbbaad23cecbcd0f92f3363f6d6b8aa
+cdbe2591ee4ebabeb76ddc82247b62ef
+cdc0cdf3a72c7c8ba3f8d42d452924a7
+cdc25c01cfd5d362dfb2791a8d156503
+cdc3dc84382d50387f5ce2096ad24428
+cdc4a638fd95ce504a91de24f5c323e9
+cdc50a660c78f2412366a7351a3325f1
+cdc86b2225dbb52b36604ba9c0629292
+cdc928c33e8282a691e34bea55cd6052
+cdcf3e95c69705be3a30d4b90f7c3961
+cdd15952c7a518a806b6787a713a8951
+cdd4103e1ca488bed5a59f4ab18da23a
+cdd9315186f14a11cd545e9f18835e01
+cddcb880b143b1a1c014e709163f9fe2
+cde24efb7826c804b730f82c12770d89
+cde29dcbe09f9430eb866fe6ad3dcf2c
+cde5767c83b73242c1292d5cc2d97096
+cde6dab773f6c3db7ba6e2c92af18ef5
+cde86933db1ddc469acc431d6f9856e9
+cde8dbf31332b79760d17cfe15107863
+cde945a41cff38108b70bd02c5baa11a
+cdeabd6715f0983e851aecb99a951c9a
+cdef951b269e652cb71406c5aa33e939
+cdefa6124dfcf90ecbe9a2be746d4f7c
+cdf257413a589dc573abe39e1116d6b4
+cdf4b901b73db72345c91ff558c35426
+cdf5af0decd41a122cc0a4adba55d2bf
+cdf80266bece467aba3c378a06a9fc7f
+cdfa6d9ceffb47f2b8cf05f6c13a3424
+cdfaa3cb36f58651c81e44c87271271d
+cdfab8cd9096c3e137d1f706c5d09a22
+ce039f51b2de2c5c6290aeef302545fc
+ce0527420603d953c223d865a51d6ae0
+ce07316bb60fa015cd0de51e663a3ec0
+ce0830eb28d609d24e520ed57f48c1fb
+ce08bde6de55db75d91856c9dfed02c6
+ce0e68a71e0297707e5fa5bba25e1c72
+ce0f9469d0d101c721ad1d3d8bc4bc64
+ce1029bd8d46ab526f6bbfa133325f65
+ce149f541380f7f4c4fcb4d47107c781
+ce15069799694f621ad187149ded315a
+ce155517510f43d7904b75d1a99dbb43
+ce185abb8d4211a4f6098596d3593a68
+ce19213e9dee016014ee822db6c53a72
+ce1bc59faedd78dd995225cadec7d5fe
+ce1cfb174273350b438ac95768a99328
+ce1d8d31c94aa37dabe8e15236716f5b
+ce1f16a8c364f5e6ddb58290e4b30ac6
+ce2118490d661cda065f2e768ba145dd
+ce22c67147e6369496694f807b354151
+ce24c7c3ffd38e4c3132c765b79b91f2
+ce25c134b284becf7f329e5141a3227f
+ce2852ee9df78fb230632e88b800ca40
+ce2a9dff1b56c4663e614a9c059fb30b
+ce2e668aeaf03ed4caf0662595d41eed
+ce307ea56edebd754e1c00b9f4d2c175
+ce3182ccef66c88e46dc2819ad42ca6e
+ce3363e5bbbea81b7f7c0f50a2239566
+ce339cf109d2408eb074267329d4e336
+ce34e579c37e7afedd17d326b8fe5ac6
+ce35c3e949ea714e84604121643cdcbc
+ce361e3fd4d2c04530e39d5a44f9d823
+ce3898f22c0596796ef76a49b005e40e
+ce389a253e1cd6104df0f06839661d3f
+ce3c0767e606eaa5ec3c881f7264d54d
+ce3c0f1c135a81faf17b6a3a6a0b4ee2
+ce3cd68a2281be69556f0b9fd56f8628
+ce3eb936fb5b332ed7bd431649ee9157
+ce405bda6a9df7cd68402e5ffcd03e2e
+ce41d9997d1049084c920a18634ff405
+ce46bb377956a0de61080988ea7b592b
+ce49cee67d3fa5050b7439242e0c39c0
+ce4a099743fbcc3a9020bcdd2df1980a
+ce4ca8bd41d50c4db6cad8c7c75a51f8
+ce4cc12d319e7b3675495eb63208df31
+ce5354ff079a64b85076d6de263a5a92
+ce53564ef37644f63001c6ae08d15328
+ce53f62ba78fab4005780cb29b85d5c8
+ce55116425d6a5e7946b9c62421ad49e
+ce57b3f18d55041b2839115a9ea0e58e
+ce584f7b05595c4b84e678dca5e6cd88
+ce59b2f21985eba4ca4135ebfa5d3da9
+ce5c929460b066e849651e9365781225
+ce5d8bf9a3d9c310f6e3b37d08309c62
+ce5f293d504026c32464a3c32e67c3fb
+ce61239de4ef9188cd967bdd8d52898d
+ce65d6605c1171d2e66cdec017b18226
+ce65f1dcb15385a40ac009ae44213fc3
+ce667431c4d8d69cfb8a6a9fe806af75
+ce66b7939459a29edcedbd547ae32471
+ce6994bed569cba6e1a15acae4b10e97
+ce6ad59ced831ce1c90c32fd8f7a6e0d
+ce6bc6ae9010367abb286b6ed31efcc5
+ce6e655d8e05620b63bfb61a073d36ff
+ce7060d9445ab86c6df016c4ef1f6035
+ce736fa9ae2a7546637308100ec5710a
+ce73a849a84821b83ce0717e8abd8e0e
+ce753a955aa8902276da9b5563ce57fb
+ce76bc4bfefea4c782175632821a3725
+ce7770801757389f8049ce2e42ba8c39
+ce7944898cb8191507a6f5563373abc2
+ce7d09507490b631c66ed5ca43ca9081
+ce7f575c453ee548cae1d17022ed3cee
+ce7f81cddffd743153c46519d555b846
+ce7ff5160ef01648e82988d78b2d815d
+ce803b30961ff2b8b96651918bb2241b
+ce82d840f7d2486d6b9794d941cbb928
+ce83fc75f22c2f6d648a32ef9fde96c2
+ce840ee90f1ce760b801ca3d99a86794
+ce8486d7ecaa1551a0420bb6bf151a2a
+ce85638abe130967da0d3fbe12754715
+ce860c2356a2c9215f456aaf6a43811d
+ce86acbe833ca40a28b4db58eb8ad1b2
+ce88abb9e8b7cea11a852d3666810db4
+ce8b12b4ef048c4e09afa7db51126b35
+ce8b781736dd8c6ffffc23b91e12b585
+ce8b8b6a2e0689361981c758d5ff94bf
+ce8c124ac56bdef689663be66a405abc
+ce8f51ed1a082d3428760f14379d179d
+ce8f71463b78742d0bc854e130acedb4
+ce90846debd318f036a1244ca9d26597
+ce961e3495612c1a174c3d62db547987
+ce96d21024ffed7cc2e2293db19dfbde
+ce96e53e72d4f5aa98517a57c042d9a9
+ce97c8b314874cc8361828a719d8b9ce
+ce9b5bb21e6e02a095363cf48a712794
+ce9d4c0baf45afebdd33a77b3fb28e81
+ce9e28ff23c1b65603fc6ec7612667f1
+ce9f1edd56b89d15dfb1a826e7bea11d
+cea33ea1a96ddb3026897e8461528c92
+cea38e138268feb7d4123e582e5681fe
+cea4b358e614931121900a2948f3af5c
+ceac85788e57e1c63934de6127f39499
+cead5de32302c9a82854290f52f6f288
+ceb1d56a60eae51d3601e1fb5b9d6dce
+ceb4bbed65e8a891d5876c57bef3a136
+ceb5f26ea10b5558c84f6ebe027a6a6c
+ceb97b3b651567d2eaabcc9a28f45caf
+cebd3736b84a51e1ce2b4dbafc8e0b38
+cebe793d8861881838a20b73c0071d75
+cec141212789f7c449a84a82fe7402e8
+cec2c51ea1069901bd926f41d0005866
+cec39123d71948abdd0b244bfcc61e3f
+cec7280bc9c0c76b2793b0752b308552
+cec89f034b55b538c1fce3de3bc920c2
+cec9716f1f5bdec87f774adc59096a99
+ceca246651679761c6a631fffca56a7a
+cecaff46044d34309e3b8dca5f45dd2a
+cecba4881f8c567ca5e52bbb3b3cb662
+cece90b2b82a5cf5dcefeed6387cab74
+cecf253cef182c4582ad0fffdc0e5f6e
+ced02c4ae45a04fdb1f92edadaed7066
+ced0692e69f651b7eda7240fb703b965
+ced1f19c1e9aa471e60eb2757bad7db2
+ced37f9c5bb9ee20dca2cce1cb83e52d
+ced5f88f47572a0ebfd105ea9cb63fd3
+ced710840ecb3835c1db91df744c7830
+ced7b262c08c88f25be7a445e3027c09
+ced7e2bba5d00a4f8c2f9ae22f5aa242
+ced87a1303299292b888f92bf992f1e9
+ced9613c7e8d848abdd4a8d0f0742244
+ced9cc68caa2c58bea16040dece752f5
+ceda1dbeb15a5ca212b4452a40666a20
+ceda90cc461476fd6d1c2d3a66488bdd
+cedb093b2b4c3757d3994d541fb7f0b8
+ceddcdf9245fd235d2887ca1d54a77e5
+ceddf9bf53971397c64a29553933c256
+cedea231bf91f0b8b5581e748eb89742
+cee350a6e8e2c4703d89a28a441f6dd4
+cee40efc9451f3104bb894b683b9112c
+cee54c6989ce27445dfb410d4aff7e52
+cee5649c61e6a3b384a6adc91a6a0a0d
+cee56e2c9312255e87c8fb5d2e2a2e9f
+cee78384106b7452a43172bea70372e0
+ceeca37380c88670154458b12b138f40
+ceef58856688e93ceff24ce81e9107d4
+cef11c347217fa955876efcdd23aee37
+cef2888c9177d60cecfd607ac2273265
+cef3a7e253e1f426a74b8a91c21bd0f0
+cef572b15bd6e0e53bcf999f7a7b0b4e
+cef58ff59038992cf3ee95903466dcf4
+cef63fe568b2aea7151a47bd099c35a2
+cef6a562eee6dde08d97ddc1bece9b06
+cef87dd6ab4be6ab6c85d68c57cfff20
+cef92a9a0ee473d503f2c721f24d82b1
+cef94ec59c73c46c49fb55aa34b1a3d3
+cef9d360cf5eee09944305c0057af288
+cefc678b2d6965ea3f481a717db48b1b
+cefc8248333757ee0fa39aca4470eb30
+cefd7cbc7938a390747baab664014c17
+ceff39b070918fdf7f5cfdda2fc8ac75
+ceff55fecbf926bedb8b639e301eb27e
+ceff96a33262daa063585524b60c3b55
+cf0034211a16a69cdab2c6f56067144e
+cf00acfecbee8794d3db0759eb9e16e7
+cf00dd788f5bb9fc498c679107f8b622
+cf016d3d396ce11295f778f1607f568d
+cf078c2373c0d42e1806238a543ce020
+cf0c7e411fefd0637dfa1a165bf406da
+cf0cca34d71d16ec85ef66dce7a92b90
+cf0dbf6a6dd7d965a4817b49b52eb62d
+cf0f728d6dc8412c314567e9b783822c
+cf0fc33d4431252050ce1331c50363fe
+cf11c18cc7f4c7559806afe4adcbb065
+cf12d0d807080a99c9bff90075ff02e2
+cf1569fa3f33cd6e1a21c16c1ba0c1be
+cf161c3fefcf4fa671fbeb9bfa14c30e
+cf197d4efbaec721a79718b77e0892e3
+cf1b5e4788946255298f0d63007c1788
+cf1c228e3a6fbd597761de345c2b350b
+cf1ca82a9a12efff9a3d1f7fc57e2998
+cf1d4864720ed021a7eef8d74631b11f
+cf1daa02554b849e4130525cb4c55e92
+cf1fd8a636ebb34e0bb2c39273b2264d
+cf2091d9e7d053306ce945133c23a543
+cf232be4a208c5022262fe050dac8cfc
+cf23fa0dbe19a460c8b917be446445c9
+cf25fe99189ae15e6500dc827fbe6cf1
+cf2803e692a4749a780124204dccfff2
+cf2ce43fcee2f80195327cf10440cc41
+cf2d8421fca43ac11462049ae76a65cc
+cf2dfff9499b79ef1ca832635e1948b5
+cf2e8e896b5722980f9c3af971e7f4e4
+cf30628ff8390b998561dbd3e7b42e97
+cf324eb7923f8cf54dde50d295e1fc0d
+cf35af81ccdfc4f10499c8f61db25f35
+cf3729b600311ca10959edbe0bcef81a
+cf373b0546c2b00b5e7f29c2cf2b9171
+cf38581356ba92b7240e2b3932609174
+cf38937ea2afa10bb3bde4cb15772755
+cf38cbc653f3061725a5ede571e0a7c1
+cf3ab4915b73c0f5c37c8e44abad1ceb
+cf3be9a35deff4ccf3c76920adecdbd5
+cf3bea67685ba2a7df75af85e9f06368
+cf3d889e493e2339a08b0300acf93ff1
+cf401e7c0e7f6a49195c32de2f45f3a7
+cf40f04ff33c51e3292ac43fdaef9a1a
+cf4233023239601dc6263c9eb9b68d18
+cf448487423d7148fdf2355b08698e14
+cf464baaa517241af01ed823487bce38
+cf46a0ed15b309ef16bf7ce998c4d9c0
+cf4b3bd238a0c03e5896f839de950936
+cf4eafe187784b07782839b1c7b39a92
+cf51fe98f5d26cb01248a32cca41d747
+cf52649a7d97df7fbdb0d8b421d913ff
+cf56878b985ba69db3c80d91e749c974
+cf56dcebeedc6586e3cb790fb0775a43
+cf5a71d2ef50d4d204e4d043074d432f
+cf5b212c2891aab3bfc6f66047cf68e2
+cf5b92f19d73725ee79597ca416c7146
+cf5f157d38139708ee6034e3a9f24677
+cf607dda9f8ef33c99ac204a08cf47b1
+cf62be85cc30ef3a7f94e53d6a4764c7
+cf6b5f769ae6cf06dda78e1ec78cef1a
+cf6cb2ed4d2ed188168d686d195a8805
+cf6d6fc53b346753928d429c752c783b
+cf6e2ecdfc3f0aa628380943682be128
+cf72667687674ddf429292d7a50b5e6a
+cf7352653b38b8893b3d3eed48543d49
+cf7397a74058359daeee9ff5038de94e
+cf740e0f9363bea215cf6f0940c971fc
+cf7416ef3d3702ab508d4d1e5321c91b
+cf7458b19c0b138d6126cb6c5dd0cbcd
+cf74735d394cccac55c2585a01ba3ed5
+cf7539c62c42117295d2b7cfc983212a
+cf75f24fa22ebd6e6bccb9ef8fb0e79d
+cf7833ef2c25b790b9e3eca4e0d1ea96
+cf78d5a2927ca22ad3004c16f6b7174b
+cf7a04cfcafcafbc4cb12c2ca224c0b0
+cf7d36f9d73b05bc4fbbfc00b20ee112
+cf7f720edeb6855841aa8372e5cb05ac
+cf81616b490b0d4affb401871f6f344e
+cf8193d93d349dd7eee00de8bcc86e00
+cf824c1ac3317e3ae17f74634f94e17d
+cf83d0799843478fddbdb5a1eff7c4b3
+cf83d4881cdd39d644ecf9a0f8137bdd
+cf8597f599dd75acec1ded1ad48ddbd5
+cf864009d92beb20ac68ae6f129f72c8
+cf8b81a890dd405ae0c8fed5a2b227e3
+cf8d2756d159afb7c415cafdecbbcf3a
+cf8d9c197bc242d0a491c76f741c6005
+cf8e49f7b48fa9e338be410fec62cf22
+cf90371b86d295a773a7253dfb73bc18
+cf92ce59084ee44643071a56e7d1d247
+cf93ab37ad620dc06d97ea05e60b7fbb
+cf96a5133a5baed24b47d9db5d0afae0
+cf99b3f381338771036a5879912cbfb5
+cf9c2d6f360a8c2523a594f201642e71
+cfa0670a1c8654c423044792ae227583
+cfa0d8c3ac8d7751b48b256baa5415b8
+cfa2247f7c85d7d5d6c72498d9867cf4
+cfa46b7a5a01619ecef7488d0a1e66b8
+cfa605db8b26e3cb2fb78e8d1ac4dc18
+cfa6d043c7d090aedef9ced2e18c4999
+cfa84e9c1e12a4ec6f16b41ba05eee96
+cfaa95c985adeb14e83d298d513d7068
+cfad42504b8193ec2de85c1fa51e5be8
+cfad7d7cddd3d5b495bcbd80d374302d
+cfae479a657954de18f7856b8d09977a
+cfb02f2f466af7f6c5b8cd2c7ca26f76
+cfb06efe5dc4645edfb048bb9a724b4c
+cfb435e68933c13805dc94fbd788e4c7
+cfb508d42949f56c1c2994e133977711
+cfb58e49126ba1bbe9215959129442e7
+cfb7d235d4bdcac074b6840842656e90
+cfb9e440de16bda23eb4f56927da6f44
+cfba28ad02a866cc3d9516bd62df6f41
+cfbb8f24c5e339f0162690b83e614199
+cfbf82a64d6f1b87d7647ba6881b43f5
+cfc0a5d339eea9909ff6ee4f42ff3000
+cfc5ea05bd9ed61be1744ee558a50bea
+cfc63476099d8d3d43e449bb4d8b026d
+cfc791a55049cf5b81450700092d2718
+cfc79fff40a21401db702a00c177d95f
+cfc7f242408c4043131f9ffcd3243bfd
+cfc8a311617011c6aaab30927efcefaf
+cfc8fe38e6774584886ac3e48f47768c
+cfc9adbe152849ca2e087f377b4aab09
+cfccc655298aafaf15a7b716826ec250
+cfccda6d4c42b6b90356c503d2139bf4
+cfcd063e093187198343b7082a5c6026
+cfceba3f582e2f7bd79346f52692de00
+cfced29740f61b739ec12b9a3ad0475f
+cfced2976e0dd4e80724ab80b0d40756
+cfcee447028895280069cb50346d977e
+cfd213d1c5687c1af240eb7d97a24fc5
+cfd21c3f0aada11c8afa2420832588dc
+cfd3aa75cdbe11c4ef4dc9930e6853d0
+cfd49db5f77b2a8c9661af173d371e69
+cfd59e55527abdd2e980ee296dae21b6
+cfd6c34498a1f64cce5fa82dead2309b
+cfd706ae9092c045dcf46d88ad98c3bf
+cfd74f5e7b199021b8922893a9ae6992
+cfdc50d686c6902578a8472a62a4c02b
+cfde934bab75cfc713554212aaac2fa3
+cfdf67c396f50b8c59a10a86f69bf94a
+cfdfcbc52903aa3589d1b9bf1becc8bd
+cfe1226806ce10655c4df4e631877515
+cfe1c003a5ec473cf739ee1879ca98bd
+cfe2bb8060082b0011aad76d705c92e7
+cfe2e5e7844758a373a670ed4bc19fb2
+cfe3d7949f02e1884a48eedd482c886d
+cfe8483dc66457b4bc87a19802a1bd80
+cfe9324cb2a9e767902be3b54c67ddcb
+cfe9c13945418c703a1d599af2a89bb2
+cfec0d1f544f0dae0ee46f94f6ccaa3a
+cfecc31e35d34e0d4ead71d94f554be7
+cfece79120c6ec56c7cd7d5778adf5bf
+cfecf7d9c8d20283a73cdc351659b5c6
+cfee54889fc1198122b91d57d3567e8c
+cfef19d97288fb9879b58d059352545d
+cff0f97e36406ffc6e8f69780540dfe5
+cff2e1a8b681e21088a0d298f28ddbac
+cff33ecbda959b598daf37faba0aa696
+cff49ad3557dfe2b1cc5505e959bdd62
+cff702c3d772b29d8cd14128b3c0293c
+cff9954e2e6580753ac9901b518eb782
+cffe5a7321c1e8a561366a971b6d7263
+cffed5fae4acd32aabbd9646924a37fe
+d000188a9c21011447ee43f0311241ae
+d00137aba9c23f66cec0fc38ec014da5
+d003d1cbf255e1aa7bf48e2412eedfc0
+d006b2a054e9781fc9fe6ff306382254
+d006e360d910faf3a93e56e54daf40a1
+d00758142d3245a0103c3e4cb74ff458
+d00785fb08b7c5d94fcc27b062a09357
+d00a78dea8d01a4f4980f08cd658bcaa
+d00a939b9f028f67b111dca6ba80ae13
+d00e42343b14c6dd3d3c4a967c8d6f12
+d00f04fed2fbdcd737676f34072e9b67
+d010a4f35897e483e8a37d6175dd9d4a
+d014bb06a604345e591962475b816d75
+d01590b81990d80da4a0de8ffdbd1dcf
+d018248f7124a57e6f02e352afddc4c6
+d01aebcab96fd71d5104e6b8efde4fda
+d01c2e99287184e7426427deea270dc2
+d01cf4150c740d6026f14f216d4b114d
+d01dd26a60e85260c2ddfb2e8605c3b7
+d01e5c6eac0184d1dfc76e3010203436
+d01f867df34510993478a44fa3176f52
+d02053f75bccc853adf45ea62ad5b801
+d022027318d8b0ec0087e0b6dd73e847
+d023331656d9e9fc4d0ba722e3ce4f2f
+d025f8585b82b7307869e7394ebeb209
+d0283da776fe5aa2739f5018ce9b3c89
+d02a3c2be4f71cfe87d0a3e79f828c70
+d02d060bd15ee2078605d4df449446bb
+d030cb7d05316cec5ac4b970c28cc67f
+d030ea5e6d0951e99bf4ece9b955891f
+d031dad9132da9b1044e121b9d8ee347
+d032384af848ca4e9f394b7d7c857ad1
+d0334bd4593f2e3a26040d5682de89c9
+d037e549bb8a062570c6e923a32d929e
+d03a72757916217972edc9ee9ca17291
+d03ae6100ff3e2a39c71748b1ace1b54
+d03b65e1a91cb4d7d564aa9c741e3ebd
+d03c4f9114b541467bdde04212403be0
+d03c87a8906b4fd51acec6528d068321
+d03cb8960b28ee11cc4bdab17811909a
+d03e39d4fd6c3eaedcd0c104df9f022e
+d04000ed1b746a60d2b5d94e05c2fc7a
+d0406f61ad9f8a56e5e566255b8256dc
+d0408d0fcbb32ac4d3e9bde4089040df
+d040e72fe87353e19560e06dd3506369
+d045f916167d7285b5a3a311474c4cf5
+d04a7393a7d3c7c425100b15fc6595b8
+d04a87762865bb0914fbaa045f02d268
+d04b0b2699cf2c40fa9cb0387e8f0910
+d04b82339cb0f5832d8e942acef6831c
+d04e6ca02c9886f3d689e380ffeec1d2
+d04ebea4abb7e17abb1c61940e54e5cf
+d052498e2bd0f454926082a2f3722dc8
+d053767ff37983e349e8a1e2a6cf2c4e
+d0544cb8055de0a49d43af88dbb3f1c3
+d055432fc376a78612bc40f6bc5c5fc2
+d056c79952a30302ca3ff88b60c16401
+d057f344fe85b0a8a3af57c06c461102
+d058343eb61f8d449c30e50df70284ab
+d059fbd290ae160f185eb264d85164a8
+d05a223edc3f941a314389756c27c9c6
+d05be6a6a40f0f0c2f42a0e85dcdaf16
+d05e2327d384a21af7251027d29f7080
+d05f7836aaf87b47bf8cbecf7cb0c53f
+d05f86c4af15c2f9c3ba05b5edef4f6c
+d0600e4f490f0b4cb45c75f33048c6c0
+d060c764596e1cc73faef4a1e1915e22
+d06166b52d9235adad578f960f31b70a
+d06334fb8d7e059e420adf09462de9a7
+d064a5aef50c1a20f9971f06cbfe08df
+d0650ac0a4bed6d12cadf2763e153175
+d067c266e331ec701ade4448516164e5
+d0684a9fd4aceebefd21d21b00f4e24f
+d06c558e2216a490410d2576ed66c5f6
+d06c78eeb37c097e2ff550d37cdc25b8
+d06e38337ab807da87d5f77b94431e6f
+d06f69b8eb4b60fe9e63ef0ecf0f664b
+d07137b9b700e7c7e4d41769380acfb2
+d0740a9f91d4892d13b00b8bca0b34c1
+d074ae709e0260bcbe9c44a3b57c9bee
+d074d0a962d7aeb93f21f90225759658
+d07857d45b0a88d2fc95f315ba9ed706
+d07980a3f4750f6d7135be755fd8e268
+d07bbc6d0f4a4ca2059f5f02aba0d453
+d07d04c02f15814611740b7d71d964f7
+d08160abc8441d1e373215cbb51bb53d
+d082204b2e91dd040953c1c801adbc19
+d08413a7258b4987da76827200d48bb8
+d086ab30d5e865b7feb8cb17aef20435
+d088934565b6351d0264c77e7c81955e
+d088db555c458813e78dd6b8a5f5ed98
+d08939ec3d9304228346a89d49301fef
+d08ad997d2bfe3f51cbc355c81813ee7
+d08b1ba1aecd4594638787cb353adfcb
+d08c5f43e03bcc8f5d3a7f8e80292a34
+d08e3cbf95a408ce17b21bee5f186cc8
+d09015f441acf7abc2c17b695376bfa6
+d092abf1a8d58e4bf5802dacd1873f6c
+d0931015acf8bf7879ba1041d89331e8
+d09579bd2cf696ef6b9fe17498a82d60
+d0957c1b0a4dc8d04ee50e4aeb89c51d
+d0960af6f1e13de9d633754b07b46b22
+d097c8e773d3fd54073a82d0d4ee0485
+d0995f89551ab3fff372e6eb65ac92bd
+d099d1969f3fc7587ce69a778816f5c2
+d09a17aec471557bfd17075aab893b6c
+d09c2ee6b9f7365d662e39c1569ccf78
+d09e26a73f10fbb50b0b631fd773e6a9
+d0a3004c4d3cf2d4608460ad7931f17e
+d0a501a3bd6487e982aa4745f797143e
+d0ab3158ebbbbb1b0fdbd7861bf95045
+d0abe4576e2bf6a56eb229b5e204db34
+d0ae2e49184750f018afcaf4b267251c
+d0b0874ccc0a89b85cfdd584095e8eb8
+d0b17fdc441c8aaf5e2e9b2f0df21790
+d0b2e714ae2a016701528426ff88e3f9
+d0b87d6060ef8c636e93fbacebf51a6f
+d0b9c4805e302959f9c91fe0057524ce
+d0bb12cc7fb122bd50e1fb05674c3320
+d0bd7a64dee7beb5fe57aff83442fb1e
+d0be17aba6949ab7adf2cecfcc8e3ee4
+d0c24ce95ca2162a9758ef3fd035a036
+d0c51a77b3bdf86da41a49f587b3a800
+d0c5ac6a9b17767009ce2c032a5c2820
+d0c5c7e979cb8060d8c6eda47d8b8dad
+d0cb480a89eacfd12acc96501a9d69c8
+d0cb499a383d22090f7396ad1e911fd3
+d0cba01355c238183a3eb1a1f21ddaaa
+d0cbd4fb868fe322b7c4b90b04ad57d7
+d0cd268590b731129dff9e9a9d5ef59e
+d0cef229469961fbfaac4d412200deb3
+d0cfe94a0f0af304be6f7b39439d5405
+d0d3552f13005fd7b8ba2238d2b322b3
+d0d3deb31f064312a1ec155698cc7051
+d0d44aae4cff427b00b8939eb5fd6a3c
+d0d659796979a2ef026a2a330109d9f5
+d0d71c7a84b01cad15c5be93cc200121
+d0d780e9f6da8e307be28643d434b274
+d0da18badfe6bc8c13848bdb12467966
+d0da8eaf000cf7e1438f6b2f9df76015
+d0daa8e3ee3933f6d43b5fbef0611973
+d0dd3580e3ce09fad7e60e6acd156946
+d0decccfa57f61f3037d5b728ff8f335
+d0df72d9d60d3aecd6fe512e0a6fd5c2
+d0dfefbf5b426e926c6de7e2141d61a5
+d0e2f6fa5f841c61206ca787c9e9bd16
+d0e33fe48fe43b204e59b1982f9b5929
+d0e38e50e0bd0e42371d5bb51d16d095
+d0e47a9cef017d28173e0782ceb53833
+d0e50a2a945501d9f29d5e0b272f928c
+d0e69640ec541daaff36bc8b726cf16b
+d0e7beab8ccdabbed3ec06f6fdef323a
+d0e8055441eb583c7fe39498584247bf
+d0e8b80665ea8304b6b590100a6e594f
+d0e93348dc58560d895de517748d1611
+d0e969177068fa624f03b32bdef5d479
+d0e9875c225fe7c1d1f76150e7d50890
+d0ebc795a9c2069f12b2ecfb8ac34e63
+d0ef0114b6d1aee36313cffddcaec87b
+d0f14ffa96c660732862fe607cb63aa5
+d0f1ace430fc259e940d2ca83fdaf664
+d0f2c5fe8cd924b82bc1d8450a423adb
+d0f7534c660655100294bc92f2dc7956
+d0f7a77ae4f21ad9c1dab045d10ba584
+d0fab6666eb979caa8935841315d57c4
+d0faceb4d705719a78737535f79664ab
+d0fbe2e4af8bfd380529acb634874ec7
+d0fca3a4fc738b216e515a0608a791c5
+d0fcc29f06d2f38639683aa0cdf47bc9
+d0fd3fa096ef037c4ba5fca9ad4abd2b
+d100b1ec9aaedf7de3f7378a0e909cb3
+d1012e34fbf5552f22d11db2f7ed9b39
+d10219895df02a6d68229d447c553fa3
+d102765cb9c1eeb89fa5c9c1efbf5de1
+d1045f4ad32d7666537520b7b5bc3f7a
+d107e0056dc6919be184b595f3a94a8f
+d107f52f252e930e09826230dad6bc06
+d1085c6e98fc0b9b432f85e47ea48b58
+d1098e26c9671750ea11eddfb988f7dc
+d10a1e889baa17e210438d13b92a5141
+d10aa7796a7d2f449d4dfd058eed1c3a
+d10ade6eb79842f4e0210e1b793cb0c3
+d11148facada0a3bcad62394a3e332b6
+d112ab476f3503b1ffa43aedff6dfa91
+d1187c019e9e45e3b4b39235948b85e2
+d11b0bbdc01fc4004918b24505d145cc
+d11b476525795b99f743ecb934d93485
+d11b5d60f0a871a90972f55f9e3bb1c1
+d11bbe2f51182a0d1b09e1e8c5aa91af
+d11d2301c4094e1120d7b7ea70bd9dfd
+d11d60596ccd2ee0273e9fe36fcc8fa6
+d11dd96714ed457d5158ae5d5028c999
+d11e277cdc54b6a1b7226ca04961dee1
+d11e3ac68e723a8402f8911c1a7e726e
+d11e3aee453972e89992a1de416a350a
+d11e802406367bed53a2bb020454981c
+d120f8564003763485993111c5434c82
+d123a67dd337ec696e7d8d83675ed242
+d123b7c5af5768376b3cb0bfa191a579
+d12445c0d56ae133787ee34300c90a27
+d124c8fbdef9fac5ccecde9962dcd3ea
+d124f2b2eedcc9186898410a65e619db
+d1250b3df7085d771b2f011bfdb32b69
+d12733b3bc742549205da818a931f7c6
+d12747c7959ac15ab3375e6ee0be0ce2
+d127c265fa1bd55dd8c0ce9223407893
+d1296c1283cff880f35fb0b7af6528dc
+d1297dd1666cd79b001d00b4841ec3d3
+d12d74758844d42072951ff5476732aa
+d12fcaeccdc513f263e3cce81da97301
+d132dda0e4b7df36f94c7ba66358d17e
+d1337c55efda4f93d2edc7c434bef7bb
+d13419d959c39993c8bd4b0abe163099
+d1384f915bd1414ae2c7c61ca0775074
+d13be8c7fdc35c105075451e33d50bfc
+d14152f666bf2312e2ecc84bbe31e5bc
+d142e8aafe486b18cc447d7b4b893860
+d14317e2550cb009782939a00e5a5bb9
+d1436af2af979e7c8a54e306813cd030
+d143ac8411004532c0ef59981dcb8fd4
+d14423d90e8512b5b1a3deb4702d7fae
+d14573df4117f81f356348da745db05a
+d14685295c3cc3a2cca1e0cd1d30ed85
+d14732f06851e1168019cbdd91347a38
+d1473c2b42c0c4d7248b4e6dfbc0b4ab
+d1485c6d804f59c590e35e93141f0ba5
+d14a382dfb72b33eb29d63089beba59f
+d14a9f8cee2598cba68b50f92b8b3800
+d14b0db4c2c97862fd02622d65b00b95
+d14cdcb98d2ca3303ecabf75a004eaf7
+d14d7b5fcd4c17d4142732f3abc074f9
+d14e3cd8c86e6f5d09c40110f2b6d355
+d15055d0d8003535e0dfc2b1131a71bc
+d15073ffac631104347f06ee0b0a663e
+d15365e5e73390c6bf5ee7c11df8eb8b
+d15705776e3778b3f09d1ee915e97739
+d157857733a1d24a5fd28026e3adf297
+d157ab3746181c2399baf077ee059241
+d158066bcfa2f79a8f3ae9dfd8d4e826
+d158271ed488573fb8f8981c7443fdaf
+d159870c43007b66efd7e295765200dd
+d15fc33cab0897029efd3fbac752b82e
+d161e93adfa6849cb9f7eb8f9cc8406c
+d16d845f390a4df63ad6cbe865a359ce
+d16e76862fa4a27fa3dc8eb027596230
+d16f092af17c82dcb7336eea51e77b45
+d16f108ea6ff919f006086890ae311cd
+d17123b9af8c5bcbce761298405c239c
+d1718c9b6d02f9993f975a3e83dbe6fe
+d1723a436000f40e7134cbac1787f9b0
+d173fe0ff5916fa8df418192b5a531a0
+d1741bf385c4345dc406d251bffc814f
+d17443af7c39f6795473656073b77ad1
+d17472ef993241b391921b570daaf9ed
+d1751f8bf446473c88e0cb1095c95962
+d17b50b6452059a5f4dd3ef7f0fdba62
+d17be78f918542eead17ec230bafa20d
+d17c756605b4eb35719728cdfbea21eb
+d17df0f17a8b336a1a89c5a5e42abe80
+d17e036983f96e917eaca0284314a688
+d17f42af5c942783c6b5a5d908d44e0b
+d17fe7b9e75b39805b98cd0e68279e54
+d181545ea04bbe68c6607f4b3392027c
+d181c0e6a8d33e9a2e7975d55aa861a1
+d182b836aa63b5aa56e3481fd99bef17
+d186e16cd6b6d029b5d53ad296bcd455
+d186e4cb8802072434144577431f928b
+d187263fec0a79f32bb6d6781d01fa18
+d187ab22dbb23b5b2f02314926e7bea9
+d189ae0e730ed15b7a750d517683134d
+d18a7a0ad6486afe11884c47bda7d1d5
+d18b57cab9575869f11edcefb7a79c9c
+d18b60d1d31ac3dbfe708b9bf5c5db5e
+d18b7884ebf5f2e8d6b613810ac63c78
+d18d8990326b5d37c067ec890e71e205
+d18f1e0a24aaad5167b671c0912cafca
+d191b5666562f34ca0426227232ab809
+d19200ec030659f8b9f057bb6b68b290
+d1938041d3d67e1b0a83828f97ce125d
+d194b7ae743807caf452942c064bea18
+d197453676d53351df0a597e320f64f9
+d19bbef3095df639d1ae8cd6fd7707d2
+d19d577eb070553aac16320002df8a4c
+d19d5a458615aedfa9055aa48ddf7ddc
+d1a160c0b98f2824c1bb3b310c9705ee
+d1a3e9351ab0c602d5babb485caf5f2e
+d1a55fcb25e6ec1ef740a54357ecbdc1
+d1a6899af4a02591c2188ddc563a370d
+d1a82d07b8188d80cd6bdd864ae854a2
+d1a865424f38f6892a340f0f7dd6c552
+d1a8c3f09b7cc0c9ba4c314f23180a4c
+d1b40abd6bcd116f3c602325e5bf20b3
+d1b57db43355790c620238dc6963ab0a
+d1b62ea267b422e424f0cff5a0e2a56e
+d1b71bc1d9aa9721f493956beaa071b8
+d1b73a196744171dd5f7ffd19938edb3
+d1b745f3bc2f1e36a3e47301415085d4
+d1b894245ad182debb6f5d7b1feab5eb
+d1b9288204c50289df03467156464847
+d1ba9d738606caf4e8295b76ce162da8
+d1bae303bb06a6ba80b23464ca6634f9
+d1bae669be1fd867c025fd82b00f55a7
+d1bb8cc9908a4fd36b030d3e3a489a52
+d1bbff7fd94587d5a9e09e7eb7a69af1
+d1bdf33d619d6d46e81d1b01c721283b
+d1be05946c614faffaecff66e69a208c
+d1c354463ff151cee3d4059fcc3d1e29
+d1c65c6bb4c14485c5f6eab9f0a77ee4
+d1c798ab86b03849420f15fd23632d85
+d1c94fe461b176c70485ba632bf8fee4
+d1c980c24af9e918585c91f6d494cee4
+d1caa487187da7460b4ab004dc5df056
+d1caebc5d06567030f57c017ba85c726
+d1ccdc68ffde884d7470bc9fbe9220f6
+d1cdfed97e4fbe8be001c04bc328f558
+d1ce33eaefb7152e6b5cfcdc13cedbe6
+d1cfb7f1d2ee38eb14c5f2b0fe304413
+d1d07b412d07b920cf6b1a5249aa71f7
+d1d09908c2c9efac01e0b60c6adc7d82
+d1d1b1dadcfd8844b4fe38126bf313cc
+d1d39e1487c39994bcc1df9590feb706
+d1d6017c330f806ee81e9201e0b2cc00
+d1d8e466abf5f3beafa196383fac806e
+d1d9597ffb45939261fc774c9c28e023
+d1d972590bc3bae96f29d2be15e6ba2d
+d1da00a0a652dab36c7fb6d8ca17d01c
+d1da353f9c987d56279619566d7a69da
+d1da457ad304376a2fb761340a8b47b4
+d1de216b19ea7179911a5898b48b3fac
+d1df1a1c66b60b88cf26d46da9cf8a32
+d1e09a4f4d0e7812a0c50ed15a833eb7
+d1e3432da751bcb6fc193fba72880074
+d1e526b2246d9319b10ce77950ec670b
+d1e75f551773176efb13431560c9bfbd
+d1e76a1725aead00aded3a90539dd293
+d1e7bd7fe23703ab5337ab80902796c7
+d1e7d93a7a88a400b6655de738fe19c3
+d1e98a5e78171f2fff41cd0fdf1a0ee1
+d1e9e389762f14d3974d399a5bd04328
+d1ea0aa71cbfcae1dba9e82601c5787f
+d1ecbd8cb04477d2193c7124411f2417
+d1eec1b06a0912e13ff47410152b81eb
+d1f5f71e0822df2acc4965a2a81dd13b
+d1f85a74699c1196f47f4d7feba1078a
+d1fc21ac2becd6756c29bba1b59b68b2
+d1fdf30d5de54f23ee577a022be9ba2b
+d1fe114c38dd756aa56c7d053087d004
+d206324608f9280d0d9652869a3980d6
+d20766410e1f5d1727e19a9aa3c350ce
+d2085162f24a0a3ffbf37725bd743735
+d20857aa0115e5f42e25b261f67ce6f3
+d20ac101e282e55a4f0ae984dc7f4222
+d20c419f8679f1b5264eb7c9d5e2793d
+d20cf29eafd83ec3010a7d8cbd4f171d
+d20eef1dc552fe4d8dc9e17d8e163208
+d21083021c83e424f184b3417dd0e436
+d2108bbc04a5f04a8acd0147139dd45a
+d2108f1577f2199e3730eb62d882f483
+d210ee9a54203e4d3fa0c296f9b56977
+d212d7302fea1dd56677b12afb7e7ed1
+d212f1d9d066ad96acef091339164b84
+d213a77c524b26ddeb4d2701dfa5b42d
+d215d42a33871a631396149b942987c4
+d2188c19bcf53bd75e762b4be9e388a6
+d2192838db1a9836df4e5b1fd349df1c
+d2197b07d5cac2cafe8e3556658c657c
+d21acd26cedefc9f0e7be5bc6242a2a4
+d21b80109a0637b8f9e56d2279f40fa7
+d220c89339b045a87d810e3f4088053e
+d225ac9a781e1a57bcc7412190dac791
+d229da05b20ce8b1ac77d8b52167c295
+d22bad17b29704a938353c42591778e0
+d22cb7e620362ea80756e3cb10ba7128
+d233735b89b2bf5687a3dadd74e221ba
+d23b9a110ee55e24836ffaace0a0fc38
+d2415e4be573eff2baa1535ba1e9b90c
+d243385c9faca72dac6593e0520d26bf
+d24474379eb9cb9868edb2e95af33370
+d246c8d2d6ab81d8e51ae1b5e21846f8
+d249285f3dfb6067b532d488b3f29e2c
+d24a60b00f70226ac5870d70147a3385
+d24a81e874a01bea21e8ff3723aca967
+d24bbbd732d78cbdefd939eab26b323f
+d24d1ccf84d6e8284ed67f5fe084bb76
+d24dd98c1100361c0002c97a48b3b9e9
+d250186fce0e84ed0b65d135ae5efe56
+d2512f1c67f4598fe3409d8108c56973
+d2534104a8b7ce69e3a950295dacc437
+d25510983e412c5a96f182dab3f61f85
+d2558e8a307dc01fe6a8007f9b608de2
+d2582e87f3a13eff5a2c977b6fba13ae
+d25b489396b4b4832241dfab47866efc
+d25cd61b90f2f74b4639f6ff1b34a532
+d25d4f0d8c175f0912f8c6916e201995
+d26275c4cbe4f468e9dfed81eb9e3ba8
+d264aed056710bdffc041b5730e5dcba
+d265c9833a124cd1ab67eda42811e6c2
+d265ffed7c1ff4b68a71eee835628a99
+d2667261c47d0ced741256f7314ae0df
+d26885d4402ebb874ac5d2448e3bc339
+d269d35d5697c007eac8893ca9d7a49a
+d269ffd9d3c5b1fbe1c5af6262d163b6
+d26ab7c2d39957c77def5d26a2db6bad
+d26ac869b328a2a27221f6d1aeb7ce7c
+d26b998b334c5395ef5c57cbe9428057
+d26d9efab710accf0226f327b4a2db45
+d26dbd1afb71bd419c89418960c38f84
+d26dd3aa938e4ee8a87016a50b365d09
+d27502e9e81852f0f329c1273f90ba41
+d275dbe9ab76b490c5c6f5623e706817
+d275fe8fc18869f4cb961b3d13cca288
+d2770b754181d8e6525a703e5ca0af60
+d27778cfec79fa8f3b71a3cc0ba3c968
+d277c198d087d8d48a2b6b6118e68a18
+d27b3ad4a0510f176b0d407f71f78e8a
+d27bb3b15382b8f12be448744ba38605
+d27da9c7c9c1e3cd5a590270daa594c4
+d27e53d59f7ba2f29d4e3b3566ff3ef3
+d281db73fac9ea14b4bc45c69e343367
+d28262765273f96d572374a5a7e0273c
+d284a748343acbd660abc8d83d28dcd9
+d284ea21f94a9a7a06e49e4deaaffcbb
+d2883b6ccb3841ba3c242b65a6a8a1cc
+d2894147bdc91d2afd029a5960a22fde
+d28a01e72f21ed6ea1ae6f1d49407838
+d28b9cc11848a758fee0f05b08e28d90
+d28c0a9b03ffa295e3a818f4b0b1d52a
+d28c9f604ff05acfce412efcf2b5b996
+d28ce9ea4e9d01e802570017090c7188
+d28f90f6cabceb95eb28f1ad1ddf339b
+d294d2fdfb00c88e09ae60c67a1addc4
+d2974e2e2bf8a5802a09f778170d3f4d
+d299aa1cea1ee15a3ec4b755d4d90163
+d29c8e692e7f8c266ef53205af88403e
+d29ea90f33eb605af44c3a57fead2948
+d2a2dfe12f232d06ed61e0a66c99bb13
+d2a438cbd2c6707010065994c2a8406e
+d2a439d19e64afed27b7ec41cadd8925
+d2a472353969ec8ccec0a936759b7245
+d2a4a8ea3a41883dada0d7eab1c267cf
+d2a54af50baac6ef53a4c7e0fce86a97
+d2a7c76b170e5c1f886336e450bff02c
+d2a855561d20fa351c00e55c8f74a263
+d2a922e1180383982eb208a2903d1ec9
+d2ab475b04aea182fc9097d4b455bef1
+d2ab7fa04df4d7eda4c9f2172b0d5714
+d2ad243bd9bea5f02a45d4177e128b9e
+d2ad37e8ae65a7839ab45195264a9cc2
+d2af2b812d42d0196ca9e828ce4b3f5b
+d2afbafd767971a35b33dbce65e88ca3
+d2b0d2c15798501a8302b47d058b4efc
+d2b17229e90cc3120233194f7d60aa3d
+d2b2412de314097c62b62e819f14f176
+d2b2b649a00a212f1b3f721ffb8ced7a
+d2b2e98794f24076da675ca965f0b8e1
+d2b42f8dff54e299c7e18ce6cbb44eb1
+d2b5326be56115402151ad0d259d63fb
+d2b6860b99cb8ec62e12df1f96b08af8
+d2b68a52a0c848029156ac279db70cd5
+d2b959920ccb9e0c8529eca8e9c89acc
+d2bc59342e5a1ba64b4adc3c809f85ea
+d2bca21f7c11c9160de7150745dc0a05
+d2bcdd4a1105109baa01466d459dd4b0
+d2bd9d6e195c31b8502bb090cd736d05
+d2bdde683a80e1d3af5934d04b7697c6
+d2bec79bfd9bbc3c3e9e6ea4a19493f3
+d2c20fd34868b701eb6be6f418ebbe67
+d2c46fa6321a948aab9f7098cd0bb8db
+d2c4cdf5b1323ace969fd586d207305a
+d2c535d6a5a1ca30e1b6edc0998276a3
+d2c8b907a1c7395149aee3f2529819b9
+d2ca490ad2e6c7ec1153dddcda2c6aaa
+d2cc42cf231abc805ad16be2d8f3655e
+d2cf0c6535f15b1a05605bacfa7cb734
+d2cfddc921cf2056e8bdd8a08f68934d
+d2d156188b687cf696bcbac29d660471
+d2d1a8a4e6acddb9dd65b2e671a8e835
+d2d1eeca4efac3301c27ba3ce80feffb
+d2d27886c386155898cf7aacebbd8713
+d2d3572177b74f1ad3c4ae3706a5ac2c
+d2d388c54a666caa1c03ed91f4d9ccec
+d2d5db7a88832721bc1c9a132ec7452b
+d2d7152d067b0507d5964669d817a3b9
+d2d91261cbdaadcfe9f5f4a117f7af34
+d2db71ecdd8bab6fa53cf0b6e234d25b
+d2dd1d44fbb786c4a17f09a5d03ad57b
+d2e000f7b321238a17bde45e6665c6bc
+d2e119597ff1b7bed2790156254554cf
+d2e33b7fbc1a52ba67cfbccb5f8e389a
+d2e716608326fe341c74ee94efaf488e
+d2e723b608dffa15074d454e72724dc7
+d2e946f5a868eb9d91643d964d5573ec
+d2e9969b5886f15f498674136a238bed
+d2ea5e3eb5509becb661300e77f1c954
+d2ec02b77cbdb6623ef66883d282743b
+d2ec0f20643a8bf8e1ddac20f0980c73
+d2ecef2d13f876e00d794d587eb04150
+d2ed6078db599f41408aac35c6d3a863
+d2edd2093407d0949828cf420231ba44
+d2ee2cfbce277e9401b28257497f5ae9
+d2eecad7c63980a4db66dbe4737a3a78
+d2f0d1b28bff7e04dbf5db05dfc6ec2b
+d2f2a789972cc1f0f8820e1bb54223d2
+d2f40a280db24cc8aa733b67f826d542
+d2f4720b7f344d52ada5b23f1adc69c0
+d2f825cd95a31b4406bc25582e4adbe4
+d2f9f5d7f6b0517b6851791b071a3d6a
+d2faf3297051bd0a34f9b08b1415a2a4
+d2feaeb520b175a98da1fbf07753a8d9
+d3009a981c26a43a7d9c9527d980de0d
+d300f0c184edf18b392f0687bad2cb9b
+d301ee94294448a36397926176ecfff5
+d303c96ab1589a6270ec282d219f1dcc
+d305455663cef1ca8d6699461b5cf70a
+d3055273713e30947634ae0712e3cafe
+d305896d3a9714cdcb1c81377c274778
+d306e5f942b8c239b39f933f8aea2650
+d30acb1cde97e7d784809cc58393e48d
+d30b6dc7d364fc570c565673d78cb394
+d30db9738bee61da462205f612b10489
+d30e3b174ae1995cbdfad872a91d7fcc
+d31004b1702091998a9369f192cfbad7
+d310e2d2dd232b96cbdb1c5fe96ecb55
+d31320d50b037c8eb7e5c023985ba699
+d31420ed27ff25aad1a8f24b697edd68
+d315f2f210aece2af3c5ddd9092c7e92
+d317b1dafcc751e7030dbfe686f00735
+d318230514daf35bda74cc16ae0eb232
+d3187617ade037568c052bc2a1fe1a04
+d318b2be51467d27032e6bcbc830dca5
+d3194757bdfe3d5170f01fc18e0eece6
+d31af22ba254aef5d50f3d82e69cfcc2
+d31bfc8e4b7dd99bb0c1b4064c07c697
+d31c38183bd5f95030361443e653fa68
+d31c91ae1042c1e22fa7972991686b8c
+d31e608a2629eb9cda0cdaf25ff0a604
+d32067006c4083d92c9a3e9ed690d41c
+d3225dd1918cb075afd1f0fdb7951117
+d324cbb3de1436a425112ce71e3e435f
+d32888b5bca3d28924810df698051a66
+d32905aa7aa6547f37ff909f12e00d4e
+d329b6c63c7b2c8d619d9b04e20020e9
+d32acccef11336248e95ddbafc1f15af
+d32b9d6aface685b2ceadc2d740f5362
+d32c0d64f2c5676a4792544f1201eea9
+d32de7c5b12d0d2c31f969d940758eaf
+d32e20c60cadff4838dbe1e383b55477
+d331d2193f392a9ade297a2350f4eb6e
+d3355d9f7b57dec4667b328f31938813
+d335fb14e3c6da4fcf58ff811ee8c1c7
+d33627fb2063121cb295bbeeff8a9426
+d33bf6ad0312a32297c94c0a03969d59
+d33cfa004fee22d6587c7271f19d05c8
+d33ffc3c1a255fcd76573e0f409d7e41
+d341c8292927c3efb5ce3321a01c1f66
+d3420343bdb50b8e96fe1e5b142be060
+d3423fd769348df197aefbb17a64abd4
+d347f6af25c93232c365be37c4f5ad87
+d349fc27ae355d16970ddc28ddb65767
+d34a4816fa9d71bc33ddbe83646c5aea
+d34c7b09f1217d4ac7b8b1c139d67623
+d34ca3ec5d254e184b9f98125e77d750
+d34ece886ffd8711fe9e0b5a6c93217f
+d34f37b00dc8b612313b4e365ff07057
+d34fb277d2a4d5cb4730e204ed5fea35
+d34fcb99ae31845c514f176b14bfc4d2
+d34ffe487aecf078379f70b43484159d
+d351787ec793808bcc3e3300e6b37d10
+d353335b6f55255700361872d3afe09c
+d35645550e8a94aee9f33ca6283aa58a
+d35710c796fddbbf29a3d73c3da796a2
+d358f0495b70521c3f55847c8cc84657
+d359c50c2cab207c911986e7aa265c83
+d35a45d6c48dd2856a1000ef07633e48
+d35b2d239dd22ab5be6420910a3e848f
+d35c6ae90202d8920b378efd7b31110d
+d35ce58b693c2e495cf74e016f8e44f6
+d3615e708d1d533ef36d0f44e2037561
+d362987a326f020536a4786fff89d3b4
+d36485134a042b1e5a66a5bcbac885a8
+d365d72a6fe3f7c19a01df2ef074f9d9
+d3683b49be66f9a23797c56898cb3869
+d36a16cbd4cfaf8da2006e4ea089641a
+d36a9b90c5e4266b3998cf8e48b681f6
+d36b08d99464df020718916e6b537143
+d36c2cd9016e00e815a19dc1dc70501c
+d36fbc5c3128cfd489e43d72da3ba9fc
+d3729bab9e89617745f5d911e53ada7d
+d373f9030dfb3587f900378246a82a2a
+d373f99a2ed653c9bad9c685a648d2eb
+d3743ece113244b68460337023cfb56a
+d375fbc59ef7665e33d0a0f0bbda8f8e
+d3787c923bd35e1d48327c3a51ff0681
+d3797bfe0403d0d7042f3ad84a1badc6
+d37d3ac62f11207e8ea0df9648fb4610
+d37eadb6ab8969af763291e05bae6686
+d37f75dd7eea592e47139b1d3edfa036
+d3805cd58238b6d0befe29f0e9edcd36
+d3805e84b8eb97023e2c5fd8cc08ee5d
+d381245eda4ce3aa9be170f5922a4ab1
+d38382c85cf4a0d3ff87a01afb227114
+d383ee1e05ef1c073f9a96164ff7240b
+d385aacab18fdf40f32d9dac011253b7
+d38637346097741c02d54a19821f3aa1
+d3867bf6aa4a90c590433257ceb3b59f
+d386e47d60bd52cd8448e2c620498c8b
+d3872075c0dae101b267abaf2a6572d0
+d3883a59acf382cd79ec50cbbdf65a81
+d388ab8c33699ec8fc24395e293b9869
+d38af91c73c93bb5f3817aa8bdd8e91a
+d38d8b94815e3447d8bd09816bb927a3
+d3907461da7d7adbb2186c1c3d5550a2
+d39233adf938cf839635432b1018101f
+d392b5538887ebcfb97ab3a24bbd5e8a
+d3950cae70674823a7dfb8bed068c544
+d39556119f7c97de819642fc21439cb0
+d3970d5948a53e0033ae68f7fb06e5a6
+d39758b0205ba33d56d8385fb7f68c6e
+d39849b56fe3823203184baa8e4eeea3
+d3989dab019a20a832d2327cfa1a00ab
+d398dc435c709ef1a581f273643ab6a4
+d3991dad2de59297d48ba0a85a8a8dab
+d39b58b8f761d50aef9150cc32c7788c
+d39d8b21778e3784f27fe0bcd6b14f4e
+d39e3126d6c99ff6e5b15f597127b711
+d39fd6125b03b58584bca925f0019d0c
+d3a364009e4faaea823e52da869b155b
+d3a4acb99774d8ddd8c1de38cb9c5910
+d3a5b7b7548127c8a9a31ba9b9ec5aaa
+d3ad6cf6bb5910e8ca960baaf630a6ae
+d3b0868e1fe61103f452712ec3cff58b
+d3b1b2ca4da935bbab03f428d6c3eac8
+d3b4932e5ec44af8626d51e997e7e9c2
+d3b949ecfa9b9256b3bfb9abfd992aed
+d3ba0e5dcadfe43abd606dbd9e9f83f5
+d3bbc3726546ca0f4a98945b9acd3c77
+d3bd595cf7204ea3f6ac4e9a748f0426
+d3bf038e57ee5352136676586e0243cd
+d3c22de93616e9c28b7a85b676e128f8
+d3c28d34e0bc5cacca531aee91f3b944
+d3c2d6328418890b7c490a51af448371
+d3c497eafc342dab23b0c0f86c5cd124
+d3c5110f78b3ceb8505ce48449edecca
+d3c67ab006d4ca913b70b04aa9454d2f
+d3c6df1c29fe43edc84f78c68974eb07
+d3c7e2205802a9ccc2d19ebd97d7d9ab
+d3c94669b0fa13ff5d76343bac20cedd
+d3ca11a445914c5cbd886ac1aa71a10f
+d3ca5c4e7c7377ec997ced0c4764179c
+d3cbed952d8f5c03ba4633323d4e638a
+d3ce2cd6c08f79eae6aeb13cc72e84c1
+d3d1f686cc0ff6b3bf6f782eb420e3cb
+d3d3abc0b6fa3a653be6188677555237
+d3d4b7031fc91b6976174eea2a05082d
+d3d61d8b59a36b04af1978fa9d4241d5
+d3d6b5a1b75e1739fbcac0b25940b6e9
+d3d7213564057160734ba3957320cf87
+d3d8adb788aeb43231d60945e43809fe
+d3d92e0cc3f03950ce7b78f02b71722b
+d3daf98bea54db3b1b79786056fa153f
+d3dc2590c728a42d6fdf7ce0871d9496
+d3de57bf2b452efee5a167ab93039976
+d3dfb0b7a0f49b9e2276c8847bebd9cf
+d3e03728a6f07ea3c0971f4bc8ee4048
+d3e0a93ed32b00ecb9892763bf1c4528
+d3e54902279520b1f5999103909ba3fd
+d3e597fe4c1ed61b252e4d7cf46b78c9
+d3e5a8fc06d3ad09a0432976ab11571d
+d3e78b5c0f8dcf92b296c1b6163807fe
+d3eab3ef95bd64ac8ca3c48451a37401
+d3eabb691b04398f659cfb94b8775142
+d3eb68a7150cdeb5ede5d6e1c7f2c565
+d3eb916719e11d6eb0c21504a21fe900
+d3ebdbe9631d70370c689f6a9e696ca7
+d3ec9dbe208e5c1224e7ec09823035e2
+d3edd807580d8d22ece431438113fc97
+d3ee58c8e1d237dc915a9f06cc86e2ec
+d3efcc7cfa9ee37631b6febdf2154935
+d3f1348cf27706f1d77ddae286344e52
+d3f179af45a9ca84e18be7c56df960e3
+d3f63bb266aa4ee329383eb9c0c32826
+d3f7902e0995ad2550a35453aa1d65bc
+d3fcdbf2330f879db3c8565708ff2305
+d3fd585d61f73877dbbd3896c0780c61
+d3fd845c17482dc4286aa16c97dd382c
+d3fe14f9bae32f134eb70dce358f8bc2
+d4020308bf6f65a956955f767d73641e
+d4022d68bb61cc9fd11ce27a8f7fdfec
+d409a1905b9e16bf31e1e2fae2aca2ac
+d40d8de53a55770855bb6f158681ae14
+d40ffb5662aaf3dd4f0aa3047e007ded
+d410a57c21658181e0575dd13a74f37b
+d410c829f057758a4f4a7a5d12550314
+d41414b308bcbf27a8e2915001292ba3
+d4154c065d995abde27cf9d767044ddf
+d415a34cbc266767ccc1c36fd355a140
+d416476dab13291297bc5396d426ff1c
+d416ea56826f8564f52b259d3caa5a67
+d417939344c4cbba00cef913738db28f
+d41918de88385de56d30fe53004ddfcb
+d41a675dc563b26e6b44c8bb94a5bfce
+d41c9e041c64987f9718beededf84703
+d41d919bfc956a50fbd0d8efcb758712
+d42126103f45b30b9ab696a84d8fb6e7
+d4222b241d31654301fc8a01102c1ba0
+d422a071060320b03ef9f843e6ef6530
+d424420fa87f0d78b65ef189aaf48f76
+d4267badc3231312351e7f87844d5be2
+d4269747ec73d85dfd9bc6fdb1626ad2
+d426a93f5d82bd1a4f59afa8655d3c2f
+d428ddcd04076cacd0f9eb4eb715bb5d
+d429208466e0656ffc0664d8008a54bc
+d42b1a8c77501f1315669a6574a134cf
+d42c069ec2ec85c5e82ce68b3210a732
+d42d40bdccee081676bb1b453a13cc81
+d42d898c002653e337e217d502aa4557
+d42de439ded5724355f737c3da6924b4
+d42f2c34484f94b6d06bbf927cf1ab1b
+d42f56269cd92c0cd53fa4afa6723327
+d42f6810c3523f995bde8d5a7aea9c90
+d42f9ccec805d16cbb438e3e4ec85396
+d4322e6e3a81aad0fc41c49e4c4477ee
+d432486d4904242cd70bff5e07d0d168
+d432f17dbe5e5c648c772a253ff9701a
+d433beabd141b5b8b33f1c2af99354d0
+d4343e388feafbe646762e893034bb0d
+d4362ffb3c323fef9c1abc3a56d15bda
+d4370e5f55acabcab3368a6a0313e300
+d4383a6331038dabd8b3d8388af18de0
+d438830936adc295bdd07d8dd4c7133b
+d438b88f6531dc5634585e482eb4a5d9
+d43b3e47534276b4e787c8895b1f17d3
+d43c90de771290282dc13be1ad0a9fb7
+d43d800d419b161a32bed57ea07ab2e2
+d43ed56cac64d0644508fa4c1f382e5c
+d44027461d441b86a603ecd282e3e050
+d441e8e856839f6b5bfab0aaf566fb67
+d441ee3c378231d28c739cc6bb3e1c58
+d443869daf37be09e058ed4ddf7a1886
+d443b0ead1f23fede1d73468ae732ad1
+d4449e01ad1007c964cdd52811907d8b
+d445e43b89a4b968d93e80f97a7daa13
+d44ad852fa26371552d2d4a2436319fa
+d44bbf7e3378a17428e2359803b831c3
+d44d8bc820aed6c51ab15c718fd9ca5c
+d44dff1de81551c225ea98d2376b4bed
+d44eadefa9863d2692fa9868d419bf0b
+d44f88d358ce94a1053d275f69953c20
+d450aee266587b5389478340bd5b3af3
+d454f0e451c0e06ec8e41fd415075039
+d4584039e91246f97a375c31e1928490
+d45a62660eba95a355ab216299a554e2
+d45a9f62f88d1aed6fdc727337a1caac
+d45c58474cd044ec44061adbf748a8ed
+d45cd8ebea79d94dfc46452b09d35613
+d45ce9151016133510780d53d0dd9a1a
+d45cf10e958a224bf3ee492635c45abd
+d45dcd74d82acc7df56f242291fd2e2f
+d45e5f642da45f2d34464b18573a1c44
+d45efa03214aa319bb65114b1b5f3429
+d45f28364491cf47c43f441c9cef103a
+d4608164a95ce68ff710d7ea5ac40d6a
+d462738b506a7627d1fbc5586260fe57
+d4627965b0621b399af024442ad69ffc
+d463ae4a8c8ee084f68b8126a57a418b
+d4647071071c6ca0a55fa12ca8cc6c21
+d4656eb758ceabb336f971e335242e4a
+d4669e9b2f115a4836c9bee661905303
+d4669f4f1d63eb7d1a17340bf8f415b7
+d469bd61b06739f07d1289871405d4da
+d46b46fda39ad9048000cea18c7aca16
+d46b47c75d8e572b5520f29ca12c3a39
+d46ef648a9fcff66186fa6d57bc8a7b5
+d47146a3ed42568e5ec16cd4e30eee69
+d474fff92c1cea1007e596893efd198f
+d475625bb3c827752accf220deb79473
+d475cfbf669039fa23340b2f00606c46
+d47750afe02dcf23f169c36e3c3cc504
+d477dc2223af79540b9a6c8c5d1f37d6
+d477dc94adb88c66844c36bc7a769d8e
+d4792c82a0f4ab3c7d97f41f2cff15e3
+d479d12afad1ac59fd4e4f0867be3fd7
+d47bff7ea14f7ccd03bdad836701dc38
+d47d99a82dcaf4733c2b9820a242a0d5
+d47e409972875598e6cffa60980cf368
+d47e9dbb76e2bb30b47ed595cdac4ebf
+d47ebb01b3560eba62ab339e3f86cdaf
+d481a4a3cd99f1ec26442684bae6d42c
+d4827894277625aeea816f8941d69dce
+d482a8a8295a5cb9b01e63851b260bb0
+d48635b97e638f2b30cc5b510a9380fa
+d48645332ec053ae431a15096d49b875
+d486b76882f9b2191d327f9f552c76aa
+d486df70ee6713912c2d832714a837a0
+d48948e714cebbcb60b38f5e96c14982
+d48a9eec9849c84deee0acc0141431e7
+d48b853195a7da75c8c982bd3412b182
+d48bb09e30ac5a767a612595691ce486
+d48c52a14cb52948a5ef9b434fb56cd3
+d48d887d3c2a16e9c4654b3bde0486c1
+d48fa876c77414757c7ece2fb149c322
+d490a4725dd21c1a31f0cf292deefbb1
+d492e18476804c87edd75c9e0dfc8dbb
+d4939d5602d36f4a4d7956992dd5b8ba
+d49485b0a85ee1871730b591d22b7377
+d49a934efcd8f0fc5d70353fd645dca9
+d49bbd4ce84b81003ce48642f6ae54f5
+d49cd6ef162c415841fff2b49b6d4fc5
+d49e38e2fe7b1c5602d09ce4674a256f
+d4a16bfa25163d98b8bfdc46e797c755
+d4a173a7d3a89fc73871de6d4db27f78
+d4a23339863079505c9d2d20a7ae1092
+d4a49142ae6780a78da765d65bf19b23
+d4a849377608f57f4b5e1789b405a887
+d4a86deac504fe1bf806a2c10d2bdd96
+d4aa173ddcba0e9c5813d09056bc3b56
+d4aa967cbe0b80c6dbfb20d6f5efbf8a
+d4ac91839d116633ce9e208a53317934
+d4aca8d66ba2899bc7c06e4e87bedfc2
+d4ad3837413ee4ac28f80c76fb91534f
+d4ad399f3b5e1f7e7b9f533b27624ec0
+d4ada18039d2c200b44efcf9aed40dd8
+d4b0b634b0b8c4eaff788c043675abc8
+d4b3573e9e4b1259d21c3ac8ab290ca9
+d4b75ffa7ed39ff96f34cea2452789c8
+d4b879b4754838966b43bdc50ba1bfad
+d4b9c338f515e82a94f6066fc3a9f09a
+d4bc01498cfeeec7cf254fa925e032d3
+d4be707553f579c5571e4bc573185cf9
+d4c1f6b6e32e5911239a8b7372f9e6d9
+d4c215a5aca74771dff2ea27051ddaca
+d4c224a3bbaf4c6868eb2bd158c919ce
+d4c431da3f187f3d469ab1afc274510c
+d4c48debc6c4a3723841c978afc4837c
+d4c4f6e41f5a236e2130b0d5bfd97620
+d4c565b0f62c162ad740aa61d1fca3a9
+d4c59c49493b95a8798b9a363f9b46df
+d4c6166ea4fdcb979de707bb94dadeb3
+d4c9c227177824eec2fb79254207039d
+d4ca13fe9a6702282c613cc059bc76cf
+d4cd858a1a00f0408dc78e1df88c086a
+d4cda52f5257826bce7b56163a885713
+d4cdcac608f743966218eddca659782c
+d4ce9d7105a0ae217b0c73ebcb106557
+d4cfafeb137c4f808c6cda0d5fb16301
+d4d09b2941e39fd39988dfc4134c5ef7
+d4d107105e99a2ffff3fa650dbaf92e4
+d4d590d33dacceeca2aa79e01026050a
+d4d7d7ce03f2d3c6817271e7cbd24846
+d4d81402d50a9f776bb741a78496acab
+d4d9de96c3d0ab9e375ad329b0446d07
+d4d9fb26badd89b1e4c1a1cb04c33e73
+d4daddabec903440a97e59456a971868
+d4dc840a4c151eb09251b2a9a0033698
+d4dc891836e17312db22d1a61959fb0a
+d4e01a3ce48cc923e8fff6177e155edf
+d4e28f2b400ef4334cb724ad4d7dbefd
+d4e2a074856db201a05efb5d2ec2a749
+d4e3c0225f2db061f587422af21a2006
+d4e53816c9bf2a03972757e8ef102691
+d4e8738e082f7acd3a1dbacf85d9558d
+d4e93327a87eecc715794171b416dca1
+d4efb53332d116e7e6c971cfae6ff89d
+d4f14656dcca5ec6dd3d478e01c9a6e0
+d4f170549850eb1abcf898f39950b759
+d4f5b5607a5b67da75144201ffa38591
+d4f675969210439ba9ed14578e4ebb8e
+d4f752deab5181895111692289c2e7b6
+d4f8885fc4fff9efaa90c5e28152df4b
+d4f8afd033d4caeb406837b15d6591d4
+d4fadd69ab7f6954f0ac3d18b0eee511
+d4fbc4478b2368adbdbd50a9840d261b
+d4fc5b7a2dcf5ebe992a8dd9ddbdc611
+d4fcf3a70707ec884527936bfccfbe60
+d4fd700c98ca2b9e253529537ce98a7d
+d4fed3f0398795300355cafea9301570
+d501132d2c8c72e17965b5c1015a2087
+d5014e983f0934e47a4a0d5a99be3343
+d5025f065590648dde547c21aac60b1e
+d502e060a4211cb74af463f277d4fbec
+d503325dd4fba8e84a71dc7f049ab2bb
+d5036b6e46ff7e4c01c8ebca8ae123f7
+d505cba74304758bc5b4a20f1dcc44f0
+d507a3bfc9662ff2eff3ccac3ad6a161
+d508681d6645ddb1156058362b89ca90
+d508cc5fb258e4b7dc228cf210687ed3
+d509bab3b75c0420b93d20ee78650c90
+d50b371bca837aef59f78ca7e0cf9a48
+d50c3173511f9031aad6b5d30bc17919
+d50c3faa5183e592322aa0404ba95fb3
+d50ca5b03903a5ae49f8617aaa9a6667
+d50cc8d9087c80a435f30adf269ad1fa
+d50e6cf7eb88deae981454363525a7a7
+d5105f31f96e810a19295a9afb55ff4e
+d5112ea0310bb7921cfc1b026d8a591e
+d511a1e17f1d5a1e44fd64ae4e81b658
+d51357124b010044b0d40e9672e8b235
+d51461e2d7145fdc180615f5bdc50357
+d515eff862f67ba304efce0a6969378a
+d51660cef95a52c41042e1a54b0c4f5a
+d51b04056496ccee67262f94fe54daed
+d51bf75d22924f6536ff34f965d212fa
+d523260923041f8cd140692d0c869821
+d523fc31955ad270ded62e5606e1b72e
+d52531125814e61d5bb9a01f0f1ed4fd
+d527f8105e760c52c137a59d58a4f72c
+d52940214ce09f99d623cb6f0c0921bb
+d529a70c14521e00cfd24632febeaff0
+d52a57f082fd7ab8c85b700dd1b9e985
+d52aaf164ea1e44bc6bc7d06c5aa4afa
+d52c9ee6b51c2d83c2f254d61df6c71f
+d52cf41757728ebdba6c6dba08cdb2fb
+d52d7eb47907f5fa493e1325b1d205cf
+d5311c379baed55cc78f3429ab4500ca
+d5319f9a9cea9b13557aea5d9b36f8bc
+d533582a78b9777331cc11252f6c9066
+d5345ac1ee7c082627c9fbd740727fab
+d537040a1d83c8c946c755480db87d32
+d537994c82ba9f197a11584fd0b81ca5
+d53950b8a7bbbb778318059d2bc1baa0
+d539d6318071791e4c2c79908f4e5188
+d53aca0e386d2fa37f69cd9f3aea8921
+d53be08e832b9546cd94159c311db613
+d53bff6cb1decf2a90ee551a7b35e86d
+d53ea2982eaee6ade698c8d0e8d1be64
+d540ede391f8ec16c257bdc051524375
+d541c09849925954af470a42270e5f94
+d548f7f61d39d1baaa16245731d7a98f
+d54b32ebce9601acb4ed14af17e2a9eb
+d54c546baa36e4fdd91dad20569d5a77
+d54d9ae2143ba5d1eae8a4f81fa137b6
+d54e8db50123d8f7be65d2bd741916bf
+d54f9d0d52fd1cb4916bed4084e80a0d
+d5504682a9e310d3cc1185a3cf15d129
+d554505fcae6c8235dc79a5359742089
+d559541ac885289871bcbadb302b1211
+d559961675743d1068fae868b93d23df
+d55afb5badf230d6c800cd810fc621a9
+d55b8ee553ac3ae8e9b9b343ec3dfdae
+d55d694491842740721c7b5621c91d75
+d55e5165d75295c337f628fae4859dcd
+d560e0132ab8473c0af3b80d05e9754e
+d562594124eb91f3c3fd7d3ea114f800
+d5671a673f10f946529e6476185900a7
+d567cde103753598c06ea8c7d4606d93
+d569dc3391216328931ea3218cc60d81
+d56f098db7af5ea8dd2955f777da40c1
+d571252a060d5983e2a8615344a5de37
+d5714065ec6edc02c04dfc9ae5fbec9c
+d573bfebacae24f898938c2cfb590b40
+d574217baa45278c338b901905d6f695
+d57445a34a6b04ad95fead42e21417bd
+d5768b5ae20d6b552856f34c64e939c8
+d576be5c6137a89609333d2c36817fc1
+d577937172efc8f39b0503ed97f7bc3b
+d5797687047df65a8920f07c46b17925
+d57babed438b9effda531857073cf792
+d57c5822a1af26fce84684daf28eb3f4
+d57cb3fb12636932fa53291a9a69a2ed
+d57e98538eb1e5af75cf8e365e1eed5e
+d580294d295d456a117a87b914efb78f
+d580472f89fccf8af0398ec58721f289
+d581da8aff6366d9c11df544d305a2ff
+d583ea9545b8761d7706cdb8d2b1601c
+d5843c51020444d959291ea1ce715876
+d589f40e2e0549f77f12fd6ac706dd2c
+d58a5cc0f1be66a2d8aacc446604d70f
+d58a7de0da6b02636256af810b171a00
+d58c6c9d00fee7763cf86366313763d0
+d58c86c702046ddf3dd55182a4bf5d4a
+d58c87c61011d762e60493c12c9684bb
+d58ccb302aa8843143c858b2b538f7e0
+d58e02cc49ebdced9a6e376e754c0563
+d58e760611217616e11937d9874e37b7
+d58ef626b63db36fbe520fd4ac6b10d4
+d58f7b0f7cf0633a3a7f9051eef9283a
+d58fca799048238ed2bb343bc5401dd2
+d58fdc47324b7a1be0b062dab65f9887
+d58ff97f7f3b9c605bd70350dd92de38
+d59176a250f5f016645803d1d0e69b85
+d5950f4e333b64d729612eace641b952
+d59512c6fa06fc3b5c0ff9005bcca9f6
+d597747358428d814002abda48cec29f
+d59815397e825d61b879351f4d52d974
+d598f3781fbf961c67e76824663afbdd
+d59925e65419fcb7896749eadddcecb4
+d59932f3f5257fcd674aae4c88fc908c
+d59b8dceef692d3b3b9c3b1859edbd91
+d59c72d11504751c0bfb03d540868e38
+d59d337994b6c1cc6ca9440947442996
+d5a0b6bd566cf4a0d8b5252993c0a100
+d5a137d82dc1873d0f809a3860b96efe
+d5a2e57f39f4a74bebe036daae62bb71
+d5a440c8872a8dfb8b9ea1b7ad16e485
+d5a9c9be5b6e7fa79f9ebabbca94c5a6
+d5abab97813e54d1458ab22082005482
+d5ac67ea0f81c96ade5d1bc19c34a22b
+d5ad32e581a75e7fe013ae89b019cec8
+d5aeca00f5c88ae93b698314ced00331
+d5aedcaaae6063c191e146c873b3ad48
+d5afd3e3337670db880c0c43782bc8af
+d5b02de53313da9ad258ac324d0a5935
+d5b26b8921f8748dbc2dcf9a1181f308
+d5b2a201895a01fe3f6233c7fb821097
+d5b2a2c4ca42041cad38955a70d2529d
+d5b5d7f060183022548808a6dc4f6708
+d5b641e6182f2715ef49f97f3a755aea
+d5b96021c9893f2c19f5ed06bbbfd5a9
+d5b97911491c8d066bfb5ae6c2ccd023
+d5bbc0047150bd89c509cb46b6e58085
+d5bc3d269b625c373d9268a2dc088e33
+d5bca2986945d50326cae6deac9ee79d
+d5bca548b905e5c521a6d3ce9edda855
+d5bce06d6df4d35885d81d0175eb20d8
+d5be38d3d5c34222d79c0475649263b5
+d5bef5f537bbe91412d6b18c6f69d8e5
+d5c04b11d84840984fb9f1e946f33fd8
+d5c12bcaddfa87ab95556be9a739a418
+d5c26a20eb8e05edfab10e2eeefb203e
+d5c3232df2ab67a798eef2eb23d3ac2a
+d5c48f6996af8a1f86ecf99a2a8ec5ff
+d5c4a5eb0538505b881d39979c1d9196
+d5c6e7b03360f4bf7bc298bf27ec39bc
+d5c754c9a974ede70b6542bb4312cde9
+d5c8f4f97ddbdd7e15fdf2f9d905a266
+d5cd6c0c72bf51be5481f79a9275e333
+d5cd7b339f7bd654c92cddb630274814
+d5ceec8a30fade99c315d2af3a3dfc00
+d5d143677e330148c56e760934b854d4
+d5d22ac3449a0c432f0362b74b7077dd
+d5d237ccf5758877b612526f1f87464e
+d5d3267c18eaffafb5c65da526abfef5
+d5d43070385539600ab078a04ca3e305
+d5d727a84bfbbf68aabaa229acdb0a38
+d5d7b83719c5db0bd5399d436a0690ff
+d5d854ee0be2543ed1f02bbc6911f490
+d5d9978b81515d3a0dff7880c329e362
+d5d99f51ff446d804d60a1332f220b89
+d5db25f31bbe0461e2871f2a35febd99
+d5df308fc1b5ceac8d96b67a0b92957c
+d5df68b62365afab9cbf6e7669ac80ab
+d5e0bc6affd96532f4c0c28cddde3bcc
+d5e15a7a7beddaf9d4571256562a39f8
+d5e2f0a1616fb4b1e6affb1b4a2cf927
+d5e55309352ba652bb7fbc8e0f2d9497
+d5e555b7fbe17def9d74b353cc9bfbd5
+d5e686307096d16041ece80b05de0e20
+d5e74b6491205f6ace53b87748f21c4e
+d5ea48ac41c9853bbd984d6d95f3b417
+d5ea56e7df1b965b8805f8973a222517
+d5eaaa3465574b330c6c27bd2ac23a32
+d5ecab6354fcdd99257b5defae2a1742
+d5ecce61a525fa74379196ac1c87f19e
+d5eee44130f4ee9e5c65a68998642729
+d5efec9491782b24ddedc579e1771659
+d5f009a96e410389734220574242c0cf
+d5f01433a982ae41ab75e40fe3c52742
+d5f34414e97ce5802a2059d06f6d8f1a
+d5f52561838991dd71953aba62d83a07
+d5f5acd25d835e717d93e0efb4327114
+d5f5ae26e1cb2db5d3152dde2bc32bd0
+d5f5e80d56fd2280ffd20c428b7f7bbf
+d5f8e154217fef2a52d56238194bf1b2
+d5fa55538a4cfa9299b0cd73a1c04590
+d5fc82bf75105d7c67b1030b238a3c33
+d5fcc551fae3b017afd9880588d5a54e
+d5fde939f2fb83076697fcc1b54698dc
+d5ff86574a872a7f0f7712393e9ab0b7
+d601884e1a1c517c4394351df5d99138
+d602c3cd0b9bc54e1345089740e0e9bf
+d6036396f35e13f0ea3a2fed579fbb94
+d6038df4019f454aae7a4e43253927ae
+d603ad23629db20930cc2d30903eb0b5
+d6071486bdaeb3fd1ef8acbb1a4dd980
+d60931790e90a7bdb5ec072bc6e322aa
+d609b3847a0176320ae9652547e44c04
+d60a3d70b4dea39ea27d54a4304b29b3
+d60bd0a37ee397d242dabe2e157bd6d1
+d60eabb1dca6e41b061480d281f7f6f1
+d60fa929e69f4fdb78f06673eb36fad3
+d610952cd3a952110564acb128603abb
+d611581fa53fdeeac71b5115610b7939
+d6203b31b77a1609f7220e020a845702
+d6205ed97f83b3ba4c7ac324794a7887
+d621e359d5541f960eaa73a0710cdc32
+d623ba3f2d4aae81be37c590e250d488
+d624316acf4533d345573befc36c6180
+d62444519c8bd1c980090496c0704af2
+d6257fc3202e5ee80bd8cd2fe7f5a41f
+d626c81c16ccf02169e5242aa738d186
+d627f8607d95d727106c041f64747698
+d62a07e136638f8553195c7021739286
+d62aab5b2174238473077b95b0b409d5
+d62edb9d0c2d4e46485fe3c766d8a1dd
+d6322e32ec2fab492e03b6d17d0e163a
+d6327c5562d321af4551ea2965dd4ad2
+d634f4683ee8b5bab58d92bd418d6a2e
+d6363d53f9d9a8c8af9212a3a700c9c0
+d636480200861073a1db1e504e1981c3
+d6369240e95a437399de81e2ef7ec23f
+d636b0e2874cec1d6824b5b3c2a91130
+d637690e98246487be8ab83f7b92ed0d
+d637ef544c0963bc1c7712094aec623d
+d638a7ce0b866057b0cec3f93852fc9d
+d63908bfb2b96e191f50e25b4306e5bf
+d639214d51af42f188b7edf17f9847ab
+d639d023a2b4c94bcf322634e2efc1b6
+d63b2e0825687b8f34f45a8d1cd6e563
+d63b33edc1932756c87eefa4c4bfb5c3
+d63c7b5fdb539ea62331a1030f57022a
+d63c8743983f39da1a6539d41f274dfd
+d63d0fcaf904d168819250e2fc1ca68c
+d63d6748cc359a441d9dc14c386adeff
+d63d80278927f3016c925f3fb7c47657
+d63ee6cdaee717bc847ed0bde05f13d4
+d63f3ff18a01bbe747eaa5594e78a377
+d64040d354bd7963dcd8bbc6a537a411
+d6419adc2cc3452fe28d1edbb0cd28f4
+d641ffeabb1615482e7f11ae67090e84
+d64201892fef4e6f7e2f984696ccfdb6
+d644a82261b4ebc4611c993cd4bc4952
+d644be43c946905c922c00dc7dc43a89
+d644e6915299452580bcee8c21530e1d
+d644e6b45686b35b756192d57764fd24
+d645a3646e8df08dbd8bc4fbaebb42c8
+d645be01c379aef934c1d5fcb424dd60
+d6467c55a745d0e0dddbf78d6c97d08f
+d6486c5f15df37b09f1e2bfcaaa781e6
+d648c4f319b26cfb63dc930519d4a183
+d648ddb0d7e5b01b9b150723de6cf365
+d6494c2b4775427fef7d418ca5b5ae62
+d64a85875bbca160b1baa7fec6dba421
+d64bbab35046015ceca0cb380bfc0d0f
+d64bd8ea7c969476074fcdacafaaa42a
+d64d71dea4c77ddb8834d5173d01dc39
+d64e3df9612b9de71ee5709b64c88d2a
+d64e6888205dde66c609c72b55a0147b
+d64f4598906aaf2e8a02f8b89cc99955
+d655935da4725fb1247520d8af4e0418
+d65681bff2e47ed8c2fe2a0905a9dc64
+d658fb220442a6d07e6c0a6f67264e2a
+d65944c7683aceadce734ef4a6034722
+d65ad89c23565df47c2e16f8ec34f377
+d65d19bafa797d0e282140095ec916d0
+d65df5bdf15392d25db24381ace273b5
+d66001b231369bbb0d6b951d121e6a67
+d66131fe72c881e491f1d2617be6a556
+d66692824175224fd8259e77d718466a
+d66803a9f5d2a9e41de7a39a6efe22bb
+d6688569bda250320b8c6f87b9a889d8
+d66ee0bddef24b3b08808130986aaaaf
+d6706a27c8f99bdf0be7da8c5d95eaf0
+d672fbab04dac910af16f1b675c28ad8
+d6760a2c9c6973b7556ef76eb4675c6d
+d6766f8615d8764257f4089fd6e5cdca
+d67857bc927e19fb05b9caf357ac23a0
+d67a7a342d7266d63514d045454cc09f
+d67c10803171f4b5e99933307dc77ddf
+d67f503af661bdfdf8c35403ee510be7
+d6807a82170184780ade053616779426
+d6818144ec5782361f5b63e5d6eca8c7
+d683a334e644a99615864c780137f9e6
+d684834e4bb7a663665b176a28f06422
+d684f52bda20b17b676170d1571c9f3b
+d686504393600d8972545a6e36bbfb97
+d687048642b5f04ed4d516e8e63dc2fd
+d6885536a6806a7768c07fcd46efd8fa
+d68a34e1efecac1d66ffe7d06b247d7a
+d68dd40b15c54f6e11e643785024b1c2
+d68ed923bf96dbac7e721c61bb96f6a7
+d691ffbc2841a00bb9a481b2e94d123e
+d694ece2a4b12697c5d0bf44d5d583f3
+d6953ea63f0dd71030cfb62adc5e373c
+d695c8e3653b6ab72c492309d7b75432
+d698da34cbd307a09dcea2a01a42d642
+d69a74d67d8be7e4236f1c4ed20d588e
+d69cb7500eb9d4237a7f5e968b652e18
+d69cf7192452e63cda4f51a4c3a56f6e
+d69e6f6846f2391569aa2d6a5e4e8c0b
+d6a00adee05d276eb78fd701bd782e70
+d6a20c6b848c9065b10a19d9003b2410
+d6a5be584ec5ff92f823fe925f00c56c
+d6a646d1a4edb48050f7ca52e62a1e28
+d6a925ab949bc4dfb253eacd7103723d
+d6aae0ca9270270c74ee6b7177af9136
+d6ab7e4ebf81d95f3b342c23422e329a
+d6ab9049ab4de843dae0ea5985d73603
+d6abed1a93934b33900fe4ad6ed12f8c
+d6ad6d06ae0e601fb75fa5d835073c0a
+d6b1f05d0985ffcf4ee09c5eebe5572a
+d6b4eae42159b9a3816cb68d9ff5a9e0
+d6b6690c7068239b700948b048db29be
+d6b8e543007305bf8ce05e3bbd9fef60
+d6bc0798776e5ba06807b5ab2ca229b1
+d6bc3848774d5575bba3782e2bc22f14
+d6bcc81bcec8e892bee0c95f40f7bcfb
+d6bceb0ee46124615609027fdd68cd69
+d6bd9d091685636970d75657e609eadf
+d6be85a42697fb96f84a760add1030a7
+d6bf5411bfbe493c530156ab3aad4e2e
+d6bff69813990323acc10f0cc9215115
+d6c05aac7b9e4a2e9ee55a78248fe51a
+d6c0ed8483aa7ff51743da3fdbc812aa
+d6c141671e29fb534eacb27497b9e503
+d6c1782fa0159c7d674b7e1aeeadb105
+d6c1b32977aefa1e20b4d81f4bf6998c
+d6c1ec93f06b2430098c2e65661efc90
+d6c3fac795ce907116fa2a3990f4a10e
+d6c691ab467ecd231e5be502fc8dc1cc
+d6c79639bb96b3be36254da94fb9bae6
+d6c89f2eceed7b69ef99cba1030f17f3
+d6cb5b72b2bff6038a179a544533fb11
+d6cbe7ad18070aa19bacfab448569e66
+d6cec3739f24ba0488efcb0bce4181d2
+d6cecf69ff57aa0177aa795e95bb2d71
+d6ced0d9335fdd54379afd89c122fa0d
+d6d2297eb9c8f51b5ad732deafae32b5
+d6d40175fd9c2b152391a5a43cc138b2
+d6d56365a2a60bc3e50e59e1591f2e18
+d6d80d01d0306a41d484201bfba86e2f
+d6d9120aa43b87801d970df31bb0b521
+d6d9f2cfa27c0360a7561b0b837d3a15
+d6dac00a0f1dd7a74cfbd787ce1894b7
+d6dd0ee642a2bbdbd6a4be87808be0ff
+d6de79026784b77457a3e27dddab2e89
+d6de7d82f200252df5a051288467aaa1
+d6dee0740185752a10766a647eef749e
+d6df1e28be9724ca5aff79f9947a4cf1
+d6df2ca9f414f62a854f621b35d00077
+d6e19d8b2d2d7419ff8ed2039bbd73cc
+d6e25df6f6bca0600c818cd75a654df9
+d6e310d97394f28c3aaf1c6da2f4b5be
+d6e378d551ae117c4fafdad94ea05e65
+d6e3ba5bb1646dc66c9407386a203690
+d6e682fdafab6601a40e9b2cb346385f
+d6e6cb97ffd2bceb882428a1ec51c4a9
+d6e817e58822d5c98f119e17d7e11b15
+d6ea4bafc289c41496ebbdaecd28f476
+d6eb2b881c09c4aba133e79b035e8ac3
+d6eb30066a7d1639145c30ceb781d45d
+d6eb9487917032b1e2b6e079044229b7
+d6ecd38957a31dae12715c7a65928f14
+d6ece511f61a9c8e5ae1611a3abaca2a
+d6ed5952f8c69bdbd0c793b530df01a5
+d6ef367abbec57155195efab72fbc607
+d6ef47f65be251156155fbed7dee8d68
+d6f2b48d61dfa99595b8dcc0abf9fa10
+d6f3cf791dff82d7ef53995d3ad2b333
+d6f54bd7fcda27146adaa61d94fef23b
+d6f74404081ed88c09af09e44dd061ed
+d6f820af2b73e80fe49dbfbaeb4115c8
+d6f98b01f17c23554821843c800af69b
+d6f9d4ebb3f44b913f9ee4ff7b0bc5b7
+d6fa6826fa889b97eb8fceea0374747d
+d6fac251e427d93df76f204afff0d84b
+d6fb382cdffc9d7aef3ae9d41c4709de
+d6fd4da7e8b1dad6452ff5277d5dadba
+d6fdff53dd0d63caf0943ab64ebb7959
+d709e40dafc19739190f714f2a98a6c4
+d70d38e00a87a03ede4b40fc90a6efc5
+d70e20d0bb71e9d036acd83ae9fc0d78
+d70e6fad23511595a994d91e1ffc4ae0
+d70f391822e07239cd506755d242e3f7
+d70f4cea531dacfd0f87b67295472851
+d70f54c0abac7c36908520b1a6bbf3fa
+d70fa7e89118378f91dbd580e798343b
+d713a53e79b72645cf7dc9f7a55c70e1
+d715a25052ebab71a19e2a10e60923a5
+d715b68105a20601442a9de8211efd03
+d719ee108a38ae09ca86e9286fa300ec
+d71a550b66884ee8c88ad6343216ec5b
+d71a5c7709f876c2bfb8f8cb2d8617bf
+d71b6c83b40a3e64f50e47439d8f0b53
+d71b6dfa02d0d4f17eb92969a2dbf75c
+d71b7fdfd2fe252a16fc21f14ff1d1e4
+d71cbf957ddba62e91a53212d00c07f6
+d71e3418d44e2363778d5d1fde340179
+d721f602a1bc33dff410af893f1e6542
+d72234b86a3de4325c1452bf7fd3a43a
+d723a7d284b0988cbf83165bd213aa0e
+d723e520e0aaa4579392ab44d854cef6
+d725bf7748d213542f8f39fa5fc3b3b1
+d72a7fea019e2ac10020d8ba35ca5375
+d72bbbb9fba0c1f3f7a81c45553a9285
+d72bf13ce1fe2343a9e7a3b296dbd596
+d72cf994a3acb92975138088e1533ee5
+d72f833febdac0659b7474b00cb79a1e
+d73076c93b23d954a1c3d082bc5c939f
+d731265d647189b45d5399952992c336
+d73209a4a46a28eaf46d39761645ac9a
+d732b41d9bf9a379d229c0204c5a0cb4
+d7344ac43560a510a4208f8872dee9be
+d735cba164bc1db1f5388e7bd9e8884e
+d7360e95d09847c0ce25e188c971ba46
+d736c131076b3cd535ae18142c77b639
+d738f67ba252ce2ff0a3206689974b56
+d73b430bb39397e126efaf78bb9b8640
+d73dbff48fc454e15073bc830f33d0ef
+d73e8cc4b9f074f487ba0b0aaf9c311b
+d73e8e1d86c88b398c26a53891892f40
+d74049a46d0ca4a6e131875611764715
+d74051bef1dce32872041d03495f88de
+d74841ba3b385c489fa495accefbe968
+d748ca44367de33ee1c818caf3c8a1ef
+d74b3d7434c3cf5babdb4d73e8b07503
+d74df916f6ea47a5c84d0038ab1d9f21
+d74dfc6ba8790442395f3f86e1a9c225
+d74e2f1413125eb5b13221a2ae3a10c7
+d74e6adc5e8a91e232fc81c36e8f7645
+d74fef8456aa61596b1a3de74e3df84a
+d750394bd4cb69f961e0111c86ba0168
+d7504843db26582021b69fe198fbc597
+d751c9cc89171e777148c215e79b03f5
+d751f4c079cc76eb51a0814cb8da67ed
+d755f61332125fa33e154683005cb5d1
+d7564266bad6de050d873d00b36c10c6
+d7570d9506736287363f2e14cd46879d
+d758a974143f703be21325446c3ef0e2
+d75b72423814e21cd20a3ebc1254529e
+d75eaa22e2908fd05acf9d51d0da9d2c
+d76347b22d2950033b76ea4c60573b6c
+d76351f838a99873d056c262e9a3a56d
+d764a43d970774102984191dab01c2be
+d76598556ba12d59885ef25fdb5bdefa
+d7673052b09f7446a035d63bb94e622d
+d76a2522b518b7d90fe1e18a467a5b79
+d76abf51dcb55d798d52c5ae1833c9af
+d7700208e7d79e46389d61dad341dae7
+d770c5e88d1239c6dd3b16c5cbf85beb
+d775163806277d3d52eecb5e56cec03c
+d7752dcaea4b0627def272736f608dba
+d775b40be79c696ea0eb81aba936dfbb
+d776016be41e922ead34846aaee0c9ee
+d777a1a2de11a96a4e0493e2938d7e6a
+d779f6cb31138f51a4b70b9781711a46
+d77c5c0d56b3038b0882be95263e4df8
+d77ea927f38ead4769afeaa4aba070c3
+d77fa03353ce2332020b9d89906512dc
+d78289056b5f89e4d8e8c6f52124daa3
+d783aea390476519d551d271b18ecda6
+d78441a6e4cf78b0ceef174b50360f41
+d784d6e823f1ebe8d294d24cd24b2c18
+d7868e4789f57287c2a7a5c8c4489ca0
+d7872ebdc8231943a176ab2ddcedcf66
+d788ff47fe1173c74a7d292e0365d3ae
+d7894b3f784127fa59534ccf1c14dbe1
+d78a067c5ed61ea6513c333cc2c8c4c1
+d78a2c01ed249fc7d3838f07982990cb
+d78c423b906ca3b2471a690c8a61134d
+d78c542bfec5f8862e63e5bbe9ca0816
+d79011dd7b69483541eea81646990626
+d7902f64fc5384ac249e59946515f619
+d790905751784d49dc12a4db84f7febd
+d7911ea2c7231f38bdd6b997b958b5f0
+d7935261306b53c9a422dff797660089
+d793746231867fe1dedca07d2bbca15e
+d79380fdd94701e621e4569692a79a5e
+d79462d44c45af55f22db859e5b9b218
+d7972d9a0b02c4e70bd57986b8d4b53e
+d797a912e35ada1dd1aa6f00bee2bb68
+d79857c356a1a04775fe99c3ee508469
+d79a400dc305cb6dce92484bf731b640
+d79cbc8e907c83df7b0d5cc99c689a4a
+d79e0df0951b7e784cff0c04842f29ed
+d79f80250d2f9503ce7e87f6ba60782c
+d7a02239f37371daab0f81b6d26092a3
+d7a054e983dd11085fd6a5782cee42e6
+d7a1206fb52116a160b6cea8e06905a5
+d7a14a28a11cddd66417d0719ffd064b
+d7a40a67a9f49a14c7686efa6dc30474
+d7a5f1267f73bd191e0ce20559a98b55
+d7a803fc6f11639ee9c64f2839de7b36
+d7a989d1ff2f0ae020d34d9c230ca9b3
+d7ab28b79da0a8ec76b9cce393eba4fd
+d7ac2114f7a33f84837a3038dd32e826
+d7ad8d7bef0a62cd431bcfd0c4183aed
+d7ae45ea9444a5a91af4662aaab3b57c
+d7b0a8d0f149f98e50f8a75d04a16055
+d7b2bff9fcdee0a317d48d80b69ca60f
+d7b2dce46da49ef8422ccb137d1ca534
+d7b3a085e9e9024b1f0dd6c2cdbe6290
+d7b4dac32d4e4124505d17a53d31ce36
+d7b541d081a66933adcea9cf2235ecf6
+d7b5cec664694e992deb46abcba543d9
+d7b5f131076556c3deb495fce7474d3a
+d7b6d8073aae0e5f62a7bd327366d70a
+d7b76e5119c7e379613bc3f478b77445
+d7b7aa7189463831313b8d4d3f42150c
+d7b9c78abf0a0d4164f6c6181c530e8b
+d7ba3cc67a76bddfa8c8a7566d047247
+d7bb888c76a53e590c0b0383be83b56c
+d7bb90a6b528153e98b8d60ee033dddd
+d7bf8d49f3ba12629ccf03800bcd6668
+d7bf9f5248bbe65d2d7be3bceb6bdb0d
+d7bfb1cb3ba3e232409ddcd6a8783725
+d7c0b9a6ed7e6aa9ad232df7e9553b6b
+d7c3ec461e5e4264a999ec6ae9cca6bb
+d7c7d9cd38b40c7b7b84598fe0b75537
+d7c9241d76e3d01de83cfaeb9ce60513
+d7c9c5745958461bf22c5716cc645e2a
+d7ca4fcec335aeba194da2edd275b418
+d7cadc02507214ec8e6c7136769e2ad0
+d7cb672c573fa3f7a9f9d01e20903128
+d7cdcfd448e9aed498cd9b6f18cd59aa
+d7cffb7ea3aff5ba523360e4c1af01ad
+d7d020318a3b1492bc6587efe84f2cba
+d7d19589519d378271547910ade76c07
+d7d22247bdd131503288c4b31b83e0a9
+d7d25241d5248f6db834d30f852506c5
+d7d25d895a10442d792b725db56fb354
+d7d500f636774615f683f0ae2a36cb27
+d7d67896c3180dc66c141aa064b78395
+d7d817a783320daa614e39d689fa8e00
+d7dab2b218d444af58fb9f190a836ab0
+d7dbc2e7577831080a8fb1c617ea1a27
+d7dbde5a37beef3eb6990b69f9cca4bd
+d7dc2b6a06c35b0dcef9537304397e16
+d7dedad771fc082261a072697dde7cb5
+d7deedb5887acb67e66ddf4a4ce81aa8
+d7e54f18c7e6f0b64a1035d271dc4769
+d7e8b87bc335dba042ae1397db2870f5
+d7e975d29d859d9fff6972adde94c16f
+d7e97bfb093664d3ef17fc5bffc5806b
+d7eb12b493dd980d6dfa0963336b3d9b
+d7ec34477b7f81e227588e3ec4f4648d
+d7f2edfa823c4c93fd266721c239f824
+d7f4e90061b7faa63054b65b50903a74
+d7f82dd63dbf8d21210198bfef400c20
+d7f85fd24f19041ab7aba10817a2d666
+d7f8d1e82eb2d02afad7a4c4a50240ac
+d7fa100b1dc7dc09888398e27c9627ad
+d7fa7da0ea48df57c8863a2d1a6165ec
+d7fc8b1a32bdfcdbd1a740c41a36ba3f
+d7fe6a0124e0ba305772a11412b88c6e
+d80074f3030ca8c49e1192f9ddf3e6d9
+d8019edd432f0c6bda89b6f059fa811e
+d801a03891259e2d38d3495b1fe421b0
+d806c71178eefeffc7ee62b4a8fe0732
+d808a0f36b72fc1150fc148902ddb1db
+d8094cf85d9a5b2c2dc5f00a7ce537c3
+d80acf7a31738a2c5d7f90af6dd22ac8
+d80ad069427ab6a1a99d01f5b9476590
+d80b5c3b3c81b8888d57219083921e2a
+d80c01638e093cb621817ed83dc0744a
+d80c6cdfa8c108b50df5f1d4fa40bb73
+d80ceea2297df4d83c926af92d6b39db
+d80e6875fc05ecf7f18a5e02b42419ec
+d80fc6617f5f7ef3d5c52cbf4597b767
+d810ce4c4250df6a47449a56889e5ca2
+d810f0f3575e80ebbf29c8a4c1a6c6d0
+d813a02f69b67c15c264de9de662d4e6
+d8148e912a774845773c7a4db9130973
+d8156fa7f4ce075ae2ff5648c7af70af
+d8167b84ade7a826a19689e4175085d6
+d8167c2417c64320a71f905300085160
+d81699faca6949282a6123cec95ea15f
+d8187e607bf10a8f378c9cef9991a9ca
+d819d2cc7e08764cb602eec73b2faced
+d81a004bd31108fb708e4207ea94791f
+d81b1fe3257f1447d70c69b2547a89af
+d81b2000a732dfb6ff508cf3d5ff655b
+d81c5653da7b52b0a3f4cebcf648b2e7
+d820b6b4ecccda3f264fa9e5dc6007fd
+d822f8d0e041d0dacd0243f8241d5015
+d8233199ea9038b5103d220a12369e63
+d825935895e2eeb29112ab2cb00c6cbc
+d8291f56019dd4d58410ddb427ef6e81
+d8298f017f0628a01d8de3e404449619
+d82ae43bef7c8262e01a3475112854a6
+d82cb7d018ca4621ce5251a70824c32d
+d82d542212bd9d791db43bc02732fbe3
+d82ee7ee6da08806cc4b939a109116ee
+d82f4929d18f33c2a44836a66a7c472f
+d830d16cd5f9004e2a117b4b1f44ad9e
+d8322877fef9442c54599c60faa46a4b
+d83285b92da81f943e6bb4fdb2851a78
+d8345036bd7025c0a63d413d2a8caad5
+d83567685c737fd9be5183ca518e3675
+d83a59bd7155f88bc53a51a809ebd2bc
+d844a5ae46d6422c2671d1441f34b03f
+d845bcaad4a16ea0c3792d0ce6b780a4
+d848280ff0e0e2841429d015a2c92cab
+d849ea5c447c0d9472e0c0eebc9901bb
+d84ac48bfab4a1178a0acf8873efef37
+d84b8e03a11137627ad33a5479c900a4
+d84c6104af0d73abea0d2af2074453e4
+d84c82f8f22705f9e13b86383e77580b
+d84dad0f0cf62de3f8b133dea0e8dde6
+d84e949be3427539ba2e6b96263a4a8d
+d85131c9823fa1427f0b4ed6597f9d1b
+d8526715e990e6d7f5a7c36f2faa6180
+d8549c4c7755eee2c32c47228a6865e0
+d856b124f3e2e757bac9b201ddddd6ce
+d8575202d7d6725ffc4fdcea8aa57e4b
+d85785f5a3dfc43f9d8bc064ca90389e
+d8595a12720eace418aaf3efbd6067da
+d859e0189554f71328c3f16c86d07791
+d85b74d702049653859b3ad71a4f2233
+d85ea1282a5a89547b4ea8ce845270a2
+d85fcfa0d18f5f38e722c3eb571d0fd6
+d86065c25c58af199a4a7b34a26a93bf
+d860cf8da9a1d550264918b290f48c41
+d8626d3cf3c40fa64326a6b2f81a2894
+d8649e07aa146d0b1438b78729c0d6c7
+d8655ee6b3079f313e2f2bc0a2b85330
+d868991cc8fbb07864d74adf19768d69
+d8699572e5eb51931f5e162c869181ac
+d86ab884b3f8fa4da369943b12ad9042
+d86dcf799343c9ba02a770cfe400ea8f
+d86fab3dff7c739bbcd0a78c9590fbe1
+d87134bff6f885b82629e0d1e9d34266
+d87279699da85837b9d24dc5221c57b2
+d872927d76a7c4ac047f1f0e26d9e008
+d873c873066f9bd4ba3f1392541c9d1b
+d875bbcd5725f105823a491f02f4b286
+d8768d633e39b72b7a9ddc571c266624
+d87853ffac8d4a4ce8f391ea61522cb9
+d879e3ea732f70797623658c782138ac
+d87a10d761ad4b0925f5d100fda8e5a9
+d87c40bf57b6b0d83cd489d64ab39e48
+d87f10a4f615144fcedc8ac46a01b20c
+d8804ca4ba3cc37be0abea29f48ec980
+d88163826f8cbe7412194391fd0e6d33
+d882781a01618a2e42b870d6a5297a85
+d883c875a453809cdf6c3852855f94fd
+d885a0a9b754fc5b4ef23760bed01144
+d887b3b1be74a491b7f1649c2b871020
+d8888907cda8a33942b4bf8381195e6f
+d88944ffab79648ed7d894df0008bf77
+d889e19a264a5680e18c7c20d3993ffb
+d88b0a919e7d23427cbac9fd3c36e28e
+d88deb3975f3353263978abfba133c36
+d8927654b04bdf9b3c667e529a186c85
+d893d4e3f476c093a076fe40354ecbd6
+d8963396f7defd9abb7d362feb45617c
+d89677fab210cc0226617b6cf1590ffd
+d896d85dee88698aeb1bb3be657e79c4
+d8996d7d032274c8a57321dad7fee62a
+d89c3e29b5b9d351e2b01501d76f902f
+d8a0daef74eb4af31c03b15bfded1f2a
+d8a1995833b5d2a177a297f3d2c1efeb
+d8a31d7906c297a4048e9a31b29b67cc
+d8a3f287b9666242567c774bba4dcae3
+d8a544c2c500d436687e15958deac97b
+d8a7ac19969026b2fd33ecc3e1ea68e7
+d8a7aef0148259056752c83654d4ab58
+d8a84934503c6aab2c19bcf751e2ff96
+d8a8813087a3b6ef2be9f43f7d6cf688
+d8a91bf210de063ec1f7990c04459d77
+d8a94cbf9a008a0af44ef31a00b3b07b
+d8ab8fe3d525649b8803573f2ed4380b
+d8ac61f36d68eb639d4a870497524c45
+d8afe46ca4ff9dcc5b481da12ae99cef
+d8b207869636cbec4cc90411cccaf4ae
+d8b2b2e7d0636ba56caebef85895e482
+d8b370f44b0739969b02987f70766f45
+d8b3c93570d831933eb076bcfdc343f8
+d8b4e0028f0ab93b3f2faebe44ddc442
+d8b6e48210ee9b845b71afa06e229880
+d8b7e30e300a9a21fe6a861e31221f03
+d8b8441ba49e36e098e7991096281dd6
+d8b98b292c8bec0a17c8a3bc9e334587
+d8bbc4ae1f3a5d9eded34f1f777207ab
+d8bdae1c862236992b3e43034fbb8e27
+d8bdbf53c5b70c7f2fa20371f892972b
+d8c036565433258fd5fee0fb10028c42
+d8c1825877d7049eb3900abf1fbfed98
+d8c603818314d248c07d3f72c722e660
+d8c67b975963b5dbd89d2b92fcf2c6ca
+d8c85f8b556bc5e3d3f89a10b07258b3
+d8c89fa06850f5a304144fa911ac9cd7
+d8c8e44bcc02ec8a2a8ae4272fcc2cb7
+d8c9156f667a2a22c53d4b42b2ffe8a7
+d8ca770b4f6d4a0f83b461c3a3ce3d69
+d8caf9c0d13afb713d3e5bc0861fad22
+d8cb6b6df2e8d4836e185bf6ed0b06cf
+d8cc6c2ffa5ad10607f680a72490412f
+d8d0630b2434d22b43b2612016e82384
+d8d2638242dd93cdb35be23b5c29c778
+d8d368df65d7bc30c8e2b468335d95de
+d8d596627b243baaaf9ccb7c4d39a83d
+d8d82a111feb4685e261c30d99b9d758
+d8d9dbb7d12a53524475bfdc5670dfca
+d8da3ed828959d333d3985b0e072d7d3
+d8da7edca4a954d4ac1ea53985878ec2
+d8db515e0dd20d9773c7d048f51e162d
+d8dbd7b6d364da57701f3da79f1ca5c4
+d8e1e9febe9d6928806ac258ad6e7d18
+d8e2879b919ff5b80616912f7fb5e8a7
+d8e2b4a028fdbc7465dd2697655a250d
+d8e5fe343fb97235f41a5b683f364c3e
+d8e79fc93d982abc40d4cca9883a6f81
+d8e8d9045152ad31946e45639383f44c
+d8ea0458a00b5b90e98fb92e4677bf6b
+d8ec26932f87b9a5f520a21f51714b7f
+d8ed826966935f1acc7e717ac6c52878
+d8ee5fbb48a2823cefa1e0bd39d990c1
+d8ef97c90f0e69ab338847c086860550
+d8f06eb5d58dc1a3ca37d89ed72f7e38
+d8f19b008b0c61baefee24b5d347e772
+d8f1affae7af4bec5861723978cea54a
+d8f1fe6df4dacc99b0c19dca76893ba0
+d8f6f9f3bf26ed61f18b5e20a1fd5e01
+d8f7372df40928bde4796f68eba3f54d
+d8f8b76d89ba6e7fa5b5784f2cfbf472
+d8fabbf9d7053a50f75a850d7ff51e74
+d8fad506ac513115be145c9d057a0ee6
+d8fc33a1aa1bb6bacb0cebc87395e407
+d8fd508856b687ae7145bfe51d5df1e3
+d8ffbf9b4f1d4acbd414860b192d2f25
+d90047d4cff2b152a09193c8bcd6acd0
+d902e21232c7ea8f0b1340880d48f7f2
+d9036f06b3fc946facd7c88100b8df94
+d90499af844b4dc78cd73532262eb7c3
+d905ae05dac5b176e39d67b33ebb1b21
+d9066c31aeefb22779f5f9d8328ce20c
+d908ce6985e351058aec1cc16c6a4560
+d9091f10e4ddc259ca8da5a294dfd5b6
+d909746215299870da61d4fc0ee230a9
+d90bf9f5a938e125509eefd9bab32f68
+d90e6b83d3e603f49aafc50f6bbbaa99
+d90efde66eb5aa235c92a9e0e5d4b422
+d90f7d128b42d9b57ce775a1920b3cb3
+d914cddcf9dd2eaef8b40e40120cfba3
+d918230b0bbce3280c35cb42539cda6c
+d918c7389ac92e09738874e0f7125d3e
+d919332afeae73aaf50cd21b2df7dc56
+d91e4b5f5d5e802aeef7e9e617d8d260
+d920a0d41c9a7248726927fe66f3ee5f
+d921395e87643bb4912e61baf5e35761
+d92215e88c6accb67170dceea64c3f62
+d924ecda071cf0e24f5b54565661bdbd
+d92539e31255a2c22343beee70dfa2ee
+d925deeae76ad6bac6426811acd1b242
+d926867f31af7b2c7a3e4b61d748a8f8
+d92749265f65b19a811400391ea49879
+d9279be676ef58ea8b49269fda258d02
+d9280e9700f5730ef6b58c3d015af5f0
+d929844f17ec45926734d3f33fb95684
+d92be2b1f771a2780a15ffe26a43bb54
+d92d9c4ac1c31b34b8396339313499be
+d93380d0e99a93bd62b010e22d2aeccd
+d935bf57235f7423712cc913f0115c18
+d9362ebf453e4f1a9489156c1d5fbe0c
+d936af24676934f09507e8279c088e6d
+d9379fd640b2d995e27ea7feed45e393
+d93e30d364ed06b54bf21990f979cabb
+d93e5cc48bedb1fded6ac359c8a2b900
+d93eeba0bd5ae601ad0ba845f4f9824c
+d940a10a23a40dd2fa243c6f16a780be
+d940b616ff969724750aae638999fefe
+d940ba01aed56ace3c972a9c4a3cd8d9
+d941ca44c206cae7e3bada0395371d92
+d94250328ad47c13febb0997ec000de2
+d94275495f4596192f9442306c62a78b
+d9435fc391757ded4f1b04aee65a0487
+d943d7a77d73e1d90594715d4ea47be3
+d94457ad204976b3006701b4861db57a
+d948439460f4bc0f63c1cebc36787496
+d948fe349d997e7526514ff754689450
+d9497b6a61e3a23bcc7f89c3d1230cc0
+d94989dc39c2dcba447d2d6ca5e8adfe
+d94d4d7ea9acf9d0f755c2978bd73110
+d94eadcbac42b117f9ecba3175b2620a
+d94f134cb39fb0cd46c5f572298368f7
+d951da28d99583fd7ceae8b3916cebed
+d953cb6a8c08ce443c7b836c3808025d
+d95726ca39f29449f5e2536914652ec2
+d95d60d8f5cf76127ffab7b95ffe661e
+d95e6b90e7fc80c171a03149d5965c80
+d95f516561c9edb7535940b8328f7594
+d9609e23dd9d5d2b38a94fa971488508
+d9624b06e42b1b0722e2e9cc0363e2d5
+d96366c11e4eabbcdb98210a3af6c44c
+d964cb45547df2a1a2848de66129a013
+d9655e08ebfafcba6b3b59ec1ab0674d
+d9656a0277b64d7db51c5d1c67c58dd4
+d966080620868f991148d61995c845f9
+d9667dc7af364868ab8c429016ce4f7b
+d9668ee3a6fb165d199df98f43096dab
+d966f795bad6e72a292717f429b39851
+d96712e77147769ed11240ff7dbecc79
+d96880aec53e9d43cb8823a42fb1b70e
+d968a7c1ee613a5d5af1e5ff89907cbd
+d96bc8e77a4ea323bce705a94d2b07ec
+d96d66752028dc5f62be4f2a9ea6150c
+d96f99e82d6d0223cd870c87e9a9e4dd
+d97004d5aeb1913292a90443a647f5e6
+d9702538dff23d97568b1820b45a8054
+d9714ee46a3e7d6702551d717600b82e
+d97488b516254827f09efc511edf1f99
+d976b456553f23bae317c89118a178b3
+d976e670bf765bc6a7eeee532838ba54
+d977eec604737d13fc28db1082eb81ed
+d97850c0d1500f9679043886ad07cc34
+d978b1ad84a994a137569908dda7fae9
+d97a1d4e95c23b7f31deb2a6fa792b16
+d97b3cbebba2f9fbc6800530b913cf6f
+d97b4485a37f6065c9cd47f7faff5d82
+d97e495491fc252b8f3d1402d94360ec
+d97f71e7eeac655045dffea6b962831b
+d97fef484207c463e40727244c6e6266
+d982326cf7e39b328eafb375016d85cc
+d982fb3a8d74a5a879e6d4bbe4e56236
+d9836363736635622ca3c052935414e0
+d983dacbf9b4637d079bd9141d9631f9
+d98465bdb0aa39efc77c83f35d169bdc
+d984dee8da8e83949b3ce31473f82c2d
+d985550688439d875f8e58520dc8cb0c
+d985748708f13fbeeca52b3098e69123
+d9858f1c458cb09367ade503996c678e
+d985bfa5b3cd2fcf6751579ad75ac553
+d987624a481388d4665a496eafcddcac
+d9893459048f005c46d163ece0a85126
+d98c567752ce821f34543321fbd7af3a
+d98c73972d48454d00748306846d7420
+d98d5960795e948e1f6a817a35b1c242
+d98e74fa3a6166e00872129dd0d45a7e
+d98f11212d1d5d73ef86819d22e1b5f6
+d98fb5ad5aff33296651fbf24c29a6d1
+d9907c8c6ae954be7badfb9d16620e3a
+d993f7c1bc5e9c2078e850bd2d9d6e57
+d995254313559db572f0cea0bb8435bb
+d995d7500f74962bf3a89515faefd29f
+d9979c7a39ff219e20c3f0cb149d5559
+d9981ff756d4022e99f0856bc95f2e22
+d998337d38b91f34c5333e1cd0b60f09
+d99909efe7771eb50e6f75062dc60669
+d99c1787c9b94adb5a153f5edab4f127
+d99ca886536ef41346f288e3de682a89
+d99ef194fe546e4d3a60d8f0f6b7aa42
+d9a038aa9b50dade73dc357a838fc4e2
+d9a09d38f6aa5564d7a9dead278835a5
+d9a54c25c70a1b390476f0c202e640b4
+d9a559268d0e066d04dd33e902cac1c8
+d9aaad6fa6510f390ac4f0ef68ec3a16
+d9af211718814a204caba598295ef75d
+d9afc800afc0a0bbfe66309baf5d5127
+d9b018be86270ed6c9b976654151d393
+d9b196b6e25b9e3a37abab5768364cbd
+d9b200940a1bf8a8268d6c5651e04b8c
+d9b2c09acf6bc653b67d029a0e13bf01
+d9b2ef1a78578ff30889aff4cde402aa
+d9b3fcc70124dbe9f4e21c266068a921
+d9b450acccb111d045ae3de0b31e2211
+d9b6e43450c496083b56cdcbdea5d9d1
+d9ba3ee4f2e37dd2fc7551315b960dfb
+d9bac3ce894941d7ce1525973dd46895
+d9bb775675837f2306c2104511c22307
+d9c2146019ab635efc4cd9732dc90fda
+d9c2be38f653c9c030b660f877713560
+d9c3f18e3917b6872a79c0af7be8cd10
+d9c5db4d5ecbabaf6ce7ce9e0940520f
+d9c92a63b9cb48f9ff7c1ade81bb0f0a
+d9cb33a8de9d8c510ba2b8992ddbf8d4
+d9ccae412028236e3fca5e54669de2ac
+d9cda644bd1e019c078ddb8dcbf5cecd
+d9cecb42abf3078ed89265f6a8289098
+d9ced19a4d6d0c989b29ec5d1a804e15
+d9cfd33e23d71f31551a04b0a0d651f5
+d9d448e6b2cf3ce2079e714ab01e03fb
+d9d4734371a8ce1b6ce4d45138d6128f
+d9d4ba94bc910132eef7bab88a99feb1
+d9d5ff6658f3e86a16f0681e5a8bc39e
+d9d6b41ae1381cb9b0f0c6171c20ca09
+d9da1bd752fd1ca3f1f94dc4da8c1505
+d9dbbefce8d3cc6fb856f35b67b90ea4
+d9e0413b487a7cb856e74e7abbc24256
+d9e3414533a241f27a780832ba1436d7
+d9e4bd6fe997ed4ac1b7710d6f492c8e
+d9e7b6de4a0eb4cf7338306bd1f642c8
+d9e89afb807e0773289c32c4c0c5c597
+d9eb1540ab7301cc2d953d33830058ea
+d9ee57d304f818fa194765bfac712871
+d9f24ec963ec236c263a54b33f798f59
+d9f448a4a538efc0c15127b357f22933
+d9f648b08499bded3711ec7752637f68
+d9f7047f8219f08414d75acd77d48e98
+d9f843e103b1400847808a353898629b
+d9fc95a97681fac94cee942f66ece2aa
+d9fe11d2c880637a9843a8b857f582d1
+d9fee879d3b4dc8569d0b92ccc70b24c
+d9ff91c1febb18c331681f91019416f4
+d9ffc2214cb1b572cf5f9fd95493a177
+d9fff71c5c142829e436b106e648e28c
+da011b5ef59df32daff1370d27ec44b7
+da015c0da2a905bb7a165289f1fd04c9
+da0239823b54eb5482f103192010119b
+da061de7ae8718bf8ed7ca766fd5aa1e
+da0adacc5eab3ec4ced0dbfa9e5acfa4
+da0b1cdbf01edd3f5b27306b4203b098
+da0baa01ddd425958abf4187b4149566
+da0bbc9da1234c616c4f0338fb02f777
+da0d1f8e4e459eb76a2f3b8de0b4c9c8
+da0dc9b136b5e2450f5a3c71aee55f96
+da0e463b70369bcfd6d57a623b976bd5
+da116a76dd54e8eb0bd559f0aa79085c
+da122af56c2e5b2f65d0db3f9737fbd2
+da12faede1e1769ca4edf3d8f4d85f9c
+da1a2c9d585a449d85d2e928d0c71af5
+da1b06a8657ba015750b4f7f4c20c1ff
+da1c30df4b11fdd0ef583f09979efe7c
+da1c9446477ad607e9431bd3ba942120
+da1d11749e244b89fb36322029f99c45
+da1d65d090dfdde1dab98ceb2d16b707
+da20ae228d000b845e1c32818a57bed0
+da20fedb97745ddb9e09d8737fa6c42c
+da21f6b299b8a0cfb13bc58ca7c9a944
+da21fcfb64a579d86c5e0c6065f6add0
+da231c6253109f5286523c5b7ff5ddcd
+da237d669c20e6af209b36825615301e
+da250b4be9573de5b0ac65b4e57c2a76
+da25a6b4e9d0826db2ccc5da321e972b
+da25e4d8c742c40a86f176a4c4e104bc
+da27b4aa7fb1393e23e924bbda382c54
+da291b0275ca12f62d9d4d982e90a576
+da2b1330f25441d3da291f09e573b220
+da2d1cbe5ef21751dc660a7e1d6f3248
+da2e54f1dc19beab5c2b8f5b75abd671
+da30325599bfebbf3c63435ba87110fc
+da320863ddfb53f82904f8e823599b99
+da3347e045b932443adce6a3712a654d
+da3366a833911c81f3a76b104f02c288
+da3401a0bde4e258e7387405e0b33385
+da34fbc2344a3d97957b09a378067612
+da3618b157114d3beb1b51399aaa39fc
+da36b8852bf58755b86d8fa15d985e96
+da36ffc316d799fc186208b0dd1212be
+da394e4d21f565ba02c876dbc55f9a6b
+da3a6b47478fcf4273baca7f46fbd938
+da3c0d8e138eb0d03ba0813c30a83ccd
+da3f42ed0760b7ee3422444df60bd6e3
+da40d474613db5bdc12a8e90979155c8
+da43f4036676663c7c7bae22ef6fc6a9
+da440ccd442dc7f4c35b1ad6a1bf781a
+da44141d5c8e4080cd1562de1927f9f7
+da44419df32d057c86aa5441f58f94b0
+da4566b58276f2a737fa1520f349c2ce
+da45bc52b8d023a2c0ee27ef02ad8fff
+da45dac2185312b580afb74f0f76aa32
+da45ed91acc8de6ff65c44c8bb96a81d
+da464931be56907dc7dbbaf938b2e3de
+da470f2a2bc89aeb85334b4335d19de8
+da47645fbe37efed7ca399f7e3d3e409
+da47ef00be52dafe208965cff24b185a
+da4857554bcf08bfa26570ad2ce3addc
+da490479ed1a73a70e32892ebe87151b
+da4a1d7a17cc7bdf729603792e29fa60
+da4a1eff156e63be12fac5e37c8854ca
+da4ac18806fae363d7093b1adf4bf53e
+da4b0cbcec5f84272f37fb2363adbf8a
+da4b3fc8943168de46a6ce601e646ac4
+da4da2b3118af1cfcd2f27f447e72c04
+da4f50cb4282c2950052987671e0cb2c
+da4f681fe9fef5e91514607933ba2903
+da5518b3f8819b33972c1e4722a48016
+da55cf117cca98d21df71b1c1e76b969
+da55e47e68434211ac5ff64e5179e9c7
+da568ec080e03279292445f0d9822258
+da56f16c1cc41d32c6b51292a02de826
+da595342c2711fd6161730fa8f93ebae
+da5a1e76b8a5b5ec4d44f50801d22ece
+da5a4ec524984438f41e9af689a2f384
+da5b2591674c8f4289f8e1fd98e7d07f
+da5f7c2671accb13980fbed1bd1f844e
+da6042e0e2a0d8b525cc23e18e94d388
+da609e34c8b8a613321b8d51c5203a94
+da62b13bfc05a76fdd987b3ab62b5873
+da636cf782872f68007745d463e290e3
+da65596e663dfbb244373f0b0c3a3f5a
+da659a5b63e119351854180407f42c70
+da65f00d8493065133b41e7b7bac04ae
+da66a92aa2ff2adff4c3c1225e3c746f
+da68cd75133a62409e9b2470bf1664e0
+da6a17904bd829803e5423567c73d601
+da6bcfb2bc549ba966fdd25a5c5edf50
+da6c9b0404cd62b57e6924498eca7c1e
+da6f79343e506c7371f78bb1281fa5b5
+da700baf61780ba076e99909f884c57a
+da7095355e0b74f765699df60872a20c
+da723cadb75bd974214bd564ac6896eb
+da741b879fbd3fd7a9f6361b0d728c6a
+da75d3ec78934ef4cd88d9e8b7d5932f
+da7644dd468999e0dde668252c0a20fb
+da76c11413a940c0eccb4800d1d2119b
+da79f5fbccbb8092f189761c7dd35f6c
+da7ac7ffb3dac52721e5ea6941672b2e
+da7e4ad8e63621f81fe757885c67c9ba
+da7f2c17821f42de29f8fe6d3fa5c8e7
+da80584cca548d4076f87922ac98fb97
+da855fb318d92b8c51306391716be430
+da86f70e321c6944857e9a065ffb4bfe
+da8932c182cf2c47d6ea8bebfae15c52
+da8a0e3215f61c34eb4bd200a679e06e
+da934add90d5c5580b1eac0e1ae5f6ec
+da93abcaece7512c44ec28159d2a3be7
+da94f39ac31f5b6caa73a8448fcfa08b
+da990de2626a7a127d01f3d44653c91e
+da997b22c6c38da028e6c8f1db668fd1
+da9cb4d71deab10f18cbf9cc209b95db
+da9e5e0f4ef54351278aac4552cadbf0
+da9f21dac400e7588543f9fd9ab70ed7
+da9fa15f9b5364c306170c42f59ab46b
+daa05ec94f6dda44a0c74ede3d732ab1
+daa1ef730b226ba4697d1f4ac47339b0
+daa2c971bbf671a9606b68dca84000e9
+daa3e1ae6e7b1a96cc3b080937fcf87c
+daa7f50d143560803820234d5ce4be7a
+daa8fc3f971549f06b6077e9f2fd2ab2
+daa93d28521254eea7fccc020bb2ae72
+daa9ac5666843d135dd289911599dfa8
+daab6bd6afc71979a4b135f53a368bc5
+daac421020a08c69f02e6b75732d96e3
+dab5794acfa95a929396b911438c3571
+dab6b699eb189439f4de62483e836bbe
+dabaa3d5efb64898f6be2eb3519daff8
+dabad457f971451f94af3a01b5dc9df6
+dabb31568c6b6620b45724e61362ddaa
+dabfe2d3c6c750730321c0c027337325
+dac28ad2efafef9d81248a046986ccef
+dac2e148c0c0b58d00ff607b1662918d
+dac31ed8a48236485f436ac0b7a03ac9
+dac5d2c2cfe708d572111e22edaa22ba
+dac8396b64655593451f33c37e041442
+daca9a57d70cc3af4abe00bfd2cc4a6f
+dacaa820f7f3b674eddcbc8e662499a3
+dacc7ebfb774e5a620b66ec1205bb073
+daceec2e69a3943679ecb4cc3e66308a
+dad0463f8adfda0667879cce98d5296e
+dad5e442f39e4545277188c272856f3a
+dad80bc112e9560d9f6b68a2ccd741f6
+dad992b172e7dca39c9f34c54adcf593
+dad99b3f96802b3a93fd9752f67f0941
+dadbf71da5b8bc6e7a55e4da08b42b6b
+dade40cac8b541e58189d8137d5f38cf
+dade6245909bb43d8d7e89b59c8095f2
+dade836bd917c6afc2adadded49bbe63
+dade936fc241e8a645d52a91e76e7136
+dadea8506ceb1792fa4e2f6f3c1cf302
+dae17b08f05610f92c5fe08a2eeac75a
+dae73e2ac6886fec52168cceaf992496
+dae7b5dbcae8a5054261fc039822b183
+dae871d9055f080f5cfc390aa699abe8
+dae9d0516481188eb28b52da9ebbb618
+daed3db05084bde1c82623ea44557b10
+daee46517c403d1ff733fad1623bd7d7
+daef54c0b701bbb60060210802c204b4
+daf273859cce28cf22a465890650a592
+daf2e691c217155e20721dd70de366aa
+daf567e2386547907fea3f7e240eb5f0
+daf6a428b0bd511c94e6bc408e2335ad
+daf7d11c6e8dede9cbc0bf46446369d3
+dafa0ff6faa41a3934fef39853b09b5a
+dafa97df7b0b9adafc399fc28f592de2
+dafad16a345c8ac4b4c2edd065919557
+dafd11bd033e0dad4a97eae736425c5f
+dafdc061169c82fa4c578161133c87a3
+dafdcd0b556f984f9eb46eb458d3ab7c
+db004e0f9c011f0bd28d6b4fac0235f8
+db00e504b26834e7355c01a2ef93aff5
+db039895412ef4ac897ba7464499f4bd
+db04a994038bbe15fb2083e002b5b4b2
+db08c90149a32bf855246428b941c950
+db090cfc251f9354d40e861de9802ccc
+db0a8b61fbf4f95f9f74e371fd784c41
+db0b16b712495685bc86b998a1e2e8d8
+db0e76ec1a7aba474c41c7093489c7ac
+db0fe35775bfb4c90aa7c8fa1fa00773
+db10ead8517ebe62e8428c201de0aa9c
+db11d36f80e623cface30b2e2cb4582e
+db130f85b3020b833f8ecac3e61a6b84
+db14d6eca82f022e199d41d870574ba0
+db159e34105b8c7d17056feb288eee22
+db15a64627e317ad17bc85833fcfd311
+db15ef6f065412962b3255a03e44977e
+db169bb2565e237626b682f754ef46a8
+db16b40419a7c93977ece3c8621c2ee5
+db16f63e8f8a0f1d9d363966aa17c5bb
+db1cffb66e27ca2a5548bb4057561d1b
+db1e81a9ef39ebfb638f61cb27702140
+db219ce5ea8c50419b8d78a6df9c41f8
+db2271666a1fa4ef58e4e25ccea981c7
+db25e7de904ca5b74e262318a1301775
+db2798f4eaad6464ab337737f06bdad8
+db288391a1cd116d572fc99d415f390d
+db297c8a800eb727d50af12a48962abf
+db29e56036b17ea80d9db306ca2440d3
+db2b8216dd40b59b040f05dd04092ce6
+db2c3bc73a455f763223636ea3b295d4
+db2e1db7286d432d0387279f841f29f8
+db2f3c106ea91ceaf9f6b6eeb0b2e5eb
+db312b92c3079d6012d373daa48a71bb
+db32060100a235f86845a1b71a17243a
+db3326c56cee42d58b49489b47ecff3b
+db34f0d892fd468c6e218c9c064bb4f3
+db36eb30437f8346ac31aa03b7961b89
+db37f43b809a74660d815c7b0ce48db3
+db381b4414f950ad7bad1114bbeb177c
+db3a55dc99e399162af79196443ba141
+db3c12df99c8c55bd324bd034079cbee
+db3ce64e552c8748f29fd684acd61945
+db3fec346bbe722c3f312d6b2f19e2ba
+db402d2185f55e32b9f883696ec0ea51
+db428afde915368bc509f1ba71b33c53
+db4b1b12ef30b17cd8112218335fada3
+db4ba3571d116585edd908952b117c3c
+db4bc4ca97e8045350a1fc2000ec59f0
+db4c13a4e6494cc5c48a6ef18e6bb9db
+db4c19da3c7edab1cef6fad6df3b7fd1
+db4dd259632c152fb821d02a44316390
+db4f35a511f5216fe5167ee92a74549a
+db50adab8d6255bf9b9da5ffa8b9a97b
+db51263ce6d0ecf6af166694b13852ea
+db513669c1bb7a33bb3aaeb2a2675f9b
+db51d05d889737c141a4af4fd19274cc
+db523f690f938f21f1aa4b7692440499
+db528c5c389cb52f7dc8da13aa6ee50d
+db5451ae7add932604f3e55b9e67fd25
+db549b9b988503cfbdf64dd6d28f4ca3
+db55894ce28e324e235c34235c268b51
+db562fff5a7de3cf558c0634b3beb55a
+db56448652d6220290ebf630ff41d182
+db574f3a2ab3585bdb70a7ec92ceed11
+db5766f3fe382ee6acaf1d6b0d1415fe
+db59f90bc62f99f1a4e822f8dec79876
+db59fb6956040221a08c775aeb56b7fb
+db5e63928a133666181d5e00b3f39d19
+db5e7bdeebdf5c2e828f9a860d74f7e5
+db5f00831622650dc157ffa3267317cd
+db5f12dce567bde977ad4b2d2bcfab46
+db6193682c1b6b46adbc99fd91f17f14
+db62cc3ee54c23b9997a8344c8def80f
+db6375d12856777c3adc6bafa792ae48
+db6397477b5fa63a3308edf85542dad2
+db63e277f93451f4e20c0c8f82aa87fe
+db6413ec869ca83c544c85ec9932227d
+db64ceb568034016521ed4edf5353b23
+db6720c9e1bd29b0b496157b75aa6eda
+db67bbea5cd9bde353b2eeed70ede5bf
+db685f339e599a2bfa7c3a37c1d3c6b8
+db6b969582378074bde40ebee7daee99
+db6be3cc8ac53c8c3982e20e47c7a689
+db6cadf5df481dbc4a58e58111dbad93
+db6e46dc72d0e9069204a942a9cff450
+db6ea046145a1ca314be7b9823993f50
+db6fec389654e1d150ee2d5ca0ac234f
+db7093655e59c47c7faef4e297f8cc89
+db7156ebb69fa994380b1c41b3c3e4cb
+db71ac79322da359c244a3e88e3a5571
+db75eea8c69a3c013a27e99147e2db57
+db765f4c1a99c347c80a2977e479c27d
+db79157417624be81eceab7db9912b1f
+db7a33f8fa2ece54d077c0cdced34cc5
+db7b3b420c69f870c6c802719fea82e7
+db7e58a08d919dee00f78207da4675bd
+db7f78c3bfdb61dd032ce95e2d7e7dfc
+db7f9cd57e50f407862fa7ae716a2890
+db816766bb68800258aee9a91c899d66
+db81e21b96ecc18eaf26bb7127e4c670
+db82ef2f6b0c96b5ddbb7efac450938b
+db88fa27797cf8046f0edc3d44fbb5cd
+db89708044936ca9261fd68740951ae6
+db8aae83465031ab9f6a39a9c53f8f2c
+db8c70426d9ee8fcaa777dcfb8700124
+db8d1f5d185dfceb5cd521985507e70f
+db90b97c347b4644217c14de4df8736d
+db92d9019360755dfc2ec938afaac854
+db9502ac4ac8ec8c29ecb6cad31e436b
+db95924facd47409736d3f6d7754b511
+db96702c32e4cdd7c841172a45a1ce6e
+db983a062f0a9fb6e024f889cd083c91
+db992b9a991b786bbe2e696dbc03069d
+db99a08ab5f7bda923e6b74095b1196c
+db9acf46191b1c6d87cecff8f1bb927b
+db9d017f818a4477f920678e74c4cbd9
+dba06e480bdf156941f7b008f60af61f
+dba3352a3815c45dd220d4e3d5fc9bd6
+dba4ec19510afae3ea00721eff5db4e9
+dba5596c284ada069d209ffdcd2ad120
+dba6ef363301742e43fbde3b43a07f4f
+dbaa92e468cb71ca638ba822eb24ebfd
+dbab7a4aace2d7c0a227741a1ae33986
+dbac449e6de7d00bfc082c19e4647cd2
+dbada24afb7137a081a19a2bca1b1cea
+dbadfd09f1a5e96ee7e12f563710e9f1
+dbb3149e8d86697a0cdfde7d8280b75a
+dbb55b662faf07b01a533b27305ff452
+dbbc69c4d83e4a1012e502e131630ef1
+dbbcc2a005d39fac6e6ce8feb608544d
+dbbd343ddb8fdaf7fe92d1d05c1104a1
+dbbf30bff370151b7718e6fb75cae173
+dbc785e5ea63f018a5ecced3d8e62e0e
+dbc7e9628e10bd260d282cc82a1a1cf3
+dbc8afec7754fbe26dadb7c67a257736
+dbca38177a602022b429b67b3df0cf5e
+dbcc69af9a8e07333e9c821748b6a4e3
+dbcdc5f4d5a53d12aa4e69749d6247c6
+dbce7880ab145f85d5444ee1f4a32a90
+dbcff5e344c48be01711c9ef89c57de1
+dbd16db97dd6c159bb996fbac08e7231
+dbd44e5a0aff7fb79eee43007b22b609
+dbd485329695282d7a773d7fdb3608e0
+dbd9325a368223b91a3173eb764f306a
+dbdaa10d2bfad8ed99f8dcd25593eadf
+dbddde0ee1c10d12b6f9e3bbef0e00a1
+dbdf4082316f72ac35b7489634bdb29d
+dbe264a694535e15ab216f34bf8aaf5b
+dbe5e1608cee5fe4ea900118f678b8f0
+dbe804252883314a675242c283629198
+dbed3701dadbbaf0c9dd23f08cdb44c2
+dbef19cb83c8f2ffc66a80eba6d998df
+dbf08bb9cc3c92bc32b3f93a52294060
+dbf11da88fdf22c99a76dd99e825b309
+dbf3ef77bdadceea2052020eee0cec20
+dbf566f2ad5c76a35c22b24696944862
+dbf7b3c66ef9030c8f365b84236570ba
+dbf8221584c38d47de29e4e9e57728a1
+dbf949d1c7d0de924a9c1ca243c45a6d
+dbfa8741c4835616675a4f67d5d843ae
+dbfec24e4fe3da665f088c3f0db66a43
+dbffd7f0dbcabc248dade2ea610f95a1
+dc026210717159a213893e0ef1518606
+dc04a650c7ba766cc9a0e3e967739fe3
+dc06427b35bddb9dd39adac741235ac0
+dc073e202becb13926f081c685968a1a
+dc0a06a4957dbf732badf8ed45f3e789
+dc0a7cc1a21a48f72e7f8dfa27e862b0
+dc0aacc043e2eec0382e698a4f1ee837
+dc0b28fac11c8334d63906445faa92d9
+dc0eecf20a1f4ae4fcfec40c973bd565
+dc0f707000ccf7e0591d39cec0b8fdfc
+dc1199f92c5e8a23d0a1b66988c2eb1b
+dc11c3e19cdf36230f68525e23c491d8
+dc11dd9705fd74263b05e1a343c58d8e
+dc12cc64f00fed570edb6b215797a201
+dc1503500d1029e34a9009a2d1a1b085
+dc15554407448b1b0567c38e966fcec9
+dc186c671b029d910bb034519d2c628b
+dc1d1c637f7ae076741d8a1d121d44dd
+dc1fd54ee2cb7e1d321928e92247ea6c
+dc20cc3591a6bd1e1718f986c4bf0e21
+dc20ea5ff120bbbef60ea0b8651be8f9
+dc22ee056453c4c39ed91d6d6d8ceb02
+dc2340e4a1430c0148c42ffaab5707e9
+dc23e9f6047621464d28b0af18994536
+dc24e3a54b42068d0e00118a4d836cb1
+dc2c49eab18703a412752c2692a1e0b6
+dc307d9b6a60845c4db1b0aec2b3617f
+dc349f80b05a430e45a01cce4b42d9ac
+dc36d0651d2cc30bba8e56b0d485c933
+dc3ac6131a016cfad63229dae3d61b6f
+dc3df1656148345569640fbe214a886f
+dc3edc1ac37d1cf5e4b0d61925cea2ea
+dc41c22cf4598807e5cb167e0feee00d
+dc422259b28c37b3efd586f20e54224e
+dc4556f9acb20c157d5b43497ac20232
+dc4860916db188163e8f67ca8f27a07f
+dc49f2027e5bb100abf791c30cb52bb3
+dc4a3573d9c08eef89b90c44b14588ea
+dc4d83d3fde64665961bc026591e3a86
+dc4fb80dccd8c9a0e0be7bdbf2afaf74
+dc5582473f028037c74b8832358b0aa4
+dc582b1addce1e03efb6c6cbb056c36d
+dc591f885d718b895740a87cede7505a
+dc598d1eef7549c7277ee749055788e8
+dc5d6fc8f2de42aaa69d8fa84d61817e
+dc5dfe288f0cf6470ae2bb61e0b27aef
+dc5f7ca0d1549650633e4dc599ce022b
+dc6078dfe90668def4d5562476c536f2
+dc616633d6041e32363dc57d6c8a156f
+dc64230e626f160c7613c07cb6d4004b
+dc68e3dab90214829a988bc9eed55e1d
+dc68e9a57a7a0c61f76bcdad245348df
+dc69ae6fa0c55d5d34cd1f1c4e7f0fb9
+dc6ae39a553d69a19983616c2cd10806
+dc6b02d243d693f0686dab8136e25a65
+dc6c1df240807eead98b60074a86a95d
+dc71ebcdc321a4471103977c22f4e710
+dc74d15a968c3b49846e46edd05bce37
+dc753bf2d2b5b59cdf6e92fad590baa4
+dc782f5359f2ecea370087843032e9a6
+dc7aa7a6b29558522de6fd2b66bc50a0
+dc7b2f57c44c1d98dafb23b71212544a
+dc7b37c7452174a1e2a3333ff289fa04
+dc7c19ad7ebd2c067c3c83196d9ac4a5
+dc7d8dccb88364af7478e6bebc98ef7d
+dc80f9a9d36e46197c6b58b1b5afb01e
+dc819641bc81fff10fc16ec0717e30a0
+dc8474000d790684deea94550b67b5a9
+dc863547722a762ccfd6eaf29ea45a4b
+dc8a759a4b6627b87067c91f5bc2e176
+dc8b295a761e48ce0db92853efb89f62
+dc8b785c6fa6a18e9fd7aa5df5e1707d
+dc8dd782cc06b269bd30b3cf43774e43
+dc8e04b7733bb653cc9bbfbdc3e13c09
+dc92742f5a003ef6f6fe05187408a0be
+dc94053f1853d6121d11103456c30ddc
+dc94e2aed50b894979e6c9f72b7da8f3
+dc9517932b97e229bedf4436236c14d3
+dc9632b0cc88cf7d9d21033e97bd79e6
+dc96e909d656229162e1afcf8685f263
+dc97777871dcd50749c0df14a22251b1
+dc9a56abf7e48062e6625713ef0e8e0f
+dc9d350292d112f3aee8cc55098fe563
+dc9fea5057f251465bc18c05f04c3491
+dca0fc8fa5ddcb8de3b3bdd350be798f
+dca68c56be84788ab1c2a1d2baf3685e
+dca6d845abd21aa85405ff9a569a9e61
+dca79db9c065671e48ce42604a0fd7ac
+dca8e4173257f70b7204e1eaf42851ce
+dcaa5248a1461a6ab52d910a49f89d8b
+dcacf56ebb7bf706d5fa6247a254c2ac
+dcae85a1a74f25c0c285ad0962f71796
+dcaf1f9657de0775ebfa315cf1b5817e
+dcaf41fbedfd6e6eeffeb3d9fab31f3f
+dcb03ec490d3bccc224d1ae9b5f83a5a
+dcb1dc5996bad8429c472158966f1a11
+dcb20d9e18a8e792f863e2a1b1cc912f
+dcb2651bd848501661f68ebd25e360b4
+dcb3af3ed13f7989e0d50e72ebca3d8b
+dcb4240e5f9f56d48cebc7dd9424b937
+dcb4b6bf1c5be26aba8455d9ef9bdaa0
+dcb620a490be49e0416267ff80d70ae8
+dcb6a636a79a2a7bb6a52e06447879d0
+dcbb8d169c11a4c78f63da6995bf4f98
+dcbd91cafd8188819dfe6f593683ce2e
+dcbd9b9f8fb42e2cd2853a9ee0bcee00
+dcbf3b4497516ebbda068124980faefb
+dcc04472d2b3bf1bdfdd184977b3519f
+dcc1be292f4876eb4f98a8ca662685c7
+dcc48a0401383595250f733a3c5249d7
+dcc8ae6cb3f7cb18d486179b1609780c
+dcc9f65ce2678598813725f0c8211b1b
+dcca532fa8fe9efdc91d6e010461b07e
+dccd18fd398fc2577be606a582291316
+dcce839dae90bae619521bf682a7eb5c
+dccf52242ed58cf5a785f05eac036c2d
+dccfb2a3806e9930596a7ab01aaa0e60
+dcd14f8da0565bcd61ea6dbefc03849d
+dcd2d5640c9ecfcd8c5182ccd55e97c8
+dcd370b7b603ca88bd2b9d74de13181f
+dcd3de39f563d065bb4e92804aacdd3d
+dcd5af718fcae29cec6943f4d63364a0
+dcd8559edbbd6331cc07f900d81824f2
+dcd90246e3e3d7f2406a831ffd2cac32
+dcd9138295c860d00e79a0587576212b
+dcda185cb4ee1a1448700d41d4a1f8d0
+dcdb6cbaf5ac8ab194e17516bc6cf772
+dcdcf9789338de94b8521c8de7c704fe
+dcdeb75414b7effb8e3508fb1f318473
+dcdf08d667531348c37b1e42535609ba
+dce0a1042b8072a6b00603c375418fe5
+dce30d7682ad8e5dcc1e48ae60d3d366
+dce405eb8aae1d5df9de884ca0a0cb53
+dce511498dd45c5d66044cf39e8fda42
+dce5a9017454c712445a55a26a93b154
+dce5df3e4901d33ef30fff01733aaa9f
+dce8b70fba79b81a1ec9df18c8045838
+dce9ae9f3c19f618e7ad5f00cdaa2a45
+dcea51da3f6397f4ace7c06f27eaa95c
+dceaec176112fde09502f50f0929be51
+dcee7f36674cfe9e01510b6c51b578ae
+dcf2e9c3088d5e9de3605189cf70537f
+dcf39fdfe3b8fe7209ab84f668afbaa8
+dcf4dbce01e157fb5b48955a11e38da7
+dcf58805d7f00d650ed3826d47896836
+dcfcf63a407686db00d59a883a074cd9
+dcfda0e1be35b2a2e78b260f5811132e
+dcfdea73a6ccea8094fa4c500bc6d67a
+dd0288d3fe0ab648e55ac420ed251839
+dd031e560e801fbececd43890eb8cada
+dd0359f6c5cab214b918c386ae765e81
+dd07dc4471a82fd7c22f0745213a00b3
+dd07f8db20fdf81e70a2ed35adf72045
+dd09fcbf4d67783ec5094b0fb8d6e7d6
+dd0b604442a5a5056493c1ad1142c4ba
+dd0be8da626cfb23fc5761cc5a383ba6
+dd0c763b8c848f2e845bf1ecd8458647
+dd0ccb0c379d419cf5e3c757a4b07392
+dd0d61dfdad715a7bf303e2a5ed39fe4
+dd0d7833cbcdcd4bb05ef4b177841a50
+dd0e0bf4ccec40665ccf3bd76b97d348
+dd123e8193226b009e42a7efc18b78b8
+dd12dbf039001b954ea91f22e15a30fb
+dd12e63b581f21c9eb33d2e8351d62d3
+dd12ed47af1b5044ac1301db07787bb9
+dd1485866adf3f726e0058ae4970a7cb
+dd171b5a25dd11a26203c2b8d5a64a27
+dd194c44473591e523a1831484375291
+dd1c16709fff3ab614f39aabff56f425
+dd1ca7d5ae8fc4f860aad46cbcc659e1
+dd1dbfb858f5fa6943047f353bd718ad
+dd1f19dbb0e728c01e937918e4e4474f
+dd21a8e3f5514c885adb9f162a1212d7
+dd229420bb828c6a0ea30ec2063b89bd
+dd236d8963e406f1e5e02aa15fe8e40b
+dd25ebec114d06644e2fd5e3fc98298f
+dd2610f8269eba0f206c3ba69f7b2fb8
+dd274a61d2bc0bfa0e95d8e4bf2be34a
+dd274bbfb976367eaaf454fe1e5b73ff
+dd2799598dc410ff1dd05d99a80faf25
+dd29c41cdcd4af9aed6113021c6df120
+dd29cd1b9b565d835321ebf0fea28c4b
+dd2d75459c18053c8f333419b4f34885
+dd2dbe453c9a88426f96f2177c5b981e
+dd2e9ac5ed4f88c2f8564eaaa0dfb9f0
+dd305db5c05aefef3047e4ebbf0cbc6f
+dd306aac4795d79340d5f5844878ff53
+dd30bb89725a237c038a1a1152304071
+dd3152544b6164130a49ef8b14ff2619
+dd32c17440516a0ff4ddccc6284bd24a
+dd33eb08c10270d67782164179b4935e
+dd348a50548b0b7f89a317855f34fc42
+dd3a7dac6041d908dcefbcd71c30251c
+dd3ab8b9e7ffbc43d6a6935025af81a0
+dd3d9e0cab578af6900699bcfc491fad
+dd3e657fb116820c824981bc438d215e
+dd42481efc55c5b77d3108af76bc25b6
+dd429b2e9de41d9a4c6cba85c960320d
+dd455660d3181a0994c4157e1fd3bc6c
+dd45f25f8db49f5b794a11a344927cd9
+dd466d8b4e2385083bc6fedfb3b5a7ea
+dd478078e9fd072080ab9d667c33c657
+dd489f7276dc03399a960a24125bebd0
+dd495ca3e2f34e577044ee179210e729
+dd4989664be488445564dd6daf18f2c5
+dd4b4620c026ac082eb7371cd58c2190
+dd4cf29506031e4f3719a7c782ecb649
+dd50b879b89bfc3ed1faa85177063bfe
+dd51e2cbb8134cd5481700abc6ef7d66
+dd5211f31026f09fd414138c81e16dbd
+dd546e1cc779be3a3b4b1b1b226a1570
+dd54986ba4e4bf911ca5e680dbe86913
+dd59a6095731789a00d783fb7dc2e4a4
+dd5a4e162cac77faafdcd971a0f33b1c
+dd5ab0dfaca3066b8143613fcc719a77
+dd5ac06b5cf0cfc95feb340772aa58f6
+dd5ae0777fe6f329c2f9887ebbae345e
+dd5afd2b56dbcb4c4f987aa8f937b2c5
+dd5b7014e16e4f3f3690811edba2316d
+dd5ca411143e4270b07821503caf0e6b
+dd5e1518639924ce4169f9ee3de82df0
+dd63ad35ab38da7ad093a0427942989e
+dd65eb0b8bba410b1007cd1417b895e3
+dd67985d109f15e3abc4ca337fdd74e0
+dd706915ba00ff33f429b047beb24284
+dd71bed6e6a4e34b3baccaf6e8796757
+dd73a74d651b9a3979a7f02e439f703b
+dd752d369801691f99cf4c38f40de786
+dd756d67a4c6313967cd7b35295e7252
+dd769711ad709a294cc034cd1bf23f91
+dd7e633283b29bd5a63d472cc54168cb
+dd7ebea78c8296f89ac10f6654be437e
+dd7feacb0d75320804ae7e2c9d038197
+dd83e39d23b1aad82e409442c9323a42
+dd8541005934d67f437b66c7d5e05a32
+dd85503d98d0c7eaf6e54e5b9c24c3eb
+dd860952c94dd76b859f99ffd6abdf2e
+dd87163490d3087e1db4e611023ccc72
+dd877992449f3cc1ccedf533dc37be10
+dd890d524acd8cae0251d71f6a5a411e
+dd89929065b4524a851bd7750c77f893
+dd8ba350f4c14a14bc12f45c7af9d0c8
+dd8d4c74d5a1c5f66bf2d94c5c2ac3ac
+dd8de05b878089c948de5aef5afe3d61
+dd8e27ae21deaabe7f87c7b9dde0f231
+dd923ed85dc0d940778a489020ee0acf
+dd9299203e0cd8a86f508055cc702d1d
+dd93b4f911f45ec22cf1866245245b3a
+dd95c35aad6fc28168aab99369fa1b24
+dd9649701b91f35422a7049708c548c8
+dd98ff1c239ff92c907388051219896f
+dd9b7f1a65ee495486e8398506bf0c3f
+dd9ddece5e5a4e1f4bd2fc7d66590e3a
+dda055250ecbe406b444060ceaf67d06
+dda133c8147959ef9035b9b234d5b399
+dda136c29ab46a9aac36fe53ddf1af0c
+dda2002a22fa9090b9d6464106518152
+dda2583593896c005113b4c4f35d918a
+dda273194a5bd824847b35a94b785ffb
+dda5a143e0a369b0e86821ea31a9480f
+dda8514d0a84c907950d5630366dbd3c
+dda96d078ebcaa0f2361bcce9305fc3e
+dda9e01bbb0d9098d6d83a417fb26425
+ddaa1db63e4dc2e59f55b4e12ac8775a
+ddaa2dd6625ff644c6b4172d4fa1f8ba
+ddac06c450a6bf7afaf6ae0dc69ef1c0
+ddae9431eee3e00e648b159bca5d49cf
+ddaf31813bff6083b8c652870c94847c
+ddb0d9360922c16b52eeb42bf067f19b
+ddb9429cd9236958ba8f7a1495798fcc
+ddba33398c0d268f6dd48a31081e4df0
+ddba541d11b207e7a1b9c520a679bd7f
+ddbaea5f6ca3f2571bc48ca2014e19cb
+ddbb52f10f1adb8324ad2800eb31e79b
+ddbbde185b36f53af6534351c8b04e78
+ddc17ae9986d59192261c9a238fdb2e9
+ddc1ba315f29a1a999a36f6c4ae562d7
+ddc2c67dccb91abd7cf69c8ca94df071
+ddc36834e9b3e32ef60a64cf2d553e5f
+ddc4327949a90e273e310d18201e7980
+ddc657b3ae687c276e6102ad4f0e1708
+ddc771ece5fca7aedb867dced2ab487e
+ddc8c5f34c61dfed385e4100bfe489ca
+ddca2e43d05dfd5034872028cd693cdf
+ddcab7f17ece5e9481bbbeb7d54d827c
+ddcb37e4717e5659efd4e0359ecb663d
+ddcd1b70e18c86ba60b3d21749d7cdb9
+ddce1e84125e7b35ed26c8d1ab868721
+ddce2180972e10abca55ffbf332013af
+ddcf03f5b60f1692432331054a2a14c0
+ddd1fb1ae8c56570cf0d3af30a3712c8
+ddd3722d172474e1e58d15dda417f6a8
+ddd7083e96bdc010a77fd8f683459d1c
+dddaeb48556533e8c2e2d5ec336ed322
+dddb4c8886fada2773bdea538a916769
+dddb661bc45641f6458a4933586b8599
+dddbcb0a2f862d105b512d6c540cdad8
+ddde38b40a0a869b1684b89f9a0a5c41
+ddde756662cd7d1d24a6ca6828abf07f
+dddeb3407477d4e52f60e6daefc7cd2c
+dddf0a2086151c9c013a9686bc3de760
+dde1f3d10c9c91b00e8528de4877692e
+dde2ddfdeb6ac70bb5a5c4b557e374d0
+dde57c161c7507606c5f4408295fa81e
+dde79e63019a6b57ce4ad81c97eeaf43
+dde9f0f95789b08a2ce840cfb773c864
+ddec46901ca4502466b9d465a83e3045
+dded62310346ad81d69d781a565d0440
+ddf01f87d4f6f5b2833b577b3dc79c49
+ddf3164c0e542d12cd533b21a86772af
+ddf4aeea5f54af99510859cc915f2ee8
+ddf563956e50383c7cc718705feb71f6
+ddf6bd6b2b4da375dd8661b3fc21892b
+ddf898c4e9d89704454b7ff74e6b0bab
+ddf8e2593a5361027610b7ed7adcab95
+ddf93f3eada91b783ca25b6a78ae2702
+ddf9fc131d415377585260d16e637c2e
+ddfc34fd223f4205ba052a6209986af0
+de0522882468b04ff421166af127ceee
+de0547c068ccc028ba4cc1f28ed915a5
+de05dd6a189659ecf77a79102ebaa0c2
+de07245562d4661822b66aa05d465a09
+de07e4c37552b887c354b58df375a4ca
+de090dd6f753766a912a583b196dd5e8
+de0eb817ac24d1f9590a7db6c2706031
+de0f0d23fb31fdfdf70fc63a46baf3e2
+de1198bab70f9882fd864b71b355179f
+de12350bc71026755f9cad2188b2036b
+de125f2d6b4962066261fa0437df8125
+de125fc946d2a269ef04d81592d98840
+de131ef5c845cb9d30d112ad62f51120
+de13d8b04fb582dee27f5c5e58676c90
+de142a08f3c0a61a3efbde8933fdb129
+de14f758d00611184782c80a39cf971d
+de16d7e281ef98416a14942bfc0b92ee
+de1a7256739baeef8468e0e859c90e05
+de1bcc8421481f9c47046233eebc8ca4
+de1c152d5fe6563077be2962c98c3eb2
+de1d1bd42f9a9a8d2fab0ebb6b8278ce
+de1ea634315dcd1ff89d12cae5f8579d
+de1ff51e4138e2fc3632c80480e92372
+de202ee1c1bacdb1d85d9d1a66a0f609
+de20a88c3e30f880dd16b26dd6a6d9e4
+de22471d1c2d8b824a5381233b8a20f0
+de24b20cbc15bb5669ea1283a4e6a497
+de2545c9793201b211f1c61450f2ec8f
+de2668d584f57c3653087a70165e96c2
+de2739eb7907f45522fc8da58b18fe8b
+de28ec6967f3ecdc036b8494082c087d
+de2932aaeb6f6807a55af5801d67fb2d
+de2a2588c95f0160f0486af6cfbf552e
+de2fad058af5c797af7af45cdc1df3e4
+de2fbb79c32a6406c59f7b5437df94d1
+de3050cb40450ef10052b8bc9ff731e2
+de30eacdd67264fd9bdadd51e684dbf8
+de31fa1976731070c8274ec1ec2de310
+de32a10fe6108c07f32f50faf98eccd2
+de32caadd2e24037cfc1bb83dc8472e6
+de3395b2f40ae91ad1bb8e1c58534906
+de37011f1fde88f49c5830e00367b198
+de3a85ad1ce1abcf9c4dca50e2d4fb09
+de3cc253ea0624712cb0c4cfbd28da8c
+de3cea77548efbe9665cb68896047ad2
+de3cfe576e806ba129a7df98da827530
+de3ed608e0cc10da9bd8d1333ad51841
+de41dbb63d6460d33120270181f26486
+de437fb5477b81720ab01c5bfcf2d32a
+de44b04b677f2672fd4243b78055d0fe
+de46872926724b690a53cdb0a0802f9a
+de46b7cf35ff50a1c17a78f1ab45e0cd
+de4a0ef8a4b7c887d4a310ffa443d80c
+de4c2f5cffabfa9e96142d143ee06ccb
+de513b2dd92c2206166d1f29a00dc15d
+de519a0c7fbfa4d787fb8618029b6729
+de520fd37e0f705b562bcf02cedd6440
+de52354c095203241e0e41c90afe4f81
+de5398ac623f09fccb318f9ce655fb4a
+de554b9cc5d266ee3f5d450df524d122
+de55ebb8067486136ef08f9041de4383
+de565d8981d734e4fc571fad20985cde
+de5a559dd0ee880469a52899d8f10951
+de5c0b1a2965fb475fffe3172b3d96a5
+de5df8ee91dbb492366c8b2f53926bc2
+de5f616f0251d7a0c98fbafbb9916ebd
+de5fc7a92c45e0e22998f3f2fedc37c0
+de60d45fd94deac7c2c825b5f323c1ee
+de617a8bdd5d8ba456a3b9863475344d
+de6296763515eda2d9daf40af0aadb35
+de63d16942396376e6d69d2101c9b14e
+de63eb8afb9b7dd56df2d0bbae15a74e
+de65a4262ebada1b1d896101107b039e
+de666e7872e3553313f7ac3018edf3ce
+de667c2e7a1670aa46436028ee8d3901
+de683f7d5d261ece3126677451073346
+de696d2f15a582e4fbf0e77ba55b097e
+de69f83dc878641b593e4fc9b0e3d44d
+de6b4fa88fb374434b36711379b5f799
+de7121943692b1d1cb3617c4f4096ea3
+de72582a476abfb4cc0b93218b150458
+de74bd85fdf62c0222251f8ca4416f34
+de75b567404039a58c8e86b7304ce7e2
+de7631a56d2af81e91e3619475a1f3ef
+de7747f182f7b5ba4ab253fd90922955
+de77a79a98598cc9c89868cb8b0e6814
+de787d032e0d3faec43c86679039ebad
+de7a4aebb108865b5f80973471ca0140
+de7aae9501f1111d7d5555d106ecd59a
+de7b299b32d1def36e1c1919b163e9c9
+de7c895be1cfd499a2e434df0a0a7d22
+de7dd48739690e4aa33f0e3a41e664bf
+de80fdbb9b42e0f53539a90900998152
+de84788cd858632662a2679c5b7b16e0
+de8517959f0a9c5f04f39883f24002ce
+de853e1bb191f1ced1ef8bf54e2d0844
+de88817367562d9f8f038fe6a3aa4f80
+de8a8e0582af19ca7478f70d7907e444
+de8b484401b2befdbab76788f78b9cb1
+de8b9020e9148c7d58056bd00ca290ba
+de8cc583e41d89ad6bb0d37220c70964
+de8cd9abd8a6b8564c503008fa80b454
+de9094505b9ef166496a1d68137527ae
+de91283b7180955608701743f0091c26
+de91f578044ef2546b7d0bb9d7f0db60
+de93a1849f37d802ff1c6e339969d264
+de950bc011a50e69ee3da5e07bee69a7
+de9a45381715b6f87b7ec8423eebd776
+de9dba409b68ed90529b5b694655b329
+dea0bcb4ffdfb7822b52822942c32537
+dea518a887d8a519de053aa9d01fa467
+dea521f9afc6b40bff50ac5d9f6bb95d
+dea5fbabc840254e8e2ca9ece75950ac
+dea94fd49f9470c32cafb8eb6ee91187
+deb3be931bcb7df18211063803c0de66
+deb624985c3714ce564d891e73e7ac48
+deb6271fd5c1711be00fa88ec023499e
+deb687c7637cef66ff4a71411ea4dfb0
+deb967a3ae30f116754934e6cf500648
+deb9fea60589386d2ba25655cae91f89
+deba871f40d8c1c13aaf872a07bdacd4
+debc10f64c8c922766e2826dd070052c
+debdae6a706748f03c641dc47c11a2a5
+dec0e2bc26194a22aee36c61639ea941
+dec0fcbb5516ad550387abcbeaf91da5
+dec11f03685eca32752ae01452cf62f3
+dec205de8532cbf5c79e07c60e35aee6
+dec345f0790b7782474c838312240bb1
+dec56737e108b5232ce1d25c986c81bf
+dec594e3a337e81f0880cda8dd1bc6bf
+dec5cb74ef224653aaca8fdd6ad215d3
+decdab4415516362fa9256a8c31adee6
+decde065fe0e99a3efa4fe344244549b
+ded0488de458253c2b933fabcd9b2323
+ded168536533c1ffeb13d1aea4c3810c
+ded50bad06863f20687d2602c5794da3
+ded54251aa79c95d37ebf8cb303e6f66
+ded64070aace6216a1f5ebd35419a0e8
+ded86adf73e46011ad8d1a7a612d183e
+ded8ec58f5cbfa08ff2ab2e18eceae45
+ded9d2547983fd7b1ff526ee8eeced7f
+dedaaa87ec48bd46dda3139f7c825b06
+dedb616afd65a8d77feb326242fed2f5
+dedc0bc84aa2ad57902f4ccd6e7a4536
+dedd758cd74411e6197ac8450f0b983e
+dede891801cd3501f20daeb3433be0ff
+dedf23bd43762b7927c074f4e8379824
+dee2364510050e2197292d3675513270
+dee3879f69756fb3720955606cb9af4f
+dee38bcb1245eb3ff220433820e7ca54
+dee76fb4736a17b55583a721fe3ec5df
+dee886893f66c464e522da92199b37f5
+dee90170e83b7785b0f1162b1734e60f
+deeae1b1a201074d80153c7507112477
+deec17b4afe2df013361d8876ea1e9bd
+deed037d7e9e6c2ab9205b8623da4e0f
+def028c3989b155d3942d50cba64836b
+def13cdec8d16576a5dba5eb546c9431
+def3a9159aed376db09a19e781f11183
+def4aec227096bdeacf937314f77fe88
+def5ce5870b16967c55c83d96967c5ed
+def8479d15cf1f0e6557c0c938c364c4
+def87d31218eff685d62d77c2452db60
+def8be297f37f56c5f5070be5ed7221c
+defa287f4569dac6eade77d10a1546cc
+defc3b876933fcf98b2479cb3c45b338
+defe81fed7e475e75abe8460ef352ec9
+defe914b5259e9450f4518e01fe8b127
+df031ccb315e079587312d30f4592a71
+df0630ada81b8dc648e9354c64af2286
+df068604d6df5098ba97a3f980054b2e
+df06f38a0db8a7d57805069f370d9988
+df07c4c10b9789310f36e0dc0d0b4039
+df09b4bf946f74e99f5772972840265d
+df0a3de0a4e396179c9f6a104339c3bc
+df0b72d06a8a7ff2616def0bd63b38d4
+df0c20242ca25c312e195f9494b16738
+df0dea09a7c7be6b9438e9b88b077d71
+df0e944d2ca22668b11b3d4bbc1c8248
+df0f69e98d236f002c932870f8500f00
+df0fd9f941652ffc6e4859a4f53bc4da
+df1245c2749871f109adf896a6236bff
+df17194df770e656f5077692b3a22e31
+df17d47172c7a01302b8658d701291f7
+df1c1521b176fcea5be689123cdee50b
+df22d0a2069ef9ffe206e01bef802b00
+df2362b1998d6fe927a30388bf058a9a
+df236aa2a9a49af011a36fb28cb3d710
+df23da74ef635a9b9a27d5f5be3ac7e3
+df2657c882d35a497ae1157ef961d59c
+df28bacf26e6edb4012013dcfbaf5a66
+df2b8bc1014158e64c2ecc376cb92461
+df2c3d8790e4ce52813579c84107c00f
+df2e0277239502f0f8cbe9b07c044a9e
+df310647dd51a6d7509819882e6559a2
+df3157622ad9e57fc6b1da35c1effdd1
+df33fc7dfe8f57b39e25fcc4ef2cdc77
+df34d75e6a699e17ac101fb18a060183
+df34dfd94421274db98e7e569df7b515
+df36736df159425f29465b270cfb02f2
+df380f9b9b0ad477aefaeeba9e3cc7e8
+df38cd1996b96eef48e2192d909f1861
+df38fb1c6e32d0dfd903059e1cffc4ef
+df3995cc05336f1bac4c1a2c577b41d5
+df3ad6628748bd4367c4202cc51d1a8b
+df3bb6dde0fcef4ea0b1ecea2746e55d
+df3efdcc853134d1db15fa22a4917be1
+df3fd510cec4e5b53b9bddad1dae9945
+df40ff4510bc943df04e5cc462298c1a
+df4214a9192d6be36c237a0641a3f882
+df42636742b872273003126bf33d9302
+df441578be29e676816cd63663c358a5
+df44ecbeaf1465ee6160c9842683afca
+df4507a168855a05658310bff1674596
+df4756db283eb213284bbc953563201c
+df47cf07a3681719bc6e14b20ada82b8
+df47fb63de04a2e7acf9c611fc3cb9b8
+df4d750d6f4b067c72125320b513f1a8
+df4f74bf972ffd4eb708e36a3841601e
+df4faffc90f0f8a569fa0daf74a798e0
+df5043eca16313717188782a132a9913
+df5080eee7cf7ff33635d4523623180c
+df52492b43061e9b42433411319b1027
+df539ab0e50b9da090b98b771e230890
+df53e6f78306c9f78cabec880d0cb00d
+df54be9e6c6106bbf11dc06c8db536e1
+df54e9ab91147926e870ea81f7ba471b
+df561a573dbe8b93c7b8b40fecfc0c03
+df57140a957642e24c30df7a03e15392
+df58c9ff7abb0eb2d7e6a6356fe333af
+df5dc9ff441894f134438f18ac3858bb
+df604b67af8bca4d840b3f5a7d8e4340
+df60b82e4507b29c624eb11d3a140ede
+df60e1644ba348e27997746358e91a0a
+df619f3c390239d92665a19f5181ce86
+df620c8fcd96c88cf4cc8e33ef1a84ef
+df65a5c1f0fe997623934e7837935f6e
+df66a48f0f16e45790df85045e3ba56f
+df68dc8b1e257aee4489e942f50c7d88
+df691be6adfa8648cbf58a59ec2e48f3
+df6b53df196526d36fff3c9114d447d6
+df6b8f0e1739204f9c19f61217e09b84
+df6bf968ae13a5130d05df04a6fbdec4
+df6ca321440ea9a8061bcd0087dea18b
+df6d64d45e9558c83517758af1f90b82
+df6f3f65724ec08997532591620a6193
+df7217d26e83f4a1e286b6bc4846c235
+df7279867982218bbbac2f203cdeef2a
+df73365d3908e8889f42f27a90e30db0
+df73ed165d24e9a946bbea4fc1a8502b
+df75a9178778077ddb4801acbf365a42
+df75a9ea1641de3092b574e13c4d7f66
+df77f94458fd8022f9c87a1fa7df2603
+df7a4e7a5c624b83b8e55915ec95e637
+df7aafe1d05bd531a3d078786036bf8a
+df7b5ffece01896ebfa19c8ff9cd051e
+df7b853289247a694ee7d76abba0d03c
+df7d59d0f42b4296dca3d71e97235d57
+df7f3a12e7082e306d9c0a11d4fa0d7e
+df7f6cc63659a0fcb5d1e19e518ef52b
+df83009042a2d4001174c58a7c866b10
+df832f7931c2925c1e7373aa04d4d63c
+df834c50e24bafa318faeccacbf8ca87
+df8402baa5b6285be6324f4291b850ca
+df8496010d579773e49b4f8af0bc03ca
+df84a395884b4c7744bcff1683c672fb
+df85f8d75a2d5a85cb3f95b883d88e81
+df8605c79ac7323df1720be35be3018e
+df882c38785ab0a6416eef11a330f022
+df889ee80fb5f56cc17a815de95262dd
+df8a712f75ebe0afe790c9bc58838705
+df8c05c8deb00a4a0ea4d11b2742cc8b
+df8c069fb52ff70b78445588f21915e5
+df8d594e7e97ee4b8692f6686b3de2c9
+df905241da642fede0390fa167a84f25
+df9185bb89c9bc361da9c79b2bbc6f8e
+df9346437d5079235f564e8b4228feeb
+df940f07f92a11697fa414809a725d61
+df952fab76ec56126199dabe7c021a3f
+df956cc9889d3aa1d92667a16cce778b
+df9732c3619969119cb9437cf236cff1
+df98d9d400f65afca9ff249b61f7dbb3
+df99cad79af53f68fe0dc3a98407a7a7
+df9a0d769276ea02e7ab6165ea249cad
+df9b9bcdd8d7982d86b5414fbb8a6c71
+df9babec2277ecbd0592cff83aca4420
+dfa08567c261854fbeffab12706295ad
+dfa4e921910f3e9fe62db0a216bbd9b5
+dfa5b61be471db6edc454d1fe8c5c1d9
+dfa89ba5ac01625d95b601b89ffa34e7
+dfa989264dbb3b2dbd7440c14fc1aef1
+dfac508d0776ef6d8c78980134357189
+dfacbfad93ed14ba41cef3b25217d9aa
+dfacc114593cf37c206194685b031148
+dfad2bfeeaafae79a5fa613bfe44c010
+dfadcdc2bf043ed3d889ad9a2d60446e
+dfb091636f40114fd93144f265fca1bd
+dfb0d67df7c8e5bcb50099b443f7fa47
+dfb28fe98f9942edc3847598c4d88f6c
+dfb34e8476804d45586eeaa216f343ae
+dfb36ba622d453d4fc2a16eaf1d2d6ce
+dfb3898f36bcd0170482624f7190be7e
+dfb3cc25f84edbc4056747a76ba6d8ca
+dfb5dda48c3effc9eb646f1ff5833689
+dfbae1161cebed893da94d8216620565
+dfbd466270d3438202b1fe3cd3b62da0
+dfbf418b87e2468d82d01c9d85ce075f
+dfbf6ebee47ec23b8ba68246b7858f1f
+dfc0de7f1f8decd685e57d26cbff0af4
+dfc28eaae27ee5bdc44149142967998a
+dfc35e528b8922017b2bec12b4a3072c
+dfc57e405c60c3d56b6273d9cf63c085
+dfc71755b1a7c63256f8081dd3c347c0
+dfcadf78ba18c01cfa7fed0afc21a648
+dfcbe8a8b64241421efad6f89bf6fb94
+dfcd9e1059c933629221c16ac8ece127
+dfcf27907bbee5050af72b2e336546b9
+dfcf5425207447d02ef941a5c2844d2e
+dfd0d6ebea1fad4611ef569198f34e92
+dfd1fb553310acf554955a7920ae84da
+dfd3d1cdc898a6bf0089775d37f26277
+dfd551e3a12917381ebd30456ffbeab8
+dfd601f1e7e5b598f2eceb6602efe8e5
+dfd65a8b66c13310749e0ecf9fbcf70a
+dfd84953139680963f110827563084b3
+dfd8c319ffea5fb7b829d549bc1d461b
+dfd92aa998786e99391aae67758b485c
+dfdccf127c24cd04ca90d5b15216e698
+dfddca4c5fbdac7f332a67d071b5d5f5
+dfdeffba346e7bce90b684fadc21008c
+dfe07d712b051d894945f71d3f43bed2
+dfe0b1388202e7057650d5bf28970259
+dfe16cbe4d26ff5619870314b2371595
+dfe1ba2ae8a3e17b5101eeb90cf47818
+dfe262465196022a6f38ba3dc1bbb544
+dfe4dfe5c566c6362b3b3ef74b90d627
+dfea8f4f5011a13ff6b172037f4d78ab
+dfeb9f4ae93eebffadf26ea17f735a80
+dfecea9ba5b749c0ee47943c5e4f6296
+dfed64b91fd11e468a80849414ed3627
+dfef0eda8d29e97c1191091285cab207
+dfefbf7dc9dd7591d5c38d7852dbad4e
+dff021af78ed0f8bfb34cf469c5d25e4
+dff0ea2c893f4fd7f50fccb5ac1b62c5
+dff14404b5e578f8666c3e85aff21828
+dff308fd43a09088a36dfbd304be9f47
+dff5fae3d9627f45b55ae400c55efd7d
+dff73fe9ccc59660893dfd7096e0986d
+dff77364d51fb40cc715d5f0eef4280b
+dff849868f097c2fd24b9fa461c0cc0c
+dff9e46afd2703ab80101d3911da84dd
+dffb8b523bf9bbdf1eb72d51084e7202
+dffdd1c47f84887aab261564cb28c0a5
+e0034292299df09cc7a9924918d51bd6
+e007342a8609fbb26cddb56748ed79eb
+e0090608f2961196bee84f3c358a9126
+e0096194c2ee2d87b9bd2d88be3cf798
+e0099b41beacb0483decb47ecd65ec7f
+e00bb7a2213fc59fa6ce2ad869e08e56
+e00c4fba652b5047bdafc59832d00c4a
+e00d1d7deb3663032e4b7d27fdb69b6e
+e00d364da1f6b56a35cbe394f5a253cd
+e00e6ecc0cc7ca58e38ad55fa9d0f71a
+e010d5dcc1a647a6d23a7f6f73fb45c3
+e010d744876eb80f5c5a95a325f28f20
+e013dd3b7129abfc7a8a83ff5c8b8a8b
+e019819dc32aed02235714b502efbaf3
+e01b8b0b490b97c942c7cd0a7e28c44f
+e01e2a8c5b65644b35d272afaa6f4d9d
+e01fbae900661573bc6c4601d5d29bdb
+e020d24783462fba39456a886632f123
+e02103b229d71bfa5badb2113b905c64
+e021d6fdc1e1dc29fa8ecb64ebe5b75b
+e02262ab7f4de2216593d36538e23da8
+e0230208f172372164fd23e5378bd732
+e0230a621b92e3e355e43e8178f4e721
+e024b209d39cb5c8fe9bbe72585082dc
+e024c22940b2144a024a33b1263e1299
+e02611845b1a106650616b4757611cc5
+e0292c409042203bab3fd6cc5ba355f3
+e02cd8ea3cc0ba73145f3b8f452c7f01
+e02d4a38aba4fd85ea9d06f69460c45d
+e02f0b7b391d45c0066451c4056508e1
+e02f7eb32abe0cdb718ab64d337997a0
+e02f848678a17e3ec55ab71cef8ff786
+e03053620a2c864e29cc869480479009
+e0325df4d4addca19854c06b3285af41
+e035137b4a322e1122eea29b984b19b9
+e035147399f39edf413b4e4025654c01
+e03595a035cb18a6c58c943513928c52
+e03bbecc3082df3f8ddf33af1901c09c
+e03d807593df03732ebf59cfcf964045
+e03e39f6d4fead0b47cdf2f59df123ed
+e03edd6ec07f052977e800234aa84a61
+e03f47f1e387c3b4baf0bff43ab6e8db
+e0429ab9d6cad51746359f97b6ec94e5
+e047459c0ff805c8e76f3e7914f3e015
+e047975ad4821d9dec5bbeaa12c2b908
+e04a570465f20c19b7b2004789646f3b
+e04b9bbabf91a6878599cae799f894db
+e04c7f6fb3b6dd143f343174335dfe74
+e04ce4e7c29b6a2457ea0efa1959d160
+e04fb6362dc2a0c64a069c78fa497fdf
+e04fe33dbb73f4d6aabb3b2f9d4eaea6
+e0514f0005dfa6a66778a37d1b4edc3a
+e05385e1d81f5e214945f352cb4a7f54
+e053f1d621829553ca3d3da4127977bd
+e055acc15c7e02b11751c7623ef1f7ef
+e055b8440e5206aaf5559b67726c8f3c
+e0561530c846e6e21bdea5f5d77a9b23
+e057a1ab02724d2831cbd8208f9ce53f
+e058fcede8d162d544e93a7e4d2cc217
+e05b802e01e98eb16f047bad7300192a
+e05c2346f5ef812ce69cfd032c8c8e21
+e05d0ae404b3847e4042d0a2f4e623c7
+e05de3c51ec1f761eca443470d2acbc8
+e05e26dca1875c326e5553989dde81a3
+e05fc08710cf39a8a77bfa9c73cb1a35
+e05fd9691635a052d250aa8e0065c3f0
+e063a645f3be6abf9c9c882b5b166b81
+e0657178bfb5592d0d54a51a9b072206
+e067ec7f5596010fe8eed689f1a4551a
+e068245fb190bd10b9c69cf3103f88ef
+e0682aab748c34311229b3cceaf74592
+e06840738a9d2429dbb4d555432df301
+e072456e566556d3006c7fd12bd65c3f
+e073134631cdae70973d69812d72a889
+e0792fca475b707673d9c81f13afa160
+e07a2d2c7c2565cebdfc7db42bd47fc1
+e07a4f6437ff08ef003df274e6d9b32c
+e07f8039a11a00afbca8a56eb940923f
+e0821adbbbb6528a46439cacae81f3f0
+e082b78e67995ddc852c7abcd67a479c
+e082d60b1b31d773f877d81dad42fbca
+e08495143e8f21c3fc9da71dadc811c1
+e0869bda88b43259b0e4bf541ce94e5b
+e0888f01667527d9053f2d00cd6c7a40
+e088a62975cf93fa37976810ec7fda79
+e08af0c0461aadbafb2c87c51acf86c5
+e08d040ee29ea7254c5237752c586172
+e08f5c1d5c8f51999ca78d133faa96a0
+e0913b2f4517b7f924d5611b2aa4cc73
+e0924829355e45efea09944426467943
+e092a1b6be6f3e994e09912ac3bc2c91
+e0934a7ea0c1df82dca31928569b8777
+e0950aa06d476416989a3f5ed675a198
+e095bae3efe6afd4a513c116f9f4ac02
+e095bb5841f4b8f98c1f8157c4f0a668
+e09684f21173033d61c96ad9afe1bc81
+e096b4d44fa473a1abc89ece5b85ca6f
+e097f5643a1ce888145104c7dcc4300b
+e09a7d828af4f9220f2145dbdd02ad83
+e09abc06c6f6c63ac7e99d5767335898
+e09b907174bcb49ac3a45ff359219720
+e09bff46c510959a88816671636c0a18
+e09d5e2bb6749b2c5f0410d95a1c837d
+e09e1d564d16bcb8705a0aac0e5db546
+e09ebc4d084a2b756f8e14196dc29863
+e0a00e42ed1fc13863bbcbee2a9cab68
+e0a0604a85f81158c619c86b6dd78ee8
+e0a173cc77785cd18de84c8c76492813
+e0a5430ea035205115636b4eaa6147c0
+e0a55856987831db961e83bdb6e46e4c
+e0a614feb7398f62cabbab950041ebbd
+e0aff91b5f4d10768b9320a8c36fbb28
+e0b0c5ce1f3f32771fe23ffb63be8d50
+e0b0edb3e94758106db668e04a159cd5
+e0b3144cca7b88f3f2baa8599ea1b689
+e0b3c0697b5591c4b4b4515bff54abf6
+e0b97dea53b2ad6d20c595c42e2f0308
+e0babd00947264a9815dda7574f0eff3
+e0be8e4572753d435844efbedec42bf3
+e0bebc7db2f9f759c4658e7fd4c27ed7
+e0bf7738cd335b82e7431cdd27b896a8
+e0c009f9f08af9e755298d7cbb7ca5eb
+e0c01575339ec01632ff01fdff90d9d3
+e0c3b7ae81bedf5ff4fbcf30c2d88241
+e0c612d59b93a52f528728a9c64cb780
+e0c6768022cdf171a0495bbba607c78b
+e0c685b3aa6b892a7578e2850652892d
+e0c6ea682a960db44a94ce34870cadde
+e0c70052a2a4e699ddffe2d366b94ab5
+e0c8da3f878126a6b023e5e4c2d2235d
+e0c905dae4c9dfba19ebe90a4876b17d
+e0c91418ba050dd7c8f95d0e18b4c2ef
+e0cac92a31a996114b9680e504923af9
+e0cb7d38d0004a82f9c285cdd5b4a6b3
+e0ce5a01525b40a00bc3715849da8bef
+e0cf7d5f47c66dec862f5e737fb5984a
+e0cfd250b5c754d30b032be61a767e75
+e0d179f43d207a3a3c067a593f16f451
+e0d3d2a9a48b61abb7e5a61f3c6cf086
+e0d666888005c43fa77483d0bb3cc7e3
+e0d70c0caade9c63ee991cdbc009cfcc
+e0d75a28bbe1fbc7945ec1571e6db79a
+e0d785ab1d0b1bd7e6488420e0362a78
+e0d81196253f4488526bf02fda47e141
+e0daeaa1e7ed291d842add725c675967
+e0dbe05416e7bb8094d4529af2736c7a
+e0dc95cfe1aabc14bce8e60470856d25
+e0dcec7f7326e8cef57b18452d253ef5
+e0dd3c3790cacc29bf0ff68b34c2e49a
+e0dfd2f98ec9ca88b29336555066f5f5
+e0e04191d19d9c343807fa2dcb148e8c
+e0e18551d14f323297d27e257573c88c
+e0e6f97c4f027551a8a793ac14e14fd8
+e0e7d17da9abae2a9d3826661d56df71
+e0e87c3a9b5f86d9ae1c0f3cdf1bf3ba
+e0e8f044f89ad5329305cbaefa33c8fd
+e0ea8b4057a0b5dc963f1b70c45b13e2
+e0f1edc503b08a0de388187d36e604c4
+e0f4da0bdff9800793c01a5ddbf299c2
+e0f5c90ef8c96bc105223b008d62402d
+e0f9f174e7bcb289779d29e7107fcbe7
+e0fac25e8cf2202856c29a7b8b3bd8a9
+e0fcbfe72a98798d6bbbd5a90a468728
+e0fd4030c2f46ff9abc922be72620be2
+e10018e17ac2d16a0a218ea15e1b469c
+e1031ba49216077cbb1c55f8590f3ff1
+e103b7845ed5396b68d8369240aec0e9
+e103cee71334b712d361d67fb35aa606
+e104ee17c4efebd6d3f1ece3ab97f198
+e106ed3db4b9f3b7369581ae1692472b
+e1073eace412b7d633bff3995fd34f3b
+e1075dae08cbf2e1c5893c14eca1b4a9
+e107cb2e92b0e1788cda87787cd3aaf7
+e107e02a1d410b8837220b93f703aab4
+e108f57665f4cb9222265ffce83140fd
+e10d55187c42005623e9b509e3559195
+e1139b597c80333d7bb3792ffc35dd6c
+e1169e42d1ca3dd6a5abf7f57ffc16ca
+e117de4e11db21ea84f7209117d6c534
+e1196fc5d43629c1951f1fa5b0df4747
+e11bbe28838ddc6ec26efa3136260a49
+e11cf226cfd9cdfe92e05816eaa07151
+e11f2fd4b2a0686ec337a9e4792851ef
+e11f7dbe9ef549f52adc49a69153c24f
+e125691d1406407ee69e6968a118351d
+e1263f65821d69d136dae8e4744b12b3
+e1264c9fe9713654b0391498b85858ee
+e12680dd94dfde39f2fb2f2e7fcb07bb
+e1281e67b956c86dddaa877ab8aaf5bf
+e12a6d4297fc242b04c84a7c19910433
+e12d75db22c422d36f6b20303b1e5a5d
+e12d7ec2bbcdbf024c52c6bf88454ec5
+e12d8f6b2a158b42ee3efc94aa2c11ee
+e13055bd65c3dbd08aee44ff0d93e8de
+e1305ebfa8db32b61b3d8fbfe9ecdff7
+e130673d57a35fd98ed0e63c34956c7b
+e13324b1b097fb8c8c731307978d5599
+e135c946ba2025838a8ea002d98dec4a
+e13686a7e67f2446d9881df2815c2199
+e13819216af30a67446cbc4a753cb746
+e138797899e364025ec529071cae6918
+e13a5650fa64c4c5f3d9ca2b388039c8
+e13c5057e0aec580280d03985ca81959
+e13cf245c47077ac0497ffe7fb0b29e5
+e13ee7b74430f2f2cc900b951e9df5cb
+e145b0513e1f63127b1bcf4f977196cf
+e1466559711836355f080b160669f5fd
+e1475ccc912a028ebed132b739da878b
+e1480fd076cfa8e48b9a57a71733f77c
+e14997c28113b27abec34f593237670a
+e149f1227a36eab6fca91dc0a3a438e6
+e14dcae72e3fee0952f2f157f21da774
+e14ef642fd4f0dea66ca3ea3cecb5fde
+e14f522a44aea7c9092d7a8ab1c3fc28
+e14f56abcbb2f74e42ceb65d4feae020
+e15160873d8b4104faff09cbeb29a1e9
+e151e1d1b67ddcb1ea34d20ecc1fc797
+e15bd12a2d340650953715dc91b3e550
+e15c6aad70bd49212df6409942044d7f
+e15cc0497b066ab6c63d3d179e533fac
+e15e95f8fbe3c4133b6f4396be678601
+e1606cefc99d9bc816d2e9935b9d1a11
+e160b16a52e2e3d54c530770e9cfd0f9
+e16317eaaf0d1e3c173ce9988282747b
+e1638cce86a9908e8411892bb988a1a7
+e164d16da2f161f2ea105d97972002b9
+e164d978d261df81d6bcbbe26a04750f
+e167845da55220184030111b584fc706
+e167d50236c9fb9c04ba7bf071293511
+e167ec0385f6a810c1a5a5548c3ae011
+e1684d441133b33a0aeedd8524743e77
+e168f615e4141466abaf19d415f27699
+e16be6c84ff76df369713bc86c153873
+e16cb8b58da6065be9d24c323eb3ffeb
+e16f618787b897e227493893577c4512
+e1704c9cfdddcb16aee80b9541e15f0f
+e1722956de181dbb662aba8e3a0f6e10
+e172540c05c9180e86cccdbd52aca5ce
+e17305e53c65a5f3af933759d899bd9c
+e1757ef3ed35ca9e7c495540213f0bee
+e178d7061017b47743d1550647b24581
+e179993024b02f35a00091575b45906f
+e17a84bb92919e37baec4dce75c06d94
+e17aac871188a22ed7a63f1230b4eac7
+e17d2a87901143319fee1025ba4aee43
+e17f72110b46c190afdf271c42a57ceb
+e180034c5febb1895c0e587056c0b386
+e18033a0a82165249fc4398fca2ec65d
+e1810be2e8374e3383b556de336cc0f8
+e182a8b5f6c4f573e4839374348790b8
+e1864aa9ef0f6f56ea880a9495cdd2a8
+e1874f32bc46b2fdfb1ea1e800bb9d0c
+e187b6ed58163b25cfd6338f92d98067
+e18998352029ff32b8b172291efa7d62
+e18ab32d7c43cf6670407b3e8e9680ca
+e18b4a77b446a54b13c6dc8028fdfb90
+e18c81830033d1c99283ec66dfa52e95
+e18ca862a988bf58a537a24110a1ac49
+e1908ff64945dd5be3eb46ff778fb034
+e19110e5a945b4650c1557a7e9ef04a9
+e1911def3c38009857a56486e02e08d3
+e1933a830c53e30bd3bbf19922865b24
+e1939e1a685d9cbed226a8a09de28e22
+e194d5e05759f6f46c9d99e82e4ec9ff
+e1952f3959d9e04cb04cfe6f5bfbf34c
+e197a09e47a5a8054b3ef78ba6652899
+e19ac861671ffb3108507633b748e645
+e19c6c21f83c59a17477fdd8973ab9a0
+e19e22772e01fff041be41876f80b421
+e19e231516228ab626c8ba32ebe89da5
+e19e83ea459ecb9efa1c4b804ddb9c11
+e1a071e36e26d067d50c3f00955f197a
+e1a11b1fe14a9a2f3f89d9fae3300285
+e1a39809b8e30016d7521a4e49a1d3b0
+e1a539733b8305b7cad32d6d543821f4
+e1a612e4f739bfaa326f128a8013da62
+e1a94f022eb43bf9b58abad10cf613c0
+e1abeae869c79bd5f57de6de5f3e733d
+e1ac4fca47694d01b418e4a138278a51
+e1adb2bd652eed2dcc53babdbd7fa488
+e1aea9e05648e7f9ecdcb181a387265b
+e1b0e80443e69a8bac8f210c446c9e0f
+e1b15cd3448c8f95d5b27617e9491091
+e1b1a8e8ae9f995c6194696dd6ac2828
+e1b2e63cb68a7c8ff39ed4e8dd3f1770
+e1b46b120c0c754331dbfae36cf29f8c
+e1b4d8000bfbe87f7cc5bc02eb858ed2
+e1b6638c49ee74bd79949570d7a4bf14
+e1b6ae581a234431bd042fce2981d124
+e1b7c49a2f9f1d5f949d24034d542fa1
+e1b803f4a998f7356dce42e30ec1a1ed
+e1b8b2f36e55e672bac9af1c58195554
+e1bc9de2b188210b61f395e2c160cbc1
+e1becdf0d8433cd06dc56aabb5d35981
+e1bfbd39f6bd26485576772d868b817c
+e1c3102eb2e47c21348f6eb52245f5f8
+e1c34662679cbb111cc3b74f401f01bc
+e1c49f658f6265dba73a14e2832a73e5
+e1c518f7bed7e8cbbe2ac1800e9e45ff
+e1c5938c5fc7649b35d90863e52e72a4
+e1c70fe46d7f85a16abf8796cdd71986
+e1c831d46842ad2c87e19dfecb067477
+e1c832654ecdd28540d6ad8416f4e317
+e1c86d040cbd9724b57d3d3f4ef338f0
+e1c86e72e9c3cfdb6663b5d1fb2e6930
+e1c8ebf882b8e4b32b8223a3373e47c2
+e1cd19b5c92fde43809f095f0b537f28
+e1cfa78c54f912474a6c02ce62e59260
+e1d0660a25c160217bc9359289a1210e
+e1d29ef9c6bf7f44ce751597af05e4bd
+e1d2e455426d946279ebf24750afbd02
+e1d4c42b645ff308c2d2cf23fbe72938
+e1d5158adf2af8861fa24fb50bf5e8f1
+e1d533bac0c0f8f9d2ab00156a66d161
+e1d5e6872e5de653a37092437775b65e
+e1d6503a1874b63826bc861d9fe30966
+e1d9be22c20dffd7e6f8edce80f11048
+e1da905271d4001205c623f8142d394d
+e1dd7f5cf84b2e6bcd5c7f5c98243ab5
+e1de57f8fd54e06aa67a37f5c1049b8b
+e1df33022d815530990fff83693783d6
+e1e02ecd25f989dd30d728623dc66eff
+e1e1b04fc4396d75ab2dc95cb186d812
+e1e3c67ce126d9579e29a19ff74a1fd5
+e1e482fc3a01a8ddcbb058615445e905
+e1e4910657e6c5e359494b7b11c76461
+e1e5189dba4edf563c17b3fb95f50137
+e1e5ae1f3828c696f8f3b2d6eb967b42
+e1ea92574b1bd2bd0e6bc71f9380affa
+e1ec81ad17116b85d1dedb82a63022ef
+e1ecd4ec4e952d0f416691b88532e121
+e1eea60854e6c6651e295e93dc9f0ac6
+e1ef12d39fb4fd9a635da49c03e157f2
+e1ef3c28b7ada72501a5e75fc160587a
+e1f353e8873b245639686122bc84980b
+e1f42d8a71b209a7e0d3a45e31bd0873
+e1f4fd9938f361dfce0a5e973cc7b602
+e1f4ff784922504900a35e2febf07f02
+e1f53dc8af80c6c54f89b074f08e21c4
+e1f55a5b2e1d1b60d07946f3fc9c714f
+e1f59f841533274df91e1ac41616f352
+e1f67f8bc0ee70bbd9024158d63056ec
+e1f7a2d03a3cee1cba74e29ae95e9905
+e1fdcbc61068ec6dd3517225a97ba299
+e1ffd2edb8b7f628340041bad918dfb9
+e20046600e3eea481babd9b3df196635
+e202ea8e8621a5dc81e83d45247e2aa7
+e205d1cf7ebdabc2501183d9faa95207
+e20aad61bf05122f7d0ff6ba11ba95d0
+e20af51fc9632b28691b9da570f82e02
+e20b4023023c6a6cc1b53c7ad0b02c6e
+e20bd07c088fcd364a4b685f701fdbbe
+e20e44158d59fba8529ccab5df8eb336
+e20e5d9d707c42da30f0e0948b58c788
+e20f9d9e4081de967a22f0068922c349
+e21116620a622a6f4d487a0cb6c7fc20
+e2123af97eca391fbfec6d0a997be553
+e212aa24631cd012d02361f4a475d795
+e212c5c2714593ebac12171ea63ae890
+e2158af930dc4ba9333101ca1ae8135b
+e216675592f289e67ace39ce4b07d20a
+e2178893281254f99f7daf46708f898f
+e2191dcbf0fed4e1eff9825c8c51f4f8
+e21d2d1b4272c087169984add9879276
+e21e4d4789cf2a818f472e4b960f7de6
+e21e944fc87298772d2a77e67bcffca9
+e21fdd6574c734fc5723416b5e16663e
+e220f9d32edc685f5269851d37e662c9
+e221a47caea3979655e9c40d0ffa646a
+e224fe1bb577453d69e796bd0ec4dd90
+e225716664eb621ebab42107cb23f75d
+e225cf97732d06c497b5cdb2ddc62bed
+e2271633a5522bdbe830f3a23e6d52b2
+e227462e987998758cc131f84c17bd2e
+e227a0a5ae135a02f5c30e32b36d42db
+e228d353ba757ce036fa9ede027231ce
+e228d634530ea9d83c5eb5a558f462d7
+e229d49988c110050ef0c9b5e2a017e3
+e22b6c7d30473d655408931e31018a4e
+e22ba829d0ffb29848e43c7a14934da9
+e22c0aa6ebbad7e279b9ba3b6a02c2a2
+e22cfaccd0ec865b69cbdd8beb410482
+e22dd579008e03d70bc3a62f36d98454
+e22f2329e42e1d1159d2da8d1a0898ca
+e231cadefe8c2794a7df1907386104be
+e233e55f026108df6800fabc447b78ce
+e23534ae42495d891ad3664ba07b7495
+e238afbab089607dec7a863143b6cbd5
+e23a6c419eac71660b98db978adff3fa
+e23bc323e261ebd955e6d8e81cda47ff
+e23cb564bde403922634d42078553383
+e23cc87994d5fcbb5cebe6e6489be5b0
+e23f4f6c5e64e3508390cfc18d9f883f
+e241e24f98274c90e833dfd63d3fc115
+e242126b4b1e20798a4504f994a0c9a4
+e24a3df7d190d747063342eb3d6fbbaf
+e24bda1a07a73168578bec7418ed5da7
+e24c61a033e0717fa9e02449f4eba9b3
+e24d909179d0712a3fc00a824b357ab8
+e24d9eee85d2e13a0aafdbc332c09721
+e24df4799fcd06143a1cab672fe8e23a
+e24eee9f529cd132e8147b3b5c33a7ab
+e24f53f7cf9a4767e3883e47cee13696
+e24fe098a45a85b3e1aa1565e9bd8c03
+e255e0bc3327380ed5ffc569a89e458f
+e25623dfdc9e52131dfe6ce5961d0aba
+e256a43465cd0e9879a4949770c748b7
+e2579b3d711b8e485f4bbf76196a3987
+e25807016b37f014e0c6a9a0e7034821
+e2595c12641437d9b0f9de1311232789
+e259ef8bcf3c349eaa8b072c80651625
+e25fccc9a6155409ea5e60c18ed2b716
+e26051b77e64187222b8c19a26c15633
+e262581320511cb99951c5b165b1a687
+e262b5ccb9f1d574958a898be0f4df18
+e26397d4706c65f44fde0a25e1bb0f99
+e263e4828a6a73c233af2b70ee962578
+e2640113d3788c074f890bc9b84b786a
+e2640cf59b9f8e15dacd13815537b60a
+e2662988c0a481a5ebf179201718918e
+e26a8f6a71d18500608a728d7d108def
+e26aefb29d0b05ee73fe8a1f151405eb
+e26ecf82dca3214341fe0b273fc945a2
+e26f919b1693e495e4758a6225d1d6e6
+e272987ab92e8770aca13576b1380710
+e275262b210284d722222ccdd0a071e9
+e279f201542c25f87cb10cfe044faaf2
+e27a87e9be5af4d93d8eb84cec8d68c8
+e27fa0fc9348e5f700838f5ac30d5781
+e282654f19aa9699651abb3877eb324c
+e28376098f1f25de6969923e125b68be
+e28399c7b6c416eac05d3eaf20bbd96f
+e285a59f367c7591ad2552992a44f3da
+e28673e10b0d20c83661783204296108
+e2892413ddee5544c2221cd9e8b7726e
+e28972cf2ab32e39e515daed1caa9cd0
+e28a71c1986e412860f83a5e3d4a71e1
+e28b8569a78dd2aea8f192a4d9f79fed
+e28d581ef4bc736accd5cf251585fd4a
+e28e02d9fae12cdab85a8c2dc61cc095
+e28f46feee091f6d030cade3a9d68c8e
+e28fd30df6b92caa4ddcf9f134f96423
+e28fdfd28a9f01b89b92161263389236
+e29018cf123845defe03b1971bae3006
+e295ec3ffeba003e08d8ebacb11d99f4
+e2974567efb90cdeeadf6192c6612a8c
+e297a1ace24d2011ba332118c54edd81
+e299a56f1d9961bc6c316828e7a588dd
+e29c5bc36ed2c7db847d2205c89e0cb9
+e29da14c2241eb7d9cd11a86211b9a2d
+e2a1d2c12b13fe77f68392b69222e585
+e2a31ec05486deb7afda8e6254cfbc8a
+e2a5f0d8e3b0b992afc2a5e0220f6a1f
+e2a684b86c6020242a7218c0b595b9ab
+e2a6ccbac30710d6d45022b9f08bc60c
+e2a77600786c21468ea7b1842759b7a9
+e2aa853de99b4f65bb0ff692f7868a7f
+e2aa87262139fab975fbdfba89ac4e5c
+e2abe0819ee047542ff813a5d6be9f4c
+e2ac55f6592c656f8ef7bfb68d93c7fb
+e2b0234da4278a28eb14c7ea48757d3f
+e2b04590767725a6361b74db7bda803e
+e2b07348039f94e5d74463915c4d5e68
+e2b1f9a1c3fe7e848579cc5f86aeee7d
+e2b31e3e00cf10f1b4a00f0695c42960
+e2b3ed5f977aa3c7cc781f1dafcb9131
+e2baa9f1e76a61fe19ab9f7e16f25b7a
+e2be05c0ceb581653fafc5e1c255fe02
+e2c2b659cc72daed3372f685efe00b3a
+e2c44deb7d83eee731501f9e0805f6bd
+e2c55359980c1927b36a6b25136cb0db
+e2c6bf02012f6fff08b77039841c71a9
+e2c78a00b93d65dc9990df61510a470b
+e2c8166df04263db1d52dfdb4921d322
+e2c884c85c432377e1421cb7c5a2423a
+e2ccf9fa2d0e49b477201a9c18ce53cf
+e2cd5f08cc735d38fa7b6ce3f4858bbb
+e2ce8ef1a820a134227215bbab0ae533
+e2cf2de3ce1b53f5c4f10d787d4358ee
+e2cf4e2b753d8b4a5cce320145d63d07
+e2d29ab89d9107f9bc4d2c77d0960047
+e2d413e6524c4249533b820847c6fcf2
+e2d4efe86e37b2a89714b423da8688b3
+e2d53f79bae5800fde7cac8bab87f5a7
+e2d54e5916b9c0d63c20d3e47999b011
+e2d58fe40c0dc78f1b122f7d89e1fc9b
+e2d6ceef24d780440d62a1915f66cb35
+e2d998378f8fac067fc3c99f62916c33
+e2db663bf7963f7d333b033f14d2d0ea
+e2dc039c1e183d0a6a81e7e9e4d7e708
+e2de5ea053c1fb66f3f6f24b2a5ed989
+e2de6a50aa278dc87c279af4373592a1
+e2deab68f98ea7dee9ef77828f32a342
+e2e0573e1ed1b1951a0ec1b9dd2aa907
+e2e0b1508aa889c916ec363920184a3e
+e2e177c543d67a73541fcd3256a19cd3
+e2e41676194d3416ba4b0edfccee1857
+e2e4b698d9257bb2d3eb4723740b6ba2
+e2e58ab43b18e75a13d2082e0f38f74a
+e2e688486dd1bddbffe9cf1fb035d14d
+e2e7aba8207ce0d02352597e1e190bf9
+e2eb23854f13fb94d16532fc72c1c3ba
+e2ee7d1445d7ef467e938793d2e21e54
+e2f0cb086cb948143159411bf0c4885b
+e2f0f71fb874a62dada9f0bd31d6f136
+e2f24229f119848ae7963ee171131069
+e2f2d1d63f8e94435c4375df28517939
+e2f4767cc1c8e6539ad87c1f0811c76f
+e2f4898c4759f461a9c522776f578a5f
+e2f9cece325b6ed7bab6fae48abc5fa8
+e2fdb193213f6b209e12e99fc81fe96a
+e2fde053cd315020ca374f7849196080
+e2ff8f0af83e6c1b092ab152128296c4
+e300ce12055fab46bc1ff075417b2248
+e30288f4ad228c8aa13f7b9e1386c371
+e306bdce59c99135644c7f1c97751e30
+e30ce6f8df1a08d3193f8944cac8d182
+e30d5d4dbb8ecded86c66139f6c9c87b
+e31096a33344c2d06be24c7eff4270ae
+e31271f676477e9e152753dec21b4cfa
+e312c7e08b8096bb14e52f02c7ad8be2
+e3139103542793ebe3a0b601d7845117
+e31496edca2d7403a2d872156fa2656c
+e3176d73eac5c8038baa89b490aaf254
+e31939bfcb4dfa1b6d0014d94556df28
+e31a64e091f757edd8dad2dc286a4069
+e31d1a3609fa164d75a338554a94cec1
+e31d1e1bcfb7f14da4896b9bee5503ec
+e31d6aa2a76c882df091befb9c645e78
+e320486354efc7642575b9e452e3c6e2
+e3249b0a5e3a1fabbd7f29cc950e81f2
+e3254d823280ceb2e4b7b380d1edb1aa
+e325789fb7f6b4bc6967d27f07acd6fa
+e32726c6a563408f204a9152d24c5cb0
+e329e9026dcdadfaff1ab552e7f574b5
+e329ebf468edad560218aca239ecca7d
+e32aa210bc242fe990ccf8c8fedb2545
+e32aca6287cb252006a3ef32f137badb
+e32f8fb961edba3bd3e7ee097416ac64
+e3333900bda3f3078ad7c8d9e7f5181b
+e33488386246c24bf4f4bda2411b6595
+e3355f0eac205901e820a4112804d0b7
+e33697d896c039aa93bc436b40a11295
+e33709231adaeb9a12f03b836709f311
+e33b4cb30a37836867b178b425d72f5c
+e33b76d160d249fffdf8b9fa3a02a315
+e33c643bb164510640ebb572fcdb606e
+e33daef9b988fa518e0812dd8d2ced11
+e33ea710d821140ff8c263389f9cbd9f
+e33f30f3c27425900fe2b6af63386b84
+e33f31a66e243872b4d8247e48aae2c5
+e3406b9a467e0df58bfc160a8f90cd22
+e34085d976a1fc9b8da7d82be37fc608
+e34111218cc6caadb783620a40ed9d03
+e34275a4a065e507bd74da1cf9d33b77
+e344477d86a739584804327767ae1ca2
+e344fb952c914b37a46fb066cdde3f2e
+e3459eff4c08074578ef0c26dda8825d
+e34703228f78d2ff2e121dcfe06d7148
+e34bdc9ad775a9f6dee5331b35e19fb6
+e34c8a3006a42657bef37e4bdb9e51f4
+e34d2677ace1244143803eb4c039208c
+e34f97fd447e113b6d84dbf953b539ad
+e34fc583318162484fe9072d7ad1bb26
+e3522e5fd99c6200bcc54932dfe1af99
+e3541704b47ee104047e326010590580
+e35512c1feb40234961541b4af539ed5
+e356b66d64b4122cca6243f3b5d94e93
+e3578c01a8441ed76f5998ece95dfa6c
+e3580afc7af0f24a2e5c05b477543696
+e35a0dbe76bf10c29c16a176e585bb54
+e35aa40778f926c67a4e2e5c3a4a6ccc
+e35adb47cf137bc40ccc6dfa4b2aee47
+e35c722339662e24da6e284cd6ec66bd
+e35e1f090633045de0462a8099ab0b9c
+e361409cbe10c49befbf678f2f23148c
+e3623781e24372bf29191db6f03911e5
+e3653969b0106c983e36cf5c3e878b89
+e367ef9fb2399b39b07b7e69641c1b4b
+e3692d235588b448f2b2a33699a69d93
+e36a6c4cc8b11c3829c36460da7d4233
+e36bd9dc5cd7ccbcc6c1eec5f341a2b1
+e36ea3060194ad834d2f86228ae75bea
+e36ed2f6b8ba8167a2a2cb562760efbd
+e36eed863023e61d7cc7efd1585a4270
+e375c5f23f1313cb48d0439369b15384
+e377133a6e578bfea81388579551d4e1
+e37844a89e96a9946085c11d47393e98
+e3789566761f923b35384399e6c7b710
+e37923d1e5770565af38461ac47f1b51
+e3793bdf60cfad570b2afe937d4806f9
+e37a1273dd5087e0353ce222e2bddcd2
+e37a1a0deaea5154e0a068a57dc9eca1
+e37a7ce5127dc268a88544a8dde82312
+e37b018cb1a069bc8dd97a3959973ef3
+e37c1cc10e55f30d98c651f988e60c1b
+e37c888ee08bc3cd99f727d7e915fe05
+e37e5581867341465b48b04c127b4aaf
+e37eaf503e17948aa084bce6016c2ed0
+e37fc7d2fc6c74468d777e701838a62c
+e381e185748237ff952d31a991a3bb2a
+e382404e67bd1b7f6b8741aa2387ec98
+e3833c609608c60253d9be2c17009d1e
+e383dd1b20ea49704b9bfaf878ff7473
+e386f3b967fcaed24e072e4e0c353b61
+e3884f912d0e95776040b388ec6115f8
+e389275cc53bb294feb734696fc5d632
+e38990b51c00a2eb73b961ab231f088e
+e390066db8fa2ee43db864c77b126788
+e39013c02a573c21244370607f37ca05
+e392521c44f4b91367ddf872f016f42a
+e392cce1253454048e158c0cada26bbf
+e39407886707c9be63b3ceb21b1213ec
+e3948a861c5122dcb859b90ca92bd982
+e39497859cd4b1c275cbb687c1fe6a8b
+e3952ad396d1e0b41996106990d6a6fe
+e395bf165f8221d077e63088887f640e
+e395c54d628129497e6b8be6dda0e8e0
+e396019d312b2d410301639f98556570
+e39654683565664e8ee3451f2c25a55f
+e397835454e95c83919729213651afc2
+e39936b21e2c4b13f13e9fe449eaa71d
+e39a47663c1d6b235726e9743cf168ee
+e39b320a179b9824c8392a886ffe3594
+e39d8ae6ac428ed203f8981e8c0e6253
+e39ed76870aa6e854e7a3268ba7c9a16
+e39f46d0ed673559a0c02a4786cc5f37
+e3a0d73b6172b3e0458ad80323742e04
+e3a1980b1e71cc65d4939704c8c9288e
+e3a224d11de82753faf3fd60805284d4
+e3a252be23ce3a11a4e9d05199b01744
+e3a2c3030f7568c87f92b67e2d6e90af
+e3a4589351c84a45b41e0576fe4b8b4b
+e3a5268f41a4736081b4f841134997d9
+e3a6ab57f8cf9c8ea0fcc2969ea6e964
+e3a80993a60926f9b36975163a4b962b
+e3aa1b028b85482c563f159777e016e2
+e3aafd05d87352ef1cabcd913846f593
+e3ab6b0f5242ac6e8e767a8a60c72587
+e3ad4fa98f15b7511ae09e4b0816bbdc
+e3b228588aa7b2b71b4e32cf4f4b04a0
+e3b3181afad6e22b6f7143dd19842611
+e3b31fc066d0c891bbfd8c02b69fd3a0
+e3b5eaf20d6ec38febf2ed7f870f0ebc
+e3b60cfc9ebc0bf71317bd1c4af7426f
+e3b62884fc04a4e9e6b5bf95fb18827a
+e3b744252b31c380a54355293c34802c
+e3b79580dbd00c033b9d6e593801b2c3
+e3b870f3fdb98a8062e622d23c80204b
+e3b9edfc043659146616e0f6dcd8256b
+e3bc0996e4696f08ece9059772cf35a9
+e3c07ce5dfe5c1dce81dfea8f38c9d9e
+e3c0cc1c8e9c4181d4e3e360716648a7
+e3c0ee2f318ad7b0e6cd956ff7f47ea7
+e3c1596bacf5f9dd18bc3545c2680538
+e3c4df82d1a34fc5df0a32a8d7421dbe
+e3c4e3fa987dcae6325af27336f4673b
+e3c54b267ce048b7d1d49322978d66a2
+e3c615a698b69d5923ed2adef5314a8d
+e3c755b20bfcc50310637011d5021b31
+e3ca438b4c4b84042112cc477b3d0bd5
+e3cb40a43ed0f34c030b02b515c4f427
+e3cd98bdda04fc562fd71021885bda6f
+e3cdfbec4940dd075b19f0e40f95cf33
+e3ce6e72e3464025f5b22109e68311f8
+e3cef03a594aca9d7569138d4759db55
+e3cf103c84d7759a81e4616a1bf310c5
+e3cf42f007e8a3daf6f9e8c1ec777c91
+e3d015aaac7d9edbd55f618d55af8444
+e3d7a66f7a236d87fff6f9952be73355
+e3d9bf2651d3aa20710599177634c9e5
+e3ddbed59619ae069bfd51b9df13ff51
+e3dde91b567a1dfbb9be57996e9eee03
+e3df4a489d6bf6c44926fd7ca04ee0e0
+e3dfb56dcf6b6c7f9e37436d9121cdf7
+e3e00dde54af983e5b8762a17d5ba8ce
+e3e0b8df2e15f360479ae9c64a5a35b5
+e3e2ffbad9af5497a2b77428f80401da
+e3e346c9ca7d1e4d8758d11cd974db73
+e3e36fb1cbcc310c459cbf9965c8a0dc
+e3e3c7bb6164d89439223df031fd3edb
+e3e5c393dec74d460bd6b3b77c2c0d57
+e3e70d94084fc44aa29c894d88d2e4ef
+e3e7f971494a7442373d5e0c081ad8e1
+e3ea904f860b20a380d9d51191e9813c
+e3eb1492bea51363b459b5669968dc48
+e3eb79102c240d2bebd04372e3ffea59
+e3efadda5415b44d551ed2864f1a3b4b
+e3f025c5545a3d12e94d7cb721ee29f7
+e3f3560a60ee366150c20a24d4225e67
+e3f40d63e46d244916aacf3be13c2aac
+e3f46a609e4e5be98b7953e6cc32856d
+e3f5755d32254b31850afabc3f0e77dd
+e3f5f7267061d5d30148f4d5d0b0a8c3
+e3f6607619cfd1b5dade3999f06082c0
+e3f6830123b54e3320a52eb2bd3dcdb7
+e3f797d6084edfce040145cb52e8bff4
+e3fcc96631280273f316d91cb0c2ecdb
+e3fd5228c17b6912f852e5411014b53b
+e3ff8893e2cd4934989081b0fe158249
+e3ffc6475212b90741a4b443a1603cae
+e40032bbae936b6d2add8bb06bb0dd9f
+e4012f4dabf1c30d3b5d55ccb0c524d6
+e40252054393fa8482d8edf63361b2f9
+e4057f0b1d22ca4ada4112cbc3b9bae9
+e407db5a13473788a43aec4f71ad96d4
+e409574e796e1eb948c968c3e03fe6fc
+e40b151b2ff1f384249b6ea08fc58a53
+e40ce85030c5bde4f0f32689ab921bbb
+e40e3ffa1b342008bd357ae20eb9c31d
+e4154236fb22c7103078742310f65551
+e41566b8fcdfabee3e4a357f96de7490
+e4167094acfa90109a3630e2a487ec43
+e41a1379240aaac0d9a67f25129de7cd
+e41a9c444b88050701cc1e7df03cd3e7
+e41cfd737c544bce19a24819ab0e6907
+e41e6a735746b67b682ae1a49c608c04
+e420602999244d688eef6b7e095771d6
+e421d2d3f28d49915a83da6dcdf61d6d
+e4220a7540b8773843b3b1f39effbadd
+e424961b1ab3b3afa9958ec35c2befc8
+e428589e8ea128f3d32110c1857626ce
+e42b587d59992b969a8cd8c5dd27b716
+e42c8358c081203a6763385628a9f495
+e42de701734ae79cdcac85f43aeadb0e
+e42e3a759a7cb51ec7f53ffeadef724e
+e42f0a01a0653b167d699be1177f913d
+e43007c593d3edcf4a8db94e2a24614d
+e4306a17b1abf8c30df5ae8028d35311
+e43081d357b537cc4558fa711bc012de
+e430e1c96c209c2fce86ed0e2ed77d62
+e431c3170aacb6bc7fca89cb91437156
+e431d1d147e322e2bc3ed77d7043c85f
+e434e96cdf8a8766db72eb322dc10457
+e434fd64dc1cb7829af5edfef1459c0a
+e43579e32af308f35ab16931585ae3c7
+e437a5390e1dd84f672256633318c71f
+e438d559d795c5e2eb377c5aec9c1bb1
+e43910ea5c0784a07a6f7a89cf56378c
+e439c61f1ff26cbf01dba11ca99ca7fd
+e43a8b556176751d8d8f2d55e97c3357
+e43c77830c3630b04cd9f41188deb06e
+e43d8fa9baee72b0651d4ccbc13bf1be
+e43de38cd4167db2ebf7e9c31a173966
+e43eafa75d8d8ed3d536349c3c93b300
+e442ade251ff6358bf13a7a410f851bd
+e443bbc4fe230080c4785ec527d332e9
+e443beda2cc9ed1bf447a1eb17723e18
+e4462b016b39dbc9c4a737c5947ed6ca
+e446fa34fc2cb59bc9e9b03af21117bb
+e447435ad3b808f2618b1a2f4b4783e1
+e447981117fc89fe56f8f5b819c7c808
+e447eb9f8fcde54401a85b4f4e6e29f1
+e44856b3ae33f237c1a66f1029a55b56
+e4499b970d5e5df89f3d572bba34e084
+e44a65f0db5f2c3415a9e620e14d7935
+e44b2b3c95a06fac2fba5da37addb8f9
+e44e4de9a0d8c8202b9a4374a812c328
+e44f87ac395f9b9f2a248a83a6bbf4e4
+e451da44f5324f3cf90fcbd682dbae91
+e4524ac9966ec440c16f9e0e37fa76cc
+e45340763a211b17b1311578539a3bf6
+e455819b3ef09873f065d96c1201dcd5
+e455dc7efa99c1ad9f2def63de99a61a
+e4579e5fdb91438821c4a7b87ea52346
+e458909a946c512ce1f36935e7b576b8
+e458bcb8db4413c7a3c146e1c7a2b8f6
+e459c234d8c2dee1683143e857845aef
+e45a332c3d5a3ff54cf8bf40c1dbefb2
+e45e5e5daca690d403ffdc2ec2f2f53d
+e4615c412982e1fdbae556a99d78a848
+e461800bbd6e237819f0d11cd850d361
+e462e73c41673ed96f5753070863c5a1
+e466536fdb69abb1e402d6d87da08b41
+e4670871ca2c34cc221e4523b12623b6
+e46794eb527922914662a729ba4a73b2
+e4685faab78510a7d41b02ba63707013
+e468e4972ab140094bdfc3a3e69d80f2
+e46bfe2f24fde42f729a0859b745617c
+e46e7923c7250b0baac74e13335068fe
+e46f820f4fc103e947bc06d94f3fca6b
+e46fa24548ebd4360eec4be74a440b2c
+e4702160f7144305ffd7a95bd5bb470f
+e471ea8085d40d739f51fd5b6c66c2f1
+e47218c2b12b5747e78d8eed44d4599f
+e474746acd66ed666d2d45b16eaa1ffe
+e474b1ad958b6621eacef7407d388dae
+e474daf413ebef05a487d2b8331f7fc5
+e477742caa816e01f999b1d1b97102b1
+e47acd8e62dc76b3fde1b81115308da6
+e47cfaddc241269fda91c8d2afa15384
+e47d7f331014a7bee769d714d26262c2
+e47e13a927e42595422e8e0d793130c9
+e47e26c35535295bc0a00cc5fa118033
+e47ea19b883d0bad1d3b9ae05fd0cecc
+e4802c3a91b8d2ae099cb93725f08129
+e48118d18eafad8aab2c81dd132f173e
+e48253da4f84a2801a9182c18ede81c1
+e4826bdc33cdb40cb10b84e1162ce0c5
+e48312cdfe66a345a0e1d8e5d05dc86d
+e4847332fbef9c825023525791cab8ea
+e4851eb89bae0b23fad142e68cc21c5b
+e4885fdf7b4e3cc6463464193661a72b
+e4890879f4a2b8c6af7fe9814357c5c0
+e48d4acca1e518156e34e560aadc44cc
+e48e66672e34dc6112c46039da17893c
+e48ea985f7d01a0f5a22c8229f218eb4
+e4911f4afba119f54a9acf8a115d99fe
+e491d52bc4f6ea4f9d88d97ededf84a1
+e4921478b733ed83f21c48af9b60287d
+e4932f6d959e126ffd517fd66207b0e3
+e4942458d10835d2519228866275974c
+e494ef7935e692c16b5a944514a9f5ca
+e49660f31c17acfc5e92de43a23ba98c
+e49682ee83c07c3d791d5425890cea5a
+e496f8b4bcca0c4520b30f318ccbc297
+e49a9164573da7eec2b4cbddb9c238d4
+e49aebc5a269d64bc5ea2ffe5be10513
+e49ba4ac5e1f93a4c127aadb15014bd7
+e4a00e36b0c5a5cc46e6a6726cda7165
+e4a07e5f6cbd4e0bcf25ecccfba98f95
+e4a12ea0d9bb8718a92bf5214753b698
+e4a18b6d21e3367990b0f8af4058e385
+e4a2e54d3d73d6b5f851219f6834a8d8
+e4a5903794a779ff79880e395283f865
+e4a5d34c26f83e2ba56dfffaa2e9c6d8
+e4a6bacdd915bc6a5321a3217c7fdaf9
+e4a702cd3ef76a98695e45851e2839f6
+e4a82a117460261beae528291a864c13
+e4a906931f34037f1936ad3f75c2575a
+e4a95933a574f55ef3bab8900db4eb51
+e4aa07fad1e35165f676ff0bd29fb515
+e4aa6e02ef8892a9c968fed0f4bd685c
+e4aacbeb66b0cdd4a9ccb82baf7d6a02
+e4ac0d394b4ce4adb2fbd190f9bc480e
+e4acb8268aa897f97065ac62793ca109
+e4ad6ba7f4cf6110c137e09af1d2b517
+e4ade3dd1acac1840d548dfd7e72875f
+e4ade6777459c98c24df56e299f2813a
+e4aeb5bc46e1aae267a64303f031ba93
+e4b0955aaf1bfb3b1b35da286184d431
+e4b10ed024111925fb2809ee32cf059b
+e4b7397e0baf78723737fe74dcd1a509
+e4b86c4ff235ce4a2b463dd748c85562
+e4bbf972d5d00bb436c0f45325db5ab8
+e4bd77be285cd6d3cf7743c5ce102c8f
+e4bd7f8cad4c7cbfb6dd3276cf6c224c
+e4c0e386178a0031799008958063eea4
+e4c23b275462b93916f77b47e2eb88c2
+e4c7c5d0903bec0e7e56db239e3a47a7
+e4c85da362f699c0d65bab4a8547213e
+e4c9f6ce0d8440755a6f24ae5be1501f
+e4cf84e6152026c3647d6bea2edbd134
+e4cfae4304b36701f22ebe700d0dca30
+e4d0c126e1169d57bbb094b7b3f88467
+e4d2882b24281d0df5fb4549d14587f3
+e4d34b129414d3f684447a345c1e7d8f
+e4d367b8947b864f3a4ecd20bbf8af5c
+e4d485a1eb7aa486215344e62d856575
+e4d5e6dcddbd96cf1b78c2542fdcb904
+e4d8e3b300f7bb4ac3e16d5c51a7c859
+e4da535dbdd477e9b2e7c8aeac402d74
+e4da700e0e342217f61826a4e7459e15
+e4dac23780f9ad51a82e20b4d96f7a22
+e4dc6bc63e9fda6d312fcca40a90bd9e
+e4dcf994f6163f8cc218f6b974bf484f
+e4dd1b15bc1194f046ebff96cf262fe1
+e4dd5090d0cd25600fe2e552edd9641f
+e4dd9191e562c265b7282fd743785c21
+e4dfad3f23faa1a46ba0fb8d5a1d7a22
+e4e34898dcc02ec124dae47c007ae46a
+e4e37013b31f0cbb254a402f75002e36
+e4e962daca4e0de2ea6888dd284ea863
+e4ea4b74f3cfcd4163094e406451d156
+e4efd122d7df8054958b86c4b65b6093
+e4f376b48b987973d7fe7fac18980cb1
+e4f3a562531a1a7f2d024f6b1f7c4a22
+e4f3a96a87db1a7463e5de431a8fb43b
+e4f590e94e34918de55d76a014027bda
+e4f8bfd7f3bd421229475ebf0ba4bb1e
+e4f9557e6c90b5b4e7b8bb492cba5257
+e4fc9ef16e0590b7cbff32167c9e1170
+e4ff098880ac4101215e9d6b82ff645d
+e4ffc798d028319aa627d3c28c0851a0
+e5006b220f7ff16e35ece89956b31bc5
+e500c4471e2d230ae9c2170920bea726
+e501d58b229609034fea3feedc742687
+e5021e250460e1bb9a9f576e83e4913d
+e5023011b063b7c5f6e645b7cde160e8
+e502c03705b9216c6fab9ceba270c760
+e5036429a5b645a34e06ffd2545aa54f
+e5044acd983acc5cb8aaedc162213822
+e50471920608fec75df91865b0d37a68
+e50732c6462df231e174bfaf0fb45e96
+e50adf7eaf606c1ed50f8a5a6906b7fd
+e50bb5abc6798c3d26b883ebd7fd5ace
+e50c70b32cbbeabf8f0472989357a363
+e50e773b501f20463d04c5b1483047ca
+e50eb14a2a1c1e5f44bfaedddbb38573
+e50edc7e38bb8c832fb5ba2e39cc0891
+e50f77e1bb4acc06d558463be93ee6ab
+e5127b63ed3dd69583def2afa51fc542
+e51345443e7acc960b7825d12ed66bd4
+e5134c610bd2091b4aa4377351fedfd1
+e513f1ce95e843522f8ae8b1393fd5b2
+e514abc7b1cbfa038dc79c012113b484
+e5162c313add8fedac995ab9cf094201
+e518a4c4f341b15291f1130bea6bbd1f
+e51aee761ffd39e4dfaed4dca5335962
+e51b04df0e4ffcc59c22c85402dc9f6f
+e51b9e8526a8d5b41d7012a168cf0c26
+e51db0cd3c7b5e1aa57db293b7d95a01
+e51dfbdb1ff7f8c88b361b968fbbeb1d
+e5215915dd1065b5adc0397d9f071362
+e521e8d0b251cf84870f321567b7b3e1
+e5234dd7a71d7e88142972a383adc773
+e523ca4f2a0a4f438b94f76dfbca488d
+e5245db498c57d67bfe87ab0db5bc86e
+e5271a5ca6303e6a00894f788528e04c
+e5291749f9bad0b0c692ab8eef89be9c
+e529d8da74994f35adcb93779236c474
+e52a774a0babf849f6ac3d47b8ace891
+e52cdf813b3799cb29ebcce1e51affdd
+e52df4cc71b34d278a422a3fa1a250b2
+e530e8c9abb9d2138ba6536f020f4828
+e533d3e5a2a1631fd44c6aa8087d8589
+e53530f63447c911b5572fd9ed0ad205
+e535be89c7e8fe68e82992b672d65ec8
+e53cf13cacaadeafd23dc5644c359053
+e54333be78c06261c81519ad04ed2434
+e5438a533cde6cbc06ff053a62f60559
+e544a490bd0ebdc611d31303c42df335
+e544a994a5fde658d99857e4e57cc1cb
+e545f253a77fd77c6a518a0e71236e6f
+e54c36f969557d3e6af59b71128b37e7
+e550ee59b9391c3383c2d12684bb9674
+e55211fd538fd0e41d000bfac30bf1fe
+e552588dfa993ec997d2012ce3bf996e
+e5530bf4f7aef478b7a507df5a532aa0
+e553d8682ff8a0632c8f8b84424bcfa3
+e5540991f1375e90d365954ed93b581a
+e555e1564c7fa6fda70392298452be31
+e555fddf783c8f4fbb4faa3dcdde192b
+e556b23708272a3b44f6e808b8f099ea
+e5582725ce0235949634f3bf8414d326
+e558e21caa3b400f68df4591da508489
+e5598396d8e29614e4a722c1503d7f6f
+e559caddfca8797cb07bed7f11621fd9
+e55d432722084ce27db39b26282e2440
+e55f70dfefe38daaa5c7b8e3ed403039
+e5619542de23dff6d2d2e210d4bf26ab
+e562c54cd152e5ca0f5f6ee92036bba8
+e562db0826f14359a25bf6dd2d9aadd2
+e5642073dd2e6544c53f6ada1382ffc6
+e56578789e7f4338516035a51cb85eb3
+e5662dd8afdba3e70500619d7c48e2aa
+e569140bfb16594fcf3a3fb939f205e9
+e56a110e77815b4afe38b0e5c3b45fe8
+e56ecbcfef35cfc312bafdeb320acf4e
+e5701a7abfdede9da2624b16ee44d194
+e57373a5f7220bc8349df6f32a6eabd8
+e574ff2bb8658c7d282f2c46bbf9b983
+e575311ab46042457cae2fe35dbae0a3
+e57d06f40f50fb622ad1e9ce8706af4a
+e57d4b03657d82b1ee0f24bf8c152917
+e57e52fb37e7654422f59528cdedb0f0
+e57f47951cef7efaa99ef69ae42f3572
+e57f83b2279d86b6d186570bdcbe7360
+e58111ccacdd78b2bc51e19a4c060dd5
+e5851c8d1f344bacb4be91a69497e187
+e5857bb977473d70b21cf2ef17dc11ad
+e585c60321c8beeb44fce427da548870
+e586846f5b0d459ec7c720a3febd125f
+e5886c4683346af3fa41da4129b74411
+e589904a23de9eda6fce42dc8ab60567
+e58c04bf6f955d4686ba264465a0d258
+e58d072aa639557f1e5088b55acdd320
+e58e3cf6cdae67e6a0e3afc052513cd5
+e58e439805076676ee2f3893a3e6cf5b
+e58f79a87ab2c886094fb3627e360f76
+e591c56738b10291a9b5f94a34638839
+e591e1cd123c401d9961ad14caa6b3fe
+e5934f62c94a747fb0d12895844ca6d1
+e594603bd7112501c1a68e70cf41be40
+e594e276b92a616b5924fccacb16ab68
+e5957aa63d9a86d56f5ca715505e28cb
+e5974feb6e393846a85c3ff3fedbf297
+e59868e6281f20d8ee56d76b9f51918d
+e598ccb7077a803dc3e6aec39cc25eaf
+e59911fd34bf9aadd106ee9a5ed447de
+e59a2d8f56a55b40e06f3033fe2b0321
+e59a6238e33af6068f4b5f8c5a83e0bd
+e59a9c45d10476a6e4a83ec5595044db
+e5a0edf16b24c1d43717def419fd63f2
+e5a361d7a330727718c0dd105332849c
+e5a3aef3d987e8374f956a3df893e3c3
+e5a4352431de876a7981c4f04ff1d477
+e5a560bc2329e87f4706e1e5db01af57
+e5a61b7a409f20ed2423e1a111c2555f
+e5a79e07b1862c517dd3de385cd75e31
+e5a89ce3fa86f38dcd944655431189be
+e5a8d60bde9e91167eb16e2ef460ddd3
+e5a95f081c85f0292d22d4be30389840
+e5ac57d47f6120c5c4050e064630acba
+e5adccd10673c9dd4d60da9649b3ee24
+e5af1eae9adb26af7839687449cb7e49
+e5af39eea58173567f5e6d19c9170eeb
+e5b05bb8f2788b32cc5745eb81a17800
+e5b2c88cd4d116dac0af512938f67f64
+e5b2f2418b1210c52af8f10755d5b639
+e5b4288a3ab64569992ecab8cfce458c
+e5b43b146ee5b9a1d733e574713991c2
+e5b625d21e47a6c9049fa8ba2531cc85
+e5b80aacda69ed9d135907f75cebf957
+e5b86487a22bd3505a8889f1667dda10
+e5b88469b000646558c44fde359e47c0
+e5b8abeea023545ffc753b3a1a50fe11
+e5bd6a36d6f513e48762cabe39f1fa1f
+e5c042d512ea8ebc3850120477735007
+e5c0bb81d87fe172ee9da979aa492683
+e5c6c2a41430a2484bc5a1c3d9279171
+e5c83c14032eaa0abf90774d0e780b4d
+e5cab9bb6ef849ed4e3d2a1763cc22fc
+e5cf19505e11e73a18b191cebdcacd50
+e5cf58b5b0ab643c8142e1022451ab04
+e5d028d1720d6fb33d93e71d18925187
+e5d291d4104b8e8e108e9bbd25dceafb
+e5d412934b024bf3cca6aa9cd6649637
+e5d42598a0e1fa21b4195e217f5e7ca7
+e5d4f913ad86dc9f1eca33989eb20bd7
+e5d56f4eba6b402b9c015a20f5590559
+e5d57a7389509e369373217eff7c5977
+e5d63207b40adbda2fe65799878d28ba
+e5d6766426e2e1b3f9de50c71ae1d77d
+e5d6da7f1df02b0397701a189750a01e
+e5d713022076d899ce83434647304cdc
+e5d7281230b6779e85167ecb426e1eed
+e5d788441e7974da9322d3b241e829ba
+e5d9379f9d402d8c7541dae69de9889c
+e5da6cfad43f77e7ffb3db0f7e2885e5
+e5dbb5e906c6ed23a4061652a63d0d1e
+e5dc7739be4d52401910252b8b7d53b1
+e5de814b51414025d97ea1a8f5790ed7
+e5debc22bbd3e9e57f4046fa5d3df3cb
+e5dec87a70f744931122a16f90fd1d46
+e5e11b2163fa91afd5ca01fbe967eb2d
+e5e18cc92c3f47666816071742f9ac3a
+e5e3ba015c54826b6c0293a30ce8cfd8
+e5ed576b5d9fadea930f5dd107e97956
+e5edd5ce19708c2d4aa1805f986e3a09
+e5ef385e97161f9bfd00c175995fc957
+e5efc49ee0e69029d4f2d62981261dd1
+e5f1412cec2c11a21d65a8385f075a6f
+e5f3cb30c3fe02eda1c5bf4a08056356
+e5f61ab0ae1c5ea2a5a7a86e1a23f6db
+e5f64ee143f76d964299f17ca0d270b1
+e5f701eb9539be76c29b7f528838dff7
+e5f87678c008603becd691315a299969
+e5f8907b7d662168af7641a92c7da064
+e5f9779842c967282f4d76f6e203508b
+e5fbc2e55f647fe098760778d75f0bf4
+e5fcec949c6fd1da27d5c03fe42fde48
+e5fd22770ba4783db878b9b35a88cbf5
+e5fdab0994c53495e611cb6727310641
+e600cccb1935517c56d319f395635982
+e6018b235ec221dae6cf18557c98ff05
+e6032472f02c18f2caca24d8a24e6015
+e604ebc336de0c5c0ba2c36569881b97
+e607259765655aa1498e0d2acd11b8b8
+e608cc266226c1b2d8990527edbf4d69
+e6097d67596e53145a04234c7843b470
+e60cb6a5e50ae470d36a89056bc6a077
+e610a94ddf698913d6b0b2297f622223
+e6111a6d7c197575200f51d3954e8d30
+e611a01d8802c9ac525627170c3e8d13
+e61243b4adc611f8a3df2e9c062f161f
+e614868521da51859786eaead8328701
+e614cda9ecab03d8a4773a333288f2ef
+e618bc0ed55a72d4020623d86b283e39
+e61a4619ddeda8f3f803675e9e74884d
+e61efb00e62d673959aa2cc3349450bb
+e61f7734ca8c0f2fcf9b166411dd0e54
+e6201b1deeaae21593c3a90dad9a6d52
+e621058f22ba4a6459d8c585690dfc9a
+e62200cf708bbf3dac9f3d699f2f12e6
+e6246de1abd0480331dcba2ce5e1f52f
+e627d953f8584545187d93e19f365179
+e628ada71ab7b6eca855f8da419f2905
+e628b9a696ebed7d7a43782e258b5c50
+e62baf4d7ffbdbb93fd3d02ba5f0e82c
+e62cb01c0e3877ce6e92e0c8a1911727
+e62cf481753b2900b594db6f1f1df99d
+e62eb760373845a4ca9a60e5b9bef647
+e6303d5059ca664d624f7cf4f551c5ad
+e63077712c3878a0dd9086bc4d8a324d
+e6329f4d84d3b2bf9043faa556014d0c
+e6359df0a14d89eb05d5854a3a2c1e83
+e6374c2d6bc58f293088bd67d11f1747
+e637f1cded454e34205d52caf43c2dba
+e638e84fce91126bcc79dda42a13699f
+e63a3cbcfd81ecdefb72b4d99d7d4fcf
+e63afaa15d7930127d09482a1ed3b6db
+e63b73fa1e1c4e6e3dcc06f95e75b01b
+e63c90127c38ad79ca29ab93c8a61bc1
+e63cb71bc2ca58ce403a30fe2b18b442
+e63efc508f554df4c5ad29342f9a6800
+e63f5e7ec880a2ee555635a3f35f2393
+e6414e1bb3201197314608688b337b17
+e641f6322620c70c13adb37190c1a062
+e6426bb2208e940eb9be1a24357e92ae
+e6433b8b6955170d2dcc838f1126fe9f
+e648f36202534b11e99fb995e80faacc
+e6492cb562112826cac6836ad81b26f8
+e6498eeaa5a9d1687d319bb25e9e3953
+e649ca838e60ec3aeb21ed539a8e2bc8
+e649d0516bfb58c566fbf6fe1df04d5a
+e64ccee491e84c2309feb649b5b151fd
+e64f0a44d5ada135dfc7503d643c273b
+e650e0c7ff9c8cebf76c901dcc0ad52a
+e650e97ddfa862d710a7fb0c00e53fa9
+e651ae2ffebb4deb93db330c74653522
+e651e85e912ba417c8f95d47379fd667
+e6534a249b92b51cf1f12fb8ad87a60a
+e65375f900b64a664e726344af7857ba
+e657b3153d6733bf3bd45faccba41bcb
+e657b8de07651a1a4c99e2c41768f091
+e659a63413d6019b0c61383609426587
+e65bab9335eee7afcd5177379a8b3e59
+e65be4f9ead08ec0527043a840266f16
+e65f25a8d168d8005235ca40c07c5348
+e65fb706a52944f511842a6d60245e1f
+e66108cb04944626e1e529d71417584e
+e6611b5fbd7012f888974e9d96fc1830
+e66198d25fd9aeb6e2abc763f3b1dde1
+e663140390ddbc9fed1a7c94212409e1
+e6662602c39c574bbe09e72fbea71999
+e66c36532ce79b1b2bbd1d7cd067868b
+e66edb4ca7b78823b905bb2b93953c12
+e6716f9f3a30a631a57221748d7165f7
+e67317a6623be87268d4f431f050530c
+e6734fab79d6b73478cdda9f80220f2e
+e67415b06b28e53fe741dedcfc55330c
+e674b7414aafc76547bfbb884837bad1
+e6756b07234614cc74c474b9f4dae837
+e675a5c8b679e4060bd2637a7ab0a73d
+e677f6472e8d6a41ae8ed9a9fc6d0835
+e678936b353ad390d2514bb72482f834
+e67c208b696217bb08790fd314664ee3
+e67cd7e2b182e1d401549036575d2980
+e67efaabf258338ee3a007b18344ebc1
+e67fc72adc0d8e6085f210fbccc4ac00
+e680373d27b3498a4af2fff2e060a6ce
+e6815d4fab9985c5390a305fc1c3296a
+e68182754c500dcf20d1f887ae1608ee
+e685609d0a811b517331376bfdce5707
+e68606096ed60d2767fca3eec107f828
+e68628967df9475beb1afa90debda000
+e6863b530b9d52e24441f41cfa3a9ef0
+e687f003229f682d3b63aba558275975
+e6895bdd4ab555cac0e088f856c8fcbe
+e689a1775227cae6657b762f62520934
+e68af299d861cca9c55b5dcde3825e50
+e68d39b0a70f7b07e6c8ce8cea861833
+e6907b6656003c7cc4ba9c940df7a432
+e6917ef937bab747b75f8c18e8e7542d
+e6941a00eb3b15dc874645b744b4ef6b
+e69468bb91083ed483ac4b4cefee8e1e
+e695fbb6a0976796496b71963b8b5564
+e6966c0bc8e21b21e90d32df3b1abc00
+e69761ede92373ad876e59bedbbdf472
+e697953aacae26cba5341a9bc8863434
+e69957ea58f528c21c56658eba1da40b
+e69f8cffea3a8ead836963758ecceac9
+e69fcbf3b1316ba060805f0f2ab138f3
+e6a0cc3b916fcaea15cbf1d0c3ea007c
+e6a1fc29e014f79017b8242f1c5617c0
+e6a3b667507fc52a70b37cedf12ed8e3
+e6a638e317453e0d7ccb39882b6dfa89
+e6a6a22973ee2450d21c01ad93253e89
+e6a6d6895cdd319eb8aff36a163370ad
+e6a863173938fd9ea21d418667fa4da0
+e6a99510fa7392ceefd191079a91a82b
+e6aa96e6b230548d82d48417d94a19d6
+e6abf3896c51c9ec3bdfd64133c61fe4
+e6ad46a4b4a8002ef9eebd0dde8c74a8
+e6aeaa7074811c9f0be6276ef508346a
+e6b13481dd372af1a7898a9c04cef65a
+e6b2e91fa3e6cd805421d58292d196b5
+e6b3dea55ed1b04d58491f8b8a57d872
+e6b56b87b19ce0d787e0afa211ca9224
+e6b81415c6b95c0f08caea7ee3b85025
+e6b82e629be468016d634e03ee35eb97
+e6bbf552069f36858e5381c81b7d36c6
+e6bd01f336da9c65f4dfcfcd435f3b52
+e6bd4a343c18b8c915d924ee2c2b5bbe
+e6bfa513dcfe6d28fca7ab3f6292f05d
+e6c37572c78fe7f932720f1af00d15c9
+e6c71d9f1af5d0fa4023384290b4f34f
+e6cbe20a82c2f77ec11a3cdb09ee45d6
+e6ccacf98998344e6a3e1efeb3e2f719
+e6cea313b0c2b1230908d8c34163795a
+e6cef5b2d261dc3f678dc1d07131c886
+e6d230aa576c6c0cd3e666b1f7c7cc9a
+e6d34689d17d5455e573f7325b929f22
+e6d39122bea94a1cfff9267b67d5d3bc
+e6d3a9ad43736a33d803097a9ba5b2a0
+e6d3c2064cafc85de6746a1d6cbbf572
+e6d4c4c560bb4fe833531ed3e590b15f
+e6d52ca2c7384ec4685b95567dfe7659
+e6d55cecde10ceffd3479ec69ea04862
+e6d580af8fe4858e318728c77f1049e8
+e6d7d2133c68c24cd581e95357b1055c
+e6dc91cb4cd87709f22ee98e43c53602
+e6dc9bbd3f57c455137f34488ccd5832
+e6dca62dbe7f6a94a3945d2f39300186
+e6dd3f82676bf2ca791fce9d8b648d3c
+e6de7241f26ca10662f5b045c88aaa45
+e6df2c5744d21a9d619d7d1a85fa9687
+e6df4435b64a9c99438d3e1ba1c95630
+e6df6feefd00c23ce4989ac9010b7292
+e6e072ca610dc3f41e2382da2c1bdc87
+e6e2e1cc646ad7c3a3656ed329a7a901
+e6e6b9912d2d4c7451e3862bf0d4ae58
+e6e7918cfdcec340cf7fda58620e5071
+e6e7fa411917b0fd53e5d2709ac18088
+e6e879f42a76206bbba9936b3946716d
+e6e88c77d4ab689b977d784a731bbde9
+e6e9e97801f4776916acc0c52dd6031c
+e6ee9a5fefe704f3fc3daf4f05720fa2
+e6eeb42415bdff73ae6e1a1b9db1ffe2
+e6f2f368354b15ca7e4ab0d75170d196
+e6f42ded66b2e659e14f67552bed7135
+e6f662711261efa0989ecb815185acff
+e6f96ef89cf8505dbf3de52b18462d5b
+e6f9dbba94ad6804171f2bd740a60923
+e6fb5bbd7eee3b2ada7563e6b1e4e5ab
+e6fb8b7e7c69bc4db0d430b1115e611c
+e6fb9ee979c8871ad0337ad752d259ce
+e6fbd802b65cefffe9b25ed27bd324a1
+e6fc61d13d29aac9712e9ac83197dbfb
+e6ff888ac4d54284ca1c677471a65bff
+e701b96f79bb348d97f1cd439a8c032a
+e70257d25b2ea1609f5efc4927e27b72
+e7032140337a6f90d4567d9193331290
+e70a55ec6061c465de69646a0423d2a9
+e70b68e1145fa2e24186bad510b17f2d
+e70bbd59a1ae4e88d43355ae110466db
+e70c5ef23888087cc56b4546271547af
+e7125cc74539071479fedce554eadbe9
+e712834f26f3e13a23acf2b3932923ee
+e71297cf62a6cb1204e7fec89959d7c5
+e713100f9ee1b398115eb223b2c38b4c
+e714106ce672c954723962c13449e040
+e719ba244defa8d1064b57d49d06e268
+e71fca1df1a3c43a2d4437723dcffd38
+e71fe4daf05577f70c64fbb693ce15fa
+e722d11eb42987492d89f119de2c2f9c
+e723bfcff693b562cb6dda3b775ba327
+e723ca0837bdffaabb2723f32e83290a
+e726119a397264aa2325a20f664567f7
+e726720c8251a65b3f9f76d1d48c6ec0
+e728dcf0e2ff0fca042494ae1ec1258d
+e7294ba05565a29b4763701193aaae9b
+e72b48f647b908b68a8d11a210f81deb
+e72b878b31a0c47ff844d75c4cdf77db
+e72b8ef7383309380ba914b5019eb75c
+e72bb66df17e487845f1813058447af8
+e72e73f0bdc88b728e50372b1695fe9d
+e732ad8800b9e77a64692052c55498b2
+e73314af65cd0cf292fc791e662cf783
+e733cf595e317cc06b046ed3ebd32745
+e7393c8abae8b8676deebace8c6c711f
+e73a2d55253cb528cc9bc6cf1984c35a
+e73c3f9eac5b93a2ba0f3458d2ca2ff0
+e73d6ba8a713a5b70ff3a3b9ee8b12e3
+e73e618663e0fe603db7be9b1ac500bd
+e73ee95fde32570e79272555a7fdd951
+e73fc1b64daa6e23fa94be10701a991b
+e7409f7463a1099a7e496bff1f43ecf2
+e74287b051d0f26d9349526dead792b9
+e7463608be58c6cfe723d246a38554cb
+e74678f410bfcc4e5c599180552a11d3
+e748552b2b77cf417a2466742518840c
+e748a8c37c6d480b48d1d083bd2532d0
+e7499c6b4bfd2bfd301978a1d845449a
+e74a3b71bf932e4f4927a528d8b26409
+e74f114f1efd1ce680cde03678358559
+e7516f3e31125fa214dc0d64803b3551
+e752121dfc0413366060e012ff4d18d4
+e752ad5fc57845eb9bbccf0c3a3918a8
+e753a43b97b6cf284bab43c0d16e5acd
+e757477a031aabe890b15275942153b0
+e757d3ab626bc007f77d0faaba80c7e0
+e759f520d150f0460c4c619f6b21c663
+e75a91d7cb1febbbb2f47c7a8612cb06
+e762247960251a8018893bda034db5a1
+e763c372699b4eda1878d3af1a9f4f07
+e764927021a9fdd3531ca6abd16beab5
+e769627a2947acd1102a546805d74c32
+e769ba9a3be05cf9f6a115a3e6f262bf
+e76c3353bc9edb77064735033f64fabe
+e76f242e5f3c4c000063421313d9f2d8
+e77244eb3f31876eeeef6b636aeabd86
+e7732af670ee625e164d11066ba042fe
+e773f90a0f47007b3f8c7869ca2009cb
+e77499ce622435d80b245ae5ddfd5a39
+e777cebbc6c94146fb773c5a73c9e0f9
+e77a0fe6aee9db67a545ddfca3b870c9
+e77a8f405731be1f5c7d7e8b1b8788ba
+e7800ac745b6323720d6a448aadecde6
+e781800704b94f8d6439dcec652be5ad
+e78182a15b3e533a516247a864f98d58
+e781ed41ad214c5385c52673f740ceb7
+e782667768cf5dca21c0de32ac14b7f2
+e78275e2578c82668e078e37d9c00084
+e783ce3e503a78993eba08f9b696ffe3
+e787aff2d8d4ab52702f99fd40b76f03
+e78811d39f6c5caecb610567a757f4ab
+e788e4d33b2fb50ce94747ef683d4651
+e7890738e082a50d56caa88b7cd26118
+e7895be151666b9e36094d0d971e195f
+e78a653fd535933cc0e2b93d3874180d
+e78e1dcb5b50be9a5f5e013af70a0a1b
+e79113deb59e65f751b52fffa67a2efa
+e7955ad6fdedb42e60dc9e31ef94def4
+e795ef8af1c92fda2be6402e1e7fef50
+e7971b2de4afc6a903caf36253cb79cc
+e7980a213c8fa1ef30e05eeb4181f579
+e79abc47a00c49259eb8553fe3491424
+e79c01b50364f5360893329c61fb009a
+e79d3bc1ab4a9ca8ba826b60330d3b9b
+e79e193d0bab9f2915d5dbb3b97c2b57
+e7a079e0fb75a87a50ffbbc525f0fffd
+e7a08f6cb8517dbd1f5acbb54f85ec76
+e7a1cbfb8f0515416d2b4fe227b1cdcd
+e7a34544b2fbd0549a059d63c54386d7
+e7a4382d7f3851aca597c59948b3a0b5
+e7a45dada3812a642c8b5a419e184ffb
+e7a4807599066785c7ffeda5de96c671
+e7a4c06dcd65741d51d55a952538afb2
+e7a7358da8a5ca6ce0f86f283209ce5e
+e7a96b5dd4df436abb38c447a5d0221f
+e7a9d88b3bcce0d985806741522aacbb
+e7adef5d8afe0a4de46a2baacc7f521f
+e7aedab18c6d877ccb2c89a625c75600
+e7b4d5f031dd2ddd89ddc587102443b0
+e7b74511ab42b37a68994edb3831efd9
+e7b82e03c7206b1565db2feee33c4be9
+e7b867d553ce3bc62573a10d42eef83d
+e7badc5c076c04d000dc9b89b6ca47e0
+e7bb1eb946107d5145f5aa1af8ce73d5
+e7be5939e1ba730be787f71d5b2f2175
+e7c0211d41f595177a08440181411d9f
+e7c1c32a9e4c0027c390f589ed274450
+e7c353325464cd49ec33a82c7be32fed
+e7c59dffd86e3b52e3d249594ae50f1f
+e7c6100cca0ad0ca23a4f78bd6ad0ad6
+e7c698826b23d75ddafdd29c541fe835
+e7c96fd65a3a22a237951704d6fcd05c
+e7c97d63f23a60a2f9ae22bc95576763
+e7cb9b4527fcf06cecda963c288edd49
+e7cbe2a2e771ef8bc091cd2a331eeb41
+e7cc08a56dfc1d841267a67a6f3c6e1b
+e7cc2bdda897d47ff5cbce634933138b
+e7cf3eda69b098c6716de87920c57878
+e7cf52ccf3ee828d918c9e8cfc361471
+e7cfe4208784fc2b05e2711e27329724
+e7d020cec12b1307e390ce4c67b315df
+e7d30413e97864e1064701af491f9e97
+e7d3874b605300e156b102a0de4b242d
+e7d8f61d637254c6782ca470ecaf44f3
+e7d9cba68ded8e62a5269c287200d5c4
+e7defa23abef2a7729dad2d176e6960f
+e7dffb2f4dc326d0ab67ea3ec258c690
+e7e10a18b2c313038a3c2e2ea001ef18
+e7e1b2ed6e36138995e7d87d21ac3796
+e7e31374df53e748f433f49dcba29491
+e7e44082ce91990e2ca1d1fdf2997673
+e7e5993bc230140cff23adf73628f0b7
+e7e6d45a37ba57480f267feff8e27bb8
+e7e8f7a49e0ad1351c321f99f6dc4e74
+e7e9c5a0cd1e5b2f3aebda8d0786fb8a
+e7ee7e382a0c90c83f183c3c8ccc2445
+e7ef8490acdb9a7e07ea768ecb298440
+e7efa3b948a68285f1da490a2eb74cfb
+e7f02c7087960e1e0e15d61dae0805c4
+e7f0c713e00def3435c14027f31ff53a
+e7f14d64630247db8c909a875e42fa4f
+e7f1b135d5184b7590a9ec1e0de6b7ca
+e7f1b226fe4a61a92083e54cf56e974d
+e7f3af90d4948e9c8520261a473c0640
+e7f460706167da81d5ffa64de90239f3
+e7f506aca91683427915849f8542032b
+e7f5113b577fd6a01a994ad43de28bcb
+e7f8e98f5d0d474991e752818c29a2af
+e7f94008204ce72f946231c93aaeed54
+e7fa03e0b1a412af7d61ec52c0576452
+e7fa69fff195e0343dc9fb6c7514aeb2
+e7fb3867822fe4d5bdbaf7e25be31a37
+e7fc080f8781e9a87472cf36fb62dab9
+e7fddb4ed7487fc92765fd4e9009efb1
+e8006ffb5834e3a4b211287fa351e3ce
+e8011d85bd328ab8ae6f9b1e450f9b7b
+e801865f09ee0a2c223a92aa1899a629
+e80221f3ee26c55625f0643150b4178c
+e802d2d1e17d864a8ed83aa92ac1ce5c
+e8030028c621aa77aca29c0f92318570
+e803a3ed9a891dfc4aa6cba0f3f88138
+e80543d34b267c504b14aa6801dc2557
+e8055b8383594ddb3e1c4714864b90de
+e8069069d571418f496b73085ea74fe0
+e80721a3620025732d0a40f0dc6f345c
+e808cedec52cdc27012ec60c3b134599
+e80ac44cd4e420357d56d116c6f9f13e
+e80c6e798beacccf0090fb5132e5ba23
+e80fbe3b51ee37c354e64dcf56f853d5
+e8113687c922a9a559253c43813a2be6
+e8138a6dfb42a9e7a73b667dc321f3bb
+e814e27a559702e2d1d863a767bb41a6
+e8155205a699d53ccd4dc6530180212c
+e8170b6cdcdd12e0052cdc2c12085d70
+e817d457e9ebf91de58d06282a40d8ca
+e819060a92d73bed455b321c84f53790
+e81c86997247a8a68e39f7e81a6052d8
+e81d7549f97eab82d6363b0ca3edf1a8
+e81f4e423d9c5c7defab9ac982624e7e
+e825b0b0d0308d80e127d942bbb699c4
+e826350decad7c086d4bb2c60beb354c
+e827d7939e381884de2b9a7d927df4a1
+e828476eb711f4da564f6eda326378e1
+e82aa0ff08cabadc460bda89e907a598
+e82bee36e728453da6037c9d46702f98
+e82c0bdc013e9e2297a206c893bc677a
+e82db3242c894325ea8463eae5a00820
+e82db718c49b171405c0f1cc0c41317b
+e82e05c15de96fc583a986744d44ed34
+e830571032c6ecef920f2143fb0ff476
+e8336976f4dd2105db684450d44ba4bb
+e836511f20a22897dc40cb3bac58c878
+e836b491fcdb16e1428df59a8ab0ee59
+e8371b4fa3ba1474567387de5ed5e15a
+e8376e20c14b8618cc01d35b8a29c34c
+e8381e8576911159830a1c235542813b
+e83a214dd89f4b726e693dddc9412406
+e83af9b10ec171df91235b5d199f2a40
+e83d8f5c0339ece4524c75c16fa26de9
+e83f22889730645a2a4ddbc75f9bda4f
+e83f32e71007df0debcc15ed05127c96
+e83f557f7715b00ae301c3bc793e787d
+e83f8f6542496e3c9a783f4d44ba9d5d
+e840d04c3892abed49d0f1422ec54085
+e8429119d8c1081609db3d227e7945ee
+e843ea49f3b248d3e4938c16b8acf6d4
+e84426d4f9d77876d6d6bd56e6c67f20
+e844719304f302d78eb621cb9b565b10
+e847147b25afb9a415b31aeaf9ef2833
+e84974626bf31c21f3ae67ea1a807184
+e84a736d8b28a49d9753983df14b3988
+e84aca35c833f05dadcfac705fa64ca8
+e84f3c7c3b21213d2ea4e8d4012928cb
+e851a7ae33e07ea0e7e2f380ec11593b
+e852e5a5d0bf3a364f45d2d036392690
+e8534731d29418164f09f88d9b4c0279
+e85391febf2024e47c544d95c918785d
+e854a54cb051f1d23a5247cc05f377f4
+e8558c3d1a39debda0553ff720210458
+e8579c2d01e9bdab30f6809324a8cb78
+e85927d0caa737e8c154f3f79a2732f1
+e85a646a228bef3ae772a43533ce7a97
+e85af7abb8994417eb19ebbddf3e499a
+e85b5fc5d6810d497fa6bab0cf80b599
+e85ccbe8816235800628467eb99f6a37
+e85ce98555b4d8cec3cbab58559eff5c
+e85e55d8fbe35941c8170e9a9f39b410
+e867186297d9b15372df8a9aff940a20
+e867cccd157af52692c642883d43a770
+e869b541871a217223b0551412b1909d
+e86d1b2238d2b8bd3e0814f8a956a72d
+e86dd9c1bbe13dd562da9d808fbb8bf4
+e8712d537ce74d94cbd88fff78542a26
+e871f62b7a18d47428c3fa737511fcbb
+e8721670b01949bb886a1cfa51e1dbb7
+e8745e11a9ad9d498097d552a95a623e
+e874d7017e2143fd352b2a5ef35d5791
+e877bf7a63eed77436278ad22731337f
+e87ea18e1d4386bfe53bbb0cc8f46eec
+e88035056a27f023a799a9ee7246edbb
+e8810bc91563597fd1731562312d0a91
+e8812011465443d639efdffaf72a2dcf
+e883e87904754aea2c5681b704167916
+e88453586ab588908a17e5b3ba6b9b45
+e88510fd532b2e7012df0384da2310e2
+e885693a12066d539da034474f41c043
+e885d8342b55f1174e99f57c4331820c
+e8862106900aaed71e57ceb31f70de32
+e887c78ba91a0b89140c88026caec3cc
+e88d21519b6964c1c839d7dc9c090ac4
+e88e8c32825c242d3fcf676059917948
+e88f3b791557f217aa8f559f959da9c1
+e89094fb046c4fe2d30d3cf2cd6392b8
+e890aeaae3bd8451d59c75a9176f03a2
+e8911293c9b6b0359a3687cdd597eb75
+e8915dc1c97163f93c328898940a2c78
+e89326d2b5421544cbacf88ad88291fa
+e895c7eeca2bb966ed9b4c11e274be36
+e89752bb76e60fb49311d49fa4ee1a45
+e89beda6b98be326daf9108e30eb31b5
+e89f18f0e6dafe1573fbf92f71efd8dd
+e8a06bb2bb32f8a00e296d6dbdd231a7
+e8a1106798486f5783cf43c72381bdb8
+e8a1a322c4a2786ac1395e23aa598d78
+e8a46e4353433d28149289137ad9126c
+e8a48debd8f4435cce64c38cc1d1ddb2
+e8a9f46202dd6abe637fbc3cfaca2dfd
+e8aa002b424593f38d2e0e19c92bc8f7
+e8aa115a4145a06dd9e23664eb318105
+e8aa155fa57006b470817d1dc2777904
+e8ab089ff59cb0b232970e810562bade
+e8ae025149d061d4752b5e2bb17fe953
+e8affceea88cbad27f88d2594c233314
+e8b074752055a509d31bf7385f377103
+e8b3821e1f0721d8d16f2360d4fe8548
+e8b4c8eacaf555287e681f821c685743
+e8b507a3f0abb142fe305be73ef58ded
+e8b7ebaeb91c3099be26acfc11168542
+e8b830b873ed3d31d82d34aa50cac87e
+e8b93e07a14e7f03166a2addbbff1327
+e8b9c6bcf25d1e7c7c45f07e4cfde83d
+e8ba003ef8549e909e75465205d75874
+e8be95f868fa967b9cfc58b3f735b51c
+e8c202036e90596fc8db6fb31b76720d
+e8c23e45c6c292aed66bd1c7bb04ac81
+e8c3175adf7ba8cad9d69fcd61ec6fa2
+e8c389b8baa0de37759aed2db5e9d6cc
+e8c4121278b3975557779c85ae3ee7f7
+e8c586885792aea6bd1916bde997455d
+e8c82779db22db188b8fd80214167397
+e8ca10f05cb76b4d213099528aba87c2
+e8cc61d806c97560e8a8a157e26ff0f4
+e8ceed171c41d07c2786bc69cad1f7a7
+e8d084ac879b71d7e7fa3510a98699bb
+e8d0f6f6fd7193aa4f6827982cbcf5ed
+e8d4a8e65262252b419a77435d4d8caa
+e8d4d44df4b56b531f6a8fd40b83e403
+e8d6deab04273e99d2c405f4fa8baad0
+e8d79044a2e1b55fd31724f833411f5e
+e8d7fc269594d4fbd790965c7ce19e76
+e8da4683d117bc4fec68a4c9ba414216
+e8daa35fcf155fdf64e48aafe7da30c8
+e8dd6ee4c7e9bb74aa2c83201f6e5c16
+e8dde1420f3cb489792b7756b61e61b0
+e8e811332d0125c76c93c355e9eb7fac
+e8ecaad6c27a5cacfef53ba6bea4f204
+e8ecd0380d1bafaf0b796536d7c7fc67
+e8eeb0c6a12a4e19ff302ff8f33c7d18
+e8eeceb162e8213648d912dfc17f2a16
+e8efe4c5857fc6176e0dc17a917a7668
+e8f2787699a7e016b73daa472cdba65c
+e8f63424ce9a092b5758a9959fdd1286
+e8f98ca2ed90012cf3c7dec4a81c0d5b
+e900c39ebc621e45b320082538d92950
+e9038ad02ebb9242c157867b81dea2e1
+e905b69a63d4f8a9fa86061004623899
+e9074f7f32dec63e13dce37420eafb89
+e9075ed38ae51209b2645d3b5af91230
+e90a116018a8384e9bb1783fbcc2edd4
+e90ae06c76acec74d51f70bcca31ca69
+e90af448f8e23790218d5688243d56c8
+e90c85b80030fa1ba94fd9fcce376b08
+e90cda6163c68d9a0c35f6b9f9eb5b85
+e90d0180c9cd3bf1e1fe6ea42503fde3
+e90d092080f2c2a7a83fb660de81a5dd
+e90f6dca7a231827d4fd12bf863b1df7
+e91067f0de26adde7d447a0ab8ede7aa
+e911a7093e3d6ab250f1468932599d84
+e9128d4fa22046799efa7de7956b5b3e
+e91313fd91feaad254ed23070a7c0f1b
+e91457e7ec0b92c331c5999fd738690e
+e917a1b18f4d92a1d0c7bee3d4853168
+e919ff42d7438c78c6aa15063cfd8d8e
+e91a144d12b885df10c77375b6d1e0f7
+e91b27d1af041bc80cd2d0bf3382cb36
+e91b593dc41289b53df8ffd7e145baa1
+e91c277b98b3df4c0ddd5baa1eb171e2
+e91daa181aeb5235f572a0fe859c9313
+e9249e0f1b7b1f2b39118bf40ba64e58
+e924ef3c2fc3f189a04e665b33c7d248
+e925bdcaac5f0607cea5e23fd1521416
+e9267869932b3de33293809b139d0ae9
+e928e80e4ec3dad0c7a8a2b6bb27c6c0
+e92934cdc8c8b6c1f97c1bfa28afa1c8
+e929f618b0c09d498136e72602ee970e
+e92a8f8f55bccb3ebc692c8bcb5f39eb
+e92c84ac81326ef25f9e2999caf8e17c
+e92e8904723d569e2eea8da89b9192a1
+e92f8796c663c59ad6604823d729386a
+e92f9311d908a4c041a8d18fe99fe6b6
+e9312a98e00a8f4ccc9a6e5e9f745b5d
+e9331b1fab3ec9666dc7ef7efe691883
+e933c38035d015de47e0b651a218780e
+e937eb2ddbe828c9043ba41ffad764f9
+e938857393c688c52cf3627772ce0eb8
+e93cf88166769336159acaac831a330c
+e93d408c0225d9bf007f7c74254add28
+e93e2087a31fa62b587397b48450c3f4
+e93fe34e7ee155c79fa27171ed02da23
+e940bec14d460d7a7f198f5d187af64d
+e9416ba3275a47b24e1a4797323a37fe
+e94468c8169b0be9e4a7e6c4ae0aa775
+e94770d16edaae92b154e996811e09b7
+e94c3b4fbe37e33be6a2b36d79a9acd0
+e94c64ebacc8431baf9f6f17c9207abd
+e94f0dd8d9be7ccd88753be53f77bcef
+e952fbc0749b8af931f0db3e6ff0248a
+e9543444527514c6e0324f1172f4ee0a
+e954e13600848c6bd508a33d1b6c5523
+e959b123ea4eb6faf0d7b7d3cccc460b
+e95bb109582df40cfc8939c5cfd997c4
+e95e3b76da5d1e3b7648e90192dcae59
+e95e6d58451475e8d84c48fde3454467
+e95f429f770c221123726850b8ef6e6e
+e9635713cd89a85dec41c088864cfdf1
+e9641714540a2899b873cc6b10b8608d
+e964181bc2b1f9018e5f15a88676e95a
+e965d614675ff3887628e8caad9764a9
+e966f4047320fc1cd84d812b1dedf848
+e96845ff7c99ebf4220d41ae11209e4c
+e969b504cbe54a2537843d36d8e46ec4
+e96a7888e7622a73de252b96102acfec
+e96b9787b8ac6fc34488f0a658554bd5
+e972448c57ba49acb6799af2b9dd63ff
+e973480010c4f66775fdfc5e103b4943
+e9751e17381af314cd65f4c32f64f47c
+e976fb79b4d98284b0c8c95b7db8f1fc
+e97bdde8a1bafaa74e206c39cb0498e5
+e97c0ab98b2fe11343d6e6267aba7573
+e97c4d511e639e2eea75c72f45e8c571
+e97e3a055ffb2d0ed3587d5c5b1231e5
+e97f8c10965dfa4634780c4d54a8b9eb
+e9813099efadf886ed3f70266573bdce
+e98205aa33a20d3a7e539e769fb7f126
+e9833e1428eaf52674068b01f20a3920
+e9835d7e0ee1a64dc662b9f40a3e4031
+e985aca141c378c6c1dffee9e46f7d39
+e98807ad32cdf7e06a45ea225c88d485
+e98c6cdc3a2149532e50c87b1f462596
+e98d15adb06e4361abd787fa196ff628
+e98df8faabbe6635e0fdf0b9ef4c460d
+e990fee52550e693d2dd07162dc552f5
+e992dd996485bab3f48a9cc41357cc04
+e99432f28140b314290b1dc94a73d366
+e995ae8220c5fbd281d69fccd164c9c2
+e99696bed2b752714993b9ecc6abe3f9
+e997af7c57ece4ad3885b47deccd5380
+e99809e905d01337fc84a7c3521eb49a
+e99b8a1e758bcb7d645d86375c1b74d5
+e9a0961669295c94f03c387504a6cc52
+e9a1430f9ba03bc5bd69b6e6b3e7ee42
+e9a238ec51d656266c0d1e1dcdbc7c86
+e9a2683fcd9e2c8c8b6ef693bac4d1f2
+e9a26f2cd5ce3740987a4892b9819c6f
+e9a4b43557165c114d788bd3aff6146e
+e9a763f3a02d31a83cf2a4f4efe703db
+e9a7baf6c97e4f44fd3f8d71b28f8b07
+e9a85913a527412c129cddb23d5a3afb
+e9a9700e85d5cb1ee7a51c3e271b867e
+e9abba148572d9999962128f92578e94
+e9ac8769715d5c5a92a2fa5b6532d24d
+e9ad05b2506387b635f12f212ad7e87d
+e9ad3bd3e05ef6016d774c6941f34b13
+e9adbd0f209d4d67f4c3029871acd332
+e9af63ecbb7edccfa364cbd6d3803efd
+e9b5d26c1d1f5e5c45aa0f7290477992
+e9b6549d63e2f6bb7cc800bcdf483ab8
+e9b83482bc8aa0fa0d23beddf2ed9836
+e9b95a833e71fb9874c16e82f9c53a6a
+e9ba80a2dd82e63b972b6dbdc5865c95
+e9bbe021605b0fe6cd94208ce51643da
+e9bc3abe89dc19399f70405449767674
+e9c0c7f57fe22eff13833bd4d6e92eba
+e9c0f36fc5965a44664f9879db8a09f1
+e9c0fc8d8664907fcbbd5df69bfc270f
+e9c175d9d7d4cfc073c2a991987c476f
+e9c46256e11b450478c7b677c3bdab3f
+e9c58211f982922acc679fc370d05ac7
+e9c79cae85d203abbf587539e66e0448
+e9c8904c353a0a264143f82dcd33126c
+e9c8d2e0c015ac55afd061abc33a4283
+e9c90f0235f950010d30553e05d6bcd9
+e9ccbf8f766f366e576c806af834f73f
+e9cf455f4dae397fa8adccb5d0fd299e
+e9cff36c095efa03524f946683f81953
+e9d02528e5c3d44d2e412bc9c0160048
+e9d09b7a3983fb9ed560aad6fff7bd42
+e9d1c534971f1a2dffac073c3ca272b9
+e9d22853b35bb190760dea3d58630c7d
+e9d3a3515f8a98f06d0539c84aac522c
+e9d6486058f6b71ef53348f304a2674e
+e9d94f47df4eb668e9bb02c5fdc3a7d9
+e9dc169abd52e93e49a519155be79a7d
+e9dc4edfb3a49d5142dac341b1178643
+e9dd2865f18430123bd541224547b015
+e9df1c0629762a59f51ea3e17babd3b5
+e9df62d5f08229116be0340b0453bb15
+e9dfa9b78c21ae5c1aa50832415ff9ea
+e9e04f85b35ffeb16e62dcedd5599527
+e9e10e33c505ed03b4c679cdab2cdf4b
+e9e17232ad119002f31b79fc7b5c4509
+e9e48c0bf3a466dcf9bebe3197b7b86d
+e9e4b7a439575a9829852402631a37a0
+e9e77f48f0b7e73bb707d198e8427d16
+e9ea519c865aeef99ec31ce484c8d6a6
+e9efdc2fd514d20b5aae682946ebd04b
+e9f297fe8ff52304cada446d36869417
+e9f350b23ca585e38f8a9619596486e1
+e9f60b81103fa0fcc9d1e467be9d5eb7
+e9f9dd02cee2df9b11b73c962e92fae9
+e9fc79726c8624b7c1d5371076620cb3
+e9fdf914c5d33786b7be914b23832edb
+e9fe46a4929278ebaa34e2e1e15d1a11
+ea00749219acc5af9c900cca3ef637a7
+ea0193bd69bc2a5689d34e4843e0c854
+ea01c443d06c6f43b0d2f6085d4ef217
+ea02d68856d3f935db092a2fbd61ad21
+ea042f2a741a247c55fa04777a8ba6fb
+ea04c83f3917a2161134f97ef44bf4fc
+ea0b238da8aebf259c3684eda8e73fd0
+ea0e7a20260cc6956e5de6dd8949b41e
+ea0f14462e6a6b28fc4424c2f791a270
+ea10c5af66ed0199500681f8151076e9
+ea11b8a39879563373dcd1818cb94350
+ea11ffad27d06f50130dfb5387f2aeda
+ea1441fc6d5a3e78e97b7e9bda71db45
+ea146cf3ca918b38f549b09febd9b359
+ea1a9812069075e441bf4db3d2752692
+ea1af33c6249b5d9fcd7acc837087620
+ea1bfcf009323f448539f8ed24d2ab77
+ea1ea0fe3995a95bd9467640d384dcdc
+ea234b95b71cc353b787fccc64bbab3a
+ea2418453e907f62815e5bf24c61d59d
+ea25b1fca1dda341d88eea410744a13f
+ea26616ca7985c98ecf1ad6c655b0863
+ea27c0adc1da0a7b3e6b1929470cc7d5
+ea2856c49621ec9ce32a2821e7a0f36c
+ea2c9c5634047403bdc7833d1a4b61ac
+ea2cfb5afae5e69fd75f86fec9bae87e
+ea31db34cb31c0327f176fa747baab15
+ea3303006cf9682e6cc92d1353c9d924
+ea34523fc72622684a90d8618750e1d7
+ea34de6088bd74da90904da60bba5c85
+ea3572ebad77d86156ac9786934f7418
+ea359305a42de000e7928dc4e1a8b37e
+ea3712d3468796d452f4163f43a169ac
+ea38743ba63480360fb8818402a8c68b
+ea3c074112dbf10da1bd354daae135a9
+ea3cd9594a222cf560cec820d6b21e4b
+ea3cf3653c7d392f73a043740fb56973
+ea3d0ef5b1c0027eb654cbe666f40094
+ea3e9ea040587ff9b72dd905d7f8f25b
+ea3f8e4fcbe51bd315af71e90146031d
+ea4012ddafb54d4e22fbd73683be996c
+ea462d890fc3ba657601811149da03a0
+ea46932799c9d625aa7bfdeec60d2855
+ea46d8209b3624b5bfe1fbc50f2edf5c
+ea46dce468ba87402a59a90dc8445925
+ea48688ce0cb78ae54ae48668685aae9
+ea4898c72e871d366bc99b53d257ae6f
+ea4a1766c46e909f694102e6943a4fa4
+ea4d8c122f4cf80063905408a2a77c26
+ea4eecfc638d6208b80173c78fef0804
+ea51888563d469cfda63bd24255e86bf
+ea5212182cc90bd0b71d2dc1eada019f
+ea531aeb7098ebeab3cd9769777e0bc5
+ea54c5905cbb632ff840e89822f05019
+ea554ed6eed1bfdd255449f8944f6bea
+ea5957df3373c626fd779e33becfb3a4
+ea5c5909cbf3948a720a5b7b5114a237
+ea5d73c1e5acce3e1ed748e2890a785d
+ea60715fb79b84fde3d01abaf7610c9a
+ea6082c71913bfe5486ca3faaf65c7f7
+ea6218de12db3ab4a89b19eff7ec80f3
+ea64e480dd6b8fd9ee0fa24841de6711
+ea65959bf5a716aead6fba13f634aaff
+ea68d8c6971860464da998657210aa2c
+ea6d40c643d61fa3adfff38d8ea7d795
+ea6e08b688fe19ff96718d454f87205d
+ea6e484204b38e74bde041d061449be5
+ea6eda8123bfc36702a8cc1072d054b5
+ea711f363601620329b55caa63540add
+ea72e0d8103cc3219da363b7c91ffd77
+ea7389994b09372d484cfdfb67942b92
+ea7418c1c5e105a7bd3030f94bc0e4c0
+ea74e07ea5c6aa53584dbda6c819f141
+ea7893effb2fd2a4dfc9908733c85f94
+ea79d5ad84e1c8922ffb23b90412c4d1
+ea79e578018e44592fe584d486cd8572
+ea7af764f8f1bb49c938a9ad0509764f
+ea7c2e578cfafa656c126719c8a3dfab
+ea7d84de9d59810666f0ba4a260ffca1
+ea80a4653a2825f6e53fb6955f48aae1
+ea81016888c288f55ad8f763849656fe
+ea839c52bfca506ab715df4fa238b95d
+ea84671e707e811a50473121ef7d07ee
+ea84756974e761ff34f3a1e1a3c3f50f
+ea84e942c01ca0261280a1303549e5e0
+ea8503e6f64a543136346788c9b6e6de
+ea85f4311bfe7ec3d09f5419d6161e48
+ea876c5a9bf1583e8ce8f6422c847c7d
+ea88166d4203952d2d2241c7c437c2fa
+ea88d4c8f4a9075fc3dec4b8584d6596
+ea89a393b666e752ccce285fc1da41dc
+ea8a2da3a64a067f393a95da38edbf53
+ea8a7bfe3f6901d324e970a039f146e8
+ea8b2194ec194f624266115a8259944b
+ea8efccd70a7aa8d1d450b90fe30472c
+ea8f487b415b607f0217242d0b2eef38
+ea8f70bbb2772a842003ca99cb31146f
+ea8fda9aa7afddc08f6969ba95f292ec
+ea90cee9f556db8ed4362dec2f93c980
+ea921781e8da126ddbf8cbdd9e43e2a1
+ea93f2cd4d4ccdfc690c3c14b0d2e1a3
+ea97c5fedfec1918242da0f65652b47a
+ea98a82293a2ebacc751ac3ce5c59a8d
+ea9a381991e93073491b76aabaae455f
+ea9b19d9c83633b3e1e018599754d478
+ea9b5628c21010f39e85284ad1ea2f3d
+ea9d593687a9583b1338411e4cddc833
+ea9d5ab84643b5fe95d71ce2ad827384
+ea9f34b392cedaf0a28dc408c452c0fa
+eaa036da7fe3634a50130217e321140e
+eaa10104fb07ed4852de47e07e70e548
+eaa1e2d26f02f0988915dcebf6faa77d
+eaa2401df8ab1a19c7c69526bbcbd106
+eaa2a1a5f61aec9265bbe16b78b8f07c
+eaa6abff5a4adae8e42e2c323dd7af63
+eaa6d1f6b70197f464ba05b7a5a7b558
+eaa7290dffd8180729feae2eb3fdded9
+eaa748641404634940ba29ef6b2b9ed1
+eaaa3a8fe76cf6c5c1eae1bb505fe139
+eaaa87cc740b03832954943eb496e5aa
+eaabc63a57edf7362a72e3b396bccf91
+eaac83e0bfbc36b788bf80d07d550565
+eaae9e76a931cb2c0e9bcc45af896116
+eab367ba94d10d2db701115725627f43
+eab9d06e125fb359938c2fbb77387487
+eab9f815c995e65877d2eb62650aabc0
+eabc3ce0cab89f93d83b99eed2600cc1
+eabca463c84fc0f55ba2bb3dba5f613c
+eabef98e1d2b9270acfeb44a8f94b3a1
+eabf1060cf023287e121cc7cd17e68a4
+eabf64ce017315be375c90dc6896c3a3
+eabfb2992c11bf7581d6f6e0b1acf9b6
+eac36cd51bc4a0a34948e9b45b18100f
+eac37c1d4a7b39a9600aae6d659992a6
+eac38926d6292ec4d0f623599840a35c
+eac45c8eeb6f2b2943361c5e48dac0b6
+eac65d560bdc9f58ff2c98fbb9685a96
+eace0eef94d323e137ab199a486a0e17
+eacfc8393e2836278b9466b6bc836fd1
+ead0085ddbb287c8b0dca70dea5d378c
+ead0676fb7bb9c95c595aa7a7a314d05
+ead13d43429b08d5bc3c3513801bf3eb
+ead3b8189126d6fa6eef0bd726f85413
+ead4bf399b7dbd1b4be4b9727cb3aa08
+ead588f2dba3ef699573a125b4f98df6
+ead82233f2f3f4eb8414ae195f689b65
+ead8a76a4e07e7e80e00f7e5ecb4a114
+eadb9242d5152417ac04b3fa17431d5d
+eaddc393c6be314270895a7e29e94c2f
+eaddf1e6c89bf586f5c2972e75c45b49
+eade17d99b32e7d0157d9958ee5ba6e0
+eadf0478de92c7fa5ae3693d53d639b0
+eae369fb12f2ab366c76c28ee2bfd695
+eae69929e8157eea4f78352feca21297
+eae8115ebff9119103a473b517b405c2
+eae84319854e6fa636d2996dac094342
+eae89e0ce59832c0b4bebea4155374fd
+eae9887a6c53d18112ab340aa4dd1a5f
+eae9b1a271ad34062b82a259aa100d39
+eaeafd136a32d4cfee42e85e94e91675
+eaebef8bc55cb85aedb30724eeb61c02
+eaef4263a82d5ee8180c71a768e334a1
+eaef59a73bf25b6f27d5eb6f5148d040
+eaf15657ca37bc25d79a515515ad6097
+eaf4847f2bdad1415c4b0f8c49718563
+eaf52fc6d6bd4cfc5c0cb0d57e705db6
+eaf59f8bd795241d509d64c7bdc17a16
+eaf5f18f8b2e708fc3f7cb77c21b9cb2
+eaf6eb1cae1130db024dbf61d2b1f0f1
+eaf9faad85ebf5dfdd8d4a67950c24c2
+eafa7ef234102d8d9e1af1dcaf1e3da1
+eafd5982d749b0f34a686dbe8d6fe815
+eafdada2c69a3409f94abcdd36976887
+eaff1888714da89e954e8d6c09ef5ae4
+eb011db7666fa82189396d52311b5a5f
+eb0293ef67743e4d3cafb67f78bbbada
+eb02da3d2dc1e26058a33af54c39e1ce
+eb069dee47b3e12272bb1298cae095fa
+eb088e85a158f295b8cf855cfc93c553
+eb09012dc0d25c6f29ea8d215ccfbc61
+eb09a3ee1cfd71f23d5e0cda8c23f868
+eb0f103a9fb95fb00ce936cca6efe986
+eb1101552493ecbd2cbcf9f5933e1e02
+eb11301a3475017d7dd0c8fbff6af1a0
+eb11f8a76524e9992208ef24835973bc
+eb123dd91617d541cd9f40f4d649a764
+eb131ef0cb9fa18c59319d393658ccc5
+eb1387576d4b9c915957f8cf48a93bdf
+eb1527ca474e7564c11c8ffb8463b088
+eb15a1e27856b94a24750951861854b4
+eb16b30f35903b7aac30672a106dfb6a
+eb16c9cdf13dc653edff10ccef9612e8
+eb1a20e388fc675a24956247ff5c66b0
+eb1b439a5cbafd002a3b60db7affe960
+eb1c6dd344fade3edbd289da6bb8b7ff
+eb2086b946edef5197152c9b334ce986
+eb2289dd0f4ceb4a0e6558eaa75914d6
+eb23d22385c9614a0876852ff9b7975c
+eb251bc2bad285da6c979a1fa71453cf
+eb26bd3c710ace0d2020630ac75eb3e6
+eb26cda1bc27567f41f22f319a4e4dcc
+eb284a4388bbc671d3c06b0750679c78
+eb29f9293c10afb7f937d9b729af9c80
+eb2df35fb3610575527260b7ac883fbf
+eb2f5a22255093c41ca51e6acd3e86b7
+eb3052a8ef6d28b06640008405fb53fc
+eb319178e8b6a2c47f1acb7735011c50
+eb32cac88b7ce90f3638e7e4c2a3de52
+eb34de72e0046fbb44b1da8340b56a82
+eb35e2e0e897ab027a3d8aa848e6c721
+eb37b59bb405bb846fc0a05706804813
+eb38285142dfdb56757ff23df7523e89
+eb3e5f7fb7f1d81c770813a8aebd2943
+eb3fc790b1c7da78bbbb6e4fec55edf6
+eb40b5bd70f4f834d4da99f560acc693
+eb44e7fe94be1a7de381cbeb011daafc
+eb464dc781c64aca17103bc92ac6e9d3
+eb46598de220a093b53df017f1c57bb7
+eb4673632a02554744e12dfc73a150ab
+eb484ee869449eddeb5bf8c5889a65dc
+eb4934b78de86214b020e8833716dc5e
+eb496b45d980638b3451eef60a54e647
+eb4fb69204db2037aa0e61df8f68b3cb
+eb53bfb7a4cf1304042157c0a80be377
+eb56f20d026491defc5852a28876e134
+eb57130470b8029aa8fc9cecc059b34a
+eb57ff1688d81673902d02cdcbd72937
+eb58a291a6f7a36b87911372734cded3
+eb58b5af34dc5ca1118cf19b653c59af
+eb58dd4310358b2cc44671fa7fd8ef4f
+eb594d74c073de6b7dcb73c5dd8a7d4a
+eb5965d7d8f75a55e9ba2918caeebd93
+eb5ac7b239fe060e7b531d2447ff0072
+eb5f30559a2149d3af1cabaa330b646e
+eb60526cf6d20949e86cff3a9fa403a3
+eb606f024488bd96838adc6506f2a4fe
+eb61ea35cdc47e0d8da414ea9313f666
+eb622b510cc4e606524200b048683b64
+eb657fda8b533ea2c5b3e05054eac679
+eb6d3cde5cba8ca58260761aa0a530e0
+eb6da2f1be076f8c6242437017a25d67
+eb6fe4f587453c3fe9e136734722cdb6
+eb72dbdaa5c0406d0e9d034c209ede72
+eb72dee9df048ece7ca4a7e5d9d19915
+eb75ccccc294c8eb19537ad8e21a9cf8
+eb77791a4cc3c7e83d4b23e2a623fae3
+eb7996dce72a505c650d7af89b893f9e
+eb7a41b5c044c9e97adc4f7f04fb95cf
+eb7cbae96af7fa02a73148933d4c5a46
+eb7eba42b4ec06ce910a8dedfc0df148
+eb7f52f5f0fdd944a3f6a0a140466110
+eb8005e17df1ceb535a3010e14842f14
+eb817e87352aec3d7064cf9fed5c5fa9
+eb82bc0bb2b2221f75027e6d19df46eb
+eb8306d2243adf671a63580bd2ada29b
+eb83fbd4e11c5469a1948c3c0942f999
+eb8955d1a0290f28d90d471d80ca1d0e
+eb89bcef4aadc9df6ff31e524dd1a803
+eb89d8d932e2f9cf548d47327c3653b9
+eb89fbf71db30f4cc7bdbb3fafe91cd0
+eb8e98aee2ef893331f220cde0561b32
+eb915142f7e077ef68e80607d3c1d702
+eb91b3e3975f0d09f89526365f46409f
+eb95d55daaff567b73e7648f1d3f3714
+eb978f21ddb357b79cb69405dcf70642
+eb9a1427a9a90c245fa729b26b2be9cc
+eb9b4c5dbe7c5e1991072b62fb46fc5d
+eb9bd1ad21cb6cd37405769577299edd
+eb9c4a28baa60e6961c3518a3d07d526
+eba19ea3c86201cb68e934e8cf291816
+eba408b41828b7c02a4888e3c7387579
+eba5860f8aec590cbe911536aff1db8b
+eba5d25e206cc1f6e885b9efcf16018f
+eba605e40ed76657dfca173e4db3c817
+ebab373b279f96da69af44eecb051f27
+ebac5905cc8c962a6200e3bdffa84dcd
+ebadc048183e3a2407f5c5864dd92187
+ebae410b523c68c6a30c262534c5c635
+ebb05fbea21d2b04c9dbd9e184b3eb4d
+ebb34a6cb0e4dae1ee0dba61c94e09f1
+ebb36ace48dbe8d6a513c383a58011c7
+ebb46c67999ed0b04f1166b2c4d4a615
+ebb51fc35fab462849542f4190cc3468
+ebb5e094606644e8e897203741e9109e
+ebb745e6d202bfb13ce81c3e5d4f2a73
+ebbadde714d2e07ef50dd9f659e03aa2
+ebbcf713aeb1995101c5686dc93937e6
+ebbf6039ff4ec149691fb8007ae2f868
+ebc6106781eda1dd8268ffa5edfb4b08
+ebcd1230042235c0a064e22b49a79041
+ebcd877d1822d8af905e7b9af903b8f5
+ebce5e5435e20346aec2cfc93597fac7
+ebcf2645bd20fba6d44f060ac8728706
+ebd27c119e8b573651e4b560cf45c843
+ebd5c5032cf20140969a81aaa41d8adb
+ebd63e7b29089b0beba2612ae1149d68
+ebd81f72ed40aa52a67eb4fa19d1e40c
+ebd8270b2fdcf20abcd9186b6bb2dc1b
+ebd827b6f817ed620a991e9af0affba8
+ebd961d90f62c7dc11bad9f72b32293a
+ebdb1bd97c2136256eb7dbbb5d93d674
+ebdbc33b5812f51163f90618a10644b9
+ebdce99a6127e79d405e3a75573e025d
+ebdda09c9f1e4c789851e27a4b393d0e
+ebdf17e7c53a56482e15968c083b4459
+ebdffa0982f325373da9c1b20292ba6f
+ebe183a1b93ad9b19d9a816c6c0acf78
+ebe21f1c3496b5a04bf753f6393677c5
+ebe42eedb413e24f2c397bf90df86c01
+ebe5f98255ae768309044ca99f1d593f
+ebea63ddc966d99ea66323c7d89c103e
+ebea92c5d548dc161df65c45dff51308
+ebeb64b448b2b161bd430f2c08f50f2d
+ebebfcabc3f9c343b9b5d9f3125e7446
+ebef3ee128ee8a8bffc59463e0239968
+ebef620201af12f505538202b66e3c3d
+ebef84ed131f2e24e2215f8b6df6f05f
+ebf01ada2b0021153b93da2aca317b50
+ebf04ea5638a5b5f82b70a186f0261e1
+ebf79aaddd9173bf47b72e09b9f2beee
+ebf7af608d1aa72d33270af812a30d1f
+ebf7b26ef1b2ab7c6fe5b7a6625a80d7
+ebf7f2705f87ea497dd0cf2709e81d3a
+ebfa377995de9d26c46b6c0b9acd6278
+ebfa5e2997b0ca24fc2e57656400f6bf
+ebfb5eebb821255e8e4bc6f9ada8899e
+ebfd3c310c37e690be74b89df3f2f944
+ebfecc270ebed0ecf3534bca8eeb26dd
+ebfee12964370f528f2cc90499b0b8f2
+ec0399fddedfedddc23113ef1140a0da
+ec0685f6553c28bb86faf73929d999cd
+ec06ddb7dfba6fc54ad050d2954c3107
+ec07a9a86d8d63406e85292d74c419a7
+ec07d049b6201670233821841d4d2a8c
+ec09e41b3062faf7f523375f1abb8040
+ec0a0020342cfc68492e7bd904f6d3e7
+ec0b63e34607b14f6d40e2880aceca21
+ec0c460b8f1c788e39e6d4f3fd0965df
+ec0d0a1d9e4dd27c898abb783f8c7647
+ec0d9545c3df793a4795e1239dbee3e7
+ec0da9616a6820deeed06281b94f6be3
+ec0e04c932ea61b5033718dff711cc3b
+ec10ff730c6a9fdb0621b37154027fe2
+ec11e53a676171af7a7ca8111a0fa951
+ec127ad1cdd300dd08222e23a3826fe6
+ec15c7d498e8c06202a8785324c27a8e
+ec1712141dd457351235b6365993edc7
+ec18bbc23f68f49fb4572221f564f683
+ec192e571a084003bab86b0297da35ff
+ec1959981d7dac39046df33ac54ec568
+ec19a82d4837b5d0cd2026e04ae54632
+ec19c7e7df149e98ec6826f8ba540015
+ec1b39cfefc4c7b4457082cce33a60e3
+ec1ca30d50f325d23d89e6878468dc89
+ec1d863c73e68de1ed29e428509d9ff5
+ec1f521f88ad39e41c2a421a2c5d1adb
+ec22d87a42179b36a90d30bf2a4cee80
+ec234935b9315c320cedab776d78d300
+ec240ea252bf3b7ad7fadd30bf174e58
+ec246d33acb443e1708027276e43403e
+ec248a7f9cf566c54731265a2e617e48
+ec2541387bb0b7f02b26a19b006310b6
+ec2920abd7aaac85f27957fa5c422dcc
+ec2d78de53b2e1d28fa542ed373eefc2
+ec3273babfe174a70640325c63e72c1c
+ec3464161abe6c8a52497e0d43132b80
+ec35742cce90a6716b13ec0a4272f2ec
+ec387e7aa60047de01e1eda32979a535
+ec38931fec026344c00eb76d9890f09a
+ec38da40413fef3f3f2e02f389b6e5fc
+ec3f0c075ce7c05e929372e5acff2be3
+ec3ff0ee7fb402525546f4528c545ce2
+ec3ff1434b2656d98aa77c22ff41bd1e
+ec408c311230b306e6c8c429aabadc4f
+ec40969996f9463ab0efe766d84666ee
+ec40a8f62367bf8ee1eb89f9d13bb793
+ec420085d52414c73fb950b763534832
+ec431c0a38e91a818fd37cb6e339249e
+ec44642118ff8bf19e023f9b13326f08
+ec44932ae5fb35bd5e4b935014bd5322
+ec463c7361e8717613e137a3aa072dc7
+ec469ba08f9a7b445c62a51bb3d85ec3
+ec48e684387afa6df5df4e0108bda859
+ec4ae0a2e17969ae0e14b1913633410c
+ec4c6cbbc3fcb9ef363ef3d89ca67a2a
+ec4cd5d8cef760ed1f265793927517f0
+ec4da0fba4981fe85c98062d449b3035
+ec4e1cb3ee0186ade23adc99e36a1b31
+ec50089b4219e3e712aa81e3214ed367
+ec52674c82119c5335ec4f59106d6519
+ec52c33a02e57500b46a9f7fd504310c
+ec542258c579dce368fe378e5f108062
+ec5679c3c9c0838da87f4ca02de47ea4
+ec56fdc025fd671c70eb79e93a6d5e6b
+ec5a964ed940b2c10f195663b23dd4fc
+ec5b097bbe01d1629fc10d33fdd809fb
+ec5c055e8e07faef43cf027c93f2ac63
+ec5fc1057c82259568dd52708bb55c2e
+ec6144bc96b25616ae5deeebf56b604b
+ec621d602552e74c25727a825db5b397
+ec62c9ac2160965614c2c7704a68479f
+ec654a1a257297af1debbfdab386ad2e
+ec65ffd73c35fc5413abe22fdc21b5cb
+ec666711c5cc7db7c3aafe78b3fc8027
+ec694610d83990add64324bb1b1cce01
+ec69fff7941a3b2a1461c6c3becb5cb3
+ec6bb1e857c6ef18bd6ad1b649150ee4
+ec6f3ca6125d9e8186708f64859b5404
+ec722ed19d527aa7b7779df63f320c1b
+ec739ed4908bc6319fe5073f3c734ea1
+ec73f9f0a7d591a1876c6b0b8c1e3b6a
+ec77af01553634d1627bfc90199d37bb
+ec783831cf8ea79d1daa05dff5a526e8
+ec7b48a5c985d68b4dbc360b68481b4f
+ec7d3feed7adf98eec79324ab0bdd455
+ec7e5c316215c7003e2cccb8f02d2738
+ec7ec0fe330b84163d075e5cacf34891
+ec8065a39af4a0b7b16ef826bc6f704d
+ec820c3beb55ad616ea86e8e85cc1a6e
+ec82c94ba694cc9817a3359a8ff326ea
+ec82cdba4cb9ef7c91f464ae49577183
+ec844f933ead845ed0399b80f1867c2a
+ec850482498b6a9ea265093deffa85bc
+ec86105cb3f1b25b1ffa5b1ac44bfee9
+ec88007b20815ec87fda456237985aa6
+ec89b3ff79471d3b6714c44b5fb7bdfb
+ec89eea7862342e13f2d58869c59550f
+ec8b9d16a6686895ee10c1069375a817
+ec8e57e85296b82b7f226c79ced11146
+ec922a6e9bc869736807f155159c0293
+ec956dd974da91f84220e3cc4193c7ab
+ec961c6133c11637f0a24e8529fd8b86
+ec961eba2796812d5d37e6813d26ca4b
+ec962ce824cb26889849f04c0413f50a
+ec9d11d3729062e012489830bb568c49
+ec9d7d520da6800a9d7b703d768b1d38
+ec9e04670ff51d24e93d43130ee35f19
+ec9e9085891b0a966cfc4bbbfefd8445
+ec9ebebce25c307b576d53e223a52050
+ec9ff1773b843f396c3d30b60b5a3baf
+eca0d7559559adda1d7daceae0df7ea8
+eca1287c5355e0d6a075edc03d230998
+eca206d8137baa207ecbdf765c2e1e3d
+eca411016124b384ef9d139bbc50f1a4
+eca4278a981f64ab0e3a28171cd6f1ee
+eca58849b783959f6e4eb45d97c18a74
+eca9e77a9296bc0bb1121eec99a55876
+eca9fd0ef067cdafbe9fb57d1c0cba25
+ecabd602df925141941ae5ba4d2d68af
+ecacfad0a0bdf9a3e26376207760cae5
+ecad1fcae6c1a82bae09264e82459f88
+ecadae725564be2024b086e2234558d6
+ecadc1cab481ae8293e166892fc30ce6
+ecadcc6cd10d934154e10d8072610793
+ecaf92b2b1928e952dc8c3db3472cfa8
+ecb1fdb7eae0ef291270290c4f1c5eb7
+ecb3763f2fb89bb3758415673de6af43
+ecb572830f9461db45938359165b90f2
+ecb5d874b70075a86799641544bfc486
+ecb60019ab049b40f3104f092a6c0acf
+ecb69df41696527fc526bc05054fb5fa
+ecb85c342234b849877bc3b01db9bd4d
+ecb9cbf8b0d61edd06328509a07b1ed7
+ecb9e6135ed35ddd7f3551bce1763bf3
+ecbba9799e895894f17cf847d07fc860
+ecbc76ede79625253b073e561d792797
+ecbe1f419a203ff8b64d3bf42cbb7c55
+ecc0caa8264b12925cafe2639f6574a9
+ecc17a8f558f47c0b2393111e58c208b
+ecc2e2a0bb3224944939fad6999e14e6
+ecc46a51d31965579b086ee5a5c3adbb
+ecc4aa2c78712f9b8cabc78230e59bcc
+ecc4bd20a3fd1f8b65548face1a112dd
+ecc5677fa8903bc55b1028dd6fa8797e
+ecc700fd24b3b156e536f71537eb6fce
+ecc88cf6faa820d4c0ed5d8f2de8aa51
+ecc8df3acebb436c87d21a91b2b42374
+eccaeadb9597f6c2a457057f12da8d35
+eccb797cf63cd8ab1ecbd548da44b1fd
+eccc606a8ae4fde1c79fdcc65bd1818c
+ecce00c2df2425c810e704f5284f4bb1
+ecce954d06597a5e348744c231f964ef
+eccf0cfbf0aa74ad8b6468967a4d6aca
+ecd0189092560b16c8e7c524f5d28d21
+ecd06a2cd9dfc7a1d048d42470ed44ed
+ecd0752625ec8f084a8b43f4ce10ef37
+ecd1700135a39ddfb9143f05279ae0ab
+ecd3affb0ab4f2afe4d2ed4debf1adc5
+ecd3bfaf6384ae1c67db86e30874e86e
+ecd49c9c76896c85499f63312354ab5e
+ecd8e44608174f1df1b6a1bf6df00bea
+ecd9ba7a7bd8c4cf777bd0bdacb89e01
+ecd9bae4a5afb511fc14c0da71668dc2
+ecdaf6197537ae5d40e2be0eced27377
+ecdb5c7a2e2e1012fa816933f068c1ec
+ecdb820fdbb6f01f1819dbb70cd388be
+ecdc49703804f9a0f89fcd5fa463f268
+ece0bd608c2d6b7f3e46763956525fb5
+ece1d594e3e5c1349f06a114e88d57fb
+ece2e0b6b7fa1ab27e7298224d6e9b95
+ece39d32213bb85259da3c35ce531cab
+ece5e083ae2215e28599752e942e493f
+ecec33d3fda55dfad62b03593b4a5c82
+ecec7bb7af409223d2b8fa3bcc5f41f9
+ecf39d8b4d226c50bb6485da2bfc641c
+ecf3f65c7e8d89c8a55e7c2605674862
+ecf51d2fb4e2d9673d27b931d23b5b39
+ecf596c05d18aae41d476dae4646e962
+ecf61517c01dfbf2d4852fa35379d887
+ecf74bd6b44b3429a513266420ddc40c
+ecf7818eabdec4a57a9ae5c1b5ffc948
+ecf95c828565049b78c805116da3cf2e
+ecf9cd7f64027003aab12a941e174d1c
+ecfacb81b65b71df9e7e8c8e7344e581
+ecfd7d4994fbdd7b7126c3669b81910f
+ecfe9e42f0fb3a81c27b906bb0dce61a
+ecff9b5c5094080aea1b21dba0333cd8
+ed01513ffdd90082eb8a4163e6adc068
+ed037fad58d76f67b522ce84839a8779
+ed04b0d42f4004b841915369f3f48cb6
+ed09dc5260ce8db4b431632316b2a4f4
+ed0b812623869864816bb4b1cd2bdfeb
+ed0cb33249568261f931ac3223f6516b
+ed0f82374b072573b86f8606bb93d9b2
+ed106526681f46be0c2495b40bec1e51
+ed1140abfa0cbdb85ffee90d412b8389
+ed13e9d269f28fcb52771a678639a5f6
+ed1585c6d436bf2d2d73b14841182ef5
+ed1604193cd33b6ebc197ef4e59d6b38
+ed1608ed641f7e4f00fc4bebaa7f38d2
+ed199239a930aa9ff1dc1c757ae68627
+ed19bf5b3b4dc3f3e174058369e9df1e
+ed1a03225d69b0e70bf04b38abcf89cd
+ed1a4d835a89b2c50bfcace9dea40583
+ed1c4e300bce98c0683382e76317ad6c
+ed2385d31c4a6c535f02782cfd5b9710
+ed23fc67243f9950e0b21d5910595208
+ed290a55a3a4d2de8b08d11715972375
+ed29b1b1a474e9e5d0f3366cc3511e32
+ed2afcafc1863c1efd1b62210e4e73d8
+ed2f0b0b4965c6a3059d8e1116998239
+ed2f2c40271ca7ee7792c2824e09ce05
+ed2ffa37a90c7b06260543f6df60bc94
+ed33db04354228b8f21cd5a6a00c6f9e
+ed346c869699cf46fc00d01c539c89ba
+ed3546dd515c8e89398d75eee2d10593
+ed35bf1cae60198deede544b43e4854f
+ed36650126797e2e9dde8614073ced95
+ed36a65b8370e52e12c6ba1ec72119f7
+ed36ce0453cf2a3fb7489490ddb36db0
+ed37fe9a4688f43fc02109054f09ce5b
+ed3aaac914b1c8a201a577c0f394f3c9
+ed3c0021435309456168bce17bae5a3c
+ed3d07a14d8e03b6adc11d22bac086ef
+ed3d62c0409ccd738d70f247a2ce7000
+ed3dde1e493a260a0bc01f029de66733
+ed41fc5c416195b10bf22a326963e425
+ed42d7756786e426cd373560428e0c75
+ed44009a1a89f08c823dd2dc63db6238
+ed455e43a0398cd357ced9613e537e0c
+ed49250a18c9bfbcb10557bfb5203933
+ed495f754b2643649904da61a8164033
+ed4c2a69b2d1baeef249e996700d4b6a
+ed4c6fc531e51fb59429bef1bb43d535
+ed4d0e277af310d41192ac3bd2ef3c9d
+ed4ecde49277fa4c626f5f7ba19a6709
+ed5091fd6eb23b7a6b66d27b45a3926a
+ed51fed7d17069116f20b697a33c2b5a
+ed52bdcf423688be0c208984c15420fa
+ed54d172a687db52564be31bfb38cca5
+ed550c928a6a45f76cd5da34aa98af61
+ed550d13c919480ff1136333e456a049
+ed55ff6d0188682675954eaec21ea360
+ed584bcb2c2032392fa9991383e7068e
+ed5986fb16b1f29f06c75edc366b0e6e
+ed5c7294f60fa3fc56f8a8e036af07f6
+ed5d3dfd9483f19c635ea034588c20ef
+ed5dfe5bc981b15c12a793e0d37ad33e
+ed5e1475fff3bf62bbf9aa057d30a8b8
+ed5f953826c43170fd9027a9109ca5d7
+ed60c5ce60084be6aef2f8d80b1da4d8
+ed60e4ff0ddcfe9196d8d8fd13391303
+ed611d61d0d952d0ce932c9b0ce13085
+ed66c8acaaf85f67631e8ac865aecfed
+ed68018ffd9b409b331937e814032bd1
+ed689fdd283e2bc42bb935222dde2e25
+ed692ab30cc93cc76de8d33903f44237
+ed6b92aaf552104781cbf249f2e1d3fa
+ed6ef0412472f41540426497bdb7483b
+ed6f0ff961acd7a0009e9b0631858b99
+ed7094ef9300457c43c7a3c9a07a594c
+ed75bb94027d97163ad97eabcd6075ed
+ed7635b640857ed5a329d2cc22bf2a21
+ed791857607121cae3da59a5d50d9eda
+ed7acafb9ee2198d3c1d81a71ac5d1e7
+ed7b045b5661fd9bd1d440a457140d54
+ed7bb7519faf689d8ccddd0b8c739a0b
+ed7c0d4d6498af2f6a1f820cc0fb3de0
+ed7e04ddf1032c090f1121c27e1a24a6
+ed829807bfb92dc6a4ca5c5c3b6ca984
+ed83795a5d14fde17d911437df4ec9fd
+ed83e01d7e1b55dee936ff8eca14acd1
+ed895715246b306680096ce103d7d525
+ed89f1427ae478246dd331350effc303
+ed8acfc3e46d3c50c4bc8289a49f0144
+ed8cffa2cc73f5bdc89d0b3bf80ccc4c
+ed8f6dbf66b1ec862592b4e2dad04999
+ed915c1e3f9b63ab651f9d79bfc9af2f
+ed920e3d0ded8cd646294507f6ea2d08
+ed959e920eb617ecb16da841c17a7e03
+ed96b530c98e0c798ad8f36c649a6291
+ed96de03a650134f32e7133c265a068e
+ed97622a8d9609c54ca02fcea52d34b9
+ed986a02324ad95a513aacf5c75722aa
+ed996bfbf24580fbe5d951941f46b2c9
+ed9addce9bdb71b8e47dacaf47349adc
+ed9b589c457fbbb32824fa95253e43a0
+ed9b96c510eb62e0e066b91a067055d4
+ed9c3dbb976efd19c92d976ffb7dd210
+ed9c8d83511f48f086575fe5610e6775
+ed9fae042863920332dfac7492e20ade
+eda1a0340a42a041b5ff47f0788dcfce
+eda2f55a71d319ebf395e74490f6bc32
+eda57f4fa83b5f9c52e420f67b05179a
+eda58a7dbc5bec6e5d1cc44a235f5bda
+eda5dbd7053463be40e95dd68f7c2672
+eda7d7421fb548971a8059be90d0eeae
+eda85ec28a76326bf6eee98942abf15e
+eda86a50158f3f2b3f212f737b711be8
+eda9059df8431d3b0db453a990529682
+edac21ebee3dbdf3d0760e236823c6d8
+edad549efe7071a306b442568b371dfc
+edb081836250d844cd7cab27e4e613bf
+edb1d6db125d2238f1b0261571519120
+edb1e54aae6cb4579b4cf76a66ea5442
+edb291cd29b4a9ce98dd1b7d5f8d46a2
+edb4510fa6460105bd1def204c4e0e23
+edb620634f03bd413a294ac8213b3020
+edb74fe6ac0c0efdcf1bcb1ca0a338bb
+edb85989ab9c231617f1a6c8cbf788aa
+edba128c9585da288367b907f0c385b8
+edba2ad9318ed556dc4c95fe7c661aab
+edbb8ff69b9794ecd2593f94eb81fa0c
+edbe85ff77edb41f73d572bfb085a42f
+edbfbb9d2c6e654a91a70b47c40e50a7
+edc230eed3f6ddcc739c5fbe8a99e22d
+edc254c81eef13927a5f249f4b978651
+edc5f826f0277ec9e4fbf2166c6a6759
+edc78930e4d016fbd95249cf35c12d86
+edc8fa8f948548b1e7a46c35aeecb9a5
+edcdd20e4cab62ea6e7261c228e9f5d4
+edd0a06a10ca99b0565228748c46404b
+edd0e4e7cdf758b619091adc1f362d52
+edd4d573fd43b6a28290826f5be9a6a6
+edd52cbe21942c35f1348d95362739dd
+edd780e82f8e1eb6d84fdcfa2dcbefc4
+eddbcb14280502430c213441f257c3d7
+eddfb776c3e9a137d283b460ea90ea72
+ede0c86505f940b6bd639a0cf034a973
+ede175c5bd839ca3e03beff351da0bc8
+ede22fb0b4459ee288ae204defb4d1a4
+ede5ba329320213c6224889ecc6bf23d
+edeaa02864aec891449734c6cdd32d1e
+edec93e964669b368db7b5ada495b64d
+eded0759a776936a85618a5e6613aaf3
+edf09eff4840d0cb17840c4ad3bf0725
+edf12a2cfd4528bd57a29d82c6450f13
+edf1e6b4fc221d811a431750ef70980e
+edf38f738be5ff76e361caba8439d420
+edf3b4f86c70143710353674407f72b9
+edf464a5ef51a499c8bd639322cfac60
+edf8e9598e4a8d1bb4f07710129d4db6
+edfc1e95fad851c16325a5d55559945b
+edfce63fa7af2390c4aa18fa1a1b0c70
+edfdcf4a83896387bfa368ed92e530ad
+edfdd8224c976fe2dfab797a0b1154a7
+edfeeedf7e426f67acc2cb1802e34264
+edff76a61f0251f3bcf29dc6799d8136
+ee00081e38fe7fe2875a5fe78d0e2d61
+ee006c8f86ec5b7ef627d5e56ca0b44a
+ee01eafa8620fbc671103a9f608ef159
+ee03308f116c344545baa6c0feb423f1
+ee0556236d0cbab513c97baae5ed2abd
+ee06cf0b60435f2deaa26fa099ad2eee
+ee070f4b7474eb2cff4bc8a180a7b79a
+ee07c328d03e0d9ac53e8ac6e7415402
+ee09fc031f69f219781d1f3376d9209a
+ee0bf7ef025bd516d50807b48e5fbdb8
+ee0cfb628cb3c0934d3fe0ac9deead55
+ee0db710761386934748c987996a452a
+ee114dd0df31add1ecd6a064b14dc6f2
+ee11bda206ad967b8305a63806c0c48a
+ee13c9af9d37c163e64e7d5fd99ee2e2
+ee160f905610e12c90a98328148bb6e8
+ee18ea954e40247873784defd8721303
+ee18ec0548fe9329ca37c60145e59a95
+ee1974d9d282c7357e395b64de7e629a
+ee1a4b3552fc828bb53c7f66b51ce61b
+ee1a5d2e4ff130a36bb24f5b521a369c
+ee1bd915bc4e6b56d28ad262f3f5337c
+ee1cb11c8a7961efaefef71e780e3784
+ee1d921ed1452df8a6112c99ae43b99d
+ee1dc5523a78086ebeeaf5c0702ae8bf
+ee1f581abd53953f5d8fd508a9d2fb4e
+ee25384258b5179240b5d8272c171be1
+ee281733e68be7395f87649be060b0f7
+ee2c5dd55b085b5020de19c7ed36e199
+ee2ebd03162a90f1eac3b420f916b8ae
+ee30cecd771f728625ed744af723f30b
+ee339e9c23b487ca22fd45ad4bcef29e
+ee33c2f4a8baeaf210423dc26acb8041
+ee3400a691f218cec9e53310dcf1fd8e
+ee3437c285737ef7a336d2cf53b7c11e
+ee350f24a3733d123364ab80c611a599
+ee35dc32001e9532a3b0f5006ad33f3e
+ee38bf104620625c758cfcd899a0f42e
+ee38f739a19c3aae3e0f32d771f5e393
+ee39377eb9e5f65fe17eb341515b4ee8
+ee3bf00aa66efc527db2eeaa0ffb790f
+ee3e19d4ddcd009161b17f14f4dcd46e
+ee409550bcff42023823b4ba65d0cc1f
+ee410e84ffcee84bc974113b787a0653
+ee439b94ef349a0b7db12455860c799d
+ee4543514479c4632362eb9c3f7310a0
+ee45ae21e3ea3cc6ed8c27c28e1ed200
+ee4793717eba383aa600499be62e21b2
+ee47fd66da3278205d2282dc19579a97
+ee4affb89a1cf906f13b476394abd54e
+ee4c85564a6e57276dfc84489b8e76d5
+ee4f5aaca0a75bcb1b1886ab8b67dfcd
+ee5558e3bdf14b684593be0a1b7a01e2
+ee56a3e44b1617801bf756fcaafb2123
+ee57fc881012647b32d6915cb9ad1ebb
+ee59aad6f732ae918b54db662e7355f9
+ee5db9be5a19de2a8da55168e0a9a83a
+ee5fd9ee8071e82a97b2d4968a96d631
+ee605f25489dbb31d73eba04b3f85339
+ee60d14dc53d15d2cbf4b154085bf236
+ee6268ad0de46b21e6a9a8bdcade64a9
+ee666430a45fe04bc849fcb4c5bed66f
+ee688ee55b09c76054fabaf65e61a78e
+ee6c6ad72f2c042ba38f0113c8e1d2e6
+ee6c996d6ac4c1b6873ee3d90fe04202
+ee7040afdf185d951a67a8d36c277ab7
+ee7067c84ef21e458438beb133d1db83
+ee708dd882ef51ab6a214e7bcd15ed02
+ee738db60103766e14dc22beecfde05f
+ee75448142e288a0641070641f4e124b
+ee761001a1de08903ff759672dbd8a6e
+ee77886f08ffbce7eeb0d4557371bc80
+ee7a31f52e36bb464ff424e06a5e6431
+ee7a5f6d5c65b0533bf0d3e8492ee903
+ee7af704370b0304453de25294b7a709
+ee7c91c09703674c37ac56ed9feb727d
+ee7fc988719de4fdeec7c9a8034849f1
+ee83bf61f740ed83704434ae4facd6d3
+ee83eb93de40be686c45ba5930818c93
+ee88c17517fd5f46c9ce709abc3b4f6f
+ee8ad0cbb240e7b4feb947a2a22bef83
+ee8adcda337af01ff86688e4b5d89208
+ee8ba553a81cfe1567d2d440ed0af7ce
+ee8dd3cfd9a067a2b25a76bedf35ca0f
+ee8ed96f9704fd16bda431e7fec53334
+ee8f0f4577981a3a6c097af97d9abba0
+ee91b4ba4b0e0b01020dafd7c3da846f
+ee946cefb3b4582439f2185a96f593ad
+ee94e02b7c5c29631c9291bdff41647a
+ee95077fab6349c1249f4eb3c5072c63
+ee9696651152011b10fb35b5f73a73f5
+ee96d4ec7ad26c16db43561bd98fabda
+ee972419ea99494ffe1fa8548424e2c4
+ee9787be19bccd7b83f632a9f1bbed53
+ee984630d377560f36857c9c4ebed81e
+ee99216fcfec32f672fa3dbf5bedbb29
+ee99c672b1007daeb529e07030530904
+ee9a881c86519c94920ca36e8466511a
+ee9bbf341e907c2db6ca0f611fd30589
+ee9d2d6743737f006b0adc6b07bbd2f8
+ee9f19910ea1d60703744f947246a48a
+ee9f76e4ccb5994c9b5698fb85b33a2e
+eea0b03cf79875ddd0b7f312ef3f7026
+eea0c43d5bdad2e313c0f291659a0928
+eea3e409a215a0d4960a08a0cd843563
+eea8612a2e5d36fb83d24c6b1d374cfc
+eea92bc777913a667ac52824d1217956
+eea9b23c9f06963584b18899d3cf3e31
+eeaba7165d8a539ce371b68e79787676
+eeabe96391afd5344e7fc6e2bf9a0c5e
+eeac79b6584a965f69acdbaa4d20c725
+eeacbaf98458b15e40b72693cf80ea9a
+eead89bf5095dd517b7497fd236408c6
+eeaff5e8246c7d32d64725165dc216e1
+eeb2f0a832776acde876a2e9725dd52d
+eeb2f1bd8bc40b2df59d450da924acd8
+eeb49eb332cabe98d89fc31d89dfc2a7
+eeb4ab9ecb929359ad6744bde33c2541
+eeb5d415a6f79e7a799935ba9bc79ee4
+eeb5d6991eae35dc4c9a29fe0aca043e
+eeba1572f24ca2beb9759b2eb1de9277
+eebadc6807c38365c94ce34addfe2f68
+eebc25a1a9c1961eb2c888fbc18f57b5
+eebc3f39b89992973e162c9200638a10
+eebc8d45dc3ec5d79cdfb7a53e1c1cf1
+eebcf265a4d15490258120dd981aff81
+eebf54f17c530bb9bdcca1a3de5bb6d1
+eec1b91ccf1daf7b804aec569256a239
+eec34616a05691ab369ab42f9f69e5ca
+eec74ea77fd4f638c19d113871f0dfa3
+eec97d595a9b567e284fae84e1475d98
+eecc58befc4f3d2028709156f0dcf395
+eecd1808deee0df6d59f553cb913b650
+eecd472f0db8dceedd6130d4e10aaad0
+eece603ae5d26734b66a63be10112267
+eecf4a8e341798ad86dad2721f47ff3b
+eecf6189ee351308e4d0d65548621887
+eecfcc4e8ed2a92bdb2606c0efa544a3
+eed06327e26705e502489eb9756d6c5f
+eed13184423c6c57942059634fb42868
+eed37f17e7b9b1b7c3136802569e9a72
+eed471f1ccbb63ad815530b672ea3f85
+eed6a84e93859434fcdd96328425fd33
+eedb9ac2e82615476d14103baf361899
+eedfa45c9dfb702a475ee7012e1de357
+eee10c1a1c6da7e411411616d9cfe88d
+eee2d79a6e03becd9277b5b4f7bdc43a
+eee701b2d127ede6c8af5d68a1e70340
+eee8a70a6a3074b589054283b7b83ad9
+eeec1522b596f21e8194bd65d3db3a38
+eeec7eb379a682f3cc7ff36028f40212
+eeedf5e90f6a66ed873e37470b874009
+eeee0466cfcf3b389194886dacc46ec7
+eeee737e277f5dbddd705ac20f0128b6
+eeeed45377590290978e16a0042f482a
+eef178f7fdef9f7fdb5cfbb0d5ece62d
+eef2f1e93a977cee1b3ff334dfdc6856
+eef9dd59c0e6a79073417d2556bf358c
+eefa400c6b56d8f0c6384d7ec1aeb885
+eefe33a45bfe7693826e995ae7ee88a3
+eefe5716a2fb35466fc22f8b4859473a
+eefebfd32ffc427344d76d5f596ef665
+eefeda14ac81073be6c59dcc29f8d376
+ef03cbbde505f786fdc22b7557673661
+ef08f00ef8fa24563164859440a0b01b
+ef0b8cc4d9fc9f2453d2bdf6139be783
+ef0c88d2f6a3f2b8292a68ff1cb6cad3
+ef0c8af75ee740366a7c9a4f9597f53e
+ef0d3b02ff4f9f789f782800aa332411
+ef0d7e9c8b048943f0686bb819c10cc4
+ef0ec695047e96e551c05368131a3cd5
+ef0fe2eccf1e15cc4da3b676c3bb2f20
+ef13040b37a91449bdaa05bdcb49c9ef
+ef1330987fd12835dc1b8633ff95ceab
+ef1405deee8e2a1d4201ec58b611ec61
+ef15779facb0ab1d375136bf7c97b42d
+ef15d2d27e9b993fb96cd578fbdcc400
+ef167371f062b7d79bf8ec2f7b45987a
+ef17c45e734bff81a61f8bdadf7cc883
+ef17d619ed663bf6ff7d8739cd1e330b
+ef1a4a77247512e53356e292c8619614
+ef1a574549136a0dd161a549ab2857ee
+ef1ad4146fe7eda8b88a8eee1ebcb134
+ef1db21fdd592bb4d817c1d5570a6d45
+ef1e7979ddb313b541ff52fdb093421b
+ef1f215f9b78073cfdba59e761f7aa5b
+ef201b0c0671841f1477e111fe61c78e
+ef217a74506c840f5cf1132c79b5869c
+ef22120e11331095f2e0f361f140d82a
+ef230abbf0e70cd3ee6d1eecc6969e32
+ef24caebd516c961bc765095a5ee4d21
+ef25af4d5f699871f89e93e1fe03c682
+ef27d5841f614d7774fa277af6335bad
+ef2b86c74dbfb7ba9f46b781a580ff06
+ef2c517ee5cde8d29185238f3d1e3967
+ef2ced26a1c9cf1e16514d5d2520d324
+ef2d1b017ecc9d4524ec275f9b2cff61
+ef2e247b74d502c79798dfe3c6cc7add
+ef2f17db436cd2da45fd7d3d8ad4d10d
+ef2fe527b8c4c46da23d305b375c14f0
+ef32d323bde3ca82ee04965275715010
+ef368eee1321ec21838c23fce72da289
+ef369a1e3ab25553550956f2dfc112ea
+ef382e9ab8dfde24dfa96fec50f08c4e
+ef390c16e48fc0a1bac3ed2f41452ca9
+ef3b57660fd68e00f66bde57e310236b
+ef3b7a60204f5d00f6dda4615fbae103
+ef3bf3d668f0b2aabbbe61c2ab6a53c3
+ef3fc4fb1f28f6dd02508005f50926c0
+ef4144e2f9be0a9f4805088f0d66ce0f
+ef418812589ddc9f134fd52c829b6fc9
+ef423276a20d1e06e815b308d6f38106
+ef4522b94c84d942a61312fcb1891dc0
+ef49d088a01421291b6869aebca0aeb3
+ef4acf15a3221c7025036be860eee7cd
+ef4ed2c687fc537614628e34281796f1
+ef4f5e63a859a680bfa763d80cb705a1
+ef5061608aae63fe42e6cc06d812e280
+ef53e6b384f17b228fbd3a4a4aa96286
+ef56ba5725abc5a2e41ead5cb4685d7f
+ef5bdf18db7fb1d2854d4d94d4f0b693
+ef5cad1ae210e815e2428888c4814564
+ef60a6ed00053e6bb2134275bce8ef02
+ef61ccc0be1db6f2618fbd366d595fc0
+ef6212eb42ebe51d02ee0eca723fc81a
+ef6223b586623009445f6ed05baac2eb
+ef630e646bc928563614d487a96d40c5
+ef63c75fa93e1c5d09afefa3070682f0
+ef6562743a8c5cb1d268b3bee2223c4b
+ef67669739302abc9a503c7ce929c052
+ef687d4951a10fa44974bf147538ac31
+ef6a2afc27ee362dede9a91548ba2a24
+ef6a9a69ceacffda72d75036aa0ec85e
+ef6bf406ea3ad4a10a73f8fcfdb88612
+ef6c6b248c82f460ef0a12549d1a8676
+ef6d1c55cb0091a1e7dac3c677acc960
+ef6d6f1d7a6094fccc068055058fcc76
+ef6fbbbca0031a189d61823111ee326b
+ef7249ba3188eb9408645a05e9415c33
+ef737a80db09e9644a9a3acf1559c63b
+ef74096648bf03f76c920fcb33e26cc0
+ef7476ac0860f321acf26417127de35f
+ef755d02865e617aa3afc69ed7b1e36b
+ef7a1501ba8b410576dbf5036b33ac5f
+ef7aa5c55d40d0e6d97e1b5202074b2d
+ef7ad01a57d8b3372d2c4b845faa2611
+ef7b0ec494c7f8eba6f2f9884a4336bb
+ef7b4781326faadf01cc09c235862d3a
+ef7bef4fad8dddcf11879d497cdb9bc6
+ef7c3898e5e62f699bebd85f2c8f89dc
+ef7cdc91d193fcae278c94351b34886d
+ef7fa06a1f6e345ba291c42af5aaff23
+ef8147837e866111e700815fa2456f86
+ef83b236f2d16aa1a8f6f6e0b055f322
+ef853ccd6d6b6f5b803d6ee3a9e4fab5
+ef85dcc23ba782a677f2b7718c042f8a
+ef87485e55242913fa18bf5fb950c0f5
+ef88adb17b5d86a6d36658de805e645c
+ef8a6b9e417921d80e162627f559579a
+ef8a723020b9ef67629aeb8b6e2a4df5
+ef8b2bc4c2ff815c413e3e1459f12ada
+ef8d6f528b6258fd733ea8380cf4cf68
+ef8e06a1ed879c859cd9069f3d27761f
+ef90d7e2cc86943d0b5f4fa7262839e9
+ef91fce6c45c5e7a9bbac85d09582226
+ef933273aa890b0bba4e0ca21263e132
+ef93acde2ce0f5001b502711726cfef1
+ef94536f55e09dcd23523f705a17763f
+ef960833fbf7ae798e0461e01948ef90
+ef96d5bf4c97128696062f1eeb1730f3
+ef980cbdeae0c7b29bc37305e85f5366
+ef98dd6da693eac4eda039727dcd4c80
+ef9a07ebc464967cf4b170b83cc77007
+ef9a30a675958177fb48bee339cac554
+ef9a83304070644d488b8a72de297d25
+ef9c02a30f9c8dbfb93bdfdb4181b191
+ef9c1d006fe55257e797953563a2be4b
+ef9f74182cbddd241f2ef7d1d9501cb2
+efa262e894f476cc3e5c1523e6a6b102
+efa55a15402441f4dff841887d74fca7
+efa9823d325ec5b8ac674d520a3b3bd7
+efa9b7b7138797daed640923a70a8636
+efaa89d1b3f75db504312185e9f9415e
+efaae2c612025818a729a57db42cd0ba
+efae67c3ca9f6be0068c2f53d62902e8
+efaf168bdd4ba45c6dea432cf7790fc5
+efafb227e67adfa8d022d76a611d9148
+efafe01cb7d9b16572a1586cc277442a
+efb0b33808eaf0f480c1f6244e3cef54
+efb0fd01b4c5ce550d26808c88a3ff89
+efb1d92870a835efd11dd37a60abce16
+efb5e4aa45227cbd9e83aa1aea7c032f
+efb5ee0c0ec047e2e7014c024fdf3132
+efb782f00a4507bb436a64967de9ef48
+efb7b2ca034c1ddd708510f2db1fd3b6
+efb807e643c6bdca8ed38e0ffcf04514
+efb81bca84c9d5027d116db686e83958
+efb8ba5bf09b93449559ea058f6861ed
+efbb67e26ce5bbb360df5e7d207c8a41
+efbcc8f97de2eb0d420044796a2fc21f
+efbec6f302f9074d8d9b9f7f2f0568d5
+efbf5ee52880fd1e4572d9cc7e079ba8
+efc02573df906c8f4e4df1a4ca362c39
+efc1290c1f060a2789db9c90c0531e40
+efc1caabf4d6f79426341701c906b459
+efc33f33a82b256fdd433a6987f9c3b1
+efc3f2edad0c089a84dff31fd0f38baa
+efc4348040ccb95fa838d6e358d48c69
+efc8189aaf4a0ca9bd53347fca72cf95
+efca9aa27c0f408f4a1a401ffeba5fdb
+efcaa1d07d55f1b64c2c622f7b790c3c
+efcb53f4f74ee260a2e6ea489bfe7012
+efcbc541d6ae9cd041dd5788d2abb7eb
+efcc14f17c5ef50222067065871a2c80
+efcd052816f6c1cfd03570e5a5a20364
+efcda831e9254154d18d8fa547a5a82e
+efcead601de349d0ff42b2df0c570b0c
+efcff43f4bb65d5522a4601087fc0615
+efd08f5e5960a215f86edbac6d37b9c3
+efd13e5654b4e251a19a3042943cf735
+efd2070cffd061bf942a63cb1141e6b3
+efd4ea2829c379f5f1dcd03f45bbc4de
+efd62322d7e21b6b50e6a4375b5b63d1
+efd64ab2eedc8f8aaf1dea5e8d8e0387
+efdd424ce2016357e6abe78639b65522
+efe00e7c56693e83dd3a6c530bb87286
+efe08a006631effb2bedf98eabef18b8
+efe15ee3c834a777877c34f892ee3e8e
+efe19d500d8ed1818304ce46304a1f93
+efe1a88b8b3327b8e27bdfb90070a752
+efe445e822a5f32e583b467ce029a45f
+efe46e3b6263e9959bf1293f8aa4e590
+efe59ab1ef7324f746b15f9b37498aa9
+efe6f4365049ad75c20ba2c74373a466
+efe79856ae6e80cd974ee4a0b169b3c8
+efe83bf7cfa2e4b0dfa356c01b5635f3
+efe95957634986fc13acee91f551cb9d
+efea977a877dc555f1e060a5d9fc5a56
+eff3bcafda516eb9a9167e8dd8b68f29
+eff4ab3e77106db7d7a370263e35890d
+eff68abb18ce770141c38d00db03344d
+eff700afb91d464894cdf3ab76056447
+eff885030a722ba20a93710b2f9d0575
+eff9f458c15bfb6a8e2e0bf8fbc4b898
+effb7a05e07f99d19d1816b8567c9950
+efff019bb2202448bbd89340d43acc7c
+f0013e31f2a5547e7779cbe5cf05903f
+f002f3b02ce018f5e4b112892811548e
+f004118cb327c75ec24203c4999c691d
+f006a5bb519d06b72513d13395c5cbec
+f0081e01a0ba2d846a20107fe6743316
+f00a1c9a5e45f53627a8d5ef8ab3b7d1
+f00dcf87bd92ae80ca62e0beec3b48f4
+f0114806a5e6d1ec4639d0a9aa0b992e
+f01359a898ed3fed4810ee5eb1ea1ead
+f013b0dacd63a794847834270b46c085
+f014175e0e171abcedff06b3800c75c2
+f016438daa8b1b5642d6598d8641c200
+f016687b23025acff5736781713b7c0d
+f016e6cedc9e77cbfdefa101eb822c2d
+f01956e2a93fc4d517604fe7703304a1
+f01afd078ad4c3295bf8d1f2bd745e69
+f01cd77e537b9a441dd1246afde1c973
+f023391004e41633434b58b5d054f41e
+f02502f150654ab7c0813d669d28371f
+f0276a1f22b801b86060292cbbff2fc0
+f028cd404a2a45e74ad3a3fe62fb5b23
+f02968f62d43a1b7c4fb32358b9bd1f1
+f0304a44cb41ea349d8c7677a417303d
+f0315fd86f85223d637c14999209b654
+f03351872ea1dc142c8489f397a4749a
+f0337e054f06319748f4d4057be2cb4f
+f0347afdd1413aa208bbe8872c0d872d
+f035a7d82b3cc311003343185cf7483e
+f03a5d28ea7211643bdfbd111b5a5a56
+f03a982a37a034d0664b69e22db7dceb
+f03b52a80e8f06d201732340ba8fa1ed
+f03c8e0ace27427329abca59b1510ff3
+f03ced78d3c096f8d816c641d46cce1d
+f03cee29ddf3989466386ccee617e225
+f03cf744a7d04ec465d54a3708c69977
+f03de9eb0074c8fca5433659749ec37d
+f03e42d9e602aeeaef552a7e0e9f2cf7
+f03e6cd84dbe3d6aeabf4df2c187a482
+f03ecde1a8cee0de7e22e2f83db249df
+f03fd36e9adfe59870c22986dbebd5ac
+f04011559f32d9ef21132841390c3f0d
+f042e8ed0d44b8d4748cc27f6b633d45
+f0446b79d4d915690834e2f783de5ad3
+f0448722d038a1066375b7d7a8b664c9
+f045064b9728b7d1f71139cefd9770e9
+f0451833ea0ebc395d1a2990e39c96ba
+f045c10024eef6d82ddfa5bd7d60533d
+f0461e063913d76e258b1c504e41cdfb
+f046b39220abc7e6b8a7d3519cbd578f
+f04c750c0a4aca526d8bb5f6d7d2278d
+f04d536dd976356d4f5adf503826ddda
+f04f58caff9fea08af391a0322b33be2
+f055641925465d792a0a46bdbcc59833
+f0573820c28ed48e775188f51c4c4858
+f0581aed2d2dbf80a3208e43ee9197a5
+f059038110b284514631d5870a7d50e1
+f05e76115440b2be060e59be8bfd5c0b
+f05f77f3acbbdbeb32301fa9c2468c45
+f0616fb65f2f4c038cea1d1d4ad7a53d
+f062b9acfdc42f309eeadd6a8fb55ae6
+f063f0ed1dfd385b0b405c9423dbd553
+f06620fa44f6e9dd1d759f30a5eb8c28
+f0665391025ff2564eb656346d30147f
+f06ad1006a26b9831ac2971c48be36d3
+f06ae6f39b2ffffd12b178bf7a74a0d7
+f06b3035d8a61797a04ab55ae882132a
+f06bfd9af3a89dab797aa1c7da825c59
+f0714693c67f45553f528373036eef83
+f07235d2397697f08069a6936c9a4426
+f0761cdf2a8d015a98c2d7a0a981820a
+f07660b9e0517b2dea403296d9285b18
+f077570f507fcd44e5c39a354e843573
+f07abaf4fb2a6497a2959cd8140b9528
+f07b2effaeaeab7d0f20adf76a991787
+f07cd2c20e81c73dfe36eaa8780c2bf7
+f07ef764d25cf7b1223e7e0b80e68107
+f0806a4c7801ce29833773db6f0e8203
+f081d025250fd33a769554d5c7cf226a
+f082f7ab89b73b6992219aaff110382a
+f0847d55ee5109a16835222b7575ad13
+f0861fc18c311ff1e7e376c41adc448f
+f08663d870f0af4fbb04d8a6f93f0618
+f0866c3de928b89e3339db843427828d
+f08684cc8cfb7af320d3ca1b0955d945
+f087a180efdf5332274edbbc48b0e765
+f08a60383667f826c26a08df096e3d47
+f08af5515f4ff6d1fbd5f366c481a6c1
+f08de1bbe1c03c5d015df5f5aeb083c6
+f0906a0a6e1d220b0460db53754c844b
+f091219c8e290618a83591c658068a56
+f091c4792207d40442cdc2906d0f0cb4
+f09254a80fd7eac9afabb07ff9738035
+f0932095e782fa5443490b7906a45c1a
+f09327c01d7a6affe753b0349402c747
+f0949f528214c17da4096a46ed4357c7
+f096d4fd3bb3591f012956bacb365853
+f09b173c5f03fe098db2ba689b69a448
+f09c5c300d0040aef9b24f6891370f22
+f09dbcd0f3c81917e289e92570e501aa
+f09fb6bf7c1eb382abcb89100507bb36
+f0a1a98d5e1e7455fc6780b983def29f
+f0a1fdc9a8070876929127c3d384da70
+f0a390275f62f9dc1177c46f9bd057e9
+f0a5378f4c2022b32cbf70f2af523a4d
+f0a543b55795dee0a8411275e6018d13
+f0a9771358e279aa4ebc022ecf2f85a1
+f0a99cfecb39132f469e4fbd9fecebbd
+f0ac18af2421fded1e82a67115ad47bb
+f0b147a1b6e8f84c86c1e504f7c833de
+f0b330ad5106ade9f9fc0a309c9020ef
+f0b492f40e9e5ccc740429d3efa9a814
+f0b4dcdaf08deec0e97e10782f79afc6
+f0b85152dfcb12045a78055964e41da0
+f0b962d451880b5f7790d8c63e2cf366
+f0bf94da47108e7073d6fe3334441eb9
+f0c348bc2bbe6ba83efcd05f561be887
+f0c83965f8c42f4a4094d4863d8c59a9
+f0c9eaa80bf32654382e3878c3645bb3
+f0ca8e319b3f1dc106ac3b3e03888b14
+f0cd8b246849b00e2c45cc8c777a9236
+f0d009a588006fbe6f144fdc53f4ed75
+f0d06ccffbb415774d9f4456efcc8534
+f0d415806bfa38167b8be56851e10315
+f0dba299bcf1ba64ac6654369945ab5d
+f0dcbe5600bd89f84a8ce982d827d5d7
+f0e067f769671a888ccb728a046a6c1b
+f0e1d457227317338b4b2fa0e09fc720
+f0e29708a7721089fe854bdfdabcdf6f
+f0e462ecb32f0ac94df3598294aa4182
+f0e5417eb82ec5047af1681afe47fc28
+f0e782348d82f7d0167393799b7b4d03
+f0e80262f02ef2e0c7effc269da33e9b
+f0e95565c838a1e5d7fe80dee21d586a
+f0ea2d06c9242755376a3de4315c8540
+f0ead7fa9d8abe9f2905a81a7903ce0e
+f0ebdba814abc854600c71ea44cd20b5
+f0ec7252ba03a264fc640c25aa31ee3a
+f0eca4761d3b9cfce2058abbe1883ce1
+f0edddcc47937f18b1a68aeec35c7773
+f0eeba02eca4b8ae8a9ed6501b3c801b
+f0f0e4bd9503433674b457a7319f6796
+f0f285bd9b31c8cfeb266b908a6d9741
+f0f3a12379f21ec7ceeec3b8a6b8432c
+f0f3aea31d32ce19e35a9981dd3d92e2
+f0f448c5c07b5d20c86895c50aef8979
+f0f83e33a4bb8c4ad3d7a817d75ac0f6
+f0f88b1e16b60761129ad6de5bb92cdb
+f0f90e7de01c374dd44442f930137416
+f10168ee3198c17f8ee0c2e6566aa1f9
+f1021b4e4d686773624e26cc423971c3
+f10233cfb422e45c80a51c9d5219a0a6
+f103911ac5635e7c8716bf101afe502b
+f103a79412935fa01833d01b6a81c011
+f104bb15657cb4a857eba1846e58d88e
+f105205316654dbb1f9ddd7a41984dc0
+f106ba86083f603f695a30644c7775f4
+f10719454352ccf48f8041cebb44c402
+f10bea1a3623592c343a0f03df3fae30
+f10c80a126d5b2adb318b5a1dd872555
+f10cd465fedaabac0f95af1826c2cb56
+f10d4d507a861dab8c0a0b991c2ba4ce
+f10d5eeb6c7177610c6de601dc1cebd7
+f10d6d267b76821a779cda8cd3f72ee7
+f10e42df74605914db317d308d5ef1f3
+f10f9d6238792d69ec6160c67ecd75d9
+f1109851c70084d703b9fdde8d430891
+f110ce56d7d53356c163bbcd864dc258
+f112ab368ac788d6c7c67effc249206b
+f113be2032f8fef0bec7009c95329576
+f1147c8877beab902603bde084abf966
+f114ca3f7c2855148de4fe0364eb5e69
+f115ac2d9adcfd399b37f7542abe113c
+f11656d1f6500bff4a6cb77664dff084
+f116e5fcadccc6f9cd83c675c6e4e7d9
+f116f93e1062f3066b70b3e114b286dc
+f1194dcc7cff9c8152b384566d6af1a3
+f11aec70677d15c37d361012790713ef
+f11bfe4eeb544259b46dc6c737332321
+f11e9de75a22b6e698c9081d2e0e7bb7
+f121e976ebf3dce5090c9cfe210384fa
+f12303015cca8a5b0daa2e4ae6e2be32
+f1263ab84bff9063ebd053341c4a5b47
+f126f6ef3e08efc0b250cfaa44a78c84
+f1272065d21a99923b758614c4deddbb
+f129159075373f8d823fdc0e1f8d9d0c
+f129c64363c4b9f4aa2543c55f8d0eaf
+f12ae7c512f16fbb4ff4ad130dfd9ca6
+f12b934d385d9dd3e4bb180d1e7d079e
+f12e8f3c15ee15d99433d086b01304c7
+f12edbba01fafcb1124d6e65b7441535
+f12fb7fbd213ca6ec6e39dbc9eb6cde9
+f12fff5b7b39c8bfa156e24f69cab2fd
+f13182afca9b0b21955ad02ba7637323
+f1318abce5af533e9ac1e1cd97941687
+f132d362a2e5881a0e296da056242282
+f133dea05d5df95b16e0b9b2decbe80a
+f134a9cde55ccecd1c9a7e2bf99fc11d
+f134bed6baeae14bcafff07cee69cef2
+f135b7ea9d1fab5781c6a50e37259efe
+f13802fe58323e16281f8212349df294
+f13817563a75e21015c6cff1a4483a36
+f1384a565a67ef1de1c73235190d60c8
+f13911b1e96eef8d0359e66e22cfd90c
+f139c534c03c76fb82829c7937a9ce06
+f13dfd804bacc6cae399f567c32f59d6
+f13e22df142fcb56356f26d05e57cada
+f13f87b03b2b1c5e9765d1be4be146aa
+f1407fede683d782d17bf4f224120020
+f14137cf63cc3e6b202da6aa2590dad6
+f1419ae89c26cc2202a863d8a2e696e5
+f1450de7cc2a1f1f0dd763fdd0fd57c6
+f145281f93d607c2a457dde9b869a270
+f14546bd0999f28a65d519d13c273759
+f146bf4f9a210e0fec9fb69978a77053
+f1476644f4039eae058e66dfd7836f90
+f148e60d1958c95a2ad552a5da186669
+f149b871f706e92281493bde3cca1b20
+f14ad576421ba9b1ffb3e75941484a91
+f14b92a03c3b3aa87e4cc21651aac0a2
+f14bd0ac30c6e9a9eb2648ae4f5fbbe5
+f14bf5f8b5090973a1c52505cd65c0fe
+f14c2feb838a689cc3390191f970c158
+f14c5e1988ca5125598d8617dd4613f6
+f14e104634264c656cd40b7df4f3b552
+f152d2fe84b44675fd10311b4fff566a
+f1535d702ffd1a0d0fa3e9e3588a0fb9
+f15740be3f8881b15bdd4e17d94bfee0
+f158588be31293e526a3c5553d8357ba
+f15a03f9c8860eee81816e6656f71e02
+f15acf77ad329dd4c6b53d5e6f1e7fe2
+f15fe1b168d5200af832518d9e974891
+f160fd14a296c7e4c511621351992554
+f161111bfe9eac5da8475d85024d2844
+f16229f0971487e39d99af28fb437ff0
+f164ae7d2ece76afcad0fc6e84d89fb0
+f165587c2ce755b7b43924bb8b6f1144
+f165b3d0f9427928354903bbf0f683cb
+f16721c6a6f91e291c9948aea06c3bda
+f16b610469dfeb6021ecadb1dfd1f487
+f16d030db47fd76b3356dcb7df199efa
+f16d2e0dee81d9bf1f8589f0098b3c04
+f1707c07820e7116d7695df705e30810
+f17245d4c8ccdf0554a4fe9b247eec5e
+f174739cdad911eec8e7d53a08a1925e
+f1751d9daad3c59870368124b25be591
+f17541f4e48e6de7616ac18e588d33bb
+f176dc3829015f5222320ff759b5bf54
+f1775e07c5f19fe28f28a89bc74d2d3d
+f17778a0c1d3bc102db9256753e6b608
+f177f5a6b40f69dbb836ec802a6c36c4
+f1781ecd7dd099b007c3bbdec2289b69
+f17a761a2d2d7d786b453ff11c6cac1b
+f17c9775d45f22a4c6cc93a2aa9054f5
+f17e69c6492ce7ee18b43810aa609e06
+f17e9a9bd24182e07c6e6a639127b267
+f184c206cc0c2e3e86f6d926916f7233
+f18883a852944a13ecece8218bd2f599
+f189b97e9f8ff4102b7320596128b20c
+f18cc5de4298d0a3cfc4acea5935ec3f
+f18e42300efe430ec95a11879a0c9335
+f1904901f3cc38cfcfda204afadb3a7b
+f190883df7bf225f17c7416f3dd7ba51
+f192a105c21dc291a49a4f5cbb861a54
+f192b54c5403ab271ad030e30b071961
+f194ff2fab20b66079085f343c6512ee
+f195f762fd3303671088a2d0876d481c
+f1974acb783a8c83ede8c687a156de94
+f197e0672ec984465e3ccbeebfca23b4
+f198d2cda28d35709f414826be3a6786
+f1992a053a5cbaa18969e4821afe3b5a
+f1995f60a50e96387dbab84c082a3cbe
+f19ae9923084f5a068a44f732a95fe6a
+f19b11caf7602c708f17e3a5e84fe92d
+f19c36a98a31b3e3fba22eab360dc604
+f19cb57cdd8d562ad1524d51763724b4
+f19d3208f90b2776920d28ce214768d0
+f19ed80e5b6d5374d87f56923fc923c6
+f1a19cd54c71e0ebc94f7f6f7e0970e8
+f1a33b697987670f6d5cf8c88183002e
+f1a4a9cee02447b9d8f058349007d3b6
+f1a5322dbaa1f8c5e772244671a0d96b
+f1a5b5298634d9a9d9ee8f39f5c2c9d4
+f1a79888b847ff56facb5e4926b32ed2
+f1a84aae6266f5778225f99a5e04c90a
+f1a95f559f3572ad9a1f58f663079e03
+f1a9f503d1781cdd71165ef439bb5eb7
+f1ab4a43008e2813526a8d4d632a2303
+f1adf33c01078405869c0f45577d773b
+f1ae51a6fb0fc7fb09f168afba1fc8e9
+f1af3603932aa211b42c60a7f5be7f35
+f1af4b1005c05f2a685ff11d973ba2cd
+f1b07ba9501bdcb9f751e027031a77d8
+f1b290f57ffc4fc2a709082ccc398ae2
+f1b332fb596adda7d5b1abd055259640
+f1b4347b938f1115eab29811802f4983
+f1b668333e70d0c25c8f5ad0740b4d84
+f1b69054ec8bdb7aff4e525223a93ede
+f1b87a1636410db3a7e894fa5f6d9b6e
+f1b985862e4fed1c495dd4b068270243
+f1bbb09e203651c5ad5406098ea77695
+f1bd7cdd4dc275ae30438327b135a7d0
+f1be4a15a7cda0eb1298d9b5bde8fa04
+f1be68315e1679728bc7294b50d50440
+f1bfd0e177d439e8867739a63446d1d5
+f1c112e9d0fbb8d08879f8d5c8eb20e2
+f1c1ee731a5e9f2e90a9ba8a80ab0cd8
+f1c3542880b640644b218da6e358e2c8
+f1c3f56c130b5eb1365ce4ddcb52ac7d
+f1c7c5177f134a1f5ab54e098f94e941
+f1c927e633aa3f2b6add8f30453839cf
+f1c9d617c02353877074b79ef2c5ff31
+f1cbe1ee0465c29b37d9426787eff1b8
+f1cc2d37c5627907f36a7cf78fcb5e42
+f1cc7bf6bda34a6796c05e8b962ee539
+f1cd2c47dd6a2d5baab10184bd54112f
+f1cd2c770dcc04c50bfc9d07f462c279
+f1cf446c0cdfa26cc44fef6931ae1581
+f1d0b77970578349ac29e7644e0a90c0
+f1d1415fc0cff2ce1bbcbfc47931d9d6
+f1d23f967e84201a440065031c9fe3bf
+f1d28be22cf1eab7165ad949c4177fcb
+f1d3ffc275327f8ee8498b0ade484e9b
+f1d550e7b25df51154c7620a20f9044d
+f1d793eb2a0be53ae096d0b1780f57f8
+f1d819018d5502e2d08837edb50da392
+f1d8e5becfbc39c821e71b8c58bf3ec2
+f1d96952a2b0837e56a1ca72412ca984
+f1d96a425c2ed1ef42e7093221f25c79
+f1d9813a045742dba81dd7ea92e5ef14
+f1daf2469d620c400f8c6f8ab3e7667b
+f1db92a12d26aa9b6121a0fa201ea531
+f1dbbffbc37dfc2f5cadf35c3301b41f
+f1dc8b926726d45586dcc27ec9cefa00
+f1de1ff3b3d21d4f79673ab36b37da26
+f1df59f1a9834960889cdcef79d070a4
+f1e00bb3c1219aa67d8013df8f65b57a
+f1e1f98dc39f53e455f13feeb3ffc38e
+f1e4975bb58a8c7ee06c70ceb1049245
+f1e4eb404a51a446e9836b9319b9fea6
+f1e638bdde443954f52385fded5d6964
+f1e65be72c76a0a47095975326e55b02
+f1ea6f744baa4513a5f48fa8fbc77cfa
+f1ebd83cdbb1e67a3fc3b1af1cc54094
+f1ef4714a4f7ed212f8b05f7d9a2fb53
+f1f5c64ff4b4aa37b84c08e3d790f40a
+f1f9bbf72c87a222d63da0503f37acb7
+f1fc6d3fd4cdca6e420dbc41245a8980
+f200f3f87b3543d44487448f868cca8e
+f2010079404faeb9230b02a28cf3bf48
+f201457ea88831c9aad70993e287de4d
+f201b5fa222fffb54acffc94d1bf6992
+f201e1203ffa459965eedcb952871018
+f202bcdc9876eeb2d0f629e2c3db53ae
+f203fb7a7d2e7e6a877d306b97080652
+f20401967ada769253ed79280b285788
+f2051c78f0ca5fd0eb9a05882d500733
+f205ecb46bafc16fa0aa18a47dfb6727
+f20785d9acc2c2a2a939f8e1c571047a
+f20797005f0f440a7df87daea8c6d957
+f207f1d22552d337c4f906e912583115
+f20bb80c2b30378d638a4536168ce5f7
+f20c0b044b58924152fad271a0e808f4
+f20c14c4c98ef20c2355bd09eb208a25
+f20c48438b91cbb64a5afb31506f362d
+f20c6de7a7b545bbaa497e05a060396f
+f20d6a52ba6dc4bcc2025f5f74c248c8
+f20eb89cf4f45012f39fad360297462e
+f210567c2723d495bdffa1cd3d9461a5
+f21233a554494402309a89b99419ffe8
+f2139c4f7e04a446d73ed7292ebf6d47
+f21459c970c51516d7c82c7380134e31
+f215eb391d4b1ef8c6a27e5cc51bef90
+f218ff313ba0902454d85ba7da578af1
+f21aba846e0267dc347e2af751e7c81c
+f21df341a78b8cd8185ff04765dd8a99
+f225b925c3e4f22832261478c455efa3
+f225d12e9913e5b6ada1ce94b13d6276
+f22614dff995026ee77a326918ce2c7d
+f229af7ef3124608102a0ab8038df711
+f22a1b02f6e1d958dcbf03d7c7226ba2
+f22a2fe424aab20e1281093794fa8c26
+f22d57eb77a82e3bb5971703abfccf3e
+f22d638f427c06090ecbba9e941bbe0a
+f22d785f05a9d164e0c8cb8832cdaa4a
+f22f98e4f2b6d6b995c5280a4e137a88
+f230834ffece5b42237956addc94fd5e
+f2322489daac1b16efd54a027350653c
+f232ddb13ef2d29219efdc7e0b6f8313
+f23303df76fc091f2ffaffda9eb18d09
+f234cedf0080ca3eaf50c01369238026
+f236167233204bff1df48e965f1fd7aa
+f236b94bb478e4290f0edab5e996282f
+f2391864b5f084c92d696d6e315fd012
+f23a00e464be5bee08d746b632214f67
+f23aaf7b9ac598b56a30e528c2204a00
+f23adcbe8f76dff9d00fe417e2ea4f0a
+f23d9161b55b7a3febc981f95d2ea3ea
+f23da810fc7eac0680bcd6dfc624df67
+f23e91a9a8e67790d038d18de203163f
+f2419ed5d371e69d6c96d3e1057a4ea9
+f242cea7f8cc22b7346875222fd82ff0
+f2432c28af844826fa165909c7b44737
+f243fff5dc55575824cba54cc09413b5
+f248943404b018107fcbb92fe891dc97
+f24ac09bd8b1d20cb4987ed33897edea
+f24c6ee5d868207e3fe543e129238be7
+f24cbc0b1c544d231ef023663614a6ce
+f24f193a1cd6ff28881193d3bd649c3d
+f251a26e23e7bfabca39e7f649642f9a
+f251a2c8ba136cea440d16230bdd86ad
+f251d96bdaa6558b2a7adbfb05a5bc72
+f255490e8ffbde3c0e0e16ab40ee6583
+f255fe91105a018f4a5932d44f301f6c
+f2583ad0d9b8a0d00ad5fceeb8ad0c13
+f25ba4db79f834308c38d9792c8da000
+f25c7c5e43d09e2068e21708ce42be6e
+f260f830ed36c0f0e439eb0572feb89b
+f26381c21160e66374c69ec1335958de
+f263c65a06cd049485d9dfda788fe8eb
+f266eda1a0fee6156b9f98a913aaed61
+f26700ba690c02fa9cde5f681a070c04
+f2685a66386974bd519fd3db3cdc76d1
+f268708bf1fae25ed35f0e0c0306c35d
+f268c79e17910f9855bb3cbcc1e0a1be
+f269babc272b4f848234a50f8b179046
+f26bcb6a29fd5c9cea50e48d43581178
+f26de3f8372908a1cc5c6d6e6843a771
+f26fab95cf53b4a3a4d26f48f1bd7bbc
+f2702d449db609d98a693a9cf05773f5
+f2719aa375054f88b066a89b96da1145
+f2739df1b3313652449311fc31534336
+f273c4899ae2f31b27e9950b066e70e3
+f273c706412d68073d762c61c33ae697
+f27462f0a4f6ae27ff7e2db8adc55c8b
+f27bc8008cc77583349797e34ff5ee18
+f27bfe0e28c7934424b9465c5e00db91
+f2808808f00e00b8c48d9093c789e881
+f2818e3fb162cc4b1b9ba7d27c50c942
+f281c16724d1234d48591da20c6e116a
+f283c7d143a72288491f02f6669b4a48
+f283f93c1dbe4f1ef3f37eaed2498bc3
+f2863963cb5d1ac4388ba25c67aceaeb
+f28ac0444b9811d7fc89cf0b5fa438d3
+f28b1ada4e7b5af2e9b946c660eaef39
+f28c5910b72d17b52da4990e64db0632
+f28d23646da6dbba7b2e4652b836b436
+f28e11551b7e865779352b76d19adf55
+f28efdb343696e6287651d097a34521c
+f29079c106ab4f54072eddcc8548ef52
+f291016adeffb73798fc9ac648ef31ae
+f29356d6d58da4cf8bf355ec46c1ce0a
+f2940ec3e5bb9817c473153c77cb8f80
+f2947f97e7e9837b1560ca69e5fd3a42
+f2969a7a5ae0d5742954eaeb8a873888
+f296c6422933d672e2ea5a5935e1d28b
+f296c835ece7bcc4ea982d8765ed0dc0
+f29759327d503f3b9c1ab934dd030440
+f2975f37b3fd9c0b13eff4d9614c9923
+f29a423eafd147a67ca98b2642f1628b
+f2a1472ace8e39b3c4125bc148a56e17
+f2a3f85b353b963c33fc9ca9c993caa6
+f2a590b8cb693113f29a68934cd252b4
+f2a663366706da5182812899d27b27c8
+f2ac7ce9f84b0efdedd10c738d315074
+f2adfa37e29e427b4ba96d812426f907
+f2ae09eac2631e46be73216a2a2430af
+f2ae21b185b1bb3cfd152915b3877330
+f2b0fb51dca5b784aa52ae841ac8c29f
+f2b1a145af44bda3549a823a5432d4f0
+f2b1e9edf92a4e0d6b240ff13ab95f28
+f2b32bc2364247b1e3388cf5f61a14e6
+f2b350f241a9869ef86feb3d5c94bfdc
+f2b404bcac91b478bd7243b8200938f0
+f2b7938d4fca783715ee99a631a97b69
+f2bbceb0d1783549bdf3dfbff520dc4c
+f2bcfcc15eb10396d1f84f2fec84c3d3
+f2bf5eca403b5f70a03055eef8d54aa8
+f2c378c80a019932ab782d14167796be
+f2c3c6edeef9e4385767fa27d5eb0da6
+f2c4ae2dc7c6690681bbaa7a1c008cd8
+f2c54ca5d89fbd1888a2ad09b3db8270
+f2ca9d8450d61623f3f8ff9343f7f994
+f2cb074a1d3b8acf0cd7dcf5321a4ce6
+f2cb7c8a1156920edd52ec25cbb06fba
+f2ccf7e6b025e6c88d19a55c27baeb27
+f2cdb54c9ad935c50466ea6f4824cf4b
+f2ce5612b39cd50b886828f426309bab
+f2cee09b526aeff414f91b5482f9ea95
+f2d204bae8f06bc27108aa8a97126742
+f2d28e9f226a4dfecc5261c10bd51b38
+f2d4f32f7fad60e70119ca3225ca1e26
+f2d61a33c1974962a604cfcc5b175a45
+f2d68f9a456b43acb4b6d6c3d48f3528
+f2dba92486d6b0dcf549a3c27f0f1b3a
+f2dc14e873d73403334d7be4598f90bd
+f2dcc5b31a7a3424ccf8e8a3a7887352
+f2dd0a10d9aff95097ff73e8c43ed484
+f2dd479dd240f0c0043db63b508ad78d
+f2dd96e21327af835f5bfdb801fa072e
+f2e2ddf530418b008bcbde2abf486af2
+f2e35bac2bb19cc208dd79e3d7fc14ab
+f2e36eac77d65e0f97f4577a3fe2e3d0
+f2e94a573ebc6ed8f695ab4baec16eed
+f2ebf1e6c3b8b5ec1512fa13ea281515
+f2ecf1d3fb012931eda5e77a4085ad8b
+f2ed78e67fde3b42e3d346393fd49072
+f2ef15f4026d535458f5ea6cf0a320ff
+f2ef61644d0aef4f97564f51294bea98
+f2efd9f2ce308dda6c40606e22530482
+f2f0b92f4a856b51a166b681df6150cd
+f2f1d167f331ea47af7e25e4d567704e
+f2f29dab2c65fc1d82540cbe0b5983e5
+f2f324a29d89dfe1c3d5409dee46a8a4
+f2f4d8b981780d9e7a7fa47af64c8806
+f2f6ce4870f107344d3b05d5d93d41c2
+f2f735638785f8a3dbbdb06992eddc73
+f2f883c3d72cff4192d72cc75fb6e538
+f2fa42c4f6f8ad2387cd52dc0b388aa0
+f2fadd4ad68148ed2f17a7169b240155
+f2fb2aa71a5801e8088d7cb85a2b079e
+f2fd1f7936cb2ecc6f561c64aaa4f3f5
+f2fd69bfb850bcc66eff341f8d470d5b
+f2fec79b2841eedebd78c9e633422465
+f2fecd02b879757a777571c3a1e5fb94
+f2fed8fe8c4b9c629f6eaf72b3db53ca
+f2ff42c8f0967c9b6b0a44f5489e74f8
+f30053aad07f5db4c58841bc37b80a63
+f3008091d4569c490dcab88dc83018b6
+f3057b220d36849317246329ca65857a
+f306fd3df891dfff360a2db0ed579ee8
+f3076b19ebe2863097e64e230bf4a958
+f30790494987b79b35e80fc54e6b68d1
+f30881d6cc265cc526a50a9854e2eb47
+f308c8c8995cefb8c72a930eeff62643
+f30bee08f8c47283714465e4e1f2a1d8
+f30eeb1c931e886cd766bb82437832cc
+f30eee63405033b888c901e8c3fc1797
+f3116eb2a18e29e3d6ac0ab36a9156cd
+f317535dcb1c1fcd8d6e03e79acce760
+f3185e8377e70be784855f04906cfb47
+f31b692c7992bfa474b1b106d223dba1
+f31cde1944fb770c870b7e4e7c5f957a
+f31f0d0d1984c5ece3e673370f47339c
+f32325045d6698dd90d76eab0c74a1a8
+f3238186feb50539b86c4df14885fe80
+f329eeabef950dece9dd6a65b5b64351
+f32b88838460565af0d6103f598b3603
+f32d3ae9421adb8fd510c652cc772f38
+f32db44833e2a0a19638e616068e02af
+f32e19f0a4dc2ea062a686e9fd12ee44
+f32e4310bbeb991c1cd3c08a2f49e0bf
+f32ebae848f69bb56cb5cbe3d8be4449
+f32ef8deedb495695c4d799294f10d55
+f331fe6332293f6b237cc06627528e1b
+f333010223b0fe9e543ab0936f9593f8
+f333a9315ef2e30e80012bf196f174b5
+f33662146458234cebd658471e4c2d14
+f3382e3ac5b08557a07655c002521b6f
+f338f12bd6ba576174a8adf215914260
+f33b1a4e519523c43c6ddcbf265b5f0b
+f33bbed475d6e2ec26ee27253312606d
+f33ccee674eb9c6402cd410ff8785ad8
+f33e316554b1ea2f99527f0eaddb2a03
+f33f3c97cbe11a3633355e4a9294f678
+f3414219ac2b3922ed1a9b8860d58987
+f342e46da8731ea5a701804e36a77185
+f34337710006282f39dcabc8b2264adb
+f34512fd5011d30de80a0f08f1edeedf
+f34673f114d8c81a1c66f5a43830c751
+f346aa077cb84c1da139c96d45c15ea1
+f347bf5854f67ac419e90eec13e0dffd
+f34aff251243a8824dec9a0e57c3df81
+f34b7c6a80b682da8c2bdd4b3b141675
+f34b82082ba25971f8367aecd9abb998
+f34bb5a058264b850f99cd82a73d29ac
+f34d0708955198a594e49b9c620525a2
+f34e6df0dae19328611a0b09bc3656a7
+f34f51ab286de0fc6ad79c123280a71c
+f350e609647f638d01ceba782b3c50e0
+f3519a491550beff36e35d14bd260e4b
+f3539e7bba67d49b04903a35749db6e3
+f355009f9b60385e325420127bfde79e
+f357b65c7860af98743656aa92c5c304
+f35aaf42c442449fb90fd41aea4e0f7d
+f35b45c5ba7f5af33c864b13f670c8a9
+f35d387b3a2d000aa3a3a91fbdac863c
+f3600ecbd0ab1c670e6306137a8d0354
+f3610c03ed0d5b2e436bf646ed21a969
+f36307367f0f68e8f97f5289ddc49742
+f3633f2e567574cb92c5b4860c23486d
+f364351375d6f3bbd4ae8a59812f909f
+f3651fe5f1bd4d38af7162e1c04be6ff
+f36529307ab5bb434941ab532a79058f
+f3659220ad8f4e2ed45ba58cec9f1745
+f3667d7043177d3fa7193e583c02c12d
+f36961460bfbe6b79895a1ecf28d4d8e
+f36a2311d3b5c4fcf108290ef7d3bedc
+f36b649af03a4a0812a2e90a88771894
+f36c0211a841ad53d3b5893bb1172571
+f36c09646468c66806311080d1b0bd5f
+f36dfe7e6990302dbe4fd54e796d0ec8
+f36e3b851101c072f57cc3ba7692c76e
+f3712ccc5176e63c5ecfa4071d1f10ee
+f3720bc6a99fa9d82e3fb8aa96a3c7b0
+f372b016df9d207bf332c4b4c26f2d5f
+f37353402eb52bad67840436945c4d46
+f3741763fa5d123d98d3a3dd72429bcc
+f3760d8cca250773202f7901f300b36a
+f3760e30759fa17ad6810127ac5e2b8c
+f3766198d9989b2a67758c9774ca6f49
+f3770428f901c2786ba56dcc6a835b97
+f377ca84ba3f714db87f309c15b5d860
+f37886c16963b555a5cb2421e46d07a4
+f37cbdf0d944cfbdf838c4741e8fbf84
+f37ddfebd89f6f0e7eb2ea3ca3ee999a
+f37e271c9247c60bc553f951b426b213
+f37e3cd57a4faeea80db52c8e0d61857
+f37e8642b2bbb0aa8e57c30182877c4d
+f37f548e4fdfd8684e2d90face6f2a01
+f383856f5993c081afec37fa984b3bc8
+f3850c7dc24f589bf419085dbb43c4a8
+f38570d6f2aa64982349daf790d94331
+f3874ac1a3236de7905764f2a3f63a9d
+f388de13c14ad0d14573305ada342632
+f38a52ffc59012962b45a0a3cfe61e32
+f38af6fe429b4db4f7b4c69c803c4d9d
+f38efccd22c3adb4011970233bd2d0c7
+f38f1b14936555428f006164542808b2
+f3901743dba3e9f5b514dd752c7ab524
+f39075c48853c17a65316ba2ade23c0a
+f391c7e780ac080b653aeccab717f067
+f3967d41fb95ae9c10a7d17baab3bb33
+f398a5a61fffbac4bc42030bb8f52beb
+f39a157821d96c25af5c6c6021f206e9
+f39aee193504054899561cc3051896ff
+f39bbae14a5c758f77207a1122fae1e3
+f39d8906277deff336e5da0374f34953
+f39dae2977c1658d2f30f54db58c5ab9
+f3a40c96f661433696aee365b3381c9b
+f3ab4c679cf36fc576b3321a06ae3399
+f3b0c666754fabe5e045f2aa26c372cd
+f3b0f36d45d59127d1c548c8618040b0
+f3b26ec3cc1b2b6757e18c73fb7673a6
+f3b4ea042e29cab03523b24dbed5e4ee
+f3b50a534fbdab07f1913c2f61f00bdd
+f3b966fa0977b968c88ab04ffe38a4ad
+f3bcded630a5659c39b17989ad5ddf9c
+f3befa984d1b1b7c6242dfb203c9b93d
+f3bf23c43bafd5f8fc5c0aa318707336
+f3bff496d498e07e3a3af389f85b4073
+f3c0c53905002edd6d78d1b49d459a1d
+f3c24f72a37bf42497984f776e3bab98
+f3c2701c6140db301b2d824433544017
+f3c7a87e4f2b0e035db526518f89b502
+f3c8a7c8d280e51b8ac6a61e5c2b2798
+f3cb00da58ec43c8089f3abc4a7a0ab0
+f3cce8a152ddfd2697011ae5524142c9
+f3cdcfbde67a1ab3254e78f6d65f0d60
+f3ce5381287af3388b9b7e21bd6448a2
+f3cee695ac8c7881a211cde849bedb5b
+f3cf08203fb9b17f00ce9b723744031c
+f3d00b027c1cd7cdf43bd2fcf9726a45
+f3d14d755fb0c1a57e954b6a19d7d314
+f3d234431f0c88521f5a7a5734b2e216
+f3d3392e0a16300d354f0910fe29fe42
+f3d5e00ce6bdb0e18c04171777565f8a
+f3d972d7e55fa513c1716b393822f272
+f3da13d9a1c1e84623e02ffcb4c1a57d
+f3dcbc0eba8f53858649772860a1c669
+f3dd3fb238551806c94433b579735d24
+f3df70b992a5d82e0a7fac86eccdaa5d
+f3e5788ae4a8e7f4ae6e7a5dbb551405
+f3e61865558f94343bc288ee8c2b2ce0
+f3e7e26a502b46b89c5a4448d2193572
+f3eb4b9e25e3001cb25b97b21b8fe5e2
+f3eb58b4360dc18a20d5741f3e29b47b
+f3eb80d8d6629b414681e24732b41cf7
+f3ec0d2ff2bae9c61064a8b35a6d17dc
+f3ec3f5f3b18be74d3cd8b93f690f14d
+f3ec701bcf106cd5c59e64258d95f590
+f3ed750618add38c0174e63e9f6a7dd5
+f3efaf4df8b72ddab0bbcf57886d8cb7
+f3f0e3e8a00a9b5af2a35def80226827
+f3f172b4ddc276e2cc30358c16dd8c46
+f3f3d99513cae064daa88630974f2587
+f3f5dd7c9b7a45349ae3ed4b6a18e18a
+f3f5f4530f8e96d551c530397c95f97f
+f3f8274c31ab468d29861d2c5fb18feb
+f3f8393103647db03067a71761597f3f
+f3f9cdbb9a94f959f09cb42331f05aa5
+f3faa9315f04f4c1014d16e37cd3efd1
+f3fcaaf1fe41ffc78f604120d9a52bd7
+f3fcbe6dfd593cc171a0e09599e96adb
+f3fe3b68a04507a302d9255067a0785f
+f3ffc49f18807d6bdd2822abce610302
+f4006747fcd40d63209db616dc0a4f28
+f400ac76977504fb895507f93eccd280
+f401bdb97aaa8018944df2a84524b037
+f403865ed0382196db7a18c835c5764e
+f403ce783f8127dafed6f5bddb271899
+f40562f6e4b52a707e42ea7aff9bcff3
+f407e52bf0eb0da37455458a30f47f1c
+f408d68913d23e293d055b7ee0e5a276
+f409c74795522e756ec82ea915756353
+f40babcb06c99644b35326b6b3040822
+f40c323320da99910f0d7dbd5ae34bc6
+f412bcce673022b39b9d2f9dabffbbd7
+f415ee156d2d78573a19450e703a8994
+f41653b865575aa37fa3edceeb97c421
+f417ec85a9ecbc9e1ba56b3dd8815739
+f418538c955f8ae706409feb7475b1e8
+f4194872ed5aa8c7834a32360678646f
+f419767d0d72051ade7fe412eabfe690
+f41a7423066fc3b802194c12ed65766e
+f41aa6d1721521bd015aa1ce66e1d8fa
+f41e8ba83a6e7c5ffa18faba1f2eb53f
+f422374beb0d19b781509c0c12807de9
+f4240a41aa730f6822ddd4fc14ff9b2c
+f424c6bdf6dc7fef172009ef22e1721d
+f42602d0ab2521ff09db556a40a78cec
+f4263373bc7296b0c9abaeb478bea970
+f4271837228ae1b9617b6889d7a67d84
+f42a07cb34d521644f2382d9d94352eb
+f42a35fc85590bc39cb8b1e70cc0417b
+f42a63142943a03506d4c766748f5b25
+f42a93574357110c062b534574aaac4b
+f42b017e158a3529c72b35775390e227
+f42b245c3a20a68f269e3514a2c5dcf1
+f42d9e599b07e13418dc9d06c40922f0
+f42f45b3a01f4751a9699056beb49529
+f42f48585ffbd0d8d154fb4da3549864
+f43244a199acbf0165744dbb9eeaaae8
+f436204c3129a8f88e5ddd75d3aa3119
+f4379e9453a4b5e0ddc1c7a1f827b4b1
+f4385de801b365a756346968cb09668f
+f43b0a557dc3564b86aa904b4bd5cca6
+f43eb02a7180e676402026f284abddb0
+f44031589194816c9d58939b34b1f7c8
+f4438df1250db346250c1fdd9100c7cd
+f444f5bdbc3af39568c96a1c0e0e6f4f
+f446e3e89d03bef154fac7a62406deae
+f44718253530c69cd72465c0def246e7
+f449d81c61acf2fe6f5fe15d6da72805
+f44c0edf76848a04669748fef405820a
+f44c2c0a8443bb4d759e275d6e39a03c
+f44dc0898a4a016f56070cdd45e77c89
+f44fe855c202b44f8847aef67d60f0e2
+f45175f47a09a9853815e9e749c22176
+f454c9727c0d7de722b5d37ee17aed7a
+f4569de6fa32a433701f3e5b9c3e2f6a
+f45ac82d078ed397208fc1e2ac935066
+f45b28fcd1d3ba3df549ba33f11f0a15
+f45ba296932e7ea6ceaf57c43ac64850
+f45bb2a5befacadc748e52b5b52ed70a
+f45c10117b233746ebead2359bf1ef33
+f4637ee6945045cb2c49571cdf4efd80
+f46486b9f1f3045b187c69466c30f6ae
+f465c55568fe42a5418769dada6c06a7
+f4666e0a556cc3326f5bf9e3167f5de8
+f467e5e129151a994265b78830727346
+f468dc953680218cd507987a96efdb59
+f46ac67749a0b1bbc150079fa1f99ead
+f46ced9a04cba1ea00da74e67875797d
+f46e6ed50105eb643907a98aa3975c72
+f470c9bb531b739da461be6472951417
+f470ed6c4221add74465de13e98f88bb
+f472e565dcb665f5d06a3fc865355688
+f47513720c9b42029f70bb6d0e0fe142
+f47534a60656c8f9dae0c34dd930997c
+f4767411f9c91e383056580c8d7345f0
+f476c74a98ca39b0a6de981d97562dfb
+f4777c5ec6aa466fb8f921e6b64ea02b
+f4782a5b602bd6325bd5452f5dc8d911
+f4794aa7fc2b844a96bb2bf1a09a48b8
+f47a0311eab7aa9ddde46cf326e24f8e
+f47b3da133075a559d8484fd417599e6
+f47c9229b3c19e99bef78eff24a698f9
+f47d463435efa4a438ecf091d87cdb84
+f47db00ec563292f0ba196b047e954c4
+f47ec9131a94a338d5e3184f9005b27b
+f480bb85757affca9b347784b7ebe4a7
+f480fab9a90475b30e3bb8e427df689a
+f481312137481cbb0cf2e31a5f2ea517
+f4825c602e88942559f1a8bd7eeec8e6
+f483270d374eb17bb5654ab84523443a
+f4871ca966005f3fc27aa3c3bb373ff8
+f4894934b5113a5fb04e4d419be1360a
+f48a00fc89b57f5caf4c5a9e09be5e57
+f48b5111c2c4d75fcf6375a1fb19fe0a
+f48b91c087890949427cbc275afbc857
+f48d0d841ecf92056a8146f61ae06f5e
+f49091849da1c82eb0441bcc01f565e1
+f4913609cf70312f3b64e6081e09bd23
+f496de538814464e74cfc62c4391516e
+f4988ac8f25295ae427cbdd3957f3e71
+f498ecbf74d8b2e5089745b60edccc2e
+f49d403c37219788fc54ec0960198cc6
+f4a1f5b13e76372c3faa843da13545aa
+f4a2b1344dea8fe418a23d28f76f7ae4
+f4a5369e5e3075215251e605c6127a34
+f4a76629f61383c53dc23cfcaefddf74
+f4a8ffc6e7d46309eb2733cd3fe1d275
+f4aa3a047d07d0fd5fe49ce0c452733e
+f4aba6c73ce579bc8546d00c3d33d3e6
+f4ae8acdac5c17b0c844abf6667b8b40
+f4af9a15cb4758255455cba12b5bb70c
+f4b05e85d16c97b36f31ecc6a0d8d4e1
+f4b1675a01512673fe929336355e3cd4
+f4b26813c954dd79422746442ae364fa
+f4b29e4b375df871400ab1f060a96c85
+f4b2fe709893e5343bb4ef957ca0e965
+f4b37328fcaa67c714cd0c218c649540
+f4b3a09d630f3d54301993a53e4b44a5
+f4b6d37437d6f065ff4f0669ee03b1d7
+f4b74b2d27470b69978f0827d9767628
+f4b7d5e7a39e83410c698b525b124c9d
+f4b981ad5c3c05d7807771688a688b04
+f4b9ec833fad6a119cd6f418e030896a
+f4bb276b31acc783b99bb89be6caf53c
+f4bc26f6f1e01620c7d84b57fbe6f014
+f4c26b1874b33c04a73d7cb8665d2954
+f4c27e5eeebc21ac74027f036338537c
+f4c2d1c8420ba432822968bff0d11ed9
+f4c37681cc2fb17c2de8cc0a12b85670
+f4c64ed80653381f807731e806bce11d
+f4c831b08bc19c899d3e881f794dd290
+f4c899acb1b0a86f9e097e9e21de185c
+f4c945cc1339bc9f683ef02c940e12d2
+f4c96d0f6ce04769ea14bee21602a516
+f4c9c9ab54aaf5d40bee3530b589ef17
+f4cd6c540cf0360bf5f2ae1f882d922d
+f4cecd509bd1230a283e70e8f191aeea
+f4cf3984631fa8df37a0434379fb2e4e
+f4d1186943a42747d980279c277cf14c
+f4d1e634d9bd563caf65c71f8d37e1ad
+f4d368d943e2b7fe2831734f3b4337da
+f4d4214fc1e1c0aa3d4e676e362e20b0
+f4d4cafe28990294ddf0c4e213d0bae1
+f4d55a9ffcdfbbeee0b41f7db9f9fb33
+f4d59317bc07a13d16211f2064dfba50
+f4d8148e1aa0f25d0e4dcd2334ad0a86
+f4d8ddab821d382cb4d1787bc1032d0e
+f4de8297456f1ddd39f9489a508fe53e
+f4e1270f665e89fad953ec10ec7b6636
+f4e135a6b0566d24e78187448c52e957
+f4e1e20d642f0954305cfdd4a9509006
+f4e35382b734e979628729c6198b5613
+f4e53128aeb56513e8b513ddc3681203
+f4e548a8268d7894e7d1d61fad86a8d7
+f4e5dce15a3e84c5415c05373cff3069
+f4e7c4a849c3bf72af14c796b3062a8e
+f4eafd4666b07855464bf3564df9d2e3
+f4ec087f27a26d54afe1b0f99d4e74ab
+f4ec782f7981aeff796c7a57125833a1
+f4f042dd13ca04604047df89e285801b
+f4f2570be89295114140396cd3fdd9a2
+f4f2a54cf85091076da9afe646c411a9
+f4f583bb5a19fcbdd534947aebbc43a6
+f4f5a2ef68d5edd3f1a655b48806998a
+f4f63b59a87e77094348edde3836562a
+f4f6ef98bff37d56e41ee562954fa7eb
+f4f9d99b02d81d36b971ba400c5dc77e
+f4fd7d89305e6bed6c1d4928919a1896
+f4fea4c26b8796d581556defd96026f5
+f500dea181b256bd8d912ab78f97341e
+f50151d4be8ca575714daf84eb1eda0a
+f503208b469b945b9869a7d25b8c9e72
+f504c9dab96d6f88abc1b0febf9f2ca8
+f505e48a3b9b570c1211d9306b5b9a91
+f50772c610f23a9ab4b759d0de5cf95b
+f507ff828246382126524b4be5e3a6fc
+f50a508c2b525bbc8b5a0f6a9003f801
+f50ba62feab2d609202eda26d4a762c2
+f50da1aa3edc02f7d063c48c7f4f870b
+f50db41a3a7dc4a9f4d90383f70363a5
+f50fdd90978857b566244995da51696a
+f51080a0b8e44d358390a75aaf076936
+f5110a23f8b746d3b3a7e0f84d07b347
+f514bdeefd0791ac731e2c0d86e3c7f2
+f51706ad21e3dfddab4ac9eff34c54c2
+f5183b91f3182a7bcbabd76eb43b8447
+f5186ddf9668a480ca12e94c06f9199a
+f519a13600a9f499b19a26ee1eb2b5aa
+f51f6a96417b959da827b8fe670a3105
+f521e2aa436ee425c378e687e2663085
+f526e5216827978dfc41951d8dbdc5c5
+f527d7c8e5ffa3afda67f156059deef0
+f5283275f7d5e312bc8bb4380930567e
+f52b587fc6e2c582724a70a2c8035e6e
+f52b7232267f85b27e8f4c14c0d0c19d
+f52b868ff0decb1aa30533ff00560240
+f52c5b227c1cf565508b30fc97a99bbd
+f52ce229d773a4346f21078188d96dc7
+f52cf24cdeb212f51370640ba7309c18
+f52f69f893c4ab0e5554f1ff15c98d35
+f52fd252029ed6cb9e8e7f174e174530
+f5307615ea38db98214bf9fa24ef0ba2
+f5324e2b8e2c447dd5cacfa91bae05c2
+f5331dc722949a71a0b15091c9686d13
+f533eae3ec385fd57f71e1bcf9199065
+f533fa9956e6a42e3847bed3801f02e7
+f534a49c6b232023481613d3e1a4317f
+f535c6cd2ef29afe3a55423de18782a5
+f5360dcf7ff1c8e6fa3cf586c52a103a
+f536882135e737babe9dc5c480b7cd46
+f53ab7453adfcea98148801355f8b9c8
+f53ad78706585b06ac5bf7eae9f78e8a
+f53c71ec17067d03cecd68165c2bdc60
+f541692505e25db8ac0bbfd7cc277d2e
+f5423c1f3178d6f8842d808b5d39f052
+f542b47d00e79e3414cf7767b7a13eea
+f5446018bb5d97bdbce6e56e0e1043dd
+f546b868d8263ba4292c147018d5abcc
+f54a3742d806e4786b3f800cffa58857
+f54b3bd09f143b2824662e310f52b4f1
+f54da2257f292f072d4e6ede11bbbf95
+f54f210519038b5d28fa780c4fb8ffa6
+f554299e2a6df98ec7fb2d7af40ea7a0
+f554aae5791ca8e5f73c9c4ba042ff7d
+f5564c92d08e3d085f5adddba98b320f
+f55709f5febc992545f7b025d648f299
+f55cc2992713c756b2391749ac786756
+f55d020dc22371d1314ed80a9e173ee4
+f55e7d21caddbd10c20a949bb8e6f929
+f560c8a07b34b53bdcdfd11fe40728f9
+f5626f73bb6ab25c3fc11ba2f9fe6975
+f5639c77ba450d7e520a613ba1dc8886
+f565c71e435e6b810bb88188d751a0de
+f5664daf1640f2eea306e0c2926c6df6
+f56670f0b8fc22db2a6d350b73c961de
+f566775b7e5854372d71f0f971330004
+f569605aa7c6d65ca6de9192f48a0c9e
+f569a0a678d408dad7eacf50253fac3c
+f56cbf43c07bd89410cb02bca7cde757
+f56cc61e87f8a314cc070fca2cb010fb
+f57050db3d71775ff4a6c5ae1d02810e
+f570ac81e2f7fd0e9a02499bac51803a
+f571251d7bfe841da26713cce1be109e
+f573a2469356eae98c73045c1d1a92ab
+f577217484a75a1f24d99331f9b568ec
+f577b6fa3054d843c0349cd068174419
+f578a2f9307da820265b680e31925590
+f579bd2266eaa885904a9d5fe5ad215a
+f579d195c69fce03aaa7cdc5e7beed48
+f57a32921d7145a5fe20022d0804ca0d
+f57b293e499dfb210239e0b181dbb21a
+f57c87fffee9b50062335df4a88c2220
+f57cc7cfb0f0450e2e4f41c1032d0bdb
+f57e2e0c5bf2cd91b0bbbbd777a6a527
+f57ef3b7b370b81b93b4783aa51801c7
+f5807009b90c772eb78ebfd938bb9486
+f583a2b000e7aa19c2d33abd62d92d7d
+f5849791119ec54d7cf797286adbba8d
+f5871723fe7deb3ff0baf5d651366822
+f588383569dd5b5edd068b21c57b5d4e
+f5887741541025c54d013dd1b02705cb
+f58901d598d23f8daf999601b2ae1348
+f58d08b736e36e68d792e9e59c05ec17
+f58d8be400ba7a8df88ad40633afe01a
+f58e65f36d837bcfff74a2ff69d068c3
+f5912148a952c0a23755aa0b75b2b4cb
+f5913f21266ff19d85326da29323a441
+f591cc3835d869cffdc1b17870b96ed1
+f5924a38ce377d851b182be3b63a5c5d
+f593127f1e02583fc888fcb8483daed3
+f59329552d6db5a2b3e30f6c977a42a3
+f5960e66ee7a75a8ad5aa7c1514e781d
+f5994435d691e50f81b48b7eab46af08
+f599b176582003d2a48b6504b6e268d7
+f59bbbe14a8132f85881c8e05153eeed
+f59db22d1681f6b34c98f31a441523c5
+f59dfbb991e3a30004ae2bc6ba8c0afc
+f59dfc15bb7f08cb4f2bae820c979fa4
+f59f0f7c4fb29f25549802118dcbd33d
+f59f93b849591b3b0f27f3ee9e5668f1
+f59fe526b7a0885e535f06037265d90c
+f5a3887962ac0d5670f778cd94a9eaef
+f5a413b2ad93af416b1b767fada2b949
+f5a596f61568e4c4321c60b8ca741847
+f5a60195a9abc71420018dc918036449
+f5a7279a306eea13519ba5cb42169a55
+f5a7fa812ac67d23be78c8d8e90b6aa7
+f5a89fa00f66f91374d63260aac8c6f6
+f5a9d6d1bf6a32fd018f5045eba4e2b3
+f5ac75268019496db81c4e5ed822fa22
+f5acb6a2395aeb34b6a32a91d7f3da67
+f5ad4a59c71e2395703823419e1255eb
+f5adf90e17f90a5da3b2a42fdd976381
+f5af2c039fc6c2ad8741b5f788652597
+f5af92a56b46a52cfd089eea27df6275
+f5afaf10706549dd719a7fdedc990ed2
+f5b183e77cf0f00ae9ba96661cb3c19e
+f5b1a55e2a7e87af2d449fcbc96b745c
+f5b1c63d3c35820088e82792088b188c
+f5b23256a1def25d97477ce53d51df2f
+f5b2849ac81b646764fd2adf566dcb3d
+f5b4687444526c5efbc6cbc5c0b6effd
+f5b481cd1facdc5d6dba07b3204966df
+f5b4936502c820799c6374a0df89d27f
+f5b4bdbe020dfd3d400a746d862f1772
+f5b912d0f24ff9c4bec4a21fbac5fb67
+f5bc183f1d2992908140d041fbbe4668
+f5bce866dee9660b7557b5188c275706
+f5bd0a7d974e6dad82094336f31c6b98
+f5bd63929b7ad4f968f38ce8b08200a3
+f5bd9e88e380c042f9d1765acb6b2152
+f5be38ca4433ca47ded89aee6c042c62
+f5bed41b3fc020ca9a9a1293441bea94
+f5bf151cfa1b70ad7a2daf0802d39b74
+f5bf8833b4a22a152e29fd4cd44f007f
+f5c1e570e066241f852e32386ac3cf8f
+f5c58d2b79589a94c52e082b2ade9a78
+f5c5f83c754ec91b5571cf898a5c7cc8
+f5c62310b320b377b5405cd2bf1b27fa
+f5c8bbe6edbb743e4adff048d39e3eb5
+f5ca0c0d17e2a3fccdfd9e83134a878d
+f5ca8ed57a7fac7644fa42b01084eca1
+f5cb591c4d6c711fe5d0acedd87ca439
+f5cb60ac68b2460e60822da7f23161fb
+f5ccbdea3e8967f6d97b546a6c7105de
+f5ceb2dd4351c0cd0f8ffd3f7071e157
+f5d6814c42fe5ab7d0739831b02709f6
+f5d89aabf506714160bcf2fde4e5cdae
+f5d97d5c5f09156822400fee99814331
+f5da7c5257f29e4510b14d468bcd6c3d
+f5dbcc8ebc597acc2fb6cff177bf2efd
+f5dd0bb3b38081d4a3ff7f4ebdbbac20
+f5ddde7ed7d4fd2d8540b350f2b69d5e
+f5deb167ea5cfe2bee7725e7835955b6
+f5e0bef451da7eb167762125911b39f1
+f5e303ed3324cd0ace72f56e4dd24e16
+f5e4de9d1d2463ea81b923d3f4bbada4
+f5e5d14fbd0c51ec7e61c8aec9db327d
+f5ea8a00b617ccc79532c035d43f4de4
+f5eb1c9c3f5d095fff9ede9737a49b95
+f5ee26c33a58f3aa87c772c00e7c83cf
+f5efa2c7ffeb90464a1edc9f4acb3465
+f5f06caf3476dc6357e834dd675b4a52
+f5f0f0d63163fd6c74a3270ecb9f874d
+f5f1737bd8071b71426c27d81f35d983
+f5f29d086e3e64bac4a8efbb068c6109
+f5f3a054181995e5e9e221e0e1ae978e
+f5f4ecc1c089853c8e6c8a169bfd8a71
+f5f5b787e59b5bd555fb24cf50d14c08
+f5fa98ade7069c5cd188c5989b356968
+f5fc5739290e31c31295e6ef2a139afd
+f5fdf99521e74c6273b6f7ae59e2efc4
+f5fe08d2b8f2cb075868bfdc79130272
+f5fe69fbc0a236093375a2e4415d1053
+f5ff2076ff3a831c1f8d76d3ba1a4c78
+f5ff8a8e101ce6b447ff5a399a4b52ab
+f6014ac145878dddeeb9c27d7a4e1179
+f6025d346d9dbb8c4a8237ab01c019eb
+f6028bae7448bc888bbffaa55d6871f4
+f60535577ff1f14f2eaafac806597411
+f606dcdeafa5f27bc64db2c471ec089f
+f608124ba52a311d57b33dbf32f95776
+f6099610dc1ce4200719ebcc1f919abc
+f60a67b7a477046b4790f7bd4dc83e13
+f60fea42cc1810a1185153a9fa8dfe2c
+f61169e349aa479ce02c36d96647cd01
+f611f50c8fbc245d187c1ee5dea87a74
+f61c35e11e8bb00bd8a4f7b427566f34
+f61ef535e7f7397945d16ca3a014ca87
+f61f30a43df6892a34887af008762874
+f61f8aaf344d872429859a31f399338d
+f622b5733a62af0de1a69e532ae2bdf4
+f624444e1ade8c87a625a941e09a4ad4
+f6246ee2746368ff7071b4a2f662d866
+f626d01b43ac9fdab9d342346dc08fbf
+f629f9e4cd42280153df5940f0ec4734
+f62b609a0ea76a5b52769eb1e6a75e0c
+f62bdfc5ca9d2909080a758a7216af0f
+f62c7cccd98cb263a6e600093a392245
+f631d1d00e5916d357f9dbc45129de92
+f6320eec85a46aa190605b0865c5c54a
+f63320bb689582b749eec25f824f676e
+f6355b04e423eecc1cd8aec680bb731c
+f635bcd043ec3c2aa2460614b9a310aa
+f63618226c08630c0697dda1f9137ac7
+f6368310d91a23df204b8cee03be0e41
+f636a304c2ca49eb3da42d96860f6fd0
+f636b14f826c3edbae7a54bb1199f358
+f6377fe44f8127417416648a3ef9f91a
+f6395d3d9f4869d845723c74890ccf8f
+f63a16d36870a6b9f50e13544f6294f2
+f63a6f9a235767637b1d1dc12a99c131
+f63a9b706bd494e03c347e6c3f97b2f9
+f63b3b17f4c13cdaa3d830c6b975dcfd
+f63d9d228f2e3167e9c30a07600e72e1
+f63de614251a27f88fbd66671dd13f48
+f63e7973e31543fdb1ee4b212865b612
+f64079523e41064db93ee0c636b68272
+f641fe46b391b75195c33d3135201547
+f6436456b4c4e40072470462ba0f7a10
+f64500912148caa49c4a0969e46edb03
+f6455ce1b020e05ccb9c86eb52d66a66
+f6461a6249f0ae5be98d6f623efd54f9
+f646d6b5db7eabe0972e48f53ffcd766
+f649339d9d565cb32267d80cec65bf25
+f6494dc0cc94c4f2dced6e5399e602d0
+f64a589152e472d3dbb7f5cbc5285fd3
+f64ab672142108f5e35c433a3811ada1
+f64c26f66542d2750c045d6908f8c27d
+f64c64c0e36502c8e18e250e1b1cc7cb
+f64c7a5db9cae7cb1caba91778ed3876
+f64c843174ef675ccb2c9aaf4a465dc1
+f64c8d9c0a416ce8d100cf14d0530f2d
+f65210aaf7cce8ffac59ad3640b543b4
+f6543db18222b95c4158d04834fd4ed9
+f65659ab61e9029bb688f065794d476b
+f6581ecc0e1cd1608afc7f683ae82ccd
+f6621cc1748f1c02ef9cca594adaaf3e
+f662c7e66e5aa482defd2d36fc9558ed
+f6668260540acbca0db69fbaee2c9eba
+f6670e57e49dbe96c8bbe2625fbb14c9
+f667b4fb7192dcbe5029560c65d926e4
+f669af1e8e7768d794ef6f07cda39375
+f66b8960f7bde77263dcaf2e448f0a78
+f66ca59ee3d6eb265ae6d272fefc994d
+f66d4b03d98403a733303e664385eecc
+f66d76ba7faadffcb54e180bf0f97eb6
+f66df742d9af3b7074daa5ee1eb040d0
+f66f3bb13da6c9aa3d4a6f2f02d363fe
+f670f36159407a3b2225f1053dc5ebd7
+f6721d6142947967deaab7f9b058032e
+f672b8ced3fda233e56e619dd460afa1
+f6751b7b264e26548b9e6b45a7b9c6fb
+f675d4a71b8e7df6c4dfed5a990581d4
+f6779cb70600de511d00150c57db8f86
+f6788a13326478908a2eaa9eaa090f91
+f67b4dfac7f0ae9ab48a82c16534b12d
+f6817f298ce1a4e805aaace59ab5419f
+f6832941cf07f714a26a89d58e2b5843
+f6853811fbce83aa7f266626879bf5d8
+f68a9dcc7e38da2c1421711e6d9c5916
+f68ae37a4ab190b5648d6f3e6d86dd47
+f68dde8fabe47c674e83366270f86e75
+f68f6896e12975dec6d6ceacc10405e1
+f68fcfccba4569785bc2776c8b5b6f02
+f6945e6c3a8039599c7191de19d0118b
+f695ffae7e7d7cf53924b52b9130d1b0
+f6968e7529ff94567e3fcc0b9928dc78
+f6974d43da476905f8b7d6677175b528
+f6998660948562fc8efd7dc71d31fbaf
+f69e78801c88ded099a866dc050f15eb
+f6a116236ca8a6ad1c032e7fc1baf8bf
+f6a11808557c2ca62112001d4e6a177e
+f6a7bc396f76f74f8bdefff59fc03469
+f6a7c5cb74f62d94a284fda27c38f3d5
+f6abb7d9d89df6253cb8d757fc33bfa5
+f6ad1c1401baed115b50ab6f6606f02d
+f6ad4a80adb097e23d45cb65a90ebd6b
+f6af908fca5e6368d769759e3b3306d4
+f6b206b7d5fd6f57d3fbfe9a0b73fdb2
+f6b4e79af290b4e84c9da4a0071d49af
+f6b5ad8ee5fe35eb639744ece3a342c1
+f6b8d5751b52fb732da61e67a21acbe3
+f6bac9becbee61f37ae1e0c3b9aec92a
+f6bc67bf4cae63ef24b71d2484390678
+f6bdf8fe584bfbee1c398c01b7ec144c
+f6bf250ff5a219287da9792b03e24de6
+f6bf2b13aa3dd510913fefaae8ecebd7
+f6c2139e968f0304ea60d0e0c0b8d294
+f6c26fc3a6a0f202ec45fe6a9b9b10b3
+f6c460f0589c969d36d1b211faf8db2a
+f6c6dc9b03a88609819a49e34c4e4288
+f6c7e941f7aa1430a04f051dff09281f
+f6c99e8f9415f078c2dd6a88980b5976
+f6ca235a6c4b05dcd1e885fbdae45f1c
+f6caf313e2b60629a428c793166b7156
+f6cb4dfe340f8236eec808d1a9616930
+f6d1036b431db16e68302c686e172cbb
+f6d18f905d60fc7b46923679b79e58fa
+f6d754413849b0eed4e5aa981aea2745
+f6d7c89500e1b589c72fb74aefe97d4b
+f6d7e95947f14ab8e35e4228334922bf
+f6d8758e66f06bdc6deb855084d82d0c
+f6dc7950bec949b7370df59ef8f2d0b1
+f6ddcdefe2ca7f05c35f95ea31c38ca2
+f6df3ce7203dee513e8e055d7e22fce6
+f6e0d16314e002f1de9d9aed6d52f076
+f6e2529decf814f8031d57a4374360eb
+f6e44b49538cdf4913fbe9642923f18c
+f6e467b35d5f92e8759abfcca34e0087
+f6e4facce68e0f7ade20824aa52a0c5e
+f6e6324d9194c3feb510613bb0ad26bd
+f6e873ce2e316ecaf2316ef0bae97ab8
+f6e9ae00cd8815aebad87a49dafa6bda
+f6ec4dde97a40adbcd3390433094e023
+f6ec5cab44266d09d53ca67c7f0a78c8
+f6eddf4aec527a6a5874ac20112823d4
+f6eed9cd839e0456c96d2d191e86b4e2
+f6f0113f6ea4dc9f42ed00d42177e9de
+f6f034c103bdd3540a6f0a1334b43ed4
+f6f3fbd5998c086a9f4f3a61b0eba7b1
+f6f435ad3e80313800d5251973a9e3fa
+f6f68d49ae37fd334a552ba324455fdb
+f6f7f1eabc740f69c7d3fe0a942ed1d4
+f6facc285fee1dc85440d0a249afa9e2
+f6faf825a8feb1c1e2548845170d1e95
+f6fbd32cc6244001c1df12cdb4814348
+f6fc8fe7c0894fd0076aa765668762e4
+f701a206125bbbe78ff8ab2902c16992
+f701fafdcb5d163d1446a59be59c9ed5
+f7023f686f1981090d80b1d9fcd88dc1
+f70317b8fa3b8e539dfd15602d67b502
+f703e7d307fec9a465df5f2053d83244
+f7041979601cd6b7870390d3571dfa0a
+f7084d0dd54fddb9b73f89c77803ecd4
+f709d82ce8cade062c3ea7003e6873d2
+f70a126391b7410a946125d339ca9960
+f70c3539f6204e5b0b7d002504fa52b5
+f7112994961a17253932ff25c4373a98
+f71183afc2165e1ee3f254233117b55f
+f7122ad15961068a11175ceaeca01f26
+f7126f8523c107f7ae1737eb065654a8
+f71289ad2b80cf60381d7500153e8bb0
+f71449b25597bd6c24208c8524187ddf
+f714bee2320f72be6d229dbd2eade571
+f71502b9cc0d79072d684685a01304b5
+f718993a945317209af7bc58ec8ce66b
+f71a30c22504d1ace33bcc747edee685
+f71b4bcb905b228a0334dbda6b924896
+f71b7113c4ad3db415d999a2fbdabedc
+f71eecdf995b3f33cfb67fe0067c3a4e
+f720afe896abbf76e54d007b839c03d5
+f723d785e3a51bf36b41d8d5d7d7b32b
+f724d61a71f3f70c16742fec5d1d43a5
+f7267220509d9292907102028270e66d
+f72820121c6f6a872ab29030877465c0
+f72b8b0d4660d934c1578d581de0fcb1
+f72c92d1e4f5b3d0df6ea71ca66a8578
+f72dfca9e0e9e2cd3b4ab10680d21934
+f73056cd898d694504d89bc196bbe0a2
+f7316cd9367049892af058eff57144f0
+f7324022729bf4262e748628ff594c46
+f732fcf11687f053789a515b7900d7e4
+f7367f88e2038bc02cbc9fabb9dd247b
+f736bfc1ab397100e55fb7a850108c6e
+f7376bb06dad23e2ff94525b9d758dd3
+f737ec83451ac7da3fd5764a31baaa15
+f73879308e11c5d5cab0abd578b39989
+f73a7bacbb02c07a4bf46bfc7a325a28
+f73c279e4cab87b5c34c0584b103a4ce
+f73c6a783e58ba6272a3ed15a6641933
+f73f42fb0d4a78ad77f7768453684994
+f740bd653dbf6c9935c28f6c9ab3b8d1
+f7442d9627d8c9a4c58e249c1c6da641
+f7447f2f888774a1400ea4591ef26fed
+f749444ab4fc76d5ba8e7336437aef16
+f74ac4ed4f279f20692f6d374c49fa82
+f74acc56e2782259ec5b446fbe718886
+f74b6d513b28e203edb8d7e6ec9a90f5
+f75266332bb9dccaa80b71d26c3e0245
+f753dd925b11095e9456a100d3bb10a9
+f755271dff2b4b1bf654b2e1c9aabd90
+f75587b718e36c9f2358b1d0b7c635ad
+f756ded36770f18d8b9361171647b6c7
+f7573dcd74dd4a272c1187e7d0feab11
+f75a64fe3d7c826e9fe782dd6d77a8c0
+f75b1a6ed10c64efc01e36a7913149f5
+f75b43792288d3e2d4048e233685cc3d
+f75b4c5182774430950b0949d2bd2841
+f75c1eee5bb895c469a7b1269aea6108
+f75c7379023b73658e0346b451e0e833
+f75caaf95b7828cdd4040b6cfcc0c8af
+f75eee9fff9ab657af859d74175cd89a
+f761c54567315a5151bb47c95aca90c4
+f762fa1956dee3d27a4fec021348fc61
+f763e1f635dd63c8057a1bcb17812486
+f767e49306039632c49c246197d8bd9a
+f7680243c5d215e1223ace7770076e36
+f76916d222d73f8a3661671f37c0a7e7
+f76c67a43295f40b7694643beb35296d
+f76df2337a2c3c64e2cfa697894d5784
+f76e352612fec84937ef5b4716ec88a5
+f770167f40a151c53a7a2992108c1629
+f7729efb3e20e2cef52d77f147b9d8eb
+f774d91b8bfc6e0452a812cca52dbb78
+f7763766ee154a4c973f8800335abf07
+f778532293f066ac96235aa4628971bf
+f778a0dba352b1a06a3b097f15fb2816
+f7792da99fc1be7ec99446effed0c851
+f77937b62d392cc4ed342bba4f3e0786
+f779e091d7c5c5b3df2d4fc7e026186e
+f77b6f24d3e034466fb9fc64d93fb32f
+f77bf5d5e7e1af43de7f0d9b4655a60c
+f77d4bdf0f13b2aa804c38c396988a99
+f77df6c8a9131cb8aa457734ad45f9d6
+f77fe59c7a9398a42fa666605238ea03
+f78015a7c718436351786797b35b8149
+f78146dd5187746f87ba49bc0e2aa15d
+f7816f8df4231c5b97cc77e4833dbd91
+f781bd3a9de54900732b87356a194b82
+f7851ae69ac0e0e8f8271f12a5e2c9b2
+f785fb83454949cdb131a68248506372
+f78709bbac3e57ecdb2be240821b77c6
+f7875bb37a19f753422e9764509e6aed
+f78a753d217cd17a7f4693f1f95be63b
+f78abd557f1b56ba54066eaeabc9bcc3
+f78b57e957c391a3059342beddb3b943
+f78b737a81f3b6a68eda3d83fcc4504d
+f78c99413c1b23be0cbc1b4aa69fdeef
+f78db5c776962be5684d60063e7d29cc
+f78e9d8f3bb28b956f21a411882feabf
+f791b022dfeb64be766341c6e40ae2a3
+f791cf3ea537b691ab4834ff2d8462fc
+f7922d4e641ff7c8e0d8c6cbca3c9357
+f79431b52e9cfc24343a51564c655648
+f7975bad0a78cc7e9c716a8d346ff59a
+f79a032f2a6d30087c81be00fa1a16c9
+f79b1b4c9efa662c91ec7db6ebda8f97
+f79dcba286faebc267fbd5bbb05654e8
+f7a20485b63536aff4170b457cc43bfe
+f7a4af8f06680d894cf434894184fdff
+f7a6275abb2fe0d978f00c186228ec3c
+f7a8b684bf74353fbfcb4bbc04502213
+f7ab7695746827e9c24d4f1aea7ef2ba
+f7ad88e3c5bac4b70c974088bd122665
+f7ae4afc1636933aad9c685c6c2ba178
+f7b06d4c04cf0207f307be9058c698c3
+f7b0ce131184ce1ff8971fcf4da5bed1
+f7b4feece41d9466c6321770b16b1181
+f7b5a22ec990e4b4d6daa4d4b38116b9
+f7bc7a1dbc2b421ab5c615b43a961357
+f7bf0018a81174057fdbeaed5ecf21c4
+f7bf917351ad1b9f5cf6c567e27cb05d
+f7bf98723f6753389114a179332e5740
+f7bfa4e393a6caa2ac1ecd345c31eafb
+f7bfd0af773d155a63933d012549bcc3
+f7c08c6740ddff122de9325c6522762c
+f7c0aa5166c730590439f55c58410001
+f7c1a994822dfdc726061621c2a5a352
+f7c26a6e351017397c391dd9e1b17968
+f7c295e3948b94324ff748f207264e3d
+f7c376c3a5e371377a84b3e261f3c973
+f7c4e335765f5b261ac8d85f098f574e
+f7c9c53317faaa6d4ad9501cc436997a
+f7cabd1e7cdf163e5bee31377340482e
+f7ce5302474960ef959518d3e360bd57
+f7cf65412bcd5428bd67fb5fa9924ac3
+f7cfb8fe1fd1592b46accf4d83454ff4
+f7cfe4782e6af2599faec3c436a0c60e
+f7d14bd95e74b3013acfbc0c51c55c19
+f7d4a989d34d44b8a4d565cde239822a
+f7d954236b45841a4067fc41a3498e58
+f7d96b99ada580c15ba7a0b3566c8ee4
+f7dc6c0bf775abea4be5ece4d11e7b49
+f7de2c0e493dc03d4cfad11fb6bbe2fd
+f7e07ee2a35455d9ed6f9cb5fd19e640
+f7e1e4b14eaca6cc4ed08f6cf4414c9f
+f7e261a60bd8636e0e21f7fb501c7fdb
+f7e361bb8d6d0fd716823310719530b4
+f7e4ad4dfbeb8c06de1d5fadc9023361
+f7e59c6aecdbb0013ee2c30914ca0787
+f7e6cca4f18462a5cd465209c5472eae
+f7e6e7cabeb0a633d491ac4399e598fd
+f7e7abfcb75bb658d8958b947f3d524c
+f7e8538d5a7d2999ae8cbbee250a2022
+f7ea24f109f76b55904c5debb5bcb7a4
+f7ea96bc456f1f08867737694ea54f4e
+f7ea9a2454df12f973f7e8b8a61c88bb
+f7eb43b7427c78282121d9b3bbaa554b
+f7eb58ce3b6b6a48e6d2e4f2351be31f
+f7ebaf572ab474bdff34deb0a9915b2c
+f7ed7292825473cf8d976626968ecfca
+f7ee7382b627e15182a2b6fb365bdf14
+f7ef3d1129e3e94c0adb5a4bdfb574b6
+f7efd1088949e7913156f2c297b58b46
+f7f208a096a91cd0df08c0336436f0bc
+f7f4fa5b98a6e8540f1e33f26b1cb577
+f7f5b6c9aaf9263c1a5b7fe0910f9976
+f7f6e2ad349fbc2a596e61111bf7b36e
+f7f86265405208f073397fa2475c5b6a
+f7f96da9cf39b680b5beeadb1331ae10
+f7f99ba2603ab425145afd6493b4ab19
+f7f9bc57fcc41ed8184cd17392f0bb44
+f800053b99794880a17205d2bb5505ab
+f8008824e3fe31f75c5e24f91b15a437
+f803a4f059d510604e973050f19f6899
+f8045045c3802bcb2e5ce2fba2226acb
+f8053f6d073d95f7a6d61cefb36af1d8
+f806c11c1c501afb24b0cab3a25876d2
+f80862d7144ee9c8f4ddc1d0ff94fd2d
+f8087a7a2c7a12e6c92ffdcdc88d44e7
+f809407d6045ebd4e1f796120a7de013
+f809a30f8022fbc0dea997a640fb168f
+f80a2a43e0bcb87584809c9506428b12
+f80adff51a60dc1036989e606ca01b88
+f80eb72043c1917fd909335d225084a3
+f80ecc769cead28f1ccfed85161d2993
+f80fd38cb8a46dd6ebff68a8126efd9f
+f8104252e1ffbfb9a2d647727f8e394c
+f81082ad4a3a63f0784c4bc66d6d746c
+f811afe91d0bffbf4d1cddebec5f1985
+f812a20c486064e47b4b179f6fe701a5
+f813fffeae53945e56c9c83f587f18f8
+f8147a80b6570c85575bca5addb5170c
+f816cd803252d552527e971b22107980
+f81b8de4cd2bf792c196bff8c75b4f49
+f81bb44519ccb358fd953fc837eb87c6
+f81cbbf1b874082ffced445e6757c9b7
+f81d68ad9d47a18d1b5563baa1be112e
+f81e737be16a786cde1efa9e1081a78d
+f8209b70fef4e952122e6e2b696703ae
+f8267072405d07590851124f661f636c
+f82759dfdc562df9a08b2925e3a138af
+f82798ed8adaee95ddad26f93bfe0fa4
+f828fab84a8258451b5bb1a8c6b99e99
+f82bf8eba6784abccb5df8c17b28f8ba
+f82e782e1c5c9cbb94c7ee7286b15ab2
+f82e9a23ad7b7a89fec3aa9ebada7cbd
+f82efc48018de1417aecc3b19a7d819c
+f8343313ebd9a7bce10bf020a6928088
+f83461fe36624c752a713b8b360d6653
+f8346d7a7a34441b92bd2218fa692e1f
+f83487ce01e6ca22bd5c5253b293d65e
+f8374b3be72cad36fadb16f5a67e8930
+f8377e1feae3876ab6e2d6382fc9ee08
+f838dc5367bb76ce74744b1c6ec2997f
+f83b9edfd35ac3550ab404e915aa5d0a
+f83c53b910141d0db4adab7c5723f0e6
+f83e06823a8d13e8373d0a345588e957
+f842c0b796e648771bf2cf8680be934e
+f8466db89b27b83abbeeb4f4741851ba
+f84739c1a6b9b02d176fd3f7258c8d2c
+f847f8c5ee48c2ad59e216f2afef362a
+f84a7453bb41dd90101a606f839318db
+f84aa41620109c9031c4638358c70483
+f84cd7a26286bcd57cbc2209a82b57e1
+f850a5147a350edff620cb3c6768eba8
+f850b017d6bf919f7cf08e0618363b70
+f850f34e7094d3ad6899d783061ec24d
+f851f6f7e88215eb79d63d42f343101a
+f8526e53f50cfcd2e541679e49dafd9b
+f852ba5de9d178410bf3334811e4ba31
+f8557c5041da398192f962230236738e
+f8559f218c5eda9fd526ba0a268f08bf
+f85616d6dc9be9d277c0b1ee3b73779d
+f8575b899daae3ed7356e9c382dbfbd4
+f85839c8a9bedca2df6c042faa29fc92
+f85879a800832b73d1a289f65e11709e
+f85934fd1b19a332e6ba7a845913520b
+f85bf2fa52d06843295dc693136d7f86
+f85f9a05e2dd0d5a082c9f8181063760
+f8608df648b7f659626f13717da12de8
+f860a4953f5547c162077324fa94cc15
+f861425461a11646eef936605a96017d
+f8625472588cd171d8e35df46831721e
+f8626a55aff9b111b28b97610ef8ccc2
+f86287ef2d26059f7698d96470e30694
+f863101516e506d8295bcfd7fb829c69
+f863ad0ab3de92cd826b68436d24fbdd
+f8699a0ceb76273a4baabccfd3fba9cd
+f86b739e7a8ed4feebd7083d549703d7
+f86bd1c3d734afd6a96121ab44aa4f43
+f86c79375cb8f43c7da73c7a8b3416fb
+f8703e8b8c3791061ae7eb82f695762e
+f87203792ab7bc3fd3ad53089758f531
+f8746a5b2512506fb89cb457fbf41140
+f877031d4392ffb0fd90c9631e141cd8
+f878bfba53a1e680fdc0855f906ec1b3
+f87925a0a942eb85f32e053e81df1b98
+f87c0f2b2baff71f474525e252d5fa34
+f87ccebe49000fdabb03ddcf187fbaa9
+f87cfaba11baf289b42626285e647796
+f87dab2f8f8cc703347e6270a658956e
+f87db07c2ff13340a2c1a7cbe3a6c869
+f87e24fc16b6186e7391d4af238543f7
+f87f8b1fcc36fe2fdc4396b7714831e0
+f8812db1150104529bd8f824b1b04599
+f884078ae918896c33ee1103a415f9ac
+f887b2ced44e50d3be1249b1f0d4e39a
+f887ef0a7dda73b68859e853c9270de5
+f88bc35242dadf4266c97034385db908
+f88c6a654d5232a7eace1b19c143cb93
+f88dda5c9f5fad47e0c0f3bb795b4d38
+f88ffae23ac185460fb81e7d3c39b1e9
+f8918359f90b2b4f6af380a093a7673c
+f8919fa4676cd15f6b85d73d2b245958
+f892634400f3ab771dc95ea36440e60a
+f894ad8d3233058974673b3b9a4cf264
+f894fc0a1f326c6046ad2ef9a222686e
+f8950ae801ec9261e4edf71226efc5ea
+f8955d8b8f8226d8e34560c8ddcef269
+f8991f23241037def96845bfb047bf68
+f89a150c5333d06e940f324cf5c07afd
+f89de52bb851f81a500cc7f49f0cc728
+f89ec72f8c0cd06366cac01570d51081
+f89f1ea71a947c5a5d01c235b2186052
+f8a04723795adfd660f4bddd888b6ff2
+f8a09b7191e12e9ff3e012a612ea28a9
+f8a44c5d0ebd96a0e3b95359649f011d
+f8a48695bb68edb93d6b1a5bf7b439e2
+f8a653aba017d4fb5adb4c959e5cfd41
+f8a8acf89d636e48bf925a2eefc7ad98
+f8ab7a04f64bffa38bc74dea4728205d
+f8aed499a346eeff632d9cef7ae578e2
+f8b045106edc6536ac325400cf12bb2f
+f8b04acbbf72ddfc57e6f678a3c2d61f
+f8b04faaa2fca17ea5486ca2365db6a3
+f8b183ec78eb226ae3325336886fbf89
+f8b18afb14d409af3e1ad699ab5a9a52
+f8b2d0adff80ef5ac0a95dfbb8299653
+f8b54f755a27682af1053e1b657aa338
+f8b825ce9e0800df2d0cdad8f4b37b15
+f8b9301a7a78cbd6205ed2ed9ffdab18
+f8be21b98f91070c95e7558ac9715d2a
+f8beac1e6683aa0b780c71ac5552aee2
+f8c0c0a8310a6644912bce654deb6031
+f8c4b225509b65877977c1454110ed60
+f8c5aab3ea82d98f8374b5360927743f
+f8c6563444ad74c225394116ecfc8f55
+f8c854b2fefc80d8cc1e3e58170463fb
+f8c8dff5652bc940bd20110f1041a15e
+f8c940caa27e5e313e8e0f96c3ecfb3c
+f8cdc68a41ee9f4145353d1fb6286a73
+f8cf0e229a4da1640b81b051635d791a
+f8d17b4f9a57a478b01ca8cf3fc789c3
+f8d1bba99720469e2f3de5a8146593cb
+f8d26dd0655ef2c22841953936d596ef
+f8d8ca25d60823be1639cdcdfac4f089
+f8d8f2cf2a8490a809775990318ff90c
+f8da085e17bc019f3ea262655817a74a
+f8ddc0e47066ac333be5f90bf114deb0
+f8dfce0fc9e8e4f85872b63d92f34790
+f8e173daaa981adbcef3bc0d15344c1c
+f8e2fc90d95f71fc2ea30d52aadb9fee
+f8e3c28b4e167391841a2f25ffed10fd
+f8e410e204d990bf56df2fc9623b30a1
+f8e4e0fa9de0c1824ce0596d0c8bac42
+f8e59b6207544fb95b6640fe2ce52f27
+f8e6fcd5bb2d697d491b867c6e9565ce
+f8e85466638a7a01a283a02db5f1116f
+f8eac6d3439b6f6cac2328aa4ea788d8
+f8ebe35c6ac4cc180ca649167a5f3fef
+f8ecbae645dde4129d22f553e0d1ff9b
+f8efeac654e14c5afbd72f4f10cae4e7
+f8f3ffffbbfab75d237d91ef2822ab61
+f8f8019b3a5eab0de145f3f846bc5946
+f8f96408025f83c1292aa32cfa6906b1
+f8fc1af17297eae160c7aa9d58a80a81
+f8ff84f4a8bf2848ffb23f1c8a283ce2
+f9020f275c277afd020d3c560dbf93b4
+f9041bcf003dcce6d15946879ac1fbdc
+f9045fd8a974808644a10184b343297b
+f904a9eac07d65d1af0441f343af7127
+f906fd3145279a603ce65f79d6cf5fd1
+f907724a36df2fc88ab09c596bfee080
+f90a1802daa91598675695bf0042bf28
+f90a2c1d4d1033556686482b2de3cd37
+f90a9e81bd7565b2b5e15f700999f6a8
+f90b2125a75eca0e1870904a37697f09
+f90cea63174ed8b6bf37ae3dd47cc599
+f90cea8a5b6551297ae2ba1b186bf817
+f90d1bb724ef180f4e1e8c124d995f47
+f90f04c7c1eeb845b8d32805a8f65dbb
+f90fc7b28504c3d4368aacbced581bf6
+f910a21a9517f3a81a0fa32dc3b279b6
+f912b6d34456d50fb07cdb5b171e3aae
+f9136166214a31465c61c57594852176
+f9137c5aab0cd090b403016107fafb9a
+f913ae34cbb1270dc6d5ff72cb8627c3
+f914c77c720289ad55b3e675ff64816d
+f91680a65a27724b2a3e541c4beb38cb
+f916ae346ea7dbfaa0bcd0e3c357769f
+f918824b7a19c28415cedb4dd0dc7d0c
+f919748d89a3ace4c89a30f46e8f66cd
+f91caf4dd95745aec4c4db88f79fe8af
+f91d4097c44ba6c933855464c3f2fffc
+f91d79d2592ee0096d5f0c598d3e518c
+f9240681d891810ef10b99ea23100d2b
+f924dca6955cf2eef3224eb186da8921
+f925ec176a8cc6f95051d78c17dbc3e0
+f928eb5de7baabdb19edd59d4aede584
+f929552a81c9d14c687fe5f299a74487
+f92be485ccb75afd4a4aeca85adac330
+f92ce1b907f57cf7417d3cc513ba9b11
+f92ce3870ebcd93499c261334d356c39
+f92ed45a55f6a290a356c7766a312740
+f92f9a797f9f0456615610a63228ab63
+f932b78fcc16bce005aae67fdc8a1ca8
+f932c4b897dad7b22de724566f5ac750
+f936ae9c9763b2eeb6abbc4f567159b9
+f937500d9feb283eaf4b3f14082644ab
+f938f8b1665badc55aa82d28d384ef3c
+f939f45f080f1bba844086b6f82be9c7
+f93b2d64c21eab3fd8ec26357f8c950e
+f93c7e0fa38531754911868231824468
+f93d6dafcd5e3011941f0602228ce1c4
+f940220dca66fce05af1d2315d588b6e
+f9429199f5c547be10f0e3ab14fc70dd
+f943ec365b0fbfe309ec9d344d59a480
+f9450e92bcebe5f9991bfd0e27b60aae
+f9453b3e0e93132dc959c22a43127183
+f946683e3190902b4b03e1b708cf1f52
+f9468bf1355078be9bcdd7d40b6272b3
+f94881e3cc6aa183f79fec0ef95ec0b5
+f94d881dc9aa1a34ca2bca6b0f47b464
+f94f46c56c76b0a2d5418638e0e2750d
+f94f9b82729e6effd497b51bb51c2576
+f950ea11fbd89f1a70b99a3c37607533
+f950eb363db13d632805549ad4f1b787
+f953952b7b25dce96cf62663d8dfb65f
+f954e1aabbb82abd42d6f213497a7eeb
+f95719cdab587dc7e7699e3b2125a8ca
+f957bf8b0440352d444d49cdc35ce59e
+f958610466ab16ca182c9979a5ff8e6c
+f95df76e476541205cb20beffc74ffd3
+f95e45a54b2edd18af185917dbe1c1ba
+f9605fb6d2b3e92526591d297d9c6a2b
+f9629708dfd934f2cc3fd512f73a1bcf
+f962c11e9c5aef7f4683b931f483e548
+f965d72a269d7869470f7fa77e3623f1
+f96729217afeb86e306c4f7fad48cfd8
+f9686834e907215d8411f74b3c3668b1
+f9693dd2dcb918acab587d55ceed48f3
+f96b24b2fe5f2932df41437c94cd7c36
+f96c3da68ddac6c67cba4b44f1ab8d85
+f96eeb6c70ea4377482890de2e1c2f0b
+f973eb7c8e2ebd9d61a75fbe13090b2e
+f975d0a636c660268e2237a669a3ad8f
+f976d3bfe734c09fff817b087854db3f
+f979692cb7b47c5a74dcdf028b9d4922
+f97abeba1fec66fb3c66d8c58696ef59
+f97bf35fd10f13f068f6fb9e15bcc102
+f97c2a82de0b5a362b0c11a40117cd53
+f97df9707de7048563e3ec1f67152e5e
+f98007c9f9b87b81e831b7eee93a9367
+f980ef5b5ad6f60a1a8cb7b75c69e7c7
+f983e38c46e27dc8d929df7e79746e93
+f984d5ab5aacf0d37c884489b4113940
+f98777010985cbbdde90b537ae428341
+f98c25310adfcb7e6a19ea5864899a05
+f98cde0cfa4465f02f825b8e27ed3dde
+f98ce57c07016f0874788382bc088c7d
+f98d1f1c28a0a9727951a3ecaea39579
+f98d84d51a96d8912578141adc517ccd
+f9930974a1d241582beb7693eead31b7
+f99473b28103684d33e0382a8e98a7d9
+f994e4dffe7ec8c0c146874ee56942b8
+f9991911ab76e508124fa90b3e21a256
+f999483e9a356984a872f4504250de5a
+f999a68a18f4a0d3a2b4fa5001ac1f62
+f99a78610e38cf7d52570e3eaf79cdf5
+f99e4d8a1da1692154e502fe6786bfce
+f99f8ba6704ba164d47e7d85ef09c9a7
+f9a092372b94401be06d9636a3c93e26
+f9a0b3f8b6201773ae06eaaec1bccf14
+f9a0c4f3b68e81b71a6fff9314d9bc5e
+f9a468def9eaee4d2430caf2e273b752
+f9a5a5256cec98688a6d9a600df1d661
+f9a887dfa1207631e00a57d30e985b3a
+f9a986efdd0b6d9bd44088cabf2cbdba
+f9ac22a88db652c7a48df6ec86a5c18b
+f9ae428fecb202c651ac4c86d06dcf0f
+f9afed3a019041446aa348bc14b5f14b
+f9b0bbdcc548ca5c1b4343565aeb2c74
+f9b248aff1a31fc3f89a3b258581e851
+f9b4116c40f6987c65af633450e4394a
+f9b4e7d296c50859cfc4c6a6c1d31bbe
+f9b63f430ff7644c46adc1a550b15f10
+f9b8c07a0c3a0862e00b9440f897a9a8
+f9b8f045e276bc4b4ddaad3228fbd06e
+f9bd91c48295f55e8e79ffee0f53dcc8
+f9bdf4edf2e14cabfcaf06c54c24bb42
+f9bec4a585840c71f1e7c7e5f83c919c
+f9bede8ea3cf5428848625a01c6f08ef
+f9c0174dbba276924761761a633406af
+f9c190b47e3420459b725bb916a7b3a8
+f9c1e43784222d141fde0cf2514037fe
+f9c2e0ffc303ae324960e5c6ab5fcbf1
+f9c40001af9f93a2ed86870ad1a86045
+f9c466ebcefe119f47af7f017a851a2a
+f9c52e6253b9262d17963b6e81839994
+f9c7b8b705922be28c4017625846df95
+f9c8059db0be35013abfd574c579ab35
+f9c922f7327dd763312b17eed3bc31ea
+f9ca4f576f9cbd85c4f9e3c8ca7d1283
+f9cab6b58f90f4f0b5cb9f2147878525
+f9d17038b999da5e31e62b7d5bcbf37f
+f9d420dbfbe7378d3d7cc7425471f150
+f9d45ee3fcb9c347086d38210d1f2af8
+f9d642b56791e9ba85d6f569a5218700
+f9d76244cb9dd22b45b67255290ad262
+f9d80544923cb6165cadac59cd556f6f
+f9dbab3bc1055c69017e0a909efedfbf
+f9dc2ce720beb6369cceba3c31aa4b41
+f9dc31b614a5997d838df2d5459e0e5d
+f9dc7709335aa2327f12c6f13ac57800
+f9dd0b1a0520c482a94a8715e8adee78
+f9de7244b5124a7f7cf3c068318147f2
+f9dedad92c95e5d2ca98de25293e69d3
+f9def50e69fe063412f941b48cbc7256
+f9e05a49b1c65b3b1f7daed40b42107c
+f9e0da0085e9033ac59e8c462e2b7252
+f9e2b3179ca9b381e2690ab260ff92bb
+f9e57a9922b397b9fc1f733e7fb23af1
+f9e5f1be57f80c31a6c8fef095fbe49e
+f9e655a58eb17503647ffbf279a3d3d4
+f9e6e8e5125b2a339f2763a0ef3ef266
+f9e710b4a12208131fd0dff96c5c93b5
+f9e72c058e09388b0f4266fe3f551621
+f9e777c6711d01321fb8308fecab7973
+f9e8ddd1073f417f1499649b8fbaba58
+f9e9df5b0198aac60041ecb62d2ee63d
+f9ead2dedcbed8dd404c18d7c2ad90df
+f9ecb795d1c0722f3dc1cd2a434f8483
+f9f1eaef34641b8bec99a055e4133386
+f9f4ae34202d035ff0cc52178f8779da
+f9f4e3355604c1a348d38fb8b7b26325
+f9f5196d60bce1820e27223893cccb79
+f9f536032758df1591c431eb536272bd
+f9f6aec4f9b4ea0553155fed99ef92d1
+f9f70210d815524116c9e17e2f3aa3c3
+f9f7faa7b553a58086c7435247b54242
+f9f9f4b2bbcbcb7209cdb0a435b5f4be
+f9fd6f41b77e00ad01cb721cf5cdd208
+f9fee59e2c34809541383800287c33bf
+f9ff5c6d6df78cd4ec9592b82e0e18cd
+fa00a113b96b0825b2b8c9d1bc9244a7
+fa01978eb0d0845e4abbaee8e881054f
+fa0300b8b6ffd74ddf4ecfde9b24767e
+fa05bd051937ce962fc8fac0a0cc238c
+fa05bd31c24bec5d703e1a2ece54d31f
+fa09125135a89b894ef12711b17a0178
+fa09895507d2074265405acc39995bc9
+fa09b86333873f6729f75709d56cfb46
+fa0a3dac18ba0f7c5d960898e8b68676
+fa0b5c24b01d431b35d154a50f4a6f58
+fa10ac4285c465d1cc809365fe62e8c4
+fa147ad566ecfaab951592498b0592bb
+fa16ae21a5182f4ccc4d7fdc0d098cd0
+fa19282010a794b665b258c07544d5a0
+fa19db539c34fb7ceaf40970203e0c38
+fa1d9931c98aa051d6041420fc324c09
+fa217c8e9eaff906937b823f404a254b
+fa2235e6c7dd64dad660dacd29080e98
+fa26fc9237dcbe3594c56a258f595a02
+fa28d5e7fcf8a295b913f7d067956528
+fa2adedfb93e7b197b3d692150117dd2
+fa2b34b3f5a88913b5bddaac1637cf68
+fa2c9efb2c8345d4ce2c308e7da95f84
+fa2e0146cf3ddcb7e596bee98dda06de
+fa2ea4581574d0fd48d2afae403114c7
+fa2fd7ab1c4218c7cbd674e0985a4861
+fa311cb53fb0f6e14d6bf93d52b28070
+fa31498d0151a938782bd27ad27ea5f6
+fa33e75a01cf99184ce8697d4e10143c
+fa343baf7cdcb62c90ab7e6c0aa622cb
+fa375b28e5e18293da1434b5464285e3
+fa38bffe134be83bd39185e90993609e
+fa3c16c29d82236f04d15ad5dd2a2cdc
+fa3c8be6df6516e1d0721244fa4edade
+fa3d2b97b9ad07d5a54868af4c5d8c85
+fa3d8a8aca899b81713dc29c23735f2b
+fa3e46c14d9169c593470b4008c92740
+fa3eef8810fa44e47c4dc4bc7bf6298e
+fa3f63f32b0cd4dd0aaa8a9d3c0ff5c0
+fa408a92aa76ab054ff80cb45e814837
+fa423c7557f027c3f9b96addbbdb66c2
+fa4359b74375cdf5fc3f73bb26fb97e9
+fa4730776e7d079a9dfa4450c36b845d
+fa4737cda3ad1775b4d6b0ab4dc822fd
+fa48b4026b6527b9114de27d81be0ccb
+fa4accbcbfbfaba4789d14557a48b08a
+fa4dde8ded6420b7048d2805ade32670
+fa4de7bc287d2a1050fa0ffd7167e945
+fa4e75bad011d2ec7e59614babd5091a
+fa4ebbe0692e9790c5476e8dbc0c7130
+fa504151f0cd4dce604203f8f6f068d8
+fa50d867826ef72dae443150db769c5a
+fa5175dd8b6644cecc0a77763aaf67a4
+fa51fefd0c43129c34355d5787673519
+fa52059e2dba415d694fc64f39244511
+fa52f46f5d4fb75e595915fe8f792926
+fa53681b1eb28309310ee0416bf166ce
+fa54cfa10dc7a0ccffe2725c52e23c42
+fa54d1579db788c31e03f54ee411510f
+fa56a70d798181e1c87112de87d94e81
+fa58a092ca2379d66a42b2464a6eaaab
+fa5a11ad3c10a3e4a3d5d9f40ab294da
+fa5a313c574fea83a5086701ec6f0e2d
+fa5b75fb8067b7988de4c497feb6925e
+fa5cdd62d1d4071861c6a7e1080ef227
+fa5d576ac9f02c4fe0feca132a5c2b8f
+fa5f7d84829aeabbe1f0691804c4ebb6
+fa60a13219a522aef154d599bef2a997
+fa63afedc5ca846dd8380c816191d5c2
+fa63f5681d1f28289d67e3ff01c5478c
+fa6505f705b3f0a174a0b1d46873de34
+fa690b50a3550088c101ed55c8c8cb2b
+fa6a0fd2c085cdb1135bc08c0aa33fa3
+fa6a11365caf38f2631763bb4d260d74
+fa6c9e8fa02b1e75ed1ee94dc7a3bb85
+fa700a204cd859cb4320ceba4baa2c55
+fa7296ab1e87045ceceb9093e5f321bb
+fa76d498052d9f2c6ca4db936912ed7f
+fa78b96234adf3099094af650b6a01c4
+fa7cd1525e3a269af56a3b6fc49d9a1d
+fa7d6551775ff8fb973e35668e094efb
+fa7d8040580cf953d2002e6b1a0e1d6b
+fa7db2a2c3415e3eb2a6e1f06ffd0216
+fa838b620ffc6b8f65235e3b3d453c49
+fa85d039dda283055c7936c72e04d4f7
+fa8ce0ace709c15f254bebd8a921f9d9
+fa8d66ecf60f8702976da203982defca
+fa8e6aec8ff3735a84d076e3a5cd4a24
+fa8eb7da7e8e5669e6e5969cd9194d71
+fa8eec3555fee46b4b77f7ef7e67a2b7
+fa908be8b8de579e9fc50fb554ad17d2
+fa91d470766c29961317a3663e0de2ca
+fa92e6e897b449408acc998bcb648cda
+fa962c1f8d72f95920253d5ca587e7ab
+fa995e6763115c07533e2bbce9486ddf
+fa9d10c969806e8ec28e5868633ba76b
+fa9da74959283856c15192f2f6714b5a
+fa9fbf577edf3cec862fa507a30e8fa4
+faa0b659ff96618d796630717ff149c1
+faa25a077fe804db837b40eb12654ea0
+faa2ea71c8b08633ddb067efaa666eeb
+faa579c5e14f59ecb07a9ad63ad52df5
+faa700453d118197208de1a1a8fcaaef
+faa89e951f6c93d085b942ae1de6db80
+faaa3dd2f6970b3257c3bdc5035892bf
+faab62b29cc93217f77d4567c326d94b
+faababdf1acb523fe466d910e38532e1
+faafe3977b16ec5b08eff730d402694f
+fab05db4aa5edaed10b716dc1a42cffd
+fab49f99ef09f4d2a7bec718e82e0a95
+fab4ef1aeef320dfaa8982cdf0cbfda6
+fab5d88523a9abbc69287ce2944b435c
+fab6001f6c5a000652e1aa82684c5386
+fab65b0acd689ba2ae111a2679f5b91c
+fab7895af41d9dbac71400a4127c4ed9
+fab9871f7a6683cbf2560359f23c77f2
+fab9eff579527152a4434a79a6738315
+fabb3aba315cc4e1c9eaa02c982f3ab6
+fabb5c59a47c7a13db14960d9e13374c
+fabbd82969ae7013927e40ff665e3c6a
+fabc079263be776896c40bf470671eb7
+fabd8698b8b904c65615ca6de4a21f9b
+fabe91d786805cfae6ff7bc9769dff91
+fac2316211a4584fbf12b090771eb3d6
+fac4b5017bc451994fdc79fadf675541
+fac6184d18bb11a485959d3b5d494dce
+fac6fcee56700897ffd4be4690378b4d
+fac8ab022c0e7ef6276d69369ec7989f
+fac94b66fc2b7f666eaec8c0a9c1a076
+face5d61e29686eeb0078ead1ca4613b
+fad0d1cbfc3f13a92fc2bc34eef27c58
+fad1035f59fc0b0bec23ab5234e93539
+fad1adc64148811f6acdfe9094171ff1
+fad2273dc40f3b6e109ed246b14326f9
+fad43ededef961654ba7edfc8d4a6695
+fad53aeaf9f742441de7a6513557f96f
+fad5d277bf6839419102c5ef60f85a93
+fad67636e83a6043af77179e008b8712
+fad67e54c7d83f57c2637d31577ae9fe
+fad710fafe96cc650cccaa43c0c87b4d
+fad761538543f6cb5bbdd457b1e3c606
+fad7ef725b8aed057408a25958c250a3
+fad896395e8fc5a91ed882ee2e47fe72
+fae087015e0df2161d7522ebe5c6aed2
+fae0d439a8a45e7ae8ab5286c046020b
+fae24650533ec2cef46175653702e221
+fae30611b05247253fff36e78f8a3fed
+fae32b5fece565945b1429b73043792e
+fae47f394f41364b472d40006d70a3bf
+fae604a99d67644fd3f1b42183b62337
+fae9ca3d8ccc26f813b7bc7f403001b0
+faeaabdedee64f25229ac520de38bf96
+faeb936e46621cf84418c76a3219240b
+faec75e5da3b32c1e5ad631e940c84a5
+faecba3f439b20a53c8190da8c0f3166
+faee1243c8454fc36bd09a9f95f6767f
+faee4ea9afc5d2e1a47d207a5309895e
+faef395e870c09cbc0e2a93cc56c9697
+faf0ee81ae05041a10dce7052eb093f4
+faf1af78fab2487a3e097868f6d07fee
+faf5cb6359f00993143c35481cf04057
+fafb30e25848a9e7c0ccc0330e3868fe
+fafbed4cdccab6972c368b2a8e6e51b3
+fafed1d5c032572452fd33393bc2de9c
+faff8f3380fb9c707df85ddea1d5fb45
+faffcb4b7691cb88af65e04c0fcd3987
+fb017f1a3666def770a8b8629b4f9b50
+fb01bf43059cf3d93545e47e3bcd8061
+fb01d1026f994c768f9f86b04fd04941
+fb026628235738e409975a8c9526cf47
+fb081a7fda5be8d93755d385268051a1
+fb089f94f283a813f545caa87ff855c1
+fb08e80d5a7c13232f6ce2a7abf738ae
+fb0dfda392755cfe9fada5dcc58e627a
+fb10eb875fb10b09e245d2e4c80ce147
+fb113256509543285c30768a5ca51019
+fb1178eb0ff975b0a3ee64ec99be7841
+fb1295221427a79c0340399a2ba63711
+fb13611a83817133b6cafdef4d48c91f
+fb145f932127cbc7679b86647ff292a9
+fb14fa4e83816b4cb8765141955fcd4a
+fb15f0ba84617f2d7129fa8de98ef29e
+fb1924537552ddc531b7000ba4c8a74a
+fb1935582151801970901461de212e60
+fb19db90990df53fc882727217547611
+fb1bb12f3002d0182d0784a12765a6cc
+fb1c0c27470c8e0a25698ea751732275
+fb1c77c6e2176e0e71ffb6166573f023
+fb1e2e339d5ae78e2b0c5ed3a7642de4
+fb1f28730e7cc2d54004b78efe3c32d3
+fb1f9d9d695c2da150674ffb33a83ea7
+fb2147b9a1fd7402b2f7804ff86a09a0
+fb22ea4fa551ab36438f29ffb35cf939
+fb2727538d22d63a7d6bc2b1b8b07a8c
+fb2735b0b232e970c26c23fff320241a
+fb291e829476e0e2d62e07a8bf28cca8
+fb29a9f0f6362e4170a93fc96c96ea6c
+fb29dc7ea8d1c118b759f974d08e741a
+fb2c3b2d7fcc1ccb9ebdaf70ece9c60e
+fb2d42f89745cde9387f647959d148e8
+fb2ebcb890061d66702930329e3e114e
+fb31f9d26247df95578ae094e3cbd187
+fb338021445092021ca507eecf36a8f4
+fb4014aa560d60adc9fba8203ab55861
+fb407f6b15679aa83a9e59db6815d177
+fb463f3f69a57c0dcf73b0ed70bc7eb0
+fb46532c1a2c08dffb883d8f62579301
+fb46978b6a53c3bcd41539974361003e
+fb46ef031d6041cf078fa5dea5612b19
+fb46fb5d28a3ca9b504a4420bb04f596
+fb4714a54dd474c612ea70d9695cd491
+fb4ea0dbfc81e17fcfd227e4bc3a164b
+fb4fca11a58d1dfee2032721210cad0a
+fb5074bb51714904e3a946713fb3908d
+fb51d60f2d21f63c2ab3cc4bc49097a5
+fb531829299abe7c050dd59b52753f8e
+fb5362715e177290cc18cada69c76d56
+fb5434842ff1a0fcc3b3da0f5ae6625e
+fb563f4db0b89516da60531ce32e6a47
+fb56eae47ee161a8346258c28b234d99
+fb57f8fc44f509852a161595319d3bfd
+fb5846097fc69c2d633bbd6f4d1f0915
+fb586eabfd5811279f51f96ef901da77
+fb5b973d3fbc66756ea86f086e66d4d2
+fb5e6495e1b8fc7f2e8f66704a4b6ce8
+fb5ed71ebbc564f6136c22ffbde8973e
+fb5f62c5445c02419a80568eb8032093
+fb5f84772a3dae6ac3b39aca11c3df0b
+fb62a3beaccc86f86ce46817edf52750
+fb62f780373a8d9a7cf57664839762ae
+fb646917d1565a52b327fb7b5cb5756d
+fb65c7dc03e3df76b395b43e43577a5a
+fb66ac4bc7028d347764bf3d921b5c6f
+fb671bc12c83de2bd8763a94ad6d3e9a
+fb673f359ed727334ac20fbb66134e51
+fb673f5882e36c50a5d8cc3581740970
+fb6b8f644a59d0c49056185784ad9681
+fb6bb9d71a3c98a7a7235e89e7940b12
+fb6ca24ae567715fad5fde44c32b47bf
+fb6df3c111d80a2c8f4ef22a8716e73d
+fb6f5d3739df08c2e4d174788f6286cd
+fb6fa1323406695e86969a294249f273
+fb733df05d7adb6e632d4dc62712f850
+fb7412569990326e98bc9f9e1215f182
+fb762801e562c83026b0bb4c3fc510a1
+fb7a0c166bb6f3070c8d6ec05dd0f8c7
+fb7dab94fba2bc69879782f96559a4dc
+fb7e870f68866d65e552c25d6a3fe19b
+fb808c8c3ab523bd27f8a31dc27b7535
+fb8178c1a0e479ed0fbf21fe477d4dd4
+fb824b004559da48703d3249de88ab3b
+fb84466eba6d6c1b71edbaf6ac0f05d5
+fb84efdba6ef28915ea51b98359a1a73
+fb87ed163795921084325f47cafb06ae
+fb8b8a136ba81a6abd9acdd4506e2d40
+fb8bfa279f49858a6d90e6c630e90428
+fb9017301e4a6d603b5c3584294cceef
+fb939cdb55b13de3e0db4246f7e1c777
+fb9402950a1a9a56c05979863a28eca4
+fb942a66108d9d966bc60f507cda2872
+fb976d812b58c2b1e9309e4ddab46b92
+fb97e4d8a1cdcd62713aa842dd5dea65
+fb98a84ac5ee650d6e626b5feaa2c618
+fb9e411e6ea6d8f2d72fae2880cecb00
+fb9ec1e839409bfc2c8048b14bf3e9a7
+fba0a5f8bfc01b482bc2cb6d5b9c7e4b
+fba0a91e87bd33b4d7991860ceb7ecf4
+fba2f9fbf07892cc8198eb63fe89bdd4
+fba3639ee8db00e1307398d0810f2f13
+fba3e0ecab90f9d11b34e7a2747dc13e
+fba3ed6e2bdaccdda6c28e3ed7012bc6
+fba6a6676fa921f1de8afb231f9d409e
+fbad0aa72c805e93d6850a3fc4fba209
+fbad716f8440017866f39025f1a196cb
+fbadde271cd3cdb9461a7907be9d3315
+fbafdb25c733ca3a8f26a7fd94889463
+fbb0680ffd310715bf05a75c900de1f9
+fbb18042bdf4151aa95b310ec9ffeb38
+fbb19aaf3cae34e4b5952ed05fd3e677
+fbb1f0790f9339c478e3db064f033757
+fbb40c4d95c7e268105b23db583915c7
+fbb4bfef808258683f6af955fe7e7d69
+fbb5c9d75a7b91e1850ee5f05839a5b1
+fbb62dc97d5bdf75a26ec44dab69bcc3
+fbb88bd5b5d23f1b3f74b89dac322d44
+fbbb0c620cf88cc86737fb8c5c64906a
+fbbbfe8c8119a4ae058015af5c94f798
+fbbd437e278c52741c2512471a194a63
+fbc0edaef1a3a9437d8234915af6346f
+fbc3f6922d51f42329a2fa3b7e213d4b
+fbc495429076eddd63f90c862085a313
+fbc5926241d54fdcb75347dd62b0cb9f
+fbc7ad94a052883d8a27cb6b0787a77b
+fbc7b979d090924d627d68ac1018f8f1
+fbc8bd87f82556a18cfe91e635c9e681
+fbd00d79d6a00541b2165011f3c7dab0
+fbd0b5f6043d4a994be075d87964e8bc
+fbd129d6bfb7d4e1c26c61d11d4cb7bf
+fbd1e40cceb5e688700b226430098357
+fbd2a676af819f2693a47165e591ed67
+fbd4f017cd9e4607d036acd010eacde5
+fbd53620e59aebbf20b9f27b2a7c021d
+fbd7339df206b9b46eb90a58b079d84f
+fbd90297ce17470fcd49df0ac12b67d1
+fbd9188918f78f3e1ced79316ef239af
+fbd92a61d0b67861072a62db1c55b3a9
+fbda43fc23406f4ffb5e3bded09a72d9
+fbdbf09237afebcbcbb5e7c5e714068b
+fbdc6b1f6022752ce6168a436ee4c95f
+fbdf16b2f76521df05e75b8723ee5f82
+fbe00d0c59f4e7fe34bec578d407d571
+fbe0b977402e8cb3935cdc5e837d1cbd
+fbe262f49b737942364b8ab3ef0b3f34
+fbe2dcaa2616063d36c0a0bcd57c33e6
+fbe34d085e2e5d32a55273e5ed8007da
+fbe36983c6748521bb73543749c9f3ae
+fbe460cc3760db27829031cd98595d7c
+fbe58b742870c613b2ac43e049d4686a
+fbe5f3c9ac4ae1782061ef8451cbf46e
+fbe656e2a158a085f289478e63bc7475
+fbe75d82be35cdde11a46e5e894586d2
+fbe91424905378f43bee5ed7b2c1b898
+fbe9a3b208907ba3a45841d18f41e3f6
+fbea1b01e5507201b1390e29b7690d0f
+fbee3cf5d732f2e66ea2c4d7df0ad3c4
+fbefdce4ffab4dc094bb1af3f592e9f4
+fbf23a68067e1f5e3f41898bf8f76270
+fbf296136e6a1f1da969d632d5358a42
+fbf341c59eb29e77c149cb7b79a65c4b
+fbf92432e88a9f67ae281693f5c99ffd
+fbfb2a7748d598420e6be0459fb26908
+fbfc1561ac9b1dc004659dc208eba285
+fbff0297ee64f6554a6f4e25700ef76a
+fbff060adb605c6977120ee5a43c36f9
+fc00697d792e85e3f43e9173fc71333f
+fc00f16379bc9ff69a52ff695919b31a
+fc012b03b1bcba86faf4a545dc8f0a59
+fc023fb452f2c9271d62e7e187d5e6c9
+fc0ad29772beff30956141b7f40a82c7
+fc0be796b417926fa5c2a2809abf64c3
+fc0c3f161bac218703c2ed52d7b2a784
+fc0d0a15bec6adaead413017a0d5343e
+fc0d1045a60823e1079ee482bd938c38
+fc0d303c2346e600f61a0fcb7a678be0
+fc0f28ffe6e7d566b07762b0b1201631
+fc0f7ccbca4b80c4514c7cfc853e8b49
+fc10489044a262b61405c6c4ec488fc0
+fc1089c8edc35d903af0607a01640cd0
+fc11552d8e395597f16b7e8fd79aaeac
+fc11bb3ac7377c3c88db6756715d741c
+fc11cd6ce6881fd29d4156eedbde93fb
+fc15432682b25fa5e2fd8327de6d9a54
+fc16a7aadfb30aa2fbd6eec262d58301
+fc18ef9b365239a411eddf6457e96e49
+fc195d1508b47159b06b9146c083617a
+fc1a19ca4b90f4fb51701516b2481239
+fc1a6fc93172f41562832cbc810e5f21
+fc1cffa7b541b16f8f82988db85be19e
+fc1d3170cccfcd5853e37ce4729107f2
+fc1fa3629c39cf3eff868749b06a16b5
+fc1fba744ecb0174bb13f9022912ae00
+fc22b71b75d299ae32ac627f8e92326e
+fc2369efd07dff9b5e76d2ddf7ee19a1
+fc240c7cdf1bb099c85aa1204bb431cf
+fc24531bb6b612960177a8305bccb1f1
+fc2461cc457cd67bd2fd57737285467f
+fc249a2f1396870057ad45e8f4dda017
+fc25e373f93eb0b293a0883dab98733a
+fc265c7558c0a907d10e94d1c6888adc
+fc27023463a9207f5b256ade8c88423e
+fc29b3db67ec4b38313d7e9f67f332ca
+fc2a327c37aff0cb19d56a9b927845a9
+fc2fd3473d06277716ab22eda1357d74
+fc30a135fc8d39bafa22ce93bea51d7c
+fc346a9803ad3e72813cb498dafc2ba3
+fc354b08333c3137a656b2bab90d523a
+fc369bbc3f52fa28d6ece5784d3f5e46
+fc3810de7638d218c98364ae47a7109b
+fc3954813a6b9d0ca92adf723fd138d3
+fc398b9a4b698065c8b373b27db3bfbf
+fc3c4d37984be6600edf39730acfe116
+fc3d3a587ba58898697ec1f07b329992
+fc3d6b560e667372413eb7fe1691b268
+fc3e537de087c9715a108edbd927023b
+fc3edd4ef55184620375e33102756d4b
+fc3f16b62d7e1169103872f30a0acc62
+fc409791dd1c9a1e44e796ca6981a045
+fc4121d8371e19f813e2e8abeaa27583
+fc42a7897790b78e728fdc6309bdfd9b
+fc43934a545ab8a57ea61105a13595bd
+fc4659fd9491faa407e58e62ca1c37c8
+fc47b36a7008201f01c84b180128fa1d
+fc489b509b13d49d96b381c4cadba479
+fc4ad99013730b4b29bed8745e9d5abf
+fc4bf1623d66390b1366584ca5f7da74
+fc4bfd5fcfebe74ca68673d112a15bf4
+fc4c2165274ec4e51bfb2d948e721c92
+fc4d77e835c6fb1885419c85c3f56a48
+fc4f0b75293a960f61e59a5279ad7104
+fc4f1c036e6bc21579f05fae9bce8f37
+fc50c3f708976b7c64a0ad23c82831b3
+fc52233641d5c613b209b2dbe9a1f2b2
+fc531c2c07677c9d8cee643d20159f41
+fc547f13c1a3403e5387c6cdf26e7353
+fc56476e538ca38cd9243b9958e7aeae
+fc5822732a3f0f77ec615da4ef2e8e9b
+fc5b01c5714e419acc0b0dd6c38f3fdf
+fc5bac2472fe158a7460eea13075207e
+fc5bb093613eb41eb2a7882e2a14e45e
+fc5c173b39256ff513a0b5a73ac74287
+fc5d966c716d899ff63b965db1f74d2e
+fc5dc67c759865b4b78746cd03535ed4
+fc5fc4bc78bca1ce5855398b4cb471cc
+fc6136def4ed718c002b8eb02e30ae48
+fc6174e5864957af53ee1ea3ac4a3c09
+fc62f433628e389a705e80c6574a0f66
+fc637f570251f184135bfe12d6effbc8
+fc6410327b3178d042c636e9a6b43ea6
+fc66030d7e959fa583fc8c901e4c07c2
+fc666250be329f146fbc66be050be2b4
+fc66c7fd74ac3f7cbe01bdbdabccb65f
+fc67fe9c58d6028b36a5f8e871d0b974
+fc68fae3c4e097406d1ef29949ca6867
+fc6972ba8e5919bd95caf3d9de543cc1
+fc698a5292665bf0d0615963774cafbb
+fc6bca58243f4f534a946a25937bc136
+fc6d9d2eb6a74a6716b7eb91a2292bde
+fc6f15fb4a3b4b43d6915576cf096a15
+fc6f95d7a18ccf51e08cc6806af492d1
+fc79d791ea4fac1f4d446d6c108a1930
+fc7b1b0dcca0b6cb402f608b5da788c2
+fc7c9d2b1d2b1b20d2c70e083d0646e9
+fc7cd89e2e6492dc859aaa6beb464211
+fc8174ee6ccfeb7f8ba09969aef9b8d0
+fc8262c8ce98a11d9a765a5e905fe3a0
+fc835e402383f24b56708b4680d1284b
+fc83fb0fa8953deb39a6cc1b39b3b8c6
+fc866437834e457a7597a76a5baa2df1
+fc89a34ad2808fd8b396261ff65953fc
+fc8ae1fff5a50e2ccc31dfd454791b50
+fc8b97c3cb6b15cebc69a67c2f1d191f
+fc8dd5d947e330bc8d31ba285ede5a51
+fc8e9658c43853b98508b4a5e8e39e1c
+fc91b222205317045cf82cea3b9f1938
+fc92d6a7861bd1f70815f8efd5868b68
+fc964a0290259c9fc605555ec4a3bd56
+fc97162694d7fb470781ddf3c43170fb
+fc97296809c1ea00d1cfa01ed2e25624
+fc9af53c64a1d60eef0cbb3ce8830792
+fc9c7f397c7db23a95eb28a6075c83f4
+fc9cd0a91ceaac02bea5ede8538b9663
+fca1348857c1ba55b85a2f970a4f008b
+fca1776e9cf97ab5d32aef9dc189b818
+fca1a6f3fe5c39547951d00163a67a1e
+fcaa9e9cd6c6b870d290ff95647cdd7d
+fcabc885e522a09cbc1c0deffe46659c
+fcafabb7d281f7332f0511afb765cb1d
+fcb2b215a71e03d202fab51a0e2499d7
+fcb303d15bc83e94107edc4999effccf
+fcb492606c3fed358a8470fc31e0e8f9
+fcb4f11de6c64045e389a5499ee6359e
+fcb6897b974e541589407d252cf771ce
+fcb84ab9bd275236b3babdaf1f06c3ea
+fcb8b4fd1f1b539c8a2414ad366da700
+fcb8d5bb3b6f8cfeeae8a036679cc493
+fcbbe2a3a73071f3745cc2d3e981e7f2
+fcbc29ce639ff97fce962e375343828a
+fcbdf00155ecaa74b63995e4c93aaa0e
+fcbdf62e202217046c7dee3d9a8754bc
+fcbe1dc00f2b8dc4aa46c23b041a68a9
+fcbe9d6dc973d2971dadbe2e26d3be5e
+fcc02f56b51e43fa0acef0e568d7eefc
+fcc04bdbf9983083e8a7bb40369083c6
+fcc45b860c87c02e398f510c26a5402e
+fcc4a872257764710fb9ac92fe749a89
+fcc4c30a5dabf37b027762ba15a3d64b
+fcc57208c64ce407ceabf35eed7ff0e8
+fcc627633ae4161d4badf8e9b85abcde
+fcc6f18734966d80b1133b3dd79a4be6
+fcc7f33cd9f15bc4de81ad5992d55ca1
+fcc80212b0e0c37640c2e3b94280043b
+fcc9168258a8c53a2679b4398f948315
+fccdbf01805e5b4c761c1d6b8e93153b
+fccf1660cb15a67dd5c15d67e89606bd
+fccf44f3c47853cab40198d2c739e7de
+fcd1763cb95a5438899dae62e7523beb
+fcd2f2364532fc6cf60e576b7d633e25
+fcd65c311c175ee59a8e05e13686bb42
+fcdc5c5445ce000e8d63836f98f1bdb3
+fcdcb327424ebf3e67c8b263776a2407
+fcdd5911b681da6d764f3aef53cfea04
+fcdd70166ba29944034417dcfe6b03c8
+fcdf492bd75a038407d235a0e4413839
+fcdf6d66d9616322b841a2e5f0c6db69
+fce007403bb941cb31d4aa53a5cd54b6
+fce05034c443f97aea28b8101028b037
+fce0bb0bf84d0649b56fe6a775dfc8c2
+fce248a57134c6495046c0d12c47c1f9
+fce2d214a8fe8ad5dd3d6fa99ca726bf
+fce352bb78f1e1dd63262790361db819
+fce4aa39b420029654cbcf0e8fd2ce33
+fce4aa83430b1a1c1dd2bc8ef3825347
+fce6d08af9e01cb22975a6a3f90009e1
+fce7355e30529dc9085a476dd94f8ed1
+fce8998efd3b636c509409a2e7efc626
+fce8a98c9840516c78387597514dbf34
+fceaca71a86fa5d2c1426060747bbc5b
+fcec3d8c8d27d20b69851b31cd56eb01
+fced62b0fb0e9d65ca580a4c57bcdde2
+fcefbd9a7a8ee10f0851b948c1509901
+fcf135ffb8351b982e6973b9bffc03c2
+fcf166e9b07084c52e56d34024090b14
+fcf20d0afbc70c3a330ae6fe844cbb01
+fcf2a5e325d5281021d1c2845810ff63
+fcf33bfa95f9e92aa259f3acf415d456
+fcf3aedad8a7456e973e09e59af6f0de
+fcf3c2fe509940341f5e1eef4543fcd8
+fcfbcc7af26872f24884bbf80b75ff5f
+fcfccb533264308cbb6ac8ab417829c2
+fcfefbdeb094471801307e36eddcfbae
+fd01caaf3181668ca5d9fbd65c7a1d15
+fd029bda90ca044fc2bddc3ed85eb587
+fd046b6d0c594c9b78d275d987305716
+fd0613f5233dea0cef506f333608d8ac
+fd062d7de1d16fb189f9f65e90d51b11
+fd062ea33c146f6d661037cea6ce1ccf
+fd079c54537a30c2a7dffec6a24db0e3
+fd081dff2a98ab0716cc0d155aabbed4
+fd09a6d593307e81dcb8f63bca026e97
+fd0b2a3e8d13b65e124abd379e825d48
+fd0da3f0af96692c6e77eb391ebf664e
+fd0e5a7564c48e75636864dc0d7ae17f
+fd0ee0e2b08abc61a6e4a6e61b2aad81
+fd0f1b545957cae7d1d657083bcb09b0
+fd0f62ec33bd33de5075b1e034eb57e2
+fd11398fd164be2f8426525ba1b20bd1
+fd12c4bbdc1208c6a5add2024ca794ff
+fd12deeccd9db39fca2e192640940db6
+fd12ef2c93a6ef7653f4898ab27df971
+fd1444c780f9a969ef9e55e13b671471
+fd176f9ac133d7417b15af82fe56113a
+fd17dcf7a464a6a1af546708474ea456
+fd17f6f5f5822db324ea87ef1058ae08
+fd19932a5d81fc9dcabaabac2daca035
+fd1ad4b412732689652325e46be2a130
+fd1cc1d4b1e078ea6bbd7475537314ce
+fd1d462854c3bbe7680e06d8a07b0c6a
+fd1dd8f38dc2ea1f8b75483dce001602
+fd1fe77bc6ac439c8cd9da8431ee1383
+fd20c40371557ad7c8d7f70d7a1a7848
+fd22f429a80fac17c52fa8a167fcb63b
+fd2339a6b83dd628bd7939008799ffa5
+fd29e49bf494dbab334de21838240cd1
+fd2afefdf0c2424907763863344c2705
+fd2b300f150e011e41968639c7378f3c
+fd2ba491606918da69f8303f39465836
+fd2ce76bb06193f4accdc9536e60150e
+fd2ea15e66d679d612d8612bec74e6e3
+fd31876328cf86684aa47a739c4bda76
+fd32c4a85aa34dbe51f7449ca6da635e
+fd345e1375f99a1c8e8a13266543503f
+fd357a21ff327c9b37d1fce67672c84f
+fd377fd76e1a4c29b679ee4018e69256
+fd393d9b5b81003bdac56a881cce4f6a
+fd39eb64b0d7d81cdd3a4dc3f44d967b
+fd39ffd0a8d646e4f76bfd385833543f
+fd3ad774c3a8bef21e804a02548eb5db
+fd3c17a3afc6c89ec23a6e37fa3ba25a
+fd3ddf10bb0452a1f49eaf78eab9840b
+fd3eda09ffc6ec510f85c88538cf5395
+fd3f54aceb2841127e42c9e1ea8189fb
+fd3f98b3a7c9a8ff37fc80f5bfbd12af
+fd40fb17ae3fcf90935276128090012f
+fd423f903e5a1a3d746f29268f929176
+fd4403e8b03caaf4146c5d3a02d6998b
+fd4428791ef1f8e75569c3e1c715da1f
+fd4715c1799d596c84c81eebb5de8ac8
+fd4887a1e6a024f728e5d6dea5cbd1aa
+fd49f52370378aae74152cb3b1ecceb7
+fd4d1013ddbb534a67134a19a5803e1c
+fd4dea72ca2ee4062df56d0ee6aedeb5
+fd4e0185ed861a19c3fbc3c56c76adab
+fd4f6c59fdd4252eb93ee8f17f17ed32
+fd4f9c522107a64d79f9c85a843ee7f0
+fd50f63af4992a7dc22e79ccd0829593
+fd54a94a717782105eb350b067055807
+fd55f44e1ecdca033e480c46e1d85b02
+fd59a90519005fd5220ca423f40e99e1
+fd5f3539725f431d7a2f5cd14ff514e5
+fd6211405be57b350fe61418ffb6dfae
+fd65aa0632a6c0b0264bf4dea1b4a54c
+fd674f4ff1506c34cf7d9d17002ee155
+fd67d25b0047e5fe5d27c3fdfbfb5f4a
+fd6a695421b98c2d9d8b2815a524e659
+fd6cd47d9c0ffc6995130247c7797809
+fd6ef63b6dab9c54ad53096023cb78c8
+fd6f3500071e747c33de5634631aa088
+fd7001af36561310393623fe0bd63175
+fd714515b0cfa2579a273479a2b714dd
+fd74f1db4009c1cc342ff36c09eca378
+fd780851bef74e2637421f64c6319291
+fd7e8c69413803d51ba18f4c13630e52
+fd7f5655fb64eb33452c29676c8355c9
+fd818b2f6a65e374126bee689c310b52
+fd85a15d7e8e614fe407fb0e105de673
+fd8707508ee19f5dbcf90e48fbb9015a
+fd875fdecacbb7fce43e07b03998c349
+fd88176cab325251cfd730312b77a795
+fd881b09ba980e349c818dd359ed0a73
+fd883f64ab41da032aab3703b601e27c
+fd8c2f7368896a9d47393dcad183fad7
+fd8cb9571ea20e7ca86a1ea3114d1efe
+fd8db6480e633ea3543e44a9647eed58
+fd8dcd4e414b2e53d509b4e39f450549
+fd8e76edc5b6db122281143b1a03ce4b
+fd8eaae42e11028d042a82d89fa6d38e
+fd8f5e875df0dcb37a2a0197876185ce
+fd90b259d99c52a27d64df9c24398d1e
+fd90bcafa2db78ddfe13877ec2e8fe5b
+fd924e9b97a697029b1866cd4a6156e6
+fd92b797ca4ef0f2c894086b4fe03a9c
+fd939997e7791ba942046b6086a0ac1c
+fd9578fc104d7be380561783244dff20
+fd9acd7d1fe07fa97bd8998e6c684bba
+fd9b31a7e8f15614a5749f5801b31176
+fd9b91a71095219933e1c0a45cc9019e
+fda1207567475603a86635fe374799a7
+fda49b7d8969d5760164d276776c10fe
+fda53381ec8b348e06c0d0c760d4371b
+fda74900c3ab4418a43c029957663876
+fda909dc0854bb78e6fe4f31c9112736
+fda94e84f3ab16c32bcba84949a3a481
+fda959dd28e3a60b47a3fa32a4f059ac
+fda9c4ade4e315c7326d1c43dde1be9f
+fda9e1e833267787ffb0af5a4675155a
+fdaae9c5ef125fc3491609555e79e250
+fdabd8d997b19e8aa416b0f702022bc1
+fdaed45bf9dc61e5087990fbc93d23e9
+fdaf465c0f20e3730fca93abfae8ebc6
+fdaf9d852ba464f35adf2a2d6ffb1784
+fdb025cf703cf66198a3fc70b2daea72
+fdb0826ac5b76ddc258073d6372f5be0
+fdb1a394b867ed58a8d302e84658a58c
+fdb3694ef71ee5c58a626bec8ef73877
+fdb68d18a66772632620d9a9ad353d35
+fdb6f37a9ccf06715843b37ec7ec6fc2
+fdb7fe66042032dae5cec18eb101e47f
+fdb9e55f272aa65d6aea6cc92b4a79e1
+fdba2c498f1ca78221fca1f4da11d432
+fdbd36f93db6caf1a57c50625c42fae1
+fdbda8736e7cac9c9e2102f7d0dd0771
+fdbe21031d7e79efca6eb94cdf2b1ff6
+fdc02e937dacb6cee118359d68e65d7a
+fdc0300326fb97ca4c5c7d1c107e6b46
+fdc0c54a50ce65b8fdc08a5302167cf6
+fdc319a9b38dd6fe38bb6f28434da011
+fdc3572c7bb890a3a1666c80cb1b58e3
+fdc4afe74880691b7169e6b4c64beba7
+fdc68b6ede67cf3fac8bef036d5cb5df
+fdca2b31739a6a212dd43567b2b2dec2
+fdcc83dc63d3cee3129e60b69ea0d5d9
+fdceab7e59ac6c0db949cb6d0f5ab65a
+fdd0d66794b9c01bd98deeff7f237bf9
+fdd3325911a4fce988f6fc3d9c66f64b
+fdd41b8ad30f78a0561a0c059438c41f
+fdd55c04f1ecd3e9a0170a89a7eb6fc5
+fdd5cabb4b0a2efa15f72536e3c11a0c
+fdd7df1467dd4cbb52027dbd10a21870
+fddb863a818a55f586985125957781f4
+fddc66a6049f15a2ac9335112ea003e3
+fddcc782ef4ebbee16a19255274b883d
+fddd1f524c04531aeb4a9ba2cc54d647
+fdddb918c270f217f1bb99717d5d45ec
+fde025c1ea0c29a05df129614596ab1a
+fde0f771e88d4515d5258d35537c23d1
+fde36d1747ec7cc9085fc9b8d4df64b5
+fde50e611451e737af52951b44b38c39
+fde572e2a46017a209cb7363a10c74eb
+fde5de8561aaf55e03f036d42a8db4ff
+fde6d86a03d44f660cebc6029379425d
+fde7ae5c7227c85f708bb28f3bcb0664
+fde7d5ffdfd62888109bac2771c21cb5
+fdea716637af928698d158ebd9f0b036
+fdeb7793dafc96785fbf61f74d85a7ce
+fdecd15430104d1cc27995cacdd24d23
+fded5855351b3edea68dd24127d11bb2
+fdee3f95389ca55e49e52f273699b691
+fdeef6fa0eb871d966c942bd7c915b07
+fdef12af31c6d7fecc2ced267f78ae8a
+fdf739b8a12074a524e3bc88fda1dce0
+fdf76759174cfd9e25fdd23e5f263c08
+fdf8343cbc492e1467780afa55b44b0b
+fdf9007dad76b24a80f2f85cfa302104
+fdfbc01acb27424696849a2da9f3203d
+fdfc65ef95e0dcec5061b3dbd3fbc2c9
+fdfc75a6f4515f76ebaddcc7239e249e
+fdffa96d3cee1ad486c37d85ffbeb80b
+fe0128aad8de6412eb103e1241abf185
+fe01ee02f1ea0ceaef1ef4363a81405f
+fe020b0696be4fa0fdfd72b8bada0d55
+fe08303214ad9353127c14b6f0da073a
+fe09763768b51ff280aa00e7265a13ff
+fe0a71081c28b26136d94a829045a8fd
+fe0aac9a17699e7e1dd875fe76204fee
+fe0c2fa96596de96d9b24e73b865997d
+fe0c7500f6d98963f0b8ab0da4fc1bf4
+fe0da82b3d7d9db97e96f4aaa0d6a33e
+fe10e65dff675f45b671d86c7603e57d
+fe121c9d2ca34d98a968ffe8cde92b86
+fe13f7c7b4306585439160e287089067
+fe1514de90ff458410dfc14b42100573
+fe15c0d5ed19b55811459a1ed2e6955a
+fe15fffee1fd535463472be3dc09c360
+fe1a3b063012aaa9ca266a8bd6e815a8
+fe1a61fb189e0b2c34060460b513cf54
+fe1b39c5f935e30191de53214b281ac1
+fe1d88ab6c33ffec4e6fdb12f9c46ee6
+fe1dd9a361d556359a26c547b5bab5a5
+fe239c8b88fbb04285e0785d6f0ce6e1
+fe278beb1f2ad76473312aef20308b3b
+fe29bc2e40a3e4a053e2063bfe62c959
+fe2ba11caa55294ceb230f49985d6ff0
+fe2c5574c9c0292ab8981f8fd8dea837
+fe2e0ee93ee5eb1602a59a951cd980c6
+fe2f3e22c605eb3a00194adaef8282f0
+fe2f5ca63b286bdef90cfde25e8d4543
+fe3350bb4c1483910f4ef6befddfa83f
+fe337066c08199bf7d9fe3ba6398ded6
+fe3522355333a257462c6a998da6c027
+fe37af1121acc8eea99038b5449dc42c
+fe38c68781841f3e2c7e025adf140ae7
+fe3faed9ba35d7700a1829ac43040da8
+fe4006cca513d267d56778d9f13a479d
+fe42a93fa4247d3fe470e7ed128b2417
+fe4302edc88561f0247d0ef1dac0d5d4
+fe4330efbfca7a52b3319555e035052a
+fe439b38a13bdb8df49b6a46ed2a3f40
+fe460cedef353182362a5c0dbed781f6
+fe4861c16670b46abdb7233b498d6b09
+fe48fce1093ac1ea73fe5801af68a64a
+fe4af76d097fe32cb32b07dbaace5fa3
+fe4afebbc7eff059485846198c812a91
+fe4e6882d86e78f9f9821fac468e1708
+fe56878bf49aba131992500c61be3d4f
+fe5978aba3beaac52dc67e93fde647ed
+fe5a207aa868d990e1cc99df1ff69ca1
+fe5b4e8f894aa960293ecfe741c0b191
+fe5c07a8cbb65ad630626e793bae9c07
+fe5f004e4e6f731bdf87dd96620cf827
+fe60aa5e78c658d7dec77391545e10a6
+fe6116478a3ef478f619e3dcfc252a93
+fe65e8dc4c1b06a56f19f211175b047b
+fe66b580a334de1727bab40a959a5103
+fe689ff12979381ac939a82725f14b5c
+fe6b58abff1e0181af3593b3352ac5c2
+fe6c6ccf1b3756af6f5bfa704c53a62c
+fe6c730c0b7d25ab26d4849a99d52f72
+fe6efda102b589b07d61febb304c323b
+fe7190395b62f5ae7a4c508d2d90dcb7
+fe748248c18a90a4be14d0edd16fe09d
+fe7568bb813808ef3935bcd2fad37dae
+fe7840c578b9652984eb0d0a1c50f400
+fe7a28f23a7359828911e01b5b21a26f
+fe7a4cbb4c5acb00fa44d22fc01aa888
+fe7c5f1b940f629ca3633bf4da2533ba
+fe7d21a88c431fcba66f282a860f5fa6
+fe7e14d43bbfc0e0aa5aaffdd4077eb6
+fe7f05bcd129663e108dcf37e9c8ba01
+fe7f90fa849d7ff9a9ba171c0ae5c24d
+fe826116269e6dc22fac3d927e9aee48
+fe83f2f304407757093bc9b00ba60bd7
+fe84cabfed2b16dd6f95ab2bc663d163
+fe85e9d295826d9a46d769d4dfd07be1
+fe85fba83877d96aa1202b631a24fbc9
+fe8a983d950a0b5dc224722e76651db5
+fe8b84c3fd2e847cde501e2b52205bc8
+fe8d31e8c9cdccfa8dfb9a0c39c48afb
+fe909fe8d00ac4e41125c86ffe99b744
+fe910f15168ec03ce2831191ca30acba
+fe96f563555fa64109ff27de153f8e68
+fe97684af9771442e6aaf76a8250b30e
+fe9a6fe38ae9dbe0a2f68348ef017983
+fe9af4332c84650bd962178c16209751
+fe9c827f7212edb153c40d5c504b8a26
+fe9de99fe592731f4d93c599bad689a1
+fe9e03a8013f452eab395047fd68a2f8
+fea28a5746e45a0b12e676b1ca44bc14
+fea4390d46d17d5e0e07a97cff4ef075
+fea605a86fb68eed4240558de75d338b
+fea6e0fef29727269d12a02d03e8879b
+fea6f86303a3194714be723c85872798
+fea7a3e4b1b779bb0ae814a765b8e873
+fea8400636aa6182a7b0a0f5ee66a540
+fea9044824bc24433835d73fb2baa82b
+feaa0770c619acadfec96b75d61e2380
+feaca2e1ff96cf9d9ef8e0f3be80558f
+feaf2c044c84624c5fdc07b55206e01c
+feb00978d1499ec44b0af79be3adbd4b
+feb068ee8e3c28a76b58aa991cd1b4c9
+feb11e42ec103095c5bf1b0363d24922
+feb3f68293b09c5b146eb73ea1bfcafe
+feb3f98719dff112625d68cabaa2d8d3
+feb499ba92120ec2c99236ed292405e3
+feb73e866bfe9a24f4380b89b41c91dc
+feb9f6fbab110816b7d9b40948fcf392
+febc05bb5e2619915f57bed34496a080
+febe63320d1abf4e5788f4b92cb1a14e
+febf9be8a3a33110c276d47cbe444977
+febfad9d4e74a9df68b536384685f914
+fec1627ebbf9c2e0b19aa1abdeace369
+fec31e3c5636d034db7d77b74d392837
+fec9120eb69e66e0b0ffc954c107e06e
+feca5dc85f0e16b548826b11257e7668
+fece40aac7c899a992d61f1160ca69ef
+fece65a24bfa92478d9aabb5e10524ea
+fed101f4306f32e89c67051a80038936
+fed13a5e2c97591385ea77a3f810bd70
+fed288c923ce63d5747893c906b4d2ff
+fed2f6c1c54381a966254ff29628dc33
+fed6df01cab3e20264c1e1c29d2fe478
+fed6fc636acf1d7afaa2f1c731183c98
+fed9fb88d5fc6e3cbad60da486db8db2
+fedaf944ce73a2d22045b6942a8f4e9c
+fedb473a8fc368f641d4798ea281e5f0
+fedb8d83f3f99ba774319ee865b2bcec
+fedc4ae3203d3c6c8812a25a9bc7cc1b
+fedfe858672a7767ad203f024cc8efca
+fee08b0ce490733f4f40ef2c16eac7a4
+fee33ef3c8cb7d8af69515d97c060ab9
+fee415e0368f6c8085e1f648a9f90134
+fee44874cfe6f529e200eaf8f85df43a
+fee8d87c869018870c815db95cd72c9a
+fee94e5693516528872ffe0604915eee
+feea4177c2112af966a5966d9f415fa4
+feec501f02a92df68cac935fe8c7d80f
+feed2b93cb932c13dcf3d1c5bb550c05
+feee9a4b4f321732ce4b4622f5316eb6
+feef9fd3bfcd6d8171b2b38c234c7a6d
+fef16fd5a5955fcf3c248ee0534df2b5
+fef185831b53fa6bbba72d09199a96ea
+fef2dc1ac0cc2b1651c3dc136ff01a28
+fef4175f6ca217ce3c1b15deae3526ff
+fef5aa3e1897be2436e28c5aded3c308
+fef7884338438ce445b9a64408d5836a
+fef80ba2651edf62be9b02204f14a684
+fef8a361d5dfd33ecba109224ee5038f
+fefb071c85eea070fb5a746358cf3d5e
+fefd1ca0c28a252098abc559fd97d965
+fefebcfbbcff9a021d1cbef80c5512c4
+ff008dd88b82ab0aec8ddd9d2f3c1317
+ff00b295f2c17800f8bb61c511827837
+ff00c1cfc715f80b40a7cfab2452be2e
+ff04a809201b0413854978fb0c806ce2
+ff06a24fccbb0766802fda96659a5405
+ff06d92372b3503d4bd29108ca893112
+ff08b4ab5b226db93ae9358bcb6aa73f
+ff0962b8540fc4426d9ab8c5f804ad8e
+ff0a6713c28202159927b3463281355e
+ff0a962245ae339a165e36b643aeeaf4
+ff0afc56b8e788821134edbcc68ff703
+ff0eb97a78becafad988ce36dc58fe33
+ff0ecfb1fa537371e4d9fb29020a531a
+ff107862dd640e096a947a1806fdfa88
+ff116155f8c0f0b3c51d17f26beb6911
+ff136b6f3da2ccacfe8286dd561c9289
+ff14697d142a8712c55d0d3a72d3d241
+ff14b615ab94c9d2ba5af647b1e7fc01
+ff166677b27ce68f0be221b36fc92a77
+ff17ed00fa3884f4cc42a4b0f0c2465f
+ff1949fc0a0ca76f47548b466bfb635b
+ff1cc67806a84cdd3edbd49923cb7017
+ff22a3721d519d95ebc3d33bd9fadd34
+ff247086752290cccbf4ad67b5250166
+ff24f928bdcb760355e825b5df17e010
+ff25b948ce2fe844ab640c4d6ece3538
+ff2607011d5a5d67351c9b17c5ab745b
+ff266ec90858b3d0dcbc0a7441b41d84
+ff2a0cfd542bd2318d7bc0f64a78d0f6
+ff2b3eb773a53660896b753067686cb3
+ff2c8c5bd21d88286073227b2b17fa9e
+ff2d1d4ea73ded804269482057da11f0
+ff2efaf48bb3a229db962e709c6d95de
+ff35a63f215046e021b1627c05a33387
+ff35d32a44f393599be1a3ab2ee94a9b
+ff37c6baa4d11b995956bb57b3ffa1d7
+ff37d21a9793558aa890ba553a2c2270
+ff39c4cb2bca3d2a8e3ecf6ee4da842b
+ff3b2dd8a6f9f24232013e6c4f6ee530
+ff408bbf0e9dcce6d4fe50a85371ea31
+ff40ead0e64ac3510ef3f87f2bf146bc
+ff4664aaa0006426c1a6c45528b84318
+ff4711ba6fcd2a4a36bee8cb2ee1e805
+ff47a78f1d647f1b223621ffb933d716
+ff47df32fa4daec649bdb7680a342718
+ff495554aab44edb5e62f653fac69326
+ff4a2f083cb63e053ce60f5d40034543
+ff4de078bdd01a05aa2e17878d0c64d6
+ff5185fa1dce45618224432060810e3b
+ff52bf3f721773f1413c1e8b19d2a88a
+ff52c3c63aeae7045d517c932bb229ce
+ff550948742ce575edb6f3cac212d5f2
+ff556f0b9393c3fed13e0f5d36ab8dae
+ff5734d1aa6c622884ee56eb8c6690b1
+ff590878a55e5c5969cded82ec13584f
+ff59e4390fe2d5c3044198dbc0d70754
+ff5bd1b7e45a8e590e449777b762feb0
+ff5dd65ed4f495b1f2a380c670e98702
+ff61bb10d210bb0c72b0ecc6f45b722d
+ff6286edf5e8e6eeebad4ffe5bb97b22
+ff6347cdbff3d963ef396f29c89dd5d2
+ff64d7e12d06da89b4d4dc5c1e2007e1
+ff67416f6be5ff7f1664ac93d946bc61
+ff68942431c93f792b1e56b0da56ed82
+ff6a45bcf786b24af2e90b7ceb2079b9
+ff6afe7f97c8b8df422be97d48feaddb
+ff6bd8497c3d3aea7f51625c70abbe63
+ff6c6c2075f04020241e54dfc5db741a
+ff6c730a20cd7facdac591a48f9ac3a6
+ff6d609348ba719262b24664d4005fb9
+ff6df8db04c90987eba365615327b94e
+ff71805bdcfe2248d52bee4e0b707d0b
+ff71f3a6369bbecccdcee869073f1b71
+ff726154c6cbe0210923c556e1852dc7
+ff72d7b87a310e97ec6c9c8e8ce4ab77
+ff748c8f9d27f8f484613fbdaad00799
+ff7ae88de9f08a441636378aa4ea2021
+ff7c4a92fe91727f62cc71270016a319
+ff7f7dd10730508f2921ac5a14d6d5c7
+ff8204a4476dc0467dbadae97251bf6e
+ff82d3c3e774a4f46e5deb52191a0fc6
+ff831717a5809c0c5e8a97e514f6294c
+ff8473820b215df1504338da655fac4c
+ff85b119b4d24d25e555276aec5f641d
+ff864d7a4df0d05b11a501d58831b14a
+ff8705e27f88bb6bf34cd3d4152ef43e
+ff87819215bc249e2383f3c6eca832c1
+ff88946498acefe90bb347ce489cc92d
+ff89d9298c936f318e31abf29ef779fe
+ff8a1cfaa841b5c26997bde5f83c1fbe
+ff8acd12b05e64f5a6277f1cab9e9b1b
+ff900855ef2d9c05d842359b5e091dff
+ff91d654536517f0d97b9fc32ccf8d47
+ff93d2d990c580b875818a17c6584db2
+ff93ee2524c5ceeb4f9e875a8f4524b8
+ff967e254c09a5fa162d2c513e9cd465
+ff96cfc14006dcd5cd2f5055e02692a7
+ff96fe6e31d316945953e5debecf9e11
+ff98ada849d1d15b19948bfd413e5a16
+ff98dba25967436309ca639db18e287e
+ff9aca746c779d1f530183e464cf61a8
+ff9b66d3fa3e59ad7d5187c5fc32dfce
+ff9d56068b5c792c2412a86509af099d
+ff9e0dcaa7dd967bbeba8f357d3102c0
+ffa2f34877c96d16515ddc44e59cf39b
+ffa4c7c35cbb60bd5bac8c2692805b67
+ffa4ee2b7c22e517d1e51a2d7ba96c64
+ffa6216f0e5c59a3696c3092282dd4cc
+ffa622a3c8bf0e0afc36215800b166a9
+ffa69780d558254045c441e668f8be0d
+ffaa3de32a34545a25d20d8ca7f77f1e
+ffab254e799fd42d10da6d4c9f32bf1c
+ffab9ae62ea5149cebc770d69ab1fc3b
+ffabb8920899a83a51d88dc6ba5e2596
+ffacf536cb9e5458611bcc4b3b492502
+ffaea6b3910d55fd6763508599326c3a
+ffafb43b04dfdcb4aae126160ddb6ab0
+ffb33077c61dcb2d89ce36de45d66db2
+ffb60240a34f090700f1fc2fd60cb54f
+ffb6c4885c962d804ee755a94076b408
+ffb70773b34e244bbcc97a614a625fe9
+ffb74266d52bf044cff87eab01bcf2dc
+ffb7dcf84173252ff46d602e9f22e577
+ffbb402e50ae32f31b0f54368603c4ff
+ffbcac9b7410e5c1d7c0c92b424d8a44
+ffbcd43aa88c27bbaf8e2fd6907faaed
+ffbf4efac6f9d16dadbf3cf7a6d4612b
+ffc1006148dd133b1953cd96a431adbd
+ffc256d13f4df40bf09c0a0e7d68b315
+ffc381c16bc2d2783993bf5d6e6e0bdb
+ffc613c073b6677d6717edd112f10a47
+ffc775490528b517eff7d17e397510f3
+ffc8e908fc26935d33c25bb4ebf070b3
+ffc94869e1d121f3239c80a4b6692914
+ffc9782687f50899f19760e8e3f61453
+ffcbc55833146dda45a8895336fc16e3
+ffcc56cfee46a62a7594c29b401bf8cf
+ffcd6272e9b54f1183efd9f0d46b1bd0
+ffce45e8ac3827ea2afb49fbd2c9ac81
+ffd07816a2a97d5f56562259846c7e8c
+ffd18881dba66205c4e21e6dff2e70bb
+ffd268d7d7660ca5fbac103cfa50f5e5
+ffd2da4d58f6bccacb985215be811cd5
+ffd38187be49ba0f49119fe65b09cd0e
+ffd3d80bf0be1a7d0603e9be1e6405ac
+ffd5835db9764d772f52e1aa436e8e3d
+ffd59357b780c83f68417ed09a1f5a7d
+ffd619f48330dcd319abb3d2c16fa889
+ffd68d3fb874785c712b4d0e9a3e3c9d
+ffdbabfd29ea1c65e46c7e60c16766ad
+ffdc85f52099df3d7249e554d5d9e9b7
+ffdcb5d25eaf9605a33859fc29c1f3a2
+ffdd58a0260f0ad2ed6f8db06cce94d9
+ffdd64267fcebe859e7031ef6b3d6bce
+ffddc05f4964f02f82dae3920d11eb63
+ffddc2a6a7b91c2168de455bc250a797
+ffe00046a95ddb1b7ac23ede3b3ba5ba
+ffe178fa7ae80392cec1e8b48eeadd96
+ffe49d8eccbd5e3aae5e6e3dec0dd4ab
+ffe4b36820d831cb3d2b89c5721b9305
+ffe501ade265af9a9d3646896f5888a7
+ffe5a9b378ce9daedcb3cffddf5222ed
+ffe68c0a5dc030648fcb6ee406f96b66
+ffe69d829af68ded36787aadf32bbf95
+ffe78d515dbed78b8a75415c98633ce1
+ffead1d08cb28c4af100783413415145
+ffeb50773926188e20ddbfdb08212eaa
+ffed5926e8ea23b3cb743d4075d61452
+ffee9a7d8f0b158120861f460aff695c
+fff0ab39c75cf5441fcece68da746c7c
+fff1bbba90ee509950dc3d634fd6efa3
+fff2eed02d5934c5443f7b727bcdb8bd
+fff33d3a8a4c6b80f5e80052eb7c897d
+fff736864cf8bb0df27b9e55a1921fb4
+fffb3b61e603ae263fd0b9f3b085fd63
+fffcb0601c17a4ef20a9b4bb00a2a6a9
+fffccc91ba9f9e0e5d63a0167a71701b \ No newline at end of file
diff --git a/searx/data/currencies.json b/searx/data/currencies.json
index ad4e08f..9ad60d5 100644
--- a/searx/data/currencies.json
+++ b/searx/data/currencies.json
@@ -1,7667 +1,14744 @@
{
"names": {
- "francos franceses": [
- "FRF"
- ],
- "bulgarischer lew": [
- "BGN"
- ],
- "o\u0308rme\u0301ny dram": [
- "AMD"
- ],
- "oekrai\u0308ense hryvnja": [
- "UAH"
- ],
- "guatemalan quetzal": [
- "GTQ"
- ],
- "ghana cedi": [
- "GHS"
- ],
- "livre de sainte helene": [
- "SHP"
- ],
- "papua new guinean kina": [
- "PGK"
- ],
- "aud": [
- "AUD"
- ],
- "\u20ab": [
- "VND"
- ],
- "olasz li\u0301ra": [
- "ITL"
- ],
- "aserbaidschan manat": [
- "AZN"
- ],
- "ethiopian dollar": [
- "ETB"
- ],
- "norwegische krone": [
- "NOK"
- ],
- "papoea nieuw guinese kina": [
- "PGK"
- ],
- "som uzbeko": [
- "UZS"
- ],
- "yuan chino": [
- "CNY"
- ],
- "nuevo dolar de taiwan": [
- "TWD"
- ],
- "zweedse kronen": [
- "SEK"
- ],
- "dollar des i\u0302les cai\u0308mans": [
- "KYD"
- ],
- "do\u0301lar de singapur": [
- "SGD"
- ],
- "gru\u0301z lari": [
- "GEL"
- ],
- "escudo mozambiquen\u0303o": [
- "MZE"
- ],
- "peso filipino": [
- "PHP"
- ],
- "grivnia ucraniana": [
- "UAH"
- ],
- "salamon szigeteki dolla\u0301r": [
- "SBD"
- ],
- "barbados dollar": [
- "BBD"
- ],
- "fuang": [
- "THB"
- ],
- "dirham marroqui": [
- "MAD"
- ],
- "sri lankan rupees": [
- "LKR"
- ],
- "qindarka": [
- "ALL"
- ],
- "dinaro macedone": [
- "MKD"
- ],
- "togrog": [
- "MNT"
- ],
- "q\u0259pik": [
- "AZN"
- ],
- "special drawing rights": [
- "XDR"
- ],
- "gibralta\u0301ri font": [
- "GIP"
- ],
- "dinar bahraini": [
- "BHD"
- ],
- "marokkaanse dirham": [
- "MAD"
- ],
- "rouble sovie\u0301tique": [
- "SUR"
- ],
- "tanzanian shilling": [
- "TZS"
- ],
- "libra de siria": [
- "SYP"
- ],
- "rand sudafricano": [
- "ZAR"
- ],
- "seychelse roepie": [
- "SCR"
- ],
- "seychelse roepia": [
- "SCR"
- ],
- "forint": [
- "HUF"
- ],
- "dinar algerino": [
- "DZD"
- ],
- "roupie du sri lanka": [
- "LKR"
- ],
- "katar riyal": [
- "QAR"
- ],
- "schekalim": [
- "ILS"
- ],
- "corona checoslovaca": [
- "CSK"
- ],
- "baht tailande\u0301s": [
- "THB"
- ],
- "nuevo peso": [
- "ARS",
- "UYU"
- ],
- "cuna croata": [
- "HRK"
- ],
- "nieuwe israe\u0308lische shekel": [
- "ILS"
- ],
- "nieuwe israelische shekel": [
- "ILS"
- ],
- "dollar des i\u0302les fidji": [
- "FJD"
- ],
- "nieuw zeelandse dollar": [
- "NZD"
- ],
- "tanza\u0301niai shilling": [
- "TZS"
- ],
- "gold franc": [
- "XFO"
- ],
- "tongan pa`anga": [
- "TOP"
- ],
- "francia frank": [
- "FRF"
- ],
- "brl": [
- "BRL"
- ],
- "isla\u0308ndische wa\u0308hrung": [
- "ISK"
- ],
- "guyana dollar": [
- "GYD"
- ],
- "dollaro australiano": [
- "AUD"
- ],
- "nakfa e\u0301rythre\u0301en": [
- "ERN"
- ],
- "kap verde escudo": [
- "CVE"
- ],
- "dinar iraqui\u0301": [
- "IQD"
- ],
- "vietnamese dong": [
- "VND"
- ],
- "neuer sol": [
- "PEN"
- ],
- "peso de argentina": [
+ "أبصار أبخازي": "ABA",
+ "abchazský apsar": "ABA",
+ "abchasischer apsar": "ABA",
+ "abkhazian apsar": "ABA",
+ "apsar": "ABA",
+ "آپسار آبخاز": "ABA",
+ "abhasian apsar": "ABA",
+ "apsar abkhazo": "ABA",
+ "abhaški apsar": "ABA",
+ "apsar abcaso": "ABA",
+ "abchazijos apsaras": "ABA",
+ "apsar abcásio": "ABA",
+ "абхазский апсар": "ABA",
+ "abhazya apsarı": "ABA",
+ "абхазький апсар": "ABA",
+ "阿布哈兹阿沙": "ABA",
+ "درهم إماراتي": "AED",
+ "dírham dels emirats àrabs units": "AED",
+ "dirham spojených arabských emirátů": "AED",
+ "vae dirham": "AED",
+ "ντιρχάμ ηνωμένων αραβικών εμιράτων": "AED",
+ "united arab emirates dirham": "AED",
+ "uae dirhamo": "AED",
+ "dírham de los emiratos árabes unidos": "AED",
+ "درهم امارات": "AED",
+ "yhdistyneiden arabiemiirikuntien dirhami": "AED",
+ "dirham des émirats arabes unis": "AED",
+ "dirham dos emiratos árabes unidos": "AED",
+ "דירהם איחוד האמירויות הערביות": "AED",
+ "dirham uae": "AED",
+ "emirátusi dirham": "AED",
+ "dirham degli emirati arabi uniti": "AED",
+ "uaeディルハム": "AED",
+ "jungtinių arabų emyratų dirhamas": "AED",
+ "dirham zjednoczonych emiratów arabskich": "AED",
+ "dirrã dos emirados árabes unidos": "AED",
+ "dirham eau": "AED",
+ "дирхам оаэ": "AED",
+ "уае дирхам": "AED",
+ "emiratisk dirham": "AED",
+ "ஐக்கிய அரபு அமீரக திர்கம்": "AED",
+ "birleşik arap emirlikleri dirhemi": "AED",
+ "дирхам оае": "AED",
+ "阿联酋迪拉姆": "AED",
+ "أفغاني": "AFN",
+ "афганистански афган": "AFN",
+ "afgani": "AFN",
+ "afghánský afghání": "AFN",
+ "afghani": "AFN",
+ "αφγάνι": "AFN",
+ "afghan afghani": "AFN",
+ "afgana afganio": "AFN",
+ "afgani afgano": "AFN",
+ "afganistani afgaani": "AFN",
+ "افغانی": "AFN",
+ "afganistanin afgaani": "AFN",
+ "אפגני": "AFN",
+ "afganistanski afgani": "AFN",
+ "afgán afgáni": "AFN",
+ "アフガニ": "AFN",
+ "afganis": "AFN",
+ "afghaanse afghani": "AFN",
+ "afegane": "AFN",
+ "афгани": "AFN",
+ "авганистански авгани": "AFN",
+ "афгані": "AFN",
+ "阿富汗阿富汗尼": "AFN",
+ "ليك ألباني": "ALL",
+ "албански лек": "ALL",
+ "lek": "ALL",
+ "albánský lek": "ALL",
+ "albanske lek": "ALL",
+ "albanischer lek": "ALL",
+ "λεκ": "ALL",
+ "albanian lek": "ALL",
+ "albana leko": "ALL",
+ "lek albanés": "ALL",
+ "albaania lekk": "ALL",
+ "لک آلبانی": "ALL",
+ "לק": "ALL",
+ "albanski lek": "ALL",
+ "albán lek": "ALL",
+ "lek albanese": "ALL",
+ "レク": "ALL",
+ "albanijos lekas": "ALL",
+ "albanese lek": "ALL",
+ "албанский лек": "ALL",
+ "albánsky lek": "ALL",
+ "அல்பேனிய லெக்": "ALL",
+ "arnavut leki": "ALL",
+ "албанський лек": "ALL",
+ "阿爾巴尼亞列克": "ALL",
+ "درام أرميني": "AMD",
+ "арменски драм": "AMD",
+ "dram": "AMD",
+ "arménský dram": "AMD",
+ "armenske dram": "AMD",
+ "armenischer dram": "AMD",
+ "ντραμ": "AMD",
+ "armenian dram": "AMD",
+ "armena dramo": "AMD",
+ "dram armenio": "AMD",
+ "armeenia dramm": "AMD",
+ "درام ارمنستان": "AMD",
+ "דראם ארמני": "AMD",
+ "armenski dram": "AMD",
+ "örmény dram": "AMD",
+ "dram armeno": "AMD",
+ "ドラム": "AMD",
+ "armėnijos dramas": "AMD",
+ "armeense dram": "AMD",
+ "dram arménio": "AMD",
+ "армянский драм": "AMD",
+ "arménsky dram": "AMD",
+ "јерменски драм": "AMD",
+ "ஆர்மேனிய டிராம்": "AMD",
+ "ermeni dramı": "AMD",
+ "вірменський драм": "AMD",
+ "亚美尼亚德拉姆": "AMD",
+ "غيلدر الأنتيل الهولندية": "ANG",
+ "florí de les antilles neerlandeses": "ANG",
+ "gulden nizozemských antil": "ANG",
+ "antillen gulden": "ANG",
+ "karibischer gulden": "ANG",
+ "caribbean guilder": "ANG",
+ "netherlands antillean guilder": "ANG",
+ "karibia guldeno": "ANG",
+ "nederlandantila guldeno": "ANG",
+ "florín antillano neerlandés": "ANG",
+ "florín caribeño": "ANG",
+ "holandarren antilletako florin": "ANG",
+ "گیلدر آنتیل هلند": "ANG",
+ "گیلدر کارائیب": "ANG",
+ "alankomaiden antillien guldeni": "ANG",
+ "florin des antilles néerlandaises": "ANG",
+ "florín das antillas neerlandesas": "ANG",
+ "karipski gulden": "ANG",
+ "nizozemskoantilski gulden": "ANG",
+ "holland antillákbeli forint": "ANG",
+ "karibi forint": "ANG",
+ "fiorino delle antille olandesi": "ANG",
+ "アンティル・ギルダー": "ANG",
+ "nyderlandų antilų guldenas": "ANG",
+ "antilliaanse gulden": "ANG",
+ "caribische gulden": "ANG",
+ "florin de las antilhas neerlandesas": "ANG",
+ "gulden antyli holenderskich": "ANG",
+ "florim das antilhas neerlandesas": "ANG",
+ "florim do caribe": "ANG",
+ "карибский гульден": "ANG",
+ "нидерландский антильский гульден": "ANG",
+ "antillergulden": "ANG",
+ "hollanda antilleri guldeni": "ANG",
+ "нідерландський антильський гульден": "ANG",
+ "荷屬安的列斯盾": "ANG",
+ "كوانزا أنغولي": "AOA",
+ "анголска кванза": "AOA",
+ "kwanza": "AOA",
+ "angolská kwanza": "AOA",
+ "κουάνζα": "AOA",
+ "angolan kwanza": "AOA",
+ "angola kvanzo": "AOA",
+ "kwanza angoleño": "AOA",
+ "کوانزای آنگولا": "AOA",
+ "קוואנזה": "AOA",
+ "angolska kvanza": "AOA",
+ "angolai kwanza": "AOA",
+ "kwanza angolano": "AOA",
+ "クワンザ": "AOA",
+ "kvanza": "AOA",
+ "angolese kwanza": "AOA",
+ "ангольская кванза": "AOA",
+ "ангольська кванза": "AOA",
+ "kwanza angola": "AOA",
+ "安哥拉匡撒": "AOA",
+ "peso oro sellado": "ARG",
+ "بيزو أرجنتيني": "ARS",
+ "аржентинско песо": "ARS",
+ "peso argentí": "ARS",
+ "argentinské peso": "ARS",
+ "argentinischer peso": "ARS",
+ "πέσο αργεντινής": "ARS",
+ "argentine peso": "ARS",
+ "argentina peso": "ARS",
+ "peso": [
+ "UYU",
+ "PHP",
+ "MXN",
+ "CUP",
+ "COP",
+ "CLP",
"ARS"
- ],
- "ddr mark": [
- "DDM"
- ],
- "br$": [
- "BND"
- ],
- "e\u0301szak koreai von": [
- "KPW"
- ],
- "japanse yen": [
- "JPY"
- ],
- "franco svizzero": [
- "CHF"
- ],
- "afghani afgano": [
- "AFN"
- ],
- "lira siriana": [
- "SYP"
- ],
- "boliviano": [
- "BOB"
- ],
- "vanuatui vatu": [
- "VUV"
- ],
- "tnd": [
- "TND"
- ],
- "manat turkmene": [
- "TMT"
- ],
- "namibia dollar": [
- "NAD"
- ],
- "ern": [
- "ERN"
- ],
- "manat turkmeno": [
- "TMT"
- ],
- "bds$": [
- "BBD"
- ],
- "bhutaanse ngultrum": [
- "BTN"
- ],
- "peso chilien": [
- "CLP"
- ],
- "dolar jamaicano": [
- "JMD"
- ],
- "bahamas dollar": [
- "BSD"
- ],
- "eritrese nakfa": [
- "ERN"
- ],
- "czk": [
- "CZK"
- ],
- "engels pond": [
- "GBP"
- ],
- "dolar de bermudas": [
- "BMD"
- ],
- "taka bangladeshi\u0301": [
- "BDT"
- ],
- "riyal del qatar": [
- "QAR"
- ],
- "kuwaiti dinar": [
- "KWD"
- ],
- "seychellen rupie": [
- "SCR"
- ],
- "boli\u0301var ve\u0301ne\u0301zue\u0301lien": [
- "VEF"
- ],
- "sri lanka rupie": [
- "LKR"
- ],
- "do\u0301lar de brunei": [
- "BND"
- ],
- "do\u0301lar de las islas salomo\u0301n": [
- "SBD"
- ],
- "lak": [
- "LAK"
- ],
- "sum uzbeko": [
- "UZS"
- ],
- "kurus\u0327": [
- "TRY"
- ],
- "iraqi dinar": [
- "IQD"
- ],
- "livre sterling": [
- "GBP"
- ],
- "angolai kwanza": [
- "AOA"
- ],
- "lat": [
- "LVL"
- ],
- "lek albanais": [
- "ALL"
- ],
- "brunei dolla\u0301r": [
- "BND"
- ],
- "tetri": [
- "GEL"
- ],
- "sterlina sudsudanese": [
- "SSP"
- ],
- "mo\u0308ngo\u0308": [
- "MNT"
- ],
- "mexican un peso coinage": [
- "MXN"
- ],
- "djiboutische frank": [
- "DJF"
- ],
- "seychelle i ru\u0301pia": [
- "SCR"
- ],
- "litauischer litas": [
- "LTL"
- ],
- "zambiaanse kwacha": [
- "ZMW"
- ],
- "maldi\u0301v szigeteki ru\u0301fia": [
- "MVR"
- ],
- "dinar bahreini\u0301": [
- "BHD"
- ],
- "barbadiaanse dollar": [
- "BBD"
- ],
- "drachme": [
- "GRD"
- ],
- "emalangeni": [
- "SZL"
- ],
- "canadese dollar": [
- "CAD"
- ],
- "mx$": [
- "MXN"
- ],
- "chinesischer renminbi": [
+ ],
+ "argentina peeso": "ARS",
+ "peso argentinar": "ARS",
+ "پزوی آرژانتین": "ARS",
+ "argentiinan peso": "ARS",
+ "peso argentin": "ARS",
+ "peso arxentino": "ARS",
+ "פסו ארגנטינאי": "ARS",
+ "argentinski pezo": "ARS",
+ "argentin peso": "ARS",
+ "peso argentino": "ARS",
+ "アルゼンチン・ペソ": "ARS",
+ "argentinos pesas": "ARS",
+ "argentijnse peso": "ARS",
+ "peso argentyńskie": "ARS",
+ "peso argentinian": "ARS",
+ "аргентинское песо": "ARS",
+ "аргентински пезос": "ARS",
+ "argentinsk peso": "ARS",
+ "ஆர்ஜென்டின பீசோ": "ARS",
+ "arjantin pesosu": "ARS",
+ "аргентинський песо": "ARS",
+ "peso argentina": "ARS",
+ "阿根廷比索": "ARS",
+ "دولار أسترالي": "AUD",
+ "австралийски долар": "AUD",
+ "dòlar australià": "AUD",
+ "australský dolar": "AUD",
+ "australske dollar": "AUD",
+ "australischer dollar": "AUD",
+ "δολάριο αυστραλίας": "AUD",
+ "australian dollar": "AUD",
+ "aŭstralia dolaro": "AUD",
+ "dólar australiano": "AUD",
+ "austraalia dollar": "AUD",
+ "australiar dolar": "AUD",
+ "دلار استرالیا": "AUD",
+ "australian dollari": "AUD",
+ "dollar australien": "AUD",
+ "דולר אוסטרלי": "AUD",
+ "australski dolar": "AUD",
+ "ausztrál dollár": "AUD",
+ "dollaro australiano": "AUD",
+ "オーストラリア・ドル": "AUD",
+ "australijos doleris": "AUD",
+ "australische dollar": "AUD",
+ "dolar australian": "AUD",
+ "dolar australijski": "AUD",
+ "австралийский доллар": "AUD",
+ "austrálsky dolár": "AUD",
+ "аустралијски долар": "AUD",
+ "australisk dollar": "AUD",
+ "அவுஸ்திரேலிய டொலர்": "AUD",
+ "avustralya doları": "AUD",
+ "австралійський долар": "AUD",
+ "đô la úc": "AUD",
+ "澳大利亚元": "AUD",
+ "فلورن أروبي": "AWG",
+ "florí d'aruba": "AWG",
+ "arubský florin": "AWG",
+ "aruba florin": "AWG",
+ "φλορίνι της αρούμπα": "AWG",
+ "aruban florin": "AWG",
+ "aruba guldeno": "AWG",
+ "florín arubeño": "AWG",
+ "aruba floriin": "AWG",
+ "florin arubar": "AWG",
+ "آروبا فلورین": "AWG",
+ "aruban floriini": "AWG",
+ "florin arubais": "AWG",
+ "florín de aruba": "AWG",
+ "פלורין ארובי": "AWG",
+ "arupski florin": "AWG",
+ "arubai florin": "AWG",
+ "fiorino arubano": "AWG",
+ "アルバ・フロリン": "AWG",
+ "arubos florinas": "AWG",
+ "arubaanse florin": "AWG",
+ "florin arubański": "AWG",
+ "florim arubano": "AWG",
+ "florin arubez": "AWG",
+ "арубанский флорин": "AWG",
+ "arubansk florin": "AWG",
+ "aruba florini": "AWG",
+ "арубський флорин": "AWG",
+ "阿魯巴弗羅林": "AWG",
+ "مانات أذربيجاني": "AZN",
+ "азербайджански манат": "AZN",
+ "manat azerbaidjanès": "AZN",
+ "ázerbájdžánský manat": "AZN",
+ "aserbajdsjanske manat": "AZN",
+ "aserbaidschan manat": "AZN",
+ "μανάτ του αζερμπαϊτζάν": "AZN",
+ "azerbaijani manat": "AZN",
+ "azerbajĝana manato": "AZN",
+ "manat azerbaiyano": "AZN",
+ "aserbaidžaani manat": "AZN",
+ "azerbaijandar manat": "AZN",
+ "منات آذربایجان": "AZN",
+ "azerbaidžanin manat": "AZN",
+ "manat azerbaïdjanais": "AZN",
+ "manat acerbaixano": "AZN",
+ "מאנאט אזרבייג'ני": "AZN",
+ "azerbajdžanski manat": "AZN",
+ "azeri manat": "AZN",
+ "manat": [
+ "TMT",
+ "AZN"
+ ],
+ "manat azero": "AZN",
+ "アゼルバイジャン・マナト": "AZN",
+ "azerbaidžano manatas": "AZN",
+ "azerbeidzjaanse manat": "AZN",
+ "manat azerbejdżański": "AZN",
+ "manate azeri": "AZN",
+ "manat azer": "AZN",
+ "азербайджанский манат": "AZN",
+ "azerbajdžanský manat": "AZN",
+ "азербејџански манат": "AZN",
+ "azerbajdzjansk manat": "AZN",
+ "அசர்பைஜானிய மனாட்": "AZN",
+ "azerbaycan manatı": "AZN",
+ "азербайджанський манат": "AZN",
+ "manat azerbaijan": "AZN",
+ "阿塞拜疆马纳特": "AZN",
+ "مارك بوسني": "BAM",
+ "босненска конвертируема марка": "BAM",
+ "marc convertible": "BAM",
+ "konvertibilní marka": "BAM",
+ "konvertibilna mark": "BAM",
+ "konvertible mark": "BAM",
+ "μετατρέψιμο μάρκο βοσνίας και ερζεγοβίνης": "BAM",
+ "bosnia and herzegovina convertible mark": "BAM",
+ "konvertebla marko": "BAM",
+ "marco bosnioherzegovino": "BAM",
+ "مارک تبدیلپذیر بوسنی و هرزگوین": "BAM",
+ "bosnian ja hertsegovinan vaihdettava markka": "BAM",
+ "mark convertible de bosnie herzégovine": "BAM",
+ "marco convertible": "BAM",
+ "מארק סחיר": "BAM",
+ "konvertibilna marka": "BAM",
+ "bosnyák konvertibilis márka": "BAM",
+ "marco bosniaco": "BAM",
+ "兌換マルク": "BAM",
+ "konvertuojamoji markė": "BAM",
+ "bosnische inwisselbare mark": "BAM",
+ "marka zamienna": "BAM",
+ "marco conversível": "BAM",
+ "marcă bosniacă convertibilă": "BAM",
+ "конвертируемая марка": "BAM",
+ "konvertibilná marka": "BAM",
+ "конвертибилна марка": "BAM",
+ "கன்வர்ட்டிபிள் மார்க்கு": "BAM",
+ "bosna hersek değiştirilebilir markı": "BAM",
+ "конвертовна марка": "BAM",
+ "波斯尼亚和黑塞哥维那可兑换马克": "BAM",
+ "دولار بربادوسي": "BBD",
+ "барбадоски долар": "BBD",
+ "dòlar de barbados": "BBD",
+ "barbadoský dolar": "BBD",
+ "barbados dollar": "BBD",
+ "δολάριο μπαρμπάντος": "BBD",
+ "barbadian dollar": "BBD",
+ "barbada dolaro": "BBD",
+ "dólar barbadense": "BBD",
+ "dolar barbadostar": "BBD",
+ "دلار باربادوس": "BBD",
+ "barbadoksen dollari": "BBD",
+ "dollar barbadien": "BBD",
+ "dólar de barbados": "BBD",
+ "barbadoski dolar": "BBD",
+ "barbadosi dollár": "BBD",
+ "dollaro di barbados": "BBD",
+ "バルバドス・ドル": "BBD",
+ "barbadoso doleris": "BBD",
+ "barbadiaanse dollar": "BBD",
+ "dolar barbadoski": "BBD",
+ "барбадосский доллар": "BBD",
+ "barbadoský dolár": "BBD",
+ "barbadisk dollar": "BBD",
+ "barbados doları": "BBD",
+ "барбадоський долар": "BBD",
+ "đô la barbados": "BBD",
+ "巴貝多元": "BBD",
+ "تاكا بنغلاديشي": "BDT",
+ "бангладешка така": "BDT",
+ "taka": "BDT",
+ "bangladéšská taka": "BDT",
+ "μπανγκλαντεσιανή τάκα": "BDT",
+ "bangladeshi taka": "BDT",
+ "bangladeŝa tako": "BDT",
+ "taka bangladesí": "BDT",
+ "تاکا بنگلادش": "BDT",
+ "bangladeshin taka": "BDT",
+ "bangladeška taka": "BDT",
+ "bangladesi taka": "BDT",
+ "taka bengalese": "BDT",
+ "タカ": "BDT",
+ "bangladešo taka": "BDT",
+ "bengalese taka": "BDT",
+ "бангладешская така": "BDT",
+ "வங்காளதேச இட்டாக்கா": "BDT",
+ "bangladeş takası": "BDT",
+ "бангладеська така": "BDT",
+ "taka bangladesh": "BDT",
+ "孟加拉塔卡": "BDT",
+ "ليف بلغاري": "BGN",
+ "български лев": "BGN",
+ "lev": "BGN",
+ "bulharský lev": "BGN",
+ "bulgarske leva": "BGN",
+ "lew": "BGN",
+ "λεβ": "BGN",
+ "bulgarian lev": "BGN",
+ "bulgara levo": "BGN",
+ "leva búlgara": "BGN",
+ "leev": "BGN",
+ "bulgariar lev": "BGN",
+ "لو بلغارستان": "BGN",
+ "bulgarian leva": "BGN",
+ "lev bulgare": "BGN",
+ "lev búlgaro": "BGN",
+ "לב": "BGN",
+ "bugarski lev": "BGN",
+ "bolgár leva": "BGN",
+ "lev bulgaro": "BGN",
+ "レフ": "BGN",
+ "bulgarijos levas": "BGN",
+ "bulgaarse lev": "BGN",
+ "leva": "BGN",
+ "болгарский лев": "BGN",
+ "bolgarski lev": "BGN",
+ "бугарски лев": "BGN",
+ "பல்கேரிய லெவ்": "BGN",
+ "болгарський лев": "BGN",
+ "lev bulgaria": "BGN",
+ "保加利亞列弗": "BGN",
+ "دينار بحريني": "BHD",
+ "бахрейнски динар": "BHD",
+ "dinar de bahrain": "BHD",
+ "bahrajnský dinár": "BHD",
+ "bahrain dinar": "BHD",
+ "δηνάριο μπαχρέιν": "BHD",
+ "bahraini dinar": "BHD",
+ "barejna dinaro": "BHD",
+ "dinar bareiní": "BHD",
+ "دینار بحرین": "BHD",
+ "bahrainin dinaari": "BHD",
+ "dinar bahreïni": "BHD",
+ "דינר בחרייני": "BHD",
+ "bahreinski dinar": "BHD",
+ "bahreini dinár": "BHD",
+ "dinaro del bahrein": "BHD",
+ "バーレーン・ディナール": "BHD",
+ "bahreino dinaras": "BHD",
+ "bahreinse dinar": "BHD",
+ "dinar bahrajski": "BHD",
+ "dinar bareinita": "BHD",
+ "бахрейнский динар": "BHD",
+ "бахреински динар": "BHD",
+ "bahrainsk dinar": "BHD",
+ "bahreyn dinarı": "BHD",
+ "бахрейнський динар": "BHD",
+ "巴林第納爾": "BHD",
+ "فرنك بوروندي": "BIF",
+ "бурундийски франк": "BIF",
+ "franc de burundi": "BIF",
+ "burundský frank": "BIF",
+ "burundi franc": "BIF",
+ "φράγκο μπουρούντι": "BIF",
+ "burundian franc": "BIF",
+ "burunda franko": "BIF",
+ "franco burundés": "BIF",
+ "فرانک بوروندی": "BIF",
+ "burundin frangi": "BIF",
+ "franc burundais": "BIF",
+ "burundski franak": "BIF",
+ "burundi frank": "BIF",
+ "franco del burundi": "BIF",
+ "ブルンジ・フラン": "BIF",
+ "burundžio frankas": "BIF",
+ "burundese frank": "BIF",
+ "frank burundyjski": "BIF",
+ "franco do burundi": "BIF",
+ "бурундийский франк": "BIF",
+ "бурундски франак": "BIF",
+ "burundisk franc": "BIF",
+ "புரூண்டி பிராங்க்": "BIF",
+ "burundi frangı": "BIF",
+ "бурундійський франк": "BIF",
+ "蒲隆地法郎": "BIF",
+ "دولار برمودي": "BMD",
+ "dòlar de les bermudes": "BMD",
+ "bermudský dolar": "BMD",
+ "bermuda dollar": "BMD",
+ "δολάριο βερμούδων": "BMD",
+ "bermudian dollar": "BMD",
+ "bermuda dolaro": "BMD",
+ "dólar bermudeño": "BMD",
+ "dolar bermudar": "BMD",
+ "دلار برمودا": "BMD",
+ "bermudan dollari": "BMD",
+ "dollar bermudien": "BMD",
+ "bermudski dolar": "BMD",
+ "bermudai dollár": "BMD",
+ "dollaro di bermuda": "BMD",
+ "バミューダ・ドル": "BMD",
+ "bermudos doleris": "BMD",
+ "bermudaanse dollar": "BMD",
+ "dolar bermudzki": "BMD",
+ "dólar bermudense": "BMD",
+ "бермудский доллар": "BMD",
+ "бермудски долар": "BMD",
+ "bermudisk dollar": "BMD",
+ "bermuda doları": "BMD",
+ "бермудський долар": "BMD",
+ "đô la bermuda": "BMD",
+ "百慕達元": "BMD",
+ "دولار بروني": "BND",
+ "брунейски долар": "BND",
+ "dòlar de brunei": "BND",
+ "brunejský dolar": "BND",
+ "brunei dollar": "BND",
+ "bruneja dolaro": "BND",
+ "dólar de brunéi": "BND",
+ "dolar bruneitar": "BND",
+ "دلار برونئی": "BND",
+ "brunein dollari": "BND",
+ "dollar de brunei": "BND",
+ "dólar de brunei": "BND",
+ "דולר ברוניי": "BND",
+ "brunejski dolar": "BND",
+ "brunei dollár": "BND",
+ "dollaro del brunei": "BND",
+ "ブルネイ・ドル": "BND",
+ "brunėjaus doleris": "BND",
+ "bruneise dollar": "BND",
+ "dolar brunejski": "BND",
+ "брунейский доллар": "BND",
+ "брунејски долар": "BND",
+ "bruneisk dollar": "BND",
+ "புருனே டாலர்": "BND",
+ "brunei doları": "BND",
+ "брунейський долар": "BND",
+ "đô la brunei": "BND",
+ "汶萊元": "BND",
+ "بوليفاريو بوليفي": "BOB",
+ "boliviano": "BOB",
+ "bolivijský boliviano": "BOB",
+ "μπολιβιάνο": "BOB",
+ "bolivian boliviano": "BOB",
+ "bolivia bolivjano": "BOB",
+ "bigarren boliviano": "BOB",
+ "بولیویانو بولیوی": "BOB",
+ "בוליביאנו": "BOB",
+ "bolivijski bolivijano": "BOB",
+ "bolíviai boliviano": "BOB",
+ "ボリビアーノ": "BOB",
+ "bolivianas": "BOB",
+ "boliviaanse boliviano": "BOB",
+ "боливиано": "BOB",
+ "боливијски боливијано": "BOB",
+ "болівійський болівіано": "BOB",
+ "玻利維亞玻利維亞諾": "BOB",
+ "boliviano con mantenimiento de valor respecto al dólar estadounidense": "BOV",
+ "ريال برازيلي": "BRL",
+ "бразилски реал": "BRL",
+ "real brasiler": "BRL",
+ "brazilský real": "BRL",
+ "brasiliansk real": "BRL",
+ "brasilianischer real": "BRL",
+ "ρεάλ βραζιλίας": "BRL",
+ "brazilian real": "BRL",
+ "brazila realo": "BRL",
+ "real brasileño": "BRL",
+ "erreal brasildar": "BRL",
+ "رئال برزیل": "BRL",
+ "brasilian real": "BRL",
+ "réal brésilien": "BRL",
+ "real brasileiro": "BRL",
+ "ריאל ברזילאי": "BRL",
+ "brazilski real": "BRL",
+ "brazil real": "BRL",
+ "real brasiliano": "BRL",
+ "レアル": "BRL",
+ "brazilijos realas": "BRL",
+ "braziliaanse real": "BRL",
+ "real brazylijski": "BRL",
+ "real": "BRL",
+ "бразильский реал": "BRL",
+ "பிரேசிலிய ரெயால்": "BRL",
+ "brezilya reali": "BRL",
+ "бразильський реал": "BRL",
+ "real brasil": "BRL",
+ "巴西雷亚尔": "BRL",
+ "دولار بهامي": "BSD",
+ "бахамски долар": "BSD",
+ "dòlar de les bahames": "BSD",
+ "bahamský dolar": "BSD",
+ "bahama dollar": "BSD",
+ "δολάριο μπαχαμών": "BSD",
+ "bahamian dollar": "BSD",
+ "bahama dolaro": "BSD",
+ "dólar bahameño": "BSD",
+ "dolar bahamar": "BSD",
+ "دلار باهاما": "BSD",
+ "bahaman dollari": "BSD",
+ "dollar bahaméen": "BSD",
+ "dólar bahamés": "BSD",
+ "bahamski dolar": "BSD",
+ "bahamai dollár": "BSD",
+ "dollaro delle bahamas": "BSD",
+ "バハマ・ドル": "BSD",
+ "bahamų doleris": "BSD",
+ "bahamaanse dollar": "BSD",
+ "dolar de las bahamas": "BSD",
+ "dolar bahamski": "BSD",
+ "dólar baamiano": "BSD",
+ "багамский доллар": "BSD",
+ "bahamský dolár": "BSD",
+ "bahamansk dollar": "BSD",
+ "bahama doları": "BSD",
+ "багамський долар": "BSD",
+ "đô la bahamas": "BSD",
+ "巴哈馬元": "BSD",
+ "نغولترم بوتاني": "BTN",
+ "бутански нгултрум": "BTN",
+ "ngultrum": "BTN",
+ "bhútánský ngultrum": "BTN",
+ "νγκούλτρουμ": "BTN",
+ "bhutanese ngultrum": "BTN",
+ "butana ngultrumo": "BTN",
+ "ngultrum butanés": "BTN",
+ "bhutani ngultrum": "BTN",
+ "نگولتروم بوتان": "BTN",
+ "bhutanin ngultrum": "BTN",
+ "butanski ngultrum": "BTN",
+ "bhutáni ngultrum": "BTN",
+ "ngultrum del bhutan": "BTN",
+ "ニュルタム": "BTN",
+ "ngultrumas": "BTN",
+ "bhutaanse ngultrum": "BTN",
+ "нгултрум": "BTN",
+ "பூட்டானின் இங்குல்ட்ரம்": "BTN",
+ "ngultrum bhutan": "BTN",
+ "不丹努尔特鲁姆": "BTN",
+ "بولا بوتسواني": "BWP",
+ "ботсванска пула": "BWP",
+ "pula botswanesa": "BWP",
+ "botswanská pula": "BWP",
+ "pula": "BWP",
+ "botswanischer pula": "BWP",
+ "πούλα": "BWP",
+ "botswana pula": "BWP",
+ "bocvana pulao": "BWP",
+ "botswanar pula": "BWP",
+ "پولای بوتسوانا": "BWP",
+ "פולה": "BWP",
+ "bocvanska pula": "BWP",
+ "botswanai pula": "BWP",
+ "pula del botswana": "BWP",
+ "プラ": "BWP",
+ "botsvanos pula": "BWP",
+ "botswaanse pula": "BWP",
+ "pula botswaneză": "BWP",
+ "ботсванская пула": "BWP",
+ "боцванска пула": "BWP",
+ "botsvana pulası": "BWP",
+ "ботсванська пула": "BWP",
+ "波札那普拉": "BWP",
+ "روبل بلاروسي": "BYN",
+ "беларуска рубла": "BYN",
+ "ruble bielorús": "BYN",
+ "běloruský rubl": "BYN",
+ "hviderussiske rubler": "BYN",
+ "belarussischer rubel": "BYN",
+ "λευκορωσικό ρούβλι": "BYN",
+ "belarusian ruble": "BYN",
+ "belorusia rublo": "BYN",
+ "rublo bielorruso": "BYN",
+ "valgevene rubla": "BYN",
+ "روبل بلاروس": "BYN",
+ "valko venäjän rupla": "BYN",
+ "rouble biélorusse": "BYN",
+ "rublo belaruso": "BYN",
+ "רובל בלארוסי": "BYN",
+ "bjeloruski rubalj": "BYN",
+ "belarusz rubel": "BYN",
+ "rublo bielorusso": "BYN",
+ "ベラルーシ・ルーブル": "BYN",
+ "baltarusijos rublis": "BYN",
+ "wit russische roebel": "BYN",
+ "rubel białoruski": "BYN",
+ "rublo bielorrusso": "BYN",
+ "rublă belarusă": "BYN",
+ "белорусский рубль": "BYN",
+ "bieloruský rubeľ": "BYN",
+ "beloruski rubelj": "BYN",
+ "белоруска рубља": "BYN",
+ "belarusisk rubel": "BYN",
+ "பெலருசிய ரூபிள்": "BYN",
+ "belarus rublesi": "BYN",
+ "білоруський рубель": "BYN",
+ "rúp belarus": "BYN",
+ "白俄羅斯盧布": "BYN",
+ "دولار بليزي": "BZD",
+ "белизийски долар": "BZD",
+ "dòlar de belize": "BZD",
+ "belizský dolar": "BZD",
+ "belize dollar": "BZD",
+ "δολάριο μπελίζ": "BZD",
+ "beliza dolaro": "BZD",
+ "dólar beliceño": "BZD",
+ "dolar belizetar": "BZD",
+ "دلار بلیز": "BZD",
+ "belizen dollari": "BZD",
+ "dollar bélizien": "BZD",
+ "dólar de belize": "BZD",
+ "דולר בליזי": "BZD",
+ "belizejski dolar": "BZD",
+ "belize i dollár": "BZD",
+ "dollaro del belize": "BZD",
+ "ベリーズ・ドル": "BZD",
+ "belizo doleris": "BZD",
+ "belizaanse dollar": "BZD",
+ "dolar belizeński": "BZD",
+ "белизский доллар": "BZD",
+ "белизејски долар": "BZD",
+ "belizisk dollar": "BZD",
+ "belize doları": "BZD",
+ "белізький долар": "BZD",
+ "đô la belize": "BZD",
+ "貝里斯元": "BZD",
+ "دولار كندي": "CAD",
+ "канадски долар": "CAD",
+ "dòlar canadenc": "CAD",
+ "kanadský dolar": "CAD",
+ "canadiske dollar": "CAD",
+ "kanadischer dollar": "CAD",
+ "δολάριο καναδά": "CAD",
+ "canadian dollar": "CAD",
+ "kanada dolaro": "CAD",
+ "dólar canadiense": "CAD",
+ "kanada dollar": "CAD",
+ "dolar kanadar": "CAD",
+ "دلار کانادا": "CAD",
+ "kanadan dollari": "CAD",
+ "dollar canadien": "CAD",
+ "dólar canadense": "CAD",
+ "דולר קנדי": "CAD",
+ "kanadski dolar": "CAD",
+ "kanadai dollár": "CAD",
+ "dollar canadian": "CAD",
+ "dollaro canadese": "CAD",
+ "カナダドル": "CAD",
+ "kanados doleris": "CAD",
+ "canadese dollar": "CAD",
+ "dolar kanadyjski": "CAD",
+ "dolar canadian": "CAD",
+ "канадский доллар": "CAD",
+ "kanadský dolár": "CAD",
+ "kanadensisk dollar": "CAD",
+ "கனடா டொலர்": "CAD",
+ "kanada doları": "CAD",
+ "канадський долар": "CAD",
+ "đô la canada": "CAD",
+ "加拿大元": "CAD",
+ "فرنك كونغولي": "CDF",
+ "конгоански франк": "CDF",
+ "franc congolès": "CDF",
+ "konžský frank": "CDF",
+ "kongo franc": "CDF",
+ "congolese franc": "CDF",
+ "konga franko": "CDF",
+ "franco congoleño": "CDF",
+ "فرانک کنگو": "CDF",
+ "kongon frangi": "CDF",
+ "franc congolais": "CDF",
+ "franco congolés": "CDF",
+ "פרנק קונגולזי": "CDF",
+ "kongoanski franak": "CDF",
+ "kongói frank": "CDF",
+ "franco congolese": "CDF",
+ "コンゴ・フラン": "CDF",
+ "kongo frankas": "CDF",
+ "congolese frank": "CDF",
+ "frank kongijski": "CDF",
+ "franco congolês": "CDF",
+ "конголезский франк": "CDF",
+ "конгоански франак": "CDF",
+ "kongolesisk franc": "CDF",
+ "kongo frangı": "CDF",
+ "конголезький франк": "CDF",
+ "franc congo": "CDF",
+ "剛果法郎": "CDF",
+ "فرنك سويسري": "CHF",
+ "швейцарски франк": "CHF",
+ "franc suís": "CHF",
+ "švýcarský frank": "CHF",
+ "schweiziske franc": "CHF",
+ "schweizer franken": "CHF",
+ "ελβετικό φράγκο": "CHF",
+ "swiss franc": "CHF",
+ "svisa franko": "CHF",
+ "franco suizo": "CHF",
+ "šveitsi frank": "CHF",
+ "franko suitzar": "CHF",
+ "فرانک سوئیس": "CHF",
+ "sveitsin frangi": "CHF",
+ "franc suisse": "CHF",
+ "franco suízo": "CHF",
+ "פרנק שווייצרי": "CHF",
+ "švicarski franak": "CHF",
+ "svájci frank": "CHF",
+ "franco svizzero": "CHF",
+ "スイス・フラン": "CHF",
+ "šveicarijos frankas": "CHF",
+ "zwitserse frank": "CHF",
+ "franc soís": "CHF",
+ "frank szwajcarski": "CHF",
+ "franco suíço": "CHF",
+ "franc elvețian": "CHF",
+ "швейцарский франк": "CHF",
+ "švajčiarsky frank": "CHF",
+ "švicarski frank": "CHF",
+ "швајцарски франак": "CHF",
+ "schweizisk franc": "CHF",
+ "சுவிசு பிராங்க்": "CHF",
+ "స్విస్ ఫ్రాంక్": "CHF",
+ "i̇sviçre frangı": "CHF",
+ "швейцарський франк": "CHF",
+ "franc thụy sĩ": "CHF",
+ "瑞士法郎": "CHF",
+ "دولار جزر كوك": "CKD",
+ "dòlar de les illes cook": "CKD",
+ "dolar cookových ostrovů": "CKD",
+ "cookinseln dollar": "CKD",
+ "δολάριο νήσων κουκ": "CKD",
+ "cook islands dollar": "CKD",
+ "kukinsula dolaro": "CKD",
+ "dólar de las islas cook": "CKD",
+ "دلار جزایر کوک": "CKD",
+ "cookinsaarten dollari": "CKD",
+ "dollar des îles cook": "CKD",
+ "dólar das illas cook": "CKD",
+ "kukovootočki dolar": "CKD",
+ "cook szigeteki dollár": "CKD",
+ "dollaro delle cook": "CKD",
+ "kuko salų doleris": "CKD",
+ "cookeilandse dollar": "CKD",
+ "dolar wysp cooka": "CKD",
+ "dólar das ilhas cook": "CKD",
+ "dolar din insulele cook": "CKD",
+ "доллар островов кука": "CKD",
+ "долар островів кука": "CKD",
+ "đô la quần đảo cook": "CKD",
+ "庫克群島元": "CKD",
+ "unidad de fomento": "CLF",
+ "условная расчётная единица чили": "CLF",
+ "uf值": "CLF",
+ "بيزو تشيلي": "CLP",
+ "чилийско песо": "CLP",
+ "peso xilè": "CLP",
+ "chilské peso": "CLP",
+ "peso tsile": "CLP",
+ "chilenischer peso": "CLP",
+ "πέσο χιλής": "CLP",
+ "chilean peso": "CLP",
+ "ĉilia peso": "CLP",
+ "tšiili peeso": "CLP",
+ "peso txiletar": "CLP",
+ "پزوی شیلی": "CLP",
+ "chilen peso": "CLP",
+ "peso chilien": "CLP",
+ "peso chileno": "CLP",
+ "פסו צ'יליאני": "CLP",
+ "čileanski pezo": "CLP",
+ "chilei peso": "CLP",
+ "peso cileno": "CLP",
+ "チリ・ペソ": "CLP",
+ "čilės pesas": "CLP",
+ "chileense peso": "CLP",
+ "peso de chile": "CLP",
+ "peso chilijskie": "CLP",
+ "чилийское песо": "CLP",
+ "čilenski peso": "CLP",
+ "чилеански пезос": "CLP",
+ "chilensk peso": "CLP",
+ "şili pesosu": "CLP",
+ "чилійський песо": "CLP",
+ "peso chile": "CLP",
+ "智利比索": "CLP",
+ "رنمينبي": "CNY",
+ "китайски юан": "CNY",
+ "མི་དམངས་ཤོག་དངུལ": "CNY",
+ "renminbi": [
+ "CNH",
"CNY"
- ],
- "macedonian denar": [
- "MKD"
- ],
- "uic franc": [
- "XFU"
- ],
- "won surcoreano": [
- "KRW"
- ],
- "nuevo shekel": [
- "ILS"
- ],
- "arubaanse florin": [
- "AWG"
- ],
- "ruanda franc": [
- "RWF"
- ],
- "franco burundes": [
- "BIF"
- ],
- "makao\u0301i pataca": [
- "MOP"
- ],
- "koruna c\u030ceska\u0301": [
- "CZK"
- ],
- "dirham des e\u0301mirats": [
- "AED"
- ],
- "mozambiki metical": [
- "MZN"
- ],
- "panamanian balboa": [
- "PAB"
- ],
- "syrian pound": [
- "SYP"
- ],
- "ki\u0301nai ju\u0308an": [
+ ],
+ "čínský jüan": "CNY",
+ "κινεζικό γουάν": "CNY",
+ "renminbio": "CNY",
+ "رنمینبی": "CNY",
+ "yuan": [
+ "CNH",
"CNY"
- ],
- "mxn": [
- "MXN"
- ],
- "dolar fijiano": [
- "FJD"
- ],
- "a\u0308thiopischer birr": [
- "ETB"
- ],
- "kirgiz szom": [
+ ],
+ "רנמינבי": "CNY",
+ "zsenminpi": "CNY",
+ "renminbi cinese": "CNY",
+ "人民元": "CNY",
+ "juanis": "CNY",
+ "chinese renminbi": "CNY",
+ "yuan renminbi": "CNY",
+ "китайский юань": "CNY",
+ "čínsky jüan": "CNY",
+ "женминби": "CNY",
+ "ரென்மின்பி": "CNY",
+ "юань женьміньбі": "CNY",
+ "nhân dân tệ": "CNY",
+ "人民币": "CNY",
+ "بيزو كولومبي": "COP",
+ "колумбийско песо": "COP",
+ "peso colombià": "COP",
+ "kolumbijské peso": "COP",
+ "colombiansk peso": "COP",
+ "kolumbianischer peso": "COP",
+ "πέσο κολομβίας": "COP",
+ "colombian peso": "COP",
+ "kolombia peso": "COP",
+ "peso colombiano": "COP",
+ "colombia peeso": "COP",
+ "peso kolonbiar": "COP",
+ "پزوی کلمبیا": "COP",
+ "kolumbian peso": "COP",
+ "peso colombien": "COP",
+ "kolumbijski pezo": "COP",
+ "kolumbiai peso": "COP",
+ "コロンビア・ペソ": "COP",
+ "kolumbijos pesas": "COP",
+ "colombiaanse peso": "COP",
+ "peso kolumbijskie": "COP",
+ "колумбийское песо": "COP",
+ "колумбијски пезос": "COP",
+ "kolombiya pesosu": "COP",
+ "колумбійський песо": "COP",
+ "peso colombia": "COP",
+ "哥伦比亚比索": "COP",
+ "كولون كوستاريكي": "CRC",
+ "костарикански колон": "CRC",
+ "colón costa riqueny": "CRC",
+ "kostarický colón": "CRC",
+ "costa rica colón": "CRC",
+ "costa rican colón": "CRC",
+ "kostarika kolumbo": "CRC",
+ "colón": "CRC",
+ "colón costarricar": "CRC",
+ "کولون کاستاریکا": "CRC",
+ "colón costaricien": "CRC",
+ "colón costarriqueño": "CRC",
+ "kostarikanski kolon": "CRC",
+ "costa rica i colón": "CRC",
+ "colón costaricano": "CRC",
+ "コスタリカ・コロン": "CRC",
+ "kosta rikos kolonas": "CRC",
+ "costa ricaanse colon": "CRC",
+ "colon kostarykański": "CRC",
+ "colón costa riquenho": "CRC",
+ "коста риканский колон": "CRC",
+ "costaricansk colón": "CRC",
+ "kosta rika colónu": "CRC",
+ "костариканський колон": "CRC",
+ "哥斯大黎加科朗": "CRC",
+ "بيزو كوبي": "CUP",
+ "кубинско песо": "CUP",
+ "peso cubà": "CUP",
+ "kubánské peso": "CUP",
+ "cubanske pesos": "CUP",
+ "kubanischer peso": "CUP",
+ "πέσο κούβας": "CUP",
+ "cuban peso": "CUP",
+ "kuba peso": "CUP",
+ "peso cubano": "CUP",
+ "پزوی کوبا": "CUP",
+ "kuuban peso": "CUP",
+ "peso cubain": "CUP",
+ "kubanski pezo": "CUP",
+ "kubai peso": "CUP",
+ "キューバ・ペソ": "CUP",
+ "kubos pesas": "CUP",
+ "cubaanse peso": "CUP",
+ "peso kubańskie": "CUP",
+ "peso cubanez": "CUP",
+ "кубинское песо": "CUP",
+ "кубански пезос": "CUP",
+ "kubansk peso": "CUP",
+ "küba pesosu": "CUP",
+ "кубинський песо": "CUP",
+ "peso cuba": "CUP",
+ "古巴比索": "CUP",
+ "إيسكودو جزر الرأس الأخضر": "CVE",
+ "ескудо на кабо верде": "CVE",
+ "escut de cap verd": "CVE",
+ "kapverdské escudo": "CVE",
+ "kapverdiske escudo": "CVE",
+ "kap verde escudo": "CVE",
+ "εσκούδο του πράσινου ακρωτηρίου": "CVE",
+ "cape verdean escudo": "CVE",
+ "kaboverda eskudo": "CVE",
+ "escudo caboverdiano": "CVE",
+ "اسکودوی دماغه سبز": "CVE",
+ "kap verden escudo": "CVE",
+ "escudo cap verdien": "CVE",
+ "zelenortski eskudo": "CVE",
+ "zöld foki escudo": "CVE",
+ "escudo capoverdiano": "CVE",
+ "カーボベルデ・エスクード": "CVE",
+ "žaliojo kyšulio eskudas": "CVE",
+ "kaapverdische escudo": "CVE",
+ "escudo zielonego przylądka": "CVE",
+ "escudo cabo verdiano": "CVE",
+ "эскудо кабо верде": "CVE",
+ "зеленортски ескудо": "CVE",
+ "kapverdisk escudo": "CVE",
+ "yeşil burun adaları eskudosu": "CVE",
+ "ескудо кабо верде": "CVE",
+ "escudo cabo verde": "CVE",
+ "維德角埃斯庫多": "CVE",
+ "كرونة تشيكية": "CZK",
+ "чешка крона": "CZK",
+ "corona txeca": "CZK",
+ "koruna česká": "CZK",
+ "tjekkiske koruna": "CZK",
+ "tschechische krone": "CZK",
+ "κορόνα τσεχίας": "CZK",
+ "czech koruna": "CZK",
+ "ĉeĥa krono": "CZK",
+ "corona checa": "CZK",
+ "tšehhi kroon": "CZK",
+ "txekiar koroa": "CZK",
+ "کرونای چک": "CZK",
+ "tšekin koruna": "CZK",
+ "couronne tchèque": "CZK",
+ "coroa checa": "CZK",
+ "קורונה צ'כית": "CZK",
+ "češka kruna": "CZK",
+ "cseh korona": "CZK",
+ "corona ceca": "CZK",
+ "チェコ・コルナ": "CZK",
+ "čekijos krona": "CZK",
+ "tsjechische kroon": "CZK",
+ "corona chèca": "CZK",
+ "korona czeska": "CZK",
+ "coroană cehă": "CZK",
+ "чешская крона": "CZK",
+ "česká koruna": "CZK",
+ "češka krona": "CZK",
+ "чешка круна": "CZK",
+ "tjeckisk krona": "CZK",
+ "செக் கொருனா": "CZK",
+ "çek korunası": "CZK",
+ "чеська крона": "CZK",
+ "koruna séc": "CZK",
+ "捷克克朗": "CZK",
+ "فرنك جيبوتي": "DJF",
+ "джибутски франк": "DJF",
+ "franc de djibouti": "DJF",
+ "džibutský frank": "DJF",
+ "djiboutiske franc": "DJF",
+ "dschibuti franc": "DJF",
+ "φράγκο του τζιμπουτί": "DJF",
+ "djiboutian franc": "DJF",
+ "ĝibutia franko": "DJF",
+ "franco yibutiano": "DJF",
+ "فرانک جیبوتی": "DJF",
+ "djiboutin frangi": "DJF",
+ "franc djibouti": "DJF",
+ "džibutski franak": "DJF",
+ "dzsibuti frank": "DJF",
+ "franco gibutiano": "DJF",
+ "ジブチ・フラン": "DJF",
+ "džibučio frankas": "DJF",
+ "djiboutiaanse frank": "DJF",
+ "frank dżibuti": "DJF",
+ "franco do jibuti": "DJF",
+ "франк джибути": "DJF",
+ "џибутски франак": "DJF",
+ "djiboutisk franc": "DJF",
+ "cibuti frangı": "DJF",
+ "франк джибуті": "DJF",
+ "吉布地法郎": "DJF",
+ "كرونة دنماركية": "DKK",
+ "датска крона": "DKK",
+ "corona danesa": "DKK",
+ "dánská koruna": "DKK",
+ "danske kroner": "DKK",
+ "dänische krone": "DKK",
+ "κορόνα δανίας": "DKK",
+ "danish krone": "DKK",
+ "dana krono": "DKK",
+ "taani kroon": "DKK",
+ "daniar koroa": "DKK",
+ "کرون دانمارک": "DKK",
+ "tanskan kruunu": "DKK",
+ "couronne danoise": "DKK",
+ "coroa dinamarquesa": "DKK",
+ "כתר דני": "DKK",
+ "danska kruna": "DKK",
+ "dán korona": "DKK",
+ "corona danese": "DKK",
+ "デンマーク・クローネ": "DKK",
+ "danijos krona": "DKK",
+ "deense kroon": "DKK",
+ "korona duńska": "DKK",
+ "coroană daneză": "DKK",
+ "датская крона": "DKK",
+ "dánska koruna": "DKK",
+ "данска круна": "DKK",
+ "dansk krona": "DKK",
+ "டானிய குரோன்": "DKK",
+ "danimarka kronu": "DKK",
+ "данська крона": "DKK",
+ "krone đan mạch": "DKK",
+ "丹麥克朗": "DKK",
+ "بيزو دومنيكاني": "DOP",
+ "доминиканско песо": "DOP",
+ "peso dominicà": "DOP",
+ "dominikánské peso": "DOP",
+ "dominikanischer peso": "DOP",
+ "πέσο δομινικανής δημοκρατίας": "DOP",
+ "dominican peso": "DOP",
+ "dominika peso": "DOP",
+ "peso dominicano": "DOP",
+ "peso dominikar": "DOP",
+ "پزو دومینیکن": "DOP",
+ "dominikaanisen tasavallan peso": "DOP",
+ "peso dominicain": "DOP",
+ "dominikanski pezo": "DOP",
+ "dominikai peso": "DOP",
+ "ドミニカ・ペソ": "DOP",
+ "dominikos pesas": "DOP",
+ "dominicaanse peso": "DOP",
+ "peso dominikańskie": "DOP",
+ "доминиканское песо": "DOP",
+ "доминикански пезос": "DOP",
+ "dominikansk peso": "DOP",
+ "dominik pesosu": "DOP",
+ "домініканський песо": "DOP",
+ "多明尼加比索": "DOP",
+ "دينار جزائري": "DZD",
+ "алжирски динар": "DZD",
+ "dinar algerià": "DZD",
+ "alžírský dinár": "DZD",
+ "dinar algeriaidd": "DZD",
+ "algerischer dinar": "DZD",
+ "δηνάριο αλγερίας": "DZD",
+ "algerian dinar": "DZD",
+ "alĝeria dinaro": "DZD",
+ "dinar argelino": "DZD",
+ "aljeriar dinar": "DZD",
+ "دینار الجزایر": "DZD",
+ "algerian dinaari": "DZD",
+ "dinar algérien": "DZD",
+ "dinar alxeriano": "DZD",
+ "דינר אלג'ירי": "DZD",
+ "alžirski dinar": "DZD",
+ "algériai dinár": "DZD",
+ "dinaro algerino": "DZD",
+ "アルジェリア・ディナール": "DZD",
+ "alžyro dinaras": "DZD",
+ "algerijnse dinar": "DZD",
+ "dinar algierski": "DZD",
+ "dinar algerian": "DZD",
+ "алжирский динар": "DZD",
+ "algerisk dinar": "DZD",
+ "cezayir dinarı": "DZD",
+ "алжирський динар": "DZD",
+ "dinar algérie": "DZD",
+ "阿爾及利亞第納爾": "DZD",
+ "جنيه مصري": "EGP",
+ "египетска лира": "EGP",
+ "lliura egípcia": "EGP",
+ "egyptská libra": "EGP",
+ "ägyptisches pfund": "EGP",
+ "λίρα αιγύπτου": "EGP",
+ "egyptian pound": "EGP",
+ "egipta pundo": "EGP",
+ "libra egipcia": "EGP",
+ "egiptuse nael": "EGP",
+ "libera egiptoar": "EGP",
+ "پوند مصر": "EGP",
+ "egyptin punta": "EGP",
+ "livre égyptienne": "EGP",
+ "libra exipcia": "EGP",
+ "לירה מצרית": "EGP",
+ "egipatska funta": "EGP",
+ "egyiptomi font": "EGP",
+ "sterlina egiziana": "EGP",
+ "エジプト・ポンド": "EGP",
+ "egipto svaras": "EGP",
+ "egyptisch pond": "EGP",
+ "funt egipski": "EGP",
+ "libra egípcia": "EGP",
+ "liră egipteană": "EGP",
+ "египетский фунт": "EGP",
+ "egyptiskt pund": "EGP",
+ "mısır lirası": "EGP",
+ "єгипетський фунт": "EGP",
+ "bảng ai cập": "EGP",
+ "埃及鎊": "EGP",
+ "ناكفا": "ERN",
+ "nakfa": "ERN",
+ "eritrejská nakfa": "ERN",
+ "eritreischer nakfa": "ERN",
+ "νάκφα": "ERN",
+ "eritrean nakfa": "ERN",
+ "eritrea nakfo": "ERN",
+ "ناکفای اریتره": "ERN",
+ "nakfa érythréen": "ERN",
+ "נאקפה": "ERN",
+ "eritrejska nakfa": "ERN",
+ "eritreai nakfa": "ERN",
+ "nacfa eritreo": "ERN",
+ "ナクファ": "ERN",
+ "eritrese nakfa": "ERN",
+ "эритрейская накфа": "ERN",
+ "еритрејска накфа": "ERN",
+ "eritre nakfası": "ERN",
+ "еритрейська накфа": "ERN",
+ "厄立特里亚纳克法": "ERN",
+ "بير إثيوبي": "ETB",
+ "етиопски бир": "ETB",
+ "birr": "ETB",
+ "etiopský birr": "ETB",
+ "etiopiske birr": "ETB",
+ "äthiopischer birr": "ETB",
+ "μπιρ": "ETB",
+ "ethiopian birr": "ETB",
+ "etiopa birro": "ETB",
+ "birr etíope": "ETB",
+ "بیر اتیوپی": "ETB",
+ "etiopian birr": "ETB",
+ "ביר אתיופי": "ETB",
+ "etiopski bir": "ETB",
+ "etióp birr": "ETB",
+ "birr etiope": "ETB",
+ "ブル": "ETB",
+ "etiopijos biras": "ETB",
+ "ethiopische birr": "ETB",
+ "эфиопский быр": "ETB",
+ "ефіопський бир": "ETB",
+ "衣索比亞比爾": "ETB",
+ "يورو": "EUR",
+ "евро": "EUR",
+ "euro": "EUR",
+ "ewro": "EUR",
+ "ευρώ": "EUR",
+ "eŭro": "EUR",
+ "یورو": "EUR",
+ "אירו": "EUR",
+ "euró": "EUR",
+ "ユーロ": "EUR",
+ "euras": "EUR",
+ "èuro": "EUR",
+ "evro": "EUR",
+ "ஐரோ": "EUR",
+ "యూరో": "EUR",
+ "євро": "EUR",
+ "欧元": "EUR",
+ "دولار فيجي": "FJD",
+ "фиджийски долар": "FJD",
+ "dòlar fijià": "FJD",
+ "fidžijský dolar": "FJD",
+ "fidschi dollar": "FJD",
+ "δολάριο φίτζι": "FJD",
+ "fijian dollar": "FJD",
+ "fiĝia dolaro": "FJD",
+ "dólar fiyiano": "FJD",
+ "دلار فیجی": "FJD",
+ "fidžin dollari": "FJD",
+ "dollar des fidji": "FJD",
+ "dólar fidxiano": "FJD",
+ "fidžijski dolar": "FJD",
+ "fidzsi dollár": "FJD",
+ "dollaro delle figi": "FJD",
+ "フィジー・ドル": "FJD",
+ "fidžio doleris": "FJD",
+ "fiji dollar": "FJD",
+ "dolar fidżi": "FJD",
+ "dólar de fiji": "FJD",
+ "dolar fijian": "FJD",
+ "доллар фиджи": "FJD",
+ "fidžijský dolár": "FJD",
+ "фиџијски долар": "FJD",
+ "fijidollar": "FJD",
+ "பிஜி டாலர்": "FJD",
+ "fiji doları": "FJD",
+ "фіджійський долар": "FJD",
+ "斐濟元": "FJD",
+ "كرونة فاروية": "FOK",
+ "corona feroesa": "FOK",
+ "faerská koruna": "FOK",
+ "færøske kroner": "FOK",
+ "färöische krone": "FOK",
+ "faroese króna": "FOK",
+ "feroa krono": "FOK",
+ "fääri kroon": "FOK",
+ "کرون فارو": "FOK",
+ "färsaarten kruunu": "FOK",
+ "couronne féroïenne": "FOK",
+ "coroa feroesa": "FOK",
+ "føroyarska kruna": "FOK",
+ "feröeri korona": "FOK",
+ "corona delle fær øer": "FOK",
+ "フェロー・クローネ": "FOK",
+ "farerų krona": "FOK",
+ "faeröerse kroon": "FOK",
+ "korona wysp owczych": "FOK",
+ "coroană feroeză": "FOK",
+ "фарерская крона": "FOK",
+ "фарска круна": "FOK",
+ "färöisk krona": "FOK",
+ "பரோயே குரோனா": "FOK",
+ "faroe kronu": "FOK",
+ "фарерська крона": "FOK",
+ "法羅群島克朗": "FOK",
+ "جنيه إسترليني": "GBP",
+ "британска лира": "GBP",
+ "lliura esterlina": "GBP",
+ "libra šterlinků": "GBP",
+ "punt sterling": "GBP",
+ "britiske pund": "GBP",
+ "pfund sterling": "GBP",
+ "στερλίνα": "GBP",
+ "pound sterling": "GBP",
+ "brita pundo": "GBP",
+ "libra esterlina": "GBP",
+ "suurbritannia naelsterling": "GBP",
+ "libera esterlina": "GBP",
+ "پوند استرلینگ": "GBP",
+ "englannin punta": "GBP",
+ "livre sterling": "GBP",
+ "לירה שטרלינג": "GBP",
+ "britanska funta": "GBP",
+ "font sterling": "GBP",
+ "sterlina britannica": "GBP",
+ "スターリング・ポンド": "GBP",
+ "svaras sterlingų": "GBP",
+ "pond sterling": "GBP",
+ "liura esterlina": "GBP",
+ "funt szterling": "GBP",
+ "liră sterlină": "GBP",
+ "фунт стерлингов": "GBP",
+ "anglická libra": "GBP",
+ "funt šterling": "GBP",
+ "британска фунта": "GBP",
+ "brittiskt pund": "GBP",
+ "பிரித்தானிய பவுண்டு": "GBP",
+ "i̇ngiliz sterlini": "GBP",
+ "фунт стерлінгів": "GBP",
+ "bảng anh": "GBP",
+ "英镑": "GBP",
+ "لاري جورجي": "GEL",
+ "грузинско лари": "GEL",
+ "lari": "GEL",
+ "gruzínský lari": "GEL",
+ "georgiske lari": "GEL",
+ "georgischer lari": "GEL",
+ "λάρι γεωργίας": "GEL",
+ "georgian lari": "GEL",
+ "lario": "GEL",
+ "lari georgiano": "GEL",
+ "لاری گرجستان": "GEL",
+ "לארי גאורגי": "GEL",
+ "gruzijski lari": "GEL",
+ "grúz lari": "GEL",
+ "ラリ": "GEL",
+ "laris": "GEL",
+ "georgische lari": "GEL",
+ "грузинский лари": "GEL",
+ "gruzínske lari": "GEL",
+ "грузијски лари": "GEL",
+ "georgiska lari": "GEL",
+ "ஜார்ஜிய லாரி": "GEL",
+ "gürcistan larisi": "GEL",
+ "грузинський ларі": "GEL",
+ "格鲁吉亚拉里": "GEL",
+ "جنيه جيرنزي": "GGP",
+ "lliura de guernsey": "GGP",
+ "guernseyská libra": "GGP",
+ "guernsey pfund": "GGP",
+ "guernsey pound": "GGP",
+ "libra de guernsey": "GGP",
+ "پوند گرنزی": "GGP",
+ "guernseyn punta": "GGP",
+ "livre de guernesey": "GGP",
+ "guernseyjska funta": "GGP",
+ "guernsey i font": "GGP",
+ "sterlina di guernsey": "GGP",
+ "ガーンジー・ポンド": "GGP",
+ "gernsio svaras": "GGP",
+ "guernseypond": "GGP",
+ "funt guernsey": "GGP",
+ "liră din guernsey": "GGP",
+ "гернсийский фунт": "GGP",
+ "гернзијска фунта": "GGP",
+ "guernseypund": "GGP",
+ "குயெர்ன்சி பவுண்டு": "GGP",
+ "guernsey sterlini": "GGP",
+ "гернсійський фунт": "GGP",
+ "根西鎊": "GGP",
+ "سيدي غاني": "GHS",
+ "ганайско седи": "GHS",
+ "cedi": "GHS",
+ "ghanský cedi": "GHS",
+ "σέντι της γκάνας": "GHS",
+ "ghanaian cedi": "GHS",
+ "ganaa cedio": "GHS",
+ "سدی غنا": "GHS",
+ "ganski cedi": "GHS",
+ "ghánai cedi": "GHS",
+ "cedi ghanese": "GHS",
+ "セディ": "GHS",
+ "sedis": "GHS",
+ "ghanese cedi": "GHS",
+ "ганский седи": "GHS",
+ "гански седи": "GHS",
+ "ghana cedi": "GHS",
+ "ганський седі": "GHS",
+ "迦納塞地": "GHS",
+ "جنيه جبل طارق": "GIP",
+ "гибралтарска лира": "GIP",
+ "lliura de gibraltar": "GIP",
+ "gibraltarská libra": "GIP",
+ "gibraltariske pund": "GIP",
+ "gibraltar pfund": "GIP",
+ "λίρα γιβραλτάρ": "GIP",
+ "gibraltar pound": "GIP",
+ "ĝibraltara pundo": "GIP",
+ "libra gibraltareña": "GIP",
+ "gibraltari nael": "GIP",
+ "پوند جبلطارق": "GIP",
+ "gibraltarin punta": "GIP",
+ "livre de gibraltar": "GIP",
+ "libra de xibraltar": "GIP",
+ "gibraltarska funta": "GIP",
+ "gibraltári font": "GIP",
+ "sterlina di gibilterra": "GIP",
+ "ジブラルタル・ポンド": "GIP",
+ "gibraltaro svaras": "GIP",
+ "gibraltarees pond": "GIP",
+ "funt gibraltarski": "GIP",
+ "libra de gibraltar": "GIP",
+ "liră din gibraltar": "GIP",
+ "гибралтарский фунт": "GIP",
+ "gibraltárska libra": "GIP",
+ "гибралтарска фунта": "GIP",
+ "gibraltarpund": "GIP",
+ "கிப்ரால்ட்டர் பவுண்டு": "GIP",
+ "гібралтарський фунт": "GIP",
+ "bảng gibraltar": "GIP",
+ "直布羅陀鎊": "GIP",
+ "دالاسي غامبي": "GMD",
+ "гамбийско даласи": "GMD",
+ "dalasi": "GMD",
+ "gambijský dalasi": "GMD",
+ "νταλάζι": "GMD",
+ "gambian dalasi": "GMD",
+ "gambia dalasio": "GMD",
+ "دالاسی گامبیا": "GMD",
+ "gambijski dalasi": "GMD",
+ "gambiai dalasi": "GMD",
+ "dalasi gambese": "GMD",
+ "ダラシ": "GMD",
+ "dalasis": "GMD",
+ "gambiaanse dalasi": "GMD",
+ "даласи": "GMD",
+ "гамбијски даласи": "GMD",
+ "гамбійський даласі": "GMD",
+ "甘比亞達拉西": "GMD",
+ "فرنك غيني": "GNF",
+ "гвинейски франк": "GNF",
+ "franc guineà": "GNF",
+ "guinejský frank": "GNF",
+ "franc guinéen": "GNF",
+ "φράγκο γουινέας": "GNF",
+ "guinean franc": "GNF",
+ "gvinea franko": "GNF",
+ "franco guineano": "GNF",
+ "فرانک گینه": "GNF",
+ "guinean frangi": "GNF",
+ "פרנק גינאי": "GNF",
+ "gvinejski franak": "GNF",
+ "guineai frank": "GNF",
+ "ギニア・フラン": "GNF",
+ "gvinėjos frankas": "GNF",
+ "guineese frank": "GNF",
+ "frank gwinejski": "GNF",
+ "franco da guiné": "GNF",
+ "гвинейский франк": "GNF",
+ "гвинејски франак": "GNF",
+ "guinesisk franc": "GNF",
+ "gine frangı": "GNF",
+ "гвінейський франк": "GNF",
+ "幾內亞法郎": "GNF",
+ "كتزال غواتيمالي": "GTQ",
+ "гватемалски кецал": "GTQ",
+ "quetzal": "GTQ",
+ "guatemalský quetzal": "GTQ",
+ "guatemaltekischer quetzal": "GTQ",
+ "κετσάλ": "GTQ",
+ "guatemalan quetzal": "GTQ",
+ "gvatemala kecalo": "GTQ",
+ "ketzal": "GTQ",
+ "کوئتزال گواتمالا": "GTQ",
+ "קצאל": "GTQ",
+ "gvatemalski kvecal": "GTQ",
+ "guatemalai quetzal": "GTQ",
+ "quetzal guatemalteco": "GTQ",
+ "ケツァル": "GTQ",
+ "gvatemalos kecalis": "GTQ",
+ "guatemalteekse quetzal": "GTQ",
+ "гватемальский кетсаль": "GTQ",
+ "гватемалски квецал": "GTQ",
+ "guatemala quetzalı": "GTQ",
+ "гватемальський кетсаль": "GTQ",
+ "瓜地馬拉格查爾": "GTQ",
+ "دولار غياني": "GYD",
+ "гвиански долар": "GYD",
+ "dòlar de guyana": "GYD",
+ "guyanský dolar": "GYD",
+ "guyana dollar": "GYD",
+ "δολάριο γουιάνας": "GYD",
+ "guyanese dollar": "GYD",
+ "gujana dolaro": "GYD",
+ "dólar guyanés": "GYD",
+ "dolar guyanar": "GYD",
+ "دلار گویان": "GYD",
+ "guyanan dollari": "GYD",
+ "dollar guyanien": "GYD",
+ "dólar güianés": "GYD",
+ "gvajanski dolar": "GYD",
+ "guyanai dollár": "GYD",
+ "dollaro della guyana": "GYD",
+ "ガイアナ・ドル": "GYD",
+ "gajanos doleris": "GYD",
+ "guyaanse dollar": "GYD",
+ "dolar gujański": "GYD",
+ "dólar da guiana": "GYD",
+ "dolar guyanez": "GYD",
+ "гайанский доллар": "GYD",
+ "гвајански долар": "GYD",
+ "guyansk dollar": "GYD",
+ "guyana doları": "GYD",
+ "гаянський долар": "GYD",
+ "圭亞那元": "GYD",
+ "دولار هونغ كونغ": "HKD",
+ "хонконгски долар": "HKD",
+ "dòlar de hong kong": "HKD",
+ "hongkongský dolar": "HKD",
+ "doler hong cong": "HKD",
+ "hongkong dollar": "HKD",
+ "δολάριο χονγκ κονγκ": "HKD",
+ "hong kong dollar": "HKD",
+ "honkonga dolaro": "HKD",
+ "dólar de hong kong": "HKD",
+ "hongkongi dollar": "HKD",
+ "dolar hongkongdar": "HKD",
+ "دلار هنگ کنگ": "HKD",
+ "hongkongin dollari": "HKD",
+ "dollar de hong kong": "HKD",
+ "דולר הונג קונגי": "HKD",
+ "hongkonški dolar": "HKD",
+ "hongkongi dollár": "HKD",
+ "dollaro di hong kong": "HKD",
+ "香港ドル": "HKD",
+ "honkongo doleris": "HKD",
+ "hongkongse dollar": "HKD",
+ "dolar hongkongu": "HKD",
+ "гонконгский доллар": "HKD",
+ "hongkonský dolár": "HKD",
+ "хонгконшки долар": "HKD",
+ "hongkongdollar": "HKD",
+ "ஹொங்கொங் டொலர்": "HKD",
+ "hong kong doları": "HKD",
+ "гонконзький долар": "HKD",
+ "đô la hồng kông": "HKD",
+ "港元": "HKD",
+ "لمبيرة هندوراسية": "HNL",
+ "хондураска лемпира": "HNL",
+ "lempira": "HNL",
+ "honduraská lempira": "HNL",
+ "λεμπίρα": "HNL",
+ "honduran lempira": "HNL",
+ "hondura lempiro": "HNL",
+ "لامپیرای هندوراس": "HNL",
+ "hondurasin lempira": "HNL",
+ "למפירה": "HNL",
+ "honduraška lempira": "HNL",
+ "hondurasi lempira": "HNL",
+ "lempira honduregna": "HNL",
+ "レンピラ": "HNL",
+ "hondūro lempira": "HNL",
+ "hondurese lempira": "HNL",
+ "гондурасская лемпира": "HNL",
+ "honduras lempirası": "HNL",
+ "гондураська лемпіра": "HNL",
+ "宏都拉斯倫皮拉": "HNL",
+ "كونا كرواتية": "HRK",
+ "хърватска куна": "HRK",
+ "kuna": "HRK",
+ "chorvatská kuna": "HRK",
+ "kroatiske kuna": "HRK",
+ "kroatische kuna": "HRK",
+ "κούνα κροατίας": "HRK",
+ "croatian kuna": "HRK",
+ "kroata kunao": "HRK",
+ "kuna croata": "HRK",
+ "کونای کرواسی": "HRK",
+ "kroatian kuna": "HRK",
+ "kuna croate": "HRK",
+ "קונה": "HRK",
+ "hrvatska kuna": "HRK",
+ "horvát kuna": "HRK",
+ "クーナ": "HRK",
+ "kroatijos kuna": "HRK",
+ "хорватская куна": "HRK",
+ "chorvátska kuna": "HRK",
+ "hrvaška kuna": "HRK",
+ "хрватска куна": "HRK",
+ "kroatisk kuna": "HRK",
+ "குனா": "HRK",
+ "hırvat kunası": "HRK",
+ "хорватська куна": "HRK",
+ "克羅埃西亞庫納": "HRK",
+ "جوردة هايتية": "HTG",
+ "gourde": "HTG",
+ "haitský gourde": "HTG",
+ "γκουρντ": "HTG",
+ "haitian gourde": "HTG",
+ "haitia gurdo": "HTG",
+ "گورد هائیتی": "HTG",
+ "haitin gourde": "HTG",
+ "haićanski gourd": "HTG",
+ "haiti gourde": "HTG",
+ "gourde haitiano": "HTG",
+ "グールド": "HTG",
+ "gurdas": "HTG",
+ "haïtiaanse gourde": "HTG",
+ "гаитянский гурд": "HTG",
+ "хаићански гурд": "HTG",
+ "гаїтянський гурд": "HTG",
+ "海地古德": "HTG",
+ "فورنت مجري": "HUF",
+ "унгарски форинт": "HUF",
+ "fòrint": "HUF",
+ "maďarský forint": "HUF",
+ "ungarske forint": "HUF",
+ "forint": "HUF",
+ "φιορίνι ουγγαρίας": "HUF",
+ "hungarian forint": "HUF",
+ "hungara forinto": "HUF",
+ "forinto húngaro": "HUF",
+ "hungariar forint": "HUF",
+ "فورینت مجارستان": "HUF",
+ "unkarin forintti": "HUF",
+ "florín húngaro": "HUF",
+ "פורינט": "HUF",
+ "mađarska forinta": "HUF",
+ "magyar forint": "HUF",
+ "fiorino ungherese": "HUF",
+ "フォリント": "HUF",
+ "forintas": "HUF",
+ "hongaarse forint": "HUF",
+ "florim húngaro": "HUF",
+ "форинт": "HUF",
+ "madžarski forint": "HUF",
+ "мађарска форинта": "HUF",
+ "அங்கேரிய போரிண்ட்": "HUF",
+ "macar forinti": "HUF",
+ "угорський форинт": "HUF",
+ "đồng forint": "HUF",
+ "匈牙利福林": "HUF",
+ "pengő": "HUP",
+ "maďarské pengő": "HUP",
+ "hungarian pengő": "HUP",
+ "pengo": "HUP",
+ "pengö": "HUP",
+ "پنگوی مجارستان": "HUP",
+ "unkarin pengő": "HUP",
+ "פנגו הונגרי": "HUP",
+ "mađarski peng": "HUP",
+ "magyar pengő": "HUP",
+ "pengő ungherese": "HUP",
+ "ペンゲー": "HUP",
+ "pengė": "HUP",
+ "pengheu maghiar": "HUP",
+ "пенгё": "HUP",
+ "угорський пенге": "HUP",
+ "匈牙利帕戈": "HUP",
+ "روبية إندونيسية": "IDR",
+ "индонезийска рупия": "IDR",
+ "rupia indonèsia": "IDR",
+ "indonéská rupie": "IDR",
+ "rupiah": "IDR",
+ "indonesische rupiah": "IDR",
+ "ρουπία ινδονησίας": "IDR",
+ "indonesian rupiah": "IDR",
+ "indonezia rupio": "IDR",
+ "rupia indonesia": "IDR",
+ "errupia indonesiar": "IDR",
+ "روپیه اندونزی": "IDR",
+ "indonesian rupia": "IDR",
+ "roupie indonésienne": "IDR",
+ "indonezijska rupija": "IDR",
+ "indonéz rúpia": "IDR",
+ "rupia indonesiana": "IDR",
+ "ルピア": "IDR",
+ "indonezijos rupija": "IDR",
+ "indonesische roepia": "IDR",
+ "rupia indonezyjska": "IDR",
+ "rupia indonésia": "IDR",
+ "индонезийская рупия": "IDR",
+ "индонежанска рупија": "IDR",
+ "இந்தோனேசிய ரூபாய்": "IDR",
+ "endonezya rupiahı": "IDR",
+ "індонезійська рупія": "IDR",
+ "印尼盾": "IDR",
+ "شيكل إسرائيلي جديد": "ILS",
+ "израелски шекел": "ILS",
+ "nou xéquel": "ILS",
+ "nový izraelský šekel": "ILS",
+ "sicl newydd israel": "ILS",
+ "ny shekel": "ILS",
+ "schekel": "ILS",
+ "νέο ισραηλινό σεκέλ": "ILS",
+ "israeli new shekel": "ILS",
+ "nova israela siklo": "ILS",
+ "nuevo séquel": "ILS",
+ "iisraeli seekel": "ILS",
+ "shekel berri": "ILS",
+ "شکل جدید اسرائیل": "ILS",
+ "uusi israelin sekeli": "ILS",
+ "shekel": "ILS",
+ "novo shekel": "ILS",
+ "שקל חדש": "ILS",
+ "izraelski novi šekel": "ILS",
+ "izraeli új sékel": "ILS",
+ "nuovo shekel israeliano": "ILS",
+ "新シェケル": "ILS",
+ "izraelio naujasis šekelis": "ILS",
+ "israëlische sjekel": "ILS",
+ "nowy izraelski szekel": "ILS",
+ "novo shekel israelense": "ILS",
+ "новый израильский шекель": "ILS",
+ "нови израелски шекел": "ILS",
+ "புது இசுரேலிய சேக்கல்": "ILS",
+ "yeni i̇srail şekeli": "ILS",
+ "ізраїльський новий шекель": "ILS",
+ "以色列新谢克尔": "ILS",
+ "جنيه مانكس": "IMP",
+ "lliura de l'illa de man": "IMP",
+ "manská libra": "IMP",
+ "isle of man pfund": "IMP",
+ "manx pound": "IMP",
+ "libra manesa": "IMP",
+ "پوند مانکس": "IMP",
+ "mansaaren punta": "IMP",
+ "livre mannoise": "IMP",
+ "libra da illa de man": "IMP",
+ "manska funta": "IMP",
+ "man szigeti font": "IMP",
+ "sterlina di man": "IMP",
+ "マンクス・ポンド": "IMP",
+ "meno salos svaras": "IMP",
+ "isle of man pond": "IMP",
+ "funt manx": "IMP",
+ "liră din insula man": "IMP",
+ "фунт острова мэн": "IMP",
+ "манска фунта": "IMP",
+ "isle of man pund": "IMP",
+ "மான்க்ஸ் பவுண்டு": "IMP",
+ "фунт острова мен": "IMP",
+ "曼島鎊": "IMP",
+ "روبية هندية": "INR",
+ "индийска рупия": "INR",
+ "rupia índia": "INR",
+ "indická rupie": "INR",
+ "indiske rupier": "INR",
+ "indische rupie": "INR",
+ "ρουπία ινδίας": "INR",
+ "indian rupee": "INR",
+ "barata rupio": "INR",
+ "rupia india": "INR",
+ "india ruupia": "INR",
+ "errupia indiar": "INR",
+ "روپیه هند": "INR",
+ "intian rupia": "INR",
+ "roupie indienne": "INR",
+ "רופי הודי": "INR",
+ "indijska rupija": "INR",
+ "indiai rúpia": "INR",
+ "rupia indiana": "INR",
+ "インド・ルピー": "INR",
+ "indijos rupija": "INR",
+ "indiase roepie": "INR",
+ "ropia d'índia": "INR",
+ "rupia indyjska": "INR",
+ "rupie indiană": "INR",
+ "индийская рупия": "INR",
+ "indická rupia": "INR",
+ "индијска рупија": "INR",
+ "indisk rupie": "INR",
+ "இந்திய ரூபாய்": "INR",
+ "రూపాయి": "INR",
+ "hindistan rupisi": "INR",
+ "індійська рупія": "INR",
+ "rupee ấn độ": "INR",
+ "印度盧比": "INR",
+ "دينار عراقي": "IQD",
+ "иракски динар": "IQD",
+ "dinar iraquià": "IQD",
+ "irácký dinár": "IQD",
+ "irakiske dinarer": "IQD",
+ "irakischer dinar": "IQD",
+ "iraqi dinar": "IQD",
+ "iraka dinaro": "IQD",
+ "dinar iraquí": "IQD",
+ "دینار عراق": "IQD",
+ "irakin dinaari": "IQD",
+ "dinar irakien": "IQD",
+ "דינר עיראקי": "IQD",
+ "irački dinar": "IQD",
+ "iraki dinár": "IQD",
+ "dinaro iracheno": "IQD",
+ "イラク・ディナール": "IQD",
+ "irako dinaras": "IQD",
+ "iraakse dinar": "IQD",
+ "dinar iracki": "IQD",
+ "dinar iraquiano": "IQD",
+ "иракский динар": "IQD",
+ "ирачки динар": "IQD",
+ "irakisk dinar": "IQD",
+ "irak dinarı": "IQD",
+ "іракський динар": "IQD",
+ "伊拉克第納爾": "IQD",
+ "ريال إيراني": "IRR",
+ "ирански риал": "IRR",
+ "rial iranià": "IRR",
+ "íránský rijál": "IRR",
+ "rial": [
+ "SAR",
+ "IRR"
+ ],
+ "iranischer rial": "IRR",
+ "ιρανικό ριάλ": "IRR",
+ "iranian rial": "IRR",
+ "irana rialo": "IRR",
+ "rial iraní": "IRR",
+ "irandar rial": "IRR",
+ "ریال ایران": "IRR",
+ "iranin rial": "IRR",
+ "rial iranien": "IRR",
+ "ריאל איראני": "IRR",
+ "iranski rijal": "IRR",
+ "iráni riál": "IRR",
+ "riyal iraniano": "IRR",
+ "イラン・リヤル": "IRR",
+ "irano rialas": "IRR",
+ "iraanse rial": "IRR",
+ "rial irański": "IRR",
+ "rial iraniano": "IRR",
+ "rial iranian": "IRR",
+ "иранский риал": "IRR",
+ "iránsky rial": "IRR",
+ "ирански ријал": "IRR",
+ "iransk rial": "IRR",
+ "i̇ran riyali": "IRR",
+ "іранський ріал": "IRR",
+ "rial iran": "IRR",
+ "伊朗里亞爾": "IRR",
+ "كرونة آيسلندية": "ISK",
+ "исландска крона": "ISK",
+ "corona islandesa": "ISK",
+ "islandská koruna": "ISK",
+ "islandske krónur": "ISK",
+ "isländische krone": "ISK",
+ "κορόνα ισλανδίας": "ISK",
+ "icelandic króna": "ISK",
+ "islanda krono": "ISK",
+ "islandi kroon": "ISK",
+ "islandiar koroa": "ISK",
+ "کرونای ایسلند": "ISK",
+ "islannin kruunu": "ISK",
+ "couronne islandaise": "ISK",
+ "coroa islandesa": "ISK",
+ "קרונה איסלנדית": "ISK",
+ "islandska kruna": "ISK",
+ "izlandi korona": "ISK",
+ "corona islandese": "ISK",
+ "アイスランド・クローナ": "ISK",
+ "islandijos krona": "ISK",
+ "ijslandse kroon": "ISK",
+ "korona islandzka": "ISK",
+ "coroană islandeză": "ISK",
+ "исландская крона": "ISK",
+ "islandska krona": "ISK",
+ "исландска круна": "ISK",
+ "isländsk krona": "ISK",
+ "ஐஸ்லாந்திய குரோனா": "ISK",
+ "i̇zlanda kronası": "ISK",
+ "ісландська крона": "ISK",
+ "冰岛克朗": "ISK",
+ "دولار جامايكي": "JMD",
+ "ямайски долар": "JMD",
+ "dòlar jamaicà": "JMD",
+ "jamajský dolar": "JMD",
+ "jamaika dollar": "JMD",
+ "δολάριο τζαμάικας": "JMD",
+ "jamaican dollar": "JMD",
+ "jamajka dolaro": "JMD",
+ "dólar jamaiquino": "JMD",
+ "dolar jamaikar": "JMD",
+ "دلار جامائیکا": "JMD",
+ "jamaikan dollari": "JMD",
+ "dollar jamaïcain": "JMD",
+ "dólar xamaicano": "JMD",
+ "jamajčanski dolar": "JMD",
+ "jamaicai dollár": "JMD",
+ "dollaro giamaicano": "JMD",
+ "ジャマイカ・ドル": "JMD",
+ "jamaikos doleris": "JMD",
+ "jamaicaanse dollar": "JMD",
+ "dolar jamajski": "JMD",
+ "dólar jamaicano": "JMD",
+ "ямайский доллар": "JMD",
+ "јамајкански долар": "JMD",
+ "jamaicansk dollar": "JMD",
+ "jamaika doları": "JMD",
+ "ямайський долар": "JMD",
+ "牙買加元": "JMD",
+ "دينار أردني": "JOD",
+ "йордански динар": "JOD",
+ "dinar jordà": "JOD",
+ "jordánský dinár": "JOD",
+ "jordanischer dinar": "JOD",
+ "ιορδανικό δηνάριο": "JOD",
+ "jordanian dinar": "JOD",
+ "jordania dinaro": "JOD",
+ "dinar jordano": "JOD",
+ "jordaania dinaar": "JOD",
+ "jordaniako dinar": "JOD",
+ "دینار اردن": "JOD",
+ "jordanian dinaari": "JOD",
+ "dinar jordanien": "JOD",
+ "דינר ירדני": "JOD",
+ "jordanski dinar": "JOD",
+ "jordán dinár": "JOD",
+ "dinaro giordano": "JOD",
+ "ヨルダン・ディナール": "JOD",
+ "jordanijos dinaras": "JOD",
+ "jordaanse dinar": "JOD",
+ "dinar jordański": "JOD",
+ "dinar iordanian": "JOD",
+ "иорданский динар": "JOD",
+ "јордански динар": "JOD",
+ "jordansk dinar": "JOD",
+ "ürdün dinarı": "JOD",
+ "йорданський динар": "JOD",
+ "約旦第納爾": "JOD",
+ "ين ياباني": "JPY",
+ "японска йена": "JPY",
+ "ien": "JPY",
+ "japonský jen": "JPY",
+ "yen": "JPY",
+ "γιεν": "JPY",
+ "japanese yen": "JPY",
+ "japana eno": "JPY",
+ "jaapani jeen": "JPY",
+ "ین ژاپن": "JPY",
+ "japanin jeni": "JPY",
+ "ין יפני": "JPY",
+ "japanski jen": "JPY",
+ "japán jen": "JPY",
+ "円": "JPY",
+ "jena": "JPY",
+ "japanse yen": "JPY",
+ "jen": "JPY",
+ "iene": "JPY",
+ "иена": "JPY",
+ "јапански јен": "JPY",
+ "யென்": "JPY",
+ "japon yeni": "JPY",
+ "єна": "JPY",
+ "yên nhật": "JPY",
+ "日圓": "JPY",
+ "شيلينغ كيني": "KES",
+ "кенийски шилинг": "KES",
+ "xíling kenyà": "KES",
+ "keňský šilink": "KES",
+ "kenyansk shilling": "KES",
+ "kenia schilling": "KES",
+ "σελίνι της κένυας": "KES",
+ "kenyan shilling": "KES",
+ "kenja ŝilingo": "KES",
+ "chelín keniano": "KES",
+ "keenia šilling": "KES",
+ "شیلینگ کنیا": "KES",
+ "kenian šillinki": "KES",
+ "shilling kényan": "KES",
+ "xilin kenyano": "KES",
+ "שילינג קנייתי": "KES",
+ "kenijski šiling": "KES",
+ "kenyai shilling": "KES",
+ "scellino keniota": "KES",
+ "ケニア・シリング": "KES",
+ "kenijos šilingas": "KES",
+ "keniaanse shilling": "KES",
+ "szyling kenijski": "KES",
+ "xelim queniano": "KES",
+ "кенийский шиллинг": "KES",
+ "кенијски шилинг": "KES",
+ "kenya şilini": "KES",
+ "кенійський шилінг": "KES",
+ "肯尼亞先令": "KES",
+ "سوم قيرغيزستاني": "KGS",
+ "киргизстански сом": "KGS",
+ "som kirguís": "KGS",
+ "kyrgyzský som": "KGS",
+ "som": [
+ "UZS",
"KGS"
- ],
- "dinar du ye\u0301men du sud": [
- "YER"
- ],
- "peso moneda nacional": [
- "ARS"
- ],
- "scellino somalo": [
- "SOS"
- ],
- "cseh korona": [
- "CZK"
- ],
- "uruguayan peso": [
- "UYU"
- ],
- "cl$": [
- "CLP"
- ],
- "convertibele peso": [
- "CUC"
- ],
- "britisches pfund": [
- "GBP"
- ],
- "tonga dollar": [
- "TOP"
- ],
- "peso cubain convertible": [
- "CUC"
- ],
- "argentin peso": [
- "ARS"
- ],
- "lira maltesa": [
- "MTL"
- ],
- "bosnische konvertibilna marka": [
- "BAM"
- ],
- "francs suisse": [
- "CHF"
- ],
- "gourde haitienne": [
- "HTG"
- ],
- "shilling somali": [
- "SOS"
- ],
- "nt$": [
- "TWD"
- ],
- "rp": [
- "IDR"
- ],
- "dolar de las bahamas": [
- "BSD"
- ],
- "rs": [
- "BRL"
- ],
- "monnaie danoise": [
- "DKK"
- ],
- "swaziland lilangeni": [
- "SZL"
- ],
- "tugrig": [
- "MNT"
- ],
- "gersh": [
- "ETB"
- ],
- "rouble russe": [
- "RUB"
- ],
- "tugrik": [
- "MNT"
- ],
- "kip": [
- "LAK"
- ],
- "dirham de los emiratos arabes unidos": [
- "AED"
- ],
- "escudo capverdien": [
- "CVE"
- ],
- "jemeni ria\u0301l": [
- "YER"
- ],
- "fcfp": [
- "XPF"
- ],
- "rwanda franc": [
- "RWF"
- ],
- "bolivar venezolano": [
- "VEF"
- ],
- "zambiai kwacha": [
- "ZMW"
- ],
- "lev bulgaro": [
- "BGN"
- ],
- "lev bulgare": [
- "BGN"
- ],
- "nakfa eritreo": [
- "ERN"
- ],
- "danish krone": [
- "DKK"
- ],
- "monnaie britannique": [
- "GBP"
- ],
- "r$": [
- "BRL"
- ],
- "di\u0301rham marroqui\u0301": [
+ ],
+ "σομ κιργιζίας": "KGS",
+ "kyrgyzstani som": "KGS",
+ "kirgiza somo": "KGS",
+ "سوم قرقیزستان": "KGS",
+ "kirgisian som": "KGS",
+ "som kirguiz": "KGS",
+ "kirgistanski som": "KGS",
+ "kirgiz szom": "KGS",
+ "som kirghiso": "KGS",
+ "キルギス・ソム": "KGS",
+ "somas": "KGS",
+ "kirgizische som": "KGS",
+ "som kîrgîz": "KGS",
+ "киргизский сом": "KGS",
+ "киргиски сом": "KGS",
+ "kirgizistansk som": "KGS",
+ "kırgızistan somu": "KGS",
+ "киргизький сом": "KGS",
+ "吉尔吉斯斯坦索姆": "KGS",
+ "ريال كمبودي": "KHR",
+ "камбоджански риел": "KHR",
+ "riel": "KHR",
+ "kambodžský riel": "KHR",
+ "kambodschanischer riel": "KHR",
+ "ριέλ καμπότζης": "KHR",
+ "cambodian riel": "KHR",
+ "kamboĝa rielo": "KHR",
+ "riel camboyano": "KHR",
+ "kanbodiar bigarren riel": "KHR",
+ "ریال کامبوج": "KHR",
+ "kambodžan riel": "KHR",
+ "riel camboxano": "KHR",
+ "kambodžanski rijal": "KHR",
+ "kambodzsai riel": "KHR",
+ "riel cambogiano": "KHR",
+ "リエル": "KHR",
+ "kambodžos rielis": "KHR",
+ "cambodjaanse riel": "KHR",
+ "riel kambodżański": "KHR",
+ "riel cambojano": "KHR",
+ "риель": "KHR",
+ "камбоџански ријел": "KHR",
+ "камбоджійський рієль": "KHR",
+ "riel campuchia": "KHR",
+ "柬埔寨瑞爾": "KHR",
+ "دولار كريباتي": "KID",
+ "kiribatský dolar": "KID",
+ "kiribati dollar": "KID",
+ "δολάριο κιριμπάτι": "KID",
+ "kiribata dolaro": "KID",
+ "dólar kiribatiano": "KID",
+ "دلار کیریباتی": "KID",
+ "kiribatin dollari": "KID",
+ "dollar des kiribati": "KID",
+ "dólar de kiribati": "KID",
+ "kiribatski dolar": "KID",
+ "dollaro delle kiribati": "KID",
+ "キリバス・ドル": "KID",
+ "kiribačio doleris": "KID",
+ "dolar kiribati": "KID",
+ "dolar din kiribati": "KID",
+ "доллар кирибати": "KID",
+ "долар кірибаті": "KID",
+ "基里巴斯元": "KID",
+ "فرنك قمري": "KMF",
+ "коморски франк": "KMF",
+ "franc de les comores": "KMF",
+ "komorský frank": "KMF",
+ "komoren franc": "KMF",
+ "φράγκο κομορών": "KMF",
+ "comorian franc": "KMF",
+ "komora franko": "KMF",
+ "franco comorense": "KMF",
+ "فرانک کمر": "KMF",
+ "komorien frangi": "KMF",
+ "franc comorien": "KMF",
+ "komorski franak": "KMF",
+ "comore i frank": "KMF",
+ "franco delle comore": "KMF",
+ "コモロ・フラン": "KMF",
+ "komorų frankas": "KMF",
+ "comorese frank": "KMF",
+ "frank komorów": "KMF",
+ "franco comoriano": "KMF",
+ "franc comorian": "KMF",
+ "франк комор": "KMF",
+ "коморски франак": "KMF",
+ "komorisk franc": "KMF",
+ "komor frangı": "KMF",
+ "коморський франк": "KMF",
+ "葛摩法郎": "KMF",
+ "وون كوري شمالي": "KPW",
+ "севернокорейски вон": "KPW",
+ "won nord coreà": "KPW",
+ "severokorejský won": "KPW",
+ "nordkoreanske won": "KPW",
+ "nordkoreanischer won": "KPW",
+ "γουόν βόρειας κορέας": "KPW",
+ "north korean won": "KPW",
+ "nord korea ŭono": "KPW",
+ "won norcoreano": "KPW",
+ "põhja korea vonn": "KPW",
+ "وون کره شمالی": "KPW",
+ "pohjois korean won": "KPW",
+ "won nord coréen": "KPW",
+ "וון צפון קוריאני": "KPW",
+ "sjevernokorejski von": "KPW",
+ "észak koreai von": "KPW",
+ "won nordcoreano": "KPW",
+ "朝鮮民主主義人民共和国ウォン": "KPW",
+ "šiaurės korėjos vona": "KPW",
+ "noord koreaanse won": "KPW",
+ "won północnokoreański": "KPW",
+ "won norte coreano": "KPW",
+ "won nord coreean": "KPW",
+ "северокорейская вона": "KPW",
+ "севернокорејски вон": "KPW",
+ "nordkoreansk won": "KPW",
+ "kuzey kore wonu": "KPW",
+ "північнокорейська вона": "KPW",
+ "won cộng hòa dân chủ nhân dân triều tiên": "KPW",
+ "朝鮮圓": "KPW",
+ "وون كوري جنوبي": "KRW",
+ "южнокорейски вон": "KRW",
+ "won sud coreà": "KRW",
+ "jihokorejský won": "KRW",
+ "sydkoreanske won": "KRW",
+ "südkoreanischer won": "KRW",
+ "γουόν νότιας κορέας": "KRW",
+ "south korean won": "KRW",
+ "sud korea ŭono": "KRW",
+ "won surcoreano": "KRW",
+ "lõuna korea vonn": "KRW",
+ "وون کره جنوبی": "KRW",
+ "etelä korean won": "KRW",
+ "won sud coréen": "KRW",
+ "južnokorejski von": "KRW",
+ "dél koreai von": "KRW",
+ "won sudcoreano": "KRW",
+ "大韓民国ウォン": "KRW",
+ "pietų korėjos vonas": "KRW",
+ "zuid koreaanse won": "KRW",
+ "won południowokoreański": "KRW",
+ "won sul coreano": "KRW",
+ "won sud coreean": "KRW",
+ "южнокорейская вона": "KRW",
+ "јужнокорејски вон": "KRW",
+ "sydkoreansk won": "KRW",
+ "güney kore wonu": "KRW",
+ "південнокорейська вона": "KRW",
+ "won hàn quốc": "KRW",
+ "韓圓": "KRW",
+ "دينار كويتي": "KWD",
+ "кувейтски динар": "KWD",
+ "dinar kuwaitià": "KWD",
+ "kuvajtský dinár": "KWD",
+ "kuwaitiske dinarer": "KWD",
+ "kuwait dinar": "KWD",
+ "δηνάριο κουβέιτ": "KWD",
+ "kuwaiti dinar": "KWD",
+ "kuvajta dinaro": "KWD",
+ "dinar kuwaití": "KWD",
+ "دینار کویت": "KWD",
+ "kuwaitin dinaari": "KWD",
+ "dinar koweïtien": "KWD",
+ "דינר כוויתי": "KWD",
+ "kuvajtski dinar": "KWD",
+ "kuvaiti dinár": "KWD",
+ "dinaro kuwaitiano": "KWD",
+ "クウェート・ディナール": "KWD",
+ "kuveito dinaras": "KWD",
+ "koeweitse dinar": "KWD",
+ "dinar kuwejcki": "KWD",
+ "dinar kuwaitiano": "KWD",
+ "кувейтский динар": "KWD",
+ "кувајтски динар": "KWD",
+ "kuwaitisk dinar": "KWD",
+ "குவைத் தினார்": "KWD",
+ "kuveyt dinarı": "KWD",
+ "кувейтський динар": "KWD",
+ "dinar kuwait": "KWD",
+ "科威特第納爾": "KWD",
+ "دولار جزر كايمان": "KYD",
+ "dòlar de les illes caiman": "KYD",
+ "dolar kajmanských ostrovů": "KYD",
+ "kaiman dollar": "KYD",
+ "δολάριο νησιών κέιμαν": "KYD",
+ "cayman islands dollar": "KYD",
+ "kajmana dolaro": "KYD",
+ "dólar de las islas caimán": "KYD",
+ "dolar kaimandar": "KYD",
+ "دلار جزایر کیمن": "KYD",
+ "caymansaarten dollari": "KYD",
+ "dollar des îles caïmans": "KYD",
+ "kajmanski dolar": "KYD",
+ "kajmán szigeteki dollár": "KYD",
+ "dollaro delle cayman": "KYD",
+ "ケイマン諸島・ドル": "KYD",
+ "kaimanų salų doleris": "KYD",
+ "kaaimaneilandse dollar": "KYD",
+ "dolar kajmański": "KYD",
+ "dólar das ilhas cayman": "KYD",
+ "доллар каймановых островов": "KYD",
+ "долар кајманских острва": "KYD",
+ "caymansk dollar": "KYD",
+ "cayman adaları doları": "KYD",
+ "долар кайманових островів": "KYD",
+ "đô la quần đảo cayman": "KYD",
+ "開曼群島元": "KYD",
+ "تينغ كازاخستاني": "KZT",
+ "казахстанско тенге": "KZT",
+ "tenge": "KZT",
+ "τένγκε": "KZT",
+ "kazakhstani tenge": "KZT",
+ "kazaĥa tengo": "KZT",
+ "tenge kazajo": "KZT",
+ "تنگه قزاقستان": "KZT",
+ "kazakstanin tenge": "KZT",
+ "tenge kazakh": "KZT",
+ "kazahstanski tenge": "KZT",
+ "kazah tenge": "KZT",
+ "tenge kazako": "KZT",
+ "テンゲ": "KZT",
+ "kazachstano tengė": "KZT",
+ "kazachse tenge": "KZT",
+ "казахстанский тенге": "KZT",
+ "kazachstanský tenge": "KZT",
+ "казахстански тенге": "KZT",
+ "கசக்ஸ்தானிய டெங்கே": "KZT",
+ "казахстанський теньге": "KZT",
+ "tenge kazakhstan": "KZT",
+ "哈萨克斯坦坚戈": "KZT",
+ "كيب لاوي": "LAK",
+ "лаоски кип": "LAK",
+ "kip": "LAK",
+ "laoský kip": "LAK",
+ "laotischer kip": "LAK",
+ "κιπ": "LAK",
+ "lao kip": "LAK",
+ "laosa kipo": "LAK",
+ "kip laosiano": "LAK",
+ "laostar kip berria": "LAK",
+ "کیپ لائوس": "LAK",
+ "laosin kip": "LAK",
+ "laoski kip": "LAK",
+ "laoszi kip": "LAK",
+ "kip laotiano": "LAK",
+ "キープ": "LAK",
+ "laoso kipas": "LAK",
+ "laotiaanse kip": "LAK",
+ "лаосский кип": "LAK",
+ "laos kipi": "LAK",
+ "лаоський кіп": "LAK",
+ "kíp lào": "LAK",
+ "寮國基普": "LAK",
+ "ليرة لبنانية": "LBP",
+ "ливанска лира": "LBP",
+ "lliura libanesa": "LBP",
+ "libanonská libra": "LBP",
+ "libanesisches pfund": "LBP",
+ "λίρα του λιβάνου": "LBP",
+ "lebanese pound": "LBP",
+ "libana liro": "LBP",
+ "libra libanesa": "LBP",
+ "لیره لبنان": "LBP",
+ "libanonin punta": "LBP",
+ "livre libanaise": "LBP",
+ "לירה לבנונית": "LBP",
+ "libanonska funta": "LBP",
+ "libanoni font": "LBP",
+ "lira libanese": "LBP",
+ "レバノン・ポンド": "LBP",
+ "libano svaras": "LBP",
+ "libanees pond": "LBP",
+ "funt libański": "LBP",
+ "ливанский фунт": "LBP",
+ "libanonski funt": "LBP",
+ "либанска фунта": "LBP",
+ "libanesiskt pund": "LBP",
+ "lübnan lirası": "LBP",
+ "ліванський фунт": "LBP",
+ "黎巴嫩鎊": "LBP",
+ "روبية سريلانكي": "LKR",
+ "шриланкийска рупия": "LKR",
+ "rupia de sri lanka": "LKR",
+ "srílanská rupie": "LKR",
+ "srilankanske rupee": "LKR",
+ "sri lanka rupie": "LKR",
+ "sri lankan rupee": "LKR",
+ "srilanka rupio": "LKR",
+ "errupia srilankar": "LKR",
+ "روپیه سریلانکا": "LKR",
+ "sri lankan rupia": "LKR",
+ "roupie srilankaise": "LKR",
+ "šrilanska rupija": "LKR",
+ "srí lanka i rúpia": "LKR",
+ "rupia singalese": "LKR",
+ "スリランカ・ルピー": "LKR",
+ "šri lankos rupija": "LKR",
+ "sri lankaanse roepie": "LKR",
+ "rupia lankijska": "LKR",
+ "rupia do sri lanka": "LKR",
+ "шри ланкийская рупия": "LKR",
+ "шриланчанска рупија": "LKR",
+ "lankesisk rupee": "LKR",
+ "இலங்கை ரூபாய்": "LKR",
+ "sri lanka rupisi": "LKR",
+ "рупія шрі ланки": "LKR",
+ "rupee sri lanka": "LKR",
+ "斯里蘭卡盧比": "LKR",
+ "دولار ليبيري": "LRD",
+ "либерийски долар": "LRD",
+ "dòlar liberià": "LRD",
+ "liberijský dolar": "LRD",
+ "liberiansk dollar": "LRD",
+ "liberianischer dollar": "LRD",
+ "δολάριο λιβερίας": "LRD",
+ "liberian dollar": "LRD",
+ "liberia dolaro": "LRD",
+ "dólar liberiano": "LRD",
+ "دلار لیبریا": "LRD",
+ "liberian dollari": "LRD",
+ "dollar libérien": "LRD",
+ "דולר ליברי": "LRD",
+ "liberijski dolar": "LRD",
+ "libériai dollár": "LRD",
+ "dollaro liberiano": "LRD",
+ "リベリア・ドル": "LRD",
+ "liberijos doleris": "LRD",
+ "liberiaanse dollar": "LRD",
+ "dolar liberyjski": "LRD",
+ "либерийский доллар": "LRD",
+ "либеријски долар": "LRD",
+ "liberya doları": "LRD",
+ "ліберійський долар": "LRD",
+ "賴比瑞亞元": "LRD",
+ "لوتي ليسوتو": "LSL",
+ "loti": "LSL",
+ "lesothský loti": "LSL",
+ "maloti": "LSL",
+ "lesothischer loti": "LSL",
+ "λότι": "LSL",
+ "lesotho loti": "LSL",
+ "lesota lotio": "LSL",
+ "لوتی لسوتو": "LSL",
+ "lesothon loti": "LSL",
+ "lesotski loti": "LSL",
+ "lesothói loti": "LSL",
+ "loti lesothiano": "LSL",
+ "ロチ": "LSL",
+ "lesothaanse loti": "LSL",
+ "лоти лесото": "LSL",
+ "лесотски лоти": "LSL",
+ "лоті лесото": "LSL",
+ "賴索托洛蒂": "LSL",
+ "دينار ليبي": "LYD",
+ "либийски динар": "LYD",
+ "dinar libi": "LYD",
+ "libyjský dinár": "LYD",
+ "dinar libia": "LYD",
+ "libyske dinarer": "LYD",
+ "libyscher dinar": "LYD",
+ "δηνάριο λιβύης": "LYD",
+ "libyan dinar": "LYD",
+ "libia dinaro": "LYD",
+ "dinar libio": "LYD",
+ "دینار لیبی": "LYD",
+ "libyan dinaari": "LYD",
+ "dinar libyen": "LYD",
+ "דינר לובי": "LYD",
+ "libijski dinar": "LYD",
+ "líbiai dinár": "LYD",
+ "dinaro libico": "LYD",
+ "リビア・ディナール": "LYD",
+ "libijos dinaras": "LYD",
+ "libische dinar": "LYD",
+ "dinar libijski": "LYD",
+ "dinar líbio": "LYD",
+ "ливийский динар": "LYD",
+ "либијски динар": "LYD",
+ "libysk dinar": "LYD",
+ "libya dinarı": "LYD",
+ "лівійський динар": "LYD",
+ "利比亞第納爾": "LYD",
+ "درهم مغربي": "MAD",
+ "марокански дирхам": "MAD",
+ "dírham marroquí": "MAD",
+ "marocký dirham": "MAD",
+ "dirham moroco": "MAD",
+ "marokkanischer dirham": "MAD",
+ "ντιρχάμ μαρόκου": "MAD",
+ "moroccan dirham": "MAD",
+ "maroka dirhamo": "MAD",
+ "marokoar dirham": "MAD",
+ "درهم مراکش": "MAD",
+ "marokon dirhami": "MAD",
+ "dirham marocain": "MAD",
+ "dirham": [
+ "AED",
"MAD"
- ],
- "institut d'e\u0301mission d'outre mer": [
- "XPF"
- ],
- "manat azerbaiyano": [
- "AZN"
- ],
- "vietnami \u0111o\u0302\u0300ng": [
- "VND"
- ],
- "riyal iraniano": [
- "IRR"
- ],
- "franco guineano": [
- "GNF"
- ],
- "fiorino arubano": [
- "AWG"
- ],
- "rand": [
- "ZAR"
- ],
- "schekel": [
- "ILS"
- ],
- "sterlina di sant'elena": [
- "SHP"
- ],
- "pound sterling": [
- "GBP"
- ],
- "nacfa eritreo": [
- "ERN"
- ],
- "dolar taiwanes": [
- "TWD"
- ],
- "koruna c\u030ceska": [
- "CZK"
- ],
- "\u20ad": [
- "LAK"
- ],
- "kro\u0301na": [
- "ISK"
- ],
- "denar macedonio": [
- "MKD"
- ],
- "libra libanesa": [
- "LBP"
- ],
- "dolar belicen\u0303o": [
- "BZD"
- ],
- "lesotho\u0301i loti": [
- "LSL"
- ],
- "colombian peso": [
- "COP"
- ],
- "do\u0301lar de brune\u0301i": [
- "BND"
- ],
- "szingapu\u0301ri dolla\u0301r": [
- "SGD"
- ],
- "franc poincare": [
- "XFO"
- ],
- "metical mozambiqueno": [
- "MZN"
- ],
- "filipijnse peso": [
- "PHP"
- ],
- "somoni": [
- "TJS"
- ],
- "lempire hondurien": [
- "HNL"
- ],
- "angolan kwanza": [
- "AOA"
- ],
- "schwedenkrone": [
- "SEK"
- ],
- "lire maltaise": [
- "MTL"
- ],
- "balboa paname\u0301en": [
- "PAB"
- ],
- "israelische lire": [
- "ILS"
- ],
- "nzd": [
- "NZD"
- ],
- "hryvnia ucraina": [
- "UAH"
- ],
- "pataca": [
- "MOP"
- ],
- "coronas suecas": [
- "SEK"
- ],
- "cape verde escudo": [
- "CVE"
- ],
- "rupia pakistani": [
- "PKR"
- ],
- "hungarian forint": [
- "HUF"
- ],
- "rupia pakistana": [
- "PKR"
- ],
- "bs.": [
- "BOB"
- ],
- "kopeken": [
- "RUB"
- ],
- "dolar bahameno": [
- "BSD"
- ],
- "de\u0301l koreai von": [
- "KRW"
- ],
- "zo\u0308ld foki ko\u0308zta\u0301rsasa\u0301gi escudo": [
- "CVE"
- ],
- "romanian leu": [
- "RON"
- ],
- "etio\u0301p birr": [
- "ETB"
- ],
- "indiai ru\u0301pia": [
- "INR"
- ],
- "livre de gibraltar": [
- "GIP"
- ],
- "pa\u2019anga": [
- "TOP"
- ],
- "mexiko\u0301i pezo\u0301": [
- "MXN"
- ],
- "tansania schilling": [
- "TZS"
- ],
- "omanitische rial": [
- "OMR"
- ],
- "rial omani\u0301": [
- "OMR"
- ],
- "milandor": [
- "RSD"
- ],
- "canadischer dollar": [
- "CAD"
- ],
- "dollaro delle isole salomone": [
- "SBD"
- ],
- "noorse kronen": [
- "NOK"
- ],
- "samoan ta\u0304la\u0304": [
- "WST"
- ],
- "aruban florin": [
- "AWG"
- ],
- "iraakse dinar": [
- "IQD"
- ],
- "malaysian ringgit": [
- "MYR"
- ],
- "som usbeco": [
- "UZS"
- ],
- "ariary": [
- "MGA"
- ],
- "kyat": [
- "MMK"
- ],
- "austral (moneda de argentina)": [
- "ARA"
- ],
- "bruneise dollar": [
- "BND"
- ],
- "leu romeno": [
- "RON"
- ],
- "kolumbiai peso": [
- "COP"
- ],
- "oezbeekse sum": [
- "UZS"
- ],
- "burundese frank": [
- "BIF"
- ],
- "austral (argentina)": [
- "ARA"
- ],
- "riyal qatarien": [
- "QAR"
- ],
- "quetzal guatemalteque": [
- "GTQ"
- ],
- "taiwan dollar": [
- "TWD"
- ],
- "dolar de namibia": [
- "NAD"
- ],
- "indiase rupee": [
- "INR"
- ],
- "dollaro delle figi": [
- "FJD"
- ],
- "cfa franc beac": [
+ ],
+ "דירהם מרוקאי": "MAD",
+ "marokanski dirham": "MAD",
+ "marokkói dirham": "MAD",
+ "dirham marocchino": "MAD",
+ "モロッコ・ディルハム": "MAD",
+ "maroko dirhamas": "MAD",
+ "marokkaanse dirham": "MAD",
+ "dirham marokański": "MAD",
+ "dirrã marroquino": "MAD",
+ "dirham marocan": "MAD",
+ "марокканский дирхам": "MAD",
+ "marockansk dirham": "MAD",
+ "fas dirhemi": "MAD",
+ "марокканський дирхам": "MAD",
+ "摩洛哥迪尔汗": "MAD",
+ "فرنك موناكو": "MCF",
+ "монакски франк": "MCF",
+ "franc monegasc": "MCF",
+ "monacký frank": "MCF",
+ "monegassischer franc": "MCF",
+ "φράγκο μονακό": "MCF",
+ "monégasque franc": "MCF",
+ "franco monegasco": "MCF",
+ "فرانک موناکو": "MCF",
+ "franc monégasque": "MCF",
+ "monegaški franak": "MCF",
+ "モネガスク・フラン": "MCF",
+ "monako frankas": "MCF",
+ "monegaskische frank": "MCF",
+ "frank monakijski": "MCF",
+ "монегасский франк": "MCF",
+ "франк монако": "MCF",
+ "摩納哥法郎": "MCF",
+ "ليو مولدوفي": "MDL",
+ "молдовска лея": "MDL",
+ "leu moldau": "MDL",
+ "moldavský lei": "MDL",
+ "moldauischer leu": "MDL",
+ "λέου μολδαβίας": "MDL",
+ "moldovan leu": "MDL",
+ "moldava leo": "MDL",
+ "leu moldavo": "MDL",
+ "moldova leu": "MDL",
+ "لئوی مولداوی": "MDL",
+ "leu moldave": "MDL",
+ "לאו מולדובני": "MDL",
+ "moldavski lej": "MDL",
+ "moldáv lej": "MDL",
+ "モルドバ・レウ": "MDL",
+ "moldavijos lėja": "MDL",
+ "moldavische leu": "MDL",
+ "lej mołdawii": "MDL",
+ "leu moldávio": "MDL",
+ "leu moldovenesc": "MDL",
+ "молдавский лей": "MDL",
+ "moldavski lev": "MDL",
+ "молдавски леј": "MDL",
+ "moldavisk leu": "MDL",
+ "மல்டோவிய லியு": "MDL",
+ "moldova leyi": "MDL",
+ "молдовський лей": "MDL",
+ "摩爾多瓦列伊": "MDL",
+ "أرياري مدغشقري": "MGA",
+ "ariary": "MGA",
+ "malgašský ariary": "MGA",
+ "αριάρι": "MGA",
+ "malagasy ariary": "MGA",
+ "malagasa ariaro": "MGA",
+ "ariary malgache": "MGA",
+ "آریاری ماداگاسکار": "MGA",
+ "madagaskarin ariary": "MGA",
+ "אריארי": "MGA",
+ "malgaški arijari": "MGA",
+ "madagaszkári ariary": "MGA",
+ "ariary malgascio": "MGA",
+ "マダガスカル・アリアリ": "MGA",
+ "madagaskaro ariaris": "MGA",
+ "malagassische ariary": "MGA",
+ "ariary malgaxe": "MGA",
+ "малагасийский ариари": "MGA",
+ "аријари": "MGA",
+ "малагасійський аріарі": "MGA",
+ "馬達加斯加阿里亞里": "MGA",
+ "دينار مقدوني": "MKD",
+ "македонски денар": "MKD",
+ "denar": "MKD",
+ "makedonský denár": "MKD",
+ "makedonske denarer": "MKD",
+ "mazedonischer denar": "MKD",
+ "δηνάριο βόρειας μακεδονίας": "MKD",
+ "macedonian denar": "MKD",
+ "makedona denaro": "MKD",
+ "denar macedonio": "MKD",
+ "põhja makedoonia denaar": "MKD",
+ "دینار مقدونیه": "MKD",
+ "pohjois makedonian denaari": "MKD",
+ "denar macédonien": "MKD",
+ "דינר מקדוני": "MKD",
+ "makedonski denar": "MKD",
+ "macedón dénár": "MKD",
+ "dinaro macedone": "MKD",
+ "マケドニア・デナール": "MKD",
+ "makedonijos denaras": "MKD",
+ "macedonische denar": "MKD",
+ "dinar macedónio": "MKD",
+ "denar macedonean": "MKD",
+ "македонский денар": "MKD",
+ "macedónsky denár": "MKD",
+ "makedonisk denar": "MKD",
+ "மாசிடோனிய தெனார்": "MKD",
+ "makedon denarı": "MKD",
+ "македонський денар": "MKD",
+ "denar bắc macedonia": "MKD",
+ "北馬其頓代納爾": "MKD",
+ "كيات ميانماري": "MMK",
+ "kyat": "MMK",
+ "myanmarský kyat": "MMK",
+ "myanmar kyat": "MMK",
+ "birma kjato": "MMK",
+ "kyat birmano": "MMK",
+ "کیات میانمار": "MMK",
+ "myanmarin kyat": "MMK",
+ "mijanmarski kjat": "MMK",
+ "mianmari kjap": "MMK",
+ "チャット": "MMK",
+ "kijatas": "MMK",
+ "myanmarese kyat": "MMK",
+ "kiat": "MMK",
+ "quiate": "MMK",
+ "кьят": "MMK",
+ "мјанмарски кјат": "MMK",
+ "м'янмський к'ят": "MMK",
+ "缅甸元": "MMK",
+ "توغروغ منغولي": "MNT",
+ "монголски тугрик": "MNT",
+ "tögrög": "MNT",
+ "tugrik": "MNT",
+ "τουγκρίκ": "MNT",
+ "mongolian tögrög": "MNT",
+ "mongola tugriko": "MNT",
+ "tugrik mongol": "MNT",
+ "توگروگ مغولستان": "MNT",
+ "mongolian tugrik": "MNT",
+ "טוגרוג": "MNT",
+ "mongolski tugrik": "MNT",
+ "mongol tugrik": "MNT",
+ "tugrik mongolo": "MNT",
+ "トゥグルグ": "MNT",
+ "tugrikas": "MNT",
+ "mongoolse tugrik": "MNT",
+ "тугрик": "MNT",
+ "mongolský tugrik": "MNT",
+ "монгольський тугрик": "MNT",
+ "蒙古图格里克": "MNT",
+ "باتاكا ماكاوية": "MOP",
+ "pataca": "MOP",
+ "macajská pataca": "MOP",
+ "macau pataca": "MOP",
+ "πατάκα": "MOP",
+ "macanese pataca": "MOP",
+ "makaa patako": "MOP",
+ "pataca macaense": "MOP",
+ "pataca macautar": "MOP",
+ "پاتاکای ماکائو": "MOP",
+ "macaon pataca": "MOP",
+ "פטקה": "MOP",
+ "makaonska pataka": "MOP",
+ "makaói pataca": "MOP",
+ "pataca di macao": "MOP",
+ "マカオ・パタカ": "MOP",
+ "pataka": "MOP",
+ "macause pataca": "MOP",
+ "pataca de macau": "MOP",
+ "патака макао": "MOP",
+ "makao patakası": "MOP",
+ "аоминська патака": "MOP",
+ "pataca ma cao": "MOP",
+ "澳門幣": "MOP",
+ "ouguiya": "MRO",
+ "روبي موريشي": "MUR",
+ "rupia de maurici": "MUR",
+ "mauricijská rupie": "MUR",
+ "mauritiske rupee": "MUR",
+ "mauritius rupie": "MUR",
+ "ρουπία του μαυρίκιου": "MUR",
+ "mauritian rupee": "MUR",
+ "maŭricia rupio": "MUR",
+ "rupia de mauricio": "MUR",
+ "errupia mauriziar": "MUR",
+ "روپیه موریس": "MUR",
+ "mauritiuksen rupia": "MUR",
+ "roupie mauricienne": "MUR",
+ "mauricijska rupija": "MUR",
+ "mauritiusi rúpia": "MUR",
+ "rupia mauriziana": "MUR",
+ "モーリシャス・ルピー": "MUR",
+ "mauricijaus rupija": "MUR",
+ "mauritiaanse roepie": "MUR",
+ "rupia mauritiusu": "MUR",
+ "rupia mauriciana": "MUR",
+ "маврикийская рупия": "MUR",
+ "маурицијска рупија": "MUR",
+ "mauritisk rupie": "MUR",
+ "mauritius rupisi": "MUR",
+ "маврикійська рупія": "MUR",
+ "模里西斯盧比": "MUR",
+ "روفيه مالديفية": "MVR",
+ "малдивска рупия": "MVR",
+ "rupia de les maldives": "MVR",
+ "maledivská rupie": "MVR",
+ "rufiyaa": "MVR",
+ "ρουφίγια": "MVR",
+ "maldivian rufiyaa": "MVR",
+ "maldiva rufijao": "MVR",
+ "rupia de maldivas": "MVR",
+ "errupia maldivar": "MVR",
+ "روفیه مالدیو": "MVR",
+ "malediivien rufiyaa": "MVR",
+ "maldivska rufija": "MVR",
+ "maldív rúfia": "MVR",
+ "rufiyaa delle maldive": "MVR",
+ "ルフィヤ": "MVR",
+ "maldyvų rufija": "MVR",
+ "maldivische rufiyaa": "MVR",
+ "rupia malediwska": "MVR",
+ "rupia maldívia": "MVR",
+ "мальдивская руфия": "MVR",
+ "малдивска руфија": "MVR",
+ "rufiyah": "MVR",
+ "மாலத்தீவின் ருஃபியா": "MVR",
+ "мальдівська руфія": "MVR",
+ "馬爾地夫拉菲亞": "MVR",
+ "كواشا ملاوية": "MWK",
+ "kwacha malawià": "MWK",
+ "malawiská kwacha": "MWK",
+ "malawi kwacha": "MWK",
+ "κουάτσα του μαλάουι": "MWK",
+ "malawian kwacha": "MWK",
+ "malavia kvaĉo": "MWK",
+ "kwacha malauí": "MWK",
+ "malawi kvatša": "MWK",
+ "کواچا مالاویا": "MWK",
+ "malawin kwacha": "MWK",
+ "kwacha malawien": "MWK",
+ "kwacha de malawi": "MWK",
+ "malavijska kvača": "MWK",
+ "kwacha malawiano": "MWK",
+ "マラウイ・クワチャ": "MWK",
+ "malavio kvača": "MWK",
+ "malawische kwacha": "MWK",
+ "kwacha malawijska": "MWK",
+ "kwacha do maláui": "MWK",
+ "малавийская квача": "MWK",
+ "малавијска квача": "MWK",
+ "malawisk kwacha": "MWK",
+ "malavi kvaçası": "MWK",
+ "малавійська квача": "MWK",
+ "馬拉威克瓦查": "MWK",
+ "بيزو مكسيكي": "MXN",
+ "мексиканско песо": "MXN",
+ "peso mexicà": "MXN",
+ "mexické peso": "MXN",
+ "mexikanischer peso": "MXN",
+ "μεξικάνικο πέσο": "MXN",
+ "mexican peso": "MXN",
+ "meksika peso": "MXN",
+ "peso mexicano": "MXN",
+ "peso mexikar": "MXN",
+ "پزو مکزیک": "MXN",
+ "meksikon peso": "MXN",
+ "peso mexicain": "MXN",
+ "פסו מקסיקני": "MXN",
+ "meksički pezo": "MXN",
+ "mexikói peso": "MXN",
+ "peso mexican": "MXN",
+ "peso messicano": "MXN",
+ "メキシコ・ペソ": "MXN",
+ "meksikos pesas": "MXN",
+ "mexicaanse peso": "MXN",
+ "peso meksykańskie": "MXN",
+ "мексиканское песо": "MXN",
+ "мексички пезос": "MXN",
+ "mexikansk peso": "MXN",
+ "மெக்சிகோ பெசோ": "MXN",
+ "meksika pesosu": "MXN",
+ "мексиканський песо": "MXN",
+ "peso méxico": "MXN",
+ "墨西哥比索": "MXN",
+ "mexican unidad de inversión": "MXV",
+ "unidades de inversión": "MXV",
+ "رينغيت ماليزي": "MYR",
+ "малайзийски рингит": "MYR",
+ "ringgit": "MYR",
+ "malajsijský ringgit": "MYR",
+ "malaysischer ringgit": "MYR",
+ "ρινγκίτ": "MYR",
+ "malaysian ringgit": "MYR",
+ "malajzia ringito": "MYR",
+ "رینگیت مالزی": "MYR",
+ "malesian ringgit": "MYR",
+ "malezijski ringit": "MYR",
+ "maláj ringgit": "MYR",
+ "ringgit malaysiano": "MYR",
+ "リンギット": "MYR",
+ "malaizijos ringitas": "MYR",
+ "maleisische ringgit": "MYR",
+ "ringgit malaio": "MYR",
+ "малайзийский ринггит": "MYR",
+ "малезијски рингит": "MYR",
+ "மலேசிய ரிங்கிட்": "MYR",
+ "малайзійський рингіт": "MYR",
+ "馬來西亞令吉": "MYR",
+ "متكال موزمبيقي": "MZN",
+ "metical": "MZN",
+ "mosambický metical": "MZN",
+ "μετικάλ": "MZN",
+ "mozambican metical": "MZN",
+ "mozambika metikalo": "MZN",
+ "metical mozambiqueño": "MZN",
+ "متیکال موزامبیک": "MZN",
+ "mosambikin metical": "MZN",
+ "mozambički metikal": "MZN",
+ "mozambiki metical": "MZN",
+ "metical mozambicano": "MZN",
+ "メティカル": "MZN",
+ "metikalis": "MZN",
+ "mozambikaanse metical": "MZN",
+ "мозамбикский метикал": "MZN",
+ "мозамбички метикал": "MZN",
+ "мозамбіцький метікал": "MZN",
+ "莫三比克梅蒂卡爾": "MZN",
+ "دولار ناميبي": "NAD",
+ "намибийски долар": "NAD",
+ "dòlar namibià": "NAD",
+ "namibijský dolar": "NAD",
+ "namibisk dollar": "NAD",
+ "namibia dollar": "NAD",
+ "namibian dollar": "NAD",
+ "namibia dolaro": "NAD",
+ "dólar namibio": "NAD",
+ "دلار نامیبیا": "NAD",
+ "namibian dollari": "NAD",
+ "dollar namibien": "NAD",
+ "דולר נמיבי": "NAD",
+ "namibijski dolar": "NAD",
+ "namíbiai dollár": "NAD",
+ "dollaro namibiano": "NAD",
+ "ナミビア・ドル": "NAD",
+ "namibijos doleris": "NAD",
+ "namibische dollar": "NAD",
+ "dolar namibian": "NAD",
+ "dolar namibijski": "NAD",
+ "dólar da namíbia": "NAD",
+ "доллар намибии": "NAD",
+ "намибијски долар": "NAD",
+ "namibya doları": "NAD",
+ "намібійський долар": "NAD",
+ "納米比亞元": "NAD",
+ "نيرة نيجيرية": "NGN",
+ "нигерийска найра": "NGN",
+ "naira": "NGN",
+ "nigerijská naira": "NGN",
+ "νάιρα": "NGN",
+ "nigerian naira": "NGN",
+ "niĝeria najro": "NGN",
+ "نایرا نیجریه": "NGN",
+ "נאירה": "NGN",
+ "nigerijska naira": "NGN",
+ "nigériai naira": "NGN",
+ "naira nigeriana": "NGN",
+ "ナイラ": "NGN",
+ "nigeriaanse naira": "NGN",
+ "найра": "NGN",
+ "нигеријска наира": "NGN",
+ "nijerya nairası": "NGN",
+ "нігерійська найра": "NGN",
+ "奈及利亞奈拉": "NGN",
+ "كوردبا نيكاراغوا": "NIO",
+ "никарагуанска кордоба": "NIO",
+ "córdoba": "NIO",
+ "nikaragujská córdoba": "NIO",
+ "córdoba oro": "NIO",
+ "κόρδοβα νικαράγουας": "NIO",
+ "nicaraguan córdoba": "NIO",
+ "nikaragva kordovo": "NIO",
+ "کوردوبای نیکاراگوئه": "NIO",
+ "cordoba": "NIO",
+ "קורדובה": "NIO",
+ "nikaragvanska kordoba": "NIO",
+ "nicaraguai córdoba": "NIO",
+ "córdoba nicaraguense": "NIO",
+ "ニカラグア・コルドバ": "NIO",
+ "nikaragvos kordoba": "NIO",
+ "nicaraguaanse córdoba": "NIO",
+ "cordoba oro": "NIO",
+ "никарагуанская кордоба": "NIO",
+ "никарагванска кордоба": "NIO",
+ "kordoba": "NIO",
+ "нікарагуанська кордоба": "NIO",
+ "尼加拉瓜科多巴": "NIO",
+ "درام أرتساخي": "NKD",
+ "bergkarabach dram": "NKD",
+ "artsakh dram": "NKD",
+ "dram de artsaj": "NKD",
+ "درام آرتساخ": "NKD",
+ "artsakhin dram": "NKD",
+ "dram de l'artsakh": "NKD",
+ "dram de artsakh": "NKD",
+ "gorskokarabaški dram": "NKD",
+ "arcahi dram": "NKD",
+ "dram karabakho": "NKD",
+ "karabacho dramas": "NKD",
+ "карабахский драм": "NKD",
+ "nagorno karabach dram": "NKD",
+ "karabağ dramı": "NKD",
+ "карабаський драм": "NKD",
+ "纳戈尔诺 卡拉巴赫德拉姆": "NKD",
+ "كرونة نروجية": "NOK",
+ "норвежка крона": "NOK",
+ "corona noruega": "NOK",
+ "norská koruna": "NOK",
+ "norske kroner": "NOK",
+ "norwegische krone": "NOK",
+ "κορόνα νορβηγίας": "NOK",
+ "norwegian krone": "NOK",
+ "norvega krono": "NOK",
+ "norra kroon": "NOK",
+ "norvegiar koroa": "NOK",
+ "کرون نروژ": "NOK",
+ "norjan kruunu": "NOK",
+ "couronne norvégienne": "NOK",
+ "coroa norueguesa": "NOK",
+ "כתר נורווגי": "NOK",
+ "norveška kruna": "NOK",
+ "norvég korona": "NOK",
+ "corona norvegese": "NOK",
+ "ノルウェー・クローネ": "NOK",
+ "norvegijos krona": "NOK",
+ "noorse kroon": "NOK",
+ "korona norweska": "NOK",
+ "coroană norvegiană": "NOK",
+ "норвежская крона": "NOK",
+ "nórska koruna": "NOK",
+ "norveška krona": "NOK",
+ "норвешка круна": "NOK",
+ "norsk krona": "NOK",
+ "நார்வே குரோனா": "NOK",
+ "norveç kronu": "NOK",
+ "норвезька крона": "NOK",
+ "krone na uy": "NOK",
+ "挪威克朗": "NOK",
+ "روبية نيبالية": "NPR",
+ "непалска рупия": "NPR",
+ "rupia nepalesa": "NPR",
+ "nepálská rupie": "NPR",
+ "nepalesiske rupee": "NPR",
+ "nepalesische rupie": "NPR",
+ "ρουπία νεπάλ": "NPR",
+ "nepalese rupee": "NPR",
+ "nepala rupio": "NPR",
+ "rupia nepalí": "NPR",
+ "nepali ruupia": "NPR",
+ "errupia nepaldar": "NPR",
+ "روپیه نپال": "NPR",
+ "nepalin rupia": "NPR",
+ "roupie népalaise": "NPR",
+ "רופי נפאלי": "NPR",
+ "nepalska rupija": "NPR",
+ "nepáli rúpia": "NPR",
+ "rupia nepalese": "NPR",
+ "ネパール・ルピー": "NPR",
+ "nepalo rupija": "NPR",
+ "nepalese roepie": "NPR",
+ "rupia nepalska": "NPR",
+ "непальская рупия": "NPR",
+ "непалска рупија": "NPR",
+ "nepalesisk rupie": "NPR",
+ "நேபாள ரூபாய்": "NPR",
+ "nepal rupisi": "NPR",
+ "непальська рупія": "NPR",
+ "rupee nepal": "NPR",
+ "尼泊尔卢比": "NPR",
+ "niue dollar": "NUD",
+ "dólar de niue": "NUD",
+ "دلار نیووی": "NUD",
+ "niuen dollari": "NUD",
+ "доллар ниуэ": "NUD",
+ "纽埃元": "NUD",
+ "دولار نيوزيلندي": "NZD",
+ "новозеландски долар": "NZD",
+ "dòlar neozelandès": "NZD",
+ "novozélandský dolar": "NZD",
+ "newzealandske dollar": "NZD",
+ "neuseeland dollar": "NZD",
+ "δολάριο νέας ζηλανδίας": "NZD",
+ "new zealand dollar": "NZD",
+ "novzelanda dolaro": "NZD",
+ "dólar neozelandés": "NZD",
+ "zeelandaberritar dolar": "NZD",
+ "دلار نیوزیلند": "NZD",
+ "uuden seelannin dollari": "NZD",
+ "dollar néo zélandais": "NZD",
+ "דולר ניו זילנדי": "NZD",
+ "novozelandski dolar": "NZD",
+ "új zélandi dollár": "NZD",
+ "dollaro neozelandese": "NZD",
+ "ニュージーランド・ドル": "NZD",
+ "naujosios zelandijos doleris": "NZD",
+ "nieuw zeelandse dollar": "NZD",
+ "dolar nowozelandzki": "NZD",
+ "dólar neozelandês": "NZD",
+ "dolar neozeelandez": "NZD",
+ "новозеландский доллар": "NZD",
+ "novozélandský dolár": "NZD",
+ "nyzeeländsk dollar": "NZD",
+ "yeni zelanda doları": "NZD",
+ "новозеландський долар": "NZD",
+ "đô la new zealand": "NZD",
+ "紐西蘭元": "NZD",
+ "ريال عماني": "OMR",
+ "омански риял": "OMR",
+ "rial omanita": "OMR",
+ "ománský rijál": "OMR",
+ "omansk rial": "OMR",
+ "omanischer rial": "OMR",
+ "ριάλ του ομάν": "OMR",
+ "omani rial": "OMR",
+ "omana rialo": "OMR",
+ "rial omaní": "OMR",
+ "ریال عمان": "OMR",
+ "omanin rial": "OMR",
+ "rial omanais": "OMR",
+ "ריאל עומאני": "OMR",
+ "omanski rijal": "OMR",
+ "ománi riál": "OMR",
+ "riyal dell'oman": "OMR",
+ "オマーン・リアル": "OMR",
+ "omano rialas": "OMR",
+ "omaanse rial": "OMR",
+ "rial omański": "OMR",
+ "rial omanense": "OMR",
+ "оманский риал": "OMR",
+ "омански ријал": "OMR",
+ "ஓமானி ரியால்": "OMR",
+ "umman riyali": "OMR",
+ "оманський ріал": "OMR",
+ "阿曼里亞爾": "OMR",
+ "بالبوا بنمي": "PAB",
+ "панамска балбоа": "PAB",
+ "balboa": "PAB",
+ "panamská balboa": "PAB",
+ "panamaischer balboa": "PAB",
+ "μπαλμπόα παναμά": "PAB",
+ "panamanian balboa": "PAB",
+ "panama balboo": "PAB",
+ "بالبوآ پاناما": "PAB",
+ "panaman balboa": "PAB",
+ "בלבואה": "PAB",
+ "panamska balboa": "PAB",
+ "panamai balboa": "PAB",
+ "balboa panamense": "PAB",
+ "バルボア": "PAB",
+ "panamese balboa": "PAB",
+ "панамский бальбоа": "PAB",
+ "panama balboası": "PAB",
+ "панамське бальбоа": "PAB",
+ "巴拿馬巴波亞": "PAB",
+ "سول بيروفي جديد": "PEN",
+ "sol": "PEN",
+ "peruanischer sol": "PEN",
+ "σολ περού": "PEN",
+ "peruvian sol": "PEN",
+ "perua nova suno": "PEN",
+ "سول پرو": "PEN",
+ "perun sol": "PEN",
+ "nuevo sol": "PEN",
+ "סול": "PEN",
+ "peruanski novi sol": "PEN",
+ "perui sol": "PEN",
+ "nuevo sol peruviano": "PEN",
+ "ヌエボ・ソル": "PEN",
+ "naujasis solis": "PEN",
+ "peruviaanse sol": "PEN",
+ "novo sol": "PEN",
+ "перуанский новый соль": "PEN",
+ "перуански нови сол": "PEN",
+ "перуанський соль": "PEN",
+ "sol peru": "PEN",
+ "秘魯新索爾": "PEN",
+ "كينا بابوا غينيا الجديدة": "PGK",
+ "кина на папуа нова гвинея": "PGK",
+ "kina": "PGK",
+ "papuánská kina": "PGK",
+ "κίνα παπούα νέας γουινέας": "PGK",
+ "papua new guinean kina": "PGK",
+ "papuonovgvinea kinao": "PGK",
+ "کینای پاپوآ گینه نو": "PGK",
+ "papua uuden guinean kina": "PGK",
+ "papuanska kina": "PGK",
+ "pápua új guineai kina": "PGK",
+ "kina papuana": "PGK",
+ "キナ": "PGK",
+ "кина": "PGK",
+ "папуанска кина": "PGK",
+ "papua yeni gine kinası": "PGK",
+ "кіна": "PGK",
+ "kina papua new guinea": "PGK",
+ "巴布亞紐幾內亞基那": "PGK",
+ "بيسو فلبيني": "PHP",
+ "филипинско песо": "PHP",
+ "peso filipí": "PHP",
+ "filipínské peso": "PHP",
+ "philippinischer peso": "PHP",
+ "πέσο φιλιππίνων": "PHP",
+ "philippine peso": "PHP",
+ "filipina peso": "PHP",
+ "peso filipino": "PHP",
+ "پزو فیلیپین": "PHP",
+ "filippiinien peso": "PHP",
+ "peso philippin": "PHP",
+ "פסו פיליפיני": "PHP",
+ "filipinski pezo": "PHP",
+ "fülöp szigeteki peso": "PHP",
+ "peso filippino": "PHP",
+ "フィリピン・ペソ": "PHP",
+ "filipinų pesas": "PHP",
+ "filipijnse peso": "PHP",
+ "peso filipińskie": "PHP",
+ "филиппинское песо": "PHP",
+ "filipínske peso": "PHP",
+ "филипински пезо": "PHP",
+ "filippinsk peso": "PHP",
+ "பிலிப்பைன் பெசோ": "PHP",
+ "filipinler pesosu": "PHP",
+ "філіппінський песо": "PHP",
+ "peso philippines": "PHP",
+ "菲律賓披索": "PHP",
+ "روبية باكستانية": "PKR",
+ "пакистанска рупия": "PKR",
+ "rupia pakistanesa": "PKR",
+ "pákistánská rupie": "PKR",
+ "pakistanske rupier": "PKR",
+ "pakistanische rupie": "PKR",
+ "ρουπία πακιστάν": "PKR",
+ "pakistani rupee": "PKR",
+ "pakistana rupio": "PKR",
+ "rupia pakistaní": "PKR",
+ "errupia pakistandar": "PKR",
+ "روپیه پاکستان": "PKR",
+ "pakistanin rupia": "PKR",
+ "roupie pakistanaise": "PKR",
+ "pakistanska rupija": "PKR",
+ "pakisztáni rúpia": "PKR",
+ "rupia pakistana": "PKR",
+ "パキスタン・ルピー": "PKR",
+ "pakistano rupija": "PKR",
+ "pakistaanse roepie": "PKR",
+ "ropia de paquistan": "PKR",
+ "rupia pakistańska": "PKR",
+ "rupia do paquistão": "PKR",
+ "пакистанская рупия": "PKR",
+ "пакистанска рупија": "PKR",
+ "pakistansk rupie": "PKR",
+ "பாக்கித்தானிய ரூபாய்": "PKR",
+ "pakistan rupisi": "PKR",
+ "пакистанська рупія": "PKR",
+ "rupee pakistan": "PKR",
+ "巴基斯坦盧比": "PKR",
+ "زلوتي بولندي": "PLN",
+ "полска злота": "PLN",
+ "złoty": "PLN",
+ "zlotý": "PLN",
+ "polske zloty": "PLN",
+ "ζλότι": "PLN",
+ "polish złoty": "PLN",
+ "zloto": "PLN",
+ "esloti": "PLN",
+ "poola zlott": "PLN",
+ "زلوتی لهستان": "PLN",
+ "puolan zloty": "PLN",
+ "זלוטי": "PLN",
+ "poljski zlot": "PLN",
+ "lengyel złoty": "PLN",
+ "ズウォティ": "PLN",
+ "zlotas": "PLN",
+ "poolse złoty": "PLN",
+ "zlot polonez": "PLN",
+ "польский злотый": "PLN",
+ "poľský zlotý": "PLN",
+ "пољски злот": "PLN",
+ "ஸ்வாட்டெ": "PLN",
+ "злотий": "PLN",
+ "złoty ba lan": "PLN",
+ "波兰兹罗提": "PLN",
+ "pitcairn islands dollar": "PND",
+ "دلار جزایر پیتکرن": "PND",
+ "pitcairnin dollari": "PND",
+ "доллар островов питкэрн": "PND",
+ "غواراني باراغواي": "PYG",
+ "guaraní": "PYG",
+ "paraguayský guaraní": "PYG",
+ "paraguayischer guaraní": "PYG",
+ "γκουαρανί": "PYG",
+ "paraguayan guaraní": "PYG",
+ "paragvaja gvaranio": "PYG",
+ "guarani": "PYG",
+ "گوارانی پاراگوئه": "PYG",
+ "paraguayn guaraní": "PYG",
+ "paragvajski gvarani": "PYG",
+ "paraguayi guaraní": "PYG",
+ "guaraní paraguaiano": "PYG",
+ "グアラニー": "PYG",
+ "gvaranis": "PYG",
+ "paraguayaanse guarani": "PYG",
+ "парагвайский гуарани": "PYG",
+ "парагвајски гварани": "PYG",
+ "paraguay guaranísi": "PYG",
+ "парагвайський гуарані": "PYG",
+ "巴拉圭瓜拉尼": "PYG",
+ "ريال قطري": "QAR",
+ "катарски риал": "QAR",
+ "riyal de qatar": "QAR",
+ "katarský rijál": "QAR",
+ "katar riyal": "QAR",
+ "ριγιάλ του κατάρ": "QAR",
+ "qatari riyal": "QAR",
+ "katara rialo": "QAR",
+ "riyal catarí": "QAR",
+ "ریال قطر": "QAR",
+ "qatarin rial": "QAR",
+ "riyal qatarien": "QAR",
+ "ריאל קטרי": "QAR",
+ "katarski rijal": "QAR",
+ "katari riál": "QAR",
+ "riyal del qatar": "QAR",
+ "カタール・リヤル": "QAR",
+ "kataro rialas": "QAR",
+ "qatarese rial": "QAR",
+ "rial katarski": "QAR",
+ "rial catarense": "QAR",
+ "катарский риал": "QAR",
+ "катарски ријал": "QAR",
+ "qatarisk rial": "QAR",
+ "கத்தாரி ரியால்": "QAR",
+ "katar riyali": "QAR",
+ "катарський ріал": "QAR",
+ "riyal qatar": "QAR",
+ "卡達里亞爾": "QAR",
+ "ليو روماني": "RON",
+ "румънска лея": "RON",
+ "leu romanès": "RON",
+ "rumunský lei": "RON",
+ "rumænske lei": "RON",
+ "rumänischer leu": "RON",
+ "λέου ρουμανίας": "RON",
+ "romanian leu": "RON",
+ "rumana leo": "RON",
+ "leu rumano": "RON",
+ "rumeenia leu": "RON",
+ "لئوی رومانی": "RON",
+ "leu roumain": "RON",
+ "leu romanés": "RON",
+ "לאו רומני": "RON",
+ "rumunjski lej": "RON",
+ "román lej": "RON",
+ "leu romeno": "RON",
+ "ルーマニア・レウ": "RON",
+ "naujoji rumunijos lėja": "RON",
+ "roemeense leu": "RON",
+ "lej rumuński": "RON",
+ "leu românesc": "RON",
+ "румынский лей": "RON",
+ "nový rumunský lei": "RON",
+ "romunski lev": "RON",
+ "румунски леј": "RON",
+ "rumänsk leu": "RON",
+ "ரொமேனிய லியு": "RON",
+ "rumen leyi": "RON",
+ "румунський лей": "RON",
+ "leu românia": "RON",
+ "罗马尼亚列伊": "RON",
+ "دينار صربي": "RSD",
+ "сръбски динар": "RSD",
+ "dinar serbi": "RSD",
+ "srbský dinár": "RSD",
+ "serbiske dinarer": "RSD",
+ "serbischer dinar": "RSD",
+ "δηνάριο σερβίας": "RSD",
+ "serbian dinar": "RSD",
+ "serba dinaro": "RSD",
+ "dinar serbio": "RSD",
+ "serbia dinaar": "RSD",
+ "serbiar dinar": "RSD",
+ "دینار صربستان": "RSD",
+ "serbian dinaari": "RSD",
+ "dinar serbe": "RSD",
+ "דינר סרבי": "RSD",
+ "srpski dinar": "RSD",
+ "szerb dinár": "RSD",
+ "dinaro serbo": "RSD",
+ "セルビア・ディナール": "RSD",
+ "serbijos dinaras": "RSD",
+ "servische dinar": "RSD",
+ "dinar serbski": "RSD",
+ "dinar sérvio": "RSD",
+ "dinar sârbesc": "RSD",
+ "сербский динар": "RSD",
+ "srbski dinar": "RSD",
+ "српски динар": "RSD",
+ "serbisk dinar": "RSD",
+ "செர்பிய தினார்": "RSD",
+ "sırp dinarı": "RSD",
+ "сербський динар": "RSD",
+ "塞爾維亞第納爾": "RSD",
+ "روبل روسي": "RUB",
+ "руска рубла": "RUB",
+ "ruble rus": "RUB",
+ "ruský rubl": "RUB",
+ "rŵbl rwsiaidd": "RUB",
+ "russiske rubler": "RUB",
+ "russischer rubel": "RUB",
+ "ρούβλι ρωσίας": "RUB",
+ "russian ruble": "RUB",
+ "rusia rublo": "RUB",
+ "rublo ruso": "RUB",
+ "venemaa rubla": "RUB",
+ "errublo errusiar": "RUB",
+ "روبل روسیه": "RUB",
+ "venäjän rupla": "RUB",
+ "rouble russe": "RUB",
+ "רובל רוסי": "RUB",
+ "ruski rubalj": "RUB",
+ "orosz rubel": "RUB",
+ "rublo russo": "RUB",
+ "ロシア・ルーブル": "RUB",
+ "rusijos rublis": "RUB",
+ "russische roebel": "RUB",
+ "rubel rosyjski": "RUB",
+ "rublă rusă": "RUB",
+ "российский рубль": "RUB",
+ "ruský rubeľ": "RUB",
+ "руска рубља": "RUB",
+ "rysk rubel": "RUB",
+ "உருசிய ரூபிள்": "RUB",
+ "rus rublesi": "RUB",
+ "російський рубль": "RUB",
+ "rúp nga": "RUB",
+ "俄罗斯卢布": "RUB",
+ "فرنك رواندي": "RWF",
+ "руандийски франк": "RWF",
+ "franc ruandès": "RWF",
+ "rwandský frank": "RWF",
+ "rwandiske franc": "RWF",
+ "ruanda franc": "RWF",
+ "φράγκο της ρουάντα": "RWF",
+ "rwandan franc": "RWF",
+ "ruanda franko": "RWF",
+ "franco ruandés": "RWF",
+ "rwanda frank": "RWF",
+ "فرانک رواندا": "RWF",
+ "ruandan frangi": "RWF",
+ "franc rwandais": "RWF",
+ "פרנק רואנדי": "RWF",
+ "ruandski franak": "RWF",
+ "ruandai frank": "RWF",
+ "franco ruandese": "RWF",
+ "ルワンダ・フラン": "RWF",
+ "ruandos frankas": "RWF",
+ "rwandese frank": "RWF",
+ "frank rwandyjski": "RWF",
+ "franco ruandês": "RWF",
+ "франк руанды": "RWF",
+ "руандски франак": "RWF",
+ "rwandisk franc": "RWF",
+ "ruanda frangı": "RWF",
+ "руандійський франк": "RWF",
+ "卢旺达法郎": "RWF",
+ "ريال سعودي": "SAR",
+ "саудитски риал": "SAR",
+ "riyal saudita": "SAR",
+ "saúdský rijál": "SAR",
+ "saudi riyal": "SAR",
+ "ριάλ σαουδικής αραβίας": "SAR",
+ "sauda rialo": "SAR",
+ "riyal saudí": "SAR",
+ "saudi araabia riaal": "SAR",
+ "ریال سعودی": "SAR",
+ "saudi arabian rial": "SAR",
+ "riyal saoudien": "SAR",
+ "ריאל סעודי": "SAR",
+ "saudijski rijal": "SAR",
+ "szaúdi riál": "SAR",
+ "サウジアラビア・リヤル": "SAR",
+ "saudo arabijos rialas": "SAR",
+ "saoedi arabische riyal": "SAR",
+ "rial saudyjski": "SAR",
+ "rial saudit": "SAR",
+ "саудовский риял": "SAR",
+ "саудијски ријал": "SAR",
+ "saudiarabisk rial": "SAR",
+ "சவூதி ரியால்": "SAR",
+ "suudi arabistan riyali": "SAR",
+ "саудівський ріал": "SAR",
+ "riyal ả rập xê út": "SAR",
+ "沙特里亚尔": "SAR",
+ "دولار جزر سليمان": "SBD",
+ "соломоновски долар": "SBD",
+ "dòlar de salomó": "SBD",
+ "dolar šalomounových ostrovů": "SBD",
+ "salomondollar": "SBD",
+ "salomonen dollar": "SBD",
+ "δολάριο νήσων σολομώντα": "SBD",
+ "solomon islands dollar": "SBD",
+ "salomona dolaro": "SBD",
+ "dólar de las islas salomón": "SBD",
+ "دلار جزایر سلیمان": "SBD",
+ "salomonsaarten dollari": "SBD",
+ "dollar des îles salomon": "SBD",
+ "dólar das illas salomón": "SBD",
+ "דולר איי שלמה": "SBD",
+ "salomonskootočni dolar": "SBD",
+ "salamon szigeteki dollár": "SBD",
+ "dollaro delle salomone": "SBD",
+ "ソロモン諸島ドル": "SBD",
+ "saliamono salų doleris": "SBD",
+ "salomon dollar": "SBD",
+ "dolar wysp salomona": "SBD",
+ "dólar das ilhas salomão": "SBD",
+ "dolar din insulele solomon": "SBD",
+ "доллар соломоновых островов": "SBD",
+ "соломонски долар": "SBD",
+ "solomon adaları doları": "SBD",
+ "долар соломонових островів": "SBD",
+ "所罗门群岛元": "SBD",
+ "روبية سيشلية": "SCR",
+ "сейшелска рупия": "SCR",
+ "rupia de les seychelles": "SCR",
+ "seychelská rupie": "SCR",
+ "seychelliske rupee": "SCR",
+ "seychellen rupie": "SCR",
+ "ρουπία σεϋχελλών": "SCR",
+ "seychellois rupee": "SCR",
+ "sejŝela rupio": "SCR",
+ "rupia seychellense": "SCR",
+ "seišelli ruupia": "SCR",
+ "errupia seychelletar": "SCR",
+ "روپیه سیشل": "SCR",
+ "seychellien rupia": "SCR",
+ "roupie seychelloise": "SCR",
+ "sejšelska rupija": "SCR",
+ "seychelle i rúpia": "SCR",
+ "rupia delle seychelles": "SCR",
+ "セーシェル・ルピー": "SCR",
+ "seišelių rupija": "SCR",
+ "seychelse roepie": "SCR",
+ "rupia seszelska": "SCR",
+ "rupia das seicheles": "SCR",
+ "сейшельская рупия": "SCR",
+ "сејшелска рупија": "SCR",
+ "seychellisk rupie": "SCR",
+ "seyşeller rupisi": "SCR",
+ "сейшельська рупія": "SCR",
+ "塞席爾盧比": "SCR",
+ "جنيه سوداني": "SDG",
+ "lliura sudanesa": "SDG",
+ "súdánská libra": "SDG",
+ "sudanesisches pfund": "SDG",
+ "λίρα του σουδάν": "SDG",
+ "sudanese pound": "SDG",
+ "sudana pundo": "SDG",
+ "libra sudanesa": "SDG",
+ "پوند سودان": "SDG",
+ "sudanin punta": "SDG",
+ "livre soudanaise": "SDG",
+ "sudanska funta": "SDG",
+ "szudáni font": "SDG",
+ "sterlina sudanese": "SDG",
+ "スーダン・ポンド": "SDG",
+ "sudano svaras": "SDG",
+ "soedanees pond": "SDG",
+ "funt sudański": "SDG",
+ "liră sudaneză": "SDG",
+ "суданский фунт": "SDG",
+ "суданска фунта": "SDG",
+ "sudanesiskt pund": "SDG",
+ "sudan sterlini": "SDG",
+ "суданський фунт": "SDG",
+ "蘇丹鎊": "SDG",
+ "كرونة سويدية": "SEK",
+ "шведска крона": "SEK",
+ "corona sueca": "SEK",
+ "švédská koruna": "SEK",
+ "svenske kronor": "SEK",
+ "schwedische krone": "SEK",
+ "κορόνα σουηδίας": "SEK",
+ "swedish krona": "SEK",
+ "sveda krono": "SEK",
+ "rootsi kroon": "SEK",
+ "suediar koroa": "SEK",
+ "کرون سوئد": "SEK",
+ "ruotsin kruunu": "SEK",
+ "couronne suédoise": "SEK",
+ "coroa sueca": "SEK",
+ "קרונה שוודית": "SEK",
+ "švedska kruna": "SEK",
+ "svéd korona": "SEK",
+ "corona svedese": "SEK",
+ "スウェーデン・クローナ": "SEK",
+ "švedijos krona": "SEK",
+ "zweedse kroon": "SEK",
+ "korona szwedzka": "SEK",
+ "coroană suedeză": "SEK",
+ "шведская крона": "SEK",
+ "švédska koruna": "SEK",
+ "švedska krona": "SEK",
+ "шведска круна": "SEK",
+ "svensk krona": "SEK",
+ "சுவீடிய குரோனா": "SEK",
+ "i̇sveç kronu": "SEK",
+ "шведська крона": "SEK",
+ "krona thụy điển": "SEK",
+ "瑞典克朗": "SEK",
+ "دولار سنغافوري": "SGD",
+ "сингапурски долар": "SGD",
+ "dòlar de singapur": "SGD",
+ "singapurský dolar": "SGD",
+ "singaporeanske dollar": "SGD",
+ "singapur dollar": "SGD",
+ "δολάριο σιγκαπούρης": "SGD",
+ "singapore dollar": "SGD",
+ "singapura dolaro": "SGD",
+ "dólar de singapur": "SGD",
+ "dolar singapurtar": "SGD",
+ "دلار سنگاپور": "SGD",
+ "singaporen dollari": "SGD",
+ "dollar de singapour": "SGD",
+ "דולר סינגפורי": "SGD",
+ "singapurski dolar": "SGD",
+ "szingapúri dollár": "SGD",
+ "dollaro di singapore": "SGD",
+ "シンガポールドル": "SGD",
+ "singapūro doleris": "SGD",
+ "singaporese dollar": "SGD",
+ "dolar singapurski": "SGD",
+ "dólar de singapura": "SGD",
+ "сингапурский доллар": "SGD",
+ "singaporiansk dollar": "SGD",
+ "சிங்கப்பூர் வெள்ளி": "SGD",
+ "singapur doları": "SGD",
+ "сінгапурський долар": "SGD",
+ "đô la singapore": "SGD",
+ "新加坡元": "SGD",
+ "ليون سيراليوني": "SLL",
+ "леоне на сиера леоне": "SLL",
+ "leone": "SLL",
+ "sierraleonský leone": "SLL",
+ "sierra leonischer leone": "SLL",
+ "λεόνε της σιέρα λεόνε": "SLL",
+ "sierra leonean leone": "SLL",
+ "sieraleona leono": "SLL",
+ "لئون سیرالئون": "SLL",
+ "sierra leonen leone": "SLL",
+ "ליאון": "SLL",
+ "sijeraleonski leone": "SLL",
+ "sierra leone i leone": "SLL",
+ "leone sierraleonese": "SLL",
+ "レオン": "SLL",
+ "leonė": "SLL",
+ "sierra leoonse leone": "SLL",
+ "леоне": "SLL",
+ "сијералеонски леоне": "SLL",
+ "sierra leone leonesi": "SLL",
+ "леоне сьєрра леоне": "SLL",
+ "塞拉利昂利昂": "SLL",
+ "شلن صومالي": "SOS",
+ "сомалийски шилинг": "SOS",
+ "xíling somali": "SOS",
+ "somálský šilink": "SOS",
+ "somalisk shilling": "SOS",
+ "somalia schilling": "SOS",
+ "somali shilling": "SOS",
+ "somalia ŝilingo": "SOS",
+ "chelín somalí": "SOS",
+ "شیلینگ سومالی": "SOS",
+ "somalian šillinki": "SOS",
+ "shilling somalien": "SOS",
+ "שילינג סומלי": "SOS",
+ "somalijski šiling": "SOS",
+ "szomáliai shilling": "SOS",
+ "scellino somalo": "SOS",
+ "ソマリア・シリング": "SOS",
+ "somalio šilingas": "SOS",
+ "somalische shilling": "SOS",
+ "szyling somalijski": "SOS",
+ "xelim somaliano": "SOS",
+ "сомалийский шиллинг": "SOS",
+ "сомалски шилинг": "SOS",
+ "somali şilini": "SOS",
+ "сомалійський шилінг": "SOS",
+ "索馬利亞先令": "SOS",
+ "دولار سورينامي": "SRD",
+ "суринамски долар": "SRD",
+ "dòlar de surinam": "SRD",
+ "surinamský dolar": "SRD",
+ "suriname dollar": "SRD",
+ "δολάριο σουρινάμ": "SRD",
+ "surinamese dollar": "SRD",
+ "surinama dolaro": "SRD",
+ "dólar surinamés": "SRD",
+ "dolar surinamdar": "SRD",
+ "دلار سورینام": "SRD",
+ "surinamen dollari": "SRD",
+ "dollar du suriname": "SRD",
+ "surinamski dolar": "SRD",
+ "suriname i dollár": "SRD",
+ "dollaro surinamese": "SRD",
+ "スリナム・ドル": "SRD",
+ "surinamo doleris": "SRD",
+ "surinaamse dollar": "SRD",
+ "dolar surinamski": "SRD",
+ "dólar do suriname": "SRD",
+ "суринамский доллар": "SRD",
+ "surinamesisk dollar": "SRD",
+ "surinam doları": "SRD",
+ "суринамський долар": "SRD",
+ "蘇利南元": "SRD",
+ "جنيه جنوب سوداني": "SSP",
+ "южносудански паунд": "SSP",
+ "lliura sud sudanesa": "SSP",
+ "jihosúdánská libra": "SSP",
+ "südsudanesisches pfund": "SSP",
+ "south sudanese pound": "SSP",
+ "libra sursudanesa": "SSP",
+ "lõuna sudaani nael": "SSP",
+ "پوند سودان جنوبی": "SSP",
+ "etelä sudanin punta": "SSP",
+ "livre sud soudanaise": "SSP",
+ "לירה דרום סודאנית": "SSP",
+ "južnosudanska funta": "SSP",
+ "dél szudáni font": "SSP",
+ "sterlina sudsudanese": "SSP",
+ "南スーダン・ポンド": "SSP",
+ "pietų sudano svaras": "SSP",
+ "zuid soedanees pond": "SSP",
+ "funt południowosudański": "SSP",
+ "libra sul sudanesa": "SSP",
+ "liră sud sudaneză": "SSP",
+ "южносуданский фунт": "SSP",
+ "juhosudánska libra": "SSP",
+ "јужносуданска фунта": "SSP",
+ "sydsudanesiskt pund": "SSP",
+ "південносуданський фунт": "SSP",
+ "bảng nam sudan": "SSP",
+ "南蘇丹鎊": "SSP",
+ "دوبرا ساو تومي وبرينسيب": "STN",
+ "dobra": "STN",
+ "svatotomášská dobra": "STN",
+ "são toméischer dobra": "STN",
+ "ντόμπρα": "STN",
+ "são tomé and príncipe dobra": "STN",
+ "santomea dobro": "STN",
+ "dobra santotomense": "STN",
+ "دبرای سائوتومه و پرنسیپ": "STN",
+ "são tomén ja príncipen dobra": "STN",
+ "svetotomska dobra": "STN",
+ "são tomé és príncipe i dobra": "STN",
+ "dobra di são tomé e príncipe": "STN",
+ "ドブラ": "STN",
+ "santomese dobra": "STN",
+ "dobra são tomense": "STN",
+ "добра сан томе и принсипи": "STN",
+ "саотомска добра": "STN",
+ "são tomé ve príncipe dobrası": "STN",
+ "добра сан томе і принсіпі": "STN",
+ "圣多美和普林西比多布拉": "STN",
+ "ليرة سورية": "SYP",
+ "сирийска лира": "SYP",
+ "lliura siriana": "SYP",
+ "syrská libra": "SYP",
+ "syrische lira": "SYP",
+ "λίρα συρίας": "SYP",
+ "syrian pound": "SYP",
+ "siria pundo": "SYP",
+ "libra siria": "SYP",
+ "لیره سوریه": "SYP",
+ "syyrian punta": "SYP",
+ "livre syrienne": "SYP",
+ "לירה סורית": "SYP",
+ "sirijska funta": "SYP",
+ "szír font": "SYP",
+ "lira siriana": "SYP",
+ "シリア・ポンド": "SYP",
+ "sirijos svaras": "SYP",
+ "syrisch pond": "SYP",
+ "funt syryjski": "SYP",
+ "libra síria": "SYP",
+ "сирийский фунт": "SYP",
+ "sirski funt": "SYP",
+ "сиријска фунта": "SYP",
+ "syriskt pund": "SYP",
+ "suriye lirası": "SYP",
+ "сирійський фунт": "SYP",
+ "敘利亞鎊": "SYP",
+ "ليلانغيني سوازيلندي": "SZL",
+ "lilangeni": "SZL",
+ "svazijský lilangeni": "SZL",
+ "λιλανγκένι": "SZL",
+ "swazi lilangeni": "SZL",
+ "svazilanda lilangenio": "SZL",
+ "لیلانگنی سوازی": "SZL",
+ "לילנגני": "SZL",
+ "esvatinijski lilangeni": "SZL",
+ "szváziföldi lilangeni": "SZL",
+ "lilangeni dell'eswatini": "SZL",
+ "リランゲニ": "SZL",
+ "lilangenis": "SZL",
+ "swazische lilangeni": "SZL",
+ "lilanguéni": "SZL",
+ "лилангени": "SZL",
+ "свазілендський ліланґені": "SZL",
+ "lilangeni eswatini": "SZL",
+ "史瓦帝尼里蘭吉尼": "SZL",
+ "بات تايلاندي": "THB",
+ "тайландски бат": "THB",
+ "baht": "THB",
+ "thajský baht": "THB",
+ "thailandske baht": "THB",
+ "μπατ": "THB",
+ "thai baht": "THB",
+ "tajlanda bahto": "THB",
+ "baht tailandés": "THB",
+ "baat": "THB",
+ "thailandiar baht": "THB",
+ "بات تایلند": "THB",
+ "באט": "THB",
+ "tajlandski baht": "THB",
+ "thai bát": "THB",
+ "baht thailandese": "THB",
+ "バーツ": "THB",
+ "tailando batas": "THB",
+ "thaise baht": "THB",
+ "bat": "THB",
+ "тайский бат": "THB",
+ "тајландски бат": "THB",
+ "தாய்லாந்தின் பாட்": "THB",
+ "тайський бат": "THB",
+ "泰銖": "THB",
+ "ساماني طاجيكي": "TJS",
+ "таджикистански сомони": "TJS",
+ "somoni": "TJS",
+ "tádžický somoni": "TJS",
+ "σομόνι": "TJS",
+ "tajikistani somoni": "TJS",
+ "taĝika somonio": "TJS",
+ "somoni tayiko": "TJS",
+ "tadžikistani somoni": "TJS",
+ "سامانی": "TJS",
+ "tadžikistanin somoni": "TJS",
+ "tadžikistanski somoni": "TJS",
+ "tádzsik szomoni": "TJS",
+ "somoni tagiko": "TJS",
+ "ソモニ": "TJS",
+ "somonis": "TJS",
+ "tadzjiekse somoni": "TJS",
+ "somoni tadjik": "TJS",
+ "сомони": "TJS",
+ "таџикистански сомони": "TJS",
+ "таджицький сомоні": "TJS",
+ "塔吉克斯坦索莫尼": "TJS",
+ "النقود المعدنية في تيمور الشرقية": "TLD",
+ "východotimorské centavové mince": "TLD",
+ "münzen osttimors": "TLD",
+ "east timor centavo coins": "TLD",
+ "centavos de dólar de timor oriental": "TLD",
+ "سکههای سنتاوو تیمور شرقی": "TLD",
+ "סנטאבו מזרח טימורי": "TLD",
+ "istočnotimorski sentavo": "TLD",
+ "kelet timori centavoérmék": "TLD",
+ "centavo est timorense": "TLD",
+ "東ティモール・センターボ": "TLD",
+ "centavos de timor leste": "TLD",
+ "тиморское сентаво": "TLD",
+ "východotimorské obehové mince": "TLD",
+ "східнотиморське сентаво": "TLD",
+ "centavo": "TLD",
+ "东帝汶分币": "TLD",
+ "منات تركمانستاني": "TMT",
+ "туркменистански манат": "TMT",
+ "manat turcman": "TMT",
+ "turkmenský manat": "TMT",
+ "turkmenistan manat": "TMT",
+ "μανάτ του τουρκμενιστάν": "TMT",
+ "turkmenistani manat": "TMT",
+ "turkmena manato": "TMT",
+ "manat turcomano": "TMT",
+ "منات ترکمنستان": "TMT",
+ "turkmenistanin manat": "TMT",
+ "manat turkmène": "TMT",
+ "manat turcomán": "TMT",
+ "turkmenistanski manat": "TMT",
+ "türkmén manat": "TMT",
+ "manat turkmeno": "TMT",
+ "トルクメニスタン・マナト": "TMT",
+ "turkmėnijos manatas": "TMT",
+ "turkmeense manat": "TMT",
+ "manat turkmeński": "TMT",
+ "manate turcomeno": "TMT",
+ "manat turkmen": "TMT",
+ "туркменский манат": "TMT",
+ "turkménsky manat": "TMT",
+ "turkmenistansk manat": "TMT",
+ "türkmenistan manatı": "TMT",
+ "туркменський манат": "TMT",
+ "manat turkmenistan": "TMT",
+ "土库曼斯坦马纳特": "TMT",
+ "دينار تونسي": "TND",
+ "тунизийски динар": "TND",
+ "dinar tunisià": "TND",
+ "tuniský dinár": "TND",
+ "dinar tiwnisaidd": "TND",
+ "tunesischer dinar": "TND",
+ "tunisian dinar": "TND",
+ "tunizia dinaro": "TND",
+ "dinar tunecino": "TND",
+ "tuneesia dinaar": "TND",
+ "دینار تونس": "TND",
+ "tunisian dinaari": "TND",
+ "dinar tunisien": "TND",
+ "דינר תוניסאי": "TND",
+ "tuniski dinar": "TND",
+ "tunéziai dinár": "TND",
+ "dinaro tunisino": "TND",
+ "チュニジア・ディナール": "TND",
+ "tuniso dinaras": "TND",
+ "tunesische dinar": "TND",
+ "dinar tunezyjski": "TND",
+ "dinar tunisiano": "TND",
+ "тунисский динар": "TND",
+ "tunizijski dinar": "TND",
+ "туниски динар": "TND",
+ "tunisisk dinar": "TND",
+ "tunus dinarı": "TND",
+ "туніський динар": "TND",
+ "突尼斯第納爾": "TND",
+ "بانغا تونغي": "TOP",
+ "paʻanga": "TOP",
+ "tonžská paʻanga": "TOP",
+ "παάνγκα": "TOP",
+ "tongan paʻanga": "TOP",
+ "tonga paangao": "TOP",
+ "پاآنگای تونگا": "TOP",
+ "פאנגה טונגאית": "TOP",
+ "tonška pa’anga": "TOP",
+ "tongai paʻanga": "TOP",
+ "paʻanga tongano": "TOP",
+ "パアンガ": "TOP",
+ "tongos paanga": "TOP",
+ "tongaanse pa'anga": "TOP",
+ "pa'anga": "TOP",
+ "паанга": "TOP",
+ "тонганска панга": "TOP",
+ "тонганська паанга": "TOP",
+ "paʻanga tonga": "TOP",
+ "汤加潘加": "TOP",
+ "ليرة تركية": "TRY",
+ "турска лира": "TRY",
+ "lira turca": "TRY",
+ "turecká lira": "TRY",
+ "lira twrcaidd": "TRY",
+ "lira twrcaidd newydd": "TRY",
+ "tyrkisk lira": "TRY",
+ "türkische lira": "TRY",
+ "τουρκική λίρα": "TRY",
+ "revaluation of the turkish lira": "TRY",
+ "turkish lira": "TRY",
+ "turka liro": "TRY",
+ "türgi liir": "TRY",
+ "turkiar lira": "TRY",
+ "افزایش ارزش لیر ترکیه": "TRY",
+ "لیره ترک": "TRY",
+ "turkin liira": "TRY",
+ "uusi turkin liira": "TRY",
+ "livre turque": "TRY",
+ "לירה טורקית": "TRY",
+ "turska lira": "TRY",
+ "török líra": "TRY",
+ "トルコリラ": "TRY",
+ "新トルコリラ": "TRY",
+ "naujoji turkijos lira": "TRY",
+ "nieuwe turkse lira": "TRY",
+ "turkse lira": "TRY",
+ "lira turecka": "TRY",
+ "liră turcească": "TRY",
+ "турецкая лира": "TRY",
+ "turecká líra": "TRY",
+ "turkisk lira": "TRY",
+ "துருக்கிய லிரா": "TRY",
+ "türk lirası": "TRY",
+ "турецька ліра": "TRY",
+ "lira thổ nhĩ kỳ": "TRY",
+ "土耳其里拉": "TRY",
+ "土耳其里拉币制改革": "TRY",
+ "دولار ترينيداد وتوباغو": "TTD",
+ "долар на тринидад и тобаго": "TTD",
+ "dòlar de trinitat i tobago": "TTD",
+ "dolar trinidadu a tobaga": "TTD",
+ "trinidad und tobago dollar": "TTD",
+ "δολάριο τρινιδάδ και τομπάγκο": "TTD",
+ "trinidad and tobago dollar": "TTD",
+ "trinidada dolaro": "TTD",
+ "dólar trinitense": "TTD",
+ "trinidadi ja tobago dollar": "TTD",
+ "trinidad eta tobagoko dolar": "TTD",
+ "دلار ترینیداد و توباگو": "TTD",
+ "trinidadin ja tobagon dollari": "TTD",
+ "dollar de trinité et tobago": "TTD",
+ "dólar de trinidad e tobago": "TTD",
+ "trinidadtobaški dolar": "TTD",
+ "trinidad és tobagó i dollár": "TTD",
+ "dollaro di trinidad e tobago": "TTD",
+ "トリニダード・トバゴ・ドル": "TTD",
+ "trinidado ir tobago doleris": "TTD",
+ "trinidad en tobagodollar": "TTD",
+ "dolar trynidadu i tobago": "TTD",
+ "dólar de trindade e tobago": "TTD",
+ "доллар тринидада и тобаго": "TTD",
+ "долар тринидада и тобага": "TTD",
+ "trinidaddollar": "TTD",
+ "trinidad ve tobago doları": "TTD",
+ "долар тринідаду і тобаго": "TTD",
+ "特立尼达和多巴哥元": "TTD",
+ "دولار توفالو": "TVD",
+ "dòlar de tuvalu": "TVD",
+ "tuvalský dolar": "TVD",
+ "tuvaluischer dollar": "TVD",
+ "δολάριο τουβαλού": "TVD",
+ "tuvaluan dollar": "TVD",
+ "tuvala dolaro": "TVD",
+ "dólar tuvaluano": "TVD",
+ "دلار تووالو": "TVD",
+ "tuvalun dollari": "TVD",
+ "dollar tuvaluan": "TVD",
+ "dólar tuvalés": "TVD",
+ "tuvaluski dolar": "TVD",
+ "tuvalui dollár": "TVD",
+ "dollaro delle tuvalu": "TVD",
+ "ツバル・ドル": "TVD",
+ "dolar tuvalu": "TVD",
+ "dolar din tuvalu": "TVD",
+ "доллар тувалу": "TVD",
+ "тувалуански долар": "TVD",
+ "tuvaluansk dollar": "TVD",
+ "tuvalu doları": "TVD",
+ "долар тувалу": "TVD",
+ "吐瓦魯元": "TVD",
+ "دولار تايواني جديد": "TWD",
+ "нов тайвански долар": "TWD",
+ "nou dòlar de taiwan": "TWD",
+ "tchajwanský dolar": "TWD",
+ "neuer taiwan dollar": "TWD",
+ "νέο δολάριο ταϊβάν": "TWD",
+ "new taiwan dollar": "TWD",
+ "nova tajvana dolaro": "TWD",
+ "nuevo dólar taiwanés": "TWD",
+ "uus taiwani dollar": "TWD",
+ "دلار جدید تایوان": "TWD",
+ "uusi taiwanin dollari": "TWD",
+ "nouveau dollar de taïwan": "TWD",
+ "novotajvanski dolar": "TWD",
+ "tajvani új dollár": "TWD",
+ "dollaro taiwanese": "TWD",
+ "新台湾ドル": "TWD",
+ "naujasis taivano doleris": "TWD",
+ "taiwanese dollar": "TWD",
+ "dolar tajwański": "TWD",
+ "novo dólar taiwanês": "TWD",
+ "новый тайваньский доллар": "TWD",
+ "нови тајвански долар": "TWD",
+ "taiwanesisk dollar": "TWD",
+ "yeni tayvan doları": "TWD",
+ "новий тайванський долар": "TWD",
+ "tân đài tệ": "TWD",
+ "新臺幣": "TWD",
+ "شيلينغ تانزاني": "TZS",
+ "танзанийски шилинг": "TZS",
+ "xíling tanzà": "TZS",
+ "tanzanský šilink": "TZS",
+ "swllt tansanïa": "TZS",
+ "tansania schilling": "TZS",
+ "tanzanian shilling": "TZS",
+ "tanzania ŝilingo": "TZS",
+ "chelín tanzano": "TZS",
+ "شیلینگ تانزانیا": "TZS",
+ "tansanian šillinki": "TZS",
+ "shilling tanzanien": "TZS",
+ "שילינג טנזני": "TZS",
+ "tanzanijski šiling": "TZS",
+ "tanzániai shilling": "TZS",
+ "scellino tanzaniano": "TZS",
+ "タンザニア・シリング": "TZS",
+ "tanzanijos šilingas": "TZS",
+ "tanzaniaanse shilling": "TZS",
+ "szyling tanzański": "TZS",
+ "xelim tanzaniano": "TZS",
+ "танзанийский шиллинг": "TZS",
+ "tanzánijský šiling": "TZS",
+ "танзанијски шилинг": "TZS",
+ "tanzanisk shilling": "TZS",
+ "tanzanya şilini": "TZS",
+ "танзанійський шилінг": "TZS",
+ "坦尚尼亞先令": "TZS",
+ "هريفنا أوكرانية": "UAH",
+ "украинска гривна": "UAH",
+ "hrívnia": "UAH",
+ "ukrajinská hřivna": "UAH",
+ "ukrainske hryvnia": "UAH",
+ "hrywnja": "UAH",
+ "χρίβνια": "UAH",
+ "ukrainian hryvnia": "UAH",
+ "ukraina hrivno": "UAH",
+ "grivna": "UAH",
+ "ukraina grivna": "UAH",
+ "گریونا اوکراین": "UAH",
+ "ukrainan hryvnia": "UAH",
+ "hryvnia": "UAH",
+ "hrivna": "UAH",
+ "הריבניה": "UAH",
+ "ukrajinska grivnja": "UAH",
+ "ukrán hrivnya": "UAH",
+ "grivnia ucraina": "UAH",
+ "フリヴニャ": "UAH",
+ "grivina": "UAH",
+ "oekraïense grivna": "UAH",
+ "hrywna": "UAH",
+ "grívnia": "UAH",
+ "grivnă": "UAH",
+ "украинская гривна": "UAH",
+ "ukrajinská hrivna": "UAH",
+ "ukrajinska grivna": "UAH",
+ "украјинска гривна": "UAH",
+ "ஹிருன்யா": "UAH",
+ "гривня": "UAH",
+ "hryvnia ukraina": "UAH",
+ "乌克兰格里夫纳": "UAH",
+ "شيلينغ أوغندي": "UGX",
+ "угандийски шилинг": "UGX",
+ "xíling ugandès": "UGX",
+ "ugandský šilink": "UGX",
+ "uganda schilling": "UGX",
+ "σελίνι της ουγκάντας": "UGX",
+ "ugandan shilling": "UGX",
+ "uganda ŝilingo": "UGX",
+ "chelín ugandés": "UGX",
+ "شیلینگ اوگاندا": "UGX",
+ "ugandan šillinki": "UGX",
+ "shilling ougandais": "UGX",
+ "שילינג אוגנדי": "UGX",
+ "ugandski šiling": "UGX",
+ "ugandai shilling": "UGX",
+ "scellino ugandese": "UGX",
+ "ウガンダ・シリング": "UGX",
+ "ugandos šilingas": "UGX",
+ "oegandese shilling": "UGX",
+ "shilling ogandés": "UGX",
+ "szyling ugandyjski": "UGX",
+ "xelim ugandês": "UGX",
+ "угандийский шиллинг": "UGX",
+ "ugandský šiling": "UGX",
+ "угандски шилинг": "UGX",
+ "ugandisk shilling": "UGX",
+ "uganda şilini": "UGX",
+ "угандійський шилінг": "UGX",
+ "烏干達先令": "UGX",
+ "دولار أمريكي": "USD",
+ "щатски долар": "USD",
+ "dòlar dels estats units": "USD",
+ "americký dolar": "USD",
+ "doler yr unol daleithiau": "USD",
+ "amerikanske dollar": "USD",
+ "us dollar": "USD",
+ "δολάριο ηπα": "USD",
+ "united states dollar": "USD",
+ "usona dolaro": "USD",
+ "dólar estadounidense": "USD",
+ "usa dollar": "USD",
+ "estatubatuar dolar": "USD",
+ "دلار آمریکا": "USD",
+ "yhdysvaltain dollari": "USD",
+ "dollar américain": "USD",
+ "דולר אמריקאי": "USD",
+ "američki dolar": "USD",
+ "amerikai dollár": "USD",
+ "dollar statounitese": "USD",
+ "dollaro statunitense": "USD",
+ "アメリカ合衆国ドル": "USD",
+ "jungtinių valstijų doleris": "USD",
+ "amerikaanse dollar": "USD",
+ "dolar estatsunidenc": "USD",
+ "dolar amerykański": "USD",
+ "dólar dos estados unidos": "USD",
+ "dolar american": "USD",
+ "доллар сша": "USD",
+ "americký dolár": "USD",
+ "ameriški dolar": "USD",
+ "амерички долар": "USD",
+ "amerikansk dollar": "USD",
+ "அமெரிக்க டாலர்": "USD",
+ "amerikan doları": "USD",
+ "долар сша": "USD",
+ "đô la mỹ": "USD",
+ "美元": "USD",
+ "بيزو أوروغواي": "UYU",
+ "уругвайско песо": "UYU",
+ "peso uruguaià": "UYU",
+ "uruguayské peso": "UYU",
+ "uruguayischer peso": "UYU",
+ "uruguayan peso": "UYU",
+ "urugvaja peso": "UYU",
+ "peso uruguayo": "UYU",
+ "peso uruguaitar": "UYU",
+ "پزوی اروگوئه": "UYU",
+ "uruguayn peso": "UYU",
+ "peso uruguayen": "UYU",
+ "peso uruguaio": "UYU",
+ "urugvajski pezo": "UYU",
+ "uruguayi peso": "UYU",
+ "peso uruguaiano": "UYU",
+ "ウルグアイ・ペソ": "UYU",
+ "urugvajaus pesas": "UYU",
+ "uruguayaanse peso": "UYU",
+ "peso urugwajskie": "UYU",
+ "уругвайское песо": "UYU",
+ "уругвајски пезос": "UYU",
+ "uruguayansk peso": "UYU",
+ "uruguay pesosu": "UYU",
+ "уругвайський песо": "UYU",
+ "烏拉圭比索": "UYU",
+ "سوم أوزبكستاني": "UZS",
+ "узбекистански сом": "UZS",
+ "som uzbek": "UZS",
+ "uzbecký sum": "UZS",
+ "soʻm": "UZS",
+ "σομ του ουζμπεκιστάν": "UZS",
+ "uzbekistani soʻm": "UZS",
+ "uzbeka somo": "UZS",
+ "som uzbeko": "UZS",
+ "سوم ازبکستان": "UZS",
+ "uzbekistanin som": "UZS",
+ "sum": "UZS",
+ "סום אוזבקי": "UZS",
+ "uzbekistanski som": "UZS",
+ "üzbég szom": "UZS",
+ "スム": "UZS",
+ "uzbekijos sumas": "UZS",
+ "oezbeekse sum": "UZS",
+ "som uzbec": "UZS",
+ "узбекский сум": "UZS",
+ "uzbekistansk som": "UZS",
+ "özbekistan somu": "UZS",
+ "узбецький сум": "UZS",
+ "乌兹别克斯坦索姆": "UZS",
+ "sovereign bolivar": "VES",
+ "bolívar soberano": "VES",
+ "bolivar souverain": "VES",
+ "venezuelai bolívar": "VES",
+ "ボリバル・ソベラノ": "VES",
+ "суверенный боливар": "VES",
+ "суверенний болівар": "VES",
+ "دونغ فيتنامي": "VND",
+ "виетнамски донг": "VND",
+ "dong": "VND",
+ "vietnamský dong": "VND",
+ "vietnamesischer đồng": "VND",
+ "ντονγκ": "VND",
+ "vietnamese đồng": "VND",
+ "vjetnama dongo": "VND",
+ "đồng vietnamita": "VND",
+ "vietnamdar dong": "VND",
+ "دانگ ویتنام": "VND",
+ "vietnamin đồng": "VND",
+ "dong vietnamita": "VND",
+ "vijetnamski dong": "VND",
+ "vietnámi đồng": "VND",
+ "đồng": "VND",
+ "ドン": "VND",
+ "vietnamo dongas": "VND",
+ "vietnamese dong": "VND",
+ "донг": "VND",
+ "вијетнамски донг": "VND",
+ "в'єтнамський донг": "VND",
+ "越南盾": "VND",
+ "فاتو فانواتي": "VUV",
+ "vatu": "VUV",
+ "vanuatský vatu": "VUV",
+ "βάτου": "VUV",
+ "vanuatu vatu": "VUV",
+ "vanuatua vatuo": "VUV",
+ "واتوی وانواتو": "VUV",
+ "vanuatun vatu": "VUV",
+ "ואטו": "VUV",
+ "vanuatski vatu": "VUV",
+ "vanuatui vatu": "VUV",
+ "バツ": "VUV",
+ "vanuatuaanse vatu": "VUV",
+ "вату": "VUV",
+ "вануатски вату": "VUV",
+ "вануатський вату": "VUV",
+ "vatu vanuatu": "VUV",
+ "萬那杜瓦圖": "VUV",
+ "تالا ساموي": "WST",
+ "tala": "WST",
+ "samojská tala": "WST",
+ "samoanischer tala": "WST",
+ "τάλα σαμόα": "WST",
+ "samoan tālā": "WST",
+ "samoa talao": "WST",
+ "tālā": "WST",
+ "samoa tala": "WST",
+ "طلای ساموآ": "WST",
+ "samoan tala": "WST",
+ "tala samoana": "WST",
+ "samoanska tala": "WST",
+ "szamoai tala": "WST",
+ "tālā samoano": "WST",
+ "タラ": "WST",
+ "samoaanse tala": "WST",
+ "tala samoan": "WST",
+ "самоанская тала": "WST",
+ "самоанска тала": "WST",
+ "самоанська тала": "WST",
+ "薩摩亞塔拉": "WST",
+ "فرنك وسط أفريقي": "XAF",
+ "централноафрикански cfa франк": "XAF",
+ "franc cfa de l'àfrica central": "XAF",
+ "středoafrický frank": "XAF",
+ "cfa franc beac": "XAF",
+ "φράγκο cfa κεντρικής αφρικής": "XAF",
+ "central african cfa franc": "XAF",
+ "franco cfa de áfrica central": "XAF",
+ "فرانک سیافای آفریقای میانه": "XAF",
+ "franc cfa": [
+ "XOF",
"XAF"
- ],
- "hrk": [
- "HRK"
- ],
- "peso dominicano": [
- "DOP"
- ],
- "sh.so.": [
- "SOS"
- ],
- "kwacha zambiano": [
- "ZMW"
- ],
- "\u0441\u043e\u043c": [
- "KGS"
- ],
- "roupie nepalaise": [
- "NPR"
- ],
- "bermudian dollar": [
- "BMD"
- ],
- "cookinseln dollar": [
- "NZD"
- ],
- "bam": [
- "BAM"
- ],
- "kwanza angolen\u0303o": [
- "AOA"
- ],
- "dinaro libico": [
- "LYD"
- ],
- "malagasy ariary": [
- "MGA"
- ],
- "dolar liberiano": [
- "LRD"
- ],
- "falklandeilands pond": [
- "FKP"
- ],
- "nouvelle livre turque": [
- "TRY"
- ],
- "szovjet rubel": [
- "SUR"
- ],
- "magyar forint": [
- "HUF"
- ],
- "peso cubain": [
- "CUP"
- ],
- "xfo": [
- "XFO"
- ],
- "pakiszta\u0301ni ru\u0301pia": [
- "PKR"
- ],
- "georgische lari": [
- "GEL"
- ],
- "loti": [
- "LSL"
- ],
- "moldawischer leu": [
- "MDL"
- ],
- "dollaro statunitense": [
- "USD"
- ],
- "do\u0301lar bahame\u0301s": [
- "BSD"
- ],
- "lat leto\u0301n": [
- "LVL"
- ],
- "peso cileno": [
- "CLP"
- ],
- "dinar libio": [
- "LYD"
- ],
- "salomon dollar": [
- "SBD"
- ],
- "rupia nepali": [
- "NPR"
- ],
- "cop": [
- "COP"
- ],
- "sri\u0301 lanka i ru\u0301pia": [
- "LKR"
- ],
- "maloti": [
- "LSL"
- ],
- "drtrigonbot:exchange rate data:hrk": [
- "HRK"
- ],
- "franco ruandese": [
- "RWF"
- ],
- "ils": [
- "ILS"
- ],
- "bangladeshi taka": [
- "BDT"
- ],
- "konvertierbarer peso": [
- "CUC"
- ],
- "she\u0301kel": [
- "ILS"
- ],
- "kwd": [
- "KWD"
- ],
- "bahrain dinar": [
- "BHD"
- ],
- "sfr.": [
- "CHF"
- ],
- "livre syrienne": [
- "SYP"
- ],
- "macao pataca": [
- "MOP"
- ],
- "dolar de las islas caiman": [
- "KYD"
- ],
- "dollaro del brunei": [
- "BND"
- ],
- "chil$": [
- "CLP"
- ],
- "honduranischer lempira": [
- "HNL"
- ],
- "frf": [
- "FRF"
- ],
- "nakfa": [
- "ERN"
- ],
- "ghanese cedi": [
- "GHS"
- ],
- "dalasi gambien": [
- "GMD"
- ],
- "braziliaanse real": [
- "BRL"
- ],
- "frw": [
- "RWF"
- ],
- "libra falkland": [
- "FKP"
- ],
- "algerijnse dinar": [
- "DZD"
- ],
- "dinar du bahrei\u0308n": [
- "BHD"
- ],
- "dinar serbio": [
- "RSD"
- ],
- "rupias indias": [
- "INR"
- ],
- "lesotho loti": [
- "LSL"
- ],
- "do\u0301lar guyane\u0301s": [
- "GYD"
- ],
- "mauritanian ouguiya": [
- "MRO"
- ],
- "greek drachma": [
- "GRD"
- ],
- "east caribbean dollar": [
- "XCD"
- ],
- "dirham de emiratos a\u0301rabes unidos": [
+ ],
+ "srednjoafrički cfa franak": "XAF",
+ "中央アフリカcfaフラン": "XAF",
+ "franc cfa d'africa centrala": "XAF",
+ "franco cfa da áfrica central": "XAF",
+ "franc cfa beac": "XAF",
+ "центральноафриканский франк кфа": "XAF",
+ "stredoafrický frank": "XAF",
+ "orta afrika cfa frangı": "XAF",
+ "центральноафриканський франк": "XAF",
+ "franc cfa trung phi": "XAF",
+ "中非金融合作法郎": "XAF",
+ "فضة": "XAG",
+ "сребро": "XAG",
+ "དངུལ།": "XAG",
+ "argent": "XAG",
+ "stříbro": "XAG",
+ "arian": "XAG",
+ "sølv": "XAG",
+ "silber": "XAG",
+ "άργυρος": "XAG",
+ "silver": "XAG",
+ "arĝento": "XAG",
+ "plata": "XAG",
+ "hõbe": "XAG",
+ "zilar": "XAG",
+ "نقره": "XAG",
+ "hopea": "XAG",
+ "prata": "XAG",
+ "כסף": "XAG",
+ "srebro": "XAG",
+ "ezüst": "XAG",
+ "argento": "XAG",
+ "銀": "XAG",
+ "sidabras": "XAG",
+ "zilver": "XAG",
+ "argint": "XAG",
+ "серебро": "XAG",
+ "striebro": "XAG",
+ "வெள்ளி": "XAG",
+ "వెండి": "XAG",
+ "gümüş": "XAG",
+ "срібло": "XAG",
+ "bạc": "XAG",
+ "ذهب": "XAU",
+ "злато": "XAU",
+ "གསེར།": "XAU",
+ "or": "XAU",
+ "zlato": "XAU",
+ "aur": "XAU",
+ "guld": "XAU",
+ "gold": "XAU",
+ "χρυσός": "XAU",
+ "oro": "XAU",
+ "kuld": "XAU",
+ "urre": "XAU",
+ "طلا": "XAU",
+ "kulta": "XAU",
+ "ouro": "XAU",
+ "זהב": "XAU",
+ "arany": "XAU",
+ "auro": "XAU",
+ "金": "XAU",
+ "auksas": "XAU",
+ "goud": "XAU",
+ "złoto": "XAU",
+ "золото": "XAU",
+ "தங்கம்": "XAU",
+ "బంగారం": "XAU",
+ "altın": "XAU",
+ "vàng": "XAU",
+ "بيتكوين": "XBT",
+ "биткойн": "XBT",
+ "bitcoin": "XBT",
+ "bitmono": "XBT",
+ "بیتکوین": "XBT",
+ "ביטקוין": "XBT",
+ "ビットコイン": "XBT",
+ "биткоин": "XBT",
+ "பிட்காயின்": "XBT",
+ "బిట్ కాయిన్": "XBT",
+ "біткоїн": "XBT",
+ "比特币": "XBT",
+ "دولار شرق الكاريبي": "XCD",
+ "източнокарибски долар": "XCD",
+ "dòlar del carib oriental": "XCD",
+ "východokaribský dolar": "XCD",
+ "doler dwyrain y caribî": "XCD",
+ "ostkaribischer dollar": "XCD",
+ "δολάριο ανατολικής καραϊβικής": "XCD",
+ "eastern caribbean dollar": "XCD",
+ "orientkaribia dolaro": "XCD",
+ "dólar del caribe oriental": "XCD",
+ "ekialdeko karibeko dolar": "XCD",
+ "دلار کارائیب شرقی": "XCD",
+ "itä karibian dollari": "XCD",
+ "dollar des caraïbes orientales": "XCD",
+ "dólar do caribe oriental": "XCD",
+ "דולר מזרח קריבי": "XCD",
+ "istočnokaripski dolar": "XCD",
+ "kelet karibi dollár": "XCD",
+ "dollaro dei caraibi orientali": "XCD",
+ "東カリブ・ドル": "XCD",
+ "rytų karibų doleris": "XCD",
+ "oost caribische dollar": "XCD",
+ "dolar wschodniokaraibski": "XCD",
+ "восточнокарибский доллар": "XCD",
+ "vzhodnokaribski dolar": "XCD",
+ "источнокарипски долар": "XCD",
+ "östkaribisk dollar": "XCD",
+ "doğu karayip doları": "XCD",
+ "східнокарибський долар": "XCD",
+ "đô la đông caribe": "XCD",
+ "東加勒比元": "XCD",
+ "حقوق السحب الخاصة": "XDR",
+ "специални права на тираж": "XDR",
+ "drets especials de gir": "XDR",
+ "zvláštní práva čerpání": "XDR",
+ "sonderziehungsrecht": "XDR",
+ "special drawing rights": "XDR",
+ "specialaj rajtoj de enspezo": "XDR",
+ "derechos especiales de giro": "XDR",
+ "erityisnosto oikeus": "XDR",
+ "droits de tirage spéciaux": "XDR",
+ "posebna prava vučenja": "XDR",
+ "sdr": "XDR",
+ "diritti speciali di prelievo": "XDR",
+ "特別引出権": "XDR",
+ "specialiosios skolinimosi teisės": "XDR",
+ "speciale trekkingsrechten": "XDR",
+ "drechs de tiratge especials": "XDR",
+ "specjalne prawa ciągnienia": "XDR",
+ "direitos especiais de saque": "XDR",
+ "drepturi speciale de tragere": "XDR",
+ "специальные права заимствования": "XDR",
+ "zvláštne práva čerpania": "XDR",
+ "posebne pravice črpanja": "XDR",
+ "särskilda dragningsrätter": "XDR",
+ "özel çekme hakları": "XDR",
+ "спеціальні права запозичення": "XDR",
+ "quyền rút vốn đặc biệt": "XDR",
+ "特别提款权": "XDR",
+ "екю": "XEU",
+ "unitat monetària europea": "XEU",
+ "evropská měnová jednotka": "XEU",
+ "european currency unit": "XEU",
+ "europäische währungseinheit": "XEU",
+ "ευρωπαϊκή λογιστική μονάδα": "XEU",
+ "unidad monetaria europea": "XEU",
+ "euroopa valuutaühik": "XEU",
+ "europako kontu unitate": "XEU",
+ "واحد ارزی اروپا": "XEU",
+ "euroopan valuuttayksikkö": "XEU",
+ "ecu": "XEU",
+ "יחידת מטבע אירופית": "XEU",
+ "európai valutaegység": "XEU",
+ "unità di conto europea": "XEU",
+ "欧州通貨単位": "XEU",
+ "ekiu": "XEU",
+ "europese rekeneenheid": "XEU",
+ "unidade monetária europeia": "XEU",
+ "экю": "XEU",
+ "európska menová jednotka": "XEU",
+ "europeiska valutaenheten": "XEU",
+ "avrupa para birimi": "XEU",
+ "欧洲货币单位": "XEU",
+ "مونيرو": "XMR",
+ "монеро": "XMR",
+ "monero": "XMR",
+ "مونرو": "XMR",
+ "מונרו": "XMR",
+ "门罗币": "XMR",
+ "فرنك غرب أفريقي": "XOF",
+ "западноафрикански cfa франк": "XOF",
+ "franc cfa de l'àfrica occidental": "XOF",
+ "cfa franc bceao": "XOF",
+ "φράγκο cfa δυτικής αφρικής": "XOF",
+ "west african cfa franc": "XOF",
+ "franco cfa de áfrica occidental": "XOF",
+ "فرانک سیافای آفریقای غربی": "XOF",
+ "zapadnoafrički cfa franak": "XOF",
+ "西アフリカcfaフラン": "XOF",
+ "franc cfa d'africa occidentala": "XOF",
+ "franco cfa da áfrica ocidental": "XOF",
+ "franc cfa bceao": "XOF",
+ "западноафриканский франк кфа": "XOF",
+ "západoafrický frank": "XOF",
+ "batı afrika cfa frangı": "XOF",
+ "західноафриканський франк": "XOF",
+ "franc cfa tây phi": "XOF",
+ "非洲金融共同体法郎": "XOF",
+ "بالاديوم": "XPD",
+ "паладий": "XPD",
+ "པྰེ་ལེ་ཌིམ།": "XPD",
+ "pal·ladi": "XPD",
+ "palladium": "XPD",
+ "paladiwm": "XPD",
+ "παλλάδιο": "XPD",
+ "paladio": "XPD",
+ "pallaadium": "XPD",
+ "پالادیم": "XPD",
+ "פלדיום": "XPD",
+ "paladij": "XPD",
+ "palládium": "XPD",
+ "palladio": "XPD",
+ "パラジウム": "XPD",
+ "paladis": "XPD",
+ "palladi": "XPD",
+ "pallad": "XPD",
+ "paládio": "XPD",
+ "paladiu": "XPD",
+ "палладий": "XPD",
+ "paládium": "XPD",
+ "паладијум": "XPD",
+ "பலேடியம்": "XPD",
+ "పెల్లేడియం": "XPD",
+ "paladyum": "XPD",
+ "паладій": "XPD",
+ "paladi": "XPD",
+ "钯": "XPD",
+ "فرنك س ف ب": "XPF",
+ "franc cfp": "XPF",
+ "cfp frank": "XPF",
+ "cfp franc": "XPF",
+ "φράγκο cfp": "XPF",
+ "pacifika franko": "XPF",
+ "franco cfp": "XPF",
+ "cfp libera": "XPF",
+ "فرانک اقیانوسیه": "XPF",
+ "cfp frangi": "XPF",
+ "franc pacifique": "XPF",
+ "cfp franak": "XPF",
+ "csendes óceáni valutaközösségi frank": "XPF",
+ "cfpフラン": "XPF",
+ "cfp frankas": "XPF",
+ "frank cfp": "XPF",
+ "тихоокеанский франк": "XPF",
+ "cfp frangı": "XPF",
+ "французький тихоокеанський франк": "XPF",
+ "太平洋法郎": "XPF",
+ "بلاتين": "XPT",
+ "платина": "XPT",
+ "བེ་ལེ་ཊི་ནམ།": "XPT",
+ "platí": "XPT",
+ "platina": "XPT",
+ "platinwm": "XPT",
+ "platin": "XPT",
+ "λευκόχρυσος": "XPT",
+ "platinum": "XPT",
+ "plateno": "XPT",
+ "platino": "XPT",
+ "plaatina": "XPT",
+ "پلاتین": "XPT",
+ "platine": "XPT",
+ "פלטינה": "XPT",
+ "白金": "XPT",
+ "platyna": "XPT",
+ "platină": "XPT",
+ "பிளாட்டினம்": "XPT",
+ "ప్లాటినం": "XPT",
+ "铂": "XPT",
+ "sucre": "XSU",
+ "sistema unificato di compensazione regionale": "XSU",
+ "域内統一決済システム": "XSU",
+ "сукре": "XSU",
+ "ريال اليمن الشمالي": "YER",
+ "ريال يمني": "YER",
+ "йеменски риал": "YER",
+ "rial iemenita": "YER",
+ "jemenský rijál": "YER",
+ "jemen rial": "YER",
+ "ριάλ υεμένης": "YER",
+ "north yemeni rial": "YER",
+ "yemeni rial": "YER",
+ "jemena rialo": "YER",
+ "rial de yemen del norte": "YER",
+ "rial yemení": "YER",
+ "ریال یمن": "YER",
+ "ریال یمن شمالی": "YER",
+ "jemenin rial": "YER",
+ "riyal yéménite": "YER",
+ "rial iemení": "YER",
+ "ריאל תימני": "YER",
+ "jemenski rijal": "YER",
+ "jemeni riál": "YER",
+ "riyal yemenita": "YER",
+ "イエメン・リアル": "YER",
+ "jemeno rialas": "YER",
+ "jemenitische rial": "YER",
+ "noord jemenitische rial": "YER",
+ "rial jemeński": "YER",
+ "rial północnojemeński": "YER",
+ "йеменский риал": "YER",
+ "риал северного йемена": "YER",
+ "jemenský rial": "YER",
+ "јеменски ријал": "YER",
+ "jemenitisk rial": "YER",
+ "yemen riyali": "YER",
+ "єменський ріал": "YER",
+ "葉門里亞爾": "YER",
+ "راند جنوب أفريقي": "ZAR",
+ "южноафрикански ранд": "ZAR",
+ "rand": "ZAR",
+ "jihoafrický rand": "ZAR",
+ "südafrikanischer rand": "ZAR",
+ "ραντ": "ZAR",
+ "south african rand": "ZAR",
+ "sudafrika rando": "ZAR",
+ "rand sudafricano": "ZAR",
+ "hegoafrikar rand": "ZAR",
+ "رند آفریقای جنوبی": "ZAR",
+ "etelä afrikan randi": "ZAR",
+ "rand surafricano": "ZAR",
+ "ראנד דרום אפריקאי": "ZAR",
+ "južnoafrički rand": "ZAR",
+ "dél afrikai rand": "ZAR",
+ "ランド": "ZAR",
+ "randas": "ZAR",
+ "zuid afrikaanse rand": "ZAR",
+ "rand sudafrican": "ZAR",
+ "rand sud african": "ZAR",
+ "южноафриканский рэнд": "ZAR",
+ "јужноафрички ранд": "ZAR",
+ "güney afrika randı": "ZAR",
+ "ранд": "ZAR",
+ "南非兰特": "ZAR",
+ "كواشا زامبي": "ZMW",
+ "kwacha zambià": "ZMW",
+ "zambijská kwacha": "ZMW",
+ "zambianske kwacha": "ZMW",
+ "sambischer kwacha": "ZMW",
+ "κουάτσα της ζάμπιας": "ZMW",
+ "zambian kwacha": "ZMW",
+ "zambia kvaĉo": "ZMW",
+ "kwacha zambiano": "ZMW",
+ "sambia kvatša": "ZMW",
+ "کواچای زامبیا": "ZMW",
+ "sambian kwacha": "ZMW",
+ "kwacha zambien": "ZMW",
+ "קוואצ'ה זמבי": "ZMW",
+ "zambijska kvača": "ZMW",
+ "zambiai kwacha": "ZMW",
+ "ザンビア・クワチャ": "ZMW",
+ "zambijos kvača": "ZMW",
+ "zambiaanse kwacha": "ZMW",
+ "kwacha zambijska": "ZMW",
+ "замбийская квача": "ZMW",
+ "замбијска квача": "ZMW",
+ "zambisk kwacha": "ZMW",
+ "zambiya kwachası": "ZMW",
+ "замбійська квача": "ZMW",
+ "尚比亞克瓦查": "ZMW",
+ "Аҧ": "ABA",
+ "abcházský apsar": "ABA",
+ "apsar abjasio": "ABA",
+ "аҧ": "ABA",
+ "آپسار": "ABA",
+ "اپسار": "ABA",
+ "اپسار ابخاز": "ABA",
+ "אפסר אבחזי": "ABA",
+ "アプサラ": "ABA",
+ "апсар": "ABA",
+ "аҧсар": "ABA",
+ "абхаски апсар": "ABA",
+ "درهم": "AED",
+ "DH": [
+ "MAD",
"AED"
- ],
- "scellino tanzaniano": [
- "TZS"
- ],
- "aurar": [
- "ISK"
- ],
- "oost duitse mark": [
- "DDM"
- ],
- "franc guine\u0301en": [
- "GNF"
- ],
- "dollaro hongkonghese": [
- "HKD"
- ],
- "sll": [
- "SLL"
- ],
- "\u09f3": [
- "BDT"
- ],
- "rial saudita": [
- "SAR"
- ],
- "tzs": [
- "TZS"
- ],
- "real bresilien": [
- "BRL"
- ],
- "irakischer dinar": [
- "IQD"
- ],
- "rupias": [
- "INR"
- ],
- "sistema u\u0301nico de compensacio\u0301n regional": [
- "XSU"
- ],
- "franco frances": [
- "FRF"
- ],
- "costaricaanse colo\u0301n": [
- "CRC"
- ],
- "lita lituano": [
- "LTL"
- ],
- "\u20ae": [
- "MNT"
- ],
- "\u0434\u043e\u043b\u0430\u0440": [
- "MKD"
- ],
- "peso filippino": [
- "PHP"
- ],
- "dolar neocelandes": [
- "NZD"
- ],
- "to\u0308gro\u0308g": [
- "MNT"
- ],
- "rupiah": [
- "IDR"
- ],
- "zersto\u0308\u00dft sterling": [
- "GBP"
- ],
- "can$": [
- "CAD"
- ],
- "pgk": [
- "PGK"
- ],
- "rupia india": [
- "INR"
- ],
- "do\u0301lar belicen\u0303o": [
- "BZD"
- ],
- "nis": [
- "ILS"
- ],
- "letse lats": [
- "LVL"
- ],
- "slrs": [
- "LKR"
- ],
- "dominikanischer peso": [
- "DOP"
- ],
- "emira\u0301tusi dirham": [
+ ],
+ "درهم الإمارات": "AED",
+ "dirham uea": "AED",
+ "dirham de l'uea": "AED",
+ "dirham de la uea": "AED",
+ "dirham de la unió dels emirats àrabs": "AED",
+ "dirham dels eau": "AED",
+ "dirham dels emirats": "AED",
+ "dirham dels emirats àrabs units": "AED",
+ "aed": "AED",
+ "sae dirham": "AED",
+ "dirham sae": "AED",
+ "emirata arabiske dirham": "AED",
+ "uae dirham": "AED",
+ "ντιρχάμ των ηνωμένων αραβικών εμιράτων": "AED",
+ "emirati dirham": "AED",
+ "u.a.e. dirham": "AED",
+ "unuiĝintaj arabaj emirlandoj dirhamo": "AED",
+ "dirham de emiratos arabes unidos": "AED",
+ "dirham de emiratos árabes unidos": "AED",
+ "dirham de los emiratos arabes unidos": "AED",
+ "dirham de los emiratos árabes unidos": "AED",
+ "درهم امارات متحده عربی": "AED",
+ "درهم امارات متحدهٔ عربی": "AED",
+ "arabiemiirikuntien dirhami": "AED",
+ "dirham emirati": "AED",
+ "dirham des emirats arabes unis": "AED",
+ "dirham des émirats": "AED",
+ "verenigde arabische emiraten dirham": "AED",
+ "diram": [
+ "TJS",
"AED"
- ],
- "litas lituano": [
- "LTL"
- ],
- "litas lituana": [
- "LTL"
- ],
- "rupia nepali\u0301": [
- "NPR"
- ],
- "thb": [
- "THB"
- ],
- "swazi lilangeni": [
- "SZL"
- ],
- "yen": [
- "JPY"
- ],
- "flori\u0301n hungaro": [
- "HUF"
- ],
- "gourde hai\u0308tienne": [
- "HTG"
- ],
- "yer": [
- "YER"
- ],
- "argentinischer austral": [
- "ARA"
- ],
- "bolivar ve\u0301ne\u0301zue\u0301lien": [
- "VEF"
- ],
- "bolivianischer boliviano": [
- "BOB"
- ],
- "sheqalim": [
- "ILS"
- ],
- "\u20af": [
- "GRD"
- ],
- "brits pond": [
- "GBP"
- ],
- "sterlina sudanese": [
- "SDG"
- ],
- "koruna cesko slovenska": [
- "CSK"
- ],
- "argent chinois": [
- "CNY"
- ],
- "libische dinar": [
- "LYD"
- ],
- "libanese pond": [
- "LBP"
- ],
- "burundian franc": [
- "BIF"
- ],
- "nuevo sol peruano": [
- "PEN"
- ],
- "singapore dollar": [
- "SGD"
- ],
- "dollar hai\u0308tien": [
- "HTG"
- ],
- "balboa panameen": [
- "PAB"
- ],
- "aserbaidschanischer manat": [
- "AZN"
- ],
- "co\u0301rdoba": [
- "NIO"
- ],
- "sterlina delle falkland": [
- "FKP"
- ],
- "peso messicano": [
- "MXN"
- ],
- "millime": [
- "TND"
- ],
- "omaanse rial": [
- "OMR"
- ],
- "sjekel": [
- "ILS"
- ],
- "vatu": [
- "VUV"
- ],
- "colo\u0301n": [
- "CRC"
- ],
- "bosnisch herzegowinische konvertible mark": [
- "BAM"
- ],
- "dollar guyanien": [
- "GYD"
- ],
- "cedi": [
- "GHS"
- ],
- "rupia de mauricio": [
- "MUR"
- ],
- "cny": [
- "CNY"
- ],
- "pataca di macao": [
- "MOP"
- ],
- "argentine austral": [
- "ARA"
- ],
- "austral (wa\u0308hrung)": [
- "ARA"
- ],
- "nuevo do\u0301lar taiwane\u0301s": [
- "TWD"
- ],
- "dinar bahraini\u0301": [
- "BHD"
- ],
- "som kirghizo": [
- "KGS"
- ],
- "baht": [
- "THB"
- ],
- "sri lanka rupee": [
- "LKR"
- ],
- "zsenminpi": [
- "CNY"
- ],
- "ryal saoudien": [
- "SAR"
- ],
- "djibouti franc": [
- "DJF"
- ],
- "pula del botswana": [
- "BWP"
- ],
- "mauritiaanse rupee": [
- "MUR"
- ],
- "syrische lira": [
- "SYP"
- ],
- "centas": [
- "LTL"
- ],
- "dollars": [
- "USD"
- ],
- "guineai frank": [
- "GNF"
- ],
- "panamai balboa": [
- "PAB"
- ],
- "dollaro": [
- "BBD",
- "BZD"
- ],
- "us dollar": [
- "USD"
- ],
- "ta\u0304la\u0304": [
- "WST"
- ],
- "peso dominicain": [
- "DOP"
- ],
- "\u4eba\u6c11\u5e01": [
- "CNY"
- ],
- "libra de gibraltar": [
- "GIP"
- ],
- "mark est allemand": [
- "DDM"
- ],
- "libra jamaicana": [
- "JMD"
- ],
- "eritrean nakfa": [
- "ERN"
- ],
- "som": [
- "KGS",
- "UZS"
- ],
- "sol": [
- "PEN"
- ],
- "bath": [
- "THB"
- ],
- "do\u0301lar surinames": [
- "SRD"
- ],
- "srilankaanse roepie": [
- "LKR"
- ],
- "oma\u0301ni ria\u0301l": [
- "OMR"
- ],
- "dolar guyane\u0301s": [
- "GYD"
- ],
- "dollaro delle bahamas": [
- "BSD"
- ],
- "georgischer lari": [
- "GEL"
- ],
- "sa\u0303o tome\u0301 e\u0301s pri\u0301ncipe i dobra": [
- "STD"
- ],
- "namibische dollar": [
- "NAD"
- ],
- "lira turca": [
- "TRY"
- ],
- "austral": [
- "ARA"
- ],
- "tune\u0301ziai dina\u0301r": [
- "TND"
- ],
- "pyg": [
- "PYG"
- ],
- "\u060b": [
- "AFN"
- ],
- "tajikistani somoni": [
- "TJS"
- ],
- "fiji dollar": [
- "FJD"
- ],
- "south african rand": [
- "ZAR"
- ],
- "seychelse rupee": [
- "SCR"
- ],
- "anciens francs": [
- "FRF"
- ],
- "nuevo sheqel": [
- "ILS"
- ],
- "amerikai dolla\u0301r": [
- "USD"
- ],
- "do\u0301lar canadiense": [
- "CAD"
- ],
- "turkmenistan manat": [
- "TMT"
- ],
- "litas": [
- "LTL"
- ],
- "peso cubano": [
- "CUP"
- ],
- "maltese lira": [
- "MTL"
- ],
- "azn": [
- "AZN"
- ],
- "maltese lire": [
- "MTL"
- ],
- "sve\u0301d korona": [
- "SEK"
- ],
- "konvertibilna marka": [
- "BAM"
- ],
- "peso": [
- "COP",
- "DOP",
- "MXN"
- ],
- "franse frank": [
- "FRF"
- ],
- "mexiko\u0301i peso": [
- "MXN"
- ],
- "pesos": [
- "MXN"
- ],
- "shilling kenyan": [
- "KES"
- ],
- "iqd": [
- "IQD"
- ],
- "colo\u0301n costaricain": [
- "CRC"
- ],
- "dinar soudanais": [
- "SDG"
- ],
- "peso colombien": [
- "COP"
- ],
- "renminbi cinese": [
- "CNY"
- ],
- "mark der deutschen notenbank": [
- "DDM"
- ],
- "re\u0301al": [
- "BRL"
- ],
- "mauritius rupie": [
- "MUR"
- ],
- "tongai pa'anga": [
- "TOP"
- ],
- "deutsche mark der deutschen notenbank": [
- "DDM"
- ],
- "ddr geld": [
- "DDM"
- ],
- "usbekistan som": [
- "UZS"
- ],
- "trinidad und tobago dollar": [
- "TTD"
- ],
- "guyanai dolla\u0301r": [
- "GYD"
- ],
- "do\u0301lar de bermuda": [
- "BMD"
- ],
- "peso convertible": [
- "CUC"
- ],
- "livre britannique": [
- "GBP"
- ],
- "italienische lira": [
- "ITL"
- ],
- "italienische lire": [
- "ITL"
- ],
- "kenyai shilling": [
- "KES"
- ],
- "li\u0301biai dina\u0301r": [
- "LYD"
- ],
- "nuevo dolar taiwanes": [
- "TWD"
- ],
- "fijan dollar": [
- "FJD"
- ],
- "uruguayischer peso": [
- "UYU"
- ],
- "neuseela\u0308ndischer dollar": [
- "NZD"
- ],
- "csendes o\u0301cea\u0301ni valutako\u0308zo\u0308sse\u0301gi frank": [
- "XPF"
- ],
- "poisha": [
- "BDT"
- ],
- "lat letton": [
- "LVL"
- ],
- "n$": [
- "NAD"
- ],
- "rwandan franc": [
- "RWF"
- ],
- "lempira": [
- "HNL"
- ],
- "speciale trekkingsrechten": [
- "XDR"
- ],
- "maldivian rufiyaa": [
- "MVR"
- ],
- "rwandan frank": [
- "RWF"
- ],
- "israe\u0308lische lire": [
- "ILS"
- ],
- "afgani": [
- "AFN"
- ],
- "rol": [
- "RON"
- ],
- "u+20bd": [
- "RUB"
- ],
- "s\u0192": [
- "SRD"
- ],
- "dinar bahreini": [
- "BHD"
- ],
- "tongai pa\u02bbanga": [
- "TOP"
- ],
- "franco suizo": [
- "CHF"
- ],
- "marco convertible": [
- "BAM"
- ],
- "forint hongrois": [
- "HUF"
- ],
- "som kirguis": [
- "KGS"
- ],
- "israeli new shekel": [
- "ILS"
- ],
- "som kirguiz": [
- "KGS"
- ],
- "albanischer lek": [
- "ALL"
- ],
- "vef": [
- "VEF"
- ],
- "kongo franc": [
- "CDF"
- ],
- "mexicaanse peso": [
- "MXN"
- ],
- "argentine peso": [
- "ARS"
- ],
- "guatemaltekischer quetzal": [
- "GTQ"
- ],
- "novo kwanza": [
- "AOA"
- ],
- "zuid soedanese pond": [
- "SSP"
- ],
- "horva\u0301t kuna": [
- "HRK"
- ],
- "dolar neozelandes": [
- "NZD"
- ],
- "tu\u0308rkme\u0301n manat": [
- "TMT"
- ],
- "lilangeni sign": [
- "SZL"
- ],
- "new taiwan dollar": [
- "TWD"
- ],
- "swazische lilangeni": [
- "SZL"
- ],
- "stotinki": [
- "BGN"
- ],
- "\u0111o\u0302\u0300ng vietnamita": [
- "VND"
- ],
- "franco burunde\u0301s": [
- "BIF"
- ],
- "stotinka": [
- "BGN"
- ],
- "cordoba nicaragu\u0308ense": [
- "NIO"
- ],
- "lebanese pound": [
- "LBP"
- ],
- "flori\u0301n aruben\u0303o": [
- "AWG"
- ],
- "algerian dinar": [
- "DZD"
- ],
- "dinar jordano": [
- "JOD"
- ],
- "rial saoudien": [
- "SAR"
- ],
- "litva\u0301n litas": [
- "LTL"
- ],
- "scellino ugandese": [
- "UGX"
- ],
- "zai\u0308re": [
- "CDF"
- ],
- "florin d\u2019aruba": [
- "AWG"
- ],
- "grivnia ucraina": [
- "UAH"
- ],
- "sambischer kwacha": [
- "ZMW"
- ],
- "filler": [
- "HUF"
- ],
- "ringgit": [
- "MYR"
- ],
- "rupia del pakistan": [
- "PKR"
- ],
- "nieuwe turkse lira": [
- "TRY"
- ],
- "chilei peso": [
- "CLP"
- ],
- "iranian rial": [
- "IRR"
- ],
- "tadzjiekse somoni": [
- "TJS"
- ],
- "metical mozambiquen\u0303o": [
- "MZN"
- ],
- "sterlina inglese": [
- "GBP"
- ],
- "mauritian rupee": [
- "MUR"
- ],
- "dinaro del bahrain": [
- "BHD"
- ],
- "venezuelai boli\u0301var": [
- "VEF"
- ],
- "ruma\u0308nischer ban": [
- "RON"
- ],
- "dolar de las islas salomo\u0301n": [
- "SBD"
- ],
- "roepiah": [
- "IDR"
- ],
- "dinaro serbo": [
- "RSD"
- ],
- "riyal catari\u0301": [
- "QAR"
- ],
- "dollaro surinamese": [
- "SRD"
- ],
- "libra sursudanesa": [
- "SSP"
- ],
- "south sudanese pound": [
- "SSP"
- ],
- "boli\u0301var venezuelano": [
- "VEF"
- ],
- "shilling ke\u0301nyan": [
- "KES"
- ],
- "dolar suriname\u0301s": [
- "SRD"
- ],
- "bolivares fuertes": [
- "VEF"
- ],
- "francos suizos": [
- "CHF"
- ],
- "botsuanischer pula": [
- "BWP"
- ],
- "nieuwe israe\u0308lische sjekel": [
- "ILS"
- ],
- "bahama dollar": [
- "BSD"
- ],
- "sierra leonischer leone": [
- "SLL"
- ],
- "bob": [
- "BOB"
- ],
- "botswana pula": [
- "BWP"
- ],
- "nepa\u0301li ru\u0301pia": [
- "NPR"
- ],
- "dollaro taiwanese": [
- "TWD"
- ],
- "dolar de belice": [
- "BZD"
- ],
- "sierra leonean leone": [
- "SLL"
- ],
- "franco gibutiano": [
- "DJF"
- ],
- "franco": [
- "RWF",
- "DJF",
- "CDF",
- "XPF"
- ],
- "nouveau dollar de tai\u0308wan": [
- "TWD"
- ],
- "libras esterlinas": [
- "GBP"
- ],
- "paraguayischer guarani\u0301": [
- "PYG"
- ],
- "drachme (antike)": [
- "GRD"
- ],
- "\u20b1": [
- "PHP"
- ],
- "s\u20a3": [
- "CHF"
- ],
- "csehszlova\u0301k korona": [
- "CSK"
- ],
- "lithuanian litas": [
- "LTL"
- ],
- "malagassische ariary": [
- "MGA"
- ],
- "afl.": [
- "AWG"
- ],
- "flori\u0301n hu\u0301ngaro": [
- "HUF"
- ],
- "izraeli u\u0301j se\u0301kel": [
- "ILS"
- ],
- "nigeriaanse naira": [
- "NGN"
- ],
- "kazakhstani tenge": [
- "KZT"
- ],
- "south korean won": [
- "KRW"
- ],
- "dollar de hong kong": [
- "HKD"
- ],
- "su\u0308dkoreanischer won": [
- "KRW"
- ],
- "peso mejicano": [
- "MXN"
- ],
- "won nordcoreano": [
- "KPW"
- ],
- "mark der ddr": [
- "DDM"
- ],
- "tschechische krone": [
- "CZK"
- ],
- "solomon islands dollar": [
- "SBD"
- ],
- "boli\u0301viai boliviano": [
- "BOB"
- ],
- "costaricaanse colon": [
- "CRC"
- ],
- "jemen rial": [
- "YER"
- ],
- "mga": [
- "MGA"
- ],
- "kyd": [
- "KYD"
- ],
- "mauritaanse ouguiya": [
- "MRO"
- ],
- "gambiaanse dalasi": [
- "GMD"
- ],
- "gibraltar pound": [
- "GIP"
- ],
- "tsjechoslowaakse kroon": [
- "CSK"
- ],
- "gourde": [
- "HTG"
- ],
- "corona sueca": [
- "SEK"
- ],
- "colon costaricano": [
- "CRC"
- ],
- "franc congolais": [
- "CDF"
- ],
- "florin arubeno": [
- "AWG"
- ],
- "kaapverdische escudo": [
- "CVE"
- ],
- "venezolaanse bolivar": [
- "VEF"
- ],
- "s/": [
- "PEN"
- ],
- "dolar de nueva zelanda": [
- "NZD"
- ],
- "do\u0301lar suriname\u0301s": [
- "SRD"
- ],
- "francs suisses": [
- "CHF"
- ],
- "s$": [
- "SGD"
- ],
- "italiaanse lire": [
- "ITL"
- ],
- "italiaanse lira": [
- "ITL"
- ],
- "bahreinse dinar": [
- "BHD"
- ],
- "sr": [
- "SAR"
- ],
- "corona": [
- "SEK"
- ],
- "font sterling": [
- "GBP"
- ],
- "peso chileno": [
- "CLP"
- ],
- "tala": [
- "WST"
- ],
- "libra gibraltarena": [
- "GIP"
- ],
- "saoedi arabische riyal": [
- "SAR"
- ],
- "guinese frank": [
- "GNF"
- ],
- "dracma (moderna)": [
- "GRD"
- ],
- "franco de burundi": [
- "BIF"
- ],
- "thaise baht": [
- "THB"
- ],
- "koruna": [
- "CZK"
- ],
- "koruna ceska": [
- "CZK"
- ],
- "dram armeno": [
- "AMD"
- ],
- "st. helena pfund": [
- "SHP"
- ],
- "lek albanese": [
- "ALL"
- ],
- "trinidad en tobagodollar": [
- "TTD"
- ],
- "cuban peso": [
- "CUP"
- ],
- "gtq": [
- "GTQ"
- ],
- "djf": [
- "DJF"
- ],
- "east german mark": [
- "DDM"
- ],
- "yuan cinese": [
- "CNY"
- ],
- "jordaanse dinar": [
- "JOD"
- ],
- "guinean franc": [
- "GNF"
- ],
- "szoma\u0301liai shilling": [
- "SOS"
- ],
- "nok": [
- "NOK"
- ],
- "do\u0301lar de namibia": [
- "NAD"
- ],
- "shilingi": [
- "TZS"
- ],
- "franco yibuti": [
- "DJF"
- ],
- "rufiyah": [
- "MVR"
- ],
- "col$": [
- "COP"
- ],
- "rufiyaa": [
- "MVR"
- ],
- "tt$": [
- "TTD"
- ],
- "cheli\u0301n": [
- "UGX",
- "TZS",
- "SOS"
- ],
- "gryvnia": [
- "UAH"
- ],
- "cfp franc": [
- "XPF"
- ],
- "real brasiliano": [
- "BRL"
- ],
- "cfp frank": [
- "XPF"
- ],
- "taka bengalese": [
- "BDT"
- ],
- "ngwee": [
- "ZMW"
- ],
- "metical mozambicano": [
- "MZN"
- ],
- "lempira honduregna": [
- "HNL"
- ],
- "libra malvinense": [
- "FKP"
- ],
- "nuevo she\u0301quel": [
- "ILS"
- ],
- "rial omanais": [
- "OMR"
- ],
- "arg$": [
- "ARS"
- ],
- "nicaraguanischer co\u0301rdoba": [
- "NIO"
- ],
- "colon costaricien": [
- "CRC"
- ],
- "drtrigonbot:exchange rate data:dkk": [
- "DKK"
- ],
- "goldfranken": [
- "XFO"
- ],
- "roupie indienne": [
- "INR"
- ],
- "afghani": [
- "AFN"
- ],
- "franc cfp": [
- "XPF"
- ],
- "seychelle szigeteki ru\u0301pia": [
- "SCR"
- ],
- "franco ruandes": [
- "RWF"
- ],
- "pesification": [
- "ARS"
- ],
- "dirham des emirats arabes unis": [
+ ],
+ "dircham": "AED",
+ "dirham dos emirados árabes unidos": "AED",
+ "dirame dos emirados árabes unidos": "AED",
+ "dirame emiradense": "AED",
+ "dirame emiradês": "AED",
+ "dirham dos emirados": "AED",
+ "dirham emiradense": "AED",
+ "dirham emiradês": "AED",
+ "dirham arab emirat": "AED",
+ "валюта объединённых арабских эмиратов": "AED",
+ "дирхам": [
+ "MAD",
"AED"
- ],
- "$can": [
- "CAD"
- ],
- "franc cfa": [
- "XAF",
- "XOF"
- ],
- "nepalese roepie": [
- "NPR"
- ],
- "lwei": [
- "AOA"
- ],
- "nuovo peso argentino": [
- "ARS"
- ],
- "indonesian rupiah": [
- "IDR"
- ],
- "guatemalai quetzal": [
- "GTQ"
- ],
- "dolar de singapur": [
- "SGD"
- ],
- "peso de me\u0301xico": [
- "MXN"
- ],
- "surinamese guilder": [
- "SRG"
- ],
- "nigerian naira": [
- "NGN"
- ],
- "peso philippin": [
- "PHP"
- ],
- "mongoolse tugrik": [
- "MNT"
- ],
- "franc pacifique": [
- "XPF"
- ],
- "haitianischer gourde": [
- "HTG"
- ],
- "jemenitische rial": [
- "YER"
- ],
- "do\u0301lar": [
- "USD",
- "FJD"
- ],
- "kolumbianischer peso": [
- "COP"
- ],
- "co\u0301rdoba nicaraguense": [
- "NIO"
- ],
- "dollar ne\u0301oze\u0301landais": [
- "NZD"
- ],
- "meticais": [
- "MZN"
- ],
- "uqiya": [
- "MRO"
- ],
- "grivnia": [
- "UAH"
- ],
- "lakhs": [
- "BDT"
- ],
- "zar": [
- "ZAR"
- ],
- "bahamian dollar": [
- "BSD"
- ],
- "qa\u0308pik": [
- "AZN"
- ],
- "ukp": [
- "GBP"
- ],
- "paraguayaanse guarani\u0301": [
- "PYG"
- ],
- "mauritiusi ru\u0301pia": [
- "MUR"
- ],
- "philippinischer peso": [
- "PHP"
- ],
- "kambodschanischer riel": [
- "KHR"
- ],
- "huf": [
- "HUF"
- ],
- "dollar de singapour": [
- "SGD"
- ],
- "dom$": [
- "DOP"
- ],
- "dinar du kowei\u0308t": [
- "KWD"
- ],
- "australian dollar": [
- "AUD"
- ],
- "namibian dollar": [
- "NAD"
- ],
- "arubaanse gulden": [
- "AWG"
- ],
- "drachme moderne grecque": [
- "GRD"
- ],
- "dinar kowe\u0301itien": [
- "KWD"
- ],
- "nieuwe israelische sheqel": [
- "ILS"
- ],
- "salyn": [
- "THB"
- ],
- "moldova\u0301n lej": [
- "MDL"
- ],
- "nepalesische rupie": [
- "NPR"
- ],
- "marka convertible": [
- "BAM"
- ],
- "bulgarian lev": [
- "BGN"
- ],
- "tengue": [
- "KZT"
- ],
- "currency of somalia": [
- "SOS"
- ],
- "franc franc\u0327ais": [
- "FRF"
- ],
- "do\u0301lar bahames": [
- "BSD"
- ],
- "som de kirguistan": [
- "KGS"
- ],
- "kip laotiano": [
- "LAK"
- ],
- "sar": [
- "SAR"
- ],
- "ngultrum butane\u0301s": [
- "BTN"
- ],
- "birr etiope": [
- "ETB"
- ],
- "fening": [
- "BAM"
- ],
- "dominicaanse peso": [
- "DOP"
- ],
- "taka": [
- "BDT"
- ],
- "\u20b2": [
- "PYG"
- ],
- "do\u0301lar neozelandes": [
- "NZD"
- ],
- "rial ye\u0301me\u0301nite": [
- "YER"
- ],
- "sterlina sud sudanese": [
- "SSP"
- ],
- "dolar de bermuda": [
- "BMD"
- ],
- "dollar taiwanais": [
- "TWD"
- ],
- "afghanis": [
- "AFN"
- ],
- "uyu": [
- "UYU"
- ],
- "cordoba": [
- "NIO"
- ],
- "bahamaanse dollar": [
- "BSD"
- ],
- "\u0111ong": [
- "VND"
- ],
- "baiza": [
- "OMR"
- ],
- "kazachse tenge": [
- "KZT"
- ],
- "vietnamesischer \u0111o\u0302\u0300ng": [
- "VND"
- ],
- "dollar de brunei": [
- "BND"
- ],
- "dollar du belize": [
- "BZD"
- ],
- "jordanian dinar": [
- "JOD"
- ],
- "nuevo sol peruviano": [
- "PEN"
- ],
- "livre turque": [
- "TRY"
- ],
- "fidschi dollar": [
- "FJD"
- ],
- "franco cfa de africa central": [
- "XAF"
- ],
- "kyrgyzstani som": [
- "KGS"
- ],
- "dolar taiwane\u0301s": [
- "TWD"
- ],
- "quetzales": [
- "GTQ"
- ],
- "pa\u0301pua u\u0301j guineai kina": [
- "PGK"
- ],
- "won nord core\u0301en": [
- "KPW"
- ],
- "couronne danoise": [
- "DKK"
- ],
- "nuevo do\u0301lar de taiwa\u0301n": [
- "TWD"
- ],
- "uruguay peso": [
- "UYU"
- ],
- "boli\u0301vares fuertes": [
- "VEF"
- ],
- "rupia de pakistan": [
- "PKR"
- ],
- "lilangeni": [
- "SZL"
- ],
- "rupia dell'india": [
- "INR"
- ],
- "libra esterlina": [
- "GBP"
- ],
- "koruna ceska\u0301": [
- "CZK"
- ],
- "\u20b3": [
- "ARA"
- ],
- "co\u0301rdoba nicaragu\u0308ense": [
- "NIO"
- ],
- "hongaarse forint": [
- "HUF"
- ],
- "loti lesothan": [
- "LSL"
- ],
- "baht thailandese": [
- "THB"
- ],
- "real brasileno": [
- "BRL"
- ],
- "katari ria\u0301l": [
- "QAR"
- ],
- "uzbekistani som": [
- "UZS"
- ],
- "armenischer dram": [
+ ],
+ "уае дирмах": "AED",
+ "அமீரக திர்கம்": "AED",
+ "அமீரக திர்ஹம்": "AED",
+ "யூஏஈ திராம்": "AED",
+ "阿聯酋迪爾汗": "AED",
+ "迪拉姆": "AED",
+ "迪爾汗": "AED",
+ "阿聯酋迪拉姆": "AED",
+ "؋": "AFN",
+ "Afs": "AFN",
+ "afghání": "AFN",
+ "afn": "AFN",
+ "af": "AFN",
+ "afg": "AFN",
+ "afgaani": "AFN",
+ "afganistani afgaan": "AFN",
+ "uus afgaani": "AFN",
+ "افغانی افغانستان": "AFN",
+ "afgani afgán": "AFN",
+ "afghani afgano": "AFN",
+ "afghanis": "AFN",
+ "afegani": "AFN",
+ "novo afegani": "AFN",
+ "afgan afgan": "AFN",
+ "афганистанский афгани": "AFN",
+ "афганский афгани": "AFN",
+ "валюта афганистана": "AFN",
+ "afganistanski afgan": "AFN",
+ "авганистански афган": "AFN",
+ "ஆப்கான் ஆப்கானி": "AFN",
+ "阿富汗尼": "AFN",
+ "L": [
+ "MDL",
+ "HNL",
+ "ALL"
+ ],
+ "лек": "ALL",
+ "qindarka": "ALL",
+ "leko": "ALL",
+ "all": "ALL",
+ "lek albanes": "ALL",
+ "albaania lek": "ALL",
+ "lek albanais": "ALL",
+ "アルバニアの通貨": "ALL",
+ "アルバニア・レク": "ALL",
+ "lekas": "ALL",
+ "lekë": "ALL",
+ "lek albanês": "ALL",
+ "lek novo": "ALL",
+ "lek albanez": "ALL",
+ "lekă albaneză": "ALL",
+ "валюта албании": "ALL",
+ "валютный лек": "ALL",
+ "arnavutluk leki": "ALL",
+ "درام": "AMD",
+ "֏": "AMD",
+ "dram armenia": "AMD",
+ "armensk dram": "AMD",
+ "amd": "AMD",
+ "armeenia drahm": "AMD",
+ "armeenia dram": "AMD",
+ "dramm": "AMD",
+ "dram arménien": "AMD",
+ "armenijski dram": "AMD",
+ "dramas": "AMD",
+ "dram armeński": "AMD",
+ "dram karabachski": "AMD",
+ "dram armênio": "AMD",
+ "dram da arménia": "AMD",
+ "dram da armênia": "AMD",
+ "drame arménio": "AMD",
+ "dram armean": "AMD",
+ "валюта армении": "AMD",
+ "драм": [
+ "NKD",
"AMD"
- ],
- "jorda\u0301n dina\u0301r": [
- "JOD"
- ],
- "bulgaarse lev": [
- "BGN"
- ],
- "hondurasi lempira": [
- "HNL"
- ],
- "do\u0302\u0300ng vietnamita": [
- "VND"
- ],
- "gel": [
- "GEL"
- ],
- "trinidad en tobago dollar": [
- "TTD"
- ],
- "rupia de maldivas": [
- "MVR"
- ],
- "do\u0301lar liberiano": [
- "LRD"
- ],
- "vanuatuaanse vatu": [
- "VUV"
- ],
- "libe\u0301riai dolla\u0301r": [
- "LRD"
- ],
- "colon costarricense": [
- "CRC"
- ],
- "dobra di sa\u0303o tome\u0301 e pri\u0301ncipe": [
- "STD"
- ],
- "croatian kuna": [
- "HRK"
- ],
- "nouveau sol": [
- "PEN"
- ],
- "wo\u0306n norcoreano": [
- "KPW"
- ],
- "de\u0301l afrikai rand": [
- "ZAR"
- ],
- "dolar bermuden\u0303o": [
- "BMD"
- ],
- "tu\u0308rkische lira": [
- "TRY"
- ],
- "rmb": [
- "CNY"
- ],
- "ringgit malese": [
- "MYR"
- ],
- "marco de la republica democra\u0301tica alemana": [
- "DDM"
- ],
- "j$": [
- "JMD"
- ],
- "lire turque": [
- "TRY"
- ],
- "tunisian dinar": [
- "TND"
- ],
- "falkland pfund": [
- "FKP"
- ],
- "pakistani rupee": [
- "PKR"
- ],
- "central african cfa franc": [
- "XAF"
- ],
- "rouble": [
- "SUR"
- ],
- "ytl": [
- "TRY"
- ],
- "trinidad e\u0301s tobago\u0301 i dolla\u0301r": [
- "TTD"
- ],
- "orosz rubel": [
- "RUB"
- ],
- "dollar de surinam": [
- "SRD"
- ],
- "franco delle comore": [
- "KMF"
- ],
- "so\u02bbm": [
- "UZS"
- ],
- "franse franc": [
- "FRF"
- ],
- "kuna croata": [
- "HRK"
- ],
- "droits de tirage spe\u0301ciaux": [
- "XDR"
- ],
- "kuna croate": [
- "HRK"
- ],
- "dinar de kuwait": [
- "KWD"
- ],
- "dschibuti franc": [
- "DJF"
- ],
- "guinea franc": [
- "GNF"
- ],
- "kwacha zambese": [
- "ZMW"
- ],
- "guatemalteekse quetzal": [
- "GTQ"
- ],
- "chelin keniano": [
- "KES"
- ],
- "livre libanaise": [
- "LBP"
- ],
- "dkk": [
- "DKK"
- ],
- "ouguiya della mauritana": [
- "MRO"
- ],
- "kaaimaneilandse dollar": [
- "KYD"
- ],
- "drtrigonbot:exchange rate data:ltl": [
- "LTL"
- ],
- "comorese frank": [
- "KMF"
- ],
- "us $": [
- "USD"
- ],
- "lats lettone": [
- "LVL"
- ],
- "griwna": [
- "UAH"
- ],
- "qatari riyal": [
- "QAR"
- ],
- "colon": [
- "CRC"
- ],
- "franc germinal": [
- "FRF",
- "XFO"
- ],
- "roupie ne\u0301palaise": [
- "NPR"
- ],
- "dollar jamai\u0308cain": [
- "JMD"
- ],
- "mark": [
- "DDM"
- ],
- "indische rupie": [
- "INR"
- ],
- "angolese kwanza": [
- "AOA"
- ],
- "dollar de fidji": [
- "FJD"
- ],
- "khr": [
- "KHR"
- ],
- "krona": [
- "SEK"
- ],
- "dollaro di trinidad e tobago": [
- "TTD"
- ],
- "krone": [
- "DKK"
- ],
- "szoma\u0301li shilling": [
- "SOS"
- ],
- "rupia indiana": [
- "INR"
- ],
- "bolivar fuerte": [
- "VEF"
- ],
- "euro\u0301": [
- "EUR"
- ],
- "rupia de indonesia": [
- "IDR"
- ],
- "libra gibraltaren\u0303a": [
- "GIP"
- ],
- "indonesische rupiah": [
- "IDR"
- ],
- "panamaischer balboa": [
- "PAB"
- ],
- "ethiopian birr": [
- "ETB"
- ],
- "kubai konvertibilis peso": [
- "CUC"
- ],
- "clp": [
- "CLP"
- ],
- "florin d'aruba": [
- "AWG"
- ],
- "dolar bahames": [
- "BSD"
- ],
- "ouguiya mauritanien": [
- "MRO"
- ],
- "salomonen dollar": [
- "SBD"
- ],
- "chavito": [
- "CUC"
- ],
- "kanadai dolla\u0301r": [
- "CAD"
- ],
- "britische pfund": [
- "GBP"
- ],
- "singaporese dollar": [
- "SGD"
- ],
- "chinese renminbi": [
- "CNY"
- ],
- "saudische riyal": [
- "SAR"
- ],
- "neuer taiwan dollar": [
- "TWD"
- ],
- "do\u0301lar taiwanes": [
- "TWD"
- ],
- "keniaanse shilling": [
- "KES"
- ],
- "do\u0301lar de bahamas": [
- "BSD"
- ],
- "bhutanese ngultrum": [
- "BTN"
- ],
- "corona noruega": [
- "NOK"
- ],
- "dollaro giamaicano": [
- "JMD"
- ],
- "afgani afgano": [
- "AFN"
- ],
- "pab": [
- "PAB"
- ],
- "aruba florin": [
- "AWG"
- ],
- "tajikistani ruble": [
- "TJR"
- ],
- "franzo\u0308sischer franc": [
- "FRF"
- ],
- "lira italiana": [
- "ITL"
- ],
- "$ can": [
- "CAD"
- ],
- "marco de la rda": [
- "DDM"
- ],
- "ostkaribische wa\u0308hrungsunion": [
- "XCD"
- ],
- "naf": [
+ ],
+ "ஆர்மீனிய டிராம்": "AMD",
+ "ermenistan dramı": "AMD",
+ "CMg": "ANG",
+ "fiorino caraibico": "ANG",
+ "加勒比盾": "ANG",
+ "ƒ": [
+ "AWG",
"ANG"
- ],
- "drtrigonbot:exchange rate data:jpy": [
- "JPY"
- ],
- "afghaanse afghani": [
- "AFN"
- ],
- "peruviaanse sol": [
- "PEN"
- ],
- "livre de sainte he\u0301le\u0300ne": [
- "SHP"
- ],
- "sa\u0303o tome\u0301 and pri\u0301ncipe dobra": [
- "STD"
- ],
- "co\u0301rdoba oro": [
- "NIO"
- ],
- "moneda nacional": [
- "CUP"
- ],
- "macanese pataca": [
- "MOP"
- ],
- "couronne tcheque": [
- "CZK"
- ],
- "chelin ugande\u0301s": [
- "UGX"
- ],
- "peso cubano convertible": [
- "CUC"
- ],
- "eritreai nakfa": [
- "ERN"
- ],
- "ira\u0301ni ria\u0301l": [
- "IRR"
- ],
- "dollar canadien": [
- "CAD"
- ],
- "litouwse litas": [
- "LTL"
- ],
- "venezuelan boli\u0301var": [
- "VEF"
- ],
- "lib$": [
- "LRD"
- ],
- "cheli\u0301n keniata": [
- "KES"
- ],
- "riyal saoudien": [
- "SAR"
- ],
- "usbekistan sum": [
- "UZS"
- ],
- "chelin keniata": [
- "KES"
- ],
- "peso cubano convertibile": [
- "CUC"
- ],
- "euros": [
- "EUR"
- ],
- "dollar des bermudes": [
- "BMD"
- ],
- "liberianischer dollar": [
- "LRD"
- ],
- "peso convertibile": [
- "CUC"
- ],
- "grd": [
- "GRD"
- ],
- "tschechoslowakische krone": [
- "CSK"
- ],
- "tongan pa'anga": [
- "TOP"
- ],
- "szamoai tala": [
- "WST"
- ],
- "namibischer dollar": [
- "NAD"
- ],
- "manat azerbai\u0308djanais": [
- "AZN"
- ],
- "real": [
- "BRL"
- ],
- "tanzanian shilingi": [
- "TZS"
- ],
- "dollar liberien": [
- "LRD"
- ],
- "do\u0301lar neocelandes": [
- "NZD"
- ],
- "do\u0301lar taiwane\u0301s": [
- "TWD"
- ],
- "dinaro del bahrein": [
- "BHD"
- ],
- "florin hu\u0301ngaro": [
- "HUF"
- ],
- "zambian kwacha": [
- "ZMW"
- ],
- "dracma greca": [
- "GRD"
- ],
- "italian lira": [
- "ITL"
- ],
- "antilliaanse gulden": [
+ ],
+ "NAƒ": "ANG",
+ "ang": "ANG",
+ "gulden": "ANG",
+ "naf": "ANG",
+ "naƒ": "ANG",
+ "f": [
+ "XPF",
"ANG"
- ],
- "som uzbeco": [
- "UZS"
- ],
- "yuan renminbi": [
- "CNY"
- ],
- "tenge kazajo": [
- "KZT"
- ],
- "dolar trinitense": [
- "TTD"
- ],
- "dollaro bahamense": [
- "BSD"
- ],
- "yeni kurus\u0327": [
- "TRY"
- ],
- "brunei dollar": [
- "BND"
- ],
- "lek albanes": [
- "ALL"
- ],
- "yua\u0301n chino": [
- "CNY"
- ],
- "\u20adn": [
- "LAK"
- ],
- "som kirgui\u0301s": [
- "KGS"
- ],
- "britse pond": [
- "GBP"
- ],
- "\u20b4": [
- "UAH"
- ],
- "nuevo dolar de taiwa\u0301n": [
- "TWD"
- ],
- "dominican peso": [
- "DOP"
- ],
- "mosambikanischer escudo": [
- "MZE"
- ],
- "do\u0301lar de las islas caima\u0301n": [
- "KYD"
- ],
- "gibraltar pfund": [
- "GIP"
- ],
- "lats leto\u0301n": [
- "LVL"
- ],
- "kanadische dollar": [
- "CAD"
- ],
- "srd": [
- "SRD"
- ],
- "sre": [
- "SCR"
- ],
- "comore i frank": [
- "KMF"
- ],
- "peso colombiano": [
- "COP"
- ],
- "leke\u0308": [
- "ALL"
- ],
- "\u0433\u0440\u0438\u0432\u043d\u044f": [
- "UAH"
- ],
- "alu chip": [
- "DDM"
- ],
- "kanadischer dollar": [
- "CAD"
- ],
- "suriname dollar": [
- "SRD"
- ],
- "corona ceca": [
- "CZK"
- ],
- "serbischer dinar": [
- "RSD"
- ],
- "dollar de brune\u0301i": [
- "BND"
- ],
- "denar": [
- "MKD"
- ],
- "dinar macedonio": [
- "MKD"
- ],
- "lira maltese": [
- "MTL"
- ],
- "frans geld": [
- "FRF"
- ],
- "naira nigeriana": [
- "NGN"
- ],
- "nuevo do\u0301lar taiwanes": [
- "TWD"
- ],
- "dollaro neozelandese": [
- "NZD"
- ],
- "dinar bahrei\u0308nien": [
- "BHD"
- ],
- "zweedse kroon": [
- "SEK"
- ],
- "swedish krona": [
- "SEK"
- ],
- "new israeli shekel": [
- "ILS"
- ],
- "leu moldave": [
- "MDL"
- ],
- "rupia de nepal": [
- "NPR"
- ],
- "leu moldavo": [
- "MDL"
- ],
- "fidzsi dolla\u0301r": [
- "FJD"
- ],
- "pula": [
- "BWP"
- ],
- "drachmai": [
- "GRD"
- ],
- "marco bosnio": [
- "BAM"
- ],
- "roupie seychelloise": [
- "SCR"
- ],
- "u\u0308zbe\u0301g szom": [
- "UZS"
- ],
- "tanzanian schilling": [
- "TZS"
- ],
- "gib\u00a3": [
- "GIP"
- ],
- "lett lat": [
- "LVL"
- ],
- "kc\u030cs": [
- "CSK"
- ],
- "mark der deutschen demokratischen republik": [
- "DDM"
- ],
- "yeni tu\u0308rk liras\u0131": [
- "TRY"
- ],
- "\u3012": [
- "KZT"
- ],
- "bosnische convertibele mark": [
- "BAM"
- ],
- "libra siria": [
- "SYP"
- ],
- "peso oro": [
- "DOP"
- ],
- "rupia indonesia": [
- "IDR"
- ],
- "pakistaanse rupee": [
- "PKR"
- ],
- "riel cambogiano": [
- "KHR"
- ],
- "haitian gourde": [
- "HTG"
- ],
- "tschechische wa\u0308hrung": [
- "CZK"
- ],
- "bosnia and herzegovina convertible mark": [
- "BAM"
- ],
- "francs franc\u0327ais": [
- "FRF"
- ],
- "griechische drachme": [
- "GRD"
- ],
- "nuovo sol": [
- "PEN"
- ],
- "swiss franc": [
- "CHF"
- ],
- "swiss frank": [
- "CHF"
- ],
- "somoni tayiko": [
- "TJS"
- ],
- "rial yemeni\u0301": [
- "YER"
- ],
- "nueva lira turca": [
- "TRY"
- ],
- "engelse pond": [
- "GBP"
- ],
- "chelin tanzano": [
- "TZS"
- ],
- "peso de repu\u0301blica dominicana": [
- "DOP"
- ],
- "dalasi gambese": [
- "GMD"
- ],
- "nicaraguaanse co\u0301rdoba": [
- "NIO"
- ],
- "lira libanese": [
- "LBP"
- ],
- "baht tailandes": [
- "THB"
- ],
- "khoum": [
- "MRO"
- ],
- "lek albane\u0301s": [
- "ALL"
- ],
- "botswanischer pula": [
- "BWP"
- ],
- "dinar mace\u0301donien": [
- "MKD"
- ],
+ ],
+ "florin antillano neerlandes": "ANG",
+ "גילדן אנטילי": "ANG",
+ "florim das antilhas holandesas": "ANG",
+ "Kz": "AOA",
+ "kwanza reajustado": "AOA",
+ "lwei": "AOA",
+ "novo kwanza": "AOA",
+ "κβάνζα": "AOA",
+ "aoa": "AOA",
+ "kz": "AOA",
+ "קואנזה": "AOA",
+ "kwanza angolana": "AOA",
+ "アンゴラ・クワンザ": "AOA",
+ "валюта анголы": "AOA",
+ "восстановленная кванза": "AOA",
+ "кванза": "AOA",
+ "кванза ангольская": "AOA",
+ "кванза реюстадо": "AOA",
+ "новая кванза": "AOA",
+ "скорректированная кванза": "AOA",
+ "анголска нова кванза": "AOA",
+ "kwansa": "AOA",
+ "அங்கோலா குவான்சா": "AOA",
+ "angola kwanzası": "AOA",
+ "安哥拉寬扎": "AOA",
+ "寬扎": "AOA",
+ "$": [
+ "XCD",
+ "WST",
+ "USD",
+ "TWD",
+ "TVD",
+ "TTD",
+ "SRD",
+ "SGD",
+ "SBD",
+ "PND",
+ "NZD",
+ "NUD",
+ "NAD",
+ "MXN",
+ "MOP",
+ "LRD",
+ "KYD",
+ "KID",
+ "JMD",
+ "HKD",
+ "FJD",
+ "CUP",
+ "COP",
+ "CLP",
+ "CKD",
+ "CAD",
+ "BZD",
+ "BSD",
+ "BRL",
+ "BND",
+ "BMD",
+ "BBD",
+ "AUD",
+ "ARS",
+ "ARG"
+ ],
+ "o$s": "ARG",
+ "盖金比索": "ARG",
+ "ars": "ARS",
+ "peso d'argentina": "ARS",
+ "peso de l'argentina": "ARS",
+ "pesos argentins": "ARS",
+ "monedas de 1 2 5 10 20 50 y billetes 1 2 5 10 20 50 100 pesos": "ARS",
+ "arg$": "ARS",
+ "peso ley": "ARS",
+ "peso moneda nacional": "ARS",
+ "pesos argentinos": "ARS",
+ "nuevo peso argentino": "ARS",
+ "peso convertible": "ARS",
+ "peso convertible argentino": "ARS",
+ "peso de argentina": "ARS",
+ "peso dolar": "ARS",
+ "peso dólar": "ARS",
+ "argentinar peso": "ARS",
+ "nuevo peso": [
+ "UYU",
+ "ARS"
+ ],
+ "pesification": "ARS",
+ "פזו ארגנטינאי": "ARS",
+ "פסו ארגנטיני": "ARS",
+ "argentinski peso": "ARS",
+ "nuovo peso argentino": "ARS",
+ "peso da argentina": "ARS",
+ "валюта аргентины": "ARS",
+ "песо": [
+ "UYU",
+ "PHP",
+ "MXN",
+ "DOP",
+ "CUP",
+ "COP",
+ "CLP",
+ "ARS"
+ ],
+ "аргентински песо": "ARS",
+ "аргентинське песо": "ARS",
+ "ars$": "ARS",
+ "阿根廷披索": "ARS",
+ "阿根廷皮索": "ARS",
+ "A$": "AUD",
+ "a$": "AUD",
+ "au$": "AUD",
+ "aud": "AUD",
+ "aussie dollar": "AUD",
"dollar": [
- "USD"
- ],
- "dolar bahame\u0301s": [
- "BSD"
- ],
- "\u20ac": [
- "EUR"
- ],
- "dollar singapourien": [
- "SGD"
- ],
- "israe\u0308lische sjekel": [
- "ILS"
- ],
- "wo\u0306n surcoreano": [
- "KRW"
- ],
- "ukra\u0301n hrivnya": [
- "UAH"
- ],
- "dinar algerien": [
- "DZD"
- ],
- "cedi ghanese": [
- "GHS"
- ],
- "cfa franc bceao": [
- "XOF"
- ],
- "scr": [
- "SCR"
- ],
- "\u0442\u04e9\u0433\u0440\u04e9\u0433": [
- "MNT"
- ],
- "izlandi korona": [
- "ISK"
- ],
- "englisches pfund": [
- "GBP"
- ],
- "ws$": [
- "WST"
- ],
- "wikipedia:raadsel/netties20070405": [
- "GRD"
- ],
- "dolar neozelande\u0301s": [
- "NZD"
- ],
- "samoanischer tala": [
- "WST"
- ],
- "syrisch pond": [
- "SYP"
- ],
- "caymaneilandse dollar": [
- "KYD"
- ],
- "cordoba oro": [
- "NIO"
- ],
- "kina papuana": [
- "PGK"
- ],
- "szent ilona i font": [
- "SHP"
- ],
- "sudanese pound": [
- "SDG"
- ],
- "gourde haitiano": [
- "HTG"
- ],
- "dollar hongkongais": [
- "HKD"
- ],
- "haiti gourde": [
- "HTG"
- ],
- "eyrir": [
- "ISK"
- ],
- "australes": [
- "ARA"
- ],
- "livres turques": [
- "TRY"
- ],
- "dollar barbadien": [
- "BBD"
- ],
- "congolese franc": [
- "CDF"
- ],
- "wst": [
- "WST"
- ],
- "t$": [
- "TOP"
- ],
- "congolese frank": [
- "CDF"
- ],
- "nafka": [
- "ERN"
- ],
- "dansk krone": [
- "DKK"
- ],
- "jordanischer dinar": [
- "JOD"
- ],
- "dolar de bahamas": [
- "BSD"
- ],
- "brasilianischer real": [
- "BRL"
- ],
- "nz$": [
- "NZD"
- ],
- "leone sierra le\u0301onais": [
- "SLL"
- ],
- "tunesische dinar": [
- "TND"
- ],
- "do\u0301lar namibio": [
- "NAD"
- ],
- "$ca": [
- "CAD"
- ],
- "bengalese taka": [
- "BDT"
- ],
- "dollar fidjien": [
- "FJD"
- ],
- "ungarischer forint": [
- "HUF"
- ],
- "dinar serbe": [
- "RSD"
- ],
- "do\u0301lar de trinidad y tobago": [
- "TTD"
- ],
- "belize dollar": [
- "BZD"
- ],
- "sum": [
- "UZS"
- ],
- "franc rwandais": [
- "RWF"
- ],
- "dinar jordanien": [
- "JOD"
- ],
- "moldauischer leu": [
- "MDL"
- ],
- "dolar de las islas salomon": [
- "SBD"
- ],
- "lire italienne": [
- "ITL"
- ],
- "ang": [
- "ANG"
- ],
- "\u0e3f": [
- "THB"
- ],
- "sucre": [
- "XSU"
- ],
- "kzt": [
- "KZT"
- ],
- "kronor": [
- "SEK"
- ],
- "somalische shilling": [
- "SOS"
- ],
- "dollaro namibiano": [
- "NAD"
- ],
- "omanischer rial": [
- "OMR"
- ],
- "do\u0301lar bermuden\u0303o": [
- "BMD"
- ],
- "marka": [
- "BAM"
- ],
- "marco convertibile": [
- "BAM"
- ],
- "rublo ruso": [
- "RUB"
- ],
- "uae dirham": [
- "AED"
- ],
- "vae dirham": [
- "AED"
- ],
- "ngultrum del bhutan": [
- "BTN"
- ],
- "samoaanse tala": [
- "WST"
- ],
- "maltesische lira": [
- "MTL"
- ],
- "couronne norvegienne": [
- "NOK"
- ],
- "franc burundais": [
- "BIF"
- ],
- "flori\u0301n arubeno": [
- "AWG"
- ],
- "georgian kupon lari": [
- "GEL"
- ],
- "dollar de trinidad et tobago": [
- "TTD"
- ],
- "t\u0323a\u0304ka\u0304": [
- "BDT"
- ],
- "tonga pa\u02bbanga": [
- "TOP"
- ],
- "dinar kuwaiti": [
- "KWD"
- ],
- "kenia schilling": [
- "KES"
- ],
- "\u20a1": [
- "CRC"
- ],
- "guarani paraguayen": [
- "PYG"
- ],
- "lats letton": [
- "LVL"
- ],
- "quetzal guate\u0301malte\u0300que": [
- "GTQ"
- ],
- "netherlands antillean guilder": [
- "ANG"
- ],
- "balboa panamen\u0303o": [
- "PAB"
- ],
- "dolar de brune\u0301i": [
- "BND"
- ],
- "sheqel": [
- "ILS"
- ],
- "escudo capoverdiano": [
- "CVE"
- ],
- "boli\u0301var fuerte": [
- "VEF"
- ],
- "franco della guinea": [
- "GNF"
- ],
- "boli\u0301var": [
- "VEF"
- ],
- "lilangeni swazilandais": [
- "SZL"
- ],
- "dracma griega moderna": [
- "GRD"
- ],
- "tenge kazako": [
- "KZT"
- ],
- "tenge kazakh": [
- "KZT"
- ],
- "mexican centavo": [
- "MXN"
- ],
- "peso uruguaiano": [
- "UYU"
- ],
- "franco cfp": [
- "XPF"
- ],
- "so'm": [
- "UZS"
- ],
- "drtrigonbot:exchange rate data:chf": [
- "CHF"
- ],
- "konvertible mark": [
- "BAM"
- ],
- "nouveau manat aze\u0301ri": [
- "AZN"
- ],
- "nordjemenitischer rial": [
- "YER"
- ],
- "bolivares": [
- "VEF"
- ],
- "\u043b\u0435\u0432": [
- "BGN"
- ],
- "deg": [
- "XDR"
- ],
- "guarani paraguaiano": [
- "PYG"
- ],
- "scellino keniano": [
- "KES"
- ],
- "f$": [
- "FJD"
- ],
- "couronne islandaise": [
- "ISK"
- ],
- "dollar de la barbade": [
- "BBD"
- ],
- "macause pataca": [
- "MOP"
- ],
- "do\u0301lar bermudeno": [
- "BMD"
- ],
- "isk": [
- "ISK"
- ],
- "west african cfa franc": [
- "XOF"
- ],
- "armeense dram": [
- "AMD"
- ],
- "renminbi yuan": [
- "CNY"
- ],
- "aussie dollar": [
+ "USD",
+ "SGD",
+ "NZD",
+ "HKD",
+ "FJD",
+ "CAD",
"AUD"
- ],
- "franco francese": [
- "FRF"
- ],
- "tetradrachmon": [
- "GRD"
- ],
- "dinar irakien": [
- "IQD"
- ],
- "tongan pa\u02bbanga": [
- "TOP"
- ],
- "fr": [
- "FRF"
- ],
- "ft": [
- "HUF"
- ],
- "nuevo sol": [
- "PEN"
- ],
- "peso convertible argentino": [
- "ARS"
- ],
- "ff": [
- "FRF"
- ],
- "dollar de taiwan": [
- "TWD"
- ],
- "azerbaijani manat": [
+ ],
+ "dollars": [
+ "USD",
+ "SGD",
+ "NZD",
+ "HKD",
+ "CAD",
+ "AUD"
+ ],
+ "aŭ$": "AUD",
+ "dolar australiano": "AUD",
+ "валюта австралии": "AUD",
+ "валюта кирибати": "AUD",
+ "валюта науру": "AUD",
+ "валюта норфолка": "AUD",
+ "валюта тувалу": "AUD",
+ "доллар": [
+ "WST",
+ "USD",
+ "TVD",
+ "TTD",
+ "SRD",
+ "SBD",
+ "PND",
+ "NZD",
+ "NUD",
+ "NAD",
+ "KYD",
+ "KID",
+ "JMD",
+ "HKD",
+ "FJD",
+ "CKD",
+ "CAD",
+ "BZD",
+ "BSD",
+ "AUD"
+ ],
+ "доллар австралии": "AUD",
+ "அவுத்திரேலிய வெள்ளி": "AUD",
+ "அவுத்திரேலிய டொலர்": "AUD",
+ "ஆத்திரேலிய டொலர்": "AUD",
+ "ஆத்திரேலிய வெள்ளி": "AUD",
+ "ஆஸ்திரேலிய டொலர்": "AUD",
+ "AU$": "AUD",
+ "AUD": "AUD",
+ "florí d’aruba": "AWG",
+ "arubský gulden": "AWG",
+ "afl.": "AWG",
+ "aruba gulden": "AWG",
+ "awg": "AWG",
+ "florin arubeno": "AWG",
+ "florin arubeño": "AWG",
+ "florín arubeno": "AWG",
+ "aruba kulden": "AWG",
+ "florin arubain": "AWG",
+ "florin d'aruba": "AWG",
+ "florin d’aruba": "AWG",
+ "פלורין ארובה": "AWG",
+ "arupski gulden": "AWG",
+ "fiorino di aruba": "AWG",
+ "アルバフロリン": "AWG",
+ "アルバ・フローリン": "AWG",
+ "arubos guldenas": "AWG",
+ "arubaanse florijn": "AWG",
+ "arubaanse gulden": "AWG",
+ "florim de aruba": "AWG",
+ "арубанский гульден": "AWG",
+ "валюта арубы": "AWG",
+ "арупски флорин": "AWG",
+ "arubas florin": "AWG",
+ "அரூபா ஃபுளோரின்": "AWG",
+ "арубський флорін": "AWG",
+ "مانات": "AZN",
+ "₼": "AZN",
+ "manat d'azerbaidjan": "AZN",
+ "manat de l'azerbaidjan": "AZN",
+ "manat àzeri": "AZN",
+ "ruble azerbaidjanès": "AZN",
+ "manat aserbaijan": "AZN",
+ "aserbajdsjansk manat": "AZN",
+ "azn": "AZN",
+ "aserbaidschanischer manat": "AZN",
+ "gepik": "AZN",
+ "qäpik": "AZN",
+ "qəpik": "AZN",
+ "manat azeri": "AZN",
+ "manat azerí": "AZN",
+ "manat azerbaijandar": "AZN",
+ "منات جمهوری آذربایجان": "AZN",
+ "منات جمهوری اذربایجان": "AZN",
+ "manat azéri": "AZN",
+ "nouveau manat azéri": "AZN",
+ "manat azarí": "AZN",
+ "manat de acerbaixán": "AZN",
+ "azerbejdžanski manat": "AZN",
+ "azm": "AZN",
+ "アゼルバイジャン・ルーブル": "AZN",
+ "manat azerski": "AZN",
+ "manat azerbaijano": "AZN",
+ "manat azerbaijanês": "AZN",
+ "manat do azerbaijão": "AZN",
+ "novo manat": "AZN",
+ "aym": "AZN",
+ "валюта азербайджана": "AZN",
+ "манат азербайджанский": "AZN",
+ "манат": [
+ "TMT",
"AZN"
- ],
- "dirham": [
- "AED"
- ],
- "antillen gulden": [
- "ANG"
- ],
- "lari ge\u0301orgien": [
- "GEL"
- ],
- "fijian dollar": [
- "FJD"
- ],
- "mark convertible de bosnie herze\u0301govine": [
- "BAM"
- ],
- "nuovo siclo israeliano": [
- "ILS"
- ],
- "bhuta\u0301ni ngultrum": [
- "BTN"
- ],
- "guarani\u0301 paraguayen": [
- "PYG"
- ],
- "jamaican dollar": [
- "JMD"
- ],
- "rupia": [
- "LKR",
- "SCR",
- "INR",
- "NPR"
- ],
- "dinar libyen": [
- "LYD"
- ],
- "dinaro giordano": [
- "JOD"
- ],
- "paraguayan guarani\u0301": [
- "PYG"
- ],
- "maldivische rufiyaa": [
- "MVR"
- ],
- "marokkanischer dirham": [
- "MAD"
- ],
- "franco pacifico": [
- "XPF"
- ],
- "lats": [
- "LVL"
- ],
- "forinto": [
- "HUF"
- ],
- "dollar be\u0301lizien": [
- "BZD"
- ],
- "forints": [
- "HUF"
- ],
- "do\u0301lar bahameno": [
- "BSD"
- ],
- "hrywen": [
- "UAH"
- ],
- "roupie pakistanaise": [
- "PKR"
- ],
- "rwf": [
- "RWF"
- ],
- "iraanse rial": [
- "IRR"
- ],
- "chetrum": [
- "BTN"
- ],
- "do\u0301lar de las bahamas": [
- "BSD"
- ],
- "lesothischer loti": [
- "LSL"
- ],
- "djiboutian franc": [
- "DJF"
- ],
- "soviet ruble": [
- "SUR"
- ],
- "madagascan ariary": [
- "MGA"
- ],
- "hryvna": [
- "UAH"
- ],
- "komoren franc": [
- "KMF"
- ],
- "sterlina britannica": [
- "GBP"
- ],
- "sonderziehungsrecht": [
- "XDR"
- ],
- "jamaicai dolla\u0301r": [
- "JMD"
- ],
- "sierra leone i leone": [
- "SLL"
- ],
- "laoszi kip": [
- "LAK"
- ],
- "ma\u0301ltai li\u0301ra": [
- "MTL"
- ],
- "dolar de fiji": [
- "FJD"
- ],
- "dirham de los emiratos a\u0301rabes unidos": [
- "AED"
- ],
- "dollaro della namibia": [
- "NAD"
- ],
- "vn\u0111": [
- "VND"
- ],
- "dollar des carai\u0308bes orientales": [
- "XCD"
- ],
- "kelet karibi dolla\u0301r": [
- "XCD"
- ],
- "dinar argelino": [
- "DZD"
- ],
- "dolar de barbados": [
+ ],
+ "அசர்பைச்சானிய மனாத்து": "AZN",
+ "azerbaycan yeni manatı": "AZN",
+ "yeni manat": "AZN",
+ "亞賽拜然馬納特": "AZN",
+ "A.M.": "AZN",
+ "KM": "BAM",
+ "bosenská konvertibilní marka": "BAM",
+ "mark cyfnewidiol": "BAM",
+ "bosnisch herzegowinische konvertible mark": "BAM",
+ "fening": "BAM",
+ "feninga": "BAM",
+ "μετατρέψιμο μάρκο": "BAM",
+ "convertible mark": "BAM",
+ "bam": "BAM",
+ "km": "BAM",
+ "marka convertible": "BAM",
+ "marco bosnio": "BAM",
+ "mark convertible": "BAM",
+ "mark convertible bosniaque": "BAM",
+ "marka": "BAM",
+ "המרק הסחיר": "BAM",
+ "bosna i hercegovina konvertibilna marka": "BAM",
+ "mark convertibile de bosnia herzegovina": "BAM",
+ "marco convertibile": "BAM",
+ "ボスニア・ヘルツェゴビナ・マルカ": "BAM",
+ "ボスニア・マルカ": "BAM",
+ "bosnijos ir hercegovinos markė": "BAM",
+ "bosnische convertibele mark": "BAM",
+ "bosnische konvertibilna marka": "BAM",
+ "marka de bòsnia e ercegovina": "BAM",
+ "marka konwertybilna": "BAM",
+ "marka transferowa": "BAM",
+ "marco convertível": "BAM",
+ "marca convertibilă a bosniei şi herţegovinei": "BAM",
+ "marca convertibilă a bosniei și herțegovinei": "BAM",
+ "marca bosniacă convertibilă": "BAM",
+ "marcă convertibilă a bosniei şi herţegovinei": "BAM",
+ "marcă convertibilă a bosniei și herțegovinei": "BAM",
+ "боснийская конвертируемая марка": "BAM",
+ "боснийская марка": "BAM",
+ "валюта боснии и герцеговины": "BAM",
+ "конвертируемая марка боснии и герцеговины": "BAM",
+ "марка": "BAM",
+ "konvertibilna marka bosne in hercegovine": "BAM",
+ "босанскохерцеговачка конвертибилна марка": "BAM",
+ "км": "BAM",
+ "конвертабилна марка": "BAM",
+ "konvertibel mark": "BAM",
+ "konvertibla mark": "BAM",
+ "கன்வர்டிபிள் மார்க்கு": "BAM",
+ "பொசுனியா எர்செகோவினா கன்வர்டிபிள் மார்க்": "BAM",
+ "பொஸ்னியா ஹெர்செகோவினா கன்வர்டிபிள் மார்க்": "BAM",
+ "konvertibıl mark": "BAM",
+ "конвертована марка": "BAM",
+ "可兑换马克": "BAM",
+ "波斯尼亞黑塞哥維那可兌換馬克": "BAM",
+ "الدولار البربادوسي": "BBD",
+ "Bds$": "BBD",
+ "bbd": "BBD",
+ "bds$": "BBD",
+ "δολάριο των μπαρμπάντος": "BBD",
+ "dolar de barbados": "BBD",
+ "dolar barbadense": "BBD",
+ "dollar de la barbade": "BBD",
+ "dollaro": [
+ "BZD",
"BBD"
- ],
- "sbd": [
- "SBD"
- ],
- "saoedische riyal": [
- "SAR"
- ],
- "dinar bareini\u0301": [
+ ],
+ "dollaro delle barbados": "BBD",
+ "dólar barbadiano": "BBD",
+ "dólar dos barbados": "BBD",
+ "валюта барбадоса": "BBD",
+ "долар барбадоса": "BBD",
+ "பார்படோஸ் டாலர்": "BBD",
+ "৳": "BDT",
+ "така": "BDT",
+ "bdt": [
+ "BTN",
+ "BDT"
+ ],
+ "lakhs": "BDT",
+ "poisha": "BDT",
+ "ṭākā": "BDT",
+ "τάκα": "BDT",
+ "taka bangladeshi": "BDT",
+ "taka bangladeshí": "BDT",
+ "taka bangladesi": "BDT",
+ "טאקה": "BDT",
+ "taka bengalska": "BDT",
+ "валюта бангладеш": "BDT",
+ "bangladéšska taka": "BDT",
+ "৲": "BDT",
+ "塔卡": "BDT",
+ "ليف بلغارية": "BGN",
+ "лв.": "BGN",
+ "bgj": "BGN",
+ "bgk": "BGN",
+ "bgl": "BGN",
+ "bgn": "BGN",
+ "българския лев": "BGN",
+ "лев": "BGN",
+ "levo": "BGN",
+ "bulgarsk lev": "BGN",
+ "bulgarischer lew": "BGN",
+ "stotinka": "BGN",
+ "stotinki": "BGN",
+ "bulgaria levo": "BGN",
+ "nova bulgara levo": "BGN",
+ "לב בולגרי": "BGN",
+ "ブルガリア・レフ": "BGN",
+ "lev da bulgária": "BGN",
+ "lev bulgar": "BGN",
+ "leva bulgară": "BGN",
+ "levă bulgară": "BGN",
+ "валюта болгарии": "BGN",
+ "лев болгарский": "BGN",
+ "bulgarisk lev": "BGN",
+ "bulgariska lev": "BGN",
+ "bulgariska leva": "BGN",
+ "பல்காரிய லெவ்": "BGN",
+ "bulgar levası": "BGN",
+ "bulgar levi": "BGN",
+ "лв": "BGN",
+ "الدينار البحريني": "BHD",
+ "BD": "BHD",
+ "δηνάριο του μπαχρέιν": "BHD",
+ "bhd": "BHD",
+ "dinar bahraini": "BHD",
+ "dinar bahrainí": "BHD",
+ "dinar bahreini": "BHD",
+ "dinar bahreiní": "BHD",
+ "dinar bareini": "BHD",
+ "dinar de bahrein": "BHD",
+ "dinar de barein": "BHD",
+ "dinar de baréin": "BHD",
+ "dinar bahreïnien": "BHD",
+ "dinar de bahreïn": "BHD",
+ "dinar du bahreïn": "BHD",
+ "dinaro del bahrain": "BHD",
+ "dinaro": "BHD",
+ "dinar de bahrayn": "BHD",
+ "dinar bahrajnu": "BHD",
+ "denar bareinita": "BHD",
+ "denar baremense": "BHD",
+ "denar baremita": "BHD",
+ "denar baremês": "BHD",
+ "denar barenita": "BHD",
+ "dinar baremense": "BHD",
+ "dinar baremita": "BHD",
+ "dinar baremês": "BHD",
+ "dinar barenita": "BHD",
+ "dinar do bahrein": "BHD",
+ "валюта бахрейна": "BHD",
+ "динар": [
+ "TND",
+ "RSD",
+ "LYD",
+ "KWD",
+ "IQD",
+ "DZD",
"BHD"
- ],
- "do\u0301lar de guyana": [
- "GYD"
- ],
- "won norcoreano": [
- "KPW"
- ],
- "dram arme\u0301nien": [
- "AMD"
- ],
- "peso de me\u0301jico": [
- "MXN"
- ],
- "kuna": [
- "HRK"
- ],
- "kubanischer peso": [
- "CUP"
- ],
- "sambia kwacha": [
- "ZMW"
- ],
- "sri lankaanse roepie": [
- "LKR"
- ],
- "neue tu\u0308rkische lira": [
- "TRY"
- ],
- "algerischer dinar": [
- "DZD"
- ],
- "hong kong dollar": [
- "HKD"
- ],
- "$a": [
- "ARP"
- ],
- "rupia nepalese": [
- "NPR"
- ],
- "bhat": [
- "THB"
- ],
- "maleisische ringgit": [
- "MYR"
- ],
- "rupia nepalesa": [
- "NPR"
- ],
- "tsjechische kroon": [
- "CZK"
- ],
- "dong": [
- "VND"
- ],
- "xof": [
- "XOF"
- ],
- "chilean peso": [
- "CLP"
- ],
- "nordkoreanischer won": [
- "KPW"
- ],
- "soedanese pond": [
- "SDG"
- ],
- "angol font": [
- "GBP"
- ],
- "kip laosiano": [
- "LAK"
- ],
- "dollaro delle barbados": [
- "BBD"
- ],
- "gpb": [
- "GBP"
- ],
- "nuovo dollaro taiwanese": [
- "TWD"
- ],
- "pond sterling": [
- "GBP"
- ],
- "nouveau shekel": [
- "ILS"
- ],
- "libanees pond": [
- "LBP"
- ],
- "kuvaiti dina\u0301r": [
- "KWD"
- ],
- "kenyan shilling": [
- "KES"
- ],
- "dolar bahamen\u0303o": [
- "BSD"
- ],
- "surinaamse gulden": [
- "SRG"
- ],
- "tschang": [
- "THB"
- ],
- "north korean won": [
- "KPW"
- ],
- "fiorino ungherese": [
- "HUF"
- ],
- "franco yibuti\u0301": [
- "DJF"
- ],
- "servische dinar": [
- "RSD"
- ],
- "manat turkme\u0300ne": [
- "TMT"
- ],
- "swiss franken": [
- "CHF"
- ],
- "costa rica colo\u0301n": [
- "CRC"
- ],
- "franco yibutiense": [
- "DJF"
- ],
- "venezolaanse boli\u0301var": [
- "VEF"
- ],
- "marco de la repu\u0301blica democratica alemana": [
- "DDM"
- ],
- "karod": [
- "NPR"
- ],
- "riyal": [
- "SAR"
- ],
- "birr e\u0301thiopien": [
- "ETB"
- ],
- "francs pacifique": [
- "XPF"
- ],
- "rufiyaa delle maldive": [
- "MVR"
- ],
- "libyan dinar": [
- "LYD"
- ],
- "siclo israeliano": [
- "ILS"
- ],
- "santomese dobra": [
- "STD"
- ],
- "mauritiaanse roepie": [
- "MUR"
- ],
- "srilankaanse rupee": [
- "LKR"
- ],
- "sum uzbeco": [
- "UZS"
- ],
- "laari": [
- "MVR"
- ],
- "dolar de trinidad y tobago": [
- "TTD"
- ],
- "austral argentino": [
- "ARA"
- ],
- "do\u0301lar fijiano": [
- "FJD"
- ],
- "bz$": [
- "BZD"
- ],
- "argentijnse peso": [
- "ARS"
- ],
- "vnd": [
- "VND"
- ],
- "dong vietnamien": [
- "VND"
- ],
- "ngultrum butanes": [
- "BTN"
- ],
- "do\u0301lar del caribe este": [
- "XCD"
- ],
- "pakistaanse roepie": [
- "PKR"
- ],
- "drtrigonbot:exchange rate data:usd": [
- "USD"
- ],
- "indone\u0301z ru\u0301pia": [
- "IDR"
- ],
- "riyal dell'oman": [
- "OMR"
- ],
- "gambiai dalasi": [
- "GMD"
- ],
- "dollaro delle salomone": [
- "SBD"
- ],
- "bermuda dollar": [
- "BMD"
- ],
- "km": [
- "BAM"
- ],
- "kr": [
- "DKK"
- ],
- "mozambican escudo": [
- "MZE"
- ],
- "samoan tala": [
- "WST"
- ],
- "brazil real": [
- "BRL"
- ],
- "dollaro della guyana": [
- "GYD"
- ],
- "norve\u0301g korona": [
- "NOK"
- ],
- "dobra di sao tome\u0301 e principe": [
- "STD"
- ],
- "cdf": [
- "CDF"
- ],
- "azerbeidzjaanse manat": [
- "AZN"
- ],
- "droits de tirage speciaux": [
- "XDR"
- ],
- "paanga": [
- "TOP"
- ],
- "livre des i\u0302les malouines": [
- "FKP"
- ],
- "ugx": [
- "UGX"
- ],
- "holland antilla\u0301kbeli forint": [
- "ANG"
- ],
- "\u20a3": [
- "FRF"
- ],
- "costa rican colo\u0301n": [
- "CRC"
- ],
- "roupie indone\u0301sienne": [
- "IDR"
- ],
- "rd$": [
- "DOP"
- ],
- "dollar australien": [
- "AUD"
- ],
- "russian ruble": [
- "RUB"
- ],
- "mianmari kjap": [
- "MMK"
- ],
- "nicaraguan co\u0301rdoba": [
- "NIO"
- ],
- "florin aruben\u0303o": [
- "AWG"
- ],
- "rupie indiane": [
- "INR"
- ],
- "florin arubain": [
- "AWG"
- ],
- "dinar kuwaiti\u0301": [
- "KWD"
- ],
- "hryvnya": [
- "UAH"
- ],
- "tamil rupee": [
- "LKR"
- ],
- "oegandese shilling": [
- "UGX"
- ],
- "corona cecoslovacca": [
- "CSK"
- ],
- "clp$": [
- "CLP"
- ],
- "cheli\u0301n ugandes": [
- "UGX"
- ],
- "kina": [
- "PGK"
- ],
- "noord koreaanse won": [
- "KPW"
- ],
- "chilenischer peso": [
- "CLP"
- ],
- "uganda schilling": [
- "UGX"
- ],
- "uruguayaanse peso": [
- "UYU"
- ],
- "metical": [
- "MZN"
- ],
- "\u0440\u0443\u0431": [
- "RUB"
- ],
- "marokko\u0301i dirham": [
- "MAD"
- ],
- "ars": [
- "ARS"
- ],
- "iraki dina\u0301r": [
- "IQD"
- ],
- "tugrik mongolo": [
- "MNT"
- ],
- "soedanees pond": [
- "SDG"
- ],
- "honduran lempira": [
- "HNL"
- ],
- "rial dell'oman": [
- "OMR"
- ],
- "sek": [
- "SEK"
- ],
- "franc malgache": [
- "MGA"
- ],
- "fille\u0301r": [
- "HUF"
- ],
- "piso": [
- "PHP"
- ],
- "cayman islands dollar": [
- "KYD"
- ],
- "guyaanse dollar": [
- "GYD"
- ],
- "won": [
- "KRW"
- ],
- "barbadosi dolla\u0301r": [
- "BBD"
- ],
- "bosnische inwisselbare mark": [
- "BAM"
- ],
- "\u20b8": [
- "KZT"
- ],
- "dollar neo zelandais": [
- "NZD"
- ],
- "leone sierraleonese": [
- "SLL"
- ],
- "franco comorano": [
- "KMF"
- ],
- "guineese frank": [
- "GNF"
- ],
- "renminbi": [
- "CNY"
- ],
- "alba\u0301n lek": [
- "ALL"
- ],
- "ethiopische birr": [
- "ETB"
- ],
- "sterlina di sant\u2019elena": [
- "SHP"
- ],
- "corona islandesa": [
- "ISK"
- ],
- "corona islandese": [
- "ISK"
- ],
- "dolar bermudeno": [
- "BMD"
- ],
- "surinamese dollar": [
- "SRD"
- ],
- "nicaraguaanse cordoba": [
- "NIO"
- ],
- "loti lesothiano": [
- "LSL"
- ],
- "australischer dollar": [
- "AUD"
- ],
- "canadian dollar": [
- "CAD"
- ],
- "yen giapponese": [
- "JPY"
- ],
- "mongolian to\u0308gro\u0308g": [
- "MNT"
- ],
- "chelin ugandes": [
- "UGX"
- ],
- "chinese yuan": [
- "CNY"
- ],
- "shilling somalien": [
- "SOS"
- ],
- "hongkongse dollar": [
- "HKD"
- ],
- "bolivar": [
- "VEF"
- ],
- "riyal yemenita": [
- "YER"
- ],
- "florin des antilles ne\u0301erlandaises": [
- "ANG"
- ],
- "\u20b9": [
- "INR"
- ],
- "xaf": [
- "XAF"
- ],
- "philippine peso": [
- "PHP"
- ],
- "afghan afghani": [
- "AFN"
- ],
- "dominikai peso": [
- "DOP"
- ],
- "zuid koreaanse won": [
- "KRW"
- ],
- "cubaanse peso": [
- "CUP"
- ],
- "nepalese rupee": [
- "NPR"
- ],
- "kyat birmano": [
- "MMK"
- ],
- "franc or": [
- "XFO"
- ],
- "fiorino surinamese": [
- "SRG"
- ],
- "czech koruna": [
- "CZK"
- ],
- "verenigde arabische emiraten dirham": [
- "AED"
- ],
- "tanzaniaanse shilling": [
- "TZS"
- ],
- "rupia mauriziana": [
- "MUR"
- ],
- "monnaie canadienne": [
- "CAD"
- ],
- "do\u0301lar bruneano": [
+ ],
+ "динар бахрейна": "BHD",
+ "பஹ்ரேன் தினார்": "BHD",
+ "فرنك بروندي": "BIF",
+ "FBu": "BIF",
+ "fbu": "BIF",
+ "φράγκο του μπουρούντι": "BIF",
+ "bif": "BIF",
+ "franco burundes": "BIF",
+ "פרנק בורונדי": "BIF",
+ "franco do burúndi": "BIF",
+ "franco burundiano": "BIF",
+ "franco burundinense": "BIF",
+ "franco burundinês": "BIF",
+ "franco de burundi": "BIF",
+ "franc burundez": "BIF",
+ "валюта бурунди": "BIF",
+ "франк": [
+ "XPF",
+ "XOF",
+ "RWF",
+ "CDF",
+ "BIF"
+ ],
+ "франк бурунди": "BIF",
+ "BD$": "BMD",
+ "dòlar de bermuda": "BMD",
+ "dòlar de les illes bermudes": "BMD",
+ "bd$": "BMD",
+ "δολάριο των βερμούδων": "BMD",
+ "bmd": "BMD",
+ "dolar bermudeno": "BMD",
+ "dolar bermudeño": "BMD",
+ "dolar de bermuda": "BMD",
+ "dolar de bermudas": "BMD",
+ "dólar bermudeno": "BMD",
+ "dólar de bermuda": "BMD",
+ "dólar de bermudas": "BMD",
+ "dollar des bermudes": "BMD",
+ "דולר ברמודה ": "BMD",
+ "dollaro delle bermuda": "BMD",
+ "dollaro delle bermude": "BMD",
+ "валюта бермуд": "BMD",
+ "பெர்முடா டாலர்": "BMD",
+ "B$": [
+ "BSD",
"BND"
- ],
- "koruna c\u030cesko slovenska\u0301": [
- "CSK"
- ],
- "pound": [
- "GBP"
- ],
- "pounds sterling": [
- "GBP"
- ],
- "jpy": [
- "JPY"
- ],
- "bs$": [
- "BSD"
- ],
- "pula botswanais": [
- "BWP"
- ],
- "haitiaanse gourde": [
- "HTG"
- ],
- "dinar de bahrein": [
- "BHD"
- ],
- "dollar jamaicain": [
- "JMD"
- ],
- "peso ley": [
- "ARS"
- ],
- "do\u0301lares neozelandeses": [
- "NZD"
- ],
- "ten\u030cn\u030ce": [
- "TMT"
- ],
- "pondteken": [
- "GBP"
- ],
- "\u5143": [
- "CNY"
- ],
- "franc uic": [
- "XFU"
- ],
- "syp": [
- "SYP"
- ],
- "dzsibuti frank": [
- "DJF"
- ],
- "dollar de la jamai\u0308que": [
- "JMD"
- ],
- "dinaro tunisino": [
- "TND"
- ],
- "yuan": [
- "CNY"
- ],
- "sudanesisches pfund": [
- "SDG"
- ],
- "euro": [
- "EUR"
- ],
- "peruanischer nuevo sol": [
- "PEN"
- ],
- "falkland pound": [
- "FKP"
- ],
- "forint hungaro": [
- "HUF"
- ],
- "couronne suedoise": [
- "SEK"
- ],
- "peso uruguayen": [
- "UYU"
- ],
- "nami\u0301biai dolla\u0301r": [
- "NAD"
- ],
- "do\u0301lar bahamen\u0303o": [
- "BSD"
- ],
- "leone": [
- "SLL"
- ],
- "libanon pfund": [
- "LBP"
- ],
- "riyal saudi": [
- "SAR"
- ],
- "mozambican metical": [
- "MZN"
- ],
- "dollaro liberiano": [
- "LRD"
- ],
- "dolar de guyana": [
- "GYD"
- ],
- "brazilian real": [
- "BRL"
- ],
- "do\u0301lar de las islas caiman": [
- "KYD"
- ],
- "$": [
- "USD",
- "MXN",
- "ARS",
- "CAD"
- ],
- "cup": [
- "CUP"
- ],
- "real brasilen\u0303o": [
- "BRL"
- ],
- "peso mexicain": [
- "MXN"
- ],
- "cuc": [
- "CUC"
- ],
- "\u0433\u0440\u043d": [
- "UAH"
- ],
- "monnaie franc\u0327aise": [
- "FRF"
- ],
- "guarani\u0301 de paraguay": [
- "PYG"
- ],
- "pa\u02bbanga": [
- "TOP"
- ],
- "marco": [
- "DDM"
- ],
- "panamese balboa": [
- "PAB"
- ],
- "dolar caimano": [
- "KYD"
- ],
- "feninga": [
- "BAM"
- ],
- "kazah tenge": [
- "KZT"
- ],
- "na\u0192": [
- "ANG"
- ],
- "belgian congolese franc": [
- "CDF"
- ],
- "jamaika dollar": [
- "JMD"
- ],
- "to\u0308ro\u0308k u\u0301j li\u0301ra": [
- "TRY"
- ],
- "nige\u0301riai naira": [
- "NGN"
- ],
- "oude metical": [
- "MZN"
- ],
- "singapur dollar": [
- "SGD"
- ],
+ ],
"b$": [
- "BSD"
- ],
- "metical del mozambico": [
- "MZN"
- ],
- "ariary malgascio": [
- "MGA"
- ],
- "bolivar venezuelano": [
- "VEF"
- ],
- "corona norvegese": [
- "NOK"
- ],
- "s/.": [
- "PEN"
- ],
- "franco del burundi": [
- "BIF"
- ],
- "yemeni rial": [
- "YER"
- ],
- "dirham de emiratos arabes unidos": [
- "AED"
- ],
- "riel": [
- "KHR"
- ],
- "venezolanischer boli\u0301var": [
- "VEF"
- ],
- "de\u0301l szuda\u0301ni font": [
- "SSP"
- ],
- "\u20a4": [
- "ITL"
- ],
- "dolar de brunei": [
+ "BSD",
"BND"
- ],
- "colo\u0301n costaricano": [
- "CRC"
- ],
- "dinaro kuwaitiano": [
- "KWD"
- ],
- "re\u0301aux bre\u0301siliens": [
- "BRL"
- ],
- "pen": [
- "PEN"
- ],
- "indiase roepie": [
- "INR"
- ],
- "rupia delle seychelles": [
- "SCR"
- ],
- "lari": [
- "GEL"
- ],
- "dollaro di barbados": [
- "BBD"
- ],
- "xang": [
- "THB"
- ],
- "taiwanese dollar": [
- "TWD"
- ],
- "paraguayi guarani\u0301": [
- "PYG"
- ],
- "cambodian riel": [
- "KHR"
- ],
- "rub": [
- "RUB"
- ],
- "dinaro algerino": [
- "DZD"
- ],
+ ],
+ "br$": "BND",
+ "δολάριο μπρουνέι": "BND",
+ "bnd": "BND",
+ "dolar bruneano": "BND",
+ "dolar de brunei": "BND",
+ "dolar de brunéi": "BND",
+ "dólar bruneano": "BND",
+ "dollar de brunéi": "BND",
+ "ringgit brunei": "BND",
+ "ブルネイドル": "BND",
+ "dolar brunei": "BND",
+ "dólar bruneíno": "BND",
+ "dólar do brunei": "BND",
+ "валюта брунея": "BND",
+ "bruney doları": "BND",
+ "dollar brunei": "BND",
+ "البوليفاريو": "BOB",
+ "Bs": "BOB",
+ "بوليفاريو": "BOB",
+ "bolivianos": "BOB",
+ "bolivià": "BOB",
+ "bolivianischer boliviano": "BOB",
+ "bob": "BOB",
+ "second boliviano": "BOB",
+ "bolivjano": "BOB",
"bs": [
- "BSD",
+ "BSD",
"BOB"
- ],
- "syrisches pfund": [
- "SYP"
- ],
- "rial iranien": [
- "IRR"
- ],
- "dollar namibien": [
- "NAD"
- ],
- "couronne tche\u0301coslovaque": [
- "CSK"
- ],
- "couronne tchecoslovaque": [
- "CSK"
- ],
- "peruvian nuevo sol": [
- "PEN"
- ],
- "lat leton": [
- "LVL"
- ],
- "costa ricaanse colon": [
- "CRC"
- ],
- "schweizer franken": [
- "CHF"
- ],
- "dollar tai\u0308wanais": [
- "TWD"
- ],
- "japanese yen": [
- "JPY"
- ],
- "malediven rupie": [
- "MVR"
- ],
- "arubaanse florijn": [
- "AWG"
- ],
- "grivna": [
- "UAH"
- ],
- "ostkaribischer dollar": [
- "XCD"
- ],
- "mkd": [
- "MKD"
- ],
- "\u00a5": [
- "JPY"
- ],
- "ci$": [
- "KYD"
- ],
- "yuans": [
- "CNY"
- ],
- "xpf": [
- "XPF"
- ],
- "lao kip": [
- "LAK"
- ],
- "franco congoleno": [
- "CDF"
- ],
- "marco bosnioherzegovino": [
- "BAM"
- ],
- "sdr": [
- "XDR"
- ],
- "dollaro del belize": [
+ ],
+ "bs.": "BOB",
+ "boliviano bolivien": "BOB",
+ "bolivijski boliviano": "BOB",
+ "боливийский боливиано": "BOB",
+ "валюта боливии": "BOB",
+ "боливијано": "BOB",
+ "боливски боливијано": "BOB",
+ "பொலிவியானோ": "BOB",
+ "பொலிவிய பொலிவியானோ": "BOB",
+ "bolivya bolivianosu": "BOB",
+ "болівіано": "BOB",
+ "玻利維亞諾": "BOB",
+ "boliviano con mantenimiento de valor respecto al dolar estadounidense": "BOV",
+ "R$": "BRL",
+ "r$": "BRL",
+ "brl": "BRL",
+ "reais": "BRL",
+ "realoj": "BRL",
+ "rs": [
+ "PKR",
+ "MUR",
+ "BRL"
+ ],
+ "real brasileno": "BRL",
+ "brasildar real": "BRL",
+ "رئال": "BRL",
+ "real bresilien": "BRL",
+ "réal": "BRL",
+ "réaux brésiliens": "BRL",
+ "ヘアウ": "BRL",
+ "real brazilian": "BRL",
+ "валюта бразилии": "BRL",
+ "реал бразильский": "BRL",
+ "бразилски рејал": "BRL",
+ "பிரசிலியன் ரியால்": "BRL",
+ "ரியால்": "BRL",
+ "бразiльський ріал": "BRL",
+ "бразильський ріал": "BRL",
+ "бразільський ріал": "BRL",
+ "巴西雷亞爾": "BRL",
+ "巴西貨幣": "BRL",
+ "巴西雷阿爾": "BRL",
+ "瑞亞爾": "BRL",
+ "雷亞爾": "BRL",
+ "黑奧": "BRL",
+ "الدولار البهامي": "BSD",
+ "dòlar de bahames": "BSD",
+ "bahamas dollar": "BSD",
+ "bsd": "BSD",
+ "bs$": "BSD",
+ "dolar bahameno": "BSD",
+ "dolar bahames": "BSD",
+ "dolar bahameño": "BSD",
+ "dolar bahamés": "BSD",
+ "dolar de bahamas": "BSD",
+ "dólar bahameno": "BSD",
+ "dólar bahames": "BSD",
+ "dólar de bahamas": "BSD",
+ "dólar de las bahamas": "BSD",
+ "dollaro bahamense": "BSD",
+ "dólar baamense": "BSD",
+ "dólar baamês": "BSD",
+ "dólar bahamense": "BSD",
+ "dólar bahamiano": "BSD",
+ "dólar bahamês": "BSD",
+ "dólar das baamas": "BSD",
+ "dólar das bahamas": "BSD",
+ "валюта багамских островов": "BSD",
+ "பஹ்மானிய டாலர்": "BSD",
+ "نجولترم": "BTN",
+ "Nu": "BTN",
+ "نغولترم": "BTN",
+ "نولتوم": "BTN",
+ "nglultrum": "BTN",
+ "ngultrum bhutanès": "BTN",
+ "bhútánský ngultam": "BTN",
+ "νγκούλντρουμ": "BTN",
+ "btn": "BTN",
+ "bhutan currency": "BTN",
+ "ngultrumo": "BTN",
+ "ngultrum butanes": "BTN",
+ "chetrum": "BTN",
+ "נגולטורם": "BTN",
+ "ブータン・ルピー": "BTN",
+ "бутанский нгултрум": "BTN",
+ "валюта бутана": "BTN",
+ "不丹努爾特魯姆": "BTN",
+ "努尔特鲁姆": "BTN",
+ "努爾特魯姆": "BTN",
+ "بوتسوانا بولا": "BWP",
+ "P": "BWP",
+ "пула": "BWP",
+ "botsuanischer pula": "BWP",
+ "bwp": "BWP",
+ "pula de botsuana": "BWP",
+ "thebe": "BWP",
+ "botswanan pula": "BWP",
+ "pula botswanais": "BWP",
+ "pula de botswana": "BWP",
+ "ボツワナ・プラ": "BWP",
+ "pula do botsuana": "BWP",
+ "pula botswaniană": "BWP",
+ "pula, unitate monetară": "BWP",
+ "валюта ботсваны": "BWP",
+ "botswansk pula": "BWP",
+ "போட்ஸ்வானா பூலா": "BWP",
+ "Br": [
+ "ETB",
+ "BYN"
+ ],
+ "rwbl belarws": "BYN",
+ "rwbl belarwsaidd": "BYN",
+ "rwbl belarwsiaidd": "BYN",
+ "byn": "BYN",
+ "belarus rubel": "BYN",
+ "br": "BYN",
+ "third belarusian ruble": "BYN",
+ "rublo bierlorruso": "BYN",
+ "зайчик": "BYN",
+ "білоруський рубль": "BYN",
+ "Bz$": "BZD",
+ "bz$": "BZD",
+ "bzd": "BZD",
+ "doler": [
+ "CAD",
"BZD"
- ],
- "peso argentino": [
- "ARP"
- ],
- "dinaro iracheno": [
- "IQD"
- ],
- "hongkong dollar": [
- "HKD"
- ],
- "guarani\u0301 paraguaiano": [
- "PYG"
- ],
- "flori\u0301n antillano neerlande\u0301s": [
- "ANG"
- ],
- "dirham marocain": [
- "MAD"
- ],
- "rial irani": [
- "IRR"
- ],
- "peso d'uruguay": [
- "UYU"
- ],
- "forinto hu\u0301ngaro": [
- "HUF"
- ],
- "escudo cap verdien": [
- "CVE"
- ],
- "mongol tugrik": [
- "MNT"
- ],
- "gha\u0301nai cedi": [
- "GHS"
- ],
- "do\u0301lar del caribe oriental": [
- "XCD"
- ],
- "riyal saudita": [
- "SAR"
- ],
- "omani rial": [
- "OMR"
- ],
- "dinar tunisien": [
- "TND"
- ],
- "cape verdean escudo": [
- "CVE"
- ],
- "peso do\u0301lar": [
- "ARS"
- ],
- "dolar namibio": [
- "NAD"
- ],
- "lyd": [
- "LYD"
- ],
- "sint heleens pond": [
- "SHP"
- ],
- "nieuwe israe\u0308lische sheqel": [
- "ILS"
- ],
- "laotiaanse kip": [
- "LAK"
- ],
- "bolivian boliviano": [
- "BOB"
- ],
- "kirgizische som": [
- "KGS"
- ],
- "denaro macedone": [
- "MKD"
- ],
- "swiss franco": [
- "CHF"
- ],
- "birr eti\u0301ope": [
- "ETB"
- ],
- "barbadian dollar": [
- "BBD"
- ],
- "dolar canadiense": [
+ ],
+ "δολάριο μπελίζε": "BZD",
+ "δολάριο του μπελίζε": "BZD",
+ "dolar beliceno": "BZD",
+ "dolar beliceño": "BZD",
+ "dolar de belice": "BZD",
+ "dolar de belize": "BZD",
+ "dólar beliceno": "BZD",
+ "dólar de belice": "BZD",
+ "dollar de belize": "BZD",
+ "dollar du belize": "BZD",
+ "dollar du bélize": "BZD",
+ "דולר בליזאי": "BZD",
+ "belizeanski dolar": "BZD",
+ "dolar belize": "BZD",
+ "dólar belizenho": "BZD",
+ "dólar belizense": "BZD",
+ "dólar do belize": "BZD",
+ "валюта белиза": "BZD",
+ "доллар белиза": "BZD",
+ "белизе долар": "BZD",
+ "белиски долар": "BZD",
+ "பெலலீசு டாலர்": "BZD",
+ "белізський долар": "BZD",
+ "الدولار الكندي": "CAD",
+ "c$": [
+ "NIO",
"CAD"
- ],
- "swiss francs": [
- "CHF"
- ],
- "tonga pa`anga": [
- "TOP"
- ],
- "dinar de bahrei\u0308n": [
- "BHD"
- ],
- "dollar des iles salomon": [
- "SBD"
- ],
- "dobra santotomense": [
- "STD"
- ],
- "leu rumano": [
- "RON"
- ],
- "lisente": [
- "LSL"
- ],
- "manat turcomano": [
- "TMT"
- ],
- "taka bangladeshi": [
- "BDT"
- ],
- "dram": [
- "AMD"
- ],
- "macedonische denar": [
- "MKD"
- ],
- "israelische sjekel": [
- "ILS"
- ],
- "dop": [
- "DOP"
- ],
- "vanuatu vatu": [
- "VUV"
- ],
- "dollar des i\u0302les salomon": [
- "SBD"
- ],
- "franzo\u0308sischer franken": [
- "FRF"
- ],
- "guarani": [
- "PYG"
- ],
- "su\u0308dsudan pfund": [
- "SSP"
- ],
- "roemeense leu": [
- "RON"
- ],
- "mark convertible": [
- "BAM"
- ],
- "franco de djibouti": [
- "DJF"
- ],
- "ugandan shilling": [
- "UGX"
- ],
- "pazifik franc": [
- "XPF"
- ],
- "rublo tayiko": [
- "TJR"
- ],
- "argentinischer peso": [
- "ARS"
- ],
- "bahraini dinar": [
- "BHD"
- ],
- "amerikaanse dollar": [
- "USD"
- ],
- "franc comorien": [
- "KMF"
- ],
- "dolar neocelande\u0301s": [
- "NZD"
- ],
- "libra sudanesa": [
- "SDG"
- ],
- "ugandai shilling": [
- "UGX"
- ],
- "peso argentin": [
- "ARS"
- ],
- "tugrik mongol": [
- "MNT"
- ],
- "fiorino delle antille olandesi": [
- "ANG"
- ],
- "hryvnia": [
- "UAH"
- ],
- "ma\u0308tonya": [
- "ETB"
- ],
- "dalasi": [
- "GMD"
- ],
- "couronne tche\u0300que": [
- "CZK"
- ],
- "lkr": [
- "LKR"
- ],
- "clps": [
- "CLP"
- ],
- "dolar surinames": [
- "SRD"
- ],
- "kuwait dinar": [
- "KWD"
- ],
- "ruma\u0308nischer leu": [
- "RON"
- ],
- "do\u0301lar jamaicano": [
- "JMD"
- ],
- "nuevo dolar taiwane\u0301s": [
- "TWD"
- ],
- "venezolanischer bolivar": [
- "VEF"
- ],
- "qatarese rial": [
- "QAR"
- ],
- "do\u0301lar de surinam": [
- "SRD"
- ],
- "livres sterling": [
- "GBP"
- ],
- "g$": [
- "GYD"
- ],
- "ruma\u0308nischer lei": [
- "RON"
- ],
- "leone della sierra leone": [
- "SLL"
- ],
- "manat azero": [
- "AZN"
- ],
- "rwandese frank": [
- "RWF"
- ],
- "ancien franc": [
- "FRF"
- ],
- "naira": [
- "NGN"
- ],
- "koruna ceskoslovenska": [
- "CSK"
- ],
- "colo\u0301n costarricense": [
- "CRC"
- ],
- "kubai peso": [
- "CUP"
- ],
- "riel camboyano": [
- "KHR"
- ],
- "pa'anga tongano": [
- "TOP"
- ],
- "sri lankan rupee": [
- "LKR"
- ],
- "hk$": [
- "HKD"
- ],
- "dollar libe\u0301rien": [
- "LRD"
- ],
- "pa'anga di tonga": [
- "TOP"
- ],
- "norwegian krone": [
- "NOK"
- ],
- "scudo capoverdiano": [
- "CVE"
- ],
- "franco congolese": [
+ ],
+ "dòlar de canadà": "CAD",
+ "dòlar del canadà": "CAD",
+ "dòlars canadencs": "CAD",
+ "canadisk dollar": "CAD",
+ "can$": "CAD",
+ "canadischer dollar": "CAD",
+ "kanadische dollar": "CAD",
+ "loonie": "CAD",
+ "καναδικό δολάριο": "CAD",
+ "δολάρριο καναδά": "CAD",
+ "καναδικό δολλάριο": "CAD",
+ "ca$": "CAD",
+ "cad": "CAD",
+ "dolar canadiense": "CAD",
+ "moneda canadiense": "CAD",
+ "kanadar dolar": "CAD",
+ "$ ca": "CAD",
+ "$ can": "CAD",
+ "$can": "CAD",
+ "$ca": "CAD",
+ "dollars canadiens": "CAD",
+ "huard canadien": "CAD",
+ "monnaie canadienne": "CAD",
+ "カナダ・ドル": "CAD",
+ "加ドル": "CAD",
+ "dólar canadiano": "CAD",
+ "dólar do canadá": "CAD",
+ "dólares canadenses": "CAD",
+ "moeda canadaense": "CAD",
+ "валюта канады": "CAD",
+ "доллар канады": "CAD",
+ "canadadollar": "CAD",
+ "kanadadollar": "CAD",
+ "kanadensiska dollar": "CAD",
+ "கனடா டாலர்": "CAD",
+ "கனடிய டாலர்": "CAD",
+ "கனேடிய டாலர்": "CAD",
+ "கனேடிய டொலர்": "CAD",
+ "cdn": "CAD",
+ "canada dollar": "CAD",
+ "dollar canada": "CAD",
+ "cad$": "CAD",
+ "加元": "CAD",
+ "加幣": "CAD",
+ "C$": [
+ "NIO",
+ "CAD"
+ ],
+ "CAD$": "CAD",
+ "¢": "CAD",
+ "CF": [
+ "KMF",
"CDF"
- ],
- "birr": [
- "ETB"
- ],
- "schwedische krone": [
- "SEK"
- ],
- "boliviano bolivien": [
- "BOB"
- ],
- "bdt": [
- "BTN"
- ],
- "do\u0301lar guyanes": [
- "GYD"
- ],
- "lilangeni dello swaziland": [
- "SZL"
- ],
- "libanesisches pfund": [
- "LBP"
- ],
- "schottische pfund": [
- "GBP"
- ],
- "griekse drachme": [
- "GRD"
- ],
- "moldovan leu": [
- "MDL"
- ],
- "lek": [
- "ALL"
- ],
- "\u00a3": [
- "GBP"
- ],
- "do\u0301lar australiano": [
- "AUD"
- ],
- "lev": [
- "BGN"
- ],
- "lew": [
- "BGN"
- ],
- "uganda shilling": [
- "UGX"
- ],
- "hkd": [
- "HKD"
- ],
- "bd$": [
- "BMD"
- ],
- "re\u0301al bre\u0301silien": [
- "BRL"
- ],
- "tunesischer dinar": [
- "TND"
- ],
- "austral (monnaie)": [
- "ARA"
- ],
- "tongaanse pa'anga": [
- "TOP"
- ],
- "couronne sue\u0301doise": [
- "SEK"
- ],
- "franc de djibouti": [
- "DJF"
- ],
- "madagaszka\u0301ri ariary": [
- "MGA"
- ],
- "rupia mauricia": [
- "MUR"
- ],
- "solomon dollar": [
- "SBD"
- ],
- "kro\u0301nur": [
- "ISK"
- ],
- "khoums": [
- "MRO"
- ],
- "su\u0308dsudan pound": [
- "SSP"
- ],
- "sgd": [
- "SGD"
- ],
- "russischer rubel": [
- "RUB"
- ],
- "usd": [
- "USD"
- ],
- "livre des i\u0302les falkland": [
- "FKP"
- ],
- "comorian franc": [
- "KMF"
- ],
- "chf": [
- "CHF"
- ],
- "ush": [
- "UGX"
- ],
- "costa rica colon": [
+ ],
+ "franc del congo": "CDF",
+ "franc del congo belga": "CDF",
+ "ffranc y congo": "CDF",
+ "belgian congolese franc": "CDF",
+ "cdf": "CDF",
+ "franco": [
+ "XPF",
+ "XAF",
+ "RWF",
+ "DJF",
+ "CDF"
+ ],
+ "franco congoles": "CDF",
+ "פרנק קונגיני": "CDF",
+ "zaïre": "CDF",
+ "franc congolés": "CDF",
+ "franco congolense": "CDF",
+ "franco conguês": "CDF",
+ "franco da república democrática do congo": "CDF",
+ "franco do congo": "CDF",
+ "franco do congo kinshasa": "CDF",
+ "franco do congo quinxasa": "CDF",
+ "валюта демократической республики конго": "CDF",
+ "франк бельгийского конго": "CDF",
+ "франк дрк": "CDF",
+ "kongo frankı": "CDF",
+ "الفرنك السويسري": "CHF",
+ "Fr": "CHF",
+ "chf": "CHF",
+ "franc de suïssa": "CHF",
+ "francs suïssos": "CHF",
+ "franc swisaidd": "CHF",
+ "rappen": "CHF",
+ "schweizerfranc": "CHF",
+ "confœderatio helvetica franc": "CHF",
+ "sfr": "CHF",
+ "sfr.": "CHF",
+ "schweizerfranken": "CHF",
+ "φράγκο ελβετίας": "CHF",
+ "franc": "CHF",
+ "swiss frank": "CHF",
+ "swiss franken": "CHF",
+ "swiss franco": "CHF",
+ "swiss francs": "CHF",
+ "s₣": "CHF",
+ "svisaj frankoj": "CHF",
+ "francos suizos": "CHF",
+ "suitzar libera": "CHF",
+ "suitzako libera": "CHF",
+ "francs suisse": "CHF",
+ "francs suisses": "CHF",
+ "franc switze": "CHF",
+ "franchi svizzeri": "CHF",
+ "スイスの通貨": "CHF",
+ "スイスフラン": "CHF",
+ "リヒテンシュタインの通貨": "CHF",
+ "zwitserse franc": "CHF",
+ "franco da suíça": "CHF",
+ "franco suiço": "CHF",
+ "francos suíços": "CHF",
+ "franc elveţian": "CHF",
+ "валюта лихтенштейна": "CHF",
+ "валюта швейцарии": "CHF",
+ "schweiziska franc": "CHF",
+ "சுவிஸ் ஃபிராங்க்": "CHF",
+ "சுவிஸ் பிராங்க்": "CHF",
+ "i̇sviçre frankı": "CHF",
+ "瑞朗": "CHF",
+ "瑞郎": "CHF",
+ "wir franken": "CHW",
+ "wir franc": "CHW",
+ "cookinsel dollar": "CKD",
+ "dolar de las islas cook": "CKD",
+ "クック諸島ドル": "CKD",
+ "クックアイランド・ドル": "CKD",
+ "cookeilandendollar": "CKD",
+ "UF": "CLF",
+ "clf": "CLF",
+ "uf": "CLF",
+ "ウニダ・デ・フォメント": "CLF",
+ "بيسو تشيلي": "CLP",
+ "CLP$": "CLP",
+ "pes xilè": "CLP",
+ "peso de xile": "CLP",
+ "chil$": "CLP",
+ "cl$": "CLP",
+ "clp": "CLP",
+ "clp$": "CLP",
+ "clps": "CLP",
+ "پسو شیلی": "CLP",
+ "پزو شیلی": "CLP",
+ "čileanski peso": "CLP",
+ "チリの通貨": "CLP",
+ "peso do chile": "CLP",
+ "валюта чили": "CLP",
+ "чилийский песо": "CLP",
+ "čilenski pezo": "CLP",
+ "čilski peso": "CLP",
+ "čilski pezo": "CLP",
+ "чилеански песо": "CLP",
+ "чилійське песо": "CLP",
+ "智利披索": "CLP",
+ "cnh": "CNH",
+ "¥": [
+ "JPY",
+ "CNY",
+ "CNH"
+ ],
+ "chinese yuan": [
+ "CNY",
+ "CNH"
+ ],
+ "yuan offshore": "CNH",
+ "cny": "CNY",
+ "rmb": "CNY",
+ "юан": "CNY",
+ "iuan renminbi": "CNY",
+ "iuan xinès": "CNY",
+ "žen min pi": "CNY",
+ "chinesischer renminbi": "CNY",
+ "renminbi yuan": "CNY",
+ "元": [
+ "HKD",
+ "CNY"
+ ],
+ "ρενμίνμπι": "CNY",
+ "ĉina juano": "CNY",
+ "yuan chino": "CNY",
+ "yuán chino": "CNY",
+ "yuans": "CNY",
+ "ז'נמינבי": "CNY",
+ "יו'אן": "CNY",
+ "יואן": "CNY",
+ "יואן סיני": "CNY",
+ "kínai jüan": "CNY",
+ "yuan cinese": "CNY",
+ "人民幣": "CNY",
+ "中国元": "CNY",
+ "中華人民共和国の通貨": "CNY",
+ "renmibi": "CNY",
+ "ženminbi juanis": "CNY",
+ "iuan": "CNY",
+ "iuan renmimbi": "CNY",
+ "iuane": "CNY",
+ "iuane renminbi": "CNY",
+ "iuã": "CNY",
+ "yuan renmimbi": "CNY",
+ "fen": "CNY",
+ "jiao": "CNY",
+ "yuan chinezesc": "CNY",
+ "валюта кнр": "CNY",
+ "валюта китая": "CNY",
+ "женьминби": "CNY",
+ "женьминьби": "CNY",
+ "жэньминби": "CNY",
+ "жэньминьби": "CNY",
+ "ренминби": "CNY",
+ "юань ренминби": "CNY",
+ "юань жэньминьби": "CNY",
+ "jüan": "CNY",
+ "čínsky juan": "CNY",
+ "juan": "CNY",
+ "renminb": "CNY",
+ "јуан": "CNY",
+ "кинески јуан": "CNY",
+ "юань": "CNY",
+ "китайський юань": "CNY",
+ "nhân dân tệ trung quốc": "CNY",
+ "中国人民银行币": "CNY",
+ "COL$": "COP",
+ "peso de colòmbia": "COP",
+ "col$": "COP",
+ "kolomba peso": "COP",
+ "cop": "COP",
+ "peso de colombia": "COP",
+ "פסו קולומביאני": "COP",
+ "kolumbijski peso": "COP",
+ "コロンビアの通貨": "COP",
+ "peso colombian": "COP",
+ "peso da colômbia": "COP",
+ "валюта колумбии": "COP",
+ "колумбийский песо": "COP",
+ "песо оро": "COP",
+ "колумбијски песо": "COP",
+ "unidad de valor real": "COU",
+ "COU$": "COU",
+ "unidad de valor real colombienne": "COU",
+ "₡": [
+ "STN",
"CRC"
- ],
- "rial yemenita": [
- "YER"
- ],
- "marco bosniaco": [
- "BAM"
- ],
- "rial yemenite": [
- "YER"
- ],
- "brit font": [
- "GBP"
- ],
- "tercera dracma griega": [
- "GRD"
- ],
- "tala samoano": [
- "WST"
- ],
- "manat azeri": [
- "AZN"
- ],
- "santi\u0304ms": [
- "LVL"
- ],
- "ostmark": [
- "DDM"
- ],
- "f": [
- "ANG"
- ],
- "nuova lira turca": [
- "TRY"
- ],
- "zuid soedanees pond": [
- "SSP"
- ],
- "turkish lira": [
- "TRY"
- ],
- "rupia indonesiana": [
- "IDR"
- ],
- "da\u0308nische krone": [
- "DKK"
- ],
- "diritti speciali di prelievo": [
- "XDR"
- ],
- "do\u0301lar de nueva zelanda": [
- "NZD"
- ],
- "aluchip": [
- "DDM"
- ],
- "peso uruguayo": [
- "UYU"
- ],
- "xcd": [
- "XCD"
- ],
- "nuevo do\u0301lar de taiwan": [
- "TWD"
- ],
- "k.s.": [
- "KGS"
- ],
- "dinars alge\u0301rien": [
- "DZD"
- ],
- "russische roebel": [
- "RUB"
- ],
- "afn": [
- "AFN"
- ],
- "\u20a6": [
- "NGN"
- ],
- "corona danese": [
+ ],
+ "colon costa riqueny": "CRC",
+ "colón de costa rica": "CRC",
+ "costa rica colon": "CRC",
+ "crc": "CRC",
+ "costa rican colon": "CRC",
+ "colón costarricense": "CRC",
+ "colon": "CRC",
+ "colon costarricense": "CRC",
+ "colon costaricain": "CRC",
+ "colon costaricien": "CRC",
+ "colón costaricain": "CRC",
+ "colon costaricano": "CRC",
+ "costa ricaanse colón": "CRC",
+ "costaricaanse colon": "CRC",
+ "costaricaanse colón": "CRC",
+ "colón costa ricense": "CRC",
+ "colón costa riquense": "CRC",
+ "colón costarriquenho": "CRC",
+ "colón costarriquense": "CRC",
+ "colón da costa rica": "CRC",
+ "костариканский колон": "CRC",
+ "валюта коста рики": "CRC",
+ "колон": "CRC",
+ "колон коста рики": "CRC",
+ "البيزو الكوبي": "CUP",
+ "$MN": "CUP",
+ "بيزو البكوبي": "CUP",
+ "peso de cuba": "CUP",
+ "cub$": "CUP",
+ "cup": "CUP",
+ "moneda nacional": "CUP",
+ "פסו קובני": "CUP",
+ "פזו קובני": "CUP",
+ "キューバペソ": "CUP",
+ "валюта кубы": "CUP",
+ "кубинский песо": "CUP",
+ "кубански песо": "CUP",
+ "küba pezosu": "CUP",
+ "кубинське песо": "CUP",
+ "ايسكودو": "CVE",
+ "ايسكودو الرأس الأخضر": "CVE",
+ "ايسكودو كاب فيردي": "CVE",
+ "кабо верде ескудо": "CVE",
+ "εσκούδο πρασίνου ακρωτηρίου": "CVE",
+ "εσκούδο του πρασίνου ακρωτηρίου": "CVE",
+ "cape verde escudo": "CVE",
+ "escudo de cabo verde": "CVE",
+ "اسکودوی کیپ ورد": "CVE",
+ "escudo capverdien": "CVE",
+ "אשקודו כף ורדי": "CVE",
+ "kapverdski eskudo": "CVE",
+ "zöld foki köztársasági escudo": "CVE",
+ "cve": "CVE",
+ "zöld foki szigeteki escudo": "CVE",
+ "escudo di capo verde": "CVE",
+ "scudo capoverdiano": "CVE",
+ "escudos cabo verdianos": "CVE",
+ "валюта кабо верде": "CVE",
+ "埃斯庫多": "CVE",
+ "كرونه تشيكيه": "CZK",
+ "Kč": "CZK",
+ "крони": "CZK",
+ "czk": "CZK",
+ "corona de txèquia": "CZK",
+ "corona de la república txeca": "CZK",
+ "kč": "CZK",
+ "česká měna": "CZK",
+ "tjekkiske kroner": "CZK",
+ "tjekkoslovakiske kroner": "CZK",
+ "tjekkisk koruna": "CZK",
+ "koruna": "CZK",
+ "tschechische währung": "CZK",
+ "heller": "CZK",
+ "ĉeĥia krono": "CZK",
+ "koruna ceská": "CZK",
+ "koruna ceska": "CZK",
+ "koruna česka": "CZK",
+ "tsehhi kroon": "CZK",
+ "کرونا چک": "CZK",
+ "tsekin koruna": "CZK",
+ "tshekin koruna": "CZK",
+ "tshekin kruunu": "CZK",
+ "tšekin kruunu": "CZK",
+ "couronne tcheque": "CZK",
+ "couronnes tchèques": "CZK",
+ "corona tchec": "CZK",
+ "corone ceche": "CZK",
+ "チェコ・クローネ": "CZK",
+ "coroa da república checa": "CZK",
+ "coroa tcheca": "CZK",
+ "валюта чехии": "CZK",
+ "крона": [
+ "NOK",
+ "DKK",
+ "CZK"
+ ],
+ "чешка коруна": "CZK",
+ "tjeckisk koruna": "CZK",
+ "крона чеська": "CZK",
+ "الفرنك الجيبوتي": "DJF",
+ "Fdj": "DJF",
+ "φράγκο τζιμπουτί": "DJF",
+ "djf": "DJF",
+ "djibouti franc": "DJF",
+ "franco de yibuti": "DJF",
+ "franco yibuti": "DJF",
+ "franco de djibouti": "DJF",
+ "franco yibutiense": "DJF",
+ "franco yibutí": "DJF",
+ "franc djiboutien": "DJF",
+ "פרנק ג'יבוטי": "DJF",
+ "המטבע של ג'יבוטי": "DJF",
+ "franco di gibuti": "DJF",
+ "djiboutische frank": "DJF",
+ "franco djibutiano": "DJF",
+ "franco djibutiense": "DJF",
+ "franco do djibuti": "DJF",
+ "franco do djibouti": "DJF",
+ "franco jibutiano": "DJF",
+ "franco jibutiense": "DJF",
+ "валюта джибути": "DJF",
+ "джибутийский франк": "DJF",
+ "џибутијски франак": "DJF",
+ "cibuti frankı": "DJF",
+ "kr.": [
+ "FOK",
"DKK"
- ],
- "corona danesa": [
+ ],
+ "corona de dinamarca": "DKK",
+ "krone danaidd": "DKK",
+ "dkk": "DKK",
+ "dansk krone": "DKK",
+ "kronemønt": "DKK",
+ "δανέζικη κορόνα": "DKK",
+ "krone": [
+ "NOK",
"DKK"
- ],
- "moneda canadiense": [
- "CAD"
- ],
- "ruandai frank": [
- "RWF"
- ],
- "libra de santa helena": [
- "SHP"
- ],
- "manat azeri\u0301": [
- "AZN"
- ],
- "do\u0301lar de hong kong": [
- "HKD"
- ],
- "armenian dram": [
- "AMD"
- ],
- "tetradrachme": [
- "GRD"
- ],
- "chileense peso": [
- "CLP"
- ],
- "franchi svizzeri": [
- "CHF"
- ],
- "boliviaanse boliviano": [
- "BOB"
- ],
- "do\u0301lar de bermudas": [
- "BMD"
- ],
- "colon costaricain": [
- "CRC"
- ],
- "dollar bahame\u0301en": [
- "BSD"
- ],
- "dollaro delle cayman": [
- "KYD"
- ],
- "do\u0301lar neozelande\u0301s": [
- "NZD"
- ],
- "riyal saudi\u0301": [
- "SAR"
- ],
- "georgian lari": [
- "GEL"
- ],
- "kiwi dollar": [
- "NZD"
- ],
- "shekkel": [
- "ILS"
- ],
- "si$": [
- "SBD"
- ],
- "dobra santome\u0301en": [
- "STD"
- ],
- "dolar neoze\u0301landes": [
- "NZD"
- ],
- "fiorino di aruba": [
- "AWG"
- ],
- "dobra": [
- "STD"
- ],
- "british pound": [
- "GBP"
- ],
- "to\u0308mling": [
- "THB"
- ],
- "afg": [
- "AFN"
- ],
- "thai ba\u0301t": [
- "THB"
- ],
- "fu\u0308lo\u0308p szigeteki peso": [
- "PHP"
- ],
- "noorse kroon": [
- "NOK"
- ],
- "dollar de trinite\u0301 et tobago": [
- "TTD"
- ],
- "tsh": [
- "TZS"
- ],
- "lm": [
- "MTL"
- ],
- "saudi arabische riyal": [
- "SAR"
- ],
- "ausztra\u0301l dolla\u0301r": [
- "AUD"
- ],
- "oekraiense hryvnja": [
- "UAH"
- ],
- "deense kroon": [
+ ],
+ "kr": [
+ "SEK",
+ "NOK",
+ "ISK",
"DKK"
- ],
- "eur": [
+ ],
+ "monnaie danoise": "DKK",
+ "coroa danesa": "DKK",
+ "קרונה דנית": "DKK",
+ "デンマーククローネ": "DKK",
+ "coroa da dinamarca": "DKK",
+ "øre": "DKK",
+ "валюта дании": "DKK",
+ "dansk valuta": "DKK",
+ "danska kronor": "DKK",
+ "டானிஷ் குரோன்": "DKK",
+ "டானிஷ் க்ரோன்": "DKK",
+ "டென்மார்க் குரோன": "DKK",
+ "டென்மார்க் குரோன்": "DKK",
+ "валюта данії": "DKK",
+ "丹麦克朗": "DKK",
+ "بيسو دومنيكاني": "DOP",
+ "RD$": "DOP",
+ "peso dominica": "DOP",
+ "dom$": "DOP",
+ "rd$": "DOP",
+ "dominga peso": "DOP",
+ "dop": "DOP",
+ "peso de republica dominicana": "DOP",
+ "peso de república dominicana": "DOP",
+ "peso oro": "DOP",
+ "peso oro dominicano": "DOP",
+ "פסו דומיניקני": "DOP",
+ "dominikanski peso": "DOP",
+ "ドミニカ共和国ペソ": "DOP",
+ "peso da república dominicana": "DOP",
+ "peso dominican": "DOP",
+ "валюта доминиканской республики": "DOP",
+ "песо доминиканской республики": "DOP",
+ "доминикански песо": "DOP",
+ "домініканське песо": "DOP",
+ "多米尼加比索": "DOP",
+ "DA": "DZD",
+ "dinar d'algèria": "DZD",
+ "δηνάριο της αλγερίας": "DZD",
+ "dzd": "DZD",
+ "dinar": [
+ "TND",
+ "RSD",
+ "LYD",
+ "JOD",
+ "DZD"
+ ],
+ "da": "DZD",
+ "dinar algerino": "DZD",
+ "dinar algérienne": "DZD",
+ "dinar algerienne": "DZD",
+ "dinars algérienne": "DZD",
+ "מטבע אלג'יריה": "DZD",
+ "denar argelino": "DZD",
+ "denar da argélia": "DZD",
+ "dinar da argélia": "DZD",
+ "валюта алжира": "DZD",
+ "அல்ஜீரிய தினார்": "DZD",
+ "الدينار برقاوي": "EGP",
+ "الدينار البرقاوي": "EGP",
+ "£": [
+ "SYP",
+ "SSP",
+ "SDG",
+ "LBP",
+ "IMP",
+ "GIP",
+ "GGP",
+ "GBP",
+ "EGP"
+ ],
+ "LE": "EGP",
+ "د.ب": "EGP",
+ "دينار برقاي": "EGP",
+ "lliura d'egipte": "EGP",
+ "punt yr aifft": "EGP",
+ "le": [
+ "SLL",
+ "EGP"
+ ],
+ "egyptiske pund": "EGP",
+ "ginē": "EGP",
+ "guinee": "EGP",
+ "l.e.": "EGP",
+ "£e": "EGP",
+ "barqawi dinar": "EGP",
+ "d.r.": "EGP",
+ "dr": "EGP",
+ "d£": "EGP",
+ "egp": "EGP",
+ "egiptoar libera": "EGP",
+ "livre egyptienne": "EGP",
+ "מטבע מצרים": "EGP",
+ "lira egiziana": "EGP",
+ "エジプトポンド": "EGP",
+ "ギニー": "EGP",
+ "egyptische pond": "EGP",
+ "liura egipciana": "EGP",
+ "libra do egipto": "EGP",
+ "libra do egito": "EGP",
+ "libră egipteană": "EGP",
+ "валюта египта": "EGP",
+ "фунт": [
+ "SSP",
+ "IMP",
+ "GBP",
+ "EGP"
+ ],
+ "египатска фунта": "EGP",
+ "egyptiska pund": "EGP",
+ "ج.م": "EGP",
+ "mısır paundu": "EGP",
+ "埃及镑": "EGP",
+ "埃镑": "EGP",
+ "نقفة": "ERN",
+ "Nfk": "ERN",
+ "نقفة إريترية": "ERN",
+ "ern": "ERN",
+ "nkf": "ERN",
+ "eritrea nagfo": "ERN",
+ "nafka eritrea": "ERN",
+ "מטבע אריתריאה": "ERN",
+ "nafka": "ERN",
+ "nakfa eritreo": "ERN",
+ "エリトリア・ナクファ": "ERN",
+ "валюта эритреи": "ERN",
+ "накфа": "ERN",
+ "纳克法": "ERN",
+ "بير": "ETB",
+ "dòlar etíop": "ETB",
+ "gersh": "ETB",
+ "mätonya": "ETB",
+ "μπιρ αιθιοπίας": "ETB",
+ "μπιρρ": "ETB",
+ "etb": "ETB",
+ "ethiopian dollar": "ETB",
+ "birr éthiopien": "ETB",
+ "エチオピア・ブル": "ETB",
+ "biras": "ETB",
+ "birr da etiópia": "ETB",
+ "birre da etiópia": "ETB",
+ "birre etíope": "ETB",
+ "абиссинский талер": "ETB",
+ "быр": "ETB",
+ "валюта эфиопии": "ETB",
+ "талари": "ETB",
+ "эфиопский доллар": "ETB",
+ "эфиопский талер": "ETB",
+ "etiopisk birr": "ETB",
+ "اليورو": "EUR",
+ "€": "EUR",
+ "eur": "EUR",
+ "euros": "EUR",
+ "e": [
+ "SZL",
"EUR"
- ],
- "uruguayi peso": [
- "UYU"
- ],
- "liberian dollar": [
- "LRD"
- ],
- "livre sud soudanaise": [
- "SSP"
- ],
- "do\u0301lar de fiji": [
+ ],
+ "யூரோ": "EUR",
+ "avro": "EUR",
+ "歐元": "EUR",
+ "歐羅": "EUR",
+ "F$": "FJD",
+ "dòlar de fiji": "FJD",
+ "fjd": "FJD",
+ "fijiansk dollar": "FJD",
+ "f$": "FJD",
+ "δολάριο νησιών φίτζι": "FJD",
+ "δολάριο των φίτζι": "FJD",
+ "fijan dollar": "FJD",
+ "dolar de fiji": "FJD",
+ "dolar fijiano": "FJD",
+ "dólar fijiano": "FJD",
+ "dolar": [
+ "USD",
"FJD"
- ],
- "dollar de la carai\u0308be orientale": [
- "XCD"
- ],
- "franc poincare\u0301": [
- "XFO"
- ],
- "gepik": [
- "AZN"
- ],
- "fl\u00a3": [
- "FKP"
- ],
- "mexican peso": [
- "MXN"
- ],
- "diram": [
- "TJS"
- ],
- "denar mace\u0301donien": [
- "MKD"
- ],
- "hongkongi dolla\u0301r": [
- "HKD"
- ],
- "belizaanse dollar": [
- "BZD"
- ],
- "azeri manat": [
- "AZN"
- ],
- "dong vietnamita": [
- "VND"
- ],
- "rublo russo": [
- "RUB"
- ],
- "dolar beliceno": [
- "BZD"
- ],
- "su\u0308dsudanesisches pfund": [
- "SSP"
- ],
- "dolar de las islas caima\u0301n": [
- "KYD"
- ],
- "ec$": [
- "XCD"
- ],
- "dirham degli emirati arabi uniti": [
- "AED"
- ],
- "surinaamse dollar": [
- "SRD"
- ],
- "franco cfa de africa occidental": [
- "XOF"
- ],
- "french franc": [
- "FRF"
- ],
- "\u0192": [
- "ANG"
- ],
- "roma\u0301n lej": [
- "RON"
- ],
- "pa'anga": [
- "TOP"
- ],
- "dollaro dei caraibi orientali": [
- "XCD"
- ],
- "tyiyn": [
- "KGS"
- ],
- "cuban convertible peso": [
- "CUC"
- ],
- "dirham des e\u0301mirats arabes unis": [
- "AED"
- ],
- "japa\u0301n jen": [
- "JPY"
- ],
- "kroatische kuna": [
- "HRK"
- ],
- "sowjetischer rubel": [
- "SUR"
- ],
- "won sudcoreano": [
- "KRW"
- ],
- "chelin somali\u0301": [
- "SOS"
- ],
- "santims": [
- "LVL"
- ],
- "franc": [
- "CHF",
- "FRF"
- ],
- "halalas": [
- "SAR"
- ],
- "sva\u0301jci frank": [
- "CHF"
- ],
- "shekel": [
- "ILS"
- ],
- "dinar kowei\u0308tien": [
- "KWD"
- ],
- "l\u00a3": [
- "LBP"
- ],
- "moroccan dirham": [
- "MAD"
- ],
- "goldfranc": [
- "XFO"
- ],
- "jod": [
- "JOD"
- ],
- "oost carai\u0308bische dollar": [
- "XCD"
- ],
- "ouguiya mauritana": [
- "MRO"
- ],
- "cambodjaanse riel": [
- "KHR"
- ],
- "taka bangladesi\u0301": [
- "BDT"
- ],
- "ltl": [
- "LTL"
- ],
- "lettischer lat": [
- "LVL"
- ],
- "santi\u0304mu": [
- "LVL"
- ],
- "marco de la repu\u0301blica democra\u0301tica alemana": [
- "DDM"
- ],
- "franco di gibuti": [
- "DJF"
- ],
- "santi\u0304mi": [
- "LVL"
- ],
- "couronne norve\u0301gienne": [
- "NOK"
- ],
- "libanoni font": [
- "LBP"
- ],
- "belize i dolla\u0301r": [
- "BZD"
- ],
- "da\u0301n korona": [
- "DKK"
- ],
- "serbian dinar": [
- "RSD"
- ],
- "rial omani": [
- "OMR"
- ],
- "mark convertible bosniaque": [
- "BAM"
- ],
- "dollar du be\u0301lize": [
- "BZD"
- ],
- "pesos argentinos": [
- "ARS"
- ],
- "lesothaanse loti": [
- "LSL"
- ],
- "tu\u0308rk liras\u0131": [
- "TRY"
- ],
- "kwacha zambien": [
- "ZMW"
- ],
- "dollar trinidadien": [
- "TTD"
- ],
- "moldavische leu": [
- "MDL"
- ],
- "tughrik": [
- "MNT"
- ],
- "leu roumain": [
- "RON"
- ],
- "szva\u0301zifo\u0308ldi lilangeni": [
- "SZL"
- ],
- "morocota": [
- "VEF"
- ],
- "haitianische gourde": [
- "HTG"
- ],
- "eritreischer nakfa": [
- "ERN"
- ],
- "mongolischer to\u0308gro\u0308g": [
- "MNT"
- ],
- "escudo di capo verde": [
- "CVE"
- ],
- "zwitserse frank": [
- "CHF"
- ],
- "afga\u0301n afga\u0301ni": [
- "AFN"
- ],
- "neet": [
- "GBP"
- ],
- "zwitserse franc": [
- "CHF"
- ],
- "roupie mauricienne": [
- "MUR"
- ],
- "do\u0301lar trinitense": [
- "TTD"
- ],
- "marco de la republica democratica alemana": [
- "DDM"
- ],
- "tongai pa\u2019anga": [
- "TOP"
- ],
- "israeli new sheqel": [
- "ILS"
- ],
- "bermudai dolla\u0301r": [
- "BMD"
- ],
- "\u20ba": [
- "TRY"
- ],
- "oost caribische dollar": [
- "XCD"
- ],
- "ugandese shilling": [
- "UGX"
- ],
- "derechos especiales de giro": [
- "XDR"
- ],
- "rupaya": [
+ ],
+ "dolar fiyiano": "FJD",
+ "dólar": "FJD",
+ "fidzhin dollari": "FJD",
+ "fidzin dollari": "FJD",
+ "dollar des îles fidji": "FJD",
+ "dollar fidjien": "FJD",
+ "דולר פיג'י": "FJD",
+ "dólar das fiji": "FJD",
+ "dolarul fijian": "FJD",
+ "фиджийский доллар": "FJD",
+ "фиџи долар": "FJD",
+ "долар фіджі": "FJD",
+ "FJ$": "FJD",
+ "corona de les illes fèroe": "FOK",
+ "färingische krone": "FOK",
+ "färöer krone": "FOK",
+ "faroese krona": "FOK",
+ "føroysk króna": "FOK",
+ "krona": [
+ "SEK",
+ "ISK",
+ "FOK"
+ ],
+ "króna": [
+ "ISK",
+ "FOK"
+ ],
+ "کرون فاروئی": "FOK",
+ "קרונה פארואזית": "FOK",
+ "קרונה פרואזית": "FOK",
+ "corona delle isole fær øer": "FOK",
+ "フェロー・クロネ": "FOK",
+ "フェロー・クローナ": "FOK",
+ "faeroerse kroon": "FOK",
+ "faerøerse kroon": "FOK",
+ "валюта фарерских островов": "FOK",
+ "färöiska kronor": "FOK",
+ "føroyska krónan": "FOK",
+ "法羅克朗": "FOK",
+ "الجنية البريطاني": "GBP",
+ "الجنيه الأسترليني": "GBP",
+ "الجنيه الإسترليني": "GBP",
+ "الجنيه الاسترليني": "GBP",
+ "باوند إسترليني": "GBP",
+ "جنيه أسترليني": "GBP",
+ "جنيه استرليني": "GBP",
+ "جنيه سترليني": "GBP",
+ "gbp": "GBP",
+ "английски паунд": "GBP",
+ "британски лири": "GBP",
+ "британски паунд": "GBP",
+ "фунт стерлинг": "GBP",
+ "lliures esterlines": "GBP",
+ "britská libra": "GBP",
+ "britské libry": "GBP",
+ "libra šterlinku": "GBP",
+ "punt": "GBP",
+ "sterling": "GBP",
+ "britisk pund": "GBP",
+ "engelsk pund": "GBP",
+ "engelske pund": "GBP",
+ "pund sterling": "GBP",
+ "soveregin": "GBP",
+ "sovereign": "GBP",
+ "britisches pfund": "GBP",
+ "βρετανική λίρα": "GBP",
+ "λίρα αγγλίας": "GBP",
+ "λίρα στερλίνα": "GBP",
+ "british pound": "GBP",
+ "pound": "GBP",
+ "quid": "GBP",
+ "britaj pundoj": "GBP",
+ "sterlingo": "GBP",
+ "gpb": "GBP",
+ "neet": "GBP",
+ "libra": "GBP",
+ "libras esterlinas": "GBP",
+ "inglise nael": "GBP",
+ "naelsterling": "GBP",
+ "suurbritannia nael": "GBP",
+ "esterlindar libera": "GBP",
+ "esterlindar libra": "GBP",
+ "پوند": "GBP",
+ "پوند بریتانیا": "GBP",
+ "iso britannian punta": "GBP",
+ "ison britannian punta": "GBP",
+ "yhdistyneen kuningaskunnan punta": "GBP",
+ "livre britannique": "GBP",
+ "גיני": "GBP",
+ "לירה סטרלינג": "GBP",
+ "לירות סטרלינג": "GBP",
+ "לירות שטרלינג": "GBP",
+ "ליש\"ט": "GBP",
+ "מטבע אנגליה": "GBP",
+ "מטבע צפון אירלנד": "GBP",
+ "פאונד": "GBP",
+ "פאונד סטרלינג": "GBP",
+ "שטרלינג": "GBP",
+ "funta sterlinga": "GBP",
+ "angol font": "GBP",
+ "brit font": "GBP",
+ "észak ír font": "GBP",
+ "libra sterling": "GBP",
+ "sterlina inglese": "GBP",
+ "gbp£": "GBP",
+ "ukポンド": "GBP",
+ "イギリスの通貨": "GBP",
+ "イギリスポンド": "GBP",
+ "イギリス・ポンド": "GBP",
+ "ブリティッシュ・ポンド": "GBP",
+ "英ポンド": "GBP",
+ "jk svaras": "GBP",
+ "brits pond": "GBP",
+ "britse pond": "GBP",
+ "engels pond": "GBP",
+ "engelse pond": "GBP",
+ "liure esterlina": "GBP",
+ "funt brytyjski": "GBP",
+ "libra estrelina": "GBP",
+ "libra inglesa": "GBP",
+ "lire sterline": "GBP",
+ "penny": "GBP",
+ "ukl": "GBP",
+ "английский фунт": "GBP",
+ "английский фунт стерлингов": "GBP",
+ "британский фунт": "GBP",
+ "валюта великобритании": "GBP",
+ "фунт стерлингов соединенного королевства": "GBP",
+ "фунты стерлингов": "GBP",
+ "libra šterlingov": "GBP",
+ "angleški funt": "GBP",
+ "britanski funt": "GBP",
+ "šterling": "GBP",
+ "енглеска фунта": "GBP",
+ "фунта стерлинга": "GBP",
+ "фунта стерлинг": "GBP",
+ "brittiska pund": "GBP",
+ "பவுண்ட் ஸ்டேர்லிங்": "GBP",
+ "பவுண்ட் ஸ்ரேர்லிங்": "GBP",
+ "பிரிட்டிஷ் பவுண்டு": "GBP",
+ "பிரிட்டிஷ் பவுண்ட்": "GBP",
+ "ஸ்டேர்லிங் பவுண்ட்": "GBP",
+ "sterlin": "GBP",
+ "австралійський фунт стерлінгів": "GBP",
+ "англійський фунт стерлінгів": "GBP",
+ "британський фунт": "GBP",
+ "пенс": "GBP",
+ "anh kim": "GBP",
+ "đồng bảng anh": "GBP",
+ "لاري": "GEL",
+ "₾": "GEL",
+ "لاري الجورجي": "GEL",
+ "лари": "GEL",
+ "gruzínské lari": "GEL",
+ "georgian kupon lari": "GEL",
+ "kartvela lario": "GEL",
+ "gel": "GEL",
+ "gruusia lari": "GEL",
+ "لاری": "GEL",
+ "lari géorgien": "GEL",
+ "כארתולי לארי": "GEL",
+ "לארי גרוזי": "GEL",
+ "לארי גרוזיני": "GEL",
+ "lari georgian": "GEL",
+ "グルジアの通貨": "GEL",
+ "lari gruziński": "GEL",
+ "валюта грузии": "GEL",
+ "тетри": "GEL",
+ "சியார்சிய லாரி": "GEL",
+ "ஜோர்ஜிய லாரி": "GEL",
+ "gürcü larisi": "GEL",
+ "ларі": "GEL",
+ "拉里": "GEL",
+ "gernezeja pundo": "GGP",
+ "根西島鎊": "GGP",
+ "₵": "GHS",
+ "GH₵": "GHS",
+ "ганайско кеди": "GHS",
+ "ghs": "GHS",
+ "סדי גאני": "GHS",
+ "جنيه جبرلتار": "GIP",
+ "punt gibraltar": "GIP",
+ "gip": "GIP",
+ "gibraltar pund": "GIP",
+ "gib£": "GIP",
+ "libra gibraltarena": "GIP",
+ "پوند جبل الطارق": "GIP",
+ "לירה גיברלטרית": "GIP",
+ "libra gibraltina": "GIP",
+ "liră gibraltareză": "GIP",
+ "валюта гибралтара": "GIP",
+ "ஜிப்ரால்ட்டர் பவுண்டு": "GIP",
+ "دالاسي": "GMD",
+ "D": "GMD",
+ "butut": "GMD",
+ "bututs": "GMD",
+ "gmd": "GMD",
+ "νταλάσι": "GMD",
+ "gambia dalasi": "GMD",
+ "dalasi gambien": "GMD",
+ "דלסי": "GMD",
+ "ガンビア・ダラシ": "GMD",
+ "dalase": "GMD",
+ "dalasi gambiano": "GMD",
+ "dalassi": "GMD",
+ "гамбийский даласи": "GMD",
+ "валюта гамбии": "GMD",
+ "даласі": "GMD",
+ "FG": "GNF",
+ "franc de guinea": "GNF",
+ "guinea franc": "GNF",
+ "gnf": "GNF",
+ "מטבע גינאה": "GNF",
+ "פרנק גיניאי": "GNF",
+ "franco della guinea": "GNF",
+ "guinese frank": "GNF",
+ "franco guineense": "GNF",
+ "franco guineense gnf": "GNF",
+ "franco guinné gnf": "GNF",
+ "валюта гвинеи": "GNF",
+ "كيتزال": "GTQ",
+ "Q": "GTQ",
+ "кетцал": "GTQ",
+ "quetzal gwatemala": "GTQ",
+ "gtq": "GTQ",
+ "quetzales": "GTQ",
+ "guatemala quetzal": "GTQ",
+ "gvatemala kvecalo": "GTQ",
+ "کوتزال گواتمالا": "GTQ",
+ "quetzal guatémaltèque": "GTQ",
+ "quetzal guatemalteque": "GTQ",
+ "מטבע גואטמלה": "GTQ",
+ "gvatemalski quetzal": "GTQ",
+ "gvatemalos ketsalis": "GTQ",
+ "валюта гватемалы": "GTQ",
+ "гватемальский кетцаль": "GTQ",
+ "кветцал": "GTQ",
+ "кетсал": "GTQ",
+ "кетсаль": "GTQ",
+ "гватемальський кецаль": "GTQ",
+ "دولار غوياني": "GYD",
+ "G$": "GYD",
+ "гаянски долар": "GYD",
+ "g$": "GYD",
+ "gy$": "GYD",
+ "dolar de guyana": "GYD",
+ "dolar guyanes": "GYD",
+ "dolar guyanés": "GYD",
+ "dólar de guyana": "GYD",
+ "dólar guyanes": "GYD",
+ "gyd": "GYD",
+ "dollar de guyana": "GYD",
+ "dollar du guyana": "GYD",
+ "דולר גיאני": "GYD",
+ "dólar guianense": "GYD",
+ "валюта гайаны": "GYD",
+ "гвајана долар": "GYD",
+ "圭亚那元": "GYD",
+ "GY$": "GYD",
+ "دولار هونغ كونغي": "HKD",
+ "HK$": "HKD",
+ "doler hong kong": "HKD",
+ "hkd": "HKD",
+ "hk$": "HKD",
+ "δολάριο του χονγκ κονγκ": "HKD",
+ "dolar de hong kong": "HKD",
+ "dolar hongkones": "HKD",
+ "dólar hongkonés": "HKD",
+ "dolar hongkongtar": "HKD",
+ "دلار هنگکنگ": "HKD",
+ "dollar hongkongais": "HKD",
+ "דולר הונג קונג": "HKD",
+ "honkonški dolar": "HKD",
+ "香港の通貨": "HKD",
+ "香港・ドル": "HKD",
+ "香港元": "HKD",
+ "hongkongo doleris": "HKD",
+ "dólar de hongkong": "HKD",
+ "dólar de hongue congue": "HKD",
+ "dólar de honguecongue": "HKD",
+ "dolar din hong kong": "HKD",
+ "доллар гонконга": "HKD",
+ "хонгконг долар": "HKD",
+ "гонконгський долар": "HKD",
+ "гонконгзький долар": "HKD",
+ "долар гонконґу": "HKD",
+ "dollar hong kong": "HKD",
+ "dollar hồng kông": "HKD",
+ "港圓": "HKD",
+ "港币": "HKD",
+ "港幣": "HKD",
+ "香港貨幣": "HKD",
+ "لمبيرا": "HNL",
+ "лемпира": "HNL",
+ "lempira hondwraidd": "HNL",
+ "honduranischer lempira": "HNL",
+ "λεμπίρα ονδούρας": "HNL",
+ "lempiro": "HNL",
+ "hnl": "HNL",
+ "lempira hondureña": "HNL",
+ "lempira hondurien": "HNL",
+ "lempire hondurien": "HNL",
+ "hondūro lempyra": "HNL",
+ "lempyra": "HNL",
+ "lempira hondurenha": "HNL",
+ "валюта гондураса": "HNL",
+ "хондурашка лемпира": "HNL",
+ "伦皮拉": "HNL",
+ "kn": "HRK",
+ "hrk": "HRK",
+ "lipa": "HRK",
+ "κούνα": "HRK",
+ "κροατική κούνα": "HRK",
+ "kroatia kunao": "HRK",
+ "kunao": "HRK",
+ "lipao": "HRK",
+ "cuna croata": "HRK",
+ "horvaatia kuna": "HRK",
+ "کونا": "HRK",
+ "ליפה": "HRK",
+ "クロアチアの通貨": "HRK",
+ "クロアチア・クナ": "HRK",
+ "クロアチア・クーナ": "HRK",
+ "kuna chorwacka": "HRK",
+ "kuny": "HRK",
+ "lipy": "HRK",
+ "kuna da croácia": "HRK",
+ "cună croată": "HRK",
+ "kuna croată": "HRK",
+ "kună croată": "HRK",
+ "валюта хорватии": "HRK",
+ "куна": "HRK",
+ "липа": "HRK",
+ "குரோவாசிய குனா": "HRK",
+ "குரோஷிய குனா": "HRK",
+ "hırvatistan kunası": "HRK",
+ "куна хорватська": "HRK",
+ "kuna croatia": "HRK",
+ "庫納": "HRK",
+ "Gde.": "HTG",
+ "gde.": "HTG",
+ "haitianische gourde": "HTG",
+ "haitianischer gourde": "HTG",
+ "htg": "HTG",
+ "dollar haïtien": "HTG",
+ "gourde haïtienne": "HTG",
+ "gourde haitienne": "HTG",
+ "גורד": "HTG",
+ "haitiaanse gourde": "HTG",
+ "gurde": "HTG",
+ "gurde haitiano": "HTG",
+ "валюта гаити": "HTG",
+ "гурд": "HTG",
+ "хаитски гурд": "HTG",
+ "G": "HTG",
+ "فورينت مجري": "HUF",
+ "Ft": "HUF",
+ "florí hongarès": "HUF",
+ "huf": "HUF",
+ "filler": "HUF",
+ "fillér": "HUF",
+ "ungarsk forint": "HUF",
+ "ungarischer forint": "HUF",
+ "φόριντ ουγγαρίας": "HUF",
+ "ft": "HUF",
+ "forinto": "HUF",
+ "hungaria forinto": "HUF",
+ "florin hungaro": "HUF",
+ "florin húngaro": "HUF",
+ "florín hungaro": "HUF",
+ "forint hungaro": "HUF",
+ "forint húngaro": "HUF",
+ "forinto hungaro": "HUF",
+ "ungari forint": "HUF",
+ "forintti": "HUF",
+ "forint hongrois": "HUF",
+ "forints": "HUF",
+ "florint": "HUF",
+ "florint húngaro": "HUF",
+ "forint hungare": "HUF",
+ "ハンガリーフォリント": "HUF",
+ "ハンガリー・フォリント": "HUF",
+ "forint węgierski": "HUF",
+ "forinte": "HUF",
+ "forint maghiar": "HUF",
+ "forint ungar": "HUF",
+ "венгерский форинт": "HUF",
+ "валюта венгрии": "HUF",
+ "форинта": "HUF",
+ "ungersk forint": "HUF",
+ "ஃபோரின்ட்": "HUF",
+ "அங்கேரிய ஃபோரின்ட்": "HUF",
+ "ஹங்கேரிய போரிண்ட்": "HUF",
+ "угорський форінт": "HUF",
+ "福林": "HUF",
+ "ungari pengö": "HUP",
+ "pengo hongrois": "HUP",
+ "pengő hongrois": "HUP",
+ "pengo ungherese": "HUP",
+ "ハンガリー・ペンゲー": "HUP",
+ "ペンゴ": "HUP",
+ "pengheul maghiar": "HUP",
+ "pengoe": "HUP",
+ "pengő maghiar": "HUP",
+ "венгерский пенгё": "HUP",
+ "пенге": "HUP",
+ "maďarské pengo": "HUP",
+ "мађарски пенгу": "HUP",
+ "帕戈": "HUP",
+ "روبية أندونيسية": "IDR",
+ "Rp": "IDR",
+ "روبية اندونيسية": "IDR",
+ "روبيه أندونيسيه": "IDR",
+ "rupia d'indonèsia": "IDR",
+ "idr": "IDR",
+ "indonesisk rupiah": "IDR",
+ "rp": "IDR",
+ "indoneza rupio": "IDR",
+ "rupia": [
+ "SCR",
+ "NPR",
+ "INR",
+ "IDR"
+ ],
+ "rupia de indonesia": "IDR",
+ "indonesiar errupia": "IDR",
+ "roupie indonesienne": "IDR",
+ "רופיה אינדונזית": "IDR",
+ "インドネシア・ルピア": "IDR",
+ "インドネシア・ルピー": "IDR",
+ "roepia": "IDR",
+ "roepiah": "IDR",
+ "ropia d'indonesia": "IDR",
+ "валюта индонезии": "IDR",
+ "рупия": [
+ "PKR",
+ "LKR",
+ "INR",
+ "IDR"
+ ],
+ "рупія": [
+ "INR",
+ "IDR"
+ ],
+ "rupiah indonesia": "IDR",
+ "印尼卢比": "IDR",
+ "印尼盧比": "IDR",
+ "印度尼西亚卢比": "IDR",
+ "印度尼西亞盧比": "IDR",
+ "الشيكل الإسرائيلي الجديد": "ILS",
+ "₪": "ILS",
+ "شاقل جديد": "ILS",
+ "شيقل جديد": "ILS",
+ "شيكل اسرائيلي جديد": "ILS",
+ "شيكل جديد": "ILS",
+ "израелски нов шекел": "ILS",
+ "nou shekel": "ILS",
+ "nou sheqel": "ILS",
+ "nou sheqel israelià": "ILS",
+ "nou shequel": "ILS",
+ "nou xéquel israelià": "ILS",
+ "nis": "ILS",
+ "šekel chadaš": "ILS",
+ "schekalim": "ILS",
+ "schkalim": "ILS",
+ "sheqalim": "ILS",
+ "sheqel": "ILS",
+ "νέο σέκελ ισραήλ": "ILS",
+ "new shekel": "ILS",
+ "ils": "ILS",
+ "israeli new sheqel": "ILS",
+ "new israeli shekel": "ILS",
+ "new israeli sheqel": "ILS",
+ "new sheqel": "ILS",
+ "israela nova siklo": "ILS",
+ "israela siklo": "ILS",
+ "nova israela ŝekelo": "ILS",
+ "nova siklo": "ILS",
+ "nova ŝekelo": "ILS",
+ "nuevo shekel": "ILS",
+ "nuevo sheqel": "ILS",
+ "nuevo shequel": "ILS",
+ "nuevo shékel": "ILS",
+ "nuevo sequel": "ILS",
+ "nuevo sequel israeli": "ILS",
+ "nuevo shekel israeli": "ILS",
+ "nuevo shequel israeli": "ILS",
+ "nuevo shékel israelí": "ILS",
+ "nuevo shéquel israelí": "ILS",
+ "nuevo séquel israelí": "ILS",
+ "shekel berria": "ILS",
+ "شکل": "ILS",
+ "israelin sekeli": "ILS",
+ "israelin shekeli": "ILS",
+ "shekeli": "ILS",
+ "nouveau shekel": "ILS",
+ "shekkel": "ILS",
+ "shékel": "ILS",
+ "novo sheqel": "ILS",
+ "novo shequel": "ILS",
+ "מטבע ישראל": "ILS",
+ "ש\"ח": "ILS",
+ "ש'": "ILS",
+ "שקל": "ILS",
+ "שקל ישראלי חדש": "ILS",
+ "nuovo siclo israeliano": "ILS",
+ "nuovo siclo": "ILS",
+ "siclo israeliano": "ILS",
+ "israelische lire": "ILS",
+ "israelische sjekel": "ILS",
+ "israëlische lire": "ILS",
+ "nieuwe israelische shekel": "ILS",
+ "nieuwe israelische sheqel": "ILS",
+ "nieuwe israelische sjekel": "ILS",
+ "nieuwe israëlische shekel": "ILS",
+ "nieuwe israëlische sheqel": "ILS",
+ "nieuwe israëlische sjekel": "ILS",
+ "sjekel": "ILS",
+ "shekel novèl": "ILS",
+ "novo sheqel israelense": "ILS",
+ "novo sheqel israelita": "ILS",
+ "novo shequel israelita": "ILS",
+ "novo siclo israelense": "ILS",
+ "novo siclo israelita": "ILS",
+ "shekel israelense": "ILS",
+ "shekel nou": "ILS",
+ "şekel nou": "ILS",
+ "șekel nou": "ILS",
+ "валюта израиля": "ILS",
+ "израильский новый шекель": "ILS",
+ "новый шекель": "ILS",
+ "agorot": "ILS",
+ "i̇srail yeni şekeli": "ILS",
+ "i̇srail şekeli": "ILS",
+ "şekel": "ILS",
+ "новий шекель": "ILS",
+ "новий ізраїльський шекель": "ILS",
+ "新舍客勒": "ILS",
+ "新謝克爾": "ILS",
+ "IM£": "IMP",
+ "lliura de man": "IMP",
+ "lliura manx": "IMP",
+ "manx pfund": "IMP",
+ "maninsula pundo": "IMP",
+ "libra de la isla de man": "IMP",
+ "livre de manx": "IMP",
+ "libra mannese": "IMP",
+ "マン島ポンド": "IMP",
+ "island of man pond": "IMP",
+ "funt wyspy man": "IMP",
+ "валюта острова мэн": "IMP",
+ "мэнский фунт": "IMP",
+ "мэнский фунт стерлингов": "IMP",
+ "மாண் தீவு பவுண்டு": "IMP",
+ "மான்க்ஸ் பவுண்ட்": "IMP",
+ "الروبية الهندية": "INR",
+ "₹": "INR",
+ "روبي هندية": "INR",
+ "روبيه هنديه": "INR",
+ "rupia d'índia": "INR",
+ "rupia de l'índia": "INR",
+ "rupies índies": "INR",
+ "rúpies": "INR",
+ "rupee indiaidd": "INR",
+ "indisk rupee": "INR",
+ "indisk rupi": "INR",
+ "indiske rupees": "INR",
+ "inr": "INR",
+ "ινδική ρουπία": "INR",
+ "rupaya": "INR",
+ "rupee": [
+ "SCR",
+ "NPR",
+ "MUR",
"INR"
- ],
- "suriname gulden": [
- "SRD"
- ],
- "tajvani u\u0301j dolla\u0301r": [
- "TWD"
- ],
- "costa rica i colo\u0301n": [
- "CRC"
- ],
- "pakistanische rupie": [
- "PKR"
- ],
- "irak dinar": [
+ ],
+ "hinda rupio": "INR",
+ "rupias": "INR",
+ "rupias indias": "INR",
+ "indiar errupia": "INR",
+ "روپیهٔ هند": "INR",
+ "پول هندوستان": "INR",
+ "רופיה הודית": "INR",
+ "rupia dell'india": "INR",
+ "rupie indiane": "INR",
+ "indiase rupee": "INR",
+ "rupia da índia": "INR",
+ "rúpia indiana": "INR",
+ "валюта индии": "INR",
+ "индијски рупи": "INR",
+ "рупија": "INR",
+ "இந்திய ரூபா": "INR",
+ "భారత రూపాయి": "INR",
+ "భారతదేశ రూపాయి": "INR",
+ "భారతీయ రూపాయి": "INR",
+ "rs.": "INR",
+ "印度卢比": "INR",
+ "الدينار العراقي": "IQD",
+ "د.ع": "IQD",
+ "دينار": [
+ "KWD",
"IQD"
- ],
- "alge\u0301riai dina\u0301r": [
- "DZD"
- ],
- "perui u\u0301j sol": [
- "PEN"
- ],
- "do\u0301lar caribe este": [
- "XCD"
- ],
- "kurus": [
- "TRY"
- ],
- "sfr": [
- "CHF"
- ],
- "huard canadien": [
- "CAD"
- ],
- "new zealand dollar": [
- "NZD"
- ],
- "so\u0308m": [
- "UZS"
- ],
- "awg": [
- "AWG"
- ],
- "dollar de guyana": [
- "GYD"
- ],
- "bosnya\u0301k konvertibilis ma\u0301rka": [
- "BAM"
- ],
- "suriname i dolla\u0301r": [
- "SRD"
- ],
- "ukrainische hrywnja": [
- "UAH"
- ],
- "ngultrum": [
- "BTN"
- ],
- "gde.": [
- "HTG"
- ],
- "mexican nuevo peso": [
- "MXN"
- ],
- "fjd": [
- "FJD"
- ],
- "dolar jamaiquino": [
- "JMD"
- ],
- "libyscher dinar": [
- "LYD"
- ],
- "nuevo shequel": [
- "ILS"
- ],
- "cheli\u0301n keniano": [
- "KES"
- ],
- "dollar surinamien": [
- "SRD"
- ],
- "rublo sovietico": [
- "SUR"
- ],
- "kaiman dollar": [
- "KYD"
- ],
- "dollar ne\u0301o ze\u0301landais": [
- "NZD"
- ],
- "bolga\u0301r leva": [
- "BGN"
- ],
- "cub$": [
- "CUP"
- ],
- "szl": [
- "SZL"
- ],
- "aruba gulden": [
- "AWG"
- ],
- "mexikanischer peso": [
- "MXN"
- ],
- "australische dollar": [
- "AUD"
- ],
- "roupie indonesienne": [
- "IDR"
- ],
- "albanese lek": [
- "ALL"
- ],
- "lettische wa\u0308hrung": [
- "LVL"
- ],
- "dollar ame\u0301ricain": [
- "USD"
- ],
- "zo\u0308ld foki szigeteki escudo": [
- "CVE"
- ],
- "saudi riyal": [
- "SAR"
- ],
- "libra": [
- "GBP"
- ],
- "isla\u0308ndische krone": [
- "ISK"
- ],
- "saudi rial": [
- "SAR"
- ],
- "dollaro della bermuda": [
- "BMD"
- ],
- "macedo\u0301n de\u0301na\u0301r": [
- "MKD"
- ],
- "kwanza": [
- "AOA"
- ],
- "dollar du guyana": [
- "GYD"
- ],
- "nuevo peso argentino": [
- "ARS"
- ],
- "dollaro del suriname": [
- "SRD"
- ],
- "ariary malgache": [
- "MGA"
- ],
- "saint helena pound": [
- "SHP"
- ],
- "kambodzsai riel": [
- "KHR"
- ],
- "surinam dollar": [
- "SRD"
- ],
- "ouguiya": [
- "MRO"
- ],
- "mala\u0301j ringgit": [
- "MYR"
- ],
- "united states dollar": [
- "USD"
- ],
- "icelandic kro\u0301na": [
- "ISK"
- ],
- "gbp": [
- "GBP"
- ],
- "falkland szigeteki font": [
- "FKP"
- ],
- "sa\u0303o tome\u0301ischer dobra": [
- "STD"
- ],
- "kwanza angolano": [
- "AOA"
- ],
+ ],
+ "dinar d'iraq": "IQD",
+ "dinar de l'iraq": "IQD",
+ "iqd": "IQD",
+ "irak dinar": "IQD",
+ "ιρακινό δηνάριο": "IQD",
+ "dinar de irak": "IQD",
+ "dinar iraki": "IQD",
+ "dinar irakí": "IQD",
+ "dinar iraqui": "IQD",
+ "イラクの通貨": "IQD",
+ "denar do iraque": "IQD",
+ "denar iraquiano": "IQD",
+ "dinar do iraque": "IQD",
+ "валюта ирака": "IQD",
+ "динар ирака": "IQD",
+ "இராக்கிய தீனார்": "IQD",
+ "ஈராக் டினார்": "IQD",
+ "ஈராக் தினார்": "IQD",
+ "ஈராக்கிய டினார்": "IQD",
+ "ஈராக்கிய தினார்": "IQD",
+ "﷼": [
+ "YER",
+ "SAR",
+ "IRR"
+ ],
+ "rial d'iran": "IRR",
+ "rial de l'iran": "IRR",
+ "íránský riál": "IRR",
+ "íránský rial": "IRR",
+ "ریال": [
+ "YER",
+ "SAR",
+ "IRR"
+ ],
+ "rial iranaidd": "IRR",
+ "irr": "IRR",
+ "rial irani": "IRR",
+ "rial de iran": "IRR",
+ "rial de irán": "IRR",
+ "iranski rial": "IRR",
+ "イランの通貨": "IRR",
+ "イラン・リアル": "IRR",
+ "イラン・リヤール": "IRR",
+ "rial do irão": "IRR",
+ "валюта ирана": "IRR",
+ "иранский риял": "IRR",
+ "риал": [
+ "YER",
+ "SAR",
+ "IRR"
+ ],
+ "риал ирана": "IRR",
+ "риял ирана": "IRR",
+ "ریال,": "IRR",
+ "i̇ran para birimi": "IRR",
+ "i̇ran parası": "IRR",
+ "corona d'islàndia": "ISK",
+ "isk": "ISK",
+ "islandsk króna": "ISK",
+ "islandsk krone": "ISK",
+ "islandske kroner": "ISK",
+ "aurar": "ISK",
+ "eyrir": "ISK",
+ "isländische währung": "ISK",
+ "krónur": "ISK",
+ "ισλανδική κορόνα": "ISK",
+ "icelandic krona": "ISK",
+ "کرونا ایسلند": "ISK",
+ "アイスランドクローナ": "ISK",
+ "アイスランド・クローネ": "ISK",
+ "coroa da islândia": "ISK",
+ "валюта исландии": "ISK",
+ "isländsk króna": "ISK",
+ "krónor": "ISK",
+ "ஐஸ்லாந்து குரோனா": "ISK",
+ "冰島克朗": "ISK",
+ "J$": "JMD",
+ "dòlar de jamaica": "JMD",
+ "j$": "JMD",
+ "jmd": "JMD",
+ "jay": "JMD",
+ "dolar jamaicano": "JMD",
+ "dolar jamaiquino": "JMD",
+ "libra jamaicana": "JMD",
+ "dollar de la jamaïque": "JMD",
+ "dollar jamaicain": "JMD",
+ "dollar jamaïquain": "JMD",
+ "דולר ג'מייקי": "JMD",
+ "ジャマイカドル": "JMD",
+ "dólar da jamaica": "JMD",
+ "валюта ямайки": "JMD",
+ "јамајчански долар": "JMD",
+ "الدينار الأردني": "JOD",
+ "JD": "JOD",
+ "دينار اردني": "JOD",
+ "dinar de jordània": "JOD",
+ "jod": "JOD",
+ "δηνάριο ιορδανίας": "JOD",
+ "jordana dinaro": "JOD",
+ "dinar de jordania": "JOD",
+ "dinar jordanian": "JOD",
+ "denar da jordânia": "JOD",
+ "denar jordano": "JOD",
+ "dinar da jordânia": "JOD",
+ "dinar jordaniano": "JOD",
+ "dinar jordâniano": "JOD",
+ "dinarul iordanian": "JOD",
+ "валюта иордании": "JOD",
+ "د.أ": "JOD",
+ "jpy": "JPY",
+ "йена": "JPY",
+ "en": "JPY",
+ "japana jeno": "JPY",
+ "yen japones": "JPY",
+ "yen japonés": "JPY",
+ "ین": "JPY",
+ "yen giapponese": "JPY",
+ "日本円": "JPY",
+ "yeni": "JPY",
+ "японская иена": "JPY",
+ "日本元": "JPY",
+ "شيلينغ كينيي": "KES",
+ "Ksh": "KES",
+ "xíling de kenya": "KES",
+ "σελλίνι της κένυας": "KES",
+ "shilling": "KES",
+ "chelin keniano": "KES",
+ "chelin keniata": "KES",
+ "chelín keniata": "KES",
+ "kenya šilling": "KES",
+ "kes": "KES",
+ "shilling kenyan": "KES",
"scellino": [
+ "SOS",
"KES"
- ],
- "dollars canadiens": [
- "CAD"
- ],
- "guarani\u0301": [
- "PYG"
- ],
- "kwanza angolana": [
- "AOA"
- ],
- "litas lituanien": [
- "LTL"
- ],
- "kajma\u0301n szigeteki dolla\u0301r": [
- "KYD"
- ],
- "som de kirguista\u0301n": [
+ ],
+ "scellino keniano": "KES",
+ "ケニアシリング": "KES",
+ "валюта кении": "KES",
+ "шиллинг": [
+ "UGX",
+ "TZS",
+ "SOS",
+ "KES"
+ ],
+ "ksh": "KES",
+ "肯亞先令": "KES",
+ "سوم قرغيزستاني": "KGS",
+ "⃀": "KGS",
+ "сом": [
+ "UZS",
"KGS"
- ],
- "btn": [
- "BTN"
- ],
- "chelin somali": [
- "SOS"
- ],
- "dracma griego moderno": [
- "GRD"
- ],
- "hai\u0308tiaanse gourde": [
- "HTG"
- ],
- "kc\u030c": [
- "CZK"
- ],
- "peso de chile": [
- "CLP"
- ],
- "mazedonischer denar": [
- "MKD"
- ],
- "sierra leoonse leone": [
- "SLL"
- ],
- "franco france\u0301s": [
- "FRF"
- ],
- "marco della germania est": [
- "DDM"
- ],
- "cordoba nicaraguense": [
- "NIO"
- ],
- "do\u0301lar jamaiquino": [
- "JMD"
- ],
- "cordoba nicaraguayen": [
- "NIO"
- ],
- "rupia de pakista\u0301n": [
- "PKR"
- ],
- "pfund sterling": [
- "GBP"
- ],
- "dollar jamai\u0308quain": [
- "JMD"
- ],
- "koruna c\u030ceskoslovenska\u0301": [
- "CSK"
- ],
- "vatu di vanuatu": [
- "VUV"
- ],
- "nicaraguai co\u0301rdoba": [
- "NIO"
- ],
- "salu\u0308ng": [
- "THB"
- ],
- "drachmon": [
- "GRD"
- ],
- "somalia schilling": [
- "SOS"
- ],
- "dinar iraqui": [
- "IQD"
- ],
- "escudo": [
- "CVE"
- ],
- "hrywni": [
- "UAH"
- ],
- "libra de santa elena": [
- "SHP"
- ],
- "couronnes tche\u0300ques": [
- "CZK"
- ],
- "dolar fiyiano": [
- "FJD"
- ],
- "\u20a9": [
- "KRW"
- ],
- "rial iraniano": [
- "IRR"
- ],
- "bbd": [
- "BBD"
- ],
- "e\u0301szak i\u0301r font": [
- "GBP"
- ],
- "$ ca": [
- "CAD"
- ],
- "quid": [
- "GBP"
- ],
- "ta\u0301dzsik szomoni": [
- "TJS"
- ],
- "dram armenio": [
- "AMD"
- ],
- "rupia singalese": [
+ ],
+ "som de kirguizistan": "KGS",
+ "som del kirguizistan": "KGS",
+ "k.s.": "KGS",
+ "σομ της κιργιζίας": "KGS",
+ "kyrgyz som": "KGS",
+ "kirgizia somo": "KGS",
+ "kgs": "KGS",
+ "som de kirguistan": "KGS",
+ "som de kirguistán": "KGS",
+ "som kirguis": "KGS",
+ "kirgiski som": "KGS",
+ "som kirghizo": "KGS",
+ "ソム": "KGS",
+ "som kirgiski": "KGS",
+ "som do quirguistão": "KGS",
+ "som quirguiz": "KGS",
+ "some": "KGS",
+ "валюта киргизии": "KGS",
+ "кыргызский сом": "KGS",
+ "киргистански сом": "KGS",
+ "киргишки сом": "KGS",
+ "៛": "KHR",
+ "khr": "KHR",
+ "khmer riel": "KHR",
+ "ריאל קמבודי": "KHR",
+ "kambodžanski rijel": "KHR",
+ "камбоджийский риель": "KHR",
+ "kambodjansk riel": "KHR",
+ "ரைல்": "KHR",
+ "கம்போடியன் ரைல்": "KHR",
+ "dòlar de kiribati": "KID",
+ "dòlar gilbertès": "KID",
+ "δολάριο του κιριμπάτι": "KID",
+ "dolar de kiribati": "KID",
+ "dollar de kiribati": "KID",
+ "kiribati dollár": "KID",
+ "dollaro di kiribati": "KID",
+ "キリバスの通貨": "KID",
+ "кирибатийский доллар": "KID",
+ "кирибатски долар": "KID",
+ "franco comorano": "KMF",
+ "פרנק קומורואי": "KMF",
+ "komoransk franc": "KMF",
+ "cf": "KMF",
+ "kmf": "KMF",
+ "₩": [
+ "KRW",
+ "KPW"
+ ],
+ "won de corea del nord": "KPW",
+ "won de la república democràtica popular de corea": "KPW",
+ "nord korea vono": "KPW",
+ "wŏn norcoreano": "KPW",
+ "põhja korea won": "KPW",
+ "kpw": "KPW",
+ "北朝鮮ウォン": "KPW",
+ "šiaurės korėjos vonas": "KPW",
+ "won da coreia do norte": "KPW",
+ "won da república democrática popular da coreia": "KPW",
+ "won da república popular democrática da coreia": "KPW",
+ "вона кндр": "KPW",
+ "валюта кндр": "KPW",
+ "северо корейская вона": "KPW",
+ "вона": [
+ "KRW",
+ "KPW"
+ ],
+ "won bắc triều tiên": "KPW",
+ "北韓元": "KPW",
+ "朝元": "KPW",
+ "朝鲜元": "KPW",
+ "朝鲜货币改革": "KPW",
+ "ون كوريا الجنوبية": "KRW",
+ "وون": "KRW",
+ "won de corea del sud": "KRW",
+ "won de la república de corea": "KRW",
+ "won": "KRW",
+ "krw": "KRW",
+ "sud korea vono": "KRW",
+ "jeon": "KRW",
+ "lõuna korea won": "KRW",
+ "وون کرهٔ جنوبی": "KRW",
+ "וון דרום קוריאני": "KRW",
+ "韓国ウォン": "KRW",
+ "won sud corean": "KRW",
+ "won da coreia do sul": "KRW",
+ "won da república da coreia": "KRW",
+ "валюта республики корея": "KRW",
+ "đại hàn dân quốc weon": "KRW",
+ "南韓圓": "KRW",
+ "南韓圜": "KRW",
+ "圜": "KRW",
+ "韓元": "KRW",
+ "韓圜": "KRW",
+ "韩元": "KRW",
+ "韩圆": "KRW",
+ "韩币": "KRW",
+ "الدينار الكويتي": "KWD",
+ "KD": "KWD",
+ "dinar de kuwait": "KWD",
+ "kwd": "KWD",
+ "dinar kuwaiti": "KWD",
+ "kwt": "KWD",
+ "dinar du koweït": "KWD",
+ "dinar koweitien": "KWD",
+ "dinar kowéitien": "KWD",
+ "denar couaitiano": "KWD",
+ "denar covaitiano": "KWD",
+ "denar coveitiano": "KWD",
+ "denar cuaitiano": "KWD",
+ "denar koweitiano": "KWD",
+ "denar kuaitiano": "KWD",
+ "denar kuweitiano": "KWD",
+ "denar quaitiano": "KWD",
+ "dinar coaitiano": "KWD",
+ "dinar couaitiano": "KWD",
+ "dinar covaitiano": "KWD",
+ "dinar coveiteano": "KWD",
+ "dinar coveitiano": "KWD",
+ "dinar cuveitiano": "KWD",
+ "dinar kuweitiano": "KWD",
+ "dinar quaitiano": "KWD",
+ "валюта кувейта": "KWD",
+ "ك": "KWD",
+ "குவைத்தி தினார்": "KWD",
+ "科威特第纳尔": "KWD",
+ "د.ك": "KWD",
+ "CI$": "KYD",
+ "kyd": "KYD",
+ "ci$": "KYD",
+ "δολάριο νησιών καϋμάν": "KYD",
+ "δολάριο νήσων καϋμάν": "KYD",
+ "δολάριο των νησιών καϋμάν": "KYD",
+ "dolar caimano": "KYD",
+ "dolar de las islas caiman": "KYD",
+ "dolar de las islas caimán": "KYD",
+ "dólar caimano": "KYD",
+ "dólar de las islas caiman": "KYD",
+ "דולר קיימני": "KYD",
+ "ケイマン諸島ドル": "KYD",
+ "kaimanų doleris": "KYD",
+ "caymaneilandse dollar": "KYD",
+ "dolar de las illas caiman": "KYD",
+ "доллар островов кайман": "KYD",
+ "кајмански долар": "KYD",
+ "₸": "KZT",
+ "тенге": "KZT",
+ "kazašské tenge": "KZT",
+ "kazašský tenge": "KZT",
+ "tenge casachstan": "KZT",
+ "kzt": "KZT",
+ "〒": "KZT",
+ "تنگه": "KZT",
+ "tengue": "KZT",
+ "טנגה": "KZT",
+ "kazachijos tengė": "KZT",
+ "tengė": "KZT",
+ "tenge kazachski": "KZT",
+ "tengue cazaque": "KZT",
+ "tenge kazah": "KZT",
+ "валюта казахстана": "KZT",
+ "казахский тенге": "KZT",
+ "символ тенге": "KZT",
+ "тенге казахстана": "KZT",
+ "тенге казахстанский": "KZT",
+ "теньге": "KZT",
+ "теңге": "KZT",
+ "kazakstansk tenge": "KZT",
+ "கசக்ஸ்தானி டெங்கே": "KZT",
+ "казахстанський тенге": "KZT",
+ "坚戈": "KZT",
+ "堅戈": "KZT",
+ "كيب": "LAK",
+ "₭": "LAK",
+ "kip laosià": "LAK",
+ "lak": "LAK",
+ "₭n": "LAK",
+ "kip laotien": "LAK",
+ "laoški kip": "LAK",
+ "ラオスの通貨": "LAK",
+ "ラオス・キープ": "LAK",
+ "kipas": "LAK",
+ "kipe": "LAK",
+ "валюта лаоса": "LAK",
+ "кип": "LAK",
+ "кип свободы": "LAK",
+ "лаоски нови кип": "LAK",
+ "нови кип": "LAK",
+ "laotisk kip": "LAK",
+ "kip lào": "LAK",
+ "kíp": "LAK",
+ "基普": "LAK",
+ "ليره لبنانيه": "LBP",
+ "ل.ل.": "LBP",
+ "lira de líban": "LBP",
+ "lira del líban": "LBP",
+ "lira libanesa": "LBP",
+ "lliura de líban": "LBP",
+ "lliura del líban": "LBP",
+ "punt libanus": "LBP",
+ "libanon pfund": "LBP",
+ "l£": "LBP",
+ "lbp": "LBP",
+ "lebanese lira": "LBP",
+ "libana pundo": "LBP",
+ "لیرهٔ لبنان": "LBP",
+ "پوند لبنان": "LBP",
+ "libanese pond": "LBP",
+ "liura libanesa": "LBP",
+ "libra do líbano": "LBP",
+ "валюта ливана": "LBP",
+ "ливанская лира": "LBP",
+ "libanonska lira": "LBP",
+ "ل.ل": "LBP",
+ "ліванська ліра": "LBP",
+ "LL": "LBP",
+ "روبية سريلانكية": "LKR",
+ "روبيه سريلانكي": "LKR",
+ "₨": [
+ "SCR",
+ "PKR",
+ "NPR",
+ "MUR",
"LKR"
- ],
- "botswaanse pula": [
- "BWP"
- ],
- "co\u0301rdoba nicaraguayen": [
- "NIO"
- ],
- "c$": [
- "NIO",
- "CAD"
- ],
- "oost caraibische dollar": [
- "XCD"
- ],
- "guyanese dollar": [
- "GYD"
- ],
- "indonesische roepia": [
- "IDR"
- ],
- "corone ceche": [
- "CZK"
- ],
- "franco cfa de a\u0301frica occidental": [
- "XOF"
- ],
- "currency of mexico": [
- "MXN"
- ],
- "kwanza reajustado": [
- "AOA"
- ],
- "botswanai pula": [
- "BWP"
- ],
- "reais": [
- "BRL"
- ],
- "cve": [
- "CVE"
- ],
- "flori\u0301n suriname\u0301s": [
- "SRG"
- ],
- "franc djibouti": [
- "DJF"
- ],
- "do\u0301lar beliceno": [
- "BZD"
- ],
- "forint hu\u0301ngaro": [
- "HUF"
- ],
- "iranischer rial": [
- "IRR"
- ],
- "tenge": [
- "KZT"
- ],
- "czechoslovak koruna": [
- "CSK"
- ],
- "grivna ucraniana": [
- "UAH"
- ],
- "dinar alge\u0301rien": [
- "DZD"
- ],
- "rupia esrilanquesa": [
+ ],
+ "Rs": "LKR",
+ "rupia cingalesa": "LKR",
+ "rupia de ceilan": "LKR",
+ "rupia singalesa": "LKR",
+ "rupee sri lanca": "LKR",
+ "sri lanka rupee": "LKR",
+ "lkr": "LKR",
+ "lankan rupee": "LKR",
+ "sri lankansk rupee": "LKR",
+ "srilankan rupee": "LKR",
+ "srilankansk rupee": "LKR",
+ "slrs": "LKR",
+ "sri lankan rupees": "LKR",
+ "tamil rupee": "LKR",
+ "rupia esrilanquesa": "LKR",
+ "rupia ceilandesa": "LKR",
+ "rupia ceilanesa": "LKR",
+ "rupia de seychelles": [
+ "SCR",
"LKR"
- ],
- "kyrgyz som": [
- "KGS"
- ],
- "turkmeense manat": [
- "TMT"
- ],
- "hryvnia ukrainienne": [
- "UAH"
- ],
- "dollaro di singapore": [
- "SGD"
- ],
- "dolar de belize": [
- "BZD"
- ],
- "boli\u0301vares": [
- "VEF"
- ],
- "sterlina di gibilterra": [
- "GIP"
- ],
- "shilling ougandais": [
- "UGX"
- ],
- "rupia pakistani\u0301": [
- "PKR"
- ],
- "united arab emirates dirham": [
- "AED"
- ],
- "php": [
- "PHP"
- ],
- "\u03b4\u03c1": [
- "GRD"
- ],
- "lari georgiano": [
- "GEL"
- ],
- "kip laotien": [
- "LAK"
- ],
- "uquiya": [
- "MRO"
- ],
- "francs or": [
- "XFO"
- ],
- "dinar": [
- "TND",
- "DZD"
- ],
- "shilling tanzanien": [
- "TZS"
- ],
- "kongo\u0301i frank": [
- "CDF"
- ],
- "franco de yibuti": [
- "DJF"
- ],
- "dirham marroqui\u0301": [
- "MAD"
- ],
- "florin hungaro": [
- "HUF"
- ],
- "tyjyn": [
- "KGS"
- ],
- "di\u0301rham de los emiratos a\u0301rabes unidos": [
- "AED"
- ],
- "florin arubais": [
- "AWG"
- ],
- "la couronne danoise": [
- "DKK"
- ],
- "gambian dalasi": [
- "GMD"
- ],
- "szuda\u0301ni font": [
- "SDG"
- ],
- "corona svedese": [
- "SEK"
- ],
- "colombiaanse peso": [
- "COP"
- ],
- "dirham marocchino": [
- "MAD"
- ],
- "won sud core\u0301en": [
- "KRW"
- ],
- "seychellois rupee": [
- "SCR"
- ],
- "gibraltarees pond": [
- "GIP"
- ],
- "franc fort": [
- "FRF"
- ],
- "schweizerfranken": [
- "CHF"
- ],
- "livre soudanaise": [
- "SDG"
- ],
- "manat aze\u0301ri": [
- "AZN"
- ],
- "nuevo she\u0301kel": [
- "ILS"
- ],
- "paraguayaanse guarani": [
- "PYG"
- ],
- "trinidad and tobago dollar": [
- "TTD"
- ],
- "tiyin": [
- "UZS"
- ],
- "dollar de belize": [
- "BZD"
- ],
- "nuovo siclo": [
- "ILS"
- ],
- "pyas": [
- "MMK"
- ],
- "liberiaanse dollar": [
- "LRD"
- ],
- "quetzal guatemalteco": [
- "GTQ"
- ],
- "naira nige\u0301rian": [
- "NGN"
- ],
- "balboa panameno": [
- "PAB"
- ],
- "indian rupee": [
- "INR"
- ],
- "bahreini dina\u0301r": [
- "BHD"
- ],
- "zuid afrikaanse rand": [
- "ZAR"
- ],
- "roepia": [
- "IDR"
- ],
- "dollar bermudien": [
- "BMD"
- ],
- "loti del lesotho": [
+ ],
+ "rupia srilanquesa": "LKR",
+ "rupia tamil": "LKR",
+ "روپيه سري لانكا": "LKR",
+ "روپيه سريلانكا": "LKR",
+ "روپيهٔ سري لانكا": "LKR",
+ "روپیه سری لانکا": "LKR",
+ "روپیهٔ سری لانکا": "LKR",
+ "روپیهٔ سریلانکا": "LKR",
+ "roupie du sri lanka": "LKR",
+ "רופי סרי לנקי": "LKR",
+ "srilankaanse roepie": "LKR",
+ "srilankaanse rupee": "LKR",
+ "rupia sri lanki": "LKR",
+ "rúpia do sri lanka": "LKR",
+ "rupia do seri lanca": "LKR",
+ "rupia do sri lanca": "LKR",
+ "ланкийская рупия": "LKR",
+ "валюта шри ланки": "LKR",
+ "рупија шри ланке": "LKR",
+ "шриланканска рупија": "LKR",
+ "lankesisk rupie": "LKR",
+ "sri lankesisk rupee": "LKR",
+ "sri lankesisk rupie": "LKR",
+ "රු": "LKR",
+ "இலங்கை ரூபா": "LKR",
+ "ланкійська рупія": "LKR",
+ "Lib$": "LRD",
+ "dòlar de libèria": "LRD",
+ "lib$": "LRD",
+ "δολλάριο λιβερίας": "LRD",
+ "dolar liberiano": "LRD",
+ "dollar liberien": "LRD",
+ "リベリアドル": "LRD",
+ "dolar liberian": "LRD",
+ "валюта либерии": "LRD",
+ "l$": "LRD",
+ "lrd": "LRD",
+ "liberisk dollar": "LRD",
+ "L$": "LRD",
+ "لوتي": "LSL",
+ "M": "LSL",
+ "lisente": "LSL",
+ "loti lesothan": "LSL",
+ "לוטי": "LSL",
+ "לוטי לסוטו": "LSL",
+ "loti del lesotho": "LSL",
+ "レソト・ロチ": "LSL",
+ "валюта лесото": "LSL",
+ "лоти": "LSL",
+ "lesothisk loti": "LSL",
+ "l": [
+ "SZL",
"LSL"
- ],
- "hondurese lempira": [
- "HNL"
- ],
- "tsjecho slowaakse kroon": [
- "CSK"
- ],
- "do\u0301lar de barbados": [
- "BBD"
- ],
- "su\u0308dafrikanischer rand": [
- "ZAR"
- ],
- "szau\u0301di ria\u0301l": [
- "SAR"
- ],
- "szerb dina\u0301r": [
- "RSD"
- ],
- "roupie du ne\u0301pal": [
- "NPR"
- ],
- "dinaro": [
- "BHD"
- ],
- "balboa": [
- "PAB"
- ],
- "rublo sovie\u0301tico": [
- "SUR"
- ],
- "dollar de la caraibe orientale": [
- "XCD"
- ],
- "dolar bruneano": [
- "BND"
- ],
- "dollaro canadese": [
- "CAD"
- ],
- "arubai florin": [
- "AWG"
- ],
- "somali shilling": [
- "SOS"
- ],
- "peso oro dominicano": [
- "DOP"
- ],
- "bangladesi taka": [
- "BDT"
- ],
- "lettischer lats": [
- "LVL"
- ],
- "marco della repubblica democratica tedesca": [
- "DDM"
- ],
- "ijslandse kroon": [
- "ISK"
- ],
- "burundi franc": [
- "BIF"
- ],
- "rand sud africain": [
- "ZAR"
- ],
- "corone norvegesi": [
- "NOK"
- ],
- "do\u0301lar caimano": [
- "KYD"
- ],
- "burundi frank": [
- "BIF"
- ],
- "new israeli sheqel": [
- "ILS"
- ],
- "metical mozambicain": [
- "MZN"
- ],
- "dolar de surinam": [
- "SRD"
- ],
- "falkland islands pound": [
- "FKP"
- ],
- "maurita\u0301niai ouguiya": [
- "MRO"
- ],
- "u\u0301j ze\u0301landi dolla\u0301r": [
- "NZD"
- ],
- "lats leton": [
- "LVL"
- ],
- "somoni tagico": [
- "TJS"
- ],
- "mozambikaanse metical": [
- "MZN"
- ],
- "dollaro delle bermuda": [
- "BMD"
- ],
- "dolar de hong kong": [
- "HKD"
- ],
- "dollaro delle bermude": [
- "BMD"
- ],
- "balboa panamense": [
- "PAB"
- ],
- "roupie srilankaise": [
- "LKR"
- ],
- "fya\u0308n": [
- "THB"
- ],
- "dolar guyanes": [
- "GYD"
- ],
- "franc suisse": [
- "CHF"
- ],
- "rial irani\u0301": [
- "IRR"
- ],
- "myanmarese kyat": [
+ ],
+ "lsl": "LSL",
+ "m": "LSL",
+ "lesoto lotisi": "LSL",
+ "лоті": "LSL",
+ "الدينار الليبي": "LYD",
+ "LD": "LYD",
+ "الدينار ليبي": "LYD",
+ "dinar de líbia": "LYD",
+ "dinar libya": "LYD",
+ "lyd": "LYD",
+ "ld": "LYD",
+ "דינר לובי ": "LYD",
+ "dinar libian": "LYD",
+ "валюта ливии": "LYD",
+ "ل.د": "LYD",
+ "dirham de marroc": "MAD",
+ "dirham del marroc": "MAD",
+ "dirham marroquí": "MAD",
+ "maza": "MAD",
+ "dirham marroqui": "MAD",
+ "דירהם מרוקני": "MAD",
+ "dirham marroquino": "MAD",
+ "dirame de marrocos": "MAD",
+ "dirame do marrocos": "MAD",
+ "dirame marroquino": "MAD",
+ "dirham de marrocos": "MAD",
+ "dirham do marrocos": "MAD",
+ "валюта марокко": "MAD",
+ "марокканский дирхем": "MAD",
+ "дирхем": "MAD",
+ "mad": "MAD",
+ "摩洛哥迪拉姆": "MAD",
+ "монаски франк": "MCF",
+ "franc de mònaco": "MCF",
+ "monegassischer franken": "MCF",
+ "φράγκο του μονακό": "MCF",
+ "monegasque franc": "MCF",
+ "mcf": "MCF",
+ "monaka franko": "MCF",
+ "franco de monaco": "MCF",
+ "franco de mónaco": "MCF",
+ "franc monegasque": "MCF",
+ "monacói frank": "MCF",
+ "モナコ・フラン": "MCF",
+ "монакский франк": "MCF",
+ "монегаскский франк": "MCF",
+ "франк монегасский": "MCF",
+ "молдовска леа": "MDL",
+ "молдовски леи": "MDL",
+ "leu de moldàvia": "MDL",
+ "mdl": "MDL",
+ "moldavský leu": "MDL",
+ "moldawischer leu": "MDL",
+ "μολδαβικό λέου": "MDL",
+ "moldava leŭo": "MDL",
+ "moldavia leŭo": "MDL",
+ "ליאו מולדובני": "MDL",
+ "moldavski leu": "MDL",
+ "moldován lej": "MDL",
+ "モルドバの通貨": "MDL",
+ "モルドバ・レイ": "MDL",
+ "moldovos lėja": "MDL",
+ "lej mołdawski": "MDL",
+ "leu da moldávia": "MDL",
+ "leul moldovenesc": "MDL",
+ "валюта молдавии": "MDL",
+ "лей": [
+ "RON",
+ "MDL"
+ ],
+ "молдавський лей": "MDL",
+ "ارياري": "MGA",
+ "Ar": "MGA",
+ "iraimbilanja": "MGA",
+ "madagascan ariary": "MGA",
+ "ariaro": "MGA",
+ "madagaskara ariaro": "MGA",
+ "آریاری": "MGA",
+ "ariary malagasy": "MGA",
+ "franc malgache": "MGA",
+ "איראימבילאנג'ה": "MGA",
+ "mga": "MGA",
+ "アリアリ": "MGA",
+ "ariaris": "MGA",
+ "ariari": "MGA",
+ "ariari de madagascar": "MGA",
+ "ariari de madagáscar": "MGA",
+ "ariari malgaxe": "MGA",
+ "ariary de madagascar": "MGA",
+ "ariary de madagáscar": "MGA",
+ "ариари": "MGA",
+ "валюта мадагаскара": "MGA",
+ "малгашки ариари": "MGA",
+ "madagaskisk ariary": "MGA",
+ "ar": "MGA",
+ "mgf": "MGA",
+ "madagaskar ariarysi": "MGA",
+ "malgaş ariarysi": "MGA",
+ "阿里亚里": "MGA",
+ "阿里亞里": "MGA",
+ "ден": "MKD",
+ "денар": "MKD",
+ "denar macedoni": "MKD",
+ "denar normacedoni": "MKD",
+ "dinar de macedònia": "MKD",
+ "dinar macedoni": "MKD",
+ "dinar normacedoni": "MKD",
+ "makedonský dinár": "MKD",
+ "makedonsk denar": "MKD",
+ "denari": "MKD",
+ "mkd": "MKD",
+ "δηνάριο πγδμ": "MKD",
+ "makedonia denaro": "MKD",
+ "dinar macedonio": "MKD",
+ "makedoonia denaar": "MKD",
+ "makedonian denaari": "MKD",
+ "denar macedone": "MKD",
+ "denaro macedone": "MKD",
+ "マケドニア・ディナール": "MKD",
+ "denaras": "MKD",
+ "noord macedonische denar": "MKD",
+ "denar da macedónia": "MKD",
+ "denar da macedônia": "MKD",
+ "denar macedónio": "MKD",
+ "denar macedônio": "MKD",
+ "dinar da macedónia": "MKD",
+ "dinar da macedônia": "MKD",
+ "dinar macedônio": "MKD",
+ "валюта республики македонии": "MKD",
+ "macedónsky dinár": "MKD",
+ "மாக்கடோனிய தெனார்": "MKD",
+ "மாக்கடோனியன் டெனார்": "MKD",
+ "македонський динар": "MKD",
+ "馬其頓代納爾": "MKD",
+ "馬其頓德納爾": "MKD",
+ "DEN": "MKD",
+ "K": [
+ "ZMW",
+ "PGK",
"MMK"
- ],
- "costa ricaanse colo\u0301n": [
- "CRC"
- ],
- "corona checa": [
- "CZK"
- ],
- "thai baht": [
- "THB"
- ],
- "djiboutiaanse frank": [
- "DJF"
- ],
- "schkalim": [
- "ILS"
- ],
- "\u17db": [
- "KHR"
- ],
- "franc djiboutien": [
- "DJF"
- ],
- "dinar koweitien": [
- "KWD"
- ],
- "loonie": [
- "CAD"
- ],
- "denari": [
- "MKD"
- ],
- "lvl": [
- "LVL"
- ],
- "hryvnja": [
- "UAH"
- ],
- "lempira hondurien": [
- "HNL"
- ],
- "franc guineen": [
- "GNF"
- ],
- "seychelles rupee": [
- "SCR"
- ],
- "leu rumeno": [
- "RON"
- ],
- "dirham emirati": [
- "AED"
- ],
- "co\u0301rdoba nicarague\u0301en": [
- "NIO"
- ],
- "neuseeland dollar": [
- "NZD"
- ],
- "\u20aa": [
- "ILS"
- ],
- "bahamai dolla\u0301r": [
- "BSD"
- ],
- "szi\u0301r font": [
- "SYP"
- ],
- "nieuwe israelische sjekel": [
- "ILS"
- ],
- "franc francais": [
- "FRF"
- ],
- "jamaicaanse dollar": [
- "JMD"
- ],
- "burmese kyat": [
+ ],
+ "kyat birmà": "MMK",
+ "mmk": "MMK",
+ "burmese kyat": "MMK",
+ "k": [
+ "PGK",
+ "MWK",
"MMK"
- ],
- "do\u0301lar de belize": [
- "BZD"
- ],
- "tunis dinar": [
- "TND"
- ],
- "hrywnja": [
- "UAH"
- ],
- "do\u0301lar de belice": [
- "BZD"
- ],
- "koeweitse dinar": [
- "KWD"
- ],
- "rial yemeni": [
- "YER"
- ],
- "quetzal": [
- "GTQ"
- ],
- "livres sterlings": [
- "GBP"
- ],
- "hnl": [
- "HNL"
- ],
- "franco cfa de a\u0301frica central": [
+ ],
+ "ks": "MMK",
+ "کیات": "MMK",
+ "pyas": "MMK",
+ "бирманский кьят": "MMK",
+ "валюта мьянмы": "MMK",
+ "кейат": "MMK",
+ "къят": "MMK",
+ "мьянманский кьят": "MMK",
+ "мьянманский чат": "MMK",
+ "мијанмарски кјат": "MMK",
+ "мјанмарски киат": "MMK",
+ "burmesisk kyat": "MMK",
+ "buk": "MMK",
+ "myanmar kyatı": "MMK",
+ "kyat myanma": "MMK",
+ "缅元": "MMK",
+ "緬甸元": "MMK",
+ "توغروغ": "MNT",
+ "₮": "MNT",
+ "tugrug": "MNT",
+ "tögrök": "MNT",
+ "tögrög mongolia": "MNT",
+ "mongolischer tögrög": "MNT",
+ "möngö": "MNT",
+ "togrog": "MNT",
+ "tugrig": "MNT",
+ "mnt": "MNT",
+ "mongolian tughrik": "MNT",
+ "tughrik": "MNT",
+ "tögrög mongol": "MNT",
+ "توگروگ": "MNT",
+ "تاگریک": "MNT",
+ "توگریک": "MNT",
+ "төгрөг": "MNT",
+ "טוגריק": "MNT",
+ "מטבע מונגוליה": "MNT",
+ "mongolski tögrög": "MNT",
+ "トゥグリク": "MNT",
+ "ドグログ": "MNT",
+ "tiugrikas": "MNT",
+ "монгольский тугрик": "MNT",
+ "валюта монголии": "MNT",
+ "mongolisk tögrög": "MNT",
+ "图格里克": "MNT",
+ "MOP$": "MOP",
+ "macao pataca": "MOP",
+ "mop": "MOP",
+ "mop$": "MOP",
+ "patako": "MOP",
+ "پاتاکای ماکانز": "MOP",
+ "patacas": "MOP",
+ "валюта макао": "MOP",
+ "макаонска патака": "MOP",
+ "macaoisk pataca": "MOP",
+ "pataca macau": "MOP",
+ "澳門元": "MOP",
+ "澳门元": "MOP",
+ "澳门币": "MOP",
+ "葡币": "MOP",
+ "葡幣": "MOP",
+ "أ.م.": "MRO",
+ "mro": "MRO",
+ "UM": "MRO",
+ "mur": "MUR",
+ "mauritisk rupee": "MUR",
+ "mauritius rupee": "MUR",
+ "ρουπία μαυρίκιου": "MUR",
+ "rupia mauricia": "MUR",
+ "rupia mauriciense": "MUR",
+ "רופי מאוריציני": "MUR",
+ "mauritiaanse rupee": "MUR",
+ "ropia de maurici": "MUR",
+ "روفيه": "MVR",
+ "MRF": "MVR",
+ "rupia de maldives": "MVR",
+ "mvr": "MVR",
+ "maldivisk rufiyaa": "MVR",
+ "laari": "MVR",
+ "malediven rupie": "MVR",
+ "rupia maldiva": "MVR",
+ "روفیهٔ مالدیو": "MVR",
+ "maldív szigeteki rúfia": "MVR",
+ "ルフィア": "MVR",
+ "ルフィヤー": "MVR",
+ "rufija": "MVR",
+ "rópia de las maldivas": "MVR",
+ "валюта мальдив": "MVR",
+ "мальдивская рупия": "MVR",
+ "руфия": "MVR",
+ "малдивска рупија": "MVR",
+ "rf.": "MVR",
+ "maldiv rufiyaası": "MVR",
+ "ރ": "MVR",
+ "Rf": "MVR",
+ "كواشا": "MWK",
+ "MK": "MWK",
+ "malawská kvača": "MWK",
+ "tambala": "MWK",
+ "kwacha malaui": "MWK",
+ "kwacha malawite": "MWK",
+ "kwacha del malawi": "MWK",
+ "mwk": "MWK",
+ "malawiaanse kwacha": "MWK",
+ "kwacha do malaui": "MWK",
+ "kwacha do malauí": "MWK",
+ "kwacha do malavi": "MWK",
+ "kwacha do malawi": "MWK",
+ "kwacha do malávi": "MWK",
+ "kwacha malauiana": "MWK",
+ "kwacha malauiano": "MWK",
+ "kwacha malaviana": "MWK",
+ "kwacha malawiana": "MWK",
+ "валюта малави": "MWK",
+ "квача": [
+ "ZMW",
+ "MWK"
+ ],
+ "malavi kwachası": "MWK",
+ "البيزو المكسيكي": "MXN",
+ "mxn": "MXN",
+ "pes mexicà": "MXN",
+ "peso de mèxic": "MXN",
+ "mx$": "MXN",
+ "mexican un peso coinage": "MXN",
+ "mexican centavo": "MXN",
+ "mexican nuevo peso": "MXN",
+ "currency of mexico": "MXN",
+ "peso de mejico": "MXN",
+ "peso de mexico": "MXN",
+ "peso de méjico": "MXN",
+ "peso de méxico": "MXN",
+ "peso mejicano": "MXN",
+ "mehhiko peeso": "MXN",
+ "mexikar peso": "MXN",
+ "پزو مكزيك": "MXN",
+ "פזו מקסיקני": "MXN",
+ "meksički peso": "MXN",
+ "mexikói pezó": "MXN",
+ "メキシコの通貨": "MXN",
+ "墨ペソ": "MXN",
+ "мексиканский песо": "MXN",
+ "мексиканское новое песо": "MXN",
+ "песо мексиканское": "MXN",
+ "нови мексички пезос": "MXN",
+ "нови мексички песо": "MXN",
+ "mxp": "MXN",
+ "peso mexico": "MXN",
+ "unidad de inversion": "MXV",
+ "mexican unidad de inversion": "MXV",
+ "unidades de inversion": "MXV",
+ "メキシコ投資単位": "MXV",
+ "رينغيت": "MYR",
+ "RM": "MYR",
+ "myr": "MYR",
+ "rm": "MYR",
+ "ringgit malaysia": "MYR",
+ "dolar malasio": "MYR",
+ "dólar malasio": "MYR",
+ "رینگیت": "MYR",
+ "רינגיט מלזי": "MYR",
+ "ringgit malese": "MYR",
+ "malaysisk ringgit": "MYR",
+ "малайзійський ринґіт": "MYR",
+ "马來西亚令吉": "MYR",
+ "林吉特": "MYR",
+ "零吉": "MYR",
+ "متكال": "MZN",
+ "MT": "MZN",
+ "mozambický metical": "MZN",
+ "metical mosambic": "MZN",
+ "mzm": "MZN",
+ "meticais": "MZN",
+ "metikalo": "MZN",
+ "metical mozambiqueno": "MZN",
+ "متیکال موزایکی": "MZN",
+ "metical mozambicain": "MZN",
+ "מטיקל מוזמביני": "MZN",
+ "mozambijski metikal": "MZN",
+ "mozambijski metical": "MZN",
+ "metical del mozambico": "MZN",
+ "モザンビーク・メティカル": "MZN",
+ "metikalas": "MZN",
+ "mozambiko metikalas": "MZN",
+ "mozambiko metikalis": "MZN",
+ "oude metical": "MZN",
+ "metical da nova família": "MZN",
+ "metical de moçambique": "MZN",
+ "metical moçambicano": "MZN",
+ "валюта мозамбика": "MZN",
+ "метикал": "MZN",
+ "moçambikisk metical": "MZN",
+ "mt": "MZN",
+ "mzn": "MZN",
+ "N$": "NAD",
+ "намибски долар": "NAD",
+ "dòlar de namíbia": "NAD",
+ "dòlar namibi": "NAD",
+ "n$": "NAD",
+ "namibischer dollar": "NAD",
+ "nad": "NAD",
+ "dolar de namibia": "NAD",
+ "dolar namibio": "NAD",
+ "dólar de namibia": "NAD",
+ "מטבע נמיביה": "NAD",
+ "dollaro della namibia": "NAD",
+ "ナミビアドル": "NAD",
+ "dólar namibiano": "NAD",
+ "dólar namíbio": "NAD",
+ "намибийский доллар": "NAD",
+ "намібський долар": "NAD",
+ "نايرا": "NGN",
+ "₦": "NGN",
+ "نيرا": "NGN",
+ "نيرة": "NGN",
+ "نيره": "NGN",
+ "najro": "NGN",
+ "niĝera najro": "NGN",
+ "naira nigérian": "NGN",
+ "ナイジェリア・ナイラ": "NGN",
+ "naira nigeriano": "NGN",
+ "нигерийская найра": "NGN",
+ "валюта нигерии": "NGN",
+ "нигерийский найр": "NGN",
+ "nigérijská naira": "NGN",
+ "наира": "NGN",
+ "nigeriansk naira": "NGN",
+ "ngn": "NGN",
+ "奈拉": "NGN",
+ "尼日利亚奈拉": "NGN",
+ "كوردوبا نيكاراجوي": "NIO",
+ "córdoba nicaragüenc": "NIO",
+ "córdoba nicaragüenca": "NIO",
+ "nicaraguanischer córdoba": "NIO",
+ "mariana montserrat": "NIO",
+ "nicaraguan cordoba": "NIO",
+ "cordoba nicaraguense": "NIO",
+ "cordoba nicaragüense": "NIO",
+ "córdoba nicaragüense": "NIO",
+ "کوردوبا نیکاراگوئه": "NIO",
+ "cordoba nicaraguayen": "NIO",
+ "córdoba nicaraguayen": "NIO",
+ "córdoba nicaraguéen": "NIO",
+ "nikaragvanska córdoba": "NIO",
+ "100ドル紙幣": "NIO",
+ "コルドバ・オロ": "NIO",
+ "nicaraguaanse cordoba": "NIO",
+ "córdoba ouro": "NIO",
+ "córdoba nicaraguano": "NIO",
+ "nio": "NIO",
+ "валюта никарагуа": "NIO",
+ "золотая кордоба": "NIO",
+ "кордоба": "NIO",
+ "кордобас": "NIO",
+ "новая никарагуанская кордоба": "NIO",
+ "никарагванска златна кордоба": "NIO",
+ "никарагванска кордоба оро": "NIO",
+ "nicaraguansk córdoba": "NIO",
+ "nikaragua kordobası": "NIO",
+ "нікарагуанська кордова": "NIO",
+ "درام كراباخي": "NKD",
+ "درهم قرة باغ": "NKD",
+ "dram d'artsakh": "NKD",
+ "nagorno karabakh dram": "NKD",
+ "dram de nagorno karabaj": "NKD",
+ "dram del alto karabaj": "NKD",
+ "درام قرهباغ": "NKD",
+ "درام قره باغ": "NKD",
+ "درام قرهٔ باغ": "NKD",
+ "vuoristo karabahin dram": "NKD",
+ "dram du haut karabagh": "NKD",
+ "dram de nagorno karabakh": "NKD",
+ "hegyi karabahi dram": "NKD",
+ "ナゴルノ・カラバフ・ドラム": "NKD",
+ "アルツァフ・ドラム": "NKD",
+ "валюта нагорно карабахской республики": "NKD",
+ "нагорно карабахский драм": "NKD",
+ "карабахський драм": "NKD",
+ "阿尔察赫德拉姆": "NKD",
+ "كرونه نروجية": "NOK",
+ "nok": "NOK",
+ "corona de noruega": "NOK",
+ "krone norwy": "NOK",
+ "norsk krone": "NOK",
+ "krone in norwegen": "NOK",
+ "νορβηγική κορόνα": "NOK",
+ "norvegia krono": "NOK",
+ "couronne norvegienne": "NOK",
+ "כתר נורבגי": "NOK",
+ "קרונה נורבגית": "NOK",
+ "corona norvegian": "NOK",
+ "corone norvegesi": "NOK",
+ "ノルウェーの通貨": "NOK",
+ "ノルウェークローネ": "NOK",
+ "noorse kronen": "NOK",
+ "corona norvegiana": "NOK",
+ "coroa da noruega": "NOK",
+ "валюта норвегии": "NOK",
+ "валюта шпицбергена": "NOK",
+ "валюта ян майена": "NOK",
+ "norska kronor": "NOK",
+ "روبي نيبالي": "NPR",
+ "N₨": "NPR",
+ "rupia de nepal": "NPR",
+ "rupia del nepal": "NPR",
+ "npr": "NPR",
+ "nepalesisk rupee": "NPR",
+ "karod": "NPR",
+ "rupia nepali": "NPR",
+ "روپیهٔ نپال": "NPR",
+ "roupie du népal": "NPR",
+ "roupie nepalaise": "NPR",
+ "rupia do nepal": "NPR",
+ "валюта непала": "NPR",
+ "rupie": [
+ "PKR",
+ "NPR"
+ ],
+ "रू": "NPR",
+ "尼泊爾盧比": "NPR",
+ "دلار نیوئه": "NUD",
+ "нијујски долар": "NUD",
+ "الدولار النيوزيلندي": "NZD",
+ "NZ$": "NZD",
+ "دولار نيوزيلندي nzd": "NZD",
+ "dòlar de nova zelanda": "NZD",
+ "dòlars neozelandesos": "NZD",
+ "nzd": "NZD",
+ "new zealandske dollar": "NZD",
+ "newzealandsk dollar": "NZD",
+ "kiwi dollar": "NZD",
+ "nz$": "NZD",
+ "neuseeländischer dollar": "NZD",
+ "δολάριο της νέας ζηλανδίας": "NZD",
+ "nov zelanda dolaro": "NZD",
+ "dolar de nueva zelanda": "NZD",
+ "dolar neocelandes": "NZD",
+ "dolar neocelandés": "NZD",
+ "dolar neozelandes": "NZD",
+ "dolar neozelandés": "NZD",
+ "dolar neozélandes": "NZD",
+ "dolares neozelandeses": "NZD",
+ "dólar neocelandes": "NZD",
+ "dólar neozelandes": "NZD",
+ "dólares neozelandeses": "NZD",
+ "dólar de nueva zelanda": "NZD",
+ "uus meremaa dollar": "NZD",
+ "zeelanda berriko dolar": "NZD",
+ "zeelandaberritar dolarra": "NZD",
+ "zeelandako dolarra": "NZD",
+ "dollar de nouvelle zélande": "NZD",
+ "dollar neo zelandais": "NZD",
+ "dollar néozélandais": "NZD",
+ "דולר ניו זילנד": "NZD",
+ "nzドル": "NZD",
+ "ニュージーランドドル": "NZD",
+ "dólar da nova zelândia": "NZD",
+ "dólar neo zelandês": "NZD",
+ "dolarul neozeelandez": "NZD",
+ "валюта ниуэ": "NZD",
+ "валюта новой зеландии": "NZD",
+ "валюта токелау": "NZD",
+ "紐元": "NZD",
+ "ريال عُماني": "OMR",
+ "ر.ع.": "OMR",
+ "rial d'oman": "OMR",
+ "ománský rial": "OMR",
+ "ománský riál": "OMR",
+ "baiza": "OMR",
+ "rial omani": "OMR",
+ "rial dell'oman": "OMR",
+ "オマーンの通貨": "OMR",
+ "オマーン・リヤル": "OMR",
+ "omanitische rial": "OMR",
+ "rial de omã": "OMR",
+ "rial de omão": "OMR",
+ "rial do omã": "OMR",
+ "rial do omão": "OMR",
+ "rial omaniano": "OMR",
+ "валюта омана": "OMR",
+ "оманский реал": "OMR",
+ "омански риал": "OMR",
+ "baisa": "OMR",
+ "omr": "OMR",
+ "ஓமானிய ரியால்": "OMR",
+ "بالبوا": "PAB",
+ "B/.": "PAB",
+ "панамски балбоа": "PAB",
+ "pab": "PAB",
+ "balboo": "PAB",
+ "panama balboao": "PAB",
+ "balboa panameno": "PAB",
+ "balboa panameño": "PAB",
+ "balboa panameen": "PAB",
+ "balboa panaméen": "PAB",
+ "מטבע פנמה": "PAB",
+ "balboja": "PAB",
+ "бальбао": "PAB",
+ "бальбоа": "PAB",
+ "балбоа": "PAB",
+ "панамска златна балбоа": "PAB",
+ "panamansk balboa": "PAB",
+ "b/": "PAB",
+ "панамська бальбоа": "PAB",
+ "سول الجديد": "PEN",
+ "S/.": "PEN",
+ "nou sol": "PEN",
+ "sol d'or": "PEN",
+ "sol de oro": "PEN",
+ "peruánský sol": "PEN",
+ "nový sol": "PEN",
+ "nueovo sol": "PEN",
+ "ny sol": "PEN",
+ "neuer sol": "PEN",
+ "peruanischer nuevo sol": "PEN",
+ "νέο σολ περού": "PEN",
+ "nova suno": "PEN",
+ "nuevo sol peruano": "PEN",
+ "pen": "PEN",
+ "s/": "PEN",
+ "s/.": "PEN",
+ "sol peruano": "PEN",
+ "سل جدید پرو": "PEN",
+ "perun nuevo sol": "PEN",
+ "nouveau sol": "PEN",
+ "perui új sol": "PEN",
+ "nuovo sol": "PEN",
+ "sol novo": "PEN",
+ "moeda peruana": "PEN",
+ "novo sol peruano": "PEN",
+ "валюта перу": "PEN",
+ "новый соль": "PEN",
+ "соль": "PEN",
+ "нови сол": "PEN",
+ "перуански нуево сол": "PEN",
+ "peruansk sol": "PEN",
+ "peru nueva solü": "PEN",
+ "новий соль": "PEN",
+ "новий перуанський соль": "PEN",
+ "κίνα": "PGK",
+ "pgk": "PGK",
+ "קינה": "PGK",
+ "パプアニューギニア・キナ": "PGK",
+ "papoea nieuw guinese kina": "PGK",
+ "kina papuásia": "PGK",
+ "toea": "PGK",
+ "валюта папуа — новой гвинеи": "PGK",
+ "новогвинејска кина": "PGK",
+ "papuansk kina": "PGK",
+ "валюта папуа — нової гвінеї": "PGK",
+ "بيسو": "PHP",
+ "₱": "PHP",
+ "php": "PHP",
+ "philippine piso": "PHP",
+ "piso": "PHP",
+ "peso de filipinas": "PHP",
+ "پزو": "PHP",
+ "פסו": "PHP",
+ "pezo": "PHP",
+ "pesas": "PHP",
+ "peso de las filipinas": "PHP",
+ "piso filipino": "PHP",
+ "пезо": "PHP",
+ "பெசோ": "PHP",
+ "pesosu": "PHP",
+ "菲律宾比索": "PHP",
+ "rupia de pakistan": "PKR",
+ "rupia del pakistan": "PKR",
+ "pakistanske rupee": "PKR",
+ "pkr": "PKR",
+ "pakistansk rupee": "PKR",
+ "πακιστανική ρουπία": "PKR",
+ "rupia pakistani": "PKR",
+ "rupia de pakistán": "PKR",
+ "روپیهٔ پاکستان": "PKR",
+ "רופי פקיסטני ": "PKR",
+ "pakistaanse rupee": "PKR",
+ "валюта пакистана": "PKR",
+ "زلوتي": "PLN",
+ "zł": "PLN",
+ "полска злотаполска злота": "PLN",
+ "zloty": "PLN",
+ "zloty polonès": "PLN",
+ "złoty polonès": "PLN",
+ "pln": "PLN",
+ "polský zlotý": "PLN",
+ "polský złoty": "PLN",
+ "polsk zloty": "PLN",
+ "polsk złoty": "PLN",
+ "polnischer zloty": "PLN",
+ "polnischer złoty": "PLN",
+ "zlote": "PLN",
+ "zloti": "PLN",
+ "zlotych": "PLN",
+ "złote": "PLN",
+ "złotych": "PLN",
+ "polish zloty": "PLN",
+ "pola zloto": "PLN",
+ "sloti": "PLN",
+ "zloty polaco": "PLN",
+ "zlott": "PLN",
+ "زلوتی": "PLN",
+ "puolan złoty": "PLN",
+ "zloty polonais": "PLN",
+ "złoty polonais": "PLN",
+ "זלוטי פולני": "PLN",
+ "poljski zloti": "PLN",
+ "zloty polonese": "PLN",
+ "złoty polacco": "PLN",
+ "zloty polacco": "PLN",
+ "zl": "PLN",
+ "ズオチ": "PLN",
+ "ズロチ": "PLN",
+ "ポーランド・ズウォティ": "PLN",
+ "poolse zloty": "PLN",
+ "polski złoty": "PLN",
+ "zlóti": "PLN",
+ "zlóti polaco": "PLN",
+ "gros": "PLN",
+ "grosz": "PLN",
+ "валюта польши": "PLN",
+ "злотый": "PLN",
+ "злот": "PLN",
+ "போலந்திய ஸ்வாட்டெ": "PLN",
+ "போலந்து ஸ்வாட்டே": "PLN",
+ "போலிய ஸ்வாட்டே": "PLN",
+ "польський злотий": "PLN",
+ "波蘭茲羅提": "PLN",
+ "兹罗提": "PLN",
+ "茲羅提": "PLN",
+ "dòlar de les illes pitcairn": "PND",
+ "دلار جزایر پیتکارین": "PND",
+ "доллар питкерна": "PND",
+ "доллар питкэрна": "PND",
+ "питкернский доллар": "PND",
+ "питкэрнский доллар": "PND",
+ "皮特凱恩群島元": "PND",
+ "غواراني": "PYG",
+ "₲": "PYG",
+ "paraguayský guarani": "PYG",
+ "pyg": "PYG",
+ "paraguayan guarani": "PYG",
+ "guaraní paraguayo": "PYG",
+ "guarani paraguayen": "PYG",
+ "guaraní paraguayen": "PYG",
+ "paragvajski guaraní": "PYG",
+ "guarani paraguaiano": "PYG",
+ "paragvajaus valiuta": "PYG",
+ "paraguayaanse guaraní": "PYG",
+ "guarani paraguaio": "PYG",
+ "валюта парагвая": "PYG",
+ "гварани": "PYG",
+ "гуарани": "PYG",
+ "гуварани": "PYG",
+ "paraguajské guaraní": "PYG",
+ "paraguayansk guarani": "PYG",
+ "paraguay guaranisi": "PYG",
+ "QR": "QAR",
+ "qatar riyal": "QAR",
+ "riyal catari": "QAR",
+ "rial kataru": "QAR",
+ "qar": "QAR",
+ "ر.ق": "QAR",
+ "لو روماني": "RON",
+ "lei": "RON",
+ "لي روماني": "RON",
+ "румънска леа": "RON",
+ "румънски леи": "RON",
+ "rumunský leu": "RON",
+ "leu": "RON",
+ "rumænsk leu": "RON",
+ "rumänischer ban": "RON",
+ "rumänischer lei": "RON",
+ "λέι": "RON",
+ "ron": "RON",
+ "rumana leŭo": "RON",
+ "lei roumaines": "RON",
+ "novo leu": "RON",
+ "לֵיי רומני": "RON",
+ "rumunjski leu": "RON",
+ "leu romanian": "RON",
+ "leu rumeno": "RON",
+ "ルーマニア・レイ": "RON",
+ "rol": "RON",
+ "leu da roménia": "RON",
+ "leu da romênia": "RON",
+ "roni": "RON",
+ "lei românești": "RON",
+ "leul românesc": "RON",
+ "валюта румынии": "RON",
+ "лей румынский": "RON",
+ "новый лей": "RON",
+ "новый румынский лей": "RON",
+ "старый румынский лей": "RON",
+ "romunski lej": "RON",
+ "rumänska lei": "RON",
+ "ருமேனிய லியு": "RON",
+ "ரொமேனிய லியூ": "RON",
+ "din": "RSD",
+ "dinar de sèrbia": "RSD",
+ "milandor": "RSD",
+ "rsd": "RSD",
+ "دینار صربی": "RSD",
+ "denar da sérvia": "RSD",
+ "denar sérvio": "RSD",
+ "dinar da sérvia": "RSD",
+ "dinar sârb": "RSD",
+ "валюта сербии": "RSD",
+ "сербские динары": "RSD",
+ "csd": "RSD",
+ "din.": "RSD",
+ "செர்பியன் தினார்": "RSD",
+ "дин": "RSD",
+ "الروبل": "RUB",
+ "₽": "RUB",
+ "الروبل الروسي": "RUB",
+ "روبل": "RUB",
+ "rub": "RUB",
+ "rubel": "RUB",
+ "руб": "RUB",
+ "ruble": "RUB",
+ "rusa rublo": "RUB",
+ "vene rubla": "RUB",
+ "errusiar errublo": "RUB",
+ "kopeekka": "RUB",
+ "neuvostoliiton rupla": "RUB",
+ "rur": "RUB",
+ "venäjän federaation rupla": "RUB",
+ "ruska rublja": "RUB",
+ "rublo russe": "RUB",
+ "ソビエト連邦ルーブル": "RUB",
+ "ロシアの通貨": "RUB",
+ "ロシアルーブル": "RUB",
+ "kopeken": "RUB",
+ "rubla rusa": "RUB",
+ "rubla rusă": "RUB",
+ "rublă rusească": "RUB",
+ "рр": "RUB",
+ "рубль": "RUB",
+ "валюта абхазии": "RUB",
+ "валюта днр": "RUB",
+ "валюта лнр": "RUB",
+ "валюта россии": "RUB",
+ "валюта южной осетии": "RUB",
+ "рубль россии": "RUB",
+ "рубль российский": "RUB",
+ "ruski rubelj": "RUB",
+ "kopek": "RUB",
+ "rubler": "RUB",
+ "ryska rubler": "RUB",
+ "sovjetisk rubel": "RUB",
+ "ரஷ்ய ரூபிள்": "RUB",
+ "ruble nga": "RUB",
+ "rúp": "RUB",
+ "俄國盧布": "RUB",
+ "俄羅斯盧布": "RUB",
+ "₣": [
+ "XPF",
+ "RWF"
+ ],
+ "FRw": "RWF",
+ "franc de ruanda": "RWF",
+ "frw": "RWF",
+ "rwanda franc": "RWF",
+ "rwandan frank": "RWF",
+ "rwf": "RWF",
+ "franco de ruanda": "RWF",
+ "franco ruandes": "RWF",
+ "franco do ruanda": "RWF",
+ "руандийский франк": "RWF",
+ "валюта руанды": "RWF",
+ "руандский франк": "RWF",
+ "الريال السعودي": "SAR",
+ "SR": "SAR",
+ "ريال": "SAR",
+ "saudi rial": "SAR",
+ "halalas": "SAR",
+ "sar": "SAR",
+ "sr": [
+ "SCR",
+ "SAR"
+ ],
+ "riyal": "SAR",
+ "rijalo": "SAR",
+ "saŭda rialo": "SAR",
+ "riyal saudi": "SAR",
+ "rial saoudien": "SAR",
+ "ryal saoudien": "SAR",
+ "ריאל": "SAR",
+ "rial saudita": "SAR",
+ "サウジアラビアリヤル": "SAR",
+ "サウジアラビア・リヤール": "SAR",
+ "サウジ・リアル": "SAR",
+ "サウジ・リヤル": "SAR",
+ "サウディ・リヤル": "SAR",
+ "saoedische riyal": "SAR",
+ "saudi arabische riyal": "SAR",
+ "saudische riyal": "SAR",
+ "rial saudian": "SAR",
+ "rial da arábia saudita": "SAR",
+ "riyal da arábia saudita": "SAR",
+ "валюта саудовской аравии": "SAR",
+ "риал саудовской аравии": "SAR",
+ "риял": "SAR",
+ "саудовский риал": "SAR",
+ "саудијски риал": "SAR",
+ "ر.س": "SAR",
+ "suudi riyali": "SAR",
+ "ріал": "SAR",
+ "沙特阿拉伯里亚尔": "SAR",
+ "dòlar de les salomó": "SBD",
+ "dòlar de les illes salomó": "SBD",
+ "dolar šalamounových ostrovů": "SBD",
+ "šalamounský dolar": "SBD",
+ "šalomounský dolar": "SBD",
+ "δολάριο νήσων σολομώντος": "SBD",
+ "δολάριο των νήσων του σολομώντα": "SBD",
+ "solomon dollar": "SBD",
+ "dolar de las islas salomon": "SBD",
+ "dolar de las islas salomón": "SBD",
+ "sbd": "SBD",
+ "dolar salomonense": "SBD",
+ "dólar salomonense": "SBD",
+ "dollar des iles salomon": "SBD",
+ "dollaro delle isole salomone": "SBD",
+ "ソロモン諸島・ドル": "SBD",
+ "dolar de las illas salamon": "SBD",
+ "валюта соломоновых островов": "SBD",
+ "долар соломонских острва": "SBD",
+ "si$": "SBD",
+ "SI$": "SBD",
+ "SRe": "SCR",
+ "seychellisk rupee": "SCR",
+ "seychellerne rupee": "SCR",
+ "seychelles rupee": "SCR",
+ "ρουπία των σεϋχελλών": "SCR",
+ "sre": "SCR",
+ "rupia seychelense": "SCR",
+ "scr": "SCR",
+ "seychelle szigeteki rúpia": "SCR",
+ "セイシェル・ルピー": "SCR",
+ "seychelse roepia": "SCR",
+ "seychelse rupee": "SCR",
+ "валюта сейшел": "SCR",
+ "валюта сейшельских островов": "SCR",
+ "الجنيه السودانى": "SDG",
+ "ج.س": "SDG",
+ "الدينار السودانى": "SDG",
+ "دينار سوداني": "SDG",
+ "суданска лира": "SDG",
+ "lliura del sudan": "SDG",
+ "punt swdan": "SDG",
+ "λίρα σουδάν": "SDG",
+ "sdg": "SDG",
+ "libra de sudán": "SDG",
+ "libra del sudán": "SDG",
+ "dinar soudanais": "SDG",
+ "לירה סודאנית": "SDG",
+ "soedanese pond": "SDG",
+ "валюта судана": "SDG",
+ "sdd": "SDG",
+ "sudanesisk pund": "SDG",
+ "ج.س.": "SDG",
+ "sud£": "SDG",
+ "كرونه سويدية": "SEK",
+ "corona de suècia": "SEK",
+ "sek": "SEK",
+ "svensk krone": "SEK",
+ "svenske kroner": "SEK",
+ "kronor": "SEK",
+ "schwedenkrone": "SEK",
+ "svedia krono": "SEK",
+ "corona": "SEK",
+ "couronne suedoise": "SEK",
+ "coroa sueca svensk krona": "SEK",
+ "כתר שבדי": "SEK",
+ "スウェーデン・クローネ": "SEK",
+ "zweedse kronen": "SEK",
+ "coroa da suécia": "SEK",
+ "валюта аландских островов": "SEK",
+ "валюта швеции": "SEK",
+ "крона швеции": "SEK",
+ "svenska kronor": "SEK",
+ "svenska sedlar": "SEK",
+ "சுவீடன் குரோணர்": "SEK",
+ "S$": "SGD",
+ "s$": "SGD",
+ "sgd": "SGD",
+ "singaporeansk dollar": "SGD",
+ "singaporeanske dollars": "SGD",
+ "dolar de singapur": "SGD",
+ "dollar singapourien": "SGD",
+ "מטבע סינגפור": "SGD",
+ "シンガポールの通貨": "SGD",
+ "シンガポール・ドル": "SGD",
+ "星ドル": "SGD",
+ "dolar de singapor": "SGD",
+ "dólar de cingapura": "SGD",
+ "dólar singapurense": "SGD",
+ "валюта сингапура": "SGD",
+ "сингапуршки долар": "SGD",
+ "சிங்கப்பூர் டாலர்": "SGD",
+ "dollar singapore": "SGD",
+ "đôla singapore": "SGD",
+ "叻元": "SGD",
+ "坡元": "SGD",
+ "新元": "SGD",
+ "新加坡幣": "SGD",
+ "新幣": "SGD",
+ "Le": "SLL",
+ "λεόνε": "SLL",
+ "sll": "SLL",
+ "leone sierra léonais": "SLL",
+ "leone della sierra leone": "SLL",
+ "シエラレオネの通貨": "SLL",
+ "シエラレオネ・レオン": "SLL",
+ "レオネ": "SLL",
+ "leone serra leonino": "SLL",
+ "леоне сьерра леоне": "SLL",
+ "сијералеонске леоне": "SLL",
+ "sierraleonsk leone": "SLL",
+ "Sh.So.": "SOS",
+ "xíling de somàlia": "SOS",
+ "σελίνι της σομαλίας": "SOS",
+ "σομαλιανό σελίνι": "SOS",
+ "currency of somalia": "SOS",
+ "sh.so.": "SOS",
+ "sos": "SOS",
+ "sosh": "SOS",
+ "chelin": [
+ "UGX",
+ "TZS",
+ "SOS"
+ ],
+ "chelin de somalia": "SOS",
+ "chelin somali": "SOS",
+ "chelín": [
+ "UGX",
+ "TZS",
+ "SOS"
+ ],
+ "chelín de somalia": "SOS",
+ "somalian shillinki": "SOS",
+ "somalian sillinki": "SOS",
+ "shilling somali": "SOS",
+ "szomáli shilling": "SOS",
+ "ソマリアシリング": "SOS",
+ "валюта сомали": "SOS",
+ "сомалијски шилинг": "SOS",
+ "shilin": "SOS",
+ "索馬里先令": "SOS",
+ "索马里先令": "SOS",
+ "srd": "SRD",
+ "surinam dollar": "SRD",
+ "δολάριο του σουρινάμ": "SRD",
+ "dolar de surinam": "SRD",
+ "dolar surinames": "SRD",
+ "dolar surinamés": "SRD",
+ "dólar de surinam": "SRD",
+ "dólar surinames": "SRD",
+ "dollar du surinam": "SRD",
+ "dollar surinamien": "SRD",
+ "dollaro del suriname": "SRD",
+ "スリナムドル": "SRD",
+ "dólar surinamense": "SRD",
+ "dólar surinamês": "SRD",
+ "валюта суринама": "SRD",
+ "суринамски гилдер": "SRD",
+ "суринамски гулден": "SRD",
+ "sr$": "SRD",
+ "苏利南元": "SRD",
+ "苏里南元": "SRD",
+ "蘇里南元": "SRD",
+ "Db": [
+ "STN",
+ "SSP"
+ ],
+ "lliura del sudan del sud": "SSP",
+ "südsudan pfund": "SSP",
+ "südsudan pound": "SSP",
+ "sud sudana pundo": "SSP",
+ "libra de sudan del sur": "SSP",
+ "libra de sudán del sur": "SSP",
+ "פאונד דרום סודאני": "SSP",
+ "sterlina sud sudanese": "SSP",
+ "zuid soedanese pond": "SSP",
+ "liura sodanesa": "SSP",
+ "funt południowego sudanu": "SSP",
+ "валюта южного судана": "SSP",
+ "фунт южного судана": "SSP",
+ "южно суданский фунт": "SSP",
+ "ssp": "SSP",
+ "دوبرا": "STN",
+ "دوبرا ساو تومية وبرينسيبية": "STN",
+ "saotomea dobro": "STN",
+ "sao tomea dobro": "STN",
+ "sao tomeo kaj principea dobra": "STN",
+ "دبرای سائوتومه و پرینسیپ": "STN",
+ "dobra santoméen": "STN",
+ "דוברה": "STN",
+ "dobra san tomea i prinsipea": "STN",
+ "dobra svetog tome i principa": "STN",
+ "dobra svetog tome i prinsipa": "STN",
+ "dobra svetog tome i prinsipea": "STN",
+ "dobra svetoga tome i principa": "STN",
+ "dobra svetoga tome i prinsipa": "STN",
+ "dobra svetoga tome i prinsipea": "STN",
+ "santomska dobra": "STN",
+ "saotomska dobra": "STN",
+ "dobra di sao tomé e principe": "STN",
+ "サントメ・プリンシペ・ドブラ": "STN",
+ "stn": "STN",
+ "валюта сан томе и принсипи": "STN",
+ "добра": "STN",
+ "saotomeansk dobra": "STN",
+ "db": "STN",
+ "الليرة السورية": "SYP",
+ "syr£": "SYP",
+ "الليره السورية": "SYP",
+ "ليرات سورية": "SYP",
+ "ليره سوريه": "SYP",
+ "lira de síria": "SYP",
+ "lira síria": "SYP",
+ "lliura de síria": "SYP",
+ "syp": "SYP",
+ "syrisches pfund": "SYP",
+ "ls": "SYP",
+ "syrian lira": "SYP",
+ "dolar sirio": "SYP",
+ "لیرهٔ سوریه": "SYP",
+ "پوند سوریه": "SYP",
+ "libra da síria": "SYP",
+ "валюта сирии": "SYP",
+ "sirijska lira": "SYP",
+ "sirijski funt": "SYP",
+ "sirska lira": "SYP",
+ "syrisk lira": "SYP",
+ "£s": "SYP",
+ "LS": "SYP",
+ "ليلانغيني": "SZL",
+ "E": "SZL",
+ "emalangeni": "SZL",
+ "eswatini lilangeni": "SZL",
+ "swaziland lilangeni": "SZL",
+ "lilangeni de suazilandia": "SZL",
+ "لیلانگنی سوازیلند": "SZL",
+ "lilangeni swazilandais": "SZL",
+ "svazijski lilangeni": "SZL",
+ "szl": "SZL",
+ "エマランゲニ": "SZL",
+ "スワジ・リランジェニ": "SZL",
+ "リランジェニ": "SZL",
+ "lilangeni suázi": "SZL",
+ "свазилендский лилангени": "SZL",
+ "валюта свазиленда": "SZL",
+ "свазилендски лилангени": "SZL",
+ "лилиангени": "SZL",
+ "свазиландски лилангени": "SZL",
+ "swazisk lilangeni": "SZL",
+ "ліланджені": "SZL",
+ "lilangeni swaziland": "SZL",
+ "史瓦濟蘭里蘭吉尼": "SZL",
+ "البات": "THB",
+ "฿": "THB",
+ "بات": "THB",
+ "بات تايلندي": "THB",
+ "باخت": "THB",
+ "tical": "THB",
+ "fuang": "THB",
+ "fyän": "THB",
+ "salyn": "THB",
+ "salüng": "THB",
+ "tschang": "THB",
+ "tömling": "THB",
+ "xang": "THB",
+ "μπαχτ": "THB",
+ "siamese tical": "THB",
+ "thb": "THB",
+ "bahto": "THB",
+ "satango": "THB",
+ "taja bahto": "THB",
+ "tikalo": "THB",
+ "baht tailandes": "THB",
+ "bhat": "THB",
+ "tai baat": "THB",
+ "تای بات": "THB",
+ "thaimaan baht": "THB",
+ "bath": "THB",
+ "タイの通貨": "THB",
+ "タイ・バーツ": "THB",
+ "batas": "THB",
+ "satang": "THB",
+ "baht tailandês": "THB",
+ "валюта таиланда": "THB",
+ "сиамский бат": "THB",
+ "таиландский бат": "THB",
+ "тајландски бахт": "THB",
+ "tayland'ın para birimi": "THB",
+ "бат": "THB",
+ "baht thái": "THB",
+ "baht thái lan": "THB",
+ "bạt thái": "THB",
+ "bạt thái lan": "THB",
+ "泰币": "THB",
+ "泰铢": "THB",
+ "ساماني": "TJS",
+ "SM": "TJS",
+ "سامانی طاجيكي": "TJS",
+ "سمني": "TJS",
+ "سموني طاجيكي": "TJS",
+ "سمونی طاجيكي": "TJS",
+ "tjs": "TJS",
+ "tajik somoni": "TJS",
+ "currency of tajikistan": "TJS",
+ "somoni taxico": "TJS",
+ "סומוני טג'קיסטני": "TJS",
+ "somoni tagico": "TJS",
+ "タジキスタン・ソモニ": "TJS",
+ "tadžikijos somonis": "TJS",
+ "somoni tadżycki": "TJS",
+ "somoni tadjic": "TJS",
+ "таджикский сомони": "TJS",
+ "валюта таджикистана": "TJS",
+ "таџикистанска рубља": "TJS",
+ "tadzjikistansk somoni": "TJS",
+ "сомоні": "TJS",
+ "塔吉克索莫尼": "TJS",
+ "عملات سنتافو تيمورية شرقية": "TLD",
+ "centavo de dólar de timor oriental": "TLD",
+ "centavos de dolar de timor oriental": "TLD",
+ "سکه کنتاووی تیمور خاوری": "TLD",
+ "moedas de centavo do timor leste": "TLD",
+ "восточно тиморские монеты": "TLD",
+ "T": "TMT",
+ "туркменски манат": "TMT",
+ "manat de turkmenistan": "TMT",
+ "manat del turkmenistan": "TMT",
+ "teňňe": "TMT",
+ "μανάτ τουρκμενίας": "TMT",
+ "manat turkmene": "TMT",
+ "manat de turkmenistán": "TMT",
+ "מנאט טורקמני חדש": "TMT",
+ "tmm": "TMT",
+ "トルクメン・マナト": "TMT",
+ "turkmėnistano manatas": "TMT",
+ "manat turcmèn": "TMT",
+ "manate do turcomenistão": "TMT",
+ "manatul turkmen": "TMT",
+ "tmt": "TMT",
+ "валюта туркмении": "TMT",
+ "новый манат": "TMT",
+ "новый туркменский манат": "TMT",
+ "туркменистанский манат": "TMT",
+ "туркменский новый манат": "TMT",
+ "тукменистански манат": "TMT",
+ "t": "TMT",
+ "土庫曼馬納特": "TMT",
+ "الدينار التونسي": "TND",
+ "DT": "TND",
+ "دينار التونسي": "TND",
+ "dinar de tunísia": "TND",
+ "dinar tunisiaidd": "TND",
+ "millime": "TND",
+ "tunis dinar": "TND",
+ "tnd": "TND",
+ "dinar de tunez": "TND",
+ "dinar de túnez": "TND",
+ "دينار تونس": "TND",
+ "tuniški dinar": "TND",
+ "denar da tunísia": "TND",
+ "denar tunisiano": "TND",
+ "denar tunisino": "TND",
+ "dinar da tunísia": "TND",
+ "dinar tunisino": "TND",
+ "валюта туниса": "TND",
+ "тунижански динар": "TND",
+ "د.ت": "TND",
+ "突尼斯第纳尔": "TND",
+ "بانجا تونجي": "TOP",
+ "بانجا": "TOP",
+ "T$": "TOP",
+ "pa‘anga": "TOP",
+ "pa’anga": "TOP",
+ "tonžská pa'anga": "TOP",
+ "tonžská paanga": "TOP",
+ "paanga": "TOP",
+ "t$": "TOP",
+ "tonga dollar": "TOP",
+ "pa anga": "TOP",
+ "tonga pa`anga": "TOP",
+ "tonga paʻanga": "TOP",
+ "tongan pa`anga": "TOP",
+ "dolar tongano": "TOP",
+ "dólar tongano": "TOP",
+ "pa'anga tongana": "TOP",
+ "پاآنگای تنگو": "TOP",
+ "פאנגה": "TOP",
+ "פנגה טונגית": "TOP",
+ "tongaška pa’anga": "TOP",
+ "tongai pa'anga": "TOP",
+ "tongai pa’anga": "TOP",
+ "tongan pa'anga": "TOP",
+ "pa'anga tongano": "TOP",
+ "pa'anga di tonga": "TOP",
+ "パ・アンガ": "TOP",
+ "トンガ・パ・アンガ": "TOP",
+ "tongos pa'anga": "TOP",
+ "paʻanga tonganesa": "TOP",
+ "тонганская паанга": "TOP",
+ "валюта тонга": "TOP",
+ "доллар тонги": "TOP",
+ "сенити": "TOP",
+ "тонганский доллар": "TOP",
+ "панга": "TOP",
+ "tongansk pa'anga": "TOP",
+ "top": "TOP",
+ "潘加": "TOP",
+ "ليرة تركية جديدة": "TRY",
+ "₺": "TRY",
+ "lira de turquia": "TRY",
+ "lliura de turquia": "TRY",
+ "lliura turca": "TRY",
+ "nova lira de turquia": "TRY",
+ "nova lira turca": "TRY",
+ "nova lliura de turquia": "TRY",
+ "nova lliura turca": "TRY",
+ "nová turecká lira": "TRY",
+ "kurus": "TRY",
+ "kuruş": "TRY",
+ "neue türkische lira": "TRY",
+ "ytl": "TRY",
+ "yeni kuruş": "TRY",
+ "yeni türk lirası": "TRY",
+ "λίρα τουρκίας": "TRY",
+ "νέα τουρκική λίρα": "TRY",
+ "trl": "TRY",
+ "try": "TRY",
+ "nova turka liro": "TRY",
+ "nova turkia liro": "TRY",
+ "turkia liro": "TRY",
+ "nueva lira turca": "TRY",
+ "لیره جدید ترکیه": "TRY",
+ "lire turque": "TRY",
+ "livres turques": "TRY",
+ "nouvelle livre turque": "TRY",
+ "lira turc": "TRY",
+ "トルコ・リラ": "TRY",
+ "turkijos lira": "TRY",
+ "lira da turquia": "TRY",
+ "liras turcas": "TRY",
+ "nova libra turca": "TRY",
+ "lira turcească": "TRY",
+ "liră turcă": "TRY",
+ "валюта турецкой республики северного кипра": "TRY",
+ "валюта турции": "TRY",
+ "новая турецкая лира": "TRY",
+ "старая турецкая лира": "TRY",
+ "турецкий фунт": "TRY",
+ "nová turecká líra": "TRY",
+ "нова турска лира": "TRY",
+ "турска нова лира": "TRY",
+ "turkiska lira": "TRY",
+ "新土耳其里拉": "TRY",
+ "YTL": "TRY",
+ "new turkish lira": "TRY",
+ "second turkish lira": "TRY",
+ "第二版土耳其里拉": "TRY",
+ "TT$": "TTD",
+ "тринидадски и тобагски долар": "TTD",
+ "dòlar de trinitat": "TTD",
+ "dòlar de trinitat tobago": "TTD",
+ "trinidadsko tobagský dolar": "TTD",
+ "tt$": "TTD",
+ "δολάριο τρινιντάντ και τομπάγκο": "TTD",
+ "trinidada tobaga dolaro": "TTD",
+ "dolar de trinidad y tobago": "TTD",
+ "dolar trinitense": "TTD",
+ "dólar de trinidad y tobago": "TTD",
+ "trinidad ja tobagon dollari": "TTD",
+ "dollar de trinidad et tobago": "TTD",
+ "dollar trinidadien": "TTD",
+ "trinidad en tobago dollar": "TTD",
+ "dolar trynidadzki": "TTD",
+ "dólar de trindade e tabago": "TTD",
+ "dólar de trinidad e tabago": "TTD",
+ "dólar de trinidade e tabago": "TTD",
+ "dólar de trinidade e tobago": "TTD",
+ "dólar trinitino": "TTD",
+ "dólar trinitário": "TTD",
+ "валюта тринидада и тобаго": "TTD",
+ "тринидадский доллар": "TTD",
+ "trinidadsko tobažský dolár": "TTD",
+ "тринидад и тобаго долар": "TTD",
+ "ttd": "TTD",
+ "долар тринідаду та тобаго": "TTD",
+ "千里達托貝哥元": "TTD",
+ "$T": "TVD",
+ "δολάριο του τουβαλού": "TVD",
+ "δολλάριο του τουβαλού": "TVD",
+ "$t": "TVD",
+ "tv$": "TVD",
+ "tvd": "TVD",
+ "tuvalu dollar": "TVD",
+ "dolar tuvaluano": "TVD",
+ "dolar de tuvalu": "TVD",
+ "dólar de tuvalu": "TVD",
+ "دلار تووالوان": "TVD",
+ "dollar de tuvalu": "TVD",
+ "tuvaluški dolar": "TVD",
+ "dollaro di tuvalu": "TVD",
+ "тувалуски долар": "TVD",
+ "圖瓦盧元": "TVD",
+ "TV$": "TVD",
+ "nt$": "TWD",
+ "NT$": "TWD",
+ "dòlar de taiwan": "TWD",
+ "dòlar taiwanès": "TWD",
+ "nou dòlar taiwanès": "TWD",
+ "nový tchajwanský dolar": "TWD",
+ "nový tchajwanský jüan": "TWD",
+ "twd": "TWD",
+ "tchajwanský jüan": "TWD",
+ "doler newydd taiwan": "TWD",
+ "taiwan dollar": "TWD",
+ "δολάριο ταϊβάν": "TWD",
+ "ntd": "TWD",
+ "tajvana dolaro": "TWD",
+ "dolar taiwanes": "TWD",
+ "dolar taiwanés": "TWD",
+ "dólar taiwanes": "TWD",
+ "dólar taiwanés": "TWD",
+ "nuevo dolar de taiwan": "TWD",
+ "nuevo dolar de taiwán": "TWD",
+ "nuevo dolar taiwanes": "TWD",
+ "nuevo dolar taiwanés": "TWD",
+ "nuevo dólar de taiwan": "TWD",
+ "nuevo dólar de taiwán": "TWD",
+ "nuevo dólar taiwanes": "TWD",
+ "dollar de taiwan": "TWD",
+ "dollar taiwanais": "TWD",
+ "dollar taïwanais": "TWD",
+ "דולר טאיוואני חדש": "TWD",
+ "nuovo dollaro taiwanese": "TWD",
+ "ntドル": "TWD",
+ "ニュー台湾ドル": "TWD",
+ "台湾の通貨": "TWD",
+ "台湾ドル": "TWD",
+ "台湾元": "TWD",
+ "新台幣": "TWD",
+ "nowy dolar tajwański": "TWD",
+ "dólar de taiuã": "TWD",
+ "dólar de taiwan": "TWD",
+ "dólar taiuanês": "TWD",
+ "dólar taiwanês": "TWD",
+ "novo dólar de taiuã": "TWD",
+ "novo dólar de taiwan": "TWD",
+ "novo dólar taiuanês": "TWD",
+ "валюта китайской республики": "TWD",
+ "тајвански долар": "TWD",
+ "tayvan doları": "TWD",
+ "đài tệ": "TWD",
+ "đô la đài loan mới": "TWD",
+ "台幣": "TWD",
+ "新台币": "TWD",
+ "臺幣": "TWD",
+ "TSh": "TZS",
+ "xíling de tanzània": "TZS",
+ "swllt tanzania": "TZS",
+ "tzs": "TZS",
+ "shilingi": "TZS",
+ "tsh": "TZS",
+ "tanzanian schilling": "TZS",
+ "tanzanian shilingi": "TZS",
+ "chelin de tanzania": "TZS",
+ "chelin tanzano": "TZS",
+ "chelín de tanzania": "TZS",
+ "szyling tanzanii": "TZS",
+ "xelim da tanzania": "TZS",
+ "xelim da tanzânia": "TZS",
+ "валюта танзании": "TZS",
+ "танзански шилинг": "TZS",
+ "tanzaniansk shilling": "TZS",
+ "tanzansk shilling": "TZS",
+ "坦先令": "TZS",
+ "₴": "UAH",
+ "hrývnia": "UAH",
+ "hřivna": "UAH",
+ "griwna": "UAH",
+ "hryvnja": "UAH",
+ "hrywen": "UAH",
+ "hrywni": "UAH",
+ "ukrainische hrywnja": "UAH",
+ "γρίβνα ουκρανίας": "UAH",
+ "γρίβνια": "UAH",
+ "χρίβνα": "UAH",
+ "hryvnya": "UAH",
+ "uah": "UAH",
+ "hrivno": "UAH",
+ "ukrainia hrivno": "UAH",
+ "grivnia": "UAH",
+ "grivnia ucraniana": "UAH",
+ "gryvnia": "UAH",
+ "hryvna": "UAH",
+ "grivna ucraniana": "UAH",
+ "грн": "UAH",
+ "krivna": "UAH",
+ "گریونا": "UAH",
+ "riuna": "UAH",
+ "ukrainan hryvnja": "UAH",
+ "hryvnia ukrainienne": "UAH",
+ "grivnja": "UAH",
+ "ukrajinska hrivnja": "UAH",
+ "hryvnja ukrainian": "UAH",
+ "hryvnia ucraina": "UAH",
+ "グリブナ": "UAH",
+ "グルィーヴナ": "UAH",
+ "フリブニャ": "UAH",
+ "フリヴナ": "UAH",
+ "フルィヴニャ": "UAH",
+ "フルィーヴニャ": "UAH",
+ "oekraïense hryvnja": "UAH",
+ "oekraiense hryvnja": "UAH",
+ "hrywna ukraińska": "UAH",
+ "grívnia ucraniana": "UAH",
+ "grivnă ucraineană": "UAH",
+ "hrn": "UAH",
+ "валюта украины": "UAH",
+ "валюта в украине": "UAH",
+ "валюта на украине": "UAH",
+ "гривна": "UAH",
+ "гривна украины": "UAH",
+ "украинская валюта": "UAH",
+ "украинская гривня": "UAH",
+ "украјинска хривња": "UAH",
+ "гривња": "UAH",
+ "karbovanet": "UAH",
+ "உக்ரைனிய ஹிரீவ்னியா": "UAH",
+ "உக்ரைனிய ஹிருன்யா": "UAH",
+ "українська гривня": "UAH",
+ "гривні": "UAH",
+ "грн.": "UAH",
+ "乌克兰格里夫尼亚": "UAH",
+ "乌克兰赫里夫尼亚": "UAH",
+ "烏克蘭荷林夫納": "UAH",
+ "Ush": "UGX",
+ "xíling d'uganda": "UGX",
+ "ugx": "UGX",
+ "σελίνι ουγκάντας": "UGX",
+ "ush": "UGX",
+ "uganda shilling": "UGX",
+ "chelin de uganda": "UGX",
+ "chelin ugandes": "UGX",
+ "chelín de uganda": "UGX",
+ "ウガンダシリング": "UGX",
+ "ugandese shilling": "UGX",
+ "валюта уганды": "UGX",
+ "US$": "USD",
+ "usd": "USD",
+ "us $": "USD",
+ "δολλάριο ηπα": "USD",
+ "american dollar": "USD",
+ "u. s. dollar": "USD",
+ "u.s. dollar": "USD",
+ "us$": "USD",
+ "dolar estadounidense": "USD",
+ "dolares": "USD",
+ "$ us": "USD",
+ "dollar des états unis": "USD",
+ "dollar étatsunien": "USD",
+ "דולר אמריקני": "USD",
+ "ドル": "USD",
+ "米ドル": "USD",
+ "dólar americano": "USD",
+ "dolar sua": "USD",
+ "$ сша": "USD",
+ "американский доллар": "USD",
+ "amerikanska dollar": "USD",
+ "abd doları": "USD",
+ "u.s.$": "USD",
+ "американський долар": "USD",
+ "mĩ kim": "USD",
+ "mỹ kim": "USD",
+ "đô": "USD",
+ "đô la hoa kì": "USD",
+ "đô la hoa kỳ": "USD",
+ "đô la mĩ": "USD",
+ "đôla mĩ": "USD",
+ "đôla mỹ": "USD",
+ "đồng bạc mĩ": "USD",
+ "đồng bạc mỹ": "USD",
+ "美金": "USD",
+ "بيزو أوروغواني": "UYU",
+ "$U": "UYU",
+ "peso d'uruguai": "UYU",
+ "peso de l'uruguai": "UYU",
+ "$u": "UYU",
+ "uyu": "UYU",
+ "uruguay peso": "UYU",
+ "peso de uruguay": "UYU",
+ "پزوی اوروگوئه": "UYU",
+ "peso d'uruguay": "UYU",
+ "פסו של אורוגוואי": "UYU",
+ "urugvajski peso": "UYU",
+ "peso uruguaian": "UYU",
+ "peso do uruguai": "UYU",
+ "валюта уругвая": "UYU",
+ "уругвайский песо": "UYU",
+ "нови уругвајски пезос": "UYU",
+ "нови уругвајски песо": "UYU",
+ "уругвајски песо": "UYU",
+ "uruguyansk peso": "UYU",
+ "уругвайське песо": "UYU",
+ "unidad previsional": "UYW",
+ "up": "UYW",
+ "uyw": "UYW",
+ "سوم أوزبيكستاني": "UZS",
+ "So'm": "UZS",
+ "som d'uzbekistan": "UZS",
+ "som de l'uzbekistan": "UZS",
+ "uzbecký som": "UZS",
+ "so'm": "UZS",
+ "söm": "UZS",
+ "tiyin": "UZS",
+ "usbekistan som": "UZS",
+ "usbekistan sum": "UZS",
+ "ουζμπεκικό σομ": "UZS",
+ "uzbekistani som": "UZS",
+ "uzbeka sumo": "UZS",
+ "som uzbeco": "UZS",
+ "sum uzbeco": "UZS",
+ "sum uzbeko": "UZS",
+ "سم ازبکستان": "UZS",
+ "uzs": "UZS",
+ "som usbeco": "UZS",
+ "ウズベキスタン・スム": "UZS",
+ "ウズベキスタン・ソム": "UZS",
+ "uzbekijos somas": "UZS",
+ "uzbekistano sumas": "UZS",
+ "sum uzbecki": "UZS",
+ "som usbeque": "UZS",
+ "som uzbeque": "UZS",
+ "sum usbeque": "UZS",
+ "sum uzbeque": "UZS",
+ "валюта узбекистана": "UZS",
+ "узбекистанский сум": "UZS",
+ "сум": "UZS",
+ "узбекистански сум": "UZS",
+ "узбецький сом": "UZS",
+ "烏茲別克索姆": "UZS",
+ "苏姆": "UZS",
+ "بوليفار السيادي": "VES",
+ "Bs.S": "VES",
+ "ves": "VES",
+ "боливар": "VES",
+ "боливар соберано": "VES",
+ "دونغ": "VND",
+ "₫": "VND",
+ "vnd": "VND",
+ "vnđ": "VND",
+ "ντογκ": "VND",
+ "đong": "VND",
+ "دونگ ویتنام": "VND",
+ "vietnamin dong": "VND",
+ "dong vietnamien": "VND",
+ "דונג וייטנאמי ": "VND",
+ "vietnámi dong": "VND",
+ "ベトナムドン": "VND",
+ "ベトナム・ドン": "VND",
+ "越南銅": "VND",
+ "dongas": "VND",
+ "dongue vietnamita": "VND",
+ "вьетнамский донг": "VND",
+ "xu": "VND",
+ "валюта вьетнама": "VND",
+ "vietnamesisk dong": "VND",
+ "đồng việt nam": "VND",
+ "việt nam đồng": "VND",
+ "tiền cụ hồ": "VND",
+ "đồng tiền": "VND",
+ "越盾": "VND",
+ "VT": "VUV",
+ "vanuatu vatus": "VUV",
+ "vatuo": "VUV",
+ "vuv": "VUV",
+ "vanuatuanski vatu": "VUV",
+ "vatu di vanuatu": "VUV",
+ "バヌアツの通貨": "VUV",
+ "vatu do vanuatu": "VUV",
+ "валюта вануату": "VUV",
+ "вануатский вату": "VUV",
+ "vanuatisk vatu": "VUV",
+ "uvu": "VUV",
+ "vt": "VUV",
+ "вануатійський вату": "VUV",
+ "تالا ساموية": "WST",
+ "WS$": "WST",
+ "tala samoà": "WST",
+ "ws$": "WST",
+ "samoa dolaro": "WST",
+ "tala samoano": "WST",
+ "טלה": "WST",
+ "wst": "WST",
+ "サモアの通貨": "WST",
+ "サモアドル": "WST",
+ "サモア・タラ": "WST",
+ "サモア・ターラ": "WST",
+ "サモア・ドル": "WST",
+ "валюта самоа": "WST",
+ "доллар самоа": "WST",
+ "самоанский доллар": "WST",
+ "тала": "WST",
+ "samoansk tala": "WST",
+ "塔拉": "WST",
+ "فرنك س ف ا وسط أفريقيا": "XAF",
+ "xaf": "XAF",
+ "frank beac/cfa": "XAF",
+ "ffranc canol affrica": "XAF",
+ "centr afrika franko": "XAF",
+ "franco cfa de africa central": "XAF",
+ "فرانک آفریقای مرکزی": "XAF",
+ "فرانک سی اف ای آفریقای مرکزی": "XAF",
+ "فرانک سی اف ای آفریقای میانه": "XAF",
+ "فرانک سی اف ای افریقای میانه": "XAF",
+ "فرانک سی اف ای مرکز آفریقا": "XAF",
+ "فرانک سی اف ای میانه آفریقا": "XAF",
+ "keski afrikan cfa frangi": "XAF",
+ "franc cfa d'afrique centrale": "XAF",
+ "פרנק cfa מרכז אפריקני": "XAF",
+ "cfa": "XAF",
+ "franco cfa dell'africa centrale": "XAF",
+ "中部アフリカcfaフラン": "XAF",
+ "cfa franc": [
+ "XOF",
"XAF"
- ],
- "scellino keniota": [
- "KES"
],
- "bitcoin": [
- "XBT"
- ]
- },
+ "franc centrafrican cfa": "XAF",
+ "franc central african cfa": "XAF",
+ "франк кфа beac": "XAF",
+ "валюта габона": "XAF",
+ "валюта камеруна": "XAF",
+ "валюта республики конго": "XAF",
+ "валюта центральноафриканской республики": "XAF",
+ "валюта чада": "XAF",
+ "валюта экваториальной гвинеи": "XAF",
+ "франк кфа веас": "XAF",
+ "centralafrikansk cfa franc": "XAF",
+ "fcfa": "XAF",
+ "மத்திய ஆப்பிரிக்க சி.எஃப்.ஏ பிராங்க்": "XAF",
+ "orta afrika cfa frankı": "XAF",
+ "cfa franc trung phi": "XAF",
+ "中非法郎": "XAF",
+ "ag": "XAG",
+ "العنصر 47": "XAG",
+ "العنصر رقم 47": "XAG",
+ "الفضة": "XAG",
+ "عنصر 47": "XAG",
+ "ασήμι": "XAG",
+ "element 47": "XAG",
+ "سیم": "XAG",
+ "ezüstany": "XAG",
+ "elemento 47": "XAG",
+ "العنصر 79": "XAU",
+ "au": "XAU",
+ "aurum": "XAU",
+ "χρυσάφι": "XAU",
+ "element 79": "XAU",
+ "elemento 79": "XAU",
+ "زر": "XAU",
+ "grundämne 79": "XAU",
+ "பொன்": "XAU",
+ "البيتكوين": "XBT",
+ "₿": "XBT",
+ "btc": "XBT",
+ "bitcoins": "XBT",
+ "microcoin": "XBT",
+ "millicoin": "XBT",
+ "mbtc": "XBT",
+ "satoshi": "XBT",
+ "μbtc": "XBT",
+ "xbt": "XBT",
+ "bitcoines": "XBT",
+ "bitcóin": "XBT",
+ "بیت کوین": "XBT",
+ "cryptografisch geld": "XBT",
+ "биткојн": "XBT",
+ "比特幣": "XBT",
+ "位元幣": "XBT",
+ "EC$": "XCD",
+ "eastern caribbean currency union": "XCD",
+ "východokaribská měnová unie": "XCD",
+ "xcd": "XCD",
+ "ec$": "XCD",
+ "ostkaribische währungsunion": "XCD",
+ "δολλάριο ανατολικής καραϊβικής": "XCD",
+ "orient kariba dolaro": "XCD",
+ "orientkariba dolaro": "XCD",
+ "dolar caribe este": "XCD",
+ "dolar del caribe este": "XCD",
+ "dolar del caribe oriental": "XCD",
+ "dólar caribe este": "XCD",
+ "dólar del caribe este": "XCD",
+ "dollar de la caraibe orientale": "XCD",
+ "dollar de la caraïbe orientale": "XCD",
+ "dólar caribe leste": "XCD",
+ "דולר מזרח קאריבי": "XCD",
+ "מטבע אנטיגואה וברבודה": "XCD",
+ "מטבע גרנדה": "XCD",
+ "מטבע דומיניקה": "XCD",
+ "מטבע סנט וינסנט והגרנדינים": "XCD",
+ "מטבע סנט לושה": "XCD",
+ "מטבע סנט קיטס ונוויס": "XCD",
+ "東カリブドル": "XCD",
+ "oost caraibische dollar": "XCD",
+ "oost caraïbische dollar": "XCD",
+ "dolar de las caribas orientalas": "XCD",
+ "dólar das caraíbas": "XCD",
+ "dólar das caraíbas orientais": "XCD",
+ "восточно карибский доллар": "XCD",
+ "валюта ангильи": "XCD",
+ "валюта антигуа и барбуды": "XCD",
+ "கிழக்குக் கரிபியன் டாலர்": "XCD",
+ "східно карибський долар": "XCD",
+ "đô la đông caribbe": "XCD",
+ "спт": "XDR",
+ "deg": "XDR",
+ "xdr": "XDR",
+ "special drawing right, sdr": "XDR",
+ "special drawing rights, sdr": "XDR",
+ "erityinen nosto oikeus": "XDR",
+ "erityiset nosto oikeudet": "XDR",
+ "sdrs": "XDR",
+ "droits de tirage speciaux": "XDR",
+ "papierowe złoto": "XDR",
+ "specjalne prawo ciągnienia": "XDR",
+ "сдр": "XDR",
+ "спз": "XDR",
+ "zpč": "XDR",
+ "special drawings right": "XDR",
+ "европейска валутна единица": "XEU",
+ "₠": "XEU",
+ "unitat de compte europea": "XEU",
+ "xeu": "XEU",
+ "ελμ": "XEU",
+ "eŭropa monunuo": "XEU",
+ "e.c.u.": "XEU",
+ "unité de compte européen": "XEU",
+ "unité de compte européenne": "XEU",
+ "unité monétaire européenne": "XEU",
+ "unidade monetaria europea": "XEU",
+ "יחידת מטבע אירופי": "XEU",
+ "ヨーロッパ通貨単位": "XEU",
+ "écu": "XEU",
+ "unitate monetară europeană": "XEU",
+ "европейская валютная единица": "XEU",
+ "europeiska valutaenhet": "XEU",
+ "ekü": "XEU",
+ "歐洲通貨單位": "XEU",
+ "bitmonero": "XMR",
+ "mo": "XMR",
+ "xmr": "XMR",
+ "墨內羅": "XMR",
+ "فرنك س ف ا غرب أفريقيا": "XOF",
+ "F": "XOF",
+ "xof": "XOF",
+ "západoafrický cfa frank": "XOF",
+ "franc cfa gorllein ffrica": "XOF",
+ "φράγκο cfa bceao": "XOF",
+ "okcident afrika franko": "XOF",
+ "franco cfa de africa occidental": "XOF",
+ "فرانک سی اف ای آفریقای باختری": "XOF",
+ "فرانک آفریقای غربی": "XOF",
+ "فرانک سی اف ای آفریقای غربی": "XOF",
+ "فرانک سی اف ای افریقای باختری": "XOF",
+ "فرانک سی اف ای باختر آفریقا": "XOF",
+ "فرانک سی اف ای غرب آفریقا": "XOF",
+ "פרנק cfa מערב אפריקני": "XOF",
+ "franco cfa uemoa": "XOF",
+ "franco cfa dell'africa occidentale": "XOF",
+ "franco cfa dell'africa dell'ovest": "XOF",
+ "frank cfa": "XOF",
+ "frank zachodnioafrykański": "XOF",
+ "franc cfa vest african": "XOF",
+ "франк кфа bceao": "XOF",
+ "валюта бенина": "XOF",
+ "валюта буркина фасо": "XOF",
+ "валюта гвинеи бисау": "XOF",
+ "валюта кот д’ивуара": "XOF",
+ "валюта мали": "XOF",
+ "валюта нигера": "XOF",
+ "валюта сенегала": "XOF",
+ "валюта того": "XOF",
+ "западно африканский франк кфа": "XOF",
+ "франк африканского финансового сообщества": "XOF",
+ "франк кфа всеао": "XOF",
+ "frank bceao/cfa": "XOF",
+ "மேற்கு ஆபிரிக்க சி.எஃப்.ஏ பிராங்க்": "XOF",
+ "batı afrika cfa frankı": "XOF",
+ "cfa franc tây phi": "XOF",
+ "西法": "XOF",
+ "西非法郎": "XOF",
+ "pd": "XPD",
+ "46pd": "XPD",
+ "element 46": "XPD",
+ "itélany": "XPD",
+ "elemento 46": "XPD",
+ "పల్లాడియం": "XPD",
+ "xpf": "XPF",
+ "pazifik franc": "XPF",
+ "cfp franko": "XPF",
+ "فرانک cfp": "XPF",
+ "fcfp": "XPF",
+ "francs pacifique": "XPF",
+ "פרנק צרפתי": "XPF",
+ "franak cfp": "XPF",
+ "francuski pacifički franak": "XPF",
+ "franco pacifico": "XPF",
+ "institut d'émission d'outre mer": "XPF",
+ "franc pacific": "XPF",
+ "французский тихоокеанский франк": "XPF",
+ "валюта уоллис и футуна": "XPF",
+ "обменный тихоокеанский франк": "XPF",
+ "франк кпф": "XPF",
+ "франк кфп": "XPF",
+ "французское тихоокеанское банковское соглашение": "XPF",
+ "француски тихоокеански франак": "XPF",
+ "pt": "XPT",
+ "element 78": "XPT",
+ "éreny": "XPT",
+ "プラチナ": "XPT",
+ "プラティナ": "XPT",
+ "鉑": "XPT",
+ "elemento 78": "XPT",
+ "серебрец": "XPT",
+ "bạch kim": "XPT",
+ "sistema único de compensación regional": "XSU",
+ "Sucre": "XSU",
+ "sistema unico de compensacion regional": "XSU",
+ "スクレ": "XSU",
+ "единая система региональных взаиморасчетов": "XSU",
+ "единая система региональных взаиморасчётов": "XSU",
+ "adb unit of account": "XUA",
+ "xua": "XUA",
+ "rial del iemen del nord": "YER",
+ "nord jemena rialo": "YER",
+ "rial nord yéménite": "YER",
+ "észak jemeni riál": "YER",
+ "北イエメン・リアル": "YER",
+ "северо йеменский риал": "YER",
+ "северойеменский риал": "YER",
+ "الريال اليمني": "YER",
+ "﷼'": "YER",
+ "rial de iemen": "YER",
+ "rial del iemen": "YER",
+ "nordjemenitischer rial": "YER",
+ "yer": "YER",
+ "rial yemeni": "YER",
+ "rial yéménite": "YER",
+ "dinar du yémen du sud": "YER",
+ "rial yemenite": "YER",
+ "rial do iemen": "YER",
+ "rial yemenita": "YER",
+ "イエメンの通貨": "YER",
+ "イエメン・リヤル": "YER",
+ "イエメン・リヤール": "YER",
+ "rial de iemèn": "YER",
+ "rial do iémen": "YER",
+ "rial do iémene": "YER",
+ "rial do iêmen": "YER",
+ "rial iémenita": "YER",
+ "валюта йемена": "YER",
+ "јеменски риал": "YER",
+ "yemenitisk rial": "YER",
+ "叶门里亚尔": "YER",
+ "R": "ZAR",
+ "rand de sud àfrica": "ZAR",
+ "rand sud africà": "ZAR",
+ "rand de affrica": "ZAR",
+ "rando": "ZAR",
+ "sud afrika rando": "ZAR",
+ "zar": "ZAR",
+ "randi": "ZAR",
+ "rand sud africain": "ZAR",
+ "ראנד": "ZAR",
+ "南アフリカランド": "ZAR",
+ "南アフリカ・ランド": "ZAR",
+ "par randas": "ZAR",
+ "pietų afrikos randas": "ZAR",
+ "rand południowoafrykański": "ZAR",
+ "rand sul africano": "ZAR",
+ "rand sulafricano": "ZAR",
+ "rands": "ZAR",
+ "валюта юар": "ZAR",
+ "ранд юар": "ZAR",
+ "рэнд": "ZAR",
+ "рэнд юар": "ZAR",
+ "южно африканский рэнд": "ZAR",
+ "южно африканский ранд": "ZAR",
+ "южноафриканский ранд": "ZAR",
+ "sydafrikansk rand": "ZAR",
+ "південно африканський ранд": "ZAR",
+ "南非蘭特": "ZAR",
+ "蘭特": "ZAR",
+ "كواشا زامبية": "ZMW",
+ "kwacha de zàmbia": "ZMW",
+ "ngwee": "ZMW",
+ "sambia kwacha": "ZMW",
+ "κουάτσα ζάμπιας": "ZMW",
+ "zmw": "ZMW",
+ "kwacha zambese": "ZMW",
+ "zmk": "ZMW",
+ "kwacha zambian": "ZMW",
+ "kwacha": "ZMW",
+ "kwacha da zâmbia": "ZMW",
+ "kwacha zambiana": "ZMW",
+ "валюта замбии": "ZMW",
+ "квача замбии": "ZMW",
+ "ZK": "ZMW",
+ "pesos": [
+ "MXN"
+ ]
+ },
"iso4217": {
- "XBT":{
- "fr": "Bitcoin",
- "en": "Bitcoin",
- "nl": "Bitcoin",
- "de": "Bitcoin",
- "it": "Bitcoin",
- "hu": "Bitcoin",
- "es": "Bitcoin"
- },
- "DZD": {
- "fr": "Dinar alg\u00e9rien",
- "en": "Algerian dinar",
- "nl": "Algerijnse dinar",
- "de": "Algerischer Dinar",
- "it": "Dinaro algerino",
- "hu": "alg\u00e9riai din\u00e1r",
- "es": "Dinar argelino"
- },
- "NAD": {
- "fr": "Dollar namibien",
- "en": "Namibian dollar",
- "nl": "Namibische dollar",
- "de": "Namibia-Dollar",
- "it": "Dollaro namibiano",
- "hu": "Nam\u00edbiai doll\u00e1r",
- "es": "D\u00f3lar namibio"
- },
- "GHS": {
- "fr": "Cedi",
- "en": "Ghana cedi",
- "nl": "Ghanese cedi",
- "de": "Cedi",
- "it": "Cedi ghanese",
- "hu": "Gh\u00e1nai cedi",
- "es": "Cedi"
- },
- "BZD": {
- "fr": "Dollar b\u00e9lizien",
- "en": "Belize dollar",
- "nl": "Belizaanse dollar",
- "de": "Belize-Dollar",
- "it": "Dollaro del Belize",
- "hu": "Belize-i doll\u00e1r",
- "es": "D\u00f3lar belice\u00f1o"
- },
+ "ABA": {
+ "ar": "أبصار أبخازي",
+ "cs": "Abcházský apsar",
+ "de": "Abchasischer Apsar",
+ "en": "Abkhazian apsar",
+ "es": "apsar",
+ "fa": "آپسار",
+ "fi": "Abhasian apsar",
+ "fr": "Apsar",
+ "gl": "apsar abkhazo",
+ "hr": "Abhaški apsar",
+ "it": "Apsar abcaso",
+ "lt": "Abchazijos apsaras",
+ "pl": "Apsar",
+ "pt": "Apsar abcásio",
+ "ru": "Абхазский апсар",
+ "sv": "Apsar",
+ "tr": "Abhazya apsarı",
+ "uk": "Абхазький апсар",
+ "zh": "阿布哈兹阿沙",
+ "he": "אפסר אבחזי",
+ "ja": "アプサラ",
+ "sr": "абхаски апсар"
+ },
+ "AED": {
+ "ar": "درهم إماراتي",
+ "ca": "dírham dels Emirats Àrabs Units",
+ "cs": "dirham Spojených arabských emirátů",
+ "de": "VAE-Dirham",
+ "el": "Ντιρχάμ Ηνωμένων Αραβικών Εμιράτων",
+ "en": "United Arab Emirates dirham",
+ "eo": "UAE-dirhamo",
+ "es": "dírham de los Emiratos Árabes Unidos",
+ "fa": "درهم امارات",
+ "fi": "Yhdistyneiden arabiemiirikuntien dirhami",
+ "fr": "Dirham des Émirats arabes unis",
+ "gl": "Dirham dos Emiratos Árabes Unidos",
+ "he": "דירהם איחוד האמירויות הערביות",
+ "hr": "Dirham UAE",
+ "hu": "emirátusi dirham",
+ "it": "Dirham degli Emirati Arabi Uniti",
+ "ja": "UAEディルハム",
+ "lt": "Jungtinių Arabų Emyratų dirhamas",
+ "nl": "VAE-Dirham",
+ "pl": "Dirham",
+ "pt": "Dirham dos Emirados Árabes Unidos",
+ "ro": "Dirham EAU",
+ "ru": "дирхам ОАЭ",
+ "sr": "УАЕ дирхам",
+ "sv": "Emiratisk dirham",
+ "ta": "ஐக்கிய அரபு அமீரக திர்கம்",
+ "tr": "Birleşik Arap Emirlikleri dirhemi",
+ "uk": "дирхам ОАЕ",
+ "zh": "阿聯酋迪爾汗",
+ "da": "emirata arabiske dirham"
+ },
+ "AFN": {
+ "ar": "أفغاني",
+ "bg": "Афганистански афган",
+ "ca": "afgani",
+ "cs": "afghánský afghání",
+ "da": "Afghani",
+ "de": "Afghani",
+ "el": "Αφγάνι",
+ "en": "Afghan afghani",
+ "eo": "afgana afganio",
+ "es": "afgani afgano",
+ "et": "Afganistani afgaani",
+ "eu": "Afgani",
+ "fa": "افغانی",
+ "fi": "Afganistanin afgaani",
+ "fr": "afghani",
+ "gl": "afgani",
+ "he": "אפגני",
+ "hr": "Afganistanski afgani",
+ "hu": "afgán afgáni",
+ "it": "afghani afgano",
+ "ja": "アフガニ",
+ "lt": "Afganis",
+ "nl": "Afghaanse afghani",
+ "oc": "Afgani",
+ "pl": "Afgani",
+ "pt": "afegane",
+ "ru": "афгани",
+ "sl": "Afganistanski afgani",
+ "sr": "авганистански авгани",
+ "sv": "Afghani",
+ "tr": "Afgani",
+ "uk": "Афгані",
+ "zh": "阿富汗尼",
+ "ro": "afgan afgan",
+ "ta": "ஆப்கான் ஆப்கானி"
+ },
+ "ALL": {
+ "ar": "ليك ألباني",
+ "bg": "Албански лек",
+ "ca": "lek",
+ "cs": "Albánský lek",
+ "cy": "Lek",
+ "da": "Lek",
+ "de": "Albanischer Lek",
+ "el": "Λεκ",
+ "en": "Albanian lek",
+ "eo": "albana leko",
+ "es": "lek albanés",
+ "et": "Albaania lekk",
+ "fa": "لک آلبانی",
+ "fi": "Albanian lek",
+ "fr": "lek",
+ "gl": "Lek albanés",
+ "he": "לק",
+ "hr": "Albanski lek",
+ "hu": "albán lek",
+ "ia": "lek",
+ "it": "lek albanese",
+ "ja": "レク",
+ "lt": "Albanijos lekas",
+ "nl": "Albanese lek",
+ "pl": "lek",
+ "pt": "lek",
+ "ro": "Lek",
+ "ru": "албанский лек",
+ "sk": "Albánsky lek",
+ "sl": "Albanski lek",
+ "sr": "албански лек",
+ "sv": "Lek",
+ "ta": "அல்பேனிய லெக்",
+ "tr": "Arnavut leki",
+ "uk": "Албанський лек",
+ "zh": "阿爾巴尼亞列克",
+ "oc": "Lek"
+ },
+ "AMD": {
+ "ar": "درام أرميني",
+ "bg": "Арменски драм",
+ "ca": "dram",
+ "cs": "Arménský dram",
+ "da": "Armenske dram",
+ "de": "Dram",
+ "el": "Ντραμ",
+ "en": "Armenian dram",
+ "eo": "armena dramo",
+ "es": "dram armenio",
+ "et": "Armeenia dramm",
+ "fa": "درام",
+ "fi": "Armenian dram",
+ "fr": "dram",
+ "gl": "Dram armenio",
+ "he": "דראם ארמני",
+ "hr": "Armenski dram",
+ "hu": "örmény dram",
+ "ia": "Dram (moneta)",
+ "it": "dram armeno",
+ "ja": "ドラム",
+ "lt": "Dramas",
+ "nl": "Armeense dram",
+ "pl": "Dram",
+ "pt": "dram arménio",
+ "ro": "Dram",
+ "ru": "армянский драм",
+ "sk": "Arménsky dram",
+ "sl": "Armenski dram",
+ "sr": "јерменски драм",
+ "sv": "Dram",
+ "ta": "ஆர்மேனிய டிராம்",
+ "tr": "Ermeni dramı",
+ "uk": "Вірменський драм",
+ "zh": "亚美尼亚德拉姆",
+ "cy": "Dram Armenia",
+ "oc": "dram"
+ },
+ "ANG": {
+ "ar": "غيلدر الأنتيل الهولندية",
+ "ca": "florí de les Antilles Neerlandeses",
+ "cs": "Gulden Nizozemských Antil",
+ "de": "Antillen-Gulden",
+ "en": "Netherlands Antillean guilder",
+ "eo": "nederlandantila guldeno",
+ "es": "florín antillano neerlandés",
+ "eu": "Holandarren Antilletako florin",
+ "fa": "گیلدر آنتیل هلند",
+ "fi": "Alankomaiden Antillien guldeni",
+ "fr": "florin des Antilles néerlandaises",
+ "gl": "Florín das Antillas Neerlandesas",
+ "hr": "Nizozemskoantilski gulden",
+ "hu": "holland antillákbeli forint",
+ "it": "Fiorino delle Antille Olandesi",
+ "ja": "アンティル・ギルダー",
+ "lt": "Nyderlandų Antilų guldenas",
+ "nl": "Antilliaanse gulden",
+ "oc": "Florin de las Antilhas Neerlandesas",
+ "pl": "gulden Antyli Holenderskich",
+ "pt": "Florim das Antilhas Neerlandesas",
+ "ru": "нидерландский антильский гульден",
+ "sv": "Antillergulden",
+ "tr": "Hollanda Antilleri guldeni",
+ "uk": "Нідерландський антильський гульден",
+ "zh": "荷屬安的列斯盾",
+ "he": "גילדן אנטילי"
+ },
+ "AOA": {
+ "ar": "كوانزا أنغولي",
+ "bg": "Анголска кванза",
+ "ca": "kwanza",
+ "cs": "angolská kwanza",
+ "cy": "Kwanza",
+ "de": "Kwanza",
+ "el": "Κουάνζα",
+ "en": "kwanza",
+ "eo": "angola kvanzo",
+ "es": "Kwanza angoleño",
+ "fa": "کوانزای آنگولا",
+ "fi": "Angolan kwanza",
+ "fr": "Kwanza",
+ "gl": "Kwanza",
+ "he": "קוואנזה",
+ "hr": "Angolska kvanza",
+ "hu": "angolai kwanza",
+ "it": "Kwanza angolano",
+ "ja": "クワンザ",
+ "lt": "Kvanza",
+ "nl": "Angolese kwanza",
+ "pl": "Kwanza",
+ "pt": "Kwanza",
+ "ru": "ангольская кванза",
+ "sr": "анголска кванза",
+ "sv": "Kwanza",
+ "tr": "Kwanza",
+ "uk": "Ангольська кванза",
+ "vi": "Kwanza Angola",
+ "zh": "安哥拉寬扎",
+ "oc": "Kwanza",
+ "ta": "அங்கோலா குவான்சா"
+ },
+ "ARG": {
+ "es": "Peso Oro Sellado",
+ "zh": "盖金比索"
+ },
+ "ARS": {
+ "ar": "بيزو أرجنتيني",
+ "bg": "Аржентинско песо",
+ "ca": "peso argentí",
+ "cs": "Argentinské peso",
+ "de": "argentinischer Peso",
+ "el": "Πέσο Αργεντινής",
+ "en": "Argentine peso",
+ "eo": "argentina peso",
+ "es": "peso argentino",
+ "et": "Argentina peeso",
+ "eu": "Argentinar peso",
+ "fa": "پزوی آرژانتین",
+ "fi": "Argentiinan peso",
+ "fr": "peso argentin",
+ "gl": "Peso arxentino",
+ "he": "פסו ארגנטינאי",
+ "hr": "Argentinski pezo",
+ "hu": "argentin peso",
+ "it": "peso argentino",
+ "ja": "アルゼンチン・ペソ",
+ "lt": "Argentinos pesas",
+ "nl": "Argentijnse peso",
+ "oc": "Peso",
+ "pl": "Peso argentyńskie",
+ "pt": "peso argentino",
+ "ro": "Peso argentinian",
+ "ru": "аргентинское песо",
+ "sr": "аргентински пезос",
+ "sv": "Argentinsk peso",
+ "ta": "ஆர்ஜென்டின பீசோ",
+ "tr": "Arjantin pesosu",
+ "uk": "аргентинський песо",
+ "vi": "Peso Argentina",
+ "zh": "阿根廷比索",
+ "cy": "ars"
+ },
+ "AUD": {
+ "ar": "دولار أسترالي",
+ "bg": "Австралийски долар",
+ "ca": "dòlar australià",
+ "cs": "Australský dolar",
+ "da": "Australske dollar",
+ "de": "Australischer Dollar",
+ "el": "Δολάριο Αυστραλίας",
+ "en": "Australian dollar",
+ "eo": "Aŭstralia dolaro",
+ "es": "dólar australiano",
+ "et": "Austraalia dollar",
+ "eu": "Australiar dolar",
+ "fa": "دلار استرالیا",
+ "fi": "Australian dollari",
+ "fr": "dollar australien",
+ "gl": "Dólar australiano",
+ "he": "דולר אוסטרלי",
+ "hr": "Australski dolar",
+ "hu": "ausztrál dollár",
+ "it": "dollaro australiano",
+ "ja": "オーストラリア・ドル",
+ "lt": "Australijos doleris",
+ "nl": "Australische dollar",
+ "oc": "Dolar australian",
+ "pl": "Dolar australijski",
+ "pt": "Dólar australiano",
+ "ro": "dolar australian",
+ "ru": "австралийский доллар",
+ "sk": "Austrálsky dolár",
+ "sr": "аустралијски долар",
+ "sv": "Australisk dollar",
+ "ta": "அவுத்திரேலிய வெள்ளி",
+ "tr": "Avustralya doları",
+ "uk": "австралійський долар",
+ "vi": "Đô la Úc",
+ "zh": "澳大利亚元"
+ },
+ "AWG": {
+ "ar": "فلورن أروبي",
+ "ca": "florí d'Aruba",
+ "cs": "Arubský florin",
+ "de": "Aruba-Florin",
+ "el": "Φλορίνι της Αρούμπα",
+ "en": "Aruban florin",
+ "eo": "aruba guldeno",
+ "es": "florín arubeño",
+ "et": "Aruba floriin",
+ "eu": "Florin arubar",
+ "fa": "آروبا فلورین",
+ "fi": "Aruban floriini",
+ "fr": "Florin arubais",
+ "gl": "Florín arubeño",
+ "he": "פלורין ארובי",
+ "hr": "Arupski gulden",
+ "hu": "arubai florin",
+ "it": "Fiorino arubano",
+ "ja": "アルバ・フロリン",
+ "lt": "Arubos florinas",
+ "nl": "Arubaanse florin",
+ "pl": "Florin arubański",
+ "pt": "Florim arubano",
+ "ro": "Florin arubez",
+ "ru": "арубанский флорин",
+ "sv": "Arubansk florin",
+ "tr": "Aruba florini",
+ "uk": "Арубський флорін",
+ "zh": "阿魯巴弗羅林",
+ "sr": "арупски флорин",
+ "ta": "அரூபா ஃபுளோரின்"
+ },
+ "AZN": {
+ "ar": "مانات أذربيجاني",
+ "bg": "Азербайджански манат",
+ "ca": "manat azerbaidjanès",
+ "cs": "Ázerbájdžánský manat",
+ "da": "Aserbajdsjanske manat",
+ "de": "Aserbaidschan-Manat",
+ "el": "Μανάτ του Αζερμπαϊτζάν",
+ "en": "Azerbaijani manat",
+ "eo": "azerbajĝana manato",
+ "es": "manat azerbaiyano",
+ "et": "Aserbaidžaani manat",
+ "eu": "Manat azerbaijandar",
+ "fa": "منات جمهوری آذربایجان",
+ "fi": "Azerbaidžanin manat",
+ "fr": "Manat azerbaïdjanais",
+ "gl": "Manat acerbaixano",
+ "he": "מאנאט אזרבייג'ני",
+ "hr": "Azerbajdžanski manat",
+ "hu": "azeri manat",
+ "ia": "manat azeri",
+ "it": "Manat azero",
+ "ja": "アゼルバイジャン・マナト",
+ "lt": "Azerbaidžano manatas",
+ "nl": "Azerbeidzjaanse manat",
+ "pl": "Manat azerski",
+ "pt": "Manat azeri",
+ "ro": "Manat azer",
+ "ru": "азербайджанский манат",
+ "sk": "Azerbajdžanský manat",
+ "sl": "azerbajdžanski manat",
+ "sr": "азербејџански манат",
+ "sv": "Azerbajdzjansk manat",
+ "ta": "அசர்பைச்சானிய மனாத்து",
+ "tr": "Azerbaycan manatı",
+ "uk": "Азербайджанський манат",
+ "vi": "Manat Azerbaijan",
+ "zh": "阿塞拜疆马纳特",
+ "cy": "Manat Aserbaijan",
+ "oc": "Manat"
+ },
+ "BAM": {
+ "ar": "مارك بوسني",
+ "bg": "Конвертибилна марка",
+ "ca": "marc convertible",
+ "cs": "Konvertibilní marka",
+ "da": "Konvertibilna mark",
+ "de": "konvertible Mark",
+ "el": "Μετατρέψιμο μάρκο Βοσνίας και Ερζεγοβίνης",
+ "en": "convertible mark",
+ "eo": "konvertebla marko",
+ "es": "marco bosnioherzegovino",
+ "fa": "مارک تبدیلپذیر بوسنی و هرزگوین",
+ "fi": "Bosnian ja Hertsegovinan vaihdettava markka",
+ "fr": "mark convertible de Bosnie-Herzégovine",
+ "gl": "Marco convertible",
+ "he": "מארק סחיר",
+ "hr": "Bosna i Hercegovina Konvertibilna marka",
+ "hu": "bosnyák konvertibilis márka",
+ "it": "marco bosniaco",
+ "ja": "兌換マルク",
+ "lt": "Konvertuojamoji markė",
+ "nl": "Bosnische inwisselbare mark",
+ "pl": "Marka zamienna",
+ "pt": "marco conversível",
+ "ro": "Marcă bosniacă convertibilă",
+ "ru": "конвертируемая марка",
+ "sk": "Konvertibilná marka",
+ "sl": "Konvertibilna marka Bosne in Hercegovine",
+ "sr": "конвертибилна марка",
+ "sv": "Konvertibilna marka",
+ "ta": "கன்வர்ட்டிபிள் மார்க்கு",
+ "tr": "Bosna-Hersek değiştirilebilir markı",
+ "uk": "Конвертована марка",
+ "zh": "波斯尼亚和黑塞哥维那可兑换马克",
+ "cy": "mark cyfnewidiol (Bosnia)",
+ "ia": "mark convertibile de Bosnia-Herzegovina",
+ "oc": "Marka de Bòsnia e Ercegovina"
+ },
+ "BBD": {
+ "ar": "دولار بربادوسي",
+ "bg": "Барбадоски долар",
+ "ca": "dòlar de Barbados",
+ "cs": "Barbadoský dolar",
+ "de": "Barbados-Dollar",
+ "el": "Δολάριο Μπαρμπάντος",
+ "en": "Barbadian dollar",
+ "eo": "barbada dolaro",
+ "es": "dólar de Barbados",
+ "eu": "Dolar barbadostar",
+ "fa": "دلار باربادوس",
+ "fi": "Barbadoksen dollari",
+ "fr": "dollar barbadien",
+ "gl": "Dólar de Barbados",
+ "hr": "Barbadoski dolar",
+ "hu": "barbadosi dollár",
+ "it": "dollaro di Barbados",
+ "ja": "バルバドス・ドル",
+ "lt": "Barbadoso doleris",
+ "nl": "Barbadiaanse dollar",
+ "pl": "Dolar barbadoski",
+ "pt": "dólar barbadense",
+ "ru": "барбадосский доллар",
+ "sk": "Barbadoský dolár",
+ "sr": "барбадоски долар",
+ "sv": "Barbadisk dollar",
+ "tr": "Barbados doları",
+ "uk": "Барбадоський долар",
+ "vi": "Đô la Barbados",
+ "zh": "巴貝多元",
+ "ta": "பார்படோஸ் டாலர்"
+ },
+ "BDT": {
+ "ar": "تاكا بنغلاديشي",
+ "bg": "Бангладешка така",
+ "ca": "taka",
+ "cs": "Bangladéšská taka",
+ "de": "Taka",
+ "el": "Μπανγκλαντεσιανή τάκα",
+ "en": "Bangladeshi taka",
+ "eo": "bangladeŝa tako",
+ "es": "taka bangladesí",
+ "fa": "تاکا بنگلادش",
+ "fi": "Bangladeshin taka",
+ "fr": "taka",
+ "hr": "Bangladeška taka",
+ "hu": "bangladesi taka",
+ "it": "taka bengalese",
+ "ja": "タカ",
+ "lt": "Bangladešo taka",
+ "nl": "Bengalese taka",
+ "oc": "Taka",
+ "pl": "Taka",
+ "pt": "taka",
+ "ru": "бангладешская така",
+ "sk": "Taka",
+ "sr": "бангладешка така",
+ "sv": "Taka",
+ "ta": "வங்காளதேச இட்டாக்கா",
+ "tr": "Taka",
+ "uk": "Бангладеська така",
+ "vi": "Taka",
+ "zh": "孟加拉塔卡",
+ "he": "טאקה"
+ },
"BGN": {
- "fr": "Lev bulgare",
- "en": "Bulgarian lev",
- "nl": "Bulgaarse lev",
- "de": "Lew",
- "it": "Lev bulgaro",
- "hu": "bolg\u00e1r leva",
- "es": "Lev"
- },
- "PAB": {
- "fr": "Balboa",
- "en": "Panamanian balboa",
- "nl": "Panamese balboa",
- "de": "Panamaischer Balboa",
- "it": "Balboa panamense",
- "hu": "Panamai balboa",
- "es": "Balboa"
- },
+ "ar": "ليف بلغاري",
+ "bg": "български лев",
+ "ca": "lev",
+ "cs": "bulharský lev",
+ "da": "Lev",
+ "de": "Lew",
+ "el": "Λεβ",
+ "en": "Bulgarian lev",
+ "eo": "bulgara levo",
+ "es": "lev búlgaro",
+ "et": "Leev",
+ "eu": "Bulgariar lev",
+ "fa": "لو بلغارستان",
+ "fi": "Bulgarian leva",
+ "fr": "lev bulgare",
+ "gl": "Lev búlgaro",
+ "he": "לב",
+ "hr": "Bugarski lev",
+ "hu": "bolgár leva",
+ "it": "lev bulgaro",
+ "ja": "レフ",
+ "lt": "Bulgarijos levas",
+ "nl": "Bulgaarse lev",
+ "oc": "Lev",
+ "pl": "Lew",
+ "pt": "lev búlgaro",
+ "ro": "Leva",
+ "ru": "болгарский лев",
+ "sk": "Bulharský lev",
+ "sl": "Bolgarski lev",
+ "sr": "бугарски лев",
+ "sv": "Lev",
+ "ta": "பல்கேரிய லெவ்",
+ "tr": "Lev",
+ "uk": "болгарський лев",
+ "vi": "Lev Bulgaria",
+ "zh": "保加利亞列弗",
+ "ia": "lev bulgare"
+ },
+ "BHD": {
+ "ar": "دينار بحريني",
+ "bg": "Бахрейнски динар",
+ "ca": "dinar de Bahrain",
+ "cs": "Bahrajnský dinár",
+ "de": "Bahrain-Dinar",
+ "el": "Δηνάριο Μπαχρέιν",
+ "en": "Bahraini dinar",
+ "eo": "barejna dinaro",
+ "es": "dinar bareiní",
+ "fa": "دینار بحرین",
+ "fi": "Bahrainin dinaari",
+ "fr": "dinar bahreïnien",
+ "he": "דינר בחרייני",
+ "hr": "Bahreinski dinar",
+ "hu": "bahreini dinár",
+ "it": "dinaro del Bahrain",
+ "ja": "バーレーン・ディナール",
+ "lt": "Bahreino dinaras",
+ "nl": "Bahreinse dinar",
+ "pl": "Dinar Bahrajnu",
+ "pt": "dinar bareinita",
+ "ru": "бахрейнский динар",
+ "sr": "бахреински динар",
+ "sv": "Bahrainsk dinar",
+ "tr": "Bahreyn dinarı",
+ "uk": "Бахрейнський динар",
+ "zh": "巴林第納爾",
+ "oc": "Dinar de Bahrayn",
+ "ta": "பஹ்ரேன் தினார்"
+ },
+ "BIF": {
+ "ar": "فرنك بوروندي",
+ "bg": "Бурундийски франк",
+ "ca": "franc de Burundi",
+ "cs": "Burundský frank",
+ "de": "Burundi-Franc",
+ "el": "Φράγκο Μπουρούντι",
+ "en": "Burundian franc",
+ "eo": "burunda franko",
+ "es": "franco burundés",
+ "fa": "فرانک بوروندی",
+ "fi": "Burundin frangi",
+ "fr": "Franc burundais",
+ "hr": "Burundski franak",
+ "hu": "burundi frank",
+ "it": "Franco del Burundi",
+ "ja": "ブルンジ・フラン",
+ "lt": "Burundžio frankas",
+ "nl": "Burundese frank",
+ "pl": "frank burundyjski",
+ "pt": "Franco do Burúndi",
+ "ru": "бурундийский франк",
+ "sr": "бурундски франак",
+ "sv": "Burundisk franc",
+ "ta": "புரூண்டி பிராங்க்",
+ "tr": "Burundi frangı",
+ "uk": "бурундійський франк",
+ "zh": "蒲隆地法郎",
+ "he": "פרנק בורונדי",
+ "ro": "franc burundez"
+ },
+ "BMD": {
+ "ar": "دولار برمودي",
+ "ca": "dòlar de les Bermudes",
+ "cs": "Bermudský dolar",
+ "de": "Bermuda-Dollar",
+ "el": "Δολάριο Βερμούδων",
+ "en": "Bermudian dollar",
+ "eo": "bermuda dolaro",
+ "es": "Dólar bermudeño",
+ "eu": "Dolar bermudar",
+ "fa": "دلار برمودا",
+ "fi": "Bermudan dollari",
+ "fr": "Dollar bermudien",
+ "hr": "Bermudski dolar",
+ "hu": "bermudai dollár",
+ "it": "Dollaro di Bermuda",
+ "ja": "バミューダ・ドル",
+ "lt": "Bermudos doleris",
+ "nl": "Bermuda-dollar",
+ "pl": "Dolar bermudzki",
+ "pt": "Dólar bermudense",
+ "ru": "бермудский доллар",
+ "sr": "бермудски долар",
+ "sv": "Bermudisk dollar",
+ "tr": "Bermuda doları",
+ "uk": "Бермудський долар",
+ "vi": "Đô la Bermuda",
+ "zh": "百慕達元",
+ "he": "דולר ברמודה ",
+ "ta": "பெர்முடா டாலர்"
+ },
+ "BND": {
+ "ar": "دولار بروني",
+ "bg": "Брунейски долар",
+ "ca": "dòlar de Brunei",
+ "cs": "Brunejský dolar",
+ "de": "Brunei-Dollar",
+ "en": "Brunei dollar",
+ "eo": "bruneja dolaro",
+ "es": "dólar de Brunéi",
+ "eu": "Dolar bruneitar",
+ "fa": "دلار برونئی",
+ "fi": "Brunein dollari",
+ "fr": "dollar de Brunei",
+ "gl": "Dólar de Brunei",
+ "he": "דולר ברוניי",
+ "hr": "Brunejski dolar",
+ "hu": "brunei dollár",
+ "it": "dollaro del Brunei",
+ "ja": "ブルネイ・ドル",
+ "lt": "Brunėjaus doleris",
+ "nl": "Bruneise dollar",
+ "pl": "Dolar Brunei",
+ "pt": "Dólar de Brunei",
+ "ru": "брунейский доллар",
+ "sr": "брунејски долар",
+ "sv": "Bruneisk dollar",
+ "ta": "புருனே டாலர்",
+ "tr": "Brunei doları",
+ "uk": "Брунейський долар",
+ "vi": "Đô la Brunei",
+ "zh": "汶萊元",
+ "el": "δολάριο Μπρουνέι"
+ },
"BOB": {
- "fr": "boliviano",
- "en": "boliviano",
- "nl": "Boliviaanse boliviano",
- "de": "Boliviano",
- "it": "boliviano",
- "hu": "bol\u00edviai boliviano",
- "es": "boliviano"
- },
- "DKK": {
- "fr": "Couronne danoise",
- "en": "Danish krone",
- "nl": "Deense kroon",
- "de": "D\u00e4nische Krone",
- "it": "Corona danese",
- "hu": "d\u00e1n korona",
- "es": "Corona danesa"
- },
+ "ar": "بوليفاريو بوليفي",
+ "ca": "boliviano",
+ "cs": "Bolivijský boliviano",
+ "da": "Boliviano",
+ "de": "Boliviano",
+ "el": "Μπολιβιάνο",
+ "en": "boliviano",
+ "eo": "bolivia bolivjano",
+ "es": "boliviano",
+ "eu": "Bigarren boliviano",
+ "fa": "بولیویانو بولیوی",
+ "fi": "Bolivian boliviano",
+ "fr": "boliviano",
+ "gl": "Boliviano",
+ "he": "בוליביאנו",
+ "hr": "Bolivijski bolivijano",
+ "hu": "bolíviai boliviano",
+ "it": "boliviano",
+ "ja": "ボリビアーノ",
+ "lt": "Bolivianas",
+ "nl": "Boliviaanse boliviano",
+ "oc": "Boliviano",
+ "pl": "boliviano",
+ "pt": "Boliviano",
+ "ru": "боливиано",
+ "sr": "боливијски боливијано",
+ "sv": "Boliviano",
+ "tr": "Boliviano",
+ "uk": "Болівіано",
+ "zh": "玻利維亞諾",
+ "ta": "பொலிவியானோ"
+ },
+ "BOV": {
+ "es": "Boliviano con mantenimiento de valor respecto al dólar estadounidense"
+ },
+ "BRL": {
+ "ar": "ريال برازيلي",
+ "bg": "Бразилски реал",
+ "ca": "real",
+ "cs": "Brazilský real",
+ "da": "Brasiliansk real",
+ "de": "brasilianischer Real",
+ "el": "Ρεάλ Βραζιλίας",
+ "en": "Brazilian real",
+ "eo": "brazila realo",
+ "es": "real brasileño",
+ "eu": "Brasildar real",
+ "fa": "رئال",
+ "fi": "Brasilian real",
+ "fr": "réal brésilien",
+ "gl": "Real brasileiro",
+ "he": "ריאל ברזילאי",
+ "hr": "Brazilski real",
+ "hu": "brazil real",
+ "it": "real brasiliano",
+ "ja": "レアル",
+ "lt": "Brazilijos realas",
+ "nl": "Braziliaanse real",
+ "pl": "Real brazylijski",
+ "pt": "real",
+ "ro": "Real",
+ "ru": "бразильский реал",
+ "sr": "бразилски реал",
+ "sv": "Real",
+ "ta": "பிரசிலியன் ரியால்",
+ "tr": "Brezilya reali",
+ "uk": "бразильський реал",
+ "vi": "Real Brasil",
+ "zh": "巴西雷亞爾",
+ "oc": "Real"
+ },
+ "BSD": {
+ "ar": "دولار بهامي",
+ "bg": "Бахамски долар",
+ "ca": "dòlar de les Bahames",
+ "cs": "Bahamský dolar",
+ "de": "Bahama-Dollar",
+ "el": "Δολάριο Μπαχαμών",
+ "en": "Bahamian dollar",
+ "eo": "bahama dolaro",
+ "es": "dólar bahameño",
+ "eu": "Dolar bahamar",
+ "fa": "دلار باهاما",
+ "fi": "Bahaman dollari",
+ "fr": "dollar bahaméen",
+ "gl": "Dólar bahamés",
+ "hr": "Bahamski dolar",
+ "hu": "bahamai dollár",
+ "it": "dollaro delle Bahamas",
+ "ja": "バハマ・ドル",
+ "lt": "Bahamų doleris",
+ "nl": "Bahamaanse dollar",
+ "oc": "Dolar de las Bahamas",
+ "pl": "Dolar bahamski",
+ "pt": "dólar baamiano",
+ "ru": "багамский доллар",
+ "sk": "Bahamský dolár",
+ "sr": "бахамски долар",
+ "sv": "Bahamansk dollar",
+ "tr": "Bahama doları",
+ "uk": "Багамський долар",
+ "vi": "Đô la Bahamas",
+ "zh": "巴哈馬元",
+ "ta": "பஹ்மானிய டாலர்"
+ },
+ "BTN": {
+ "ar": "نغولترم بوتاني",
+ "bg": "Бутански нгултрум",
+ "ca": "Ngultrum",
+ "cs": "Bhútánský ngultrum",
+ "da": "Ngultrum",
+ "de": "Ngultrum",
+ "el": "Νγκούλτρουμ",
+ "en": "ngultrum",
+ "eo": "butana ngultrumo",
+ "es": "ngultrum butanés",
+ "et": "Bhutani ngultrum",
+ "eu": "Ngultrum",
+ "fa": "نگولتروم بوتان",
+ "fi": "Bhutanin ngultrum",
+ "fr": "ngultrum",
+ "gl": "Ngultrum",
+ "hr": "Butanski ngultrum",
+ "hu": "bhutáni ngultrum",
+ "it": "Ngultrum del Bhutan",
+ "ja": "ニュルタム",
+ "lt": "Ngultrumas",
+ "nl": "Bhutaanse ngultrum",
+ "pl": "Ngultrum",
+ "pt": "ngultrum",
+ "ro": "Ngultrum",
+ "ru": "нгултрум",
+ "sk": "Ngultrum",
+ "sr": "бутански нгултрум",
+ "sv": "Ngultrum",
+ "ta": "பூட்டானின் இங்குல்ட்ரம்",
+ "tr": "Ngultrum",
+ "uk": "Нгултрум",
+ "vi": "Ngultrum Bhutan",
+ "zh": "不丹努爾特魯姆",
+ "he": "נגולטורם",
+ "oc": "Ngultrum"
+ },
"BWP": {
- "fr": "Pula",
- "en": "Botswana pula",
- "nl": "Botswaanse pula",
- "de": "Botswanischer Pula",
- "it": "Pula del Botswana",
- "hu": "Botswanai pula",
- "es": "Pula"
- },
- "LBP": {
- "fr": "livre libanaise",
- "en": "Lebanese pound",
- "nl": "Libanees pond",
- "de": "Libanesisches Pfund",
- "it": "Lira libanese",
- "hu": "libanoni font",
- "es": "Libra libanesa"
- },
- "TZS": {
- "fr": "shilling tanzanien",
- "en": "Tanzanian shilling",
- "nl": "Tanzaniaanse shilling",
- "de": "Tansania-Schilling",
- "it": "Scellino tanzaniano",
- "hu": "Tanz\u00e1niai shilling",
- "es": "chel\u00edn"
- },
- "VND": {
- "fr": "Dong",
- "en": "Vietnamese dong",
- "nl": "Vietnamese dong",
- "de": "Vietnamesischer \u0110\u1ed3ng",
- "it": "\u0110\u1ed3ng vietnamita",
- "hu": "vietnami \u0111\u1ed3ng",
- "es": "\u0111\u1ed3ng vietnamita"
- },
- "AOA": {
- "fr": "Kwanza",
- "en": "Angolan kwanza",
- "nl": "Angolese kwanza",
- "de": "Kwanza",
- "it": "Kwanza angolano",
- "hu": "angolai kwanza",
- "es": "Kwanza angole\u00f1o"
- },
- "KHR": {
- "fr": "Riel",
- "en": "riel",
- "nl": "Cambodjaanse riel",
- "de": "Kambodschanischer Riel",
- "it": "Riel cambogiano",
- "hu": "kambodzsai riel",
- "es": "Riel camboyano"
- },
- "MYR": {
- "fr": "Ringgit",
- "en": "Malaysian ringgit",
- "nl": "Maleisische ringgit",
- "de": "Ringgit",
- "it": "Ringgit malese",
- "hu": "mal\u00e1j ringgit",
- "es": "Ringgit"
- },
- "KYD": {
- "fr": "Dollar des \u00eeles Ca\u00efmans",
- "en": "Cayman Islands dollar",
- "nl": "Kaaimaneilandse dollar",
- "de": "Kaiman-Dollar",
- "it": "Dollaro delle Cayman",
- "hu": "Kajm\u00e1n-szigeteki doll\u00e1r",
- "es": "D\u00f3lar de las Islas Caim\u00e1n"
- },
- "LYD": {
- "fr": "Dinar libyen",
- "en": "Libyan dinar",
- "nl": "Libische dinar",
- "de": "Libyscher Dinar",
- "it": "Dinaro libico",
- "hu": "L\u00edbiai din\u00e1r",
- "es": "Dinar libio"
- },
- "UAH": {
- "fr": "Hryvnia",
- "en": "hryvnia",
- "nl": "Oekra\u00efense hryvnja",
- "de": "Hrywnja",
- "it": "Grivnia ucraina",
- "hu": "ukr\u00e1n hrivnya",
- "es": "Grivna"
- },
- "JOD": {
- "fr": "Dinar jordanien",
- "en": "Jordanian dinar",
- "nl": "Jordaanse dinar",
- "de": "Jordanischer Dinar",
- "it": "Dinaro giordano",
- "hu": "jord\u00e1n din\u00e1r",
- "es": "Dinar jordano"
- },
- "SUR": {
- "fr": "Rouble sovi\u00e9tique",
- "en": "Soviet ruble",
- "de": "Sowjetischer Rubel",
- "it": "Rublo sovietico",
- "hu": "Szovjet rubel",
- "es": "Rublo sovi\u00e9tico"
- },
- "AWG": {
- "fr": "Florin arubais",
- "en": "Aruban florin",
- "nl": "Arubaanse florin",
- "de": "Aruba-Florin",
- "it": "Fiorino arubano",
- "hu": "Arubai florin",
- "es": "Flor\u00edn arube\u00f1o"
- },
- "SAR": {
- "fr": "Riyal saoudien",
- "en": "Saudi riyal",
- "nl": "Saoedi-Arabische riyal",
- "de": "Saudi-Rial",
- "it": "Riyal saudita",
- "hu": "sza\u00fadi ri\u00e1l",
- "es": "Riyal saud\u00ed"
- },
- "EUR": {
- "fr": "euro",
- "en": "euro",
- "nl": "euro",
- "de": "Euro",
- "it": "euro",
- "hu": "eur\u00f3",
- "es": "euro"
- },
- "HKD": {
- "fr": "Dollar de Hong Kong",
- "en": "Hong Kong dollar",
- "nl": "Hongkongse dollar",
- "de": "Hongkong-Dollar",
- "it": "dollaro hongkonghese",
- "hu": "hongkongi doll\u00e1r",
- "es": "D\u00f3lar de Hong Kong"
- },
- "SRG": {
- "en": "Surinamese guilder",
- "nl": "Surinaamse gulden",
- "it": "Fiorino surinamese",
- "es": "Flor\u00edn surinam\u00e9s"
- },
+ "ar": "بوتسوانا بولا",
+ "bg": "Ботсванска пула",
+ "ca": "pula",
+ "cs": "Botswanská pula",
+ "da": "Pula",
+ "de": "botswanischer Pula",
+ "el": "Πούλα",
+ "en": "Botswana pula",
+ "eo": "bocvana pulao",
+ "es": "pula",
+ "et": "Botswana pula",
+ "eu": "Pula",
+ "fa": "پولای بوتسوانا",
+ "fi": "Pula",
+ "fr": "pula",
+ "gl": "Pula",
+ "he": "פולה",
+ "hr": "Bocvanska pula",
+ "hu": "botswanai pula",
+ "it": "pula del Botswana",
+ "ja": "プラ",
+ "lt": "Botsvanos pula",
+ "nl": "Botswaanse pula",
+ "pl": "Pula",
+ "pt": "pula",
+ "ro": "Pula botswaniană",
+ "ru": "Ботсванская пула",
+ "sr": "боцванска пула",
+ "sv": "Pula",
+ "tr": "Botsvana pulası",
+ "uk": "Ботсванська пула",
+ "zh": "波札那普拉",
+ "oc": "Pula",
+ "ta": "போட்ஸ்வானா பூலா"
+ },
+ "BYN": {
+ "ar": "روبل بلاروسي",
+ "bg": "Беларуска рубла",
+ "ca": "Ruble bielorús",
+ "cs": "Běloruský rubl",
+ "da": "Hviderussiske rubler",
+ "de": "Belarussischer Rubel",
+ "el": "Λευκορωσικό ρούβλι",
+ "en": "Belarusian ruble",
+ "eo": "Belorusia rublo",
+ "es": "rublo bierlorruso",
+ "et": "Valgevene rubla",
+ "fa": "روبل بلاروس",
+ "fi": "Valko-Venäjän rupla",
+ "fr": "Rouble biélorusse",
+ "gl": "Rublo belaruso",
+ "he": "רובל בלארוסי",
+ "hr": "Bjeloruski rubalj",
+ "hu": "belarusz rubel",
+ "it": "Rublo bielorusso",
+ "ja": "ベラルーシ・ルーブル",
+ "lt": "Baltarusijos rublis",
+ "nl": "Wit-Russische roebel",
+ "pl": "Rubel białoruski",
+ "pt": "Rublo bielorrusso",
+ "ro": "Rublă belarusă",
+ "ru": "белорусский рубль",
+ "sk": "Bieloruský rubeľ",
+ "sl": "Beloruski rubelj",
+ "sr": "Белоруска рубља",
+ "sv": "Belarusisk rubel",
+ "ta": "பெலருசிய ரூபிள்",
+ "tr": "Belarus rublesi",
+ "uk": "білоруський рубель",
+ "vi": "Rúp Belarus",
+ "zh": "白俄羅斯盧布",
+ "cy": "rwbl Belarws"
+ },
+ "BZD": {
+ "ar": "دولار بليزي",
+ "bg": "Белизийски долар",
+ "ca": "dòlar de Belize",
+ "cs": "Belizský dolar",
+ "de": "Belize-Dollar",
+ "el": "Δολάριο Μπελίζε",
+ "en": "Belize dollar",
+ "eo": "beliza dolaro",
+ "es": "Dólar beliceño",
+ "eu": "Dolar belizetar",
+ "fa": "دلار بلیز",
+ "fi": "Belizen dollari",
+ "fr": "dollar bélizien",
+ "gl": "Dólar de Belize",
+ "he": "דולר בליזאי",
+ "hr": "Belizejski dolar",
+ "hu": "belize-i dollár",
+ "it": "Dollaro del Belize",
+ "ja": "ベリーズ・ドル",
+ "lt": "Belizo doleris",
+ "nl": "Belizaanse dollar",
+ "pl": "Dolar Belize",
+ "pt": "Dólar de Belize",
+ "ru": "белизский доллар",
+ "sr": "белизејски долар",
+ "sv": "Belizisk dollar",
+ "tr": "Belize doları",
+ "uk": "Белізський долар",
+ "vi": "Đô la Belize",
+ "zh": "貝里斯元",
+ "cy": "Doler (Belîs)",
+ "ta": "பெலலீசு டாலர்"
+ },
+ "CAD": {
+ "ar": "دولار كندي",
+ "bg": "канадски долар",
+ "ca": "dòlar canadenc",
+ "cs": "Kanadský dolar",
+ "da": "Canadiske dollar",
+ "de": "kanadischer Dollar",
+ "el": "Καναδικό δολάριο",
+ "en": "Canadian dollar",
+ "eo": "kanada dolaro",
+ "es": "dólar canadiense",
+ "et": "Kanada dollar",
+ "eu": "Kanadar dolar",
+ "fa": "دلار کانادا",
+ "fi": "Kanadan dollari",
+ "fr": "dollar canadien",
+ "gl": "Dólar canadense",
+ "he": "דולר קנדי",
+ "hr": "Kanadski dolar",
+ "hu": "kanadai dollár",
+ "ia": "Dollar canadian",
+ "it": "dollaro canadese",
+ "ja": "カナダドル",
+ "lt": "Kanados doleris",
+ "nl": "Canadese dollar",
+ "pl": "Dolar kanadyjski",
+ "pt": "dólar canadense",
+ "ro": "dolar canadian",
+ "ru": "канадский доллар",
+ "sk": "Kanadský dolár",
+ "sl": "Kanadski dolar",
+ "sr": "канадски долар",
+ "sv": "kanadensisk dollar",
+ "ta": "கனடா டொலர்",
+ "tr": "Kanada doları",
+ "uk": "канадський долар",
+ "vi": "Đô la Canada",
+ "zh": "加拿大元",
+ "cy": "doler",
+ "oc": "Dolar canadian"
+ },
+ "CDF": {
+ "ar": "فرنك كونغولي",
+ "bg": "Конгоански франк",
+ "ca": "franc congolès",
+ "cs": "Konžský frank",
+ "de": "Kongo-Franc",
+ "en": "Congolese franc",
+ "eo": "konga franko",
+ "es": "franco congoleño",
+ "fa": "فرانک کنگو",
+ "fi": "Kongon frangi",
+ "fr": "franc congolais",
+ "gl": "Franco congolés",
+ "he": "פרנק קונגולזי",
+ "hr": "Kongoanski franak",
+ "hu": "kongói frank",
+ "it": "franco congolese",
+ "ja": "コンゴ・フラン",
+ "lt": "Kongo frankas",
+ "nl": "Congolese frank",
+ "pl": "frank kongijski",
+ "pt": "franco congolês",
+ "ru": "конголезский франк",
+ "sk": "Konžský frank",
+ "sr": "конгоански франак",
+ "sv": "Kongolesisk franc",
+ "tr": "Kongo frangı",
+ "uk": "Конголезький франк",
+ "vi": "Franc Congo",
+ "zh": "剛果法郎",
+ "cy": "ffranc y Congo",
+ "oc": "Franc congolés"
+ },
"CHF": {
- "fr": "Franc suisse",
- "en": "Swiss franc",
- "nl": "Zwitserse frank",
- "de": "Schweizer Franken",
- "it": "franco svizzero",
- "hu": "sv\u00e1jci frank",
- "es": "franco suizo"
- },
+ "ar": "فرنك سويسري",
+ "bg": "швейцарски франк",
+ "ca": "franc suís",
+ "cs": "švýcarský frank",
+ "da": "Schweizisk franc",
+ "de": "Schweizer Franken",
+ "el": "Ελβετικό φράγκο",
+ "en": "Swiss franc",
+ "eo": "svisa franko",
+ "es": "franco suizo",
+ "et": "Šveitsi frank",
+ "eu": "Suitzar libera",
+ "fa": "فرانک سوئیس",
+ "fi": "Sveitsin frangi",
+ "fr": "franc suisse",
+ "gl": "Franco suízo",
+ "he": "פרנק שווייצרי",
+ "hr": "Švicarski franak",
+ "hu": "svájci frank",
+ "it": "franco svizzero",
+ "ja": "スイス・フラン",
+ "lt": "Šveicarijos frankas",
+ "nl": "Zwitserse frank",
+ "oc": "Franc soís",
+ "pl": "frank szwajcarski",
+ "pt": "Franco suíço",
+ "ro": "Franc elvețian",
+ "ru": "швейцарский франк",
+ "sk": "Švajčiarsky frank",
+ "sl": "Švicarski frank",
+ "sr": "швајцарски франак",
+ "sv": "schweizisk franc",
+ "ta": "சுவிசு பிராங்க்",
+ "te": "స్విస్ ఫ్రాంక్",
+ "tr": "İsviçre frangı",
+ "uk": "швейцарський франк",
+ "vi": "Franc Thụy Sĩ",
+ "zh": "瑞士法郎",
+ "cy": "franc Swisaidd",
+ "ia": "franc switze"
+ },
+ "CKD": {
+ "ar": "دولار جزر كوك",
+ "ca": "dòlar de les illes Cook",
+ "cs": "Dolar Cookových ostrovů",
+ "de": "Cookinsel-Dollar",
+ "el": "Δολάριο Νήσων Κουκ",
+ "en": "Cook Islands dollar",
+ "eo": "Kukinsula dolaro",
+ "es": "dólar de las Islas Cook",
+ "fa": "دلار جزایر کوک",
+ "fi": "Cookinsaarten dollari",
+ "fr": "Dollar des îles Cook",
+ "gl": "Dólar das Illas Cook",
+ "hr": "Kukovootočki dolar",
+ "hu": "Cook-szigeteki dollár",
+ "it": "Dollaro delle Cook",
+ "lt": "Kuko Salų doleris",
+ "nl": "Cookeilandendollar",
+ "pl": "Dolar Wysp Cooka",
+ "pt": "Dólar das Ilhas Cook",
+ "ro": "Dolar din Insulele Cook",
+ "ru": "доллар Островов Кука",
+ "sv": "Cook Islands dollar",
+ "uk": "Долар Островів Кука",
+ "vi": "Đô la Quần đảo Cook",
+ "zh": "庫克群島元",
+ "ja": "クック諸島ドル"
+ },
+ "CLF": {
+ "de": "Unidad de Fomento",
+ "en": "Unidad de Fomento",
+ "es": "Unidad de Fomento",
+ "fr": "Unidad de Fomento",
+ "pl": "Unidad de Fomento",
+ "ru": "Условная расчётная единица Чили",
+ "zh": "UF值",
+ "ja": "ウニダ・デ・フォメント"
+ },
+ "CLP": {
+ "ar": "بيزو تشيلي",
+ "bg": "Чилийско песо",
+ "ca": "peso xilè",
+ "cs": "Chilské peso",
+ "cy": "Peso Chile",
+ "de": "chilenischer Peso",
+ "el": "Πέσο Χιλής",
+ "en": "Chilean peso",
+ "eo": "ĉilia peso",
+ "es": "peso chileno",
+ "et": "Tšiili peeso",
+ "eu": "Peso txiletar",
+ "fa": "پسو شیلی",
+ "fi": "Chilen peso",
+ "fr": "peso chilien",
+ "gl": "Peso chileno",
+ "he": "פסו צ'יליאני",
+ "hr": "Čileanski pezo",
+ "hu": "chilei peso",
+ "it": "peso cileno",
+ "ja": "チリ・ペソ",
+ "lt": "Čilės pesas",
+ "nl": "Chileense peso",
+ "oc": "Peso de Chile",
+ "pl": "Peso chilijskie",
+ "pt": "peso chileno",
+ "ru": "чилийское песо",
+ "sl": "Čilenski peso",
+ "sr": "чилеански пезос",
+ "sv": "Chilensk peso",
+ "tr": "Şili pesosu",
+ "uk": "Чилійський песо",
+ "vi": "Peso Chile",
+ "zh": "智利比索"
+ },
+ "CNY": {
+ "ar": "رنمينبي",
+ "bg": "китайски юан",
+ "bo": "མི་དམངས་ཤོག་དངུལ",
+ "ca": "renminbi",
+ "cs": "Čínský jüan",
+ "cy": "Renminbi",
+ "da": "Renminbi",
+ "de": "Renminbi",
+ "el": "Ρενμίνμπι",
+ "en": "renminbi",
+ "eo": "Renminbio",
+ "es": "yuan chino",
+ "et": "Renminbi",
+ "eu": "Renminbi",
+ "fa": "رنمینبی",
+ "fi": "Renminbi",
+ "fr": "renminbi",
+ "gl": "Renminbi",
+ "he": "רנמינבי",
+ "hr": "Renminbi",
+ "hu": "renminbi",
+ "it": "renminbi cinese",
+ "ja": "人民幣",
+ "lt": "Juanis",
+ "nl": "Chinese renminbi",
+ "oc": "Renminbi",
+ "pl": "Renminbi",
+ "pt": "yuan",
+ "ro": "Yuan renminbi",
+ "ru": "китайский юань",
+ "sk": "Čínsky jüan",
+ "sl": "Renminbi",
+ "sr": "ренминби",
+ "sv": "Renminbi",
+ "ta": "ரென்மின்பி",
+ "tr": "Renminbi",
+ "uk": "юань",
+ "vi": "nhân dân tệ",
+ "zh": "人民币"
+ },
+ "COP": {
+ "ar": "بيزو كولومبي",
+ "bg": "Колумбийско песо",
+ "ca": "peso colombià",
+ "cs": "Kolumbijské peso",
+ "da": "Colombiansk peso",
+ "de": "kolumbianischer Peso",
+ "el": "Πέσο Κολομβίας",
+ "en": "Colombian peso",
+ "eo": "kolombia peso",
+ "es": "peso colombiano",
+ "et": "Colombia peeso",
+ "eu": "Peso kolonbiar",
+ "fa": "پزوی کلمبیا",
+ "fi": "Kolumbian peso",
+ "fr": "peso colombien",
+ "gl": "Peso colombiano",
+ "hr": "Kolumbijski pezo",
+ "hu": "kolumbiai peso",
+ "it": "peso colombiano",
+ "ja": "コロンビア・ペソ",
+ "lt": "Kolumbijos pesas",
+ "nl": "Colombiaanse peso",
+ "pl": "Peso kolumbijskie",
+ "pt": "peso colombiano",
+ "ru": "колумбийское песо",
+ "sr": "колумбијски пезос",
+ "sv": "Colombiansk peso",
+ "tr": "Kolombiya pesosu",
+ "uk": "Колумбійський песо",
+ "vi": "Peso Colombia",
+ "zh": "哥伦比亚比索",
+ "he": "פסו קולומביאני",
+ "oc": "Peso colombian"
+ },
+ "CRC": {
+ "ar": "كولون كوستاريكي",
+ "bg": "Костарикански колон",
+ "ca": "colon costa-riqueny",
+ "cs": "Kostarický colón",
+ "de": "Costa-Rica-Colón",
+ "en": "Costa Rican colón",
+ "eo": "kostarika kolumbo",
+ "es": "colón costarricense",
+ "eu": "Colón costarricar",
+ "fa": "کولون کاستاریکا",
+ "fi": "Costa Rican colón",
+ "fr": "colón",
+ "gl": "colón costarriqueño",
+ "hr": "Kostarikanski kolon",
+ "hu": "Costa Rica-i colón",
+ "it": "Colón costaricano",
+ "ja": "コスタリカ・コロン",
+ "lt": "Kosta Rikos kolonas",
+ "nl": "Costa Ricaanse colon",
+ "pl": "Colon kostarykański",
+ "pt": "Colón costa-riquenho",
+ "ru": "костариканский колон",
+ "sr": "костарикански колон",
+ "sv": "Costaricansk colón",
+ "tr": "Kosta Rika colónu",
+ "uk": "Костариканський колон",
+ "zh": "哥斯大黎加科朗"
+ },
+ "CUP": {
+ "ar": "بيزو كوبي",
+ "bg": "Кубинско песо",
+ "ca": "peso cubà",
+ "cs": "Kubánské peso",
+ "da": "Cubanske pesos",
+ "de": "kubanischer Peso",
+ "el": "Πέσο Κούβας",
+ "en": "Cuban peso",
+ "eo": "kuba peso",
+ "es": "peso cubano",
+ "fa": "پزوی کوبا",
+ "fi": "Kuuban peso",
+ "fr": "peso cubain",
+ "hr": "Kubanski pezo",
+ "hu": "kubai peso",
+ "it": "peso cubano",
+ "ja": "キューバ・ペソ",
+ "lt": "Kubos pesas",
+ "nl": "Cubaanse peso",
+ "pl": "Peso kubańskie",
+ "pt": "peso cubano",
+ "ro": "Peso cubanez",
+ "ru": "кубинское песо",
+ "sr": "кубански пезос",
+ "sv": "Kubansk peso",
+ "tr": "Küba pesosu",
+ "uk": "Кубинський песо",
+ "vi": "Peso Cuba",
+ "zh": "古巴比索",
+ "cy": "peso (Ciwba)",
+ "he": "פסו קובני"
+ },
+ "CVE": {
+ "ar": "إيسكودو جزر الرأس الأخضر",
+ "bg": "Ескудо на Кабо Верде",
+ "ca": "escut de Cap Verd",
+ "cs": "Kapverdské escudo",
+ "da": "Kapverdisk escudo",
+ "de": "Kap-Verde-Escudo",
+ "el": "Εσκούδο του Πράσινου Ακρωτηρίου",
+ "en": "Cape Verdean escudo",
+ "eo": "kaboverda eskudo",
+ "es": "escudo caboverdiano",
+ "fa": "اسکودوی کیپ ورد",
+ "fi": "Kap Verden escudo",
+ "fr": "escudo cap-verdien",
+ "hr": "Zelenortski eskudo",
+ "hu": "zöld-foki köztársasági escudo",
+ "it": "escudo capoverdiano",
+ "ja": "カーボベルデ・エスクード",
+ "lt": "Žaliojo Kyšulio eskudas",
+ "nl": "Kaapverdische escudo",
+ "pl": "escudo Zielonego Przylądka",
+ "pt": "escudo cabo-verdiano",
+ "ru": "Эскудо Кабо-Верде",
+ "sr": "зеленортски ескудо",
+ "sv": "Kapverdisk escudo",
+ "tr": "Yeşil Burun Adaları eskudosu",
+ "uk": "Ескудо Кабо-Верде",
+ "vi": "Escudo Cabo Verde",
+ "zh": "維德角埃斯庫多",
+ "he": "אשקודו כף ורדי",
+ "oc": "Escut de Cap Verd"
+ },
+ "CZK": {
+ "ar": "كرونة تشيكية",
+ "bg": "крони",
+ "ca": "corona txeca",
+ "cs": "koruna česká",
+ "da": "tjekkiske koruna",
+ "de": "tschechische Krone",
+ "el": "Κορόνα Τσεχίας",
+ "en": "Czech koruna",
+ "eo": "ĉeĥa krono",
+ "es": "corona checa",
+ "et": "Tšehhi kroon",
+ "eu": "Txekiar koroa",
+ "fa": "کرونا چک",
+ "fi": "Tšekin koruna",
+ "fr": "couronne tchèque",
+ "gl": "Coroa checa",
+ "he": "קורונה צ'כית",
+ "hr": "Češka kruna",
+ "hu": "cseh korona",
+ "it": "corona ceca",
+ "ja": "チェコ・コルナ",
+ "lt": "Čekijos krona",
+ "nl": "Tsjechische kroon",
+ "oc": "corona chèca",
+ "pl": "Korona czeska",
+ "pt": "coroa checa",
+ "ro": "Coroană cehă",
+ "ru": "чешская крона",
+ "sk": "Česká koruna",
+ "sl": "Češka krona",
+ "sr": "чешка круна",
+ "sv": "tjeckisk krona",
+ "ta": "செக் கொருனா",
+ "tr": "Çek korunası",
+ "uk": "чеська крона",
+ "vi": "Koruna Séc",
+ "zh": "捷克克朗",
+ "cy": "Czech koruna",
+ "ia": "corona tchec"
+ },
+ "DJF": {
+ "ar": "فرنك جيبوتي",
+ "bg": "Джибутски франк",
+ "ca": "franc de Djibouti",
+ "cs": "Džibutský frank",
+ "da": "Djiboutiske franc",
+ "de": "Dschibuti-Franc",
+ "el": "Φράγκο του Τζιμπουτί",
+ "en": "Djiboutian franc",
+ "eo": "ĝibutia franko",
+ "es": "franco yibutiano",
+ "fa": "فرانک جیبوتی",
+ "fi": "Djiboutin frangi",
+ "fr": "franc Djibouti",
+ "hr": "Džibutski franak",
+ "hu": "dzsibuti frank",
+ "it": "franco gibutiano",
+ "ja": "ジブチ・フラン",
+ "lt": "Džibučio frankas",
+ "nl": "Djiboutiaanse frank",
+ "pl": "frank Dżibuti",
+ "pt": "franco do Jibuti",
+ "ru": "Франк Джибути",
+ "sr": "џибутски франак",
+ "sv": "Djiboutisk franc",
+ "tr": "Cibuti frangı",
+ "uk": "Франк Джибуті",
+ "zh": "吉布地法郎",
+ "he": "פרנק ג'יבוטי"
+ },
+ "DKK": {
+ "ar": "كرونة دنماركية",
+ "bg": "Датска крона",
+ "ca": "corona danesa",
+ "cs": "Dánská koruna",
+ "da": "danske kroner",
+ "de": "dänische Krone",
+ "el": "Κορόνα Δανίας",
+ "en": "Danish krone",
+ "eo": "dana krono",
+ "es": "corona danesa",
+ "et": "Taani kroon",
+ "eu": "Daniar koroa",
+ "fa": "کرون دانمارک",
+ "fi": "Tanskan kruunu",
+ "fr": "couronne danoise",
+ "gl": "Coroa dinamarquesa",
+ "he": "כתר דני",
+ "hr": "Danska kruna",
+ "hu": "dán korona",
+ "it": "corona danese",
+ "ja": "デンマーク・クローネ",
+ "lt": "Danijos krona",
+ "nl": "Deense kroon",
+ "oc": "Corona danesa",
+ "pl": "korona duńska",
+ "pt": "coroa dinamarquesa",
+ "ro": "Coroană daneză",
+ "ru": "датская крона",
+ "sk": "Dánska koruna",
+ "sr": "данска круна",
+ "sv": "dansk krona",
+ "ta": "டானிய குரோன்",
+ "tr": "Danimarka kronu",
+ "uk": "данська крона",
+ "vi": "Krone Đan Mạch",
+ "zh": "丹麥克朗",
+ "cy": "Krone Danaidd",
+ "ia": "corona danese"
+ },
+ "DOP": {
+ "ar": "بيزو دومنيكاني",
+ "bg": "Доминиканско песо",
+ "ca": "peso dominicà",
+ "cs": "Dominikánské peso",
+ "de": "dominikanischer Peso",
+ "el": "Πέσο Δομινικανής Δημοκρατίας",
+ "en": "Dominican peso",
+ "eo": "dominga peso",
+ "es": "peso dominicano",
+ "eu": "Peso dominikar",
+ "fa": "پزو دومینیکن",
+ "fi": "Dominikaanisen tasavallan peso",
+ "fr": "peso dominicain",
+ "hr": "Dominikanski pezo",
+ "hu": "dominikai peso",
+ "it": "peso dominicano",
+ "ja": "ドミニカ・ペソ",
+ "lt": "Dominikos pesas",
+ "nl": "Dominicaanse peso",
+ "pl": "Peso dominikańskie",
+ "pt": "peso dominicano",
+ "ru": "доминиканское песо",
+ "sr": "доминикански пезос",
+ "sv": "Dominikansk peso",
+ "tr": "Dominik pesosu",
+ "uk": "Домініканський песо",
+ "zh": "多明尼加比索",
+ "cy": "Peso Dominica",
+ "he": "פסו דומיניקני",
+ "ro": "peso dominican"
+ },
+ "DZD": {
+ "ar": "دينار جزائري",
+ "bg": "Алжирски динар",
+ "ca": "dinar algerià",
+ "cs": "Alžírský dinár",
+ "cy": "Dinar Algeriaidd",
+ "de": "algerischer Dinar",
+ "el": "Δηνάριο Αλγερίας",
+ "en": "Algerian dinar",
+ "eo": "alĝeria dinaro",
+ "es": "dinar argelino",
+ "eu": "Aljeriar dinar",
+ "fa": "دینار الجزایر",
+ "fi": "Algerian dinaari",
+ "fr": "dinar algérienne",
+ "gl": "Dinar alxeriano",
+ "he": "דינר אלג'ירי",
+ "hr": "Alžirski dinar",
+ "hu": "algériai dinár",
+ "it": "dinaro algerino",
+ "ja": "アルジェリア・ディナール",
+ "lt": "Alžyro dinaras",
+ "nl": "Algerijnse dinar",
+ "pl": "dinar algierski",
+ "pt": "dinar argelino",
+ "ro": "Dinar algerian",
+ "ru": "алжирский динар",
+ "sr": "алжирски динар",
+ "sv": "Algerisk dinar",
+ "tr": "Cezayir dinarı",
+ "uk": "Алжирський динар",
+ "vi": "Dinar Algérie",
+ "zh": "阿爾及利亞第納爾",
+ "ta": "அல்ஜீரிய தினார்"
+ },
+ "EGP": {
+ "ar": "الدينار برقاوي",
+ "bg": "Египетска лира",
+ "ca": "lliura egípcia",
+ "cs": "Egyptská libra",
+ "de": "ägyptisches Pfund",
+ "el": "Λίρα Αιγύπτου",
+ "en": "Barqawi dinar",
+ "eo": "egipta pundo",
+ "es": "libra egipcia",
+ "et": "Egiptuse nael",
+ "eu": "Egiptoar libera",
+ "fa": "پوند مصر",
+ "fi": "Egyptin punta",
+ "fr": "livre égyptienne",
+ "gl": "Libra exipcia",
+ "he": "לירה מצרית",
+ "hr": "Egipatska funta",
+ "hu": "egyiptomi font",
+ "it": "sterlina egiziana",
+ "ja": "エジプト・ポンド",
+ "lt": "Egipto svaras",
+ "nl": "Egyptisch pond",
+ "pl": "Funt egipski",
+ "pt": "libra egípcia",
+ "ro": "Liră egipteană",
+ "ru": "египетский фунт",
+ "sr": "египатска фунта",
+ "sv": "Egyptiskt pund",
+ "tr": "Mısır lirası",
+ "uk": "Єгипетський фунт",
+ "vi": "Bảng Ai Cập",
+ "zh": "埃及鎊",
+ "cy": "punt yr Aifft",
+ "da": "egyptiske pund",
+ "oc": "Liura egipciana",
+ "sk": "Egyptská libra"
+ },
+ "ERN": {
+ "ar": "ناكفا",
+ "ca": "nakfa",
+ "cs": "Eritrejská nakfa",
+ "da": "Nakfa",
+ "de": "eritreischer Nakfa",
+ "el": "Νάκφα",
+ "en": "nakfa",
+ "eo": "eritrea nakfo",
+ "es": "nakfa",
+ "fa": "ناکفای اریتره",
+ "fi": "Eritrean nakfa",
+ "fr": "nakfa érythréen",
+ "gl": "Nakfa",
+ "he": "נאקפה",
+ "hr": "Eritrejska nakfa",
+ "hu": "eritreai nakfa",
+ "it": "nacfa eritreo",
+ "ja": "ナクファ",
+ "lt": "Nakfa",
+ "nl": "Eritrese nakfa",
+ "pl": "Nakfa",
+ "pt": "nakfa",
+ "ru": "эритрейская накфа",
+ "sr": "еритрејска накфа",
+ "sv": "Nakfa",
+ "tr": "Eritre nakfası",
+ "uk": "Еритрейська накфа",
+ "zh": "厄立特里亚纳克法"
+ },
+ "ETB": {
+ "ar": "بير إثيوبي",
+ "bg": "Етиопски бир",
+ "ca": "birr",
+ "cs": "Etiopský birr",
+ "da": "Etiopiske birr",
+ "de": "Äthiopischer Birr",
+ "el": "Μπιρ",
+ "en": "birr",
+ "eo": "etiopa birro",
+ "es": "Birr etíope",
+ "fa": "بیر اتیوپی",
+ "fi": "Etiopian birr",
+ "fr": "Birr",
+ "he": "ביר אתיופי",
+ "hr": "Etiopski bir",
+ "hu": "etióp birr",
+ "it": "birr etiope",
+ "ja": "ブル",
+ "lt": "Etiopijos biras",
+ "nl": "Ethiopische birr",
+ "pl": "Birr",
+ "pt": "Birr etíope",
+ "ru": "эфиопский быр",
+ "sr": "етиопски бир",
+ "sv": "Etiopisk Birr",
+ "tr": "Birr",
+ "uk": "Ефіопський бир",
+ "zh": "衣索比亞比爾"
+ },
+ "EUR": {
+ "ar": "يورو",
+ "bg": "евро",
+ "ca": "euro",
+ "cs": "euro",
+ "cy": "Ewro",
+ "da": "Euro",
+ "de": "Euro",
+ "el": "ευρώ",
+ "en": "euro",
+ "eo": "eŭro",
+ "es": "euro",
+ "et": "Euro",
+ "eu": "Euro",
+ "fa": "یورو",
+ "fi": "euro",
+ "fr": "euro",
+ "gl": "euro",
+ "he": "אירו",
+ "hr": "Euro",
+ "hu": "euró",
+ "ia": "Euro",
+ "it": "euro",
+ "ja": "ユーロ",
+ "lt": "Euras",
+ "nl": "euro",
+ "oc": "Èuro",
+ "pl": "euro",
+ "pt": "euro",
+ "ro": "euro",
+ "ru": "евро",
+ "sk": "euro",
+ "sl": "Evro",
+ "sr": "евро",
+ "sv": "euro",
+ "ta": "ஐரோ",
+ "te": "యూరో",
+ "tr": "Euro",
+ "uk": "євро",
+ "vi": "Euro",
+ "zh": "歐元"
+ },
+ "FJD": {
+ "ar": "دولار فيجي",
+ "bg": "Фиджийски долар",
+ "ca": "dòlar fijià",
+ "cs": "Fidžijský dolar",
+ "de": "Fidschi-Dollar",
+ "el": "Δολάριο Φίτζι",
+ "en": "Fijian dollar",
+ "eo": "fiĝia dolaro",
+ "es": "dólar fiyiano",
+ "fa": "دلار فیجی",
+ "fi": "Fidžin dollari",
+ "fr": "dollar des Fidji",
+ "gl": "Dólar fidxiano",
+ "hr": "Fidžijski dolar",
+ "hu": "fidzsi dollár",
+ "it": "dollaro delle Figi",
+ "ja": "フィジー・ドル",
+ "lt": "Fidžio doleris",
+ "nl": "Fiji-dollar",
+ "pl": "Dolar Fidżi",
+ "pt": "dólar de Fiji",
+ "ro": "Dolar fijian",
+ "ru": "доллар Фиджи",
+ "sk": "Fidžijský dolár",
+ "sr": "фиџијски долар",
+ "sv": "Fijidollar",
+ "ta": "பிஜி டாலர்",
+ "tr": "Fiji doları",
+ "uk": "долар Фіджі",
+ "zh": "斐濟元",
+ "da": "Fijiansk dollar",
+ "he": "דולר פיג'י"
+ },
+ "FOK": {
+ "ar": "كرونة فاروية",
+ "ca": "corona feroesa",
+ "cs": "Faerská koruna",
+ "da": "Færøske kroner",
+ "de": "färöische Krone",
+ "en": "Faroese króna",
+ "eo": "Feroa krono",
+ "es": "corona feroesa",
+ "et": "Fääri kroon",
+ "fa": "کرون فاروئی",
+ "fi": "Färsaarten kruunu",
+ "fr": "couronne féroïenne",
+ "gl": "Coroa feroesa",
+ "hr": "Føroyarska kruna",
+ "hu": "feröeri korona",
+ "it": "corona delle Fær Øer",
+ "ja": "フェロー・クローネ",
+ "lt": "Farerų krona",
+ "nl": "Faeröerse kroon",
+ "pl": "Korona Wysp Owczych",
+ "pt": "coroa feroesa",
+ "ro": "Coroană feroeză",
+ "ru": "Фарерская крона",
+ "sk": "Faerská koruna",
+ "sr": "фарска круна",
+ "sv": "Färöisk krona",
+ "ta": "பரோயே குரோனா",
+ "tr": "Faroe kronu",
+ "uk": "Фарерська крона",
+ "zh": "法羅群島克朗",
+ "he": "קרונה פארואזית"
+ },
+ "GBP": {
+ "ar": "جنيه إسترليني",
+ "bg": "британска лира",
+ "ca": "lliura esterlina",
+ "cs": "libra šterlinků",
+ "cy": "punt sterling",
+ "da": "Britisk pund",
+ "de": "Pfund Sterling",
+ "el": "Στερλίνα",
+ "en": "pound sterling",
+ "eo": "brita pundo",
+ "es": "libra esterlina",
+ "et": "Suurbritannia naelsterling",
+ "eu": "Libera esterlina",
+ "fa": "پوند استرلینگ",
+ "fi": "Englannin punta",
+ "fr": "livre sterling",
+ "gl": "Libra esterlina",
+ "he": "לירה שטרלינג",
+ "hr": "Britanska funta",
+ "hu": "font sterling",
+ "it": "sterlina britannica",
+ "ja": "スターリング・ポンド",
+ "lt": "Svaras sterlingų",
+ "nl": "pond sterling",
+ "oc": "Liure esterlina",
+ "pl": "funt szterling",
+ "pt": "libra esterlina",
+ "ro": "liră sterlină",
+ "ru": "фунт стерлингов",
+ "sk": "Libra šterlingov",
+ "sl": "Funt šterling",
+ "sr": "британска фунта",
+ "sv": "Brittiskt pund",
+ "ta": "பிரித்தானிய பவுண்டு",
+ "tr": "İngiliz sterlini",
+ "uk": "фунт стерлінгів",
+ "vi": "Bảng Anh",
+ "zh": "英镑",
+ "ia": "libra sterling"
+ },
+ "GEL": {
+ "ar": "لاري جورجي",
+ "bg": "Грузинско лари",
+ "ca": "lari",
+ "cs": "Gruzínské lari",
+ "da": "Lari",
+ "de": "georgischer Lari",
+ "el": "Λάρι Γεωργίας",
+ "en": "Georgian lari",
+ "eo": "kartvela lario",
+ "es": "lari georgiano",
+ "et": "Lari",
+ "fa": "لاری",
+ "fi": "Georgian lari",
+ "fr": "lari",
+ "he": "לארי גאורגי",
+ "hr": "Gruzijski lari",
+ "hu": "grúz lari",
+ "ia": "lari georgian",
+ "it": "lari georgiano",
+ "ja": "ラリ",
+ "lt": "Laris",
+ "nl": "Georgische lari",
+ "pl": "Lari",
+ "pt": "lari",
+ "ro": "Lari",
+ "ru": "грузинский лари",
+ "sk": "Gruzínske lari",
+ "sr": "грузијски лари",
+ "sv": "Georgiska lari",
+ "ta": "ஜார்ஜிய லாரி",
+ "tr": "Gürcistan larisi",
+ "uk": "Ларі",
+ "zh": "格鲁吉亚拉里",
+ "oc": "Lari"
+ },
+ "GGP": {
+ "ar": "جنيه جيرنزي",
+ "ca": "lliura de Guernsey",
+ "cs": "Guernseyská libra",
+ "de": "Guernsey-Pfund",
+ "en": "Guernsey pound",
+ "es": "libra de Guernsey",
+ "fa": "پوند گرنزی",
+ "fi": "Guernseyn punta",
+ "fr": "livre de Guernesey",
+ "hr": "Guernseyjska funta",
+ "hu": "guernsey-i font",
+ "it": "sterlina di Guernsey",
+ "ja": "ガーンジー・ポンド",
+ "lt": "Gernsio svaras",
+ "nl": "Guernseypond",
+ "pl": "Funt Guernsey",
+ "ro": "Liră din Guernsey",
+ "ru": "Гернсийский фунт",
+ "sk": "Guernseyská libra",
+ "sr": "гернзијска фунта",
+ "sv": "Guernseypund",
+ "ta": "குயெர்ன்சி பவுண்டு",
+ "tr": "Guernsey sterlini",
+ "uk": "Гернсійський фунт",
+ "zh": "根西島鎊",
+ "eo": "gernezeja pundo",
+ "ia": "libra de Guernsey"
+ },
+ "GHS": {
+ "ar": "سيدي غاني",
+ "bg": "Ганайско кеди",
+ "ca": "cedi",
+ "cs": "Ghanský cedi",
+ "cy": "Cedi",
+ "da": "Cedi",
+ "de": "Cedi",
+ "el": "Σέντι της Γκάνας",
+ "en": "Ghana cedi",
+ "eo": "ganaa cedio",
+ "es": "cedi",
+ "fa": "سدی غنا",
+ "fi": "Cedi",
+ "fr": "cedi",
+ "gl": "Cedi",
+ "hr": "Ganski cedi",
+ "hu": "ghánai cedi",
+ "it": "cedi ghanese",
+ "ja": "セディ",
+ "lt": "Sedis",
+ "nl": "Ghanese cedi",
+ "pl": "Cedi",
+ "pt": "cedi",
+ "ru": "Ганский седи",
+ "sk": "Cedi",
+ "sr": "гански седи",
+ "sv": "Ghana Cedi",
+ "tr": "Cedi",
+ "uk": "Ганський седі",
+ "zh": "迦納塞地",
+ "he": "סדי גאני",
+ "oc": "Cedi"
+ },
"GIP": {
- "fr": "Livre de Gibraltar",
- "en": "Gibraltar pound",
- "nl": "Gibraltarees pond",
- "de": "Gibraltar-Pfund",
- "it": "Sterlina di Gibilterra",
- "hu": "Gibralt\u00e1ri font",
- "es": "Libra gibraltare\u00f1a"
- },
- "ALL": {
- "fr": "Lek",
- "en": "lek",
- "nl": "Albanese lek",
- "de": "Albanischer Lek",
- "it": "Lek albanese",
- "hu": "alb\u00e1n lek",
- "es": "Lek alban\u00e9s"
- },
- "MRO": {
- "fr": "Ouguiya",
- "en": "Mauritanian ouguiya",
- "nl": "Mauritaanse ouguiya",
- "de": "Ouguiya",
- "it": "Ouguiya mauritana",
- "hu": "Maurit\u00e1niai ouguiya",
- "es": "Uquiya"
- },
+ "ar": "جنيه جبل طارق",
+ "bg": "Гибралтарска лира",
+ "ca": "lliura de Gibraltar",
+ "cs": "Gibraltarská libra",
+ "da": "Gibraltar-pund",
+ "de": "Gibraltar-Pfund",
+ "el": "Λίρα Γιβραλτάρ",
+ "en": "Gibraltar pound",
+ "eo": "ĝibraltara pundo",
+ "es": "libra gibraltareña",
+ "et": "Gibraltari nael",
+ "fa": "پوند جبل الطارق",
+ "fi": "Gibraltarin punta",
+ "fr": "livre de Gibraltar",
+ "gl": "Libra de Xibraltar",
+ "hr": "Gibraltarska funta",
+ "hu": "gibraltári font",
+ "it": "sterlina di Gibilterra",
+ "ja": "ジブラルタル・ポンド",
+ "lt": "Gibraltaro svaras",
+ "nl": "Gibraltarees pond",
+ "pl": "Funt gibraltarski",
+ "pt": "libra de Gibraltar",
+ "ro": "Liră din Gibraltar",
+ "ru": "Гибралтарский фунт",
+ "sk": "Gibraltárska libra",
+ "sr": "гибралтарска фунта",
+ "sv": "Gibraltarpund",
+ "ta": "கிப்ரால்ட்டர் பவுண்டு",
+ "uk": "Гібралтарський фунт",
+ "vi": "Bảng Gibraltar",
+ "zh": "直布羅陀鎊",
+ "cy": "punt Gibraltar",
+ "he": "לירה גיברלטרית"
+ },
+ "GMD": {
+ "ar": "دالاسي غامبي",
+ "bg": "Гамбийско даласи",
+ "ca": "dalasi",
+ "cs": "Gambijský dalasi",
+ "de": "Dalasi",
+ "el": "Νταλάζι",
+ "en": "dalasi",
+ "eo": "gambia dalasio",
+ "es": "dalasi",
+ "et": "Dalasi",
+ "eu": "Dalasi",
+ "fa": "دالاسی گامبیا",
+ "fi": "Dalasi",
+ "fr": "Dalasi",
+ "hr": "Gambijski dalasi",
+ "hu": "gambiai dalasi",
+ "it": "Dalasi gambese",
+ "ja": "ダラシ",
+ "lt": "Dalasis",
+ "nl": "Gambiaanse dalasi",
+ "pl": "Dalasi",
+ "pt": "Dalasi",
+ "ru": "гамбийский даласи",
+ "sr": "гамбијски даласи",
+ "sv": "Dalasi",
+ "tr": "Dalasi",
+ "uk": "Даласі",
+ "zh": "甘比亞達拉西",
+ "he": "דלסי"
+ },
+ "GNF": {
+ "ar": "فرنك غيني",
+ "bg": "Гвинейски франк",
+ "ca": "franc guineà",
+ "cs": "Guinejský frank",
+ "de": "Franc Guinéen",
+ "el": "Φράγκο Γουινέας",
+ "en": "Guinean franc",
+ "eo": "gvinea franko",
+ "es": "Franco guineano",
+ "fa": "فرانک گینه",
+ "fi": "Guinean frangi",
+ "fr": "franc guinéen",
+ "he": "פרנק גינאי",
+ "hr": "Gvinejski franak",
+ "hu": "guineai frank",
+ "it": "Franco guineano",
+ "ja": "ギニア・フラン",
+ "lt": "Gvinėjos frankas",
+ "nl": "Guineese frank",
+ "pl": "frank gwinejski",
+ "pt": "Franco da Guiné",
+ "ru": "Гвинейский франк",
+ "sr": "гвинејски франак",
+ "sv": "Guinesisk franc",
+ "tr": "Gine frangı",
+ "uk": "Гвінейський франк",
+ "zh": "幾內亞法郎"
+ },
+ "GTQ": {
+ "ar": "كتزال غواتيمالي",
+ "bg": "Гватемалски кецал",
+ "ca": "quetzal",
+ "cs": "Guatemalský quetzal",
+ "de": "Guatemaltekischer Quetzal",
+ "el": "Κετσάλ",
+ "en": "quetzal",
+ "eo": "gvatemala kecalo",
+ "es": "quetzal",
+ "eu": "Quetzal",
+ "fa": "کوتزال گواتمالا",
+ "fi": "Guatemalan quetzal",
+ "fr": "Quetzal",
+ "gl": "Quetzal",
+ "he": "קצאל",
+ "hr": "Gvatemalski kvecal",
+ "hu": "guatemalai quetzal",
+ "it": "Quetzal guatemalteco",
+ "ja": "ケツァル",
+ "lt": "Gvatemalos kecalis",
+ "nl": "Guatemalteekse quetzal",
+ "oc": "Quetzal",
+ "pl": "Quetzal",
+ "pt": "Quetzal",
+ "ru": "гватемальский кетсаль",
+ "sr": "гватемалски квецал",
+ "sv": "Quetzal",
+ "tr": "Guatemala quetzalı",
+ "uk": "Гватемальський кетсаль",
+ "zh": "瓜地馬拉格查爾",
+ "cy": "Quetzal Gwatemala"
+ },
+ "GYD": {
+ "ar": "دولار غوياني",
+ "bg": "Гаянски долар",
+ "ca": "dòlar de Guyana",
+ "cs": "Guyanský dolar",
+ "de": "Guyana-Dollar",
+ "el": "Δολάριο Γουιάνας",
+ "en": "Guyanese dollar",
+ "eo": "gujana dolaro",
+ "es": "dólar guyanés",
+ "eu": "Dolar guyanar",
+ "fa": "دلار گویان",
+ "fi": "Guyanan dollari",
+ "fr": "Dollar guyanien",
+ "gl": "Dólar güianés",
+ "hr": "Gvajanski dolar",
+ "hu": "guyanai dollár",
+ "it": "Dollaro della Guyana",
+ "ja": "ガイアナ・ドル",
+ "lt": "Gajanos doleris",
+ "nl": "Guyaanse dollar",
+ "pl": "dolar gujański",
+ "pt": "Dólar da Guiana",
+ "ro": "Dolar guyanez",
+ "ru": "гайанский доллар",
+ "sr": "гвајански долар",
+ "sv": "Guyansk dollar",
+ "tr": "Guyana doları",
+ "uk": "Гаянський долар",
+ "zh": "圭亞那元",
+ "he": "דולר גיאני"
+ },
+ "HKD": {
+ "ar": "دولار هونغ كونغ",
+ "bg": "Хонконгски долар",
+ "ca": "dòlar de Hong Kong",
+ "cs": "Hongkongský dolar",
+ "cy": "Doler Hong Kong",
+ "da": "Hongkong-dollar",
+ "de": "Hongkong-Dollar",
+ "el": "Δολάριο Χονγκ Κονγκ",
+ "en": "Hong Kong dollar",
+ "eo": "honkonga dolaro",
+ "es": "dólar de Hong Kong",
+ "et": "Hongkongi dollar",
+ "eu": "Dolar hongkongtar",
+ "fa": "دلار هنگکنگ",
+ "fi": "Hongkongin dollari",
+ "fr": "dollar de Hong Kong",
+ "gl": "Dólar de Hong Kong",
+ "he": "דולר הונג קונגי",
+ "hr": "Honkonški dolar",
+ "hu": "hongkongi dollár",
+ "it": "dollaro di Hong Kong",
+ "ja": "香港ドル",
+ "lt": "Honkongo doleris",
+ "nl": "Hongkongse dollar",
+ "pl": "dolar Hongkongu",
+ "pt": "dólar de Hong Kong",
+ "ru": "гонконгский доллар",
+ "sk": "Hongkonský dolár",
+ "sr": "хонгконшки долар",
+ "sv": "Hongkongdollar",
+ "ta": "ஹொங்கொங் டொலர்",
+ "tr": "Hong Kong doları",
+ "uk": "Гонконгський долар",
+ "vi": "đô la Hồng Kông",
+ "zh": "港元",
+ "ro": "dolar din Hong Kong"
+ },
+ "HNL": {
+ "ar": "لمبيرة هندوراسية",
+ "bg": "Хондураска лемпира",
+ "ca": "lempira",
+ "cs": "Honduraská lempira",
+ "de": "Lempira",
+ "el": "Λεμπίρα",
+ "en": "Honduran lempira",
+ "eo": "hondura lempiro",
+ "es": "lempira",
+ "eu": "Lempira",
+ "fa": "لامپیرای هندوراس",
+ "fi": "Hondurasin lempira",
+ "fr": "lempira",
+ "he": "למפירה",
+ "hr": "Honduraška lempira",
+ "hu": "hondurasi lempira",
+ "it": "lempira honduregna",
+ "ja": "レンピラ",
+ "lt": "Hondūro lempira",
+ "nl": "Hondurese lempira",
+ "oc": "Lempira",
+ "pl": "Lempira",
+ "pt": "lempira",
+ "ro": "Lempira",
+ "ru": "гондурасская лемпира",
+ "sr": "хондурашка лемпира",
+ "sv": "Lempira",
+ "tr": "Honduras lempirası",
+ "uk": "Гондураська лемпіра",
+ "zh": "宏都拉斯倫皮拉",
+ "cy": "Lempira Hondwraidd"
+ },
"HRK": {
- "fr": "Kuna croate",
- "en": "Croatian kuna",
- "nl": "Kroatische kuna",
- "de": "Kroatische Kuna",
- "it": "Kuna croata",
- "hu": "horv\u00e1t kuna",
- "es": "Kuna croata"
- },
- "DJF": {
- "fr": "franc Djibouti",
- "en": "Djiboutian franc",
- "nl": "Djiboutiaanse frank",
- "de": "Dschibuti-Franc",
- "it": "Franco gibutiano",
- "hu": "Dzsibuti frank",
- "es": "franco"
- },
- "THB": {
- "fr": "Baht",
- "en": "Thai baht",
- "nl": "Thaise baht",
- "de": "Baht",
- "it": "Baht thailandese",
- "hu": "thai b\u00e1t",
- "es": "Baht tailand\u00e9s"
- },
- "XAF": {
- "fr": "Franc CFA",
- "en": "Central African CFA franc",
- "de": "CFA-Franc BEAC",
- "es": "Franco CFA de \u00c1frica Central"
- },
- "BND": {
- "fr": "Dollar de Brunei",
- "en": "Brunei dollar",
- "nl": "Bruneise dollar",
- "de": "Brunei-Dollar",
- "it": "Dollaro del Brunei",
- "hu": "brunei doll\u00e1r",
- "es": "D\u00f3lar de Brun\u00e9i"
- },
- "VUV": {
- "fr": "Vatu",
- "en": "Vanuatu vatu",
- "nl": "Vanuatuaanse vatu",
- "de": "Vatu",
- "it": "Vatu di Vanuatu",
- "hu": "Vanuatui vatu",
- "es": "Vatu"
- },
- "UYU": {
- "fr": "Peso uruguayen",
- "en": "Uruguayan peso",
- "nl": "Uruguayaanse peso",
- "de": "Uruguayischer Peso",
- "it": "Peso uruguaiano",
- "hu": "Uruguayi peso",
- "es": "peso"
- },
- "NIO": {
- "fr": "C\u00f3rdoba",
- "en": "Nicaraguan c\u00f3rdoba",
- "nl": "Nicaraguaanse c\u00f3rdoba",
- "de": "C\u00f3rdoba Oro",
- "it": "C\u00f3rdoba nicaraguense",
- "hu": "Nicaraguai c\u00f3rdoba",
- "es": "C\u00f3rdoba"
- },
+ "ar": "كونا كرواتية",
+ "bg": "Хърватска куна",
+ "ca": "kuna",
+ "cs": "Chorvatská kuna",
+ "da": "Kuna",
+ "de": "kroatische Kuna",
+ "el": "Κούνα Κροατίας",
+ "en": "Croatian kuna",
+ "eo": "kroata kunao",
+ "es": "kuna croata",
+ "et": "Kuna",
+ "fa": "کونا",
+ "fi": "Kroatian kuna",
+ "fr": "kuna croate",
+ "gl": "Kuna croata",
+ "he": "קונה",
+ "hr": "hrvatska kuna",
+ "hu": "horvát kuna",
+ "it": "kuna croata",
+ "ja": "クーナ",
+ "lt": "Kroatijos kuna",
+ "nl": "Kroatische kuna",
+ "pl": "kuna",
+ "pt": "kuna croata",
+ "ro": "Kuna",
+ "ru": "хорватская куна",
+ "sk": "Chorvátska kuna",
+ "sl": "hrvaška kuna",
+ "sr": "хрватска куна",
+ "sv": "Kroatisk kuna",
+ "ta": "குனா",
+ "tr": "Hırvatistan kunası",
+ "uk": "хорватська куна",
+ "zh": "克羅埃西亞庫納",
+ "ia": "kuna croate",
+ "oc": "kuna",
+ "vi": "Kuna Croatia"
+ },
+ "HTG": {
+ "ar": "جوردة هايتية",
+ "ca": "gourde",
+ "cs": "Haitský gourde",
+ "da": "Gourde",
+ "de": "Gourde",
+ "el": "Γκουρντ",
+ "en": "Gourde",
+ "eo": "haitia gurdo",
+ "es": "gourde",
+ "eu": "Gourde",
+ "fa": "گورد هائیتی",
+ "fi": "Haitin gourde",
+ "fr": "Gourde",
+ "hr": "Haićanski gourd",
+ "hu": "haiti gourde",
+ "it": "Gourde haitiano",
+ "ja": "グールド",
+ "lt": "Gurdas",
+ "nl": "Haïtiaanse gourde",
+ "pl": "Gourde",
+ "pt": "Gourde",
+ "ru": "гаитянский гурд",
+ "sr": "хаићански гурд",
+ "sv": "Gourde",
+ "tr": "Gourde",
+ "uk": "Гаїтянський гурд",
+ "zh": "海地古德",
+ "he": "גורד"
+ },
+ "HUF": {
+ "ar": "فورنت مجري",
+ "bg": "Унгарски форинт",
+ "ca": "fòrint",
+ "cs": "maďarský forint",
+ "da": "Forint",
+ "de": "Forint",
+ "el": "Φόριντ Ουγγαρίας",
+ "en": "forint",
+ "eo": "hungara forinto",
+ "es": "forinto húngaro",
+ "et": "Forint",
+ "eu": "Hungariar forint",
+ "fa": "فورینت مجارستان",
+ "fi": "Unkarin forintti",
+ "fr": "forint",
+ "gl": "Florín húngaro",
+ "he": "פורינט",
+ "hr": "Mađarska forinta",
+ "hu": "magyar forint",
+ "it": "fiorino ungherese",
+ "ja": "フォリント",
+ "lt": "Forintas",
+ "nl": "Hongaarse forint",
+ "pl": "forint",
+ "pt": "florim húngaro",
+ "ro": "Forint",
+ "ru": "венгерский форинт",
+ "sk": "Maďarský forint",
+ "sl": "Madžarski forint",
+ "sr": "мађарска форинта",
+ "sv": "Forint",
+ "ta": "அங்கேரிய போரிண்ட்",
+ "tr": "Macar forinti",
+ "uk": "угорський форинт",
+ "vi": "Forint",
+ "zh": "匈牙利福林",
+ "ia": "forint hungare"
+ },
+ "HUP": {
+ "ca": "pengő",
+ "cs": "Maďarské pengő",
+ "cy": "Pengő",
+ "da": "Pengő",
+ "de": "Pengő",
+ "en": "Hungarian pengő",
+ "eo": "Pengo",
+ "es": "pengő",
+ "et": "Pengö",
+ "fa": "پنگوی مجارستان",
+ "fi": "Unkarin pengő",
+ "fr": "pengő",
+ "he": "פנגו הונגרי",
+ "hr": "Mađarski peng",
+ "hu": "magyar pengő",
+ "ia": "Pengő",
+ "it": "pengő ungherese",
+ "ja": "ペンゲー",
+ "lt": "Pengė",
+ "nl": "pengő",
+ "pl": "Pengő",
+ "pt": "pengő",
+ "ro": "Pengheu maghiar",
+ "ru": "венгерский пенгё",
+ "sk": "Maďarské pengő",
+ "sl": "Pengő",
+ "sv": "Pengő",
+ "uk": "Угорський пенге",
+ "zh": "帕戈",
+ "sr": "мађарски пенгу"
+ },
+ "IDR": {
+ "ar": "روبية إندونيسية",
+ "bg": "Индонезийска рупия",
+ "ca": "rupia indonèsia",
+ "cs": "Indonéská rupie",
+ "da": "Rupiah",
+ "de": "indonesische Rupiah",
+ "el": "Ρουπία Ινδονησίας",
+ "en": "rupiah",
+ "eo": "indonezia rupio",
+ "es": "rupia indonesia",
+ "eu": "Indonesiar errupia",
+ "fa": "روپیه اندونزی",
+ "fi": "Indonesian rupia",
+ "fr": "roupie indonésienne",
+ "hr": "Indonezijska rupija",
+ "hu": "indonéz rúpia",
+ "it": "rupia indonesiana",
+ "ja": "ルピア",
+ "lt": "Indonezijos rupija",
+ "nl": "Indonesische roepia",
+ "pl": "rupia indonezyjska",
+ "pt": "rupia indonésia",
+ "ru": "индонезийская рупия",
+ "sl": "Indonezijska rupija",
+ "sr": "индонежанска рупија",
+ "sv": "Rupiah",
+ "ta": "இந்தோனேசிய ரூபாய்",
+ "tr": "Endonezya rupiahı",
+ "uk": "індонезійська рупія",
+ "vi": "Rupiah",
+ "zh": "印尼盾",
+ "he": "רופיה אינדונזית",
+ "oc": "ropia d'Indonesia"
+ },
+ "ILS": {
+ "ar": "شيكل إسرائيلي جديد",
+ "bg": "Израелски шекел",
+ "ca": "nou xéquel",
+ "cs": "nový izraelský šekel",
+ "cy": "Sicl newydd Israel",
+ "da": "Ny Shekel",
+ "de": "Schekel",
+ "el": "νέο σέκελ Ισραήλ",
+ "en": "new shekel",
+ "eo": "nova israela siklo",
+ "es": "nuevo séquel",
+ "et": "Iisraeli seekel",
+ "eu": "Shekel berri",
+ "fa": "شکل جدید اسرائیل",
+ "fi": "Uusi Israelin sekeli",
+ "fr": "shekel",
+ "gl": "Novo sheqel",
+ "he": "שקל חדש",
+ "hr": "Izraelski novi šekel",
+ "hu": "izraeli új sékel",
+ "it": "nuovo siclo israeliano",
+ "ja": "新シェケル",
+ "lt": "Izraelio naujasis šekelis",
+ "nl": "Israëlische sjekel",
+ "pl": "Nowy izraelski szekel",
+ "pt": "novo shekel israelense",
+ "ro": "Shekel",
+ "ru": "новый израильский шекель",
+ "sk": "Nový izraelský šekel",
+ "sr": "нови израелски шекел",
+ "sv": "Shekel",
+ "ta": "புது இசுரேலிய சேக்கல்",
+ "tr": "Yeni İsrail Şekeli",
+ "uk": "ізраїльський новий шекель",
+ "zh": "以色列新谢克尔",
+ "oc": "shekel novèl"
+ },
+ "IMP": {
+ "ar": "جنيه مانكس",
+ "ca": "lliura de l'illa de Man",
+ "cs": "Manská libra",
+ "de": "Isle-of-Man-Pfund",
+ "en": "Manx pound",
+ "es": "libra manesa",
+ "fa": "پوند مانکس",
+ "fi": "Mansaaren punta",
+ "fr": "livre mannoise",
+ "gl": "Libra da Illa de Man",
+ "hr": "Manska funta",
+ "hu": "Man-szigeti font",
+ "it": "sterlina di Man",
+ "ja": "マンクス・ポンド",
+ "lt": "Meno salos svaras",
+ "nl": "Isle of Man-pond",
+ "pl": "Funt manx",
+ "pt": "Libra manesa",
+ "ro": "Liră din Insula Man",
+ "ru": "фунт Острова Мэн",
+ "sk": "Manská libra",
+ "sr": "манска фунта",
+ "sv": "Isle of Man-pund",
+ "ta": "மான்க்ஸ் பவுண்டு",
+ "uk": "Фунт острова Мен",
+ "zh": "曼島鎊",
+ "eo": "maninsula pundo",
+ "ia": "libra mannese"
+ },
+ "INR": {
+ "ar": "روبية هندية",
+ "bg": "Индийска рупия",
+ "ca": "rupia índia",
+ "cs": "Indická rupie",
+ "da": "Indiske rupier",
+ "de": "Indische Rupie",
+ "el": "Ρουπία Ινδίας",
+ "en": "Indian rupee",
+ "eo": "barata rupio",
+ "es": "rupia india",
+ "et": "India ruupia",
+ "eu": "Indiar errupia",
+ "fa": "روپیه هند",
+ "fi": "Intian rupia",
+ "fr": "roupie indienne",
+ "he": "רופי הודי",
+ "hr": "Indijska rupija",
+ "hu": "indiai rúpia",
+ "it": "rupia indiana",
+ "ja": "インド・ルピー",
+ "lt": "Indijos rupija",
+ "nl": "Indiase roepie",
+ "oc": "Ropia d'Índia",
+ "pl": "Rupia indyjska",
+ "pt": "rupia indiana",
+ "ro": "Rupie indiană",
+ "ru": "индийская рупия",
+ "sk": "Indická rupia",
+ "sr": "индијска рупија",
+ "sv": "Indisk rupee",
+ "ta": "இந்திய ரூபாய்",
+ "te": "రూపాయి",
+ "tr": "Hindistan rupisi",
+ "uk": "індійська рупія",
+ "vi": "Rupee Ấn Độ",
+ "zh": "印度盧比",
+ "cy": "rupee Indiaidd"
+ },
+ "IQD": {
+ "ar": "دينار عراقي",
+ "bg": "Иракски динар",
+ "ca": "dinar iraquià",
+ "cs": "irácký dinár",
+ "da": "Irakiske dinarer",
+ "de": "irakischer Dinar",
+ "en": "Iraqi dinar",
+ "eo": "iraka dinaro",
+ "es": "dinar iraquí",
+ "fa": "دینار عراق",
+ "fi": "Irakin dinaari",
+ "fr": "dinar irakien",
+ "he": "דינר עיראקי",
+ "hr": "Irački dinar",
+ "hu": "iraki dinár",
+ "it": "dinaro iracheno",
+ "ja": "イラク・ディナール",
+ "lt": "Irako dinaras",
+ "nl": "Iraakse dinar",
+ "pl": "Dinar iracki",
+ "pt": "dinar iraquiano",
+ "ru": "иракский динар",
+ "sr": "ирачки динар",
+ "sv": "Irakisk dinar",
+ "tr": "Irak dinarı",
+ "uk": "Іракський динар",
+ "zh": "伊拉克第納爾",
+ "el": "Ιρακινό δηνάριο",
+ "ta": "இராக்கிய தீனார்"
+ },
+ "IRR": {
+ "ar": "ريال إيراني",
+ "bg": "Ирански риал",
+ "ca": "rial iranià",
+ "cs": "Íránský riál",
+ "da": "Rial",
+ "de": "iranischer Rial",
+ "el": "Ιρανικό ριάλ",
+ "en": "Iranian rial",
+ "eo": "irana rialo",
+ "es": "rial iraní",
+ "eu": "Irandar rial",
+ "fa": "ریال ایران",
+ "fi": "Iranin rial",
+ "fr": "rial iranien",
+ "he": "ריאל איראני",
+ "hr": "Iranski rijal",
+ "hu": "iráni riál",
+ "it": "riyal iraniano",
+ "ja": "イラン・リヤル",
+ "lt": "Irano rialas",
+ "nl": "Iraanse rial",
+ "pl": "Rial irański",
+ "pt": "rial iraniano",
+ "ro": "Rial iranian",
+ "ru": "иранский риал",
+ "sk": "Iránsky rial",
+ "sr": "ирански ријал",
+ "sv": "Iransk rial",
+ "tr": "İran riyali",
+ "uk": "Іранський ріал",
+ "vi": "Rial Iran",
+ "zh": "伊朗里亞爾",
+ "cy": "rial Iranaidd",
+ "oc": "rial"
+ },
+ "ISK": {
+ "ar": "كرونة آيسلندية",
+ "bg": "Исландска крона",
+ "ca": "corona islandesa",
+ "cs": "Islandská koruna",
+ "da": "Islandsk króna",
+ "de": "isländische Krone",
+ "el": "Κορόνα Ισλανδίας",
+ "en": "Icelandic króna",
+ "eo": "islanda krono",
+ "es": "corona islandesa",
+ "et": "Islandi kroon",
+ "eu": "Islandiar koroa",
+ "fa": "کرونا ایسلند",
+ "fi": "Islannin kruunu",
+ "fr": "couronne islandaise",
+ "gl": "Coroa islandesa",
+ "he": "קרונה איסלנדית",
+ "hr": "Islandska kruna",
+ "hu": "izlandi korona",
+ "it": "corona islandese",
+ "ja": "アイスランド・クローナ",
+ "lt": "Islandijos krona",
+ "nl": "IJslandse kroon",
+ "pl": "Korona islandzka",
+ "pt": "coroa islandesa",
+ "ro": "Coroană islandeză",
+ "ru": "исландская крона",
+ "sk": "Islandská koruna",
+ "sl": "islandska krona",
+ "sr": "исландска круна",
+ "sv": "Isländsk krona",
+ "ta": "ஐஸ்லாந்திய குரோனா",
+ "tr": "İzlanda kronası",
+ "uk": "Ісландська крона",
+ "zh": "冰岛克朗",
+ "ia": "corona islandese"
+ },
+ "JMD": {
+ "ar": "دولار جامايكي",
+ "bg": "Ямайски долар",
+ "ca": "dòlar jamaicà",
+ "cs": "Jamajský dolar",
+ "de": "Jamaika-Dollar",
+ "el": "Δολάριο Τζαμάικας",
+ "en": "Jamaican dollar",
+ "eo": "jamajka dolaro",
+ "es": "Dólar jamaiquino",
+ "eu": "Dolar jamaikar",
+ "fa": "دلار جامائیکا",
+ "fi": "Jamaikan dollari",
+ "fr": "Dollar jamaïcain",
+ "gl": "Dólar xamaicano",
+ "hr": "Jamajčanski dolar",
+ "hu": "jamaicai dollár",
+ "it": "Dollaro giamaicano",
+ "ja": "ジャマイカ・ドル",
+ "lt": "Jamaikos doleris",
+ "nl": "Jamaicaanse dollar",
+ "pl": "Dolar jamajski",
+ "pt": "Dólar jamaicano",
+ "ru": "ямайский доллар",
+ "sr": "јамајкански долар",
+ "sv": "Jamaicansk dollar",
+ "tr": "Jamaika doları",
+ "uk": "Ямайський долар",
+ "zh": "牙買加元",
+ "he": "דולר ג'מייקי"
+ },
+ "JOD": {
+ "ar": "دينار أردني",
+ "bg": "Йордански динар",
+ "ca": "dinar jordà",
+ "cs": "Jordánský dinár",
+ "de": "jordanischer Dinar",
+ "el": "Ιορδανικό δηνάριο",
+ "en": "Jordanian dinar",
+ "eo": "jordania dinaro",
+ "es": "dinar jordano",
+ "et": "Jordaania dinaar",
+ "eu": "Jordaniako dinar",
+ "fa": "دینار اردن",
+ "fi": "Jordanian dinaari",
+ "fr": "dinar jordanien",
+ "he": "דינר ירדני",
+ "hr": "Jordanski dinar",
+ "hu": "jordán dinár",
+ "it": "dinaro giordano",
+ "ja": "ヨルダン・ディナール",
+ "lt": "Jordanijos dinaras",
+ "nl": "Jordaanse dinar",
+ "pl": "Dinar jordański",
+ "pt": "dinar jordano",
+ "ro": "Dinar iordanian",
+ "ru": "иорданский динар",
+ "sr": "јордански динар",
+ "sv": "Jordansk dinar",
+ "tr": "Ürdün dinarı",
+ "uk": "Йорданський динар",
+ "zh": "約旦第納爾",
+ "cy": "dinar (Iorddonen)",
+ "oc": "Dinar jordanian"
+ },
+ "JPY": {
+ "ar": "ين ياباني",
+ "bg": "японска йена",
+ "ca": "ien",
+ "cs": "japonský jen",
+ "cy": "Yen",
+ "da": "Yen",
+ "de": "Yen",
+ "el": "γιεν",
+ "en": "Japanese yen",
+ "eo": "japana eno",
+ "es": "yen",
+ "et": "Jaapani jeen",
+ "eu": "Yen",
+ "fa": "ین",
+ "fi": "Japanin jeni",
+ "fr": "yen",
+ "gl": "Ien",
+ "he": "ין יפני",
+ "hr": "Japanski jen",
+ "hu": "japán jen",
+ "it": "yen",
+ "ja": "円",
+ "lt": "Jena",
+ "nl": "Japanse yen",
+ "oc": "Yen",
+ "pl": "jen",
+ "pt": "iene",
+ "ro": "yeni",
+ "ru": "японская иена",
+ "sk": "Jen",
+ "sl": "Jen",
+ "sr": "јапански јен",
+ "sv": "yen",
+ "ta": "யென்",
+ "tr": "Japon yeni",
+ "uk": "єна",
+ "vi": "Yên Nhật",
+ "zh": "日圓"
+ },
+ "KES": {
+ "ar": "شيلينغ كيني",
+ "bg": "Кенийски шилинг",
+ "ca": "xíling kenyà",
+ "cs": "keňský šilink",
+ "da": "kenyansk shilling",
+ "de": "Kenia-Schilling",
+ "el": "Σελίνι της Κένυας",
+ "en": "Kenyan shilling",
+ "eo": "kenja ŝilingo",
+ "es": "Chelín keniano",
+ "et": "Kenya šilling",
+ "fa": "شیلینگ کنیا",
+ "fi": "Kenian šillinki",
+ "fr": "Shilling kényan",
+ "gl": "Xilin kenyano",
+ "he": "שילינג קנייתי",
+ "hr": "Kenijski šiling",
+ "hu": "kenyai shilling",
+ "it": "Scellino keniota",
+ "ja": "ケニア・シリング",
+ "lt": "Kenijos šilingas",
+ "nl": "Keniaanse shilling",
+ "pl": "Szyling kenijski",
+ "pt": "Xelim queniano",
+ "ru": "кенийский шиллинг",
+ "sr": "кенијски шилинг",
+ "sv": "Kenyansk shilling",
+ "tr": "Kenya şilini",
+ "uk": "кенійський шилінг",
+ "zh": "肯亞先令"
+ },
+ "KGS": {
+ "ar": "سوم قرغيزستاني",
+ "bg": "сом",
+ "ca": "som kirguís",
+ "cs": "Kyrgyzský som",
+ "de": "Som",
+ "el": "Σομ Κιργιζίας",
+ "en": "Kyrgyzstani som",
+ "eo": "kirgiza somo",
+ "es": "som kirguís",
+ "fa": "سوم قرقیزستان",
+ "fi": "Kirgisian som",
+ "fr": "som",
+ "gl": "som kirguiz",
+ "hr": "Kirgistanski som",
+ "hu": "kirgiz szom",
+ "it": "som kirghizo",
+ "ja": "キルギス・ソム",
+ "lt": "somas",
+ "nl": "Kirgizische som",
+ "pl": "som",
+ "pt": "som",
+ "ro": "som kîrgîz",
+ "ru": "киргизский сом",
+ "sr": "киргиски сом",
+ "sv": "Kirgizistansk som",
+ "tr": "Kırgızistan somu",
+ "uk": "сом",
+ "zh": "吉尔吉斯斯坦索姆"
+ },
+ "KHR": {
+ "ar": "ريال كمبودي",
+ "bg": "Камбоджански риел",
+ "ca": "riel",
+ "cs": "Kambodžský riel",
+ "de": "Kambodschanischer Riel",
+ "el": "Ριέλ Καμπότζης",
+ "en": "riel",
+ "eo": "kamboĝa rielo",
+ "es": "riel camboyano",
+ "eu": "Kanbodiar bigarren riel",
+ "fa": "ریال کامبوج",
+ "fi": "Kambodžan riel",
+ "fr": "Riel",
+ "gl": "riel camboxano",
+ "hr": "Kambodžanski rijel",
+ "hu": "kambodzsai riel",
+ "it": "Riel cambogiano",
+ "ja": "リエル",
+ "lt": "Kambodžos rielis",
+ "nl": "Cambodjaanse riel",
+ "pl": "Riel",
+ "pt": "riel cambojano",
+ "ru": "камбоджийский риель",
+ "sr": "камбоџански ријел",
+ "sv": "Kambodjansk riel",
+ "tr": "Riel",
+ "uk": "Камбоджійський рієль",
+ "vi": "Riel Campuchia",
+ "zh": "柬埔寨瑞爾",
+ "he": "ריאל קמבודי",
+ "oc": "riel",
+ "ta": "ரைல்"
+ },
+ "KID": {
+ "ar": "دولار كريباتي",
+ "cs": "Kiribatský dolar",
+ "de": "Kiribati-Dollar",
+ "el": "Δολάριο Κιριμπάτι",
+ "en": "Kiribati dollar",
+ "eo": "Kiribata dolaro",
+ "es": "Dólar de Kiribati",
+ "fa": "دلار کیریباتی",
+ "fi": "Kiribatin dollari",
+ "fr": "dollar des Kiribati",
+ "gl": "Dólar de Kiribati",
+ "hr": "Kiribatski dolar",
+ "it": "Dollaro di Kiribati",
+ "ja": "キリバス・ドル",
+ "lt": "Kiribačio doleris",
+ "pl": "Dolar Kiribati",
+ "pt": "Dólar de Kiribati",
+ "ro": "Dolar din Kiribati",
+ "ru": "доллар Кирибати",
+ "uk": "долар Кірибаті",
+ "zh": "基里巴斯元",
+ "ca": "dòlar de Kiribati",
+ "hu": "kiribati dollár",
+ "nl": "Kiribati dollar",
+ "sr": "кирибатски долар"
+ },
+ "KMF": {
+ "ar": "فرنك قمري",
+ "bg": "Коморски франк",
+ "ca": "franc de les Comores",
+ "cs": "Komorský frank",
+ "de": "Komoren-Franc",
+ "el": "Φράγκο Κομορών",
+ "en": "Comorian franc",
+ "eo": "komora franko",
+ "es": "franco comorense",
+ "fa": "فرانک کمر",
+ "fi": "Komorien frangi",
+ "fr": "franc comorien",
+ "hr": "Komorski franak",
+ "hu": "comore-i frank",
+ "it": "franco delle Comore",
+ "ja": "コモロ・フラン",
+ "lt": "Komorų frankas",
+ "nl": "Comorese frank",
+ "pl": "frank Komorów",
+ "pt": "Franco comoriano",
+ "ro": "Franc comorian",
+ "ru": "Франк Комор",
+ "sr": "коморски франак",
+ "sv": "Komoransk franc",
+ "tr": "Komor frangı",
+ "uk": "Коморський франк",
+ "zh": "葛摩法郎",
+ "he": "פרנק קומורואי"
+ },
+ "KPW": {
+ "ar": "وون كوري شمالي",
+ "bg": "Севернокорейски вон",
+ "ca": "won nord-coreà",
+ "cs": "Severokorejský won",
+ "da": "Nordkoreanske won",
+ "de": "nordkoreanischer Won",
+ "el": "Γουόν Βόρειας Κορέας",
+ "en": "North Korean won",
+ "eo": "nord-korea vono",
+ "es": "wŏn norcoreano",
+ "et": "Põhja-Korea vonn",
+ "fa": "وون کره شمالی",
+ "fi": "Pohjois-Korean won",
+ "fr": "won nord-coréen",
+ "gl": "Won norcoreano",
+ "he": "וון צפון-קוריאני",
+ "hr": "Sjevernokorejski von",
+ "hu": "észak-koreai von",
+ "it": "won nordcoreano",
+ "ja": "朝鮮民主主義人民共和国ウォン",
+ "lt": "Šiaurės Korėjos vona",
+ "nl": "Noord-Koreaanse won",
+ "pl": "Won północnokoreański",
+ "pt": "won norte-coreano",
+ "ro": "Won nord-coreean",
+ "ru": "вона КНДР",
+ "sr": "севернокорејски вон",
+ "sv": "Nordkoreansk won",
+ "tr": "Kuzey Kore wonu",
+ "uk": "Північнокорейська вона",
+ "vi": "Won Cộng hòa Dân chủ Nhân dân Triều Tiên",
+ "zh": "朝鮮圓"
+ },
+ "KRW": {
+ "ar": "وون كوري جنوبي",
+ "bg": "Южнокорейски вон",
+ "ca": "won sud-coreà",
+ "cs": "Jihokorejský won",
+ "da": "Sydkoreanske won",
+ "de": "südkoreanischer Won",
+ "el": "Γουόν Νότιας Κορέας",
+ "en": "South Korean won",
+ "eo": "sud-korea vono",
+ "es": "won surcoreano",
+ "et": "Lõuna-Korea vonn",
+ "fa": "وون کره جنوبی",
+ "fi": "Etelä-Korean won",
+ "fr": "won sud-coréen",
+ "gl": "Won surcoreano",
+ "hr": "Južnokorejski von",
+ "hu": "dél-koreai von",
+ "it": "won sudcoreano",
+ "ja": "大韓民国ウォン",
+ "lt": "Pietų Korėjos vonas",
+ "nl": "Zuid-Koreaanse won",
+ "pl": "Won południowokoreański",
+ "pt": "Won sul-coreano",
+ "ro": "Won sud-coreean",
+ "ru": "южнокорейская вона",
+ "sr": "јужнокорејски вон",
+ "sv": "Sydkoreansk won",
+ "tr": "Güney Kore wonu",
+ "uk": "південнокорейська вона",
+ "vi": "Won Hàn Quốc",
+ "zh": "韓圓",
+ "he": "וון דרום קוריאני",
+ "oc": "Won sud-corean"
+ },
+ "KWD": {
+ "ar": "دينار كويتي",
+ "bg": "Кувейтски динар",
+ "ca": "dinar kuwaitià",
+ "cs": "Kuvajtský dinár",
+ "da": "Kuwaitiske dinarer",
+ "de": "Kuwait-Dinar",
+ "el": "Δηνάριο Κουβέιτ",
+ "en": "Kuwaiti dinar",
+ "eo": "kuvajta dinaro",
+ "es": "dinar kuwaití",
+ "fa": "دینار کویت",
+ "fi": "Kuwaitin dinaari",
+ "fr": "dinar koweïtien",
+ "he": "דינר כוויתי",
+ "hr": "Kuvajtski dinar",
+ "hu": "kuvaiti dinár",
+ "it": "dinaro kuwaitiano",
+ "ja": "クウェート・ディナール",
+ "lt": "Kuveito dinaras",
+ "nl": "Koeweitse dinar",
+ "pl": "Dinar kuwejcki",
+ "pt": "dinar kuwaitiano",
+ "ru": "кувейтский динар",
+ "sr": "кувајтски динар",
+ "sv": "Kuwaitisk dinar",
+ "ta": "குவைத் தினார்",
+ "tr": "Kuveyt dinarı",
+ "uk": "Кувейтський динар",
+ "vi": "Dinar Kuwait",
+ "zh": "科威特第纳尔"
+ },
+ "KYD": {
+ "ar": "دولار جزر كايمان",
+ "ca": "dòlar de les illes Caiman",
+ "cs": "Dolar Kajmanských ostrovů",
+ "de": "Kaiman-Dollar",
+ "el": "Δολάριο Νησιών Καϋμάν",
+ "en": "Cayman Islands dollar",
+ "eo": "kajmana dolaro",
+ "es": "Dólar de las Islas Caimán",
+ "eu": "Dolar kaimandar",
+ "fa": "دلار جزایر کیمن",
+ "fi": "Caymansaarten dollari",
+ "fr": "Dollar des îles Caïmans",
+ "hr": "Kajmanski dolar",
+ "hu": "kajmán-szigeteki dollár",
+ "it": "Dollaro delle Cayman",
+ "ja": "ケイマン諸島・ドル",
+ "lt": "Kaimanų salų doleris",
+ "nl": "Kaaimaneilandse dollar",
+ "pl": "Dolar kajmański",
+ "pt": "Dólar das Ilhas Cayman",
+ "ru": "доллар Каймановых островов",
+ "sr": "долар Кајманских Острва",
+ "sv": "Caymansk dollar",
+ "tr": "Cayman Adaları doları",
+ "uk": "Долар Кайманових островів",
+ "vi": "Đô la Quần đảo Cayman",
+ "zh": "開曼群島元",
+ "he": "דולר קיימני",
+ "oc": "Dolar de las illas Caiman"
+ },
+ "KZT": {
+ "ar": "تينغ كازاخستاني",
+ "bg": "Казахстанско тенге",
+ "ca": "tenge",
+ "cs": "Tenge",
+ "de": "Tenge",
+ "el": "Τένγκε",
+ "en": "Kazakhstani tenge",
+ "eo": "kazaĥa tengo",
+ "es": "tenge kazajo",
+ "eu": "Kazakhstani Tenge",
+ "fa": "تنگه",
+ "fi": "Kazakstanin tenge",
+ "fr": "tenge kazakh",
+ "hr": "Kazahstanski tenge",
+ "hu": "kazah tenge",
+ "it": "tenge kazako",
+ "ja": "テンゲ",
+ "lt": "Kazachijos tengė",
+ "nl": "Kazachse tenge",
+ "pl": "Tenge",
+ "pt": "tenge",
+ "ro": "Tenge",
+ "ru": "казахстанский тенге",
+ "sk": "Kazachstanský tenge",
+ "sl": "Kazahstanski tenge",
+ "sr": "казахстански тенге",
+ "sv": "Kazakstansk Tenge",
+ "ta": "கசக்ஸ்தானிய டெங்கே",
+ "tr": "Tenge",
+ "uk": "Казахстанський тенге",
+ "vi": "Tenge Kazakhstan",
+ "zh": "哈萨克斯坦坚戈",
+ "cy": "tenge Casachstan",
+ "he": "טנגה",
+ "ia": "tenge kazakh",
+ "oc": "tenge"
+ },
"LAK": {
- "fr": "Kip laotien",
- "en": "Lao kip",
- "nl": "Laotiaanse kip",
- "de": "Kip",
- "it": "Kip laotiano",
- "hu": "laoszi kip",
- "es": "Kip laosiano"
- },
- "MZE": {
- "de": "Mosambikanischer Escudo",
- "en": "Mozambican escudo",
- "es": "Escudo mozambique\u00f1o"
- },
- "SYP": {
- "fr": "Livre syrienne",
- "en": "Syrian pound",
- "nl": "Syrisch pond",
- "de": "Syrische Lira",
- "it": "Lira siriana",
- "hu": "Sz\u00edr font",
- "es": "Libra siria"
- },
+ "ar": "كيب لاوي",
+ "bg": "Лаоски кип",
+ "ca": "kip",
+ "cs": "Laoský kip",
+ "cy": "Kip",
+ "de": "Kip",
+ "el": "Κιπ",
+ "en": "Lao kip",
+ "eo": "laosa kipo",
+ "es": "kip laosiano",
+ "eu": "Laostar kip berria",
+ "fa": "کیپ لائوس",
+ "fi": "Laosin kip",
+ "fr": "Kip laotien",
+ "hr": "laoski kip",
+ "hu": "laoszi kip",
+ "it": "Kip laotiano",
+ "ja": "キープ",
+ "lt": "Laoso kipas",
+ "nl": "Laotiaanse kip",
+ "pl": "Kip",
+ "pt": "Kip",
+ "ru": "лаосский кип",
+ "sr": "лаоски кип",
+ "sv": "Laotisk Kip",
+ "tr": "Laos kipi",
+ "uk": "Лаоський кіп",
+ "vi": "Kíp Lào",
+ "zh": "寮國基普"
+ },
+ "LBP": {
+ "ar": "ليرة لبنانية",
+ "bg": "Ливанска лира",
+ "ca": "lliura libanesa",
+ "cs": "Libanonská libra",
+ "de": "libanesisches Pfund",
+ "el": "Λίρα του Λιβάνου",
+ "en": "Lebanese pound",
+ "eo": "libana liro",
+ "es": "libra libanesa",
+ "fa": "لیره لبنان",
+ "fi": "Libanonin punta",
+ "fr": "livre libanaise",
+ "he": "לירה לבנונית",
+ "hr": "Libanonska funta",
+ "hu": "libanoni font",
+ "it": "lira libanese",
+ "ja": "レバノン・ポンド",
+ "lt": "Libano svaras",
+ "nl": "Libanees pond",
+ "pl": "Funt libański",
+ "pt": "libra libanesa",
+ "ru": "ливанский фунт",
+ "sl": "Libanonski funt",
+ "sr": "либанска фунта",
+ "sv": "Libanesiskt pund",
+ "tr": "Lübnan lirası",
+ "uk": "Ліванський фунт",
+ "zh": "黎巴嫩鎊",
+ "cy": "punt Libanus",
+ "oc": "Liura libanesa"
+ },
+ "LKR": {
+ "ar": "روبية سريلانكية",
+ "bg": "Шриланкийска рупия",
+ "ca": "rupia de Sri Lanka",
+ "cs": "Srílanská rupie",
+ "da": "Sri Lanka rupee",
+ "de": "Sri-Lanka-Rupie",
+ "en": "Sri Lankan rupee",
+ "eo": "srilanka rupio",
+ "es": "rupia esrilanquesa",
+ "eu": "Errupia srilankar",
+ "fa": "روپیه سریلانکا",
+ "fi": "Sri Lankan rupia",
+ "fr": "roupie srilankaise",
+ "gl": "Rupia de Sri Lanka",
+ "hr": "Šrilanska rupija",
+ "hu": "Srí Lanka-i rúpia",
+ "it": "rupia singalese",
+ "ja": "スリランカ・ルピー",
+ "lt": "Šri Lankos rupija",
+ "nl": "Sri Lankaanse roepie",
+ "pl": "Rupia lankijska",
+ "pt": "rúpia do Sri Lanka",
+ "ru": "ланкийская рупия",
+ "sr": "шриланчанска рупија",
+ "sv": "Lankesisk rupie",
+ "ta": "இலங்கை ரூபாய்",
+ "tr": "Sri Lanka rupisi",
+ "uk": "ланкійська рупія",
+ "vi": "Rupee Sri Lanka",
+ "zh": "斯里蘭卡盧比",
+ "cy": "Rupee Sri Lanca",
+ "he": "רופי סרי לנקי"
+ },
+ "LRD": {
+ "ar": "دولار ليبيري",
+ "bg": "Либерийски долар",
+ "ca": "dòlar liberià",
+ "cs": "liberijský dolar",
+ "da": "Liberiansk dollar",
+ "de": "Liberianischer Dollar",
+ "el": "Δολάριο Λιβερίας",
+ "en": "Liberian dollar",
+ "eo": "liberia dolaro",
+ "es": "Dólar liberiano",
+ "fa": "دلار لیبریا",
+ "fi": "Liberian dollari",
+ "fr": "dollar libérien",
+ "gl": "Dólar liberiano",
+ "he": "דולר ליברי",
+ "hr": "Liberijski dolar",
+ "hu": "libériai dollár",
+ "it": "Dollaro liberiano",
+ "ja": "リベリア・ドル",
+ "lt": "Liberijos doleris",
+ "nl": "Liberiaanse dollar",
+ "pl": "Dolar liberyjski",
+ "pt": "Dólar liberiano",
+ "ru": "Либерийский доллар",
+ "sr": "либеријски долар",
+ "sv": "Liberiansk dollar",
+ "tr": "Liberya doları",
+ "uk": "Ліберійський долар",
+ "zh": "賴比瑞亞元",
+ "oc": "Dolar liberian"
+ },
+ "LSL": {
+ "ar": "لوتي ليسوتو",
+ "ca": "loti",
+ "cs": "Lesothský loti",
+ "cy": "Maloti",
+ "da": "Loti",
+ "de": "Lesothischer Loti",
+ "el": "Λότι",
+ "en": "Lesotho loti",
+ "eo": "lesota lotio",
+ "es": "Loti",
+ "fa": "لوتی لسوتو",
+ "fi": "Lesothon loti",
+ "fr": "Loti",
+ "gl": "Loti",
+ "hr": "Lesotski loti",
+ "hu": "lesothói loti",
+ "it": "Loti lesothiano",
+ "ja": "ロチ",
+ "lt": "Loti",
+ "nl": "Lesothaanse loti",
+ "pl": "Loti",
+ "pt": "Loti",
+ "ru": "Лоти Лесото",
+ "sr": "лесотски лоти",
+ "sv": "Lesothisk Loti",
+ "tr": "Loti",
+ "uk": "Лоті",
+ "zh": "賴索托洛蒂",
+ "he": "לוטי"
+ },
+ "LYD": {
+ "ar": "دينار ليبي",
+ "bg": "Либийски динар",
+ "ca": "dinar libi",
+ "cs": "Libyjský dinár",
+ "cy": "Dinar Libya",
+ "da": "Libyske dinarer",
+ "de": "libyscher Dinar",
+ "el": "Δηνάριο Λιβύης",
+ "en": "Libyan dinar",
+ "eo": "libia dinaro",
+ "es": "dinar libio",
+ "fa": "دینار لیبی",
+ "fi": "Libyan dinaari",
+ "fr": "dinar libyen",
+ "he": "דינר לובי ",
+ "hr": "Libijski dinar",
+ "hu": "líbiai dinár",
+ "it": "dinaro libico",
+ "ja": "リビア・ディナール",
+ "lt": "Libijos dinaras",
+ "nl": "Libische dinar",
+ "pl": "Dinar libijski",
+ "pt": "dinar líbio",
+ "ru": "ливийский динар",
+ "sr": "либијски динар",
+ "sv": "Libysk dinar",
+ "tr": "Libya dinarı",
+ "uk": "Лівійський динар",
+ "zh": "利比亞第納爾",
+ "oc": "Dinar libian"
+ },
"MAD": {
- "fr": "Dirham marocain",
- "en": "Moroccan dirham",
- "nl": "Marokkaanse dirham",
- "de": "Marokkanischer Dirham",
- "it": "Dirham marocchino",
- "hu": "Marokk\u00f3i dirham",
- "es": "D\u00edrham marroqu\u00ed"
- },
+ "ar": "درهم مغربي",
+ "bg": "Марокански дирхам",
+ "ca": "dírham marroquí",
+ "cs": "Marocký dirham",
+ "cy": "Dirham Moroco",
+ "de": "Marokkanischer Dirham",
+ "el": "Ντιρχάμ Μαρόκου",
+ "en": "Moroccan dirham",
+ "eo": "maroka dirhamo",
+ "es": "dírham marroquí",
+ "eu": "Marokoar dirham",
+ "fa": "درهم مراکش",
+ "fi": "Marokon dirhami",
+ "fr": "Dirham marocain",
+ "gl": "Dirham",
+ "he": "דירהם מרוקני",
+ "hr": "Marokanski dirham",
+ "hu": "marokkói dirham",
+ "it": "Dirham marocchino",
+ "ja": "モロッコ・ディルハム",
+ "lt": "Maroko dirhamas",
+ "nl": "Marokkaanse dirham",
+ "pl": "dirham marokański",
+ "pt": "Dirham marroquino",
+ "ro": "Dirham marocan",
+ "ru": "марокканский дирхам",
+ "sr": "марокански дирхам",
+ "sv": "Marockansk dirham",
+ "tr": "Fas dirhemi",
+ "uk": "Марокканський дирхам",
+ "zh": "摩洛哥迪尔汗",
+ "oc": "Dirham"
+ },
+ "MCF": {
+ "ar": "فرنك موناكو",
+ "bg": "Монаски франк",
+ "ca": "franc monegasc",
+ "cs": "Monacký frank",
+ "de": "monegassischer Franc",
+ "el": "Φράγκο του Μονακό",
+ "en": "Monegasque franc",
+ "es": "franco monegasco",
+ "fa": "فرانک موناکو",
+ "fr": "franc monégasque",
+ "hr": "Monegaški franak",
+ "it": "franco monegasco",
+ "ja": "モネガスク・フラン",
+ "lt": "Monako frankas",
+ "nl": "monegaskische frank",
+ "pl": "frank monakijski",
+ "pt": "franco monegasco",
+ "ro": "Franc monegasc",
+ "ru": "Монегасский франк",
+ "uk": "Франк Монако",
+ "zh": "摩納哥法郎",
+ "eo": "monaka franko",
+ "hu": "monacói frank",
+ "ia": "franc monegasc"
+ },
+ "MDL": {
+ "ar": "ليو مولدوفي",
+ "bg": "Молдовска лея",
+ "ca": "leu moldau",
+ "cs": "moldavský lei",
+ "de": "moldauischer Leu",
+ "el": "Μολδαβικό Λέου",
+ "en": "Moldovan leu",
+ "eo": "moldava leo",
+ "es": "leu moldavo",
+ "et": "Moldova leu",
+ "fa": "لئوی مولداوی",
+ "fi": "Moldovan leu",
+ "fr": "leu moldave",
+ "he": "לאו מולדובני",
+ "hr": "moldavski lej",
+ "hu": "moldován lej",
+ "it": "leu moldavo",
+ "ja": "モルドバ・レウ",
+ "lt": "Moldavijos lėja",
+ "nl": "Moldavische leu",
+ "pl": "lej Mołdawii",
+ "pt": "leu moldávio",
+ "ro": "Leu moldovenesc",
+ "ru": "молдавский лей",
+ "sk": "Moldavský lei",
+ "sl": "Moldavski lej",
+ "sr": "молдавски леј",
+ "sv": "Moldavisk leu",
+ "ta": "மல்டோவிய லியு",
+ "tr": "Moldova leyi",
+ "uk": "Молдовський лей",
+ "zh": "摩爾多瓦列伊",
+ "ia": "leu moldave",
+ "oc": "Leu moldau"
+ },
+ "MGA": {
+ "ar": "أرياري مدغشقري",
+ "ca": "ariary",
+ "cs": "Malgašský ariary",
+ "da": "Ariary",
+ "de": "Ariary",
+ "el": "Αριάρι",
+ "en": "ariary",
+ "eo": "malagasa ariaro",
+ "es": "ariary",
+ "fa": "آریاری",
+ "fi": "Madagaskarin ariary",
+ "fr": "ariary",
+ "he": "אריארי",
+ "hr": "Malgaški arijari",
+ "hu": "madagaszkári ariary",
+ "it": "ariary malgascio",
+ "ja": "マダガスカル・アリアリ",
+ "lt": "Madagaskaro ariaris",
+ "nl": "Malagassische ariary",
+ "pl": "Ariary",
+ "pt": "ariary malgaxe",
+ "ru": "малагасийский ариари",
+ "sr": "ариари",
+ "sv": "Madagaskisk ariary",
+ "tr": "Ariary",
+ "uk": "Малагасійський аріарі",
+ "zh": "馬達加斯加阿里亞里",
+ "oc": "Ariary"
+ },
+ "MKD": {
+ "ar": "دينار مقدوني",
+ "bg": "македонски денар",
+ "ca": "denar",
+ "cs": "Makedonský denár",
+ "da": "Makedonske denarer",
+ "de": "mazedonischer Denar",
+ "el": "Δηνάριο Βόρειας Μακεδονίας",
+ "en": "Macedonian denar",
+ "eo": "makedona denaro",
+ "es": "denar macedonio",
+ "et": "Makedoonia denaar",
+ "fa": "دینار مقدونیه",
+ "fi": "Makedonian denaari",
+ "fr": "denar macédonien",
+ "gl": "Dinar macedonio",
+ "he": "דינר מקדוני",
+ "hr": "Makedonski denar",
+ "hu": "macedón dénár",
+ "it": "Dinaro macedone",
+ "ja": "マケドニア・デナール",
+ "lt": "Makedonijos denaras",
+ "nl": "Noord-Macedonische denar",
+ "pl": "denar",
+ "pt": "dinar macedónio",
+ "ro": "Denar macedonean",
+ "ru": "македонский денар",
+ "sk": "Macedónsky denár",
+ "sl": "Makedonski denar",
+ "sr": "македонски денар",
+ "sv": "Makedonisk denar",
+ "ta": "மாசிடோனிய தெனார்",
+ "tr": "Makedon denarı",
+ "uk": "Македонський денар",
+ "vi": "Denar Bắc Macedonia",
+ "zh": "馬其頓代納爾",
+ "cy": "denar (Macedonia)",
+ "ia": "denar macedone"
+ },
+ "MMK": {
+ "ar": "كيات ميانماري",
+ "ca": "kyat",
+ "cs": "Myanmarský kyat",
+ "de": "Kyat",
+ "en": "kyat",
+ "eo": "birma kjato",
+ "es": "Kyat birmano",
+ "fa": "کیات",
+ "fi": "Myanmarin kyat",
+ "fr": "Kyat",
+ "hr": "Mijanmarski kjat",
+ "hu": "mianmari kjap",
+ "it": "Kyat birmano",
+ "ja": "チャット",
+ "lt": "Kijatas",
+ "nl": "Myanmarese kyat",
+ "pl": "Kiat",
+ "pt": "Quiate",
+ "ro": "Kyat",
+ "ru": "кьят",
+ "sr": "мјанмарски кјат",
+ "sv": "Burmesisk kyat",
+ "tr": "Kyat",
+ "uk": "М'янмський к'ят",
+ "vi": "Kyat",
+ "zh": "缅元",
+ "oc": "Kyat"
+ },
+ "MNT": {
+ "ar": "توغروغ منغولي",
+ "bg": "монголски тугрик",
+ "ca": "tögrög",
+ "cs": "Tugrik",
+ "da": "Tugrik",
+ "de": "Tögrög",
+ "el": "Τουγκρίκ",
+ "en": "tugrik",
+ "eo": "mongola tugriko",
+ "es": "tugrik mongol",
+ "fa": "توگروگ",
+ "fi": "Mongolian tugrik",
+ "fr": "tugrik",
+ "gl": "Tugrik",
+ "he": "טוגרוג",
+ "hr": "Mongolski tugrik",
+ "hu": "mongol tugrik",
+ "it": "tugrik mongolo",
+ "ja": "トゥグルグ",
+ "lt": "Tugrikas",
+ "nl": "Mongoolse tugrik",
+ "pl": "tugrik",
+ "pt": "Tugrik",
+ "ru": "монгольский тугрик",
+ "sk": "Mongolský tugrik",
+ "sr": "монголски тугрик",
+ "sv": "Mongolisk Tögrög",
+ "tr": "Tögrög",
+ "uk": "Монгольський тугрик",
+ "vi": "Tögrög",
+ "zh": "蒙古图格里克",
+ "cy": "tögrög Mongolia"
+ },
+ "MOP": {
+ "ar": "باتاكا ماكاوية",
+ "ca": "pataca",
+ "cs": "Macajská pataca",
+ "de": "Macao-Pataca",
+ "el": "Πατάκα",
+ "en": "Macanese pataca",
+ "eo": "makaa patako",
+ "es": "pataca macaense",
+ "eu": "Pataca macautar",
+ "fa": "پاتاکای ماکانز",
+ "fi": "Macaon pataca",
+ "fr": "pataca",
+ "gl": "Pataca macaense",
+ "he": "פטקה",
+ "hr": "Makaonska pataka",
+ "hu": "makaói pataca",
+ "it": "Pataca di Macao",
+ "ja": "マカオ・パタカ",
+ "lt": "Pataka",
+ "nl": "Macause pataca",
+ "pl": "Pataca",
+ "pt": "Pataca",
+ "ru": "патака Макао",
+ "sv": "Macaoisk Pataca",
+ "tr": "Pataka",
+ "uk": "Аоминська патака",
+ "vi": "Pataca Macau",
+ "zh": "澳門幣",
+ "sr": "макаонска патака"
+ },
+ "MRO": {
+ "fr": "Ouguiya",
+ "ca": "Ouguiya",
+ "cs": "Ouguiya",
+ "cy": "Ouguiya",
+ "da": "Ouguiya",
+ "de": "Ouguiya",
+ "en": "Ouguiya (1973-2017)",
+ "eo": "Ouguiya",
+ "es": "Ouguiya",
+ "et": "Ouguiya",
+ "eu": "Ouguiya",
+ "fi": "Ouguiya",
+ "gl": "Ouguiya",
+ "hr": "Ouguiya",
+ "hu": "Ouguiya (1973-2017)",
+ "ia": "Ouguiya",
+ "it": "Ouguiya",
+ "lt": "Ouguiya",
+ "nl": "Ouguiya",
+ "oc": "Ouguiya",
+ "pl": "Ouguiya",
+ "pt": "Ouguiya",
+ "ro": "Ouguiya",
+ "sk": "Ouguiya",
+ "sv": "Ouguiya (1973-2017)",
+ "tr": "Ouguiya",
+ "vi": "Ouguiya"
+ },
+ "MUR": {
+ "ar": "روبي موريشي",
+ "ca": "rupia de Maurici",
+ "cs": "Mauricijská rupie",
+ "da": "Mauritiske rupee",
+ "de": "Mauritius-Rupie",
+ "el": "Ρουπία του Μαυρίκιου",
+ "en": "Mauritian rupee",
+ "eo": "maŭricia rupio",
+ "es": "rupia mauricia",
+ "eu": "Errupia mauriziar",
+ "fa": "روپیه موریس",
+ "fi": "Mauritiuksen rupia",
+ "fr": "Roupie mauricienne",
+ "gl": "Rupia de Mauricio",
+ "hr": "Mauricijska rupija",
+ "hu": "mauritiusi rúpia",
+ "it": "Rupia mauriziana",
+ "ja": "モーリシャス・ルピー",
+ "lt": "Mauricijaus rupija",
+ "nl": "Mauritiaanse roepie",
+ "pl": "Rupia Mauritiusu",
+ "pt": "Rupia mauriciana",
+ "ru": "Маврикийская рупия",
+ "sr": "маурицијска рупија",
+ "sv": "Mauritisk rupie",
+ "tr": "Mauritius rupisi",
+ "uk": "Маврикійська рупія",
+ "zh": "模里西斯盧比",
+ "he": "רופי מאוריציני",
+ "oc": "Ropia de Maurici"
+ },
+ "MVR": {
+ "ar": "روفيه مالديفية",
+ "bg": "Малдивска рупия",
+ "ca": "rupia de les Maldives",
+ "cs": "Maledivská rupie",
+ "da": "Rufiyaa",
+ "de": "Rufiyaa",
+ "el": "Ρουφίγια",
+ "en": "Maldivian rufiyaa",
+ "eo": "maldiva rufijao",
+ "es": "rupia maldiva",
+ "eu": "Errupia maldivar",
+ "fa": "روفیه مالدیو",
+ "fi": "Malediivien rufiyaa",
+ "fr": "Rufiyaa",
+ "hr": "Maldivska rufija",
+ "hu": "maldív-szigeteki rúfia",
+ "it": "rufiyaa delle Maldive",
+ "ja": "ルフィヤ",
+ "lt": "Maldyvų rufija",
+ "nl": "Maldivische rufiyaa",
+ "pl": "Rupia malediwska",
+ "pt": "Rupia maldívia",
+ "ru": "мальдивская руфия",
+ "sr": "малдивска руфија",
+ "sv": "Rufiyah",
+ "ta": "மாலத்தீவின் ருஃபியா",
+ "tr": "Rufiyaa",
+ "uk": "Мальдівська руфія",
+ "zh": "馬爾地夫拉菲亞",
+ "oc": "Rópia de las Maldivas"
+ },
+ "MWK": {
+ "ar": "كواشا ملاوية",
+ "ca": "kwacha malawià",
+ "cs": "malawiská kwacha",
+ "de": "Malawi-Kwacha",
+ "el": "Κουάτσα του Μαλάουι",
+ "en": "Malawian kwacha",
+ "eo": "malavia kvaĉo",
+ "es": "kwacha malauí",
+ "et": "Malawi kvatša",
+ "fa": "کواچا مالاویا",
+ "fi": "Malawin kwacha",
+ "fr": "Kwacha malawien",
+ "gl": "Kwacha de Malawi",
+ "hr": "Malavijska kvača",
+ "hu": "malawi kwacha",
+ "it": "Kwacha malawiano",
+ "ja": "マラウイ・クワチャ",
+ "lt": "Malavio kvača",
+ "nl": "Malawische kwacha",
+ "pl": "Kwacha malawijska",
+ "pt": "Kwacha do Maláui",
+ "ru": "малавийская квача",
+ "sr": "малавијска квача",
+ "sv": "Malawisk kwacha",
+ "tr": "Malavi kwachası",
+ "uk": "Малавійська квача",
+ "zh": "馬拉威克瓦查"
+ },
+ "MXN": {
+ "ar": "بيزو مكسيكي",
+ "bg": "Мексиканско песо",
+ "ca": "peso mexicà",
+ "cs": "Mexické peso",
+ "de": "Mexikanischer Peso",
+ "el": "Μεξικάνικο πέσο",
+ "en": "Mexican peso",
+ "eo": "meksika peso",
+ "es": "peso mexicano",
+ "eu": "Mexikar peso",
+ "fa": "پزو مکزیک",
+ "fi": "Meksikon peso",
+ "fr": "peso mexicain",
+ "gl": "Peso mexicano",
+ "he": "פסו מקסיקני",
+ "hr": "Meksički pezo",
+ "hu": "mexikói peso",
+ "ia": "Peso mexican",
+ "it": "peso messicano",
+ "ja": "メキシコ・ペソ",
+ "lt": "Meksikos pesas",
+ "nl": "Mexicaanse peso",
+ "pl": "Peso meksykańskie",
+ "pt": "peso mexicano",
+ "ro": "Peso mexican",
+ "ru": "мексиканское песо",
+ "sr": "мексички пезос",
+ "sv": "Mexikansk peso",
+ "ta": "மெக்சிகோ பெசோ",
+ "tr": "Meksika pesosu",
+ "uk": "мексиканський песо",
+ "vi": "Peso Mexico",
+ "zh": "墨西哥比索",
+ "cy": "peso (Mecsico)",
+ "et": "Mehhiko peeso"
+ },
+ "MXV": {
+ "en": "Mexican unidad de inversión",
+ "es": "Unidades de Inversión",
+ "de": "UNIDAD DE INVERSION",
+ "ja": "メキシコ投資単位"
+ },
+ "MYR": {
+ "ar": "رينغيت ماليزي",
+ "bg": "Малайзийски рингит",
+ "ca": "ringgit",
+ "cs": "Malajsijský ringgit",
+ "de": "Ringgit",
+ "el": "Ρινγκίτ",
+ "en": "Malaysian ringgit",
+ "eo": "malajzia ringito",
+ "es": "ringgit",
+ "eu": "Ringgit",
+ "fa": "رینگیت",
+ "fi": "Malesian ringgit",
+ "fr": "ringgit",
+ "hr": "Malezijski ringit",
+ "hu": "maláj ringgit",
+ "it": "ringgit malaysiano",
+ "ja": "リンギット",
+ "lt": "Malaizijos ringitas",
+ "nl": "Maleisische ringgit",
+ "pl": "Ringgit",
+ "pt": "ringgit malaio",
+ "ro": "Ringgit",
+ "ru": "малайзийский ринггит",
+ "sr": "малезијски рингит",
+ "sv": "Malaysisk ringgit",
+ "ta": "மலேசிய ரிங்கிட்",
+ "tr": "Ringgit",
+ "uk": "малайзійський ринґіт",
+ "vi": "Ringgit",
+ "zh": "马來西亚令吉",
+ "he": "רינגיט מלזי"
+ },
"MZN": {
- "fr": "Metical",
- "en": "Mozambican metical",
- "nl": "Mozambikaanse metical",
- "de": "Metical",
- "it": "Metical mozambicano",
- "hu": "Mozambiki metical",
- "es": "Metical mozambique\u00f1o"
- },
- "SCR": {
- "fr": "roupie seychelloise",
- "en": "Seychellois rupee",
- "nl": "Seychelse roepie",
- "de": "Seychellen-Rupie",
- "it": "Rupia delle Seychelles",
- "hu": "Seychelle-i r\u00fapia",
- "es": "rupia"
- },
- "ZAR": {
- "fr": "rand",
- "en": "South African rand",
- "nl": "Zuid-Afrikaanse rand",
- "de": "S\u00fcdafrikanischer Rand",
- "it": "Rand sudafricano",
- "hu": "D\u00e9l-afrikai rand",
- "es": "Rand sudafricano"
- },
- "NPR": {
- "fr": "Roupie n\u00e9palaise",
- "en": "Nepalese rupee",
- "nl": "Nepalese roepie",
- "de": "Nepalesische Rupie",
- "it": "Rupia nepalese",
- "hu": "nep\u00e1li r\u00fapia",
- "es": "Rupia nepal\u00ed"
- },
- "XSU": {
- "fr": "Sucre",
- "en": "SUCRE",
- "nl": "SUCRE",
- "es": "SUCRE",
- "de": "SUCRE"
- },
+ "ar": "متكال موزمبيقي",
+ "ca": "metical",
+ "cs": "Mosambický metical",
+ "da": "Metical",
+ "de": "Metical",
+ "el": "Μετικάλ",
+ "en": "Mozambican metical",
+ "eo": "mozambika metikalo",
+ "es": "Metical mozambiqueño",
+ "fa": "متیکال موزایکی",
+ "fi": "Mosambikin metical",
+ "fr": "Metical",
+ "gl": "Metical",
+ "hr": "Mozambijski metikal",
+ "hu": "mozambiki metical",
+ "it": "Metical mozambicano",
+ "ja": "メティカル",
+ "lt": "Metikalis",
+ "nl": "Mozambikaanse metical",
+ "pl": "Metical",
+ "pt": "Metical",
+ "ru": "мозамбикский метикал",
+ "sr": "мозамбички метикал",
+ "sv": "Moçambikisk Metical",
+ "tr": "Metical",
+ "uk": "Мозамбіцький метікал",
+ "zh": "莫三比克梅蒂卡爾",
+ "cy": "Metical Mosambic",
+ "he": "מטיקל מוזמביני"
+ },
+ "NAD": {
+ "ar": "دولار ناميبي",
+ "bg": "Намибийски долар",
+ "ca": "dòlar namibià",
+ "cs": "Namibijský dolar",
+ "da": "Namibisk dollar",
+ "de": "Namibia-Dollar",
+ "en": "Namibian dollar",
+ "eo": "namibia dolaro",
+ "es": "Dólar namibio",
+ "fa": "دلار نامیبیا",
+ "fi": "Namibian dollari",
+ "fr": "Dollar namibien",
+ "gl": "Dólar namibio",
+ "he": "דולר נמיבי",
+ "hr": "Namibijski dolar",
+ "hu": "namíbiai dollár",
+ "it": "Dollaro namibiano",
+ "ja": "ナミビア・ドル",
+ "lt": "Namibijos doleris",
+ "nl": "Namibische dollar",
+ "oc": "Dolar namibian",
+ "pl": "Dolar namibijski",
+ "pt": "Dólar da Namíbia",
+ "ru": "доллар Намибии",
+ "sr": "намибијски долар",
+ "sv": "Namibisk dollar",
+ "tr": "Namibya doları",
+ "uk": "Намібійський долар",
+ "zh": "納米比亞元"
+ },
"NGN": {
- "fr": "Naira",
- "en": "Nigerian naira",
- "nl": "Nigeriaanse naira",
- "de": "Naira",
- "it": "Naira nigeriana",
- "hu": "Nig\u00e9riai naira",
- "es": "Naira"
- },
- "CRC": {
- "fr": "col\u00f3n",
- "en": "Costa Rican col\u00f3n",
- "nl": "Costa Ricaanse colon",
- "de": "Costa-Rica-Col\u00f3n",
- "it": "Col\u00f3n costaricano",
- "hu": "Costa Rica-i col\u00f3n",
- "es": "Col\u00f3n"
- },
- "AED": {
- "fr": "Dirham des \u00c9mirats arabes unis",
- "en": "United Arab Emirates dirham",
- "nl": "VAE-Dirham",
- "de": "VAE-Dirham",
- "it": "Dirham degli Emirati Arabi Uniti",
- "hu": "emir\u00e1tusi dirham",
- "es": "D\u00edrham de los Emiratos \u00c1rabes Unidos"
- },
- "GBP": {
- "fr": "livre sterling",
- "en": "pound sterling",
- "nl": "pond sterling",
- "de": "Pfund Sterling",
- "it": "sterlina britannica",
- "hu": "font sterling",
- "es": "libra esterlina"
- },
- "LKR": {
- "fr": "roupie srilankaise",
- "en": "Sri Lankan rupee",
- "nl": "Sri Lankaanse roepie",
- "de": "Sri-Lanka-Rupie",
- "it": "Rupia singalese",
- "hu": "Sr\u00ed Lanka-i r\u00fapia",
- "es": "rupia"
- },
+ "ar": "نيرة نيجيرية",
+ "bg": "Нигерийска найра",
+ "ca": "naira",
+ "cs": "nigerijská naira",
+ "de": "Naira",
+ "el": "Νάιρα",
+ "en": "Nigerian naira",
+ "eo": "niĝeria najro",
+ "es": "naira",
+ "fa": "نایرا نیجریه",
+ "fi": "Nigerian naira",
+ "fr": "Naira",
+ "gl": "Naira",
+ "he": "נאירה",
+ "hr": "Nigerijska naira",
+ "hu": "nigériai naira",
+ "it": "Naira nigeriana",
+ "ja": "ナイラ",
+ "lt": "Naira",
+ "nl": "Nigeriaanse naira",
+ "pl": "Naira",
+ "pt": "Naira",
+ "ru": "нигерийская найра",
+ "sk": "Naira",
+ "sr": "нигеријска наира",
+ "sv": "Nigeriansk naira",
+ "tr": "Nijerya nairası",
+ "uk": "нігерійська найра",
+ "zh": "奈及利亞奈拉",
+ "oc": "Naira"
+ },
+ "NIO": {
+ "ar": "كوردبا نيكاراغوا",
+ "bg": "Никарагуанска кордоба",
+ "ca": "córdoba",
+ "cs": "Nikaragujská córdoba",
+ "de": "Córdoba Oro",
+ "el": "Κόρδοβα Νικαράγουας",
+ "en": "Nicaraguan córdoba",
+ "eo": "nikaragva kordovo",
+ "es": "córdoba",
+ "eu": "Córdoba",
+ "fa": "کوردوبا نیکاراگوئه",
+ "fi": "Nicaraguan córdoba",
+ "fr": "Córdoba",
+ "gl": "Córdoba",
+ "he": "קורדובה",
+ "hr": "Nikaragvanska kordoba",
+ "hu": "nicaraguai córdoba",
+ "it": "Córdoba nicaraguense",
+ "ja": "ニカラグア・コルドバ",
+ "lt": "Nikaragvos kordoba",
+ "nl": "Nicaraguaanse córdoba",
+ "pl": "Cordoba oro",
+ "pt": "Córdoba (moeda)",
+ "ro": "Córdoba",
+ "ru": "никарагуанская кордоба",
+ "sr": "никарагванска кордоба",
+ "sv": "Nicaraguansk córdoba",
+ "tr": "Kordoba",
+ "uk": "Нікарагуанська кордоба",
+ "zh": "尼加拉瓜科多巴",
+ "oc": "Córdoba (moneda)"
+ },
+ "NKD": {
+ "ar": "درام كراباخي",
+ "de": "Bergkarabach-Dram",
+ "en": "Nagorno-Karabakh dram",
+ "es": "dram de Artsaj",
+ "fa": "درام قرهباغ",
+ "fi": "Vuoristo-Karabahin dram",
+ "fr": "dram de l'Artsakh",
+ "gl": "Dram de Nagorno-Karabakh",
+ "hr": "Gorskokarabaški dram",
+ "hu": "hegyi-karabahi dram",
+ "it": "dram karabakho",
+ "lt": "Karabacho dramas",
+ "ru": "карабахский драм",
+ "sv": "Nagorno-Karabach dram",
+ "tr": "Karabağ dramı",
+ "uk": "карабаський драм",
+ "zh": "阿尔察赫德拉姆",
+ "ca": "dram d'Artsakh",
+ "ja": "ナゴルノ・カラバフ・ドラム",
+ "nl": "Nagorno-Karabakh dram"
+ },
+ "NOK": {
+ "ar": "كرونة نروجية",
+ "bg": "норвежка крона",
+ "ca": "corona noruega",
+ "cs": "Norská koruna",
+ "da": "Norske kroner",
+ "de": "norwegische Krone",
+ "el": "Κορόνα Νορβηγίας",
+ "en": "Norwegian krone",
+ "eo": "norvega krono",
+ "es": "corona noruega",
+ "et": "Norra kroon",
+ "eu": "Norvegiar koroa",
+ "fa": "کرون نروژ",
+ "fi": "Norjan kruunu",
+ "fr": "couronne norvégienne",
+ "gl": "Coroa norueguesa",
+ "he": "כתר נורווגי",
+ "hr": "Norveška kruna",
+ "hu": "norvég korona",
+ "it": "corona norvegese",
+ "ja": "ノルウェー・クローネ",
+ "lt": "Norvegijos krona",
+ "nl": "Noorse kroon",
+ "pl": "Korona norweska",
+ "pt": "coroa norueguesa",
+ "ro": "Coroană norvegiană",
+ "ru": "норвежская крона",
+ "sk": "Nórska koruna",
+ "sl": "Norveška krona",
+ "sr": "норвешка круна",
+ "sv": "norsk krona",
+ "ta": "நார்வே குரோனா",
+ "tr": "Norveç kronu",
+ "uk": "норвезька крона",
+ "vi": "Krone Na Uy",
+ "zh": "挪威克朗",
+ "cy": "krone Norwy",
+ "ia": "corona norvegian",
+ "oc": "corona norvegiana"
+ },
+ "NPR": {
+ "ar": "روبي نيبالي",
+ "bg": "Непалска рупия",
+ "ca": "rupia nepalesa",
+ "cs": "Nepálská rupie",
+ "da": "Nepalesiske rupee",
+ "de": "Nepalesische Rupie",
+ "el": "Ρουπία Νεπάλ",
+ "en": "Nepalese rupee",
+ "eo": "nepala rupio",
+ "es": "rupia nepalí",
+ "et": "Nepali ruupia",
+ "eu": "Errupia nepaldar",
+ "fa": "روپیه نپال",
+ "fi": "Nepalin rupia",
+ "fr": "Roupie népalaise",
+ "gl": "Rupia nepalesa",
+ "he": "רופי נפאלי",
+ "hr": "Nepalska rupija",
+ "hu": "nepáli rúpia",
+ "it": "Rupia nepalese",
+ "ja": "ネパール・ルピー",
+ "lt": "Nepalo rupija",
+ "nl": "Nepalese roepie",
+ "pl": "Rupia nepalska",
+ "pt": "Rupia nepalesa",
+ "ru": "непальская рупия",
+ "sr": "непалска рупија",
+ "sv": "Nepalesisk rupee",
+ "ta": "நேபாள ரூபாய்",
+ "tr": "Nepal rupisi",
+ "uk": "Непальська рупія",
+ "vi": "Rupee Nepal",
+ "zh": "尼泊尔卢比"
+ },
+ "NUD": {
+ "en": "Niue dollar",
+ "es": "Dólar de Niue",
+ "fa": "دلار نیوئه",
+ "fi": "Niuen dollari",
+ "ru": "доллар Ниуэ",
+ "zh": "纽埃元",
+ "sr": "нијујски долар"
+ },
+ "NZD": {
+ "ar": "دولار نيوزيلندي",
+ "bg": "Новозеландски долар",
+ "ca": "dòlar neozelandès",
+ "cs": "Novozélandský dolar",
+ "da": "Newzealandske dollar",
+ "de": "Neuseeland-Dollar",
+ "el": "Δολάριο Νέας Ζηλανδίας",
+ "en": "New Zealand dollar",
+ "eo": "nov-zelanda dolaro",
+ "es": "dólar neozelandés",
+ "eu": "Zeelandaberritar dolar",
+ "fa": "دلار نیوزیلند",
+ "fi": "Uuden-Seelannin dollari",
+ "fr": "dollar néo-zélandais",
+ "gl": "Dólar neozelandés",
+ "he": "דולר ניו זילנדי",
+ "hr": "Novozelandski dolar",
+ "hu": "új-zélandi dollár",
+ "it": "dollaro neozelandese",
+ "ja": "ニュージーランド・ドル",
+ "lt": "Naujosios Zelandijos doleris",
+ "nl": "Nieuw-Zeelandse dollar",
+ "pl": "Dolar nowozelandzki",
+ "pt": "dólar neozelandês",
+ "ro": "Dolar neozeelandez",
+ "ru": "новозеландский доллар",
+ "sk": "Novozélandský dolár",
+ "sr": "новозеландски долар",
+ "sv": "Nyzeeländsk dollar",
+ "tr": "Yeni Zelanda doları",
+ "uk": "новозеландський долар",
+ "vi": "Đô la New Zealand",
+ "zh": "紐西蘭元",
+ "et": "Uus-Meremaa dollar",
+ "oc": "Dolar neozelandés"
+ },
+ "OMR": {
+ "ar": "ريال عماني",
+ "bg": "Омански риял",
+ "ca": "rial omanita",
+ "cs": "Ománský rial",
+ "da": "Omansk rial",
+ "de": "Omanischer Rial",
+ "el": "Ριάλ του Ομάν",
+ "en": "Omani rial",
+ "eo": "omana rialo",
+ "es": "Rial omaní",
+ "fa": "ریال عمان",
+ "fi": "Omanin rial",
+ "fr": "Rial omanais",
+ "he": "ריאל עומאני",
+ "hr": "Omanski rijal",
+ "hu": "ománi riál",
+ "it": "Riyal dell'Oman",
+ "ja": "オマーン・リアル",
+ "lt": "Omano rialas",
+ "nl": "Omaanse rial",
+ "pl": "Rial omański",
+ "pt": "Rial omanense",
+ "ru": "оманский риал",
+ "sr": "омански ријал",
+ "sv": "Omansk rial",
+ "ta": "ஓமானி ரியால்",
+ "tr": "Umman riyali",
+ "uk": "Оманський ріал",
+ "zh": "阿曼里亞爾"
+ },
+ "PAB": {
+ "ar": "بالبوا بنمي",
+ "bg": "Панамска балбоа",
+ "ca": "balboa",
+ "cs": "Panamská balboa",
+ "de": "Panamaischer Balboa",
+ "el": "Μπαλμπόα Παναμά",
+ "en": "Panamanian balboa",
+ "eo": "panama balboo",
+ "es": "Balboa",
+ "eu": "Balboa",
+ "fa": "بالبوآ پاناما",
+ "fi": "Panaman balboa",
+ "fr": "Balboa",
+ "gl": "Balboa",
+ "he": "בלבואה",
+ "hr": "Panamska balboa",
+ "hu": "panamai balboa",
+ "it": "Balboa panamense",
+ "ja": "バルボア",
+ "lt": "Balboa",
+ "nl": "Panamese balboa",
+ "pl": "Balboa",
+ "pt": "Balboa",
+ "ru": "панамский бальбоа",
+ "sr": "панамска балбоа",
+ "sv": "Panamansk balboa",
+ "tr": "Panama balboası",
+ "uk": "Панамське бальбоа",
+ "zh": "巴拿馬巴波亞"
+ },
+ "PEN": {
+ "ar": "سول بيروفي جديد",
+ "ca": "sol",
+ "cs": "Peruánský sol",
+ "da": "Nuevo sol",
+ "de": "Nuevo Sol",
+ "el": "Νέο Σολ Περού",
+ "en": "Nuevo Sol",
+ "eo": "perua nova suno",
+ "es": "sol",
+ "eu": "Sol",
+ "fa": "سل جدید پرو",
+ "fi": "Perun nuevo sol",
+ "fr": "nouveau sol",
+ "gl": "Nuevo sol",
+ "he": "סול",
+ "hr": "Peruanski novi sol",
+ "hu": "perui új sol",
+ "it": "Nuevo Sol peruviano",
+ "ja": "ヌエボ・ソル",
+ "lt": "Naujasis solis",
+ "nl": "Peruviaanse sol",
+ "pl": "Sol",
+ "pt": "Sol novo",
+ "ru": "перуанский новый соль",
+ "sr": "перуански нови сол",
+ "sv": "Nuevo sol",
+ "tr": "Nuevo Sol",
+ "uk": "Новий соль",
+ "vi": "Sol Peru",
+ "zh": "秘魯新索爾",
+ "oc": "Nuevo Sol"
+ },
+ "PGK": {
+ "ar": "كينا بابوا غينيا الجديدة",
+ "bg": "Кина на Папуа Нова Гвинея",
+ "ca": "kina",
+ "cs": "Papuánská kina",
+ "da": "Kina",
+ "de": "Kina",
+ "el": "Κίνα Παπούα-Νέας Γουινέας",
+ "en": "kina",
+ "eo": "papuonovgvinea kinao",
+ "es": "Kina",
+ "fa": "کینای پاپوآ گینه نو",
+ "fi": "Papua-Uuden-Guinean kina",
+ "fr": "Kina",
+ "gl": "Kina",
+ "hr": "Papuanska kina",
+ "hu": "pápua új-guineai kina",
+ "it": "Kina papuana",
+ "ja": "キナ",
+ "lt": "Kina",
+ "nl": "Papoea-Nieuw-Guinese kina",
+ "pl": "Kina",
+ "pt": "Kina",
+ "ro": "Kina",
+ "ru": "Кина",
+ "sr": "папуанска кина",
+ "sv": "Papuansk Kina",
+ "tr": "Papua Yeni Gine kinası",
+ "uk": "Кіна",
+ "vi": "Kina Papua New Guinea",
+ "zh": "巴布亞紐幾內亞基那",
+ "he": "קינה"
+ },
+ "PHP": {
+ "ar": "بيسو فلبيني",
+ "bg": "Филипинско песо",
+ "ca": "peso filipí",
+ "cs": "Filipínské peso",
+ "de": "philippinischer Peso",
+ "el": "Πέσο Φιλιππίνων",
+ "en": "Philippine peso",
+ "eo": "filipina peso",
+ "es": "peso filipino",
+ "fa": "پزو فیلیپین",
+ "fi": "Filippiinien peso",
+ "fr": "peso philippin",
+ "he": "פסו פיליפיני",
+ "hr": "Filipinski pezo",
+ "hu": "Fülöp-szigeteki peso",
+ "it": "peso filippino",
+ "ja": "フィリピン・ペソ",
+ "lt": "Filipinų pesas",
+ "nl": "Filipijnse peso",
+ "pl": "Peso filipińskie",
+ "pt": "peso filipino",
+ "ru": "филиппинское песо",
+ "sk": "Filipínske peso",
+ "sr": "филипински пезо",
+ "sv": "Filippinsk peso",
+ "ta": "பிலிப்பைன் பெசோ",
+ "tr": "Filipinler pesosu",
+ "uk": "філіппінський песо",
+ "vi": "peso Philippines",
+ "zh": "菲律賓披索",
+ "oc": "Peso de las Filipinas"
+ },
"PKR": {
- "fr": "Roupie pakistanaise",
- "en": "Pakistani rupee",
- "nl": "Pakistaanse roepie",
- "de": "Pakistanische Rupie",
- "it": "Rupia pakistana",
- "hu": "pakiszt\u00e1ni r\u00fapia",
- "es": "Rupia pakistan\u00ed"
- },
- "HUF": {
- "fr": "Forint",
- "en": "Hungarian forint",
- "nl": "Hongaarse forint",
- "de": "Forint",
- "it": "Fiorino ungherese",
- "hu": "magyar forint",
- "es": "Forinto h\u00fangaro"
- },
- "SZL": {
- "fr": "Lilangeni",
- "en": "Swazi lilangeni",
- "nl": "Swazische lilangeni",
- "de": "Lilangeni",
- "it": "Lilangeni dello Swaziland",
- "hu": "Szv\u00e1zif\u00f6ldi lilangeni",
- "es": "lilangeni"
- },
- "LSL": {
- "fr": "Loti",
- "en": "Lesotho loti",
- "nl": "Lesothaanse loti",
- "de": "Lesothischer Loti",
- "it": "Loti lesothiano",
- "hu": "Lesoth\u00f3i loti",
- "es": "Loti"
- },
- "MNT": {
- "fr": "Tugrik",
- "en": "Mongolian t\u00f6gr\u00f6g",
- "nl": "Mongoolse tugrik",
- "de": "T\u00f6gr\u00f6g",
- "it": "Tugrik mongolo",
- "hu": "mongol tugrik",
- "es": "Tugrik mongol"
- },
- "AMD": {
- "fr": "Dram",
- "en": "Armenian dram",
- "nl": "Armeense dram",
- "de": "Armenischer Dram",
- "it": "Dram armeno",
- "hu": "\u00f6rm\u00e9ny dram",
- "es": "Dram armenio"
- },
- "UGX": {
- "fr": "shilling ougandais",
- "en": "Ugandan shilling",
- "nl": "Oegandese shilling",
- "de": "Uganda-Schilling",
- "it": "Scellino ugandese",
- "hu": "Ugandai shilling",
- "es": "chel\u00edn"
- },
+ "ar": "روبية باكستانية",
+ "bg": "Пакистанска рупия",
+ "ca": "rupia pakistanesa",
+ "cs": "Pákistánská rupie",
+ "da": "Pakistanske rupee",
+ "de": "pakistanische Rupie",
+ "el": "Πακιστανική ρουπία",
+ "en": "Pakistani rupee",
+ "eo": "pakistana rupio",
+ "es": "rupia pakistaní",
+ "eu": "Errupia pakistandar",
+ "fa": "روپیه پاکستان",
+ "fi": "Pakistanin rupia",
+ "fr": "roupie pakistanaise",
+ "hr": "Pakistanska rupija",
+ "hu": "pakisztáni rúpia",
+ "it": "rupia pakistana",
+ "ja": "パキスタン・ルピー",
+ "lt": "Pakistano rupija",
+ "nl": "Pakistaanse roepie",
+ "oc": "Ropia de Paquistan",
+ "pl": "rupia pakistańska",
+ "pt": "Rupia do Paquistão",
+ "ru": "пакистанская рупия",
+ "sr": "пакистанска рупија",
+ "sv": "Pakistansk rupee",
+ "ta": "பாக்கித்தானிய ரூபாய்",
+ "tr": "Pakistan rupisi",
+ "uk": "пакистанська рупія",
+ "vi": "Rupee Pakistan",
+ "zh": "巴基斯坦盧比",
+ "he": "רופי פקיסטני "
+ },
+ "PLN": {
+ "ar": "زلوتي بولندي",
+ "bg": "Полска злотаПолска злота",
+ "ca": "złoty",
+ "cs": "zlotý",
+ "da": "Zloty",
+ "de": "Złoty",
+ "el": "Ζλότι",
+ "en": "złoty",
+ "eo": "pola zloto",
+ "es": "złoty",
+ "et": "Poola zlott",
+ "eu": "Złoty",
+ "fa": "زلوتی",
+ "fi": "Puolan złoty",
+ "fr": "złoty",
+ "gl": "Złoty",
+ "he": "זלוטי",
+ "hr": "Poljski zlot",
+ "hu": "lengyel złoty",
+ "it": "złoty polacco",
+ "ja": "ズウォティ",
+ "lt": "Zlotas",
+ "nl": "Poolse złoty",
+ "pl": "złoty",
+ "pt": "złoty",
+ "ro": "Zlot polonez",
+ "ru": "польский злотый",
+ "sk": "Poľský zlotý",
+ "sr": "пољски злот",
+ "sv": "Złoty",
+ "ta": "ஸ்வாட்டெ",
+ "tr": "Złoty",
+ "uk": "злотий",
+ "vi": "Złoty Ba Lan",
+ "zh": "波蘭茲羅提",
+ "ia": "zloty polonese",
+ "oc": "złoty"
+ },
+ "PND": {
+ "en": "Pitcairn Islands dollar",
+ "fa": "دلار جزایر پیتکارین",
+ "fi": "Pitcairnin dollari",
+ "ru": "доллар Островов Питкэрн",
+ "ca": "dòlar de les illes Pitcairn",
+ "zh": "皮特凱恩群島元"
+ },
+ "PYG": {
+ "ar": "غواراني باراغواي",
+ "ca": "guaraní",
+ "cs": "paraguayský guaraní",
+ "de": "Paraguayischer Guaraní",
+ "el": "Γκουαρανί",
+ "en": "Paraguayan guaraní",
+ "eo": "paragvaja gvaranio",
+ "es": "guaraní",
+ "eu": "Guarani",
+ "fa": "گوارانی پاراگوئه",
+ "fi": "Paraguayn guaraní",
+ "fr": "Guaraní",
+ "gl": "Guaraní",
+ "hr": "Paragvajski gvarani",
+ "hu": "paraguayi guaraní",
+ "it": "guaraní paraguaiano",
+ "ja": "グアラニー",
+ "lt": "Gvaranis",
+ "nl": "Paraguayaanse guaraní",
+ "pl": "Guarani",
+ "pt": "Guarani",
+ "ru": "парагвайский гуарани",
+ "sk": "Guarani",
+ "sr": "парагвајски гварани",
+ "sv": "Guarani",
+ "tr": "Paraguay guaranísi",
+ "uk": "Парагвайський гуарані",
+ "zh": "巴拉圭瓜拉尼",
+ "oc": "Guaraní"
+ },
"QAR": {
- "fr": "Riyal qatarien",
- "en": "Qatari riyal",
- "nl": "Qatarese rial",
- "de": "Katar-Riyal",
- "it": "Riyal del Qatar",
- "hu": "katari ri\u00e1l",
- "es": "Riyal catar\u00ed"
- },
- "XDR": {
- "fr": "Droits de tirage sp\u00e9ciaux",
- "en": "Special drawing rights",
- "nl": "Speciale trekkingsrechten",
- "de": "Sonderziehungsrecht",
- "it": "Diritti speciali di prelievo",
- "hu": "SDR",
- "es": "Derechos Especiales de Giro"
- },
- "ITL": {
- "fr": "Lire italienne",
- "en": "Italian lira",
- "nl": "Italiaanse lire",
- "de": "Italienische Lira",
- "it": "lira italiana",
- "hu": "Olasz l\u00edra",
- "es": "Lira italiana"
- },
- "JMD": {
- "fr": "Dollar jama\u00efcain",
- "en": "Jamaican dollar",
- "nl": "Jamaicaanse dollar",
- "de": "Jamaika-Dollar",
- "it": "Dollaro giamaicano",
- "hu": "Jamaicai doll\u00e1r",
- "es": "D\u00f3lar jamaiquino"
- },
- "GEL": {
- "fr": "lari",
- "en": "Georgian lari",
- "nl": "Georgische lari",
- "de": "Georgischer Lari",
- "it": "Lari georgiano",
- "hu": "gr\u00faz lari",
- "es": "lari"
- },
- "SHP": {
- "fr": "Livre de Sainte-H\u00e9l\u00e8ne",
- "en": "Saint Helena pound",
- "nl": "Sint-Heleens pond",
- "de": "St.-Helena-Pfund",
- "it": "Sterlina di Sant'Elena",
- "hu": "Szent Ilona-i font",
- "es": "Libra de Santa Elena"
- },
- "AFN": {
- "fr": "Afghani",
- "en": "Afghan afghani",
- "nl": "Afghaanse afghani",
- "de": "Afghani",
- "it": "Afghani afgano",
- "hu": "afg\u00e1n afg\u00e1ni",
- "es": "Afgani afgano"
- },
- "MMK": {
- "fr": "Kyat",
- "en": "kyat",
- "nl": "Myanmarese kyat",
- "de": "Kyat",
- "it": "Kyat birmano",
- "hu": "mianmari kjap",
- "es": "Kyat birmano"
- },
- "CSK": {
- "fr": "couronne tch\u00e9coslovaque",
- "en": "Czechoslovak koruna",
- "nl": "Tsjecho-Slowaakse kroon",
- "de": "Tschechoslowakische Krone",
- "it": "Corona cecoslovacca",
- "hu": "csehszlov\u00e1k korona",
- "es": "Corona checoslovaca"
- },
- "KPW": {
- "fr": "Won nord-cor\u00e9en",
- "en": "North Korean won",
- "nl": "Noord-Koreaanse won",
- "de": "Nordkoreanischer Won",
- "it": "Won nordcoreano",
- "hu": "\u00e9szak-koreai von",
- "es": "W\u014fn norcoreano"
- },
- "TRY": {
- "fr": "Livre turque",
- "en": "Turkish lira",
- "nl": "Nieuwe Turkse lira",
- "de": "T\u00fcrkische Lira",
- "it": "Nuova lira turca",
- "hu": "t\u00f6r\u00f6k \u00faj l\u00edra",
- "es": "Lira turca"
- },
- "BDT": {
- "fr": "Taka",
- "en": "taka",
- "nl": "Bengalese taka",
- "de": "Taka",
- "it": "Taka bengalese",
- "hu": "bangladesi taka",
- "es": "Taka banglades\u00ed"
- },
- "GRD": {
- "fr": "Drachme moderne grecque",
- "en": "Greek drachma",
- "nl": "Drachme",
- "de": "Griechische Drachme",
- "it": "Dracma greca",
- "es": "Dracma griega moderna"
- },
- "YER": {
- "fr": "rial y\u00e9m\u00e9nite",
- "en": "Yemeni rial",
- "nl": "Jemenitische rial",
- "de": "Jemen-Rial",
- "it": "riyal yemenita",
- "hu": "Jemeni ri\u00e1l",
- "es": "rial yemen\u00ed"
- },
- "DDM": {
- "fr": "Mark est-allemand",
- "en": "East German mark",
- "nl": "Oost-Duitse mark",
- "de": "Mark",
- "it": "Marco della Repubblica Democratica Tedesca",
- "es": "Marco de la Rep\u00fablica Democr\u00e1tica Alemana"
- },
- "HTG": {
- "fr": "Gourde",
- "en": "Haitian gourde",
- "nl": "Ha\u00eftiaanse gourde",
- "de": "Gourde",
- "it": "Gourde haitiano",
- "hu": "haiti gourde",
- "es": "Gourde"
- },
- "XOF": {
- "fr": "Franc CFA",
- "en": "West African CFA franc",
- "de": "CFA-Franc BCEAO",
- "es": "Franco CFA de \u00c1frica Occidental"
- },
- "MGA": {
- "fr": "ariary",
- "en": "Malagasy ariary",
- "nl": "Malagassische ariary",
- "de": "Ariary",
- "it": "Ariary malgascio",
- "hu": "Madagaszk\u00e1ri ariary",
- "es": "ariary"
- },
- "PHP": {
- "fr": "peso philippin",
- "en": "Philippine peso",
- "nl": "Filipijnse peso",
- "de": "Philippinischer Peso",
- "it": "peso filippino",
- "hu": "F\u00fcl\u00f6p-szigeteki peso",
- "es": "peso"
- },
- "LRD": {
- "fr": "Dollar lib\u00e9rien",
- "en": "Liberian dollar",
- "nl": "Liberiaanse dollar",
- "de": "Liberianischer Dollar",
- "it": "Dollaro liberiano",
- "hu": "Lib\u00e9riai doll\u00e1r",
- "es": "D\u00f3lar liberiano"
- },
+ "ar": "ريال قطري",
+ "bg": "Катарски риал",
+ "ca": "riyal de Qatar",
+ "cs": "Katarský rijál",
+ "de": "Katar-Riyal",
+ "el": "Ριγιάλ του Κατάρ",
+ "en": "Qatari riyal",
+ "eo": "katara rialo",
+ "es": "riyal catarí",
+ "fa": "ریال قطر",
+ "fi": "Qatarin rial",
+ "fr": "Riyal qatarien",
+ "he": "ריאל קטרי",
+ "hr": "Katarski rijal",
+ "hu": "katari riál",
+ "it": "riyal del Qatar",
+ "ja": "カタール・リヤル",
+ "lt": "Kataro rialas",
+ "nl": "Qatarese rial",
+ "pl": "Rial Kataru",
+ "pt": "Rial catarense",
+ "ru": "катарский риал",
+ "sr": "катарски ријал",
+ "sv": "Qatarisk rial",
+ "ta": "கத்தாரி ரியால்",
+ "tr": "Katar riyali",
+ "uk": "Катарський ріал",
+ "vi": "Riyal Qatar",
+ "zh": "卡達里亞爾"
+ },
+ "RON": {
+ "ar": "ليو روماني",
+ "bg": "Румънска лея",
+ "ca": "leu romanès",
+ "cs": "rumunský lei",
+ "da": "Leu",
+ "de": "rumänischer Leu",
+ "el": "Λέι",
+ "en": "Romanian Leu",
+ "eo": "rumana leo",
+ "es": "Leu rumano",
+ "et": "Rumeenia leu",
+ "fa": "لئوی رومانی",
+ "fi": "Romanian leu",
+ "fr": "leu roumain",
+ "gl": "Leu romanés",
+ "he": "לֵיי רומני",
+ "hr": "Rumunjski lej",
+ "hu": "román lej",
+ "it": "leu romeno",
+ "ja": "ルーマニア・レウ",
+ "lt": "Naujoji Rumunijos lėja",
+ "nl": "Roemeense leu",
+ "oc": "Leu romanés",
+ "pl": "Lej rumuński",
+ "pt": "leu romeno",
+ "ro": "leu românesc",
+ "ru": "румынский лей",
+ "sk": "Nový rumunský lei",
+ "sl": "Romunski lej",
+ "sr": "румунски леј",
+ "sv": "Rumänsk leu",
+ "ta": "ரொமேனிய லியு",
+ "tr": "Rumen leyi",
+ "uk": "румунський лей",
+ "vi": "Leu România",
+ "zh": "罗马尼亚列伊",
+ "ia": "leu romanian"
+ },
+ "RSD": {
+ "ar": "دينار صربي",
+ "bg": "Сръбски динар",
+ "ca": "dinar serbi",
+ "cs": "Srbský dinár",
+ "da": "Serbiske dinarer",
+ "de": "serbischer Dinar",
+ "el": "Δηνάριο Σερβίας",
+ "en": "Serbian dinar",
+ "eo": "serba dinaro",
+ "es": "dinar serbio",
+ "et": "Serbia dinaar",
+ "eu": "Serbiar dinar",
+ "fa": "دینار صربی",
+ "fi": "Serbian dinaari",
+ "fr": "dinar serbe",
+ "gl": "Dinar serbio",
+ "he": "דינר סרבי",
+ "hr": "Srpski dinar",
+ "hu": "szerb dinár",
+ "it": "dinaro serbo",
+ "ja": "セルビア・ディナール",
+ "lt": "Serbijos dinaras",
+ "nl": "Servische dinar",
+ "pl": "Dinar serbski",
+ "pt": "dinar sérvio",
+ "ro": "Dinar sârbesc",
+ "ru": "сербский динар",
+ "sk": "Srbský dinár",
+ "sl": "Srbski dinar",
+ "sr": "српски динар",
+ "sv": "Serbisk dinar",
+ "ta": "செர்பிய தினார்",
+ "tr": "Sırp dinarı",
+ "uk": "Сербський динар",
+ "zh": "塞爾維亞第納爾",
+ "cy": "dinar (Serbia)",
+ "ia": "dinar serbe"
+ },
+ "RUB": {
+ "ar": "روبل روسي",
+ "bg": "Руска рубла",
+ "ca": "ruble rus",
+ "cs": "ruský rubl",
+ "cy": "Rŵbl Rwsiaidd",
+ "da": "russiske rubler",
+ "de": "russischer Rubel",
+ "el": "Ρούβλι Ρωσίας",
+ "en": "Russian ruble",
+ "eo": "rusa rublo",
+ "es": "rublo ruso",
+ "et": "Venemaa rubla",
+ "eu": "Errusiar errublo",
+ "fa": "روبل روسیه",
+ "fi": "Venäjän rupla",
+ "fr": "rouble russe",
+ "gl": "Rublo ruso",
+ "he": "רובל רוסי",
+ "hr": "Ruska rublja",
+ "hu": "orosz rubel",
+ "it": "rublo russo",
+ "ja": "ロシア・ルーブル",
+ "lt": "Rusijos rublis",
+ "nl": "Russische roebel",
+ "pl": "rubel rosyjski",
+ "pt": "rublo russo",
+ "ro": "Rublă rusă",
+ "ru": "российский рубль",
+ "sk": "Ruský rubeľ",
+ "sr": "руска рубља",
+ "sv": "rysk rubel",
+ "ta": "உருசிய ரூபிள்",
+ "tr": "Rus rublesi",
+ "uk": "російський рубль",
+ "vi": "Rúp Nga",
+ "zh": "俄罗斯卢布",
+ "ia": "rublo russe",
+ "sl": "ruski rubelj"
+ },
"RWF": {
- "fr": "franc rwandais",
- "en": "Rwandan franc",
- "nl": "Rwandese frank",
- "de": "Ruanda-Franc",
- "it": "Franco ruandese",
- "hu": "Ruandai frank",
- "es": "franco"
- },
- "NOK": {
- "fr": "Couronne norv\u00e9gienne",
- "en": "Norwegian krone",
- "nl": "Noorse kroon",
- "de": "Norwegische Krone",
- "it": "Corona norvegese",
- "hu": "norv\u00e9g korona",
- "es": "Corona noruega"
- },
- "MOP": {
- "fr": "Pataca",
- "en": "Macanese pataca",
- "nl": "Macause pataca",
- "de": "Macao-Pataca",
- "it": "Pataca di Macao",
- "hu": "Maka\u00f3i pataca",
- "es": "Pataca"
- },
+ "ar": "فرنك رواندي",
+ "bg": "Руандийски франк",
+ "ca": "franc ruandès",
+ "cs": "Rwandský frank",
+ "da": "Rwandisk franc",
+ "de": "Ruanda-Franc",
+ "el": "Φράγκο της Ρουάντα",
+ "en": "Rwandan franc",
+ "eo": "ruanda franko",
+ "es": "franco ruandés",
+ "et": "Rwanda frank",
+ "fa": "فرانک رواندا",
+ "fi": "Ruandan frangi",
+ "fr": "franc rwandais",
+ "gl": "Franco ruandés",
+ "he": "פרנק רואנדי",
+ "hr": "Ruandski franak",
+ "hu": "ruandai frank",
+ "it": "franco ruandese",
+ "ja": "ルワンダ・フラン",
+ "lt": "Ruandos frankas",
+ "nl": "Rwandese frank",
+ "pl": "frank rwandyjski",
+ "pt": "franco ruandês",
+ "ru": "руандийский франк",
+ "sr": "руандски франак",
+ "sv": "Rwandisk franc",
+ "tr": "Ruanda frangı",
+ "uk": "Руандійський франк",
+ "zh": "卢旺达法郎"
+ },
+ "SAR": {
+ "ar": "ريال سعودي",
+ "bg": "Саудитски риал",
+ "ca": "riyal saudita",
+ "cs": "Saúdský rijál",
+ "de": "Saudi-Rial",
+ "el": "Ριάλ Σαουδικής Αραβίας",
+ "en": "Saudi riyal",
+ "eo": "sauda rialo",
+ "es": "riyal saudí",
+ "et": "Saudi Araabia riaal",
+ "fa": "ریال سعودی",
+ "fi": "Saudi-Arabian rial",
+ "fr": "riyal saoudien",
+ "he": "ריאל סעודי",
+ "hr": "Saudijski rijal",
+ "hu": "szaúdi riál",
+ "it": "riyal saudita",
+ "ja": "サウジアラビア・リヤル",
+ "lt": "Saudo Arabijos rialas",
+ "nl": "Saoedi-Arabische riyal",
+ "pl": "Rial saudyjski",
+ "pt": "Riyal",
+ "ro": "Rial saudit",
+ "ru": "саудовский риял",
+ "sr": "саудијски ријал",
+ "sv": "Saudiarabisk rial",
+ "ta": "சவூதி ரியால்",
+ "tr": "Suudi Arabistan riyali",
+ "uk": "саудівський ріал",
+ "vi": "Riyal Ả Rập Xê Út",
+ "zh": "沙特阿拉伯里亚尔",
+ "oc": "rial saudian"
+ },
+ "SBD": {
+ "ar": "دولار جزر سليمان",
+ "bg": "Соломоновски долар",
+ "ca": "dòlar de Salomó",
+ "cs": "Dolar Šalomounových ostrovů",
+ "da": "Salomondollar",
+ "de": "Salomonen-Dollar",
+ "el": "Δολάριο Νήσων Σολομώντα",
+ "en": "Solomon Islands dollar",
+ "eo": "salomona dolaro",
+ "es": "dólar de las Islas Salomón",
+ "fa": "دلار جزایر سلیمان",
+ "fi": "Salomonsaarten dollari",
+ "fr": "dollar des îles Salomon",
+ "gl": "Dólar das Illas Salomón",
+ "he": "דולר איי שלמה",
+ "hr": "Salomonskootočni dolar",
+ "hu": "Salamon-szigeteki dollár",
+ "it": "dollaro delle Salomone",
+ "ja": "ソロモン諸島ドル",
+ "lt": "Saliamono salų doleris",
+ "nl": "Salomon-dollar",
+ "pl": "Dolar Wysp Salomona",
+ "pt": "Dólar das Ilhas Salomão",
+ "ro": "Dolar din Insulele Solomon",
+ "ru": "доллар Соломоновых Островов",
+ "sr": "соломонски долар",
+ "sv": "Salomondollar",
+ "tr": "Solomon Adaları doları",
+ "uk": "Долар Соломонових островів",
+ "zh": "所罗门群岛元",
+ "oc": "dolar de las Illas Salamon"
+ },
+ "SCR": {
+ "ar": "روبية سيشلية",
+ "bg": "Сейшелска рупия",
+ "ca": "rupia de les Seychelles",
+ "cs": "Seychelská rupie",
+ "da": "Seychellisk rupee",
+ "de": "Seychellen-Rupie",
+ "el": "Ρουπία Σεϋχελλών",
+ "en": "Seychellois rupee",
+ "eo": "sejŝela rupio",
+ "es": "rupia seychelense",
+ "et": "Seišelli ruupia",
+ "eu": "Errupia seychelletar",
+ "fa": "روپیه سیشل",
+ "fi": "Seychellien rupia",
+ "fr": "roupie seychelloise",
+ "hr": "Sejšelska rupija",
+ "hu": "seychelle-i rúpia",
+ "it": "rupia delle Seychelles",
+ "ja": "セーシェル・ルピー",
+ "lt": "Seišelių rupija",
+ "nl": "Seychelse roepie",
+ "pl": "Rupia seszelska",
+ "pt": "rupia das Seicheles",
+ "ru": "сейшельская рупия",
+ "sr": "сејшелска рупија",
+ "sv": "Seychellisk rupee",
+ "tr": "Seyşeller rupisi",
+ "uk": "Сейшельська рупія",
+ "zh": "塞席爾盧比"
+ },
+ "SDG": {
+ "ar": "جنيه سوداني",
+ "ca": "lliura sudanesa",
+ "cs": "Súdánská libra",
+ "de": "sudanesisches Pfund",
+ "el": "Λίρα του Σουδάν",
+ "en": "Sudanese pound",
+ "eo": "sudana pundo",
+ "es": "libra sudanesa",
+ "fa": "پوند سودان",
+ "fi": "Sudanin punta",
+ "fr": "livre soudanaise",
+ "hr": "Sudanska funta",
+ "hu": "szudáni font",
+ "it": "sterlina sudanese",
+ "ja": "スーダン・ポンド",
+ "lt": "Sudano svaras",
+ "nl": "Soedanees pond",
+ "pl": "Funt sudański",
+ "pt": "Libra sudanesa",
+ "ro": "Liră sudaneză",
+ "ru": "суданский фунт",
+ "sr": "суданска фунта",
+ "sv": "Sudanesiskt pund",
+ "tr": "Sudan sterlini",
+ "uk": "Суданський фунт",
+ "zh": "蘇丹鎊",
+ "bg": "Суданска лира",
+ "cy": "punt Swdan",
+ "he": "לירה סודאנית"
+ },
+ "SEK": {
+ "ar": "كرونة سويدية",
+ "bg": "Шведска крона",
+ "ca": "corona sueca",
+ "cs": "Švédská koruna",
+ "da": "Svenske kronor",
+ "de": "schwedische Krone",
+ "el": "Κορόνα Σουηδίας",
+ "en": "Swedish krona",
+ "eo": "sveda krono",
+ "es": "corona sueca",
+ "et": "Rootsi kroon",
+ "eu": "Suediar koroa",
+ "fa": "کرون سوئد",
+ "fi": "Ruotsin kruunu",
+ "fr": "couronne suédoise",
+ "gl": "Coroa sueca",
+ "he": "קרונה שוודית",
+ "hr": "Švedska kruna",
+ "hu": "svéd korona",
+ "it": "corona svedese",
+ "ja": "スウェーデン・クローナ",
+ "lt": "Švedijos krona",
+ "nl": "Zweedse kroon",
+ "pl": "Korona szwedzka",
+ "pt": "coroa sueca",
+ "ro": "Coroană suedeză",
+ "ru": "шведская крона",
+ "sk": "Švédska koruna",
+ "sl": "Švedska krona",
+ "sr": "шведска круна",
+ "sv": "svensk krona",
+ "ta": "சுவீடிய குரோனா",
+ "tr": "İsveç kronu",
+ "uk": "шведська крона",
+ "vi": "Krona Thụy Điển",
+ "zh": "瑞典克朗",
+ "cy": "krona",
+ "oc": "Corona"
+ },
+ "SGD": {
+ "ar": "دولار سنغافوري",
+ "bg": "Сингапурски долар",
+ "ca": "dòlar de Singapur",
+ "cs": "Singapurský dolar",
+ "da": "Singaporeanske dollar",
+ "de": "Singapur-Dollar",
+ "el": "Δολάριο Σιγκαπούρης",
+ "en": "Singapore dollar",
+ "eo": "singapura dolaro",
+ "es": "dólar de Singapur",
+ "eu": "Dolar singapurtar",
+ "fa": "دلار سنگاپور",
+ "fi": "Singaporen dollari",
+ "fr": "dollar de Singapour",
+ "gl": "Dólar de Singapur",
+ "he": "דולר סינגפורי",
+ "hr": "Singapurski dolar",
+ "hu": "szingapúri dollár",
+ "it": "dollaro di Singapore",
+ "ja": "シンガポールドル",
+ "lt": "Singapūro doleris",
+ "nl": "Singaporese dollar",
+ "pl": "Dolar singapurski",
+ "pt": "dólar de Singapura",
+ "ru": "сингапурский доллар",
+ "sr": "сингапурски долар",
+ "sv": "Singaporiansk dollar",
+ "ta": "சிங்கப்பூர் வெள்ளி",
+ "tr": "Singapur doları",
+ "uk": "сінгапурський долар",
+ "vi": "Đô la Singapore",
+ "zh": "新加坡元",
+ "oc": "Dolar de Singapor"
+ },
+ "SLL": {
+ "ar": "ليون سيراليوني",
+ "bg": "Леоне на Сиера Леоне",
+ "ca": "leone",
+ "cs": "sierraleonský leone",
+ "de": "Sierra-leonischer Leone",
+ "el": "Λεόνε της Σιέρα Λεόνε",
+ "en": "Sierra Leonean leone",
+ "eo": "sieraleona leono",
+ "es": "leone",
+ "fa": "لئون سیرالئون",
+ "fi": "Sierra Leonen leone",
+ "fr": "leone",
+ "gl": "Leone",
+ "he": "ליאון",
+ "hr": "Sijeraleonski leone",
+ "hu": "Sierra Leone-i leone",
+ "it": "leone sierraleonese",
+ "ja": "レオン (通貨)",
+ "lt": "Leonė",
+ "nl": "Sierra Leoonse leone",
+ "pl": "Leone",
+ "pt": "leone",
+ "ro": "Leone",
+ "ru": "леоне",
+ "sr": "сијералеонски леоне",
+ "sv": "Sierraleonsk Leone",
+ "tr": "Sierra Leone leonesi",
+ "uk": "Леоне",
+ "zh": "塞拉利昂利昂",
+ "oc": "Leone"
+ },
+ "SOS": {
+ "ar": "شلن صومالي",
+ "bg": "Сомалийски шилинг",
+ "ca": "xíling somali",
+ "cs": "Somálský šilink",
+ "da": "Somalisk shilling",
+ "de": "Somalia-Schilling",
+ "en": "Somali shilling",
+ "eo": "somalia ŝilingo",
+ "es": "chelín somalí",
+ "fa": "شیلینگ سومالی",
+ "fi": "Somalian šillinki",
+ "fr": "shilling somalien",
+ "he": "שילינג סומלי",
+ "hr": "Somalijski šiling",
+ "hu": "szomáliai shilling",
+ "it": "scellino somalo",
+ "ja": "ソマリア・シリング",
+ "lt": "Somalio šilingas",
+ "nl": "Somalische shilling",
+ "pl": "Szyling somalijski",
+ "pt": "xelim somaliano",
+ "ru": "сомалийский шиллинг",
+ "sr": "сомалијски шилинг",
+ "sv": "Somalisk shilling",
+ "tr": "Somali şilini",
+ "uk": "сомалійський шилінг",
+ "zh": "索馬利亞先令",
+ "el": "Σελίνι της Σομαλίας"
+ },
+ "SRD": {
+ "ar": "دولار سورينامي",
+ "bg": "Суринамски долар",
+ "ca": "dòlar de Surinam",
+ "cs": "Surinamský dolar",
+ "de": "Suriname-Dollar",
+ "el": "Δολάριο Σουρινάμ",
+ "en": "Surinamese dollar",
+ "eo": "surinama dolaro",
+ "es": "Dólar surinamés",
+ "eu": "Dolar surinamdar",
+ "fa": "دلار سورینام",
+ "fi": "Surinamen dollari",
+ "fr": "Dollar du Surinam",
+ "gl": "Dólar surinamés",
+ "hr": "Surinamski dolar",
+ "hu": "suriname-i dollár",
+ "it": "Dollaro surinamese",
+ "ja": "スリナム・ドル",
+ "lt": "Surinamo doleris",
+ "nl": "Surinaamse dollar",
+ "pl": "Dolar surinamski",
+ "pt": "Dólar do Suriname",
+ "ru": "суринамский доллар",
+ "sr": "суринамски долар",
+ "sv": "Surinamesisk dollar",
+ "tr": "Surinam doları",
+ "uk": "Суринамський долар",
+ "zh": "蘇利南元"
+ },
"SSP": {
- "fr": "Livre sud-soudanaise",
- "en": "South Sudanese pound",
- "nl": "Zuid-Soedanees pond",
- "de": "S\u00fcdsudanesisches Pfund",
- "it": "Sterlina sudsudanese",
- "hu": "D\u00e9l-szud\u00e1ni font",
- "es": "Libra sursudanesa"
- },
- "INR": {
- "fr": "Roupie indienne",
- "en": "Indian rupee",
- "nl": "Indiase roepie",
- "de": "Indische Rupie",
- "it": "rupia indiana",
- "hu": "Indiai r\u00fapia",
- "es": "Rupia india"
- },
- "MXN": {
- "fr": "peso mexicain",
- "en": "Mexican peso",
- "nl": "Mexicaanse peso",
- "de": "Mexikanischer Peso",
- "it": "Peso messicano",
- "hu": "mexik\u00f3i peso",
- "es": "peso"
- },
- "CZK": {
- "fr": "Couronne tch\u00e8que",
- "en": "Czech koruna",
- "nl": "Tsjechische kroon",
- "de": "Tschechische Krone",
- "it": "Corona ceca",
- "hu": "cseh korona",
- "es": "Corona checa"
- },
+ "ar": "جنيه جنوب سوداني",
+ "bg": "Южносудански паунд",
+ "ca": "lliura sud-sudanesa",
+ "cs": "Jihosúdánská libra",
+ "de": "südsudanesisches Pfund",
+ "en": "South Sudanese pound",
+ "es": "libra sursudanesa",
+ "et": "Lõuna-Sudaani nael",
+ "fa": "پوند سودان جنوبی",
+ "fi": "Etelä-Sudanin punta",
+ "fr": "livre sud-soudanaise",
+ "gl": "Libra sursudanesa",
+ "he": "לירה דרום סודאנית",
+ "hr": "Južnosudanska funta",
+ "hu": "dél-szudáni font",
+ "it": "sterlina sudsudanese",
+ "ja": "南スーダン・ポンド",
+ "lt": "Pietų Sudano svaras",
+ "nl": "Zuid-Soedanees pond",
+ "pl": "Funt południowosudański",
+ "pt": "libra sul-sudanesa",
+ "ro": "Liră sud-sudaneză",
+ "ru": "южносуданский фунт",
+ "sk": "Juhosudánska libra",
+ "sr": "јужносуданска фунта",
+ "sv": "Sydsudanesiskt pund",
+ "uk": "Південносуданський фунт",
+ "vi": "Bảng Nam Sudan",
+ "zh": "南蘇丹鎊",
+ "eo": "sud-sudana pundo",
+ "oc": "liura sodanesa"
+ },
+ "STN": {
+ "ar": "دوبرا ساو تومي وبرينسيب",
+ "ca": "dobra",
+ "cs": "Svatotomášská dobra",
+ "da": "Dobra",
+ "de": "São-toméischer Dobra",
+ "el": "Ντόμπρα",
+ "en": "São Tomé and Príncipe dobra",
+ "eo": "saotomea dobro",
+ "es": "dobra santotomense",
+ "fa": "دبرای سائوتومه و پرینسیپ",
+ "fi": "São Tomén ja Príncipen dobra",
+ "fr": "dobra",
+ "gl": "Dobra",
+ "hr": "svetotomska dobra",
+ "hu": "São Tomé és Príncipe-i dobra",
+ "it": "dobra di São Tomé e Príncipe",
+ "ja": "ドブラ",
+ "lt": "Dobra",
+ "nl": "Santomese dobra",
+ "pl": "Dobra",
+ "pt": "dobra",
+ "ro": "Dobra",
+ "ru": "Добра Сан-Томе и Принсипи",
+ "sk": "Dobra",
+ "sr": "саотомска добра",
+ "sv": "Saotomeansk Dobra",
+ "tr": "São Tomé ve Príncipe dobrası",
+ "uk": "Добра Сан-Томе і Принсіпі",
+ "zh": "圣多美和普林西比多布拉",
+ "he": "דוברה",
+ "oc": "Dobra"
+ },
+ "SYP": {
+ "ar": "ليرة سورية",
+ "bg": "Сирийска лира",
+ "ca": "lliura siriana",
+ "cs": "Syrská libra",
+ "de": "syrische Lira",
+ "el": "Λίρα Συρίας",
+ "en": "Syrian pound",
+ "eo": "siria pundo",
+ "es": "Dolar sirio",
+ "fa": "لیره سوریه",
+ "fi": "Syyrian punta",
+ "fr": "livre syrienne",
+ "he": "לירה סורית",
+ "hr": "Sirijska funta",
+ "hu": "szír font",
+ "it": "lira siriana",
+ "ja": "シリア・ポンド",
+ "lt": "Sirijos svaras",
+ "nl": "Syrisch pond",
+ "pl": "Funt syryjski",
+ "pt": "libra síria",
+ "ru": "сирийский фунт",
+ "sl": "Sirski funt",
+ "sr": "сиријска фунта",
+ "sv": "Syriskt pund",
+ "tr": "Suriye lirası",
+ "uk": "Сирійський фунт",
+ "zh": "敘利亞鎊"
+ },
+ "SZL": {
+ "ar": "ليلانغيني سوازيلندي",
+ "ca": "lilangeni",
+ "cs": "Svazijský lilangeni",
+ "da": "Lilangeni",
+ "de": "Lilangeni",
+ "el": "Λιλανγκένι",
+ "en": "lilangeni",
+ "eo": "svazilanda lilangenio",
+ "es": "lilangeni",
+ "fa": "لیلانگنی سوازیلند",
+ "fi": "Lilangeni",
+ "fr": "lilangeni",
+ "gl": "Lilangeni",
+ "he": "לילנגני",
+ "hr": "Svazijski lilangeni",
+ "hu": "szváziföldi lilangeni",
+ "it": "lilangeni dell'eSwatini",
+ "ja": "リランゲニ",
+ "lt": "Lilangenis",
+ "nl": "Swazische lilangeni",
+ "pl": "Lilangeni",
+ "pt": "Lilangeni suázi",
+ "ru": "Свазилендский лилангени",
+ "sr": "свазилендски лилангени",
+ "sv": "Swazisk lilangeni",
+ "tr": "Lilangeni",
+ "uk": "Ліланджені",
+ "vi": "Lilangeni Swaziland",
+ "zh": "史瓦濟蘭里蘭吉尼",
+ "oc": "Lilangeni"
+ },
+ "THB": {
+ "ar": "بات تايلاندي",
+ "bg": "Тайландски бат",
+ "ca": "Baht",
+ "cs": "Thajský baht",
+ "cy": "Baht",
+ "da": "Thailandske baht",
+ "de": "Baht",
+ "el": "Μπατ",
+ "en": "baht",
+ "eo": "tajlanda bahto",
+ "es": "baht tailandés",
+ "et": "Baat",
+ "eu": "Thailandiar baht",
+ "fa": "بات",
+ "fi": "Baht",
+ "fr": "baht",
+ "gl": "Baht",
+ "he": "באט",
+ "hr": "Tajlandski baht",
+ "hu": "thai bát",
+ "it": "baht thailandese",
+ "ja": "バーツ",
+ "lt": "Tailando batas",
+ "nl": "Thaise baht",
+ "pl": "bat",
+ "pt": "baht",
+ "ru": "тайский бат",
+ "sk": "Thajský baht",
+ "sr": "тајландски бат",
+ "sv": "Baht",
+ "ta": "தாய்லாந்தின் பாட்",
+ "tr": "Baht",
+ "uk": "бат",
+ "vi": "Baht",
+ "zh": "泰銖"
+ },
"TJS": {
- "fr": "Somoni",
- "en": "Tajikistani somoni",
- "nl": "Tadzjiekse somoni",
- "de": "Somoni",
- "it": "Somoni tagico",
- "hu": "t\u00e1dzsik szomoni",
- "es": "Somoni tayiko"
- },
- "TJR": {
- "en": "Tajikistani ruble",
- "es": "Rublo tayiko"
- },
- "BTN": {
- "fr": "ngultrum",
- "en": "Bhutanese ngultrum",
- "nl": "Bhutaanse ngultrum",
- "de": "Ngultrum",
- "it": "Ngultrum del Bhutan",
- "hu": "bhut\u00e1ni ngultrum",
- "es": "Ngultrum butan\u00e9s"
- },
- "KMF": {
- "fr": "Franc comorien",
- "en": "Comorian franc",
- "nl": "Comorese frank",
- "de": "Komoren-Franc",
- "it": "Franco delle Comore",
- "hu": "Comore-i frank",
- "es": "Franco comorano"
- },
+ "ar": "ساماني طاجيكي",
+ "bg": "Таджикистански сомони",
+ "ca": "somoni",
+ "cs": "Tádžický somoni",
+ "cy": "Somoni",
+ "da": "Somoni",
+ "de": "Somoni",
+ "el": "Σομόνι",
+ "en": "Tajikistani somoni",
+ "eo": "taĝika somonio",
+ "es": "somoni tayiko",
+ "et": "Tadžikistani somoni",
+ "fa": "سامانی",
+ "fi": "Tadžikistanin somoni",
+ "fr": "somoni",
+ "gl": "somoni",
+ "hr": "Tadžikistanski somoni",
+ "hu": "tádzsik szomoni",
+ "it": "somoni tagico",
+ "ja": "ソモニ",
+ "lt": "Somonis",
+ "nl": "Tadzjiekse somoni",
+ "pl": "Somoni",
+ "pt": "Somoni",
+ "ro": "Somoni tadjic",
+ "ru": "таджикский сомони",
+ "sr": "таџикистански сомони",
+ "sv": "Tadzjikistansk somoni",
+ "tr": "Somoni",
+ "uk": "Таджицький сомоні",
+ "zh": "塔吉克索莫尼",
+ "he": "סומוני טג'קיסטני"
+ },
+ "TLD": {
+ "ar": "عملات سنتافو تيمورية شرقية",
+ "cs": "Východotimorské centavové mince",
+ "de": "Münzen Osttimors",
+ "en": "East Timor centavo coins",
+ "es": "centavo de dólar de Timor Oriental",
+ "fa": "سکه کنتاووی تیمور خاوری",
+ "he": "סנטאבו מזרח טימורי",
+ "hr": "Istočnotimorski sentavo",
+ "hu": "kelet-timori centavoérmék",
+ "it": "Centavo est timorense",
+ "ja": "東ティモール・センターボ",
+ "pt": "moedas de centavo do Timor-Leste",
+ "ru": "тиморское сентаво",
+ "sk": "Východotimorské obehové mince",
+ "uk": "Східнотиморське сентаво",
+ "vi": "Centavo",
+ "zh": "东帝汶分币"
+ },
"TMT": {
- "fr": "Manat turkm\u00e8ne",
- "en": "Turkmenistan manat",
- "nl": "Turkmeense manat",
- "de": "Turkmenistan-Manat",
- "it": "Manat turkmeno",
- "hu": "T\u00fcrkm\u00e9n manat",
- "es": "Manat turkmeno"
- },
- "MUR": {
- "fr": "Roupie mauricienne",
- "en": "Mauritian rupee",
- "nl": "Mauritiaanse roepie",
- "de": "Mauritius-Rupie",
- "it": "Rupia mauriziana",
- "hu": "Mauritiusi r\u00fapia",
- "es": "Rupia de Mauricio"
- },
- "IDR": {
- "fr": "Roupie indon\u00e9sienne",
- "en": "Indonesian Rupiah",
- "nl": "Indonesische roepia",
- "de": "Indonesische Rupiah",
- "it": "Rupia indonesiana",
- "hu": "indon\u00e9z r\u00fapia",
- "es": "Rupia indonesia"
- },
- "HNL": {
- "fr": "Lempira",
- "en": "Honduran lempira",
- "nl": "Hondurese lempira",
- "de": "Lempira",
- "it": "Lempira honduregna",
- "hu": "hondurasi lempira",
- "es": "lempira"
- },
- "ETB": {
- "fr": "Birr",
- "en": "Ethiopian birr",
- "nl": "Ethiopische birr",
- "de": "\u00c4thiopischer Birr",
- "it": "Birr etiope",
- "hu": "eti\u00f3p birr",
- "es": "Birr et\u00edope"
- },
- "FJD": {
- "fr": "dollar de Fidji",
- "en": "Fijian dollar",
- "nl": "Fiji-dollar",
- "de": "Fidschi-Dollar",
- "it": "Dollaro delle Figi",
- "hu": "Fidzsi doll\u00e1r",
- "es": "d\u00f3lar"
- },
- "ISK": {
- "fr": "Couronne islandaise",
- "en": "Icelandic kr\u00f3na",
- "nl": "IJslandse kroon",
- "de": "Isl\u00e4ndische Krone",
- "it": "Corona islandese",
- "hu": "izlandi korona",
- "es": "corona islandesa"
- },
- "PEN": {
- "fr": "nouveau sol",
- "en": "Peruvian nuevo sol",
- "nl": "Peruviaanse sol",
- "de": "Nuevo Sol",
- "it": "nuevo sol peruviano",
- "hu": "perui \u00faj sol",
- "es": "nuevo sol"
- },
- "MKD": {
- "fr": "Dinar mac\u00e9donien",
- "en": "Macedonian denar",
- "nl": "Macedonische denar",
- "de": "Mazedonischer Denar",
- "it": "Denaro macedone",
- "hu": "maced\u00f3n d\u00e9n\u00e1r",
- "es": "Denar macedonio"
- },
- "ILS": {
- "fr": "Shekel",
- "en": "Israeli new shekel",
- "nl": "Isra\u00eblische sjekel",
- "de": "Schekel",
- "it": "nuovo siclo israeliano",
- "hu": "izraeli \u00faj s\u00e9kel",
- "es": "Nuevo sh\u00e9quel"
- },
- "DOP": {
- "fr": "Peso dominicain",
- "en": "Dominican peso",
- "nl": "Dominicaanse peso",
- "de": "Dominikanischer Peso",
- "it": "Peso dominicano",
- "hu": "Dominikai peso",
- "es": "peso"
- },
- "AZN": {
- "fr": "Manat azerba\u00efdjanais",
- "en": "Azerbaijani manat",
- "nl": "Azerbeidzjaanse manat",
- "de": "Aserbaidschan-Manat",
- "it": "Manat azero",
- "hu": "Azeri manat",
- "es": "Manat azerbaiyano"
- },
- "MDL": {
- "fr": "Leu moldave",
- "en": "Moldovan leu",
- "nl": "Moldavische leu",
- "de": "Moldauischer Leu",
- "it": "Leu moldavo",
- "hu": "moldov\u00e1n lej",
- "es": "Leu moldavo"
- },
- "BSD": {
- "fr": "Dollar baham\u00e9en",
- "en": "Bahamian dollar",
- "nl": "Bahamaanse dollar",
- "de": "Bahama-Dollar",
- "it": "Dollaro delle Bahamas",
- "hu": "bahamai doll\u00e1r",
- "es": "D\u00f3lar bahame\u00f1o"
- },
- "SEK": {
- "fr": "Couronne su\u00e9doise",
- "en": "Swedish krona",
- "nl": "Zweedse kroon",
- "de": "Schwedische Krone",
- "it": "Corona svedese",
- "hu": "Sv\u00e9d korona",
- "es": "Corona sueca"
- },
- "MVR": {
- "fr": "Rufiyaa",
- "en": "Maldivian rufiyaa",
- "nl": "Maldivische rufiyaa",
- "de": "Rufiyaa",
- "it": "Rufiyaa delle Maldive",
- "hu": "Mald\u00edv-szigeteki r\u00fafia",
- "es": "Rupia de Maldivas"
- },
- "FRF": {
- "fr": "Franc fran\u00e7ais",
- "en": "French franc",
- "nl": "Franse frank",
- "de": "Franz\u00f6sischer Franc",
- "it": "Franco francese",
- "hu": "Francia frank",
- "es": "Franco franc\u00e9s"
- },
- "SRD": {
- "fr": "Dollar de Surinam",
- "en": "Surinamese dollar",
- "nl": "Surinaamse dollar",
- "de": "Suriname-Dollar",
- "it": "Dollaro surinamese",
- "hu": "suriname-i doll\u00e1r",
- "es": "D\u00f3lar surinam\u00e9s"
- },
- "CUP": {
- "fr": "peso cubain",
- "en": "Cuban peso",
- "nl": "Cubaanse peso",
- "de": "Kubanischer Peso",
- "it": "peso cubano",
- "hu": "kubai peso",
- "es": "peso"
- },
- "BBD": {
- "fr": "dollar barbadien",
- "en": "Barbadian dollar",
- "nl": "Barbadiaanse dollar",
- "de": "Barbados-Dollar",
- "it": "Dollaro di Barbados",
- "hu": "barbadosi doll\u00e1r",
- "es": "D\u00f3lar de Barbados"
- },
- "KRW": {
- "fr": "Won sud-cor\u00e9en",
- "en": "South Korean won",
- "nl": "Zuid-Koreaanse won",
- "de": "S\u00fcdkoreanischer Won",
- "it": "Won sudcoreano",
- "hu": "D\u00e9l-koreai von",
- "es": "W\u014fn surcoreano"
- },
- "GMD": {
- "fr": "Dalasi",
- "en": "Gambian dalasi",
- "nl": "Gambiaanse dalasi",
- "de": "Dalasi",
- "it": "Dalasi gambese",
- "hu": "Gambiai dalasi",
- "es": "Dalasi"
- },
- "VEF": {
- "fr": "Bol\u00edvar v\u00e9n\u00e9zu\u00e9lien",
- "en": "Venezuelan bol\u00edvar",
- "nl": "Venezolaanse bol\u00edvar",
- "de": "Venezolanischer Bol\u00edvar",
- "it": "Bol\u00edvar venezuelano",
- "hu": "venezuelai bol\u00edvar",
- "es": "Bol\u00edvar"
- },
- "GTQ": {
- "fr": "Quetzal",
- "en": "Guatemalan quetzal",
- "nl": "Guatemalteekse quetzal",
- "de": "Guatemaltekischer Quetzal",
- "it": "Quetzal guatemalteco",
- "hu": "Guatemalai quetzal",
- "es": "Quetzal"
- },
- "ANG": {
- "fr": "Florin des Antilles n\u00e9erlandaises",
- "en": "Netherlands Antillean guilder",
- "nl": "Antilliaanse gulden",
- "de": "Antillen-Gulden",
- "it": "Fiorino delle Antille Olandesi",
- "hu": "Holland antill\u00e1kbeli forint",
- "es": "Flor\u00edn antillano neerland\u00e9s"
- },
- "CUC": {
- "fr": "Peso cubain convertible",
- "en": "Cuban convertible peso",
- "nl": "Convertibele peso",
- "de": "Peso convertible",
- "it": "Peso cubano convertibile",
- "hu": "Kubai konvertibilis peso",
- "es": "peso convertible"
- },
- "CLP": {
- "fr": "Peso chilien",
- "en": "Chilean peso",
- "nl": "Chileense peso",
- "de": "Chilenischer Peso",
- "it": "Peso cileno",
- "hu": "chilei peso",
- "es": "peso"
- },
- "ZMW": {
- "fr": "Kwacha zambien",
- "en": "Zambian kwacha",
- "nl": "Zambiaanse kwacha",
- "de": "Sambischer Kwacha",
- "it": "Kwacha zambiano",
- "hu": "Zambiai kwacha",
- "es": "Kwacha zambiano"
- },
- "LTL": {
- "fr": "Litas",
- "en": "Lithuanian litas",
- "nl": "Litouwse litas",
- "de": "Litas",
- "it": "Litas lituano",
- "hu": "litv\u00e1n litas",
- "es": "Litas lituana"
- },
- "CDF": {
- "fr": "Franc congolais",
- "en": "Congolese franc",
- "nl": "Congolese frank",
- "de": "Kongo-Franc",
- "it": "Franco congolese",
- "hu": "Kong\u00f3i frank",
- "es": "franco"
- },
- "XCD": {
- "fr": "dollar des Cara\u00efbes orientales",
- "en": "East Caribbean dollar",
- "nl": "Oost-Caribische dollar",
- "de": "ostkaribischer Dollar",
- "it": "dollaro dei Caraibi Orientali",
- "hu": "kelet-karibi doll\u00e1r",
- "es": "d\u00f3lar del Caribe Oriental"
- },
- "KZT": {
- "fr": "Tenge kazakh",
- "en": "Kazakhstani tenge",
- "nl": "Kazachse tenge",
- "de": "Tenge",
- "it": "Tenge kazako",
- "hu": "kazah tenge",
- "es": "Tenge kazajo"
- },
- "XPF": {
- "fr": "Franc Pacifique",
- "en": "CFP Franc",
- "nl": "CFP-frank",
- "de": "CFP-Franc",
- "it": "Franco CFP",
- "hu": "Csendes-\u00f3ce\u00e1ni valutak\u00f6z\u00f6ss\u00e9gi frank",
- "es": "Franco CFP"
- },
- "RUB": {
- "fr": "Rouble russe",
- "en": "Russian ruble",
- "nl": "Russische roebel",
- "de": "Russischer Rubel",
- "it": "Rublo russo",
- "hu": "orosz rubel",
- "es": "Rublo ruso"
- },
- "XFU": {
- "fr": "Franc UIC",
- "en": "UIC franc"
- },
+ "ar": "منات تركمانستاني",
+ "bg": "Туркменски манат",
+ "ca": "manat turcman",
+ "cs": "Turkmenský manat",
+ "de": "Turkmenistan-Manat",
+ "el": "Μανάτ του Τουρκμενιστάν",
+ "en": "Turkmenistan manat",
+ "eo": "turkmena manato",
+ "es": "manat turkmeno",
+ "fa": "منات ترکمنستان",
+ "fi": "Turkmenistanin manat",
+ "fr": "Manat turkmène",
+ "gl": "Manat turcomán",
+ "hr": "Turkmenistanski manat",
+ "hu": "türkmén manat",
+ "it": "Manat turkmeno",
+ "ja": "トルクメニスタン・マナト",
+ "lt": "Turkmėnijos manatas",
+ "nl": "Turkmeense manat",
+ "pl": "Manat turkmeński",
+ "pt": "Manate do Turcomenistão",
+ "ro": "Manat turkmen",
+ "ru": "туркменский манат",
+ "sk": "Turkménsky manat",
+ "sr": "туркменистански манат",
+ "sv": "Turkmenistansk manat",
+ "tr": "Türkmenistan manatı",
+ "uk": "Туркменський манат",
+ "vi": "Manat Turkmenistan",
+ "zh": "土庫曼馬納特",
+ "he": "מנאט טורקמני חדש",
+ "oc": "manat turcmèn"
+ },
+ "TND": {
+ "ar": "دينار تونسي",
+ "bg": "Тунизийски динар",
+ "ca": "dinar tunisià",
+ "cs": "tuniský dinár",
+ "cy": "Dinar Tunisiaidd",
+ "de": "tunesischer Dinar",
+ "en": "Tunisian dinar",
+ "eo": "tunizia dinaro",
+ "es": "dinar tunecino",
+ "et": "Tuneesia dinaar",
+ "fa": "دینار تونس",
+ "fi": "Tunisian dinaari",
+ "fr": "dinar tunisien",
+ "he": "דינר תוניסאי",
+ "hr": "tuniski dinar",
+ "hu": "tunéziai dinár",
+ "it": "dinaro tunisino",
+ "ja": "チュニジア・ディナール",
+ "lt": "Tuniso dinaras",
+ "nl": "tunesische dinar",
+ "pl": "Dinar tunezyjski",
+ "pt": "dinar tunisiano",
+ "ru": "тунисский динар",
+ "sl": "Tunizijski dinar",
+ "sr": "туниски динар",
+ "sv": "Tunisisk dinar",
+ "tr": "Tunus dinarı",
+ "uk": "Туніський динар",
+ "zh": "突尼斯第納爾"
+ },
+ "TOP": {
+ "ar": "بانجا تونجي",
+ "ca": "pa‘anga",
+ "cs": "Tonžská paʻanga",
+ "de": "Paʻanga",
+ "el": "Παάνγκα",
+ "en": "Tongan paʻanga",
+ "eo": "tonga paangao",
+ "es": "pa'anga",
+ "fa": "پاآنگای تنگو",
+ "fi": "Tongan paʻanga",
+ "fr": "pa’anga",
+ "gl": "Paʻanga",
+ "he": "פאנגה טונגאית",
+ "hr": "Tongaška pa’anga",
+ "hu": "tongai paʻanga",
+ "it": "pa'anga tongano",
+ "ja": "パ・アンガ",
+ "lt": "Tongos paanga",
+ "nl": "Tongaanse pa'anga",
+ "pl": "Pa'anga",
+ "pt": "pa'anga",
+ "ru": "тонганская паанга",
+ "sr": "тонганска панга",
+ "sv": "Tongansk pa'anga",
+ "tr": "Pa'anga",
+ "uk": "Тонганська паанга",
+ "vi": "Paʻanga Tonga",
+ "zh": "汤加潘加"
+ },
+ "TRY": {
+ "ar": "ليرة تركية",
+ "bg": "Турска лира",
+ "ca": "lira turca",
+ "cs": "Turecká lira",
+ "cy": "Lira Twrcaidd Newydd",
+ "da": "Tyrkisk lira",
+ "de": "türkische Lira",
+ "el": "Τουρκική λίρα",
+ "en": "New Turkish lira",
+ "eo": "nova turka liro",
+ "es": "lira turca",
+ "et": "Türgi liir",
+ "eu": "Turkiar lira",
+ "fa": "افزایش ارزش لیر ترکیه",
+ "fi": "Uusi Turkin liira",
+ "fr": "nouvelle livre turque",
+ "gl": "Lira turca",
+ "he": "לירה טורקית",
+ "hr": "Turska lira",
+ "hu": "török líra",
+ "it": "lira turca",
+ "ja": "新トルコリラ",
+ "lt": "Turkijos lira",
+ "nl": "Nieuwe Turkse lira",
+ "pl": "lira turecka",
+ "pt": "lira turca",
+ "ro": "Liră turcească",
+ "ru": "новая турецкая лира",
+ "sk": "Turecká líra",
+ "sr": "турска лира",
+ "sv": "Turkisk lira",
+ "ta": "துருக்கிய லிரா",
+ "tr": "Yeni Türk Lirası",
+ "uk": "Турецька ліра",
+ "vi": "Lira Thổ Nhĩ Kỳ",
+ "zh": "第二版土耳其里拉",
+ "ia": "lira turc",
+ "oc": "lira turca"
+ },
"TTD": {
- "fr": "Dollar de Trinit\u00e9-et-Tobago",
- "en": "Trinidad and Tobago dollar",
- "nl": "Trinidad en Tobagodollar",
- "de": "Trinidad-und-Tobago-Dollar",
- "it": "Dollaro di Trinidad e Tobago",
- "hu": "Trinidad \u00e9s Tobag\u00f3-i doll\u00e1r",
- "es": "D\u00f3lar trinitense"
- },
- "RON": {
- "fr": "Leu roumain",
- "en": "Romanian leu",
- "nl": "Roemeense leu",
- "de": "Rum\u00e4nischer Leu",
- "it": "Leu romeno",
- "hu": "rom\u00e1n lej",
- "es": "Leu rumano"
- },
- "OMR": {
- "fr": "Rial omanais",
- "en": "Omani rial",
- "nl": "Omaanse rial",
- "de": "Omanischer Rial",
- "it": "Riyal dell'Oman",
- "hu": "Om\u00e1ni ri\u00e1l",
- "es": "Rial oman\u00ed"
- },
- "BRL": {
- "fr": "r\u00e9al br\u00e9silien",
- "en": "Brazilian real",
- "nl": "Braziliaanse real",
- "de": "Brasilianischer Real",
- "it": "Real brasiliano",
- "hu": "brazil real",
- "es": "Real brasile\u00f1o"
- },
- "SBD": {
- "fr": "dollar des \u00eeles Salomon",
- "en": "Solomon Islands dollar",
- "nl": "Salomon-dollar",
- "de": "Salomonen-Dollar",
- "it": "Dollaro delle Salomone",
- "hu": "Salamon-szigeteki doll\u00e1r",
- "es": "d\u00f3lar de las Islas Salom\u00f3n"
- },
- "PYG": {
- "fr": "Guaran\u00ed",
- "en": "Paraguayan guaran\u00ed",
- "nl": "Paraguayaanse guaran\u00ed",
- "de": "Paraguayischer Guaran\u00ed",
- "it": "Guaran\u00ed paraguaiano",
- "hu": "Paraguayi guaran\u00ed",
- "es": "Guaran\u00ed"
- },
- "KES": {
- "fr": "Shilling k\u00e9nyan",
- "en": "Kenyan shilling",
- "nl": "Keniaanse shilling",
- "de": "Kenia-Schilling",
- "it": "Scellino keniota",
- "hu": "Kenyai shilling",
- "es": "Chel\u00edn keniano"
- },
- "USD": {
- "fr": "dollar am\u00e9ricain",
- "en": "United States dollar",
- "nl": "Amerikaanse dollar",
- "de": "US-Dollar",
- "it": "dollaro statunitense",
- "hu": "amerikai doll\u00e1r",
- "es": "d\u00f3lar"
- },
+ "ar": "دولار ترينيداد وتوباغو",
+ "bg": "Тринидадски и тобагски долар",
+ "ca": "dòlar de Trinitat i Tobago",
+ "cs": "Dolar Trinidadu a Tobaga",
+ "de": "Trinidad-und-Tobago-Dollar",
+ "el": "Δολάριο Τρινιδάδ και Τομπάγκο",
+ "en": "Trinidad and Tobago dollar",
+ "eo": "trinidada dolaro",
+ "es": "dólar trinitense",
+ "et": "Trinidadi ja Tobago dollar",
+ "eu": "Trinidad eta Tobagoko dolar",
+ "fa": "دلار ترینیداد و توباگو",
+ "fi": "Trinidad ja Tobagon dollari",
+ "fr": "Dollar de Trinité-et-Tobago",
+ "gl": "Dólar de Trinidad e Tobago",
+ "hr": "Trinidadtobaški dolar",
+ "hu": "Trinidad és Tobagó-i dollár",
+ "it": "Dollaro di Trinidad e Tobago",
+ "ja": "トリニダード・トバゴ・ドル",
+ "lt": "Trinidado ir Tobago doleris",
+ "nl": "Trinidad en Tobagodollar",
+ "pl": "Dolar Trynidadu i Tobago",
+ "pt": "Dólar de Trinidad e Tobago",
+ "ru": "доллар Тринидада и Тобаго",
+ "sr": "долар Тринидада и Тобага",
+ "sv": "Trinidaddollar",
+ "tr": "Trinidad ve Tobago doları",
+ "uk": "Долар Тринідаду та Тобаго",
+ "zh": "千里達托貝哥元",
+ "sk": "Trinidadsko-tobažský dolár"
+ },
+ "TVD": {
+ "ar": "دولار توفالو",
+ "ca": "dòlar de Tuvalu",
+ "cs": "Tuvalský dolar",
+ "de": "Tuvaluischer Dollar",
+ "el": "Δολάριο Τουβαλού",
+ "en": "Tuvaluan dollar",
+ "eo": "tuvala dolaro",
+ "es": "dólar tuvaluano",
+ "fa": "دلار تووالوان",
+ "fi": "Tuvalun dollari",
+ "fr": "Dollar de Tuvalu",
+ "gl": "Dólar tuvalés",
+ "hr": "Tuvaluški dolar",
+ "hu": "tuvalui dollár",
+ "it": "Dollaro di Tuvalu",
+ "ja": "ツバル・ドル",
+ "pl": "Dolar Tuvalu",
+ "pt": "dólar tuvaluano",
+ "ro": "Dolar din Tuvalu",
+ "ru": "доллар Тувалу",
+ "sr": "тувалуански долар",
+ "sv": "Tuvaluansk dollar",
+ "tr": "Tuvalu doları",
+ "uk": "Долар Тувалу",
+ "zh": "圖瓦盧元",
+ "et": "Tuvalu dollar",
+ "nl": "Tuvaluan dollar"
+ },
"TWD": {
- "fr": "Nouveau dollar de Ta\u00efwan",
- "en": "New Taiwan dollar",
- "nl": "Taiwanese dollar",
- "de": "Neuer Taiwan-Dollar",
- "it": "Dollaro taiwanese",
- "hu": "Tajvani \u00faj doll\u00e1r",
- "es": "Nuevo d\u00f3lar taiwan\u00e9s"
- },
- "TOP": {
- "fr": "pa\u2019anga",
- "en": "Tongan pa\u02bbanga",
- "nl": "Tongaanse pa'anga",
- "de": "Pa\u02bbanga",
- "it": "Pa'anga tongano",
- "hu": "Tongai pa\u02bbanga",
- "es": "pa\u02bbanga"
- },
- "COP": {
- "fr": "Peso colombien",
- "en": "peso",
- "nl": "Colombiaanse peso",
- "de": "Kolumbianischer Peso",
- "it": "Peso colombiano",
- "hu": "Kolumbiai peso",
- "es": "peso"
- },
- "GNF": {
- "fr": "Franc guin\u00e9en",
- "en": "Guinean franc",
- "nl": "Guineese frank",
- "de": "Franc Guin\u00e9en",
- "it": "Franco guineano",
- "hu": "Guineai frank",
- "es": "Franco guineano"
- },
- "WST": {
- "fr": "Tala",
- "en": "Samoan t\u0101l\u0101",
- "nl": "Samoaanse tala",
- "de": "Samoanischer Tala",
- "it": "Tala samoano",
- "hu": "Szamoai tala",
- "es": "tala"
- },
- "IQD": {
- "fr": "Dinar irakien",
- "en": "Iraqi dinar",
- "nl": "Iraakse dinar",
- "de": "Irakischer Dinar",
- "it": "Dinaro iracheno",
- "hu": "iraki din\u00e1r",
- "es": "Dinar iraqu\u00ed"
- },
- "ERN": {
- "fr": "Nakfa \u00e9rythr\u00e9en",
- "en": "Eritrean nakfa",
- "nl": "Eritrese nakfa",
- "de": "Eritreischer Nakfa",
- "it": "Nacfa eritreo",
- "hu": "Eritreai nakfa",
- "es": "Nakfa"
- },
- "CVE": {
- "fr": "Escudo cap-verdien",
- "en": "Cape Verdean escudo",
- "nl": "Kaapverdische escudo",
- "de": "Kap-Verde-Escudo",
- "it": "Escudo capoverdiano",
- "hu": "Z\u00f6ld-foki k\u00f6zt\u00e1rsas\u00e1gi escudo",
- "es": "escudo"
- },
- "AUD": {
- "fr": "dollar australien",
- "en": "Australian dollar",
- "nl": "Australische dollar",
- "de": "Australischer Dollar",
- "it": "Dollaro australiano",
- "hu": "Ausztr\u00e1l doll\u00e1r",
- "es": "D\u00f3lar australiano"
- },
- "BAM": {
- "fr": "Mark convertible de Bosnie-Herz\u00e9govine",
- "en": "Bosnia and Herzegovina convertible mark",
- "nl": "Bosnische inwisselbare mark",
- "de": "Konvertible Mark",
- "it": "Marco bosniaco",
- "hu": "bosny\u00e1k konvertibilis m\u00e1rka",
- "es": "Marco bosnioherzegovino"
- },
- "KWD": {
- "fr": "Dinar kowe\u00eftien",
- "en": "Kuwaiti dinar",
- "nl": "Koeweitse dinar",
- "de": "Kuwait-Dinar",
- "it": "Dinaro kuwaitiano",
- "hu": "kuvaiti din\u00e1r",
- "es": "Dinar kuwait\u00ed"
- },
- "BIF": {
- "fr": "Franc burundais",
- "en": "Burundian franc",
- "nl": "Burundese frank",
- "de": "Burundi-Franc",
- "it": "Franco del Burundi",
- "hu": "Burundi frank",
- "es": "Franco de Burundi"
- },
- "PGK": {
- "fr": "Kina",
- "en": "Papua New Guinean kina",
- "nl": "Papoea-Nieuw-Guinese kina",
- "de": "Kina",
- "it": "Kina papuana",
- "hu": "P\u00e1pua \u00faj-guineai kina",
- "es": "Kina"
- },
- "SOS": {
- "fr": "shilling somalien",
- "en": "Somali shilling",
- "nl": "Somalische shilling",
- "de": "Somalia-Schilling",
- "it": "Scellino somalo",
- "hu": "Szom\u00e1liai shilling",
- "es": "chel\u00edn"
- },
- "CAD": {
- "fr": "Dollar canadien",
- "en": "Canadian dollar",
- "nl": "Canadese dollar",
- "de": "Kanadischer Dollar",
- "it": "Dollaro canadese",
- "hu": "kanadai doll\u00e1r",
- "es": "D\u00f3lar canadiense"
- },
- "SGD": {
- "fr": "Dollar de Singapour",
- "en": "Singapore dollar",
- "nl": "Singaporese dollar",
- "de": "Singapur-Dollar",
- "it": "Dollaro di Singapore",
- "hu": "szingap\u00fari doll\u00e1r",
- "es": "D\u00f3lar de Singapur"
- },
+ "ar": "دولار تايواني جديد",
+ "bg": "Нов тайвански долар",
+ "ca": "nou dòlar de Taiwan",
+ "cs": "Tchajwanský dolar",
+ "de": "Neuer Taiwan-Dollar",
+ "el": "Δολάριο Ταϊβάν",
+ "en": "New Taiwan dollar",
+ "eo": "nova tajvana dolaro",
+ "es": "nuevo dólar taiwanés",
+ "et": "Uus Taiwani dollar",
+ "fa": "دلار جدید تایوان",
+ "fi": "Uusi Taiwanin dollari",
+ "fr": "nouveau dollar de Taïwan",
+ "hr": "Novotajvanski dolar",
+ "hu": "tajvani új dollár",
+ "it": "Dollaro taiwanese",
+ "ja": "新台湾ドル",
+ "lt": "Naujasis Taivano doleris",
+ "nl": "Taiwanese dollar",
+ "pl": "Dolar tajwański",
+ "pt": "novo dólar taiwanês",
+ "ru": "новый тайваньский доллар",
+ "sr": "нови тајвански долар",
+ "sv": "Taiwanesisk dollar",
+ "tr": "Yeni Tayvan doları",
+ "uk": "новий тайванський долар",
+ "vi": "Tân Đài tệ",
+ "zh": "新臺幣",
+ "cy": "Doler Newydd Taiwan",
+ "he": "דולר טאיוואני חדש"
+ },
+ "TZS": {
+ "ar": "شيلينغ تانزاني",
+ "bg": "Танзанийски шилинг",
+ "ca": "xíling tanzà",
+ "cs": "Tanzanský šilink",
+ "cy": "Swllt Tanzania",
+ "de": "Tansania-Schilling",
+ "en": "Tanzanian shilling",
+ "eo": "tanzania ŝilingo",
+ "es": "chelín tanzano",
+ "fa": "شیلینگ تانزانیا",
+ "fi": "Tansanian šillinki",
+ "fr": "shilling tanzanien",
+ "he": "שילינג טנזני",
+ "hr": "Tanzanijski šiling",
+ "hu": "tanzániai shilling",
+ "it": "scellino tanzaniano",
+ "ja": "タンザニア・シリング",
+ "lt": "Tanzanijos šilingas",
+ "nl": "Tanzaniaanse shilling",
+ "pl": "Szyling tanzański",
+ "pt": "xelim tanzaniano",
+ "ru": "танзанийский шиллинг",
+ "sk": "Tanzánijský šiling",
+ "sr": "танзанијски шилинг",
+ "sv": "Tanzanisk shilling",
+ "tr": "Tanzanya şilini",
+ "uk": "танзанійський шилінг",
+ "zh": "坦尚尼亞先令"
+ },
+ "UAH": {
+ "ar": "هريفنا أوكرانية",
+ "bg": "Украинска гривна",
+ "ca": "hrívnia",
+ "cs": "ukrajinská hřivna",
+ "da": "Hryvnia",
+ "de": "Hrywnja",
+ "el": "Γρίβνα Ουκρανίας",
+ "en": "hryvnia",
+ "eo": "ukraina hrivno",
+ "es": "grivna",
+ "et": "Ukraina grivna",
+ "fa": "گریونا",
+ "fi": "Ukrainan hryvnia",
+ "fr": "hryvnia",
+ "gl": "Hrivna",
+ "he": "הריבניה",
+ "hr": "Grivnja",
+ "hu": "ukrán hrivnya",
+ "it": "grivnia ucraina",
+ "ja": "フリヴニャ",
+ "lt": "Grivina",
+ "nl": "Oekraïense hryvnja",
+ "oc": "Hryvnia",
+ "pl": "hrywna",
+ "pt": "hryvnia",
+ "ro": "Grivnă",
+ "ru": "украинская гривна",
+ "sk": "Ukrajinská hrivna",
+ "sl": "ukrajinska grivna",
+ "sr": "украјинска хривња",
+ "sv": "Hryvnja",
+ "ta": "ஹிருன்யா",
+ "tr": "Grivna",
+ "uk": "гривня",
+ "vi": "Hryvnia Ukraina",
+ "zh": "乌克兰格里夫纳",
+ "eu": "hryvnia",
+ "ia": "hryvnja ukrainian"
+ },
+ "UGX": {
+ "ar": "شيلينغ أوغندي",
+ "bg": "Угандийски шилинг",
+ "ca": "xíling ugandès",
+ "cs": "Ugandský šilink",
+ "de": "Uganda-Schilling",
+ "el": "Σελίνι της Ουγκάντας",
+ "en": "Ugandan shilling",
+ "eo": "uganda ŝilingo",
+ "es": "chelín ugandés",
+ "fa": "شیلینگ اوگاندا",
+ "fi": "Ugandan šillinki",
+ "fr": "shilling ougandais",
+ "he": "שילינג אוגנדי",
+ "hr": "Ugandski šiling",
+ "hu": "ugandai shilling",
+ "it": "scellino ugandese",
+ "ja": "ウガンダ・シリング",
+ "lt": "Ugandos šilingas",
+ "nl": "Oegandese shilling",
+ "oc": "Shilling ogandés",
+ "pl": "Szyling ugandyjski",
+ "pt": "xelim Ugandês",
+ "ru": "угандийский шиллинг",
+ "sk": "Ugandský šiling",
+ "sr": "угандски шилинг",
+ "sv": "Ugandisk shilling",
+ "tr": "Uganda şilini",
+ "uk": "угандійський шилінг",
+ "zh": "烏干達先令"
+ },
+ "USD": {
+ "ar": "دولار أمريكي",
+ "bg": "щатски долар",
+ "ca": "dòlar dels Estats Units",
+ "cs": "americký dolar",
+ "cy": "$ (UDA)",
+ "da": "amerikansk dollar",
+ "de": "US-Dollar",
+ "el": "δολάριο ΗΠΑ",
+ "en": "United States dollar",
+ "eo": "Usona dolaro",
+ "es": "dólar estadounidense",
+ "et": "USA dollar",
+ "eu": "Estatubatuar dolar",
+ "fa": "دلار آمریکا",
+ "fi": "Yhdysvaltain dollari",
+ "fr": "dollar américain",
+ "gl": "dólar estadounidense",
+ "he": "דולר אמריקני",
+ "hr": "Američki dolar",
+ "hu": "amerikai dollár",
+ "ia": "dollar statounitese",
+ "it": "dollaro statunitense",
+ "ja": "アメリカ合衆国ドル",
+ "lt": "Jungtinių Valstijų doleris",
+ "nl": "US dollar",
+ "oc": "Dolar american",
+ "pl": "dolar amerykański",
+ "pt": "dólar americano",
+ "ro": "dolar american",
+ "ru": "доллар США",
+ "sk": "americký dolár",
+ "sl": "Ameriški dolar",
+ "sr": "амерички долар",
+ "sv": "amerikansk dollar",
+ "ta": "அமெரிக்க டாலர்",
+ "tr": "Amerikan doları",
+ "uk": "долар США",
+ "vi": "đô la Mỹ",
+ "zh": "美元"
+ },
+ "UYU": {
+ "ar": "بيزو أوروغواني",
+ "bg": "Уругвайско песо",
+ "ca": "peso uruguaià",
+ "cs": "Uruguayské peso",
+ "de": "uruguayischer Peso",
+ "en": "Uruguayan peso",
+ "eo": "urugvaja peso",
+ "es": "peso uruguayo",
+ "eu": "Peso uruguaitar",
+ "fa": "پزوی اوروگوئه",
+ "fi": "Uruguayn peso",
+ "fr": "peso uruguayen",
+ "gl": "Peso uruguaio",
+ "hr": "Urugvajski pezo",
+ "hu": "uruguayi peso",
+ "it": "peso uruguaiano",
+ "ja": "ウルグアイ・ペソ",
+ "lt": "Urugvajaus pesas",
+ "nl": "Uruguayaanse peso",
+ "pl": "Peso urugwajskie",
+ "pt": "peso uruguaio",
+ "ru": "уругвайское песо",
+ "sr": "уругвајски пезос",
+ "sv": "Uruguayansk peso",
+ "tr": "Uruguay pesosu",
+ "uk": "Уругвайський песо",
+ "zh": "烏拉圭比索",
+ "he": "פסו של אורוגוואי",
+ "oc": "Peso uruguaian"
+ },
"UZS": {
- "fr": "Sum",
- "en": "Uzbekistani som",
- "nl": "Oezbeekse sum",
- "de": "So\u02bbm",
- "it": "Som uzbeco",
- "hu": "\u00dczb\u00e9g szom",
- "es": "som"
- },
- "STD": {
- "fr": "Dobra",
- "en": "S\u00e3o Tom\u00e9 and Pr\u00edncipe dobra",
- "nl": "Santomese dobra",
- "de": "S\u00e3o-tom\u00e9ischer Dobra",
- "it": "Dobra di S\u00e3o Tom\u00e9 e Pr\u00edncipe",
- "hu": "S\u00e3o Tom\u00e9 \u00e9s Pr\u00edncipe-i dobra",
- "es": "Dobra santotomense"
- },
- "XFO": {
- "fr": "Franc-or",
- "en": "Gold franc",
- "de": "Goldfranken"
- },
- "IRR": {
- "fr": "Rial iranien",
- "en": "Iranian rial",
- "nl": "Iraanse rial",
- "de": "Iranischer Rial",
- "it": "Riyal iraniano",
- "hu": "ir\u00e1ni ri\u00e1l",
- "es": "Rial iran\u00ed"
- },
- "CNY": {
- "fr": "Yuan",
- "en": "renminbi",
- "nl": "Chinese renminbi",
- "de": "Renminbi",
- "it": "Renminbi cinese",
- "hu": "Renminbi",
- "es": "Yuan chino"
- },
- "SLL": {
- "fr": "leone",
- "en": "Sierra Leonean leone",
- "nl": "Sierra Leoonse leone",
- "de": "Sierra-leonischer Leone",
- "it": "Leone sierraleonese",
- "hu": "Sierra Leone-i leone",
- "es": "leone"
- },
- "TND": {
- "fr": "Dinar tunisien",
- "en": "Tunisian dinar",
- "nl": "Tunesische dinar",
- "de": "Tunesischer Dinar",
- "it": "Dinaro tunisino",
- "hu": "Tun\u00e9ziai din\u00e1r",
- "es": "dinar"
- },
- "GYD": {
- "fr": "Dollar guyanien",
- "en": "Guyanese dollar",
- "nl": "Guyaanse dollar",
- "de": "Guyana-Dollar",
- "it": "Dollaro della Guyana",
- "hu": "Guyanai doll\u00e1r",
- "es": "D\u00f3lar guyan\u00e9s"
- },
- "MTL": {
- "fr": "Lire maltaise",
- "en": "Maltese lira",
- "nl": "Maltese lire",
- "de": "Maltesische Lira",
- "it": "Lira maltese",
- "hu": "M\u00e1ltai l\u00edra",
- "es": "Lira maltesa"
- },
- "NZD": {
- "fr": "dollar n\u00e9o-z\u00e9landais",
- "en": "New Zealand dollar",
- "nl": "Nieuw-Zeelandse dollar",
- "de": "Neuseeland-Dollar",
- "it": "Dollaro neozelandese",
- "hu": "\u00faj-z\u00e9landi doll\u00e1r",
- "es": "D\u00f3lar neozeland\u00e9s"
- },
- "FKP": {
- "fr": "Livre des \u00celes Malouines",
- "en": "Falkland Islands pound",
- "nl": "Falklandeilands pond",
- "de": "Falkland-Pfund",
- "it": "Sterlina delle Falkland",
- "hu": "Falkland-szigeteki font",
- "es": "Libra malvinense"
- },
- "LVL": {
- "fr": "Lats",
- "en": "lats",
- "nl": "Letse lats",
- "de": "Lats",
- "it": "Lats lettone",
- "hu": "lett lat",
- "es": "Lats let\u00f3n"
- },
- "ARP": {
- "fr": "peso argentino",
- "en": "peso argentino",
- "nl": "peso argentino",
- "it": "peso argentino",
- "es": "peso argentino"
- },
- "KGS": {
- "fr": "Som",
- "en": "Kyrgyzstani som",
- "nl": "Kirgizische som",
- "de": "Som",
- "it": "som kirghizo",
- "hu": "kirgiz szom",
- "es": "Som kirgu\u00eds"
- },
- "ARS": {
- "fr": "peso argentin",
- "en": "peso",
- "nl": "Argentijnse peso",
- "de": "Argentinischer Peso",
- "it": "peso argentino",
- "hu": "argentin peso",
- "es": "peso"
- },
- "BMD": {
- "fr": "Dollar bermudien",
- "en": "Bermudian dollar",
- "nl": "Bermuda-dollar",
- "de": "Bermuda-Dollar",
- "it": "Dollaro della Bermuda",
- "hu": "bermudai doll\u00e1r",
- "es": "D\u00f3lar bermude\u00f1o"
- },
- "RSD": {
- "fr": "Dinar serbe",
- "en": "Serbian dinar",
- "nl": "Servische dinar",
- "de": "Serbischer Dinar",
- "it": "Dinaro serbo",
- "hu": "szerb din\u00e1r",
- "es": "Dinar serbio"
- },
- "BHD": {
- "fr": "Dinar bahre\u00efnien",
- "en": "Bahraini dinar",
- "nl": "Bahreinse dinar",
- "de": "Bahrain-Dinar",
- "it": "Dinaro del Bahrain",
- "hu": "bahreini din\u00e1r",
- "es": "Dinar barein\u00ed"
- },
- "JPY": {
- "fr": "Yen",
- "en": "Japanese yen",
- "nl": "Japanse yen",
- "de": "Yen",
- "it": "Yen giapponese",
- "hu": "Jap\u00e1n jen",
- "es": "yen"
- },
- "ARA": {
- "fr": "Austral (monnaie)",
- "en": "Argentine austral",
- "de": "Austral (W\u00e4hrung)",
- "it": "Austral argentino",
- "es": "Austral"
- },
- "SDG": {
- "fr": "Livre soudanaise",
- "en": "Sudanese pound",
- "nl": "Soedanees pond",
- "de": "Sudanesisches Pfund",
- "it": "Sterlina sudanese",
- "hu": "Szud\u00e1ni font",
- "es": "Libra sudanesa"
+ "ar": "سوم أوزبكستاني",
+ "bg": "Узбекистански сом",
+ "ca": "som uzbek",
+ "cs": "Uzbecký sum",
+ "de": "Soʻm",
+ "el": "Σομ του Ουζμπεκιστάν",
+ "en": "Uzbekistani som",
+ "eo": "uzbeka somo",
+ "es": "som",
+ "fa": "سم ازبکستان",
+ "fi": "Uzbekistanin som",
+ "fr": "Sum",
+ "he": "סום אוזבקי",
+ "hr": "Uzbekistanski som",
+ "hu": "üzbég szom",
+ "it": "Som uzbeco",
+ "ja": "スム",
+ "lt": "Uzbekijos sumas",
+ "nl": "Oezbeekse sum",
+ "pl": "Sum",
+ "pt": "som usbeque",
+ "ro": "Som uzbec",
+ "ru": "узбекский сум",
+ "sr": "узбекистански сом",
+ "sv": "Uzbekistansk som",
+ "tr": "Özbekistan somu",
+ "uk": "Узбецький сом",
+ "zh": "烏茲別克索姆"
+ },
+ "VES": {
+ "en": "Sovereign Bolivar",
+ "es": "bolívar soberano",
+ "fr": "Bolivar souverain",
+ "hu": "venezuelai bolívar",
+ "ja": "ボリバル・ソベラノ",
+ "pt": "Bolívar soberano",
+ "ru": "Суверенный боливар",
+ "uk": "Суверенний Болівар",
+ "ar": "بوليفار السيادي"
+ },
+ "VND": {
+ "ar": "دونغ فيتنامي",
+ "bg": "виетнамски донг",
+ "ca": "dong",
+ "cs": "Vietnamský dong",
+ "da": "Dong",
+ "de": "vietnamesischer Đồng",
+ "el": "Ντονγκ",
+ "en": "Vietnamese dong",
+ "eo": "vjetnama dongo",
+ "es": "đồng vietnamita",
+ "eu": "Vietnamdar dong",
+ "fa": "دانگ ویتنام",
+ "fi": "Vietnamin đồng",
+ "fr": "dong",
+ "gl": "Dong vietnamita",
+ "hr": "Vijetnamski dong",
+ "hu": "vietnámi đồng",
+ "it": "Đồng vietnamita",
+ "ja": "ドン",
+ "lt": "Vietnamo dongas",
+ "nl": "Vietnamese dong",
+ "pl": "Dong",
+ "pt": "dong",
+ "ru": "вьетнамский донг",
+ "sk": "Dong",
+ "sr": "вијетнамски донг",
+ "sv": "Vietnamesisk dong",
+ "tr": "Đồng",
+ "uk": "в'єтнамський донг",
+ "vi": "đồng Việt Nam",
+ "zh": "越南盾",
+ "he": "דונג וייטנאמי ",
+ "oc": "Dong"
+ },
+ "VUV": {
+ "ar": "فاتو فانواتي",
+ "ca": "vatu",
+ "cs": "Vanuatský vatu",
+ "de": "Vatu",
+ "el": "Βάτου",
+ "en": "Vanuatu vatus",
+ "eo": "vanuatua vatuo",
+ "es": "vatu",
+ "fa": "واتوی وانواتو",
+ "fi": "Vanuatun vatu",
+ "fr": "Vatu",
+ "gl": "Vatu",
+ "he": "ואטו",
+ "hr": "Vanuatski vatu",
+ "hu": "vanuatui vatu",
+ "it": "Vatu di Vanuatu",
+ "ja": "バツ",
+ "lt": "Vatu",
+ "nl": "Vanuatuaanse vatu",
+ "pl": "Vatu",
+ "pt": "Vatu",
+ "ro": "Vatu",
+ "ru": "вату",
+ "sr": "вануатски вату",
+ "sv": "Vanuatisk vatu",
+ "tr": "Vatu",
+ "uk": "Вануатський вату",
+ "vi": "Vatu Vanuatu",
+ "zh": "萬那杜瓦圖",
+ "sk": "Vanuatský vatu"
+ },
+ "WST": {
+ "ar": "تالا ساموي",
+ "ca": "tala",
+ "cs": "Samojská tala",
+ "de": "samoanischer Tala",
+ "el": "Τάλα Σαμόα",
+ "en": "Samoan tālā",
+ "eo": "samoa talao",
+ "es": "tālā",
+ "et": "Samoa tala",
+ "fa": "طلای ساموآ",
+ "fi": "Samoan tala",
+ "fr": "tala",
+ "gl": "Tala samoana",
+ "hr": "Samoanska tala",
+ "hu": "szamoai tala",
+ "it": "tala samoano",
+ "ja": "タラ",
+ "lt": "Tala",
+ "nl": "Samoaanse tala",
+ "pl": "Tala",
+ "pt": "tala",
+ "ro": "Tala samoan",
+ "ru": "самоанская тала",
+ "sk": "Tala",
+ "sr": "самоанска тала",
+ "sv": "Samoansk Tala",
+ "uk": "Самоанська тала",
+ "zh": "薩摩亞塔拉",
+ "he": "טלה",
+ "oc": "Tala"
+ },
+ "XAF": {
+ "ar": "فرنك وسط أفريقي",
+ "bg": "Централноафрикански CFA франк",
+ "ca": "franc CFA de l'Àfrica Central",
+ "cs": "Středoafrický frank",
+ "de": "CFA-Franc BEAC",
+ "el": "Φράγκο CFA Κεντρικής Αφρικής",
+ "en": "Central African CFA franc",
+ "es": "franco CFA de África Central",
+ "fa": "فرانک سیافای آفریقای میانه",
+ "fr": "franc CFA d'Afrique Centrale",
+ "hr": "Srednjoafrički CFA franak",
+ "ja": "中部アフリカCFAフラン",
+ "oc": "Franc CFA d'Africa Centrala",
+ "pt": "franco",
+ "ro": "Franc CFA BEAC",
+ "ru": "франк КФА BEAC",
+ "sk": "Stredoafrický frank",
+ "tr": "Orta Afrika CFA frangı",
+ "uk": "центральноафриканський франк",
+ "vi": "CFA franc Trung Phi",
+ "zh": "中非法郎",
+ "cy": "Ffranc Canol Affrica (CFA)",
+ "eo": "centr-afrika franko",
+ "fi": "Keski-Afrikan CFA-frangi",
+ "he": "פרנק CFA מרכז אפריקני",
+ "ia": "CFA",
+ "it": "franco CFA dell'Africa centrale",
+ "nl": "Central African CFA franc",
+ "sv": "Centralafrikansk CFA Franc",
+ "ta": "மத்திய ஆப்பிரிக்க சி.எஃப்.ஏ பிராங்க்"
+ },
+ "XAG": {
+ "ar": "فضة",
+ "bg": "сребро",
+ "bo": "དངུལ།",
+ "ca": "argent",
+ "cs": "stříbro",
+ "cy": "arian",
+ "da": "sølv",
+ "de": "Silber",
+ "el": "άργυρος",
+ "en": "silver",
+ "eo": "arĝento",
+ "es": "plata",
+ "et": "hõbe",
+ "eu": "zilar",
+ "fa": "نقره",
+ "fi": "hopea",
+ "fr": "argent",
+ "gl": "prata",
+ "he": "כסף",
+ "hr": "srebro",
+ "hu": "ezüst",
+ "ia": "argento",
+ "it": "argento",
+ "ja": "銀",
+ "lt": "sidabras",
+ "nl": "zilver",
+ "oc": "argent",
+ "pl": "srebro",
+ "pt": "prata",
+ "ro": "argint",
+ "ru": "серебро",
+ "sk": "striebro",
+ "sl": "srebro",
+ "sr": "сребро",
+ "sv": "silver",
+ "ta": "வெள்ளி",
+ "te": "వెండి",
+ "tr": "gümüş",
+ "uk": "срібло",
+ "vi": "bạc",
+ "zh": "銀"
+ },
+ "XAU": {
+ "ar": "ذهب",
+ "bg": "злато",
+ "bo": "གསེར།",
+ "ca": "or",
+ "cs": "zlato",
+ "cy": "aur",
+ "da": "guld",
+ "de": "Gold",
+ "el": "χρυσός",
+ "en": "gold",
+ "eo": "oro",
+ "es": "oro",
+ "et": "kuld",
+ "eu": "urre",
+ "fa": "طلا",
+ "fi": "kulta",
+ "fr": "or",
+ "gl": "ouro",
+ "he": "זהב",
+ "hr": "Zlato",
+ "hu": "arany",
+ "ia": "Auro",
+ "it": "oro",
+ "ja": "金",
+ "lt": "Auksas",
+ "nl": "goud",
+ "oc": "Aur",
+ "pl": "złoto",
+ "pt": "ouro",
+ "ro": "aur",
+ "ru": "золото",
+ "sk": "zlato",
+ "sl": "zlato",
+ "sr": "злато",
+ "sv": "guld",
+ "ta": "தங்கம்",
+ "te": "బంగారం",
+ "tr": "Altın",
+ "uk": "золото",
+ "vi": "vàng",
+ "zh": "金"
+ },
+ "XBT": {
+ "ar": "بيتكوين",
+ "bg": "Биткойн",
+ "ca": "bitcoin",
+ "cs": "Bitcoin",
+ "cy": "Bitcoin",
+ "da": "Bitcoin",
+ "de": "Bitcoin",
+ "el": "Bitcoin",
+ "en": "bitcoin",
+ "eo": "Bitmono",
+ "es": "bitcoin",
+ "et": "bitcoin",
+ "eu": "Bitcoin",
+ "fa": "بیتکوین",
+ "fi": "bitcoin",
+ "fr": "Bitcoin",
+ "gl": "Bitcoin",
+ "he": "ביטקוין",
+ "hr": "Bitcoin",
+ "hu": "bitcoin",
+ "ia": "Bitcoin",
+ "it": "bitcoin",
+ "ja": "ビットコイン",
+ "lt": "Bitcoin",
+ "nl": "Bitcoin",
+ "oc": "Bitcoin",
+ "pl": "Bitcoin",
+ "pt": "Bitcoin",
+ "ro": "Bitcoin",
+ "ru": "биткойн",
+ "sk": "Bitcoin",
+ "sl": "Bitcoin",
+ "sr": "Биткоин",
+ "sv": "Bitcoin",
+ "ta": "பிட்காயின்",
+ "te": "బిట్ కాయిన్",
+ "tr": "Bitcoin",
+ "uk": "біткоїн",
+ "vi": "Bitcoin",
+ "zh": "比特幣"
+ },
+ "XCD": {
+ "ar": "دولار شرق الكاريبي",
+ "bg": "Източнокарибски долар",
+ "ca": "dòlar del Carib Oriental",
+ "cs": "Východokaribský dolar",
+ "cy": "Doler Dwyrain y Caribî",
+ "de": "Ostkaribischer Dollar",
+ "el": "Δολάριο Ανατολικής Καραϊβικής",
+ "en": "Eastern Caribbean dollar",
+ "eo": "orientkaribia dolaro",
+ "es": "dólar del Caribe Oriental",
+ "eu": "Ekialdeko Karibeko dolar",
+ "fa": "دلار کارائیب شرقی",
+ "fi": "Itä-Karibian dollari",
+ "fr": "dollar des Caraïbes orientales",
+ "gl": "Dólar Caribe-Leste",
+ "he": "דולר מזרח קריבי",
+ "hr": "Istočnokaripski dolar",
+ "hu": "kelet-karibi dollár",
+ "it": "dollaro dei Caraibi Orientali",
+ "ja": "東カリブ・ドル",
+ "lt": "Rytų Karibų doleris",
+ "nl": "Oost-Caribische dollar",
+ "pl": "Dolar wschodniokaraibski",
+ "pt": "Dólar do Caribe Oriental",
+ "ru": "восточно-карибский доллар",
+ "sl": "Vzhodnokaribski dolar",
+ "sr": "источнокарипски долар",
+ "sv": "Östkaribisk dollar",
+ "tr": "Doğu Karayip doları",
+ "uk": "Східно-карибський долар",
+ "vi": "Đô la Đông Caribe",
+ "zh": "東加勒比元",
+ "oc": "Dolar de las Caribas Orientalas",
+ "ta": "கிழக்குக் கரிபியன் டாலர்"
+ },
+ "XDR": {
+ "ar": "حقوق السحب الخاصة",
+ "bg": "Специални права на тираж",
+ "ca": "drets especials de gir",
+ "cs": "Zvláštní práva čerpání",
+ "de": "Sonderziehungsrecht",
+ "en": "special drawing rights",
+ "eo": "specialaj rajtoj de enspezo",
+ "es": "Derechos Especiales de Giro",
+ "fi": "Erityisnosto-oikeus",
+ "fr": "droits de tirage spéciaux",
+ "hr": "Posebna prava vučenja",
+ "hu": "SDR",
+ "it": "diritti speciali di prelievo",
+ "ja": "特別引出権",
+ "lt": "Specialiosios skolinimosi teisės",
+ "nl": "speciale trekkingsrechten",
+ "oc": "Drechs de tiratge Especials",
+ "pl": "Specjalne prawa ciągnienia",
+ "pt": "direitos especiais de saque",
+ "ro": "Drepturi speciale de tragere",
+ "ru": "специальные права заимствования",
+ "sk": "Zvláštne práva čerpania",
+ "sl": "Posebne pravice črpanja",
+ "sv": "Särskilda dragningsrätter",
+ "tr": "Özel çekme hakları",
+ "uk": "Спеціальні права запозичення",
+ "vi": "Quyền rút vốn đặc biệt",
+ "zh": "特别提款权",
+ "ta": "Special drawings right"
+ },
+ "XEU": {
+ "bg": "ЕКЮ",
+ "ca": "Unitat Monetària Europea",
+ "cs": "Evropská měnová jednotka",
+ "da": "European Currency Unit",
+ "de": "Europäische Währungseinheit",
+ "el": "Ευρωπαϊκή λογιστική μονάδα",
+ "en": "European Currency Unit",
+ "es": "Unidad Monetaria Europea",
+ "et": "ECU",
+ "eu": "Europako kontu-unitate",
+ "fa": "واحد ارزی اروپا",
+ "fi": "Euroopan valuuttayksikkö",
+ "fr": "European Currency Unit",
+ "gl": "ECU",
+ "he": "יחידת מטבע אירופית",
+ "hu": "Európai valutaegység",
+ "it": "Unità di conto europea",
+ "ja": "欧州通貨単位",
+ "lt": "Ekiu",
+ "nl": "Europese rekeneenheid",
+ "pl": "European Currency Unit",
+ "pt": "Unidade Monetária Europeia",
+ "ro": "ECU",
+ "ru": "ЭКЮ",
+ "sk": "Európska menová jednotka",
+ "sv": "Europeiska valutaenhet",
+ "tr": "ECU",
+ "uk": "Екю",
+ "zh": "歐洲通貨單位",
+ "eo": "Eŭropa Monunuo"
+ },
+ "XMR": {
+ "ar": "مونيرو",
+ "bg": "Monero",
+ "ca": "Monero",
+ "cs": "Monero",
+ "da": "Monero",
+ "de": "Monero",
+ "en": "Monero",
+ "eo": "Monero (ĉifromono)",
+ "es": "Monero",
+ "fa": "مونرو",
+ "fi": "Monero",
+ "fr": "Monero",
+ "he": "מונרו (מטבע מבוזר)",
+ "ia": "Monero",
+ "it": "Monero",
+ "ja": "Monero",
+ "pt": "Monero",
+ "ru": "Monero",
+ "sv": "Monero",
+ "tr": "Monero",
+ "uk": "Monero",
+ "vi": "Monero",
+ "zh": "门罗币",
+ "nl": "Monero"
+ },
+ "XOF": {
+ "ar": "فرنك غرب أفريقي",
+ "bg": "Западноафрикански CFA франк",
+ "ca": "franc CFA de l'Àfrica Occidental",
+ "de": "CFA-Franc BCEAO",
+ "el": "Φράγκο CFA Δυτικής Αφρικής",
+ "en": "West African CFA franc",
+ "es": "franco CFA de África Occidental",
+ "fa": "فرانک سی اف ای آفریقای باختری",
+ "fr": "franc CFA",
+ "hr": "Zapadnoafrički CFA franak",
+ "ja": "西アフリカCFAフラン",
+ "oc": "Franc CFA d'Africa Occidentala",
+ "pt": "franco CFA da África Ocidental",
+ "ro": "Franc CFA BCEAO",
+ "ru": "франк КФА BCEAO",
+ "sk": "Západoafrický frank",
+ "tr": "Batı Afrika CFA frangı",
+ "uk": "західноафриканський франк",
+ "vi": "CFA franc Tây Phi",
+ "zh": "非洲金融共同体法郎",
+ "cs": "západoafrický CFA frank",
+ "cy": "franc CFA Gorllein ffrica",
+ "eo": "okcident-afrika franko",
+ "he": "פרנק CFA מערב אפריקני",
+ "it": "franco CFA UEMOA",
+ "nl": "West African CFA franc",
+ "pl": "frank CFA",
+ "sv": "CFA Franc",
+ "ta": "மேற்கு ஆபிரிக்க சி.எஃப்.ஏ பிராங்க்"
+ },
+ "XPD": {
+ "ar": "بالاديوم",
+ "bg": "паладий",
+ "bo": "པྰེ་ལེ་ཌིམ།",
+ "ca": "pal·ladi",
+ "cs": "palladium",
+ "cy": "Paladiwm",
+ "da": "palladium",
+ "de": "Palladium",
+ "el": "παλλάδιο",
+ "en": "palladium",
+ "eo": "paladio",
+ "es": "paladio",
+ "et": "Pallaadium",
+ "eu": "paladio",
+ "fa": "پالادیم",
+ "fi": "palladium",
+ "fr": "palladium",
+ "gl": "Paladio",
+ "he": "פלדיום",
+ "hr": "Paladij",
+ "hu": "palládium",
+ "ia": "palladium",
+ "it": "palladio",
+ "ja": "パラジウム",
+ "lt": "Paladis",
+ "nl": "palladium",
+ "oc": "Palladi",
+ "pl": "pallad",
+ "pt": "paládio",
+ "ro": "paladiu",
+ "ru": "палладий",
+ "sk": "paládium",
+ "sl": "Paladij",
+ "sr": "паладијум",
+ "sv": "palladium",
+ "ta": "பலேடியம்",
+ "te": "పల్లాడియం",
+ "tr": "Paladyum",
+ "uk": "Паладій",
+ "vi": "paladi",
+ "zh": "钯"
+ },
+ "XPF": {
+ "ar": "فرنك س ف ب",
+ "ca": "franc CFP",
+ "cs": "CFP frank",
+ "da": "CFP-franc",
+ "de": "CFP-Franc",
+ "el": "Φράγκο CFP",
+ "en": "CFP Franc",
+ "eo": "pacifika franko",
+ "es": "Franco CFP",
+ "eu": "CFP libera",
+ "fa": "فرانک اقیانوسیه",
+ "fi": "CFP-frangi",
+ "fr": "franc Pacifique",
+ "gl": "Franco CFP",
+ "hr": "CFP franak",
+ "hu": "csendes-óceáni valutaközösségi frank",
+ "it": "Franco CFP",
+ "ja": "CFPフラン",
+ "lt": "CFP frankas",
+ "nl": "CFP-frank",
+ "pl": "Frank CFP",
+ "pt": "Franco CFP",
+ "ro": "Franc CFP",
+ "ru": "французский тихоокеанский франк",
+ "sk": "CFP frank",
+ "sv": "CFP-franc",
+ "tr": "CFP frangı",
+ "uk": "Французький тихоокеанський франк",
+ "vi": "Franc CFP",
+ "zh": "太平洋法郎",
+ "he": "פרנק צרפתי",
+ "oc": "Franc CFP",
+ "sr": "француски тихоокеански франак"
+ },
+ "XPT": {
+ "ar": "بلاتين",
+ "bg": "платина",
+ "bo": "བེ་ལེ་ཊི་ནམ།",
+ "ca": "platí",
+ "cs": "platina",
+ "cy": "Platinwm",
+ "da": "platin",
+ "de": "Platin",
+ "el": "λευκόχρυσος",
+ "en": "platinum",
+ "eo": "plateno",
+ "es": "platino",
+ "et": "Plaatina",
+ "eu": "platino",
+ "fa": "پلاتین",
+ "fi": "platina",
+ "fr": "platine",
+ "gl": "Platino",
+ "he": "פלטינה",
+ "hr": "Platina",
+ "hu": "platina",
+ "ia": "Platino",
+ "it": "platino",
+ "ja": "白金",
+ "lt": "Platina",
+ "nl": "platina",
+ "oc": "Platin",
+ "pl": "platyna",
+ "pt": "platina",
+ "ro": "platină",
+ "ru": "платина",
+ "sk": "Platina",
+ "sl": "platina",
+ "sr": "платина",
+ "sv": "platina",
+ "ta": "பிளாட்டினம்",
+ "te": "ప్లాటినం",
+ "tr": "Platin",
+ "uk": "платина",
+ "vi": "platin",
+ "zh": "铂"
+ },
+ "XSU": {
+ "de": "SUCRE",
+ "en": "SUCRE",
+ "es": "SUCRE",
+ "eu": "SUCRE",
+ "fi": "Sucre",
+ "fr": "sucre",
+ "hu": "SUCRE",
+ "it": "Sistema unificato di compensazione regionale",
+ "ja": "域内統一決済システム",
+ "pl": "SUCRE",
+ "pt": "SUCRE",
+ "ru": "Сукре",
+ "tr": "SUCRE",
+ "uk": "Сукре",
+ "nl": "SUCRE"
+ },
+ "YER": {
+ "ar": "ريال يمني",
+ "bg": "Йеменски риал",
+ "ca": "rial iemenita",
+ "cs": "Jemenský rijál",
+ "de": "Jemen-Rial",
+ "el": "Ριάλ Υεμένης",
+ "en": "Yemeni rial",
+ "eo": "jemena rialo",
+ "es": "rial yemení",
+ "fa": "ریال یمن",
+ "fi": "Jemenin rial",
+ "fr": "rial yéménite",
+ "gl": "Rial iemení",
+ "he": "ריאל תימני",
+ "hr": "Jemenski rijal",
+ "hu": "jemeni riál",
+ "it": "riyal yemenita",
+ "ja": "イエメン・リアル",
+ "lt": "Jemeno rialas",
+ "nl": "Jemenitische rial",
+ "pl": "Rial jemeński",
+ "pt": "Rial iemenita",
+ "ru": "йеменский риал",
+ "sk": "Jemenský rial",
+ "sr": "јеменски ријал",
+ "sv": "Jemenitisk rial",
+ "tr": "Yemen riyali",
+ "uk": "Єменський ріал",
+ "zh": "葉門里亞爾",
+ "oc": "Rial de Iemèn"
+ },
+ "ZAR": {
+ "ar": "راند جنوب أفريقي",
+ "bg": "Южноафрикански ранд",
+ "ca": "rand",
+ "cs": "Jihoafrický rand",
+ "da": "Rand",
+ "de": "südafrikanischer Rand",
+ "el": "Ραντ (νόμισμα)",
+ "en": "rand",
+ "eo": "sudafrika rando",
+ "es": "rand sudafricano",
+ "eu": "Hegoafrikar rand",
+ "fa": "رند آفریقای جنوبی",
+ "fi": "Etelä-Afrikan randi",
+ "fr": "rand",
+ "gl": "Rand surafricano",
+ "he": "ראנד דרום אפריקאי",
+ "hr": "Južnoafrički rand",
+ "hu": "dél-afrikai rand",
+ "it": "rand sudafricano",
+ "ja": "ランド",
+ "lt": "Randas",
+ "nl": "Zuid-Afrikaanse rand",
+ "oc": "Rand sudafrican",
+ "pl": "Rand",
+ "pt": "rand",
+ "ro": "Rand sud-african",
+ "ru": "южноафриканский рэнд",
+ "sk": "Rand",
+ "sr": "јужноафрички ранд",
+ "sv": "Rand",
+ "tr": "Güney Afrika randı",
+ "uk": "Ранд",
+ "zh": "南非蘭特",
+ "cy": "Rand De Affrica"
+ },
+ "ZMW": {
+ "ar": "كواشا زامبية",
+ "ca": "kwacha zambià",
+ "cs": "Zambijská kwacha",
+ "da": "Zambianske kwacha",
+ "de": "sambischer Kwacha",
+ "el": "Κουάτσα της Ζάμπιας",
+ "en": "Zambian kwacha",
+ "eo": "zambia kvaĉo",
+ "es": "kwacha zambiano",
+ "et": "Sambia kvatša",
+ "fa": "کواچای زامبیا",
+ "fi": "Sambian kwacha",
+ "fr": "kwacha zambien",
+ "gl": "Kwacha zambiano",
+ "he": "קוואצ'ה זמבי",
+ "hr": "Zambijska kvača",
+ "hu": "zambiai kwacha",
+ "it": "kwacha zambiano",
+ "ja": "ザンビア・クワチャ",
+ "lt": "Zambijos kvača",
+ "nl": "Zambiaanse kwacha",
+ "pl": "Kwacha zambijska",
+ "pt": "kwacha zambiano",
+ "ru": "замбийская квача",
+ "sr": "замбијска квача",
+ "sv": "Zambisk kwacha",
+ "tr": "Zambiya kwachası",
+ "uk": "Замбійська квача",
+ "zh": "尚比亞克瓦查",
+ "oc": "Kwacha zambian"
+ },
+ "CHW": {
+ "de": "WIR Franken",
+ "en": "WIR franc"
+ },
+ "CNH": {
+ "en": "renminbi (offshore)",
+ "es": "yuan offshore"
+ },
+ "COU": {
+ "en": "Unidad de Valor Real",
+ "es": "Unidad de Valor Real",
+ "fr": "Unidad de Valor Real colombienne"
+ },
+ "UYW": {
+ "en": "Unidad Previsional"
+ },
+ "XUA": {
+ "en": "ADB Unit of Account"
}
}
-}
+} \ No newline at end of file
diff --git a/searx/data/engines_languages.json b/searx/data/engines_languages.json
index 2c9e64e..ade3e14 100644
--- a/searx/data/engines_languages.json
+++ b/searx/data/engines_languages.json
@@ -1,27489 +1,28588 @@
{
- "qwant news": [
- "bg-BG",
- "br-FR",
- "ca-AD",
- "ca-ES",
- "ca-FR",
- "co-FR",
- "cs-CZ",
- "cy-GB",
- "da-DK",
- "de-AT",
- "de-CH",
- "de-DE",
- "el-GR",
- "en-AU",
- "en-CA",
- "en-GB",
- "en-IE",
- "en-IN",
- "en-MY",
- "en-NZ",
- "en-PH",
- "en-SG",
- "en-US",
- "es-AD",
- "es-AR",
- "es-CL",
- "es-ES",
- "es-MX",
- "et-EE",
- "eu-ES",
- "eu-FR",
- "fi-FI",
- "fr-AD",
- "fr-BE",
- "fr-CA",
- "fr-CH",
- "fr-FR",
- "gd-GB",
- "he-IL",
- "hu-HU",
- "it-CH",
- "it-IT",
- "ja-JP",
- "ko-KR",
- "ms-MY",
- "nl-BE",
- "nl-NL",
- "no-NO",
- "pl-PL",
- "pt-AD",
- "pt-BR",
- "pt-PT",
- "ro-RO",
- "ru-RU",
- "sv-SE",
- "th-TH",
- "tr-TR"
- ],
- "qwant social": [
- "bg-BG",
- "br-FR",
- "ca-AD",
- "ca-ES",
- "ca-FR",
- "co-FR",
- "cs-CZ",
- "cy-GB",
- "da-DK",
- "de-AT",
- "de-CH",
- "de-DE",
- "el-GR",
- "en-AU",
- "en-CA",
- "en-GB",
- "en-IE",
- "en-IN",
- "en-MY",
- "en-NZ",
- "en-PH",
- "en-SG",
- "en-US",
- "es-AD",
- "es-AR",
- "es-CL",
- "es-ES",
- "es-MX",
- "et-EE",
- "eu-ES",
- "eu-FR",
- "fi-FI",
- "fr-AD",
- "fr-BE",
- "fr-CA",
- "fr-CH",
- "fr-FR",
- "gd-GB",
- "he-IL",
- "hu-HU",
- "it-CH",
- "it-IT",
- "ja-JP",
- "ko-KR",
- "ms-MY",
- "nl-BE",
- "nl-NL",
- "no-NO",
- "pl-PL",
- "pt-AD",
- "pt-BR",
- "pt-PT",
- "ro-RO",
- "ru-RU",
- "sv-SE",
- "th-TH",
- "tr-TR"
- ],
- "duckduckgo": [
- "ar-XA",
- "bg-BG",
- "ca-CT",
- "ca-ES",
- "cs-CZ",
- "da-DK",
- "de-AT",
- "de-CH",
- "de-DE",
- "el-GR",
- "en-AU",
- "en-CA",
- "en-ID",
- "en-IE",
- "en-IN",
- "en-MY",
- "en-NZ",
- "en-PH",
- "en-SG",
- "en-UK",
- "en-US",
- "en-ZA",
- "es-AR",
- "es-CL",
- "es-CO",
- "es-ES",
- "es-MX",
- "es-PE",
- "es-US",
- "et-EE",
- "fi-FI",
- "fr-BE",
- "fr-CA",
- "fr-CH",
- "fr-FR",
- "he-IL",
- "hr-HR",
- "hu-HU",
- "id-ID",
- "it-CH",
- "it-IT",
- "jp-JP",
- "kr-KR",
- "lt-LT",
- "lv-LV",
- "ms-MY",
- "nl-BE",
- "nl-NL",
- "no-NO",
- "pl-PL",
- "pt-BR",
- "pt-PT",
- "ro-RO",
- "ru-RU",
- "sk-SK",
- "sl-SL",
- "sv-SE",
- "th-TH",
- "tl-PH",
- "tr-TR",
- "tzh-HK",
- "tzh-TW",
- "vi-VN",
- "wt-WT",
- "zh-CN"
- ],
- "ddg definitions": [
- "ar-XA",
- "bg-BG",
- "ca-CT",
- "ca-ES",
- "cs-CZ",
- "da-DK",
- "de-AT",
- "de-CH",
- "de-DE",
- "el-GR",
- "en-AU",
- "en-CA",
- "en-ID",
- "en-IE",
- "en-IN",
- "en-MY",
- "en-NZ",
- "en-PH",
- "en-SG",
- "en-UK",
- "en-US",
- "en-ZA",
- "es-AR",
- "es-CL",
- "es-CO",
- "es-ES",
- "es-MX",
- "es-PE",
- "es-US",
- "et-EE",
- "fi-FI",
- "fr-BE",
- "fr-CA",
- "fr-CH",
- "fr-FR",
- "he-IL",
- "hr-HR",
- "hu-HU",
- "id-ID",
- "it-CH",
- "it-IT",
- "jp-JP",
- "kr-KR",
- "lt-LT",
- "lv-LV",
- "ms-MY",
- "nl-BE",
- "nl-NL",
- "no-NO",
- "pl-PL",
- "pt-BR",
- "pt-PT",
- "ro-RO",
- "ru-RU",
- "sk-SK",
- "sl-SL",
- "sv-SE",
- "th-TH",
- "tl-PH",
- "tr-TR",
- "tzh-HK",
- "tzh-TW",
- "vi-VN",
- "wt-WT",
- "zh-CN"
- ],
- "bing": [
- "ar",
- "bg",
- "ca",
- "cs",
- "da",
- "de",
- "el",
- "en",
- "es",
- "et",
- "fa",
- "fi",
- "fr",
- "he",
- "hr",
- "hu",
- "id",
- "is",
- "it",
- "ja",
- "ko",
- "lt",
- "lv",
- "ms",
- "nl",
- "no",
- "pl",
- "pt-BR",
- "pt-PT",
- "ro",
- "ru",
- "sk",
- "sl",
- "sq",
- "sr",
- "sv",
- "th",
- "tr",
- "uk",
- "vi",
- "zh-CHS",
- "zh-CHT"
- ],
- "bing videos": [
- "ar-AE",
- "ar-EG",
- "ar-SA",
- "da-DK",
- "de-AT",
- "de-CH",
- "de-DE",
- "en-AU",
- "en-CA",
- "en-GB",
- "en-ID",
- "en-IE",
- "en-IN",
- "en-MY",
- "en-NZ",
- "en-PH",
- "en-SG",
- "en-US",
- "en-ZA",
- "es-AR",
- "es-CL",
- "es-ES",
- "es-MX",
- "es-US",
- "fi-FI",
- "fr-BE",
- "fr-CA",
- "fr-CH",
- "fr-FR",
- "it-IT",
- "ja-JP",
- "ko-KR",
- "nl-BE",
- "nl-NL",
- "no-NO",
- "pl-PL",
- "pt-BR",
- "pt-PT",
- "ru-RU",
- "sv-SE",
- "tr-TR",
- "zh-CN",
- "zh-HK",
- "zh-TW"
- ],
- "qwant": [
- "bg-BG",
- "br-FR",
- "ca-AD",
- "ca-ES",
- "ca-FR",
- "co-FR",
- "cs-CZ",
- "cy-GB",
- "da-DK",
- "de-AT",
- "de-CH",
- "de-DE",
- "el-GR",
- "en-AU",
- "en-CA",
- "en-GB",
- "en-IE",
- "en-IN",
- "en-MY",
- "en-NZ",
- "en-PH",
- "en-SG",
- "en-US",
- "es-AD",
- "es-AR",
- "es-CL",
- "es-ES",
- "es-MX",
- "et-EE",
- "eu-ES",
- "eu-FR",
- "fi-FI",
- "fr-AD",
- "fr-BE",
- "fr-CA",
- "fr-CH",
- "fr-FR",
- "gd-GB",
- "he-IL",
- "hu-HU",
- "it-CH",
- "it-IT",
- "ja-JP",
- "ko-KR",
- "ms-MY",
- "nl-BE",
- "nl-NL",
- "no-NO",
- "pl-PL",
- "pt-AD",
- "pt-BR",
- "pt-PT",
- "ro-RO",
- "ru-RU",
- "sv-SE",
- "th-TH",
- "tr-TR"
- ],
- "gigablast": [],
- "google news": {
- "nl": {
- "name": "Nederlands"
- },
- "eo": {
- "name": "Esperanto"
- },
- "ko": {
- "name": "한국어"
- },
- "id": {
- "name": "Indonesia"
- },
- "ca": {
- "name": "Català"
- },
- "ar": {
- "name": "العربية"
- },
- "sl": {
- "name": "Slovenščina"
- },
- "sr": {
- "name": "Српски"
- },
- "sv": {
- "name": "Svenska"
- },
- "be": {
- "name": "Беларуская"
- },
- "et": {
- "name": "Eesti"
- },
- "sw": {
- "name": "Kiswahili"
- },
- "is": {
- "name": "Íslenska"
- },
- "it": {
- "name": "Italiano"
- },
- "hi": {
- "name": "हिन्दी"
- },
- "pl": {
- "name": "Polski"
- },
- "el": {
- "name": "Ελληνικά"
- },
- "hu": {
- "name": "Magyar"
- },
- "fr": {
- "name": "Français"
- },
- "th": {
- "name": "ไทย"
- },
- "tl": {
- "name": "Filipino"
- },
- "de": {
- "name": "Deutsch"
- },
- "ru": {
- "name": "Русский"
- },
- "sk": {
- "name": "Slovenčina"
- },
- "lt": {
- "name": "Lietuvių"
- },
- "vi": {
- "name": "Tiếng Việt"
- },
- "uk": {
- "name": "Українська"
- },
- "pt": {
- "name": "Português"
- },
- "zh-TW": {
- "name": "中文 (繁體)"
- },
- "cs": {
- "name": "Čeština"
- },
- "fa": {
- "name": "فارسی"
- },
- "af": {
- "name": "Afrikaans"
- },
- "hy": {
- "name": "Հայերեն"
- },
- "bg": {
- "name": "Български"
- },
- "hr": {
- "name": "Hrvatski"
- },
- "en": {
- "name": "English"
- },
- "tr": {
- "name": "Türkçe"
- },
- "lv": {
- "name": "Latviešu"
- },
- "ro": {
- "name": "Română"
- },
- "zh-CN": {
- "name": "中文 (简体)"
- },
- "ja": {
- "name": "日本語"
- },
- "iw": {
- "name": "עברית"
- },
- "es": {
- "name": "Español"
- },
- "fi": {
- "name": "Suomi"
- },
- "no": {
- "name": "Norsk"
- },
- "da": {
- "name": "Dansk"
- }
- },
- "duckduckgo images": [
- "ar-XA",
- "bg-BG",
- "ca-CT",
- "ca-ES",
- "cs-CZ",
- "da-DK",
- "de-AT",
- "de-CH",
- "de-DE",
- "el-GR",
- "en-AU",
- "en-CA",
- "en-ID",
- "en-IE",
- "en-IN",
- "en-MY",
- "en-NZ",
- "en-PH",
- "en-SG",
- "en-UK",
- "en-US",
- "en-ZA",
- "es-AR",
- "es-CL",
- "es-CO",
- "es-ES",
- "es-MX",
- "es-PE",
- "es-US",
- "et-EE",
- "fi-FI",
- "fr-BE",
- "fr-CA",
- "fr-CH",
- "fr-FR",
- "he-IL",
- "hr-HR",
- "hu-HU",
- "id-ID",
- "it-CH",
- "it-IT",
- "jp-JP",
- "kr-KR",
- "lt-LT",
- "lv-LV",
- "ms-MY",
- "nl-BE",
- "nl-NL",
- "no-NO",
- "pl-PL",
- "pt-BR",
- "pt-PT",
- "ro-RO",
- "ru-RU",
- "sk-SK",
- "sl-SL",
- "sv-SE",
- "th-TH",
- "tl-PH",
- "tr-TR",
- "tzh-HK",
- "tzh-TW",
- "vi-VN",
- "wt-WT",
- "zh-CN"
- ],
- "bing images": [
- "ar-AE",
- "ar-EG",
- "ar-SA",
- "da-DK",
- "de-AT",
- "de-CH",
- "de-DE",
- "en-AU",
- "en-CA",
- "en-GB",
- "en-ID",
- "en-IE",
- "en-IN",
- "en-MY",
- "en-NZ",
- "en-PH",
- "en-SG",
- "en-US",
- "en-ZA",
- "es-AR",
- "es-CL",
- "es-ES",
- "es-MX",
- "es-US",
- "fi-FI",
- "fr-BE",
- "fr-CA",
- "fr-CH",
- "fr-FR",
- "it-IT",
- "ja-JP",
- "ko-KR",
- "nl-BE",
- "nl-NL",
- "no-NO",
- "pl-PL",
- "pt-BR",
- "pt-PT",
- "ru-RU",
- "sv-SE",
- "tr-TR",
- "zh-CN",
- "zh-HK",
- "zh-TW"
- ],
- "bing news": [
- "ar",
- "bg",
- "ca",
- "cs",
- "da",
- "de",
- "el",
- "en",
- "es",
- "et",
- "fa",
- "fi",
- "fr",
- "he",
- "hr",
- "hu",
- "id",
- "is",
- "it",
- "ja",
- "ko",
- "lt",
- "lv",
- "ms",
- "nl",
- "no",
- "pl",
- "pt-BR",
- "pt-PT",
- "ro",
- "ru",
- "sk",
- "sl",
- "sq",
- "sr",
- "sv",
- "th",
- "tr",
- "uk",
- "vi",
- "zh-CHS",
- "zh-CHT"
- ],
- "dailymotion": {
- "fag": {
- "english_name": "Finongan"
- },
- "mpd": {
- "english_name": "Machinere"
- },
- "bzx": {
- "english_name": "Bozo, Kɛlɛngaxo"
- },
- "kpc": {
- "english_name": "Curripaco"
- },
- "sll": {
- "english_name": "Salt-Yui"
- },
- "bop": {
- "english_name": "Bonkiman"
- },
- "mlz": {
- "english_name": "Malaynon"
- },
- "gnw": {
- "english_name": "Guaraní, Western Bolivian"
- },
- "sbc": {
- "english_name": "Kele (Papua New Guinea)"
- },
- "pbc": {
- "english_name": "Patamona"
- },
- "xkw": {
- "english_name": "Kembra"
- },
- "bec": {
- "english_name": "Iceve-Maci"
- },
- "tlg": {
- "english_name": "Tofanma"
- },
- "ges": {
- "english_name": "Geser-Gorom"
- },
- "mxh": {
- "english_name": "Mvuba"
- },
- "wos": {
- "english_name": "Hanga Hundi"
- },
- "mrf": {
- "english_name": "Elseng"
- },
- "tdr": {
- "english_name": "Todrah"
- },
- "dos": {
- "english_name": "Dogosé"
- },
- "lah": {
- "english_name": "Lahnda"
- },
- "qxa": {
- "english_name": "Quechua, Chiquián Ancash"
- },
- "kkv": {
- "english_name": "Kangean"
- },
- "ajt": {
- "english_name": "Arabic, Judeo-Tunisian"
- },
- "dof": {
- "english_name": "Domu"
- },
- "cll": {
- "english_name": "Chala"
- },
- "dta": {
- "english_name": "Daur"
- },
- "gji": {
- "english_name": "Geji"
- },
- "nmx": {
- "english_name": "Nama (Papua New Guinea)"
- },
- "tcl": {
- "english_name": "Taman (Myanmar)"
- },
- "kcc": {
- "english_name": "Lubila"
- },
- "tsl": {
- "english_name": "Ts'ün-Lao"
- },
- "abl": {
- "english_name": "Lampung Nyo"
- },
- "ply": {
- "english_name": "Bolyu"
- },
- "xor": {
- "english_name": "Korubo"
- },
- "tpc": {
- "english_name": "Me'phaa, Azoyú"
- },
- "ard": {
- "english_name": "Arabana"
- },
- "jen": {
- "english_name": "Dza"
- },
- "ofs": {
- "english_name": "Frisian, Old"
- },
- "bzz": {
- "english_name": "Evant"
- },
- "ts": {
- "english_name": "Tsonga"
- },
- "vin": {
- "english_name": "Vinza"
- },
- "blm": {
- "english_name": "Beli (Sudan)"
- },
- "mkc": {
- "english_name": "Siliput"
- },
- "utu": {
- "english_name": "Utu"
- },
- "xnt": {
- "english_name": "Narragansett"
- },
- "rue": {
- "english_name": "Rusyn"
- },
- "kaw": {
- "english_name": "Kawi"
- },
- "peo": {
- "english_name": "Persian, Old (ca. 600-400 B.C.)"
- },
- "gjn": {
- "english_name": "Gonja"
- },
- "ecy": {
- "english_name": "Eteocypriot"
- },
- "jdt": {
- "english_name": "Judeo-Tat"
- },
- "esl": {
- "english_name": "Egypt Sign Language"
- },
- "bti": {
- "english_name": "Burate"
- },
- "nev": {
- "english_name": "Nyaheun"
- },
- "omb": {
- "english_name": "Ambae, East"
- },
- "ks": {
- "english_name": "Kashmiri"
- },
- "gbg": {
- "english_name": "Gbanziri"
- },
- "bhp": {
- "english_name": "Bima"
- },
- "kpz": {
- "english_name": "Kupsabiny"
- },
- "zyg": {
- "english_name": "Zhuang, Yang"
- },
- "dsq": {
- "english_name": "Tadaksahak"
- },
- "pck": {
- "english_name": "Chin, Paite"
- },
- "wim": {
- "english_name": "Wik-Mungkan"
- },
- "tbc": {
- "english_name": "Takia"
- },
- "xcr": {
- "english_name": "Carian"
- },
- "ar": {
- "english_name": "Arabic",
- "name": "العربية"
- },
- "vai": {
- "english_name": "Vai"
- },
- "gll": {
- "english_name": "Garlali"
- },
- "bmf": {
- "english_name": "Bom"
- },
- "abt": {
- "english_name": "Ambulas"
- },
- "mok": {
- "english_name": "Morori"
- },
- "buc": {
- "english_name": "Bushi"
- },
- "lbn": {
- "english_name": "Lamet"
- },
- "aoj": {
- "english_name": "Mufian"
- },
- "mpl": {
- "english_name": "Watut, Middle"
- },
- "unz": {
- "english_name": "Kaili, Unde"
- },
- "csl": {
- "english_name": "Chinese Sign Language"
- },
- "mby": {
- "english_name": "Memoni"
- },
- "maf": {
- "english_name": "Mafa"
- },
- "shn": {
- "english_name": "Shan"
- },
- "teo": {
- "english_name": "Teso"
- },
- "xts": {
- "english_name": "Mixtec, Sindihui"
- },
- "sms": {
- "english_name": "Sami, Skolt"
- },
- "kln": {
- "english_name": "Kalenjin"
- },
- "dij": {
- "english_name": "Dai"
- },
- "msu": {
- "english_name": "Musom"
- },
- "vi": {
- "english_name": "Vietnamese",
- "name": "Tiếng Việt"
- },
- "kyk": {
- "english_name": "Kamayo"
- },
- "ngr": {
- "english_name": "Engdewu"
- },
- "klm": {
- "english_name": "Migum"
- },
- "igm": {
- "english_name": "Kanggape"
- },
- "bto": {
- "english_name": "Bikol, Rinconada"
- },
- "krm": {
- "english_name": "Krim"
- },
- "tii": {
- "english_name": "Tiene"
- },
- "dob": {
- "english_name": "Dobu"
- },
- "ttj": {
- "english_name": "Tooro"
- },
- "sjk": {
- "english_name": "Sami, Kemi"
- },
- "nrz": {
- "english_name": "Lala"
- },
- "zch": {
- "english_name": "Zhuang, Central Hongshuihe"
- },
- "aws": {
- "english_name": "Awyu, South"
- },
- "alo": {
- "english_name": "Larike-Wakasihu"
- },
- "plp": {
- "english_name": "Palpa"
- },
- "nwa": {
- "english_name": "Nawathinehena"
- },
- "aon": {
- "english_name": "Arapesh, Bumbita"
- },
- "tag": {
- "english_name": "Tagoi"
- },
- "dei": {
- "english_name": "Demisa"
- },
- "smk": {
- "english_name": "Bolinao"
- },
- "ndf": {
- "english_name": "Nadruvian"
- },
- "sly": {
- "english_name": "Selayar"
- },
- "twu": {
- "english_name": "Termanu"
- },
- "ags": {
- "english_name": "Esimbi"
- },
- "zyj": {
- "english_name": "Zhuang, Youjiang"
- },
- "xap": {
- "english_name": "Apalachee"
- },
- "imn": {
- "english_name": "Imonda"
- },
- "goj": {
- "english_name": "Gowlan"
- },
- "ikz": {
- "english_name": "Ikizu"
- },
- "miy": {
- "english_name": "Mixtec, Ayutla"
- },
- "iyo": {
- "english_name": "Mesaka"
- },
- "kdl": {
- "english_name": "Tsikimba"
- },
- "ptt": {
- "english_name": "Enrekang"
- },
- "ymq": {
- "english_name": "Muji, Qila"
- },
- "vaa": {
- "english_name": "Vaagri Booli"
- },
- "xcy": {
- "english_name": "Cayuse"
- },
- "pgg": {
- "english_name": "Pangwali"
- },
- "aly": {
- "english_name": "Alyawarr"
- },
- "bdt": {
- "english_name": "Bokoto"
- },
- "zkk": {
- "english_name": "Karankawa"
- },
- "mkj": {
- "english_name": "Mokilese"
- },
- "way": {
- "english_name": "Wayana"
- },
- "kxs": {
- "english_name": "Kangjia"
- },
- "sdk": {
- "english_name": "Sos Kundi"
- },
- "mne": {
- "english_name": "Naba"
- },
- "iry": {
- "english_name": "Iraya"
- },
- "ngp": {
- "english_name": "Ngulu"
- },
- "eke": {
- "english_name": "Ekit"
- },
- "mkr": {
- "english_name": "Malas"
- },
- "sxo": {
- "english_name": "Sorothaptic"
- },
- "auy": {
- "english_name": "Awiyaana"
- },
- "llc": {
- "english_name": "Lele (Guinea)"
- },
- "bcs": {
- "english_name": "Kohumono"
- },
- "aja": {
- "english_name": "Aja (Sudan)"
- },
- "kab": {
- "english_name": "Kabyle"
- },
- "mdv": {
- "english_name": "Mixtec, Santa Lucía Monteverde"
- },
- "vkj": {
- "english_name": "Kujarge"
- },
- "kad": {
- "english_name": "Adara"
- },
- "ymx": {
- "english_name": "Muji, Northern"
- },
- "aup": {
- "english_name": "Makayam"
- },
- "swo": {
- "english_name": "Shanenawa"
- },
- "plq": {
- "english_name": "Palaic"
- },
- "mph": {
- "english_name": "Maung"
- },
- "ksv": {
- "english_name": "Kusu"
- },
- "zkn": {
- "english_name": "Kanan"
- },
- "kcy": {
- "english_name": "Korandje"
- },
- "mzu": {
- "english_name": "Inapang"
- },
- "svm": {
- "english_name": "Slavomolisano"
- },
- "aos": {
- "english_name": "Taikat"
- },
- "cip": {
- "english_name": "Chiapanec"
- },
- "nsp": {
- "english_name": "Nepalese Sign Language"
- },
- "akd": {
- "english_name": "Ukpet-Ehom"
- },
- "wrd": {
- "english_name": "Warduji"
- },
- "zng": {
- "english_name": "Mang"
- },
- "obo": {
- "english_name": "Manobo, Obo"
- },
- "dwa": {
- "english_name": "Diri"
- },
- "vrt": {
- "english_name": "Burmbar"
- },
- "xem": {
- "english_name": "Kembayan"
- },
- "cpc": {
- "english_name": "Ajyíninka Apurucayali"
- },
- "sib": {
- "english_name": "Sebop"
- },
- "mff": {
- "english_name": "Naki"
- },
- "yes": {
- "english_name": "Nyankpa"
- },
- "txc": {
- "english_name": "Tsetsaut"
- },
- "cbl": {
- "english_name": "Chin, Bualkhaw"
- },
- "fi": {
- "english_name": "Finnish",
- "name": "suomi"
- },
- "lgl": {
- "english_name": "Wala"
- },
- "etr": {
- "english_name": "Edolo"
- },
- "tyz": {
- "english_name": "Tày"
- },
- "aqd": {
- "english_name": "Dogon, Ampari"
- },
- "tja": {
- "english_name": "Tajuasohn"
- },
- "nnb": {
- "english_name": "Nande"
- },
- "ayo": {
- "english_name": "Ayoreo"
- },
- "ctp": {
- "english_name": "Chatino, Western Highland"
- },
- "knm": {
- "english_name": "Kanamarí"
- },
- "dgr": {
- "english_name": "Dogrib"
- },
- "bs": {
- "english_name": "Bosnian",
- "name": "Bosnian"
- },
- "byv": {
- "english_name": "Medumba"
- },
- "kts": {
- "english_name": "Muyu, South"
- },
- "bpu": {
- "english_name": "Bongu"
- },
- "nen": {
- "english_name": "Nengone"
- },
- "sl": {
- "english_name": "Slovenian",
- "name": "slovenščina"
- },
- "tmd": {
- "english_name": "Haruai"
- },
- "yrb": {
- "english_name": "Yareba"
- },
- "rie": {
- "english_name": "Rien"
- },
- "qu": {
- "english_name": "Quechua"
- },
- "dgh": {
- "english_name": "Dghwede"
- },
- "vmw": {
- "english_name": "Makhuwa"
- },
- "grx": {
- "english_name": "Guriaso"
- },
- "sar": {
- "english_name": "Saraveca"
- },
- "ztm": {
- "english_name": "Zapotec, San Agustín Mixtepec"
- },
- "boa": {
- "english_name": "Bora"
- },
- "xga": {
- "english_name": "Galatian"
- },
- "aas": {
- "english_name": "Aasáx"
- },
- "kif": {
- "english_name": "Kham, Eastern Parbate"
- },
- "bsw": {
- "english_name": "Baiso"
- },
- "drd": {
- "english_name": "Darmiya"
- },
- "twe": {
- "english_name": "Tewa (Indonesia)"
- },
- "abx": {
- "english_name": "Inabaknon"
- },
- "ntw": {
- "english_name": "Nottoway"
- },
- "lse": {
- "english_name": "Lusengo"
- },
- "xby": {
- "english_name": "Batyala"
- },
- "cjm": {
- "english_name": "Cham, Eastern"
- },
- "dgi": {
- "english_name": "Dagara, Northern"
- },
- "xps": {
- "english_name": "Pisidian"
- },
- "hlb": {
- "english_name": "Halbi"
- },
- "dnt": {
- "english_name": "Dani, Mid Grand Valley"
- },
- "bht": {
- "english_name": "Bhattiyali"
- },
- "mbz": {
- "english_name": "Mixtec, Amoltepec"
- },
- "gvp": {
- "english_name": "Gavião, Pará"
- },
- "cmr": {
- "english_name": "Chin, Mro-Khimi"
- },
- "qvl": {
- "english_name": "Quechua, Cajatambo North Lima"
- },
- "moy": {
- "english_name": "Shekkacho"
- },
- "smy": {
- "english_name": "Semnani"
- },
- "aqn": {
- "english_name": "Alta, Northern"
- },
- "syk": {
- "english_name": "Sukur"
- },
- "gdl": {
- "english_name": "Dirasha"
- },
- "doh": {
- "english_name": "Dong"
- },
- "jda": {
- "english_name": "Jad"
- },
- "mad": {
- "english_name": "Madurese"
- },
- "var": {
- "english_name": "Huarijio"
- },
- "trj": {
- "english_name": "Toram"
- },
- "tvy": {
- "english_name": "Pidgin, Timor"
- },
- "luy": {
- "english_name": "Luyia"
- },
- "ldi": {
- "english_name": "Laari"
- },
- "nlu": {
- "english_name": "Nchumbulu"
- },
- "klr": {
- "english_name": "Khaling"
- },
- "mfk": {
- "english_name": "Mofu, North"
- },
- "ksr": {
- "english_name": "Borong"
- },
- "akt": {
- "english_name": "Akolet"
- },
- "bkt": {
- "english_name": "Boloki"
- },
- "ruf": {
- "english_name": "Luguru"
- },
- "dka": {
- "english_name": "Dakpakha"
- },
- "bdw": {
- "english_name": "Baham"
- },
- "myl": {
- "english_name": "Moma"
- },
- "bda": {
- "english_name": "Bayot"
- },
- "bpr": {
- "english_name": "Blaan, Koronadal"
- },
- "ugn": {
- "english_name": "Ugandan Sign Language"
- },
- "mel": {
- "english_name": "Melanau, Central"
- },
- "kwo": {
- "english_name": "Kwomtari"
- },
- "bmd": {
- "english_name": "Manduri, Baga"
- },
- "rkw": {
- "english_name": "Arakwal"
- },
- "png": {
- "english_name": "Pongu"
- },
- "bzm": {
- "english_name": "Bolondo"
- },
- "sbw": {
- "english_name": "Simba"
- },
- "aqp": {
- "english_name": "Atakapa"
- },
- "sah": {
- "english_name": "Yakut"
- },
- "cps": {
- "english_name": "Capiznon"
- },
- "dze": {
- "english_name": "Djiwarli"
- },
- "srs": {
- "english_name": "Sarsi"
- },
- "anz": {
- "english_name": "Anem"
- },
- "skw": {
- "english_name": "Creole Dutch, Skepi"
- },
- "nut": {
- "english_name": "Nung (Viet Nam)"
- },
- "ngc": {
- "english_name": "Ngombe (Democratic Republic of Congo)"
- },
- "xrb": {
- "english_name": "Karaboro, Eastern"
- },
- "btm": {
- "english_name": "Batak Mandailing"
- },
- "poo": {
- "english_name": "Pomo, Central"
- },
- "tlb": {
- "english_name": "Tobelo"
- },
- "nil": {
- "english_name": "Nila"
- },
- "nns": {
- "english_name": "Ningye"
- },
- "skg": {
- "english_name": "Malagasy, Sakalava"
- },
- "sww": {
- "english_name": "Sowa"
- },
- "kyg": {
- "english_name": "Keyagana"
- },
- "hah": {
- "english_name": "Hahon"
- },
- "hii": {
- "english_name": "Hinduri"
- },
- "fui": {
- "english_name": "Fulfulde, Bagirmi"
- },
- "ahh": {
- "english_name": "Aghu"
- },
- "tec": {
- "english_name": "Terik"
- },
- "whu": {
- "english_name": "Kayan, Wahau"
- },
- "txt": {
- "english_name": "Citak"
- },
- "qug": {
- "english_name": "Quichua, Chimborazo Highland"
- },
- "bhg": {
- "english_name": "Binandere"
- },
- "xsn": {
- "english_name": "Sanga (Nigeria)"
- },
- "tbu": {
- "english_name": "Tubar"
- },
- "ysl": {
- "english_name": "Yugoslavian Sign Language"
- },
- "kfd": {
- "english_name": "Koraga, Korra"
- },
- "mt": {
- "english_name": "Maltese",
- "name": "Malti"
- },
- "saq": {
- "english_name": "Samburu"
- },
- "stp": {
- "english_name": "Tepehuan, Southeastern"
- },
- "sbq": {
- "english_name": "Sileibi"
- },
- "tnb": {
- "english_name": "Tunebo, Western"
- },
- "aec": {
- "english_name": "Arabic, Saidi"
- },
- "tpg": {
- "english_name": "Kula"
- },
- "kjo": {
- "english_name": "Kinnauri, Harijan"
- },
- "leq": {
- "english_name": "Lembena"
- },
- "ktd": {
- "english_name": "Kokata"
- },
- "tad": {
- "english_name": "Tause"
- },
- "mtq": {
- "english_name": "Muong"
- },
- "tig": {
- "english_name": "Tigre",
- "name": "ትግረ"
- },
- "ht": {
- "english_name": "Haitian"
- },
- "nkk": {
- "english_name": "Nokuku"
- },
- "blj": {
- "english_name": "Bolongan"
- },
- "tdo": {
- "english_name": "Teme"
- },
- "xmc": {
- "english_name": "Makhuwa-Marrevone"
- },
- "mbf": {
- "english_name": "Malay, Baba"
- },
- "aty": {
- "english_name": "Aneityum"
- },
- "grb": {
- "english_name": "Grebo"
- },
- "cwe": {
- "english_name": "Kwere"
- },
- "cfa": {
- "english_name": "Dijim-Bwilim"
- },
- "gig": {
- "english_name": "Goaria"
- },
- "mxn": {
- "english_name": "Moi (Indonesia)"
- },
- "zac": {
- "english_name": "Zapotec, Ocotlán"
- },
- "bny": {
- "english_name": "Bintulu"
- },
- "jeu": {
- "english_name": "Jonkor Bourmataguil"
- },
- "gnk": {
- "english_name": "//Gana"
- },
- "pfa": {
- "english_name": "Pááfang"
- },
- "bcq": {
- "english_name": "Bench"
- },
- "dbv": {
- "english_name": "Dungu"
- },
- "zhn": {
- "english_name": "Zhuang, Nong"
- },
- "hba": {
- "english_name": "Hamba"
- },
- "kte": {
- "english_name": "Nubri"
- },
- "fy": {
- "english_name": "Frisian, Western"
- },
- "nhi": {
- "english_name": "Nahuatl, Zacatlán-Ahuacatlán-Tepetzintla"
- },
- "okx": {
- "english_name": "Okpe (Northwestern Edo)"
- },
- "kwa": {
- "english_name": "Dâw"
- },
- "kjh": {
- "english_name": "Khakas"
- },
- "mr": {
- "english_name": "Marathi",
- "name": "मराठी"
- },
- "ngz": {
- "english_name": "Ngungwel"
- },
- "gbi": {
- "english_name": "Galela"
- },
- "ubu": {
- "english_name": "Umbu-Ungu"
- },
- "bgn": {
- "english_name": "Balochi, Western"
- },
- "las": {
- "english_name": "Lama (Togo)"
- },
- "ojp": {
- "english_name": "Japanese, Old"
- },
- "asd": {
- "english_name": "Asas"
- },
- "nej": {
- "english_name": "Neko"
- },
- "ygr": {
- "english_name": "Yagaria"
- },
- "goz": {
- "english_name": "Gozarkhani"
- },
- "nat": {
- "english_name": "Hungworo"
- },
- "ymp": {
- "english_name": "Yamap"
- },
- "zaz": {
- "english_name": "Zari"
- },
- "yaz": {
- "english_name": "Lokaa"
- },
- "nd": {
- "english_name": "Ndebele, North"
- },
- "lkm": {
- "english_name": "Kalaamaya"
- },
- "brl": {
- "english_name": "Birwa"
- },
- "lbj": {
- "english_name": "Ladakhi"
- },
- "chk": {
- "english_name": "Chuukese"
- },
- "mva": {
- "english_name": "Manam"
- },
- "lvk": {
- "english_name": "Lavukaleve"
- },
- "hnj": {
- "english_name": "Hmong Njua"
- },
- "lko": {
- "english_name": "Khayo"
- },
- "mgi": {
- "english_name": "Lijili"
- },
- "cmo": {
- "english_name": "Mnong, Central"
- },
- "woa": {
- "english_name": "Tyaraity"
- },
- "eky": {
- "english_name": "Kayah, Eastern"
- },
- "yoy": {
- "english_name": "Yoy"
- },
- "bap": {
- "english_name": "Bantawa"
- },
- "auq": {
- "english_name": "Anus"
- },
- "sam": {
- "english_name": "Aramaic, Samaritan"
- },
- "nhm": {
- "english_name": "Nahuatl, Morelos"
- },
- "agb": {
- "english_name": "Legbo"
- },
- "dag": {
- "english_name": "Dagbani"
- },
- "sep": {
- "english_name": "Sénoufo, Sìcìté"
- },
- "kbm": {
- "english_name": "Iwal"
- },
- "tqw": {
- "english_name": "Tonkawa"
- },
- "cwb": {
- "english_name": "Maindo"
- },
- "ba": {
- "english_name": "Bashkir"
- },
- "nht": {
- "english_name": "Nahuatl, Ometepec"
- },
- "kfo": {
- "english_name": "Koro (Côte d'Ivoire)"
- },
- "hol": {
- "english_name": "Holu"
- },
- "bqi": {
- "english_name": "Bakhtiari"
- },
- "ggn": {
- "english_name": "Gurung, Eastern"
- },
- "mvm": {
- "english_name": "Muya"
- },
- "shq": {
- "english_name": "Sala"
- },
- "tom": {
- "english_name": "Tombulu"
- },
- "bsp": {
- "english_name": "Baga Sitemu"
- },
- "dau": {
- "english_name": "Daju, Dar Sila"
- },
- "trw": {
- "english_name": "Torwali"
- },
- "car": {
- "english_name": "Carib, Galibi"
- },
- "xpr": {
- "english_name": "Parthian"
- },
- "tmp": {
- "english_name": "Tai Mène"
- },
- "bkw": {
- "english_name": "Bekwel"
- },
- "wll": {
- "english_name": "Wali (Sudan)"
- },
- "kgb": {
- "english_name": "Kawe"
- },
- "peq": {
- "english_name": "Pomo, Southern"
- },
- "mcb": {
- "english_name": "Machiguenga"
- },
- "pka": {
- "english_name": "Prākrit, Ardhamāgadhī"
- },
- "lih": {
- "english_name": "Lihir"
- },
- "ska": {
- "english_name": "Skagit"
- },
- "mze": {
- "english_name": "Morawa"
- },
- "tlm": {
- "english_name": "Tolomako"
- },
- "ulw": {
- "english_name": "Ulwa"
- },
- "rug": {
- "english_name": "Roviana"
- },
- "kpr": {
- "english_name": "Korafe-Yegha"
- },
- "ary": {
- "english_name": "Arabic, Moroccan"
- },
- "eso": {
- "english_name": "Estonian Sign Language"
- },
- "xgl": {
- "english_name": "Galindan"
- },
- "kvq": {
- "english_name": "Karen, Geba"
- },
- "xkd": {
- "english_name": "Kayan, Mendalam"
- },
- "bwb": {
- "english_name": "Namosi-Naitasiri-Serua"
- },
- "ttv": {
- "english_name": "Titan"
- },
- "nyj": {
- "english_name": "Nyanga"
- },
- "bok": {
- "english_name": "Bonjo"
- },
- "nhc": {
- "english_name": "Nahuatl, Tabasco"
- },
- "wsa": {
- "english_name": "Warembori"
- },
- "bnk": {
- "english_name": "Bierebo"
- },
- "boq": {
- "english_name": "Bogaya"
- },
- "nyh": {
- "english_name": "Nyigina"
- },
- "rog": {
- "english_name": "Roglai, Northern"
- },
- "swf": {
- "english_name": "Sere"
- },
- "cpo": {
- "english_name": "Kpeego"
- },
- "krd": {
- "english_name": "Kairui-Midiki"
- },
- "tyj": {
- "english_name": "Tai Do"
- },
- "zrg": {
- "english_name": "Mirgan"
- },
- "mki": {
- "english_name": "Dhatki"
- },
- "jpa": {
- "english_name": "Aramaic, Jewish Palestinian"
- },
- "uun": {
- "english_name": "Kulon-Pazeh"
- },
- "tdt": {
- "english_name": "Tetun Dili"
- },
- "bhc": {
- "english_name": "Biga"
- },
- "bnc": {
- "english_name": "Bontok"
- },
- "ekm": {
- "english_name": "Elip"
- },
- "lcl": {
- "english_name": "Lisela"
- },
- "pmy": {
- "english_name": "Malay, Papuan"
- },
- "xeu": {
- "english_name": "Keoru-Ahia"
- },
- "nif": {
- "english_name": "Nek"
- },
- "ilk": {
- "english_name": "Ilongot"
- },
- "cof": {
- "english_name": "Colorado"
- },
- "nhy": {
- "english_name": "Nahuatl, Northern Oaxaca"
- },
- "bth": {
- "english_name": "Bidayuh, Biatah"
- },
- "tla": {
- "english_name": "Tepehuan, Southwestern"
- },
- "xcm": {
- "english_name": "Comecrudo"
- },
- "crt": {
- "english_name": "Chorote, Iyojwa'ja"
- },
- "raf": {
- "english_name": "Meohang, Western"
- },
- "ifu": {
- "english_name": "Ifugao, Mayoyao"
- },
- "rau": {
- "english_name": "Raute"
- },
- "xbc": {
- "english_name": "Bactrian"
- },
- "arn": {
- "english_name": "Mapudungun"
- },
- "yia": {
- "english_name": "Yinggarda"
- },
- "eip": {
- "english_name": "Eipomek"
- },
- "wro": {
- "english_name": "Worrorra"
- },
- "sif": {
- "english_name": "Siamou"
- },
- "bjf": {
- "english_name": "Neo-Aramaic, Barzani Jewish"
- },
- "sau": {
- "english_name": "Saleman"
- },
- "zmu": {
- "english_name": "Muruwari"
- },
- "bar": {
- "english_name": "Bavarian"
- },
- "dbt": {
- "english_name": "Dogon, Ben Tey"
- },
- "ets": {
- "english_name": "Yekhee"
- },
- "czt": {
- "english_name": "Chin, Zotung"
- },
- "dgc": {
- "english_name": "Agta, Casiguran Dumagat"
- },
- "kgr": {
- "english_name": "Abun"
- },
- "bek": {
- "english_name": "Bebeli"
- },
- "taz": {
- "english_name": "Tocho"
- },
- "lep": {
- "english_name": "Lepcha"
- },
- "kmv": {
- "english_name": "Creole French, Karipúna"
- },
- "nim": {
- "english_name": "Nilamba"
- },
- "tum": {
- "english_name": "Tumbuka"
- },
- "bsu": {
- "english_name": "Bahonsuai"
- },
- "tco": {
- "english_name": "Taungyo"
- },
- "spm": {
- "english_name": "Akukem"
- },
- "jv": {
- "english_name": "Javanese"
- },
- "isa": {
- "english_name": "Isabi"
- },
- "fay": {
- "english_name": "Fars, Southwestern"
- },
- "pln": {
- "english_name": "Palenquero"
- },
- "qvj": {
- "english_name": "Quichua, Loja Highland"
- },
- "xav": {
- "english_name": "Xavánte"
- },
- "vsv": {
- "english_name": "Valencian Sign Language"
- },
- "tyl": {
- "english_name": "Thu Lao"
- },
- "spq": {
- "english_name": "Spanish, Loreto-Ucayali"
- },
- "ak": {
- "english_name": "Akan"
- },
- "mug": {
- "english_name": "Musgu"
- },
- "jum": {
- "english_name": "Jumjum"
- },
- "era": {
- "english_name": "Eravallan"
- },
- "kjb": {
- "english_name": "Q'anjob'al"
- },
- "irh": {
- "english_name": "Irarutu"
- },
- "elx": {
- "english_name": "Elamite"
- },
- "cay": {
- "english_name": "Cayuga"
- },
- "yun": {
- "english_name": "Bena (Nigeria)"
- },
- "god": {
- "english_name": "Godié"
- },
- "nnp": {
- "english_name": "Naga, Wancho"
- },
- "kem": {
- "english_name": "Kemak"
- },
- "knu": {
- "english_name": "Kono (Guinea)"
- },
- "grc": {
- "english_name": "Greek, Ancient (to 1453)"
- },
- "muz": {
- "english_name": "Mursi"
- },
- "gye": {
- "english_name": "Gyem"
- },
- "noe": {
- "english_name": "Nimadi"
- },
- "sgy": {
- "english_name": "Sanglechi"
- },
- "bvu": {
- "english_name": "Malay, Bukit"
- },
- "fln": {
- "english_name": "Flinders Island"
- },
- "qul": {
- "english_name": "Quechua, North Bolivian"
- },
- "uta": {
- "english_name": "Otank"
- },
- "ebu": {
- "english_name": "Embu"
- },
- "hmi": {
- "english_name": "Hmong, Northern Huishui"
- },
- "tku": {
- "english_name": "Totonac, Upper Necaxa"
- },
- "ppe": {
- "english_name": "Papi"
- },
- "ril": {
- "english_name": "Riang (Myanmar)"
- },
- "iya": {
- "english_name": "Iyayu"
- },
- "gwx": {
- "english_name": "Gua"
- },
- "sjw": {
- "english_name": "Shawnee"
- },
- "kpo": {
- "english_name": "Ikposo"
- },
- "ars": {
- "english_name": "Arabic, Najdi"
- },
- "xru": {
- "english_name": "Marriammu"
- },
- "nmg": {
- "english_name": "Kwasio"
- },
- "slu": {
- "english_name": "Selaru"
- },
- "lmv": {
- "english_name": "Lomaiviti"
- },
- "ide": {
- "english_name": "Idere"
- },
- "bev": {
- "english_name": "Bété, Daloa"
- },
- "xat": {
- "english_name": "Katawixi"
- },
- "wbl": {
- "english_name": "Wakhi"
- },
- "gno": {
- "english_name": "Gondi, Northern"
- },
- "ngy": {
- "english_name": "Tibea"
- },
- "fie": {
- "english_name": "Fyer"
- },
- "vau": {
- "english_name": "Vanuma"
- },
- "bml": {
- "english_name": "Bomboli"
- },
- "gip": {
- "english_name": "Gimi (West New Britain)"
- },
- "dia": {
- "english_name": "Dia"
- },
- "ury": {
- "english_name": "Orya"
- },
- "kmj": {
- "english_name": "Kumarbhag Paharia"
- },
- "ort": {
- "english_name": "Oriya, Adivasi"
- },
- "ast": {
- "english_name": "Asturian",
- "name": "Asturianu"
- },
- "ptw": {
- "english_name": "Pentlatch"
- },
- "vma": {
- "english_name": "Martuyhunira"
- },
- "emu": {
- "english_name": "Muria, Eastern"
- },
- "emg": {
- "english_name": "Meohang, Eastern"
- },
- "puj": {
- "english_name": "Punan Tubu"
- },
- "bcg": {
- "english_name": "Baga Binari"
- },
- "kkq": {
- "english_name": "Kaiku"
- },
- "gea": {
- "english_name": "Geruma"
- },
- "kdr": {
- "english_name": "Karaim"
- },
- "ima": {
- "english_name": "Malasar, Mala"
- },
- "afk": {
- "english_name": "Nanubae"
- },
- "auh": {
- "english_name": "Aushi"
- },
- "ksx": {
- "english_name": "Kedang"
- },
- "dnr": {
- "english_name": "Danaru"
- },
- "kku": {
- "english_name": "Tumi"
- },
- "ckl": {
- "english_name": "Cibak"
- },
- "gaj": {
- "english_name": "Gadsup"
- },
- "obm": {
- "english_name": "Moabite"
- },
- "sc": {
- "english_name": "Sardinian"
- },
- "lbx": {
- "english_name": "Lawangan"
- },
- "pno": {
- "english_name": "Panobo"
- },
- "bds": {
- "english_name": "Burunge"
- },
- "crc": {
- "english_name": "Lonwolwol"
- },
- "gwn": {
- "english_name": "Gwandara"
- },
- "tnd": {
- "english_name": "Tunebo, Angosturas"
- },
- "daj": {
- "english_name": "Daju, Dar Fur"
- },
- "iwk": {
- "english_name": "I-Wak"
- },
- "hsb": {
- "english_name": "Sorbian, Upper"
- },
- "kvz": {
- "english_name": "Tsakwambo"
- },
- "zen": {
- "english_name": "Zenaga"
- },
- "tgv": {
- "english_name": "Tingui-Boto"
- },
- "yel": {
- "english_name": "Yela"
- },
- "av": {
- "english_name": "Avaric"
- },
- "pin": {
- "english_name": "Piame"
- },
- "aed": {
- "english_name": "Argentine Sign Language"
- },
- "esk": {
- "english_name": "Inupiatun, Northwest Alaska"
- },
- "jul": {
- "english_name": "Jirel"
- },
- "mkf": {
- "english_name": "Miya"
- },
- "mgo": {
- "english_name": "Meta'"
- },
- "tao": {
- "english_name": "Yami"
- },
- "paw": {
- "english_name": "Pawnee"
- },
- "los": {
- "english_name": "Loniu"
- },
- "iby": {
- "english_name": "Ibani"
- },
- "kxm": {
- "english_name": "Khmer, Northern"
- },
- "bxk": {
- "english_name": "Bukusu"
- },
- "wbk": {
- "english_name": "Waigali"
- },
- "tdq": {
- "english_name": "Tita"
- },
- "bwy": {
- "english_name": "Bwamu, Cwi"
- },
- "atk": {
- "english_name": "Ati"
- },
- "tss": {
- "english_name": "Taiwan Sign Language"
- },
- "jiu": {
- "english_name": "Jinuo, Youle"
- },
- "ywa": {
- "english_name": "Kalou"
- },
- "nxe": {
- "english_name": "Nage"
- },
- "gom": {
- "english_name": "Konkani, Goan"
- },
- "ssc": {
- "english_name": "Suba-Simbiti"
- },
- "pww": {
- "english_name": "Karen, Pwo Northern"
- },
- "aok": {
- "english_name": "Arhö"
- },
- "qya": {
- "english_name": "Quenya"
- },
- "ada": {
- "english_name": "Adangme"
- },
- "rir": {
- "english_name": "Ribun"
- },
- "kkh": {
- "english_name": "Khün"
- },
- "prc": {
- "english_name": "Parachi"
- },
- "quf": {
- "english_name": "Quechua, Lambayeque"
- },
- "yav": {
- "english_name": "Yangben"
- },
- "wbw": {
- "english_name": "Woi"
- },
- "gei": {
- "english_name": "Gebe"
- },
- "huy": {
- "english_name": "Hulaulá"
- },
- "nlk": {
- "english_name": "Yali, Ninia"
- },
- "njt": {
- "english_name": "Ndyuka-Trio Pidgin"
- },
- "tmu": {
- "english_name": "Iau"
- },
- "pbl": {
- "english_name": "Mak (Nigeria)"
- },
- "bpj": {
- "english_name": "Binji"
- },
- "ppu": {
- "english_name": "Papora"
- },
- "tnx": {
- "english_name": "Tanema"
- },
- "cal": {
- "english_name": "Carolinian"
- },
- "tdv": {
- "english_name": "Toro"
- },
- "kvw": {
- "english_name": "Wersing"
- },
- "lyn": {
- "english_name": "Luyana"
- },
- "tlk": {
- "english_name": "Taloki"
- },
- "dny": {
- "english_name": "Dení"
- },
- "bbk": {
- "english_name": "Babanki"
- },
- "afp": {
- "english_name": "Tapei"
- },
- "snj": {
- "english_name": "Sango, Riverain"
- },
- "lip": {
- "english_name": "Sekpele"
- },
- "bja": {
- "english_name": "Budza"
- },
- "umo": {
- "english_name": "Umotína"
- },
- "jan": {
- "english_name": "Jandai"
- },
- "cur": {
- "english_name": "Chhulung"
- },
- "urn": {
- "english_name": "Uruangnirin"
- },
- "xbb": {
- "english_name": "Burdekin, Lower"
- },
- "bhd": {
- "english_name": "Bhadrawahi"
- },
- "ixc": {
- "english_name": "Ixcatec"
- },
- "sku": {
- "english_name": "Sakao"
- },
- "enq": {
- "english_name": "Enga"
- },
- "ncl": {
- "english_name": "Nahuatl, Michoacán"
- },
- "nka": {
- "english_name": "Nkoya"
- },
- "xaw": {
- "english_name": "Kawaiisu"
- },
- "bcp": {
- "english_name": "Bali (Democratic Republic of Congo)"
- },
- "fit": {
- "english_name": "Finnish, Tornedalen"
- },
- "lab": {
- "english_name": "Linear A"
- },
- "jor": {
- "english_name": "Jorá"
- },
- "agd": {
- "english_name": "Agarabi"
- },
- "zsm": {
- "english_name": "Malay, Standard"
- },
- "vep": {
- "english_name": "Veps"
- },
- "tsd": {
- "english_name": "Tsakonian"
- },
- "yre": {
- "english_name": "Yaouré"
- },
- "atl": {
- "english_name": "Agta, Mt. Iraya"
- },
- "bhm": {
- "english_name": "Bathari"
- },
- "bwa": {
- "english_name": "Bwatoo"
- },
- "obl": {
- "english_name": "Oblo"
- },
- "xls": {
- "english_name": "Lusitanian"
- },
- "kdm": {
- "english_name": "Kagoma"
- },
- "crf": {
- "english_name": "Caramanta"
- },
- "kkw": {
- "english_name": "Teke-Kukuya"
- },
- "tsu": {
- "english_name": "Tsou"
- },
- "lma": {
- "english_name": "Limba, East"
- },
- "hut": {
- "english_name": "Humla"
- },
- "bqx": {
- "english_name": "Baangi"
- },
- "mgs": {
- "english_name": "Manda (Tanzania)"
- },
- "sve": {
- "english_name": "Serili"
- },
- "fpe": {
- "english_name": "Creole English, Fernando Po"
- },
- "gsl": {
- "english_name": "Gusilay"
- },
- "xbw": {
- "english_name": "Kambiwá"
- },
- "csq": {
- "english_name": "Croatia Sign Language"
- },
- "iko": {
- "english_name": "Olulumo-Ikom"
- },
- "krj": {
- "english_name": "Kinaray-A"
- },
- "mme": {
- "english_name": "Mae"
- },
- "mmt": {
- "english_name": "Malalamai"
- },
- "tpi": {
- "english_name": "Tok Pisin"
- },
- "col": {
- "english_name": "Columbia-Wenatchi"
- },
- "kvo": {
- "english_name": "Dobel"
- },
- "mfu": {
- "english_name": "Mbwela"
- },
- "bdv": {
- "english_name": "Bodo Parja"
- },
- "mvk": {
- "english_name": "Mekmek"
- },
- "cds": {
- "english_name": "Chadian Sign Language"
- },
- "yej": {
- "english_name": "Yevanic"
- },
- "bba": {
- "english_name": "Baatonum"
- },
- "ycl": {
- "english_name": "Lolopo"
- },
- "due": {
- "english_name": "Agta, Umiray Dumaget"
- },
- "byz": {
- "english_name": "Banaro"
- },
- "nzz": {
- "english_name": "Dogon, Nanga Dama"
- },
- "lmf": {
- "english_name": "Lembata, South"
- },
- "kwl": {
- "english_name": "Kofyar"
- },
- "ne": {
- "english_name": "Nepali (macrolanguage)"
- },
- "lzh": {
- "english_name": "Chinese, Literary"
- },
- "sse": {
- "english_name": "Balangingi"
- },
- "hif": {
- "english_name": "Hindi, Fiji"
- },
- "btr": {
- "english_name": "Baetora"
- },
- "pru": {
- "english_name": "Puragi"
- },
- "stg": {
- "english_name": "Trieng"
- },
- "tcg": {
- "english_name": "Tamagario"
- },
- "iin": {
- "english_name": "Thiin"
- },
- "pux": {
- "english_name": "Puare"
- },
- "xso": {
- "english_name": "Solano"
- },
- "ais": {
- "english_name": "Amis, Nataoran"
- },
- "cok": {
- "english_name": "Cora, Santa Teresa"
- },
- "lul": {
- "english_name": "Olu'bo"
- },
- "sns": {
- "english_name": "South West Bay"
- },
- "phv": {
- "english_name": "Pahlavani"
- },
- "ack": {
- "english_name": "Aka-Kora"
- },
- "zau": {
- "english_name": "Zangskari"
- },
- "yir": {
- "english_name": "Awyu, North"
- },
- "lya": {
- "english_name": "Layakha"
- },
- "llj": {
- "english_name": "Ladji Ladji"
- },
- "bmw": {
- "english_name": "Bomwali"
- },
- "ull": {
- "english_name": "Ullatan"
- },
- "tbt": {
- "english_name": "Tembo (Kitembo)"
- },
- "mxf": {
- "english_name": "Malgbe"
- },
- "kko": {
- "english_name": "Karko"
- },
- "mni": {
- "english_name": "Manipuri"
- },
- "zpj": {
- "english_name": "Zapotec, Quiavicuzas"
- },
- "jvn": {
- "english_name": "Javanese, Caribbean"
- },
- "sdp": {
- "english_name": "Sherdukpen"
- },
- "mtx": {
- "english_name": "Mixtec, Tidaá"
- },
- "osx": {
- "english_name": "Saxon, Old"
- },
- "gbp": {
- "english_name": "Gbaya-Bossangoa"
- },
- "xbe": {
- "english_name": "Bigambal"
- },
- "mjy": {
- "english_name": "Mahican"
- },
- "aij": {
- "english_name": "Lishanid Noshan"
- },
- "cbn": {
- "english_name": "Nyahkur"
- },
- "sbo": {
- "english_name": "Sabüm"
- },
- "zhd": {
- "english_name": "Zhuang, Dai"
- },
- "kgk": {
- "english_name": "Kaiwá"
- },
- "nfa": {
- "english_name": "Dhao"
- },
- "bmg": {
- "english_name": "Bamwe"
- },
- "aug": {
- "english_name": "Aguna"
- },
- "xkr": {
- "english_name": "Xakriabá"
- },
- "klj": {
- "english_name": "Khalaj, Turkic"
- },
- "hmh": {
- "english_name": "Hmong, Southwestern Huishui"
- },
- "yuf": {
- "english_name": "Havasupai-Walapai-Yavapai"
- },
- "tzh": {
- "english_name": "Tzeltal"
- },
- "oki": {
- "english_name": "Okiek"
- },
- "djk": {
- "english_name": "Eastern Maroon Creole"
- },
- "anv": {
- "english_name": "Denya"
- },
- "nss": {
- "english_name": "Nali"
- },
- "hil": {
- "english_name": "Hiligaynon"
- },
- "dym": {
- "english_name": "Dogon, Yanda Dom"
- },
- "pmh": {
- "english_name": "Prākrit, Māhārāṣṭri"
- },
- "zpi": {
- "english_name": "Zapotec, Santa María Quiegolani"
- },
- "slh": {
- "english_name": "Salish, Southern Puget Sound"
- },
- "abj": {
- "english_name": "Aka-Bea"
- },
- "bpl": {
- "english_name": "Broome Pearling Lugger Pidgin"
- },
- "zpp": {
- "english_name": "Zapotec, El Alto"
- },
- "es": {
- "english_name": "Spanish",
- "name": "Español"
- },
- "xpk": {
- "english_name": "Pano, Kulina"
- },
- "mxw": {
- "english_name": "Namo"
- },
- "cnh": {
- "english_name": "Chin, Haka"
- },
- "jbr": {
- "english_name": "Jofotek-Bromnya"
- },
- "ssg": {
- "english_name": "Seimat"
- },
- "lhp": {
- "english_name": "Lhokpu"
- },
- "mip": {
- "english_name": "Mixtec, Apasco-Apoala"
- },
- "kjy": {
- "english_name": "Erave"
- },
- "otb": {
- "english_name": "Tibetan, Old"
- },
- "otm": {
- "english_name": "Otomi, Eastern Highland"
- },
- "yix": {
- "english_name": "Yi, Axi"
- },
- "iwo": {
- "english_name": "Iwur"
- },
- "zmj": {
- "english_name": "Maridjabin"
- },
- "bvq": {
- "english_name": "Birri"
- },
- "tan": {
- "english_name": "Tangale"
- },
- "kjk": {
- "english_name": "Konjo, Highland"
- },
- "cji": {
- "english_name": "Chamalal"
- },
- "zmb": {
- "english_name": "Zimba"
- },
- "suv": {
- "english_name": "Puroik"
- },
- "byq": {
- "english_name": "Basay"
- },
- "phu": {
- "english_name": "Phuan"
- },
- "kac": {
- "english_name": "Kachin"
- },
- "tlu": {
- "english_name": "Tulehu"
- },
- "mht": {
- "english_name": "Mandahuaca"
- },
- "mqr": {
- "english_name": "Mander"
- },
- "axx": {
- "english_name": "Xârâgurè"
- },
- "mjw": {
- "english_name": "Karbi"
- },
- "dsi": {
- "english_name": "Disa"
- },
- "etz": {
- "english_name": "Semimi"
- },
- "arb": {
- "english_name": "Arabic, Standard"
- },
- "gwr": {
- "english_name": "Gwere"
- },
- "sae": {
- "english_name": "Sabanê"
- },
- "ann": {
- "english_name": "Obolo"
- },
- "jic": {
- "english_name": "Tol"
- },
- "nkz": {
- "english_name": "Nkari"
- },
- "srl": {
- "english_name": "Isirawa"
- },
- "nkf": {
- "english_name": "Naga, Inpui"
- },
- "hds": {
- "english_name": "Honduras Sign Language"
- },
- "khh": {
- "english_name": "Kehu"
- },
- "dti": {
- "english_name": "Dogon, Ana Tinga"
- },
- "bwq": {
- "english_name": "Bobo Madaré, Southern"
- },
- "gek": {
- "english_name": "Yiwom"
- },
- "dbn": {
- "english_name": "Duriankere"
- },
- "kax": {
- "english_name": "Kao"
- },
- "kwp": {
- "english_name": "Kodia"
- },
- "wkb": {
- "english_name": "Kumbaran"
- },
- "qua": {
- "english_name": "Quapaw"
- },
- "pee": {
- "english_name": "Taje"
- },
- "gne": {
- "english_name": "Ganang"
- },
- "mft": {
- "english_name": "Mokerang"
- },
- "hoc": {
- "english_name": "Ho"
- },
- "wym": {
- "english_name": "Wymysorys"
- },
- "mdm": {
- "english_name": "Mayogo"
- },
- "drr": {
- "english_name": "Dororo"
- },
- "mkt": {
- "english_name": "Vamale"
- },
- "psu": {
- "english_name": "Prākrit, Sauraseni"
- },
- "oue": {
- "english_name": "Oune"
- },
- "ynk": {
- "english_name": "Yupik, Naukan"
- },
- "sre": {
- "english_name": "Sara"
- },
- "kfs": {
- "english_name": "Bilaspuri"
- },
- "dnd": {
- "english_name": "Daonda"
- },
- "yyz": {
- "english_name": "Ayizi"
- },
- "yob": {
- "english_name": "Yoba"
- },
- "glj": {
- "english_name": "Gula Iro"
- },
- "bgg": {
- "english_name": "Bugun"
- },
- "hle": {
- "english_name": "Hlersu"
- },
- "soa": {
- "english_name": "Thai Song"
- },
- "nsx": {
- "english_name": "Nsongo"
- },
- "lap": {
- "english_name": "Laka (Chad)"
- },
- "knf": {
- "english_name": "Mankanya"
- },
- "ite": {
- "english_name": "Itene"
- },
- "dtb": {
- "english_name": "Kadazan, Labuk-Kinabatangan"
- },
- "ivb": {
- "english_name": "Ibatan"
- },
- "waq": {
- "english_name": "Wageman"
- },
- "toh": {
- "english_name": "Gitonga"
- },
- "zmo": {
- "english_name": "Molo"
- },
- "urc": {
- "english_name": "Urningangg"
- },
- "wja": {
- "english_name": "Waja"
- },
- "pem": {
- "english_name": "Phende"
- },
- "wlw": {
- "english_name": "Walak"
- },
- "drc": {
- "english_name": "Minderico"
- },
- "apk": {
- "english_name": "Apache, Kiowa"
- },
- "bva": {
- "english_name": "Barein"
- },
- "bjn": {
- "english_name": "Banjar"
- },
- "imo": {
- "english_name": "Imbongu"
- },
- "bfd": {
- "english_name": "Bafut"
- },
- "tvn": {
- "english_name": "Tavoyan"
- },
- "zax": {
- "english_name": "Zapotec, Xadani"
- },
- "tme": {
- "english_name": "Tremembé"
- },
- "ncf": {
- "english_name": "Notsi"
- },
- "lsi": {
- "english_name": "Lashi"
- },
- "xmk": {
- "english_name": "Macedonian, Ancient"
- },
- "bou": {
- "english_name": "Bondei"
- },
- "kls": {
- "english_name": "Kalasha"
- },
- "cjh": {
- "english_name": "Chehalis, Upper"
- },
- "sbz": {
- "english_name": "Sara Kaba"
- },
- "mvb": {
- "english_name": "Mattole"
- },
- "pel": {
- "english_name": "Pekal"
- },
- "gqu": {
- "english_name": "Qau"
- },
- "pni": {
- "english_name": "Aoheng"
- },
- "grh": {
- "english_name": "Gbiri-Niragu"
- },
- "ug": {
- "english_name": "Uighur"
- },
- "mmb": {
- "english_name": "Momina"
- },
- "zrn": {
- "english_name": "Zerenkel"
- },
- "sbn": {
- "english_name": "Bhil, Sindhi"
- },
- "tyi": {
- "english_name": "Teke-Tsaayi"
- },
- "asl": {
- "english_name": "Asilulu"
- },
- "quk": {
- "english_name": "Quechua, Chachapoyas"
- },
- "wog": {
- "english_name": "Wogamusin"
- },
- "sus": {
- "english_name": "Susu"
- },
- "beq": {
- "english_name": "Beembe"
- },
- "pby": {
- "english_name": "Pyu"
- },
- "yku": {
- "english_name": "Kuamasi"
- },
- "msc": {
- "english_name": "Maninka, Sankaran"
- },
- "buw": {
- "english_name": "Bubi"
- },
- "kwg": {
- "english_name": "Sara Kaba Deme"
- },
- "xri": {
- "english_name": "Krikati-Timbira"
- },
- "mgv": {
- "english_name": "Matengo"
- },
- "nds": {
- "english_name": "German, Low"
- },
- "ays": {
- "english_name": "Ayta, Sorsogon"
- },
- "age": {
- "english_name": "Angal"
- },
- "mib": {
- "english_name": "Mixtec, Atatláhuca"
- },
- "xmt": {
- "english_name": "Matbat"
- },
- "tcn": {
- "english_name": "Tichurong"
- },
- "ndb": {
- "english_name": "Kenswei Nsei"
- },
- "fiw": {
- "english_name": "Fiwaga"
- },
- "gvo": {
- "english_name": "Gavião Do Jiparaná"
- },
- "brg": {
- "english_name": "Baure"
- },
- "bnw": {
- "english_name": "Bisis"
- },
- "idd": {
- "english_name": "Ede Idaca"
- },
- "seb": {
- "english_name": "Senoufo, Shempire"
- },
- "ssn": {
- "english_name": "Waata"
- },
- "bjc": {
- "english_name": "Bariji"
- },
- "otz": {
- "english_name": "Otomi, Ixtenco"
- },
- "bxq": {
- "english_name": "Beele"
- },
- "ncr": {
- "english_name": "Ncane"
- },
- "seu": {
- "english_name": "Serui-Laut"
- },
- "obu": {
- "english_name": "Obulom"
- },
- "sra": {
- "english_name": "Saruga"
- },
- "dox": {
- "english_name": "Bussa"
- },
- "shc": {
- "english_name": "Sonde"
- },
- "kyc": {
- "english_name": "Kyaka"
- },
- "ibr": {
- "english_name": "Ibuoro"
- },
- "stt": {
- "english_name": "Stieng, Budeh"
- },
- "aor": {
- "english_name": "Aore"
- },
- "lhu": {
- "english_name": "Lahu"
- },
- "keh": {
- "english_name": "Keak"
- },
- "saa": {
- "english_name": "Saba"
- },
- "klb": {
- "english_name": "Kiliwa"
- },
- "kcw": {
- "english_name": "Kabwari"
- },
- "ome": {
- "english_name": "Omejes"
- },
- "kxh": {
- "english_name": "Karo (Ethiopia)"
- },
- "rad": {
- "english_name": "Rade"
- },
- "tms": {
- "english_name": "Tima"
- },
- "iap": {
- "english_name": "Iapama"
- },
- "na": {
- "english_name": "Nauru"
- },
- "bfx": {
- "english_name": "Bantayanon"
- },
- "lmx": {
- "english_name": "Laimbue"
- },
- "ktc": {
- "english_name": "Kholok"
- },
- "tsw": {
- "english_name": "Tsishingini"
- },
- "cbt": {
- "english_name": "Chayahuita"
- },
- "okn": {
- "english_name": "Oki-No-Erabu"
- },
- "xmz": {
- "english_name": "Mori Bawah"
- },
- "fj": {
- "english_name": "Fijian"
- },
- "kpn": {
- "english_name": "Kepkiriwát"
- },
- "wky": {
- "english_name": "Wangkayutyuru"
- },
- "oub": {
- "english_name": "Glio-Oubi"
- },
- "gvm": {
- "english_name": "Gurmana"
- },
- "ptr": {
- "english_name": "Piamatsina"
- },
- "lhn": {
- "english_name": "Lahanan"
- },
- "bcf": {
- "english_name": "Bamu"
- },
- "hia": {
- "english_name": "Lamang"
- },
- "dep": {
- "english_name": "Delaware, Pidgin"
- },
- "bsl": {
- "english_name": "Basa-Gumna"
- },
- "ltg": {
- "english_name": "Latgalian"
- },
- "mcw": {
- "english_name": "Mawa (Chad)"
- },
- "twq": {
- "english_name": "Tasawaq"
- },
- "co": {
- "english_name": "Corsican"
- },
- "lpn": {
- "english_name": "Naga, Long Phuri"
- },
- "zir": {
- "english_name": "Ziriya"
- },
- "bo": {
- "english_name": "Tibetan"
- },
- "xcn": {
- "english_name": "Cotoname"
- },
- "xkf": {
- "english_name": "Khengkha"
- },
- "sky": {
- "english_name": "Sikaiana"
- },
- "kyp": {
- "english_name": "Kang"
- },
- "xum": {
- "english_name": "Umbrian"
- },
- "asj": {
- "english_name": "Sari"
- },
- "btc": {
- "english_name": "Bati (Cameroon)"
- },
- "ggo": {
- "english_name": "Gondi, Southern"
- },
- "igg": {
- "english_name": "Igana"
- },
- "mue": {
- "english_name": "Media Lengua"
- },
- "gof": {
- "english_name": "Gofa"
- },
- "trr": {
- "english_name": "Taushiro"
- },
- "anq": {
- "english_name": "Jarawa (India)"
- },
- "tgj": {
- "english_name": "Tagin"
- },
- "bye": {
- "english_name": "Pouye"
- },
- "nwi": {
- "english_name": "Tanna, Southwest"
- },
- "zpn": {
- "english_name": "Zapotec, Santa Inés Yatzechi"
- },
- "asy": {
- "english_name": "Asmat, Yaosakor"
- },
- "wof": {
- "english_name": "Wolof, Gambian"
- },
- "kco": {
- "english_name": "Kinalakna"
- },
- "mct": {
- "english_name": "Mengisa"
- },
- "bhu": {
- "english_name": "Bhunjia"
- },
- "nnu": {
- "english_name": "Dwang"
- },
- "dhv": {
- "english_name": "Dehu"
- },
- "uan": {
- "english_name": "Kuan"
- },
- "xcg": {
- "english_name": "Gaulish, Cisalpine"
- },
- "xkp": {
- "english_name": "Kabatei"
- },
- "vkl": {
- "english_name": "Kulisusu"
- },
- "guo": {
- "english_name": "Guayabero"
- },
- "pmz": {
- "english_name": "Pame, Southern"
- },
- "byr": {
- "english_name": "Baruya"
- },
- "dih": {
- "english_name": "Kumiai"
- },
- "jud": {
- "english_name": "Worodougou"
- },
- "cpi": {
- "english_name": "Pidgin English, Chinese"
- },
- "dok": {
- "english_name": "Dondo"
- },
- "sas": {
- "english_name": "Sasak"
- },
- "osu": {
- "english_name": "One, Southern"
- },
- "ndv": {
- "english_name": "Ndut"
- },
- "msd": {
- "english_name": "Yucatec Maya Sign Language"
- },
- "aba": {
- "english_name": "Abé"
- },
- "vil": {
- "english_name": "Vilela"
- },
- "yab": {
- "english_name": "Yuhup"
- },
- "dru": {
- "english_name": "Rukai"
- },
- "yxg": {
- "english_name": "Yagara"
- },
- "wlr": {
- "english_name": "Wailapa"
- },
- "mwy": {
- "english_name": "Mosiro"
- },
- "qva": {
- "english_name": "Quechua, Ambo-Pasco"
- },
- "nbt": {
- "english_name": "Na"
- },
- "onn": {
- "english_name": "Onobasulu"
- },
- "ayi": {
- "english_name": "Leyigha"
- },
- "kqm": {
- "english_name": "Khisa"
- },
- "yms": {
- "english_name": "Mysian"
- },
- "nhk": {
- "english_name": "Nahuatl, Isthmus-Cosoleacaque"
- },
- "wng": {
- "english_name": "Wanggom"
- },
- "ccm": {
- "english_name": "Creole Malay, Malaccan"
- },
- "api": {
- "english_name": "Apiaká"
- },
- "mxq": {
- "english_name": "Mixe, Juquila"
- },
- "udj": {
- "english_name": "Ujir"
- },
- "nij": {
- "english_name": "Ngaju"
- },
- "vls": {
- "english_name": "Vlaams"
- },
- "mys": {
- "english_name": "Mesmes"
- },
- "npn": {
- "english_name": "Mondropolon"
- },
- "xta": {
- "english_name": "Mixtec, Alcozauca"
- },
- "kec": {
- "english_name": "Keiga"
- },
- "bex": {
- "english_name": "Jur Modo"
- },
- "kne": {
- "english_name": "Kankanaey"
- },
- "xwo": {
- "english_name": "Oirat, Written"
- },
- "pa": {
- "english_name": "Panjabi",
- "name": "ਪੰਜਾਬੀ"
- },
- "xsc": {
- "english_name": "Scythian"
- },
- "wlv": {
- "english_name": "Wichí Lhamtés Vejoz"
- },
- "tri": {
- "english_name": "Trió"
- },
- "iai": {
- "english_name": "Iaai"
- },
- "cah": {
- "english_name": "Cahuarano"
- },
- "naw": {
- "english_name": "Nawuri"
- },
- "ziw": {
- "english_name": "Zigula"
- },
- "iow": {
- "english_name": "Iowa-Oto"
- },
- "mbo": {
- "english_name": "Mbo (Cameroon)"
- },
- "nti": {
- "english_name": "Natioro"
- },
- "ntm": {
- "english_name": "Nateni"
- },
- "bkc": {
- "english_name": "Baka (Cameroon)"
- },
- "tsg": {
- "english_name": "Tausug"
- },
- "xwe": {
- "english_name": "Gbe, Xwela"
- },
- "aks": {
- "english_name": "Akaselem"
- },
- "woo": {
- "english_name": "Manombai"
- },
- "kml": {
- "english_name": "Kalinga, Tanudan"
- },
- "des": {
- "english_name": "Desano"
- },
- "txm": {
- "english_name": "Tomini"
- },
- "khf": {
- "english_name": "Khuen"
- },
- "grr": {
- "english_name": "Taznatit"
- },
- "esh": {
- "english_name": "Eshtehardi"
- },
- "mxa": {
- "english_name": "Mixtec, Northwest Oaxaca"
- },
- "ngi": {
- "english_name": "Ngizim"
- },
- "bqs": {
- "english_name": "Bosngun"
- },
- "dup": {
- "english_name": "Duano"
- },
- "dez": {
- "english_name": "Dengese"
- },
- "ota": {
- "english_name": "Turkish, Ottoman (1500-1928)"
- },
- "nmv": {
- "english_name": "Ngamini"
- },
- "siq": {
- "english_name": "Sonia"
- },
- "tzn": {
- "english_name": "Tugun"
- },
- "mtp": {
- "english_name": "Wichí Lhamtés Nocten"
- },
- "avo": {
- "english_name": "Agavotaguerra"
- },
- "cdg": {
- "english_name": "Chamari"
- },
- "zsr": {
- "english_name": "Zapotec, Southern Rincon"
- },
- "lro": {
- "english_name": "Laro"
- },
- "tbl": {
- "english_name": "Tboli"
- },
- "yde": {
- "english_name": "Yangum Dey"
- },
- "wmi": {
- "english_name": "Wamin"
- },
- "hrw": {
- "english_name": "Warwar Feni"
- },
- "amq": {
- "english_name": "Amahai"
- },
- "moj": {
- "english_name": "Monzombo"
- },
- "tmy": {
- "english_name": "Tami"
- },
- "pes": {
- "english_name": "Persian, Iranian"
- },
- "bgb": {
- "english_name": "Bobongko"
- },
- "buf": {
- "english_name": "Bushoong"
- },
- "moo": {
- "english_name": "Monom"
- },
- "dev": {
- "english_name": "Domung"
- },
- "tt": {
- "english_name": "Tatar",
- "name": "Татарча"
- },
- "xxk": {
- "english_name": "Ke'o"
- },
- "yot": {
- "english_name": "Yotti"
- },
- "maq": {
- "english_name": "Mazatec, Chiquihuitlán"
- },
- "csg": {
- "english_name": "Chilean Sign Language"
- },
- "mat": {
- "english_name": "Matlatzinca, San Francisco"
- },
- "yva": {
- "english_name": "Yawa"
- },
- "nnj": {
- "english_name": "Nyangatom"
- },
- "wea": {
- "english_name": "Wewaw"
- },
- "loy": {
- "english_name": "Loke"
- },
- "tna": {
- "english_name": "Tacana"
- },
- "ktf": {
- "english_name": "Kwami"
- },
- "hoe": {
- "english_name": "Horom"
- },
- "smu": {
- "english_name": "Somray"
- },
- "zph": {
- "english_name": "Zapotec, Totomachapan"
- },
- "mbl": {
- "english_name": "Maxakalí"
- },
- "rap": {
- "english_name": "Rapanui"
- },
- "hti": {
- "english_name": "Hoti"
- },
- "bkz": {
- "english_name": "Bungku"
- },
- "thk": {
- "english_name": "Tharaka"
- },
- "pjt": {
- "english_name": "Pitjantjatjara"
- },
- "mei": {
- "english_name": "Midob"
- },
- "zia": {
- "english_name": "Zia"
- },
- "llo": {
- "english_name": "Khlor"
- },
- "bxn": {
- "english_name": "Burduna"
- },
- "hmd": {
- "english_name": "Miao, Large Flowery"
- },
- "nsu": {
- "english_name": "Nahuatl, Sierra Negra"
- },
- "sdj": {
- "english_name": "Suundi"
- },
- "amb": {
- "english_name": "Ambo"
- },
- "ybi": {
- "english_name": "Yamphu"
- },
- "lak": {
- "english_name": "Laka (Nigeria)"
- },
- "amc": {
- "english_name": "Amahuaca"
- },
- "lbv": {
- "english_name": "Lavatbura-Lamusong"
- },
- "pug": {
- "english_name": "Phuie"
- },
- "tzj": {
- "english_name": "Tz'utujil"
- },
- "tlh": {
- "english_name": "Klingon"
- },
- "wal": {
- "english_name": "Wolaytta"
- },
- "raa": {
- "english_name": "Dungmali"
- },
- "xdc": {
- "english_name": "Dacian"
- },
- "aez": {
- "english_name": "Aeka"
- },
- "kol": {
- "english_name": "Kol (Papua New Guinea)"
- },
- "gdo": {
- "english_name": "Ghodoberi"
- },
- "mcf": {
- "english_name": "Matsés"
- },
- "tqu": {
- "english_name": "Touo"
- },
- "agn": {
- "english_name": "Agutaynen"
- },
- "xmh": {
- "english_name": "Kuku-Muminh"
- },
- "snx": {
- "english_name": "Sam"
- },
- "lyg": {
- "english_name": "Lyngngam"
- },
- "axe": {
- "english_name": "Ayerrerenge"
- },
- "sym": {
- "english_name": "Samo, Maya"
- },
- "cna": {
- "english_name": "Changthang"
- },
- "laa": {
- "english_name": "Subanen, Southern"
- },
- "mzi": {
- "english_name": "Mazatec, Ixcatlán"
- },
- "gby": {
- "english_name": "Gbari"
- },
- "glc": {
- "english_name": "Bon Gula"
- },
- "sef": {
- "english_name": "Senoufo, Cebaara"
- },
- "vmg": {
- "english_name": "Lungalunga"
- },
- "byf": {
- "english_name": "Bete"
- },
- "bdh": {
- "english_name": "Baka (Sudan)"
- },
- "cmn": {
- "english_name": "Chinese, Mandarin"
- },
- "nud": {
- "english_name": "Ngala"
- },
- "mvh": {
- "english_name": "Mulgi"
- },
- "tgz": {
- "english_name": "Tagalaka"
- },
- "aml": {
- "english_name": "War-Jaintia"
- },
- "kaa": {
- "english_name": "Kara-Kalpak"
- },
- "bef": {
- "english_name": "Benabena"
- },
- "kei": {
- "english_name": "Kei"
- },
- "byc": {
- "english_name": "Ubaghara"
- },
- "etu": {
- "english_name": "Ejagham"
- },
- "zmm": {
- "english_name": "Marimanindji"
- },
- "ziz": {
- "english_name": "Zizilivakan"
- },
- "ifa": {
- "english_name": "Ifugao, Amganad"
- },
- "dax": {
- "english_name": "Dayi"
- },
- "xna": {
- "english_name": "North Arabian, Ancient"
- },
- "nma": {
- "english_name": "Naga, Maram"
- },
- "ono": {
- "english_name": "Onondaga"
- },
- "dub": {
- "english_name": "Dubli"
- },
- "ayr": {
- "english_name": "Aymara, Central"
- },
- "xwk": {
- "english_name": "Wangkumara"
- },
- "kvt": {
- "english_name": "Karen, Lahta"
- },
- "meo": {
- "english_name": "Malay, Kedah"
- },
- "nhg": {
- "english_name": "Nahuatl, Tetelcingo"
- },
- "sgi": {
- "english_name": "Suga"
- },
- "www": {
- "english_name": "Wawa"
- },
- "bct": {
- "english_name": "Bendi"
- },
- "yng": {
- "english_name": "Yango"
- },
- "meh": {
- "english_name": "Mixtec, Southwestern Tlaxiaco"
- },
- "gma": {
- "english_name": "Gambera"
- },
- "niv": {
- "english_name": "Gilyak"
- },
- "lex": {
- "english_name": "Luang"
- },
- "yul": {
- "english_name": "Yulu"
- },
- "csa": {
- "english_name": "Chinantec, Chiltepec"
- },
- "nza": {
- "english_name": "Mbembe, Tigon"
- },
- "dni": {
- "english_name": "Dani, Lower Grand Valley"
- },
- "aso": {
- "english_name": "Dano"
- },
- "sn": {
- "english_name": "Shona"
- },
- "kjp": {
- "english_name": "Karen, Pwo Eastern"
- },
- "auk": {
- "english_name": "Heyo"
- },
- "atn": {
- "english_name": "Ashtiani"
- },
- "bae": {
- "english_name": "Baré"
- },
- "aid": {
- "english_name": "Alngith"
- },
- "kjg": {
- "english_name": "Khmu"
- },
- "sax": {
- "english_name": "Sa"
- },
- "bxh": {
- "english_name": "Buhutu"
- },
- "air": {
- "english_name": "Airoran"
- },
- "fo": {
- "english_name": "Faroese"
- },
- "mev": {
- "english_name": "Mano"
- },
- "zhi": {
- "english_name": "Zhire"
- },
- "acd": {
- "english_name": "Gikyode"
- },
- "leo": {
- "english_name": "Leti (Cameroon)"
- },
- "hei": {
- "english_name": "Heiltsuk"
- },
- "bvn": {
- "english_name": "Buna"
- },
- "mlp": {
- "english_name": "Bargam"
- },
- "ccj": {
- "english_name": "Kasanga"
- },
- "cnu": {
- "english_name": "Chenoua"
- },
- "zsl": {
- "english_name": "Zambian Sign Language"
- },
- "tcq": {
- "english_name": "Kaiy"
- },
- "hmz": {
- "english_name": "Hmong Shua"
- },
- "mnr": {
- "english_name": "Mono (USA)"
- },
- "ske": {
- "english_name": "Seke (Vanuatu)"
- },
- "khu": {
- "english_name": "Nkhumbi"
- },
- "nrr": {
- "english_name": "Norra"
- },
- "zmc": {
- "english_name": "Margany"
- },
- "gab": {
- "english_name": "Gabri"
- },
- "qvo": {
- "english_name": "Quechua, Napo Lowland"
- },
- "zza": {
- "english_name": "Zaza"
- },
- "gbs": {
- "english_name": "Gbe, Gbesi"
- },
- "yka": {
- "english_name": "Yakan"
- },
- "hoj": {
- "english_name": "Hadothi"
- },
- "sjb": {
- "english_name": "Sajau Basap"
- },
- "mhl": {
- "english_name": "Mauwake"
- },
- "ami": {
- "english_name": "Amis"
- },
- "mky": {
- "english_name": "Makian, East"
- },
- "byd": {
- "english_name": "Benyadu'"
- },
- "wrp": {
- "english_name": "Waropen"
- },
- "axk": {
- "english_name": "Yaka (Central African Republic)"
- },
- "bgv": {
- "english_name": "Warkay-Bipim"
- },
- "aom": {
- "english_name": "Ömie"
- },
- "pit": {
- "english_name": "Pitta Pitta"
- },
- "nyv": {
- "english_name": "Nyulnyul"
- },
- "shs": {
- "english_name": "Shuswap"
- },
- "spc": {
- "english_name": "Sapé"
- },
- "chr": {
- "english_name": "Cherokee"
- },
- "xcv": {
- "english_name": "Chuvantsy"
- },
- "psr": {
- "english_name": "Portuguese Sign Language"
- },
- "jie": {
- "english_name": "Jilbe"
- },
- "dhr": {
- "english_name": "Dhargari"
- },
- "az": {
- "english_name": "Azerbaijani",
- "name": "Azerbaijani"
- },
- "bax": {
- "english_name": "Bamun"
- },
- "ppq": {
- "english_name": "Pei"
- },
- "lbt": {
- "english_name": "Lachi"
- },
- "mti": {
- "english_name": "Maiwa (Papua New Guinea)"
- },
- "mpw": {
- "english_name": "Mapidian"
- },
- "hhi": {
- "english_name": "Hoia Hoia"
- },
- "nkj": {
- "english_name": "Nakai"
- },
- "bbl": {
- "english_name": "Bats"
- },
- "pcd": {
- "english_name": "Picard"
- },
- "tiy": {
- "english_name": "Tiruray"
- },
- "zpm": {
- "english_name": "Zapotec, Mixtepec"
- },
- "lsg": {
- "english_name": "Lyons Sign Language"
- },
- "hmg": {
- "english_name": "Hmong, Southwestern Guiyang"
- },
- "kmx": {
- "english_name": "Waboda"
- },
- "vae": {
- "english_name": "Vale"
- },
- "deq": {
- "english_name": "Dendi (Central African Republic)"
- },
- "mcl": {
- "english_name": "Macaguaje"
- },
- "bin": {
- "english_name": "Bini"
- },
- "spi": {
- "english_name": "Saponi"
- },
- "yog": {
- "english_name": "Yogad"
- },
- "eri": {
- "english_name": "Ogea"
- },
- "plv": {
- "english_name": "Palawano, Southwest"
- },
- "ysg": {
- "english_name": "Sonaga"
- },
- "dzl": {
- "english_name": "Dzalakha"
- },
- "bfy": {
- "english_name": "Bagheli"
- },
- "gu": {
- "english_name": "Gujarati",
- "name": "ગુજરાતી"
- },
- "tos": {
- "english_name": "Totonac, Highland"
- },
- "iu": {
- "english_name": "Inuktitut"
- },
- "gmz": {
- "english_name": "Mgbolizhia"
- },
- "bnd": {
- "english_name": "Banda (Indonesia)"
- },
- "muq": {
- "english_name": "Miao, Eastern Xiangxi"
- },
- "ncj": {
- "english_name": "Nahuatl, Northern Puebla"
- },
- "aat": {
- "english_name": "Albanian, Arvanitika"
- },
- "hus": {
- "english_name": "Huastec"
- },
- "zib": {
- "english_name": "Zimbabwe Sign Language"
- },
- "kyz": {
- "english_name": "Kayabí"
- },
- "tcc": {
- "english_name": "Datooga"
- },
- "zar": {
- "english_name": "Zapotec, Rincón"
- },
- "xae": {
- "english_name": "Aequian"
- },
- "zpb": {
- "english_name": "Zapotec, Yautepec"
- },
- "hos": {
- "english_name": "Ho Chi Minh City Sign Language"
- },
- "rax": {
- "english_name": "Rang"
- },
- "zh": {
- "english_name": "Chinese",
- "name": "中文"
- },
- "max": {
- "english_name": "Malay, North Moluccan"
- },
- "agv": {
- "english_name": "Dumagat, Remontado"
- },
- "nrt": {
- "english_name": "Kalapuya, Northern"
- },
- "ckt": {
- "english_name": "Chukot"
- },
- "jas": {
- "english_name": "Javanese, New Caledonian"
- },
- "ssh": {
- "english_name": "Arabic, Shihhi"
- },
- "phd": {
- "english_name": "Phudagi"
- },
- "xle": {
- "english_name": "Lemnian"
- },
- "adf": {
- "english_name": "Arabic, Dhofari"
- },
- "tuj": {
- "english_name": "Tugutil"
- },
- "nvh": {
- "english_name": "Nasarian"
- },
- "djr": {
- "english_name": "Djambarrpuyngu"
- },
- "gsp": {
- "english_name": "Wasembo"
- },
- "kiw": {
- "english_name": "Kiwai, Northeast"
- },
- "ism": {
- "english_name": "Masimasi"
- },
- "mox": {
- "english_name": "Molima"
- },
- "nxi": {
- "english_name": "Nindi"
- },
- "rjs": {
- "english_name": "Rajbanshi"
- },
- "cuj": {
- "english_name": "Mashco Piro"
- },
- "kvk": {
- "english_name": "Korean Sign Language"
- },
- "bxo": {
- "english_name": "Barikanchi"
- },
- "ged": {
- "english_name": "Gade"
- },
- "nih": {
- "english_name": "Nyiha (Tanzania)"
- },
- "hru": {
- "english_name": "Hruso"
- },
- "mlx": {
- "english_name": "Malfaxal"
- },
- "mpj": {
- "english_name": "Martu Wangka"
- },
- "mdp": {
- "english_name": "Mbala"
- },
- "yhl": {
- "english_name": "Phowa, Hlepho"
- },
- "bgi": {
- "english_name": "Giangan"
- },
- "ldl": {
- "english_name": "Kaan"
- },
- "nrx": {
- "english_name": "Ngurmbur"
- },
- "noq": {
- "english_name": "Ngongo"
- },
- "mrc": {
- "english_name": "Maricopa"
- },
- "aig": {
- "english_name": "Creole English, Antigua and Barbuda"
- },
- "fos": {
- "english_name": "Siraya"
- },
- "pok": {
- "english_name": "Pokangá"
- },
- "pif": {
- "english_name": "Pingelapese"
- },
- "buz": {
- "english_name": "Bukwen"
- },
- "kos": {
- "english_name": "Kosraean"
- },
- "isd": {
- "english_name": "Isnag"
- },
- "juk": {
- "english_name": "Wapan"
- },
- "bwm": {
- "english_name": "Biwat"
- },
- "muk": {
- "english_name": "Mugom"
- },
- "btj": {
- "english_name": "Malay, Bacanese"
- },
- "ldq": {
- "english_name": "Lufu"
- },
- "kfz": {
- "english_name": "Koromfé"
- },
- "xwa": {
- "english_name": "Kwaza"
- },
- "nxl": {
- "english_name": "Nuaulu, South"
- },
- "acw": {
- "english_name": "Arabic, Hijazi"
- },
- "xkk": {
- "english_name": "Kaco'"
- },
- "vap": {
- "english_name": "Vaiphei"
- },
- "tbn": {
- "english_name": "Tunebo, Barro Negro"
- },
- "gmv": {
- "english_name": "Gamo"
- },
- "otr": {
- "english_name": "Otoro"
- },
- "yap": {
- "english_name": "Yapese"
- },
- "giy": {
- "english_name": "Giyug"
- },
- "roe": {
- "english_name": "Ronji"
- },
- "ams": {
- "english_name": "Amami-Oshima, Southern"
- },
- "fss": {
- "english_name": "Finland-Swedish Sign Language"
- },
- "etc": {
- "english_name": "Etchemin"
- },
- "gyf": {
- "english_name": "Gungabula"
- },
- "gut": {
- "english_name": "Maléku Jaíka"
- },
- "kdh": {
- "english_name": "Tem"
- },
- "wyr": {
- "english_name": "Wayoró"
- },
- "enw": {
- "english_name": "Enwan (Akwa Ibom State)"
- },
- "bfk": {
- "english_name": "Ban Khor Sign Language"
- },
- "mfc": {
- "english_name": "Mba"
- },
- "sbh": {
- "english_name": "Sori-Harengan"
- },
- "mk": {
- "english_name": "Macedonian",
- "name": "Македонски"
- },
- "mdi": {
- "english_name": "Mamvu"
- },
- "qxq": {
- "english_name": "Qashqa'i"
- },
- "ayn": {
- "english_name": "Arabic, Sanaani"
- },
- "ple": {
- "english_name": "Palu'e"
- },
- "bom": {
- "english_name": "Berom"
- },
- "lsr": {
- "english_name": "Aruop"
- },
- "now": {
- "english_name": "Nyambo"
- },
- "kbt": {
- "english_name": "Abadi"
- },
- "zmr": {
- "english_name": "Maranunggu"
- },
- "nbi": {
- "english_name": "Naga, Mao"
- },
- "ssu": {
- "english_name": "Susuami"
- },
- "byn": {
- "english_name": "Bilin",
- "name": "Bilin"
- },
- "paz": {
- "english_name": "Pankararú"
- },
- "ymm": {
- "english_name": "Maay"
- },
- "ktv": {
- "english_name": "Katu, Eastern"
- },
- "nuz": {
- "english_name": "Nahuatl, Tlamacazapa"
- },
- "afb": {
- "english_name": "Arabic, Gulf"
- },
- "knj": {
- "english_name": "Kanjobal, Western"
- },
- "kk": {
- "english_name": "Kazakh"
- },
- "kyq": {
- "english_name": "Kenga"
- },
- "yak": {
- "english_name": "Yakama"
- },
- "cmm": {
- "english_name": "Michigamea"
- },
- "bzt": {
- "english_name": "Brithenig"
- },
- "suq": {
- "english_name": "Suri"
- },
- "pda": {
- "english_name": "Anam"
- },
- "mtn": {
- "english_name": "Matagalpa"
- },
- "kmo": {
- "english_name": "Kwoma"
- },
- "nwo": {
- "english_name": "Nauo"
- },
- "nzm": {
- "english_name": "Naga, Zeme"
- },
- "yyr": {
- "english_name": "Yir Yoront"
- },
- "nib": {
- "english_name": "Nakame"
- },
- "nkm": {
- "english_name": "Namat"
- },
- "wji": {
- "english_name": "Warji"
- },
- "tch": {
- "english_name": "Creole English, Turks And Caicos"
- },
- "cce": {
- "english_name": "Chopi"
- },
- "yki": {
- "english_name": "Yoke"
- },
- "ugb": {
- "english_name": "Kuku-Ugbanh"
- },
- "avn": {
- "english_name": "Avatime"
- },
- "kmy": {
- "english_name": "Koma"
- },
- "ayc": {
- "english_name": "Aymara, Southern"
- },
- "mqf": {
- "english_name": "Momuna"
- },
- "sbb": {
- "english_name": "Simbo"
- },
- "bzb": {
- "english_name": "Andio"
- },
- "nqm": {
- "english_name": "Ndom"
- },
- "bzc": {
- "english_name": "Malagasy, Southern Betsimisaraka"
- },
- "pcg": {
- "english_name": "Paniya"
- },
- "am": {
- "english_name": "Amharic",
- "name": "አማርኛ"
- },
- "bea": {
- "english_name": "Beaver"
- },
- "tdk": {
- "english_name": "Tambas"
- },
- "gga": {
- "english_name": "Gao"
- },
- "kfe": {
- "english_name": "Kota (India)"
- },
- "nqo": {
- "english_name": "N'Ko"
- },
- "kfx": {
- "english_name": "Pahari, Kullu"
- },
- "tbk": {
- "english_name": "Tagbanwa, Calamian"
- },
- "kjn": {
- "english_name": "Kunjen"
- },
- "axb": {
- "english_name": "Abipon"
- },
- "ywn": {
- "english_name": "Yawanawa"
- },
- "sqh": {
- "english_name": "Shau"
- },
- "xbj": {
- "english_name": "Birrpayi"
- },
- "azn": {
- "english_name": "Nahuatl, Western Durango"
- },
- "bte": {
- "english_name": "Gamo-Ningi"
- },
- "abf": {
- "english_name": "Abai Sungai"
- },
- "nkt": {
- "english_name": "Nyika (Tanzania)"
- },
- "xty": {
- "english_name": "Mixtec, Yoloxochitl"
- },
- "hmr": {
- "english_name": "Hmar"
- },
- "ipo": {
- "english_name": "Ipiko"
- },
- "ydg": {
- "english_name": "Yidgha"
- },
- "ihi": {
- "english_name": "Ihievbe"
- },
- "arx": {
- "english_name": "Aruá (Rodonia State)"
- },
- "dmm": {
- "english_name": "Dama"
- },
- "ka": {
- "english_name": "Georgian"
- },
- "sbg": {
- "english_name": "Seget"
- },
- "agc": {
- "english_name": "Agatu"
- },
- "goa": {
- "english_name": "Guro"
- },
- "dz": {
- "english_name": "Dzongkha"
- },
- "aul": {
- "english_name": "Aulua"
- },
- "trh": {
- "english_name": "Turaka"
- },
- "bor": {
- "english_name": "Borôro"
- },
- "asc": {
- "english_name": "Asmat, Casuarina Coast"
- },
- "kej": {
- "english_name": "Kadar"
- },
- "had": {
- "english_name": "Hatam"
- },
- "nmp": {
- "english_name": "Nimanbur"
- },
- "srf": {
- "english_name": "Nafi"
- },
- "tly": {
- "english_name": "Talysh"
- },
- "mvt": {
- "english_name": "Mpotovoro"
- },
- "pt": {
- "english_name": "Portuguese",
- "name": "Português"
- },
- "mxu": {
- "english_name": "Mada (Cameroon)"
- },
- "sq": {
- "english_name": "Albanian"
- },
- "nn": {
- "english_name": "Norwegian Nynorsk",
- "name": "Norwegian Nynorsk"
- },
- "gcl": {
- "english_name": "Creole English, Grenadian"
- },
- "bfe": {
- "english_name": "Betaf"
- },
- "val": {
- "english_name": "Vehes"
- },
- "aru": {
- "english_name": "Aruá (Amazonas State)"
- },
- "ght": {
- "english_name": "Kuke"
- },
- "mpo": {
- "english_name": "Miu"
- },
- "hnn": {
- "english_name": "Hanunoo"
- },
- "xni": {
- "english_name": "Ngarigu"
- },
- "vid": {
- "english_name": "Vidunda"
- },
- "kgy": {
- "english_name": "Kyerung"
- },
- "tas": {
- "english_name": "Tay Boi"
- },
- "xay": {
- "english_name": "Kayan Mahakam"
- },
- "pak": {
- "english_name": "Parakanã"
- },
- "no": {
- "english_name": "Norwegian"
- },
- "jye": {
- "english_name": "Arabic, Judeo-Yemeni"
- },
- "bhf": {
- "english_name": "Odiai"
- },
- "biu": {
- "english_name": "Biete"
- },
- "hna": {
- "english_name": "Mina (Cameroon)"
- },
- "seo": {
- "english_name": "Suarmin"
- },
- "moa": {
- "english_name": "Mwan"
- },
- "ufi": {
- "english_name": "Ufim"
- },
- "bsk": {
- "english_name": "Burushaski"
- },
- "azm": {
- "english_name": "Amuzgo, Ipalapa"
- },
- "qxt": {
- "english_name": "Quechua, Santa Ana de Tusi Pasco"
- },
- "tqo": {
- "english_name": "Toaripi"
- },
- "qxu": {
- "english_name": "Quechua, Arequipa-La Unión"
- },
- "ark": {
- "english_name": "Arikapú"
- },
- "xno": {
- "english_name": "Anglo-Norman"
- },
- "nmw": {
- "english_name": "Nimoa"
- },
- "luz": {
- "english_name": "Luri, Southern"
- },
- "os": {
- "english_name": "Ossetian"
- },
- "bem": {
- "english_name": "Bemba (Zambia)"
- },
- "tcy": {
- "english_name": "Tulu"
- },
- "crq": {
- "english_name": "Chorote, Iyo'wujwa"
- },
- "dor": {
- "english_name": "Dori'o"
- },
- "stj": {
- "english_name": "Samo, Matya"
- },
- "cho": {
- "english_name": "Choctaw"
- },
- "kr": {
- "english_name": "Kanuri"
- },
- "hrm": {
- "english_name": "Miao, Horned"
- },
- "klp": {
- "english_name": "Kamasa"
- },
- "duw": {
- "english_name": "Dusun Witu"
- },
- "yao": {
- "english_name": "Yao"
- },
- "trf": {
- "english_name": "Creole English, Trinidadian"
- },
- "tbe": {
- "english_name": "Tanimbili"
- },
- "tnm": {
- "english_name": "Tabla"
- },
- "zty": {
- "english_name": "Zapotec, Yatee"
- },
- "ccl": {
- "english_name": "Cutchi-Swahili"
- },
- "ost": {
- "english_name": "Osatu"
- },
- "gbo": {
- "english_name": "Grebo, Northern"
- },
- "bnr": {
- "english_name": "Butmas-Tur"
- },
- "bmv": {
- "english_name": "Bum"
- },
- "njb": {
- "english_name": "Naga, Nocte"
- },
- "kii": {
- "english_name": "Kitsai"
- },
- "msp": {
- "english_name": "Maritsauá"
- },
- "sdc": {
- "english_name": "Sardinian, Sassarese"
- },
- "wib": {
- "english_name": "Toussian, Southern"
- },
- "xxr": {
- "english_name": "Koropó"
- },
- "kbw": {
- "english_name": "Kaiep"
- },
- "ikp": {
- "english_name": "Ikpeshi"
- },
- "gpa": {
- "english_name": "Gupa-Abawa"
- },
- "dme": {
- "english_name": "Dugwor"
- },
- "xcw": {
- "english_name": "Coahuilteco"
- },
- "qwh": {
- "english_name": "Quechua, Huaylas Ancash"
- },
- "kfk": {
- "english_name": "Kinnauri"
- },
- "sdl": {
- "english_name": "Saudi Arabian Sign Language"
- },
- "drs": {
- "english_name": "Gedeo"
- },
- "aif": {
- "english_name": "Agi"
- },
- "sjo": {
- "english_name": "Xibe"
- },
- "aia": {
- "english_name": "Arosi"
- },
- "mpr": {
- "english_name": "Vangunu"
- },
- "rbp": {
- "english_name": "Barababaraba"
- },
- "zag": {
- "english_name": "Zaghawa"
- },
- "mta": {
- "english_name": "Manobo, Cotabato"
- },
- "boj": {
- "english_name": "Anjam"
- },
- "cdm": {
- "english_name": "Chepang"
- },
- "kqd": {
- "english_name": "Koy Sanjaq Surat"
- },
- "inb": {
- "english_name": "Inga"
- },
- "xpn": {
- "english_name": "Kapinawá"
- },
- "kuz": {
- "english_name": "Kunza"
- },
- "xmb": {
- "english_name": "Mbonga"
- },
- "caz": {
- "english_name": "Canichana"
- },
- "ibg": {
- "english_name": "Ibanag"
- },
- "pea": {
- "english_name": "Indonesian, Peranakan"
- },
- "wdd": {
- "english_name": "Wandji"
- },
- "bmj": {
- "english_name": "Bote-Majhi"
- },
- "nca": {
- "english_name": "Iyo"
- },
- "sxe": {
- "english_name": "Sighu"
- },
- "zns": {
- "english_name": "Mangas"
- },
- "tkx": {
- "english_name": "Tangko"
- },
- "anj": {
- "english_name": "Anor"
- },
- "gvc": {
- "english_name": "Guanano"
- },
- "zmk": {
- "english_name": "Mandandanyi"
- },
- "cwd": {
- "english_name": "Cree, Woods"
- },
- "fgr": {
- "english_name": "Fongoro"
- },
- "raw": {
- "english_name": "Rawang"
- },
- "lgu": {
- "english_name": "Longgu"
- },
- "cax": {
- "english_name": "Chiquitano"
- },
- "mub": {
- "english_name": "Mubi"
- },
- "phg": {
- "english_name": "Phuong"
- },
- "rer": {
- "english_name": "Rer Bare"
- },
- "wuy": {
- "english_name": "Wauyai"
- },
- "wdy": {
- "english_name": "Wadjabangayi"
- },
- "isn": {
- "english_name": "Isanzu"
- },
- "sxs": {
- "english_name": "Sasaru"
- },
- "pbg": {
- "english_name": "Paraujano"
- },
- "xac": {
- "english_name": "Kachari"
- },
- "nnk": {
- "english_name": "Nankina"
- },
- "tka": {
- "english_name": "Truká"
- },
- "alx": {
- "english_name": "Amol"
- },
- "abp": {
- "english_name": "Ayta, Abellen"
- },
- "uge": {
- "english_name": "Ughele"
- },
- "ijc": {
- "english_name": "Izon"
- },
- "szw": {
- "english_name": "Sawai"
- },
- "pms": {
- "english_name": "Piemontese"
- },
- "wun": {
- "english_name": "Bungu"
- },
- "bbo": {
- "english_name": "Bobo Madaré, Northern"
- },
- "syn": {
- "english_name": "Senaya"
- },
- "wic": {
- "english_name": "Wichita"
- },
- "kkl": {
- "english_name": "Yale, Kosarek"
- },
- "wur": {
- "english_name": "Wurrugu"
- },
- "ter": {
- "english_name": "Tereno"
- },
- "xwd": {
- "english_name": "Wadi Wadi"
- },
- "zln": {
- "english_name": "Zhuang, Lianshan"
- },
- "kbb": {
- "english_name": "Kaxuiâna"
- },
- "orz": {
- "english_name": "Ormu"
- },
- "tsp": {
- "english_name": "Toussian, Northern"
- },
- "kfy": {
- "english_name": "Kumaoni"
- },
- "ss": {
- "english_name": "Swati"
- },
- "dik": {
- "english_name": "Dinka, Southwestern"
- },
- "zte": {
- "english_name": "Zapotec, Elotepec"
- },
- "bri": {
- "english_name": "Mokpwe"
- },
- "tlj": {
- "english_name": "Talinga-Bwisi"
- },
- "wbr": {
- "english_name": "Wagdi"
- },
- "ldo": {
- "english_name": "Loo"
- },
- "kgc": {
- "english_name": "Kasseng"
- },
- "kes": {
- "english_name": "Kugbo"
- },
- "fng": {
- "english_name": "Fanagalo"
- },
- "btl": {
- "english_name": "Bhatola"
- },
- "cuh": {
- "english_name": "Chuka"
- },
- "pam": {
- "english_name": "Pampanga"
- },
- "bix": {
- "english_name": "Bijori"
- },
- "vmm": {
- "english_name": "Mixtec, Mitlatongo"
- },
- "kap": {
- "english_name": "Bezhta"
- },
- "or": {
- "english_name": "Oriya (macrolanguage)",
- "name": "Oriya (macrolanguage)"
- },
- "gwu": {
- "english_name": "Guwamu"
- },
- "bkq": {
- "english_name": "Bakairí"
- },
- "mtv": {
- "english_name": "Asaro'o"
- },
- "mgm": {
- "english_name": "Mambae"
- },
- "kvh": {
- "english_name": "Komodo"
- },
- "ymh": {
- "english_name": "Mili"
- },
- "nzi": {
- "english_name": "Nzima"
- },
- "ldp": {
- "english_name": "Tso"
- },
- "yne": {
- "english_name": "Lang'e"
- },
- "hto": {
- "english_name": "Huitoto, Minica"
- },
- "lsd": {
- "english_name": "Lishana Deni"
- },
- "kqu": {
- "english_name": "Seroa"
- },
- "bog": {
- "english_name": "Bamako Sign Language"
- },
- "arh": {
- "english_name": "Arhuaco"
- },
- "ksn": {
- "english_name": "Kasiguranin"
- },
- "mzv": {
- "english_name": "Manza"
- },
- "jku": {
- "english_name": "Labir"
- },
- "jek": {
- "english_name": "Jeri Kuo"
- },
- "nmz": {
- "english_name": "Nawdm"
- },
- "kpk": {
- "english_name": "Kpan"
- },
- "bzi": {
- "english_name": "Bisu"
- },
- "tif": {
- "english_name": "Tifal"
- },
- "zmv": {
- "english_name": "Mbariman-Gudhinma"
- },
- "ggb": {
- "english_name": "Gbii"
- },
- "bjm": {
- "english_name": "Bajelani"
- },
- "jio": {
- "english_name": "Jiamao"
- },
- "otd": {
- "english_name": "Ot Danum"
- },
- "nna": {
- "english_name": "Nyangumarta"
- },
- "fal": {
- "english_name": "Fali, South"
- },
- "mth": {
- "english_name": "Munggui"
- },
- "mhw": {
- "english_name": "Mbukushu"
- },
- "mvu": {
- "english_name": "Marfa"
- },
- "quh": {
- "english_name": "Quechua, South Bolivian"
- },
- "nkx": {
- "english_name": "Nkoroo"
- },
- "huz": {
- "english_name": "Hunzib"
- },
- "src": {
- "english_name": "Sardinian, Logudorese"
- },
- "amy": {
- "english_name": "Ami"
- },
- "caa": {
- "english_name": "Chortí"
- },
- "wbe": {
- "english_name": "Waritai"
- },
- "gbv": {
- "english_name": "Gbanu"
- },
- "fod": {
- "english_name": "Foodo"
- },
- "och": {
- "english_name": "Chinese, Old"
- },
- "kgq": {
- "english_name": "Kamoro"
- },
- "lgk": {
- "english_name": "Lingarak"
- },
- "kyd": {
- "english_name": "Karey"
- },
- "laz": {
- "english_name": "Aribwatsa"
- },
- "xtu": {
- "english_name": "Mixtec, Cuyamecalco"
- },
- "bjg": {
- "english_name": "Bidyogo"
- },
- "rea": {
- "english_name": "Rerau"
- },
- "ltu": {
- "english_name": "Latu"
- },
- "noc": {
- "english_name": "Nuk"
- },
- "npa": {
- "english_name": "Nar Phu"
- },
- "lhs": {
- "english_name": "Mlahsö"
- },
- "ydd": {
- "english_name": "Yiddish, Eastern"
- },
- "bfm": {
- "english_name": "Mmen"
- },
- "bpn": {
- "english_name": "Dzao Min"
- },
- "beu": {
- "english_name": "Blagar"
- },
- "adr": {
- "english_name": "Adonara"
- },
- "ajn": {
- "english_name": "Andajin"
- },
- "cov": {
- "english_name": "Cao Miao"
- },
- "spb": {
- "english_name": "Sepa (Indonesia)"
- },
- "smr": {
- "english_name": "Simeulue"
- },
- "aad": {
- "english_name": "Amal"
- },
- "kkp": {
- "english_name": "Gugubera"
- },
- "xsq": {
- "english_name": "Makhuwa-Saka"
- },
- "prh": {
- "english_name": "Porohanon"
- },
- "ky": {
- "english_name": "Kirghiz"
- },
- "pio": {
- "english_name": "Piapoco"
- },
- "rnn": {
- "english_name": "Roon"
- },
- "skk": {
- "english_name": "Sok"
- },
- "wwo": {
- "english_name": "Wetamut"
- },
- "brm": {
- "english_name": "Barambu"
- },
- "kfl": {
- "english_name": "Kung"
- },
- "nys": {
- "english_name": "Nyunga"
- },
- "bdo": {
- "english_name": "Morom"
- },
- "bui": {
- "english_name": "Bongili"
- },
- "nrc": {
- "english_name": "Noric"
- },
- "mlo": {
- "english_name": "Mlomp"
- },
- "mpp": {
- "english_name": "Migabac"
- },
- "pcj": {
- "english_name": "Parenga"
- },
- "abe": {
- "english_name": "Abnaki, Western"
- },
- "cml": {
- "english_name": "Campalagian"
- },
- "mww": {
- "english_name": "Hmong Daw"
- },
- "aai": {
- "english_name": "Arifama-Miniafia"
- },
- "nol": {
- "english_name": "Nomlaki"
- },
- "nzb": {
- "english_name": "Njebi"
- },
- "kmi": {
- "english_name": "Kami (Nigeria)"
- },
- "nsw": {
- "english_name": "Navut"
- },
- "xlg": {
- "english_name": "Ligurian (Ancient)"
- },
- "cnx": {
- "english_name": "Cornish, Middle"
- },
- "fuv": {
- "english_name": "Fulfulde, Nigerian"
- },
- "deg": {
- "english_name": "Degema"
- },
- "knr": {
- "english_name": "Kaningra"
- },
- "elu": {
- "english_name": "Elu"
- },
- "mod": {
- "english_name": "Mobilian"
- },
- "ich": {
- "english_name": "Etkywan"
- },
- "pld": {
- "english_name": "Polari"
- },
- "ncs": {
- "english_name": "Nicaraguan Sign Language"
- },
- "zbt": {
- "english_name": "Batui"
- },
- "mdc": {
- "english_name": "Male (Papua New Guinea)"
- },
- "tck": {
- "english_name": "Tchitchege"
- },
- "mrb": {
- "english_name": "Marino"
- },
- "kya": {
- "english_name": "Kwaya"
- },
- "ytw": {
- "english_name": "Yout Wam"
- },
- "hig": {
- "english_name": "Kamwe"
- },
- "bxu": {
- "english_name": "Buriat, China"
- },
- "shy": {
- "english_name": "Tachawit"
- },
- "see": {
- "english_name": "Seneca"
- },
- "und": {
- "english_name": "Undetermined"
- },
- "kix": {
- "english_name": "Naga, Khiamniungan"
- },
- "bbt": {
- "english_name": "Mburku"
- },
- "knx": {
- "english_name": "Kendayan"
- },
- "ctl": {
- "english_name": "Chinantec, Tlacoatzintepec"
- },
- "wwb": {
- "english_name": "Wakabunga"
- },
- "fat": {
- "english_name": "Fanti"
- },
- "ml": {
- "english_name": "Malayalam"
- },
- "jml": {
- "english_name": "Jumli"
- },
- "trt": {
- "english_name": "Tunggare"
- },
- "nhq": {
- "english_name": "Nahuatl, Huaxcaleca"
- },
- "sru": {
- "english_name": "Suruí"
- },
- "tdu": {
- "english_name": "Dusun, Tempasuk"
- },
- "nxg": {
- "english_name": "Ngad'a"
- },
- "plk": {
- "english_name": "Shina, Kohistani"
- },
- "mhi": {
- "english_name": "Ma'di"
- },
- "sqk": {
- "english_name": "Albanian Sign Language"
- },
- "sfw": {
- "english_name": "Sehwi"
- },
- "avv": {
- "english_name": "Avá-Canoeiro"
- },
- "hrx": {
- "english_name": "Hunsrik"
- },
- "mec": {
- "english_name": "Mara"
- },
- "pgk": {
- "english_name": "Rerep"
- },
- "kiv": {
- "english_name": "Kimbu"
- },
- "omx": {
- "english_name": "Mon, Old"
- },
- "apf": {
- "english_name": "Agta, Pahanan"
- },
- "cug": {
- "english_name": "Cung"
- },
- "gay": {
- "english_name": "Gayo"
- },
- "naa": {
- "english_name": "Namla"
- },
- "mma": {
- "english_name": "Mama"
- },
- "tsm": {
- "english_name": "Turkish Sign Language"
- },
- "moc": {
- "english_name": "Mocoví"
- },
- "ian": {
- "english_name": "Iatmul"
- },
- "mjn": {
- "english_name": "Ma (Papua New Guinea)"
- },
- "has": {
- "english_name": "Haisla"
- },
- "bxg": {
- "english_name": "Bangala"
- },
- "tjw": {
- "english_name": "Djabwurrung"
- },
- "xld": {
- "english_name": "Lydian"
- },
- "kgt": {
- "english_name": "Somyev"
- },
- "twt": {
- "english_name": "Turiwára"
- },
- "drn": {
- "english_name": "Damar, West"
- },
- "akl": {
- "english_name": "Aklanon"
- },
- "brf": {
- "english_name": "Bera"
- },
- "ads": {
- "english_name": "Adamorobe Sign Language"
- },
- "xqt": {
- "english_name": "Qatabanian"
- },
- "kyr": {
- "english_name": "Kuruáya"
- },
- "nhx": {
- "english_name": "Nahuatl, Isthmus-Mecayapan"
- },
- "hnu": {
- "english_name": "Hung"
- },
- "zga": {
- "english_name": "Kinga"
- },
- "vro": {
- "english_name": "Võro"
- },
- "ing": {
- "english_name": "Degexit'an"
- },
- "oym": {
- "english_name": "Wayampi"
- },
- "kzz": {
- "english_name": "Kalabra"
- },
- "mwc": {
- "english_name": "Are"
- },
- "lee": {
- "english_name": "Lyélé"
- },
- "ygi": {
- "english_name": "Yiningayi"
- },
- "puw": {
- "english_name": "Puluwatese"
- },
- "juh": {
- "english_name": "Hõne"
- },
- "koi": {
- "english_name": "Komi-Permyak"
- },
- "noa": {
- "english_name": "Woun Meu"
- },
- "hoz": {
- "english_name": "Hozo"
- },
- "xmw": {
- "english_name": "Malagasy, Tsimihety"
- },
- "ckz": {
- "english_name": "Cakchiquel-Quiché Mixed Language"
- },
- "gai": {
- "english_name": "Borei"
- },
- "tlr": {
- "english_name": "Talise"
- },
- "pho": {
- "english_name": "Phunoi"
- },
- "rri": {
- "english_name": "Ririo"
- },
- "dza": {
- "english_name": "Tunzu"
- },
- "grw": {
- "english_name": "Gweda"
- },
- "bjx": {
- "english_name": "Itneg, Banao"
- },
- "sig": {
- "english_name": "Paasaal"
- },
- "lso": {
- "english_name": "Laos Sign Language"
- },
- "mcu": {
- "english_name": "Mambila, Cameroon"
- },
- "bnj": {
- "english_name": "Tawbuid, Eastern"
- },
- "mpa": {
- "english_name": "Mpoto"
- },
- "ywt": {
- "english_name": "Lalo, Xishanba"
- },
- "zps": {
- "english_name": "Zapotec, Coatlán"
- },
- "prq": {
- "english_name": "Ashéninka Perené"
- },
- "kgu": {
- "english_name": "Kobol"
- },
- "gaw": {
- "english_name": "Nobonob"
- },
- "kxw": {
- "english_name": "Konai"
- },
- "cum": {
- "english_name": "Cumeral"
- },
- "mra": {
- "english_name": "Mlabri"
- },
- "tjg": {
- "english_name": "Tunjung"
- },
- "dig": {
- "english_name": "Digo"
- },
- "nhu": {
- "english_name": "Noone"
- },
- "yln": {
- "english_name": "Buyang, Langnian"
- },
- "uvh": {
- "english_name": "Uri"
- },
- "dar": {
- "english_name": "Dargwa"
- },
- "psa": {
- "english_name": "Awyu, Asue"
- },
- "btz": {
- "english_name": "Batak Alas-Kluet"
- },
- "yax": {
- "english_name": "Yauma"
- },
- "ret": {
- "english_name": "Retta"
- },
- "goi": {
- "english_name": "Gobasi"
- },
- "zsa": {
- "english_name": "Sarasira"
- },
- "pkh": {
- "english_name": "Pankhu"
- },
- "mng": {
- "english_name": "Mnong, Eastern"
- },
- "hoa": {
- "english_name": "Hoava"
- },
- "csk": {
- "english_name": "Jola-Kasa"
- },
- "ped": {
- "english_name": "Mala (Papua New Guinea)"
- },
- "yal": {
- "english_name": "Yalunka"
- },
- "bif": {
- "english_name": "Biafada"
- },
- "mpv": {
- "english_name": "Mungkip"
- },
- "rms": {
- "english_name": "Romanian Sign Language"
- },
- "wnu": {
- "english_name": "Usan"
- },
- "xab": {
- "english_name": "Sambe"
- },
- "pmi": {
- "english_name": "Pumi, Northern"
- },
- "cut": {
- "english_name": "Cuicatec, Teutila"
- },
- "nmr": {
- "english_name": "Nimbari"
- },
- "srx": {
- "english_name": "Sirmauri"
- },
- "alz": {
- "english_name": "Alur"
- },
- "xtg": {
- "english_name": "Gaulish, Transalpine"
- },
- "kcx": {
- "english_name": "Kachama-Ganjule"
- },
- "skd": {
- "english_name": "Miwok, Southern Sierra"
- },
- "wux": {
- "english_name": "Wulna"
- },
- "dnn": {
- "english_name": "Dzùùngoo"
- },
- "jbo": {
- "english_name": "Lojban"
- },
- "irr": {
- "english_name": "Ir"
- },
- "tix": {
- "english_name": "Tiwa, Southern"
- },
- "tun": {
- "english_name": "Tunica"
- },
- "doe": {
- "english_name": "Doe"
- },
- "crv": {
- "english_name": "Chaura"
- },
- "apb": {
- "english_name": "Sa'a"
- },
- "bmk": {
- "english_name": "Ghayavi"
- },
- "mdx": {
- "english_name": "Dizin"
- },
- "bcl": {
- "english_name": "Bikol, Central"
- },
- "kbk": {
- "english_name": "Koiari, Grass"
- },
- "aap": {
- "english_name": "Arára, Pará"
- },
- "bob": {
- "english_name": "Aweer"
- },
- "kqh": {
- "english_name": "Kisankasa"
- },
- "wa": {
- "english_name": "Walloon",
- "name": "Walon"
- },
- "mwu": {
- "english_name": "Mittu"
- },
- "vgt": {
- "english_name": "Vlaamse Gebarentaal"
- },
- "lcs": {
- "english_name": "Lisabata-Nuniali"
- },
- "ngk": {
- "english_name": "Dalabon"
- },
- "kel": {
- "english_name": "Kela (Democratic Republic of Congo)"
- },
- "cpa": {
- "english_name": "Chinantec, Palantla"
- },
- "sfm": {
- "english_name": "Miao, Small Flowery"
- },
- "zmw": {
- "english_name": "Mbo (Democratic Republic of Congo)"
- },
- "sxn": {
- "english_name": "Sangir"
- },
- "pup": {
- "english_name": "Pulabu"
- },
- "ify": {
- "english_name": "Kallahan, Keley-I"
- },
- "bdy": {
- "english_name": "Bandjalang"
- },
- "ynn": {
- "english_name": "Yana"
- },
- "ubi": {
- "english_name": "Ubi"
- },
- "hem": {
- "english_name": "Hemba"
- },
- "pdi": {
- "english_name": "Pa Di"
- },
- "nvm": {
- "english_name": "Namiae"
- },
- "kxb": {
- "english_name": "Krobu"
- },
- "meq": {
- "english_name": "Merey"
- },
- "mim": {
- "english_name": "Mixtec, Alacatlatzala"
- },
- "ae": {
- "english_name": "Avestan"
- },
- "zpq": {
- "english_name": "Zapotec, Zoogocho"
- },
- "mge": {
- "english_name": "Mango"
- },
- "xaa": {
- "english_name": "Arabic, Andalusian"
- },
- "zku": {
- "english_name": "Kaurna"
- },
- "ore": {
- "english_name": "Orejón"
- },
- "ytp": {
- "english_name": "Thopho"
- },
- "kbl": {
- "english_name": "Kanembu"
- },
- "cet": {
- "english_name": "Centúúm"
- },
- "et": {
- "english_name": "Estonian",
- "name": "Eesti"
- },
- "tkg": {
- "english_name": "Malagasy, Tesaka"
- },
- "kry": {
- "english_name": "Kryts"
- },
- "ddw": {
- "english_name": "Dawera-Daweloor"
- },
- "jae": {
- "english_name": "Yabem"
- },
- "hmy": {
- "english_name": "Hmong, Southern Guiyang"
- },
- "bsg": {
- "english_name": "Bashkardi"
- },
- "geh": {
- "english_name": "German, Hutterite"
- },
- "tij": {
- "english_name": "Tilung"
- },
- "tic": {
- "english_name": "Tira"
- },
- "iwm": {
- "english_name": "Iwam"
- },
- "swq": {
- "english_name": "Sharwa"
- },
- "auj": {
- "english_name": "Awjilah"
- },
- "la": {
- "english_name": "Latin"
- },
- "njy": {
- "english_name": "Njyem"
- },
- "abh": {
- "english_name": "Arabic, Tajiki"
- },
- "lan": {
- "english_name": "Laru"
- },
- "aya": {
- "english_name": "Awar"
- },
- "paq": {
- "english_name": "Parya"
- },
- "yae": {
- "english_name": "Pumé"
- },
- "pur": {
- "english_name": "Puruborá"
- },
- "yml": {
- "english_name": "Iamalele"
- },
- "alm": {
- "english_name": "Amblong"
- },
- "gyi": {
- "english_name": "Gyele"
- },
- "zbc": {
- "english_name": "Berawan, Central"
- },
- "itx": {
- "english_name": "Itik"
- },
- "wxw": {
- "english_name": "Wardandi"
- },
- "cs": {
- "english_name": "Czech",
- "name": "čeština"
- },
- "nkq": {
- "english_name": "Nkami"
- },
- "unn": {
- "english_name": "Kurnai"
- },
- "tql": {
- "english_name": "Lehali"
- },
- "baa": {
- "english_name": "Babatana"
- },
- "bwo": {
- "english_name": "Boro (Ethiopia)"
- },
- "mks": {
- "english_name": "Mixtec, Silacayoapan"
- },
- "cwg": {
- "english_name": "Chewong"
- },
- "ukq": {
- "english_name": "Ukwa"
- },
- "shh": {
- "english_name": "Shoshoni"
- },
- "tca": {
- "english_name": "Ticuna"
- },
- "mbq": {
- "english_name": "Maisin"
- },
- "xth": {
- "english_name": "Yitha Yitha"
- },
- "dln": {
- "english_name": "Darlong"
- },
- "srh": {
- "english_name": "Sarikoli"
- },
- "bol": {
- "english_name": "Bole"
- },
- "dzn": {
- "english_name": "Dzando"
- },
- "nr": {
- "english_name": "Ndebele, South"
- },
- "hmm": {
- "english_name": "Hmong, Central Mashan"
- },
- "enn": {
- "english_name": "Engenni"
- },
- "hsn": {
- "english_name": "Chinese, Xiang"
- },
- "aps": {
- "english_name": "Arop-Sissano"
- },
- "kcn": {
- "english_name": "Nubi"
- },
- "tww": {
- "english_name": "Tuwari"
- },
- "prf": {
- "english_name": "Paranan"
- },
- "anm": {
- "english_name": "Anal"
- },
- "yey": {
- "english_name": "Yeyi"
- },
- "suk": {
- "english_name": "Sukuma"
- },
- "adl": {
- "english_name": "Galo"
- },
- "dsn": {
- "english_name": "Dusner"
- },
- "oc": {
- "english_name": "Occitan (post 1500)",
- "name": "Occitan (aprèp 1500)"
- },
- "cpg": {
- "english_name": "Greek, Cappadocian"
- },
- "gez": {
- "english_name": "Geez",
- "name": "ግዕዝኛ"
- },
- "aal": {
- "english_name": "Afade"
- },
- "mll": {
- "english_name": "Malua Bay"
- },
- "tne": {
- "english_name": "Kallahan, Tinoc"
- },
- "ses": {
- "english_name": "Songhai, Koyraboro Senni"
- },
- "kvn": {
- "english_name": "Kuna, Border"
- },
- "bdf": {
- "english_name": "Biage"
- },
- "ckq": {
- "english_name": "Kajakse"
- },
- "bnv": {
- "english_name": "Bonerif"
- },
- "qur": {
- "english_name": "Quechua, Yanahuanca Pasco"
- },
- "mzp": {
- "english_name": "Movima"
- },
- "kiz": {
- "english_name": "Kisi"
- },
- "hkk": {
- "english_name": "Hunjara-Kaina Ke"
- },
- "urw": {
- "english_name": "Sop"
- },
- "kis": {
- "english_name": "Kis"
- },
- "lel": {
- "english_name": "Lele (Democratic Republic of Congo)"
- },
- "xxb": {
- "english_name": "Boro (Ghana)"
- },
- "nua": {
- "english_name": "Yuanga"
- },
- "tuy": {
- "english_name": "Tugen"
- },
- "boo": {
- "english_name": "Bozo, Tiemacèwè"
- },
- "shx": {
- "english_name": "She"
- },
- "dmo": {
- "english_name": "Kemedzung"
- },
- "vmh": {
- "english_name": "Maraghei"
- },
- "xal": {
- "english_name": "Kalmyk"
- },
- "sle": {
- "english_name": "Sholaga"
- },
- "xny": {
- "english_name": "Nyiyaparli"
- },
- "coj": {
- "english_name": "Cochimi"
- },
- "lva": {
- "english_name": "Maku'a"
- },
- "ant": {
- "english_name": "Antakarinya"
- },
- "kti": {
- "english_name": "Muyu, North"
- },
- "ude": {
- "english_name": "Udihe"
- },
- "dww": {
- "english_name": "Dawawa"
- },
- "aob": {
- "english_name": "Abom"
- },
- "gdu": {
- "english_name": "Gudu"
- },
- "ceg": {
- "english_name": "Chamacoco"
- },
- "mrk": {
- "english_name": "Hmwaveke"
- },
- "nle": {
- "english_name": "Nyala, East"
- },
- "kil": {
- "english_name": "Kariya"
- },
- "sdn": {
- "english_name": "Sardinian, Gallurese"
- },
- "cin": {
- "english_name": "Cinta Larga"
- },
- "cop": {
- "english_name": "Coptic"
- },
- "soc": {
- "english_name": "So (Democratic Republic of Congo)"
- },
- "ayk": {
- "english_name": "Akuku"
- },
- "mfb": {
- "english_name": "Bangka"
- },
- "nqy": {
- "english_name": "Naga, Akyaung Ari"
- },
- "cux": {
- "english_name": "Cuicatec, Tepeuxila"
- },
- "zkb": {
- "english_name": "Koibal"
- },
- "vo": {
- "english_name": "Volapük"
- },
- "das": {
- "english_name": "Daho-Doo"
- },
- "wlk": {
- "english_name": "Wailaki"
- },
- "reg": {
- "english_name": "Kara (Tanzania)"
- },
- "mlq": {
- "english_name": "Maninkakan, Western"
- },
- "loi": {
- "english_name": "Loma (Côte d'Ivoire)"
- },
- "bna": {
- "english_name": "Bonerate"
- },
- "tht": {
- "english_name": "Tahltan"
- },
- "szv": {
- "english_name": "Isu (Fako Division)"
- },
- "pyn": {
- "english_name": "Poyanáwa"
- },
- "phm": {
- "english_name": "Phimbi"
- },
- "lbm": {
- "english_name": "Lodhi"
- },
- "cks": {
- "english_name": "Tayo"
- },
- "zkv": {
- "english_name": "Krevinian"
- },
- "nlv": {
- "english_name": "Nahuatl, Orizaba"
- },
- "isr": {
- "english_name": "Israeli Sign Language"
- },
- "fbl": {
- "english_name": "Bikol, West Albay"
- },
- "mmc": {
- "english_name": "Mazahua, Michoacán"
- },
- "umi": {
- "english_name": "Ukit"
- },
- "nha": {
- "english_name": "Nhanda"
- },
- "ypa": {
- "english_name": "Phala"
- },
- "cbg": {
- "english_name": "Chimila"
- },
- "xda": {
- "english_name": "Darkinyung"
- },
- "pdo": {
- "english_name": "Padoe"
- },
- "ipi": {
- "english_name": "Ipili"
- },
- "rit": {
- "english_name": "Ritarungo"
- },
- "ekc": {
- "english_name": "Karnic, Eastern"
- },
- "kav": {
- "english_name": "Katukína"
- },
- "tep": {
- "english_name": "Tepecano"
- },
- "yox": {
- "english_name": "Yoron"
- },
- "yat": {
- "english_name": "Yambeta"
- },
- "sgp": {
- "english_name": "Singpho"
- },
- "tnw": {
- "english_name": "Tonsawang"
- },
- "nuo": {
- "english_name": "Nguôn"
- },
- "kig": {
- "english_name": "Kimaama"
- },
- "cpu": {
- "english_name": "Ashéninka, Pichis"
- },
- "klu": {
- "english_name": "Klao"
- },
- "mhu": {
- "english_name": "Digaro-Mishmi"
- },
- "mns": {
- "english_name": "Mansi"
- },
- "sxb": {
- "english_name": "Suba"
- },
- "krz": {
- "english_name": "Kanum, Sota"
- },
- "nlx": {
- "english_name": "Nahali"
- },
- "xsr": {
- "english_name": "Sherpa"
- },
- "mpz": {
- "english_name": "Mpi"
- },
- "tdy": {
- "english_name": "Tadyawan"
- },
- "sqo": {
- "english_name": "Sorkhei"
- },
- "gia": {
- "english_name": "Kitja"
- },
- "gnq": {
- "english_name": "Gana"
- },
- "nwm": {
- "english_name": "Nyamusa-Molo"
- },
- "cbo": {
- "english_name": "Izora"
- },
- "csh": {
- "english_name": "Chin, Asho"
- },
- "txy": {
- "english_name": "Malagasy, Tanosy"
- },
- "vut": {
- "english_name": "Vute"
- },
- "yih": {
- "english_name": "Yiddish, Western"
- },
- "ynu": {
- "english_name": "Yahuna"
- },
- "dum": {
- "english_name": "Dutch, Middle (ca. 1050-1350)"
- },
- "fmp": {
- "english_name": "Fe'fe'"
- },
- "nup": {
- "english_name": "Nupe-Nupe-Tako"
- },
- "kqw": {
- "english_name": "Kandas"
- },
- "xup": {
- "english_name": "Umpqua, Upper"
- },
- "nsc": {
- "english_name": "Nshi"
- },
- "wnb": {
- "english_name": "Wanambre"
- },
- "pez": {
- "english_name": "Penan, Eastern"
- },
- "bdn": {
- "english_name": "Baldemu"
- },
- "ssr": {
- "english_name": "Swiss-French Sign Language"
- },
- "wir": {
- "english_name": "Wiraféd"
- },
- "tzo": {
- "english_name": "Tzotzil"
- },
- "lrr": {
- "english_name": "Yamphu, Southern"
- },
- "umu": {
- "english_name": "Munsee"
- },
- "bvo": {
- "english_name": "Bolgo"
- },
- "kep": {
- "english_name": "Kaikadi"
- },
- "qxs": {
- "english_name": "Qiang, Southern"
- },
- "kbs": {
- "english_name": "Kande"
- },
- "amv": {
- "english_name": "Ambelau"
- },
- "zca": {
- "english_name": "Zapotec, Coatecas Altas"
- },
- "bun": {
- "english_name": "Sherbro"
- },
- "koy": {
- "english_name": "Koyukon"
- },
- "kaj": {
- "english_name": "Jju"
- },
- "aky": {
- "english_name": "Aka-Kol"
- },
- "une": {
- "english_name": "Uneme"
- },
- "bgx": {
- "english_name": "Turkish, Balkan Gagauz"
- },
- "apr": {
- "english_name": "Arop-Lokep"
- },
- "bir": {
- "english_name": "Bisorio"
- },
- "aes": {
- "english_name": "Alsea"
- },
- "pko": {
- "english_name": "Pökoot"
- },
- "lkn": {
- "english_name": "Lakon"
- },
- "mdu": {
- "english_name": "Mboko"
- },
- "sa": {
- "english_name": "Sanskrit"
- },
- "vmq": {
- "english_name": "Mixtec, Soyaltepec"
- },
- "nei": {
- "english_name": "Hittite, Neo-"
- },
- "moe": {
- "english_name": "Montagnais"
- },
- "huv": {
- "english_name": "Huave, San Mateo Del Mar"
- },
- "mgl": {
- "english_name": "Maleu-Kilenge"
- },
- "ssi": {
- "english_name": "Sansi"
- },
- "gvj": {
- "english_name": "Guajá"
- },
- "jil": {
- "english_name": "Jilim"
- },
- "dil": {
- "english_name": "Dilling"
- },
- "csw": {
- "english_name": "Cree, Swampy"
- },
- "aud": {
- "english_name": "Anuta"
- },
- "rkb": {
- "english_name": "Rikbaktsa"
- },
- "ggd": {
- "english_name": "Gugadj"
- },
- "awk": {
- "english_name": "Awabakal"
- },
- "bvz": {
- "english_name": "Bauzi"
- },
- "eko": {
- "english_name": "Koti"
- },
- "dyu": {
- "english_name": "Dyula"
- },
- "snb": {
- "english_name": "Sebuyau"
- },
- "ruu": {
- "english_name": "Lobu, Lanas"
- },
- "har": {
- "english_name": "Harari"
- },
- "twn": {
- "english_name": "Twendi"
- },
- "hne": {
- "english_name": "Chhattisgarhi"
- },
- "rav": {
- "english_name": "Sampang"
- },
- "dec": {
- "english_name": "Dagik"
- },
- "mqv": {
- "english_name": "Mosimo"
- },
- "hps": {
- "english_name": "Hawai'i Pidgin Sign Language"
- },
- "avk": {
- "english_name": "Kotava"
- },
- "tjl": {
- "english_name": "Tai Laing"
- },
- "pmc": {
- "english_name": "Palumata"
- },
- "xyy": {
- "english_name": "Yorta Yorta"
- },
- "snl": {
- "english_name": "Sangil"
- },
- "cae": {
- "english_name": "Lehar"
- },
- "pll": {
- "english_name": "Palaung, Shwe"
- },
- "bxp": {
- "english_name": "Bebil"
- },
- "mzn": {
- "english_name": "Mazanderani"
- },
- "kqv": {
- "english_name": "Okolod"
- },
- "nyg": {
- "english_name": "Nyindu"
- },
- "pmj": {
- "english_name": "Pumi, Southern"
- },
- "axl": {
- "english_name": "Aranda, Lower Southern"
- },
- "enh": {
- "english_name": "Enets, Tundra"
- },
- "swb": {
- "english_name": "Comorian, Maore"
- },
- "tju": {
- "english_name": "Tjurruru"
- },
- "fwa": {
- "english_name": "Fwâi"
- },
- "tgc": {
- "english_name": "Tigak"
- },
- "aan": {
- "english_name": "Anambé"
- },
- "krb": {
- "english_name": "Karkin"
- },
- "kww": {
- "english_name": "Kwinti"
- },
- "gwb": {
- "english_name": "Gwa"
- },
- "bql": {
- "english_name": "Bilakura"
- },
- "igw": {
- "english_name": "Igwe"
- },
- "ukl": {
- "english_name": "Ukrainian Sign Language"
- },
- "kha": {
- "english_name": "Khasi"
- },
- "lec": {
- "english_name": "Leco"
- },
- "cac": {
- "english_name": "Chuj"
- },
- "sce": {
- "english_name": "Dongxiang"
- },
- "dgw": {
- "english_name": "Daungwurrung"
- },
- "ana": {
- "english_name": "Andaqui"
- },
- "xyj": {
- "english_name": "Mayi-Yapi"
- },
- "cco": {
- "english_name": "Chinantec, Comaltepec"
- },
- "kcz": {
- "english_name": "Konongo"
- },
- "adx": {
- "english_name": "Tibetan, Amdo"
- },
- "keg": {
- "english_name": "Tese"
- },
- "sbr": {
- "english_name": "Sembakung Murut"
- },
- "hks": {
- "english_name": "Hong Kong Sign Language"
- },
- "xkc": {
- "english_name": "Kho'ini"
- },
- "mew": {
- "english_name": "Maaka"
- },
- "kxq": {
- "english_name": "Kanum, Smärky"
- },
- "cfm": {
- "english_name": "Chin, Falam"
- },
- "mud": {
- "english_name": "Aleut, Mednyj"
- },
- "mhk": {
- "english_name": "Mungaka"
- },
- "pci": {
- "english_name": "Duruwa"
- },
- "gao": {
- "english_name": "Gants"
- },
- "lib": {
- "english_name": "Likum"
- },
- "mym": {
- "english_name": "Me'en"
- },
- "vif": {
- "english_name": "Vili"
- },
- "bqv": {
- "english_name": "Koro Wachi"
- },
- "sog": {
- "english_name": "Sogdian"
- },
- "atg": {
- "english_name": "Ivbie North-Okpela-Arhe"
- },
- "gyb": {
- "english_name": "Garus"
- },
- "ghr": {
- "english_name": "Ghera"
- },
- "nlj": {
- "english_name": "Nyali"
- },
- "sno": {
- "english_name": "Snohomish"
- },
- "gwm": {
- "english_name": "Awngthim"
- },
- "nbr": {
- "english_name": "Numana-Nunku-Gbantu-Numbu"
- },
- "duj": {
- "english_name": "Dhuwal"
- },
- "btw": {
- "english_name": "Butuanon"
- },
- "nfl": {
- "english_name": "Ayiwo"
- },
- "pbi": {
- "english_name": "Parkwa"
- },
- "mvi": {
- "english_name": "Miyako"
- },
- "sbm": {
- "english_name": "Sagala"
- },
- "onk": {
- "english_name": "One, Kabore"
- },
- "cib": {
- "english_name": "Gbe, Ci"
- },
- "kxo": {
- "english_name": "Kanoé"
- },
- "uur": {
- "english_name": "Ura (Vanuatu)"
- },
- "ysr": {
- "english_name": "Yupik, Sirenik"
- },
- "sbs": {
- "english_name": "Subiya"
- },
- "skf": {
- "english_name": "Sakirabiá"
- },
- "how": {
- "english_name": "Honi"
- },
- "slt": {
- "english_name": "Sila"
- },
- "kjz": {
- "english_name": "Bumthangkha"
- },
- "gge": {
- "english_name": "Guragone"
- },
- "twg": {
- "english_name": "Tereweng"
- },
- "rmf": {
- "english_name": "Romani, Kalo Finnish"
- },
- "yer": {
- "english_name": "Tarok"
- },
- "jut": {
- "english_name": "Jutish"
- },
- "tfr": {
- "english_name": "Teribe"
- },
- "bfq": {
- "english_name": "Badaga"
- },
- "mca": {
- "english_name": "Maca"
- },
- "hae": {
- "english_name": "Oromo, Eastern"
- },
- "bce": {
- "english_name": "Bamenyam"
- },
- "itl": {
- "english_name": "Itelmen"
- },
- "ylm": {
- "english_name": "Limi"
- },
- "oso": {
- "english_name": "Ososo"
- },
- "mzl": {
- "english_name": "Mixe, Mazatlán"
- },
- "xiv": {
- "english_name": "Indus Valley Language"
- },
- "kwe": {
- "english_name": "Kwerba"
- },
- "utr": {
- "english_name": "Etulo"
- },
- "moi": {
- "english_name": "Mboi"
- },
- "kug": {
- "english_name": "Kupa"
- },
- "ano": {
- "english_name": "Andoque"
- },
- "kpl": {
- "english_name": "Kpala"
- },
- "ndh": {
- "english_name": "Ndali"
- },
- "tve": {
- "english_name": "Te'un"
- },
- "pow": {
- "english_name": "Popoloca, San Felipe Otlaltepec"
- },
- "vlp": {
- "english_name": "Valpei"
- },
- "bms": {
- "english_name": "Kanuri, Bilma"
- },
- "was": {
- "english_name": "Washo"
- },
- "lmg": {
- "english_name": "Lamogai"
- },
- "ssm": {
- "english_name": "Semnam"
- },
- "mbk": {
- "english_name": "Malol"
- },
- "lht": {
- "english_name": "Lo-Toga"
- },
- "jwi": {
- "english_name": "Jwira-Pepesa"
- },
- "idi": {
- "english_name": "Idi"
- },
- "nxa": {
- "english_name": "Nauete"
- },
- "bdc": {
- "english_name": "Emberá-Baudó"
- },
- "rji": {
- "english_name": "Raji"
- },
- "gua": {
- "english_name": "Shiki"
- },
- "bli": {
- "english_name": "Bolia"
- },
- "rw": {
- "english_name": "Kinyarwanda",
- "name": "Ikinyarwanda"
- },
- "niz": {
- "english_name": "Ningil"
- },
- "glw": {
- "english_name": "Glavda"
- },
- "kjf": {
- "english_name": "Khalaj"
- },
- "taf": {
- "english_name": "Tapirapé"
- },
- "kvx": {
- "english_name": "Koli, Parkari"
- },
- "lgt": {
- "english_name": "Pahi"
- },
- "mtw": {
- "english_name": "Binukidnon, Southern"
- },
- "dah": {
- "english_name": "Gwahatike"
- },
- "eya": {
- "english_name": "Eyak"
- },
- "okl": {
- "english_name": "Kentish Sign Language, Old"
- },
- "olo": {
- "english_name": "Livvi"
- },
- "urt": {
- "english_name": "Urat"
- },
- "apw": {
- "english_name": "Apache, Western"
- },
- "cqd": {
- "english_name": "Miao, Chuanqiandian Cluster"
- },
- "arl": {
- "english_name": "Arabela"
- },
- "mku": {
- "english_name": "Maninka, Konyanka"
- },
- "omu": {
- "english_name": "Omurano"
- },
- "lle": {
- "english_name": "Lele (Papua New Guinea)"
- },
- "hum": {
- "english_name": "Hungana"
- },
- "coe": {
- "english_name": "Koreguaje"
- },
- "lpx": {
- "english_name": "Lopit"
- },
- "ayz": {
- "english_name": "Mai Brat"
- },
- "xep": {
- "english_name": "Epi-Olmec"
- },
- "fuy": {
- "english_name": "Fuyug"
- },
- "klg": {
- "english_name": "Tagakaulo"
- },
- "qud": {
- "english_name": "Quichua, Calderón Highland"
- },
- "nye": {
- "english_name": "Nyengo"
- },
- "mro": {
- "english_name": "Mru"
- },
- "nsg": {
- "english_name": "Ngasa"
- },
- "niy": {
- "english_name": "Ngiti"
- },
- "dri": {
- "english_name": "C'lela"
- },
- "bnf": {
- "english_name": "Masiwang"
- },
- "kou": {
- "english_name": "Koke"
- },
- "rwk": {
- "english_name": "Rwa"
- },
- "csm": {
- "english_name": "Miwok, Central Sierra"
- },
- "qvm": {
- "english_name": "Quechua, Margos-Yarowilca-Lauricocha"
- },
- "tvo": {
- "english_name": "Tidore"
- },
- "nof": {
- "english_name": "Nomane"
- },
- "kle": {
- "english_name": "Kulung (Nepal)"
- },
- "rro": {
- "english_name": "Waima"
- },
- "xkl": {
- "english_name": "Mainstream Kenyah"
- },
- "mlb": {
- "english_name": "Mbule"
- },
- "pnm": {
- "english_name": "Punan Batu 1"
- },
- "ims": {
- "english_name": "Marsian"
- },
- "avs": {
- "english_name": "Aushiri"
- },
- "muy": {
- "english_name": "Muyang"
- },
- "adu": {
- "english_name": "Aduge"
- },
- "mto": {
- "english_name": "Mixe, Totontepec"
- },
- "pav": {
- "english_name": "Pakaásnovos"
- },
- "luc": {
- "english_name": "Aringa"
- },
- "yaf": {
- "english_name": "Yaka (Democratic Republic of Congo)"
- },
- "wru": {
- "english_name": "Waru"
- },
- "kht": {
- "english_name": "Khamti"
- },
- "mdf": {
- "english_name": "Moksha"
- },
- "zaw": {
- "english_name": "Zapotec, Mitla"
- },
- "zoc": {
- "english_name": "Zoque, Copainalá"
- },
- "nji": {
- "english_name": "Gudanji"
- },
- "lal": {
- "english_name": "Lalia"
- },
- "dyo": {
- "english_name": "Jola-Fonyi"
- },
- "tkw": {
- "english_name": "Teanu"
- },
- "bdb": {
- "english_name": "Basap"
- },
- "gwf": {
- "english_name": "Gowro"
- },
- "sxw": {
- "english_name": "Gbe, Saxwe"
- },
- "dbp": {
- "english_name": "Duwai"
- },
- "muu": {
- "english_name": "Yaaku"
- },
- "bbq": {
- "english_name": "Bamali"
- },
- "gdc": {
- "english_name": "Gugu Badhun"
- },
- "kwx": {
- "english_name": "Khirwar"
- },
- "bdz": {
- "english_name": "Badeshi"
- },
- "duh": {
- "english_name": "Dungra Bhil"
- },
- "agz": {
- "english_name": "Agta, Mt. Iriga"
- },
- "klv": {
- "english_name": "Maskelynes"
- },
- "czh": {
- "english_name": "Chinese, Huizhou"
- },
- "pnx": {
- "english_name": "Phong-Kniang"
- },
- "hal": {
- "english_name": "Halang"
- },
- "gir": {
- "english_name": "Gelao, Red"
- },
- "buy": {
- "english_name": "Bullom So"
- },
- "adj": {
- "english_name": "Adioukrou"
- },
- "ils": {
- "english_name": "International Sign"
- },
- "man": {
- "english_name": "Mandingo"
- },
- "mkp": {
- "english_name": "Moikodi"
- },
- "ndi": {
- "english_name": "Samba Leko"
- },
- "mga": {
- "english_name": "Irish, Middle (900-1200)"
- },
- "aaa": {
- "english_name": "Ghotuo"
- },
- "bdq": {
- "english_name": "Bahnar"
- },
- "xar": {
- "english_name": "Karami"
- },
- "bvy": {
- "english_name": "Baybayanon"
- },
- "kgd": {
- "english_name": "Kataang"
- },
- "rng": {
- "english_name": "Ronga"
- },
- "mhj": {
- "english_name": "Mogholi"
- },
- "xrw": {
- "english_name": "Karawa"
- },
- "npu": {
- "english_name": "Naga, Puimei"
- },
- "kri": {
- "english_name": "Krio"
- },
- "beo": {
- "english_name": "Beami"
- },
- "xct": {
- "english_name": "Tibetan, Classical"
- },
- "twx": {
- "english_name": "Tewe"
- },
- "cnt": {
- "english_name": "Chinantec, Tepetotutla"
- },
- "nsa": {
- "english_name": "Naga, Sangtam"
- },
- "pub": {
- "english_name": "Purum"
- },
- "cbe": {
- "english_name": "Chipiajes"
- },
- "zgb": {
- "english_name": "Zhuang, Guibei"
- },
- "ogo": {
- "english_name": "Khana"
- },
- "bbd": {
- "english_name": "Bau"
- },
- "tmr": {
- "english_name": "Aramaic, Jewish Babylonian (ca. 200-1200 CE)"
- },
- "ghl": {
- "english_name": "Ghulfan"
- },
- "tit": {
- "english_name": "Tinigua"
- },
- "eme": {
- "english_name": "Emerillon"
- },
- "pha": {
- "english_name": "Pa-Hng"
- },
- "nxr": {
- "english_name": "Ninggerum"
- },
- "zas": {
- "english_name": "Zapotec, Santo Domingo Albarradas"
- },
- "kwy": {
- "english_name": "Kongo, San Salvador"
- },
- "mbd": {
- "english_name": "Manobo, Dibabawon"
- },
- "bil": {
- "english_name": "Bile"
- },
- "kcd": {
- "english_name": "Kanum, Ngkâlmpw"
- },
- "snr": {
- "english_name": "Sihan"
- },
- "tce": {
- "english_name": "Tutchone, Southern"
- },
- "bco": {
- "english_name": "Kaluli"
- },
- "kjx": {
- "english_name": "Ramopa"
- },
- "dmc": {
- "english_name": "Gavak"
- },
- "mez": {
- "english_name": "Menominee"
- },
- "kyf": {
- "english_name": "Kouya"
- },
- "zkz": {
- "english_name": "Khazar"
- },
- "koz": {
- "english_name": "Korak"
- },
- "gac": {
- "english_name": "Great Andamanese, Mixed"
- },
- "fak": {
- "english_name": "Fang (Cameroon)"
- },
- "pwn": {
- "english_name": "Paiwan"
- },
- "qxo": {
- "english_name": "Quechua, Southern Conchucos Ancash"
- },
- "nio": {
- "english_name": "Nganasan"
- },
- "igs": {
- "english_name": "Interglossa"
- },
- "bzl": {
- "english_name": "Boano (Sulawesi)"
- },
- "tis": {
- "english_name": "Itneg, Masadiit"
- },
- "itt": {
- "english_name": "Itneg, Maeng"
- },
- "lka": {
- "english_name": "Lakalei"
- },
- "snc": {
- "english_name": "Sinaugoro"
- },
- "jbu": {
- "english_name": "Jukun Takum"
- },
- "hoy": {
- "english_name": "Holiya"
- },
- "aox": {
- "english_name": "Atorada"
- },
- "tsx": {
- "english_name": "Mubami"
- },
- "fab": {
- "english_name": "Fa d'Ambu"
- },
- "csi": {
- "english_name": "Miwok, Coast"
- },
- "ccd": {
- "english_name": "Creole, Cafundo"
- },
- "mzs": {
- "english_name": "Macanese"
- },
- "gib": {
- "english_name": "Gibanawa"
- },
- "bbf": {
- "english_name": "Baibai"
- },
- "mju": {
- "english_name": "Manna-Dora"
- },
- "xh": {
- "english_name": "Xhosa",
- "name": "Xhosa"
- },
- "bsm": {
- "english_name": "Busami"
- },
- "mrq": {
- "english_name": "Marquesan, North"
- },
- "btu": {
- "english_name": "Batu"
- },
- "kxj": {
- "english_name": "Kulfa"
- },
- "mrw": {
- "english_name": "Maranao"
- },
- "brt": {
- "english_name": "Bitare"
- },
- "blz": {
- "english_name": "Balantak"
- },
- "ttc": {
- "english_name": "Tektiteko"
- },
- "lls": {
- "english_name": "Lithuanian Sign Language"
- },
- "yrm": {
- "english_name": "Yirrk-Mel"
- },
- "tni": {
- "english_name": "Tandia"
- },
- "knn": {
- "english_name": "Konkani (individual language)"
- },
- "frr": {
- "english_name": "Frisian, Northern"
- },
- "tmq": {
- "english_name": "Tumleo"
- },
- "hdy": {
- "english_name": "Hadiyya"
- },
- "sox": {
- "english_name": "Swo"
- },
- "dva": {
- "english_name": "Duau"
- },
- "chf": {
- "english_name": "Chontal, Tabasco"
- },
- "bsr": {
- "english_name": "Bassa-Kontagora"
- },
- "ce": {
- "english_name": "Chechen"
- },
- "pnq": {
- "english_name": "Pana (Burkina Faso)"
- },
- "wrg": {
- "english_name": "Warungu"
- },
- "bkn": {
- "english_name": "Bukitan"
- },
- "chd": {
- "english_name": "Chontal, Highland Oaxaca"
- },
- "scb": {
- "english_name": "Chut"
- },
- "nyo": {
- "english_name": "Nyoro"
- },
- "ti": {
- "english_name": "Tigrinya",
- "name": "ትግርኛ"
- },
- "tbf": {
- "english_name": "Mandara"
- },
- "nnt": {
- "english_name": "Nanticoke"
- },
- "spt": {
- "english_name": "Bhoti, Spiti"
- },
- "kbx": {
- "english_name": "Ap Ma"
- },
- "cao": {
- "english_name": "Chácobo"
- },
- "bbb": {
- "english_name": "Barai"
- },
- "pwa": {
- "english_name": "Pawaia"
- },
- "ngq": {
- "english_name": "Ngurimi"
- },
- "woy": {
- "english_name": "Weyto"
- },
- "txh": {
- "english_name": "Thracian"
- },
- "lem": {
- "english_name": "Nomaande"
- },
- "bbv": {
- "english_name": "Karnai"
- },
- "bqr": {
- "english_name": "Burusu"
- },
- "spg": {
- "english_name": "Sian"
- },
- "bwl": {
- "english_name": "Bwela"
- },
- "guu": {
- "english_name": "Yanomamö"
- },
- "skc": {
- "english_name": "Ma Manda"
- },
- "mmh": {
- "english_name": "Mehináku"
- },
- "mdj": {
- "english_name": "Mangbetu"
- },
- "pog": {
- "english_name": "Potiguára"
- },
- "dzg": {
- "english_name": "Dazaga"
- },
- "apt": {
- "english_name": "Apatani"
- },
- "skx": {
- "english_name": "Seko Padang"
- },
- "anh": {
- "english_name": "Nend"
- },
- "dot": {
- "english_name": "Dass"
- },
- "kuq": {
- "english_name": "Karipuna"
- },
- "vav": {
- "english_name": "Varli"
- },
- "cua": {
- "english_name": "Cua"
- },
- "xtm": {
- "english_name": "Mixtec, Magdalena Peñasco"
- },
- "ldg": {
- "english_name": "Lenyima"
- },
- "teh": {
- "english_name": "Tehuelche"
- },
- "tlp": {
- "english_name": "Totonac, Filomena Mata-Coahuitlán"
- },
- "tiz": {
- "english_name": "Tai Hongjin"
- },
- "abi": {
- "english_name": "Abidji"
- },
- "hmc": {
- "english_name": "Hmong, Central Huishui"
- },
- "pga": {
- "english_name": "Creole Arabic, Sudanese"
- },
- "ayt": {
- "english_name": "Ayta, Magbukun"
- },
- "peh": {
- "english_name": "Bonan"
- },
- "xuj": {
- "english_name": "Kurumba, Jennu"
- },
- "dua": {
- "english_name": "Duala"
- },
- "ch": {
- "english_name": "Chamorro"
- },
- "bwt": {
- "english_name": "Bafaw-Balong"
- },
- "cld": {
- "english_name": "Neo-Aramaic, Chaldean"
- },
- "ilu": {
- "english_name": "Ili'uun"
- },
- "min": {
- "english_name": "Minangkabau"
- },
- "oaa": {
- "english_name": "Orok"
- },
- "nyl": {
- "english_name": "Nyeu"
- },
- "wgy": {
- "english_name": "Warrgamay"
- },
- "wai": {
- "english_name": "Wares"
- },
- "bdk": {
- "english_name": "Budukh"
- },
- "jee": {
- "english_name": "Jerung"
- },
- "gdj": {
- "english_name": "Gurdjar"
- },
- "plh": {
- "english_name": "Paulohi"
- },
- "byh": {
- "english_name": "Bhujel"
- },
- "rka": {
- "english_name": "Kraol"
- },
- "bkd": {
- "english_name": "Binukid"
- },
- "mmz": {
- "english_name": "Mabaale"
- },
- "ljp": {
- "english_name": "Lampung Api"
- },
- "whg": {
- "english_name": "Wahgi, North"
- },
- "vaj": {
- "english_name": "Vasekela Bushman"
- },
- "hit": {
- "english_name": "Hittite"
- },
- "aht": {
- "english_name": "Ahtena"
- },
- "cli": {
- "english_name": "Chakali"
- },
- "nuk": {
- "english_name": "Nuu-chah-nulth"
- },
- "fuf": {
- "english_name": "Pular"
- },
- "drb": {
- "english_name": "Dair"
- },
- "bbj": {
- "english_name": "Ghomálá'"
- },
- "pov": {
- "english_name": "Crioulo, Upper Guinea"
- },
- "eli": {
- "english_name": "Nding"
- },
- "pqa": {
- "english_name": "Pa'a"
- },
- "njz": {
- "english_name": "Nyishi"
- },
- "lij": {
- "english_name": "Ligurian"
- },
- "sok": {
- "english_name": "Sokoro"
- },
- "bfn": {
- "english_name": "Bunak"
- },
- "zim": {
- "english_name": "Mesme"
- },
- "phw": {
- "english_name": "Phangduwali"
- },
- "amk": {
- "english_name": "Ambai"
- },
- "xya": {
- "english_name": "Yaygir"
- },
- "kjt": {
- "english_name": "Karen, Phrae Pwo"
- },
- "ubl": {
- "english_name": "Bikol, Buhi'non"
- },
- "yis": {
- "english_name": "Yis"
- },
- "aux": {
- "english_name": "Aurá"
- },
- "bbp": {
- "english_name": "Banda, West Central"
- },
- "kbq": {
- "english_name": "Kamano"
- },
- "krc": {
- "english_name": "Karachay-Balkar"
- },
- "mej": {
- "english_name": "Meyah"
- },
- "dii": {
- "english_name": "Dimbong"
- },
- "okm": {
- "english_name": "Korean, Middle (10th-16th cent.)"
- },
- "agw": {
- "english_name": "Kahua"
- },
- "lar": {
- "english_name": "Larteh"
- },
- "wkw": {
- "english_name": "Wakawaka"
- },
- "mii": {
- "english_name": "Mixtec, Chigmecatitlán"
- },
- "ztg": {
- "english_name": "Zapotec, Xanaguía"
- },
- "atx": {
- "english_name": "Arutani"
- },
- "nam": {
- "english_name": "Ngan'gityemerri"
- },
- "pna": {
- "english_name": "Punan Bah-Biau"
- },
- "kdx": {
- "english_name": "Kam"
- },
- "ggu": {
- "english_name": "Gagu"
- },
- "jbt": {
- "english_name": "Jabutí"
- },
- "rgn": {
- "english_name": "Romagnol"
- },
- "nue": {
- "english_name": "Ngundu"
- },
- "xvn": {
- "english_name": "Vandalic"
- },
- "ksb": {
- "english_name": "Shambala"
- },
- "pey": {
- "english_name": "Petjo"
- },
- "srk": {
- "english_name": "Serudung Murut"
- },
- "psd": {
- "english_name": "Plains Indian Sign Language"
- },
- "tgd": {
- "english_name": "Ciwogai"
- },
- "pse": {
- "english_name": "Malay, Central"
- },
- "bmo": {
- "english_name": "Bambalang"
- },
- "grj": {
- "english_name": "Grebo, Southern"
- },
- "vmv": {
- "english_name": "Maidu, Valley"
- },
- "xnr": {
- "english_name": "Kangri"
- },
- "lob": {
- "english_name": "Lobi"
- },
- "mws": {
- "english_name": "Mwimbi-Muthambi"
- },
- "nhz": {
- "english_name": "Nahuatl, Santa María La Alta"
- },
- "klw": {
- "english_name": "Lindu"
- },
- "nbw": {
- "english_name": "Ngbandi, Southern"
- },
- "waz": {
- "english_name": "Wampur"
- },
- "tmf": {
- "english_name": "Toba-Maskoy"
- },
- "its": {
- "english_name": "Isekiri"
- },
- "dim": {
- "english_name": "Dime"
- },
- "opt": {
- "english_name": "Opata"
- },
- "tvw": {
- "english_name": "Sedoa"
- },
- "npy": {
- "english_name": "Napu"
- },
- "evn": {
- "english_name": "Evenki"
- },
- "lkl": {
- "english_name": "Laeko-Libuat"
- },
- "nuh": {
- "english_name": "Ndunda"
- },
- "nsi": {
- "english_name": "Nigerian Sign Language"
- },
- "osa": {
- "english_name": "Osage"
- },
- "tty": {
- "english_name": "Sikaritai"
- },
- "pii": {
- "english_name": "Pini"
- },
- "kqg": {
- "english_name": "Khe"
- },
- "mul": {
- "english_name": "Multiple languages"
- },
- "mbx": {
- "english_name": "Mari (East Sepik Province)"
- },
- "kff": {
- "english_name": "Koya"
- },
- "nmk": {
- "english_name": "Namakura"
- },
- "spu": {
- "english_name": "Sapuan"
- },
- "pwr": {
- "english_name": "Powari"
- },
- "bhn": {
- "english_name": "Neo-Aramaic, Bohtan"
- },
- "bxi": {
- "english_name": "Pirlatapa"
- },
- "mhf": {
- "english_name": "Mamaa"
- },
- "grm": {
- "english_name": "Kota Marudu Talantang"
- },
- "mil": {
- "english_name": "Mixtec, Peñoles"
- },
- "mnj": {
- "english_name": "Munji"
- },
- "crd": {
- "english_name": "Coeur d'Alene"
- },
- "chz": {
- "english_name": "Chinantec, Ozumacín"
- },
- "sab": {
- "english_name": "Buglere"
- },
- "kgf": {
- "english_name": "Kube"
- },
- "mnv": {
- "english_name": "Rennell-Bellona"
- },
- "kqk": {
- "english_name": "Gbe, Kotafon"
- },
- "kdz": {
- "english_name": "Kwaja"
- },
- "mnx": {
- "english_name": "Manikion"
- },
- "lzz": {
- "english_name": "Laz"
- },
- "tti": {
- "english_name": "Tobati"
- },
- "nlq": {
- "english_name": "Naga, Lao"
- },
- "wrh": {
- "english_name": "Wiradhuri"
- },
- "xky": {
- "english_name": "Uma' Lasan"
- },
- "tdg": {
- "english_name": "Tamang, Western"
- },
- "nex": {
- "english_name": "Neme"
- },
- "gwe": {
- "english_name": "Gweno"
- },
- "rut": {
- "english_name": "Rutul"
- },
- "eki": {
- "english_name": "Eki"
- },
- "tik": {
- "english_name": "Tikar"
- },
- "dmb": {
- "english_name": "Dogon, Mombo"
- },
- "rab": {
- "english_name": "Camling"
- },
- "izh": {
- "english_name": "Ingrian"
- },
- "ckh": {
- "english_name": "Chak"
- },
- "bgc": {
- "english_name": "Haryanvi"
- },
- "set": {
- "english_name": "Sentani"
- },
- "gdn": {
- "english_name": "Umanakaina"
- },
- "ext": {
- "english_name": "Extremaduran"
- },
- "aew": {
- "english_name": "Ambakich"
- },
- "sgm": {
- "english_name": "Singa"
- },
- "dif": {
- "english_name": "Dieri"
- },
- "tct": {
- "english_name": "T'en"
- },
- "tgi": {
- "english_name": "Lawunuia"
- },
- "pei": {
- "english_name": "Chichimeca-Jonaz"
- },
- "sge": {
- "english_name": "Segai"
- },
- "mql": {
- "english_name": "Mbelime"
- },
- "sei": {
- "english_name": "Seri"
- },
- "kcs": {
- "english_name": "Koenoem"
- },
- "ade": {
- "english_name": "Adele"
- },
- "ijj": {
- "english_name": "Ede Ije"
- },
- "zyn": {
- "english_name": "Zhuang, Yongnan"
- },
- "te": {
- "english_name": "Telugu"
- },
- "xun": {
- "english_name": "Unggaranggu"
- },
- "sva": {
- "english_name": "Svan"
- },
- "itr": {
- "english_name": "Iteri"
- },
- "lup": {
- "english_name": "Lumbu"
- },
- "phr": {
- "english_name": "Pahari-Potwari"
- },
- "kex": {
- "english_name": "Kukna"
- },
- "pbr": {
- "english_name": "Pangwa"
- },
- "ras": {
- "english_name": "Tegali"
- },
- "mgp": {
- "english_name": "Magar, Eastern"
- },
- "mia": {
- "english_name": "Miami"
- },
- "brn": {
- "english_name": "Boruca"
- },
- "sim": {
- "english_name": "Mende (Papua New Guinea)"
- },
- "lsy": {
- "english_name": "Mauritian Sign Language"
- },
- "tmb": {
- "english_name": "Katbol"
- },
- "xco": {
- "english_name": "Chorasmian"
- },
- "ape": {
- "english_name": "Bukiyip"
- },
- "dee": {
- "english_name": "Dewoin"
- },
- "non": {
- "english_name": "Norse, Old"
- },
- "ids": {
- "english_name": "Idesa"
- },
- "khx": {
- "english_name": "Kanu"
- },
- "let": {
- "english_name": "Lesing-Gelimi"
- },
- "nig": {
- "english_name": "Ngalakan"
- },
- "aey": {
- "english_name": "Amele"
- },
- "ojc": {
- "english_name": "Ojibwa, Central"
- },
- "geg": {
- "english_name": "Gengle"
- },
- "rxd": {
- "english_name": "Ngardi"
- },
- "cie": {
- "english_name": "Cineni"
- },
- "zhw": {
- "english_name": "Zhoa"
- },
- "wuv": {
- "english_name": "Wuvulu-Aua"
- },
- "lku": {
- "english_name": "Kungkari"
- },
- "biv": {
- "english_name": "Birifor, Southern"
- },
- "uks": {
- "english_name": "Urubú-Kaapor Sign Language"
- },
- "xpo": {
- "english_name": "Pochutec"
- },
- "icl": {
- "english_name": "Icelandic Sign Language"
- },
- "nbm": {
- "english_name": "Ngbaka Ma'bo"
- },
- "gnc": {
- "english_name": "Guanche"
- },
- "gri": {
- "english_name": "Ghari"
- },
- "sju": {
- "english_name": "Sami, Ume"
- },
- "auw": {
- "english_name": "Awyi"
- },
- "pnt": {
- "english_name": "Pontic"
- },
- "bbx": {
- "english_name": "Bubia"
- },
- "szc": {
- "english_name": "Semaq Beri"
- },
- "lkc": {
- "english_name": "Kucong"
- },
- "yle": {
- "english_name": "Yele"
- },
- "ay": {
- "english_name": "Aymara"
- },
- "tta": {
- "english_name": "Tutelo"
- },
- "cul": {
- "english_name": "Culina"
- },
- "byo": {
- "english_name": "Biyo"
- },
- "pex": {
- "english_name": "Petats"
- },
- "fom": {
- "english_name": "Foma"
- },
- "xtb": {
- "english_name": "Mixtec, Chazumba"
- },
- "sga": {
- "english_name": "Irish, Old (to 900)"
- },
- "mmm": {
- "english_name": "Maii"
- },
- "twp": {
- "english_name": "Ere"
- },
- "kga": {
- "english_name": "Koyaga"
- },
- "men": {
- "english_name": "Mende (Sierra Leone)"
- },
- "dal": {
- "english_name": "Dahalo"
- },
- "psi": {
- "english_name": "Pashayi, Southeast"
- },
- "rmd": {
- "english_name": "Danish, Traveller"
- },
- "svs": {
- "english_name": "Savosavo"
- },
- "snk": {
- "english_name": "Soninke"
- },
- "amp": {
- "english_name": "Alamblak"
- },
- "xce": {
- "english_name": "Celtiberian"
- },
- "wmo": {
- "english_name": "Wom (Papua New Guinea)"
- },
- "zpo": {
- "english_name": "Zapotec, Amatlán"
- },
- "heh": {
- "english_name": "Hehe"
- },
- "dem": {
- "english_name": "Dem"
- },
- "vko": {
- "english_name": "Kodeoha"
- },
- "mvx": {
- "english_name": "Meoswar"
- },
- "bne": {
- "english_name": "Bintauna"
- },
- "ckv": {
- "english_name": "Kavalan"
- },
- "ikv": {
- "english_name": "Iku-Gora-Ankwa"
- },
- "mbm": {
- "english_name": "Ombamba"
- },
- "lum": {
- "english_name": "Luimbi"
- },
- "ins": {
- "english_name": "Indian Sign Language"
- },
- "err": {
- "english_name": "Erre"
- },
- "peb": {
- "english_name": "Pomo, Eastern"
- },
- "bhw": {
- "english_name": "Biak"
- },
- "bjt": {
- "english_name": "Balanta-Ganja"
- },
- "dmw": {
- "english_name": "Mudburra"
- },
- "kkd": {
- "english_name": "Kinuku"
- },
- "stu": {
- "english_name": "Samtao"
- },
- "leh": {
- "english_name": "Lenje"
- },
- "scf": {
- "english_name": "Creole French, San Miguel"
- },
- "xsl": {
- "english_name": "Slavey, South"
- },
- "khl": {
- "english_name": "Lusi"
- },
- "bff": {
- "english_name": "Bofi"
- },
- "zom": {
- "english_name": "Zou"
- },
- "agr": {
- "english_name": "Aguaruna"
- },
- "suy": {
- "english_name": "Suyá"
- },
- "ndc": {
- "english_name": "Ndau"
- },
- "hme": {
- "english_name": "Hmong, Eastern Huishui"
- },
- "mkm": {
- "english_name": "Moklen"
- },
- "kyy": {
- "english_name": "Kambaira"
- },
- "mck": {
- "english_name": "Mbunda"
- },
- "tvs": {
- "english_name": "Taveta"
- },
- "avi": {
- "english_name": "Avikam"
- },
- "pcf": {
- "english_name": "Paliyan"
- },
- "urz": {
- "english_name": "Uru-Eu-Wau-Wau"
- },
- "npb": {
- "english_name": "Nupbikha"
- },
- "etx": {
- "english_name": "Eten"
- },
- "djf": {
- "english_name": "Djangun"
- },
- "cns": {
- "english_name": "Asmat, Central"
- },
- "wkd": {
- "english_name": "Wakde"
- },
- "wyi": {
- "english_name": "Woiwurrung"
- },
- "yiu": {
- "english_name": "Awu"
- },
- "omp": {
- "english_name": "Manipuri, Old"
- },
- "prl": {
- "english_name": "Peruvian Sign Language"
- },
- "dgn": {
- "english_name": "Dagoman"
- },
- "xve": {
- "english_name": "Venetic"
- },
- "vku": {
- "english_name": "Kurrama"
- },
- "qum": {
- "english_name": "Sipacapense"
- },
- "lio": {
- "english_name": "Liki"
- },
- "soq": {
- "english_name": "Kanasi"
- },
- "abn": {
- "english_name": "Abua"
- },
- "mnq": {
- "english_name": "Minriq"
- },
- "kns": {
- "english_name": "Kensiu"
- },
- "ssk": {
- "english_name": "Sunam"
- },
- "ln": {
- "english_name": "Lingala"
- },
- "be": {
- "english_name": "Belarusian"
- },
- "cpb": {
- "english_name": "Ashéninka, Ucayali-Yurúa"
- },
- "kmm": {
- "english_name": "Kom (India)"
- },
- "soi": {
- "english_name": "Sonha"
- },
- "nmy": {
- "english_name": "Namuyi"
- },
- "nrk": {
- "english_name": "Ngarla"
- },
- "bik": {
- "english_name": "Bikol"
- },
- "zsk": {
- "english_name": "Kaskean"
- },
- "bqh": {
- "english_name": "Baima"
- },
- "ymb": {
- "english_name": "Yambes"
- },
- "nis": {
- "english_name": "Nimi"
- },
- "hom": {
- "english_name": "Homa"
- },
- "vmc": {
- "english_name": "Mixtec, Juxtlahuaca"
- },
- "arp": {
- "english_name": "Arapaho"
- },
- "kgj": {
- "english_name": "Kham, Gamale"
- },
- "rmz": {
- "english_name": "Marma"
- },
- "kcl": {
- "english_name": "Kela (Papua New Guinea)"
- },
- "sdm": {
- "english_name": "Semandang"
- },
- "mnm": {
- "english_name": "Mapena"
- },
- "pdt": {
- "english_name": "Plautdietsch"
- },
- "nwy": {
- "english_name": "Nottoway-Meherrin"
- },
- "ewo": {
- "english_name": "Ewondo"
- },
- "rah": {
- "english_name": "Rabha"
- },
- "lmd": {
- "english_name": "Lumun"
- },
- "kto": {
- "english_name": "Kuot"
- },
- "hmt": {
- "english_name": "Hamtai"
- },
- "kpb": {
- "english_name": "Kurumba, Mullu"
- },
- "mvr": {
- "english_name": "Marau"
- },
- "iar": {
- "english_name": "Purari"
- },
- "cdj": {
- "english_name": "Churahi"
- },
- "nsl": {
- "english_name": "Norwegian Sign Language"
- },
- "wrb": {
- "english_name": "Warluwara"
- },
- "wuu": {
- "english_name": "Chinese, Wu"
- },
- "piv": {
- "english_name": "Pileni"
- },
- "maz": {
- "english_name": "Mazahua, Central"
- },
- "rmy": {
- "english_name": "Romani, Vlax"
- },
- "mke": {
- "english_name": "Mawchi"
- },
- "wig": {
- "english_name": "Wik-Ngathana"
- },
- "tkz": {
- "english_name": "Takua"
- },
- "pgn": {
- "english_name": "Paelignian"
- },
- "zaa": {
- "english_name": "Zapotec, Sierra de Juárez"
- },
- "gra": {
- "english_name": "Garasia, Rajput"
- },
- "pys": {
- "english_name": "Paraguayan Sign Language"
- },
- "fip": {
- "english_name": "Fipa"
- },
- "aph": {
- "english_name": "Athpariya"
- },
- "lmi": {
- "english_name": "Lombi"
- },
- "two": {
- "english_name": "Tswapong"
- },
- "mov": {
- "english_name": "Mohave"
- },
- "dmk": {
- "english_name": "Domaaki"
- },
- "hya": {
- "english_name": "Hya"
- },
- "kgg": {
- "english_name": "Kusunda"
- },
- "pic": {
- "english_name": "Pinji"
- },
- "igo": {
- "english_name": "Isebe"
- },
- "nzk": {
- "english_name": "Nzakara"
- },
- "kdc": {
- "english_name": "Kutu"
- },
- "mba": {
- "english_name": "Higaonon"
- },
- "zmx": {
- "english_name": "Bomitaba"
- },
- "wif": {
- "english_name": "Wik-Keyangan"
- },
- "psm": {
- "english_name": "Pauserna"
- },
- "uli": {
- "english_name": "Ulithian"
- },
- "hux": {
- "english_name": "Huitoto, Nüpode"
- },
- "sli": {
- "english_name": "Silesian, Lower"
- },
- "ess": {
- "english_name": "Yupik, Central Siberian"
- },
- "ytl": {
- "english_name": "Tanglang"
- },
- "xki": {
- "english_name": "Kenyan Sign Language"
- },
- "nrp": {
- "english_name": "Picene, North"
- },
- "pas": {
- "english_name": "Papasena"
- },
- "hup": {
- "english_name": "Hupa"
- },
- "mny": {
- "english_name": "Manyawa"
- },
- "srz": {
- "english_name": "Shahmirzadi"
- },
- "bwr": {
- "english_name": "Bura-Pabir"
- },
- "xug": {
- "english_name": "Kunigami"
- },
- "ty": {
- "english_name": "Tahitian"
- },
- "knp": {
- "english_name": "Kwanja"
- },
- "xhe": {
- "english_name": "Khetrani"
- },
- "plb": {
- "english_name": "Polonombauk"
- },
- "pae": {
- "english_name": "Pagibete"
- },
- "pst": {
- "english_name": "Pashto, Central"
- },
- "dbu": {
- "english_name": "Dogon, Bondum Dom"
- },
- "pnu": {
- "english_name": "Bunu, Jiongnai"
- },
- "don": {
- "english_name": "Toura (Papua New Guinea)"
- },
- "ppp": {
- "english_name": "Pelende"
- },
- "obr": {
- "english_name": "Burmese, Old"
- },
- "msg": {
- "english_name": "Moraid"
- },
- "ley": {
- "english_name": "Lemolang"
- },
- "nsm": {
- "english_name": "Naga, Sumi"
- },
- "cih": {
- "english_name": "Chinali"
- },
- "vis": {
- "english_name": "Vishavan"
- },
- "grs": {
- "english_name": "Gresi"
- },
- "zin": {
- "english_name": "Zinza"
- },
- "bzu": {
- "english_name": "Burmeso"
- },
- "zmi": {
- "english_name": "Negeri Sembilan Malay"
- },
- "yiv": {
- "english_name": "Nisu, Northern"
- },
- "bqz": {
- "english_name": "Bakaka"
- },
- "llg": {
- "english_name": "Lole"
- },
- "mus": {
- "english_name": "Creek"
- },
- "ttw": {
- "english_name": "Long Wat"
- },
- "ura": {
- "english_name": "Urarina"
- },
- "pnp": {
- "english_name": "Pancana"
- },
- "efe": {
- "english_name": "Efe"
- },
- "scq": {
- "english_name": "Sa'och"
- },
- "mhx": {
- "english_name": "Maru"
- },
- "mfv": {
- "english_name": "Mandjak"
- },
- "she": {
- "english_name": "Sheko"
- },
- "opo": {
- "english_name": "Opao"
- },
- "ken": {
- "english_name": "Kenyang"
- },
- "ryn": {
- "english_name": "Amami-Oshima, Northern"
- },
- "krp": {
- "english_name": "Korop"
- },
- "tts": {
- "english_name": "Thai, Northeastern"
- },
- "bks": {
- "english_name": "Sorsoganon, Northern"
- },
- "ahi": {
- "english_name": "Aizi, Tiagbamrin"
- },
- "bip": {
- "english_name": "Bila"
- },
- "wmx": {
- "english_name": "Womo"
- },
- "pmb": {
- "english_name": "Pambia"
- },
- "ksl": {
- "english_name": "Kumalu"
- },
- "sby": {
- "english_name": "Soli"
- },
- "pri": {
- "english_name": "Paicî"
- },
- "tuq": {
- "english_name": "Tedaga"
- },
- "avt": {
- "english_name": "Au"
- },
- "hao": {
- "english_name": "Hakö"
- },
- "asx": {
- "english_name": "Muratayak"
- },
- "mbt": {
- "english_name": "Manobo, Matigsalug"
- },
- "pl": {
- "english_name": "Polish",
- "name": "polski"
- },
- "kct": {
- "english_name": "Kaian"
- },
- "bws": {
- "english_name": "Bomboma"
- },
- "ntg": {
- "english_name": "Ngantangarra"
- },
- "bqu": {
- "english_name": "Boguru"
- },
- "xmo": {
- "english_name": "Morerebi"
- },
- "ybn": {
- "english_name": "Yabaâna"
- },
- "liw": {
- "english_name": "Col"
- },
- "pue": {
- "english_name": "Puelche"
- },
- "dya": {
- "english_name": "Dyan"
- },
- "gkp": {
- "english_name": "Kpelle, Guinea"
- },
- "ssb": {
- "english_name": "Sama, Southern"
- },
- "nuv": {
- "english_name": "Nuni, Northern"
- },
- "lnm": {
- "english_name": "Langam"
- },
- "aju": {
- "english_name": "Arabic, Judeo-Moroccan"
- },
- "lmu": {
- "english_name": "Lamenu"
- },
- "tyn": {
- "english_name": "Kombai"
- },
- "foi": {
- "english_name": "Foi"
- },
- "pah": {
- "english_name": "Tenharim"
- },
- "bby": {
- "english_name": "Befang"
- },
- "kev": {
- "english_name": "Kanikkaran"
- },
- "bus": {
- "english_name": "Bokobaru"
- },
- "gad": {
- "english_name": "Gaddang"
- },
- "jmi": {
- "english_name": "Jimi (Nigeria)"
- },
- "din": {
- "english_name": "Dinka"
- },
- "ego": {
- "english_name": "Eggon"
- },
- "tbw": {
- "english_name": "Tagbanwa"
- },
- "kvm": {
- "english_name": "Kendem"
- },
- "twh": {
- "english_name": "Tai Dón"
- },
- "mmy": {
- "english_name": "Migaama"
- },
- "opk": {
- "english_name": "Kopkaka"
- },
- "cro": {
- "english_name": "Crow"
- },
- "wpc": {
- "english_name": "Maco"
- },
- "xsd": {
- "english_name": "Sidetic"
- },
- "cbw": {
- "english_name": "Kinabalian"
- },
- "ta": {
- "english_name": "Tamil",
- "name": "தமிழ்"
- },
- "mjx": {
- "english_name": "Mahali"
- },
- "xib": {
- "english_name": "Iberian"
- },
- "xxm": {
- "english_name": "Minkin"
- },
- "jos": {
- "english_name": "Jordanian Sign Language"
- },
- "mg": {
- "english_name": "Malagasy"
- },
- "gbz": {
- "english_name": "Dari, Zoroastrian"
- },
- "sds": {
- "english_name": "Sened"
- },
- "ldb": {
- "english_name": "Dũya"
- },
- "kfg": {
- "english_name": "Kudiya"
- },
- "slp": {
- "english_name": "Lamaholot"
- },
- "aiy": {
- "english_name": "Ali"
- },
- "mfs": {
- "english_name": "Mexican Sign Language"
- },
- "kcj": {
- "english_name": "Kobiana"
- },
- "ykk": {
- "english_name": "Yakaikeke"
- },
- "kof": {
- "english_name": "Kubi"
- },
- "rhp": {
- "english_name": "Yahang"
- },
- "klf": {
- "english_name": "Kendeje"
- },
- "lif": {
- "english_name": "Limbu"
- },
- "fla": {
- "english_name": "Kalispel-Pend d'Oreille"
- },
- "ues": {
- "english_name": "Kioko"
- },
- "dnj": {
- "english_name": "Dan"
- },
- "nxu": {
- "english_name": "Narau"
- },
- "tkd": {
- "english_name": "Tukudede"
- },
- "aao": {
- "english_name": "Arabic, Algerian Saharan"
- },
- "piw": {
- "english_name": "Pimbwe"
- },
- "knw": {
- "english_name": "Kung-Ekoka"
- },
- "myv": {
- "english_name": "Erzya"
- },
- "rxw": {
- "english_name": "Karuwali"
- },
- "ccc": {
- "english_name": "Chamicuro"
- },
- "xtq": {
- "english_name": "Tumshuqese"
- },
- "nku": {
- "english_name": "Kulango, Bouna"
- },
- "wme": {
- "english_name": "Wambule"
- },
- "gnz": {
- "english_name": "Ganzi"
- },
- "rao": {
- "english_name": "Rao"
- },
- "aix": {
- "english_name": "Aighon"
- },
- "rkt": {
- "english_name": "Rangpuri"
- },
- "ory": {
- "english_name": "Oriya (individual language)"
- },
- "rmm": {
- "english_name": "Roma"
- },
- "tnv": {
- "english_name": "Tangchangya"
- },
- "kmw": {
- "english_name": "Komo (Democratic Republic of Congo)"
- },
- "nzu": {
- "english_name": "Teke-Nzikou"
- },
- "xin": {
- "english_name": "Xinca"
- },
- "kss": {
- "english_name": "Kisi, Southern"
- },
- "cwa": {
- "english_name": "Kabwa"
- },
- "kjq": {
- "english_name": "Keres, Western"
- },
- "smb": {
- "english_name": "Simbari"
- },
- "cdf": {
- "english_name": "Chiru"
- },
- "lns": {
- "english_name": "Lamnso'"
- },
- "bjw": {
- "english_name": "Bakwé"
- },
- "tcm": {
- "english_name": "Tanahmerah"
- },
- "ssp": {
- "english_name": "Spanish Sign Language"
- },
- "lmh": {
- "english_name": "Lambichhong"
- },
- "idr": {
- "english_name": "Indri"
- },
- "qwt": {
- "english_name": "Kwalhioqua-Tlatskanai"
- },
- "bfz": {
- "english_name": "Pahari, Mahasu"
- },
- "uar": {
- "english_name": "Tairuma"
- },
- "kvj": {
- "english_name": "Psikye"
- },
- "tny": {
- "english_name": "Tongwe"
- },
- "aum": {
- "english_name": "Asu (Nigeria)"
- },
- "asi": {
- "english_name": "Buruwai"
- },
- "glu": {
- "english_name": "Gula (Chad)"
- },
- "zkt": {
- "english_name": "Kitan"
- },
- "giq": {
- "english_name": "Gelao, Green"
- },
- "naz": {
- "english_name": "Nahuatl, Coatepec"
- },
- "ybb": {
- "english_name": "Yemba"
- },
- "gim": {
- "english_name": "Gimi (Eastern Highlands)"
- },
- "unk": {
- "english_name": "Enawené-Nawé"
- },
- "giz": {
- "english_name": "Giziga, South"
- },
- "fuc": {
- "english_name": "Pulaar"
- },
- "mup": {
- "english_name": "Malvi"
- },
- "yuy": {
- "english_name": "Yugur, East"
- },
- "wii": {
- "english_name": "Minidien"
- },
- "buu": {
- "english_name": "Budu"
- },
- "omn": {
- "english_name": "Minoan"
- },
- "kcu": {
- "english_name": "Kami (Tanzania)"
- },
- "xpj": {
- "english_name": "Mpalitjanh"
- },
- "mrg": {
- "english_name": "Mising"
- },
- "gct": {
- "english_name": "German, Colonia Tovar"
- },
- "kzr": {
- "english_name": "Karang"
- },
- "ruo": {
- "english_name": "Romanian, Istro"
- },
- "swu": {
- "english_name": "Suwawa"
- },
- "kj": {
- "english_name": "Kuanyama"
- },
- "cdh": {
- "english_name": "Chambeali"
- },
- "mzk": {
- "english_name": "Mambila, Nigeria"
- },
- "mre": {
- "english_name": "Martha's Vineyard Sign Language"
- },
- "gdf": {
- "english_name": "Guduf-Gava"
- },
- "pil": {
- "english_name": "Yom"
- },
- "nhp": {
- "english_name": "Nahuatl, Isthmus-Pajapan"
- },
- "miq": {
- "english_name": "Mískito"
- },
- "kjl": {
- "english_name": "Kham, Western Parbate"
- },
- "kbr": {
- "english_name": "Kafa"
- },
- "bfp": {
- "english_name": "Beba"
- },
- "duy": {
- "english_name": "Agta, Dicamay"
- },
- "vaf": {
- "english_name": "Vafsi"
- },
- "jer": {
- "english_name": "Jere"
- },
- "tsv": {
- "english_name": "Tsogo"
- },
- "txg": {
- "english_name": "Tangut"
- },
- "osi": {
- "english_name": "Osing"
- },
- "tue": {
- "english_name": "Tuyuca"
- },
- "pmm": {
- "english_name": "Pomo"
- },
- "sid": {
- "english_name": "Sidamo"
- },
- "cap": {
- "english_name": "Chipaya"
- },
- "htu": {
- "english_name": "Hitu"
- },
- "mzg": {
- "english_name": "Monastic Sign Language"
- },
- "kqc": {
- "english_name": "Doromu-Koki"
- },
- "yif": {
- "english_name": "Ache"
- },
- "cbj": {
- "english_name": "Ede Cabe"
- },
- "nzy": {
- "english_name": "Nzakambay"
- },
- "trm": {
- "english_name": "Tregami"
- },
- "ncp": {
- "english_name": "Ndaktup"
- },
- "loo": {
- "english_name": "Lombo"
- },
- "khe": {
- "english_name": "Korowai"
- },
- "mqc": {
- "english_name": "Mangole"
- },
- "xko": {
- "english_name": "Kiorr"
- },
- "brh": {
- "english_name": "Brahui"
- },
- "bbi": {
- "english_name": "Barombi"
- },
- "wom": {
- "english_name": "Wom (Nigeria)"
- },
- "sxm": {
- "english_name": "Samre"
- },
- "gor": {
- "english_name": "Gorontalo"
- },
- "lmn": {
- "english_name": "Lambadi"
- },
- "nay": {
- "english_name": "Narrinyeri"
- },
- "wls": {
- "english_name": "Wallisian"
- },
- "stq": {
- "english_name": "Saterfriesisch"
- },
- "bxf": {
- "english_name": "Bilur"
- },
- "mbc": {
- "english_name": "Macushi"
- },
- "usa": {
- "english_name": "Usarufa"
- },
- "sg": {
- "english_name": "Sango"
- },
- "zpx": {
- "english_name": "Zapotec, San Baltazar Loxicha"
- },
- "nsy": {
- "english_name": "Nasal"
- },
- "kvs": {
- "english_name": "Kunggara"
- },
- "atv": {
- "english_name": "Altai, Northern"
- },
- "xzp": {
- "english_name": "Zapotec, Ancient"
- },
- "mmo": {
- "english_name": "Buang, Mangga"
- },
- "gdi": {
- "english_name": "Gundi"
- },
- "urm": {
- "english_name": "Urapmin"
- },
- "wrs": {
- "english_name": "Waris"
- },
- "adn": {
- "english_name": "Adang"
- },
- "net": {
- "english_name": "Nete"
- },
- "ito": {
- "english_name": "Itonama"
- },
- "bgl": {
- "english_name": "Bo (Laos)"
- },
- "nax": {
- "english_name": "Nakwi"
- },
- "nbe": {
- "english_name": "Naga, Konyak"
- },
- "liz": {
- "english_name": "Libinza"
- },
- "kwz": {
- "english_name": "Kwadi"
- },
- "tey": {
- "english_name": "Tulishi"
- },
- "sbu": {
- "english_name": "Bhoti, Stod"
- },
- "yll": {
- "english_name": "Yil"
- },
- "bxz": {
- "english_name": "Binahari"
- },
- "nyt": {
- "english_name": "Nyawaygi"
- },
- "rem": {
- "english_name": "Remo"
- },
- "lti": {
- "english_name": "Leti (Indonesia)"
- },
- "ntr": {
- "english_name": "Delo"
- },
- "wbt": {
- "english_name": "Wanman"
- },
- "aoh": {
- "english_name": "Arma"
- },
- "ndg": {
- "english_name": "Ndengereko"
- },
- "nem": {
- "english_name": "Nemi"
- },
- "lwo": {
- "english_name": "Luwo"
- },
- "zaq": {
- "english_name": "Zapotec, Aloápam"
- },
- "kdk": {
- "english_name": "Numèè"
- },
- "bpm": {
- "english_name": "Biyom"
- },
- "ble": {
- "english_name": "Balanta-Kentohe"
- },
- "nnl": {
- "english_name": "Naga, Northern Rengma"
- },
- "qvh": {
- "english_name": "Quechua, Huamalíes-Dos de Mayo Huánuco"
- },
- "vmp": {
- "english_name": "Mazatec, Soyaltepec"
- },
- "jeb": {
- "english_name": "Jebero"
- },
- "hay": {
- "english_name": "Haya"
- },
- "shg": {
- "english_name": "Shua"
- },
- "ybm": {
- "english_name": "Yaben"
- },
- "mih": {
- "english_name": "Mixtec, Chayuco"
- },
- "pkt": {
- "english_name": "Maleng"
- },
- "ndu": {
- "english_name": "Dugun"
- },
- "toe": {
- "english_name": "Tomedes"
- },
- "mbr": {
- "english_name": "Nukak Makú"
- },
- "hov": {
- "english_name": "Hovongan"
- },
- "spp": {
- "english_name": "Senoufo, Supyire"
- },
- "bfr": {
- "english_name": "Bazigar"
- },
- "kqe": {
- "english_name": "Kalagan"
- },
- "coc": {
- "english_name": "Cocopa"
- },
- "yta": {
- "english_name": "Talu"
- },
- "mgr": {
- "english_name": "Mambwe-Lungu"
- },
- "kmu": {
- "english_name": "Kanite"
- },
- "nmb": {
- "english_name": "Nambas, Big"
- },
- "hgw": {
- "english_name": "Haigwai"
- },
- "sgw": {
- "english_name": "Sebat Bet Gurage"
- },
- "gyl": {
- "english_name": "Gayil"
- },
- "lss": {
- "english_name": "Lasi"
- },
- "sdg": {
- "english_name": "Savi"
- },
- "thu": {
- "english_name": "Thuri"
- },
- "sls": {
- "english_name": "Singapore Sign Language"
- },
- "gpn": {
- "english_name": "Taiap"
- },
- "nyb": {
- "english_name": "Nyangbo"
- },
- "opy": {
- "english_name": "Ofayé"
- },
- "lau": {
- "english_name": "Laba"
- },
- "mrn": {
- "english_name": "Cheke Holo"
- },
- "tpq": {
- "english_name": "Tukpa"
- },
- "zml": {
- "english_name": "Madngele"
- },
- "mnk": {
- "english_name": "Mandinka"
- },
- "poe": {
- "english_name": "Popoloca, San Juan Atzingo"
- },
- "mnn": {
- "english_name": "Mnong, Southern"
- },
- "gdk": {
- "english_name": "Gadang"
- },
- "mtl": {
- "english_name": "Montol"
- },
- "mgb": {
- "english_name": "Mararit"
- },
- "iti": {
- "english_name": "Itneg, Inlaod"
- },
- "bxb": {
- "english_name": "Bor, Belanda"
- },
- "nl": {
- "english_name": "Dutch",
- "name": "Nederlands"
- },
- "gow": {
- "english_name": "Gorowa"
- },
- "zab": {
- "english_name": "Zapotec, San Juan Guelavía"
- },
- "bkh": {
- "english_name": "Bakoko"
- },
- "puo": {
- "english_name": "Puoc"
- },
- "lo": {
- "english_name": "Lao"
- },
- "bmb": {
- "english_name": "Bembe"
- },
- "kox": {
- "english_name": "Coxima"
- },
- "shl": {
- "english_name": "Shendu"
- },
- "kvv": {
- "english_name": "Kola"
- },
- "dgs": {
- "english_name": "Dogoso"
- },
- "aae": {
- "english_name": "Albanian, Arbëreshë"
- },
- "haj": {
- "english_name": "Hajong"
- },
- "siz": {
- "english_name": "Siwi"
- },
- "lcp": {
- "english_name": "Lawa, Western"
- },
- "orx": {
- "english_name": "Oro"
- },
- "gur": {
- "english_name": "Farefare"
- },
- "mkq": {
- "english_name": "Miwok, Bay"
- },
- "urk": {
- "english_name": "Urak Lawoi'"
- },
- "mcz": {
- "english_name": "Mawan"
- },
- "kut": {
- "english_name": "Kutenai"
- },
- "knk": {
- "english_name": "Kuranko"
- },
- "aim": {
- "english_name": "Aimol"
- },
- "ykg": {
- "english_name": "Yukaghir, Northern"
- },
- "tuu": {
- "english_name": "Tututni"
- },
- "cst": {
- "english_name": "Ohlone, Northern"
- },
- "tip": {
- "english_name": "Trimuris"
- },
- "hak": {
- "english_name": "Chinese, Hakka"
- },
- "tab": {
- "english_name": "Tabassaran"
- },
- "kyt": {
- "english_name": "Kayagar"
- },
- "pne": {
- "english_name": "Penan, Western"
- },
- "xme": {
- "english_name": "Median"
- },
- "swr": {
- "english_name": "Saweru"
- },
- "hoo": {
- "english_name": "Holoholo"
- },
- "fr": {
- "english_name": "French",
- "name": "français"
- },
- "skh": {
- "english_name": "Sikule"
- },
- "ca": {
- "english_name": "Catalan",
- "name": "Català"
- },
- "zpu": {
- "english_name": "Zapotec, Yalálag"
- },
- "tyt": {
- "english_name": "Tày Tac"
- },
- "bes": {
- "english_name": "Besme"
- },
- "hla": {
- "english_name": "Halia"
- },
- "dhd": {
- "english_name": "Dhundari"
- },
- "kfp": {
- "english_name": "Korwa"
- },
- "bup": {
- "english_name": "Busoa"
- },
- "kpm": {
- "english_name": "Koho"
- },
- "lbu": {
- "english_name": "Labu"
- },
- "frt": {
- "english_name": "Fortsenal"
- },
- "iff": {
- "english_name": "Ifo"
- },
- "mjr": {
- "english_name": "Malavedan"
- },
- "kxc": {
- "english_name": "Konso"
- },
- "ygm": {
- "english_name": "Yagomi"
- },
- "kxr": {
- "english_name": "Koro (Papua New Guinea)"
- },
- "mxi": {
- "english_name": "Mozarabic"
- },
- "mkz": {
- "english_name": "Makasae"
- },
- "dhl": {
- "english_name": "Dhalandji"
- },
- "mqn": {
- "english_name": "Moronene"
- },
- "dcc": {
- "english_name": "Deccan"
- },
- "pnk": {
- "english_name": "Paunaka"
- },
- "nqn": {
- "english_name": "Nen"
- },
- "bzk": {
- "english_name": "Creole English, Nicaragua"
- },
- "sqr": {
- "english_name": "Arabic, Siculo"
- },
- "ran": {
- "english_name": "Riantana"
- },
- "okj": {
- "english_name": "Oko-Juwoi"
- },
- "mam": {
- "english_name": "Mam"
- },
- "tgw": {
- "english_name": "Senoufo, Tagwana"
- },
- "mmq": {
- "english_name": "Musak"
- },
- "bni": {
- "english_name": "Bangi"
- },
- "hed": {
- "english_name": "Herdé"
- },
- "nbj": {
- "english_name": "Ngarinman"
- },
- "bcm": {
- "english_name": "Bannoni"
- },
- "bdp": {
- "english_name": "Bende"
- },
- "skv": {
- "english_name": "Skou"
- },
- "gyr": {
- "english_name": "Guarayu"
- },
- "kgn": {
- "english_name": "Karingani"
- },
- "mwq": {
- "english_name": "Chin, Mün"
- },
- "mix": {
- "english_name": "Mixtec, Mixtepec"
- },
- "smm": {
- "english_name": "Musasa"
- },
- "tld": {
- "english_name": "Talaud"
- },
- "kzt": {
- "english_name": "Dusun, Tambunan"
- },
- "rtc": {
- "english_name": "Chin, Rungtu"
- },
- "awu": {
- "english_name": "Awyu, Central"
- },
- "asf": {
- "english_name": "Australian Sign Language"
- },
- "sko": {
- "english_name": "Seko Tengah"
- },
- "ker": {
- "english_name": "Kera"
- },
- "lgr": {
- "english_name": "Lengo"
- },
- "dmd": {
- "english_name": "Madhi Madhi"
- },
- "tqt": {
- "english_name": "Totonac, Western"
- },
- "tgt": {
- "english_name": "Tagbanwa, Central"
- },
- "bqc": {
- "english_name": "Boko (Benin)"
- },
- "dai": {
- "english_name": "Day"
- },
- "qvn": {
- "english_name": "Quechua, North Junín"
- },
- "pai": {
- "english_name": "Pe"
- },
- "bab": {
- "english_name": "Bainouk-Gunyuño"
- },
- "amj": {
- "english_name": "Amdang"
- },
- "wik": {
- "english_name": "Wikalkan"
- },
- "nir": {
- "english_name": "Nimboran"
- },
- "siw": {
- "english_name": "Siwai"
- },
- "osp": {
- "english_name": "Spanish, Old"
- },
- "bag": {
- "english_name": "Tuki"
- },
- "xms": {
- "english_name": "Moroccan Sign Language"
- },
- "bfs": {
- "english_name": "Bai, Southern"
- },
- "wbj": {
- "english_name": "Alagwa"
- },
- "bwe": {
- "english_name": "Karen, Bwe"
- },
- "shj": {
- "english_name": "Shatt"
- },
- "pkg": {
- "english_name": "Pak-Tong"
- },
- "ssz": {
- "english_name": "Sengseng"
- },
- "ilo": {
- "english_name": "Iloko"
- },
- "nog": {
- "english_name": "Nogai"
- },
- "okd": {
- "english_name": "Okodia"
- },
- "mwr": {
- "english_name": "Marwari"
- },
- "yga": {
- "english_name": "Malyangapa"
- },
- "daa": {
- "english_name": "Dangaléat"
- },
- "wti": {
- "english_name": "Berta"
- },
- "vkk": {
- "english_name": "Kaur"
- },
- "cbk": {
- "english_name": "Chavacano"
- },
- "mpu": {
- "english_name": "Makuráp"
- },
- "xkz": {
- "english_name": "Kurtokha"
- },
- "xgm": {
- "english_name": "Guwinmal"
- },
- "cow": {
- "english_name": "Cowlitz"
- },
- "swv": {
- "english_name": "Shekhawati"
- },
- "slg": {
- "english_name": "Selungai Murut"
- },
- "mek": {
- "english_name": "Mekeo"
- },
- "dga": {
- "english_name": "Dagaare, Southern"
- },
- "uga": {
- "english_name": "Ugaritic"
- },
- "zos": {
- "english_name": "Zoque, Francisco León"
- },
- "xam": {
- "english_name": "/Xam"
- },
- "ych": {
- "english_name": "Chesu"
- },
- "ccp": {
- "english_name": "Chakma"
- },
- "mur": {
- "english_name": "Murle"
- },
- "bwf": {
- "english_name": "Boselewa"
- },
- "sho": {
- "english_name": "Shanga"
- },
- "pbt": {
- "english_name": "Pashto, Southern"
- },
- "ajg": {
- "english_name": "Aja (Benin)"
- },
- "elm": {
- "english_name": "Eleme"
- },
- "jhi": {
- "english_name": "Jehai"
- },
- "kqf": {
- "english_name": "Kakabai"
- },
- "num": {
- "english_name": "Niuafo'ou"
- },
- "xmf": {
- "english_name": "Mingrelian"
- },
- "nko": {
- "english_name": "Nkonya"
- },
- "mfm": {
- "english_name": "Marghi South"
- },
- "esm": {
- "english_name": "Esuma"
- },
- "plo": {
- "english_name": "Popoluca, Oluta"
- },
- "zbe": {
- "english_name": "Berawan, East"
- },
- "tbs": {
- "english_name": "Tanguat"
- },
- "khs": {
- "english_name": "Kasua"
- },
- "jct": {
- "english_name": "Krymchak"
- },
- "rkh": {
- "english_name": "Rakahanga-Manihiki"
- },
- "yug": {
- "english_name": "Yug"
- },
- "haz": {
- "english_name": "Hazaragi"
- },
- "qub": {
- "english_name": "Quechua, Huallaga Huánuco"
- },
- "ram": {
- "english_name": "Canela"
- },
- "wfg": {
- "english_name": "Yafi"
- },
- "ola": {
- "english_name": "Walungge"
- },
- "pss": {
- "english_name": "Kaulong"
- },
- "gbx": {
- "english_name": "Gbe, Eastern Xwla"
- },
- "bvt": {
- "english_name": "Bati (Indonesia)"
- },
- "mwo": {
- "english_name": "Maewo, Central"
- },
- "hlu": {
- "english_name": "Luwian, Hieroglyphic"
- },
- "wac": {
- "english_name": "Wasco-Wishram"
- },
- "goh": {
- "english_name": "German, Old High (ca. 750-1050)"
- },
- "ner": {
- "english_name": "Yahadian"
- },
- "bwk": {
- "english_name": "Bauwaki"
- },
- "ofu": {
- "english_name": "Efutop"
- },
- "mvd": {
- "english_name": "Mamboru"
- },
- "arj": {
- "english_name": "Arapaso"
- },
- "zme": {
- "english_name": "Mangerr"
- },
- "tux": {
- "english_name": "Tuxináwa"
- },
- "wiu": {
- "english_name": "Wiru"
- },
- "mgt": {
- "english_name": "Mongol"
- },
- "tlq": {
- "english_name": "Tai Loi"
- },
- "irn": {
- "english_name": "Irántxe"
- },
- "lsh": {
- "english_name": "Lish"
- },
- "yrl": {
- "english_name": "Nhengatu"
- },
- "syr": {
- "english_name": "Syriac"
- },
- "nbp": {
- "english_name": "Nnam"
- },
- "gso": {
- "english_name": "Gbaya, Southwest"
- },
- "uky": {
- "english_name": "Kuuk-Yak"
- },
- "ppt": {
- "english_name": "Pare"
- },
- "toy": {
- "english_name": "Topoiyo"
- },
- "wlx": {
- "english_name": "Wali (Ghana)"
- },
- "mfd": {
- "english_name": "Mendankwe-Nkwen"
- },
- "ikk": {
- "english_name": "Ika"
- },
- "pce": {
- "english_name": "Palaung, Ruching"
- },
- "vnk": {
- "english_name": "Vano"
- },
- "wrx": {
- "english_name": "Wae Rana"
- },
- "nlo": {
- "english_name": "Ngul"
- },
- "rui": {
- "english_name": "Rufiji"
- },
- "soy": {
- "english_name": "Miyobe"
- },
- "inj": {
- "english_name": "Inga, Jungle"
- },
- "dgo": {
- "english_name": "Dogri (individual language)"
- },
- "afu": {
- "english_name": "Awutu"
- },
- "kvd": {
- "english_name": "Kui (Indonesia)"
- },
- "nyd": {
- "english_name": "Nyore"
- },
- "mqx": {
- "english_name": "Mamuju"
- },
- "ngm": {
- "english_name": "Ngatik Men's Creole"
- },
- "cmi": {
- "english_name": "Emberá-Chamí"
- },
- "bve": {
- "english_name": "Malay, Berau"
- },
- "nia": {
- "english_name": "Nias"
- },
- "ige": {
- "english_name": "Igede"
- },
- "rgk": {
- "english_name": "Rangkas"
- },
- "urh": {
- "english_name": "Urhobo"
- },
- "dmr": {
- "english_name": "Damar, East"
- },
- "drl": {
- "english_name": "Paakantyi"
- },
- "dow": {
- "english_name": "Doyayo"
- },
- "kwu": {
- "english_name": "Kwakum"
- },
- "jub": {
- "english_name": "Wannu"
- },
- "wrr": {
- "english_name": "Wardaman"
- },
- "lvu": {
- "english_name": "Levuka"
- },
- "lom": {
- "english_name": "Loma (Liberia)"
- },
- "kgm": {
- "english_name": "Karipúna"
- },
- "kkj": {
- "english_name": "Kako"
- },
- "gyn": {
- "english_name": "Creole English, Guyanese"
- },
- "tde": {
- "english_name": "Dogon, Tiranige Diga"
- },
- "bvr": {
- "english_name": "Burarra"
- },
- "kqi": {
- "english_name": "Koitabu"
- },
- "dhs": {
- "english_name": "Dhaiso"
- },
- "mbe": {
- "english_name": "Molale"
- },
- "myc": {
- "english_name": "Mayeka"
- },
- "pof": {
- "english_name": "Poke"
- },
- "gnm": {
- "english_name": "Ginuman"
- },
- "mpx": {
- "english_name": "Misima-Panaeati"
- },
- "tod": {
- "english_name": "Toma"
- },
- "gan": {
- "english_name": "Chinese, Gan"
- },
- "cgc": {
- "english_name": "Kagayanen"
- },
- "udl": {
- "english_name": "Wuzlam"
- },
- "twm": {
- "english_name": "Monpa, Tawang"
- },
- "tke": {
- "english_name": "Takwane"
- },
- "mvq": {
- "english_name": "Moere"
- },
- "byj": {
- "english_name": "Bina (Nigeria)"
- },
- "qxw": {
- "english_name": "Quechua, Jauja Wanca"
- },
- "ocu": {
- "english_name": "Matlatzinca, Atzingo"
- },
- "bqf": {
- "english_name": "Baga Kaloum"
- },
- "gmb": {
- "english_name": "Gula'alaa"
- },
- "usk": {
- "english_name": "Usaghade"
- },
- "nwc": {
- "english_name": "Newari, Classical"
- },
- "thp": {
- "english_name": "Thompson"
- },
- "mch": {
- "english_name": "Maquiritari"
- },
- "hiw": {
- "english_name": "Hiw"
- },
- "nan": {
- "english_name": "Chinese, Min Nan"
- },
- "yuk": {
- "english_name": "Yuki"
- },
- "yad": {
- "english_name": "Yagua"
- },
- "wri": {
- "english_name": "Wariyangga"
- },
- "awi": {
- "english_name": "Aekyom"
- },
- "siy": {
- "english_name": "Sivandi"
- },
- "nhr": {
- "english_name": "Naro"
- },
- "pbe": {
- "english_name": "Popoloca, Mezontla"
- },
- "tkm": {
- "english_name": "Takelma"
- },
- "xpq": {
- "english_name": "Mohegan-Pequot"
- },
- "ybx": {
- "english_name": "Yawiyo"
- },
- "bcw": {
- "english_name": "Bana"
- },
- "mcj": {
- "english_name": "Mvanip"
- },
- "aih": {
- "english_name": "Ai-Cham"
- },
- "bqk": {
- "english_name": "Banda-Mbrès"
- },
- "abq": {
- "english_name": "Abaza"
- },
- "tnk": {
- "english_name": "Kwamera"
- },
- "asw": {
- "english_name": "Australian Aborigines Sign Language"
- },
- "fai": {
- "english_name": "Faiwol"
- },
- "grv": {
- "english_name": "Grebo, Central"
- },
- "egy": {
- "english_name": "Egyptian (Ancient)"
- },
- "zil": {
- "english_name": "Zialo"
- },
- "sro": {
- "english_name": "Sardinian, Campidanese"
- },
- "ese": {
- "english_name": "Ese Ejja"
- },
- "duq": {
- "english_name": "Dusun Malang"
- },
- "ekg": {
- "english_name": "Ekari"
- },
- "prk": {
- "english_name": "Parauk"
- },
- "tex": {
- "english_name": "Tennet"
- },
- "nja": {
- "english_name": "Nzanyi"
- },
- "nmm": {
- "english_name": "Manangba"
- },
- "kod": {
- "english_name": "Kodi"
- },
- "pab": {
- "english_name": "Parecís"
- },
- "wul": {
- "english_name": "Silimo"
- },
- "usp": {
- "english_name": "Uspanteco"
- },
- "vka": {
- "english_name": "Kariyarra"
- },
- "trn": {
- "english_name": "Trinitario"
- },
- "xel": {
- "english_name": "Kelo"
- },
- "tau": {
- "english_name": "Tanana, Upper"
- },
- "ubr": {
- "english_name": "Ubir"
- },
- "qxh": {
- "english_name": "Quechua, Panao Huánuco"
- },
- "bah": {
- "english_name": "Creole English, Bahamas"
- },
- "lea": {
- "english_name": "Lega-Shabunda"
- },
- "aof": {
- "english_name": "Bragat"
- },
- "xnn": {
- "english_name": "Kankanay, Northern"
- },
- "mhc": {
- "english_name": "Mocho"
- },
- "aek": {
- "english_name": "Haeke"
- },
- "rel": {
- "english_name": "Rendille"
- },
- "gnn": {
- "english_name": "Gumatj"
- },
- "okk": {
- "english_name": "One, Kwamtim"
- },
- "thq": {
- "english_name": "Tharu, Kochila"
- },
- "aqm": {
- "english_name": "Atohwaim"
- },
- "mqo": {
- "english_name": "Modole"
- },
- "toc": {
- "english_name": "Totonac, Coyutla"
- },
- "kqr": {
- "english_name": "Kimaragang"
- },
- "ado": {
- "english_name": "Abu"
- },
- "nbn": {
- "english_name": "Kuri"
- },
- "ksk": {
- "english_name": "Kansa"
- },
- "ztq": {
- "english_name": "Zapotec, Quioquitani-Quierí"
- },
- "vam": {
- "english_name": "Vanimo"
- },
- "bdi": {
- "english_name": "Burun"
- },
- "guw": {
- "english_name": "Gun"
- },
- "pej": {
- "english_name": "Pomo, Northern"
- },
- "jbe": {
- "english_name": "Judeo-Berber"
- },
- "ogc": {
- "english_name": "Ogbah"
- },
- "bvv": {
- "english_name": "Baniva"
- },
- "gah": {
- "english_name": "Alekano"
- },
- "adt": {
- "english_name": "Adnyamathanha"
- },
- "dud": {
- "english_name": "Hun-Saare"
- },
- "ckb": {
- "english_name": "Kurdish, Central"
- },
- "luw": {
- "english_name": "Luo (Cameroon)"
- },
- "mtc": {
- "english_name": "Munit"
- },
- "kzn": {
- "english_name": "Kokola"
- },
- "pmx": {
- "english_name": "Naga, Poumei"
- },
- "huq": {
- "english_name": "Tsat"
- },
- "cyo": {
- "english_name": "Cuyonon"
- },
- "srr": {
- "english_name": "Serer"
- },
- "ldm": {
- "english_name": "Landoma"
- },
- "gld": {
- "english_name": "Nanai"
- },
- "acz": {
- "english_name": "Acheron"
- },
- "ymk": {
- "english_name": "Makwe"
- },
- "mzy": {
- "english_name": "Mozambican Sign Language"
- },
- "ysd": {
- "english_name": "Samatao"
- },
- "jdg": {
- "english_name": "Jadgali"
- },
- "bgy": {
- "english_name": "Benggoi"
- },
- "bwh": {
- "english_name": "Bishuo"
- },
- "tgq": {
- "english_name": "Tring"
- },
- "afz": {
- "english_name": "Obokuitai"
- },
- "bln": {
- "english_name": "Bikol, Southern Catanduanes"
- },
- "tng": {
- "english_name": "Tobanga"
- },
- "nhe": {
- "english_name": "Nahuatl, Eastern Huasteca"
- },
- "ulk": {
- "english_name": "Meriam"
- },
- "it": {
- "english_name": "Italian",
- "name": "Italiano"
- },
- "lef": {
- "english_name": "Lelemi"
- },
- "uiv": {
- "english_name": "Iyive"
- },
- "nps": {
- "english_name": "Nipsan"
- },
- "mop": {
- "english_name": "Mopán Maya"
- },
- "njo": {
- "english_name": "Naga, Ao"
- },
- "lll": {
- "english_name": "Lilau"
- },
- "nec": {
- "english_name": "Nedebang"
- },
- "mmi": {
- "english_name": "Musar"
- },
- "vki": {
- "english_name": "Ija-Zuba"
- },
- "blp": {
- "english_name": "Blablanga"
- },
- "ga": {
- "english_name": "Irish",
- "name": "Gaeilge"
- },
- "tol": {
- "english_name": "Tolowa"
- },
- "bmr": {
- "english_name": "Muinane"
- },
- "yzg": {
- "english_name": "Buyang, E'ma"
- },
- "gog": {
- "english_name": "Gogo"
- },
- "bmx": {
- "english_name": "Baimak"
- },
- "lis": {
- "english_name": "Lisu"
- },
- "mwg": {
- "english_name": "Aiklep"
- },
- "acl": {
- "english_name": "Akar-Bale"
- },
- "gak": {
- "english_name": "Gamkonora"
- },
- "ilg": {
- "english_name": "Garig-Ilgar"
- },
- "mbh": {
- "english_name": "Mangseng"
- },
- "ykr": {
- "english_name": "Yekora"
- },
- "tdl": {
- "english_name": "Sur"
- },
- "wep": {
- "english_name": "Westphalien"
- },
- "ogb": {
- "english_name": "Ogbia"
- },
- "omt": {
- "english_name": "Omotik"
- },
- "pso": {
- "english_name": "Polish Sign Language"
- },
- "kcp": {
- "english_name": "Kanga"
- },
- "pnb": {
- "english_name": "Panjabi, Western"
- },
- "uln": {
- "english_name": "Unserdeutsch"
- },
- "nbb": {
- "english_name": "Ndoe"
- },
- "swy": {
- "english_name": "Sarua"
- },
- "wet": {
- "english_name": "Perai"
- },
- "mje": {
- "english_name": "Muskum"
- },
- "miw": {
- "english_name": "Akoye"
- },
- "dty": {
- "english_name": "Dotyali"
- },
- "cak": {
- "english_name": "Kaqchikel"
- },
- "bmm": {
- "english_name": "Malagasy, Northern Betsimisaraka"
- },
- "khz": {
- "english_name": "Keapara"
- },
- "bbz": {
- "english_name": "Creole Arabic, Babalia"
- },
- "lje": {
- "english_name": "Rampi"
- },
- "plr": {
- "english_name": "Senoufo, Palaka"
- },
- "gud": {
- "english_name": "Dida, Yocoboué"
- },
- "ksf": {
- "english_name": "Bafia"
- },
- "mnh": {
- "english_name": "Mono (Democratic Republic of Congo)"
- },
- "pgs": {
- "english_name": "Pangseng"
- },
- "yin": {
- "english_name": "Yinchia"
- },
- "kke": {
- "english_name": "Kakabe"
- },
- "yoi": {
- "english_name": "Yonaguni"
- },
- "zpy": {
- "english_name": "Zapotec, Mazaltepec"
- },
- "anp": {
- "english_name": "Angika"
- },
- "sub": {
- "english_name": "Suku"
- },
- "brq": {
- "english_name": "Breri"
- },
- "utp": {
- "english_name": "Amba (Solomon Islands)"
- },
- "nv": {
- "english_name": "Navajo"
- },
- "gmn": {
- "english_name": "Gimnime"
- },
- "nmn": {
- "english_name": "!Xóõ"
- },
- "ndr": {
- "english_name": "Ndoola"
- },
- "nae": {
- "english_name": "Naka'ela"
- },
- "ang": {
- "english_name": "English, Old (ca. 450-1100)"
- },
- "bzy": {
- "english_name": "Obanliku"
- },
- "azt": {
- "english_name": "Atta, Faire"
- },
- "atc": {
- "english_name": "Atsahuaca"
- },
- "ndm": {
- "english_name": "Ndam"
- },
- "bjv": {
- "english_name": "Bedjond"
- },
- "lb": {
- "english_name": "Luxembourgish"
- },
- "kzw": {
- "english_name": "Karirí-Xocó"
- },
- "rou": {
- "english_name": "Runga"
- },
- "gnu": {
- "english_name": "Gnau"
- },
- "sgd": {
- "english_name": "Surigaonon"
- },
- "mjv": {
- "english_name": "Mannan"
- },
- "dic": {
- "english_name": "Dida, Lakota"
- },
- "wry": {
- "english_name": "Merwari"
- },
- "lkr": {
- "english_name": "Päri"
- },
- "gdt": {
- "english_name": "Kungardutyi"
- },
- "lky": {
- "english_name": "Lokoya"
- },
- "gni": {
- "english_name": "Gooniyandi"
- },
- "ood": {
- "english_name": "Tohono O'odham"
- },
- "bbw": {
- "english_name": "Baba"
- },
- "dui": {
- "english_name": "Dumun"
- },
- "kzl": {
- "english_name": "Kayeli"
- },
- "ksh": {
- "english_name": "Kölsch"
- },
- "xiy": {
- "english_name": "Xipaya"
- },
- "yww": {
- "english_name": "Yawarawarga"
- },
- "spk": {
- "english_name": "Sengo"
- },
- "bnb": {
- "english_name": "Bookan"
- },
- "lui": {
- "english_name": "Luiseno"
- },
- "xpm": {
- "english_name": "Pumpokol"
- },
- "ngg": {
- "english_name": "Ngbaka Manza"
- },
- "ghn": {
- "english_name": "Ghanongga"
- },
- "swj": {
- "english_name": "Sira"
- },
- "mtg": {
- "english_name": "Una"
- },
- "ngu": {
- "english_name": "Nahuatl, Guerrero"
- },
- "nju": {
- "english_name": "Ngadjunmaya"
- },
- "vgr": {
- "english_name": "Vaghri"
- },
- "wlm": {
- "english_name": "Welsh, Middle"
- },
- "rag": {
- "english_name": "Logooli"
- },
- "pth": {
- "english_name": "Pataxó Hã-Ha-Hãe"
- },
- "sdz": {
- "english_name": "Sallands"
- },
- "tul": {
- "english_name": "Tula"
- },
- "xre": {
- "english_name": "Kreye"
- },
- "mxx": {
- "english_name": "Mahou"
- },
- "mdl": {
- "english_name": "Maltese Sign Language"
- },
- "dsb": {
- "english_name": "Sorbian, Lower"
- },
- "ake": {
- "english_name": "Akawaio"
- },
- "bxs": {
- "english_name": "Busam"
- },
- "sjn": {
- "english_name": "Sindarin"
- },
- "bpw": {
- "english_name": "Bo (Papua New Guinea)"
- },
- "cbd": {
- "english_name": "Carijona"
- },
- "gce": {
- "english_name": "Galice"
- },
- "nez": {
- "english_name": "Nez Perce"
- },
- "djm": {
- "english_name": "Dogon, Jamsay"
- },
- "aku": {
- "english_name": "Akum"
- },
- "vel": {
- "english_name": "Veluws"
- },
- "ndj": {
- "english_name": "Ndamba"
- },
- "vmz": {
- "english_name": "Mazatec, Mazatlán"
- },
- "gru": {
- "english_name": "Kistane"
- },
- "bey": {
- "english_name": "Beli (Papua New Guinea)"
- },
- "dyy": {
- "english_name": "Dyaabugay"
- },
- "piz": {
- "english_name": "Pije"
- },
- "bbs": {
- "english_name": "Bakpinka"
- },
- "ykl": {
- "english_name": "Khlula"
- },
- "plc": {
- "english_name": "Palawano, Central"
- },
- "met": {
- "english_name": "Mato"
- },
- "tus": {
- "english_name": "Tuscarora"
- },
- "xjt": {
- "english_name": "Jaitmatang"
- },
- "ktt": {
- "english_name": "Ketum"
- },
- "aqg": {
- "english_name": "Arigidi"
- },
- "mhp": {
- "english_name": "Malay, Balinese"
- },
- "neq": {
- "english_name": "Mixe, North Central"
- },
- "umb": {
- "english_name": "Umbundu"
- },
- "dnw": {
- "english_name": "Dani, Western"
- },
- "fly": {
- "english_name": "Tsotsitaal"
- },
- "zbl": {
- "english_name": "Blissymbols"
- },
- "tub": {
- "english_name": "Tübatulabal"
- },
- "oma": {
- "english_name": "Omaha-Ponca"
- },
- "gbn": {
- "english_name": "Mo'da"
- },
- "hch": {
- "english_name": "Huichol"
- },
- "bib": {
- "english_name": "Bissa"
- },
- "agt": {
- "english_name": "Agta, Central Cagayan"
- },
- "kvg": {
- "english_name": "Kuni-Boazi"
- },
- "crg": {
- "english_name": "Michif"
- },
- "cjn": {
- "english_name": "Chenapian"
- },
- "yrk": {
- "english_name": "Nenets"
- },
- "xse": {
- "english_name": "Sempan"
- },
- "gux": {
- "english_name": "Gourmanchéma"
- },
- "xvi": {
- "english_name": "Kamviri"
- },
- "kbo": {
- "english_name": "Keliko"
- },
- "gat": {
- "english_name": "Kenati"
- },
- "liv": {
- "english_name": "Liv"
- },
- "kqn": {
- "english_name": "Kaonde"
- },
- "cvn": {
- "english_name": "Chinantec, Valle Nacional"
- },
- "sdh": {
- "english_name": "Kurdish, Southern"
- },
- "xma": {
- "english_name": "Mushungulu"
- },
- "tmt": {
- "english_name": "Tasmate"
- },
- "tpk": {
- "english_name": "Tupinikin"
- },
- "pcl": {
- "english_name": "Pardhi"
- },
- "ztn": {
- "english_name": "Zapotec, Santa Catarina Albarradas"
- },
- "ttk": {
- "english_name": "Totoro"
- },
- "ydk": {
- "english_name": "Yoidik"
- },
- "xua": {
- "english_name": "Kurumba, Alu"
- },
- "keo": {
- "english_name": "Kakwa"
- },
- "otk": {
- "english_name": "Turkish, Old"
- },
- "njd": {
- "english_name": "Ndonde Hamba"
- },
- "nxx": {
- "english_name": "Nafri"
- },
- "xly": {
- "english_name": "Elymian"
- },
- "lbz": {
- "english_name": "Lardil"
- },
- "sie": {
- "english_name": "Simaa"
- },
- "yam": {
- "english_name": "Yamba"
- },
- "wba": {
- "english_name": "Warao"
- },
- "scp": {
- "english_name": "Helambu Sherpa"
- },
- "is": {
- "english_name": "Icelandic",
- "name": "Íslenska"
- },
- "daz": {
- "english_name": "Dao"
- },
- "bym": {
- "english_name": "Bidyara"
- },
- "tnc": {
- "english_name": "Tanimuca-Retuarã"
- },
- "oon": {
- "english_name": "Önge"
- },
- "biz": {
- "english_name": "Baloi"
- },
- "bia": {
- "english_name": "Badimaya"
- },
- "smf": {
- "english_name": "Auwe"
- },
- "wrz": {
- "english_name": "Waray (Australia)"
- },
- "emn": {
- "english_name": "Eman"
- },
- "tva": {
- "english_name": "Vaghua"
- },
- "tpm": {
- "english_name": "Tampulma"
- },
- "klo": {
- "english_name": "Kapya"
- },
- "kib": {
- "english_name": "Koalib"
- },
- "ibn": {
- "english_name": "Ibino"
- },
- "but": {
- "english_name": "Bungain"
- },
- "xtz": {
- "english_name": "Tasmanian"
- },
- "ttz": {
- "english_name": "Tsum"
- },
- "nrg": {
- "english_name": "Narango"
- },
- "ibu": {
- "english_name": "Ibu"
- },
- "sux": {
- "english_name": "Sumerian"
- },
- "snq": {
- "english_name": "Sangu (Gabon)"
- },
- "tkb": {
- "english_name": "Buksa"
- },
- "akr": {
- "english_name": "Araki"
- },
- "tdj": {
- "english_name": "Tajio"
- },
- "mle": {
- "english_name": "Manambu"
- },
- "bgk": {
- "english_name": "Bit"
- },
- "mwz": {
- "english_name": "Moingi"
- },
- "hmj": {
- "english_name": "Ge"
- },
- "kgs": {
- "english_name": "Kumbainggar"
- },
- "mjz": {
- "english_name": "Majhi"
- },
- "arz": {
- "english_name": "Arabic, Egyptian"
- },
- "tbv": {
- "english_name": "Tobo"
- },
- "wbf": {
- "english_name": "Wara"
- },
- "acx": {
- "english_name": "Arabic, Omani"
- },
- "bst": {
- "english_name": "Basketo"
- },
- "jad": {
- "english_name": "Jahanka"
- },
- "xgg": {
- "english_name": "Goreng"
- },
- "mgy": {
- "english_name": "Mbunga"
- },
- "tax": {
- "english_name": "Tamki"
- },
- "vag": {
- "english_name": "Vagla"
- },
- "trv": {
- "english_name": "Taroko"
- },
- "uba": {
- "english_name": "Ubang"
- },
- "jna": {
- "english_name": "Jangshung"
- },
- "quq": {
- "english_name": "Quinqui"
- },
- "jko": {
- "english_name": "Kubo"
- },
- "mfi": {
- "english_name": "Wandala"
- },
- "zpa": {
- "english_name": "Zapotec, Lachiguiri"
- },
- "mcv": {
- "english_name": "Minanibai"
- },
- "mwf": {
- "english_name": "Murrinh-Patha"
- },
- "kgi": {
- "english_name": "Selangor Sign Language"
- },
- "del": {
- "english_name": "Delaware"
- },
- "bhb": {
- "english_name": "Bhili"
- },
- "juy": {
- "english_name": "Juray"
- },
- "gng": {
- "english_name": "Ngangam"
- },
- "nlc": {
- "english_name": "Nalca"
- },
- "bsv": {
- "english_name": "Baga Sobané"
- },
- "lut": {
- "english_name": "Lushootseed"
- },
- "lng": {
- "english_name": "Langobardic"
- },
- "ahg": {
- "english_name": "Qimant"
- },
- "ngt": {
- "english_name": "Ngeq"
- },
- "nsz": {
- "english_name": "Nisenan"
- },
- "si": {
- "english_name": "Sinhala"
- },
- "seq": {
- "english_name": "Sénoufo, Senara"
- },
- "xmy": {
- "english_name": "Mayaguduna"
- },
- "tlt": {
- "english_name": "Teluti"
- },
- "arr": {
- "english_name": "Karo (Brazil)"
- },
- "bfi": {
- "english_name": "British Sign Language"
- },
- "fir": {
- "english_name": "Firan"
- },
- "jih": {
- "english_name": "sTodsde"
- },
- "pos": {
- "english_name": "Popoluca, Sayula"
- },
- "tnt": {
- "english_name": "Tontemboan"
- },
- "kqx": {
- "english_name": "Mser"
- },
- "myx": {
- "english_name": "Masaaba"
- },
- "gbw": {
- "english_name": "Gabi-Gabi"
- },
- "wsi": {
- "english_name": "Wusi"
- },
- "guz": {
- "english_name": "Gusii"
- },
- "rnr": {
- "english_name": "Nari Nari"
- },
- "azg": {
- "english_name": "Amuzgo, San Pedro Amuzgos"
- },
- "apq": {
- "english_name": "A-Pucikwar"
- },
- "lra": {
- "english_name": "Rara Bakati'"
- },
- "zzj": {
- "english_name": "Zhuang, Zuojiang"
- },
- "syo": {
- "english_name": "Suoy"
- },
- "lez": {
- "english_name": "Lezghian"
- },
- "ntz": {
- "english_name": "Natanzi"
- },
- "tto": {
- "english_name": "Ta'oih, Lower"
- },
- "nee": {
- "english_name": "Nêlêmwa-Nixumwak"
- },
- "fur": {
- "english_name": "Friulian"
- },
- "jiq": {
- "english_name": "Guanyinqiao"
- },
- "bgs": {
- "english_name": "Tagabawa"
- },
- "lnn": {
- "english_name": "Lorediakarkar"
- },
- "krw": {
- "english_name": "Krahn, Western"
- },
- "pnw": {
- "english_name": "Panytyima"
- },
- "zeh": {
- "english_name": "Zhuang, Eastern Hongshuihe"
- },
- "ptp": {
- "english_name": "Patep"
- },
- "wbi": {
- "english_name": "Vwanji"
- },
- "mee": {
- "english_name": "Mengen"
- },
- "viv": {
- "english_name": "Iduna"
- },
- "bua": {
- "english_name": "Buriat"
- },
- "sgx": {
- "english_name": "Sierra Leone Sign Language"
- },
- "fuq": {
- "english_name": "Fulfulde, Central-Eastern Niger"
- },
- "snp": {
- "english_name": "Siane"
- },
- "kjd": {
- "english_name": "Kiwai, Southern"
- },
- "rar": {
- "english_name": "Rarotongan"
- },
- "vao": {
- "english_name": "Vao"
- },
- "myd": {
- "english_name": "Maramba"
- },
- "mef": {
- "english_name": "Megam"
- },
- "yso": {
- "english_name": "Nisi (China)"
- },
- "kfa": {
- "english_name": "Kodava"
- },
- "qxr": {
- "english_name": "Quichua, Cañar Highland"
- },
- "nac": {
- "english_name": "Narak"
- },
- "jgo": {
- "english_name": "Ngomba"
- },
- "bha": {
- "english_name": "Bharia"
- },
- "obk": {
- "english_name": "Bontok, Southern"
- },
- "koh": {
- "english_name": "Koyo"
- },
- "cik": {
- "english_name": "Kinnauri, Chitkuli"
- },
- "prm": {
- "english_name": "Kibiri"
- },
- "ksp": {
- "english_name": "Kaba"
- },
- "wsv": {
- "english_name": "Wotapuri-Katarqalai"
- },
- "jkp": {
- "english_name": "Karen, Paku"
- },
- "dbo": {
- "english_name": "Dulbu"
- },
- "kg": {
- "english_name": "Kongo"
- },
- "mxy": {
- "english_name": "Mixtec, Southeastern Nochixtlán"
- },
- "hmb": {
- "english_name": "Songhay, Humburi Senni"
- },
- "yss": {
- "english_name": "Yessan-Mayo"
- },
- "bmh": {
- "english_name": "Kein"
- },
- "tak": {
- "english_name": "Tala"
- },
- "oos": {
- "english_name": "Ossetic, Old"
- },
- "geb": {
- "english_name": "Kire"
- },
- "xwg": {
- "english_name": "Kwegu"
- },
- "bvj": {
- "english_name": "Baan"
- },
- "sdu": {
- "english_name": "Sarudu"
- },
- "yns": {
- "english_name": "Yansi"
- },
- "pij": {
- "english_name": "Pijao"
- },
- "sxg": {
- "english_name": "Shixing"
- },
- "vmy": {
- "english_name": "Mazatec, Ayautla"
- },
- "lrv": {
- "english_name": "Larevat"
- },
- "llu": {
- "english_name": "Lau"
- },
- "wmw": {
- "english_name": "Mwani"
- },
- "wau": {
- "english_name": "Waurá"
- },
- "zrs": {
- "english_name": "Mairasi"
- },
- "stm": {
- "english_name": "Setaman"
- },
- "yee": {
- "english_name": "Yimas"
- },
- "bci": {
- "english_name": "Baoulé"
- },
- "lcc": {
- "english_name": "Legenyem"
- },
- "tth": {
- "english_name": "Ta'oih, Upper"
- },
- "lgh": {
- "english_name": "Laghuu"
- },
- "fum": {
- "english_name": "Fum"
- },
- "lhh": {
- "english_name": "Laha (Indonesia)"
- },
- "hmw": {
- "english_name": "Hmong, Western Mashan"
- },
- "mka": {
- "english_name": "Mbre"
- },
- "hnh": {
- "english_name": "//Ani"
- },
- "bpy": {
- "english_name": "Bishnupriya"
- },
- "cea": {
- "english_name": "Chehalis, Lower"
- },
- "yit": {
- "english_name": "Lalu, Eastern"
- },
- "rtm": {
- "english_name": "Rotuman"
- },
- "sjt": {
- "english_name": "Sami, Ter"
- },
- "atr": {
- "english_name": "Waimiri-Atroari"
- },
- "ote": {
- "english_name": "Otomi, Mezquital"
- },
- "yue": {
- "english_name": "Chinese, Yue"
- },
- "sbl": {
- "english_name": "Sambal, Botolan"
- },
- "muv": {
- "english_name": "Muthuvan"
- },
- "leu": {
- "english_name": "Kara (Papua New Guinea)"
- },
- "lgn": {
- "english_name": "Opuuo"
- },
- "uji": {
- "english_name": "Tanjijili"
- },
- "alk": {
- "english_name": "Alak"
- },
- "akf": {
- "english_name": "Akpa"
- },
- "lie": {
- "english_name": "Likila"
- },
- "vra": {
- "english_name": "Vera'a"
- },
- "mty": {
- "english_name": "Nabi"
- },
- "soo": {
- "english_name": "Songo"
- },
- "btx": {
- "english_name": "Batak Karo"
- },
- "yik": {
- "english_name": "Lalo, Dongshanba"
- },
- "alw": {
- "english_name": "Alaba-K’abeena"
- },
- "cry": {
- "english_name": "Cori"
- },
- "guv": {
- "english_name": "Gey"
- },
- "unx": {
- "english_name": "Munda"
- },
- "pcb": {
- "english_name": "Pear"
- },
- "bsh": {
- "english_name": "Kati"
- },
- "duv": {
- "english_name": "Duvle"
- },
- "okr": {
- "english_name": "Kirike"
- },
- "mdb": {
- "english_name": "Morigi"
- },
- "crw": {
- "english_name": "Chrau"
- },
- "owl": {
- "english_name": "Welsh, Old"
- },
- "tsk": {
- "english_name": "Tseku"
- },
- "ump": {
- "english_name": "Umpila"
- },
- "kcb": {
- "english_name": "Kawacha"
- },
- "rej": {
- "english_name": "Rejang"
- },
- "gos": {
- "english_name": "Gronings"
- },
- "kiu": {
- "english_name": "Kirmanjki (individual language)"
- },
- "mqz": {
- "english_name": "Pano"
- },
- "swi": {
- "english_name": "Sui"
- },
- "awe": {
- "english_name": "Awetí"
- },
- "shu": {
- "english_name": "Arabic, Chadian"
- },
- "hwo": {
- "english_name": "Hwana"
- },
- "xkg": {
- "english_name": "Kagoro"
- },
- "dbi": {
- "english_name": "Doka"
- },
- "bez": {
- "english_name": "Bena (Tanzania)"
- },
- "cuw": {
- "english_name": "Chukwa"
- },
- "ylb": {
- "english_name": "Yaleba"
- },
- "mmr": {
- "english_name": "Miao, Western Xiangxi"
- },
- "bro": {
- "english_name": "Brokkat"
- },
- "jle": {
- "english_name": "Ngile"
- },
- "lbl": {
- "english_name": "Bikol, Libon"
- },
- "kdd": {
- "english_name": "Yankunytjatjara"
- },
- "jaq": {
- "english_name": "Yaqay"
- },
- "ckr": {
- "english_name": "Kairak"
- },
- "acp": {
- "english_name": "Acipa, Eastern"
- },
- "bcz": {
- "english_name": "Bainouk-Gunyaamolo"
- },
- "sst": {
- "english_name": "Sinasina"
- },
- "tgx": {
- "english_name": "Tagish"
- },
- "jbi": {
- "english_name": "Badjiri"
- },
- "br": {
- "english_name": "Breton",
- "name": "Brezhoneg"
- },
- "bit": {
- "english_name": "Berinomo"
- },
- "nst": {
- "english_name": "Naga, Tase"
- },
- "ypp": {
- "english_name": "Phupa"
- },
- "rat": {
- "english_name": "Razajerdi"
- },
- "myo": {
- "english_name": "Anfillo"
- },
- "bka": {
- "english_name": "Kyak"
- },
- "yux": {
- "english_name": "Yukaghir, Southern"
- },
- "lud": {
- "english_name": "Ludian"
- },
- "cga": {
- "english_name": "Changriwa"
- },
- "tru": {
- "english_name": "Turoyo"
- },
- "wmc": {
- "english_name": "Wamas"
- },
- "coz": {
- "english_name": "Chochotec"
- },
- "elh": {
- "english_name": "El Hugeirat"
- },
- "ktr": {
- "english_name": "Kota Marudu Tinagas"
- },
- "iso": {
- "english_name": "Isoko"
- },
- "bpt": {
- "english_name": "Barrow Point"
- },
- "diu": {
- "english_name": "Diriku"
- },
- "prs": {
- "english_name": "Dari"
- },
- "wag": {
- "english_name": "Wa'ema"
- },
- "kbv": {
- "english_name": "Dera (Indonesia)"
- },
- "gwj": {
- "english_name": "/Gwi"
- },
- "nru": {
- "english_name": "Narua"
- },
- "hih": {
- "english_name": "Pamosu"
- },
- "dnu": {
- "english_name": "Danau"
- },
- "old": {
- "english_name": "Mochi"
- },
- "uvl": {
- "english_name": "Lote"
- },
- "lia": {
- "english_name": "Limba, West-Central"
- },
- "mkx": {
- "english_name": "Manobo, Kinamiging"
- },
- "fap": {
- "english_name": "Palor"
- },
- "fah": {
- "english_name": "Fali, Baissa"
- },
- "gnt": {
- "english_name": "Guntai"
- },
- "kze": {
- "english_name": "Kosena"
- },
- "pta": {
- "english_name": "Pai Tavytera"
- },
- "lbi": {
- "english_name": "La'bi"
- },
- "glo": {
- "english_name": "Galambu"
- },
- "biy": {
- "english_name": "Birhor"
- },
- "reb": {
- "english_name": "Rembong"
- },
- "pwi": {
- "english_name": "Patwin"
- },
- "tid": {
- "english_name": "Tidong"
- },
- "ppn": {
- "english_name": "Papapana"
- },
- "coy": {
- "english_name": "Coyaima"
- },
- "gon": {
- "english_name": "Gondi"
- },
- "kzj": {
- "english_name": "Kadazan, Coastal"
- },
- "xgu": {
- "english_name": "Unggumi"
- },
- "bll": {
- "english_name": "Biloxi"
- },
- "gam": {
- "english_name": "Kandawo"
- },
- "sik": {
- "english_name": "Sikiana"
- },
- "tug": {
- "english_name": "Tunia"
- },
- "rkm": {
- "english_name": "Marka"
- },
- "res": {
- "english_name": "Reshe"
- },
- "tbm": {
- "english_name": "Tagbu"
- },
- "sod": {
- "english_name": "Songoora"
- },
- "ukp": {
- "english_name": "Ukpe-Bayobiri"
- },
- "rbb": {
- "english_name": "Palaung, Rumai"
- },
- "lbe": {
- "english_name": "Lak"
- },
- "msy": {
- "english_name": "Aruamu"
- },
- "bqg": {
- "english_name": "Bago-Kusuntu"
- },
- "lja": {
- "english_name": "Golpa"
- },
- "nnh": {
- "english_name": "Ngiemboon"
- },
- "gdd": {
- "english_name": "Gedaged"
- },
- "rmg": {
- "english_name": "Norwegian, Traveller"
- },
- "jiy": {
- "english_name": "Jinuo, Buyuan"
- },
- "aln": {
- "english_name": "Albanian, Gheg"
- },
- "kow": {
- "english_name": "Kugama"
- },
- "bpp": {
- "english_name": "Kaure"
- },
- "ojv": {
- "english_name": "Ontong Java"
- },
- "thf": {
- "english_name": "Thangmi"
- },
- "khr": {
- "english_name": "Kharia"
- },
- "iml": {
- "english_name": "Miluk"
- },
- "lna": {
- "english_name": "Langbashe"
- },
- "lmr": {
- "english_name": "Lamalera"
- },
- "cda": {
- "english_name": "Choni"
- },
- "wew": {
- "english_name": "Wejewa"
- },
- "akc": {
- "english_name": "Mpur"
- },
- "aa": {
- "english_name": "Afar"
- },
- "siu": {
- "english_name": "Sinagen"
- },
- "yxa": {
- "english_name": "Mayawali"
- },
- "mcn": {
- "english_name": "Masana"
- },
- "imi": {
- "english_name": "Anamgura"
- },
- "lml": {
- "english_name": "Hano"
- },
- "kfi": {
- "english_name": "Kurumba, Kannada"
- },
- "mjo": {
- "english_name": "Malankuravan"
- },
- "kzm": {
- "english_name": "Kais"
- },
- "ymg": {
- "english_name": "Yamongeri"
- },
- "mie": {
- "english_name": "Mixtec, Ocotepec"
- },
- "naf": {
- "english_name": "Nabak"
- },
- "mzh": {
- "english_name": "Wichí Lhamtés Güisnay"
- },
- "bnl": {
- "english_name": "Boon"
- },
- "snu": {
- "english_name": "Senggi"
- },
- "xss": {
- "english_name": "Assan"
- },
- "kmt": {
- "english_name": "Kemtuik"
- },
- "qvy": {
- "english_name": "Queyu"
- },
- "xml": {
- "english_name": "Malaysian Sign Language"
- },
- "rsl": {
- "english_name": "Russian Sign Language"
- },
- "sjg": {
- "english_name": "Assangori"
- },
- "mcc": {
- "english_name": "Bitur"
- },
- "amg": {
- "english_name": "Amurdak"
- },
- "lof": {
- "english_name": "Logol"
- },
- "tek": {
- "english_name": "Teke, Ibali"
- },
- "ctd": {
- "english_name": "Chin, Tedim"
- },
- "bkl": {
- "english_name": "Berik"
- },
- "mnp": {
- "english_name": "Chinese, Min Bei"
- },
- "den": {
- "english_name": "Slave (Athapascan)"
- },
- "bji": {
- "english_name": "Burji"
- },
- "kzq": {
- "english_name": "Kaike"
- },
- "bso": {
- "english_name": "Buso"
- },
- "nmf": {
- "english_name": "Naga, Tangkhul (India)"
- },
- "brb": {
- "english_name": "Lave"
- },
- "cup": {
- "english_name": "Cupeño"
- },
- "sip": {
- "english_name": "Sikkimese"
- },
- "mjl": {
- "english_name": "Mandeali"
- },
- "nkr": {
- "english_name": "Nukuoro"
- },
- "yui": {
- "english_name": "Yurutí"
- },
- "hob": {
- "english_name": "Mari (Madang Province)"
- },
- "llf": {
- "english_name": "Hermit"
- },
- "maj": {
- "english_name": "Mazatec, Jalapa De Díaz"
- },
- "onx": {
- "english_name": "Onin Based Pidgin"
- },
- "ngn": {
- "english_name": "Ngwo"
- },
- "zpl": {
- "english_name": "Zapotec, Lachixío"
- },
- "aio": {
- "english_name": "Aiton"
- },
- "mpi": {
- "english_name": "Mpade"
- },
- "pef": {
- "english_name": "Pomo, Northeastern"
- },
- "nly": {
- "english_name": "Nyamal"
- },
- "dws": {
- "english_name": "Dutton World Speedwords"
- },
- "far": {
- "english_name": "Fataleka"
- },
- "kbi": {
- "english_name": "Kaptiau"
- },
- "snn": {
- "english_name": "Siona"
- },
- "kop": {
- "english_name": "Waube"
- },
- "plu": {
- "english_name": "Palikúr"
- },
- "poh": {
- "english_name": "Poqomchi'"
- },
- "atw": {
- "english_name": "Atsugewi"
- },
- "fub": {
- "english_name": "Fulfulde, Adamawa"
- },
- "ngj": {
- "english_name": "Ngie"
- },
- "ny": {
- "english_name": "Nyanja"
- },
- "mij": {
- "english_name": "Abar"
- },
- "pfl": {
- "english_name": "Pfaelzisch"
- },
- "eee": {
- "english_name": "E"
- },
- "fkk": {
- "english_name": "Kirya-Konzəl"
- },
- "mcg": {
- "english_name": "Mapoyo"
- },
- "njm": {
- "english_name": "Naga, Angami"
- },
- "gwi": {
- "english_name": "Gwichʼin"
- },
- "dse": {
- "english_name": "Dutch Sign Language"
- },
- "dlg": {
- "english_name": "Dolgan"
- },
- "tcz": {
- "english_name": "Chin, Thado"
- },
- "koa": {
- "english_name": "Konomala"
- },
- "dms": {
- "english_name": "Dampelas"
- },
- "smp": {
- "english_name": "Samaritan"
- },
- "jkr": {
- "english_name": "Koro (India)"
- },
- "maa": {
- "english_name": "Mazatec, San Jerónimo Tecóatl"
- },
- "ku": {
- "english_name": "Kurdish"
- },
- "tfn": {
- "english_name": "Tanaina"
- },
- "akg": {
- "english_name": "Anakalangu"
- },
- "bfa": {
- "english_name": "Bari"
- },
- "wnk": {
- "english_name": "Wanukaka"
- },
- "tse": {
- "english_name": "Tunisian Sign Language"
- },
- "pzn": {
- "english_name": "Naga, Para"
- },
- "kdi": {
- "english_name": "Kumam"
- },
- "duu": {
- "english_name": "Drung"
- },
- "kzv": {
- "english_name": "Komyandaret"
- },
- "gya": {
- "english_name": "Gbaya, Northwest"
- },
- "xir": {
- "english_name": "Xiriâna"
- },
- "scl": {
- "english_name": "Shina"
- },
- "mdz": {
- "english_name": "Suruí Do Pará"
- },
- "erw": {
- "english_name": "Erokwanas"
- },
- "sxl": {
- "english_name": "Selian"
- },
- "lbs": {
- "english_name": "Libyan Sign Language"
- },
- "wrn": {
- "english_name": "Warnang"
- },
- "sen": {
- "english_name": "Sénoufo, Nanerigé"
- },
- "mzw": {
- "english_name": "Deg"
- },
- "oca": {
- "english_name": "Ocaina"
- },
- "kud": {
- "english_name": "'Auhelawa"
- },
- "soh": {
- "english_name": "Aka"
- },
- "dek": {
- "english_name": "Dek"
- },
- "kms": {
- "english_name": "Kamasau"
- },
- "tji": {
- "english_name": "Tujia, Northern"
- },
- "nra": {
- "english_name": "Ngom"
- },
- "kkb": {
- "english_name": "Kwerisa"
- },
- "ybh": {
- "english_name": "Yakha"
- },
- "bpk": {
- "english_name": "Orowe"
- },
- "ule": {
- "english_name": "Lule"
- },
- "kwi": {
- "english_name": "Awa-Cuaiquer"
- },
- "piy": {
- "english_name": "Piya-Kwonci"
- },
- "thc": {
- "english_name": "Tai Hang Tong"
- },
- "zea": {
- "english_name": "Zeeuws"
- },
- "nux": {
- "english_name": "Mehek"
- },
- "ajz": {
- "english_name": "Karbi, Amri"
- },
- "fni": {
- "english_name": "Fania"
- },
- "sta": {
- "english_name": "Settla"
- },
- "xag": {
- "english_name": "Aghwan"
- },
- "nos": {
- "english_name": "Nisu, Eastern"
- },
- "not": {
- "english_name": "Nomatsiguenga"
- },
- "tqr": {
- "english_name": "Torona"
- },
- "opm": {
- "english_name": "Oksapmin"
- },
- "jod": {
- "english_name": "Wojenaka"
- },
- "roc": {
- "english_name": "Roglai, Cacgia"
- },
- "zpd": {
- "english_name": "Zapotec, Southeastern Ixtlán"
- },
- "gho": {
- "english_name": "Ghomara"
- },
- "wad": {
- "english_name": "Wandamen"
- },
- "twl": {
- "english_name": "Tawara"
- },
- "tsb": {
- "english_name": "Tsamai"
- },
- "kek": {
- "english_name": "Kekchí"
- },
- "sde": {
- "english_name": "Surubu"
- },
- "mjh": {
- "english_name": "Mwera (Nyasa)"
- },
- "lae": {
- "english_name": "Pattani"
- },
- "kso": {
- "english_name": "Kofa"
- },
- "iqu": {
- "english_name": "Iquito"
- },
- "hsl": {
- "english_name": "Hausa Sign Language"
- },
- "nnr": {
- "english_name": "Narungga"
- },
- "caw": {
- "english_name": "Callawalla"
- },
- "ayh": {
- "english_name": "Arabic, Hadrami"
- },
- "zad": {
- "english_name": "Zapotec, Cajonos"
- },
- "wne": {
- "english_name": "Waneci"
- },
- "nks": {
- "english_name": "Asmat, North"
- },
- "poc": {
- "english_name": "Poqomam"
- },
- "ale": {
- "english_name": "Aleut"
- },
- "tbb": {
- "english_name": "Tapeba"
- },
- "akb": {
- "english_name": "Batak Angkola"
- },
- "hid": {
- "english_name": "Hidatsa"
- },
- "bmc": {
- "english_name": "Biem"
- },
- "mrp": {
- "english_name": "Morouas"
- },
- "nrm": {
- "english_name": "Narom"
- },
- "skt": {
- "english_name": "Sakata"
- },
- "bpb": {
- "english_name": "Barbacoas"
- },
- "sze": {
- "english_name": "Seze"
- },
- "vor": {
- "english_name": "Voro"
- },
- "smh": {
- "english_name": "Samei"
- },
- "kja": {
- "english_name": "Mlap"
- },
- "njj": {
- "english_name": "Njen"
- },
- "ggt": {
- "english_name": "Gitua"
- },
- "prp": {
- "english_name": "Parsi"
- },
- "ded": {
- "english_name": "Dedua"
- },
- "akh": {
- "english_name": "Angal Heneng"
- },
- "gvr": {
- "english_name": "Gurung, Western"
- },
- "war": {
- "english_name": "Waray (Philippines)"
- },
- "lrl": {
- "english_name": "Lari"
- },
- "jmn": {
- "english_name": "Naga, Makuri"
- },
- "ciy": {
- "english_name": "Chaima"
- },
- "zpv": {
- "english_name": "Zapotec, Chichicapan"
- },
- "ste": {
- "english_name": "Liana-Seti"
- },
- "hvv": {
- "english_name": "Huave, Santa María Del Mar"
- },
- "mbs": {
- "english_name": "Manobo, Sarangani"
- },
- "yrn": {
- "english_name": "Yerong"
- },
- "bje": {
- "english_name": "Mien, Biao-Jiao"
- },
- "sdx": {
- "english_name": "Melanau, Sibu"
- },
- "ray": {
- "english_name": "Rapa"
- },
- "en": {
- "english_name": "English"
- },
- "cbv": {
- "english_name": "Cacua"
- },
- "tlc": {
- "english_name": "Totonac, Yecuatla"
- },
- "xbp": {
- "english_name": "Bibbulman"
- },
- "kfc": {
- "english_name": "Konda-Dora"
- },
- "gda": {
- "english_name": "Lohar, Gade"
- },
- "krs": {
- "english_name": "Gbaya (Sudan)"
- },
- "sea": {
- "english_name": "Semai"
- },
- "aak": {
- "english_name": "Ankave"
- },
- "ahs": {
- "english_name": "Ashe"
- },
- "sti": {
- "english_name": "Stieng, Bulo"
- },
- "kij": {
- "english_name": "Kilivila"
- },
- "mmv": {
- "english_name": "Miriti"
- },
- "blo": {
- "english_name": "Anii"
- },
- "bcc": {
- "english_name": "Balochi, Southern"
- },
- "agh": {
- "english_name": "Ngelima"
- },
- "fll": {
- "english_name": "Fali, North"
- },
- "ceb": {
- "english_name": "Cebuano"
- },
- "sir": {
- "english_name": "Siri"
- },
- "ab": {
- "english_name": "Abkhazian"
- },
- "hka": {
- "english_name": "Kahe"
- },
- "wno": {
- "english_name": "Wano"
- },
- "mli": {
- "english_name": "Malimpung"
- },
- "lac": {
- "english_name": "Lacandon"
- },
- "buj": {
- "english_name": "Basa-Gurmana"
- },
- "hot": {
- "english_name": "Hote"
- },
- "sr": {
- "english_name": "Serbian",
- "name": "српски"
- },
- "vmd": {
- "english_name": "Koraga, Mudu"
- },
- "dne": {
- "english_name": "Ndendeule"
- },
- "kfh": {
- "english_name": "Kurichiya"
- },
- "flh": {
- "english_name": "Foau"
- },
- "juo": {
- "english_name": "Jiba"
- },
- "tcs": {
- "english_name": "Creole, Torres Strait"
- },
- "duz": {
- "english_name": "Duli"
- },
- "rtw": {
- "english_name": "Rathawi"
- },
- "fon": {
- "english_name": "Fon"
- },
- "qvs": {
- "english_name": "Quechua, San Martín"
- },
- "zpz": {
- "english_name": "Zapotec, Texmelucan"
- },
- "bsn": {
- "english_name": "Barasana-Eduria"
- },
- "hap": {
- "english_name": "Hupla"
- },
- "nik": {
- "english_name": "Nicobarese, Southern"
- },
- "gbr": {
- "english_name": "Gbagyi"
- },
- "zoo": {
- "english_name": "Zapotec, Asunción Mixtepec"
- },
- "enb": {
- "english_name": "Markweeta"
- },
- "frd": {
- "english_name": "Fordata"
- },
- "dyd": {
- "english_name": "Dyugun"
- },
- "ttg": {
- "english_name": "Tutong"
- },
- "pbb": {
- "english_name": "Páez"
- },
- "yrs": {
- "english_name": "Yarsun"
- },
- "hji": {
- "english_name": "Haji"
- },
- "tpp": {
- "english_name": "Tepehua, Pisaflores"
- },
- "nit": {
- "english_name": "Kolami, Southeastern"
- },
- "one": {
- "english_name": "Oneida"
- },
- "gha": {
- "english_name": "Ghadamès"
- },
- "sbf": {
- "english_name": "Shabo"
- },
- "chn": {
- "english_name": "Chinook jargon"
- },
- "sqm": {
- "english_name": "Suma"
- },
- "ain": {
- "english_name": "Ainu (Japan)"
- },
- "sgh": {
- "english_name": "Shughni"
- },
- "atb": {
- "english_name": "Zaiwa"
- },
- "mcq": {
- "english_name": "Ese"
- },
- "fli": {
- "english_name": "Fali"
- },
- "jat": {
- "english_name": "Jakati"
- },
- "xpt": {
- "english_name": "Punthamara"
- },
- "mlr": {
- "english_name": "Vame"
- },
- "crr": {
- "english_name": "Algonquian, Carolina"
- },
- "squ": {
- "english_name": "Squamish"
- },
- "ktq": {
- "english_name": "Katabaga"
- },
- "guc": {
- "english_name": "Wayuu"
- },
- "gyd": {
- "english_name": "Kayardild"
- },
- "bhz": {
- "english_name": "Bada (Indonesia)"
- },
- "blv": {
- "english_name": "Bolo"
- },
- "lmq": {
- "english_name": "Lamatuka"
- },
- "cav": {
- "english_name": "Cavineña"
- },
- "tkn": {
- "english_name": "Toku-No-Shima"
- },
- "hrt": {
- "english_name": "Hértevin"
- },
- "rom": {
- "english_name": "Romany"
- },
- "wku": {
- "english_name": "Kunduvadi"
- },
- "kzs": {
- "english_name": "Dusun, Sugut"
- },
- "shp": {
- "english_name": "Shipibo-Conibo"
- },
- "nur": {
- "english_name": "Nukuria"
- },
- "kzp": {
- "english_name": "Kaidipang"
- },
- "bfb": {
- "english_name": "Bareli, Pauri"
- },
- "zmp": {
- "english_name": "Mpuono"
- },
- "jeh": {
- "english_name": "Jeh"
- },
- "guh": {
- "english_name": "Guahibo"
- },
- "tte": {
- "english_name": "Bwanabwana"
- },
- "zai": {
- "english_name": "Zapotec, Isthmus"
- },
- "giw": {
- "english_name": "Gelao, White"
- },
- "bub": {
- "english_name": "Bua"
- },
- "kki": {
- "english_name": "Kagulu"
- },
- "abc": {
- "english_name": "Ayta, Ambala"
- },
- "gvy": {
- "english_name": "Guyani"
- },
- "gdb": {
- "english_name": "Gadaba, Pottangi Ollar"
- },
- "kcf": {
- "english_name": "Ukaan"
- },
- "gih": {
- "english_name": "Githabul"
- },
- "nyp": {
- "english_name": "Nyang'i"
- },
- "kbp": {
- "english_name": "Kabiyè"
- },
- "bme": {
- "english_name": "Limassa"
- },
- "lks": {
- "english_name": "Kisa"
- },
- "nsq": {
- "english_name": "Miwok, Northern Sierra"
- },
- "emk": {
- "english_name": "Maninkakan, Eastern"
- },
- "kaf": {
- "english_name": "Katso"
- },
- "wbq": {
- "english_name": "Waddar"
- },
- "blr": {
- "english_name": "Blang"
- },
- "spe": {
- "english_name": "Sepa (Papua New Guinea)"
- },
- "dbl": {
- "english_name": "Dyirbal"
- },
- "ert": {
- "english_name": "Eritai"
- },
- "luf": {
- "english_name": "Laua"
- },
- "zmt": {
- "english_name": "Maringarr"
- },
- "psp": {
- "english_name": "Philippine Sign Language"
- },
- "aki": {
- "english_name": "Aiome"
- },
- "acr": {
- "english_name": "Achi"
- },
- "yme": {
- "english_name": "Yameo"
- },
- "ldk": {
- "english_name": "Leelau"
- },
- "uis": {
- "english_name": "Uisai"
- },
- "omg": {
- "english_name": "Omagua"
- },
- "hld": {
- "english_name": "Halang Doan"
- },
- "syc": {
- "english_name": "Syriac, Classical"
- },
- "bue": {
- "english_name": "Beothuk"
- },
- "gwa": {
- "english_name": "Mbato"
- },
- "bge": {
- "english_name": "Bauria"
- },
- "mfr": {
- "english_name": "Marithiel"
- },
- "wgi": {
- "english_name": "Wahgi"
- },
- "ash": {
- "english_name": "Abishira"
- },
- "xil": {
- "english_name": "Illyrian"
- },
- "ttq": {
- "english_name": "Tamajaq, Tawallammat"
- },
- "mjp": {
- "english_name": "Malapandaram"
- },
- "hrc": {
- "english_name": "Niwer Mil"
- },
- "pi": {
- "english_name": "Pali"
- },
- "bhl": {
- "english_name": "Bimin"
- },
- "ije": {
- "english_name": "Biseni"
- },
- "cfd": {
- "english_name": "Cara"
- },
- "yi": {
- "english_name": "Yiddish"
- },
- "chl": {
- "english_name": "Cahuilla"
- },
- "cy": {
- "english_name": "Welsh",
- "name": "Cymraeg"
- },
- "mfq": {
- "english_name": "Moba"
- },
- "ior": {
- "english_name": "Inor"
- },
- "kuy": {
- "english_name": "Kuuku-Ya'u"
- },
- "aqr": {
- "english_name": "Arhâ"
- },
- "ktk": {
- "english_name": "Kaniet"
- },
- "tpv": {
- "english_name": "Tanapag"
- },
- "tnn": {
- "english_name": "Tanna, North"
- },
- "lkt": {
- "english_name": "Lakota"
- },
- "ksm": {
- "english_name": "Kumba"
- },
- "dtm": {
- "english_name": "Dogon, Tomo Kan"
- },
- "sat": {
- "english_name": "Santali"
- },
- "cku": {
- "english_name": "Koasati"
- },
- "shz": {
- "english_name": "Senoufo, Syenara"
- },
- "cya": {
- "english_name": "Chatino, Nopala"
- },
- "tzl": {
- "english_name": "Talossan"
- },
- "aoc": {
- "english_name": "Pemon"
- },
- "myj": {
- "english_name": "Mangayat"
- },
- "rmb": {
- "english_name": "Rembarunga"
- },
- "kla": {
- "english_name": "Klamath-Modoc"
- },
- "gex": {
- "english_name": "Garre"
- },
- "kpj": {
- "english_name": "Karajá"
- },
- "gqn": {
- "english_name": "Guana (Brazil)"
- },
- "aax": {
- "english_name": "Mandobo Atas"
- },
- "ddo": {
- "english_name": "Dido"
- },
- "owi": {
- "english_name": "Owiniga"
- },
- "kpq": {
- "english_name": "Korupun-Sela"
- },
- "bnu": {
- "english_name": "Bentong"
- },
- "slm": {
- "english_name": "Sama, Pangutaran"
- },
- "led": {
- "english_name": "Lendu"
- },
- "dcr": {
- "english_name": "Negerhollands"
- },
- "teb": {
- "english_name": "Tetete"
- },
- "xom": {
- "english_name": "Komo (Sudan)"
- },
- "coh": {
- "english_name": "Chonyi-Dzihana-Kauma"
- },
- "bie": {
- "english_name": "Bepour"
- },
- "tiq": {
- "english_name": "Tiéfo"
- },
- "bvk": {
- "english_name": "Bukat"
- },
- "cid": {
- "english_name": "Chimariko"
- },
- "pal": {
- "english_name": "Pahlavi"
- },
- "jab": {
- "english_name": "Hyam"
- },
- "twc": {
- "english_name": "Teshenawa"
- },
- "twr": {
- "english_name": "Tarahumara, Southwestern"
- },
- "sv": {
- "english_name": "Swedish",
- "name": "Svenska"
- },
- "ljw": {
- "english_name": "Yirandali"
- },
- "tnu": {
- "english_name": "Tay Khang"
- },
- "uk": {
- "english_name": "Ukrainian",
- "name": "українська"
- },
- "dba": {
- "english_name": "Bangime"
- },
- "kpi": {
- "english_name": "Kofei"
- },
- "xet": {
- "english_name": "Xetá"
- },
- "pty": {
- "english_name": "Pathiya"
- },
- "zal": {
- "english_name": "Zauzou"
- },
- "djn": {
- "english_name": "Djauan"
- },
- "ulb": {
- "english_name": "Ulukwumi"
- },
- "mgz": {
- "english_name": "Mbugwe"
- },
- "kee": {
- "english_name": "Keres, Eastern"
- },
- "gaq": {
- "english_name": "Gata'"
- },
- "ctc": {
- "english_name": "Chetco"
- },
- "sdr": {
- "english_name": "Sadri, Oraon"
- },
- "byl": {
- "english_name": "Bayono"
- },
- "kai": {
- "english_name": "Karekare"
- },
- "mnw": {
- "english_name": "Mon"
- },
- "lsm": {
- "english_name": "Saamia"
- },
- "wdu": {
- "english_name": "Wadjigu"
- },
- "tst": {
- "english_name": "Songway Kiini, Tondi"
- },
- "lwa": {
- "english_name": "Lwalu"
- },
- "loj": {
- "english_name": "Lou"
- },
- "lgg": {
- "english_name": "Lugbara"
- },
- "msq": {
- "english_name": "Caac"
- },
- "jay": {
- "english_name": "Yan-nhangu"
- },
- "arq": {
- "english_name": "Arabic, Algerian"
- },
- "urp": {
- "english_name": "Uru-Pa-In"
- },
- "mnc": {
- "english_name": "Manchu"
- },
- "tiw": {
- "english_name": "Tiwi"
- },
- "wav": {
- "english_name": "Waka"
- },
- "umm": {
- "english_name": "Umon"
- },
- "srq": {
- "english_name": "Sirionó"
- },
- "kul": {
- "english_name": "Kulere"
- },
- "hca": {
- "english_name": "Creole Hindi, Andaman"
- },
- "xha": {
- "english_name": "Harami"
- },
- "drt": {
- "english_name": "Drents"
- },
- "glk": {
- "english_name": "Gilaki"
- },
- "gba": {
- "english_name": "Gbaya (Central African Republic)"
- },
- "kgv": {
- "english_name": "Karas"
- },
- "kft": {
- "english_name": "Kanjari"
- },
- "chy": {
- "english_name": "Cheyenne"
- },
- "aua": {
- "english_name": "Asumboa"
- },
- "buq": {
- "english_name": "Brem"
- },
- "esn": {
- "english_name": "Salvadoran Sign Language"
- },
- "rob": {
- "english_name": "Tae'"
- },
- "gbe": {
- "english_name": "Niksek"
- },
- "aen": {
- "english_name": "Armenian Sign Language"
- },
- "olm": {
- "english_name": "Oloma"
- },
- "sco": {
- "english_name": "Scots"
- },
- "bum": {
- "english_name": "Bulu (Cameroon)"
- },
- "kue": {
- "english_name": "Kuman"
- },
- "pag": {
- "english_name": "Pangasinan"
- },
- "tiv": {
- "english_name": "Tiv"
- },
- "als": {
- "english_name": "Albanian, Tosk"
- },
- "tmo": {
- "english_name": "Temoq"
- },
- "ndq": {
- "english_name": "Ndombe"
- },
- "bya": {
- "english_name": "Batak"
- },
- "thl": {
- "english_name": "Tharu, Dangaura"
- },
- "oge": {
- "english_name": "Georgian, Old"
- },
- "cch": {
- "english_name": "Atsam"
- },
- "tin": {
- "english_name": "Tindi"
- },
- "shi": {
- "english_name": "Tachelhit"
- },
- "dhw": {
- "english_name": "Dhanwar (Nepal)"
- },
- "su": {
- "english_name": "Sundanese"
- },
- "nmd": {
- "english_name": "Ndumu"
- },
- "snh": {
- "english_name": "Shinabo"
- },
- "nrb": {
- "english_name": "Nara"
- },
- "ymz": {
- "english_name": "Muzi"
- },
- "zne": {
- "english_name": "Zande (individual language)"
- },
- "omw": {
- "english_name": "Tairora, South"
- },
- "bvb": {
- "english_name": "Bube"
- },
- "cpn": {
- "english_name": "Cherepon"
- },
- "lop": {
- "english_name": "Lopa"
- },
- "vwa": {
- "english_name": "Awa (China)"
- },
- "cqu": {
- "english_name": "Quechua, Chilean"
- },
- "jmx": {
- "english_name": "Mixtec, Western Juxtlahuaca"
- },
- "xxt": {
- "english_name": "Tambora"
- },
- "nea": {
- "english_name": "Ngad'a, Eastern"
- },
- "lik": {
- "english_name": "Lika"
- },
- "trx": {
- "english_name": "Bidayuh, Tringgus-Sembaan"
- },
- "kzg": {
- "english_name": "Kikai"
- },
- "jii": {
- "english_name": "Jiiddu"
- },
- "uhn": {
- "english_name": "Damal"
- },
- "mot": {
- "english_name": "Barí"
- },
- "gin": {
- "english_name": "Hinukh"
- },
- "otx": {
- "english_name": "Otomi, Texcatepec"
- },
- "shm": {
- "english_name": "Shahrudi"
- },
- "ncz": {
- "english_name": "Natchez"
- },
- "pkp": {
- "english_name": "Pukapuka"
- },
- "mxl": {
- "english_name": "Gbe, Maxi"
- },
- "juw": {
- "english_name": "Wãpha"
- },
- "id": {
- "english_name": "Indonesian",
- "name": "Indonesian"
- },
- "skn": {
- "english_name": "Subanon, Kolibugan"
- },
- "wrk": {
- "english_name": "Garrwa"
- },
- "twd": {
- "english_name": "Twents"
- },
- "csv": {
- "english_name": "Chin, Sumtu"
- },
- "brs": {
- "english_name": "Baras"
- },
- "ptn": {
- "english_name": "Patani"
- },
- "tft": {
- "english_name": "Ternate"
- },
- "azj": {
- "english_name": "Azerbaijani, North"
- },
- "ekr": {
- "english_name": "Yace"
- },
- "nyy": {
- "english_name": "Nyakyusa-Ngonde"
- },
- "nes": {
- "english_name": "Kinnauri, Bhoti"
- },
- "wmt": {
- "english_name": "Walmajarri"
- },
- "hax": {
- "english_name": "Haida, Southern"
- },
- "sha": {
- "english_name": "Shall-Zwall"
- },
- "bij": {
- "english_name": "Vaghat-Ya-Bijim-Legeri"
- },
- "rif": {
- "english_name": "Tarifit"
- },
- "yaq": {
- "english_name": "Yaqui"
- },
- "sso": {
- "english_name": "Sissano"
- },
- "naq": {
- "english_name": "Nama (Namibia)"
- },
- "wbm": {
- "english_name": "Wa"
- },
- "srm": {
- "english_name": "Saramaccan"
- },
- "yha": {
- "english_name": "Buyang, Baha"
- },
- "mbi": {
- "english_name": "Manobo, Ilianen"
- },
- "zsu": {
- "english_name": "Sukurum"
- },
- "gcf": {
- "english_name": "Creole French, Guadeloupean"
- },
- "kpx": {
- "english_name": "Koiali, Mountain"
- },
- "nkw": {
- "english_name": "Nkutu"
- },
- "bty": {
- "english_name": "Bobot"
- },
- "kpy": {
- "english_name": "Koryak"
- },
- "tgr": {
- "english_name": "Tareng"
- },
- "pox": {
- "english_name": "Polabian"
- },
- "uam": {
- "english_name": "Uamué"
- },
- "lai": {
- "english_name": "Lambya"
- },
- "zpw": {
- "english_name": "Zapotec, Zaniza"
- },
- "ylu": {
- "english_name": "Aribwaung"
- },
- "mgd": {
- "english_name": "Moru"
- },
- "qve": {
- "english_name": "Quechua, Eastern Apurímac"
- },
- "bpd": {
- "english_name": "Banda-Banda"
- },
- "aem": {
- "english_name": "Arem"
- },
- "cjk": {
- "english_name": "Chokwe"
- },
- "tew": {
- "english_name": "Tewa (USA)"
- },
- "rmk": {
- "english_name": "Romkun"
- },
- "ont": {
- "english_name": "Ontenu"
- },
- "hmp": {
- "english_name": "Hmong, Northern Mashan"
- },
- "dav": {
- "english_name": "Taita"
- },
- "stb": {
- "english_name": "Subanen, Northern"
- },
- "tpf": {
- "english_name": "Tarpia"
- },
- "bxe": {
- "english_name": "Birale"
- },
- "srn": {
- "english_name": "Sranan Tongo"
- },
- "kbd": {
- "english_name": "Kabardian"
- },
- "lig": {
- "english_name": "Ligbi"
- },
- "sor": {
- "english_name": "Somrai"
- },
- "ndy": {
- "english_name": "Lutos"
- },
- "thv": {
- "english_name": "Tamahaq, Tahaggart"
- },
- "aji": {
- "english_name": "Ajië"
- },
- "wod": {
- "english_name": "Wolani"
- },
- "bwn": {
- "english_name": "Bunu, Wunai"
- },
- "blh": {
- "english_name": "Kuwaa"
- },
- "duc": {
- "english_name": "Duna"
- },
- "ki": {
- "english_name": "Kikuyu"
- },
- "baw": {
- "english_name": "Bambili-Bambui"
- },
- "nph": {
- "english_name": "Naga, Phom"
- },
- "krr": {
- "english_name": "Kru'ng 2"
- },
- "brd": {
- "english_name": "Baraamu"
- },
- "unm": {
- "english_name": "Unami"
- },
- "ff": {
- "english_name": "Fulah"
- },
- "jra": {
- "english_name": "Jarai"
- },
- "aca": {
- "english_name": "Achagua"
- },
- "top": {
- "english_name": "Totonac, Papantla"
- },
- "zu": {
- "english_name": "Zulu",
- "name": "Isi-Zulu"
- },
- "ypb": {
- "english_name": "Phowa, Labo"
- },
- "oar": {
- "english_name": "Aramaic, Old (up to 700 BCE)"
- },
- "mdr": {
- "english_name": "Mandar"
- },
- "kim": {
- "english_name": "Karagas"
- },
- "sjd": {
- "english_name": "Sami, Kildin"
- },
- "gmm": {
- "english_name": "Gbaya-Mbodomo"
- },
- "tee": {
- "english_name": "Tepehua, Huehuetla"
- },
- "mcd": {
- "english_name": "Sharanahua"
- },
- "clm": {
- "english_name": "Clallam"
- },
- "spy": {
- "english_name": "Sabaot"
- },
- "url": {
- "english_name": "Urali"
- },
- "gax": {
- "english_name": "Oromo, Borana-Arsi-Guji"
- },
- "kqq": {
- "english_name": "Krenak"
- },
- "hio": {
- "english_name": "Tsoa"
- },
- "mfh": {
- "english_name": "Matal"
- },
- "and": {
- "english_name": "Ansus"
- },
- "nlz": {
- "english_name": "Nalögo"
- },
- "yno": {
- "english_name": "Yong"
- },
- "cnc": {
- "english_name": "Côông"
- },
- "puu": {
- "english_name": "Punu"
- },
- "lon": {
- "english_name": "Lomwe, Malawi"
- },
- "gum": {
- "english_name": "Guambiano"
- },
- "ynd": {
- "english_name": "Yandruwandha"
- },
- "wlo": {
- "english_name": "Wolio"
- },
- "kcv": {
- "english_name": "Kete"
- },
- "klc": {
- "english_name": "Kolbila"
- },
- "jur": {
- "english_name": "Jurúna"
- },
- "gds": {
- "english_name": "Ghandruk Sign Language"
- },
- "odk": {
- "english_name": "Od"
- },
- "spd": {
- "english_name": "Saep"
- },
- "mjm": {
- "english_name": "Medebur"
- },
- "pye": {
- "english_name": "Krumen, Pye"
- },
- "acm": {
- "english_name": "Arabic, Mesopotamian"
- },
- "tpl": {
- "english_name": "Me'phaa, Tlacoapa"
- },
- "hrz": {
- "english_name": "Harzani"
- },
- "txo": {
- "english_name": "Toto"
- },
- "lv": {
- "english_name": "Latvian",
- "name": "Latviešu"
- },
- "ila": {
- "english_name": "Ile Ape"
- },
- "dml": {
- "english_name": "Dameli"
- },
- "acu": {
- "english_name": "Achuar-Shiwiar"
- },
- "ama": {
- "english_name": "Amanayé"
- },
- "etn": {
- "english_name": "Eton (Vanuatu)"
- },
- "bpv": {
- "english_name": "Marind, Bian"
- },
- "apj": {
- "english_name": "Apache, Jicarilla"
- },
- "ddi": {
- "english_name": "Goodenough, West"
- },
- "msi": {
- "english_name": "Malay, Sabah"
- },
- "kka": {
- "english_name": "Kakanda"
- },
- "aot": {
- "english_name": "A'tong"
- },
- "saz": {
- "english_name": "Saurashtra"
- },
- "kdn": {
- "english_name": "Kunda"
- },
- "uwa": {
- "english_name": "Kuku-Uwanh"
- },
- "mfw": {
- "english_name": "Mulaha"
- },
- "phn": {
- "english_name": "Phoenician"
- },
- "ktw": {
- "english_name": "Kato"
- },
- "dur": {
- "english_name": "Dii"
- },
- "kci": {
- "english_name": "Kamantan"
- },
- "xdm": {
- "english_name": "Edomite"
- },
- "akm": {
- "english_name": "Aka-Bo"
- },
- "bvi": {
- "english_name": "Belanda Viri"
- },
- "hrk": {
- "english_name": "Haruku"
- },
- "rnl": {
- "english_name": "Ranglong"
- },
- "mis": {
- "english_name": "Uncoded languages"
- },
- "mcx": {
- "english_name": "Mpiemo"
- },
- "bav": {
- "english_name": "Vengo"
- },
- "tdb": {
- "english_name": "Panchpargania"
- },
- "ugy": {
- "english_name": "Uruguayan Sign Language"
- },
- "aab": {
- "english_name": "Alumu-Tesu"
- },
- "dux": {
- "english_name": "Duungooma"
- },
- "mjk": {
- "english_name": "Matukar"
- },
- "aqc": {
- "english_name": "Archi"
- },
- "mpk": {
- "english_name": "Mbara (Chad)"
- },
- "rub": {
- "english_name": "Gungu"
- },
- "ghk": {
- "english_name": "Karen, Geko"
- },
- "duf": {
- "english_name": "Dumbea"
- },
- "mrj": {
- "english_name": "Mari, Western"
- },
- "bzv": {
- "english_name": "Naami"
- },
- "kip": {
- "english_name": "Kham, Sheshi"
- },
- "pih": {
- "english_name": "Pitcairn-Norfolk"
- },
- "jaa": {
- "english_name": "Jamamadí"
- },
- "agq": {
- "english_name": "Aghem"
- },
- "hra": {
- "english_name": "Hrangkhol"
- },
- "sed": {
- "english_name": "Sedang"
- },
- "wao": {
- "english_name": "Wappo"
- },
- "bqd": {
- "english_name": "Bung"
- },
- "abo": {
- "english_name": "Abon"
- },
- "rgr": {
- "english_name": "Resígaro"
- },
- "xok": {
- "english_name": "Xokleng"
- },
- "skz": {
- "english_name": "Sekar"
- },
- "lkb": {
- "english_name": "Kabras"
- },
- "sml": {
- "english_name": "Sama, Central"
- },
- "slc": {
- "english_name": "Sáliba"
- },
- "xbd": {
- "english_name": "Bindal"
- },
- "ynq": {
- "english_name": "Yendang"
- },
- "tyh": {
- "english_name": "O'du"
- },
- "nom": {
- "english_name": "Nocamán"
- },
- "knb": {
- "english_name": "Kalinga, Lubuagan"
- },
- "tds": {
- "english_name": "Doutai"
- },
- "ymc": {
- "english_name": "Muji, Southern"
- },
- "mcs": {
- "english_name": "Mambai"
- },
- "wss": {
- "english_name": "Wasa"
- },
- "rmw": {
- "english_name": "Romani, Welsh"
- },
- "gft": {
- "english_name": "Gafat"
- },
- "tvt": {
- "english_name": "Naga, Tutsa"
- },
- "apg": {
- "english_name": "Ampanang"
- },
- "taw": {
- "english_name": "Tai"
- },
- "so": {
- "english_name": "Somali"
- },
- "tr": {
- "english_name": "Turkish",
- "name": "Türkçe"
- },
- "nok": {
- "english_name": "Nooksack"
- },
- "wih": {
- "english_name": "Wik-Me'anha"
- },
- "kog": {
- "english_name": "Cogui"
- },
- "mji": {
- "english_name": "Kim Mun"
- },
- "kmg": {
- "english_name": "Kâte"
- },
- "bck": {
- "english_name": "Bunaba"
- },
- "rmn": {
- "english_name": "Romani, Balkan"
- },
- "sgg": {
- "english_name": "Swiss-German Sign Language"
- },
- "sbp": {
- "english_name": "Sangu (Tanzania)"
- },
- "yum": {
- "english_name": "Quechan"
- },
- "bjo": {
- "english_name": "Banda, Mid-Southern"
- },
- "jid": {
- "english_name": "Bu"
- },
- "apo": {
- "english_name": "Ambul"
- },
- "kyl": {
- "english_name": "Kalapuya"
- },
- "omr": {
- "english_name": "Marathi, Old"
- },
- "bsx": {
- "english_name": "Yangkam"
- },
- "lni": {
- "english_name": "Daantanai'"
- },
- "kqp": {
- "english_name": "Kimré"
- },
- "sua": {
- "english_name": "Sulka"
- },
- "mbp": {
- "english_name": "Malayo"
- },
- "tsi": {
- "english_name": "Tsimshian"
- },
- "klq": {
- "english_name": "Rumu"
- },
- "eaa": {
- "english_name": "Karenggapa"
- },
- "xhd": {
- "english_name": "Hadrami"
- },
- "kcm": {
- "english_name": "Gula (Central African Republic)"
- },
- "ago": {
- "english_name": "Tainae"
- },
- "lus": {
- "english_name": "Lushai"
- },
- "xtv": {
- "english_name": "Thawa"
- },
- "saj": {
- "english_name": "Sahu"
- },
- "all": {
- "english_name": "Allar"
- },
- "tqn": {
- "english_name": "Tenino"
- },
- "hac": {
- "english_name": "Gurani"
- },
- "tay": {
- "english_name": "Atayal"
- },
- "zaf": {
- "english_name": "Zapotec, Ayoquesco"
- },
- "llb": {
- "english_name": "Lolo"
- },
- "aut": {
- "english_name": "Austral"
- },
- "ngx": {
- "english_name": "Nggwahyi"
- },
- "emb": {
- "english_name": "Embaloh"
- },
- "ksd": {
- "english_name": "Kuanua"
- },
- "ppm": {
- "english_name": "Papuma"
- },
- "akk": {
- "english_name": "Akkadian"
- },
- "pxm": {
- "english_name": "Mixe, Quetzaltepec"
- },
- "tbi": {
- "english_name": "Gaam"
- },
- "adw": {
- "english_name": "Amundava"
- },
- "smw": {
- "english_name": "Sumbawa"
- },
- "pry": {
- "english_name": "Pray 3"
- },
- "nxn": {
- "english_name": "Ngawun"
- },
- "udu": {
- "english_name": "Uduk"
- },
- "bca": {
- "english_name": "Bai, Central"
- },
- "ktl": {
- "english_name": "Koroshi"
- },
- "mic": {
- "english_name": "Mi'kmaq"
- },
- "djw": {
- "english_name": "Djawi"
- },
- "pwm": {
- "english_name": "Molbog"
- },
- "spv": {
- "english_name": "Sambalpuri"
- },
- "chx": {
- "english_name": "Chantyal"
- },
- "cog": {
- "english_name": "Chong"
- },
- "mzd": {
- "english_name": "Malimba"
- },
- "hsh": {
- "english_name": "Hungarian Sign Language"
- },
- "myk": {
- "english_name": "Senoufo, Mamara"
- },
- "vig": {
- "english_name": "Viemo"
- },
- "hub": {
- "english_name": "Huambisa"
- },
- "lln": {
- "english_name": "Lele (Chad)"
- },
- "fuu": {
- "english_name": "Furu"
- },
- "zkp": {
- "english_name": "Kaingáng, São Paulo"
- },
- "mci": {
- "english_name": "Mese"
- },
- "bmi": {
- "english_name": "Bagirmi"
- },
- "dov": {
- "english_name": "Dombe"
- },
- "kih": {
- "english_name": "Kilmeri"
- },
- "cyb": {
- "english_name": "Cayubaba"
- },
- "ney": {
- "english_name": "Neyo"
- },
- "sav": {
- "english_name": "Saafi-Saafi"
- },
- "zay": {
- "english_name": "Zayse-Zergulla"
- },
- "kdt": {
- "english_name": "Kuy"
- },
- "isi": {
- "english_name": "Nkem-Nkum"
- },
- "mtu": {
- "english_name": "Mixtec, Tututepec"
- },
- "ywu": {
- "english_name": "Nasu, Wumeng"
- },
- "nmo": {
- "english_name": "Naga, Moyon"
- },
- "fax": {
- "english_name": "Fala"
- },
- "yvt": {
- "english_name": "Yavitero"
- },
- "wax": {
- "english_name": "Watam"
- },
- "goe": {
- "english_name": "Gongduk"
- },
- "jun": {
- "english_name": "Juang"
- },
- "jam": {
- "english_name": "Creole English, Jamaican"
- },
- "bno": {
- "english_name": "Bantoanon"
- },
- "yip": {
- "english_name": "Pholo"
- },
- "otq": {
- "english_name": "Otomi, Querétaro"
- },
- "nms": {
- "english_name": "Letemboi"
- },
- "soz": {
- "english_name": "Temi"
- },
- "klk": {
- "english_name": "Kono (Nigeria)"
- },
- "neh": {
- "english_name": "Nyenkha"
- },
- "mqk": {
- "english_name": "Manobo, Rajah Kabunsuwan"
- },
- "prw": {
- "english_name": "Parawen"
- },
- "kma": {
- "english_name": "Konni"
- },
- "xsv": {
- "english_name": "Sudovian"
- },
- "mwt": {
- "english_name": "Moken"
- },
- "ayb": {
- "english_name": "Gbe, Ayizo"
- },
- "ulu": {
- "english_name": "Uma' Lung"
- },
- "uzs": {
- "english_name": "Uzbek, Southern"
- },
- "ail": {
- "english_name": "Aimele"
- },
- "xyt": {
- "english_name": "Mayi-Thakurti"
- },
- "yut": {
- "english_name": "Yopno"
- },
- "bwj": {
- "english_name": "Bwamu, Láá Láá"
- },
- "jal": {
- "english_name": "Yalahatan"
- },
- "trb": {
- "english_name": "Terebu"
- },
- "oj": {
- "english_name": "Ojibwa"
- },
- "yuj": {
- "english_name": "Karkar-Yuri"
- },
- "vic": {
- "english_name": "Creole English, Virgin Islands"
- },
- "ign": {
- "english_name": "Ignaciano"
- },
- "ksz": {
- "english_name": "Kodaku"
- },
- "kmr": {
- "english_name": "Kurdish, Northern"
- },
- "bsb": {
- "english_name": "Bisaya, Brunei"
- },
- "lot": {
- "english_name": "Otuho"
- },
- "chp": {
- "english_name": "Chipewyan"
- },
- "mps": {
- "english_name": "Dadibi"
- },
- "kkx": {
- "english_name": "Kohin"
- },
- "icr": {
- "english_name": "Creole English, Islander"
- },
- "bzq": {
- "english_name": "Buli (Indonesia)"
- },
- "dnk": {
- "english_name": "Dengka"
- },
- "nxq": {
- "english_name": "Naxi"
- },
- "ttf": {
- "english_name": "Tuotomb"
- },
- "dad": {
- "english_name": "Marik"
- },
- "mqp": {
- "english_name": "Manipa"
- },
- "zpe": {
- "english_name": "Zapotec, Petapa"
- },
- "myz": {
- "english_name": "Mandaic, Classical"
- },
- "ypg": {
- "english_name": "Phola"
- },
- "emm": {
- "english_name": "Mamulique"
- },
- "hur": {
- "english_name": "Halkomelem"
- },
- "gly": {
- "english_name": "Gule"
- },
- "pnr": {
- "english_name": "Panim"
- },
- "cnk": {
- "english_name": "Chin, Khumi"
- },
- "kmd": {
- "english_name": "Kalinga, Majukayang"
- },
- "alu": {
- "english_name": "'Are'are"
- },
- "brj": {
- "english_name": "Bieria"
- },
- "kjm": {
- "english_name": "Kháng"
- },
- "crj": {
- "english_name": "Cree, Southern East"
- },
- "jmr": {
- "english_name": "Kamara"
- },
- "msl": {
- "english_name": "Molof"
- },
- "sda": {
- "english_name": "Toraja-Sa'dan"
- },
- "wlc": {
- "english_name": "Comorian, Mwali"
- },
- "rsb": {
- "english_name": "Romano-Serbian"
- },
- "cim": {
- "english_name": "Cimbrian"
- },
- "xmu": {
- "english_name": "Kamu"
- },
- "mdh": {
- "english_name": "Maguindanaon"
- },
- "hod": {
- "english_name": "Holma"
- },
- "mtf": {
- "english_name": "Murik (Papua New Guinea)"
- },
- "szd": {
- "english_name": "Seru"
- },
- "bww": {
- "english_name": "Bwa"
- },
- "arw": {
- "english_name": "Arawak"
- },
- "tdh": {
- "english_name": "Thulung"
- },
- "dgk": {
- "english_name": "Dagba"
- },
- "xnh": {
- "english_name": "Kuanhua"
- },
- "ppi": {
- "english_name": "Paipai"
- },
- "kxy": {
- "english_name": "Kayong"
- },
- "io": {
- "english_name": "Ido"
- },
- "xgd": {
- "english_name": "Gudang"
- },
- "bau": {
- "english_name": "Bada (Nigeria)"
- },
- "sdb": {
- "english_name": "Shabak"
- },
- "lcq": {
- "english_name": "Luhu"
- },
- "otu": {
- "english_name": "Otuke"
- },
- "mjc": {
- "english_name": "Mixtec, San Juan Colorado"
- },
- "kdq": {
- "english_name": "Koch"
- },
- "pat": {
- "english_name": "Papitalai"
- },
- "abr": {
- "english_name": "Abron"
- },
- "ili": {
- "english_name": "Ili Turki"
- },
- "nnn": {
- "english_name": "Ngete"
- },
- "khw": {
- "english_name": "Khowar"
- },
- "vml": {
- "english_name": "Malgana"
- },
- "gal": {
- "english_name": "Galolen"
- },
- "auz": {
- "english_name": "Arabic, Uzbeki"
- },
- "jaj": {
- "english_name": "Zazao"
- },
- "onw": {
- "english_name": "Nubian, Old"
- },
- "bvc": {
- "english_name": "Baelelea"
- },
- "sov": {
- "english_name": "Sonsorol"
- },
- "zun": {
- "english_name": "Zuni"
- },
- "qxn": {
- "english_name": "Quechua, Northern Conchucos Ancash"
- },
- "ghs": {
- "english_name": "Guhu-Samane"
- },
- "uma": {
- "english_name": "Umatilla"
- },
- "crm": {
- "english_name": "Cree, Moose"
- },
- "wsu": {
- "english_name": "Wasu"
- },
- "cv": {
- "english_name": "Chuvash"
- },
- "kdj": {
- "english_name": "Karamojong"
- },
- "auc": {
- "english_name": "Waorani"
- },
- "ysn": {
- "english_name": "Sani"
- },
- "avu": {
- "english_name": "Avokaya"
- },
- "muh": {
- "english_name": "Mündü"
- },
- "sek": {
- "english_name": "Sekani"
- },
- "fam": {
- "english_name": "Fam"
- },
- "aie": {
- "english_name": "Amara"
- },
- "xgf": {
- "english_name": "Gabrielino-Fernandeño"
- },
- "ymn": {
- "english_name": "Yamna"
- },
- "mhs": {
- "english_name": "Buru (Indonesia)"
- },
- "xgb": {
- "english_name": "Gbin"
- },
- "hug": {
- "english_name": "Huachipaeri"
- },
- "tbr": {
- "english_name": "Tumtum"
- },
- "yan": {
- "english_name": "Mayangna"
- },
- "pnl": {
- "english_name": "Paleni"
- },
- "yli": {
- "english_name": "Yali, Angguruk"
- },
- "ity": {
- "english_name": "Itneg, Moyadan"
- },
- "kmh": {
- "english_name": "Kalam"
- },
- "sgk": {
- "english_name": "Sangkong"
- },
- "inl": {
- "english_name": "Indonesian Sign Language"
- },
- "bwu": {
- "english_name": "Buli (Ghana)"
- },
- "ame": {
- "english_name": "Yanesha'"
- },
- "bmq": {
- "english_name": "Bomu"
- },
- "laq": {
- "english_name": "Qabiao"
- },
- "soe": {
- "english_name": "Songomeno"
- },
- "alh": {
- "english_name": "Alawa"
- },
- "bal": {
- "english_name": "Baluchi"
- },
- "noy": {
- "english_name": "Noy"
- },
- "wya": {
- "english_name": "Wyandot"
- },
- "grq": {
- "english_name": "Gorovu"
- },
- "rol": {
- "english_name": "Romblomanon"
- },
- "env": {
- "english_name": "Enwan (Edu State)"
- },
- "vkt": {
- "english_name": "Malay, Tenggarong Kutai"
- },
- "xrm": {
- "english_name": "Armazic"
- },
- "kfn": {
- "english_name": "Kuk"
- },
- "mcp": {
- "english_name": "Makaa"
- },
- "hea": {
- "english_name": "Miao, Northern Qiandong"
- },
- "yna": {
- "english_name": "Aluo"
- },
- "tmm": {
- "english_name": "Tai Thanh"
- },
- "ifb": {
- "english_name": "Ifugao, Batad"
- },
- "czk": {
- "english_name": "Knaanic"
- },
- "hdn": {
- "english_name": "Haida, Northern"
- },
- "emi": {
- "english_name": "Mussau-Emira"
- },
- "cbs": {
- "english_name": "Cashinahua"
- },
- "lme": {
- "english_name": "Pévé"
- },
- "xbn": {
- "english_name": "Kenaboi"
- },
- "gnr": {
- "english_name": "Gureng Gureng"
- },
- "amn": {
- "english_name": "Amanab"
- },
- "nhb": {
- "english_name": "Beng"
- },
- "aro": {
- "english_name": "Araona"
- },
- "tgf": {
- "english_name": "Chalikha"
- },
- "huf": {
- "english_name": "Humene"
- },
- "kyo": {
- "english_name": "Kelon"
- },
- "nmj": {
- "english_name": "Ngombe (Central African Republic)"
- },
- "hke": {
- "english_name": "Hunde"
- },
- "swc": {
- "english_name": "Swahili, Congo"
- },
- "idt": {
- "english_name": "Idaté"
- },
- "ttl": {
- "english_name": "Totela"
- },
- "mdt": {
- "english_name": "Mbere"
- },
- "add": {
- "english_name": "Dzodinka"
- },
- "twf": {
- "english_name": "Tiwa, Northern"
- },
- "wah": {
- "english_name": "Watubela"
- },
- "tci": {
- "english_name": "Wára"
- },
- "dao": {
- "english_name": "Chin, Daai"
- },
- "blf": {
- "english_name": "Buol"
- },
- "cdn": {
- "english_name": "Chaudangsi"
- },
- "ppk": {
- "english_name": "Uma"
- },
- "mvf": {
- "english_name": "Mongolian, Peripheral"
- },
- "mla": {
- "english_name": "Malo"
- },
- "lwu": {
- "english_name": "Lawu"
- },
- "aza": {
- "english_name": "Azha"
- },
- "dgl": {
- "english_name": "Andaandi"
- },
- "kly": {
- "english_name": "Kalao"
- },
- "mxk": {
- "english_name": "Monumbo"
- },
- "nuy": {
- "english_name": "Nunggubuyu"
- },
- "tnr": {
- "english_name": "Ménik"
- },
- "pmw": {
- "english_name": "Miwok, Plains"
- },
- "lmy": {
- "english_name": "Lamboya"
- },
- "ps": {
- "english_name": "Pushto",
- "name": "Pushto"
- },
- "tjn": {
- "english_name": "Tonjon"
- },
- "pps": {
- "english_name": "Popoloca, San Luís Temalacayuca"
- },
- "slj": {
- "english_name": "Salumá"
- },
- "xkj": {
- "english_name": "Kajali"
- },
- "aun": {
- "english_name": "One, Molmo"
- },
- "coa": {
- "english_name": "Malay, Cocos Islands"
- },
- "cjo": {
- "english_name": "Ashéninka Pajonal"
- },
- "anc": {
- "english_name": "Ngas"
- },
- "lnl": {
- "english_name": "Banda, South Central"
- },
- "ans": {
- "english_name": "Anserma"
- },
- "wer": {
- "english_name": "Weri"
- },
- "low": {
- "english_name": "Lobu, Tampias"
- },
- "prr": {
- "english_name": "Puri"
- },
- "mgf": {
- "english_name": "Maklew"
- },
- "xmm": {
- "english_name": "Malay, Manado"
- },
- "mgh": {
- "english_name": "Makhuwa-Meetto"
- },
- "rhg": {
- "english_name": "Rohingya"
- },
- "esi": {
- "english_name": "Inupiatun, North Alaskan"
- },
- "spx": {
- "english_name": "Picene, South"
- },
- "nbh": {
- "english_name": "Ngamo"
- },
- "tll": {
- "english_name": "Tetela"
- },
- "blt": {
- "english_name": "Tai Dam"
- },
- "ccg": {
- "english_name": "Daka, Samba"
- },
- "bvg": {
- "english_name": "Bonkeng"
- },
- "mux": {
- "english_name": "Bo-Ung"
- },
- "xht": {
- "english_name": "Hattic"
- },
- "nmt": {
- "english_name": "Namonuito"
- },
- "bnq": {
- "english_name": "Bantik"
- },
- "tpz": {
- "english_name": "Tinputz"
- },
- "xog": {
- "english_name": "Soga"
- },
- "stl": {
- "english_name": "Stellingwerfs"
- },
- "mhb": {
- "english_name": "Mahongwe"
- },
- "nbc": {
- "english_name": "Naga, Chang"
- },
- "eve": {
- "english_name": "Even"
- },
- "ttb": {
- "english_name": "Gaa"
- },
- "jbn": {
- "english_name": "Nafusi"
- },
- "lu": {
- "english_name": "Luba-Katanga"
- },
- "jim": {
- "english_name": "Jimi (Cameroon)"
- },
- "wma": {
- "english_name": "Mawa (Nigeria)"
- },
- "akz": {
- "english_name": "Alabama"
- },
- "haw": {
- "english_name": "Hawaiian"
- },
- "cuc": {
- "english_name": "Chinantec, Usila"
- },
- "keu": {
- "english_name": "Akebu"
- },
- "kno": {
- "english_name": "Kono (Sierra Leone)"
- },
- "krh": {
- "english_name": "Kurama"
- },
- "mqh": {
- "english_name": "Mixtec, Tlazoyaltepec"
- },
- "vum": {
- "english_name": "Vumbu"
- },
- "eka": {
- "english_name": "Ekajuk"
- },
- "sut": {
- "english_name": "Subtiaba"
- },
- "nie": {
- "english_name": "Niellim"
- },
- "wap": {
- "english_name": "Wapishana"
- },
- "kay": {
- "english_name": "Kamayurá"
- },
- "vmx": {
- "english_name": "Mixtec, Tamazola"
- },
- "log": {
- "english_name": "Logo"
- },
- "otw": {
- "english_name": "Ottawa"
- },
- "kyh": {
- "english_name": "Karok"
- },
- "wmn": {
- "english_name": "Waamwang"
- },
- "mna": {
- "english_name": "Mbula"
- },
- "ayu": {
- "english_name": "Ayu"
- },
- "woe": {
- "english_name": "Woleaian"
- },
- "mfa": {
- "english_name": "Malay, Pattani"
- },
- "oni": {
- "english_name": "Onin"
- },
- "sks": {
- "english_name": "Maia"
- },
- "ktg": {
- "english_name": "Kalkutung"
- },
- "koe": {
- "english_name": "Kacipo-Balesi"
- },
- "urg": {
- "english_name": "Urigina"
- },
- "ayl": {
- "english_name": "Arabic, Libyan"
- },
- "tk": {
- "english_name": "Turkmen"
- },
- "zko": {
- "english_name": "Kott"
- },
- "kui": {
- "english_name": "Kuikúro-Kalapálo"
- },
- "bhj": {
- "english_name": "Bahing"
- },
- "smq": {
- "english_name": "Samo"
- },
- "cht": {
- "english_name": "Cholón"
- },
- "lga": {
- "english_name": "Lungga"
- },
- "rey": {
- "english_name": "Reyesano"
- },
- "poq": {
- "english_name": "Popoluca, Texistepec"
- },
- "yiz": {
- "english_name": "Azhe"
- },
- "xli": {
- "english_name": "Liburnian"
- },
- "azo": {
- "english_name": "Awing"
- },
- "faa": {
- "english_name": "Fasu"
- },
- "cr": {
- "english_name": "Cree"
- },
- "gar": {
- "english_name": "Galeya"
- },
- "hui": {
- "english_name": "Huli"
- },
- "zxx": {
- "english_name": "No linguistic content"
- },
- "xzm": {
- "english_name": "Zemgalian"
- },
- "bpa": {
- "english_name": "Daakaka"
- },
- "mls": {
- "english_name": "Masalit"
- },
- "dyi": {
- "english_name": "Senoufo, Djimini"
- },
- "ttm": {
- "english_name": "Tutchone, Northern"
- },
- "tpx": {
- "english_name": "Me'phaa, Acatepec"
- },
- "ife": {
- "english_name": "Ifè"
- },
- "sw": {
- "english_name": "Swahili (macrolanguage)"
- },
- "bnz": {
- "english_name": "Beezen"
- },
- "idb": {
- "english_name": "Indo-Portuguese"
- },
- "kic": {
- "english_name": "Kickapoo"
- },
- "lgb": {
- "english_name": "Laghu"
- },
- "lfn": {
- "english_name": "Lingua Franca Nova"
- },
- "dhu": {
- "english_name": "Dhurga"
- },
- "kfv": {
- "english_name": "Kurmukar"
- },
- "sao": {
- "english_name": "Sause"
- },
- "qvc": {
- "english_name": "Quechua, Cajamarca"
- },
- "psg": {
- "english_name": "Penang Sign Language"
- },
- "pis": {
- "english_name": "Pijin"
- },
- "tnl": {
- "english_name": "Lenakel"
- },
- "wij": {
- "english_name": "Wik-Iiyanh"
- },
- "pbu": {
- "english_name": "Pashto, Northern"
- },
- "buh": {
- "english_name": "Bunu, Younuo"
- },
- "bow": {
- "english_name": "Rema"
- },
- "xii": {
- "english_name": "Xiri"
- },
- "awc": {
- "english_name": "Cicipu"
- },
- "ssq": {
- "english_name": "So'a"
- },
- "gna": {
- "english_name": "Kaansa"
- },
- "lmj": {
- "english_name": "Lembata, West"
- },
- "tdc": {
- "english_name": "Emberá-Tadó"
- },
- "knc": {
- "english_name": "Kanuri, Central"
- },
- "naj": {
- "english_name": "Nalu"
- },
- "xsh": {
- "english_name": "Shamang"
- },
- "mvz": {
- "english_name": "Mesqan"
- },
- "fud": {
- "english_name": "Futuna, East"
- },
- "mdq": {
- "english_name": "Mbole"
- },
- "ssy": {
- "english_name": "Saho"
- },
- "ona": {
- "english_name": "Ona"
- },
- "acy": {
- "english_name": "Arabic, Cypriot"
- },
- "sya": {
- "english_name": "Siang"
- },
- "dmv": {
- "english_name": "Dumpas"
- },
- "nfd": {
- "english_name": "Ahwai"
- },
- "ibd": {
- "english_name": "Iwaidja"
- },
- "vmj": {
- "english_name": "Mixtec, Ixtayutla"
- },
- "gka": {
- "english_name": "Guya"
- },
- "wrm": {
- "english_name": "Warumungu"
- },
- "lkj": {
- "english_name": "Remun"
- },
- "doa": {
- "english_name": "Dom"
- },
- "umg": {
- "english_name": "Umbuygamu"
- },
- "pot": {
- "english_name": "Potawatomi"
- },
- "gro": {
- "english_name": "Groma"
- },
- "sak": {
- "english_name": "Sake"
- },
- "awx": {
- "english_name": "Awara"
- },
- "beg": {
- "english_name": "Belait"
- },
- "cia": {
- "english_name": "Cia-Cia"
- },
- "kvl": {
- "english_name": "Kayaw"
- },
- "qvw": {
- "english_name": "Quechua, Huaylla Wanca"
- },
- "lrc": {
- "english_name": "Luri, Northern"
- },
- "sto": {
- "english_name": "Stoney"
- },
- "bgo": {
- "english_name": "Baga Koga"
- },
- "oor": {
- "english_name": "Oorlams"
- },
- "bug": {
- "english_name": "Buginese"
- },
- "zkr": {
- "english_name": "Zakhring"
- },
- "bmp": {
- "english_name": "Bulgebi"
- },
- "lrk": {
- "english_name": "Loarki"
- },
- "aaf": {
- "english_name": "Aranadan"
- },
- "atj": {
- "english_name": "Atikamekw"
- },
- "ylg": {
- "english_name": "Yelogu"
- },
- "ulc": {
- "english_name": "Ulch"
- },
- "ro": {
- "english_name": "Romanian",
- "name": "Română"
- },
- "kiy": {
- "english_name": "Kirikiri"
- },
- "puk": {
- "english_name": "Pu Ko"
- },
- "grd": {
- "english_name": "Guruntum-Mbaaru"
- },
- "mmj": {
- "english_name": "Majhwar"
- },
- "brx": {
- "english_name": "Bodo (India)"
- },
- "dtu": {
- "english_name": "Dogon, Tebul Ure"
- },
- "mlj": {
- "english_name": "Miltu"
- },
- "enu": {
- "english_name": "Enu"
- },
- "ksy": {
- "english_name": "Kharia Thar"
- },
- "lji": {
- "english_name": "Laiyolo"
- },
- "cdr": {
- "english_name": "Cinda-Regi-Tiyal"
- },
- "nwb": {
- "english_name": "Nyabwa"
- },
- "kmq": {
- "english_name": "Kwama"
- },
- "gd": {
- "english_name": "Gaelic, Scottish"
- },
- "djc": {
- "english_name": "Daju, Dar Daju"
- },
- "srv": {
- "english_name": "Sorsoganon, Southern"
- },
- "bsa": {
- "english_name": "Abinomn"
- },
- "ncc": {
- "english_name": "Ponam"
- },
- "lic": {
- "english_name": "Hlai"
- },
- "bla": {
- "english_name": "Siksika"
- },
- "tks": {
- "english_name": "Takestani"
- },
- "hib": {
- "english_name": "Hibito"
- },
- "nkd": {
- "english_name": "Koireng"
- },
- "bze": {
- "english_name": "Bozo, Jenaama"
- },
- "kpu": {
- "english_name": "Kafoa"
- },
- "mdy": {
- "english_name": "Male (Ethiopia)"
- },
- "qxc": {
- "english_name": "Quechua, Chincha"
- },
- "prz": {
- "english_name": "Providencia Sign Language"
- },
- "zyb": {
- "english_name": "Zhuang, Yongbei"
- },
- "ayq": {
- "english_name": "Ayi (Papua New Guinea)"
- },
- "cox": {
- "english_name": "Nanti"
- },
- "kub": {
- "english_name": "Kutep"
- },
- "blq": {
- "english_name": "Baluan-Pam"
- },
- "mlf": {
- "english_name": "Mal"
- },
- "wny": {
- "english_name": "Wanyi"
- },
- "vot": {
- "english_name": "Votic"
- },
- "kwf": {
- "english_name": "Kwara'ae"
- },
- "anu": {
- "english_name": "Anuak"
- },
- "mmg": {
- "english_name": "Ambrym, North"
- },
- "skp": {
- "english_name": "Sekapan"
- },
- "hma": {
- "english_name": "Hmong, Southern Mashan"
- },
- "nxk": {
- "english_name": "Naga, Koki"
- },
- "xan": {
- "english_name": "Xamtanga"
- },
- "agi": {
- "english_name": "Agariya"
- },
- "clj": {
- "english_name": "Chin, Laitu"
- },
- "gui": {
- "english_name": "Guaraní, Eastern Bolivian"
- },
- "wua": {
- "english_name": "Wikngenchera"
- },
- "hy": {
- "english_name": "Armenian"
- },
- "adb": {
- "english_name": "Adabe"
- },
- "rbk": {
- "english_name": "Bontok, Northern"
- },
- "snf": {
- "english_name": "Noon"
- },
- "prb": {
- "english_name": "Lua'"
- },
- "awg": {
- "english_name": "Anguthimri"
- },
- "kca": {
- "english_name": "Khanty"
- },
- "ajw": {
- "english_name": "Ajawa"
- },
- "nci": {
- "english_name": "Nahuatl, Classical"
- },
- "gdx": {
- "english_name": "Godwari"
- },
- "fau": {
- "english_name": "Fayu"
- },
- "wgg": {
- "english_name": "Wangganguru"
- },
- "whk": {
- "english_name": "Kenyah, Wahau"
- },
- "smt": {
- "english_name": "Simte"
- },
- "sgz": {
- "english_name": "Sursurunga"
- },
- "cly": {
- "english_name": "Chatino, Eastern Highland"
- },
- "agy": {
- "english_name": "Alta, Southern"
- },
- "mir": {
- "english_name": "Mixe, Isthmus"
- },
- "gsm": {
- "english_name": "Guatemalan Sign Language"
- },
- "egl": {
- "english_name": "Emilian"
- },
- "awh": {
- "english_name": "Awbono"
- },
- "xeb": {
- "english_name": "Eblan"
- },
- "wab": {
- "english_name": "Wab"
- },
- "aoz": {
- "english_name": "Uab Meto"
- },
- "apv": {
- "english_name": "Alapmunte"
- },
- "nte": {
- "english_name": "Nathembo"
- },
- "tea": {
- "english_name": "Temiar"
- },
- "caj": {
- "english_name": "Chané"
- },
- "abs": {
- "english_name": "Malay, Ambonese"
- },
- "kyv": {
- "english_name": "Kayort"
- },
- "gvn": {
- "english_name": "Kuku-Yalanji"
- },
- "nkc": {
- "english_name": "Nkongho"
- },
- "doq": {
- "english_name": "Dominican Sign Language"
- },
- "lev": {
- "english_name": "Lamma"
- },
- "css": {
- "english_name": "Ohlone, Southern"
- },
- "luv": {
- "english_name": "Luwati"
- },
- "nme": {
- "english_name": "Naga, Mzieme"
- },
- "sij": {
- "english_name": "Numbami"
- },
- "wca": {
- "english_name": "Yanomámi"
- },
- "lgi": {
- "english_name": "Lengilu"
- },
- "xcl": {
- "english_name": "Armenian, Classical"
- },
- "tvd": {
- "english_name": "Tsuvadi"
- },
- "hix": {
- "english_name": "Hixkaryána"
- },
- "alj": {
- "english_name": "Alangan"
- },
- "tmz": {
- "english_name": "Tamanaku"
- },
- "lmz": {
- "english_name": "Lumbee"
- },
- "lst": {
- "english_name": "Trinidad and Tobago Sign Language"
- },
- "ypz": {
- "english_name": "Phuza"
- },
- "kuu": {
- "english_name": "Kuskokwim, Upper"
- },
- "cuq": {
- "english_name": "Cun"
- },
- "tev": {
- "english_name": "Teor"
- },
- "nyc": {
- "english_name": "Nyanga-li"
- },
- "bqy": {
- "english_name": "Bengkala Sign Language"
- },
- "cbh": {
- "english_name": "Cagua"
- },
- "psn": {
- "english_name": "Panasuan"
- },
- "clc": {
- "english_name": "Chilcotin"
- },
- "cts": {
- "english_name": "Bikol, Northern Catanduanes"
- },
- "shk": {
- "english_name": "Shilluk"
- },
- "anf": {
- "english_name": "Animere"
- },
- "cky": {
- "english_name": "Cakfem-Mushere"
- },
- "ngd": {
- "english_name": "Ngando (Central African Republic)"
- },
- "gve": {
- "english_name": "Duwet"
- },
- "bvw": {
- "english_name": "Boga"
- },
- "tbo": {
- "english_name": "Tawala"
- },
- "sol": {
- "english_name": "Solos"
- },
- "van": {
- "english_name": "Valman"
- },
- "ekl": {
- "english_name": "Kol (Bangladesh)"
- },
- "cdo": {
- "english_name": "Chinese, Min Dong"
- },
- "nbk": {
- "english_name": "Nake"
- },
- "cuu": {
- "english_name": "Tai Ya"
- },
- "tox": {
- "english_name": "Tobian"
- },
- "bjl": {
- "english_name": "Bulu (Papua New Guinea)"
- },
- "byi": {
- "english_name": "Buyu"
- },
- "std": {
- "english_name": "Sentinel"
- },
- "can": {
- "english_name": "Chambri"
- },
- "amw": {
- "english_name": "Neo-Aramaic, Western"
- },
- "my": {
- "english_name": "Burmese"
- },
- "kgw": {
- "english_name": "Karon Dori"
- },
- "akj": {
- "english_name": "Aka-Jeru"
- },
- "arv": {
- "english_name": "Arbore"
- },
- "ctm": {
- "english_name": "Chitimacha"
- },
- "quz": {
- "english_name": "Quechua, Cusco"
- },
- "pib": {
- "english_name": "Yine"
- },
- "tmj": {
- "english_name": "Samarokena"
- },
- "sqs": {
- "english_name": "Sri Lankan Sign Language"
- },
- "gcn": {
- "english_name": "Gaina"
- },
- "bzg": {
- "english_name": "Babuza"
- },
- "crx": {
- "english_name": "Carrier"
- },
- "muj": {
- "english_name": "Mabire"
- },
- "spo": {
- "english_name": "Spokane"
- },
- "sqn": {
- "english_name": "Susquehannock"
- },
- "sdt": {
- "english_name": "Shuadit"
- },
- "dgd": {
- "english_name": "Dagaari Dioula"
- },
- "irx": {
- "english_name": "Kamberau"
- },
- "uuu": {
- "english_name": "U"
- },
- "kwc": {
- "english_name": "Likwala"
- },
- "aik": {
- "english_name": "Ake"
- },
- "mnl": {
- "english_name": "Tiale"
- },
- "nbu": {
- "english_name": "Naga, Rongmei"
- },
- "gey": {
- "english_name": "Enya"
- },
- "nda": {
- "english_name": "Ndasa"
- },
- "kjj": {
- "english_name": "Khinalugh"
- },
- "kwm": {
- "english_name": "Kwambi"
- },
- "aic": {
- "english_name": "Ainbai"
- },
- "wkl": {
- "english_name": "Kalanadi"
- },
- "cmt": {
- "english_name": "Camtho"
- },
- "tre": {
- "english_name": "Tarangan, East"
- },
- "ctz": {
- "english_name": "Chatino, Zacatepec"
- },
- "krk": {
- "english_name": "Kerek"
- },
- "xon": {
- "english_name": "Konkomba"
- },
- "mzm": {
- "english_name": "Mumuye"
- },
- "agf": {
- "english_name": "Arguni"
- },
- "bzs": {
- "english_name": "Brazilian Sign Language"
- },
- "xqa": {
- "english_name": "Karakhanid"
- },
- "zra": {
- "english_name": "Kara (Korea)"
- },
- "agj": {
- "english_name": "Argobba"
- },
- "mss": {
- "english_name": "Masela, West"
- },
- "sob": {
- "english_name": "Sobei"
- },
- "xmp": {
- "english_name": "Kuku-Mu'inh"
- },
- "bbg": {
- "english_name": "Barama"
- },
- "erk": {
- "english_name": "Efate, South"
- },
- "bzp": {
- "english_name": "Kemberano"
- },
- "kzk": {
- "english_name": "Kazukuru"
- },
- "nad": {
- "english_name": "Nijadali"
- },
- "nmi": {
- "english_name": "Nyam"
- },
- "fad": {
- "english_name": "Wagi"
- },
- "dts": {
- "english_name": "Dogon, Toro So"
- },
- "mas": {
- "english_name": "Masai"
- },
- "clh": {
- "english_name": "Chilisso"
- },
- "huh": {
- "english_name": "Huilliche"
- },
- "xtd": {
- "english_name": "Mixtec, Diuxi-Tilantongo"
- },
- "doy": {
- "english_name": "Dompo"
- },
- "bfo": {
- "english_name": "Birifor, Malba"
- },
- "xww": {
- "english_name": "Wemba Wemba"
- },
- "aga": {
- "english_name": "Aguano"
- },
- "jrr": {
- "english_name": "Jiru"
- },
- "zuh": {
- "english_name": "Tokano"
- },
- "bsy": {
- "english_name": "Bisaya, Sabah"
- },
- "dmg": {
- "english_name": "Kinabatangan, Upper"
- },
- "bet": {
- "english_name": "Béte, Guiberoua"
- },
- "sgu": {
- "english_name": "Salas"
- },
- "afd": {
- "english_name": "Andai"
- },
- "shw": {
- "english_name": "Shwai"
- },
- "xmd": {
- "english_name": "Mbudum"
- },
- "rpn": {
- "english_name": "Repanbitip"
- },
- "nkg": {
- "english_name": "Nekgini"
- },
- "ayd": {
- "english_name": "Ayabadhu"
- },
- "kkt": {
- "english_name": "Koi"
- },
- "kme": {
- "english_name": "Bakole"
- },
- "swh": {
- "english_name": "Swahili (individual language)"
- },
- "ahl": {
- "english_name": "Igo"
- },
- "ali": {
- "english_name": "Amaimon"
- },
- "rgu": {
- "english_name": "Ringgou"
- },
- "chq": {
- "english_name": "Chinantec, Quiotepec"
- },
- "cnb": {
- "english_name": "Chin, Chinbon"
- },
- "siv": {
- "english_name": "Sumariup"
- },
- "gfk": {
- "english_name": "Patpatar"
- },
- "esu": {
- "english_name": "Yupik, Central"
- },
- "eto": {
- "english_name": "Eton (Cameroon)"
- },
- "bzr": {
- "english_name": "Biri"
- },
- "aiw": {
- "english_name": "Aari"
- },
- "gzn": {
- "english_name": "Gane"
- },
- "ykm": {
- "english_name": "Kap"
- },
- "wlu": {
- "english_name": "Wuliwuli"
- },
- "tia": {
- "english_name": "Tamazight, Tidikelt"
- },
- "jjr": {
- "english_name": "Bankal"
- },
- "dbe": {
- "english_name": "Dabe"
- },
- "bqn": {
- "english_name": "Bulgarian Sign Language"
- },
- "smd": {
- "english_name": "Sama"
- },
- "luo": {
- "english_name": "Luo (Kenya and Tanzania)"
- },
- "bjk": {
- "english_name": "Barok"
- },
- "glr": {
- "english_name": "Glaro-Twabo"
- },
- "kam": {
- "english_name": "Kamba (Kenya)"
- },
- "gaa": {
- "english_name": "Ga"
- },
- "se": {
- "english_name": "Sami, Northern"
- },
- "emx": {
- "english_name": "Erromintxela"
- },
- "chg": {
- "english_name": "Chagatai"
- },
- "bwp": {
- "english_name": "Mandobo Bawah"
- },
- "kgp": {
- "english_name": "Kaingang"
- },
- "mse": {
- "english_name": "Musey"
- },
- "kpw": {
- "english_name": "Kobon"
- },
- "hir": {
- "english_name": "Himarimã"
- },
- "djj": {
- "english_name": "Djeebbana"
- },
- "cam": {
- "english_name": "Cemuhî"
- },
- "aah": {
- "english_name": "Arapesh, Abu'"
- },
- "gl": {
- "english_name": "Galician",
- "name": "Galego"
- },
- "btf": {
- "english_name": "Birgit"
- },
- "xgi": {
- "english_name": "Garingbal"
- },
- "izr": {
- "english_name": "Izere"
- },
- "bvl": {
- "english_name": "Bolivian Sign Language"
- },
- "yla": {
- "english_name": "Yaul"
- },
- "ndt": {
- "english_name": "Ndunga"
- },
- "kok": {
- "english_name": "Konkani (macrolanguage)",
- "name": "Konkani (macrolanguage)"
- },
- "kth": {
- "english_name": "Karanga"
- },
- "pme": {
- "english_name": "Pwaamei"
- },
- "mjq": {
- "english_name": "Malaryan"
- },
- "vec": {
- "english_name": "Venetian"
- },
- "kuf": {
- "english_name": "Katu, Western"
- },
- "mzr": {
- "english_name": "Marúbo"
- },
- "tsh": {
- "english_name": "Tsuvan"
- },
- "asa": {
- "english_name": "Asu (Tanzania)"
- },
- "kup": {
- "english_name": "Kunimaipa"
- },
- "poy": {
- "english_name": "Pogolo"
- },
- "udm": {
- "english_name": "Udmurt"
- },
- "slf": {
- "english_name": "Swiss-Italian Sign Language"
- },
- "xyl": {
- "english_name": "Yalakalore"
- },
- "gis": {
- "english_name": "Giziga, North"
- },
- "ane": {
- "english_name": "Xârâcùù"
- },
- "bqo": {
- "english_name": "Balo"
- },
- "lwe": {
- "english_name": "Lewo Eleng"
- },
- "xmv": {
- "english_name": "Malagasy, Antankarana"
- },
- "mjj": {
- "english_name": "Mawak"
- },
- "msm": {
- "english_name": "Manobo, Agusan"
- },
- "tap": {
- "english_name": "Taabwa"
- },
- "kba": {
- "english_name": "Kalarko"
- },
- "cjy": {
- "english_name": "Chinese, Jinyu"
- },
- "mxo": {
- "english_name": "Mbowe"
- },
- "ctt": {
- "english_name": "Chetti, Wayanad"
- },
- "tmv": {
- "english_name": "Tembo (Motembo)"
- },
- "zae": {
- "english_name": "Zapotec, Yareni"
- },
- "cca": {
- "english_name": "Cauca"
- },
- "laj": {
- "english_name": "Lango (Uganda)"
- },
- "gsg": {
- "english_name": "German Sign Language"
- },
- "ojs": {
- "english_name": "Ojibwa, Severn"
- },
- "njh": {
- "english_name": "Naga, Lotha"
- },
- "dng": {
- "english_name": "Dungan"
- },
- "nid": {
- "english_name": "Ngandi"
- },
- "nba": {
- "english_name": "Nyemba"
- },
- "hi": {
- "english_name": "Hindi",
- "name": "हिंदी"
- },
- "jru": {
- "english_name": "Japrería"
- },
- "tmn": {
- "english_name": "Taman (Indonesia)"
- },
- "wuh": {
- "english_name": "Wutunhua"
- },
- "grg": {
- "english_name": "Madi"
- },
- "rth": {
- "english_name": "Ratahan"
- },
- "dsl": {
- "english_name": "Danish Sign Language"
- },
- "uro": {
- "english_name": "Ura (Papua New Guinea)"
- },
- "moq": {
- "english_name": "Mor (Bomberai Peninsula)"
- },
- "vkp": {
- "english_name": "Creole Portuguese, Korlai"
- },
- "sss": {
- "english_name": "Sô"
- },
- "mtb": {
- "english_name": "Anyin Morofo"
- },
- "orh": {
- "english_name": "Oroqen"
- },
- "acb": {
- "english_name": "Áncá"
- },
- "wem": {
- "english_name": "Gbe, Weme"
- },
- "qwc": {
- "english_name": "Quechua, Classical"
- },
- "kji": {
- "english_name": "Zabana"
- },
- "mab": {
- "english_name": "Mixtec, Yutanduchi"
- },
- "bnp": {
- "english_name": "Bola"
- },
- "any": {
- "english_name": "Anyin"
- },
- "ktz": {
- "english_name": "Ju/'hoan"
- },
- "crh": {
- "english_name": "Tatar, Crimean",
- "name": "Tatar, Crimean"
- },
- "awy": {
- "english_name": "Awyu, Edera"
- },
- "lox": {
- "english_name": "Loun"
- },
- "kew": {
- "english_name": "Kewa, West"
- },
- "kv": {
- "english_name": "Komi"
- },
- "ukg": {
- "english_name": "Ukuriguma"
- },
- "ldd": {
- "english_name": "Luri"
- },
- "juu": {
- "english_name": "Ju"
- },
- "aha": {
- "english_name": "Ahanta"
- },
- "rwr": {
- "english_name": "Marwari (India)"
- },
- "tkf": {
- "english_name": "Tukumanféd"
- },
- "bnm": {
- "english_name": "Batanga"
- },
- "lrm": {
- "english_name": "Marama"
- },
- "npo": {
- "english_name": "Naga, Pochuri"
- },
- "lno": {
- "english_name": "Lango (Sudan)"
- },
- "ndl": {
- "english_name": "Ndolo"
- },
- "smc": {
- "english_name": "Som"
- },
- "fro": {
- "english_name": "French, Old (842-ca. 1400)"
- },
- "bju": {
- "english_name": "Busuu"
- },
- "txx": {
- "english_name": "Tatana"
- },
- "ror": {
- "english_name": "Rongga"
- },
- "otl": {
- "english_name": "Otomi, Tilapa"
- },
- "jls": {
- "english_name": "Jamaican Sign Language"
- },
- "riu": {
- "english_name": "Riung"
- },
- "mut": {
- "english_name": "Muria, Western"
- },
- "abu": {
- "english_name": "Abure"
- },
- "tgb": {
- "english_name": "Tobilung"
- },
- "kgo": {
- "english_name": "Krongo"
- },
- "wbb": {
- "english_name": "Wabo"
- },
- "lbg": {
- "english_name": "Laopang"
- },
- "sch": {
- "english_name": "Sakachep"
- },
- "wrl": {
- "english_name": "Warlmanpa"
- },
- "ddg": {
- "english_name": "Fataluku"
- },
- "nmc": {
- "english_name": "Ngam"
- },
- "pns": {
- "english_name": "Ponosakan"
- },
- "gau": {
- "english_name": "Gadaba, Mudhili"
- },
- "zlm": {
- "english_name": "Malay (individual language)"
- },
- "hmn": {
- "english_name": "Hmong"
- },
- "bho": {
- "english_name": "Bhojpuri"
- },
- "afo": {
- "english_name": "Eloyi"
- },
- "zhb": {
- "english_name": "Zhaba"
- },
- "lba": {
- "english_name": "Lui"
- },
- "taq": {
- "english_name": "Tamasheq"
- },
- "brp": {
- "english_name": "Barapasi"
- },
- "cui": {
- "english_name": "Cuiba"
- },
- "dbw": {
- "english_name": "Dogon, Bankan Tey"
- },
- "tnh": {
- "english_name": "Maiani"
- },
- "cmg": {
- "english_name": "Mongolian, Classical"
- },
- "tmh": {
- "english_name": "Tamashek"
- },
- "ora": {
- "english_name": "Oroha"
- },
- "gwt": {
- "english_name": "Gawar-Bati"
- },
- "mpg": {
- "english_name": "Marba"
- },
- "dgg": {
- "english_name": "Doga"
- },
- "phh": {
- "english_name": "Phukha"
- },
- "ms": {
- "english_name": "Malay (macrolanguage)",
- "name": "Malay (macrolanguage)"
- },
- "clt": {
- "english_name": "Chin, Lautu"
- },
- "sjp": {
- "english_name": "Surjapuri"
- },
- "dul": {
- "english_name": "Agta, Alabat Island"
- },
- "vms": {
- "english_name": "Moksela"
- },
- "ttn": {
- "english_name": "Towei"
- },
- "aac": {
- "english_name": "Ari"
- },
- "mtm": {
- "english_name": "Mator"
- },
- "wha": {
- "english_name": "Manusela"
- },
- "wnw": {
- "english_name": "Wintu"
- },
- "ncn": {
- "english_name": "Nauna"
- },
- "txr": {
- "english_name": "Tartessian"
- },
- "anw": {
- "english_name": "Anaang"
- },
- "gmh": {
- "english_name": "German, Middle High (ca. 1050-1500)"
- },
- "sne": {
- "english_name": "Bidayuh, Bau"
- },
- "hre": {
- "english_name": "Hre"
- },
- "tkl": {
- "english_name": "Tokelau"
- },
- "ebo": {
- "english_name": "Teke-Ebo"
- },
- "ikl": {
- "english_name": "Ikulu"
- },
- "khd": {
- "english_name": "Kanum, Bädi"
- },
- "mbn": {
- "english_name": "Macaguán"
- },
- "apm": {
- "english_name": "Apache, Mescalero-Chiricahua"
- },
- "amo": {
- "english_name": "Amo"
- },
- "tsy": {
- "english_name": "Tebul Sign Language"
- },
- "suz": {
- "english_name": "Sunwar"
- },
- "bed": {
- "english_name": "Bedoanas"
- },
- "sts": {
- "english_name": "Shumashti"
- },
- "pmn": {
- "english_name": "Pam"
- },
- "ktx": {
- "english_name": "Kaxararí"
- },
- "crk": {
- "english_name": "Cree, Plains"
- },
- "gub": {
- "english_name": "Guajajára"
- },
- "ywg": {
- "english_name": "Yinhawangka"
- },
- "iyx": {
- "english_name": "Yaka (Congo)"
- },
- "bhr": {
- "english_name": "Malagasy, Bara"
- },
- "cpy": {
- "english_name": "Ashéninka, South Ucayali"
- },
- "awo": {
- "english_name": "Awak"
- },
- "vme": {
- "english_name": "Masela, East"
- },
- "akp": {
- "english_name": "Siwu"
- },
- "erh": {
- "english_name": "Eruwa"
- },
- "mhn": {
- "english_name": "Mócheno"
- },
- "afn": {
- "english_name": "Defaka"
- },
- "yau": {
- "english_name": "Yuwana"
- },
- "kwk": {
- "english_name": "Kwakiutl"
- },
- "hnd": {
- "english_name": "Hindko, Southern"
- },
- "lok": {
- "english_name": "Loko"
- },
- "tar": {
- "english_name": "Tarahumara, Central"
- },
- "ugo": {
- "english_name": "Ugong"
- },
- "hue": {
- "english_name": "Huave, San Francisco Del Mar"
- },
- "lnd": {
- "english_name": "Lundayeh"
- },
- "ztl": {
- "english_name": "Zapotec, Lapaguía-Guivini"
- },
- "ser": {
- "english_name": "Serrano"
- },
- "xyk": {
- "english_name": "Mayi-Kulan"
- },
- "nbo": {
- "english_name": "Nkukoli"
- },
- "pyy": {
- "english_name": "Pyen"
- },
- "mom": {
- "english_name": "Mangue"
- },
- "bde": {
- "english_name": "Bade"
- },
- "def": {
- "english_name": "Dezfuli"
- },
- "con": {
- "english_name": "Cofán"
- },
- "waj": {
- "english_name": "Waffa"
- },
- "yba": {
- "english_name": "Yala"
- },
- "gbj": {
- "english_name": "Gadaba, Bodo"
- },
- "ygl": {
- "english_name": "Yangum Gel"
- },
- "txq": {
- "english_name": "Tii"
- },
- "nll": {
- "english_name": "Nihali"
- },
- "uru": {
- "english_name": "Urumi"
- },
- "mwb": {
- "english_name": "Juwal"
- },
- "smg": {
- "english_name": "Simbali"
- },
- "ida": {
- "english_name": "Idakho-Isukha-Tiriki"
- },
- "yar": {
- "english_name": "Yabarana"
- },
- "kio": {
- "english_name": "Kiowa"
- },
- "wci": {
- "english_name": "Gbe, Waci"
- },
- "bim": {
- "english_name": "Bimoba"
- },
- "scn": {
- "english_name": "Sicilian"
- },
- "xmg": {
- "english_name": "Mengaka"
- },
- "der": {
- "english_name": "Deori"
- },
- "gde": {
- "english_name": "Gude"
- },
- "ddd": {
- "english_name": "Dongotono"
- },
- "paf": {
- "english_name": "Paranawát"
- },
- "tpa": {
- "english_name": "Taupota"
- },
- "ldj": {
- "english_name": "Lemoro"
- },
- "ybj": {
- "english_name": "Hasha"
- },
- "thh": {
- "english_name": "Tarahumara, Northern"
- },
- "btv": {
- "english_name": "Bateri"
- },
- "zap": {
- "english_name": "Zapotec"
- },
- "pig": {
- "english_name": "Pisabo"
- },
- "ckx": {
- "english_name": "Caka"
- },
- "tyr": {
- "english_name": "Tai Daeng"
- },
- "ham": {
- "english_name": "Hewa"
- },
- "sps": {
- "english_name": "Saposa"
- },
- "oyy": {
- "english_name": "Oya'oya"
- },
- "cbc": {
- "english_name": "Carapana"
- },
- "bzw": {
- "english_name": "Basa (Nigeria)"
- },
- "gug": {
- "english_name": "Guaraní, Paraguayan"
- },
- "woc": {
- "english_name": "Wogeo"
- },
- "trs": {
- "english_name": "Triqui, Chicahuaxtla"
- },
- "aog": {
- "english_name": "Angoram"
- },
- "kxp": {
- "english_name": "Koli, Wadiyara"
- },
- "trc": {
- "english_name": "Triqui, Copala"
- },
- "wum": {
- "english_name": "Wumbvu"
- },
- "ike": {
- "english_name": "Inuktitut, Eastern Canadian"
- },
- "lt": {
- "english_name": "Lithuanian",
- "name": "Lietuvių"
- },
- "gko": {
- "english_name": "Kok-Nar"
- },
- "tuz": {
- "english_name": "Turka"
- },
- "ldn": {
- "english_name": "Láadan"
- },
- "hag": {
- "english_name": "Hanga"
- },
- "tim": {
- "english_name": "Timbe"
- },
- "ass": {
- "english_name": "Ipulo"
- },
- "dug": {
- "english_name": "Duruma"
- },
- "xlu": {
- "english_name": "Luwian, Cuneiform"
- },
- "mfy": {
- "english_name": "Mayo"
- },
- "rof": {
- "english_name": "Rombo"
- },
- "mpm": {
- "english_name": "Mixtec, Yosondúa"
- },
- "wga": {
- "english_name": "Wagaya"
- },
- "tdn": {
- "english_name": "Tondano"
- },
- "tns": {
- "english_name": "Tenis"
- },
- "cuo": {
- "english_name": "Cumanagoto"
- },
- "lcf": {
- "english_name": "Lubu"
- },
- "nsf": {
- "english_name": "Nisu, Northwestern"
- },
- "pcw": {
- "english_name": "Pyapun"
- },
- "azz": {
- "english_name": "Nahuatl, Highland Puebla"
- },
- "vbk": {
- "english_name": "Bontok, Southwestern"
- },
- "slx": {
- "english_name": "Salampasu"
- },
- "kkr": {
- "english_name": "Kir-Balar"
- },
- "cby": {
- "english_name": "Carabayo"
- },
- "nuq": {
- "english_name": "Nukumanu"
- },
- "mio": {
- "english_name": "Mixtec, Pinotepa Nacional"
- },
- "mml": {
- "english_name": "Man Met"
- },
- "ifk": {
- "english_name": "Ifugao, Tuwali"
- },
- "ntx": {
- "english_name": "Naga, Tangkhul (Myanmar)"
- },
- "gun": {
- "english_name": "Guaraní, Mbyá"
- },
- "sew": {
- "english_name": "Sewa Bay"
- },
- "bdr": {
- "english_name": "Bajau, West Coast"
- },
- "mvo": {
- "english_name": "Marovo"
- },
- "gpe": {
- "english_name": "Pidgin English, Ghanaian"
- },
- "piu": {
- "english_name": "Pintupi-Luritja"
- },
- "akq": {
- "english_name": "Ak"
- },
- "tua": {
- "english_name": "Wiarumus"
- },
- "nyw": {
- "english_name": "Nyaw"
- },
- "ktn": {
- "english_name": "Karitiâna"
- },
- "toi": {
- "english_name": "Tonga (Zambia)"
- },
- "kpe": {
- "english_name": "Kpelle"
- },
- "byg": {
- "english_name": "Baygo"
- },
- "crb": {
- "english_name": "Carib, Island"
- },
- "gou": {
- "english_name": "Gavar"
- },
- "koq": {
- "english_name": "Kota (Gabon)"
- },
- "spr": {
- "english_name": "Saparua"
- },
- "uri": {
- "english_name": "Urim"
- },
- "bse": {
- "english_name": "Wushi"
- },
- "aea": {
- "english_name": "Areba"
- },
- "mru": {
- "english_name": "Mono (Cameroon)"
- },
- "huw": {
- "english_name": "Hukumina"
- },
- "zat": {
- "english_name": "Zapotec, Tabaa"
- },
- "kta": {
- "english_name": "Katua"
- },
- "cuk": {
- "english_name": "Kuna, San Blas"
- },
- "mhg": {
- "english_name": "Margu"
- },
- "mua": {
- "english_name": "Mundang"
- },
- "idc": {
- "english_name": "Idon"
- },
- "tkq": {
- "english_name": "Tee"
- },
- "xer": {
- "english_name": "Xerénte"
- },
- "zmz": {
- "english_name": "Mbandja"
- },
- "ycn": {
- "english_name": "Yucuna"
- },
- "lbw": {
- "english_name": "Tolaki"
- },
- "kye": {
- "english_name": "Krache"
- },
- "zts": {
- "english_name": "Zapotec, Tilquiapan"
- },
- "itm": {
- "english_name": "Itu Mbon Uzo"
- },
- "pym": {
- "english_name": "Fyam"
- },
- "job": {
- "english_name": "Joba"
- },
- "khb": {
- "english_name": "Lü"
- },
- "ha": {
- "english_name": "Hausa"
- },
- "msw": {
- "english_name": "Mansoanka"
- },
- "dju": {
- "english_name": "Kapriman"
- },
- "lbf": {
- "english_name": "Tinani"
- },
- "sje": {
- "english_name": "Sami, Pite"
- },
- "yri": {
- "english_name": "Yarí"
- },
- "diz": {
- "english_name": "Ding"
- },
- "mln": {
- "english_name": "Malango"
- },
- "myg": {
- "english_name": "Manta"
- },
- "wka": {
- "english_name": "Kw'adza"
- },
- "zuy": {
- "english_name": "Zumaya"
- },
- "for": {
- "english_name": "Fore"
- },
- "axm": {
- "english_name": "Armenian, Middle"
- },
- "abd": {
- "english_name": "Manide"
- },
- "mpn": {
- "english_name": "Mindiri"
- },
- "diw": {
- "english_name": "Dinka, Northwestern"
- },
- "mgq": {
- "english_name": "Malila"
- },
- "cgg": {
- "english_name": "Chiga"
- },
- "omc": {
- "english_name": "Mochica"
- },
- "fvr": {
- "english_name": "Fur"
- },
- "faj": {
- "english_name": "Faita"
- },
- "psc": {
- "english_name": "Persian Sign Language"
- },
- "tcx": {
- "english_name": "Toda"
- },
- "txu": {
- "english_name": "Kayapó"
- },
- "xnk": {
- "english_name": "Nganakarti"
- },
- "gmd": {
- "english_name": "Mághdì"
- },
- "bgm": {
- "english_name": "Baga Mboteni"
- },
- "kll": {
- "english_name": "Kalagan, Kagan"
- },
- "ums": {
- "english_name": "Pendau"
- },
- "mlv": {
- "english_name": "Motlav"
- },
- "khk": {
- "english_name": "Mongolian, Halh"
- },
- "dyg": {
- "english_name": "Agta, Villa Viciosa"
- },
- "xow": {
- "english_name": "Kowaki"
- },
- "sng": {
- "english_name": "Sanga (Democratic Republic of Congo)"
- },
- "bhh": {
- "english_name": "Bukharic"
- },
- "lhl": {
- "english_name": "Lohar, Lahul"
- },
- "ski": {
- "english_name": "Sika"
- },
- "trg": {
- "english_name": "Lishán Didán"
- },
- "cob": {
- "english_name": "Chicomuceltec"
- },
- "nyq": {
- "english_name": "Nayini"
- },
- "tuh": {
- "english_name": "Taulil"
- },
- "cnw": {
- "english_name": "Chin, Ngawn"
- },
- "auu": {
- "english_name": "Auye"
- },
- "buv": {
- "english_name": "Bun"
- },
- "bxl": {
- "english_name": "Jalkunan"
- },
- "ljx": {
- "english_name": "Yuru"
- },
- "hno": {
- "english_name": "Hindko, Northern"
- },
- "gmx": {
- "english_name": "Magoma"
- },
- "lnu": {
- "english_name": "Longuda"
- },
- "mqt": {
- "english_name": "Mok"
- },
- "nsv": {
- "english_name": "Nisu, Southwestern"
- },
- "clo": {
- "english_name": "Chontal, Lowland Oaxaca"
- },
- "kgl": {
- "english_name": "Kunggari"
- },
- "kgx": {
- "english_name": "Kamaru"
- },
- "thy": {
- "english_name": "Tha"
- },
- "snw": {
- "english_name": "Selee"
- },
- "nsk": {
- "english_name": "Naskapi"
- },
- "zaj": {
- "english_name": "Zaramo"
- },
- "mtj": {
- "english_name": "Moskona"
- },
- "nfu": {
- "english_name": "Mfumte"
- },
- "git": {
- "english_name": "Gitxsan"
- },
- "tui": {
- "english_name": "Tupuri"
- },
- "gcd": {
- "english_name": "Ganggalida"
- },
- "bic": {
- "english_name": "Bikaru"
- },
- "lnz": {
- "english_name": "Lonzo"
- },
- "kkk": {
- "english_name": "Kokota"
- },
- "tio": {
- "english_name": "Teop"
- },
- "kn": {
- "english_name": "Kannada",
- "name": "ಕನ್ನಡ"
- },
- "nho": {
- "english_name": "Takuu"
- },
- "mhd": {
- "english_name": "Mbugu"
- },
- "dix": {
- "english_name": "Dixon Reef"
- },
- "dks": {
- "english_name": "Dinka, Southeastern"
- },
- "ikr": {
- "english_name": "Ikaranggal"
- },
- "gyy": {
- "english_name": "Gunya"
- },
- "ree": {
- "english_name": "Kayan, Rejang"
- },
- "tog": {
- "english_name": "Tonga (Nyasa)"
- },
- "ttp": {
- "english_name": "Tombelala"
- },
- "txb": {
- "english_name": "Tokharian B"
- },
- "hud": {
- "english_name": "Huaulu"
- },
- "hij": {
- "english_name": "Hijuk"
- },
- "cto": {
- "english_name": "Emberá-Catío"
- },
- "sad": {
- "english_name": "Sandawe"
- },
- "khc": {
- "english_name": "Tukang Besi North"
- },
- "cri": {
- "english_name": "Sãotomense"
- },
- "hbo": {
- "english_name": "Hebrew, Ancient"
- },
- "ace": {
- "english_name": "Achinese"
- },
- "dbq": {
- "english_name": "Daba"
- },
- "bm": {
- "english_name": "Bambara"
- },
- "bqp": {
- "english_name": "Busa"
- },
- "nge": {
- "english_name": "Ngemba"
- },
- "zav": {
- "english_name": "Zapotec, Yatzachi"
- },
- "sfe": {
- "english_name": "Subanen, Eastern"
- },
- "wdg": {
- "english_name": "Wadaginam"
- },
- "thm": {
- "english_name": "Aheu"
- },
- "kdy": {
- "english_name": "Keder"
- },
- "duo": {
- "english_name": "Agta, Dupaninan"
- },
- "psq": {
- "english_name": "Pasi"
- },
- "mvw": {
- "english_name": "Machinga"
- },
- "okb": {
- "english_name": "Okobo"
- },
- "xkt": {
- "english_name": "Kantosi"
- },
- "til": {
- "english_name": "Tillamook"
- },
- "kuv": {
- "english_name": "Kur"
- },
- "weo": {
- "english_name": "Wemale"
- },
- "nnf": {
- "english_name": "Ngaing"
- },
- "ish": {
- "english_name": "Esan"
- },
- "yxl": {
- "english_name": "Yardliyawarra"
- },
- "xyb": {
- "english_name": "Yandjibara"
- },
- "rak": {
- "english_name": "Tulu-Bohuai"
- },
- "kqt": {
- "english_name": "Kadazan, Klias River"
- },
- "xoi": {
- "english_name": "Kominimung"
- },
- "kao": {
- "english_name": "Xaasongaxango"
- },
- "trl": {
- "english_name": "Scottish, Traveller"
- },
- "ver": {
- "english_name": "Mom Jango"
- },
- "krv": {
- "english_name": "Kavet"
- },
- "csr": {
- "english_name": "Costa Rican Sign Language"
- },
- "ksq": {
- "english_name": "Kwaami"
- },
- "byb": {
- "english_name": "Bikya"
- },
- "jcs": {
- "english_name": "Jamaican Country Sign Language"
- },
- "agl": {
- "english_name": "Fembe"
- },
- "azb": {
- "english_name": "Azerbaijani, South"
- },
- "mai": {
- "english_name": "Maithili"
- },
- "wei": {
- "english_name": "Kiunum"
- },
- "npg": {
- "english_name": "Naga, Ponyo-Gongwang"
- },
- "bra": {
- "english_name": "Braj"
- },
- "trz": {
- "english_name": "Torá"
- },
- "trd": {
- "english_name": "Turi"
- },
- "jow": {
- "english_name": "Jowulu"
- },
- "gvl": {
- "english_name": "Gulay"
- },
- "wtf": {
- "english_name": "Watiwa"
- },
- "mjd": {
- "english_name": "Maidu, Northwest"
- },
- "scw": {
- "english_name": "Sha"
- },
- "nlw": {
- "english_name": "Walangama"
- },
- "nb": {
- "english_name": "Norwegian Bokmål",
- "name": "Norwegian Bokmål"
- },
- "iba": {
- "english_name": "Iban"
- },
- "mpc": {
- "english_name": "Mangarayi"
- },
- "kvp": {
- "english_name": "Kompane"
- },
- "rnd": {
- "english_name": "Ruund"
- },
- "wnc": {
- "english_name": "Wantoat"
- },
- "gcc": {
- "english_name": "Mali"
- },
- "yry": {
- "english_name": "Yarluyandi"
- },
- "khq": {
- "english_name": "Songhay, Koyra Chiini"
- },
- "xwj": {
- "english_name": "Wajuk"
- },
- "th": {
- "english_name": "Thai",
- "name": "ไทย"
- },
- "glh": {
- "english_name": "Pashayi, Northwest"
- },
- "krx": {
- "english_name": "Karon"
- },
- "mkv": {
- "english_name": "Mafea"
- },
- "mnb": {
- "english_name": "Muna"
- },
- "nuj": {
- "english_name": "Nyole"
- },
- "dac": {
- "english_name": "Dambi"
- },
- "yai": {
- "english_name": "Yagnobi"
- },
- "ngh": {
- "english_name": "N/u"
- },
- "acf": {
- "english_name": "Creole French, Saint Lucian"
- },
- "nui": {
- "english_name": "Ngumbi"
- },
- "imr": {
- "english_name": "Imroing"
- },
- "pml": {
- "english_name": "Lingua Franca"
- },
- "pbv": {
- "english_name": "Pnar"
- },
- "hve": {
- "english_name": "Huave, San Dionisio Del Mar"
- },
- "tqp": {
- "english_name": "Tomoip"
- },
- "pks": {
- "english_name": "Pakistan Sign Language"
- },
- "mmf": {
- "english_name": "Mundat"
- },
- "adh": {
- "english_name": "Adhola"
- },
- "mav": {
- "english_name": "Sateré-Mawé"
- },
- "tsa": {
- "english_name": "Tsaangi"
- },
- "fue": {
- "english_name": "Fulfulde, Borgu"
- },
- "kqb": {
- "english_name": "Kovai"
- },
- "dds": {
- "english_name": "Dogon, Donno So"
- },
- "cno": {
- "english_name": "Con"
- },
- "tbp": {
- "english_name": "Taworta"
- },
- "avd": {
- "english_name": "Alviri-Vidari"
- },
- "yo": {
- "english_name": "Yoruba"
- },
- "bgp": {
- "english_name": "Balochi, Eastern"
- },
- "mwl": {
- "english_name": "Mirandese"
- },
- "mey": {
- "english_name": "Hassaniyya"
- },
- "wie": {
- "english_name": "Wik-Epa"
- },
- "km": {
- "english_name": "Khmer, Central"
- },
- "uve": {
- "english_name": "Uvean, West"
- },
- "mhz": {
- "english_name": "Mor (Mor Islands)"
- },
- "ilb": {
- "english_name": "Ila"
- },
- "gbf": {
- "english_name": "Gaikundi"
- },
- "shv": {
- "english_name": "Shehri"
- },
- "bkm": {
- "english_name": "Kom (Cameroon)"
- },
- "thd": {
- "english_name": "Thayore"
- },
- "caq": {
- "english_name": "Nicobarese, Car"
- },
- "ijs": {
- "english_name": "Ijo, Southeast"
- },
- "gtu": {
- "english_name": "Aghu-Tharnggala"
- },
- "bgw": {
- "english_name": "Bhatri"
- },
- "yxy": {
- "english_name": "Yabula Yabula"
- },
- "knz": {
- "english_name": "Kalamsé"
- },
- "xbg": {
- "english_name": "Bunganditj"
- },
- "gvf": {
- "english_name": "Golin"
- },
- "zmh": {
- "english_name": "Makolkol"
- },
- "prd": {
- "english_name": "Parsi-Dari"
- },
- "ebg": {
- "english_name": "Ebughu"
- },
- "suj": {
- "english_name": "Shubi"
- },
- "xur": {
- "english_name": "Urartian"
- },
- "jei": {
- "english_name": "Yei"
- },
- "anx": {
- "english_name": "Andra-Hus"
- },
- "nar": {
- "english_name": "Iguta"
- },
- "vmk": {
- "english_name": "Makhuwa-Shirima"
- },
- "agu": {
- "english_name": "Aguacateco"
- },
- "rbl": {
- "english_name": "Bikol, Miraya"
- },
- "nag": {
- "english_name": "Naga Pidgin"
- },
- "bon": {
- "english_name": "Bine"
- },
- "bao": {
- "english_name": "Waimaha"
- },
- "sev": {
- "english_name": "Senoufo, Nyarafolo"
- },
- "byt": {
- "english_name": "Berti"
- },
- "wdj": {
- "english_name": "Wadjiginy"
- },
- "bsf": {
- "english_name": "Bauchi"
- },
- "to": {
- "english_name": "Tonga (Tonga Islands)"
- },
- "mmk": {
- "english_name": "Mukha-Dora"
- },
- "btg": {
- "english_name": "Bété, Gagnoa"
- },
- "lpe": {
- "english_name": "Lepki"
- },
- "jax": {
- "english_name": "Malay, Jambi"
- },
- "buk": {
- "english_name": "Bugawac"
- },
- "svk": {
- "english_name": "Slovakian Sign Language"
- },
- "gec": {
- "english_name": "Grebo, Gboloo"
- },
- "sgs": {
- "english_name": "Samogitian"
- },
- "ja": {
- "english_name": "Japanese",
- "name": "日本語"
- },
- "bcv": {
- "english_name": "Shoo-Minda-Nye"
- },
- "coq": {
- "english_name": "Coquille"
- },
- "orr": {
- "english_name": "Oruma"
- },
- "bpq": {
- "english_name": "Malay, Banda"
- },
- "lke": {
- "english_name": "Kenyi"
- },
- "inm": {
- "english_name": "Minaean"
- },
- "wec": {
- "english_name": "Wè Western"
- },
- "cje": {
- "english_name": "Chru"
- },
- "dgb": {
- "english_name": "Dogon, Bunoge"
- },
- "caf": {
- "english_name": "Carrier, Southern"
- },
- "ygw": {
- "english_name": "Yagwoia"
- },
- "ogu": {
- "english_name": "Ogbronuagum"
- },
- "xpg": {
- "english_name": "Phrygian"
- },
- "rnw": {
- "english_name": "Rungwa"
- },
- "tdx": {
- "english_name": "Malagasy, Tandroy-Mahafaly"
- },
- "mxb": {
- "english_name": "Mixtec, Tezoatlán"
- },
- "xbo": {
- "english_name": "Bolgarian"
- },
- "wob": {
- "english_name": "Wè Northern"
- },
- "abz": {
- "english_name": "Abui"
- },
- "bfh": {
- "english_name": "Blafe"
- },
- "mrd": {
- "english_name": "Magar, Western"
- },
- "sgt": {
- "english_name": "Brokpake"
- },
- "wor": {
- "english_name": "Woria"
- },
- "orn": {
- "english_name": "Orang Kanaq"
- },
- "tdd": {
- "english_name": "Tai Nüa"
- },
- "zpk": {
- "english_name": "Zapotec, Tlacolulita"
- },
- "teg": {
- "english_name": "Teke-Tege"
- },
- "lam": {
- "english_name": "Lamba"
- },
- "oko": {
- "english_name": "Korean, Old (3rd-9th cent.)"
- },
- "itk": {
- "english_name": "Judeo-Italian"
- },
- "bpz": {
- "english_name": "Bilba"
- },
- "eu": {
- "english_name": "Basque",
- "name": "Euskara"
- },
- "dda": {
- "english_name": "Dadi Dadi"
- },
- "aci": {
- "english_name": "Aka-Cari"
- },
- "vnm": {
- "english_name": "Vinmavis"
- },
- "aau": {
- "english_name": "Abau"
- },
- "krt": {
- "english_name": "Kanuri, Tumari"
- },
- "lgq": {
- "english_name": "Logba"
- },
- "csn": {
- "english_name": "Colombian Sign Language"
- },
- "btn": {
- "english_name": "Ratagnon"
- },
- "kiq": {
- "english_name": "Kosadle"
- },
- "lbr": {
- "english_name": "Lohorung"
- },
- "brc": {
- "english_name": "Creole Dutch, Berbice"
- },
- "csf": {
- "english_name": "Cuba Sign Language"
- },
- "sac": {
- "english_name": "Meskwaki"
- },
- "dhi": {
- "english_name": "Dhimal"
- },
- "sld": {
- "english_name": "Sissala"
- },
- "cir": {
- "english_name": "Tiri"
- },
- "wsk": {
- "english_name": "Waskia"
- },
- "bwz": {
- "english_name": "Bwisi"
- },
- "ggl": {
- "english_name": "Ganglau"
- },
- "jnl": {
- "english_name": "Rawat"
- },
- "epi": {
- "english_name": "Epie"
- },
- "xcc": {
- "english_name": "Camunic"
- },
- "xsm": {
- "english_name": "Kasem"
- },
- "len": {
- "english_name": "Lenca"
- },
- "tmc": {
- "english_name": "Tumak"
- },
- "xtp": {
- "english_name": "Mixtec, San Miguel Piedras"
- },
- "dre": {
- "english_name": "Dolpo"
- },
- "arc": {
- "english_name": "Aramaic, Official (700-300 BCE)"
- },
- "gju": {
- "english_name": "Gujari"
- },
- "muo": {
- "english_name": "Nyong"
- },
- "skm": {
- "english_name": "Kutong"
- },
- "xzh": {
- "english_name": "Zhang-Zhung"
- },
- "gas": {
- "english_name": "Garasia, Adiwasi"
- },
- "amt": {
- "english_name": "Amto"
- },
- "bbh": {
- "english_name": "Bugan"
- },
- "wmm": {
- "english_name": "Maiwa (Indonesia)"
- },
- "vmr": {
- "english_name": "Marenje"
- },
- "qux": {
- "english_name": "Quechua, Yauyos"
- },
- "chh": {
- "english_name": "Chinook"
- },
- "nsh": {
- "english_name": "Ngoshie"
- },
- "yec": {
- "english_name": "Yeniche"
- },
- "zgn": {
- "english_name": "Zhuang, Guibian"
- },
- "wni": {
- "english_name": "Comorian, Ndzwani"
- },
- "lir": {
- "english_name": "English, Liberian"
- },
- "kni": {
- "english_name": "Kanufi"
- },
- "tiu": {
- "english_name": "Adasen"
- },
- "zoq": {
- "english_name": "Zoque, Tabasco"
- },
- "asn": {
- "english_name": "Asuriní, Xingú"
- },
- "kkn": {
- "english_name": "Kon Keu"
- },
- "end": {
- "english_name": "Ende"
- },
- "xkn": {
- "english_name": "Kayan, Kayan River"
- },
- "tsq": {
- "english_name": "Thai Sign Language"
- },
- "gix": {
- "english_name": "Gilima"
- },
- "kyx": {
- "english_name": "Rapoisi"
- },
- "kez": {
- "english_name": "Kukele"
- },
- "dro": {
- "english_name": "Melanau, Daro-Matu"
- },
- "ikw": {
- "english_name": "Ikwere"
- },
- "mfl": {
- "english_name": "Putai"
- },
- "ndp": {
- "english_name": "Ndo"
- },
- "sow": {
- "english_name": "Sowanda"
- },
- "kpv": {
- "english_name": "Komi-Zyrian"
- },
- "yky": {
- "english_name": "Yakoma"
- },
- "quw": {
- "english_name": "Quichua, Tena Lowland"
- },
- "mfj": {
- "english_name": "Mefele"
- },
- "xpi": {
- "english_name": "Pictish"
- },
- "pbh": {
- "english_name": "E'ñapa Woromaipu"
- },
- "rcf": {
- "english_name": "Creole French, Réunion"
- },
- "tgn": {
- "english_name": "Tandaganon"
- },
- "gbd": {
- "english_name": "Karadjeri"
- },
- "goo": {
- "english_name": "Gone Dau"
- },
- "kxf": {
- "english_name": "Karen, Manumanaw"
- },
- "shb": {
- "english_name": "Ninam"
- },
- "cta": {
- "english_name": "Chatino, Tataltepec"
- },
- "pix": {
- "english_name": "Piu"
- },
- "cdi": {
- "english_name": "Chodri"
- },
- "ttu": {
- "english_name": "Torau"
- },
- "kvb": {
- "english_name": "Kubu"
- },
- "ttr": {
- "english_name": "Tera"
- },
- "gnd": {
- "english_name": "Zulgo-Gemzek"
- },
- "sec": {
- "english_name": "Sechelt"
- },
- "guf": {
- "english_name": "Gupapuyngu"
- },
- "bry": {
- "english_name": "Burui"
- },
- "bkk": {
- "english_name": "Brokskat"
- },
- "txe": {
- "english_name": "Totoli"
- },
- "lli": {
- "english_name": "Teke-Laali"
- },
- "kvr": {
- "english_name": "Kerinci"
- },
- "shr": {
- "english_name": "Shi"
- },
- "act": {
- "english_name": "Achterhoeks"
- },
- "dlk": {
- "english_name": "Dahalik"
- },
- "mzb": {
- "english_name": "Tumzabt"
- },
- "pay": {
- "english_name": "Pech"
- },
- "pek": {
- "english_name": "Penchal"
- },
- "yaa": {
- "english_name": "Yaminahua"
- },
- "srw": {
- "english_name": "Serua"
- },
- "guk": {
- "english_name": "Gumuz"
- },
- "ypn": {
- "english_name": "Phowa, Ani"
- },
- "rrt": {
- "english_name": "Arritinngithigh"
- },
- "stv": {
- "english_name": "Silt'e"
- },
- "obi": {
- "english_name": "Obispeño"
- },
- "kfm": {
- "english_name": "Khunsari"
- },
- "wmd": {
- "english_name": "Mamaindé"
- },
- "auo": {
- "english_name": "Auyokawa"
- },
- "puq": {
- "english_name": "Puquina"
- },
- "aeb": {
- "english_name": "Arabic, Tunisian"
- },
- "gnl": {
- "english_name": "Gangulu"
- },
- "ktb": {
- "english_name": "Kambaata"
- },
- "mdd": {
- "english_name": "Mbum"
- },
- "udg": {
- "english_name": "Muduga"
- },
- "tih": {
- "english_name": "Murut, Timugon"
- },
- "rmq": {
- "english_name": "Caló"
- },
- "gnb": {
- "english_name": "Gangte"
- },
- "fer": {
- "english_name": "Feroge"
- },
- "tw": {
- "english_name": "Twi"
- },
- "om": {
- "english_name": "Oromo"
- },
- "coo": {
- "english_name": "Comox"
- },
- "msh": {
- "english_name": "Malagasy, Masikoro"
- },
- "nmh": {
- "english_name": "Naga, Monsang"
- },
- "haf": {
- "english_name": "Haiphong Sign Language"
- },
- "xau": {
- "english_name": "Kauwera"
- },
- "dhn": {
- "english_name": "Dhanki"
- },
- "swn": {
- "english_name": "Sawknah"
- },
- "ten": {
- "english_name": "Tama (Colombia)"
- },
- "hmq": {
- "english_name": "Miao, Eastern Qiandong"
- },
- "pgi": {
- "english_name": "Pagi"
- },
- "hmk": {
- "english_name": "Maek"
- },
- "xkb": {
- "english_name": "Nago, Northern"
- },
- "txi": {
- "english_name": "Ikpeng"
- },
- "rod": {
- "english_name": "Rogo"
- },
- "mqy": {
- "english_name": "Manggarai"
- },
- "bch": {
- "english_name": "Bariai"
- },
- "dde": {
- "english_name": "Doondo"
- },
- "llk": {
- "english_name": "Lelak"
- },
- "poi": {
- "english_name": "Popoluca, Highland"
- },
- "wgb": {
- "english_name": "Wagawaga"
- },
- "gwd": {
- "english_name": "Gawwada"
- },
- "kw": {
- "english_name": "Cornish"
- },
- "btd": {
- "english_name": "Batak Dairi"
- },
- "eza": {
- "english_name": "Ezaa"
- },
- "tma": {
- "english_name": "Tama (Chad)"
- },
- "adq": {
- "english_name": "Adangbe"
- },
- "xaq": {
- "english_name": "Aquitanian"
- },
- "btp": {
- "english_name": "Budibud"
- },
- "xka": {
- "english_name": "Kalkoti"
- },
- "tnz": {
- "english_name": "Tonga (Thailand)"
- },
- "kwn": {
- "english_name": "Kwangali"
- },
- "msn": {
- "english_name": "Vurës"
- },
- "awn": {
- "english_name": "Awngi"
- },
- "kys": {
- "english_name": "Kayan, Baram"
- },
- "key": {
- "english_name": "Kupia"
- },
- "ned": {
- "english_name": "Nde-Gbite"
- },
- "inz": {
- "english_name": "Ineseño"
- },
- "af": {
- "english_name": "Afrikaans",
- "name": "Afrikaans"
- },
- "apu": {
- "english_name": "Apurinã"
- },
- "xes": {
- "english_name": "Kesawai"
- },
- "ayp": {
- "english_name": "Arabic, North Mesopotamian"
- },
- "bls": {
- "english_name": "Balaesang"
- },
- "dry": {
- "english_name": "Darai"
- },
- "pnc": {
- "english_name": "Pannei"
- },
- "bsq": {
- "english_name": "Bassa"
- },
- "xlb": {
- "english_name": "Loup B"
- },
- "hai": {
- "english_name": "Haida"
- },
- "ems": {
- "english_name": "Yupik, Pacific Gulf"
- },
- "vsi": {
- "english_name": "Moldova Sign Language"
- },
- "ino": {
- "english_name": "Inoke-Yate"
- },
- "ibm": {
- "english_name": "Agoi"
- },
- "bjs": {
- "english_name": "Bajan"
- },
- "atd": {
- "english_name": "Manobo, Ata"
- },
- "dso": {
- "english_name": "Desiya"
- },
- "blw": {
- "english_name": "Balangao"
- },
- "bdd": {
- "english_name": "Bunama"
- },
- "ahp": {
- "english_name": "Aizi, Aproumu"
- },
- "sys": {
- "english_name": "Sinyar"
- },
- "kge": {
- "english_name": "Komering"
- },
- "ise": {
- "english_name": "Italian Sign Language"
- },
- "cse": {
- "english_name": "Czech Sign Language"
- },
- "ru": {
- "english_name": "Russian",
- "name": "русский"
- },
- "ady": {
- "english_name": "Adyghe"
- },
- "liu": {
- "english_name": "Logorik"
- },
- "aiq": {
- "english_name": "Aimaq"
- },
- "eo": {
- "english_name": "Esperanto",
- "name": "Esperanto"
- },
- "tsr": {
- "english_name": "Akei"
- },
- "sxk": {
- "english_name": "Kalapuya, Southern"
- },
- "bma": {
- "english_name": "Lame"
- },
- "kuj": {
- "english_name": "Kuria"
- },
- "yuc": {
- "english_name": "Yuchi"
- },
- "jia": {
- "english_name": "Jina"
- },
- "tcf": {
- "english_name": "Me'phaa, Malinaltepec"
- },
- "nuf": {
- "english_name": "Nusu"
- },
- "bay": {
- "english_name": "Batuley"
- },
- "bkf": {
- "english_name": "Beeke"
- },
- "mfo": {
- "english_name": "Mbe"
- },
- "ndk": {
- "english_name": "Ndaka"
- },
- "rpt": {
- "english_name": "Rapting"
- },
- "kag": {
- "english_name": "Kajaman"
- },
- "phq": {
- "english_name": "Phana'"
- },
- "yom": {
- "english_name": "Yombe"
- },
- "cni": {
- "english_name": "Asháninka"
- },
- "yuq": {
- "english_name": "Yuqui"
- },
- "cag": {
- "english_name": "Nivaclé"
- },
- "kbg": {
- "english_name": "Khamba"
- },
- "alq": {
- "english_name": "Algonquin"
- },
- "ruy": {
- "english_name": "Mala (Nigeria)"
- },
- "tuv": {
- "english_name": "Turkana"
- },
- "gmu": {
- "english_name": "Gumalu"
- },
- "lwm": {
- "english_name": "Laomian"
- },
- "mh": {
- "english_name": "Marshallese"
- },
- "myf": {
- "english_name": "Bambassi"
- },
- "swt": {
- "english_name": "Sawila"
- },
- "tzx": {
- "english_name": "Tabriak"
- },
- "gul": {
- "english_name": "Creole English, Sea Island"
- },
- "mtr": {
- "english_name": "Mewari"
- },
- "bmu": {
- "english_name": "Somba-Siawari"
- },
- "ebk": {
- "english_name": "Bontok, Eastern"
- },
- "esq": {
- "english_name": "Esselen"
- },
- "tet": {
- "english_name": "Tetum"
- },
- "mog": {
- "english_name": "Mongondow"
- },
- "nck": {
- "english_name": "Nakara"
- },
- "tyx": {
- "english_name": "Teke-Tyee"
- },
- "ute": {
- "english_name": "Ute-Southern Paiute"
- },
- "ndz": {
- "english_name": "Ndogo"
- },
- "gob": {
- "english_name": "Playero"
- },
- "bky": {
- "english_name": "Bokyi"
- },
- "bid": {
- "english_name": "Bidiyo"
- },
- "beb": {
- "english_name": "Bebele"
- },
- "okh": {
- "english_name": "Koresh-e Rostam"
- },
- "kea": {
- "english_name": "Kabuverdianu"
- },
- "crn": {
- "english_name": "Cora, El Nayar"
- },
- "ntp": {
- "english_name": "Tepehuan, Northern"
- },
- "kxi": {
- "english_name": "Murut, Keningau"
- },
- "avl": {
- "english_name": "Arabic, Eastern Egyptian Bedawi"
- },
- "xpp": {
- "english_name": "Puyo-Paekche"
- },
- "vkm": {
- "english_name": "Kamakan"
- },
- "hoh": {
- "english_name": "Hobyót"
- },
- "bgr": {
- "english_name": "Chin, Bawm"
- },
- "tuc": {
- "english_name": "Mutu"
- },
- "ulf": {
- "english_name": "Usku"
- },
- "mgw": {
- "english_name": "Matumbi"
- },
- "kbe": {
- "english_name": "Kanju"
- },
- "nrn": {
- "english_name": "Norn"
- },
- "gbk": {
- "english_name": "Gaddi"
- },
- "ie": {
- "english_name": "Interlingue"
- },
- "ium": {
- "english_name": "Mien, Iu"
- },
- "kde": {
- "english_name": "Makonde"
- },
- "pcm": {
- "english_name": "Pidgin, Nigerian"
- },
- "bdm": {
- "english_name": "Buduma"
- },
- "mqa": {
- "english_name": "Maba (Indonesia)"
- },
- "unu": {
- "english_name": "Unubahe"
- },
- "rna": {
- "english_name": "Runa"
- },
- "rmx": {
- "english_name": "Romam"
- },
- "srg": {
- "english_name": "Sulod"
- },
- "mui": {
- "english_name": "Musi"
- },
- "tef": {
- "english_name": "Teressa"
- },
- "mhm": {
- "english_name": "Makhuwa-Moniga"
- },
- "bnn": {
- "english_name": "Bunun"
- },
- "ppl": {
- "english_name": "Pipil"
- },
- "llp": {
- "english_name": "Efate, North"
- },
- "crl": {
- "english_name": "Cree, Northern East"
- },
- "awb": {
- "english_name": "Awa (Papua New Guinea)"
- },
- "lek": {
- "english_name": "Leipon"
- },
- "klh": {
- "english_name": "Weliki"
- },
- "nuc": {
- "english_name": "Nukuini"
- },
- "tpe": {
- "english_name": "Tippera"
- },
- "dyn": {
- "english_name": "Dyangadi"
- },
- "mxc": {
- "english_name": "Manyika"
- },
- "mjt": {
- "english_name": "Sauria Paharia"
- },
- "sbt": {
- "english_name": "Kimki"
- },
- "tal": {
- "english_name": "Tal"
- },
- "gva": {
- "english_name": "Guana (Paraguay)"
- },
- "sue": {
- "english_name": "Suena"
- },
- "aod": {
- "english_name": "Andarum"
- },
- "waw": {
- "english_name": "Waiwai"
- },
- "chm": {
- "english_name": "Mari (Russia)"
- },
- "jmw": {
- "english_name": "Mouwase"
- },
- "jvd": {
- "english_name": "Javindo"
- },
- "uby": {
- "english_name": "Ubykh"
- },
- "afg": {
- "english_name": "Afghan Sign Language"
- },
- "lbc": {
- "english_name": "Lakkia"
- },
- "bxw": {
- "english_name": "Bankagooma"
- },
- "ayg": {
- "english_name": "Ginyanga"
- },
- "syw": {
- "english_name": "Kagate"
- },
- "ho": {
- "english_name": "Hiri Motu"
- },
- "yhd": {
- "english_name": "Arabic, Judeo-Iraqi"
- },
- "ylo": {
- "english_name": "Yi, Naluo"
- },
- "weg": {
- "english_name": "Wergaia"
- },
- "bts": {
- "english_name": "Batak Simalungun"
- },
- "fil": {
- "english_name": "Filipino"
- },
- "jmd": {
- "english_name": "Yamdena"
- },
- "svb": {
- "english_name": "Ulau-Suain"
- },
- "laf": {
- "english_name": "Lafofa"
- },
- "tgu": {
- "english_name": "Tanggu"
- },
- "hab": {
- "english_name": "Hanoi Sign Language"
- },
- "tye": {
- "english_name": "Kyanga"
- },
- "bud": {
- "english_name": "Ntcham"
- },
- "enr": {
- "english_name": "Emumu"
- },
- "bss": {
- "english_name": "Akoose"
- },
- "gv": {
- "english_name": "Manx"
- },
- "kxa": {
- "english_name": "Kairiru"
- },
- "wyb": {
- "english_name": "Wangaaybuwan-Ngiyambaa"
- },
- "oht": {
- "english_name": "Hittite, Old"
- },
- "nhw": {
- "english_name": "Nahuatl, Western Huasteca"
- },
- "kck": {
- "english_name": "Kalanga"
- },
- "mnz": {
- "english_name": "Moni"
- },
- "djb": {
- "english_name": "Djinba"
- },
- "pyu": {
- "english_name": "Puyuma"
- },
- "trp": {
- "english_name": "Kok Borok"
- },
- "mem": {
- "english_name": "Mangala"
- },
- "kqz": {
- "english_name": "Korana"
- },
- "han": {
- "english_name": "Hangaza"
- },
- "wil": {
- "english_name": "Wilawila"
- },
- "sou": {
- "english_name": "Thai, Southern"
- },
- "kot": {
- "english_name": "Lagwan"
- },
- "mmx": {
- "english_name": "Madak"
- },
- "huo": {
- "english_name": "Hu"
- },
- "kkz": {
- "english_name": "Kaska"
- },
- "isk": {
- "english_name": "Ishkashimi"
- },
- "rm": {
- "english_name": "Romansh"
- },
- "lbk": {
- "english_name": "Bontok, Central"
- },
- "ruc": {
- "english_name": "Ruuli"
- },
- "grt": {
- "english_name": "Garo"
- },
- "knl": {
- "english_name": "Keninjal"
- },
- "zkh": {
- "english_name": "Khorezmian"
- },
- "kxv": {
- "english_name": "Kuvi"
- },
- "yyu": {
- "english_name": "Yau (Sandaun Province)"
- },
- "ysy": {
- "english_name": "Sanie"
- },
- "nul": {
- "english_name": "Nusa Laut"
- },
- "wwa": {
- "english_name": "Waama"
- },
- "ppa": {
- "english_name": "Pao"
- },
- "xoo": {
- "english_name": "Xukurú"
- },
- "gbh": {
- "english_name": "Gbe, Defi"
- },
- "kty": {
- "english_name": "Kango (Bas-Uélé District)"
- },
- "com": {
- "english_name": "Comanche"
- },
- "ksj": {
- "english_name": "Uare"
- },
- "pyx": {
- "english_name": "Pyu (Myanmar)"
- },
- "csc": {
- "english_name": "Catalan Sign Language"
- },
- "kdg": {
- "english_name": "Seba"
- },
- "bgf": {
- "english_name": "Bangandu"
- },
- "tda": {
- "english_name": "Tagdal"
- },
- "kmf": {
- "english_name": "Kare (Papua New Guinea)"
- },
- "brw": {
- "english_name": "Bellari"
- },
- "gap": {
- "english_name": "Gal"
- },
- "kqy": {
- "english_name": "Koorete"
- },
- "evh": {
- "english_name": "Uvbie"
- },
- "tuf": {
- "english_name": "Tunebo, Central"
- },
- "sdo": {
- "english_name": "Bidayuh, Bukar-Sadung"
- },
- "zor": {
- "english_name": "Zoque, Rayón"
- },
- "zdj": {
- "english_name": "Comorian, Ngazidja"
- },
- "ahm": {
- "english_name": "Aizi, Mobumrin"
- },
- "got": {
- "english_name": "Gothic"
- },
- "bly": {
- "english_name": "Notre"
- },
- "cso": {
- "english_name": "Chinantec, Sochiapam"
- },
- "mfe": {
- "english_name": "Morisyen"
- },
- "yty": {
- "english_name": "Yatay"
- },
- "wla": {
- "english_name": "Walio"
- },
- "pum": {
- "english_name": "Puma"
- },
- "dbr": {
- "english_name": "Dabarre"
- },
- "frc": {
- "english_name": "French, Cajun"
- },
- "nzs": {
- "english_name": "New Zealand Sign Language"
- },
- "boy": {
- "english_name": "Bodo (Central African Republic)"
- },
- "dgz": {
- "english_name": "Daga"
- },
- "did": {
- "english_name": "Didinga"
- },
- "vun": {
- "english_name": "Vunjo"
- },
- "tfi": {
- "english_name": "Gbe, Tofin"
- },
- "pnv": {
- "english_name": "Pinigura"
- },
- "pud": {
- "english_name": "Punan Aput"
- },
- "zms": {
- "english_name": "Mbesa"
- },
- "dhg": {
- "english_name": "Djangu"
- },
- "aaw": {
- "english_name": "Solong"
- },
- "pbn": {
- "english_name": "Kpasam"
- },
- "ato": {
- "english_name": "Atong"
- },
- "par": {
- "english_name": "Panamint"
- },
- "awm": {
- "english_name": "Arawum"
- },
- "loq": {
- "english_name": "Lobala"
- },
- "nni": {
- "english_name": "Nuaulu, North"
- },
- "vmu": {
- "english_name": "Muluridyi"
- },
- "wnp": {
- "english_name": "Wanap"
- },
- "moz": {
- "english_name": "Mukulu"
- },
- "ptv": {
- "english_name": "Port Vato"
- },
- "asv": {
- "english_name": "Asoa"
- },
- "sja": {
- "english_name": "Epena"
- },
- "itz": {
- "english_name": "Itzá"
- },
- "xsp": {
- "english_name": "Silopi"
- },
- "suw": {
- "english_name": "Sumbwa"
- },
- "lkh": {
- "english_name": "Lakha"
- },
- "rge": {
- "english_name": "Romano-Greek"
- },
- "hu": {
- "english_name": "Hungarian",
- "name": "magyar"
- },
- "muc": {
- "english_name": "Ajumbu"
- },
- "tl": {
- "english_name": "Tagalog"
- },
- "kqa": {
- "english_name": "Mum"
- },
- "dbm": {
- "english_name": "Duguri"
- },
- "gnh": {
- "english_name": "Lere"
- },
- "ccr": {
- "english_name": "Cacaopera"
- },
- "ehu": {
- "english_name": "Ehueun"
- },
- "lgm": {
- "english_name": "Lega-Mwenga"
- },
- "fa": {
- "english_name": "Persian",
- "name": "فارسی"
- },
- "mdw": {
- "english_name": "Mbosi"
- },
- "frp": {
- "english_name": "Arpitan"
- },
- "kvu": {
- "english_name": "Karen, Yinbaw"
- },
- "ria": {
- "english_name": "Riang (India)"
- },
- "aag": {
- "english_name": "Ambrak"
- },
- "stk": {
- "english_name": "Arammba"
- },
- "pdn": {
- "english_name": "Podena"
- },
- "khp": {
- "english_name": "Kapori"
- },
- "byp": {
- "english_name": "Bumaji"
- },
- "lol": {
- "english_name": "Mongo"
- },
- "jge": {
- "english_name": "Judeo-Georgian"
- },
- "mlm": {
- "english_name": "Mulam"
- },
- "smv": {
- "english_name": "Samvedi"
- },
- "akw": {
- "english_name": "Akwa"
- },
- "gup": {
- "english_name": "Gunwinggu"
- },
- "lbb": {
- "english_name": "Label"
- },
- "jmb": {
- "english_name": "Zumbun"
- },
- "cng": {
- "english_name": "Qiang, Northern"
- },
- "kcg": {
- "english_name": "Tyap"
- },
- "ddn": {
- "english_name": "Dendi (Benin)"
- },
- "ztu": {
- "english_name": "Zapotec, Güilá"
- },
- "bmz": {
- "english_name": "Baramu"
- },
- "aui": {
- "english_name": "Anuki"
- },
- "tac": {
- "english_name": "Tarahumara, Lowland"
- },
- "ggw": {
- "english_name": "Gogodala"
- },
- "mmn": {
- "english_name": "Mamanwa"
- },
- "mos": {
- "english_name": "Mossi"
- },
- "tza": {
- "english_name": "Tanzanian Sign Language"
- },
- "mzx": {
- "english_name": "Mawayana"
- },
- "bfc": {
- "english_name": "Bai, Northern"
- },
- "ndd": {
- "english_name": "Nde-Nsele-Nta"
- },
- "mvs": {
- "english_name": "Massep"
- },
- "cbu": {
- "english_name": "Candoshi-Shapra"
- },
- "gym": {
- "english_name": "Ngäbere"
- },
- "wle": {
- "english_name": "Wolane"
- },
- "aoi": {
- "english_name": "Anindilyakwa"
- },
- "xln": {
- "english_name": "Alanic"
- },
- "saw": {
- "english_name": "Sawi"
- },
- "mvy": {
- "english_name": "Kohistani, Indus"
- },
- "yok": {
- "english_name": "Yokuts"
- },
- "tyv": {
- "english_name": "Tuvinian"
- },
- "ogg": {
- "english_name": "Ogbogolo"
- },
- "bps": {
- "english_name": "Blaan, Sarangani"
- },
- "lsp": {
- "english_name": "Panamanian Sign Language"
- },
- "ibe": {
- "english_name": "Akpes"
- },
- "xsb": {
- "english_name": "Sambal"
- },
- "qvi": {
- "english_name": "Quichua, Imbabura Highland"
- },
- "huu": {
- "english_name": "Huitoto, Murui"
- },
- "ati": {
- "english_name": "Attié"
- },
- "gli": {
- "english_name": "Guliguli"
- },
- "bcd": {
- "english_name": "Babar, North"
- },
- "ysc": {
- "english_name": "Yassic"
- },
- "omk": {
- "english_name": "Omok"
- },
- "xgr": {
- "english_name": "Garza"
- },
- "drq": {
- "english_name": "Dura"
- },
- "alr": {
- "english_name": "Alutor"
- },
- "nhn": {
- "english_name": "Nahuatl, Central"
- },
- "rjg": {
- "english_name": "Rajong"
- },
- "lha": {
- "english_name": "Laha (Viet Nam)"
- },
- "pcc": {
- "english_name": "Bouyei"
- },
- "mwn": {
- "english_name": "Nyamwanga"
- },
- "xti": {
- "english_name": "Mixtec, Sinicahua"
- },
- "xnz": {
- "english_name": "Kenzi"
- },
- "xba": {
- "english_name": "Kamba (Brazil)"
- },
- "tdi": {
- "english_name": "Tomadino"
- },
- "apz": {
- "english_name": "Safeyoka"
- },
- "tmi": {
- "english_name": "Tutuba"
- },
- "amr": {
- "english_name": "Amarakaeri"
- },
- "fun": {
- "english_name": "Fulniô"
- },
- "fwe": {
- "english_name": "Fwe"
- },
- "ole": {
- "english_name": "Olekha"
- },
- "kpg": {
- "english_name": "Kapingamarangi"
- },
- "brz": {
- "english_name": "Bilbil"
- },
- "prt": {
- "english_name": "Phai"
- },
- "bcn": {
- "english_name": "Bali (Nigeria)"
- },
- "sis": {
- "english_name": "Siuslaw"
- },
- "bfw": {
- "english_name": "Bondo"
- },
- "lej": {
- "english_name": "Lengola"
- },
- "mhe": {
- "english_name": "Besisi"
- },
- "lwt": {
- "english_name": "Lewotobi"
- },
- "sih": {
- "english_name": "Zire"
- },
- "bew": {
- "english_name": "Betawi"
- },
- "tjs": {
- "english_name": "Tujia, Southern"
- },
- "gzi": {
- "english_name": "Gazi"
- },
- "mxd": {
- "english_name": "Modang"
- },
- "diy": {
- "english_name": "Diuwe"
- },
- "xmr": {
- "english_name": "Meroitic"
- },
- "cvg": {
- "english_name": "Chug"
- },
- "bwi": {
- "english_name": "Baniwa"
- },
- "hml": {
- "english_name": "Hmong, Luopohe"
- },
- "bcy": {
- "english_name": "Bacama"
- },
- "wxa": {
- "english_name": "Waxianghua"
- },
- "kvy": {
- "english_name": "Karen, Yintale"
- },
- "nap": {
- "english_name": "Neapolitan"
- },
- "thw": {
- "english_name": "Thudam"
- },
- "crz": {
- "english_name": "Cruzeño"
- },
- "xsa": {
- "english_name": "Sabaean"
- },
- "xrn": {
- "english_name": "Arin"
- },
- "int": {
- "english_name": "Intha"
- },
- "anr": {
- "english_name": "Andh"
- },
- "anl": {
- "english_name": "Chin, Anu-Hkongso"
- },
- "bbn": {
- "english_name": "Uneapa"
- },
- "zah": {
- "english_name": "Zangwal"
- },
- "pod": {
- "english_name": "Ponares"
- },
- "cub": {
- "english_name": "Cubeo"
- },
- "xtr": {
- "english_name": "Tripuri, Early"
- },
- "gdm": {
- "english_name": "Laal"
- },
- "gid": {
- "english_name": "Gidar"
- },
- "syy": {
- "english_name": "Al-Sayyid Bedouin Sign Language"
- },
- "msf": {
- "english_name": "Mekwei"
- },
- "yas": {
- "english_name": "Nugunu (Cameroon)"
- },
- "nsn": {
- "english_name": "Nehan"
- },
- "bkx": {
- "english_name": "Baikeno"
- },
- "gop": {
- "english_name": "Yeretuar"
- },
- "hor": {
- "english_name": "Horo"
- },
- "xks": {
- "english_name": "Kumbewaha"
- },
- "urb": {
- "english_name": "Urubú-Kaapor"
- },
- "ata": {
- "english_name": "Pele-Ata"
- },
- "zmq": {
- "english_name": "Mituku"
- },
- "cab": {
- "english_name": "Garifuna"
- },
- "lhm": {
- "english_name": "Lhomi"
- },
- "mxv": {
- "english_name": "Mixtec, Metlatónoc"
- },
- "klt": {
- "english_name": "Nukna"
- },
- "byx": {
- "english_name": "Qaqet"
- },
- "yig": {
- "english_name": "Nasu, Wusa"
- },
- "kzc": {
- "english_name": "Kulango, Bondoukou"
- },
- "bbu": {
- "english_name": "Kulung (Nigeria)"
- },
- "xlp": {
- "english_name": "Lepontic"
- },
- "ire": {
- "english_name": "Iresim"
- },
- "jya": {
- "english_name": "Jiarong"
- },
- "niw": {
- "english_name": "Nimo"
- },
- "loh": {
- "english_name": "Narim"
- },
- "jkm": {
- "english_name": "Karen, Mobwa"
- },
- "wra": {
- "english_name": "Warapu"
- },
- "zmg": {
- "english_name": "Marti Ke"
- },
- "asu": {
- "english_name": "Asurini, Tocantins"
- },
- "bpi": {
- "english_name": "Bagupi"
- },
- "wli": {
- "english_name": "Waioli"
- },
- "zgh": {
- "english_name": "Tamazight, Standard Moroccan"
- },
- "keb": {
- "english_name": "Kélé"
- },
- "rgs": {
- "english_name": "Roglai, Southern"
- },
- "prg": {
- "english_name": "Prussian"
- },
- "yuz": {
- "english_name": "Yuracare"
- },
- "dmy": {
- "english_name": "Demta"
- },
- "sgr": {
- "english_name": "Sangisari"
- },
- "gic": {
- "english_name": "Gail"
- },
- "org": {
- "english_name": "Oring"
- },
- "mve": {
- "english_name": "Marwari (Pakistan)"
- },
- "amx": {
- "english_name": "Anmatyerre"
- },
- "kit": {
- "english_name": "Agob"
- },
- "za": {
- "english_name": "Zhuang"
- },
- "ndx": {
- "english_name": "Nduga"
- },
- "tlo": {
- "english_name": "Talodi"
- },
- "lnh": {
- "english_name": "Lanoh"
- },
- "mow": {
- "english_name": "Moi (Congo)"
- },
- "mi": {
- "english_name": "Maori",
- "name": "Reo Māori"
- },
- "hlt": {
- "english_name": "Chin, Matu"
- },
- "kst": {
- "english_name": "Winyé"
- },
- "ani": {
- "english_name": "Andi"
- },
- "khg": {
- "english_name": "Tibetan, Khams"
- },
- "noz": {
- "english_name": "Nayi"
- },
- "hvc": {
- "english_name": "Haitian Vodoun Culture Language"
- },
- "wgu": {
- "english_name": "Wirangu"
- },
- "usu": {
- "english_name": "Uya"
- },
- "sma": {
- "english_name": "Sami, Southern"
- },
- "cjp": {
- "english_name": "Cabécar"
- },
- "tpn": {
- "english_name": "Tupinambá"
- },
- "nsd": {
- "english_name": "Nisu, Southern"
- },
- "kmb": {
- "english_name": "Kimbundu"
- },
- "bru": {
- "english_name": "Bru, Eastern"
- },
- "bsj": {
- "english_name": "Bangwinji"
- },
- "bdg": {
- "english_name": "Bonggi"
- },
- "mnf": {
- "english_name": "Mundani"
- },
- "bjj": {
- "english_name": "Kanauji"
- },
- "nto": {
- "english_name": "Ntomba"
- },
- "hni": {
- "english_name": "Hani"
- },
- "xbi": {
- "english_name": "Kombio"
- },
- "yei": {
- "english_name": "Yeni"
- },
- "rai": {
- "english_name": "Ramoaaina"
- },
- "skq": {
- "english_name": "Sininkere"
- },
- "enm": {
- "english_name": "English, Middle (1100-1500)"
- },
- "fse": {
- "english_name": "Finnish Sign Language"
- },
- "dlm": {
- "english_name": "Dalmatian"
- },
- "meb": {
- "english_name": "Ikobi"
- },
- "dae": {
- "english_name": "Duupa"
- },
- "aol": {
- "english_name": "Alor"
- },
- "eiv": {
- "english_name": "Askopan"
- },
- "knd": {
- "english_name": "Konda"
- },
- "avb": {
- "english_name": "Avau"
- },
- "jyy": {
- "english_name": "Jaya"
- },
- "gbq": {
- "english_name": "Gbaya-Bozoum"
- },
- "are": {
- "english_name": "Arrarnta, Western"
- },
- "uka": {
- "english_name": "Kaburi"
- },
- "lnw": {
- "english_name": "Lanima"
- },
- "xhr": {
- "english_name": "Hernican"
- },
- "wsr": {
- "english_name": "Owenia"
- },
- "aee": {
- "english_name": "Pashayi, Northeast"
- },
- "nqg": {
- "english_name": "Nago, Southern"
- },
- "cbi": {
- "english_name": "Chachi"
- },
- "bhi": {
- "english_name": "Bhilali"
- },
- "xuo": {
- "english_name": "Kuo"
- },
- "zpc": {
- "english_name": "Zapotec, Choapan"
- },
- "nwx": {
- "english_name": "Newar, Middle"
- },
- "psw": {
- "english_name": "Port Sandwich"
- },
- "bqb": {
- "english_name": "Bagusa"
- },
- "bgz": {
- "english_name": "Banggai"
- },
- "nla": {
- "english_name": "Ngombale"
- },
- "jah": {
- "english_name": "Jah Hut"
- },
- "jbj": {
- "english_name": "Arandai"
- },
- "cgk": {
- "english_name": "Chocangacakha"
- },
- "xtc": {
- "english_name": "Katcha-Kadugli-Miri"
- },
- "nmq": {
- "english_name": "Nambya"
- },
- "xmj": {
- "english_name": "Majera"
- },
- "vah": {
- "english_name": "Varhadi-Nagpuri"
- },
- "dtp": {
- "english_name": "Dusun, Central"
- },
- "fkv": {
- "english_name": "Finnish, Kven"
- },
- "yim": {
- "english_name": "Naga, Yimchungru"
- },
- "rup": {
- "english_name": "Romanian, Macedo-"
- },
- "mry": {
- "english_name": "Mandaya"
- },
- "bhs": {
- "english_name": "Buwal"
- },
- "neg": {
- "english_name": "Negidal"
- },
- "kmz": {
- "english_name": "Khorasani Turkish"
- },
- "gaz": {
- "english_name": "Oromo, West Central"
- },
- "gue": {
- "english_name": "Gurinji"
- },
- "nnz": {
- "english_name": "Nda'nda'"
- },
- "ngb": {
- "english_name": "Ngbandi, Northern"
- },
- "bxr": {
- "english_name": "Buriat, Russia"
- },
- "mrh": {
- "english_name": "Chin, Mara"
- },
- "akx": {
- "english_name": "Aka-Kede"
- },
- "wo": {
- "english_name": "Wolof"
- },
- "nov": {
- "english_name": "Novial"
- },
- "uya": {
- "english_name": "Doko-Uyanga"
- },
- "fqs": {
- "english_name": "Fas"
- },
- "ngl": {
- "english_name": "Lomwe"
- },
- "bac": {
- "english_name": "Badui"
- },
- "lay": {
- "english_name": "Lama (Myanmar)"
- },
- "tnp": {
- "english_name": "Whitesands"
- },
- "bxm": {
- "english_name": "Buriat, Mongolia"
- },
- "nnv": {
- "english_name": "Nugunu (Australia)"
- },
- "xsu": {
- "english_name": "Sanumá"
- },
- "rin": {
- "english_name": "Nungu"
- },
- "cma": {
- "english_name": "Maa"
- },
- "xsy": {
- "english_name": "Saisiyat"
- },
- "dby": {
- "english_name": "Dibiyaso"
- },
- "snm": {
- "english_name": "Ma'di, Southern"
- },
- "knv": {
- "english_name": "Tabo"
- },
- "mvp": {
- "english_name": "Duri"
- },
- "kwd": {
- "english_name": "Kwaio"
- },
- "mqg": {
- "english_name": "Malay, Kota Bangun Kutai"
- },
- "elo": {
- "english_name": "El Molo"
- },
- "ukw": {
- "english_name": "Ukwuani-Aboh-Ndoni"
- },
- "tud": {
- "english_name": "Tuxá"
- },
- "kbh": {
- "english_name": "Camsá"
- },
- "xlc": {
- "english_name": "Lycian"
- },
- "bpx": {
- "english_name": "Bareli, Palya"
- },
- "hav": {
- "english_name": "Havu"
- },
- "nng": {
- "english_name": "Naga, Maring"
- },
- "cth": {
- "english_name": "Chin, Thaiphum"
- },
- "tlx": {
- "english_name": "Khehek"
- },
- "efa": {
- "english_name": "Efai"
- },
- "ael": {
- "english_name": "Ambele"
- },
- "byk": {
- "english_name": "Biao"
- },
- "lrz": {
- "english_name": "Lemerig"
- },
- "bko": {
- "english_name": "Kwa'"
- },
- "isc": {
- "english_name": "Isconahua"
- },
- "pkb": {
- "english_name": "Pokomo"
- },
- "mcy": {
- "english_name": "Watut, South"
- },
- "lov": {
- "english_name": "Lopi"
- },
- "loc": {
- "english_name": "Inonhan"
- },
- "xlo": {
- "english_name": "Loup A"
- },
- "stw": {
- "english_name": "Satawalese"
- },
- "lww": {
- "english_name": "Lewo"
- },
- "sny": {
- "english_name": "Saniyo-Hiyewe"
- },
- "ypm": {
- "english_name": "Phuma"
- },
- "ait": {
- "english_name": "Arikem"
- },
- "lgz": {
- "english_name": "Ligenza"
- },
- "dun": {
- "english_name": "Dusun Deyah"
- },
- "kvi": {
- "english_name": "Kwang"
- },
- "wtw": {
- "english_name": "Wotu"
- },
- "tzm": {
- "english_name": "Tamazight, Central Atlas"
- },
- "nab": {
- "english_name": "Nambikuára, Southern"
- },
- "brr": {
- "english_name": "Birao"
- },
- "xdk": {
- "english_name": "Dharuk"
- },
- "uz": {
- "english_name": "Uzbek"
- },
- "hvk": {
- "english_name": "Haveke"
- },
- "bwg": {
- "english_name": "Barwe"
- },
- "svc": {
- "english_name": "Creole English, Vincentian"
- },
- "amf": {
- "english_name": "Hamer-Banna"
- },
- "adz": {
- "english_name": "Adzera"
- },
- "ilv": {
- "english_name": "Ilue"
- },
- "ybl": {
- "english_name": "Yukuben"
- },
- "tae": {
- "english_name": "Tariana"
- },
- "qwm": {
- "english_name": "Kuman (Russia)"
- },
- "oro": {
- "english_name": "Orokolo"
- },
- "pnj": {
- "english_name": "Pinjarup"
- },
- "udi": {
- "english_name": "Udi"
- },
- "kwj": {
- "english_name": "Kwanga"
- },
- "keq": {
- "english_name": "Kamar"
- },
- "ltn": {
- "english_name": "Latundê"
- },
- "ppo": {
- "english_name": "Folopa"
- },
- "blg": {
- "english_name": "Balau"
- },
- "xtt": {
- "english_name": "Mixtec, Tacahua"
- },
- "aww": {
- "english_name": "Awun"
- },
- "wub": {
- "english_name": "Wunambal"
- },
- "dwr": {
- "english_name": "Dawro"
- },
- "xhu": {
- "english_name": "Hurrian"
- },
- "pca": {
- "english_name": "Popoloca, Santa Inés Ahuatempan"
- },
- "sos": {
- "english_name": "Seeku"
- },
- "mfz": {
- "english_name": "Mabaan"
- },
- "jel": {
- "english_name": "Yelmek"
- },
- "bns": {
- "english_name": "Bundeli"
- },
- "nqk": {
- "english_name": "Ede Nago, Kura"
- },
- "mik": {
- "english_name": "Mikasuki"
- },
- "peg": {
- "english_name": "Pengo"
- },
- "sbj": {
- "english_name": "Surbakhal"
- },
- "cpx": {
- "english_name": "Chinese, Pu-Xian"
- },
- "tem": {
- "english_name": "Timne"
- },
- "mxm": {
- "english_name": "Meramera"
- },
- "yaj": {
- "english_name": "Banda-Yangere"
- },
- "ltc": {
- "english_name": "Chinese, Late Middle"
- },
- "zro": {
- "english_name": "Záparo"
- },
- "duk": {
- "english_name": "Uyajitaya"
- },
- "tuo": {
- "english_name": "Tucano"
- },
- "itv": {
- "english_name": "Itawit"
- },
- "nkn": {
- "english_name": "Nkangala"
- },
- "kdu": {
- "english_name": "Kadaru"
- },
- "xwl": {
- "english_name": "Gbe, Western Xwla"
- },
- "jak": {
- "english_name": "Jakun"
- },
- "ik": {
- "english_name": "Inupiaq"
- },
- "tln": {
- "english_name": "Talondo'"
- },
- "asb": {
- "english_name": "Assiniboine"
- },
- "gml": {
- "english_name": "German, Middle Low"
- },
- "gjk": {
- "english_name": "Koli, Kachi"
- },
- "pls": {
- "english_name": "Popoloca, San Marcos Tlalcoyalco"
- },
- "mkw": {
- "english_name": "Kituba (Congo)"
- },
- "csz": {
- "english_name": "Coos"
- },
- "won": {
- "english_name": "Wongo"
- },
- "iou": {
- "english_name": "Tuma-Irumu"
- },
- "rml": {
- "english_name": "Romani, Baltic"
- },
- "idu": {
- "english_name": "Idoma"
- },
- "ons": {
- "english_name": "Ono"
- },
- "mhr": {
- "english_name": "Mari, Eastern"
- },
- "psh": {
- "english_name": "Pashayi, Southwest"
- },
- "kch": {
- "english_name": "Vono"
- },
- "tyu": {
- "english_name": "Kua"
- },
- "pir": {
- "english_name": "Piratapuyo"
- },
- "xao": {
- "english_name": "Khao"
- },
- "dio": {
- "english_name": "Dibo"
- },
- "bhx": {
- "english_name": "Bhalay"
- },
- "lag": {
- "english_name": "Langi"
- },
- "rmo": {
- "english_name": "Romani, Sinte"
- },
- "noh": {
- "english_name": "Nomu"
- },
- "rop": {
- "english_name": "Kriol"
- },
- "cou": {
- "english_name": "Wamey"
- },
- "kra": {
- "english_name": "Kumhali"
- },
- "gmy": {
- "english_name": "Greek, Mycenaean"
- },
- "lch": {
- "english_name": "Luchazi"
- },
- "big": {
- "english_name": "Biangai"
- },
- "kzu": {
- "english_name": "Kayupulau"
- },
- "wly": {
- "english_name": "Waling"
- },
- "bmn": {
- "english_name": "Bina (Papua New Guinea)"
- },
- "sbx": {
- "english_name": "Seberuang"
- },
- "hr": {
- "english_name": "Croatian",
- "name": "hrvatski"
- },
- "szn": {
- "english_name": "Sula"
- },
- "lid": {
- "english_name": "Nyindrou"
- },
- "oks": {
- "english_name": "Oko-Eni-Osayen"
- },
- "pim": {
- "english_name": "Powhatan"
- },
- "kwb": {
- "english_name": "Kwa"
- },
- "mtk": {
- "english_name": "Mbe'"
- },
- "bqw": {
- "english_name": "Buru (Nigeria)"
- },
- "heg": {
- "english_name": "Helong"
- },
- "azd": {
- "english_name": "Nahuatl, Eastern Durango"
- },
- "tei": {
- "english_name": "Torricelli"
- },
- "bxj": {
- "english_name": "Bayungu"
- },
- "xch": {
- "english_name": "Chemakum"
- },
- "xmn": {
- "english_name": "Persian, Manichaean Middle"
- },
- "xra": {
- "english_name": "Krahô"
- },
- "eyo": {
- "english_name": "Keiyo"
- },
- "gta": {
- "english_name": "Guató"
- },
- "oku": {
- "english_name": "Oku"
- },
- "rme": {
- "english_name": "Angloromani"
- },
- "mwh": {
- "english_name": "Mouk-Aria"
- },
- "qxl": {
- "english_name": "Quichua, Salasaca Highland"
- },
- "qus": {
- "english_name": "Quichua, Santiago del Estero"
- },
- "doo": {
- "english_name": "Dongo"
- },
- "ler": {
- "english_name": "Lenkau"
- },
- "fsl": {
- "english_name": "French Sign Language"
- },
- "lld": {
- "english_name": "Ladin"
- },
- "sci": {
- "english_name": "Creole Malay, Sri Lankan"
- },
- "aeq": {
- "english_name": "Aer"
- },
- "kus": {
- "english_name": "Kusaal"
- },
- "bki": {
- "english_name": "Baki"
- },
- "tpy": {
- "english_name": "Trumai"
- },
- "neo": {
- "english_name": "Ná-Meo"
- },
- "aaq": {
- "english_name": "Abnaki, Eastern"
- },
- "bvx": {
- "english_name": "Dibole"
- },
- "jma": {
- "english_name": "Dima"
- },
- "ncx": {
- "english_name": "Nahuatl, Central Puebla"
- },
- "ruk": {
- "english_name": "Che"
- },
- "nce": {
- "english_name": "Yale"
- },
- "xmx": {
- "english_name": "Maden"
- },
- "zna": {
- "english_name": "Zan Gula"
- },
- "mbv": {
- "english_name": "Mbulungish"
- },
- "apd": {
- "english_name": "Arabic, Sudanese"
- },
- "ung": {
- "english_name": "Ngarinyin"
- },
- "zpg": {
- "english_name": "Zapotec, Guevea De Humboldt"
- },
- "kuw": {
- "english_name": "Kpagua"
- },
- "ask": {
- "english_name": "Ashkun"
- },
- "wow": {
- "english_name": "Wawonii"
- },
- "lmw": {
- "english_name": "Miwok, Lake"
- },
- "xvo": {
- "english_name": "Volscian"
- },
- "njl": {
- "english_name": "Njalgulgule"
- },
- "nct": {
- "english_name": "Naga, Chothe"
- },
- "ure": {
- "english_name": "Uru"
- },
- "typ": {
- "english_name": "Thaypan"
- },
- "lre": {
- "english_name": "Laurentian"
- },
- "xtn": {
- "english_name": "Mixtec, Northern Tlaxiaco"
- },
- "puf": {
- "english_name": "Punan Merah"
- },
- "upi": {
- "english_name": "Umeda"
- },
- "igb": {
- "english_name": "Ebira"
- },
- "alc": {
- "english_name": "Qawasqar"
- },
- "nym": {
- "english_name": "Nyamwezi"
- },
- "khn": {
- "english_name": "Khandesi"
- },
- "jsl": {
- "english_name": "Japanese Sign Language"
- },
- "zlq": {
- "english_name": "Zhuang, Liuqian"
- },
- "bzh": {
- "english_name": "Buang, Mapos"
- },
- "xop": {
- "english_name": "Kopar"
- },
- "xkq": {
- "english_name": "Koroni"
- },
- "apn": {
- "english_name": "Apinayé"
- },
- "fmu": {
- "english_name": "Muria, Far Western"
- },
- "gke": {
- "english_name": "Ndai"
- },
- "gdr": {
- "english_name": "Wipi"
- },
- "swl": {
- "english_name": "Swedish Sign Language"
- },
- "lbo": {
- "english_name": "Laven"
- },
- "npi": {
- "english_name": "Nepali (individual language)"
- },
- "yay": {
- "english_name": "Agwagwune"
- },
- "sjs": {
- "english_name": "Senhaja De Srair"
- },
- "sza": {
- "english_name": "Semelai"
- },
- "zlj": {
- "english_name": "Zhuang, Liujiang"
- },
- "xbx": {
- "english_name": "Kabixí"
- },
- "mhq": {
- "english_name": "Mandan"
- },
- "emp": {
- "english_name": "Emberá, Northern"
- },
- "sfs": {
- "english_name": "South African Sign Language"
- },
- "ttd": {
- "english_name": "Tauade"
- },
- "llm": {
- "english_name": "Lasalimu"
- },
- "tqm": {
- "english_name": "Turumsa"
- },
- "ymi": {
- "english_name": "Moji"
- },
- "mqb": {
- "english_name": "Mbuko"
- },
- "lbq": {
- "english_name": "Wampar"
- },
- "dho": {
- "english_name": "Dhodia"
- },
- "sqa": {
- "english_name": "Shama-Sambuga"
- },
- "weh": {
- "english_name": "Weh"
- },
- "mqw": {
- "english_name": "Murupi"
- },
- "ctn": {
- "english_name": "Chhintange"
- },
- "taa": {
- "english_name": "Tanana, Lower"
- },
- "nbd": {
- "english_name": "Ngbinda"
- },
- "ykt": {
- "english_name": "Kathu"
- },
- "ctu": {
- "english_name": "Chol"
- },
- "ngv": {
- "english_name": "Nagumi"
- },
- "kho": {
- "english_name": "Khotanese"
- },
- "lwl": {
- "english_name": "Lawa, Eastern"
- },
- "omi": {
- "english_name": "Omi"
- },
- "bhy": {
- "english_name": "Bhele"
- },
- "an": {
- "english_name": "Aragonese"
- },
- "tes": {
- "english_name": "Tengger"
- },
- "haq": {
- "english_name": "Ha"
- },
- "cja": {
- "english_name": "Cham, Western"
- },
- "alp": {
- "english_name": "Alune"
- },
- "puy": {
- "english_name": "Purisimeño"
- },
- "szl": {
- "english_name": "Silesian"
- },
- "atp": {
- "english_name": "Atta, Pudtol"
- },
- "nal": {
- "english_name": "Nalik"
- },
- "bi": {
- "english_name": "Bislama"
- },
- "tvm": {
- "english_name": "Tela-Masbuar"
- },
- "bph": {
- "english_name": "Botlikh"
- },
- "jit": {
- "english_name": "Jita"
- },
- "pgu": {
- "english_name": "Pagu"
- },
- "ozm": {
- "english_name": "Koonzime"
- },
- "tmw": {
- "english_name": "Temuan"
- },
- "okv": {
- "english_name": "Orokaiva"
- },
- "dth": {
- "english_name": "Adithinngithigh"
- },
- "zeg": {
- "english_name": "Zenag"
- },
- "pap": {
- "english_name": "Papiamento"
- },
- "huk": {
- "english_name": "Hulung"
- },
- "jaf": {
- "english_name": "Jara"
- },
- "yph": {
- "english_name": "Phupha"
- },
- "djd": {
- "english_name": "Djamindjung"
- },
- "sgb": {
- "english_name": "Ayta, Mag-antsi"
- },
- "kru": {
- "english_name": "Kurukh"
- },
- "pmd": {
- "english_name": "Pallanganmiddang"
- },
- "kdw": {
- "english_name": "Koneraw"
- },
- "sui": {
- "english_name": "Suki"
- },
- "dus": {
- "english_name": "Dumi"
- },
- "rga": {
- "english_name": "Roria"
- },
- "ruz": {
- "english_name": "Ruma"
- },
- "niq": {
- "english_name": "Nandi"
- },
- "wat": {
- "english_name": "Kaninuwa"
- },
- "xtj": {
- "english_name": "Mixtec, San Juan Teita"
- },
- "hts": {
- "english_name": "Hadza"
- },
- "roo": {
- "english_name": "Rotokas"
- },
- "txa": {
- "english_name": "Tombonuo"
- },
- "jau": {
- "english_name": "Yaur"
- },
- "wth": {
- "english_name": "Wathawurrung"
- },
- "lzn": {
- "english_name": "Naga, Leinong"
- },
- "boh": {
- "english_name": "Boma"
- },
- "hrp": {
- "english_name": "Nhirrpi"
- },
- "kjr": {
- "english_name": "Kurudu"
- },
- "mit": {
- "english_name": "Mixtec, Southern Puebla"
- },
- "kxk": {
- "english_name": "Karen, Zayein"
- },
- "ssv": {
- "english_name": "Shark Bay"
- },
- "mnu": {
- "english_name": "Mer"
- },
- "wnd": {
- "english_name": "Wandarang"
- },
- "ciw": {
- "english_name": "Chippewa"
- },
- "mqe": {
- "english_name": "Matepi"
- },
- "jbk": {
- "english_name": "Barikewa"
- },
- "raj": {
- "english_name": "Rajasthani"
- },
- "pch": {
- "english_name": "Pardhan"
- },
- "seg": {
- "english_name": "Segeju"
- },
- "loe": {
- "english_name": "Saluan"
- },
- "frs": {
- "english_name": "Frisian, Eastern"
- },
- "neu": {
- "english_name": "Neo"
- },
- "kcr": {
- "english_name": "Katla"
- },
- "dgx": {
- "english_name": "Doghoro"
- },
- "oml": {
- "english_name": "Ombo"
- },
- "vem": {
- "english_name": "Vemgo-Mabas"
- },
- "knq": {
- "english_name": "Kintaq"
- },
- "pad": {
- "english_name": "Paumarí"
- },
- "lts": {
- "english_name": "Tachoni"
- },
- "kae": {
- "english_name": "Ketangalan"
- },
- "twa": {
- "english_name": "Twana"
- },
- "scs": {
- "english_name": "Slavey, North"
- },
- "ill": {
- "english_name": "Iranun"
- },
- "nml": {
- "english_name": "Ndemli"
- },
- "bqt": {
- "english_name": "Bamukumbit"
- },
- "mdk": {
- "english_name": "Mangbutu"
- },
- "bep": {
- "english_name": "Besoa"
- },
- "pmo": {
- "english_name": "Pom"
- },
- "ktj": {
- "english_name": "Krumen, Plapo"
- },
- "knt": {
- "english_name": "Katukína, Panoan"
- },
- "pkn": {
- "english_name": "Pakanha"
- },
- "yol": {
- "english_name": "Yola"
- },
- "try": {
- "english_name": "Turung"
- },
- "ssl": {
- "english_name": "Sisaala, Western"
- },
- "dtk": {
- "english_name": "Dogon, Tene Kan"
- },
- "kwt": {
- "english_name": "Kwesten"
- },
- "pdc": {
- "english_name": "German, Pennsylvania"
- },
- "onj": {
- "english_name": "Onjob"
- },
- "mye": {
- "english_name": "Myene"
- },
- "hhy": {
- "english_name": "Hoyahoya"
- },
- "olk": {
- "english_name": "Olkol"
- },
- "yon": {
- "english_name": "Yongkom"
- },
- "nnq": {
- "english_name": "Ngindo"
- },
- "xuu": {
- "english_name": "Kxoe"
- },
- "pma": {
- "english_name": "Paama"
- },
- "mlk": {
- "english_name": "Ilwana"
- },
- "kkg": {
- "english_name": "Kalinga, Mabaka Valley"
- },
- "tqq": {
- "english_name": "Tunni"
- },
- "nfr": {
- "english_name": "Nafaanra"
- },
- "jaz": {
- "english_name": "Jawe"
- },
- "mjs": {
- "english_name": "Miship"
- },
- "kah": {
- "english_name": "Kara (Central African Republic)"
- },
- "kws": {
- "english_name": "Kwese"
- },
- "seh": {
- "english_name": "Sena"
- },
- "thz": {
- "english_name": "Tamajeq, Tayart"
- },
- "toq": {
- "english_name": "Toposa"
- },
- "mpy": {
- "english_name": "Mapia"
- },
- "kwr": {
- "english_name": "Kwer"
- },
- "eot": {
- "english_name": "Beti (Côte d'Ivoire)"
- },
- "kuh": {
- "english_name": "Kushi"
- },
- "nkp": {
- "english_name": "Niuatoputapu"
- },
- "mgc": {
- "english_name": "Morokodo"
- },
- "st": {
- "english_name": "Sotho, Southern"
- },
- "ots": {
- "english_name": "Otomi, Estado de México"
- },
- "dkk": {
- "english_name": "Dakka"
- },
- "yev": {
- "english_name": "Yapunda"
- },
- "iri": {
- "english_name": "Irigwe"
- },
- "ktm": {
- "english_name": "Kurti"
- },
- "xto": {
- "english_name": "Tokharian A"
- },
- "agg": {
- "english_name": "Angor"
- },
- "bjh": {
- "english_name": "Bahinemo"
- },
- "asg": {
- "english_name": "Cishingini"
- },
- "boe": {
- "english_name": "Mundabli"
- },
- "opa": {
- "english_name": "Okpamheri"
- },
- "aub": {
- "english_name": "Alugu"
- },
- "oac": {
- "english_name": "Oroch"
- },
- "tbg": {
- "english_name": "Tairora, North"
- },
- "dge": {
- "english_name": "Degenan"
- },
- "atu": {
- "english_name": "Reel"
- },
- "lkd": {
- "english_name": "Lakondê"
- },
- "lhi": {
- "english_name": "Lahu Shi"
- },
- "pep": {
- "english_name": "Kunja"
- },
- "sil": {
- "english_name": "Sisaala, Tumulung"
- },
- "luk": {
- "english_name": "Lunanakha"
- },
- "ths": {
- "english_name": "Thakali"
- },
- "itb": {
- "english_name": "Itneg, Binongan"
- },
- "trq": {
- "english_name": "Triqui, San Martín Itunyoso"
- },
- "wdk": {
- "english_name": "Wadikali"
- },
- "akv": {
- "english_name": "Akhvakh"
- },
- "cla": {
- "english_name": "Ron"
- },
- "sk": {
- "english_name": "Slovak",
- "name": "Slovenský"
- },
- "mqs": {
- "english_name": "Makian, West"
- },
- "smz": {
- "english_name": "Simeku"
- },
- "yuw": {
- "english_name": "Yau (Morobe Province)"
- },
- "faz": {
- "english_name": "Fars, Northwestern"
- },
- "mmp": {
- "english_name": "Siawi"
- },
- "tov": {
- "english_name": "Taromi, Upper"
- },
- "elk": {
- "english_name": "Elkei"
- },
- "ztt": {
- "english_name": "Zapotec, Tejalapan"
- },
- "dhx": {
- "english_name": "Dhungaloo"
- },
- "bg": {
- "english_name": "Bulgarian",
- "name": "Български"
- },
- "mxs": {
- "english_name": "Mixtec, Huitepec"
- },
- "ett": {
- "english_name": "Etruscan"
- },
- "nbg": {
- "english_name": "Nagarchal"
- },
- "dkx": {
- "english_name": "Mazagway"
- },
- "kie": {
- "english_name": "Kibet"
- },
- "gww": {
- "english_name": "Kwini"
- },
- "tcp": {
- "english_name": "Chin, Tawr"
- },
- "kyu": {
- "english_name": "Kayah, Western"
- },
- "una": {
- "english_name": "Watut, North"
- },
- "brk": {
- "english_name": "Birked"
- },
- "hoi": {
- "english_name": "Holikachuk"
- },
- "nyi": {
- "english_name": "Ama (Sudan)"
- },
- "mzz": {
- "english_name": "Maiadomu"
- },
- "sez": {
- "english_name": "Chin, Senthang"
- },
- "ksi": {
- "english_name": "Krisa"
- },
- "ktu": {
- "english_name": "Kituba (Democratic Republic of Congo)"
- },
- "giu": {
- "english_name": "Mulao"
- },
- "cot": {
- "english_name": "Caquinte"
- },
- "box": {
- "english_name": "Buamu"
- },
- "wyy": {
- "english_name": "Fijian, Western"
- },
- "tqb": {
- "english_name": "Tembé"
- },
- "prx": {
- "english_name": "Purik"
- },
- "btq": {
- "english_name": "Batek"
- },
- "sbv": {
- "english_name": "Sabine"
- },
- "mko": {
- "english_name": "Mingang Doso"
- },
- "xwt": {
- "english_name": "Wotjobaluk"
- },
- "srt": {
- "english_name": "Sauri"
- },
- "juc": {
- "english_name": "Jurchen"
- },
- "lmp": {
- "english_name": "Limbum"
- },
- "kks": {
- "english_name": "Giiwo"
- },
- "imy": {
- "english_name": "Milyan"
- },
- "nuw": {
- "english_name": "Nguluwan"
- },
- "ach": {
- "english_name": "Acoli"
- },
- "ybo": {
- "english_name": "Yabong"
- },
- "iki": {
- "english_name": "Iko"
- },
- "mco": {
- "english_name": "Mixe, Coatlán"
- },
- "ghe": {
- "english_name": "Ghale, Southern"
- },
- "leb": {
- "english_name": "Lala-Bisa"
- },
- "jqr": {
- "english_name": "Jaqaru"
- },
- "ynl": {
- "english_name": "Yangulam"
- },
- "rmc": {
- "english_name": "Romani, Carpathian"
- },
- "nre": {
- "english_name": "Naga, Southern Rengma"
- },
- "lnb": {
- "english_name": "Mbalanhu"
- },
- "zua": {
- "english_name": "Zeem"
- },
- "plj": {
- "english_name": "Polci"
- },
- "dyb": {
- "english_name": "Dyaberdyaber"
- },
- "bzj": {
- "english_name": "Kriol English, Belize"
- },
- "jua": {
- "english_name": "Júma"
- },
- "kak": {
- "english_name": "Kallahan, Kayapa"
- },
- "ala": {
- "english_name": "Alago"
- },
- "bei": {
- "english_name": "Bekati'"
- },
- "slw": {
- "english_name": "Sialum"
- },
- "bhq": {
- "english_name": "Tukang Besi South"
- },
- "nyu": {
- "english_name": "Nyungwe"
- },
- "sty": {
- "english_name": "Tatar, Siberian"
- },
- "kmn": {
- "english_name": "Awtuw"
- },
- "sop": {
- "english_name": "Songe"
- },
- "aou": {
- "english_name": "A'ou"
- },
- "nne": {
- "english_name": "Ngandyera"
- },
- "bzo": {
- "english_name": "Bozaba"
- },
- "lnj": {
- "english_name": "Leningitij"
- },
- "isu": {
- "english_name": "Isu (Menchum Division)"
- },
- "tsj": {
- "english_name": "Tshangla"
- },
- "hpo": {
- "english_name": "Hpon"
- },
- "yxm": {
- "english_name": "Yinwum"
- },
- "yag": {
- "english_name": "Yámana"
- },
- "cwt": {
- "english_name": "Kuwaataay"
- },
- "tpu": {
- "english_name": "Tampuan"
- },
- "ntj": {
- "english_name": "Ngaanyatjarra"
- },
- "pti": {
- "english_name": "Pintiini"
- },
- "dto": {
- "english_name": "Dogon, Tommo So"
- },
- "vay": {
- "english_name": "Wayu"
- },
- "ban": {
- "english_name": "Balinese"
- },
- "ivv": {
- "english_name": "Ivatan"
- },
- "kfw": {
- "english_name": "Naga, Kharam"
- },
- "gqa": {
- "english_name": "Ga'anda"
- },
- "zgr": {
- "english_name": "Magori"
- },
- "nnw": {
- "english_name": "Nuni, Southern"
- },
- "oyd": {
- "english_name": "Oyda"
- },
- "jhs": {
- "english_name": "Jhankot Sign Language"
- },
- "kxd": {
- "english_name": "Brunei"
- },
- "dkr": {
- "english_name": "Kuijau"
- },
- "lmk": {
- "english_name": "Lamkang"
- },
- "znk": {
- "english_name": "Manangkari"
- },
- "gsn": {
- "english_name": "Gusan"
- },
- "mrx": {
- "english_name": "Maremgi"
- },
- "csb": {
- "english_name": "Kashubian"
- },
- "itw": {
- "english_name": "Ito"
- },
- "gae": {
- "english_name": "Guarequena"
- },
- "obt": {
- "english_name": "Breton, Old"
- },
- "ee": {
- "english_name": "Ewe"
- },
- "mgu": {
- "english_name": "Mailu"
- },
- "pku": {
- "english_name": "Paku"
- },
- "cme": {
- "english_name": "Cerma"
- },
- "srb": {
- "english_name": "Sora"
- },
- "xrd": {
- "english_name": "Gundungurra"
- },
- "aer": {
- "english_name": "Arrernte, Eastern"
- },
- "tnq": {
- "english_name": "Taino"
- },
- "sm": {
- "english_name": "Samoan"
- },
- "yrw": {
- "english_name": "Yarawata"
- },
- "mmu": {
- "english_name": "Mmaala"
- },
- "kva": {
- "english_name": "Bagvalal"
- },
- "eja": {
- "english_name": "Ejamat"
- },
- "amm": {
- "english_name": "Ama (Papua New Guinea)"
- },
- "asr": {
- "english_name": "Asuri"
- },
- "bqm": {
- "english_name": "Wumboko"
- },
- "bxa": {
- "english_name": "Tairaha"
- },
- "de": {
- "english_name": "German",
- "name": "Deutsch"
- },
- "sey": {
- "english_name": "Secoya"
- },
- "pla": {
- "english_name": "Miani"
- },
- "bgd": {
- "english_name": "Bareli, Rathwi"
- },
- "myp": {
- "english_name": "Pirahã"
- },
- "nkh": {
- "english_name": "Naga, Khezha"
- },
- "nqq": {
- "english_name": "Naga, Kyan-Karyaw"
- },
- "gsw": {
- "english_name": "German, Swiss"
- },
- "sjr": {
- "english_name": "Siar-Lak"
- },
- "bkv": {
- "english_name": "Bekwarra"
- },
- "zao": {
- "english_name": "Zapotec, Ozolotepec"
- },
- "ked": {
- "english_name": "Kerewe"
- },
- "lby": {
- "english_name": "Lamu-Lamu"
- },
- "xoc": {
- "english_name": "O'chi'chi'"
- },
- "biw": {
- "english_name": "Kol (Cameroon)"
- },
- "tya": {
- "english_name": "Tauya"
- },
- "bbe": {
- "english_name": "Bangba"
- },
- "pnz": {
- "english_name": "Pana (Central African Republic)"
- },
- "nao": {
- "english_name": "Naaba"
- },
- "qwa": {
- "english_name": "Quechua, Corongo Ancash"
- },
- "tmg": {
- "english_name": "Ternateño"
- },
- "rmt": {
- "english_name": "Domari"
- },
- "ruh": {
- "english_name": "Ruga"
- },
- "ate": {
- "english_name": "Atemble"
- },
- "tsc": {
- "english_name": "Tswa"
- },
- "nwe": {
- "english_name": "Ngwe"
- },
- "bgj": {
- "english_name": "Bangolan"
- },
- "wan": {
- "english_name": "Wan"
- },
- "enc": {
- "english_name": "En"
- },
- "bvm": {
- "english_name": "Bamunka"
- },
- "bvf": {
- "english_name": "Boor"
- },
- "mak": {
- "english_name": "Makasar"
- },
- "dnv": {
- "english_name": "Danu"
- },
- "phl": {
- "english_name": "Phalura"
- },
- "mce": {
- "english_name": "Mixtec, Itundujia"
- },
- "luq": {
- "english_name": "Lucumi"
- },
- "psl": {
- "english_name": "Puerto Rican Sign Language"
- },
- "nbq": {
- "english_name": "Nggem"
- },
- "guq": {
- "english_name": "Aché"
- },
- "blk": {
- "english_name": "Karen, Pa'o"
- },
- "slz": {
- "english_name": "Ma'ya"
- },
- "kkm": {
- "english_name": "Kiong"
- },
- "teq": {
- "english_name": "Temein"
- },
- "lou": {
- "english_name": "Creole French, Louisiana"
- },
- "bza": {
- "english_name": "Bandi"
- },
- "bdj": {
- "english_name": "Bai"
- },
- "plw": {
- "english_name": "Palawano, Brooke's Point"
- },
- "mfp": {
- "english_name": "Malay, Makassar"
- },
- "kia": {
- "english_name": "Kim"
- },
- "kzd": {
- "english_name": "Kadai"
- },
- "xpa": {
- "english_name": "Pirriya"
- },
- "tor": {
- "english_name": "Banda, Togbo-Vara"
- },
- "ksw": {
- "english_name": "Karen, S'gaw"
- },
- "lua": {
- "english_name": "Luba-Lulua"
- },
- "kbn": {
- "english_name": "Kare (Central African Republic)"
- },
- "dma": {
- "english_name": "Duma"
- },
- "mdn": {
- "english_name": "Mbati"
- },
- "mha": {
- "english_name": "Manda (India)"
- },
- "zmd": {
- "english_name": "Maridan"
- },
- "pqm": {
- "english_name": "Malecite-Passamaquoddy"
- },
- "ghc": {
- "english_name": "Gaelic, Hiberno-Scottish"
- },
- "ema": {
- "english_name": "Emai-Iuleha-Ora"
- },
- "ylr": {
- "english_name": "Yalarnnga"
- },
- "aeu": {
- "english_name": "Akeu"
- },
- "njn": {
- "english_name": "Naga, Liangmai"
- },
- "xgw": {
- "english_name": "Guwa"
- },
- "jpr": {
- "english_name": "Judeo-Persian"
- },
- "mbb": {
- "english_name": "Manobo, Western Bukidnon"
- },
- "oty": {
- "english_name": "Tamil, Old"
- },
- "liq": {
- "english_name": "Libido"
- },
- "aib": {
- "english_name": "Ainu (China)"
- },
- "mzt": {
- "english_name": "Mintil"
- },
- "qvz": {
- "english_name": "Quichua, Northern Pastaza"
- },
- "daq": {
- "english_name": "Maria, Dandami"
- },
- "bbm": {
- "english_name": "Babango"
- },
- "crs": {
- "english_name": "Creole French, Seselwa"
- },
- "orc": {
- "english_name": "Orma"
- },
- "liy": {
- "english_name": "Banda-Bambari"
- },
- "teu": {
- "english_name": "Soo"
- },
- "clu": {
- "english_name": "Caluyanun"
- },
- "el": {
- "english_name": "Greek, Modern (1453-)",
- "name": "Ελληνικά"
- },
- "deh": {
- "english_name": "Dehwari"
- },
- "quv": {
- "english_name": "Sacapulteco"
- },
- "plt": {
- "english_name": "Malagasy, Plateau"
- },
- "iws": {
- "english_name": "Iwam, Sepik"
- },
- "qws": {
- "english_name": "Quechua, Sihuas Ancash"
- },
- "pua": {
- "english_name": "Purepecha, Western Highland"
- },
- "orv": {
- "english_name": "Russian, Old"
- },
- "pmt": {
- "english_name": "Tuamotuan"
- },
- "law": {
- "english_name": "Lauje"
- },
- "mzj": {
- "english_name": "Manya"
- },
- "sia": {
- "english_name": "Sami, Akkala"
- },
- "mrr": {
- "english_name": "Maria (India)"
- },
- "mfn": {
- "english_name": "Mbembe, Cross River"
- },
- "bng": {
- "english_name": "Benga"
- },
- "ren": {
- "english_name": "Rengao"
- },
- "dmx": {
- "english_name": "Dema"
- },
- "sht": {
- "english_name": "Shasta"
- },
- "nhh": {
- "english_name": "Nahari"
- },
- "bkg": {
- "english_name": "Buraka"
- },
- "ket": {
- "english_name": "Ket"
- },
- "zam": {
- "english_name": "Zapotec, Miahuatlán"
- },
- "rwo": {
- "english_name": "Rawa"
- },
- "bdu": {
- "english_name": "Oroko"
- },
- "ztp": {
- "english_name": "Zapotec, Loxicha"
- },
- "xnu": {
- "english_name": "Nukunul"
- },
- "tpt": {
- "english_name": "Tepehua, Tlachichilco"
- },
- "mqq": {
- "english_name": "Minokok"
- },
- "saf": {
- "english_name": "Safaliba"
- },
- "hmv": {
- "english_name": "Hmong Dô"
- },
- "hss": {
- "english_name": "Harsusi"
- },
- "bcr": {
- "english_name": "Babine"
- },
- "twy": {
- "english_name": "Tawoyan"
- },
- "ko": {
- "english_name": "Korean",
- "name": "한국어"
- },
- "rwa": {
- "english_name": "Rawo"
- },
- "pro": {
- "english_name": "Provençal, Old (to 1500)"
- },
- "vbb": {
- "english_name": "Babar, Southeast"
- },
- "inp": {
- "english_name": "Iñapari"
- },
- "tpj": {
- "english_name": "Tapieté"
- },
- "stn": {
- "english_name": "Owa"
- },
- "jao": {
- "english_name": "Yanyuwa"
- },
- "mn": {
- "english_name": "Mongolian",
- "name": "Монгол"
- },
- "oog": {
- "english_name": "Ong"
- },
- "abm": {
- "english_name": "Abanyom"
- },
- "yly": {
- "english_name": "Nyâlayu"
- },
- "mde": {
- "english_name": "Maba (Chad)"
- },
- "moh": {
- "english_name": "Mohawk"
- },
- "ica": {
- "english_name": "Ede Ica"
- },
- "urx": {
- "english_name": "Urimo"
- },
- "mcr": {
- "english_name": "Menya"
- },
- "mgn": {
- "english_name": "Mbangi"
- },
- "att": {
- "english_name": "Atta, Pamplona"
- },
- "mfx": {
- "english_name": "Melo"
- },
- "chc": {
- "english_name": "Catawba"
- },
- "kkf": {
- "english_name": "Monpa, Kalaktang"
- },
- "dbd": {
- "english_name": "Dadiya"
- },
- "fuh": {
- "english_name": "Fulfulde, Western Niger"
- },
- "myi": {
- "english_name": "Mina (India)"
- },
- "oav": {
- "english_name": "Avar, Old"
- },
- "ruq": {
- "english_name": "Romanian, Megleno"
- },
- "mrm": {
- "english_name": "Merlav"
- },
- "mmd": {
- "english_name": "Maonan"
- },
- "tbx": {
- "english_name": "Kapin"
- },
- "khj": {
- "english_name": "Kuturmi"
- },
- "dit": {
- "english_name": "Dirari"
- },
- "njr": {
- "english_name": "Njerep"
- },
- "buo": {
- "english_name": "Terei"
- },
- "pip": {
- "english_name": "Pero"
- },
- "ia": {
- "english_name": "Interlingua (International Auxiliary Language Association)"
- },
- "zrp": {
- "english_name": "Zarphatic"
- },
- "ymr": {
- "english_name": "Malasar"
- },
- "mrt": {
- "english_name": "Marghi Central"
- },
- "jnd": {
- "english_name": "Jandavra"
- },
- "tjo": {
- "english_name": "Tamazight, Temacine"
- },
- "quy": {
- "english_name": "Quechua, Ayacucho"
- },
- "emw": {
- "english_name": "Emplawas"
- },
- "vit": {
- "english_name": "Viti"
- },
- "mor": {
- "english_name": "Moro"
- },
- "xsi": {
- "english_name": "Sio"
- },
- "xke": {
- "english_name": "Kereho"
- },
- "tby": {
- "english_name": "Tabaru"
- },
- "gil": {
- "english_name": "Gilbertese"
- },
- "ffi": {
- "english_name": "Foia Foia"
- },
- "lwg": {
- "english_name": "Wanga"
- },
- "tga": {
- "english_name": "Sagalla"
- },
- "bcu": {
- "english_name": "Awad Bing"
- },
- "plg": {
- "english_name": "Pilagá"
- },
- "tpw": {
- "english_name": "Tupí"
- },
- "xad": {
- "english_name": "Adai"
- },
- "pnn": {
- "english_name": "Pinai-Hagahai"
- },
- "jms": {
- "english_name": "Mashi (Nigeria)"
- },
- "kbc": {
- "english_name": "Kadiwéu"
- },
- "stf": {
- "english_name": "Seta"
- },
- "tob": {
- "english_name": "Toba"
- },
- "aqz": {
- "english_name": "Akuntsu"
- },
- "mrz": {
- "english_name": "Marind"
- },
- "bbc": {
- "english_name": "Batak Toba"
- },
- "szb": {
- "english_name": "Ngalum"
- },
- "tml": {
- "english_name": "Citak, Tamnim"
- },
- "gqr": {
- "english_name": "Gor"
- },
- "ntk": {
- "english_name": "Ikoma-Nata-Isenye"
- },
- "mxr": {
- "english_name": "Murik (Malaysia)"
- },
- "jbw": {
- "english_name": "Yawijibaya"
- },
- "alf": {
- "english_name": "Alege"
- },
- "gxx": {
- "english_name": "Wè Southern"
- },
- "ors": {
- "english_name": "Orang Seletar"
- },
- "bfl": {
- "english_name": "Banda-Ndélé"
- },
- "ssd": {
- "english_name": "Siroi"
- },
- "krl": {
- "english_name": "Karelian"
- },
- "thr": {
- "english_name": "Tharu, Rana"
- },
- "mvl": {
- "english_name": "Mbara (Australia)"
- },
- "bwx": {
- "english_name": "Bunu, Bu-Nao"
- },
- "ele": {
- "english_name": "Elepi"
- },
- "myu": {
- "english_name": "Mundurukú"
- },
- "jup": {
- "english_name": "Hupdë"
- },
- "bvh": {
- "english_name": "Bure"
- },
- "odu": {
- "english_name": "Odual"
- },
- "wrv": {
- "english_name": "Waruna"
- },
- "afs": {
- "english_name": "Creole, Afro-Seminole"
- },
- "sws": {
- "english_name": "Seluwasan"
- },
- "anb": {
- "english_name": "Andoa"
- },
- "hmu": {
- "english_name": "Hamap"
- },
- "xng": {
- "english_name": "Mongolian, Middle"
- },
- "cra": {
- "english_name": "Chara"
- },
- "msb": {
- "english_name": "Masbatenyo"
- },
- "uda": {
- "english_name": "Uda"
- },
- "gdg": {
- "english_name": "Ga'dang"
- },
- "tkr": {
- "english_name": "Tsakhur"
- },
- "onr": {
- "english_name": "One, Northern"
- },
- "hbu": {
- "english_name": "Habu"
- },
- "abb": {
- "english_name": "Bankon"
- },
- "suc": {
- "english_name": "Subanon, Western"
- },
- "lmc": {
- "english_name": "Limilngan"
- },
- "thi": {
- "english_name": "Tai Long"
- },
- "pmf": {
- "english_name": "Pamona"
- },
- "umn": {
- "english_name": "Naga, Makyan"
- },
- "xla": {
- "english_name": "Kamula"
- },
- "wam": {
- "english_name": "Wampanoag"
- },
- "ghh": {
- "english_name": "Ghale, Northern"
- },
- "fut": {
- "english_name": "Futuna-Aniwa"
- },
- "sck": {
- "english_name": "Sadri"
- },
- "sd": {
- "english_name": "Sindhi"
- },
- "xrt": {
- "english_name": "Aranama-Tamique"
- },
- "ahk": {
- "english_name": "Akha"
- },
- "dja": {
- "english_name": "Djadjawurrung"
- },
- "kyn": {
- "english_name": "Binukidnon, Northern"
- },
- "ymd": {
- "english_name": "Muda"
- },
- "afh": {
- "english_name": "Afrihili"
- },
- "tba": {
- "english_name": "Aikanã"
- },
- "ebr": {
- "english_name": "Ebrié"
- },
- "asz": {
- "english_name": "As"
- },
- "pkr": {
- "english_name": "Kurumba, Attapady"
- },
- "gss": {
- "english_name": "Greek Sign Language"
- },
- "xwc": {
- "english_name": "Woccon"
- },
- "tmk": {
- "english_name": "Tamang, Northwestern"
- },
- "kyw": {
- "english_name": "Kudmali"
- },
- "acv": {
- "english_name": "Achumawi"
- },
- "goc": {
- "english_name": "Gorakor"
- },
- "mqu": {
- "english_name": "Mandari"
- },
- "lrt": {
- "english_name": "Malay, Larantuka"
- },
- "lda": {
- "english_name": "Kla-Dan"
- },
- "jeg": {
- "english_name": "Jeng"
- },
- "kym": {
- "english_name": "Kpatili"
- },
- "sbe": {
- "english_name": "Saliba"
- },
- "swp": {
- "english_name": "Suau"
- },
- "raq": {
- "english_name": "Saam"
- },
- "mxe": {
- "english_name": "Mele-Fila"
- },
- "mfg": {
- "english_name": "Mogofin"
- },
- "ygu": {
- "english_name": "Yugul"
- },
- "yur": {
- "english_name": "Yurok"
- },
- "rki": {
- "english_name": "Rakhine"
- },
- "kpd": {
- "english_name": "Koba"
- },
- "pev": {
- "english_name": "Pémono"
- },
- "ndw": {
- "english_name": "Ndobo"
- },
- "mid": {
- "english_name": "Mandaic"
- },
- "eze": {
- "english_name": "Uzekwe"
- },
- "kny": {
- "english_name": "Kanyok"
- },
- "kwh": {
- "english_name": "Kowiai"
- },
- "thn": {
- "english_name": "Thachanadan"
- },
- "rdb": {
- "english_name": "Rudbari"
- },
- "dib": {
- "english_name": "Dinka, South Central"
- },
- "wed": {
- "english_name": "Wedau"
- },
- "zpr": {
- "english_name": "Zapotec, Santiago Xanica"
- },
- "nyx": {
- "english_name": "Nganyaywana"
- },
- "plz": {
- "english_name": "Paluan"
- },
- "pop": {
- "english_name": "Pwapwâ"
- },
- "msx": {
- "english_name": "Moresada"
- },
- "tgo": {
- "english_name": "Sudest"
- },
- "gaf": {
- "english_name": "Gende"
- },
- "gew": {
- "english_name": "Gera"
- },
- "dhm": {
- "english_name": "Zemba"
- },
- "tbh": {
- "english_name": "Thurawal"
- },
- "asq": {
- "english_name": "Austrian Sign Language"
- },
- "uha": {
- "english_name": "Uhami"
- },
- "chb": {
- "english_name": "Chibcha"
- },
- "awt": {
- "english_name": "Araweté"
- },
- "mho": {
- "english_name": "Mashi (Zambia)"
- },
- "ibb": {
- "english_name": "Ibibio"
- },
- "klx": {
- "english_name": "Koluwawa"
- },
- "msj": {
- "english_name": "Ma (Democratic Republic of Congo)"
- },
- "acq": {
- "english_name": "Arabic, Ta'izzi-Adeni"
- },
- "ggk": {
- "english_name": "Kungarakany"
- },
- "szg": {
- "english_name": "Sengele"
- },
- "igl": {
- "english_name": "Igala"
- },
- "kxu": {
- "english_name": "Kui (India)"
- },
- "slr": {
- "english_name": "Salar"
- },
- "cnl": {
- "english_name": "Chinantec, Lalana"
- },
- "kfb": {
- "english_name": "Kolami, Northwestern"
- },
- "pao": {
- "english_name": "Paiute, Northern"
- },
- "rnp": {
- "english_name": "Rongpo"
- },
- "kph": {
- "english_name": "Kplang"
- },
- "kzi": {
- "english_name": "Kelabit"
- },
- "asp": {
- "english_name": "Algerian Sign Language"
- },
- "yxu": {
- "english_name": "Yuyu"
- },
- "waa": {
- "english_name": "Walla Walla"
- },
- "cms": {
- "english_name": "Messapic"
- },
- "skr": {
- "english_name": "Seraiki"
- },
- "nak": {
- "english_name": "Nakanai"
- },
- "zpt": {
- "english_name": "Zapotec, San Vicente Coatlán"
- },
- "tgy": {
- "english_name": "Togoyo"
- },
- "vto": {
- "english_name": "Vitou"
- },
- "bof": {
- "english_name": "Bolon"
- },
- "awv": {
- "english_name": "Awyu, Jair"
- },
- "smj": {
- "english_name": "Lule Sami"
- },
- "csd": {
- "english_name": "Chiangmai Sign Language"
- },
- "amu": {
- "english_name": "Amuzgo, Guerrero"
- },
- "xtw": {
- "english_name": "Tawandê"
- },
- "onb": {
- "english_name": "Lingao"
- },
- "ttt": {
- "english_name": "Tat, Muslim"
- },
- "biq": {
- "english_name": "Bipi"
- },
- "mbw": {
- "english_name": "Maring"
- },
- "ybk": {
- "english_name": "Bokha"
- },
- "umc": {
- "english_name": "Marrucinian"
- },
- "bnx": {
- "english_name": "Bangubangu"
- },
- "ve": {
- "english_name": "Venda",
- "name": "Venda"
- },
- "xnb": {
- "english_name": "Kanakanabu"
- },
- "yup": {
- "english_name": "Yukpa"
- },
- "jiv": {
- "english_name": "Shuar"
- },
- "sry": {
- "english_name": "Sera"
- },
- "xrq": {
- "english_name": "Karranga"
- },
- "gjm": {
- "english_name": "Gunditjmara"
- },
- "byw": {
- "english_name": "Belhariya"
- },
- "kux": {
- "english_name": "Kukatja"
- },
- "win": {
- "english_name": "Ho-Chunk"
- },
- "mep": {
- "english_name": "Miriwung"
- },
- "oin": {
- "english_name": "One, Inebu"
- },
- "htx": {
- "english_name": "Hittite, Middle"
- },
- "cuv": {
- "english_name": "Cuvok"
- },
- "cod": {
- "english_name": "Cocama-Cocamilla"
- },
- "tow": {
- "english_name": "Jemez"
- },
- "ekp": {
- "english_name": "Ekpeye"
- },
- "qui": {
- "english_name": "Quileute"
- },
- "vmf": {
- "english_name": "Mainfränkisch"
- },
- "li": {
- "english_name": "Limburgan"
- },
- "med": {
- "english_name": "Melpa"
- },
- "xed": {
- "english_name": "Hdi"
- },
- "hgm": {
- "english_name": "Hai//om"
- },
- "syl": {
- "english_name": "Sylheti"
- },
- "aur": {
- "english_name": "Aruek"
- },
- "alt": {
- "english_name": "Altai, Southern"
- },
- "kna": {
- "english_name": "Dera (Nigeria)"
- },
- "yud": {
- "english_name": "Arabic, Judeo-Tripolitanian"
- },
- "afi": {
- "english_name": "Akrukay"
- },
- "bku": {
- "english_name": "Buhid"
- },
- "yeu": {
- "english_name": "Yerukula"
- },
- "gwc": {
- "english_name": "Kalami"
- },
- "hwa": {
- "english_name": "Wané"
- },
- "klz": {
- "english_name": "Kabola"
- },
- "kzo": {
- "english_name": "Kaningi"
- },
- "ngs": {
- "english_name": "Gvoko"
- },
- "bbr": {
- "english_name": "Girawa"
- },
- "as": {
- "english_name": "Assamese"
- },
- "qun": {
- "english_name": "Quinault"
- },
- "tbj": {
- "english_name": "Tiang"
- },
- "snv": {
- "english_name": "Sa'ban"
- },
- "tcd": {
- "english_name": "Tafi"
- },
- "ndn": {
- "english_name": "Ngundi"
- },
- "uku": {
- "english_name": "Ukue"
- },
- "cde": {
- "english_name": "Chenchu"
- },
- "nwr": {
- "english_name": "Nawaru"
- },
- "wgo": {
- "english_name": "Waigeo"
- },
- "afe": {
- "english_name": "Putukwam"
- },
- "mou": {
- "english_name": "Mogum"
- },
- "dbj": {
- "english_name": "Ida'an"
- },
- "dbf": {
- "english_name": "Edopi"
- },
- "nch": {
- "english_name": "Nahuatl, Central Huasteca"
- },
- "bsi": {
- "english_name": "Bassossi"
- },
- "jng": {
- "english_name": "Yangman"
- },
- "geq": {
- "english_name": "Geme"
- },
- "cjv": {
- "english_name": "Chuave"
- },
- "khv": {
- "english_name": "Khvarshi"
- },
- "llh": {
- "english_name": "Lamu"
- },
- "bxd": {
- "english_name": "Pela"
- },
- "ush": {
- "english_name": "Ushojo"
- },
- "zyp": {
- "english_name": "Chin, Zyphe"
- },
- "okg": {
- "english_name": "Koko Babangk"
- },
- "tkp": {
- "english_name": "Tikopia"
- },
- "kql": {
- "english_name": "Kyenele"
- },
- "spl": {
- "english_name": "Selepet"
- },
- "mer": {
- "english_name": "Meru"
- },
- "csy": {
- "english_name": "Chin, Siyin"
- },
- "abw": {
- "english_name": "Pal"
- },
- "bn": {
- "english_name": "Bengali",
- "name": "বাংলা"
- },
- "puc": {
- "english_name": "Punan Merap"
- },
- "xte": {
- "english_name": "Ketengban"
- },
- "lwh": {
- "english_name": "Lachi, White"
- },
- "mlc": {
- "english_name": "Cao Lan"
- },
- "nlg": {
- "english_name": "Gela"
- },
- "onu": {
- "english_name": "Unua"
- },
- "uzn": {
- "english_name": "Uzbek, Northern"
- },
- "mvg": {
- "english_name": "Mixtec, Yucuañe"
- },
- "miz": {
- "english_name": "Mixtec, Coatzospan"
- },
- "inn": {
- "english_name": "Isinai"
- },
- "ofo": {
- "english_name": "Ofo"
- },
- "kuo": {
- "english_name": "Kumukio"
- },
- "isg": {
- "english_name": "Irish Sign Language"
- },
- "bsc": {
- "english_name": "Bassari"
- },
- "ula": {
- "english_name": "Fungwa"
- },
- "djo": {
- "english_name": "Jangkang"
- },
- "lfa": {
- "english_name": "Lefa"
- },
- "ddr": {
- "english_name": "Dhudhuroa"
- },
- "dbb": {
- "english_name": "Deno"
- },
- "jet": {
- "english_name": "Manem"
- },
- "kfu": {
- "english_name": "Katkari"
- },
- "bxc": {
- "english_name": "Molengue"
- },
- "sni": {
- "english_name": "Sensi"
- },
- "ase": {
- "english_name": "American Sign Language"
- },
- "nby": {
- "english_name": "Ningera"
- },
- "kuk": {
- "english_name": "Kepo'"
- },
- "noj": {
- "english_name": "Nonuya"
- },
- "bvp": {
- "english_name": "Bumang"
- },
- "myw": {
- "english_name": "Muyuw"
- },
- "zbw": {
- "english_name": "Berawan, West"
- },
- "bjb": {
- "english_name": "Banggarla"
- },
- "ffm": {
- "english_name": "Fulfulde, Maasina"
- },
- "ijn": {
- "english_name": "Kalabari"
- },
- "rmh": {
- "english_name": "Murkim"
- },
- "nxm": {
- "english_name": "Numidian"
- },
- "tpr": {
- "english_name": "Tuparí"
- },
- "hul": {
- "english_name": "Hula"
- },
- "bqa": {
- "english_name": "Tchumbuli"
- },
- "kmc": {
- "english_name": "Dong, Southern"
- },
- "jus": {
- "english_name": "Jumla Sign Language"
- },
- "zqe": {
- "english_name": "Zhuang, Qiubei"
- },
- "wms": {
- "english_name": "Wambon"
- },
- "sej": {
- "english_name": "Sene"
- },
- "nsr": {
- "english_name": "Maritime Sign Language"
- },
- "jib": {
- "english_name": "Jibu"
- },
- "dip": {
- "english_name": "Dinka, Northeastern"
- },
- "mae": {
- "english_name": "Bo-Rukul"
- },
- "smx": {
- "english_name": "Samba"
- },
- "ikx": {
- "english_name": "Ik"
- },
- "baj": {
- "english_name": "Barakai"
- },
- "apc": {
- "english_name": "Arabic, North Levantine"
- },
- "kby": {
- "english_name": "Kanuri, Manga"
- },
- "czo": {
- "english_name": "Chinese, Min Zhong"
- },
- "hop": {
- "english_name": "Hopi"
- },
- "sgj": {
- "english_name": "Surgujia"
- },
- "ldh": {
- "english_name": "Lamja-Dengsa-Tola"
- },
- "ulm": {
- "english_name": "Ulumanda'"
- },
- "da": {
- "english_name": "Danish",
- "name": "Dansk"
- },
- "psy": {
- "english_name": "Piscataway"
- },
- "ahb": {
- "english_name": "Axamb"
- },
- "nkv": {
- "english_name": "Nyika (Malawi and Zambia)"
- },
- "doi": {
- "english_name": "Dogri (macrolanguage)"
- },
- "pmq": {
- "english_name": "Pame, Northern"
- },
- "tdf": {
- "english_name": "Talieng"
- },
- "zwa": {
- "english_name": "Zay"
- },
- "scv": {
- "english_name": "Sheni"
- },
- "xcb": {
- "english_name": "Cumbric"
- },
- "scx": {
- "english_name": "Sicel"
- },
- "ihw": {
- "english_name": "Bidhawal"
- },
- "bqj": {
- "english_name": "Bandial"
- },
- "nga": {
- "english_name": "Ngbaka"
- },
- "nbs": {
- "english_name": "Namibian Sign Language"
- },
- "soj": {
- "english_name": "Soi"
- },
- "row": {
- "english_name": "Dela-Oenale"
- },
- "hbs": {
- "english_name": "Serbo-Croatian"
- },
- "sug": {
- "english_name": "Suganga"
- },
- "ztx": {
- "english_name": "Zapotec, Zaachila"
- },
- "lpo": {
- "english_name": "Lipo"
- },
- "hvn": {
- "english_name": "Sabu"
- },
- "unr": {
- "english_name": "Mundari"
- },
- "adi": {
- "english_name": "Adi"
- },
- "gox": {
- "english_name": "Gobu"
- },
- "qyp": {
- "english_name": "Quiripi"
- },
- "nxd": {
- "english_name": "Ngando (Democratic Republic of Congo)"
- },
- "goy": {
- "english_name": "Goundo"
- },
- "gse": {
- "english_name": "Ghanaian Sign Language"
- },
- "kda": {
- "english_name": "Worimi"
- },
- "wbh": {
- "english_name": "Wanda"
- },
- "hro": {
- "english_name": "Haroi"
- },
- "lvs": {
- "english_name": "Latvian, Standard"
- },
- "dol": {
- "english_name": "Doso"
- },
- "hwc": {
- "english_name": "Creole English, Hawai'i"
- },
- "maw": {
- "english_name": "Mampruli"
- },
- "syb": {
- "english_name": "Subanen, Central"
- },
- "lsa": {
- "english_name": "Lasgerdi"
- },
- "mwp": {
- "english_name": "Kala Lagaw Ya"
- },
- "wlg": {
- "english_name": "Kunbarlang"
- },
- "xbr": {
- "english_name": "Kambera"
- },
- "mau": {
- "english_name": "Mazatec, Huautla"
- },
- "kid": {
- "english_name": "Koshin"
- },
- "aaz": {
- "english_name": "Amarasi"
- },
- "kzx": {
- "english_name": "Kamarian"
- },
- "tro": {
- "english_name": "Naga, Tarao"
- },
- "vmb": {
- "english_name": "Barbaram"
- },
- "cbb": {
- "english_name": "Cabiyarí"
- },
- "enf": {
- "english_name": "Enets, Forest"
- },
- "dgu": {
- "english_name": "Degaru"
- },
- "kju": {
- "english_name": "Kashaya"
- },
- "kre": {
- "english_name": "Panará"
- },
- "kaq": {
- "english_name": "Capanahua"
- },
- "ojg": {
- "english_name": "Ojibwa, Eastern"
- },
- "tgs": {
- "english_name": "Nume"
- },
- "pax": {
- "english_name": "Pankararé"
- },
- "mwk": {
- "english_name": "Maninkakan, Kita"
- },
- "woi": {
- "english_name": "Kamang"
- },
- "kun": {
- "english_name": "Kunama"
- },
- "dis": {
- "english_name": "Dimasa"
- },
- "cad": {
- "english_name": "Caddo"
- },
- "odt": {
- "english_name": "Dutch, Old"
- },
- "mgg": {
- "english_name": "Mpumpong"
- },
- "lue": {
- "english_name": "Luvale"
- },
- "frk": {
- "english_name": "Frankish"
- },
- "aye": {
- "english_name": "Ayere"
- },
- "loa": {
- "english_name": "Loloda"
- },
- "kjc": {
- "english_name": "Konjo, Coastal"
- },
- "dpp": {
- "english_name": "Papar"
- },
- "ymo": {
- "english_name": "Yangum Mon"
- },
- "kce": {
- "english_name": "Kaivi"
- },
- "mhy": {
- "english_name": "Ma'anyan"
- },
- "jig": {
- "english_name": "Djingili"
- },
- "gol": {
- "english_name": "Gola"
- },
- "mza": {
- "english_name": "Mixtec, Santa María Zacatepec"
- },
- "bdl": {
- "english_name": "Bajau, Indonesian"
- },
- "btt": {
- "english_name": "Bete-Bendi"
- },
- "lg": {
- "english_name": "Ganda"
- },
- "gbm": {
- "english_name": "Garhwali"
- },
- "xut": {
- "english_name": "Kuthant"
- },
- "cas": {
- "english_name": "Tsimané"
- },
- "mig": {
- "english_name": "Mixtec, San Miguel El Grande"
- },
- "chw": {
- "english_name": "Chuwabu"
- },
- "tvk": {
- "english_name": "Ambrym, Southeast"
- },
- "dna": {
- "english_name": "Dani, Upper Grand Valley"
- },
- "pau": {
- "english_name": "Palauan"
- },
- "flr": {
- "english_name": "Fuliiru"
- },
- "gdq": {
- "english_name": "Mehri"
- },
- "sii": {
- "english_name": "Shom Peng"
- },
- "gbb": {
- "english_name": "Kaytetye"
- },
- "yii": {
- "english_name": "Yidiny"
- },
- "nnd": {
- "english_name": "Ambae, West"
- },
- "drg": {
- "english_name": "Rungus"
- },
- "gza": {
- "english_name": "Ganza"
- },
- "nyk": {
- "english_name": "Nyaneka"
- },
- "pht": {
- "english_name": "Phu Thai"
- },
- "myr": {
- "english_name": "Muniche"
- },
- "boz": {
- "english_name": "Bozo, Tiéyaxo"
- },
- "vnp": {
- "english_name": "Vunapu"
- },
- "niu": {
- "english_name": "Niuean"
- },
- "zik": {
- "english_name": "Zimakani"
- },
- "diq": {
- "english_name": "Dimli (individual language)"
- },
- "oru": {
- "english_name": "Ormuri"
- },
- "mzq": {
- "english_name": "Mori Atas"
- },
- "tgh": {
- "english_name": "Creole English, Tobagonian"
- },
- "wbv": {
- "english_name": "Wajarri"
- },
- "lrn": {
- "english_name": "Lorang"
- },
- "waf": {
- "english_name": "Wakoná"
- },
- "mte": {
- "english_name": "Mono (Solomon Islands)"
- },
- "hns": {
- "english_name": "Hindustani, Caribbean"
- },
- "xrr": {
- "english_name": "Raetic"
- },
- "grz": {
- "english_name": "Guramalum"
- },
- "toz": {
- "english_name": "To"
- },
- "lei": {
- "english_name": "Lemio"
- },
- "mso": {
- "english_name": "Mombum"
- },
- "tra": {
- "english_name": "Tirahi"
- },
- "adg": {
- "english_name": "Andegerebinha"
- },
- "oyb": {
- "english_name": "Oy"
- },
- "mds": {
- "english_name": "Maria (Papua New Guinea)"
- },
- "upv": {
- "english_name": "Uripiv-Wala-Rano-Atchin"
- },
- "cbr": {
- "english_name": "Cashibo-Cacataibo"
- },
- "kmk": {
- "english_name": "Kalinga, Limos"
- },
- "oua": {
- "english_name": "Tagargrent"
- },
- "oui": {
- "english_name": "Uighur, Old"
- },
- "slq": {
- "english_name": "Salchuq"
- },
- "tvu": {
- "english_name": "Tunen"
- },
- "loz": {
- "english_name": "Lozi"
- },
- "kvc": {
- "english_name": "Kove"
- },
- "tys": {
- "english_name": "Tày Sa Pa"
- },
- "sxr": {
- "english_name": "Saaroa"
- },
- "xmq": {
- "english_name": "Kuku-Mangk"
- },
- "bfg": {
- "english_name": "Kayan, Busang"
- },
- "mbu": {
- "english_name": "Mbula-Bwazza"
- },
- "ykn": {
- "english_name": "Kua-nsi"
- },
- "bkj": {
- "english_name": "Pande"
- },
- "ega": {
- "english_name": "Ega"
- },
- "wes": {
- "english_name": "Pidgin, Cameroon"
- },
- "kbu": {
- "english_name": "Kabutra"
- },
- "dsh": {
- "english_name": "Daasanach"
- },
- "wnn": {
- "english_name": "Wunumara"
- },
- "raz": {
- "english_name": "Rahambuu"
- },
- "bej": {
- "english_name": "Beja"
- },
- "put": {
- "english_name": "Putoh"
- },
- "bas": {
- "english_name": "Basa (Cameroon)"
- },
- "mtd": {
- "english_name": "Mualang"
- },
- "ihb": {
- "english_name": "Iha Based Pidgin"
- },
- "kcq": {
- "english_name": "Kamo"
- },
- "blx": {
- "english_name": "Ayta, Mag-Indi"
- },
- "sbi": {
- "english_name": "Seti"
- },
- "ojw": {
- "english_name": "Ojibwa, Western"
- },
- "gry": {
- "english_name": "Grebo, Barclayville"
- },
- "pmr": {
- "english_name": "Paynamar"
- },
- "nkb": {
- "english_name": "Naga, Khoibu"
- },
- "sba": {
- "english_name": "Ngambay"
- },
- "avm": {
- "english_name": "Angkamuthi"
- },
- "ryu": {
- "english_name": "Okinawan, Central"
- },
- "irk": {
- "english_name": "Iraqw"
- },
- "rmv": {
- "english_name": "Romanova"
- },
- "kxt": {
- "english_name": "Koiwat"
- },
- "nek": {
- "english_name": "Neku"
- },
- "xku": {
- "english_name": "Kaamba"
- },
- "szp": {
- "english_name": "Suabo"
- },
- "uum": {
- "english_name": "Urum"
- },
- "nvo": {
- "english_name": "Nyokon"
- },
- "gkn": {
- "english_name": "Gokana"
- },
- "ii": {
- "english_name": "Yi, Sichuan"
- },
- "xkv": {
- "english_name": "Kgalagadi"
- },
- "mgj": {
- "english_name": "Abureni"
- },
- "ig": {
- "english_name": "Igbo"
- },
- "ukh": {
- "english_name": "Ukhwejo"
- },
- "lki": {
- "english_name": "Laki"
- },
- "lil": {
- "english_name": "Lillooet"
- },
- "kxz": {
- "english_name": "Kerewo"
- },
- "yaw": {
- "english_name": "Yawalapití"
- },
- "wmh": {
- "english_name": "Waima'a"
- },
- "kps": {
- "english_name": "Tehit"
- },
- "gcr": {
- "english_name": "Creole French, Guianese"
- },
- "bvd": {
- "english_name": "Baeggu"
- },
- "bjr": {
- "english_name": "Binumarien"
- },
- "llx": {
- "english_name": "Lauan"
- },
- "kyi": {
- "english_name": "Kiput"
- },
- "awa": {
- "english_name": "Awadhi"
- },
- "mpe": {
- "english_name": "Majang"
- },
- "mlu": {
- "english_name": "To'abaita"
- },
- "bux": {
- "english_name": "Boghom"
- },
- "ong": {
- "english_name": "Olo"
- },
- "mbj": {
- "english_name": "Nadëb"
- },
- "yub": {
- "english_name": "Yugambal"
- },
- "mrl": {
- "english_name": "Mortlockese"
- },
- "tav": {
- "english_name": "Tatuyo"
- },
- "umd": {
- "english_name": "Umbindhamu"
- },
- "ncd": {
- "english_name": "Nachering"
- },
- "les": {
- "english_name": "Lese"
- },
- "yet": {
- "english_name": "Yetfa"
- },
- "agm": {
- "english_name": "Angaataha"
- },
- "the": {
- "english_name": "Tharu, Chitwania"
- },
- "lix": {
- "english_name": "Liabuku"
- },
- "qvp": {
- "english_name": "Quechua, Pacaraos"
- },
- "eno": {
- "english_name": "Enggano"
- },
- "pcn": {
- "english_name": "Piti"
- },
- "gyg": {
- "english_name": "Gbayi"
- },
- "gok": {
- "english_name": "Gowli"
- },
- "bpo": {
- "english_name": "Anasi"
- },
- "mwm": {
- "english_name": "Sar"
- },
- "ptu": {
- "english_name": "Bambam"
- },
- "meu": {
- "english_name": "Motu"
- },
- "gvs": {
- "english_name": "Gumawana"
- },
- "ckn": {
- "english_name": "Chin, Kaang"
- },
- "nrl": {
- "english_name": "Ngarluma"
- },
- "mqj": {
- "english_name": "Mamasa"
- },
- "mea": {
- "english_name": "Menka"
- },
- "kzf": {
- "english_name": "Kaili, Da'a"
- },
- "lla": {
- "english_name": "Lala-Roba"
- },
- "wae": {
- "english_name": "Walser"
- },
- "nny": {
- "english_name": "Nyangga"
- },
- "kpf": {
- "english_name": "Komba"
- },
- "wut": {
- "english_name": "Wutung"
- },
- "aii": {
- "english_name": "Neo-Aramaic, Assyrian"
- },
- "urv": {
- "english_name": "Uruava"
- },
- "six": {
- "english_name": "Sumau"
- },
- "ngo": {
- "english_name": "Ngoni"
- },
- "nod": {
- "english_name": "Thai, Northern"
- },
- "mdg": {
- "english_name": "Massalat"
- },
- "lew": {
- "english_name": "Kaili, Ledo"
- },
- "lzl": {
- "english_name": "Litzlitz"
- },
- "kld": {
- "english_name": "Gamilaraay"
- },
- "ksg": {
- "english_name": "Kusaghe"
- },
- "qup": {
- "english_name": "Quechua, Southern Pastaza"
- },
- "wud": {
- "english_name": "Wudu"
- },
- "pbp": {
- "english_name": "Badyara"
- },
- "ohu": {
- "english_name": "Hungarian, Old"
- },
- "say": {
- "english_name": "Saya"
- },
- "nse": {
- "english_name": "Nsenga"
- },
- "mlw": {
- "english_name": "Moloko"
- },
- "ktp": {
- "english_name": "Kaduo"
- },
- "zum": {
- "english_name": "Kumzari"
- },
- "urf": {
- "english_name": "Uradhi"
- },
- "ako": {
- "english_name": "Akurio"
- },
- "pny": {
- "english_name": "Pinyin"
- },
- "kxn": {
- "english_name": "Melanau, Kanowit-Tanjong"
- },
- "msr": {
- "english_name": "Mongolian Sign Language"
- },
- "bgt": {
- "english_name": "Bughotu"
- },
- "aho": {
- "english_name": "Ahom"
- },
- "rys": {
- "english_name": "Yaeyama"
- },
- "bot": {
- "english_name": "Bongo"
- },
- "gus": {
- "english_name": "Guinean Sign Language"
- },
- "ssj": {
- "english_name": "Sausi"
- },
- "kqo": {
- "english_name": "Krahn, Eastern"
- },
- "mwi": {
- "english_name": "Labo"
- },
- "faf": {
- "english_name": "Fagani"
- },
- "bdx": {
- "english_name": "Budong-Budong"
- },
- "mnd": {
- "english_name": "Mondé"
- },
- "neb": {
- "english_name": "Toura (Côte d'Ivoire)"
- },
- "hmf": {
- "english_name": "Hmong Don"
- },
- "agk": {
- "english_name": "Agta, Isarog"
- },
- "nts": {
- "english_name": "Natagaimas"
- },
- "mkn": {
- "english_name": "Malay, Kupang"
- },
- "nty": {
- "english_name": "Mantsi"
- },
- "zpf": {
- "english_name": "Zapotec, San Pedro Quiatoni"
- },
- "ers": {
- "english_name": "Ersu"
- },
- "cle": {
- "english_name": "Chinantec, Lealao"
- },
- "xhc": {
- "english_name": "Hunnic"
- },
- "xpy": {
- "english_name": "Puyo"
- },
- "fia": {
- "english_name": "Nobiin"
- },
- "yko": {
- "english_name": "Yasa"
- },
- "nug": {
- "english_name": "Nungali"
- },
- "tof": {
- "english_name": "Gizrra"
- },
- "mzo": {
- "english_name": "Matipuhy"
- },
- "sln": {
- "english_name": "Salinan"
- },
- "sjm": {
- "english_name": "Mapun"
- },
- "ngw": {
- "english_name": "Ngwaba"
- },
- "zmy": {
- "english_name": "Mariyedi"
- },
- "gbl": {
- "english_name": "Gamit"
- },
- "lad": {
- "english_name": "Ladino"
- },
- "bhe": {
- "english_name": "Bhaya"
- },
- "xpe": {
- "english_name": "Kpelle, Liberia"
- },
- "tg": {
- "english_name": "Tajik"
- },
- "xpc": {
- "english_name": "Pecheneg"
- },
- "chj": {
- "english_name": "Chinantec, Ojitlán"
- },
- "kfr": {
- "english_name": "Kachchi"
- },
- "ero": {
- "english_name": "Horpa"
- },
- "mrs": {
- "english_name": "Maragus"
- },
- "ntu": {
- "english_name": "Natügu"
- },
- "abg": {
- "english_name": "Abaga"
- },
- "pon": {
- "english_name": "Pohnpeian"
- },
- "mzc": {
- "english_name": "Madagascar Sign Language"
- },
- "pre": {
- "english_name": "Principense"
- },
- "dtr": {
- "english_name": "Lotud"
- },
- "lun": {
- "english_name": "Lunda"
- },
- "bpg": {
- "english_name": "Bonggo"
- },
- "bee": {
- "english_name": "Byangsi"
- },
- "oum": {
- "english_name": "Ouma"
- },
- "dir": {
- "english_name": "Dirim"
- },
- "sxu": {
- "english_name": "Saxon, Upper"
- },
- "kfq": {
- "english_name": "Korku"
- },
- "ald": {
- "english_name": "Alladian"
- },
- "kkc": {
- "english_name": "Odoodee"
- },
- "kza": {
- "english_name": "Karaboro, Western"
- },
- "rmi": {
- "english_name": "Lomavren"
- },
- "pwo": {
- "english_name": "Karen, Pwo Western"
- },
- "krf": {
- "english_name": "Koro (Vanuatu)"
- },
- "kky": {
- "english_name": "Guguyimidjir"
- },
- "hz": {
- "english_name": "Herero"
- },
- "snz": {
- "english_name": "Sinsauru"
- },
- "ecr": {
- "english_name": "Eteocretan"
- },
- "nas": {
- "english_name": "Naasioi"
- },
- "kyj": {
- "english_name": "Karao"
- },
- "tge": {
- "english_name": "Tamang, Eastern Gorkha"
- },
- "nou": {
- "english_name": "Ewage-Notu"
- },
- "ixl": {
- "english_name": "Ixil"
- },
- "llq": {
- "english_name": "Lolak"
- },
- "dtt": {
- "english_name": "Dogon, Toro Tegu"
- },
- "hms": {
- "english_name": "Miao, Southern Qiandong"
- },
- "lrg": {
- "english_name": "Laragia"
- },
- "nbv": {
- "english_name": "Ngamambo"
- },
- "skj": {
- "english_name": "Seke (Nepal)"
- },
- "frq": {
- "english_name": "Forak"
- },
- "kqs": {
- "english_name": "Kissi, Northern"
- },
- "fan": {
- "english_name": "Fang (Equatorial Guinea)"
- },
- "nhf": {
- "english_name": "Nhuwala"
- },
- "eth": {
- "english_name": "Ethiopian Sign Language"
- },
- "swm": {
- "english_name": "Samosa"
- },
- "ywl": {
- "english_name": "Lalu, Western"
- },
- "mpt": {
- "english_name": "Mian"
- },
- "dv": {
- "english_name": "Dhivehi"
- },
- "orw": {
- "english_name": "Oro Win"
- },
- "mlh": {
- "english_name": "Mape"
- },
- "xcu": {
- "english_name": "Curonian"
- },
- "nin": {
- "english_name": "Ninzo"
- },
- "cen": {
- "english_name": "Cen"
- },
- "dam": {
- "english_name": "Damakawa"
- },
- "jrt": {
- "english_name": "Jorto"
- },
- "wok": {
- "english_name": "Longto"
- },
- "mmw": {
- "english_name": "Emae"
- },
- "bfu": {
- "english_name": "Gahri"
- },
- "beh": {
- "english_name": "Biali"
- },
- "kbj": {
- "english_name": "Kari"
- },
- "ksu": {
- "english_name": "Khamyang"
- },
- "mxp": {
- "english_name": "Mixe, Tlahuitoltepec"
- },
- "ygp": {
- "english_name": "Gepo"
- },
- "he": {
- "english_name": "Hebrew",
- "name": "עברית"
- },
- "inh": {
- "english_name": "Ingush"
- },
- "phk": {
- "english_name": "Phake"
- },
- "sgc": {
- "english_name": "Kipsigis"
- },
- "noi": {
- "english_name": "Noiri"
- },
- "xbm": {
- "english_name": "Breton, Middle"
- },
- "krn": {
- "english_name": "Sapo"
- },
- "pbo": {
- "english_name": "Papel"
- },
- "nli": {
- "english_name": "Grangali"
- },
- "frm": {
- "english_name": "French, Middle (ca. 1400-1600)"
- },
- "urr": {
- "english_name": "Lehalurup"
- },
- "zkg": {
- "english_name": "Koguryo"
- },
- "xpu": {
- "english_name": "Punic"
- },
- "pie": {
- "english_name": "Piro"
- },
- "pfe": {
- "english_name": "Peere"
- },
- "ral": {
- "english_name": "Ralte"
- },
- "luj": {
- "english_name": "Luna"
- },
- "wiy": {
- "english_name": "Wiyot"
- },
- "tpo": {
- "english_name": "Tai Pao"
- },
- "sjl": {
- "english_name": "Sajalong"
- },
- "nix": {
- "english_name": "Hema"
- },
- "axg": {
- "english_name": "Arára, Mato Grosso"
- },
- "kve": {
- "english_name": "Kalabakan"
- },
- "lor": {
- "english_name": "Téén"
- },
- "goq": {
- "english_name": "Gorap"
- },
- "ted": {
- "english_name": "Krumen, Tepo"
- },
- "ddj": {
- "english_name": "Jaru"
- },
- "ayy": {
- "english_name": "Ayta, Tayabas"
- },
- "tno": {
- "english_name": "Toromono"
- },
- "bkp": {
- "english_name": "Boko (Democratic Republic of Congo)"
- },
- "mqi": {
- "english_name": "Mariri"
- },
- "kdp": {
- "english_name": "Kaningdon-Nindem"
- },
- "pac": {
- "english_name": "Pacoh"
- },
- "cfg": {
- "english_name": "Como Karim"
- },
- "huc": {
- "english_name": "=/Hua"
- },
- "mgk": {
- "english_name": "Mawes"
- },
- "xtl": {
- "english_name": "Mixtec, Tijaltepec"
- },
- "bjz": {
- "english_name": "Baruga"
- },
- "xkx": {
- "english_name": "Karore"
- },
- "svr": {
- "english_name": "Savara"
- },
- "mwe": {
- "english_name": "Mwera (Chimwera)"
- },
- "dji": {
- "english_name": "Djinang"
- },
- "kl": {
- "english_name": "Kalaallisut"
- },
- "kjs": {
- "english_name": "Kewa, East"
- },
- "nki": {
- "english_name": "Naga, Thangal"
- },
- "twb": {
- "english_name": "Tawbuid, Western"
- },
- "sqq": {
- "english_name": "Sou"
- },
- "nso": {
- "english_name": "Pedi",
- "name": "Pedi"
- },
- "kzb": {
- "english_name": "Kaibobo"
- },
- "lto": {
- "english_name": "Tsotso"
- },
- "weu": {
- "english_name": "Chin, Rawngtu"
- },
- "bft": {
- "english_name": "Balti"
- },
- "lax": {
- "english_name": "Tiwa"
- },
- "jgb": {
- "english_name": "Ngbee"
- },
- "hbb": {
- "english_name": "Huba"
- },
- "yra": {
- "english_name": "Yerakai"
- },
- "rac": {
- "english_name": "Rasawa"
- },
- "ctg": {
- "english_name": "Chittagonian"
- },
- "tvl": {
- "english_name": "Tuvalu"
- },
- "kpt": {
- "english_name": "Karata"
- },
- "bhv": {
- "english_name": "Bahau"
- },
- "pbs": {
- "english_name": "Pame, Central"
- },
- "lce": {
- "english_name": "Loncong"
- },
- "myy": {
- "english_name": "Macuna"
- },
- "awr": {
- "english_name": "Awera"
- },
- "brv": {
- "english_name": "Bru, Western"
- },
- "bio": {
- "english_name": "Nai"
- },
- "shd": {
- "english_name": "Kundal Shahi"
- },
- "zmf": {
- "english_name": "Mfinu"
- },
- "aoa": {
- "english_name": "Angolar"
- },
- "ats": {
- "english_name": "Gros Ventre"
- },
- "doz": {
- "english_name": "Dorze"
- },
- "acn": {
- "english_name": "Achang"
- },
- "smn": {
- "english_name": "Sami, Inari"
- },
- "pwb": {
- "english_name": "Panawa"
- },
- "xfa": {
- "english_name": "Faliscan"
- },
- "tjm": {
- "english_name": "Timucua"
- },
- "wtk": {
- "english_name": "Watakataui"
- },
- "bzf": {
- "english_name": "Boikin"
- },
- "sfb": {
- "english_name": "Langue des signes de Belgique Francophone"
- },
- "clw": {
- "english_name": "Chulym"
- },
- "mum": {
- "english_name": "Maiwala"
- },
- "ksa": {
- "english_name": "Shuwa-Zamani"
- },
- "bcj": {
- "english_name": "Bardi"
- },
- "pto": {
- "english_name": "Zo'é"
- },
- "jgk": {
- "english_name": "Gwak"
- },
- "ncu": {
- "english_name": "Chumburung"
- },
- "usi": {
- "english_name": "Usui"
- },
- "nhd": {
- "english_name": "Chiripá"
- },
- "wiv": {
- "english_name": "Vitu"
- },
- "mkb": {
- "english_name": "Mal Paharia"
- },
- "atm": {
- "english_name": "Ata"
- },
- "wrw": {
- "english_name": "Gugu Warra"
- },
- "tkt": {
- "english_name": "Tharu, Kathoriya"
- },
- "msk": {
- "english_name": "Mansaka"
- },
- "oke": {
- "english_name": "Okpe (Southwestern Edo)"
- },
- "nun": {
- "english_name": "Anong"
- },
- "ajp": {
- "english_name": "Arabic, South Levantine"
- },
- "bov": {
- "english_name": "Tuwuli"
- },
- "xub": {
- "english_name": "Kurumba, Betta"
- },
- "yby": {
- "english_name": "Yaweyuha"
- },
- "toj": {
- "english_name": "Tojolabal"
- },
- "nyf": {
- "english_name": "Giryama"
- },
- "xhv": {
- "english_name": "Khua"
- },
- "koo": {
- "english_name": "Konzo"
- },
- "nhv": {
- "english_name": "Nahuatl, Temascaltepec"
- },
- "jrb": {
- "english_name": "Judeo-Arabic"
- },
- "bgq": {
- "english_name": "Bagri"
- },
- "quc": {
- "english_name": "K'iche'"
- },
- "kqj": {
- "english_name": "Koromira"
- },
- "ved": {
- "english_name": "Veddah"
- },
- "mwa": {
- "english_name": "Mwatebu"
- },
- "mxz": {
- "english_name": "Masela, Central"
- },
- "ojb": {
- "english_name": "Ojibwa, Northwestern"
- },
- "dmu": {
- "english_name": "Dubu"
- },
- "zkd": {
- "english_name": "Kadu"
- },
- "vas": {
- "english_name": "Vasavi"
- },
- "pom": {
- "english_name": "Pomo, Southeastern"
- },
- "cte": {
- "english_name": "Chinantec, Tepinapa"
- },
- "aby": {
- "english_name": "Aneme Wake"
- },
- "mkk": {
- "english_name": "Byep"
- },
- "dak": {
- "english_name": "Dakota"
- },
- "swx": {
- "english_name": "Suruahá"
- },
- "xas": {
- "english_name": "Kamas"
- },
- "rei": {
- "english_name": "Reli"
- },
- "taj": {
- "english_name": "Tamang, Eastern"
- },
- "zma": {
- "english_name": "Manda (Australia)"
- },
- "nri": {
- "english_name": "Naga, Chokri"
- },
- "sqt": {
- "english_name": "Soqotri"
- },
- "gag": {
- "english_name": "Gagauz"
- },
- "oda": {
- "english_name": "Odut"
- },
- "lsl": {
- "english_name": "Latvian Sign Language"
- },
- "bzn": {
- "english_name": "Boano (Maluku)"
- },
- "blb": {
- "english_name": "Bilua"
- },
- "fuj": {
- "english_name": "Ko"
- },
- "mkg": {
- "english_name": "Mak (China)"
- },
- "yea": {
- "english_name": "Ravula"
- },
- "ybe": {
- "english_name": "Yugur, West"
- },
- "czn": {
- "english_name": "Chatino, Zenzontepec"
- },
- "qxp": {
- "english_name": "Quechua, Puno"
- },
- "mrv": {
- "english_name": "Mangareva"
- },
- "bfj": {
- "english_name": "Bafanji"
- },
- "bkr": {
- "english_name": "Bakumpai"
- },
- "bwc": {
- "english_name": "Bwile"
- },
- "dgt": {
- "english_name": "Ndra'ngith"
- },
- "kbz": {
- "english_name": "Duhwa"
- },
- "mts": {
- "english_name": "Yora"
- },
- "vrs": {
- "english_name": "Varisi"
- },
- "gqi": {
- "english_name": "Guiqiong"
- },
- "rn": {
- "english_name": "Rundi"
- },
- "oka": {
- "english_name": "Okanagan"
- },
- "jmc": {
- "english_name": "Machame"
- },
- "lur": {
- "english_name": "Laura"
- },
- "bcb": {
- "english_name": "Bainouk-Samik"
- },
- "pui": {
- "english_name": "Puinave"
- },
- "nnm": {
- "english_name": "Namia"
- },
- "kov": {
- "english_name": "Kudu-Camo"
- },
- "ycp": {
- "english_name": "Chepya"
- },
- "yah": {
- "english_name": "Yazgulyam"
- },
- "ifm": {
- "english_name": "Teke-Fuumu"
- },
- "agx": {
- "english_name": "Aghul"
- },
- "omo": {
- "english_name": "Utarmbung"
- },
- "nnc": {
- "english_name": "Nancere"
- },
- "bys": {
- "english_name": "Burak"
- },
- "str": {
- "english_name": "Salish, Straits"
- },
- "oco": {
- "english_name": "Cornish, Old"
- },
- "prn": {
- "english_name": "Prasuni"
- },
- "wmb": {
- "english_name": "Wambaya"
- },
- "cdz": {
- "english_name": "Koda"
- },
- "mif": {
- "english_name": "Mofu-Gudur"
- },
- "bta": {
- "english_name": "Bata"
- },
- "lpa": {
- "english_name": "Lelepa"
- },
- "csj": {
- "english_name": "Chin, Songlai"
- },
- "kum": {
- "english_name": "Kumyk"
- },
- "app": {
- "english_name": "Apma"
- },
- "kse": {
- "english_name": "Kuni"
- },
- "mag": {
- "english_name": "Magahi"
- },
- "yua": {
- "english_name": "Yucateco"
- },
- "sbd": {
- "english_name": "Samo, Southern"
- },
- "mpb": {
- "english_name": "Mullukmulluk"
- },
- "xwr": {
- "english_name": "Kwerba Mamberamo"
- },
- "ahr": {
- "english_name": "Ahirani"
- },
- "rmp": {
- "english_name": "Rempi"
- },
- "veo": {
- "english_name": "Ventureño"
- },
- "eit": {
- "english_name": "Eitiep"
- },
- "apy": {
- "english_name": "Apalaí"
- },
- "pbf": {
- "english_name": "Popoloca, Coyotepec"
- },
- "tbz": {
- "english_name": "Ditammari"
- },
- "rim": {
- "english_name": "Nyaturu"
- },
- "mpq": {
- "english_name": "Matís"
- },
- "yda": {
- "english_name": "Yanda"
- },
- "ist": {
- "english_name": "Istriot"
- },
- "mxt": {
- "english_name": "Mixtec, Jamiltepec"
- },
- "swg": {
- "english_name": "Swabian"
- },
- "bwd": {
- "english_name": "Bwaidoka"
- },
- "zgm": {
- "english_name": "Zhuang, Minz"
- },
- "ysp": {
- "english_name": "Lolopo, Southern"
- },
- "ksc": {
- "english_name": "Kalinga, Southern"
- },
- "xkh": {
- "english_name": "Karahawyana"
- },
- "tfo": {
- "english_name": "Tefaro"
- },
- "rmu": {
- "english_name": "Romani, Tavringer"
- },
- "xjb": {
- "english_name": "Minjungbal"
- },
- "tbd": {
- "english_name": "Kaki Ae"
- },
- "kyb": {
- "english_name": "Kalinga, Butbut"
- },
- "doc": {
- "english_name": "Dong, Northern"
- },
- "rsi": {
- "english_name": "Rennellese Sign Language"
- },
- "otn": {
- "english_name": "Otomi, Tenango"
- },
- "nwg": {
- "english_name": "Ngayawung"
- },
- "xdy": {
- "english_name": "Dayak, Malayic"
- },
- "njx": {
- "english_name": "Kunyi"
- },
- "sxc": {
- "english_name": "Sicanian"
- },
- "aoe": {
- "english_name": "Angal Enen"
- },
- "gdh": {
- "english_name": "Gadjerawang"
- },
- "tn": {
- "english_name": "Tswana"
- },
- "pnh": {
- "english_name": "Penrhyn"
- },
- "mvv": {
- "english_name": "Murut, Tagal"
- },
- "kvf": {
- "english_name": "Kabalai"
- },
- "etb": {
- "english_name": "Etebi"
- },
- "sel": {
- "english_name": "Selkup"
- },
- "tcu": {
- "english_name": "Tarahumara, Southeastern"
- },
- "bjp": {
- "english_name": "Fanamaket"
- },
- "aft": {
- "english_name": "Afitti"
- },
- "kje": {
- "english_name": "Kisar"
- },
- "xud": {
- "english_name": "Umiida"
- },
- "yac": {
- "english_name": "Yali, Pass Valley"
- },
- "amz": {
- "english_name": "Atampaya"
- },
- "ekk": {
- "english_name": "Estonian, Standard"
- },
- "npl": {
- "english_name": "Nahuatl, Southeastern Puebla"
- },
- "bjy": {
- "english_name": "Bayali"
- },
- "xai": {
- "english_name": "Kaimbé"
- },
- "mxg": {
- "english_name": "Mbangala"
- },
- "jac": {
- "english_name": "Popti'"
- },
- "luu": {
- "english_name": "Lumba-Yakkha"
- },
- "cko": {
- "english_name": "Anufo"
- },
- "kxl": {
- "english_name": "Kurux, Nepali"
- },
- "mtt": {
- "english_name": "Mota"
- },
- "tgp": {
- "english_name": "Tangoa"
- },
- "oti": {
- "english_name": "Oti"
- },
- "bqq": {
- "english_name": "Biritai"
- },
- "sur": {
- "english_name": "Mwaghavul"
- },
- "nus": {
- "english_name": "Nuer"
- },
- "miu": {
- "english_name": "Mixtec, Cacaloxtepec"
- },
- "gel": {
- "english_name": "ut-Ma'in"
- },
- "yij": {
- "english_name": "Yindjibarndi"
- },
- "ypo": {
- "english_name": "Phola, Alo"
- },
- "mxj": {
- "english_name": "Miju-Mishmi"
- },
- "jni": {
- "english_name": "Janji"
- },
- "mwv": {
- "english_name": "Mentawai"
- },
- "ncb": {
- "english_name": "Nicobarese, Central"
- },
- "wwr": {
- "english_name": "Warrwa"
- },
- "scg": {
- "english_name": "Sanggau"
- },
- "ncm": {
- "english_name": "Nambo"
- },
- "ari": {
- "english_name": "Arikara"
- },
- "lmo": {
- "english_name": "Lombard"
- },
- "ibl": {
- "english_name": "Ibaloi"
- },
- "yil": {
- "english_name": "Yindjilandji"
- },
- "tls": {
- "english_name": "Tambotalo"
- },
- "lcm": {
- "english_name": "Tungag"
- },
- "xeg": {
- "english_name": "//Xegwi"
- },
- "zak": {
- "english_name": "Zanaki"
- },
- "izz": {
- "english_name": "Izii"
- },
- "wnm": {
- "english_name": "Wanggamala"
- },
- "mda": {
- "english_name": "Mada (Nigeria)"
- },
- "nuu": {
- "english_name": "Ngbundu"
- },
- "sri": {
- "english_name": "Siriano"
- },
- "ahn": {
- "english_name": "Àhàn"
- },
- "myb": {
- "english_name": "Mbay"
- },
- "acs": {
- "english_name": "Acroá"
- },
- "bld": {
- "english_name": "Bolango"
- },
- "boi": {
- "english_name": "Barbareño"
- },
- "nef": {
- "english_name": "Nefamese"
- },
- "cu": {
- "english_name": "Slavic, Church"
- },
- "kpa": {
- "english_name": "Kutto"
- },
- "kfj": {
- "english_name": "Kemiehua"
- },
- "nyr": {
- "english_name": "Nyiha (Malawi)"
- },
- "tou": {
- "english_name": "Tho"
- },
- "ssx": {
- "english_name": "Samberigi"
- },
- "myh": {
- "english_name": "Makah"
- },
- "vsl": {
- "english_name": "Venezuelan Sign Language"
- },
- "atq": {
- "english_name": "Aralle-Tabulahan"
- },
- "kuc": {
- "english_name": "Kwinsu"
- },
- "pid": {
- "english_name": "Piaroa"
- },
- "emy": {
- "english_name": "Mayan, Epigraphic"
- },
- "kxx": {
- "english_name": "Likuba"
- },
- "hik": {
- "english_name": "Seit-Kaitetu"
- },
- "kmp": {
- "english_name": "Gimme"
- },
- "ljl": {
- "english_name": "Li'o"
- },
- "syi": {
- "english_name": "Seki"
- },
- "bxv": {
- "english_name": "Berakou"
- },
- "cjs": {
- "english_name": "Shor"
- },
- "hhr": {
- "english_name": "Kerak"
- },
- "apl": {
- "english_name": "Apache, Lipan"
- },
- "vmi": {
- "english_name": "Miwa"
- },
- "oia": {
- "english_name": "Oirata"
- },
- "ihp": {
- "english_name": "Iha"
- },
- "ssf": {
- "english_name": "Thao"
- },
- "gn": {
- "english_name": "Guarani"
- },
- "yiq": {
- "english_name": "Miqie"
- },
- "cdy": {
- "english_name": "Chadong"
- },
- "hbn": {
- "english_name": "Heiban"
- },
- "efi": {
- "english_name": "Efik"
- },
- "new": {
- "english_name": "Newari"
- },
- "tlv": {
- "english_name": "Taliabu"
- },
- "zka": {
- "english_name": "Kaimbulawa"
- },
- "sbk": {
- "english_name": "Safwa"
- },
- "dtd": {
- "english_name": "Ditidaht"
- },
- "ggg": {
- "english_name": "Gurgula"
- },
- "ncg": {
- "english_name": "Nisga'a"
- },
- "pgl": {
- "english_name": "Irish, Primitive"
- },
- "tsz": {
- "english_name": "Purepecha"
- },
- "tlf": {
- "english_name": "Telefol"
- },
- "nke": {
- "english_name": "Duke"
- },
- "daw": {
- "english_name": "Davawenyo"
- },
- "xrg": {
- "english_name": "Minang"
- },
- "nco": {
- "english_name": "Sibe"
- },
- "jui": {
- "english_name": "Ngadjuri"
- },
- "ng": {
- "english_name": "Ndonga"
- },
- "zoh": {
- "english_name": "Zoque, Chimalapa"
- },
- "mjg": {
- "english_name": "Tu"
- },
- "ur": {
- "english_name": "Urdu"
- },
- "kli": {
- "english_name": "Kalumpang"
- },
- "atz": {
- "english_name": "Arta"
- },
- "cic": {
- "english_name": "Chickasaw"
- },
- "lmb": {
- "english_name": "Merei"
- },
- "ecs": {
- "english_name": "Ecuadorian Sign Language"
- },
- "ywq": {
- "english_name": "Yi, Wuding-Luquan"
- },
- "lri": {
- "english_name": "Marachi"
- },
- "xvs": {
- "english_name": "Vestinian"
- },
- "mwx": {
- "english_name": "Mediak"
- },
- "haa": {
- "english_name": "Han"
- },
- "iru": {
- "english_name": "Irula"
- },
- "gbu": {
- "english_name": "Gagadu"
- },
- "bzd": {
- "english_name": "Bribri"
- },
- "xip": {
- "english_name": "Xipináwa"
- },
- "jnj": {
- "english_name": "Yemsa"
- },
- "bmt": {
- "english_name": "Biao Mon"
- },
- "tli": {
- "english_name": "Tlingit"
- },
- "pcp": {
- "english_name": "Pacahuara"
- },
- "rma": {
- "english_name": "Rama"
- },
- "kdf": {
- "english_name": "Mamusi"
- },
- "bga": {
- "english_name": "Gwamhi-Wuri"
- },
- "jns": {
- "english_name": "Jaunsari"
- },
- "apx": {
- "english_name": "Aputai"
- },
- "dbg": {
- "english_name": "Dogon, Dogul Dom"
- },
- "nii": {
- "english_name": "Nii"
- },
- "aip": {
- "english_name": "Burumakok"
- },
- "swk": {
- "english_name": "Sena, Malawi"
- },
- "koc": {
- "english_name": "Kpati"
- },
- "clk": {
- "english_name": "Idu-Mishmi"
- },
- "lcd": {
- "english_name": "Lola"
- },
- "msz": {
- "english_name": "Momare"
- },
- "baf": {
- "english_name": "Nubaca"
- },
- "too": {
- "english_name": "Totonac, Xicotepec De Juárez"
- },
- "gej": {
- "english_name": "Gen"
- },
- "tcw": {
- "english_name": "Totonac, Tecpatlán"
- },
- "xns": {
- "english_name": "Kanashi"
- },
- "dje": {
- "english_name": "Zarma"
- },
- "skb": {
- "english_name": "Saek"
- },
- "erg": {
- "english_name": "Sie"
- },
- "xod": {
- "english_name": "Kokoda"
- },
- "abv": {
- "english_name": "Arabic, Baharna"
- },
- "iqw": {
- "english_name": "Ikwo"
- },
- "nmu": {
- "english_name": "Maidu, Northeast"
- },
- "pkc": {
- "english_name": "Paekche"
- },
- "nop": {
- "english_name": "Numanggang"
- },
- "mkl": {
- "english_name": "Mokole"
- },
- "blc": {
- "english_name": "Bella Coola"
- },
- "bgu": {
- "english_name": "Mbongno"
- },
- "mqm": {
- "english_name": "Marquesan, South"
- },
- "gwg": {
- "english_name": "Moo"
- },
- "kzy": {
- "english_name": "Kango (Tshopo District)"
- },
- "ywr": {
- "english_name": "Yawuru"
- },
- "osc": {
- "english_name": "Oscan"
- },
- "khy": {
- "english_name": "Kele (Democratic Republic of Congo)"
- },
- "kef": {
- "english_name": "Kpessi"
- },
- "kwv": {
- "english_name": "Sara Kaba Náà"
- },
- "svx": {
- "english_name": "Skalvian"
- },
- "rwm": {
- "english_name": "Amba (Uganda)"
- },
- "sdf": {
- "english_name": "Sarli"
- },
- "wtm": {
- "english_name": "Mewati"
- },
- "ikt": {
- "english_name": "Inuinnaqtun"
- },
- "pdu": {
- "english_name": "Kayan"
- },
- "fcs": {
- "english_name": "Quebec Sign Language"
- },
- "ott": {
- "english_name": "Otomi, Temoaya"
- },
- "nyn": {
- "english_name": "Nyankole"
- },
- "scu": {
- "english_name": "Shumcho"
- },
- "pwg": {
- "english_name": "Gapapaiwa"
- },
- "wbp": {
- "english_name": "Warlpiri"
- },
- "pmk": {
- "english_name": "Pamlico"
- },
- "olr": {
- "english_name": "Olrat"
- },
- "huj": {
- "english_name": "Hmong, Northern Guiyang"
- },
- "cek": {
- "english_name": "Chin, Eastern Khumi"
- },
- "ena": {
- "english_name": "Apali"
- },
- "txn": {
- "english_name": "Tarangan, West"
- },
- "kng": {
- "english_name": "Koongo"
- },
- "njs": {
- "english_name": "Nisa"
- },
- "mes": {
- "english_name": "Masmaje"
- },
- "sth": {
- "english_name": "Shelta"
- },
- "pia": {
- "english_name": "Pima Bajo"
- },
- "zmn": {
- "english_name": "Mbangwe"
- },
- "mvn": {
- "english_name": "Minaveha"
- },
- "tcb": {
- "english_name": "Tanacross"
- },
- "mcm": {
- "english_name": "Creole Portuguese, Malaccan"
- },
- "umr": {
- "english_name": "Umbugarla"
- },
- "msv": {
- "english_name": "Maslam"
- },
- "xul": {
- "english_name": "Ngunawal"
- },
- "dop": {
- "english_name": "Lukpa"
- },
- "txs": {
- "english_name": "Tonsea"
- },
- "onp": {
- "english_name": "Sartang"
- },
- "yzk": {
- "english_name": "Zokhuo"
- },
- "ank": {
- "english_name": "Goemai"
- }
- },
- "yahoo": [
- "ar",
- "bg",
- "cs",
- "da",
- "de",
- "el",
- "en",
- "es",
- "et",
- "fi",
- "fr",
- "he",
- "hr",
- "hu",
- "it",
- "ja",
- "ko",
- "lt",
- "lv",
- "nl",
- "no",
- "pl",
- "pt",
- "ro",
- "ru",
- "sk",
- "sl",
- "sv",
- "th",
- "tr",
- "zh-CHS",
- "zh-CHT"
- ],
- "swisscows": [],
- "wikipedia": {
- "nl": {
- "articles": 1954031,
- "english_name": "Dutch",
- "name": "Nederlands"
- },
- "ceb": {
- "articles": 5376890,
- "english_name": "Cebuano",
- "name": "Sinugboanong Binisaya"
- },
- "jam": {
- "articles": 1632,
- "english_name": "Jamaican Patois",
- "name": "Jumiekan Kryuol"
- },
- "crh": {
- "articles": 6172,
- "english_name": "Crimean Tatar",
- "name": "Qırımtatarca"
- },
- "st": {
- "articles": 544,
- "english_name": "Sesotho",
- "name": "Sesotho"
- },
- "id": {
- "articles": 449446,
- "english_name": "Indonesian",
- "name": "Bahasa Indonesia"
- },
- "szl": {
- "articles": 7812,
- "english_name": "Silesian",
- "name": "Ślůnski"
- },
- "zh-yue": {
- "articles": 70490,
- "english_name": "Cantonese",
- "name": "粵語"
- },
- "ca": {
- "articles": 599790,
- "english_name": "Catalan",
- "name": "Català"
- },
- "ab": {
- "articles": 3452,
- "english_name": "Abkhazian",
- "name": "Аҧсуа"
- },
- "lad": {
- "articles": 3828,
- "english_name": "Ladino",
- "name": "Dzhudezmo"
- },
- "rue": {
- "articles": 6891,
- "english_name": "Rusyn",
- "name": "Русиньскый"
- },
- "om": {
- "articles": 775,
- "english_name": "Oromo",
- "name": "Oromoo"
- },
- "azb": {
- "articles": 118928,
- "english_name": "South Azerbaijani",
- "name": "تۆرکجه"
- },
- "sr": {
- "articles": 614180,
- "english_name": "Serbian",
- "name": "Српски / Srpski"
- },
- "tg": {
- "articles": 96078,
- "english_name": "Tajik",
- "name": "Тоҷикӣ"
- },
- "ee": {
- "articles": 350,
- "english_name": "Ewe",
- "name": "Eʋegbe"
- },
- "hsb": {
- "articles": 13357,
- "english_name": "Upper Sorbian",
- "name": "Hornjoserbsce"
- },
- "pag": {
- "articles": 2521,
- "english_name": "Pangasinan",
- "name": "Pangasinan"
- },
- "tyv": {
- "articles": 1738,
- "english_name": "Tuvan",
- "name": "Тыва"
- },
- "got": {
- "articles": 588,
- "english_name": "Gothic",
- "name": "𐌲𐌿𐍄𐌹𐍃𐌺"
- },
- "ss": {
- "articles": 450,
- "english_name": "Swati",
- "name": "SiSwati"
- },
- "stq": {
- "articles": 3998,
- "english_name": "Saterland Frisian",
- "name": "Seeltersk"
- },
- "is": {
- "articles": 46096,
- "english_name": "Icelandic",
- "name": "Íslenska"
- },
- "az": {
- "articles": 141672,
- "english_name": "Azerbaijani",
- "name": "Azərbaycanca"
- },
- "vec": {
- "articles": 11266,
- "english_name": "Venetian",
- "name": "Vèneto"
- },
- "na": {
- "articles": 1305,
- "english_name": "Nauruan",
- "name": "dorerin Naoero"
- },
- "an": {
- "articles": 34148,
- "english_name": "Aragonese",
- "name": "Aragonés"
- },
- "tk": {
- "articles": 5514,
- "english_name": "Turkmen",
- "name": "Türkmen"
- },
- "zea": {
- "articles": 4580,
- "english_name": "Zeelandic",
- "name": "Zeêuws"
- },
- "la": {
- "articles": 129779,
- "english_name": "Latin",
- "name": "Latina"
- },
- "kv": {
- "articles": 5308,
- "english_name": "Komi",
- "name": "Коми"
- },
- "vo": {
- "articles": 122174,
- "english_name": "Volapük",
- "name": "Volapük"
- },
- "el": {
- "articles": 157114,
- "english_name": "Greek",
- "name": "Ελληνικά"
- },
- "hu": {
- "articles": 442291,
- "english_name": "Hungarian",
- "name": "Magyar"
- },
- "bi": {
- "articles": 1179,
- "english_name": "Bislama",
- "name": "Bislama"
- },
- "fr": {
- "articles": 2070378,
- "english_name": "French",
- "name": "Français"
- },
- "th": {
- "articles": 128977,
- "english_name": "Thai",
- "name": "ไทย"
- },
- "zh": {
- "articles": 1038913,
- "english_name": "Chinese",
- "name": "中文"
- },
- "de": {
- "articles": 2256718,
- "english_name": "German",
- "name": "Deutsch"
- },
- "pms": {
- "articles": 64391,
- "english_name": "Piedmontese",
- "name": "Piemontèis"
- },
- "gn": {
- "articles": 3637,
- "english_name": "Guarani",
- "name": "Avañe'ẽ"
- },
- "lo": {
- "articles": 3101,
- "english_name": "Lao",
- "name": "ລາວ"
- },
- "bxr": {
- "articles": 2124,
- "english_name": "Buryat",
- "name": "Буряад"
- },
- "ast": {
- "articles": 99530,
- "english_name": "Asturian",
- "name": "Asturianu"
- },
- "wo": {
- "articles": 1177,
- "english_name": "Wolof",
- "name": "Wolof"
- },
- "pap": {
- "articles": 1953,
- "english_name": "Papiamentu",
- "name": "Papiamentu"
- },
- "fa": {
- "articles": 655431,
- "english_name": "Persian",
- "name": "فارسی"
- },
- "roa-tara": {
- "articles": 9243,
- "english_name": "Tarantino",
- "name": "Tarandíne"
- },
- "af": {
- "articles": 68807,
- "english_name": "Afrikaans",
- "name": "Afrikaans"
- },
- "lbe": {
- "articles": 1216,
- "english_name": "Lak",
- "name": "Лакку"
- },
- "frp": {
- "articles": 3254,
- "english_name": "Franco-Provençal",
- "name": "Arpitan"
- },
- "mt": {
- "articles": 3336,
- "english_name": "Maltese",
- "name": "Malti"
- },
- "bcl": {
- "articles": 8664,
- "english_name": "Central Bicolano",
- "name": "Bikol"
- },
- "bh": {
- "articles": 6686,
- "english_name": "Bihari",
- "name": "भोजपुरी"
- },
- "csb": {
- "articles": 5258,
- "english_name": "Kashubian",
- "name": "Kaszëbsczi"
- },
- "scn": {
- "articles": 26060,
- "english_name": "Sicilian",
- "name": "Sicilianu"
- },
- "sw": {
- "articles": 47744,
- "english_name": "Swahili",
- "name": "Kiswahili"
- },
- "kw": {
- "articles": 3839,
- "english_name": "Cornish",
- "name": "Kernewek/Karnuack"
- },
- "lrc": {
- "articles": 5357,
- "english_name": "Northern Luri",
- "name": "لۊری شومالی"
- },
- "wa": {
- "articles": 14790,
- "english_name": "Walloon",
- "name": "Walon"
- },
- "arz": {
- "articles": 20166,
- "english_name": "Egyptian Arabic",
- "name": "مصرى (Maṣri)"
- },
- "pfl": {
- "articles": 2502,
- "english_name": "Palatinate German",
- "name": "Pälzisch"
- },
- "tt": {
- "articles": 82594,
- "english_name": "Tatar",
- "name": "Tatarça / Татарча"
- },
- "ks": {
- "articles": 324,
- "english_name": "Kashmiri",
- "name": "कश्मीरी / كشميري"
- },
- "srn": {
- "articles": 1061,
- "english_name": "Sranan",
- "name": "Sranantongo"
- },
- "lfn": {
- "articles": 3083,
- "english_name": "Lingua Franca Nova",
- "name": "Lingua franca nova"
- },
- "kbd": {
- "articles": 1578,
- "english_name": "Kabardian Circassian",
- "name": "Адыгэбзэ (Adighabze)"
- },
- "simple": {
- "articles": 141947,
- "english_name": "Simple English",
- "name": "Simple English"
- },
- "sc": {
- "articles": 5907,
- "english_name": "Sardinian",
- "name": "Sardu"
- },
- "ta": {
- "articles": 119140,
- "english_name": "Tamil",
- "name": "தமிழ்"
- },
- "lg": {
- "articles": 1155,
- "english_name": "Luganda",
- "name": "Luganda"
- },
- "ckb": {
- "articles": 22870,
- "english_name": "Sorani",
- "name": "Soranî / کوردی"
- },
- "ht": {
- "articles": 54219,
- "english_name": "Haitian",
- "name": "Krèyol ayisyen"
- },
- "ve": {
- "articles": 265,
- "english_name": "Venda",
- "name": "Tshivenda"
- },
- "nds": {
- "articles": 41178,
- "english_name": "Low Saxon",
- "name": "Plattdüütsch"
- },
- "km": {
- "articles": 7105,
- "english_name": "Khmer",
- "name": "ភាសាខ្មែរ"
- },
- "ay": {
- "articles": 4402,
- "english_name": "Aymara",
- "name": "Aymar"
- },
- "mg": {
- "articles": 90635,
- "english_name": "Malagasy",
- "name": "Malagasy"
- },
- "frr": {
- "articles": 8460,
- "english_name": "North Frisian",
- "name": "Nordfriisk"
- },
- "zh-classical": {
- "articles": 8663,
- "english_name": "Classical Chinese",
- "name": "古文 / 文言文"
- },
- "ny": {
- "articles": 487,
- "english_name": "Chichewa",
- "name": "Chichewa"
- },
- "eo": {
- "articles": 253490,
- "english_name": "Esperanto",
- "name": "Esperanto"
- },
- "dty": {
- "articles": 2967,
- "english_name": "Doteli",
- "name": "डोटेली"
- },
- "ki": {
- "articles": 1358,
- "english_name": "Kikuyu",
- "name": "Gĩkũyũ"
- },
- "ko": {
- "articles": 438644,
- "english_name": "Korean",
- "name": "한국어"
- },
- "ig": {
- "articles": 1376,
- "english_name": "Igbo",
- "name": "Igbo"
- },
- "sah": {
- "articles": 11943,
- "english_name": "Sakha",
- "name": "Саха тыла (Saxa Tyla)"
- },
- "ar": {
- "articles": 656175,
- "english_name": "Arabic",
- "name": "العربية"
- },
- "mk": {
- "articles": 98050,
- "english_name": "Macedonian",
- "name": "Македонски"
- },
- "ff": {
- "articles": 228,
- "english_name": "Fula",
- "name": "Fulfulde"
- },
- "he": {
- "articles": 236237,
- "english_name": "Hebrew",
- "name": "עברית"
- },
- "inh": {
- "articles": 791,
- "english_name": "Ingush",
- "name": "Гӏалгӏай"
- },
- "av": {
- "articles": 2309,
- "english_name": "Avar",
- "name": "Авар"
- },
- "mai": {
- "articles": 13164,
- "english_name": "Maithili",
- "name": "मैथिली"
- },
- "zu": {
- "articles": 1050,
- "english_name": "Zulu",
- "name": "isiZulu"
- },
- "eml": {
- "articles": 11866,
- "english_name": "Emilian-Romagnol",
- "name": "Emiliàn e rumagnòl"
- },
- "ti": {
- "articles": 168,
- "english_name": "Tigrinya",
- "name": "ትግርኛ"
- },
- "lmo": {
- "articles": 38071,
- "english_name": "Lombard",
- "name": "Lumbaart"
- },
- "et": {
- "articles": 185271,
- "english_name": "Estonian",
- "name": "Eesti"
- },
- "myv": {
- "articles": 5415,
- "english_name": "Erzya",
- "name": "Эрзянь (Erzjanj Kelj)"
- },
- "si": {
- "articles": 14918,
- "english_name": "Sinhalese",
- "name": "සිංහල"
- },
- "ln": {
- "articles": 3049,
- "english_name": "Lingala",
- "name": "Lingala"
- },
- "shn": {
- "articles": 3239,
- "english_name": "ၽႃႇသႃႇတႆး ",
- "name": "Shan"
- },
- "sh": {
- "articles": 447497,
- "english_name": "Serbo-Croatian",
- "name": "Srpskohrvatski / Српскохрватски"
- },
- "it": {
- "articles": 1491690,
- "english_name": "Italian",
- "name": "Italiano"
- },
- "pam": {
- "articles": 8825,
- "english_name": "Kapampangan",
- "name": "Kapampangan"
- },
- "fy": {
- "articles": 41308,
- "english_name": "West Frisian",
- "name": "Frysk"
- },
- "ha": {
- "articles": 2740,
- "english_name": "Hausa",
- "name": "Hausa / هَوُسَ"
- },
- "diq": {
- "articles": 9107,
- "english_name": "Zazaki",
- "name": "Zazaki"
- },
- "ty": {
- "articles": 1199,
- "english_name": "Tahitian",
- "name": "Reo Mā`ohi"
- },
- "sa": {
- "articles": 11357,
- "english_name": "Sanskrit",
- "name": "संस्कृतम्"
- },
- "ku": {
- "articles": 24022,
- "english_name": "Kurdish",
- "name": "Kurdî / كوردی"
- },
- "io": {
- "articles": 28134,
- "english_name": "Ido",
- "name": "Ido"
- },
- "bjn": {
- "articles": 1918,
- "english_name": "Banjar",
- "name": "Bahasa Banjar"
- },
- "mwl": {
- "articles": 3674,
- "english_name": "Mirandese",
- "name": "Mirandés"
- },
- "se": {
- "articles": 7464,
- "english_name": "Northern Sami",
- "name": "Sámegiella"
- },
- "tet": {
- "articles": 1440,
- "english_name": "Tetum",
- "name": "Tetun"
- },
- "gom": {
- "articles": 3598,
- "english_name": "Goan Konkani",
- "name": "गोंयची कोंकणी / Gõychi Konknni"
- },
- "lij": {
- "articles": 3456,
- "english_name": "Ligurian",
- "name": "Líguru"
- },
- "ga": {
- "articles": 49639,
- "english_name": "Irish",
- "name": "Gaeilge"
- },
- "roa-rup": {
- "articles": 1216,
- "english_name": "Aromanian",
- "name": "Armãneashce"
- },
- "pdc": {
- "articles": 1858,
- "english_name": "Pennsylvania German",
- "name": "Deitsch"
- },
- "cs": {
- "articles": 419392,
- "english_name": "Czech",
- "name": "Čeština"
- },
- "uz": {
- "articles": 130227,
- "english_name": "Uzbek",
- "name": "O‘zbek"
- },
- "ch": {
- "articles": 472,
- "english_name": "Chamorro",
- "name": "Chamoru"
- },
- "rn": {
- "articles": 609,
- "english_name": "Kirundi",
- "name": "Kirundi"
- },
- "or": {
- "articles": 14550,
- "english_name": "Oriya",
- "name": "ଓଡ଼ିଆ"
- },
- "gl": {
- "articles": 153607,
- "english_name": "Galician",
- "name": "Galego"
- },
- "atj": {
- "articles": 626,
- "english_name": "Atikamekw",
- "name": "Atikamekw"
- },
- "pi": {
- "articles": 2535,
- "english_name": "Pali",
- "name": "पाऴि"
- },
- "fur": {
- "articles": 3289,
- "english_name": "Friulian",
- "name": "Furlan"
- },
- "li": {
- "articles": 12316,
- "english_name": "Limburgish",
- "name": "Limburgs"
- },
- "yi": {
- "articles": 14571,
- "english_name": "Yiddish",
- "name": "ייִדיש"
- },
- "lv": {
- "articles": 90266,
- "english_name": "Latvian",
- "name": "Latviešu"
- },
- "ro": {
- "articles": 390804,
- "english_name": "Romanian",
- "name": "Română"
- },
- "bm": {
- "articles": 651,
- "english_name": "Bambara",
- "name": "Bamanankan"
- },
- "ja": {
- "articles": 1134685,
- "english_name": "Japanese",
- "name": "日本語"
- },
- "cy": {
- "articles": 102137,
- "english_name": "Welsh",
- "name": "Cymraeg"
- },
- "wuu": {
- "articles": 16289,
- "english_name": "Wu",
- "name": "吴语"
- },
- "cv": {
- "articles": 41622,
- "english_name": "Chuvash",
- "name": "Чăваш"
- },
- "ady": {
- "articles": 411,
- "english_name": "Adyghe",
- "name": "Адыгэбзэ"
- },
- "min": {
- "articles": 222492,
- "english_name": "Minangkabau",
- "name": "Minangkabau"
- },
- "be-tarask": {
- "articles": 65655,
- "english_name": "Belarusian (Taraškievica)",
- "name": "Беларуская (тарашкевіца)"
- },
- "kl": {
- "articles": 1663,
- "english_name": "Greenlandic",
- "name": "Kalaallisut"
- },
- "am": {
- "articles": 14482,
- "english_name": "Amharic",
- "name": "አማርኛ"
- },
- "ie": {
- "articles": 4303,
- "english_name": "Interlingue",
- "name": "Interlingue"
- },
- "sn": {
- "articles": 4227,
- "english_name": "Shona",
- "name": "chiShona"
- },
- "pnb": {
- "articles": 47107,
- "english_name": "Western Punjabi",
- "name": "شاہ مکھی پنجابی (Shāhmukhī Pañjābī)"
- },
- "sm": {
- "articles": 801,
- "english_name": "Samoan",
- "name": "Gagana Samoa"
- },
- "hak": {
- "articles": 8894,
- "english_name": "Hakka",
- "name": "Hak-kâ-fa / 客家話"
- },
- "nso": {
- "articles": 8094,
- "english_name": "Northern Sotho",
- "name": "Sepedi"
- },
- "fj": {
- "articles": 425,
- "english_name": "Fijian",
- "name": "Na Vosa Vakaviti"
- },
- "da": {
- "articles": 242006,
- "english_name": "Danish",
- "name": "Dansk"
- },
- "ky": {
- "articles": 79376,
- "english_name": "Kirghiz",
- "name": "Кыргызча"
- },
- "to": {
- "articles": 1693,
- "english_name": "Tongan",
- "name": "faka Tonga"
- },
- "udm": {
- "articles": 4565,
- "english_name": "Udmurt",
- "name": "Удмурт кыл"
- },
- "nds-nl": {
- "articles": 6812,
- "english_name": "Dutch Low Saxon",
- "name": "Nedersaksisch"
- },
- "kaa": {
- "articles": 1910,
- "english_name": "Karakalpak",
- "name": "Qaraqalpaqsha"
- },
- "as": {
- "articles": 5141,
- "english_name": "Assamese",
- "name": "অসমীয়া"
- },
- "sg": {
- "articles": 258,
- "english_name": "Sango",
- "name": "Sängö"
- },
- "ik": {
- "articles": 262,
- "english_name": "Inupiak",
- "name": "Iñupiak"
- },
- "gd": {
- "articles": 14774,
- "english_name": "Scottish Gaelic",
- "name": "Gàidhlig"
- },
- "tpi": {
- "articles": 1486,
- "english_name": "Tok Pisin",
- "name": "Tok Pisin"
- },
- "lez": {
- "articles": 3963,
- "english_name": "Lezgian",
- "name": "Лезги чІал (Lezgi č’al)"
- },
- "new": {
- "articles": 72212,
- "english_name": "Newar",
- "name": "नेपाल भाषा"
- },
- "kg": {
- "articles": 1184,
- "english_name": "Kongo",
- "name": "KiKongo"
- },
- "cdo": {
- "articles": 14111,
- "english_name": "Min Dong",
- "name": "Mìng-dĕ̤ng-ngṳ̄"
- },
- "oc": {
- "articles": 85227,
- "english_name": "Occitan",
- "name": "Occitan"
- },
- "nap": {
- "articles": 14576,
- "english_name": "Neapolitan",
- "name": "Nnapulitano"
- },
- "be": {
- "articles": 160751,
- "english_name": "Belarusian",
- "name": "Беларуская"
- },
- "kk": {
- "articles": 223486,
- "english_name": "Kazakh",
- "name": "Қазақша"
- },
- "bs": {
- "articles": 79235,
- "english_name": "Bosnian",
- "name": "Bosanski"
- },
- "bug": {
- "articles": 14121,
- "english_name": "Buginese",
- "name": "Basa Ugi"
- },
- "sq": {
- "articles": 75615,
- "english_name": "Albanian",
- "name": "Shqip"
- },
- "mhr": {
- "articles": 10046,
- "english_name": "Meadow Mari",
- "name": "Олык Марий (Olyk Marij)"
- },
- "eu": {
- "articles": 309974,
- "english_name": "Basque",
- "name": "Euskara"
- },
- "ka": {
- "articles": 126147,
- "english_name": "Georgian",
- "name": "ქართული"
- },
- "ba": {
- "articles": 46046,
- "english_name": "Bashkir",
- "name": "Башҡорт"
- },
- "hi": {
- "articles": 128996,
- "english_name": "Hindi",
- "name": "हिन्दी"
- },
- "rw": {
- "articles": 1822,
- "english_name": "Kinyarwanda",
- "name": "Ikinyarwanda"
- },
- "pnt": {
- "articles": 462,
- "english_name": "Pontic",
- "name": "Ποντιακά"
- },
- "kab": {
- "articles": 2860,
- "english_name": "Kabyle",
- "name": "Taqbaylit"
- },
- "nv": {
- "articles": 6991,
- "english_name": "Navajo",
- "name": "Diné bizaad"
- },
- "mrj": {
- "articles": 10269,
- "english_name": "Hill Mari",
- "name": "Кырык Мары (Kyryk Mary)"
- },
- "mn": {
- "articles": 18356,
- "english_name": "Mongolian",
- "name": "Монгол"
- },
- "ang": {
- "articles": 3077,
- "english_name": "Anglo-Saxon",
- "name": "Englisc"
- },
- "tw": {
- "articles": 657,
- "english_name": "Twi",
- "name": "Twi"
- },
- "ur": {
- "articles": 142712,
- "english_name": "Urdu",
- "name": "اردو"
- },
- "tn": {
- "articles": 640,
- "english_name": "Tswana",
- "name": "Setswana"
- },
- "krc": {
- "articles": 2028,
- "english_name": "Karachay-Balkar",
- "name": "Къарачай-Малкъар (Qarachay-Malqar)"
- },
- "sk": {
- "articles": 228015,
- "english_name": "Slovak",
- "name": "Slovenčina"
- },
- "sv": {
- "articles": 3760984,
- "english_name": "Swedish",
- "name": "Svenska"
- },
- "pl": {
- "articles": 1314525,
- "english_name": "Polish",
- "name": "Polski"
- },
- "uk": {
- "articles": 878251,
- "english_name": "Ukrainian",
- "name": "Українська"
- },
- "pt": {
- "articles": 1014081,
- "english_name": "Portuguese",
- "name": "Português"
- },
- "xal": {
- "articles": 2075,
- "english_name": "Kalmyk",
- "name": "Хальмг"
- },
- "nn": {
- "articles": 141839,
- "english_name": "Norwegian (Nynorsk)",
- "name": "Nynorsk"
- },
- "fo": {
- "articles": 12891,
- "english_name": "Faroese",
- "name": "Føroyskt"
- },
- "gor": {
- "articles": 1926,
- "english_name": "Gorontalo",
- "name": "Hulontalo"
- },
- "te": {
- "articles": 69978,
- "english_name": "Telugu",
- "name": "తెలుగు"
- },
- "lb": {
- "articles": 55377,
- "english_name": "Luxembourgish",
- "name": "Lëtzebuergesch"
- },
- "chy": {
- "articles": 611,
- "english_name": "Cheyenne",
- "name": "Tsetsêhestâhese"
- },
- "bn": {
- "articles": 63523,
- "english_name": "Bengali",
- "name": "বাংলা"
- },
- "hy": {
- "articles": 250045,
- "english_name": "Armenian",
- "name": "Հայերեն"
- },
- "ug": {
- "articles": 4104,
- "english_name": "Uyghur",
- "name": "ئۇيغۇر تىلى"
- },
- "bg": {
- "articles": 248452,
- "english_name": "Bulgarian",
- "name": "Български"
- },
- "arc": {
- "articles": 1628,
- "english_name": "Aramaic",
- "name": "ܐܪܡܝܐ"
- },
- "hr": {
- "articles": 201383,
- "english_name": "Croatian",
- "name": "Hrvatski"
- },
- "ml": {
- "articles": 61227,
- "english_name": "Malayalam",
- "name": "മലയാളം"
- },
- "so": {
- "articles": 5530,
- "english_name": "Somali",
- "name": "Soomaali"
- },
- "bpy": {
- "articles": 25081,
- "english_name": "Bishnupriya Manipuri",
- "name": "ইমার ঠার/বিষ্ণুপ্রিয়া মণিপুরী"
- },
- "tr": {
- "articles": 321169,
- "english_name": "Turkish",
- "name": "Türkçe"
- },
- "mr": {
- "articles": 52667,
- "english_name": "Marathi",
- "name": "मराठी"
- },
- "ce": {
- "articles": 208906,
- "english_name": "Chechen",
- "name": "Нохчийн"
- },
- "yo": {
- "articles": 31774,
- "english_name": "Yoruba",
- "name": "Yorùbá"
- },
- "no": {
- "articles": 500849,
- "english_name": "Norwegian (Bokmål)",
- "name": "Norsk (Bokmål)"
- },
- "fi": {
- "articles": 449407,
- "english_name": "Finnish",
- "name": "Suomi"
- },
- "nah": {
- "articles": 6925,
- "english_name": "Nahuatl",
- "name": "Nāhuatl"
- },
- "ia": {
- "articles": 21225,
- "english_name": "Interlingua",
- "name": "Interlingua"
- },
- "tl": {
- "articles": 77677,
- "english_name": "Tagalog",
- "name": "Tagalog"
- },
- "vep": {
- "articles": 5880,
- "english_name": "Vepsian",
- "name": "Vepsän"
- },
- "ne": {
- "articles": 31633,
- "english_name": "Nepali",
- "name": "नेपाली"
- },
- "cr": {
- "articles": 103,
- "english_name": "Cree",
- "name": "Nehiyaw"
- },
- "gv": {
- "articles": 4968,
- "english_name": "Manx",
- "name": "Gaelg"
- },
- "hif": {
- "articles": 9756,
- "english_name": "Fiji Hindi",
- "name": "Fiji Hindi"
- },
- "ksh": {
- "articles": 2842,
- "english_name": "Ripuarian",
- "name": "Ripoarisch"
- },
- "jbo": {
- "articles": 1233,
- "english_name": "Lojban",
- "name": "Lojban"
- },
- "ilo": {
- "articles": 11592,
- "english_name": "Ilokano",
- "name": "Ilokano"
- },
- "ltg": {
- "articles": 815,
- "english_name": "Latgalian",
- "name": "Latgaļu"
- },
- "dv": {
- "articles": 3024,
- "english_name": "Divehi",
- "name": "ދިވެހިބަސް"
- },
- "vls": {
- "articles": 6703,
- "english_name": "West Flemish",
- "name": "West-Vlams"
- },
- "co": {
- "articles": 5643,
- "english_name": "Corsican",
- "name": "Corsu"
- },
- "bat-smg": {
- "articles": 16427,
- "english_name": "Samogitian",
- "name": "Žemaitėška"
- },
- "zh-min-nan": {
- "articles": 227702,
- "english_name": "Min Nan",
- "name": "Bân-lâm-gú"
- },
- "glk": {
- "articles": 5666,
- "english_name": "Gilaki",
- "name": "گیلکی"
- },
- "bo": {
- "articles": 5827,
- "english_name": "Tibetan",
- "name": "བོད་སྐད"
- },
- "sl": {
- "articles": 163198,
- "english_name": "Slovenian",
- "name": "Slovenščina"
- },
- "os": {
- "articles": 11225,
- "english_name": "Ossetian",
- "name": "Иронау"
- },
- "sat": {
- "articles": 532,
- "english_name": "Santali",
- "name": "ᱥᱟᱱᱛᱟᱲᱤ"
- },
- "qu": {
- "articles": 20900,
- "english_name": "Quechua",
- "name": "Runa Simi"
- },
- "za": {
- "articles": 1867,
- "english_name": "Zhuang",
- "name": "Cuengh"
- },
- "tcy": {
- "articles": 994,
- "english_name": "Tulu",
- "name": "ತುಳು"
- },
- "ps": {
- "articles": 9702,
- "english_name": "Pashto",
- "name": "پښتو"
- },
- "pih": {
- "articles": 681,
- "english_name": "Norfolk",
- "name": "Norfuk"
- },
- "cbk-zam": {
- "articles": 3000,
- "english_name": "Zamboanga Chavacano",
- "name": "Chavacano de Zamboanga"
- },
- "mdf": {
- "articles": 1188,
- "english_name": "Moksha",
- "name": "Мокшень (Mokshanj Kälj)"
- },
- "mi": {
- "articles": 7145,
- "english_name": "Maori",
- "name": "Māori"
- },
- "sco": {
- "articles": 53388,
- "english_name": "Scots",
- "name": "Scots"
- },
- "dsb": {
- "articles": 3210,
- "english_name": "Lower Sorbian",
- "name": "Dolnoserbski"
- },
- "gag": {
- "articles": 2763,
- "english_name": "Gagauz",
- "name": "Gagauz"
- },
- "haw": {
- "articles": 3234,
- "english_name": "Hawaiian",
- "name": "Hawai`i"
- },
- "rm": {
- "articles": 3564,
- "english_name": "Romansh",
- "name": "Rumantsch"
- },
- "bar": {
- "articles": 27285,
- "english_name": "Bavarian",
- "name": "Boarisch"
- },
- "kn": {
- "articles": 24065,
- "english_name": "Kannada",
- "name": "ಕನ್ನಡ"
- },
- "olo": {
- "articles": 2812,
- "english_name": "Livvi-Karelian",
- "name": "Karjalan"
- },
- "als": {
- "articles": 25337,
- "english_name": "Alemannic",
- "name": "Alemannisch"
- },
- "kbp": {
- "articles": 1479,
- "english_name": "Kabiye",
- "name": "Kabɩyɛ"
- },
- "map-bms": {
- "articles": 13336,
- "english_name": "Banyumasan",
- "name": "Basa Banyumasan"
- },
- "koi": {
- "articles": 3451,
- "english_name": "Komi-Permyak",
- "name": "Перем Коми (Perem Komi)"
- },
- "pcd": {
- "articles": 4258,
- "english_name": "Picard",
- "name": "Picard"
- },
- "ru": {
- "articles": 1519724,
- "english_name": "Russian",
- "name": "Русский"
- },
- "su": {
- "articles": 39840,
- "english_name": "Sundanese",
- "name": "Basa Sunda"
- },
- "lt": {
- "articles": 193352,
- "english_name": "Lithuanian",
- "name": "Lietuvių"
- },
- "vi": {
- "articles": 1198961,
- "english_name": "Vietnamese",
- "name": "Tiếng Việt"
- },
- "ms": {
- "articles": 323274,
- "english_name": "Malay",
- "name": "Bahasa Melayu"
- },
- "my": {
- "articles": 42128,
- "english_name": "Burmese",
- "name": "မြန်မာဘာသာ"
- },
- "jv": {
- "articles": 55104,
- "english_name": "Javanese",
- "name": "Basa Jawa"
- },
- "war": {
- "articles": 1263483,
- "english_name": "Waray-Waray",
- "name": "Winaray"
- },
- "cu": {
- "articles": 669,
- "english_name": "Old Church Slavonic",
- "name": "Словѣньскъ"
- },
- "ace": {
- "articles": 7602,
- "english_name": "Acehnese",
- "name": "Bahsa Acèh"
- },
- "gan": {
- "articles": 6411,
- "english_name": "Gan",
- "name": "贛語"
- },
- "xh": {
- "articles": 751,
- "english_name": "Xhosa",
- "name": "isiXhosa"
- },
- "rmy": {
- "articles": 660,
- "english_name": "Romani",
- "name": "romani - रोमानी"
- },
- "xmf": {
- "articles": 12678,
- "english_name": "Mingrelian",
- "name": "მარგალური (Margaluri)"
- },
- "en": {
- "articles": 5781855,
- "english_name": "English",
- "name": "English"
- },
- "nov": {
- "articles": 1661,
- "english_name": "Novial",
- "name": "Novial"
- },
- "ak": {
- "articles": 567,
- "english_name": "Akan",
- "name": "Akana"
- },
- "fiu-vro": {
- "articles": 5463,
- "english_name": "Võro",
- "name": "Võro"
- },
- "mzn": {
- "articles": 12786,
- "english_name": "Mazandarani",
- "name": "مَزِروني"
- },
- "ts": {
- "articles": 583,
- "english_name": "Tsonga",
- "name": "Xitsonga"
- },
- "dz": {
- "articles": 218,
- "english_name": "Dzongkha",
- "name": "ཇོང་ཁ"
- },
- "es": {
- "articles": 1497393,
- "english_name": "Spanish",
- "name": "Español"
- },
- "gu": {
- "articles": 28289,
- "english_name": "Gujarati",
- "name": "ગુજરાતી"
- },
- "br": {
- "articles": 66053,
- "english_name": "Breton",
- "name": "Brezhoneg"
- },
- "sd": {
- "articles": 11114,
- "english_name": "Sindhi",
- "name": "سنڌي، سندھی ، सिन्ध"
- },
- "nrm": {
- "articles": 4029,
- "english_name": "Norman",
- "name": "Nouormand/Normaund"
- },
- "iu": {
- "articles": 401,
- "english_name": "Inuktitut",
- "name": "ᐃᓄᒃᑎᑐᑦ"
- },
- "tum": {
- "articles": 572,
- "english_name": "Tumbuka",
- "name": "chiTumbuka"
- },
- "chr": {
- "articles": 855,
- "english_name": "Cherokee",
- "name": "ᏣᎳᎩ"
- },
- "pa": {
- "articles": 30886,
- "english_name": "Punjabi",
- "name": "ਪੰਜਾਬੀ"
- },
- "ext": {
- "articles": 3020,
- "english_name": "Extremaduran",
- "name": "Estremeñu"
- }
- },
- "qwant images": [
- "bg-BG",
- "br-FR",
- "ca-AD",
- "ca-ES",
- "ca-FR",
- "co-FR",
- "cs-CZ",
- "cy-GB",
- "da-DK",
- "de-AT",
- "de-CH",
- "de-DE",
- "el-GR",
- "en-AU",
- "en-CA",
- "en-GB",
- "en-IE",
- "en-IN",
- "en-MY",
- "en-NZ",
- "en-PH",
- "en-SG",
- "en-US",
- "es-AD",
- "es-AR",
- "es-CL",
- "es-ES",
- "es-MX",
- "et-EE",
- "eu-ES",
- "eu-FR",
- "fi-FI",
- "fr-AD",
- "fr-BE",
- "fr-CA",
- "fr-CH",
- "fr-FR",
- "gd-GB",
- "he-IL",
- "hu-HU",
- "it-CH",
- "it-IT",
- "ja-JP",
- "ko-KR",
- "ms-MY",
- "nl-BE",
- "nl-NL",
- "no-NO",
- "pl-PL",
- "pt-AD",
- "pt-BR",
- "pt-PT",
- "ro-RO",
- "ru-RU",
- "sv-SE",
- "th-TH",
- "tr-TR"
- ],
- "google": {
- "nl": {
- "name": "Nederlands"
- },
- "eo": {
- "name": "Esperanto"
- },
- "ko": {
- "name": "한국어"
- },
- "id": {
- "name": "Indonesia"
- },
- "ca": {
- "name": "Català"
- },
- "ar": {
- "name": "العربية"
- },
- "sl": {
- "name": "Slovenščina"
- },
- "sr": {
- "name": "Српски"
- },
- "sv": {
- "name": "Svenska"
- },
- "be": {
- "name": "Беларуская"
- },
- "et": {
- "name": "Eesti"
- },
- "sw": {
- "name": "Kiswahili"
- },
- "is": {
- "name": "Íslenska"
- },
- "it": {
- "name": "Italiano"
- },
- "hi": {
- "name": "हिन्दी"
- },
- "pl": {
- "name": "Polski"
- },
- "el": {
- "name": "Ελληνικά"
- },
- "hu": {
- "name": "Magyar"
- },
- "fr": {
- "name": "Français"
- },
- "th": {
- "name": "ไทย"
- },
- "tl": {
- "name": "Filipino"
- },
- "de": {
- "name": "Deutsch"
- },
- "ru": {
- "name": "Русский"
- },
- "sk": {
- "name": "Slovenčina"
- },
- "lt": {
- "name": "Lietuvių"
- },
- "vi": {
- "name": "Tiếng Việt"
- },
- "uk": {
- "name": "Українська"
- },
- "pt": {
- "name": "Português"
- },
- "zh-TW": {
- "name": "中文 (繁體)"
- },
- "cs": {
- "name": "Čeština"
- },
- "fa": {
- "name": "فارسی"
- },
- "af": {
- "name": "Afrikaans"
- },
- "hy": {
- "name": "Հայերեն"
- },
- "bg": {
- "name": "Български"
- },
- "hr": {
- "name": "Hrvatski"
- },
- "en": {
- "name": "English"
- },
- "tr": {
- "name": "Türkçe"
- },
- "lv": {
- "name": "Latviešu"
- },
- "ro": {
- "name": "Română"
- },
- "zh-CN": {
- "name": "中文 (简体)"
- },
- "ja": {
- "name": "日本語"
- },
- "iw": {
- "name": "עברית"
- },
- "es": {
- "name": "Español"
- },
- "fi": {
- "name": "Suomi"
- },
- "no": {
- "name": "Norsk"
- },
- "da": {
- "name": "Dansk"
- }
- },
- "wikidata": {
- "nl": {
- "articles": 1954031,
- "english_name": "Dutch",
- "name": "Nederlands"
- },
- "ceb": {
- "articles": 5376890,
- "english_name": "Cebuano",
- "name": "Sinugboanong Binisaya"
- },
- "jam": {
- "articles": 1632,
- "english_name": "Jamaican Patois",
- "name": "Jumiekan Kryuol"
- },
- "crh": {
- "articles": 6172,
- "english_name": "Crimean Tatar",
- "name": "Qırımtatarca"
- },
- "st": {
- "articles": 544,
- "english_name": "Sesotho",
- "name": "Sesotho"
- },
- "id": {
- "articles": 449446,
- "english_name": "Indonesian",
- "name": "Bahasa Indonesia"
- },
- "szl": {
- "articles": 7812,
- "english_name": "Silesian",
- "name": "Ślůnski"
- },
- "zh-yue": {
- "articles": 70490,
- "english_name": "Cantonese",
- "name": "粵語"
- },
- "ca": {
- "articles": 599790,
- "english_name": "Catalan",
- "name": "Català"
- },
- "ab": {
- "articles": 3452,
- "english_name": "Abkhazian",
- "name": "Аҧсуа"
- },
- "lad": {
- "articles": 3828,
- "english_name": "Ladino",
- "name": "Dzhudezmo"
- },
- "rue": {
- "articles": 6891,
- "english_name": "Rusyn",
- "name": "Русиньскый"
- },
- "om": {
- "articles": 775,
- "english_name": "Oromo",
- "name": "Oromoo"
- },
- "azb": {
- "articles": 118928,
- "english_name": "South Azerbaijani",
- "name": "تۆرکجه"
- },
- "sr": {
- "articles": 614180,
- "english_name": "Serbian",
- "name": "Српски / Srpski"
- },
- "tg": {
- "articles": 96078,
- "english_name": "Tajik",
- "name": "Тоҷикӣ"
- },
- "ee": {
- "articles": 350,
- "english_name": "Ewe",
- "name": "Eʋegbe"
- },
- "hsb": {
- "articles": 13357,
- "english_name": "Upper Sorbian",
- "name": "Hornjoserbsce"
- },
- "pag": {
- "articles": 2521,
- "english_name": "Pangasinan",
- "name": "Pangasinan"
- },
- "tyv": {
- "articles": 1738,
- "english_name": "Tuvan",
- "name": "Тыва"
- },
- "got": {
- "articles": 588,
- "english_name": "Gothic",
- "name": "𐌲𐌿𐍄𐌹𐍃𐌺"
- },
- "ss": {
- "articles": 450,
- "english_name": "Swati",
- "name": "SiSwati"
- },
- "stq": {
- "articles": 3998,
- "english_name": "Saterland Frisian",
- "name": "Seeltersk"
- },
- "is": {
- "articles": 46096,
- "english_name": "Icelandic",
- "name": "Íslenska"
- },
- "az": {
- "articles": 141672,
- "english_name": "Azerbaijani",
- "name": "Azərbaycanca"
- },
- "vec": {
- "articles": 11266,
- "english_name": "Venetian",
- "name": "Vèneto"
- },
- "na": {
- "articles": 1305,
- "english_name": "Nauruan",
- "name": "dorerin Naoero"
- },
- "an": {
- "articles": 34148,
- "english_name": "Aragonese",
- "name": "Aragonés"
- },
- "tk": {
- "articles": 5514,
- "english_name": "Turkmen",
- "name": "Türkmen"
- },
- "zea": {
- "articles": 4580,
- "english_name": "Zeelandic",
- "name": "Zeêuws"
- },
- "la": {
- "articles": 129779,
- "english_name": "Latin",
- "name": "Latina"
- },
- "kv": {
- "articles": 5308,
- "english_name": "Komi",
- "name": "Коми"
- },
- "vo": {
- "articles": 122174,
- "english_name": "Volapük",
- "name": "Volapük"
- },
- "el": {
- "articles": 157114,
- "english_name": "Greek",
- "name": "Ελληνικά"
- },
- "hu": {
- "articles": 442291,
- "english_name": "Hungarian",
- "name": "Magyar"
- },
- "bi": {
- "articles": 1179,
- "english_name": "Bislama",
- "name": "Bislama"
- },
- "fr": {
- "articles": 2070378,
- "english_name": "French",
- "name": "Français"
- },
- "th": {
- "articles": 128977,
- "english_name": "Thai",
- "name": "ไทย"
- },
- "zh": {
- "articles": 1038913,
- "english_name": "Chinese",
- "name": "中文"
- },
- "de": {
- "articles": 2256718,
- "english_name": "German",
- "name": "Deutsch"
- },
- "pms": {
- "articles": 64391,
- "english_name": "Piedmontese",
- "name": "Piemontèis"
- },
- "gn": {
- "articles": 3637,
- "english_name": "Guarani",
- "name": "Avañe'ẽ"
- },
- "lo": {
- "articles": 3101,
- "english_name": "Lao",
- "name": "ລາວ"
- },
- "bxr": {
- "articles": 2124,
- "english_name": "Buryat",
- "name": "Буряад"
- },
- "ast": {
- "articles": 99530,
- "english_name": "Asturian",
- "name": "Asturianu"
- },
- "wo": {
- "articles": 1177,
- "english_name": "Wolof",
- "name": "Wolof"
- },
- "pap": {
- "articles": 1953,
- "english_name": "Papiamentu",
- "name": "Papiamentu"
- },
- "fa": {
- "articles": 655431,
- "english_name": "Persian",
- "name": "فارسی"
- },
- "roa-tara": {
- "articles": 9243,
- "english_name": "Tarantino",
- "name": "Tarandíne"
- },
- "af": {
- "articles": 68807,
- "english_name": "Afrikaans",
- "name": "Afrikaans"
- },
- "lbe": {
- "articles": 1216,
- "english_name": "Lak",
- "name": "Лакку"
- },
- "frp": {
- "articles": 3254,
- "english_name": "Franco-Provençal",
- "name": "Arpitan"
- },
- "mt": {
- "articles": 3336,
- "english_name": "Maltese",
- "name": "Malti"
- },
- "bcl": {
- "articles": 8664,
- "english_name": "Central Bicolano",
- "name": "Bikol"
- },
- "bh": {
- "articles": 6686,
- "english_name": "Bihari",
- "name": "भोजपुरी"
- },
- "csb": {
- "articles": 5258,
- "english_name": "Kashubian",
- "name": "Kaszëbsczi"
- },
- "scn": {
- "articles": 26060,
- "english_name": "Sicilian",
- "name": "Sicilianu"
- },
- "sw": {
- "articles": 47744,
- "english_name": "Swahili",
- "name": "Kiswahili"
- },
- "kw": {
- "articles": 3839,
- "english_name": "Cornish",
- "name": "Kernewek/Karnuack"
- },
- "lrc": {
- "articles": 5357,
- "english_name": "Northern Luri",
- "name": "لۊری شومالی"
- },
- "wa": {
- "articles": 14790,
- "english_name": "Walloon",
- "name": "Walon"
- },
- "arz": {
- "articles": 20166,
- "english_name": "Egyptian Arabic",
- "name": "مصرى (Maṣri)"
- },
- "pfl": {
- "articles": 2502,
- "english_name": "Palatinate German",
- "name": "Pälzisch"
- },
- "tt": {
- "articles": 82594,
- "english_name": "Tatar",
- "name": "Tatarça / Татарча"
- },
- "ks": {
- "articles": 324,
- "english_name": "Kashmiri",
- "name": "कश्मीरी / كشميري"
- },
- "srn": {
- "articles": 1061,
- "english_name": "Sranan",
- "name": "Sranantongo"
- },
- "lfn": {
- "articles": 3083,
- "english_name": "Lingua Franca Nova",
- "name": "Lingua franca nova"
- },
- "kbd": {
- "articles": 1578,
- "english_name": "Kabardian Circassian",
- "name": "Адыгэбзэ (Adighabze)"
- },
- "simple": {
- "articles": 141947,
- "english_name": "Simple English",
- "name": "Simple English"
- },
- "sc": {
- "articles": 5907,
- "english_name": "Sardinian",
- "name": "Sardu"
- },
- "ta": {
- "articles": 119140,
- "english_name": "Tamil",
- "name": "தமிழ்"
- },
- "lg": {
- "articles": 1155,
- "english_name": "Luganda",
- "name": "Luganda"
- },
- "ckb": {
- "articles": 22870,
- "english_name": "Sorani",
- "name": "Soranî / کوردی"
- },
- "ht": {
- "articles": 54219,
- "english_name": "Haitian",
- "name": "Krèyol ayisyen"
- },
- "ve": {
- "articles": 265,
- "english_name": "Venda",
- "name": "Tshivenda"
- },
- "nds": {
- "articles": 41178,
- "english_name": "Low Saxon",
- "name": "Plattdüütsch"
- },
- "km": {
- "articles": 7105,
- "english_name": "Khmer",
- "name": "ភាសាខ្មែរ"
- },
- "ay": {
- "articles": 4402,
- "english_name": "Aymara",
- "name": "Aymar"
- },
- "mg": {
- "articles": 90635,
- "english_name": "Malagasy",
- "name": "Malagasy"
- },
- "frr": {
- "articles": 8460,
- "english_name": "North Frisian",
- "name": "Nordfriisk"
- },
- "zh-classical": {
- "articles": 8663,
- "english_name": "Classical Chinese",
- "name": "古文 / 文言文"
- },
- "ny": {
- "articles": 487,
- "english_name": "Chichewa",
- "name": "Chichewa"
- },
- "eo": {
- "articles": 253490,
- "english_name": "Esperanto",
- "name": "Esperanto"
- },
- "dty": {
- "articles": 2967,
- "english_name": "Doteli",
- "name": "डोटेली"
- },
- "ki": {
- "articles": 1358,
- "english_name": "Kikuyu",
- "name": "Gĩkũyũ"
- },
- "ko": {
- "articles": 438644,
- "english_name": "Korean",
- "name": "한국어"
- },
- "ig": {
- "articles": 1376,
- "english_name": "Igbo",
- "name": "Igbo"
- },
- "sah": {
- "articles": 11943,
- "english_name": "Sakha",
- "name": "Саха тыла (Saxa Tyla)"
- },
- "ar": {
- "articles": 656175,
- "english_name": "Arabic",
- "name": "العربية"
- },
- "mk": {
- "articles": 98050,
- "english_name": "Macedonian",
- "name": "Македонски"
- },
- "ff": {
- "articles": 228,
- "english_name": "Fula",
- "name": "Fulfulde"
- },
- "he": {
- "articles": 236237,
- "english_name": "Hebrew",
- "name": "עברית"
- },
- "inh": {
- "articles": 791,
- "english_name": "Ingush",
- "name": "Гӏалгӏай"
- },
- "av": {
- "articles": 2309,
- "english_name": "Avar",
- "name": "Авар"
- },
- "mai": {
- "articles": 13164,
- "english_name": "Maithili",
- "name": "मैथिली"
- },
- "zu": {
- "articles": 1050,
- "english_name": "Zulu",
- "name": "isiZulu"
- },
- "eml": {
- "articles": 11866,
- "english_name": "Emilian-Romagnol",
- "name": "Emiliàn e rumagnòl"
- },
- "ti": {
- "articles": 168,
- "english_name": "Tigrinya",
- "name": "ትግርኛ"
- },
- "lmo": {
- "articles": 38071,
- "english_name": "Lombard",
- "name": "Lumbaart"
- },
- "et": {
- "articles": 185271,
- "english_name": "Estonian",
- "name": "Eesti"
- },
- "myv": {
- "articles": 5415,
- "english_name": "Erzya",
- "name": "Эрзянь (Erzjanj Kelj)"
- },
- "si": {
- "articles": 14918,
- "english_name": "Sinhalese",
- "name": "සිංහල"
- },
- "ln": {
- "articles": 3049,
- "english_name": "Lingala",
- "name": "Lingala"
- },
- "shn": {
- "articles": 3239,
- "english_name": "ၽႃႇသႃႇတႆး ",
- "name": "Shan"
- },
- "sh": {
- "articles": 447497,
- "english_name": "Serbo-Croatian",
- "name": "Srpskohrvatski / Српскохрватски"
- },
- "it": {
- "articles": 1491690,
- "english_name": "Italian",
- "name": "Italiano"
- },
- "pam": {
- "articles": 8825,
- "english_name": "Kapampangan",
- "name": "Kapampangan"
- },
- "fy": {
- "articles": 41308,
- "english_name": "West Frisian",
- "name": "Frysk"
- },
- "ha": {
- "articles": 2740,
- "english_name": "Hausa",
- "name": "Hausa / هَوُسَ"
- },
- "diq": {
- "articles": 9107,
- "english_name": "Zazaki",
- "name": "Zazaki"
- },
- "ty": {
- "articles": 1199,
- "english_name": "Tahitian",
- "name": "Reo Mā`ohi"
- },
- "sa": {
- "articles": 11357,
- "english_name": "Sanskrit",
- "name": "संस्कृतम्"
- },
- "ku": {
- "articles": 24022,
- "english_name": "Kurdish",
- "name": "Kurdî / كوردی"
- },
- "io": {
- "articles": 28134,
- "english_name": "Ido",
- "name": "Ido"
- },
- "bjn": {
- "articles": 1918,
- "english_name": "Banjar",
- "name": "Bahasa Banjar"
- },
- "mwl": {
- "articles": 3674,
- "english_name": "Mirandese",
- "name": "Mirandés"
- },
- "se": {
- "articles": 7464,
- "english_name": "Northern Sami",
- "name": "Sámegiella"
- },
- "tet": {
- "articles": 1440,
- "english_name": "Tetum",
- "name": "Tetun"
- },
- "gom": {
- "articles": 3598,
- "english_name": "Goan Konkani",
- "name": "गोंयची कोंकणी / Gõychi Konknni"
- },
- "lij": {
- "articles": 3456,
- "english_name": "Ligurian",
- "name": "Líguru"
- },
- "ga": {
- "articles": 49639,
- "english_name": "Irish",
- "name": "Gaeilge"
- },
- "roa-rup": {
- "articles": 1216,
- "english_name": "Aromanian",
- "name": "Armãneashce"
- },
- "pdc": {
- "articles": 1858,
- "english_name": "Pennsylvania German",
- "name": "Deitsch"
- },
- "cs": {
- "articles": 419392,
- "english_name": "Czech",
- "name": "Čeština"
- },
- "uz": {
- "articles": 130227,
- "english_name": "Uzbek",
- "name": "O‘zbek"
- },
- "ch": {
- "articles": 472,
- "english_name": "Chamorro",
- "name": "Chamoru"
- },
- "rn": {
- "articles": 609,
- "english_name": "Kirundi",
- "name": "Kirundi"
- },
- "or": {
- "articles": 14550,
- "english_name": "Oriya",
- "name": "ଓଡ଼ିଆ"
- },
- "gl": {
- "articles": 153607,
- "english_name": "Galician",
- "name": "Galego"
- },
- "atj": {
- "articles": 626,
- "english_name": "Atikamekw",
- "name": "Atikamekw"
- },
- "pi": {
- "articles": 2535,
- "english_name": "Pali",
- "name": "पाऴि"
- },
- "fur": {
- "articles": 3289,
- "english_name": "Friulian",
- "name": "Furlan"
- },
- "li": {
- "articles": 12316,
- "english_name": "Limburgish",
- "name": "Limburgs"
- },
- "yi": {
- "articles": 14571,
- "english_name": "Yiddish",
- "name": "ייִדיש"
- },
- "lv": {
- "articles": 90266,
- "english_name": "Latvian",
- "name": "Latviešu"
- },
- "ro": {
- "articles": 390804,
- "english_name": "Romanian",
- "name": "Română"
- },
- "bm": {
- "articles": 651,
- "english_name": "Bambara",
- "name": "Bamanankan"
- },
- "ja": {
- "articles": 1134685,
- "english_name": "Japanese",
- "name": "日本語"
- },
- "cy": {
- "articles": 102137,
- "english_name": "Welsh",
- "name": "Cymraeg"
- },
- "wuu": {
- "articles": 16289,
- "english_name": "Wu",
- "name": "吴语"
- },
- "cv": {
- "articles": 41622,
- "english_name": "Chuvash",
- "name": "Чăваш"
- },
- "ady": {
- "articles": 411,
- "english_name": "Adyghe",
- "name": "Адыгэбзэ"
- },
- "min": {
- "articles": 222492,
- "english_name": "Minangkabau",
- "name": "Minangkabau"
- },
- "be-tarask": {
- "articles": 65655,
- "english_name": "Belarusian (Taraškievica)",
- "name": "Беларуская (тарашкевіца)"
- },
- "kl": {
- "articles": 1663,
- "english_name": "Greenlandic",
- "name": "Kalaallisut"
- },
- "am": {
- "articles": 14482,
- "english_name": "Amharic",
- "name": "አማርኛ"
- },
- "ie": {
- "articles": 4303,
- "english_name": "Interlingue",
- "name": "Interlingue"
- },
- "sn": {
- "articles": 4227,
- "english_name": "Shona",
- "name": "chiShona"
- },
- "pnb": {
- "articles": 47107,
- "english_name": "Western Punjabi",
- "name": "شاہ مکھی پنجابی (Shāhmukhī Pañjābī)"
- },
- "sm": {
- "articles": 801,
- "english_name": "Samoan",
- "name": "Gagana Samoa"
- },
- "hak": {
- "articles": 8894,
- "english_name": "Hakka",
- "name": "Hak-kâ-fa / 客家話"
- },
- "nso": {
- "articles": 8094,
- "english_name": "Northern Sotho",
- "name": "Sepedi"
- },
- "fj": {
- "articles": 425,
- "english_name": "Fijian",
- "name": "Na Vosa Vakaviti"
- },
- "da": {
- "articles": 242006,
- "english_name": "Danish",
- "name": "Dansk"
- },
- "ky": {
- "articles": 79376,
- "english_name": "Kirghiz",
- "name": "Кыргызча"
- },
- "to": {
- "articles": 1693,
- "english_name": "Tongan",
- "name": "faka Tonga"
- },
- "udm": {
- "articles": 4565,
- "english_name": "Udmurt",
- "name": "Удмурт кыл"
- },
- "nds-nl": {
- "articles": 6812,
- "english_name": "Dutch Low Saxon",
- "name": "Nedersaksisch"
- },
- "kaa": {
- "articles": 1910,
- "english_name": "Karakalpak",
- "name": "Qaraqalpaqsha"
- },
- "as": {
- "articles": 5141,
- "english_name": "Assamese",
- "name": "অসমীয়া"
- },
- "sg": {
- "articles": 258,
- "english_name": "Sango",
- "name": "Sängö"
- },
- "ik": {
- "articles": 262,
- "english_name": "Inupiak",
- "name": "Iñupiak"
- },
- "gd": {
- "articles": 14774,
- "english_name": "Scottish Gaelic",
- "name": "Gàidhlig"
- },
- "tpi": {
- "articles": 1486,
- "english_name": "Tok Pisin",
- "name": "Tok Pisin"
- },
- "lez": {
- "articles": 3963,
- "english_name": "Lezgian",
- "name": "Лезги чІал (Lezgi č’al)"
- },
- "new": {
- "articles": 72212,
- "english_name": "Newar",
- "name": "नेपाल भाषा"
- },
- "kg": {
- "articles": 1184,
- "english_name": "Kongo",
- "name": "KiKongo"
- },
- "cdo": {
- "articles": 14111,
- "english_name": "Min Dong",
- "name": "Mìng-dĕ̤ng-ngṳ̄"
- },
- "oc": {
- "articles": 85227,
- "english_name": "Occitan",
- "name": "Occitan"
- },
- "nap": {
- "articles": 14576,
- "english_name": "Neapolitan",
- "name": "Nnapulitano"
- },
- "be": {
- "articles": 160751,
- "english_name": "Belarusian",
- "name": "Беларуская"
- },
- "kk": {
- "articles": 223486,
- "english_name": "Kazakh",
- "name": "Қазақша"
- },
- "bs": {
- "articles": 79235,
- "english_name": "Bosnian",
- "name": "Bosanski"
- },
- "bug": {
- "articles": 14121,
- "english_name": "Buginese",
- "name": "Basa Ugi"
- },
- "sq": {
- "articles": 75615,
- "english_name": "Albanian",
- "name": "Shqip"
- },
- "mhr": {
- "articles": 10046,
- "english_name": "Meadow Mari",
- "name": "Олык Марий (Olyk Marij)"
- },
- "eu": {
- "articles": 309974,
- "english_name": "Basque",
- "name": "Euskara"
- },
- "ka": {
- "articles": 126147,
- "english_name": "Georgian",
- "name": "ქართული"
- },
- "ba": {
- "articles": 46046,
- "english_name": "Bashkir",
- "name": "Башҡорт"
- },
- "hi": {
- "articles": 128996,
- "english_name": "Hindi",
- "name": "हिन्दी"
- },
- "rw": {
- "articles": 1822,
- "english_name": "Kinyarwanda",
- "name": "Ikinyarwanda"
- },
- "pnt": {
- "articles": 462,
- "english_name": "Pontic",
- "name": "Ποντιακά"
- },
- "kab": {
- "articles": 2860,
- "english_name": "Kabyle",
- "name": "Taqbaylit"
- },
- "nv": {
- "articles": 6991,
- "english_name": "Navajo",
- "name": "Diné bizaad"
- },
- "mrj": {
- "articles": 10269,
- "english_name": "Hill Mari",
- "name": "Кырык Мары (Kyryk Mary)"
- },
- "mn": {
- "articles": 18356,
- "english_name": "Mongolian",
- "name": "Монгол"
- },
- "ang": {
- "articles": 3077,
- "english_name": "Anglo-Saxon",
- "name": "Englisc"
- },
- "tw": {
- "articles": 657,
- "english_name": "Twi",
- "name": "Twi"
- },
- "ur": {
- "articles": 142712,
- "english_name": "Urdu",
- "name": "اردو"
- },
- "tn": {
- "articles": 640,
- "english_name": "Tswana",
- "name": "Setswana"
- },
- "krc": {
- "articles": 2028,
- "english_name": "Karachay-Balkar",
- "name": "Къарачай-Малкъар (Qarachay-Malqar)"
- },
- "sk": {
- "articles": 228015,
- "english_name": "Slovak",
- "name": "Slovenčina"
- },
- "sv": {
- "articles": 3760984,
- "english_name": "Swedish",
- "name": "Svenska"
- },
- "pl": {
- "articles": 1314525,
- "english_name": "Polish",
- "name": "Polski"
- },
- "uk": {
- "articles": 878251,
- "english_name": "Ukrainian",
- "name": "Українська"
- },
- "pt": {
- "articles": 1014081,
- "english_name": "Portuguese",
- "name": "Português"
- },
- "xal": {
- "articles": 2075,
- "english_name": "Kalmyk",
- "name": "Хальмг"
- },
- "nn": {
- "articles": 141839,
- "english_name": "Norwegian (Nynorsk)",
- "name": "Nynorsk"
- },
- "fo": {
- "articles": 12891,
- "english_name": "Faroese",
- "name": "Føroyskt"
- },
- "gor": {
- "articles": 1926,
- "english_name": "Gorontalo",
- "name": "Hulontalo"
- },
- "te": {
- "articles": 69978,
- "english_name": "Telugu",
- "name": "తెలుగు"
- },
- "lb": {
- "articles": 55377,
- "english_name": "Luxembourgish",
- "name": "Lëtzebuergesch"
- },
- "chy": {
- "articles": 611,
- "english_name": "Cheyenne",
- "name": "Tsetsêhestâhese"
- },
- "bn": {
- "articles": 63523,
- "english_name": "Bengali",
- "name": "বাংলা"
- },
- "hy": {
- "articles": 250045,
- "english_name": "Armenian",
- "name": "Հայերեն"
- },
- "ug": {
- "articles": 4104,
- "english_name": "Uyghur",
- "name": "ئۇيغۇر تىلى"
- },
- "bg": {
- "articles": 248452,
- "english_name": "Bulgarian",
- "name": "Български"
- },
- "arc": {
- "articles": 1628,
- "english_name": "Aramaic",
- "name": "ܐܪܡܝܐ"
- },
- "hr": {
- "articles": 201383,
- "english_name": "Croatian",
- "name": "Hrvatski"
- },
- "ml": {
- "articles": 61227,
- "english_name": "Malayalam",
- "name": "മലയാളം"
- },
- "so": {
- "articles": 5530,
- "english_name": "Somali",
- "name": "Soomaali"
- },
- "bpy": {
- "articles": 25081,
- "english_name": "Bishnupriya Manipuri",
- "name": "ইমার ঠার/বিষ্ণুপ্রিয়া মণিপুরী"
- },
- "tr": {
- "articles": 321169,
- "english_name": "Turkish",
- "name": "Türkçe"
- },
- "mr": {
- "articles": 52667,
- "english_name": "Marathi",
- "name": "मराठी"
- },
- "ce": {
- "articles": 208906,
- "english_name": "Chechen",
- "name": "Нохчийн"
- },
- "yo": {
- "articles": 31774,
- "english_name": "Yoruba",
- "name": "Yorùbá"
- },
- "no": {
- "articles": 500849,
- "english_name": "Norwegian (Bokmål)",
- "name": "Norsk (Bokmål)"
- },
- "fi": {
- "articles": 449407,
- "english_name": "Finnish",
- "name": "Suomi"
- },
- "nah": {
- "articles": 6925,
- "english_name": "Nahuatl",
- "name": "Nāhuatl"
- },
- "ia": {
- "articles": 21225,
- "english_name": "Interlingua",
- "name": "Interlingua"
- },
- "tl": {
- "articles": 77677,
- "english_name": "Tagalog",
- "name": "Tagalog"
- },
- "vep": {
- "articles": 5880,
- "english_name": "Vepsian",
- "name": "Vepsän"
- },
- "ne": {
- "articles": 31633,
- "english_name": "Nepali",
- "name": "नेपाली"
- },
- "cr": {
- "articles": 103,
- "english_name": "Cree",
- "name": "Nehiyaw"
- },
- "gv": {
- "articles": 4968,
- "english_name": "Manx",
- "name": "Gaelg"
- },
- "hif": {
- "articles": 9756,
- "english_name": "Fiji Hindi",
- "name": "Fiji Hindi"
- },
- "ksh": {
- "articles": 2842,
- "english_name": "Ripuarian",
- "name": "Ripoarisch"
- },
- "jbo": {
- "articles": 1233,
- "english_name": "Lojban",
- "name": "Lojban"
- },
- "ilo": {
- "articles": 11592,
- "english_name": "Ilokano",
- "name": "Ilokano"
- },
- "ltg": {
- "articles": 815,
- "english_name": "Latgalian",
- "name": "Latgaļu"
- },
- "dv": {
- "articles": 3024,
- "english_name": "Divehi",
- "name": "ދިވެހިބަސް"
- },
- "vls": {
- "articles": 6703,
- "english_name": "West Flemish",
- "name": "West-Vlams"
- },
- "co": {
- "articles": 5643,
- "english_name": "Corsican",
- "name": "Corsu"
- },
- "bat-smg": {
- "articles": 16427,
- "english_name": "Samogitian",
- "name": "Žemaitėška"
- },
- "zh-min-nan": {
- "articles": 227702,
- "english_name": "Min Nan",
- "name": "Bân-lâm-gú"
- },
- "glk": {
- "articles": 5666,
- "english_name": "Gilaki",
- "name": "گیلکی"
- },
- "bo": {
- "articles": 5827,
- "english_name": "Tibetan",
- "name": "བོད་སྐད"
- },
- "sl": {
- "articles": 163198,
- "english_name": "Slovenian",
- "name": "Slovenščina"
- },
- "os": {
- "articles": 11225,
- "english_name": "Ossetian",
- "name": "Иронау"
- },
- "sat": {
- "articles": 532,
- "english_name": "Santali",
- "name": "ᱥᱟᱱᱛᱟᱲᱤ"
- },
- "qu": {
- "articles": 20900,
- "english_name": "Quechua",
- "name": "Runa Simi"
- },
- "za": {
- "articles": 1867,
- "english_name": "Zhuang",
- "name": "Cuengh"
- },
- "tcy": {
- "articles": 994,
- "english_name": "Tulu",
- "name": "ತುಳು"
- },
- "ps": {
- "articles": 9702,
- "english_name": "Pashto",
- "name": "پښتو"
- },
- "pih": {
- "articles": 681,
- "english_name": "Norfolk",
- "name": "Norfuk"
- },
- "cbk-zam": {
- "articles": 3000,
- "english_name": "Zamboanga Chavacano",
- "name": "Chavacano de Zamboanga"
- },
- "mdf": {
- "articles": 1188,
- "english_name": "Moksha",
- "name": "Мокшень (Mokshanj Kälj)"
- },
- "mi": {
- "articles": 7145,
- "english_name": "Maori",
- "name": "Māori"
- },
- "sco": {
- "articles": 53388,
- "english_name": "Scots",
- "name": "Scots"
- },
- "dsb": {
- "articles": 3210,
- "english_name": "Lower Sorbian",
- "name": "Dolnoserbski"
- },
- "gag": {
- "articles": 2763,
- "english_name": "Gagauz",
- "name": "Gagauz"
- },
- "haw": {
- "articles": 3234,
- "english_name": "Hawaiian",
- "name": "Hawai`i"
- },
- "rm": {
- "articles": 3564,
- "english_name": "Romansh",
- "name": "Rumantsch"
- },
- "bar": {
- "articles": 27285,
- "english_name": "Bavarian",
- "name": "Boarisch"
- },
- "kn": {
- "articles": 24065,
- "english_name": "Kannada",
- "name": "ಕನ್ನಡ"
- },
- "olo": {
- "articles": 2812,
- "english_name": "Livvi-Karelian",
- "name": "Karjalan"
- },
- "als": {
- "articles": 25337,
- "english_name": "Alemannic",
- "name": "Alemannisch"
- },
- "kbp": {
- "articles": 1479,
- "english_name": "Kabiye",
- "name": "Kabɩyɛ"
- },
- "map-bms": {
- "articles": 13336,
- "english_name": "Banyumasan",
- "name": "Basa Banyumasan"
- },
- "koi": {
- "articles": 3451,
- "english_name": "Komi-Permyak",
- "name": "Перем Коми (Perem Komi)"
- },
- "pcd": {
- "articles": 4258,
- "english_name": "Picard",
- "name": "Picard"
- },
- "ru": {
- "articles": 1519724,
- "english_name": "Russian",
- "name": "Русский"
- },
- "su": {
- "articles": 39840,
- "english_name": "Sundanese",
- "name": "Basa Sunda"
- },
- "lt": {
- "articles": 193352,
- "english_name": "Lithuanian",
- "name": "Lietuvių"
- },
- "vi": {
- "articles": 1198961,
- "english_name": "Vietnamese",
- "name": "Tiếng Việt"
- },
- "ms": {
- "articles": 323274,
- "english_name": "Malay",
- "name": "Bahasa Melayu"
- },
- "my": {
- "articles": 42128,
- "english_name": "Burmese",
- "name": "မြန်မာဘာသာ"
- },
- "jv": {
- "articles": 55104,
- "english_name": "Javanese",
- "name": "Basa Jawa"
- },
- "war": {
- "articles": 1263483,
- "english_name": "Waray-Waray",
- "name": "Winaray"
- },
- "cu": {
- "articles": 669,
- "english_name": "Old Church Slavonic",
- "name": "Словѣньскъ"
- },
- "ace": {
- "articles": 7602,
- "english_name": "Acehnese",
- "name": "Bahsa Acèh"
- },
- "gan": {
- "articles": 6411,
- "english_name": "Gan",
- "name": "贛語"
- },
- "xh": {
- "articles": 751,
- "english_name": "Xhosa",
- "name": "isiXhosa"
- },
- "rmy": {
- "articles": 660,
- "english_name": "Romani",
- "name": "romani - रोमानी"
- },
- "xmf": {
- "articles": 12678,
- "english_name": "Mingrelian",
- "name": "მარგალური (Margaluri)"
- },
- "en": {
- "articles": 5781855,
- "english_name": "English",
- "name": "English"
- },
- "nov": {
- "articles": 1661,
- "english_name": "Novial",
- "name": "Novial"
- },
- "ak": {
- "articles": 567,
- "english_name": "Akan",
- "name": "Akana"
- },
- "fiu-vro": {
- "articles": 5463,
- "english_name": "Võro",
- "name": "Võro"
- },
- "mzn": {
- "articles": 12786,
- "english_name": "Mazandarani",
- "name": "مَزِروني"
- },
- "ts": {
- "articles": 583,
- "english_name": "Tsonga",
- "name": "Xitsonga"
- },
- "dz": {
- "articles": 218,
- "english_name": "Dzongkha",
- "name": "ཇོང་ཁ"
- },
- "es": {
- "articles": 1497393,
- "english_name": "Spanish",
- "name": "Español"
- },
- "gu": {
- "articles": 28289,
- "english_name": "Gujarati",
- "name": "ગુજરાતી"
- },
- "br": {
- "articles": 66053,
- "english_name": "Breton",
- "name": "Brezhoneg"
- },
- "sd": {
- "articles": 11114,
- "english_name": "Sindhi",
- "name": "سنڌي، سندھی ، सिन्ध"
- },
- "nrm": {
- "articles": 4029,
- "english_name": "Norman",
- "name": "Nouormand/Normaund"
- },
- "iu": {
- "articles": 401,
- "english_name": "Inuktitut",
- "name": "ᐃᓄᒃᑎᑐᑦ"
- },
- "tum": {
- "articles": 572,
- "english_name": "Tumbuka",
- "name": "chiTumbuka"
- },
- "chr": {
- "articles": 855,
- "english_name": "Cherokee",
- "name": "ᏣᎳᎩ"
- },
- "pa": {
- "articles": 30886,
- "english_name": "Punjabi",
- "name": "ਪੰਜਾਬੀ"
- },
- "ext": {
- "articles": 3020,
- "english_name": "Extremaduran",
- "name": "Estremeñu"
- }
- },
- "yahoo news": [
- "ar",
- "bg",
- "cs",
- "da",
- "de",
- "el",
- "en",
- "es",
- "et",
- "fi",
- "fr",
- "he",
- "hr",
- "hu",
- "it",
- "ja",
- "ko",
- "lt",
- "lv",
- "nl",
- "no",
- "pl",
- "pt",
- "ro",
- "ru",
- "sk",
- "sl",
- "sv",
- "th",
- "tr",
- "zh-CHS",
- "zh-CHT"
- ]
+ "bing": [
+ "af-NA",
+ "am-ET",
+ "ar-AE",
+ "ar-BH",
+ "ar-DZ",
+ "ar-EG",
+ "ar-IQ",
+ "ar-JO",
+ "ar-KW",
+ "ar-LB",
+ "ar-LY",
+ "ar-MA",
+ "ar-MR",
+ "ar-OM",
+ "ar-PS",
+ "ar-QA",
+ "ar-SA",
+ "ar-SD",
+ "ar-SY",
+ "ar-TN",
+ "ar-YE",
+ "az-LATN-AZ",
+ "be-BY",
+ "bg-BG",
+ "bn-BD",
+ "bo-BT",
+ "bs-LATN-BA",
+ "ca-AD",
+ "cs-CZ",
+ "da-DK",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "de-LI",
+ "dv-MV",
+ "el-GR",
+ "en-AG",
+ "en-AI",
+ "en-AS",
+ "en-AU",
+ "en-BB",
+ "en-BM",
+ "en-BS",
+ "en-BW",
+ "en-BZ",
+ "en-CA",
+ "en-CC",
+ "en-CK",
+ "en-CX",
+ "en-CY",
+ "en-DM",
+ "en-FJ",
+ "en-FK",
+ "en-FM",
+ "en-GB",
+ "en-GD",
+ "en-GG",
+ "en-GH",
+ "en-GI",
+ "en-GM",
+ "en-GU",
+ "en-GY",
+ "en-IE",
+ "en-IN",
+ "en-JE",
+ "en-JM",
+ "en-KI",
+ "en-KN",
+ "en-KY",
+ "en-LC",
+ "en-LR",
+ "en-LS",
+ "en-MH",
+ "en-MM",
+ "en-MP",
+ "en-MS",
+ "en-MU",
+ "en-MW",
+ "en-NF",
+ "en-NG",
+ "en-NR",
+ "en-NU",
+ "en-NZ",
+ "en-PG",
+ "en-PH",
+ "en-PN",
+ "en-PW",
+ "en-SB",
+ "en-SC",
+ "en-SG",
+ "en-SH",
+ "en-SL",
+ "en-SS",
+ "en-SZ",
+ "en-TC",
+ "en-TK",
+ "en-TO",
+ "en-TT",
+ "en-TV",
+ "en-TZ",
+ "en-UG",
+ "en-US",
+ "en-VC",
+ "en-VG",
+ "en-VI",
+ "en-VU",
+ "en-WS",
+ "en-ZA",
+ "en-ZM",
+ "en-ZW",
+ "es-AR",
+ "es-BO",
+ "es-CL",
+ "es-CO",
+ "es-CR",
+ "es-DO",
+ "es-EC",
+ "es-ES",
+ "es-GQ",
+ "es-GT",
+ "es-HN",
+ "es-MX",
+ "es-NI",
+ "es-PA",
+ "es-PE",
+ "es-PR",
+ "es-PY",
+ "es-SV",
+ "es-US",
+ "es-UY",
+ "es-VE",
+ "et-EE",
+ "fa-IR",
+ "fi-FI",
+ "fo-FO",
+ "fr-BE",
+ "fr-BF",
+ "fr-BI",
+ "fr-BJ",
+ "fr-BL",
+ "fr-CA",
+ "fr-CD",
+ "fr-CF",
+ "fr-CG",
+ "fr-CH",
+ "fr-CI",
+ "fr-CM",
+ "fr-DJ",
+ "fr-FR",
+ "fr-GA",
+ "fr-GF",
+ "fr-GN",
+ "fr-GP",
+ "fr-HT",
+ "fr-KM",
+ "fr-LU",
+ "fr-MC",
+ "fr-MF",
+ "fr-MG",
+ "fr-ML",
+ "fr-MQ",
+ "fr-NC",
+ "fr-NE",
+ "fr-PF",
+ "fr-PM",
+ "fr-RE",
+ "fr-SN",
+ "fr-TD",
+ "fr-TG",
+ "fr-WF",
+ "fr-YT",
+ "he-IL",
+ "hr-HR",
+ "hu-HU",
+ "hy-AM",
+ "id-ID",
+ "is-IS",
+ "it-IT",
+ "it-SM",
+ "it-VA",
+ "ja-JP",
+ "ka-GE",
+ "kk-KZ",
+ "kl-GL",
+ "km-KH",
+ "ko-KR",
+ "ky-KG",
+ "lo-LA",
+ "lt-LT",
+ "lv-LV",
+ "mk-MK",
+ "mn-MN",
+ "ms-BN",
+ "ms-MY",
+ "mt-MT",
+ "nb-NO",
+ "ne-NP",
+ "nl-AW",
+ "nl-BE",
+ "nl-CW",
+ "nl-NL",
+ "nl-SR",
+ "nl-SX",
+ "pl-PL",
+ "prs-AF",
+ "pt-AO",
+ "pt-BR",
+ "pt-CV",
+ "pt-GW",
+ "pt-MZ",
+ "pt-PT",
+ "pt-ST",
+ "ro-MD",
+ "ro-RO",
+ "ru-RU",
+ "rw-RW",
+ "si-LK",
+ "sk-SK",
+ "sl-SI",
+ "so-SO",
+ "sq-AL",
+ "sr-LATN-RS",
+ "sr-ME",
+ "sv-SE",
+ "sw-KE",
+ "tg-CYRL-TJ",
+ "th-TH",
+ "ti-ER",
+ "tk-TM",
+ "tr-TR",
+ "uk-UA",
+ "ur-PK",
+ "uz-LATN-UZ",
+ "vi-VN",
+ "zh-CN",
+ "zh-HK",
+ "zh-MO",
+ "zh-TW"
+ ],
+ "bing images": [
+ "af-NA",
+ "am-ET",
+ "ar-AE",
+ "ar-BH",
+ "ar-DZ",
+ "ar-EG",
+ "ar-IQ",
+ "ar-JO",
+ "ar-KW",
+ "ar-LB",
+ "ar-LY",
+ "ar-MA",
+ "ar-MR",
+ "ar-OM",
+ "ar-PS",
+ "ar-QA",
+ "ar-SA",
+ "ar-SD",
+ "ar-SY",
+ "ar-TN",
+ "ar-YE",
+ "az-LATN-AZ",
+ "be-BY",
+ "bg-BG",
+ "bn-BD",
+ "bo-BT",
+ "bs-LATN-BA",
+ "ca-AD",
+ "cs-CZ",
+ "da-DK",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "de-LI",
+ "dv-MV",
+ "el-GR",
+ "en-AG",
+ "en-AI",
+ "en-AS",
+ "en-AU",
+ "en-BB",
+ "en-BM",
+ "en-BS",
+ "en-BW",
+ "en-BZ",
+ "en-CA",
+ "en-CC",
+ "en-CK",
+ "en-CX",
+ "en-CY",
+ "en-DM",
+ "en-FJ",
+ "en-FK",
+ "en-FM",
+ "en-GB",
+ "en-GD",
+ "en-GG",
+ "en-GH",
+ "en-GI",
+ "en-GM",
+ "en-GU",
+ "en-GY",
+ "en-IE",
+ "en-IN",
+ "en-JE",
+ "en-JM",
+ "en-KI",
+ "en-KN",
+ "en-KY",
+ "en-LC",
+ "en-LR",
+ "en-LS",
+ "en-MH",
+ "en-MM",
+ "en-MP",
+ "en-MS",
+ "en-MU",
+ "en-MW",
+ "en-NF",
+ "en-NG",
+ "en-NR",
+ "en-NU",
+ "en-NZ",
+ "en-PG",
+ "en-PH",
+ "en-PN",
+ "en-PW",
+ "en-SB",
+ "en-SC",
+ "en-SG",
+ "en-SH",
+ "en-SL",
+ "en-SS",
+ "en-SZ",
+ "en-TC",
+ "en-TK",
+ "en-TO",
+ "en-TT",
+ "en-TV",
+ "en-TZ",
+ "en-UG",
+ "en-US",
+ "en-VC",
+ "en-VG",
+ "en-VI",
+ "en-VU",
+ "en-WS",
+ "en-ZA",
+ "en-ZM",
+ "en-ZW",
+ "es-AR",
+ "es-BO",
+ "es-CL",
+ "es-CO",
+ "es-CR",
+ "es-DO",
+ "es-EC",
+ "es-ES",
+ "es-GQ",
+ "es-GT",
+ "es-HN",
+ "es-MX",
+ "es-NI",
+ "es-PA",
+ "es-PE",
+ "es-PR",
+ "es-PY",
+ "es-SV",
+ "es-US",
+ "es-UY",
+ "es-VE",
+ "et-EE",
+ "fa-IR",
+ "fi-FI",
+ "fo-FO",
+ "fr-BE",
+ "fr-BF",
+ "fr-BI",
+ "fr-BJ",
+ "fr-BL",
+ "fr-CA",
+ "fr-CD",
+ "fr-CF",
+ "fr-CG",
+ "fr-CH",
+ "fr-CI",
+ "fr-CM",
+ "fr-DJ",
+ "fr-FR",
+ "fr-GA",
+ "fr-GF",
+ "fr-GN",
+ "fr-GP",
+ "fr-HT",
+ "fr-KM",
+ "fr-LU",
+ "fr-MC",
+ "fr-MF",
+ "fr-MG",
+ "fr-ML",
+ "fr-MQ",
+ "fr-NC",
+ "fr-NE",
+ "fr-PF",
+ "fr-PM",
+ "fr-RE",
+ "fr-SN",
+ "fr-TD",
+ "fr-TG",
+ "fr-WF",
+ "fr-YT",
+ "he-IL",
+ "hr-HR",
+ "hu-HU",
+ "hy-AM",
+ "id-ID",
+ "is-IS",
+ "it-IT",
+ "it-SM",
+ "it-VA",
+ "ja-JP",
+ "ka-GE",
+ "kk-KZ",
+ "kl-GL",
+ "km-KH",
+ "ko-KR",
+ "ky-KG",
+ "lo-LA",
+ "lt-LT",
+ "lv-LV",
+ "mk-MK",
+ "mn-MN",
+ "ms-BN",
+ "ms-MY",
+ "mt-MT",
+ "nb-NO",
+ "ne-NP",
+ "nl-AW",
+ "nl-BE",
+ "nl-CW",
+ "nl-NL",
+ "nl-SR",
+ "nl-SX",
+ "pl-PL",
+ "prs-AF",
+ "pt-AO",
+ "pt-BR",
+ "pt-CV",
+ "pt-GW",
+ "pt-MZ",
+ "pt-PT",
+ "pt-ST",
+ "ro-MD",
+ "ro-RO",
+ "ru-RU",
+ "rw-RW",
+ "si-LK",
+ "sk-SK",
+ "sl-SI",
+ "so-SO",
+ "sq-AL",
+ "sr-LATN-RS",
+ "sr-ME",
+ "sv-SE",
+ "sw-KE",
+ "tg-CYRL-TJ",
+ "th-TH",
+ "ti-ER",
+ "tk-TM",
+ "tr-TR",
+ "uk-UA",
+ "ur-PK",
+ "uz-LATN-UZ",
+ "vi-VN",
+ "zh-CN",
+ "zh-HK",
+ "zh-MO",
+ "zh-TW"
+ ],
+ "bing news": [
+ "af-NA",
+ "am-ET",
+ "ar-AE",
+ "ar-BH",
+ "ar-DZ",
+ "ar-EG",
+ "ar-IQ",
+ "ar-JO",
+ "ar-KW",
+ "ar-LB",
+ "ar-LY",
+ "ar-MA",
+ "ar-MR",
+ "ar-OM",
+ "ar-PS",
+ "ar-QA",
+ "ar-SA",
+ "ar-SD",
+ "ar-SY",
+ "ar-TN",
+ "ar-YE",
+ "az-LATN-AZ",
+ "be-BY",
+ "bg-BG",
+ "bn-BD",
+ "bo-BT",
+ "bs-LATN-BA",
+ "ca-AD",
+ "cs-CZ",
+ "da-DK",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "de-LI",
+ "dv-MV",
+ "el-GR",
+ "en-AG",
+ "en-AI",
+ "en-AS",
+ "en-AU",
+ "en-BB",
+ "en-BM",
+ "en-BS",
+ "en-BW",
+ "en-BZ",
+ "en-CA",
+ "en-CC",
+ "en-CK",
+ "en-CX",
+ "en-CY",
+ "en-DM",
+ "en-FJ",
+ "en-FK",
+ "en-FM",
+ "en-GB",
+ "en-GD",
+ "en-GG",
+ "en-GH",
+ "en-GI",
+ "en-GM",
+ "en-GU",
+ "en-GY",
+ "en-IE",
+ "en-IN",
+ "en-JE",
+ "en-JM",
+ "en-KI",
+ "en-KN",
+ "en-KY",
+ "en-LC",
+ "en-LR",
+ "en-LS",
+ "en-MH",
+ "en-MM",
+ "en-MP",
+ "en-MS",
+ "en-MU",
+ "en-MW",
+ "en-NF",
+ "en-NG",
+ "en-NR",
+ "en-NU",
+ "en-NZ",
+ "en-PG",
+ "en-PH",
+ "en-PN",
+ "en-PW",
+ "en-SB",
+ "en-SC",
+ "en-SG",
+ "en-SH",
+ "en-SL",
+ "en-SS",
+ "en-SZ",
+ "en-TC",
+ "en-TK",
+ "en-TO",
+ "en-TT",
+ "en-TV",
+ "en-TZ",
+ "en-UG",
+ "en-US",
+ "en-VC",
+ "en-VG",
+ "en-VI",
+ "en-VU",
+ "en-WS",
+ "en-ZA",
+ "en-ZM",
+ "en-ZW",
+ "es-AR",
+ "es-BO",
+ "es-CL",
+ "es-CO",
+ "es-CR",
+ "es-DO",
+ "es-EC",
+ "es-ES",
+ "es-GQ",
+ "es-GT",
+ "es-HN",
+ "es-MX",
+ "es-NI",
+ "es-PA",
+ "es-PE",
+ "es-PR",
+ "es-PY",
+ "es-SV",
+ "es-US",
+ "es-UY",
+ "es-VE",
+ "et-EE",
+ "fa-IR",
+ "fi-FI",
+ "fo-FO",
+ "fr-BE",
+ "fr-BF",
+ "fr-BI",
+ "fr-BJ",
+ "fr-BL",
+ "fr-CA",
+ "fr-CD",
+ "fr-CF",
+ "fr-CG",
+ "fr-CH",
+ "fr-CI",
+ "fr-CM",
+ "fr-DJ",
+ "fr-FR",
+ "fr-GA",
+ "fr-GF",
+ "fr-GN",
+ "fr-GP",
+ "fr-HT",
+ "fr-KM",
+ "fr-LU",
+ "fr-MC",
+ "fr-MF",
+ "fr-MG",
+ "fr-ML",
+ "fr-MQ",
+ "fr-NC",
+ "fr-NE",
+ "fr-PF",
+ "fr-PM",
+ "fr-RE",
+ "fr-SN",
+ "fr-TD",
+ "fr-TG",
+ "fr-WF",
+ "fr-YT",
+ "he-IL",
+ "hr-HR",
+ "hu-HU",
+ "hy-AM",
+ "id-ID",
+ "is-IS",
+ "it-IT",
+ "it-SM",
+ "it-VA",
+ "ja-JP",
+ "ka-GE",
+ "kk-KZ",
+ "kl-GL",
+ "km-KH",
+ "ko-KR",
+ "ky-KG",
+ "lo-LA",
+ "lt-LT",
+ "lv-LV",
+ "mk-MK",
+ "mn-MN",
+ "ms-BN",
+ "ms-MY",
+ "mt-MT",
+ "nb-NO",
+ "ne-NP",
+ "nl-AW",
+ "nl-BE",
+ "nl-CW",
+ "nl-NL",
+ "nl-SR",
+ "nl-SX",
+ "pl-PL",
+ "prs-AF",
+ "pt-AO",
+ "pt-BR",
+ "pt-CV",
+ "pt-GW",
+ "pt-MZ",
+ "pt-PT",
+ "pt-ST",
+ "ro-MD",
+ "ro-RO",
+ "ru-RU",
+ "rw-RW",
+ "si-LK",
+ "sk-SK",
+ "sl-SI",
+ "so-SO",
+ "sq-AL",
+ "sr-LATN-RS",
+ "sr-ME",
+ "sv-SE",
+ "sw-KE",
+ "tg-CYRL-TJ",
+ "th-TH",
+ "ti-ER",
+ "tk-TM",
+ "tr-TR",
+ "uk-UA",
+ "ur-PK",
+ "uz-LATN-UZ",
+ "vi-VN",
+ "zh-CN",
+ "zh-HK",
+ "zh-MO",
+ "zh-TW"
+ ],
+ "bing videos": [
+ "af-NA",
+ "am-ET",
+ "ar-AE",
+ "ar-BH",
+ "ar-DZ",
+ "ar-EG",
+ "ar-IQ",
+ "ar-JO",
+ "ar-KW",
+ "ar-LB",
+ "ar-LY",
+ "ar-MA",
+ "ar-MR",
+ "ar-OM",
+ "ar-PS",
+ "ar-QA",
+ "ar-SA",
+ "ar-SD",
+ "ar-SY",
+ "ar-TN",
+ "ar-YE",
+ "az-LATN-AZ",
+ "be-BY",
+ "bg-BG",
+ "bn-BD",
+ "bo-BT",
+ "bs-LATN-BA",
+ "ca-AD",
+ "cs-CZ",
+ "da-DK",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "de-LI",
+ "dv-MV",
+ "el-GR",
+ "en-AG",
+ "en-AI",
+ "en-AS",
+ "en-AU",
+ "en-BB",
+ "en-BM",
+ "en-BS",
+ "en-BW",
+ "en-BZ",
+ "en-CA",
+ "en-CC",
+ "en-CK",
+ "en-CX",
+ "en-CY",
+ "en-DM",
+ "en-FJ",
+ "en-FK",
+ "en-FM",
+ "en-GB",
+ "en-GD",
+ "en-GG",
+ "en-GH",
+ "en-GI",
+ "en-GM",
+ "en-GU",
+ "en-GY",
+ "en-IE",
+ "en-IN",
+ "en-JE",
+ "en-JM",
+ "en-KI",
+ "en-KN",
+ "en-KY",
+ "en-LC",
+ "en-LR",
+ "en-LS",
+ "en-MH",
+ "en-MM",
+ "en-MP",
+ "en-MS",
+ "en-MU",
+ "en-MW",
+ "en-NF",
+ "en-NG",
+ "en-NR",
+ "en-NU",
+ "en-NZ",
+ "en-PG",
+ "en-PH",
+ "en-PN",
+ "en-PW",
+ "en-SB",
+ "en-SC",
+ "en-SG",
+ "en-SH",
+ "en-SL",
+ "en-SS",
+ "en-SZ",
+ "en-TC",
+ "en-TK",
+ "en-TO",
+ "en-TT",
+ "en-TV",
+ "en-TZ",
+ "en-UG",
+ "en-US",
+ "en-VC",
+ "en-VG",
+ "en-VI",
+ "en-VU",
+ "en-WS",
+ "en-ZA",
+ "en-ZM",
+ "en-ZW",
+ "es-AR",
+ "es-BO",
+ "es-CL",
+ "es-CO",
+ "es-CR",
+ "es-DO",
+ "es-EC",
+ "es-ES",
+ "es-GQ",
+ "es-GT",
+ "es-HN",
+ "es-MX",
+ "es-NI",
+ "es-PA",
+ "es-PE",
+ "es-PR",
+ "es-PY",
+ "es-SV",
+ "es-US",
+ "es-UY",
+ "es-VE",
+ "et-EE",
+ "fa-IR",
+ "fi-FI",
+ "fo-FO",
+ "fr-BE",
+ "fr-BF",
+ "fr-BI",
+ "fr-BJ",
+ "fr-BL",
+ "fr-CA",
+ "fr-CD",
+ "fr-CF",
+ "fr-CG",
+ "fr-CH",
+ "fr-CI",
+ "fr-CM",
+ "fr-DJ",
+ "fr-FR",
+ "fr-GA",
+ "fr-GF",
+ "fr-GN",
+ "fr-GP",
+ "fr-HT",
+ "fr-KM",
+ "fr-LU",
+ "fr-MC",
+ "fr-MF",
+ "fr-MG",
+ "fr-ML",
+ "fr-MQ",
+ "fr-NC",
+ "fr-NE",
+ "fr-PF",
+ "fr-PM",
+ "fr-RE",
+ "fr-SN",
+ "fr-TD",
+ "fr-TG",
+ "fr-WF",
+ "fr-YT",
+ "he-IL",
+ "hr-HR",
+ "hu-HU",
+ "hy-AM",
+ "id-ID",
+ "is-IS",
+ "it-IT",
+ "it-SM",
+ "it-VA",
+ "ja-JP",
+ "ka-GE",
+ "kk-KZ",
+ "kl-GL",
+ "km-KH",
+ "ko-KR",
+ "ky-KG",
+ "lo-LA",
+ "lt-LT",
+ "lv-LV",
+ "mk-MK",
+ "mn-MN",
+ "ms-BN",
+ "ms-MY",
+ "mt-MT",
+ "nb-NO",
+ "ne-NP",
+ "nl-AW",
+ "nl-BE",
+ "nl-CW",
+ "nl-NL",
+ "nl-SR",
+ "nl-SX",
+ "pl-PL",
+ "prs-AF",
+ "pt-AO",
+ "pt-BR",
+ "pt-CV",
+ "pt-GW",
+ "pt-MZ",
+ "pt-PT",
+ "pt-ST",
+ "ro-MD",
+ "ro-RO",
+ "ru-RU",
+ "rw-RW",
+ "si-LK",
+ "sk-SK",
+ "sl-SI",
+ "so-SO",
+ "sq-AL",
+ "sr-LATN-RS",
+ "sr-ME",
+ "sv-SE",
+ "sw-KE",
+ "tg-CYRL-TJ",
+ "th-TH",
+ "ti-ER",
+ "tk-TM",
+ "tr-TR",
+ "uk-UA",
+ "ur-PK",
+ "uz-LATN-UZ",
+ "vi-VN",
+ "zh-CN",
+ "zh-HK",
+ "zh-MO",
+ "zh-TW"
+ ],
+ "dailymotion": {
+ "aa": {
+ "english_name": "Afar"
+ },
+ "aaa": {
+ "english_name": "Ghotuo"
+ },
+ "aab": {
+ "english_name": "Alumu-Tesu"
+ },
+ "aac": {
+ "english_name": "Ari"
+ },
+ "aad": {
+ "english_name": "Amal"
+ },
+ "aae": {
+ "english_name": "Albanian, Arb\u00ebresh\u00eb"
+ },
+ "aaf": {
+ "english_name": "Aranadan"
+ },
+ "aag": {
+ "english_name": "Ambrak"
+ },
+ "aah": {
+ "english_name": "Arapesh, Abu'"
+ },
+ "aai": {
+ "english_name": "Arifama-Miniafia"
+ },
+ "aak": {
+ "english_name": "Ankave"
+ },
+ "aal": {
+ "english_name": "Afade"
+ },
+ "aan": {
+ "english_name": "Anamb\u00e9"
+ },
+ "aao": {
+ "english_name": "Arabic, Algerian Saharan"
+ },
+ "aap": {
+ "english_name": "Ar\u00e1ra, Par\u00e1"
+ },
+ "aaq": {
+ "english_name": "Abnaki, Eastern"
+ },
+ "aas": {
+ "english_name": "Aas\u00e1x"
+ },
+ "aat": {
+ "english_name": "Albanian, Arvanitika"
+ },
+ "aau": {
+ "english_name": "Abau"
+ },
+ "aaw": {
+ "english_name": "Solong"
+ },
+ "aax": {
+ "english_name": "Mandobo Atas"
+ },
+ "aaz": {
+ "english_name": "Amarasi"
+ },
+ "ab": {
+ "english_name": "Abkhazian"
+ },
+ "aba": {
+ "english_name": "Ab\u00e9"
+ },
+ "abb": {
+ "english_name": "Bankon"
+ },
+ "abc": {
+ "english_name": "Ayta, Ambala"
+ },
+ "abd": {
+ "english_name": "Manide"
+ },
+ "abe": {
+ "english_name": "Abnaki, Western"
+ },
+ "abf": {
+ "english_name": "Abai Sungai"
+ },
+ "abg": {
+ "english_name": "Abaga"
+ },
+ "abh": {
+ "english_name": "Arabic, Tajiki"
+ },
+ "abi": {
+ "english_name": "Abidji"
+ },
+ "abj": {
+ "english_name": "Aka-Bea"
+ },
+ "abl": {
+ "english_name": "Lampung Nyo"
+ },
+ "abm": {
+ "english_name": "Abanyom"
+ },
+ "abn": {
+ "english_name": "Abua"
+ },
+ "abo": {
+ "english_name": "Abon"
+ },
+ "abp": {
+ "english_name": "Ayta, Abellen"
+ },
+ "abq": {
+ "english_name": "Abaza"
+ },
+ "abr": {
+ "english_name": "Abron"
+ },
+ "abs": {
+ "english_name": "Malay, Ambonese"
+ },
+ "abt": {
+ "english_name": "Ambulas"
+ },
+ "abu": {
+ "english_name": "Abure"
+ },
+ "abv": {
+ "english_name": "Arabic, Baharna"
+ },
+ "abw": {
+ "english_name": "Pal"
+ },
+ "abx": {
+ "english_name": "Inabaknon"
+ },
+ "aby": {
+ "english_name": "Aneme Wake"
+ },
+ "abz": {
+ "english_name": "Abui"
+ },
+ "aca": {
+ "english_name": "Achagua"
+ },
+ "acb": {
+ "english_name": "\u00c1nc\u00e1"
+ },
+ "acd": {
+ "english_name": "Gikyode"
+ },
+ "ace": {
+ "english_name": "Achinese"
+ },
+ "acf": {
+ "english_name": "Creole French, Saint Lucian"
+ },
+ "ach": {
+ "english_name": "Acoli"
+ },
+ "aci": {
+ "english_name": "Aka-Cari"
+ },
+ "ack": {
+ "english_name": "Aka-Kora"
+ },
+ "acl": {
+ "english_name": "Akar-Bale"
+ },
+ "acm": {
+ "english_name": "Arabic, Mesopotamian"
+ },
+ "acn": {
+ "english_name": "Achang"
+ },
+ "acp": {
+ "english_name": "Acipa, Eastern"
+ },
+ "acq": {
+ "english_name": "Arabic, Ta'izzi-Adeni"
+ },
+ "acr": {
+ "english_name": "Achi"
+ },
+ "acs": {
+ "english_name": "Acro\u00e1"
+ },
+ "act": {
+ "english_name": "Achterhoeks"
+ },
+ "acu": {
+ "english_name": "Achuar-Shiwiar"
+ },
+ "acv": {
+ "english_name": "Achumawi"
+ },
+ "acw": {
+ "english_name": "Arabic, Hijazi"
+ },
+ "acx": {
+ "english_name": "Arabic, Omani"
+ },
+ "acy": {
+ "english_name": "Arabic, Cypriot"
+ },
+ "acz": {
+ "english_name": "Acheron"
+ },
+ "ada": {
+ "english_name": "Adangme"
+ },
+ "adb": {
+ "english_name": "Adabe"
+ },
+ "add": {
+ "english_name": "Dzodinka"
+ },
+ "ade": {
+ "english_name": "Adele"
+ },
+ "adf": {
+ "english_name": "Arabic, Dhofari"
+ },
+ "adg": {
+ "english_name": "Andegerebinha"
+ },
+ "adh": {
+ "english_name": "Adhola"
+ },
+ "adi": {
+ "english_name": "Adi"
+ },
+ "adj": {
+ "english_name": "Adioukrou"
+ },
+ "adl": {
+ "english_name": "Galo"
+ },
+ "adn": {
+ "english_name": "Adang"
+ },
+ "ado": {
+ "english_name": "Abu"
+ },
+ "adq": {
+ "english_name": "Adangbe"
+ },
+ "adr": {
+ "english_name": "Adonara"
+ },
+ "ads": {
+ "english_name": "Adamorobe Sign Language"
+ },
+ "adt": {
+ "english_name": "Adnyamathanha"
+ },
+ "adu": {
+ "english_name": "Aduge"
+ },
+ "adw": {
+ "english_name": "Amundava"
+ },
+ "adx": {
+ "english_name": "Tibetan, Amdo"
+ },
+ "ady": {
+ "english_name": "Adyghe"
+ },
+ "adz": {
+ "english_name": "Adzera"
+ },
+ "ae": {
+ "english_name": "Avestan"
+ },
+ "aea": {
+ "english_name": "Areba"
+ },
+ "aeb": {
+ "english_name": "Arabic, Tunisian"
+ },
+ "aec": {
+ "english_name": "Arabic, Saidi"
+ },
+ "aed": {
+ "english_name": "Argentine Sign Language"
+ },
+ "aee": {
+ "english_name": "Pashayi, Northeast"
+ },
+ "aek": {
+ "english_name": "Haeke"
+ },
+ "ael": {
+ "english_name": "Ambele"
+ },
+ "aem": {
+ "english_name": "Arem"
+ },
+ "aen": {
+ "english_name": "Armenian Sign Language"
+ },
+ "aeq": {
+ "english_name": "Aer"
+ },
+ "aer": {
+ "english_name": "Arrernte, Eastern"
+ },
+ "aes": {
+ "english_name": "Alsea"
+ },
+ "aeu": {
+ "english_name": "Akeu"
+ },
+ "aew": {
+ "english_name": "Ambakich"
+ },
+ "aey": {
+ "english_name": "Amele"
+ },
+ "aez": {
+ "english_name": "Aeka"
+ },
+ "af": {
+ "english_name": "Afrikaans",
+ "name": "Afrikaans"
+ },
+ "afb": {
+ "english_name": "Arabic, Gulf"
+ },
+ "afd": {
+ "english_name": "Andai"
+ },
+ "afe": {
+ "english_name": "Putukwam"
+ },
+ "afg": {
+ "english_name": "Afghan Sign Language"
+ },
+ "afh": {
+ "english_name": "Afrihili"
+ },
+ "afi": {
+ "english_name": "Akrukay"
+ },
+ "afk": {
+ "english_name": "Nanubae"
+ },
+ "afn": {
+ "english_name": "Defaka"
+ },
+ "afo": {
+ "english_name": "Eloyi"
+ },
+ "afp": {
+ "english_name": "Tapei"
+ },
+ "afs": {
+ "english_name": "Creole, Afro-Seminole"
+ },
+ "aft": {
+ "english_name": "Afitti"
+ },
+ "afu": {
+ "english_name": "Awutu"
+ },
+ "afz": {
+ "english_name": "Obokuitai"
+ },
+ "aga": {
+ "english_name": "Aguano"
+ },
+ "agb": {
+ "english_name": "Legbo"
+ },
+ "agc": {
+ "english_name": "Agatu"
+ },
+ "agd": {
+ "english_name": "Agarabi"
+ },
+ "age": {
+ "english_name": "Angal"
+ },
+ "agf": {
+ "english_name": "Arguni"
+ },
+ "agg": {
+ "english_name": "Angor"
+ },
+ "agh": {
+ "english_name": "Ngelima"
+ },
+ "agi": {
+ "english_name": "Agariya"
+ },
+ "agj": {
+ "english_name": "Argobba"
+ },
+ "agk": {
+ "english_name": "Agta, Isarog"
+ },
+ "agl": {
+ "english_name": "Fembe"
+ },
+ "agm": {
+ "english_name": "Angaataha"
+ },
+ "agn": {
+ "english_name": "Agutaynen"
+ },
+ "ago": {
+ "english_name": "Tainae"
+ },
+ "agq": {
+ "english_name": "Aghem"
+ },
+ "agr": {
+ "english_name": "Aguaruna"
+ },
+ "ags": {
+ "english_name": "Esimbi"
+ },
+ "agt": {
+ "english_name": "Agta, Central Cagayan"
+ },
+ "agu": {
+ "english_name": "Aguacateco"
+ },
+ "agv": {
+ "english_name": "Dumagat, Remontado"
+ },
+ "agw": {
+ "english_name": "Kahua"
+ },
+ "agx": {
+ "english_name": "Aghul"
+ },
+ "agy": {
+ "english_name": "Alta, Southern"
+ },
+ "agz": {
+ "english_name": "Agta, Mt. Iriga"
+ },
+ "aha": {
+ "english_name": "Ahanta"
+ },
+ "ahb": {
+ "english_name": "Axamb"
+ },
+ "ahg": {
+ "english_name": "Qimant"
+ },
+ "ahh": {
+ "english_name": "Aghu"
+ },
+ "ahi": {
+ "english_name": "Aizi, Tiagbamrin"
+ },
+ "ahk": {
+ "english_name": "Akha"
+ },
+ "ahl": {
+ "english_name": "Igo"
+ },
+ "ahm": {
+ "english_name": "Aizi, Mobumrin"
+ },
+ "ahn": {
+ "english_name": "\u00c0h\u00e0n"
+ },
+ "aho": {
+ "english_name": "Ahom"
+ },
+ "ahp": {
+ "english_name": "Aizi, Aproumu"
+ },
+ "ahr": {
+ "english_name": "Ahirani"
+ },
+ "ahs": {
+ "english_name": "Ashe"
+ },
+ "aht": {
+ "english_name": "Ahtena"
+ },
+ "aia": {
+ "english_name": "Arosi"
+ },
+ "aib": {
+ "english_name": "Ainu (China)"
+ },
+ "aic": {
+ "english_name": "Ainbai"
+ },
+ "aid": {
+ "english_name": "Alngith"
+ },
+ "aie": {
+ "english_name": "Amara"
+ },
+ "aif": {
+ "english_name": "Agi"
+ },
+ "aig": {
+ "english_name": "Creole English, Antigua and Barbuda"
+ },
+ "aih": {
+ "english_name": "Ai-Cham"
+ },
+ "aii": {
+ "english_name": "Neo-Aramaic, Assyrian"
+ },
+ "aij": {
+ "english_name": "Lishanid Noshan"
+ },
+ "aik": {
+ "english_name": "Ake"
+ },
+ "ail": {
+ "english_name": "Aimele"
+ },
+ "aim": {
+ "english_name": "Aimol"
+ },
+ "ain": {
+ "english_name": "Ainu (Japan)"
+ },
+ "aio": {
+ "english_name": "Aiton"
+ },
+ "aip": {
+ "english_name": "Burumakok"
+ },
+ "aiq": {
+ "english_name": "Aimaq"
+ },
+ "air": {
+ "english_name": "Airoran"
+ },
+ "ais": {
+ "english_name": "Amis, Nataoran"
+ },
+ "ait": {
+ "english_name": "Arikem"
+ },
+ "aiw": {
+ "english_name": "Aari"
+ },
+ "aix": {
+ "english_name": "Aighon"
+ },
+ "aiy": {
+ "english_name": "Ali"
+ },
+ "aja": {
+ "english_name": "Aja (Sudan)"
+ },
+ "ajg": {
+ "english_name": "Aja (Benin)"
+ },
+ "aji": {
+ "english_name": "Aji\u00eb"
+ },
+ "ajn": {
+ "english_name": "Andajin"
+ },
+ "ajp": {
+ "english_name": "Arabic, South Levantine"
+ },
+ "ajt": {
+ "english_name": "Arabic, Judeo-Tunisian"
+ },
+ "aju": {
+ "english_name": "Arabic, Judeo-Moroccan"
+ },
+ "ajw": {
+ "english_name": "Ajawa"
+ },
+ "ajz": {
+ "english_name": "Karbi, Amri"
+ },
+ "ak": {
+ "english_name": "Akan"
+ },
+ "akb": {
+ "english_name": "Batak Angkola"
+ },
+ "akc": {
+ "english_name": "Mpur"
+ },
+ "akd": {
+ "english_name": "Ukpet-Ehom"
+ },
+ "ake": {
+ "english_name": "Akawaio"
+ },
+ "akf": {
+ "english_name": "Akpa"
+ },
+ "akg": {
+ "english_name": "Anakalangu"
+ },
+ "akh": {
+ "english_name": "Angal Heneng"
+ },
+ "aki": {
+ "english_name": "Aiome"
+ },
+ "akj": {
+ "english_name": "Aka-Jeru"
+ },
+ "akk": {
+ "english_name": "Akkadian"
+ },
+ "akl": {
+ "english_name": "Aklanon"
+ },
+ "akm": {
+ "english_name": "Aka-Bo"
+ },
+ "ako": {
+ "english_name": "Akurio"
+ },
+ "akp": {
+ "english_name": "Siwu"
+ },
+ "akq": {
+ "english_name": "Ak"
+ },
+ "akr": {
+ "english_name": "Araki"
+ },
+ "aks": {
+ "english_name": "Akaselem"
+ },
+ "akt": {
+ "english_name": "Akolet"
+ },
+ "aku": {
+ "english_name": "Akum"
+ },
+ "akv": {
+ "english_name": "Akhvakh"
+ },
+ "akw": {
+ "english_name": "Akwa"
+ },
+ "akx": {
+ "english_name": "Aka-Kede"
+ },
+ "aky": {
+ "english_name": "Aka-Kol"
+ },
+ "akz": {
+ "english_name": "Alabama"
+ },
+ "ala": {
+ "english_name": "Alago"
+ },
+ "alc": {
+ "english_name": "Qawasqar"
+ },
+ "ald": {
+ "english_name": "Alladian"
+ },
+ "ale": {
+ "english_name": "Aleut"
+ },
+ "alf": {
+ "english_name": "Alege"
+ },
+ "alh": {
+ "english_name": "Alawa"
+ },
+ "ali": {
+ "english_name": "Amaimon"
+ },
+ "alj": {
+ "english_name": "Alangan"
+ },
+ "alk": {
+ "english_name": "Alak"
+ },
+ "all": {
+ "english_name": "Allar"
+ },
+ "alm": {
+ "english_name": "Amblong"
+ },
+ "aln": {
+ "english_name": "Albanian, Gheg"
+ },
+ "alo": {
+ "english_name": "Larike-Wakasihu"
+ },
+ "alp": {
+ "english_name": "Alune"
+ },
+ "alq": {
+ "english_name": "Algonquin"
+ },
+ "alr": {
+ "english_name": "Alutor"
+ },
+ "als": {
+ "english_name": "Albanian, Tosk"
+ },
+ "alt": {
+ "english_name": "Altai, Southern"
+ },
+ "alu": {
+ "english_name": "'Are'are"
+ },
+ "alw": {
+ "english_name": "Alaba-K\u2019abeena"
+ },
+ "alx": {
+ "english_name": "Amol"
+ },
+ "aly": {
+ "english_name": "Alyawarr"
+ },
+ "alz": {
+ "english_name": "Alur"
+ },
+ "am": {
+ "english_name": "Amharic",
+ "name": "\u12a0\u121b\u122d\u129b"
+ },
+ "ama": {
+ "english_name": "Amanay\u00e9"
+ },
+ "amb": {
+ "english_name": "Ambo"
+ },
+ "amc": {
+ "english_name": "Amahuaca"
+ },
+ "ame": {
+ "english_name": "Yanesha'"
+ },
+ "amf": {
+ "english_name": "Hamer-Banna"
+ },
+ "amg": {
+ "english_name": "Amurdak"
+ },
+ "ami": {
+ "english_name": "Amis"
+ },
+ "amj": {
+ "english_name": "Amdang"
+ },
+ "amk": {
+ "english_name": "Ambai"
+ },
+ "aml": {
+ "english_name": "War-Jaintia"
+ },
+ "amm": {
+ "english_name": "Ama (Papua New Guinea)"
+ },
+ "amn": {
+ "english_name": "Amanab"
+ },
+ "amo": {
+ "english_name": "Amo"
+ },
+ "amp": {
+ "english_name": "Alamblak"
+ },
+ "amq": {
+ "english_name": "Amahai"
+ },
+ "amr": {
+ "english_name": "Amarakaeri"
+ },
+ "ams": {
+ "english_name": "Amami-Oshima, Southern"
+ },
+ "amt": {
+ "english_name": "Amto"
+ },
+ "amu": {
+ "english_name": "Amuzgo, Guerrero"
+ },
+ "amv": {
+ "english_name": "Ambelau"
+ },
+ "amw": {
+ "english_name": "Neo-Aramaic, Western"
+ },
+ "amx": {
+ "english_name": "Anmatyerre"
+ },
+ "amy": {
+ "english_name": "Ami"
+ },
+ "amz": {
+ "english_name": "Atampaya"
+ },
+ "an": {
+ "english_name": "Aragonese"
+ },
+ "ana": {
+ "english_name": "Andaqui"
+ },
+ "anb": {
+ "english_name": "Andoa"
+ },
+ "anc": {
+ "english_name": "Ngas"
+ },
+ "and": {
+ "english_name": "Ansus"
+ },
+ "ane": {
+ "english_name": "X\u00e2r\u00e2c\u00f9\u00f9"
+ },
+ "anf": {
+ "english_name": "Animere"
+ },
+ "ang": {
+ "english_name": "English, Old (ca. 450-1100)"
+ },
+ "anh": {
+ "english_name": "Nend"
+ },
+ "ani": {
+ "english_name": "Andi"
+ },
+ "anj": {
+ "english_name": "Anor"
+ },
+ "ank": {
+ "english_name": "Goemai"
+ },
+ "anl": {
+ "english_name": "Chin, Anu-Hkongso"
+ },
+ "anm": {
+ "english_name": "Anal"
+ },
+ "ann": {
+ "english_name": "Obolo"
+ },
+ "ano": {
+ "english_name": "Andoque"
+ },
+ "anp": {
+ "english_name": "Angika"
+ },
+ "anq": {
+ "english_name": "Jarawa (India)"
+ },
+ "anr": {
+ "english_name": "Andh"
+ },
+ "ans": {
+ "english_name": "Anserma"
+ },
+ "ant": {
+ "english_name": "Antakarinya"
+ },
+ "anu": {
+ "english_name": "Anuak"
+ },
+ "anv": {
+ "english_name": "Denya"
+ },
+ "anw": {
+ "english_name": "Anaang"
+ },
+ "anx": {
+ "english_name": "Andra-Hus"
+ },
+ "any": {
+ "english_name": "Anyin"
+ },
+ "anz": {
+ "english_name": "Anem"
+ },
+ "aoa": {
+ "english_name": "Angolar"
+ },
+ "aob": {
+ "english_name": "Abom"
+ },
+ "aoc": {
+ "english_name": "Pemon"
+ },
+ "aod": {
+ "english_name": "Andarum"
+ },
+ "aoe": {
+ "english_name": "Angal Enen"
+ },
+ "aof": {
+ "english_name": "Bragat"
+ },
+ "aog": {
+ "english_name": "Angoram"
+ },
+ "aoh": {
+ "english_name": "Arma"
+ },
+ "aoi": {
+ "english_name": "Anindilyakwa"
+ },
+ "aoj": {
+ "english_name": "Mufian"
+ },
+ "aok": {
+ "english_name": "Arh\u00f6"
+ },
+ "aol": {
+ "english_name": "Alor"
+ },
+ "aom": {
+ "english_name": "\u00d6mie"
+ },
+ "aon": {
+ "english_name": "Arapesh, Bumbita"
+ },
+ "aor": {
+ "english_name": "Aore"
+ },
+ "aos": {
+ "english_name": "Taikat"
+ },
+ "aot": {
+ "english_name": "A'tong"
+ },
+ "aou": {
+ "english_name": "A'ou"
+ },
+ "aox": {
+ "english_name": "Atorada"
+ },
+ "aoz": {
+ "english_name": "Uab Meto"
+ },
+ "apb": {
+ "english_name": "Sa'a"
+ },
+ "apc": {
+ "english_name": "Arabic, North Levantine"
+ },
+ "apd": {
+ "english_name": "Arabic, Sudanese"
+ },
+ "ape": {
+ "english_name": "Bukiyip"
+ },
+ "apf": {
+ "english_name": "Agta, Pahanan"
+ },
+ "apg": {
+ "english_name": "Ampanang"
+ },
+ "aph": {
+ "english_name": "Athpariya"
+ },
+ "api": {
+ "english_name": "Apiak\u00e1"
+ },
+ "apj": {
+ "english_name": "Apache, Jicarilla"
+ },
+ "apk": {
+ "english_name": "Apache, Kiowa"
+ },
+ "apl": {
+ "english_name": "Apache, Lipan"
+ },
+ "apm": {
+ "english_name": "Apache, Mescalero-Chiricahua"
+ },
+ "apn": {
+ "english_name": "Apinay\u00e9"
+ },
+ "apo": {
+ "english_name": "Ambul"
+ },
+ "app": {
+ "english_name": "Apma"
+ },
+ "apq": {
+ "english_name": "A-Pucikwar"
+ },
+ "apr": {
+ "english_name": "Arop-Lokep"
+ },
+ "aps": {
+ "english_name": "Arop-Sissano"
+ },
+ "apt": {
+ "english_name": "Apatani"
+ },
+ "apu": {
+ "english_name": "Apurin\u00e3"
+ },
+ "apv": {
+ "english_name": "Alapmunte"
+ },
+ "apw": {
+ "english_name": "Apache, Western"
+ },
+ "apx": {
+ "english_name": "Aputai"
+ },
+ "apy": {
+ "english_name": "Apala\u00ed"
+ },
+ "apz": {
+ "english_name": "Safeyoka"
+ },
+ "aqc": {
+ "english_name": "Archi"
+ },
+ "aqd": {
+ "english_name": "Dogon, Ampari"
+ },
+ "aqg": {
+ "english_name": "Arigidi"
+ },
+ "aqm": {
+ "english_name": "Atohwaim"
+ },
+ "aqn": {
+ "english_name": "Alta, Northern"
+ },
+ "aqp": {
+ "english_name": "Atakapa"
+ },
+ "aqr": {
+ "english_name": "Arh\u00e2"
+ },
+ "aqz": {
+ "english_name": "Akuntsu"
+ },
+ "ar": {
+ "english_name": "Arabic",
+ "name": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629"
+ },
+ "arb": {
+ "english_name": "Arabic, Standard"
+ },
+ "arc": {
+ "english_name": "Aramaic, Official (700-300 BCE)"
+ },
+ "ard": {
+ "english_name": "Arabana"
+ },
+ "are": {
+ "english_name": "Arrarnta, Western"
+ },
+ "arh": {
+ "english_name": "Arhuaco"
+ },
+ "ari": {
+ "english_name": "Arikara"
+ },
+ "arj": {
+ "english_name": "Arapaso"
+ },
+ "ark": {
+ "english_name": "Arikap\u00fa"
+ },
+ "arl": {
+ "english_name": "Arabela"
+ },
+ "arn": {
+ "english_name": "Mapudungun"
+ },
+ "aro": {
+ "english_name": "Araona"
+ },
+ "arp": {
+ "english_name": "Arapaho"
+ },
+ "arq": {
+ "english_name": "Arabic, Algerian"
+ },
+ "arr": {
+ "english_name": "Karo (Brazil)"
+ },
+ "ars": {
+ "english_name": "Arabic, Najdi"
+ },
+ "aru": {
+ "english_name": "Aru\u00e1 (Amazonas State)"
+ },
+ "arv": {
+ "english_name": "Arbore"
+ },
+ "arw": {
+ "english_name": "Arawak"
+ },
+ "arx": {
+ "english_name": "Aru\u00e1 (Rodonia State)"
+ },
+ "ary": {
+ "english_name": "Arabic, Moroccan"
+ },
+ "arz": {
+ "english_name": "Arabic, Egyptian"
+ },
+ "as": {
+ "english_name": "Assamese"
+ },
+ "asa": {
+ "english_name": "Asu (Tanzania)"
+ },
+ "asb": {
+ "english_name": "Assiniboine"
+ },
+ "asc": {
+ "english_name": "Asmat, Casuarina Coast"
+ },
+ "asd": {
+ "english_name": "Asas"
+ },
+ "ase": {
+ "english_name": "American Sign Language"
+ },
+ "asf": {
+ "english_name": "Australian Sign Language"
+ },
+ "asg": {
+ "english_name": "Cishingini"
+ },
+ "ash": {
+ "english_name": "Abishira"
+ },
+ "asi": {
+ "english_name": "Buruwai"
+ },
+ "asj": {
+ "english_name": "Sari"
+ },
+ "ask": {
+ "english_name": "Ashkun"
+ },
+ "asl": {
+ "english_name": "Asilulu"
+ },
+ "asn": {
+ "english_name": "Asurin\u00ed, Xing\u00fa"
+ },
+ "aso": {
+ "english_name": "Dano"
+ },
+ "asp": {
+ "english_name": "Algerian Sign Language"
+ },
+ "asq": {
+ "english_name": "Austrian Sign Language"
+ },
+ "asr": {
+ "english_name": "Asuri"
+ },
+ "ass": {
+ "english_name": "Ipulo"
+ },
+ "ast": {
+ "english_name": "Asturian",
+ "name": "Asturianu"
+ },
+ "asu": {
+ "english_name": "Asurini, Tocantins"
+ },
+ "asv": {
+ "english_name": "Asoa"
+ },
+ "asw": {
+ "english_name": "Australian Aborigines Sign Language"
+ },
+ "asx": {
+ "english_name": "Muratayak"
+ },
+ "asy": {
+ "english_name": "Asmat, Yaosakor"
+ },
+ "asz": {
+ "english_name": "As"
+ },
+ "ata": {
+ "english_name": "Pele-Ata"
+ },
+ "atb": {
+ "english_name": "Zaiwa"
+ },
+ "atc": {
+ "english_name": "Atsahuaca"
+ },
+ "atd": {
+ "english_name": "Manobo, Ata"
+ },
+ "ate": {
+ "english_name": "Atemble"
+ },
+ "atg": {
+ "english_name": "Ivbie North-Okpela-Arhe"
+ },
+ "ati": {
+ "english_name": "Atti\u00e9"
+ },
+ "atj": {
+ "english_name": "Atikamekw"
+ },
+ "atk": {
+ "english_name": "Ati"
+ },
+ "atl": {
+ "english_name": "Agta, Mt. Iraya"
+ },
+ "atm": {
+ "english_name": "Ata"
+ },
+ "atn": {
+ "english_name": "Ashtiani"
+ },
+ "ato": {
+ "english_name": "Atong"
+ },
+ "atp": {
+ "english_name": "Atta, Pudtol"
+ },
+ "atq": {
+ "english_name": "Aralle-Tabulahan"
+ },
+ "atr": {
+ "english_name": "Waimiri-Atroari"
+ },
+ "ats": {
+ "english_name": "Gros Ventre"
+ },
+ "att": {
+ "english_name": "Atta, Pamplona"
+ },
+ "atu": {
+ "english_name": "Reel"
+ },
+ "atv": {
+ "english_name": "Altai, Northern"
+ },
+ "atw": {
+ "english_name": "Atsugewi"
+ },
+ "atx": {
+ "english_name": "Arutani"
+ },
+ "aty": {
+ "english_name": "Aneityum"
+ },
+ "atz": {
+ "english_name": "Arta"
+ },
+ "aua": {
+ "english_name": "Asumboa"
+ },
+ "aub": {
+ "english_name": "Alugu"
+ },
+ "auc": {
+ "english_name": "Waorani"
+ },
+ "aud": {
+ "english_name": "Anuta"
+ },
+ "aug": {
+ "english_name": "Aguna"
+ },
+ "auh": {
+ "english_name": "Aushi"
+ },
+ "aui": {
+ "english_name": "Anuki"
+ },
+ "auj": {
+ "english_name": "Awjilah"
+ },
+ "auk": {
+ "english_name": "Heyo"
+ },
+ "aul": {
+ "english_name": "Aulua"
+ },
+ "aum": {
+ "english_name": "Asu (Nigeria)"
+ },
+ "aun": {
+ "english_name": "One, Molmo"
+ },
+ "auo": {
+ "english_name": "Auyokawa"
+ },
+ "aup": {
+ "english_name": "Makayam"
+ },
+ "auq": {
+ "english_name": "Anus"
+ },
+ "aur": {
+ "english_name": "Aruek"
+ },
+ "aut": {
+ "english_name": "Austral"
+ },
+ "auu": {
+ "english_name": "Auye"
+ },
+ "auw": {
+ "english_name": "Awyi"
+ },
+ "aux": {
+ "english_name": "Aur\u00e1"
+ },
+ "auy": {
+ "english_name": "Awiyaana"
+ },
+ "auz": {
+ "english_name": "Arabic, Uzbeki"
+ },
+ "av": {
+ "english_name": "Avaric"
+ },
+ "avb": {
+ "english_name": "Avau"
+ },
+ "avd": {
+ "english_name": "Alviri-Vidari"
+ },
+ "avi": {
+ "english_name": "Avikam"
+ },
+ "avk": {
+ "english_name": "Kotava"
+ },
+ "avl": {
+ "english_name": "Arabic, Eastern Egyptian Bedawi"
+ },
+ "avm": {
+ "english_name": "Angkamuthi"
+ },
+ "avn": {
+ "english_name": "Avatime"
+ },
+ "avo": {
+ "english_name": "Agavotaguerra"
+ },
+ "avs": {
+ "english_name": "Aushiri"
+ },
+ "avt": {
+ "english_name": "Au"
+ },
+ "avu": {
+ "english_name": "Avokaya"
+ },
+ "avv": {
+ "english_name": "Av\u00e1-Canoeiro"
+ },
+ "awa": {
+ "english_name": "Awadhi"
+ },
+ "awb": {
+ "english_name": "Awa (Papua New Guinea)"
+ },
+ "awc": {
+ "english_name": "Cicipu"
+ },
+ "awe": {
+ "english_name": "Awet\u00ed"
+ },
+ "awg": {
+ "english_name": "Anguthimri"
+ },
+ "awh": {
+ "english_name": "Awbono"
+ },
+ "awi": {
+ "english_name": "Aekyom"
+ },
+ "awk": {
+ "english_name": "Awabakal"
+ },
+ "awm": {
+ "english_name": "Arawum"
+ },
+ "awn": {
+ "english_name": "Awngi"
+ },
+ "awo": {
+ "english_name": "Awak"
+ },
+ "awr": {
+ "english_name": "Awera"
+ },
+ "aws": {
+ "english_name": "Awyu, South"
+ },
+ "awt": {
+ "english_name": "Arawet\u00e9"
+ },
+ "awu": {
+ "english_name": "Awyu, Central"
+ },
+ "awv": {
+ "english_name": "Awyu, Jair"
+ },
+ "aww": {
+ "english_name": "Awun"
+ },
+ "awx": {
+ "english_name": "Awara"
+ },
+ "awy": {
+ "english_name": "Awyu, Edera"
+ },
+ "axb": {
+ "english_name": "Abipon"
+ },
+ "axe": {
+ "english_name": "Ayerrerenge"
+ },
+ "axg": {
+ "english_name": "Ar\u00e1ra, Mato Grosso"
+ },
+ "axk": {
+ "english_name": "Yaka (Central African Republic)"
+ },
+ "axl": {
+ "english_name": "Aranda, Lower Southern"
+ },
+ "axm": {
+ "english_name": "Armenian, Middle"
+ },
+ "axx": {
+ "english_name": "X\u00e2r\u00e2gur\u00e8"
+ },
+ "ay": {
+ "english_name": "Aymara"
+ },
+ "aya": {
+ "english_name": "Awar"
+ },
+ "ayb": {
+ "english_name": "Gbe, Ayizo"
+ },
+ "ayc": {
+ "english_name": "Aymara, Southern"
+ },
+ "ayd": {
+ "english_name": "Ayabadhu"
+ },
+ "aye": {
+ "english_name": "Ayere"
+ },
+ "ayg": {
+ "english_name": "Ginyanga"
+ },
+ "ayh": {
+ "english_name": "Arabic, Hadrami"
+ },
+ "ayi": {
+ "english_name": "Leyigha"
+ },
+ "ayk": {
+ "english_name": "Akuku"
+ },
+ "ayl": {
+ "english_name": "Arabic, Libyan"
+ },
+ "ayn": {
+ "english_name": "Arabic, Sanaani"
+ },
+ "ayo": {
+ "english_name": "Ayoreo"
+ },
+ "ayp": {
+ "english_name": "Arabic, North Mesopotamian"
+ },
+ "ayq": {
+ "english_name": "Ayi (Papua New Guinea)"
+ },
+ "ayr": {
+ "english_name": "Aymara, Central"
+ },
+ "ays": {
+ "english_name": "Ayta, Sorsogon"
+ },
+ "ayt": {
+ "english_name": "Ayta, Magbukun"
+ },
+ "ayu": {
+ "english_name": "Ayu"
+ },
+ "ayy": {
+ "english_name": "Ayta, Tayabas"
+ },
+ "ayz": {
+ "english_name": "Mai Brat"
+ },
+ "az": {
+ "english_name": "Azerbaijani",
+ "name": "Azerbaijani"
+ },
+ "aza": {
+ "english_name": "Azha"
+ },
+ "azb": {
+ "english_name": "Azerbaijani, South"
+ },
+ "azd": {
+ "english_name": "Nahuatl, Eastern Durango"
+ },
+ "azg": {
+ "english_name": "Amuzgo, San Pedro Amuzgos"
+ },
+ "azj": {
+ "english_name": "Azerbaijani, North"
+ },
+ "azm": {
+ "english_name": "Amuzgo, Ipalapa"
+ },
+ "azn": {
+ "english_name": "Nahuatl, Western Durango"
+ },
+ "azo": {
+ "english_name": "Awing"
+ },
+ "azt": {
+ "english_name": "Atta, Faire"
+ },
+ "azz": {
+ "english_name": "Nahuatl, Highland Puebla"
+ },
+ "ba": {
+ "english_name": "Bashkir"
+ },
+ "baa": {
+ "english_name": "Babatana"
+ },
+ "bab": {
+ "english_name": "Bainouk-Gunyu\u00f1o"
+ },
+ "bac": {
+ "english_name": "Badui"
+ },
+ "bae": {
+ "english_name": "Bar\u00e9"
+ },
+ "baf": {
+ "english_name": "Nubaca"
+ },
+ "bag": {
+ "english_name": "Tuki"
+ },
+ "bah": {
+ "english_name": "Creole English, Bahamas"
+ },
+ "baj": {
+ "english_name": "Barakai"
+ },
+ "bal": {
+ "english_name": "Baluchi"
+ },
+ "ban": {
+ "english_name": "Balinese"
+ },
+ "bao": {
+ "english_name": "Waimaha"
+ },
+ "bap": {
+ "english_name": "Bantawa"
+ },
+ "bar": {
+ "english_name": "Bavarian"
+ },
+ "bas": {
+ "english_name": "Basa (Cameroon)"
+ },
+ "bau": {
+ "english_name": "Bada (Nigeria)"
+ },
+ "bav": {
+ "english_name": "Vengo"
+ },
+ "baw": {
+ "english_name": "Bambili-Bambui"
+ },
+ "bax": {
+ "english_name": "Bamun"
+ },
+ "bay": {
+ "english_name": "Batuley"
+ },
+ "bba": {
+ "english_name": "Baatonum"
+ },
+ "bbb": {
+ "english_name": "Barai"
+ },
+ "bbc": {
+ "english_name": "Batak Toba"
+ },
+ "bbd": {
+ "english_name": "Bau"
+ },
+ "bbe": {
+ "english_name": "Bangba"
+ },
+ "bbf": {
+ "english_name": "Baibai"
+ },
+ "bbg": {
+ "english_name": "Barama"
+ },
+ "bbh": {
+ "english_name": "Bugan"
+ },
+ "bbi": {
+ "english_name": "Barombi"
+ },
+ "bbj": {
+ "english_name": "Ghom\u00e1l\u00e1'"
+ },
+ "bbk": {
+ "english_name": "Babanki"
+ },
+ "bbl": {
+ "english_name": "Bats"
+ },
+ "bbm": {
+ "english_name": "Babango"
+ },
+ "bbn": {
+ "english_name": "Uneapa"
+ },
+ "bbo": {
+ "english_name": "Bobo Madar\u00e9, Northern"
+ },
+ "bbp": {
+ "english_name": "Banda, West Central"
+ },
+ "bbq": {
+ "english_name": "Bamali"
+ },
+ "bbr": {
+ "english_name": "Girawa"
+ },
+ "bbs": {
+ "english_name": "Bakpinka"
+ },
+ "bbt": {
+ "english_name": "Mburku"
+ },
+ "bbu": {
+ "english_name": "Kulung (Nigeria)"
+ },
+ "bbv": {
+ "english_name": "Karnai"
+ },
+ "bbw": {
+ "english_name": "Baba"
+ },
+ "bbx": {
+ "english_name": "Bubia"
+ },
+ "bby": {
+ "english_name": "Befang"
+ },
+ "bbz": {
+ "english_name": "Creole Arabic, Babalia"
+ },
+ "bca": {
+ "english_name": "Bai, Central"
+ },
+ "bcb": {
+ "english_name": "Bainouk-Samik"
+ },
+ "bcc": {
+ "english_name": "Balochi, Southern"
+ },
+ "bcd": {
+ "english_name": "Babar, North"
+ },
+ "bce": {
+ "english_name": "Bamenyam"
+ },
+ "bcf": {
+ "english_name": "Bamu"
+ },
+ "bcg": {
+ "english_name": "Baga Binari"
+ },
+ "bch": {
+ "english_name": "Bariai"
+ },
+ "bci": {
+ "english_name": "Baoul\u00e9"
+ },
+ "bcj": {
+ "english_name": "Bardi"
+ },
+ "bck": {
+ "english_name": "Bunaba"
+ },
+ "bcl": {
+ "english_name": "Bikol, Central"
+ },
+ "bcm": {
+ "english_name": "Bannoni"
+ },
+ "bcn": {
+ "english_name": "Bali (Nigeria)"
+ },
+ "bco": {
+ "english_name": "Kaluli"
+ },
+ "bcp": {
+ "english_name": "Bali (Democratic Republic of Congo)"
+ },
+ "bcq": {
+ "english_name": "Bench"
+ },
+ "bcr": {
+ "english_name": "Babine"
+ },
+ "bcs": {
+ "english_name": "Kohumono"
+ },
+ "bct": {
+ "english_name": "Bendi"
+ },
+ "bcu": {
+ "english_name": "Awad Bing"
+ },
+ "bcv": {
+ "english_name": "Shoo-Minda-Nye"
+ },
+ "bcw": {
+ "english_name": "Bana"
+ },
+ "bcy": {
+ "english_name": "Bacama"
+ },
+ "bcz": {
+ "english_name": "Bainouk-Gunyaamolo"
+ },
+ "bda": {
+ "english_name": "Bayot"
+ },
+ "bdb": {
+ "english_name": "Basap"
+ },
+ "bdc": {
+ "english_name": "Ember\u00e1-Baud\u00f3"
+ },
+ "bdd": {
+ "english_name": "Bunama"
+ },
+ "bde": {
+ "english_name": "Bade"
+ },
+ "bdf": {
+ "english_name": "Biage"
+ },
+ "bdg": {
+ "english_name": "Bonggi"
+ },
+ "bdh": {
+ "english_name": "Baka (Sudan)"
+ },
+ "bdi": {
+ "english_name": "Burun"
+ },
+ "bdj": {
+ "english_name": "Bai"
+ },
+ "bdk": {
+ "english_name": "Budukh"
+ },
+ "bdl": {
+ "english_name": "Bajau, Indonesian"
+ },
+ "bdm": {
+ "english_name": "Buduma"
+ },
+ "bdn": {
+ "english_name": "Baldemu"
+ },
+ "bdo": {
+ "english_name": "Morom"
+ },
+ "bdp": {
+ "english_name": "Bende"
+ },
+ "bdq": {
+ "english_name": "Bahnar"
+ },
+ "bdr": {
+ "english_name": "Bajau, West Coast"
+ },
+ "bds": {
+ "english_name": "Burunge"
+ },
+ "bdt": {
+ "english_name": "Bokoto"
+ },
+ "bdu": {
+ "english_name": "Oroko"
+ },
+ "bdv": {
+ "english_name": "Bodo Parja"
+ },
+ "bdw": {
+ "english_name": "Baham"
+ },
+ "bdx": {
+ "english_name": "Budong-Budong"
+ },
+ "bdy": {
+ "english_name": "Bandjalang"
+ },
+ "bdz": {
+ "english_name": "Badeshi"
+ },
+ "be": {
+ "english_name": "Belarusian"
+ },
+ "bea": {
+ "english_name": "Beaver"
+ },
+ "beb": {
+ "english_name": "Bebele"
+ },
+ "bec": {
+ "english_name": "Iceve-Maci"
+ },
+ "bed": {
+ "english_name": "Bedoanas"
+ },
+ "bee": {
+ "english_name": "Byangsi"
+ },
+ "bef": {
+ "english_name": "Benabena"
+ },
+ "beg": {
+ "english_name": "Belait"
+ },
+ "beh": {
+ "english_name": "Biali"
+ },
+ "bei": {
+ "english_name": "Bekati'"
+ },
+ "bej": {
+ "english_name": "Beja"
+ },
+ "bek": {
+ "english_name": "Bebeli"
+ },
+ "bem": {
+ "english_name": "Bemba (Zambia)"
+ },
+ "beo": {
+ "english_name": "Beami"
+ },
+ "bep": {
+ "english_name": "Besoa"
+ },
+ "beq": {
+ "english_name": "Beembe"
+ },
+ "bes": {
+ "english_name": "Besme"
+ },
+ "bet": {
+ "english_name": "B\u00e9te, Guiberoua"
+ },
+ "beu": {
+ "english_name": "Blagar"
+ },
+ "bev": {
+ "english_name": "B\u00e9t\u00e9, Daloa"
+ },
+ "bew": {
+ "english_name": "Betawi"
+ },
+ "bex": {
+ "english_name": "Jur Modo"
+ },
+ "bey": {
+ "english_name": "Beli (Papua New Guinea)"
+ },
+ "bez": {
+ "english_name": "Bena (Tanzania)"
+ },
+ "bfa": {
+ "english_name": "Bari"
+ },
+ "bfb": {
+ "english_name": "Bareli, Pauri"
+ },
+ "bfc": {
+ "english_name": "Bai, Northern"
+ },
+ "bfd": {
+ "english_name": "Bafut"
+ },
+ "bfe": {
+ "english_name": "Betaf"
+ },
+ "bff": {
+ "english_name": "Bofi"
+ },
+ "bfg": {
+ "english_name": "Kayan, Busang"
+ },
+ "bfh": {
+ "english_name": "Blafe"
+ },
+ "bfi": {
+ "english_name": "British Sign Language"
+ },
+ "bfj": {
+ "english_name": "Bafanji"
+ },
+ "bfk": {
+ "english_name": "Ban Khor Sign Language"
+ },
+ "bfl": {
+ "english_name": "Banda-Nd\u00e9l\u00e9"
+ },
+ "bfm": {
+ "english_name": "Mmen"
+ },
+ "bfn": {
+ "english_name": "Bunak"
+ },
+ "bfo": {
+ "english_name": "Birifor, Malba"
+ },
+ "bfp": {
+ "english_name": "Beba"
+ },
+ "bfq": {
+ "english_name": "Badaga"
+ },
+ "bfr": {
+ "english_name": "Bazigar"
+ },
+ "bfs": {
+ "english_name": "Bai, Southern"
+ },
+ "bft": {
+ "english_name": "Balti"
+ },
+ "bfu": {
+ "english_name": "Gahri"
+ },
+ "bfw": {
+ "english_name": "Bondo"
+ },
+ "bfx": {
+ "english_name": "Bantayanon"
+ },
+ "bfy": {
+ "english_name": "Bagheli"
+ },
+ "bfz": {
+ "english_name": "Pahari, Mahasu"
+ },
+ "bg": {
+ "english_name": "Bulgarian",
+ "name": "\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438"
+ },
+ "bga": {
+ "english_name": "Gwamhi-Wuri"
+ },
+ "bgb": {
+ "english_name": "Bobongko"
+ },
+ "bgc": {
+ "english_name": "Haryanvi"
+ },
+ "bgd": {
+ "english_name": "Bareli, Rathwi"
+ },
+ "bge": {
+ "english_name": "Bauria"
+ },
+ "bgf": {
+ "english_name": "Bangandu"
+ },
+ "bgg": {
+ "english_name": "Bugun"
+ },
+ "bgi": {
+ "english_name": "Giangan"
+ },
+ "bgj": {
+ "english_name": "Bangolan"
+ },
+ "bgk": {
+ "english_name": "Bit"
+ },
+ "bgl": {
+ "english_name": "Bo (Laos)"
+ },
+ "bgm": {
+ "english_name": "Baga Mboteni"
+ },
+ "bgn": {
+ "english_name": "Balochi, Western"
+ },
+ "bgo": {
+ "english_name": "Baga Koga"
+ },
+ "bgp": {
+ "english_name": "Balochi, Eastern"
+ },
+ "bgq": {
+ "english_name": "Bagri"
+ },
+ "bgr": {
+ "english_name": "Chin, Bawm"
+ },
+ "bgs": {
+ "english_name": "Tagabawa"
+ },
+ "bgt": {
+ "english_name": "Bughotu"
+ },
+ "bgu": {
+ "english_name": "Mbongno"
+ },
+ "bgv": {
+ "english_name": "Warkay-Bipim"
+ },
+ "bgw": {
+ "english_name": "Bhatri"
+ },
+ "bgx": {
+ "english_name": "Turkish, Balkan Gagauz"
+ },
+ "bgy": {
+ "english_name": "Benggoi"
+ },
+ "bgz": {
+ "english_name": "Banggai"
+ },
+ "bha": {
+ "english_name": "Bharia"
+ },
+ "bhb": {
+ "english_name": "Bhili"
+ },
+ "bhc": {
+ "english_name": "Biga"
+ },
+ "bhd": {
+ "english_name": "Bhadrawahi"
+ },
+ "bhe": {
+ "english_name": "Bhaya"
+ },
+ "bhf": {
+ "english_name": "Odiai"
+ },
+ "bhg": {
+ "english_name": "Binandere"
+ },
+ "bhh": {
+ "english_name": "Bukharic"
+ },
+ "bhi": {
+ "english_name": "Bhilali"
+ },
+ "bhj": {
+ "english_name": "Bahing"
+ },
+ "bhl": {
+ "english_name": "Bimin"
+ },
+ "bhm": {
+ "english_name": "Bathari"
+ },
+ "bhn": {
+ "english_name": "Neo-Aramaic, Bohtan"
+ },
+ "bho": {
+ "english_name": "Bhojpuri"
+ },
+ "bhp": {
+ "english_name": "Bima"
+ },
+ "bhq": {
+ "english_name": "Tukang Besi South"
+ },
+ "bhr": {
+ "english_name": "Malagasy, Bara"
+ },
+ "bhs": {
+ "english_name": "Buwal"
+ },
+ "bht": {
+ "english_name": "Bhattiyali"
+ },
+ "bhu": {
+ "english_name": "Bhunjia"
+ },
+ "bhv": {
+ "english_name": "Bahau"
+ },
+ "bhw": {
+ "english_name": "Biak"
+ },
+ "bhx": {
+ "english_name": "Bhalay"
+ },
+ "bhy": {
+ "english_name": "Bhele"
+ },
+ "bhz": {
+ "english_name": "Bada (Indonesia)"
+ },
+ "bi": {
+ "english_name": "Bislama"
+ },
+ "bia": {
+ "english_name": "Badimaya"
+ },
+ "bib": {
+ "english_name": "Bissa"
+ },
+ "bic": {
+ "english_name": "Bikaru"
+ },
+ "bid": {
+ "english_name": "Bidiyo"
+ },
+ "bie": {
+ "english_name": "Bepour"
+ },
+ "bif": {
+ "english_name": "Biafada"
+ },
+ "big": {
+ "english_name": "Biangai"
+ },
+ "bij": {
+ "english_name": "Vaghat-Ya-Bijim-Legeri"
+ },
+ "bik": {
+ "english_name": "Bikol"
+ },
+ "bil": {
+ "english_name": "Bile"
+ },
+ "bim": {
+ "english_name": "Bimoba"
+ },
+ "bin": {
+ "english_name": "Bini"
+ },
+ "bio": {
+ "english_name": "Nai"
+ },
+ "bip": {
+ "english_name": "Bila"
+ },
+ "biq": {
+ "english_name": "Bipi"
+ },
+ "bir": {
+ "english_name": "Bisorio"
+ },
+ "bit": {
+ "english_name": "Berinomo"
+ },
+ "biu": {
+ "english_name": "Biete"
+ },
+ "biv": {
+ "english_name": "Birifor, Southern"
+ },
+ "biw": {
+ "english_name": "Kol (Cameroon)"
+ },
+ "bix": {
+ "english_name": "Bijori"
+ },
+ "biy": {
+ "english_name": "Birhor"
+ },
+ "biz": {
+ "english_name": "Baloi"
+ },
+ "bja": {
+ "english_name": "Budza"
+ },
+ "bjb": {
+ "english_name": "Banggarla"
+ },
+ "bjc": {
+ "english_name": "Bariji"
+ },
+ "bje": {
+ "english_name": "Mien, Biao-Jiao"
+ },
+ "bjf": {
+ "english_name": "Neo-Aramaic, Barzani Jewish"
+ },
+ "bjg": {
+ "english_name": "Bidyogo"
+ },
+ "bjh": {
+ "english_name": "Bahinemo"
+ },
+ "bji": {
+ "english_name": "Burji"
+ },
+ "bjj": {
+ "english_name": "Kanauji"
+ },
+ "bjk": {
+ "english_name": "Barok"
+ },
+ "bjl": {
+ "english_name": "Bulu (Papua New Guinea)"
+ },
+ "bjm": {
+ "english_name": "Bajelani"
+ },
+ "bjn": {
+ "english_name": "Banjar"
+ },
+ "bjo": {
+ "english_name": "Banda, Mid-Southern"
+ },
+ "bjp": {
+ "english_name": "Fanamaket"
+ },
+ "bjr": {
+ "english_name": "Binumarien"
+ },
+ "bjs": {
+ "english_name": "Bajan"
+ },
+ "bjt": {
+ "english_name": "Balanta-Ganja"
+ },
+ "bju": {
+ "english_name": "Busuu"
+ },
+ "bjv": {
+ "english_name": "Bedjond"
+ },
+ "bjw": {
+ "english_name": "Bakw\u00e9"
+ },
+ "bjx": {
+ "english_name": "Itneg, Banao"
+ },
+ "bjy": {
+ "english_name": "Bayali"
+ },
+ "bjz": {
+ "english_name": "Baruga"
+ },
+ "bka": {
+ "english_name": "Kyak"
+ },
+ "bkc": {
+ "english_name": "Baka (Cameroon)"
+ },
+ "bkd": {
+ "english_name": "Binukid"
+ },
+ "bkf": {
+ "english_name": "Beeke"
+ },
+ "bkg": {
+ "english_name": "Buraka"
+ },
+ "bkh": {
+ "english_name": "Bakoko"
+ },
+ "bki": {
+ "english_name": "Baki"
+ },
+ "bkj": {
+ "english_name": "Pande"
+ },
+ "bkk": {
+ "english_name": "Brokskat"
+ },
+ "bkl": {
+ "english_name": "Berik"
+ },
+ "bkm": {
+ "english_name": "Kom (Cameroon)"
+ },
+ "bkn": {
+ "english_name": "Bukitan"
+ },
+ "bko": {
+ "english_name": "Kwa'"
+ },
+ "bkp": {
+ "english_name": "Boko (Democratic Republic of Congo)"
+ },
+ "bkq": {
+ "english_name": "Bakair\u00ed"
+ },
+ "bkr": {
+ "english_name": "Bakumpai"
+ },
+ "bks": {
+ "english_name": "Sorsoganon, Northern"
+ },
+ "bkt": {
+ "english_name": "Boloki"
+ },
+ "bku": {
+ "english_name": "Buhid"
+ },
+ "bkv": {
+ "english_name": "Bekwarra"
+ },
+ "bkw": {
+ "english_name": "Bekwel"
+ },
+ "bkx": {
+ "english_name": "Baikeno"
+ },
+ "bky": {
+ "english_name": "Bokyi"
+ },
+ "bkz": {
+ "english_name": "Bungku"
+ },
+ "bla": {
+ "english_name": "Siksika"
+ },
+ "blb": {
+ "english_name": "Bilua"
+ },
+ "blc": {
+ "english_name": "Bella Coola"
+ },
+ "bld": {
+ "english_name": "Bolango"
+ },
+ "ble": {
+ "english_name": "Balanta-Kentohe"
+ },
+ "blf": {
+ "english_name": "Buol"
+ },
+ "blg": {
+ "english_name": "Balau"
+ },
+ "blh": {
+ "english_name": "Kuwaa"
+ },
+ "bli": {
+ "english_name": "Bolia"
+ },
+ "blj": {
+ "english_name": "Bolongan"
+ },
+ "blk": {
+ "english_name": "Karen, Pa'o"
+ },
+ "bll": {
+ "english_name": "Biloxi"
+ },
+ "blm": {
+ "english_name": "Beli (Sudan)"
+ },
+ "bln": {
+ "english_name": "Bikol, Southern Catanduanes"
+ },
+ "blo": {
+ "english_name": "Anii"
+ },
+ "blp": {
+ "english_name": "Blablanga"
+ },
+ "blq": {
+ "english_name": "Baluan-Pam"
+ },
+ "blr": {
+ "english_name": "Blang"
+ },
+ "bls": {
+ "english_name": "Balaesang"
+ },
+ "blt": {
+ "english_name": "Tai Dam"
+ },
+ "blv": {
+ "english_name": "Bolo"
+ },
+ "blw": {
+ "english_name": "Balangao"
+ },
+ "blx": {
+ "english_name": "Ayta, Mag-Indi"
+ },
+ "bly": {
+ "english_name": "Notre"
+ },
+ "blz": {
+ "english_name": "Balantak"
+ },
+ "bm": {
+ "english_name": "Bambara"
+ },
+ "bma": {
+ "english_name": "Lame"
+ },
+ "bmb": {
+ "english_name": "Bembe"
+ },
+ "bmc": {
+ "english_name": "Biem"
+ },
+ "bmd": {
+ "english_name": "Manduri, Baga"
+ },
+ "bme": {
+ "english_name": "Limassa"
+ },
+ "bmf": {
+ "english_name": "Bom"
+ },
+ "bmg": {
+ "english_name": "Bamwe"
+ },
+ "bmh": {
+ "english_name": "Kein"
+ },
+ "bmi": {
+ "english_name": "Bagirmi"
+ },
+ "bmj": {
+ "english_name": "Bote-Majhi"
+ },
+ "bmk": {
+ "english_name": "Ghayavi"
+ },
+ "bml": {
+ "english_name": "Bomboli"
+ },
+ "bmm": {
+ "english_name": "Malagasy, Northern Betsimisaraka"
+ },
+ "bmn": {
+ "english_name": "Bina (Papua New Guinea)"
+ },
+ "bmo": {
+ "english_name": "Bambalang"
+ },
+ "bmp": {
+ "english_name": "Bulgebi"
+ },
+ "bmq": {
+ "english_name": "Bomu"
+ },
+ "bmr": {
+ "english_name": "Muinane"
+ },
+ "bms": {
+ "english_name": "Kanuri, Bilma"
+ },
+ "bmt": {
+ "english_name": "Biao Mon"
+ },
+ "bmu": {
+ "english_name": "Somba-Siawari"
+ },
+ "bmv": {
+ "english_name": "Bum"
+ },
+ "bmw": {
+ "english_name": "Bomwali"
+ },
+ "bmx": {
+ "english_name": "Baimak"
+ },
+ "bmz": {
+ "english_name": "Baramu"
+ },
+ "bn": {
+ "english_name": "Bengali",
+ "name": "\u09ac\u09be\u0982\u09b2\u09be"
+ },
+ "bna": {
+ "english_name": "Bonerate"
+ },
+ "bnb": {
+ "english_name": "Bookan"
+ },
+ "bnc": {
+ "english_name": "Bontok"
+ },
+ "bnd": {
+ "english_name": "Banda (Indonesia)"
+ },
+ "bne": {
+ "english_name": "Bintauna"
+ },
+ "bnf": {
+ "english_name": "Masiwang"
+ },
+ "bng": {
+ "english_name": "Benga"
+ },
+ "bni": {
+ "english_name": "Bangi"
+ },
+ "bnj": {
+ "english_name": "Tawbuid, Eastern"
+ },
+ "bnk": {
+ "english_name": "Bierebo"
+ },
+ "bnl": {
+ "english_name": "Boon"
+ },
+ "bnm": {
+ "english_name": "Batanga"
+ },
+ "bnn": {
+ "english_name": "Bunun"
+ },
+ "bno": {
+ "english_name": "Bantoanon"
+ },
+ "bnp": {
+ "english_name": "Bola"
+ },
+ "bnq": {
+ "english_name": "Bantik"
+ },
+ "bnr": {
+ "english_name": "Butmas-Tur"
+ },
+ "bns": {
+ "english_name": "Bundeli"
+ },
+ "bnu": {
+ "english_name": "Bentong"
+ },
+ "bnv": {
+ "english_name": "Bonerif"
+ },
+ "bnw": {
+ "english_name": "Bisis"
+ },
+ "bnx": {
+ "english_name": "Bangubangu"
+ },
+ "bny": {
+ "english_name": "Bintulu"
+ },
+ "bnz": {
+ "english_name": "Beezen"
+ },
+ "bo": {
+ "english_name": "Tibetan"
+ },
+ "boa": {
+ "english_name": "Bora"
+ },
+ "bob": {
+ "english_name": "Aweer"
+ },
+ "boe": {
+ "english_name": "Mundabli"
+ },
+ "bof": {
+ "english_name": "Bolon"
+ },
+ "bog": {
+ "english_name": "Bamako Sign Language"
+ },
+ "boh": {
+ "english_name": "Boma"
+ },
+ "boi": {
+ "english_name": "Barbare\u00f1o"
+ },
+ "boj": {
+ "english_name": "Anjam"
+ },
+ "bok": {
+ "english_name": "Bonjo"
+ },
+ "bol": {
+ "english_name": "Bole"
+ },
+ "bom": {
+ "english_name": "Berom"
+ },
+ "bon": {
+ "english_name": "Bine"
+ },
+ "boo": {
+ "english_name": "Bozo, Tiemac\u00e8w\u00e8"
+ },
+ "bop": {
+ "english_name": "Bonkiman"
+ },
+ "boq": {
+ "english_name": "Bogaya"
+ },
+ "bor": {
+ "english_name": "Bor\u00f4ro"
+ },
+ "bot": {
+ "english_name": "Bongo"
+ },
+ "bou": {
+ "english_name": "Bondei"
+ },
+ "bov": {
+ "english_name": "Tuwuli"
+ },
+ "bow": {
+ "english_name": "Rema"
+ },
+ "box": {
+ "english_name": "Buamu"
+ },
+ "boy": {
+ "english_name": "Bodo (Central African Republic)"
+ },
+ "boz": {
+ "english_name": "Bozo, Ti\u00e9yaxo"
+ },
+ "bpa": {
+ "english_name": "Daakaka"
+ },
+ "bpb": {
+ "english_name": "Barbacoas"
+ },
+ "bpd": {
+ "english_name": "Banda-Banda"
+ },
+ "bpg": {
+ "english_name": "Bonggo"
+ },
+ "bph": {
+ "english_name": "Botlikh"
+ },
+ "bpi": {
+ "english_name": "Bagupi"
+ },
+ "bpj": {
+ "english_name": "Binji"
+ },
+ "bpk": {
+ "english_name": "Orowe"
+ },
+ "bpl": {
+ "english_name": "Broome Pearling Lugger Pidgin"
+ },
+ "bpm": {
+ "english_name": "Biyom"
+ },
+ "bpn": {
+ "english_name": "Dzao Min"
+ },
+ "bpo": {
+ "english_name": "Anasi"
+ },
+ "bpp": {
+ "english_name": "Kaure"
+ },
+ "bpq": {
+ "english_name": "Malay, Banda"
+ },
+ "bpr": {
+ "english_name": "Blaan, Koronadal"
+ },
+ "bps": {
+ "english_name": "Blaan, Sarangani"
+ },
+ "bpt": {
+ "english_name": "Barrow Point"
+ },
+ "bpu": {
+ "english_name": "Bongu"
+ },
+ "bpv": {
+ "english_name": "Marind, Bian"
+ },
+ "bpw": {
+ "english_name": "Bo (Papua New Guinea)"
+ },
+ "bpx": {
+ "english_name": "Bareli, Palya"
+ },
+ "bpy": {
+ "english_name": "Bishnupriya"
+ },
+ "bpz": {
+ "english_name": "Bilba"
+ },
+ "bqa": {
+ "english_name": "Tchumbuli"
+ },
+ "bqb": {
+ "english_name": "Bagusa"
+ },
+ "bqc": {
+ "english_name": "Boko (Benin)"
+ },
+ "bqd": {
+ "english_name": "Bung"
+ },
+ "bqf": {
+ "english_name": "Baga Kaloum"
+ },
+ "bqg": {
+ "english_name": "Bago-Kusuntu"
+ },
+ "bqh": {
+ "english_name": "Baima"
+ },
+ "bqi": {
+ "english_name": "Bakhtiari"
+ },
+ "bqj": {
+ "english_name": "Bandial"
+ },
+ "bqk": {
+ "english_name": "Banda-Mbr\u00e8s"
+ },
+ "bql": {
+ "english_name": "Bilakura"
+ },
+ "bqm": {
+ "english_name": "Wumboko"
+ },
+ "bqn": {
+ "english_name": "Bulgarian Sign Language"
+ },
+ "bqo": {
+ "english_name": "Balo"
+ },
+ "bqp": {
+ "english_name": "Busa"
+ },
+ "bqq": {
+ "english_name": "Biritai"
+ },
+ "bqr": {
+ "english_name": "Burusu"
+ },
+ "bqs": {
+ "english_name": "Bosngun"
+ },
+ "bqt": {
+ "english_name": "Bamukumbit"
+ },
+ "bqu": {
+ "english_name": "Boguru"
+ },
+ "bqv": {
+ "english_name": "Koro Wachi"
+ },
+ "bqw": {
+ "english_name": "Buru (Nigeria)"
+ },
+ "bqx": {
+ "english_name": "Baangi"
+ },
+ "bqy": {
+ "english_name": "Bengkala Sign Language"
+ },
+ "bqz": {
+ "english_name": "Bakaka"
+ },
+ "br": {
+ "english_name": "Breton",
+ "name": "Brezhoneg"
+ },
+ "bra": {
+ "english_name": "Braj"
+ },
+ "brb": {
+ "english_name": "Lave"
+ },
+ "brc": {
+ "english_name": "Creole Dutch, Berbice"
+ },
+ "brd": {
+ "english_name": "Baraamu"
+ },
+ "brf": {
+ "english_name": "Bera"
+ },
+ "brg": {
+ "english_name": "Baure"
+ },
+ "brh": {
+ "english_name": "Brahui"
+ },
+ "bri": {
+ "english_name": "Mokpwe"
+ },
+ "brj": {
+ "english_name": "Bieria"
+ },
+ "brk": {
+ "english_name": "Birked"
+ },
+ "brl": {
+ "english_name": "Birwa"
+ },
+ "brm": {
+ "english_name": "Barambu"
+ },
+ "brn": {
+ "english_name": "Boruca"
+ },
+ "bro": {
+ "english_name": "Brokkat"
+ },
+ "brp": {
+ "english_name": "Barapasi"
+ },
+ "brq": {
+ "english_name": "Breri"
+ },
+ "brr": {
+ "english_name": "Birao"
+ },
+ "brs": {
+ "english_name": "Baras"
+ },
+ "brt": {
+ "english_name": "Bitare"
+ },
+ "bru": {
+ "english_name": "Bru, Eastern"
+ },
+ "brv": {
+ "english_name": "Bru, Western"
+ },
+ "brw": {
+ "english_name": "Bellari"
+ },
+ "brx": {
+ "english_name": "Bodo (India)"
+ },
+ "bry": {
+ "english_name": "Burui"
+ },
+ "brz": {
+ "english_name": "Bilbil"
+ },
+ "bs": {
+ "english_name": "Bosnian",
+ "name": "Bosnian"
+ },
+ "bsa": {
+ "english_name": "Abinomn"
+ },
+ "bsb": {
+ "english_name": "Bisaya, Brunei"
+ },
+ "bsc": {
+ "english_name": "Bassari"
+ },
+ "bse": {
+ "english_name": "Wushi"
+ },
+ "bsf": {
+ "english_name": "Bauchi"
+ },
+ "bsg": {
+ "english_name": "Bashkardi"
+ },
+ "bsh": {
+ "english_name": "Kati"
+ },
+ "bsi": {
+ "english_name": "Bassossi"
+ },
+ "bsj": {
+ "english_name": "Bangwinji"
+ },
+ "bsk": {
+ "english_name": "Burushaski"
+ },
+ "bsl": {
+ "english_name": "Basa-Gumna"
+ },
+ "bsm": {
+ "english_name": "Busami"
+ },
+ "bsn": {
+ "english_name": "Barasana-Eduria"
+ },
+ "bso": {
+ "english_name": "Buso"
+ },
+ "bsp": {
+ "english_name": "Baga Sitemu"
+ },
+ "bsq": {
+ "english_name": "Bassa"
+ },
+ "bsr": {
+ "english_name": "Bassa-Kontagora"
+ },
+ "bss": {
+ "english_name": "Akoose"
+ },
+ "bst": {
+ "english_name": "Basketo"
+ },
+ "bsu": {
+ "english_name": "Bahonsuai"
+ },
+ "bsv": {
+ "english_name": "Baga Soban\u00e9"
+ },
+ "bsw": {
+ "english_name": "Baiso"
+ },
+ "bsx": {
+ "english_name": "Yangkam"
+ },
+ "bsy": {
+ "english_name": "Bisaya, Sabah"
+ },
+ "bta": {
+ "english_name": "Bata"
+ },
+ "btc": {
+ "english_name": "Bati (Cameroon)"
+ },
+ "btd": {
+ "english_name": "Batak Dairi"
+ },
+ "bte": {
+ "english_name": "Gamo-Ningi"
+ },
+ "btf": {
+ "english_name": "Birgit"
+ },
+ "btg": {
+ "english_name": "B\u00e9t\u00e9, Gagnoa"
+ },
+ "bth": {
+ "english_name": "Bidayuh, Biatah"
+ },
+ "bti": {
+ "english_name": "Burate"
+ },
+ "btj": {
+ "english_name": "Malay, Bacanese"
+ },
+ "btl": {
+ "english_name": "Bhatola"
+ },
+ "btm": {
+ "english_name": "Batak Mandailing"
+ },
+ "btn": {
+ "english_name": "Ratagnon"
+ },
+ "bto": {
+ "english_name": "Bikol, Rinconada"
+ },
+ "btp": {
+ "english_name": "Budibud"
+ },
+ "btq": {
+ "english_name": "Batek"
+ },
+ "btr": {
+ "english_name": "Baetora"
+ },
+ "bts": {
+ "english_name": "Batak Simalungun"
+ },
+ "btt": {
+ "english_name": "Bete-Bendi"
+ },
+ "btu": {
+ "english_name": "Batu"
+ },
+ "btv": {
+ "english_name": "Bateri"
+ },
+ "btw": {
+ "english_name": "Butuanon"
+ },
+ "btx": {
+ "english_name": "Batak Karo"
+ },
+ "bty": {
+ "english_name": "Bobot"
+ },
+ "btz": {
+ "english_name": "Batak Alas-Kluet"
+ },
+ "bua": {
+ "english_name": "Buriat"
+ },
+ "bub": {
+ "english_name": "Bua"
+ },
+ "buc": {
+ "english_name": "Bushi"
+ },
+ "bud": {
+ "english_name": "Ntcham"
+ },
+ "bue": {
+ "english_name": "Beothuk"
+ },
+ "buf": {
+ "english_name": "Bushoong"
+ },
+ "bug": {
+ "english_name": "Buginese"
+ },
+ "buh": {
+ "english_name": "Bunu, Younuo"
+ },
+ "bui": {
+ "english_name": "Bongili"
+ },
+ "buj": {
+ "english_name": "Basa-Gurmana"
+ },
+ "buk": {
+ "english_name": "Bugawac"
+ },
+ "bum": {
+ "english_name": "Bulu (Cameroon)"
+ },
+ "bun": {
+ "english_name": "Sherbro"
+ },
+ "buo": {
+ "english_name": "Terei"
+ },
+ "bup": {
+ "english_name": "Busoa"
+ },
+ "buq": {
+ "english_name": "Brem"
+ },
+ "bus": {
+ "english_name": "Bokobaru"
+ },
+ "but": {
+ "english_name": "Bungain"
+ },
+ "buu": {
+ "english_name": "Budu"
+ },
+ "buv": {
+ "english_name": "Bun"
+ },
+ "buw": {
+ "english_name": "Bubi"
+ },
+ "bux": {
+ "english_name": "Boghom"
+ },
+ "buy": {
+ "english_name": "Bullom So"
+ },
+ "buz": {
+ "english_name": "Bukwen"
+ },
+ "bva": {
+ "english_name": "Barein"
+ },
+ "bvb": {
+ "english_name": "Bube"
+ },
+ "bvc": {
+ "english_name": "Baelelea"
+ },
+ "bvd": {
+ "english_name": "Baeggu"
+ },
+ "bve": {
+ "english_name": "Malay, Berau"
+ },
+ "bvf": {
+ "english_name": "Boor"
+ },
+ "bvg": {
+ "english_name": "Bonkeng"
+ },
+ "bvh": {
+ "english_name": "Bure"
+ },
+ "bvi": {
+ "english_name": "Belanda Viri"
+ },
+ "bvj": {
+ "english_name": "Baan"
+ },
+ "bvk": {
+ "english_name": "Bukat"
+ },
+ "bvl": {
+ "english_name": "Bolivian Sign Language"
+ },
+ "bvm": {
+ "english_name": "Bamunka"
+ },
+ "bvn": {
+ "english_name": "Buna"
+ },
+ "bvo": {
+ "english_name": "Bolgo"
+ },
+ "bvp": {
+ "english_name": "Bumang"
+ },
+ "bvq": {
+ "english_name": "Birri"
+ },
+ "bvr": {
+ "english_name": "Burarra"
+ },
+ "bvt": {
+ "english_name": "Bati (Indonesia)"
+ },
+ "bvu": {
+ "english_name": "Malay, Bukit"
+ },
+ "bvv": {
+ "english_name": "Baniva"
+ },
+ "bvw": {
+ "english_name": "Boga"
+ },
+ "bvx": {
+ "english_name": "Dibole"
+ },
+ "bvy": {
+ "english_name": "Baybayanon"
+ },
+ "bvz": {
+ "english_name": "Bauzi"
+ },
+ "bwa": {
+ "english_name": "Bwatoo"
+ },
+ "bwb": {
+ "english_name": "Namosi-Naitasiri-Serua"
+ },
+ "bwc": {
+ "english_name": "Bwile"
+ },
+ "bwd": {
+ "english_name": "Bwaidoka"
+ },
+ "bwe": {
+ "english_name": "Karen, Bwe"
+ },
+ "bwf": {
+ "english_name": "Boselewa"
+ },
+ "bwg": {
+ "english_name": "Barwe"
+ },
+ "bwh": {
+ "english_name": "Bishuo"
+ },
+ "bwi": {
+ "english_name": "Baniwa"
+ },
+ "bwj": {
+ "english_name": "Bwamu, L\u00e1\u00e1 L\u00e1\u00e1"
+ },
+ "bwk": {
+ "english_name": "Bauwaki"
+ },
+ "bwl": {
+ "english_name": "Bwela"
+ },
+ "bwm": {
+ "english_name": "Biwat"
+ },
+ "bwn": {
+ "english_name": "Bunu, Wunai"
+ },
+ "bwo": {
+ "english_name": "Boro (Ethiopia)"
+ },
+ "bwp": {
+ "english_name": "Mandobo Bawah"
+ },
+ "bwq": {
+ "english_name": "Bobo Madar\u00e9, Southern"
+ },
+ "bwr": {
+ "english_name": "Bura-Pabir"
+ },
+ "bws": {
+ "english_name": "Bomboma"
+ },
+ "bwt": {
+ "english_name": "Bafaw-Balong"
+ },
+ "bwu": {
+ "english_name": "Buli (Ghana)"
+ },
+ "bww": {
+ "english_name": "Bwa"
+ },
+ "bwx": {
+ "english_name": "Bunu, Bu-Nao"
+ },
+ "bwy": {
+ "english_name": "Bwamu, Cwi"
+ },
+ "bwz": {
+ "english_name": "Bwisi"
+ },
+ "bxa": {
+ "english_name": "Tairaha"
+ },
+ "bxb": {
+ "english_name": "Bor, Belanda"
+ },
+ "bxc": {
+ "english_name": "Molengue"
+ },
+ "bxd": {
+ "english_name": "Pela"
+ },
+ "bxe": {
+ "english_name": "Birale"
+ },
+ "bxf": {
+ "english_name": "Bilur"
+ },
+ "bxg": {
+ "english_name": "Bangala"
+ },
+ "bxh": {
+ "english_name": "Buhutu"
+ },
+ "bxi": {
+ "english_name": "Pirlatapa"
+ },
+ "bxj": {
+ "english_name": "Bayungu"
+ },
+ "bxk": {
+ "english_name": "Bukusu"
+ },
+ "bxl": {
+ "english_name": "Jalkunan"
+ },
+ "bxm": {
+ "english_name": "Buriat, Mongolia"
+ },
+ "bxn": {
+ "english_name": "Burduna"
+ },
+ "bxo": {
+ "english_name": "Barikanchi"
+ },
+ "bxp": {
+ "english_name": "Bebil"
+ },
+ "bxq": {
+ "english_name": "Beele"
+ },
+ "bxr": {
+ "english_name": "Buriat, Russia"
+ },
+ "bxs": {
+ "english_name": "Busam"
+ },
+ "bxu": {
+ "english_name": "Buriat, China"
+ },
+ "bxv": {
+ "english_name": "Berakou"
+ },
+ "bxw": {
+ "english_name": "Bankagooma"
+ },
+ "bxz": {
+ "english_name": "Binahari"
+ },
+ "bya": {
+ "english_name": "Batak"
+ },
+ "byb": {
+ "english_name": "Bikya"
+ },
+ "byc": {
+ "english_name": "Ubaghara"
+ },
+ "byd": {
+ "english_name": "Benyadu'"
+ },
+ "bye": {
+ "english_name": "Pouye"
+ },
+ "byf": {
+ "english_name": "Bete"
+ },
+ "byg": {
+ "english_name": "Baygo"
+ },
+ "byh": {
+ "english_name": "Bhujel"
+ },
+ "byi": {
+ "english_name": "Buyu"
+ },
+ "byj": {
+ "english_name": "Bina (Nigeria)"
+ },
+ "byk": {
+ "english_name": "Biao"
+ },
+ "byl": {
+ "english_name": "Bayono"
+ },
+ "bym": {
+ "english_name": "Bidyara"
+ },
+ "byn": {
+ "english_name": "Bilin",
+ "name": "Bilin"
+ },
+ "byo": {
+ "english_name": "Biyo"
+ },
+ "byp": {
+ "english_name": "Bumaji"
+ },
+ "byq": {
+ "english_name": "Basay"
+ },
+ "byr": {
+ "english_name": "Baruya"
+ },
+ "bys": {
+ "english_name": "Burak"
+ },
+ "byt": {
+ "english_name": "Berti"
+ },
+ "byv": {
+ "english_name": "Medumba"
+ },
+ "byw": {
+ "english_name": "Belhariya"
+ },
+ "byx": {
+ "english_name": "Qaqet"
+ },
+ "byz": {
+ "english_name": "Banaro"
+ },
+ "bza": {
+ "english_name": "Bandi"
+ },
+ "bzb": {
+ "english_name": "Andio"
+ },
+ "bzc": {
+ "english_name": "Malagasy, Southern Betsimisaraka"
+ },
+ "bzd": {
+ "english_name": "Bribri"
+ },
+ "bze": {
+ "english_name": "Bozo, Jenaama"
+ },
+ "bzf": {
+ "english_name": "Boikin"
+ },
+ "bzg": {
+ "english_name": "Babuza"
+ },
+ "bzh": {
+ "english_name": "Buang, Mapos"
+ },
+ "bzi": {
+ "english_name": "Bisu"
+ },
+ "bzj": {
+ "english_name": "Kriol English, Belize"
+ },
+ "bzk": {
+ "english_name": "Creole English, Nicaragua"
+ },
+ "bzl": {
+ "english_name": "Boano (Sulawesi)"
+ },
+ "bzm": {
+ "english_name": "Bolondo"
+ },
+ "bzn": {
+ "english_name": "Boano (Maluku)"
+ },
+ "bzo": {
+ "english_name": "Bozaba"
+ },
+ "bzp": {
+ "english_name": "Kemberano"
+ },
+ "bzq": {
+ "english_name": "Buli (Indonesia)"
+ },
+ "bzr": {
+ "english_name": "Biri"
+ },
+ "bzs": {
+ "english_name": "Brazilian Sign Language"
+ },
+ "bzt": {
+ "english_name": "Brithenig"
+ },
+ "bzu": {
+ "english_name": "Burmeso"
+ },
+ "bzv": {
+ "english_name": "Naami"
+ },
+ "bzw": {
+ "english_name": "Basa (Nigeria)"
+ },
+ "bzx": {
+ "english_name": "Bozo, K\u025bl\u025bngaxo"
+ },
+ "bzy": {
+ "english_name": "Obanliku"
+ },
+ "bzz": {
+ "english_name": "Evant"
+ },
+ "ca": {
+ "english_name": "Catalan",
+ "name": "Catal\u00e0"
+ },
+ "caa": {
+ "english_name": "Chort\u00ed"
+ },
+ "cab": {
+ "english_name": "Garifuna"
+ },
+ "cac": {
+ "english_name": "Chuj"
+ },
+ "cad": {
+ "english_name": "Caddo"
+ },
+ "cae": {
+ "english_name": "Lehar"
+ },
+ "caf": {
+ "english_name": "Carrier, Southern"
+ },
+ "cag": {
+ "english_name": "Nivacl\u00e9"
+ },
+ "cah": {
+ "english_name": "Cahuarano"
+ },
+ "caj": {
+ "english_name": "Chan\u00e9"
+ },
+ "cak": {
+ "english_name": "Kaqchikel"
+ },
+ "cal": {
+ "english_name": "Carolinian"
+ },
+ "cam": {
+ "english_name": "Cemuh\u00ee"
+ },
+ "can": {
+ "english_name": "Chambri"
+ },
+ "cao": {
+ "english_name": "Ch\u00e1cobo"
+ },
+ "cap": {
+ "english_name": "Chipaya"
+ },
+ "caq": {
+ "english_name": "Nicobarese, Car"
+ },
+ "car": {
+ "english_name": "Carib, Galibi"
+ },
+ "cas": {
+ "english_name": "Tsiman\u00e9"
+ },
+ "cav": {
+ "english_name": "Cavine\u00f1a"
+ },
+ "caw": {
+ "english_name": "Callawalla"
+ },
+ "cax": {
+ "english_name": "Chiquitano"
+ },
+ "cay": {
+ "english_name": "Cayuga"
+ },
+ "caz": {
+ "english_name": "Canichana"
+ },
+ "cbb": {
+ "english_name": "Cabiyar\u00ed"
+ },
+ "cbc": {
+ "english_name": "Carapana"
+ },
+ "cbd": {
+ "english_name": "Carijona"
+ },
+ "cbe": {
+ "english_name": "Chipiajes"
+ },
+ "cbg": {
+ "english_name": "Chimila"
+ },
+ "cbh": {
+ "english_name": "Cagua"
+ },
+ "cbi": {
+ "english_name": "Chachi"
+ },
+ "cbj": {
+ "english_name": "Ede Cabe"
+ },
+ "cbk": {
+ "english_name": "Chavacano"
+ },
+ "cbl": {
+ "english_name": "Chin, Bualkhaw"
+ },
+ "cbn": {
+ "english_name": "Nyahkur"
+ },
+ "cbo": {
+ "english_name": "Izora"
+ },
+ "cbr": {
+ "english_name": "Cashibo-Cacataibo"
+ },
+ "cbs": {
+ "english_name": "Cashinahua"
+ },
+ "cbt": {
+ "english_name": "Chayahuita"
+ },
+ "cbu": {
+ "english_name": "Candoshi-Shapra"
+ },
+ "cbv": {
+ "english_name": "Cacua"
+ },
+ "cbw": {
+ "english_name": "Kinabalian"
+ },
+ "cby": {
+ "english_name": "Carabayo"
+ },
+ "cca": {
+ "english_name": "Cauca"
+ },
+ "ccc": {
+ "english_name": "Chamicuro"
+ },
+ "ccd": {
+ "english_name": "Creole, Cafundo"
+ },
+ "cce": {
+ "english_name": "Chopi"
+ },
+ "ccg": {
+ "english_name": "Daka, Samba"
+ },
+ "cch": {
+ "english_name": "Atsam"
+ },
+ "ccj": {
+ "english_name": "Kasanga"
+ },
+ "ccl": {
+ "english_name": "Cutchi-Swahili"
+ },
+ "ccm": {
+ "english_name": "Creole Malay, Malaccan"
+ },
+ "cco": {
+ "english_name": "Chinantec, Comaltepec"
+ },
+ "ccp": {
+ "english_name": "Chakma"
+ },
+ "ccr": {
+ "english_name": "Cacaopera"
+ },
+ "cda": {
+ "english_name": "Choni"
+ },
+ "cde": {
+ "english_name": "Chenchu"
+ },
+ "cdf": {
+ "english_name": "Chiru"
+ },
+ "cdg": {
+ "english_name": "Chamari"
+ },
+ "cdh": {
+ "english_name": "Chambeali"
+ },
+ "cdi": {
+ "english_name": "Chodri"
+ },
+ "cdj": {
+ "english_name": "Churahi"
+ },
+ "cdm": {
+ "english_name": "Chepang"
+ },
+ "cdn": {
+ "english_name": "Chaudangsi"
+ },
+ "cdo": {
+ "english_name": "Chinese, Min Dong"
+ },
+ "cdr": {
+ "english_name": "Cinda-Regi-Tiyal"
+ },
+ "cds": {
+ "english_name": "Chadian Sign Language"
+ },
+ "cdy": {
+ "english_name": "Chadong"
+ },
+ "cdz": {
+ "english_name": "Koda"
+ },
+ "ce": {
+ "english_name": "Chechen"
+ },
+ "cea": {
+ "english_name": "Chehalis, Lower"
+ },
+ "ceb": {
+ "english_name": "Cebuano"
+ },
+ "ceg": {
+ "english_name": "Chamacoco"
+ },
+ "cek": {
+ "english_name": "Chin, Eastern Khumi"
+ },
+ "cen": {
+ "english_name": "Cen"
+ },
+ "cet": {
+ "english_name": "Cent\u00fa\u00fam"
+ },
+ "cfa": {
+ "english_name": "Dijim-Bwilim"
+ },
+ "cfd": {
+ "english_name": "Cara"
+ },
+ "cfg": {
+ "english_name": "Como Karim"
+ },
+ "cfm": {
+ "english_name": "Chin, Falam"
+ },
+ "cga": {
+ "english_name": "Changriwa"
+ },
+ "cgc": {
+ "english_name": "Kagayanen"
+ },
+ "cgg": {
+ "english_name": "Chiga"
+ },
+ "cgk": {
+ "english_name": "Chocangacakha"
+ },
+ "ch": {
+ "english_name": "Chamorro"
+ },
+ "chb": {
+ "english_name": "Chibcha"
+ },
+ "chc": {
+ "english_name": "Catawba"
+ },
+ "chd": {
+ "english_name": "Chontal, Highland Oaxaca"
+ },
+ "chf": {
+ "english_name": "Chontal, Tabasco"
+ },
+ "chg": {
+ "english_name": "Chagatai"
+ },
+ "chh": {
+ "english_name": "Chinook"
+ },
+ "chj": {
+ "english_name": "Chinantec, Ojitl\u00e1n"
+ },
+ "chk": {
+ "english_name": "Chuukese"
+ },
+ "chl": {
+ "english_name": "Cahuilla"
+ },
+ "chm": {
+ "english_name": "Mari (Russia)"
+ },
+ "chn": {
+ "english_name": "Chinook jargon"
+ },
+ "cho": {
+ "english_name": "Choctaw"
+ },
+ "chp": {
+ "english_name": "Chipewyan"
+ },
+ "chq": {
+ "english_name": "Chinantec, Quiotepec"
+ },
+ "chr": {
+ "english_name": "Cherokee"
+ },
+ "cht": {
+ "english_name": "Chol\u00f3n"
+ },
+ "chw": {
+ "english_name": "Chuwabu"
+ },
+ "chx": {
+ "english_name": "Chantyal"
+ },
+ "chy": {
+ "english_name": "Cheyenne"
+ },
+ "chz": {
+ "english_name": "Chinantec, Ozumac\u00edn"
+ },
+ "cia": {
+ "english_name": "Cia-Cia"
+ },
+ "cib": {
+ "english_name": "Gbe, Ci"
+ },
+ "cic": {
+ "english_name": "Chickasaw"
+ },
+ "cid": {
+ "english_name": "Chimariko"
+ },
+ "cie": {
+ "english_name": "Cineni"
+ },
+ "cih": {
+ "english_name": "Chinali"
+ },
+ "cik": {
+ "english_name": "Kinnauri, Chitkuli"
+ },
+ "cim": {
+ "english_name": "Cimbrian"
+ },
+ "cin": {
+ "english_name": "Cinta Larga"
+ },
+ "cip": {
+ "english_name": "Chiapanec"
+ },
+ "cir": {
+ "english_name": "Tiri"
+ },
+ "ciw": {
+ "english_name": "Chippewa"
+ },
+ "ciy": {
+ "english_name": "Chaima"
+ },
+ "cja": {
+ "english_name": "Cham, Western"
+ },
+ "cje": {
+ "english_name": "Chru"
+ },
+ "cjh": {
+ "english_name": "Chehalis, Upper"
+ },
+ "cji": {
+ "english_name": "Chamalal"
+ },
+ "cjk": {
+ "english_name": "Chokwe"
+ },
+ "cjm": {
+ "english_name": "Cham, Eastern"
+ },
+ "cjn": {
+ "english_name": "Chenapian"
+ },
+ "cjo": {
+ "english_name": "Ash\u00e9ninka Pajonal"
+ },
+ "cjp": {
+ "english_name": "Cab\u00e9car"
+ },
+ "cjs": {
+ "english_name": "Shor"
+ },
+ "cjv": {
+ "english_name": "Chuave"
+ },
+ "cjy": {
+ "english_name": "Chinese, Jinyu"
+ },
+ "ckb": {
+ "english_name": "Kurdish, Central"
+ },
+ "ckh": {
+ "english_name": "Chak"
+ },
+ "ckl": {
+ "english_name": "Cibak"
+ },
+ "ckn": {
+ "english_name": "Chin, Kaang"
+ },
+ "cko": {
+ "english_name": "Anufo"
+ },
+ "ckq": {
+ "english_name": "Kajakse"
+ },
+ "ckr": {
+ "english_name": "Kairak"
+ },
+ "cks": {
+ "english_name": "Tayo"
+ },
+ "ckt": {
+ "english_name": "Chukot"
+ },
+ "cku": {
+ "english_name": "Koasati"
+ },
+ "ckv": {
+ "english_name": "Kavalan"
+ },
+ "ckx": {
+ "english_name": "Caka"
+ },
+ "cky": {
+ "english_name": "Cakfem-Mushere"
+ },
+ "ckz": {
+ "english_name": "Cakchiquel-Quich\u00e9 Mixed Language"
+ },
+ "cla": {
+ "english_name": "Ron"
+ },
+ "clc": {
+ "english_name": "Chilcotin"
+ },
+ "cld": {
+ "english_name": "Neo-Aramaic, Chaldean"
+ },
+ "cle": {
+ "english_name": "Chinantec, Lealao"
+ },
+ "clh": {
+ "english_name": "Chilisso"
+ },
+ "cli": {
+ "english_name": "Chakali"
+ },
+ "clj": {
+ "english_name": "Chin, Laitu"
+ },
+ "clk": {
+ "english_name": "Idu-Mishmi"
+ },
+ "cll": {
+ "english_name": "Chala"
+ },
+ "clm": {
+ "english_name": "Clallam"
+ },
+ "clo": {
+ "english_name": "Chontal, Lowland Oaxaca"
+ },
+ "clt": {
+ "english_name": "Chin, Lautu"
+ },
+ "clu": {
+ "english_name": "Caluyanun"
+ },
+ "clw": {
+ "english_name": "Chulym"
+ },
+ "cly": {
+ "english_name": "Chatino, Eastern Highland"
+ },
+ "cma": {
+ "english_name": "Maa"
+ },
+ "cme": {
+ "english_name": "Cerma"
+ },
+ "cmg": {
+ "english_name": "Mongolian, Classical"
+ },
+ "cmi": {
+ "english_name": "Ember\u00e1-Cham\u00ed"
+ },
+ "cml": {
+ "english_name": "Campalagian"
+ },
+ "cmm": {
+ "english_name": "Michigamea"
+ },
+ "cmn": {
+ "english_name": "Chinese, Mandarin"
+ },
+ "cmo": {
+ "english_name": "Mnong, Central"
+ },
+ "cmr": {
+ "english_name": "Chin, Mro-Khimi"
+ },
+ "cms": {
+ "english_name": "Messapic"
+ },
+ "cmt": {
+ "english_name": "Camtho"
+ },
+ "cna": {
+ "english_name": "Changthang"
+ },
+ "cnb": {
+ "english_name": "Chin, Chinbon"
+ },
+ "cnc": {
+ "english_name": "C\u00f4\u00f4ng"
+ },
+ "cng": {
+ "english_name": "Qiang, Northern"
+ },
+ "cnh": {
+ "english_name": "Chin, Haka"
+ },
+ "cni": {
+ "english_name": "Ash\u00e1ninka"
+ },
+ "cnk": {
+ "english_name": "Chin, Khumi"
+ },
+ "cnl": {
+ "english_name": "Chinantec, Lalana"
+ },
+ "cno": {
+ "english_name": "Con"
+ },
+ "cns": {
+ "english_name": "Asmat, Central"
+ },
+ "cnt": {
+ "english_name": "Chinantec, Tepetotutla"
+ },
+ "cnu": {
+ "english_name": "Chenoua"
+ },
+ "cnw": {
+ "english_name": "Chin, Ngawn"
+ },
+ "cnx": {
+ "english_name": "Cornish, Middle"
+ },
+ "co": {
+ "english_name": "Corsican"
+ },
+ "coa": {
+ "english_name": "Malay, Cocos Islands"
+ },
+ "cob": {
+ "english_name": "Chicomuceltec"
+ },
+ "coc": {
+ "english_name": "Cocopa"
+ },
+ "cod": {
+ "english_name": "Cocama-Cocamilla"
+ },
+ "coe": {
+ "english_name": "Koreguaje"
+ },
+ "cof": {
+ "english_name": "Colorado"
+ },
+ "cog": {
+ "english_name": "Chong"
+ },
+ "coh": {
+ "english_name": "Chonyi-Dzihana-Kauma"
+ },
+ "coj": {
+ "english_name": "Cochimi"
+ },
+ "cok": {
+ "english_name": "Cora, Santa Teresa"
+ },
+ "col": {
+ "english_name": "Columbia-Wenatchi"
+ },
+ "com": {
+ "english_name": "Comanche"
+ },
+ "con": {
+ "english_name": "Cof\u00e1n"
+ },
+ "coo": {
+ "english_name": "Comox"
+ },
+ "cop": {
+ "english_name": "Coptic"
+ },
+ "coq": {
+ "english_name": "Coquille"
+ },
+ "cot": {
+ "english_name": "Caquinte"
+ },
+ "cou": {
+ "english_name": "Wamey"
+ },
+ "cov": {
+ "english_name": "Cao Miao"
+ },
+ "cow": {
+ "english_name": "Cowlitz"
+ },
+ "cox": {
+ "english_name": "Nanti"
+ },
+ "coy": {
+ "english_name": "Coyaima"
+ },
+ "coz": {
+ "english_name": "Chochotec"
+ },
+ "cpa": {
+ "english_name": "Chinantec, Palantla"
+ },
+ "cpb": {
+ "english_name": "Ash\u00e9ninka, Ucayali-Yur\u00faa"
+ },
+ "cpc": {
+ "english_name": "Ajy\u00edninka Apurucayali"
+ },
+ "cpg": {
+ "english_name": "Greek, Cappadocian"
+ },
+ "cpi": {
+ "english_name": "Pidgin English, Chinese"
+ },
+ "cpn": {
+ "english_name": "Cherepon"
+ },
+ "cpo": {
+ "english_name": "Kpeego"
+ },
+ "cps": {
+ "english_name": "Capiznon"
+ },
+ "cpu": {
+ "english_name": "Ash\u00e9ninka, Pichis"
+ },
+ "cpx": {
+ "english_name": "Chinese, Pu-Xian"
+ },
+ "cpy": {
+ "english_name": "Ash\u00e9ninka, South Ucayali"
+ },
+ "cqd": {
+ "english_name": "Miao, Chuanqiandian Cluster"
+ },
+ "cqu": {
+ "english_name": "Quechua, Chilean"
+ },
+ "cr": {
+ "english_name": "Cree"
+ },
+ "cra": {
+ "english_name": "Chara"
+ },
+ "crb": {
+ "english_name": "Carib, Island"
+ },
+ "crc": {
+ "english_name": "Lonwolwol"
+ },
+ "crd": {
+ "english_name": "Coeur d'Alene"
+ },
+ "crf": {
+ "english_name": "Caramanta"
+ },
+ "crg": {
+ "english_name": "Michif"
+ },
+ "crh": {
+ "english_name": "Tatar, Crimean",
+ "name": "Tatar, Crimean"
+ },
+ "cri": {
+ "english_name": "S\u00e3otomense"
+ },
+ "crj": {
+ "english_name": "Cree, Southern East"
+ },
+ "crk": {
+ "english_name": "Cree, Plains"
+ },
+ "crl": {
+ "english_name": "Cree, Northern East"
+ },
+ "crm": {
+ "english_name": "Cree, Moose"
+ },
+ "crn": {
+ "english_name": "Cora, El Nayar"
+ },
+ "cro": {
+ "english_name": "Crow"
+ },
+ "crq": {
+ "english_name": "Chorote, Iyo'wujwa"
+ },
+ "crr": {
+ "english_name": "Algonquian, Carolina"
+ },
+ "crs": {
+ "english_name": "Creole French, Seselwa"
+ },
+ "crt": {
+ "english_name": "Chorote, Iyojwa'ja"
+ },
+ "crv": {
+ "english_name": "Chaura"
+ },
+ "crw": {
+ "english_name": "Chrau"
+ },
+ "crx": {
+ "english_name": "Carrier"
+ },
+ "cry": {
+ "english_name": "Cori"
+ },
+ "crz": {
+ "english_name": "Cruze\u00f1o"
+ },
+ "cs": {
+ "english_name": "Czech",
+ "name": "\u010de\u0161tina"
+ },
+ "csa": {
+ "english_name": "Chinantec, Chiltepec"
+ },
+ "csb": {
+ "english_name": "Kashubian"
+ },
+ "csc": {
+ "english_name": "Catalan Sign Language"
+ },
+ "csd": {
+ "english_name": "Chiangmai Sign Language"
+ },
+ "cse": {
+ "english_name": "Czech Sign Language"
+ },
+ "csf": {
+ "english_name": "Cuba Sign Language"
+ },
+ "csg": {
+ "english_name": "Chilean Sign Language"
+ },
+ "csh": {
+ "english_name": "Chin, Asho"
+ },
+ "csi": {
+ "english_name": "Miwok, Coast"
+ },
+ "csj": {
+ "english_name": "Chin, Songlai"
+ },
+ "csk": {
+ "english_name": "Jola-Kasa"
+ },
+ "csl": {
+ "english_name": "Chinese Sign Language"
+ },
+ "csm": {
+ "english_name": "Miwok, Central Sierra"
+ },
+ "csn": {
+ "english_name": "Colombian Sign Language"
+ },
+ "cso": {
+ "english_name": "Chinantec, Sochiapam"
+ },
+ "csq": {
+ "english_name": "Croatia Sign Language"
+ },
+ "csr": {
+ "english_name": "Costa Rican Sign Language"
+ },
+ "css": {
+ "english_name": "Ohlone, Southern"
+ },
+ "cst": {
+ "english_name": "Ohlone, Northern"
+ },
+ "csv": {
+ "english_name": "Chin, Sumtu"
+ },
+ "csw": {
+ "english_name": "Cree, Swampy"
+ },
+ "csy": {
+ "english_name": "Chin, Siyin"
+ },
+ "csz": {
+ "english_name": "Coos"
+ },
+ "cta": {
+ "english_name": "Chatino, Tataltepec"
+ },
+ "ctc": {
+ "english_name": "Chetco"
+ },
+ "ctd": {
+ "english_name": "Chin, Tedim"
+ },
+ "cte": {
+ "english_name": "Chinantec, Tepinapa"
+ },
+ "ctg": {
+ "english_name": "Chittagonian"
+ },
+ "cth": {
+ "english_name": "Chin, Thaiphum"
+ },
+ "ctl": {
+ "english_name": "Chinantec, Tlacoatzintepec"
+ },
+ "ctm": {
+ "english_name": "Chitimacha"
+ },
+ "ctn": {
+ "english_name": "Chhintange"
+ },
+ "cto": {
+ "english_name": "Ember\u00e1-Cat\u00edo"
+ },
+ "ctp": {
+ "english_name": "Chatino, Western Highland"
+ },
+ "cts": {
+ "english_name": "Bikol, Northern Catanduanes"
+ },
+ "ctt": {
+ "english_name": "Chetti, Wayanad"
+ },
+ "ctu": {
+ "english_name": "Chol"
+ },
+ "ctz": {
+ "english_name": "Chatino, Zacatepec"
+ },
+ "cu": {
+ "english_name": "Slavic, Church"
+ },
+ "cua": {
+ "english_name": "Cua"
+ },
+ "cub": {
+ "english_name": "Cubeo"
+ },
+ "cuc": {
+ "english_name": "Chinantec, Usila"
+ },
+ "cug": {
+ "english_name": "Cung"
+ },
+ "cuh": {
+ "english_name": "Chuka"
+ },
+ "cui": {
+ "english_name": "Cuiba"
+ },
+ "cuj": {
+ "english_name": "Mashco Piro"
+ },
+ "cuk": {
+ "english_name": "Kuna, San Blas"
+ },
+ "cul": {
+ "english_name": "Culina"
+ },
+ "cum": {
+ "english_name": "Cumeral"
+ },
+ "cuo": {
+ "english_name": "Cumanagoto"
+ },
+ "cup": {
+ "english_name": "Cupe\u00f1o"
+ },
+ "cuq": {
+ "english_name": "Cun"
+ },
+ "cur": {
+ "english_name": "Chhulung"
+ },
+ "cut": {
+ "english_name": "Cuicatec, Teutila"
+ },
+ "cuu": {
+ "english_name": "Tai Ya"
+ },
+ "cuv": {
+ "english_name": "Cuvok"
+ },
+ "cuw": {
+ "english_name": "Chukwa"
+ },
+ "cux": {
+ "english_name": "Cuicatec, Tepeuxila"
+ },
+ "cv": {
+ "english_name": "Chuvash"
+ },
+ "cvg": {
+ "english_name": "Chug"
+ },
+ "cvn": {
+ "english_name": "Chinantec, Valle Nacional"
+ },
+ "cwa": {
+ "english_name": "Kabwa"
+ },
+ "cwb": {
+ "english_name": "Maindo"
+ },
+ "cwd": {
+ "english_name": "Cree, Woods"
+ },
+ "cwe": {
+ "english_name": "Kwere"
+ },
+ "cwg": {
+ "english_name": "Chewong"
+ },
+ "cwt": {
+ "english_name": "Kuwaataay"
+ },
+ "cy": {
+ "english_name": "Welsh",
+ "name": "Cymraeg"
+ },
+ "cya": {
+ "english_name": "Chatino, Nopala"
+ },
+ "cyb": {
+ "english_name": "Cayubaba"
+ },
+ "cyo": {
+ "english_name": "Cuyonon"
+ },
+ "czh": {
+ "english_name": "Chinese, Huizhou"
+ },
+ "czk": {
+ "english_name": "Knaanic"
+ },
+ "czn": {
+ "english_name": "Chatino, Zenzontepec"
+ },
+ "czo": {
+ "english_name": "Chinese, Min Zhong"
+ },
+ "czt": {
+ "english_name": "Chin, Zotung"
+ },
+ "da": {
+ "english_name": "Danish",
+ "name": "Dansk"
+ },
+ "daa": {
+ "english_name": "Dangal\u00e9at"
+ },
+ "dac": {
+ "english_name": "Dambi"
+ },
+ "dad": {
+ "english_name": "Marik"
+ },
+ "dae": {
+ "english_name": "Duupa"
+ },
+ "dag": {
+ "english_name": "Dagbani"
+ },
+ "dah": {
+ "english_name": "Gwahatike"
+ },
+ "dai": {
+ "english_name": "Day"
+ },
+ "daj": {
+ "english_name": "Daju, Dar Fur"
+ },
+ "dak": {
+ "english_name": "Dakota"
+ },
+ "dal": {
+ "english_name": "Dahalo"
+ },
+ "dam": {
+ "english_name": "Damakawa"
+ },
+ "dao": {
+ "english_name": "Chin, Daai"
+ },
+ "daq": {
+ "english_name": "Maria, Dandami"
+ },
+ "dar": {
+ "english_name": "Dargwa"
+ },
+ "das": {
+ "english_name": "Daho-Doo"
+ },
+ "dau": {
+ "english_name": "Daju, Dar Sila"
+ },
+ "dav": {
+ "english_name": "Taita"
+ },
+ "daw": {
+ "english_name": "Davawenyo"
+ },
+ "dax": {
+ "english_name": "Dayi"
+ },
+ "daz": {
+ "english_name": "Dao"
+ },
+ "dba": {
+ "english_name": "Bangime"
+ },
+ "dbb": {
+ "english_name": "Deno"
+ },
+ "dbd": {
+ "english_name": "Dadiya"
+ },
+ "dbe": {
+ "english_name": "Dabe"
+ },
+ "dbf": {
+ "english_name": "Edopi"
+ },
+ "dbg": {
+ "english_name": "Dogon, Dogul Dom"
+ },
+ "dbi": {
+ "english_name": "Doka"
+ },
+ "dbj": {
+ "english_name": "Ida'an"
+ },
+ "dbl": {
+ "english_name": "Dyirbal"
+ },
+ "dbm": {
+ "english_name": "Duguri"
+ },
+ "dbn": {
+ "english_name": "Duriankere"
+ },
+ "dbo": {
+ "english_name": "Dulbu"
+ },
+ "dbp": {
+ "english_name": "Duwai"
+ },
+ "dbq": {
+ "english_name": "Daba"
+ },
+ "dbr": {
+ "english_name": "Dabarre"
+ },
+ "dbt": {
+ "english_name": "Dogon, Ben Tey"
+ },
+ "dbu": {
+ "english_name": "Dogon, Bondum Dom"
+ },
+ "dbv": {
+ "english_name": "Dungu"
+ },
+ "dbw": {
+ "english_name": "Dogon, Bankan Tey"
+ },
+ "dby": {
+ "english_name": "Dibiyaso"
+ },
+ "dcc": {
+ "english_name": "Deccan"
+ },
+ "dcr": {
+ "english_name": "Negerhollands"
+ },
+ "dda": {
+ "english_name": "Dadi Dadi"
+ },
+ "ddd": {
+ "english_name": "Dongotono"
+ },
+ "dde": {
+ "english_name": "Doondo"
+ },
+ "ddg": {
+ "english_name": "Fataluku"
+ },
+ "ddi": {
+ "english_name": "Goodenough, West"
+ },
+ "ddj": {
+ "english_name": "Jaru"
+ },
+ "ddn": {
+ "english_name": "Dendi (Benin)"
+ },
+ "ddo": {
+ "english_name": "Dido"
+ },
+ "ddr": {
+ "english_name": "Dhudhuroa"
+ },
+ "dds": {
+ "english_name": "Dogon, Donno So"
+ },
+ "ddw": {
+ "english_name": "Dawera-Daweloor"
+ },
+ "de": {
+ "english_name": "German",
+ "name": "Deutsch"
+ },
+ "dec": {
+ "english_name": "Dagik"
+ },
+ "ded": {
+ "english_name": "Dedua"
+ },
+ "dee": {
+ "english_name": "Dewoin"
+ },
+ "def": {
+ "english_name": "Dezfuli"
+ },
+ "deg": {
+ "english_name": "Degema"
+ },
+ "deh": {
+ "english_name": "Dehwari"
+ },
+ "dei": {
+ "english_name": "Demisa"
+ },
+ "dek": {
+ "english_name": "Dek"
+ },
+ "del": {
+ "english_name": "Delaware"
+ },
+ "dem": {
+ "english_name": "Dem"
+ },
+ "den": {
+ "english_name": "Slave (Athapascan)"
+ },
+ "dep": {
+ "english_name": "Delaware, Pidgin"
+ },
+ "deq": {
+ "english_name": "Dendi (Central African Republic)"
+ },
+ "der": {
+ "english_name": "Deori"
+ },
+ "des": {
+ "english_name": "Desano"
+ },
+ "dev": {
+ "english_name": "Domung"
+ },
+ "dez": {
+ "english_name": "Dengese"
+ },
+ "dga": {
+ "english_name": "Dagaare, Southern"
+ },
+ "dgb": {
+ "english_name": "Dogon, Bunoge"
+ },
+ "dgc": {
+ "english_name": "Agta, Casiguran Dumagat"
+ },
+ "dgd": {
+ "english_name": "Dagaari Dioula"
+ },
+ "dge": {
+ "english_name": "Degenan"
+ },
+ "dgg": {
+ "english_name": "Doga"
+ },
+ "dgh": {
+ "english_name": "Dghwede"
+ },
+ "dgi": {
+ "english_name": "Dagara, Northern"
+ },
+ "dgk": {
+ "english_name": "Dagba"
+ },
+ "dgl": {
+ "english_name": "Andaandi"
+ },
+ "dgn": {
+ "english_name": "Dagoman"
+ },
+ "dgo": {
+ "english_name": "Dogri (individual language)"
+ },
+ "dgr": {
+ "english_name": "Dogrib"
+ },
+ "dgs": {
+ "english_name": "Dogoso"
+ },
+ "dgt": {
+ "english_name": "Ndra'ngith"
+ },
+ "dgu": {
+ "english_name": "Degaru"
+ },
+ "dgw": {
+ "english_name": "Daungwurrung"
+ },
+ "dgx": {
+ "english_name": "Doghoro"
+ },
+ "dgz": {
+ "english_name": "Daga"
+ },
+ "dhd": {
+ "english_name": "Dhundari"
+ },
+ "dhg": {
+ "english_name": "Djangu"
+ },
+ "dhi": {
+ "english_name": "Dhimal"
+ },
+ "dhl": {
+ "english_name": "Dhalandji"
+ },
+ "dhm": {
+ "english_name": "Zemba"
+ },
+ "dhn": {
+ "english_name": "Dhanki"
+ },
+ "dho": {
+ "english_name": "Dhodia"
+ },
+ "dhr": {
+ "english_name": "Dhargari"
+ },
+ "dhs": {
+ "english_name": "Dhaiso"
+ },
+ "dhu": {
+ "english_name": "Dhurga"
+ },
+ "dhv": {
+ "english_name": "Dehu"
+ },
+ "dhw": {
+ "english_name": "Dhanwar (Nepal)"
+ },
+ "dhx": {
+ "english_name": "Dhungaloo"
+ },
+ "dia": {
+ "english_name": "Dia"
+ },
+ "dib": {
+ "english_name": "Dinka, South Central"
+ },
+ "dic": {
+ "english_name": "Dida, Lakota"
+ },
+ "did": {
+ "english_name": "Didinga"
+ },
+ "dif": {
+ "english_name": "Dieri"
+ },
+ "dig": {
+ "english_name": "Digo"
+ },
+ "dih": {
+ "english_name": "Kumiai"
+ },
+ "dii": {
+ "english_name": "Dimbong"
+ },
+ "dij": {
+ "english_name": "Dai"
+ },
+ "dik": {
+ "english_name": "Dinka, Southwestern"
+ },
+ "dil": {
+ "english_name": "Dilling"
+ },
+ "dim": {
+ "english_name": "Dime"
+ },
+ "din": {
+ "english_name": "Dinka"
+ },
+ "dio": {
+ "english_name": "Dibo"
+ },
+ "dip": {
+ "english_name": "Dinka, Northeastern"
+ },
+ "diq": {
+ "english_name": "Dimli (individual language)"
+ },
+ "dir": {
+ "english_name": "Dirim"
+ },
+ "dis": {
+ "english_name": "Dimasa"
+ },
+ "dit": {
+ "english_name": "Dirari"
+ },
+ "diu": {
+ "english_name": "Diriku"
+ },
+ "diw": {
+ "english_name": "Dinka, Northwestern"
+ },
+ "dix": {
+ "english_name": "Dixon Reef"
+ },
+ "diy": {
+ "english_name": "Diuwe"
+ },
+ "diz": {
+ "english_name": "Ding"
+ },
+ "dja": {
+ "english_name": "Djadjawurrung"
+ },
+ "djb": {
+ "english_name": "Djinba"
+ },
+ "djc": {
+ "english_name": "Daju, Dar Daju"
+ },
+ "djd": {
+ "english_name": "Djamindjung"
+ },
+ "dje": {
+ "english_name": "Zarma"
+ },
+ "djf": {
+ "english_name": "Djangun"
+ },
+ "dji": {
+ "english_name": "Djinang"
+ },
+ "djj": {
+ "english_name": "Djeebbana"
+ },
+ "djk": {
+ "english_name": "Eastern Maroon Creole"
+ },
+ "djm": {
+ "english_name": "Dogon, Jamsay"
+ },
+ "djn": {
+ "english_name": "Djauan"
+ },
+ "djo": {
+ "english_name": "Jangkang"
+ },
+ "djr": {
+ "english_name": "Djambarrpuyngu"
+ },
+ "dju": {
+ "english_name": "Kapriman"
+ },
+ "djw": {
+ "english_name": "Djawi"
+ },
+ "dka": {
+ "english_name": "Dakpakha"
+ },
+ "dkk": {
+ "english_name": "Dakka"
+ },
+ "dkr": {
+ "english_name": "Kuijau"
+ },
+ "dks": {
+ "english_name": "Dinka, Southeastern"
+ },
+ "dkx": {
+ "english_name": "Mazagway"
+ },
+ "dlg": {
+ "english_name": "Dolgan"
+ },
+ "dlk": {
+ "english_name": "Dahalik"
+ },
+ "dlm": {
+ "english_name": "Dalmatian"
+ },
+ "dln": {
+ "english_name": "Darlong"
+ },
+ "dma": {
+ "english_name": "Duma"
+ },
+ "dmb": {
+ "english_name": "Dogon, Mombo"
+ },
+ "dmc": {
+ "english_name": "Gavak"
+ },
+ "dmd": {
+ "english_name": "Madhi Madhi"
+ },
+ "dme": {
+ "english_name": "Dugwor"
+ },
+ "dmg": {
+ "english_name": "Kinabatangan, Upper"
+ },
+ "dmk": {
+ "english_name": "Domaaki"
+ },
+ "dml": {
+ "english_name": "Dameli"
+ },
+ "dmm": {
+ "english_name": "Dama"
+ },
+ "dmo": {
+ "english_name": "Kemedzung"
+ },
+ "dmr": {
+ "english_name": "Damar, East"
+ },
+ "dms": {
+ "english_name": "Dampelas"
+ },
+ "dmu": {
+ "english_name": "Dubu"
+ },
+ "dmv": {
+ "english_name": "Dumpas"
+ },
+ "dmw": {
+ "english_name": "Mudburra"
+ },
+ "dmx": {
+ "english_name": "Dema"
+ },
+ "dmy": {
+ "english_name": "Demta"
+ },
+ "dna": {
+ "english_name": "Dani, Upper Grand Valley"
+ },
+ "dnd": {
+ "english_name": "Daonda"
+ },
+ "dne": {
+ "english_name": "Ndendeule"
+ },
+ "dng": {
+ "english_name": "Dungan"
+ },
+ "dni": {
+ "english_name": "Dani, Lower Grand Valley"
+ },
+ "dnj": {
+ "english_name": "Dan"
+ },
+ "dnk": {
+ "english_name": "Dengka"
+ },
+ "dnn": {
+ "english_name": "Dz\u00f9\u00f9ngoo"
+ },
+ "dnr": {
+ "english_name": "Danaru"
+ },
+ "dnt": {
+ "english_name": "Dani, Mid Grand Valley"
+ },
+ "dnu": {
+ "english_name": "Danau"
+ },
+ "dnv": {
+ "english_name": "Danu"
+ },
+ "dnw": {
+ "english_name": "Dani, Western"
+ },
+ "dny": {
+ "english_name": "Den\u00ed"
+ },
+ "doa": {
+ "english_name": "Dom"
+ },
+ "dob": {
+ "english_name": "Dobu"
+ },
+ "doc": {
+ "english_name": "Dong, Northern"
+ },
+ "doe": {
+ "english_name": "Doe"
+ },
+ "dof": {
+ "english_name": "Domu"
+ },
+ "doh": {
+ "english_name": "Dong"
+ },
+ "doi": {
+ "english_name": "Dogri (macrolanguage)"
+ },
+ "dok": {
+ "english_name": "Dondo"
+ },
+ "dol": {
+ "english_name": "Doso"
+ },
+ "don": {
+ "english_name": "Toura (Papua New Guinea)"
+ },
+ "doo": {
+ "english_name": "Dongo"
+ },
+ "dop": {
+ "english_name": "Lukpa"
+ },
+ "doq": {
+ "english_name": "Dominican Sign Language"
+ },
+ "dor": {
+ "english_name": "Dori'o"
+ },
+ "dos": {
+ "english_name": "Dogos\u00e9"
+ },
+ "dot": {
+ "english_name": "Dass"
+ },
+ "dov": {
+ "english_name": "Dombe"
+ },
+ "dow": {
+ "english_name": "Doyayo"
+ },
+ "dox": {
+ "english_name": "Bussa"
+ },
+ "doy": {
+ "english_name": "Dompo"
+ },
+ "doz": {
+ "english_name": "Dorze"
+ },
+ "dpp": {
+ "english_name": "Papar"
+ },
+ "drb": {
+ "english_name": "Dair"
+ },
+ "drc": {
+ "english_name": "Minderico"
+ },
+ "drd": {
+ "english_name": "Darmiya"
+ },
+ "dre": {
+ "english_name": "Dolpo"
+ },
+ "drg": {
+ "english_name": "Rungus"
+ },
+ "dri": {
+ "english_name": "C'lela"
+ },
+ "drl": {
+ "english_name": "Paakantyi"
+ },
+ "drn": {
+ "english_name": "Damar, West"
+ },
+ "dro": {
+ "english_name": "Melanau, Daro-Matu"
+ },
+ "drq": {
+ "english_name": "Dura"
+ },
+ "drr": {
+ "english_name": "Dororo"
+ },
+ "drs": {
+ "english_name": "Gedeo"
+ },
+ "drt": {
+ "english_name": "Drents"
+ },
+ "dru": {
+ "english_name": "Rukai"
+ },
+ "dry": {
+ "english_name": "Darai"
+ },
+ "dsb": {
+ "english_name": "Sorbian, Lower"
+ },
+ "dse": {
+ "english_name": "Dutch Sign Language"
+ },
+ "dsh": {
+ "english_name": "Daasanach"
+ },
+ "dsi": {
+ "english_name": "Disa"
+ },
+ "dsl": {
+ "english_name": "Danish Sign Language"
+ },
+ "dsn": {
+ "english_name": "Dusner"
+ },
+ "dso": {
+ "english_name": "Desiya"
+ },
+ "dsq": {
+ "english_name": "Tadaksahak"
+ },
+ "dta": {
+ "english_name": "Daur"
+ },
+ "dtb": {
+ "english_name": "Kadazan, Labuk-Kinabatangan"
+ },
+ "dtd": {
+ "english_name": "Ditidaht"
+ },
+ "dth": {
+ "english_name": "Adithinngithigh"
+ },
+ "dti": {
+ "english_name": "Dogon, Ana Tinga"
+ },
+ "dtk": {
+ "english_name": "Dogon, Tene Kan"
+ },
+ "dtm": {
+ "english_name": "Dogon, Tomo Kan"
+ },
+ "dto": {
+ "english_name": "Dogon, Tommo So"
+ },
+ "dtp": {
+ "english_name": "Dusun, Central"
+ },
+ "dtr": {
+ "english_name": "Lotud"
+ },
+ "dts": {
+ "english_name": "Dogon, Toro So"
+ },
+ "dtt": {
+ "english_name": "Dogon, Toro Tegu"
+ },
+ "dtu": {
+ "english_name": "Dogon, Tebul Ure"
+ },
+ "dty": {
+ "english_name": "Dotyali"
+ },
+ "dua": {
+ "english_name": "Duala"
+ },
+ "dub": {
+ "english_name": "Dubli"
+ },
+ "duc": {
+ "english_name": "Duna"
+ },
+ "dud": {
+ "english_name": "Hun-Saare"
+ },
+ "due": {
+ "english_name": "Agta, Umiray Dumaget"
+ },
+ "duf": {
+ "english_name": "Dumbea"
+ },
+ "dug": {
+ "english_name": "Duruma"
+ },
+ "duh": {
+ "english_name": "Dungra Bhil"
+ },
+ "dui": {
+ "english_name": "Dumun"
+ },
+ "duj": {
+ "english_name": "Dhuwal"
+ },
+ "duk": {
+ "english_name": "Uyajitaya"
+ },
+ "dul": {
+ "english_name": "Agta, Alabat Island"
+ },
+ "dum": {
+ "english_name": "Dutch, Middle (ca. 1050-1350)"
+ },
+ "dun": {
+ "english_name": "Dusun Deyah"
+ },
+ "duo": {
+ "english_name": "Agta, Dupaninan"
+ },
+ "dup": {
+ "english_name": "Duano"
+ },
+ "duq": {
+ "english_name": "Dusun Malang"
+ },
+ "dur": {
+ "english_name": "Dii"
+ },
+ "dus": {
+ "english_name": "Dumi"
+ },
+ "duu": {
+ "english_name": "Drung"
+ },
+ "duv": {
+ "english_name": "Duvle"
+ },
+ "duw": {
+ "english_name": "Dusun Witu"
+ },
+ "dux": {
+ "english_name": "Duungooma"
+ },
+ "duy": {
+ "english_name": "Agta, Dicamay"
+ },
+ "duz": {
+ "english_name": "Duli"
+ },
+ "dv": {
+ "english_name": "Dhivehi"
+ },
+ "dva": {
+ "english_name": "Duau"
+ },
+ "dwa": {
+ "english_name": "Diri"
+ },
+ "dwr": {
+ "english_name": "Dawro"
+ },
+ "dws": {
+ "english_name": "Dutton World Speedwords"
+ },
+ "dww": {
+ "english_name": "Dawawa"
+ },
+ "dya": {
+ "english_name": "Dyan"
+ },
+ "dyb": {
+ "english_name": "Dyaberdyaber"
+ },
+ "dyd": {
+ "english_name": "Dyugun"
+ },
+ "dyg": {
+ "english_name": "Agta, Villa Viciosa"
+ },
+ "dyi": {
+ "english_name": "Senoufo, Djimini"
+ },
+ "dym": {
+ "english_name": "Dogon, Yanda Dom"
+ },
+ "dyn": {
+ "english_name": "Dyangadi"
+ },
+ "dyo": {
+ "english_name": "Jola-Fonyi"
+ },
+ "dyu": {
+ "english_name": "Dyula"
+ },
+ "dyy": {
+ "english_name": "Dyaabugay"
+ },
+ "dz": {
+ "english_name": "Dzongkha"
+ },
+ "dza": {
+ "english_name": "Tunzu"
+ },
+ "dze": {
+ "english_name": "Djiwarli"
+ },
+ "dzg": {
+ "english_name": "Dazaga"
+ },
+ "dzl": {
+ "english_name": "Dzalakha"
+ },
+ "dzn": {
+ "english_name": "Dzando"
+ },
+ "eaa": {
+ "english_name": "Karenggapa"
+ },
+ "ebg": {
+ "english_name": "Ebughu"
+ },
+ "ebk": {
+ "english_name": "Bontok, Eastern"
+ },
+ "ebo": {
+ "english_name": "Teke-Ebo"
+ },
+ "ebr": {
+ "english_name": "Ebri\u00e9"
+ },
+ "ebu": {
+ "english_name": "Embu"
+ },
+ "ecr": {
+ "english_name": "Eteocretan"
+ },
+ "ecs": {
+ "english_name": "Ecuadorian Sign Language"
+ },
+ "ecy": {
+ "english_name": "Eteocypriot"
+ },
+ "ee": {
+ "english_name": "Ewe"
+ },
+ "eee": {
+ "english_name": "E"
+ },
+ "efa": {
+ "english_name": "Efai"
+ },
+ "efe": {
+ "english_name": "Efe"
+ },
+ "efi": {
+ "english_name": "Efik"
+ },
+ "ega": {
+ "english_name": "Ega"
+ },
+ "egl": {
+ "english_name": "Emilian"
+ },
+ "ego": {
+ "english_name": "Eggon"
+ },
+ "egy": {
+ "english_name": "Egyptian (Ancient)"
+ },
+ "ehu": {
+ "english_name": "Ehueun"
+ },
+ "eip": {
+ "english_name": "Eipomek"
+ },
+ "eit": {
+ "english_name": "Eitiep"
+ },
+ "eiv": {
+ "english_name": "Askopan"
+ },
+ "eja": {
+ "english_name": "Ejamat"
+ },
+ "eka": {
+ "english_name": "Ekajuk"
+ },
+ "ekc": {
+ "english_name": "Karnic, Eastern"
+ },
+ "eke": {
+ "english_name": "Ekit"
+ },
+ "ekg": {
+ "english_name": "Ekari"
+ },
+ "eki": {
+ "english_name": "Eki"
+ },
+ "ekk": {
+ "english_name": "Estonian, Standard"
+ },
+ "ekl": {
+ "english_name": "Kol (Bangladesh)"
+ },
+ "ekm": {
+ "english_name": "Elip"
+ },
+ "eko": {
+ "english_name": "Koti"
+ },
+ "ekp": {
+ "english_name": "Ekpeye"
+ },
+ "ekr": {
+ "english_name": "Yace"
+ },
+ "eky": {
+ "english_name": "Kayah, Eastern"
+ },
+ "el": {
+ "english_name": "Greek, Modern (1453-)",
+ "name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"
+ },
+ "ele": {
+ "english_name": "Elepi"
+ },
+ "elh": {
+ "english_name": "El Hugeirat"
+ },
+ "eli": {
+ "english_name": "Nding"
+ },
+ "elk": {
+ "english_name": "Elkei"
+ },
+ "elm": {
+ "english_name": "Eleme"
+ },
+ "elo": {
+ "english_name": "El Molo"
+ },
+ "elu": {
+ "english_name": "Elu"
+ },
+ "elx": {
+ "english_name": "Elamite"
+ },
+ "ema": {
+ "english_name": "Emai-Iuleha-Ora"
+ },
+ "emb": {
+ "english_name": "Embaloh"
+ },
+ "eme": {
+ "english_name": "Emerillon"
+ },
+ "emg": {
+ "english_name": "Meohang, Eastern"
+ },
+ "emi": {
+ "english_name": "Mussau-Emira"
+ },
+ "emk": {
+ "english_name": "Maninkakan, Eastern"
+ },
+ "emm": {
+ "english_name": "Mamulique"
+ },
+ "emn": {
+ "english_name": "Eman"
+ },
+ "emp": {
+ "english_name": "Ember\u00e1, Northern"
+ },
+ "ems": {
+ "english_name": "Yupik, Pacific Gulf"
+ },
+ "emu": {
+ "english_name": "Muria, Eastern"
+ },
+ "emw": {
+ "english_name": "Emplawas"
+ },
+ "emx": {
+ "english_name": "Erromintxela"
+ },
+ "emy": {
+ "english_name": "Mayan, Epigraphic"
+ },
+ "en": {
+ "english_name": "English"
+ },
+ "ena": {
+ "english_name": "Apali"
+ },
+ "enb": {
+ "english_name": "Markweeta"
+ },
+ "enc": {
+ "english_name": "En"
+ },
+ "end": {
+ "english_name": "Ende"
+ },
+ "enf": {
+ "english_name": "Enets, Forest"
+ },
+ "enh": {
+ "english_name": "Enets, Tundra"
+ },
+ "enm": {
+ "english_name": "English, Middle (1100-1500)"
+ },
+ "enn": {
+ "english_name": "Engenni"
+ },
+ "eno": {
+ "english_name": "Enggano"
+ },
+ "enq": {
+ "english_name": "Enga"
+ },
+ "enr": {
+ "english_name": "Emumu"
+ },
+ "enu": {
+ "english_name": "Enu"
+ },
+ "env": {
+ "english_name": "Enwan (Edu State)"
+ },
+ "enw": {
+ "english_name": "Enwan (Akwa Ibom State)"
+ },
+ "eo": {
+ "english_name": "Esperanto",
+ "name": "Esperanto"
+ },
+ "eot": {
+ "english_name": "Beti (C\u00f4te d'Ivoire)"
+ },
+ "epi": {
+ "english_name": "Epie"
+ },
+ "era": {
+ "english_name": "Eravallan"
+ },
+ "erg": {
+ "english_name": "Sie"
+ },
+ "erh": {
+ "english_name": "Eruwa"
+ },
+ "eri": {
+ "english_name": "Ogea"
+ },
+ "erk": {
+ "english_name": "Efate, South"
+ },
+ "ero": {
+ "english_name": "Horpa"
+ },
+ "err": {
+ "english_name": "Erre"
+ },
+ "ers": {
+ "english_name": "Ersu"
+ },
+ "ert": {
+ "english_name": "Eritai"
+ },
+ "erw": {
+ "english_name": "Erokwanas"
+ },
+ "es": {
+ "english_name": "Spanish",
+ "name": "Espa\u00f1ol"
+ },
+ "ese": {
+ "english_name": "Ese Ejja"
+ },
+ "esh": {
+ "english_name": "Eshtehardi"
+ },
+ "esi": {
+ "english_name": "Inupiatun, North Alaskan"
+ },
+ "esk": {
+ "english_name": "Inupiatun, Northwest Alaska"
+ },
+ "esl": {
+ "english_name": "Egypt Sign Language"
+ },
+ "esm": {
+ "english_name": "Esuma"
+ },
+ "esn": {
+ "english_name": "Salvadoran Sign Language"
+ },
+ "eso": {
+ "english_name": "Estonian Sign Language"
+ },
+ "esq": {
+ "english_name": "Esselen"
+ },
+ "ess": {
+ "english_name": "Yupik, Central Siberian"
+ },
+ "esu": {
+ "english_name": "Yupik, Central"
+ },
+ "et": {
+ "english_name": "Estonian",
+ "name": "Eesti"
+ },
+ "etb": {
+ "english_name": "Etebi"
+ },
+ "etc": {
+ "english_name": "Etchemin"
+ },
+ "eth": {
+ "english_name": "Ethiopian Sign Language"
+ },
+ "etn": {
+ "english_name": "Eton (Vanuatu)"
+ },
+ "eto": {
+ "english_name": "Eton (Cameroon)"
+ },
+ "etr": {
+ "english_name": "Edolo"
+ },
+ "ets": {
+ "english_name": "Yekhee"
+ },
+ "ett": {
+ "english_name": "Etruscan"
+ },
+ "etu": {
+ "english_name": "Ejagham"
+ },
+ "etx": {
+ "english_name": "Eten"
+ },
+ "etz": {
+ "english_name": "Semimi"
+ },
+ "eu": {
+ "english_name": "Basque",
+ "name": "Euskara"
+ },
+ "eve": {
+ "english_name": "Even"
+ },
+ "evh": {
+ "english_name": "Uvbie"
+ },
+ "evn": {
+ "english_name": "Evenki"
+ },
+ "ewo": {
+ "english_name": "Ewondo"
+ },
+ "ext": {
+ "english_name": "Extremaduran"
+ },
+ "eya": {
+ "english_name": "Eyak"
+ },
+ "eyo": {
+ "english_name": "Keiyo"
+ },
+ "eza": {
+ "english_name": "Ezaa"
+ },
+ "eze": {
+ "english_name": "Uzekwe"
+ },
+ "fa": {
+ "english_name": "Persian",
+ "name": "\u0641\u0627\u0631\u0633\u06cc"
+ },
+ "faa": {
+ "english_name": "Fasu"
+ },
+ "fab": {
+ "english_name": "Fa d'Ambu"
+ },
+ "fad": {
+ "english_name": "Wagi"
+ },
+ "faf": {
+ "english_name": "Fagani"
+ },
+ "fag": {
+ "english_name": "Finongan"
+ },
+ "fah": {
+ "english_name": "Fali, Baissa"
+ },
+ "fai": {
+ "english_name": "Faiwol"
+ },
+ "faj": {
+ "english_name": "Faita"
+ },
+ "fak": {
+ "english_name": "Fang (Cameroon)"
+ },
+ "fal": {
+ "english_name": "Fali, South"
+ },
+ "fam": {
+ "english_name": "Fam"
+ },
+ "fan": {
+ "english_name": "Fang (Equatorial Guinea)"
+ },
+ "fap": {
+ "english_name": "Palor"
+ },
+ "far": {
+ "english_name": "Fataleka"
+ },
+ "fat": {
+ "english_name": "Fanti"
+ },
+ "fau": {
+ "english_name": "Fayu"
+ },
+ "fax": {
+ "english_name": "Fala"
+ },
+ "fay": {
+ "english_name": "Fars, Southwestern"
+ },
+ "faz": {
+ "english_name": "Fars, Northwestern"
+ },
+ "fbl": {
+ "english_name": "Bikol, West Albay"
+ },
+ "fcs": {
+ "english_name": "Quebec Sign Language"
+ },
+ "fer": {
+ "english_name": "Feroge"
+ },
+ "ff": {
+ "english_name": "Fulah"
+ },
+ "ffi": {
+ "english_name": "Foia Foia"
+ },
+ "ffm": {
+ "english_name": "Fulfulde, Maasina"
+ },
+ "fgr": {
+ "english_name": "Fongoro"
+ },
+ "fi": {
+ "english_name": "Finnish",
+ "name": "suomi"
+ },
+ "fia": {
+ "english_name": "Nobiin"
+ },
+ "fie": {
+ "english_name": "Fyer"
+ },
+ "fil": {
+ "english_name": "Filipino"
+ },
+ "fip": {
+ "english_name": "Fipa"
+ },
+ "fir": {
+ "english_name": "Firan"
+ },
+ "fit": {
+ "english_name": "Finnish, Tornedalen"
+ },
+ "fiw": {
+ "english_name": "Fiwaga"
+ },
+ "fj": {
+ "english_name": "Fijian"
+ },
+ "fkk": {
+ "english_name": "Kirya-Konz\u0259l"
+ },
+ "fkv": {
+ "english_name": "Finnish, Kven"
+ },
+ "fla": {
+ "english_name": "Kalispel-Pend d'Oreille"
+ },
+ "flh": {
+ "english_name": "Foau"
+ },
+ "fli": {
+ "english_name": "Fali"
+ },
+ "fll": {
+ "english_name": "Fali, North"
+ },
+ "fln": {
+ "english_name": "Flinders Island"
+ },
+ "flr": {
+ "english_name": "Fuliiru"
+ },
+ "fly": {
+ "english_name": "Tsotsitaal"
+ },
+ "fmp": {
+ "english_name": "Fe'fe'"
+ },
+ "fmu": {
+ "english_name": "Muria, Far Western"
+ },
+ "fng": {
+ "english_name": "Fanagalo"
+ },
+ "fni": {
+ "english_name": "Fania"
+ },
+ "fo": {
+ "english_name": "Faroese"
+ },
+ "fod": {
+ "english_name": "Foodo"
+ },
+ "foi": {
+ "english_name": "Foi"
+ },
+ "fom": {
+ "english_name": "Foma"
+ },
+ "fon": {
+ "english_name": "Fon"
+ },
+ "for": {
+ "english_name": "Fore"
+ },
+ "fos": {
+ "english_name": "Siraya"
+ },
+ "fpe": {
+ "english_name": "Creole English, Fernando Po"
+ },
+ "fqs": {
+ "english_name": "Fas"
+ },
+ "fr": {
+ "english_name": "French",
+ "name": "fran\u00e7ais"
+ },
+ "frc": {
+ "english_name": "French, Cajun"
+ },
+ "frd": {
+ "english_name": "Fordata"
+ },
+ "frk": {
+ "english_name": "Frankish"
+ },
+ "frm": {
+ "english_name": "French, Middle (ca. 1400-1600)"
+ },
+ "fro": {
+ "english_name": "French, Old (842-ca. 1400)"
+ },
+ "frp": {
+ "english_name": "Arpitan"
+ },
+ "frq": {
+ "english_name": "Forak"
+ },
+ "frr": {
+ "english_name": "Frisian, Northern"
+ },
+ "frs": {
+ "english_name": "Frisian, Eastern"
+ },
+ "frt": {
+ "english_name": "Fortsenal"
+ },
+ "fse": {
+ "english_name": "Finnish Sign Language"
+ },
+ "fsl": {
+ "english_name": "French Sign Language"
+ },
+ "fss": {
+ "english_name": "Finland-Swedish Sign Language"
+ },
+ "fub": {
+ "english_name": "Fulfulde, Adamawa"
+ },
+ "fuc": {
+ "english_name": "Pulaar"
+ },
+ "fud": {
+ "english_name": "Futuna, East"
+ },
+ "fue": {
+ "english_name": "Fulfulde, Borgu"
+ },
+ "fuf": {
+ "english_name": "Pular"
+ },
+ "fuh": {
+ "english_name": "Fulfulde, Western Niger"
+ },
+ "fui": {
+ "english_name": "Fulfulde, Bagirmi"
+ },
+ "fuj": {
+ "english_name": "Ko"
+ },
+ "fum": {
+ "english_name": "Fum"
+ },
+ "fun": {
+ "english_name": "Fulni\u00f4"
+ },
+ "fuq": {
+ "english_name": "Fulfulde, Central-Eastern Niger"
+ },
+ "fur": {
+ "english_name": "Friulian"
+ },
+ "fut": {
+ "english_name": "Futuna-Aniwa"
+ },
+ "fuu": {
+ "english_name": "Furu"
+ },
+ "fuv": {
+ "english_name": "Fulfulde, Nigerian"
+ },
+ "fuy": {
+ "english_name": "Fuyug"
+ },
+ "fvr": {
+ "english_name": "Fur"
+ },
+ "fwa": {
+ "english_name": "Fw\u00e2i"
+ },
+ "fwe": {
+ "english_name": "Fwe"
+ },
+ "fy": {
+ "english_name": "Frisian, Western"
+ },
+ "ga": {
+ "english_name": "Irish",
+ "name": "Gaeilge"
+ },
+ "gaa": {
+ "english_name": "Ga"
+ },
+ "gab": {
+ "english_name": "Gabri"
+ },
+ "gac": {
+ "english_name": "Great Andamanese, Mixed"
+ },
+ "gad": {
+ "english_name": "Gaddang"
+ },
+ "gae": {
+ "english_name": "Guarequena"
+ },
+ "gaf": {
+ "english_name": "Gende"
+ },
+ "gag": {
+ "english_name": "Gagauz"
+ },
+ "gah": {
+ "english_name": "Alekano"
+ },
+ "gai": {
+ "english_name": "Borei"
+ },
+ "gaj": {
+ "english_name": "Gadsup"
+ },
+ "gak": {
+ "english_name": "Gamkonora"
+ },
+ "gal": {
+ "english_name": "Galolen"
+ },
+ "gam": {
+ "english_name": "Kandawo"
+ },
+ "gan": {
+ "english_name": "Chinese, Gan"
+ },
+ "gao": {
+ "english_name": "Gants"
+ },
+ "gap": {
+ "english_name": "Gal"
+ },
+ "gaq": {
+ "english_name": "Gata'"
+ },
+ "gar": {
+ "english_name": "Galeya"
+ },
+ "gas": {
+ "english_name": "Garasia, Adiwasi"
+ },
+ "gat": {
+ "english_name": "Kenati"
+ },
+ "gau": {
+ "english_name": "Gadaba, Mudhili"
+ },
+ "gaw": {
+ "english_name": "Nobonob"
+ },
+ "gax": {
+ "english_name": "Oromo, Borana-Arsi-Guji"
+ },
+ "gay": {
+ "english_name": "Gayo"
+ },
+ "gaz": {
+ "english_name": "Oromo, West Central"
+ },
+ "gba": {
+ "english_name": "Gbaya (Central African Republic)"
+ },
+ "gbb": {
+ "english_name": "Kaytetye"
+ },
+ "gbd": {
+ "english_name": "Karadjeri"
+ },
+ "gbe": {
+ "english_name": "Niksek"
+ },
+ "gbf": {
+ "english_name": "Gaikundi"
+ },
+ "gbg": {
+ "english_name": "Gbanziri"
+ },
+ "gbh": {
+ "english_name": "Gbe, Defi"
+ },
+ "gbi": {
+ "english_name": "Galela"
+ },
+ "gbj": {
+ "english_name": "Gadaba, Bodo"
+ },
+ "gbk": {
+ "english_name": "Gaddi"
+ },
+ "gbl": {
+ "english_name": "Gamit"
+ },
+ "gbm": {
+ "english_name": "Garhwali"
+ },
+ "gbn": {
+ "english_name": "Mo'da"
+ },
+ "gbo": {
+ "english_name": "Grebo, Northern"
+ },
+ "gbp": {
+ "english_name": "Gbaya-Bossangoa"
+ },
+ "gbq": {
+ "english_name": "Gbaya-Bozoum"
+ },
+ "gbr": {
+ "english_name": "Gbagyi"
+ },
+ "gbs": {
+ "english_name": "Gbe, Gbesi"
+ },
+ "gbu": {
+ "english_name": "Gagadu"
+ },
+ "gbv": {
+ "english_name": "Gbanu"
+ },
+ "gbw": {
+ "english_name": "Gabi-Gabi"
+ },
+ "gbx": {
+ "english_name": "Gbe, Eastern Xwla"
+ },
+ "gby": {
+ "english_name": "Gbari"
+ },
+ "gbz": {
+ "english_name": "Dari, Zoroastrian"
+ },
+ "gcc": {
+ "english_name": "Mali"
+ },
+ "gcd": {
+ "english_name": "Ganggalida"
+ },
+ "gce": {
+ "english_name": "Galice"
+ },
+ "gcf": {
+ "english_name": "Creole French, Guadeloupean"
+ },
+ "gcl": {
+ "english_name": "Creole English, Grenadian"
+ },
+ "gcn": {
+ "english_name": "Gaina"
+ },
+ "gcr": {
+ "english_name": "Creole French, Guianese"
+ },
+ "gct": {
+ "english_name": "German, Colonia Tovar"
+ },
+ "gd": {
+ "english_name": "Gaelic, Scottish"
+ },
+ "gda": {
+ "english_name": "Lohar, Gade"
+ },
+ "gdb": {
+ "english_name": "Gadaba, Pottangi Ollar"
+ },
+ "gdc": {
+ "english_name": "Gugu Badhun"
+ },
+ "gdd": {
+ "english_name": "Gedaged"
+ },
+ "gde": {
+ "english_name": "Gude"
+ },
+ "gdf": {
+ "english_name": "Guduf-Gava"
+ },
+ "gdg": {
+ "english_name": "Ga'dang"
+ },
+ "gdh": {
+ "english_name": "Gadjerawang"
+ },
+ "gdi": {
+ "english_name": "Gundi"
+ },
+ "gdj": {
+ "english_name": "Gurdjar"
+ },
+ "gdk": {
+ "english_name": "Gadang"
+ },
+ "gdl": {
+ "english_name": "Dirasha"
+ },
+ "gdm": {
+ "english_name": "Laal"
+ },
+ "gdn": {
+ "english_name": "Umanakaina"
+ },
+ "gdo": {
+ "english_name": "Ghodoberi"
+ },
+ "gdq": {
+ "english_name": "Mehri"
+ },
+ "gdr": {
+ "english_name": "Wipi"
+ },
+ "gds": {
+ "english_name": "Ghandruk Sign Language"
+ },
+ "gdt": {
+ "english_name": "Kungardutyi"
+ },
+ "gdu": {
+ "english_name": "Gudu"
+ },
+ "gdx": {
+ "english_name": "Godwari"
+ },
+ "gea": {
+ "english_name": "Geruma"
+ },
+ "geb": {
+ "english_name": "Kire"
+ },
+ "gec": {
+ "english_name": "Grebo, Gboloo"
+ },
+ "ged": {
+ "english_name": "Gade"
+ },
+ "geg": {
+ "english_name": "Gengle"
+ },
+ "geh": {
+ "english_name": "German, Hutterite"
+ },
+ "gei": {
+ "english_name": "Gebe"
+ },
+ "gej": {
+ "english_name": "Gen"
+ },
+ "gek": {
+ "english_name": "Yiwom"
+ },
+ "gel": {
+ "english_name": "ut-Ma'in"
+ },
+ "geq": {
+ "english_name": "Geme"
+ },
+ "ges": {
+ "english_name": "Geser-Gorom"
+ },
+ "gew": {
+ "english_name": "Gera"
+ },
+ "gex": {
+ "english_name": "Garre"
+ },
+ "gey": {
+ "english_name": "Enya"
+ },
+ "gez": {
+ "english_name": "Geez",
+ "name": "\u130d\u12d5\u12dd\u129b"
+ },
+ "gfk": {
+ "english_name": "Patpatar"
+ },
+ "gft": {
+ "english_name": "Gafat"
+ },
+ "gga": {
+ "english_name": "Gao"
+ },
+ "ggb": {
+ "english_name": "Gbii"
+ },
+ "ggd": {
+ "english_name": "Gugadj"
+ },
+ "gge": {
+ "english_name": "Guragone"
+ },
+ "ggg": {
+ "english_name": "Gurgula"
+ },
+ "ggk": {
+ "english_name": "Kungarakany"
+ },
+ "ggl": {
+ "english_name": "Ganglau"
+ },
+ "ggn": {
+ "english_name": "Gurung, Eastern"
+ },
+ "ggo": {
+ "english_name": "Gondi, Southern"
+ },
+ "ggt": {
+ "english_name": "Gitua"
+ },
+ "ggu": {
+ "english_name": "Gagu"
+ },
+ "ggw": {
+ "english_name": "Gogodala"
+ },
+ "gha": {
+ "english_name": "Ghadam\u00e8s"
+ },
+ "ghc": {
+ "english_name": "Gaelic, Hiberno-Scottish"
+ },
+ "ghe": {
+ "english_name": "Ghale, Southern"
+ },
+ "ghh": {
+ "english_name": "Ghale, Northern"
+ },
+ "ghk": {
+ "english_name": "Karen, Geko"
+ },
+ "ghl": {
+ "english_name": "Ghulfan"
+ },
+ "ghn": {
+ "english_name": "Ghanongga"
+ },
+ "gho": {
+ "english_name": "Ghomara"
+ },
+ "ghr": {
+ "english_name": "Ghera"
+ },
+ "ghs": {
+ "english_name": "Guhu-Samane"
+ },
+ "ght": {
+ "english_name": "Kuke"
+ },
+ "gia": {
+ "english_name": "Kitja"
+ },
+ "gib": {
+ "english_name": "Gibanawa"
+ },
+ "gic": {
+ "english_name": "Gail"
+ },
+ "gid": {
+ "english_name": "Gidar"
+ },
+ "gig": {
+ "english_name": "Goaria"
+ },
+ "gih": {
+ "english_name": "Githabul"
+ },
+ "gil": {
+ "english_name": "Gilbertese"
+ },
+ "gim": {
+ "english_name": "Gimi (Eastern Highlands)"
+ },
+ "gin": {
+ "english_name": "Hinukh"
+ },
+ "gip": {
+ "english_name": "Gimi (West New Britain)"
+ },
+ "giq": {
+ "english_name": "Gelao, Green"
+ },
+ "gir": {
+ "english_name": "Gelao, Red"
+ },
+ "gis": {
+ "english_name": "Giziga, North"
+ },
+ "git": {
+ "english_name": "Gitxsan"
+ },
+ "giu": {
+ "english_name": "Mulao"
+ },
+ "giw": {
+ "english_name": "Gelao, White"
+ },
+ "gix": {
+ "english_name": "Gilima"
+ },
+ "giy": {
+ "english_name": "Giyug"
+ },
+ "giz": {
+ "english_name": "Giziga, South"
+ },
+ "gji": {
+ "english_name": "Geji"
+ },
+ "gjk": {
+ "english_name": "Koli, Kachi"
+ },
+ "gjm": {
+ "english_name": "Gunditjmara"
+ },
+ "gjn": {
+ "english_name": "Gonja"
+ },
+ "gju": {
+ "english_name": "Gujari"
+ },
+ "gka": {
+ "english_name": "Guya"
+ },
+ "gke": {
+ "english_name": "Ndai"
+ },
+ "gkn": {
+ "english_name": "Gokana"
+ },
+ "gko": {
+ "english_name": "Kok-Nar"
+ },
+ "gkp": {
+ "english_name": "Kpelle, Guinea"
+ },
+ "gl": {
+ "english_name": "Galician",
+ "name": "Galego"
+ },
+ "glc": {
+ "english_name": "Bon Gula"
+ },
+ "gld": {
+ "english_name": "Nanai"
+ },
+ "glh": {
+ "english_name": "Pashayi, Northwest"
+ },
+ "gli": {
+ "english_name": "Guliguli"
+ },
+ "glj": {
+ "english_name": "Gula Iro"
+ },
+ "glk": {
+ "english_name": "Gilaki"
+ },
+ "gll": {
+ "english_name": "Garlali"
+ },
+ "glo": {
+ "english_name": "Galambu"
+ },
+ "glr": {
+ "english_name": "Glaro-Twabo"
+ },
+ "glu": {
+ "english_name": "Gula (Chad)"
+ },
+ "glw": {
+ "english_name": "Glavda"
+ },
+ "gly": {
+ "english_name": "Gule"
+ },
+ "gma": {
+ "english_name": "Gambera"
+ },
+ "gmb": {
+ "english_name": "Gula'alaa"
+ },
+ "gmd": {
+ "english_name": "M\u00e1ghd\u00ec"
+ },
+ "gmh": {
+ "english_name": "German, Middle High (ca. 1050-1500)"
+ },
+ "gml": {
+ "english_name": "German, Middle Low"
+ },
+ "gmm": {
+ "english_name": "Gbaya-Mbodomo"
+ },
+ "gmn": {
+ "english_name": "Gimnime"
+ },
+ "gmu": {
+ "english_name": "Gumalu"
+ },
+ "gmv": {
+ "english_name": "Gamo"
+ },
+ "gmx": {
+ "english_name": "Magoma"
+ },
+ "gmy": {
+ "english_name": "Greek, Mycenaean"
+ },
+ "gmz": {
+ "english_name": "Mgbolizhia"
+ },
+ "gn": {
+ "english_name": "Guarani"
+ },
+ "gna": {
+ "english_name": "Kaansa"
+ },
+ "gnb": {
+ "english_name": "Gangte"
+ },
+ "gnc": {
+ "english_name": "Guanche"
+ },
+ "gnd": {
+ "english_name": "Zulgo-Gemzek"
+ },
+ "gne": {
+ "english_name": "Ganang"
+ },
+ "gng": {
+ "english_name": "Ngangam"
+ },
+ "gnh": {
+ "english_name": "Lere"
+ },
+ "gni": {
+ "english_name": "Gooniyandi"
+ },
+ "gnk": {
+ "english_name": "//Gana"
+ },
+ "gnl": {
+ "english_name": "Gangulu"
+ },
+ "gnm": {
+ "english_name": "Ginuman"
+ },
+ "gnn": {
+ "english_name": "Gumatj"
+ },
+ "gno": {
+ "english_name": "Gondi, Northern"
+ },
+ "gnq": {
+ "english_name": "Gana"
+ },
+ "gnr": {
+ "english_name": "Gureng Gureng"
+ },
+ "gnt": {
+ "english_name": "Guntai"
+ },
+ "gnu": {
+ "english_name": "Gnau"
+ },
+ "gnw": {
+ "english_name": "Guaran\u00ed, Western Bolivian"
+ },
+ "gnz": {
+ "english_name": "Ganzi"
+ },
+ "goa": {
+ "english_name": "Guro"
+ },
+ "gob": {
+ "english_name": "Playero"
+ },
+ "goc": {
+ "english_name": "Gorakor"
+ },
+ "god": {
+ "english_name": "Godi\u00e9"
+ },
+ "goe": {
+ "english_name": "Gongduk"
+ },
+ "gof": {
+ "english_name": "Gofa"
+ },
+ "gog": {
+ "english_name": "Gogo"
+ },
+ "goh": {
+ "english_name": "German, Old High (ca. 750-1050)"
+ },
+ "goi": {
+ "english_name": "Gobasi"
+ },
+ "goj": {
+ "english_name": "Gowlan"
+ },
+ "gok": {
+ "english_name": "Gowli"
+ },
+ "gol": {
+ "english_name": "Gola"
+ },
+ "gom": {
+ "english_name": "Konkani, Goan"
+ },
+ "gon": {
+ "english_name": "Gondi"
+ },
+ "goo": {
+ "english_name": "Gone Dau"
+ },
+ "gop": {
+ "english_name": "Yeretuar"
+ },
+ "goq": {
+ "english_name": "Gorap"
+ },
+ "gor": {
+ "english_name": "Gorontalo"
+ },
+ "gos": {
+ "english_name": "Gronings"
+ },
+ "got": {
+ "english_name": "Gothic"
+ },
+ "gou": {
+ "english_name": "Gavar"
+ },
+ "gow": {
+ "english_name": "Gorowa"
+ },
+ "gox": {
+ "english_name": "Gobu"
+ },
+ "goy": {
+ "english_name": "Goundo"
+ },
+ "goz": {
+ "english_name": "Gozarkhani"
+ },
+ "gpa": {
+ "english_name": "Gupa-Abawa"
+ },
+ "gpe": {
+ "english_name": "Pidgin English, Ghanaian"
+ },
+ "gpn": {
+ "english_name": "Taiap"
+ },
+ "gqa": {
+ "english_name": "Ga'anda"
+ },
+ "gqi": {
+ "english_name": "Guiqiong"
+ },
+ "gqn": {
+ "english_name": "Guana (Brazil)"
+ },
+ "gqr": {
+ "english_name": "Gor"
+ },
+ "gqu": {
+ "english_name": "Qau"
+ },
+ "gra": {
+ "english_name": "Garasia, Rajput"
+ },
+ "grb": {
+ "english_name": "Grebo"
+ },
+ "grc": {
+ "english_name": "Greek, Ancient (to 1453)"
+ },
+ "grd": {
+ "english_name": "Guruntum-Mbaaru"
+ },
+ "grg": {
+ "english_name": "Madi"
+ },
+ "grh": {
+ "english_name": "Gbiri-Niragu"
+ },
+ "gri": {
+ "english_name": "Ghari"
+ },
+ "grj": {
+ "english_name": "Grebo, Southern"
+ },
+ "grm": {
+ "english_name": "Kota Marudu Talantang"
+ },
+ "gro": {
+ "english_name": "Groma"
+ },
+ "grq": {
+ "english_name": "Gorovu"
+ },
+ "grr": {
+ "english_name": "Taznatit"
+ },
+ "grs": {
+ "english_name": "Gresi"
+ },
+ "grt": {
+ "english_name": "Garo"
+ },
+ "gru": {
+ "english_name": "Kistane"
+ },
+ "grv": {
+ "english_name": "Grebo, Central"
+ },
+ "grw": {
+ "english_name": "Gweda"
+ },
+ "grx": {
+ "english_name": "Guriaso"
+ },
+ "gry": {
+ "english_name": "Grebo, Barclayville"
+ },
+ "grz": {
+ "english_name": "Guramalum"
+ },
+ "gse": {
+ "english_name": "Ghanaian Sign Language"
+ },
+ "gsg": {
+ "english_name": "German Sign Language"
+ },
+ "gsl": {
+ "english_name": "Gusilay"
+ },
+ "gsm": {
+ "english_name": "Guatemalan Sign Language"
+ },
+ "gsn": {
+ "english_name": "Gusan"
+ },
+ "gso": {
+ "english_name": "Gbaya, Southwest"
+ },
+ "gsp": {
+ "english_name": "Wasembo"
+ },
+ "gss": {
+ "english_name": "Greek Sign Language"
+ },
+ "gsw": {
+ "english_name": "German, Swiss"
+ },
+ "gta": {
+ "english_name": "Guat\u00f3"
+ },
+ "gtu": {
+ "english_name": "Aghu-Tharnggala"
+ },
+ "gu": {
+ "english_name": "Gujarati",
+ "name": "\u0a97\u0ac1\u0a9c\u0ab0\u0abe\u0aa4\u0ac0"
+ },
+ "gua": {
+ "english_name": "Shiki"
+ },
+ "gub": {
+ "english_name": "Guajaj\u00e1ra"
+ },
+ "guc": {
+ "english_name": "Wayuu"
+ },
+ "gud": {
+ "english_name": "Dida, Yocobou\u00e9"
+ },
+ "gue": {
+ "english_name": "Gurinji"
+ },
+ "guf": {
+ "english_name": "Gupapuyngu"
+ },
+ "gug": {
+ "english_name": "Guaran\u00ed, Paraguayan"
+ },
+ "guh": {
+ "english_name": "Guahibo"
+ },
+ "gui": {
+ "english_name": "Guaran\u00ed, Eastern Bolivian"
+ },
+ "guk": {
+ "english_name": "Gumuz"
+ },
+ "gul": {
+ "english_name": "Creole English, Sea Island"
+ },
+ "gum": {
+ "english_name": "Guambiano"
+ },
+ "gun": {
+ "english_name": "Guaran\u00ed, Mby\u00e1"
+ },
+ "guo": {
+ "english_name": "Guayabero"
+ },
+ "gup": {
+ "english_name": "Gunwinggu"
+ },
+ "guq": {
+ "english_name": "Ach\u00e9"
+ },
+ "gur": {
+ "english_name": "Farefare"
+ },
+ "gus": {
+ "english_name": "Guinean Sign Language"
+ },
+ "gut": {
+ "english_name": "Mal\u00e9ku Ja\u00edka"
+ },
+ "guu": {
+ "english_name": "Yanomam\u00f6"
+ },
+ "guv": {
+ "english_name": "Gey"
+ },
+ "guw": {
+ "english_name": "Gun"
+ },
+ "gux": {
+ "english_name": "Gourmanch\u00e9ma"
+ },
+ "guz": {
+ "english_name": "Gusii"
+ },
+ "gv": {
+ "english_name": "Manx"
+ },
+ "gva": {
+ "english_name": "Guana (Paraguay)"
+ },
+ "gvc": {
+ "english_name": "Guanano"
+ },
+ "gve": {
+ "english_name": "Duwet"
+ },
+ "gvf": {
+ "english_name": "Golin"
+ },
+ "gvj": {
+ "english_name": "Guaj\u00e1"
+ },
+ "gvl": {
+ "english_name": "Gulay"
+ },
+ "gvm": {
+ "english_name": "Gurmana"
+ },
+ "gvn": {
+ "english_name": "Kuku-Yalanji"
+ },
+ "gvo": {
+ "english_name": "Gavi\u00e3o Do Jiparan\u00e1"
+ },
+ "gvp": {
+ "english_name": "Gavi\u00e3o, Par\u00e1"
+ },
+ "gvr": {
+ "english_name": "Gurung, Western"
+ },
+ "gvs": {
+ "english_name": "Gumawana"
+ },
+ "gvy": {
+ "english_name": "Guyani"
+ },
+ "gwa": {
+ "english_name": "Mbato"
+ },
+ "gwb": {
+ "english_name": "Gwa"
+ },
+ "gwc": {
+ "english_name": "Kalami"
+ },
+ "gwd": {
+ "english_name": "Gawwada"
+ },
+ "gwe": {
+ "english_name": "Gweno"
+ },
+ "gwf": {
+ "english_name": "Gowro"
+ },
+ "gwg": {
+ "english_name": "Moo"
+ },
+ "gwi": {
+ "english_name": "Gwich\u02bcin"
+ },
+ "gwj": {
+ "english_name": "/Gwi"
+ },
+ "gwm": {
+ "english_name": "Awngthim"
+ },
+ "gwn": {
+ "english_name": "Gwandara"
+ },
+ "gwr": {
+ "english_name": "Gwere"
+ },
+ "gwt": {
+ "english_name": "Gawar-Bati"
+ },
+ "gwu": {
+ "english_name": "Guwamu"
+ },
+ "gww": {
+ "english_name": "Kwini"
+ },
+ "gwx": {
+ "english_name": "Gua"
+ },
+ "gxx": {
+ "english_name": "W\u00e8 Southern"
+ },
+ "gya": {
+ "english_name": "Gbaya, Northwest"
+ },
+ "gyb": {
+ "english_name": "Garus"
+ },
+ "gyd": {
+ "english_name": "Kayardild"
+ },
+ "gye": {
+ "english_name": "Gyem"
+ },
+ "gyf": {
+ "english_name": "Gungabula"
+ },
+ "gyg": {
+ "english_name": "Gbayi"
+ },
+ "gyi": {
+ "english_name": "Gyele"
+ },
+ "gyl": {
+ "english_name": "Gayil"
+ },
+ "gym": {
+ "english_name": "Ng\u00e4bere"
+ },
+ "gyn": {
+ "english_name": "Creole English, Guyanese"
+ },
+ "gyr": {
+ "english_name": "Guarayu"
+ },
+ "gyy": {
+ "english_name": "Gunya"
+ },
+ "gza": {
+ "english_name": "Ganza"
+ },
+ "gzi": {
+ "english_name": "Gazi"
+ },
+ "gzn": {
+ "english_name": "Gane"
+ },
+ "ha": {
+ "english_name": "Hausa"
+ },
+ "haa": {
+ "english_name": "Han"
+ },
+ "hab": {
+ "english_name": "Hanoi Sign Language"
+ },
+ "hac": {
+ "english_name": "Gurani"
+ },
+ "had": {
+ "english_name": "Hatam"
+ },
+ "hae": {
+ "english_name": "Oromo, Eastern"
+ },
+ "haf": {
+ "english_name": "Haiphong Sign Language"
+ },
+ "hag": {
+ "english_name": "Hanga"
+ },
+ "hah": {
+ "english_name": "Hahon"
+ },
+ "hai": {
+ "english_name": "Haida"
+ },
+ "haj": {
+ "english_name": "Hajong"
+ },
+ "hak": {
+ "english_name": "Chinese, Hakka"
+ },
+ "hal": {
+ "english_name": "Halang"
+ },
+ "ham": {
+ "english_name": "Hewa"
+ },
+ "han": {
+ "english_name": "Hangaza"
+ },
+ "hao": {
+ "english_name": "Hak\u00f6"
+ },
+ "hap": {
+ "english_name": "Hupla"
+ },
+ "haq": {
+ "english_name": "Ha"
+ },
+ "har": {
+ "english_name": "Harari"
+ },
+ "has": {
+ "english_name": "Haisla"
+ },
+ "hav": {
+ "english_name": "Havu"
+ },
+ "haw": {
+ "english_name": "Hawaiian"
+ },
+ "hax": {
+ "english_name": "Haida, Southern"
+ },
+ "hay": {
+ "english_name": "Haya"
+ },
+ "haz": {
+ "english_name": "Hazaragi"
+ },
+ "hba": {
+ "english_name": "Hamba"
+ },
+ "hbb": {
+ "english_name": "Huba"
+ },
+ "hbn": {
+ "english_name": "Heiban"
+ },
+ "hbo": {
+ "english_name": "Hebrew, Ancient"
+ },
+ "hbs": {
+ "english_name": "Serbo-Croatian"
+ },
+ "hbu": {
+ "english_name": "Habu"
+ },
+ "hca": {
+ "english_name": "Creole Hindi, Andaman"
+ },
+ "hch": {
+ "english_name": "Huichol"
+ },
+ "hdn": {
+ "english_name": "Haida, Northern"
+ },
+ "hds": {
+ "english_name": "Honduras Sign Language"
+ },
+ "hdy": {
+ "english_name": "Hadiyya"
+ },
+ "he": {
+ "english_name": "Hebrew",
+ "name": "\u05e2\u05d1\u05e8\u05d9\u05ea"
+ },
+ "hea": {
+ "english_name": "Miao, Northern Qiandong"
+ },
+ "hed": {
+ "english_name": "Herd\u00e9"
+ },
+ "heg": {
+ "english_name": "Helong"
+ },
+ "heh": {
+ "english_name": "Hehe"
+ },
+ "hei": {
+ "english_name": "Heiltsuk"
+ },
+ "hem": {
+ "english_name": "Hemba"
+ },
+ "hgm": {
+ "english_name": "Hai//om"
+ },
+ "hgw": {
+ "english_name": "Haigwai"
+ },
+ "hhi": {
+ "english_name": "Hoia Hoia"
+ },
+ "hhr": {
+ "english_name": "Kerak"
+ },
+ "hhy": {
+ "english_name": "Hoyahoya"
+ },
+ "hi": {
+ "english_name": "Hindi",
+ "name": "\u0939\u093f\u0902\u0926\u0940"
+ },
+ "hia": {
+ "english_name": "Lamang"
+ },
+ "hib": {
+ "english_name": "Hibito"
+ },
+ "hid": {
+ "english_name": "Hidatsa"
+ },
+ "hif": {
+ "english_name": "Hindi, Fiji"
+ },
+ "hig": {
+ "english_name": "Kamwe"
+ },
+ "hih": {
+ "english_name": "Pamosu"
+ },
+ "hii": {
+ "english_name": "Hinduri"
+ },
+ "hij": {
+ "english_name": "Hijuk"
+ },
+ "hik": {
+ "english_name": "Seit-Kaitetu"
+ },
+ "hil": {
+ "english_name": "Hiligaynon"
+ },
+ "hio": {
+ "english_name": "Tsoa"
+ },
+ "hir": {
+ "english_name": "Himarim\u00e3"
+ },
+ "hit": {
+ "english_name": "Hittite"
+ },
+ "hiw": {
+ "english_name": "Hiw"
+ },
+ "hix": {
+ "english_name": "Hixkary\u00e1na"
+ },
+ "hji": {
+ "english_name": "Haji"
+ },
+ "hka": {
+ "english_name": "Kahe"
+ },
+ "hke": {
+ "english_name": "Hunde"
+ },
+ "hkk": {
+ "english_name": "Hunjara-Kaina Ke"
+ },
+ "hks": {
+ "english_name": "Hong Kong Sign Language"
+ },
+ "hla": {
+ "english_name": "Halia"
+ },
+ "hlb": {
+ "english_name": "Halbi"
+ },
+ "hld": {
+ "english_name": "Halang Doan"
+ },
+ "hle": {
+ "english_name": "Hlersu"
+ },
+ "hlt": {
+ "english_name": "Chin, Matu"
+ },
+ "hlu": {
+ "english_name": "Luwian, Hieroglyphic"
+ },
+ "hma": {
+ "english_name": "Hmong, Southern Mashan"
+ },
+ "hmb": {
+ "english_name": "Songhay, Humburi Senni"
+ },
+ "hmc": {
+ "english_name": "Hmong, Central Huishui"
+ },
+ "hmd": {
+ "english_name": "Miao, Large Flowery"
+ },
+ "hme": {
+ "english_name": "Hmong, Eastern Huishui"
+ },
+ "hmf": {
+ "english_name": "Hmong Don"
+ },
+ "hmg": {
+ "english_name": "Hmong, Southwestern Guiyang"
+ },
+ "hmh": {
+ "english_name": "Hmong, Southwestern Huishui"
+ },
+ "hmi": {
+ "english_name": "Hmong, Northern Huishui"
+ },
+ "hmj": {
+ "english_name": "Ge"
+ },
+ "hmk": {
+ "english_name": "Maek"
+ },
+ "hml": {
+ "english_name": "Hmong, Luopohe"
+ },
+ "hmm": {
+ "english_name": "Hmong, Central Mashan"
+ },
+ "hmn": {
+ "english_name": "Hmong"
+ },
+ "hmp": {
+ "english_name": "Hmong, Northern Mashan"
+ },
+ "hmq": {
+ "english_name": "Miao, Eastern Qiandong"
+ },
+ "hmr": {
+ "english_name": "Hmar"
+ },
+ "hms": {
+ "english_name": "Miao, Southern Qiandong"
+ },
+ "hmt": {
+ "english_name": "Hamtai"
+ },
+ "hmu": {
+ "english_name": "Hamap"
+ },
+ "hmv": {
+ "english_name": "Hmong D\u00f4"
+ },
+ "hmw": {
+ "english_name": "Hmong, Western Mashan"
+ },
+ "hmy": {
+ "english_name": "Hmong, Southern Guiyang"
+ },
+ "hmz": {
+ "english_name": "Hmong Shua"
+ },
+ "hna": {
+ "english_name": "Mina (Cameroon)"
+ },
+ "hnd": {
+ "english_name": "Hindko, Southern"
+ },
+ "hne": {
+ "english_name": "Chhattisgarhi"
+ },
+ "hnh": {
+ "english_name": "//Ani"
+ },
+ "hni": {
+ "english_name": "Hani"
+ },
+ "hnj": {
+ "english_name": "Hmong Njua"
+ },
+ "hnn": {
+ "english_name": "Hanunoo"
+ },
+ "hno": {
+ "english_name": "Hindko, Northern"
+ },
+ "hns": {
+ "english_name": "Hindustani, Caribbean"
+ },
+ "hnu": {
+ "english_name": "Hung"
+ },
+ "ho": {
+ "english_name": "Hiri Motu"
+ },
+ "hoa": {
+ "english_name": "Hoava"
+ },
+ "hob": {
+ "english_name": "Mari (Madang Province)"
+ },
+ "hoc": {
+ "english_name": "Ho"
+ },
+ "hod": {
+ "english_name": "Holma"
+ },
+ "hoe": {
+ "english_name": "Horom"
+ },
+ "hoh": {
+ "english_name": "Hoby\u00f3t"
+ },
+ "hoi": {
+ "english_name": "Holikachuk"
+ },
+ "hoj": {
+ "english_name": "Hadothi"
+ },
+ "hol": {
+ "english_name": "Holu"
+ },
+ "hom": {
+ "english_name": "Homa"
+ },
+ "hoo": {
+ "english_name": "Holoholo"
+ },
+ "hop": {
+ "english_name": "Hopi"
+ },
+ "hor": {
+ "english_name": "Horo"
+ },
+ "hos": {
+ "english_name": "Ho Chi Minh City Sign Language"
+ },
+ "hot": {
+ "english_name": "Hote"
+ },
+ "hov": {
+ "english_name": "Hovongan"
+ },
+ "how": {
+ "english_name": "Honi"
+ },
+ "hoy": {
+ "english_name": "Holiya"
+ },
+ "hoz": {
+ "english_name": "Hozo"
+ },
+ "hpo": {
+ "english_name": "Hpon"
+ },
+ "hps": {
+ "english_name": "Hawai'i Pidgin Sign Language"
+ },
+ "hr": {
+ "english_name": "Croatian",
+ "name": "hrvatski"
+ },
+ "hra": {
+ "english_name": "Hrangkhol"
+ },
+ "hrc": {
+ "english_name": "Niwer Mil"
+ },
+ "hre": {
+ "english_name": "Hre"
+ },
+ "hrk": {
+ "english_name": "Haruku"
+ },
+ "hrm": {
+ "english_name": "Miao, Horned"
+ },
+ "hro": {
+ "english_name": "Haroi"
+ },
+ "hrp": {
+ "english_name": "Nhirrpi"
+ },
+ "hrt": {
+ "english_name": "H\u00e9rtevin"
+ },
+ "hru": {
+ "english_name": "Hruso"
+ },
+ "hrw": {
+ "english_name": "Warwar Feni"
+ },
+ "hrx": {
+ "english_name": "Hunsrik"
+ },
+ "hrz": {
+ "english_name": "Harzani"
+ },
+ "hsb": {
+ "english_name": "Sorbian, Upper"
+ },
+ "hsh": {
+ "english_name": "Hungarian Sign Language"
+ },
+ "hsl": {
+ "english_name": "Hausa Sign Language"
+ },
+ "hsn": {
+ "english_name": "Chinese, Xiang"
+ },
+ "hss": {
+ "english_name": "Harsusi"
+ },
+ "ht": {
+ "english_name": "Haitian"
+ },
+ "hti": {
+ "english_name": "Hoti"
+ },
+ "hto": {
+ "english_name": "Huitoto, Minica"
+ },
+ "hts": {
+ "english_name": "Hadza"
+ },
+ "htu": {
+ "english_name": "Hitu"
+ },
+ "htx": {
+ "english_name": "Hittite, Middle"
+ },
+ "hu": {
+ "english_name": "Hungarian",
+ "name": "magyar"
+ },
+ "hub": {
+ "english_name": "Huambisa"
+ },
+ "huc": {
+ "english_name": "=/Hua"
+ },
+ "hud": {
+ "english_name": "Huaulu"
+ },
+ "hue": {
+ "english_name": "Huave, San Francisco Del Mar"
+ },
+ "huf": {
+ "english_name": "Humene"
+ },
+ "hug": {
+ "english_name": "Huachipaeri"
+ },
+ "huh": {
+ "english_name": "Huilliche"
+ },
+ "hui": {
+ "english_name": "Huli"
+ },
+ "huj": {
+ "english_name": "Hmong, Northern Guiyang"
+ },
+ "huk": {
+ "english_name": "Hulung"
+ },
+ "hul": {
+ "english_name": "Hula"
+ },
+ "hum": {
+ "english_name": "Hungana"
+ },
+ "huo": {
+ "english_name": "Hu"
+ },
+ "hup": {
+ "english_name": "Hupa"
+ },
+ "huq": {
+ "english_name": "Tsat"
+ },
+ "hur": {
+ "english_name": "Halkomelem"
+ },
+ "hus": {
+ "english_name": "Huastec"
+ },
+ "hut": {
+ "english_name": "Humla"
+ },
+ "huu": {
+ "english_name": "Huitoto, Murui"
+ },
+ "huv": {
+ "english_name": "Huave, San Mateo Del Mar"
+ },
+ "huw": {
+ "english_name": "Hukumina"
+ },
+ "hux": {
+ "english_name": "Huitoto, N\u00fcpode"
+ },
+ "huy": {
+ "english_name": "Hulaul\u00e1"
+ },
+ "huz": {
+ "english_name": "Hunzib"
+ },
+ "hvc": {
+ "english_name": "Haitian Vodoun Culture Language"
+ },
+ "hve": {
+ "english_name": "Huave, San Dionisio Del Mar"
+ },
+ "hvk": {
+ "english_name": "Haveke"
+ },
+ "hvn": {
+ "english_name": "Sabu"
+ },
+ "hvv": {
+ "english_name": "Huave, Santa Mar\u00eda Del Mar"
+ },
+ "hwa": {
+ "english_name": "Wan\u00e9"
+ },
+ "hwc": {
+ "english_name": "Creole English, Hawai'i"
+ },
+ "hwo": {
+ "english_name": "Hwana"
+ },
+ "hy": {
+ "english_name": "Armenian"
+ },
+ "hya": {
+ "english_name": "Hya"
+ },
+ "hz": {
+ "english_name": "Herero"
+ },
+ "ia": {
+ "english_name": "Interlingua (International Auxiliary Language Association)"
+ },
+ "iai": {
+ "english_name": "Iaai"
+ },
+ "ian": {
+ "english_name": "Iatmul"
+ },
+ "iap": {
+ "english_name": "Iapama"
+ },
+ "iar": {
+ "english_name": "Purari"
+ },
+ "iba": {
+ "english_name": "Iban"
+ },
+ "ibb": {
+ "english_name": "Ibibio"
+ },
+ "ibd": {
+ "english_name": "Iwaidja"
+ },
+ "ibe": {
+ "english_name": "Akpes"
+ },
+ "ibg": {
+ "english_name": "Ibanag"
+ },
+ "ibl": {
+ "english_name": "Ibaloi"
+ },
+ "ibm": {
+ "english_name": "Agoi"
+ },
+ "ibn": {
+ "english_name": "Ibino"
+ },
+ "ibr": {
+ "english_name": "Ibuoro"
+ },
+ "ibu": {
+ "english_name": "Ibu"
+ },
+ "iby": {
+ "english_name": "Ibani"
+ },
+ "ica": {
+ "english_name": "Ede Ica"
+ },
+ "ich": {
+ "english_name": "Etkywan"
+ },
+ "icl": {
+ "english_name": "Icelandic Sign Language"
+ },
+ "icr": {
+ "english_name": "Creole English, Islander"
+ },
+ "id": {
+ "english_name": "Indonesian",
+ "name": "Indonesian"
+ },
+ "ida": {
+ "english_name": "Idakho-Isukha-Tiriki"
+ },
+ "idb": {
+ "english_name": "Indo-Portuguese"
+ },
+ "idc": {
+ "english_name": "Idon"
+ },
+ "idd": {
+ "english_name": "Ede Idaca"
+ },
+ "ide": {
+ "english_name": "Idere"
+ },
+ "idi": {
+ "english_name": "Idi"
+ },
+ "idr": {
+ "english_name": "Indri"
+ },
+ "ids": {
+ "english_name": "Idesa"
+ },
+ "idt": {
+ "english_name": "Idat\u00e9"
+ },
+ "idu": {
+ "english_name": "Idoma"
+ },
+ "ie": {
+ "english_name": "Interlingue"
+ },
+ "ifa": {
+ "english_name": "Ifugao, Amganad"
+ },
+ "ifb": {
+ "english_name": "Ifugao, Batad"
+ },
+ "ife": {
+ "english_name": "If\u00e8"
+ },
+ "iff": {
+ "english_name": "Ifo"
+ },
+ "ifk": {
+ "english_name": "Ifugao, Tuwali"
+ },
+ "ifm": {
+ "english_name": "Teke-Fuumu"
+ },
+ "ifu": {
+ "english_name": "Ifugao, Mayoyao"
+ },
+ "ify": {
+ "english_name": "Kallahan, Keley-I"
+ },
+ "ig": {
+ "english_name": "Igbo"
+ },
+ "igb": {
+ "english_name": "Ebira"
+ },
+ "ige": {
+ "english_name": "Igede"
+ },
+ "igg": {
+ "english_name": "Igana"
+ },
+ "igl": {
+ "english_name": "Igala"
+ },
+ "igm": {
+ "english_name": "Kanggape"
+ },
+ "ign": {
+ "english_name": "Ignaciano"
+ },
+ "igo": {
+ "english_name": "Isebe"
+ },
+ "igs": {
+ "english_name": "Interglossa"
+ },
+ "igw": {
+ "english_name": "Igwe"
+ },
+ "ihb": {
+ "english_name": "Iha Based Pidgin"
+ },
+ "ihi": {
+ "english_name": "Ihievbe"
+ },
+ "ihp": {
+ "english_name": "Iha"
+ },
+ "ihw": {
+ "english_name": "Bidhawal"
+ },
+ "ii": {
+ "english_name": "Yi, Sichuan"
+ },
+ "iin": {
+ "english_name": "Thiin"
+ },
+ "ijc": {
+ "english_name": "Izon"
+ },
+ "ije": {
+ "english_name": "Biseni"
+ },
+ "ijj": {
+ "english_name": "Ede Ije"
+ },
+ "ijn": {
+ "english_name": "Kalabari"
+ },
+ "ijs": {
+ "english_name": "Ijo, Southeast"
+ },
+ "ik": {
+ "english_name": "Inupiaq"
+ },
+ "ike": {
+ "english_name": "Inuktitut, Eastern Canadian"
+ },
+ "iki": {
+ "english_name": "Iko"
+ },
+ "ikk": {
+ "english_name": "Ika"
+ },
+ "ikl": {
+ "english_name": "Ikulu"
+ },
+ "iko": {
+ "english_name": "Olulumo-Ikom"
+ },
+ "ikp": {
+ "english_name": "Ikpeshi"
+ },
+ "ikr": {
+ "english_name": "Ikaranggal"
+ },
+ "ikt": {
+ "english_name": "Inuinnaqtun"
+ },
+ "ikv": {
+ "english_name": "Iku-Gora-Ankwa"
+ },
+ "ikw": {
+ "english_name": "Ikwere"
+ },
+ "ikx": {
+ "english_name": "Ik"
+ },
+ "ikz": {
+ "english_name": "Ikizu"
+ },
+ "ila": {
+ "english_name": "Ile Ape"
+ },
+ "ilb": {
+ "english_name": "Ila"
+ },
+ "ilg": {
+ "english_name": "Garig-Ilgar"
+ },
+ "ili": {
+ "english_name": "Ili Turki"
+ },
+ "ilk": {
+ "english_name": "Ilongot"
+ },
+ "ill": {
+ "english_name": "Iranun"
+ },
+ "ilo": {
+ "english_name": "Iloko"
+ },
+ "ils": {
+ "english_name": "International Sign"
+ },
+ "ilu": {
+ "english_name": "Ili'uun"
+ },
+ "ilv": {
+ "english_name": "Ilue"
+ },
+ "ima": {
+ "english_name": "Malasar, Mala"
+ },
+ "imi": {
+ "english_name": "Anamgura"
+ },
+ "iml": {
+ "english_name": "Miluk"
+ },
+ "imn": {
+ "english_name": "Imonda"
+ },
+ "imo": {
+ "english_name": "Imbongu"
+ },
+ "imr": {
+ "english_name": "Imroing"
+ },
+ "ims": {
+ "english_name": "Marsian"
+ },
+ "imy": {
+ "english_name": "Milyan"
+ },
+ "inb": {
+ "english_name": "Inga"
+ },
+ "ing": {
+ "english_name": "Degexit'an"
+ },
+ "inh": {
+ "english_name": "Ingush"
+ },
+ "inj": {
+ "english_name": "Inga, Jungle"
+ },
+ "inl": {
+ "english_name": "Indonesian Sign Language"
+ },
+ "inm": {
+ "english_name": "Minaean"
+ },
+ "inn": {
+ "english_name": "Isinai"
+ },
+ "ino": {
+ "english_name": "Inoke-Yate"
+ },
+ "inp": {
+ "english_name": "I\u00f1apari"
+ },
+ "ins": {
+ "english_name": "Indian Sign Language"
+ },
+ "int": {
+ "english_name": "Intha"
+ },
+ "inz": {
+ "english_name": "Inese\u00f1o"
+ },
+ "io": {
+ "english_name": "Ido"
+ },
+ "ior": {
+ "english_name": "Inor"
+ },
+ "iou": {
+ "english_name": "Tuma-Irumu"
+ },
+ "iow": {
+ "english_name": "Iowa-Oto"
+ },
+ "ipi": {
+ "english_name": "Ipili"
+ },
+ "ipo": {
+ "english_name": "Ipiko"
+ },
+ "iqu": {
+ "english_name": "Iquito"
+ },
+ "iqw": {
+ "english_name": "Ikwo"
+ },
+ "ire": {
+ "english_name": "Iresim"
+ },
+ "irh": {
+ "english_name": "Irarutu"
+ },
+ "iri": {
+ "english_name": "Irigwe"
+ },
+ "irk": {
+ "english_name": "Iraqw"
+ },
+ "irn": {
+ "english_name": "Ir\u00e1ntxe"
+ },
+ "irr": {
+ "english_name": "Ir"
+ },
+ "iru": {
+ "english_name": "Irula"
+ },
+ "irx": {
+ "english_name": "Kamberau"
+ },
+ "iry": {
+ "english_name": "Iraya"
+ },
+ "is": {
+ "english_name": "Icelandic",
+ "name": "\u00cdslenska"
+ },
+ "isa": {
+ "english_name": "Isabi"
+ },
+ "isc": {
+ "english_name": "Isconahua"
+ },
+ "isd": {
+ "english_name": "Isnag"
+ },
+ "ise": {
+ "english_name": "Italian Sign Language"
+ },
+ "isg": {
+ "english_name": "Irish Sign Language"
+ },
+ "ish": {
+ "english_name": "Esan"
+ },
+ "isi": {
+ "english_name": "Nkem-Nkum"
+ },
+ "isk": {
+ "english_name": "Ishkashimi"
+ },
+ "ism": {
+ "english_name": "Masimasi"
+ },
+ "isn": {
+ "english_name": "Isanzu"
+ },
+ "iso": {
+ "english_name": "Isoko"
+ },
+ "isr": {
+ "english_name": "Israeli Sign Language"
+ },
+ "ist": {
+ "english_name": "Istriot"
+ },
+ "isu": {
+ "english_name": "Isu (Menchum Division)"
+ },
+ "it": {
+ "english_name": "Italian",
+ "name": "Italiano"
+ },
+ "itb": {
+ "english_name": "Itneg, Binongan"
+ },
+ "ite": {
+ "english_name": "Itene"
+ },
+ "iti": {
+ "english_name": "Itneg, Inlaod"
+ },
+ "itk": {
+ "english_name": "Judeo-Italian"
+ },
+ "itl": {
+ "english_name": "Itelmen"
+ },
+ "itm": {
+ "english_name": "Itu Mbon Uzo"
+ },
+ "ito": {
+ "english_name": "Itonama"
+ },
+ "itr": {
+ "english_name": "Iteri"
+ },
+ "its": {
+ "english_name": "Isekiri"
+ },
+ "itt": {
+ "english_name": "Itneg, Maeng"
+ },
+ "itv": {
+ "english_name": "Itawit"
+ },
+ "itw": {
+ "english_name": "Ito"
+ },
+ "itx": {
+ "english_name": "Itik"
+ },
+ "ity": {
+ "english_name": "Itneg, Moyadan"
+ },
+ "itz": {
+ "english_name": "Itz\u00e1"
+ },
+ "iu": {
+ "english_name": "Inuktitut"
+ },
+ "ium": {
+ "english_name": "Mien, Iu"
+ },
+ "ivb": {
+ "english_name": "Ibatan"
+ },
+ "ivv": {
+ "english_name": "Ivatan"
+ },
+ "iwk": {
+ "english_name": "I-Wak"
+ },
+ "iwm": {
+ "english_name": "Iwam"
+ },
+ "iwo": {
+ "english_name": "Iwur"
+ },
+ "iws": {
+ "english_name": "Iwam, Sepik"
+ },
+ "ixc": {
+ "english_name": "Ixcatec"
+ },
+ "ixl": {
+ "english_name": "Ixil"
+ },
+ "iya": {
+ "english_name": "Iyayu"
+ },
+ "iyo": {
+ "english_name": "Mesaka"
+ },
+ "iyx": {
+ "english_name": "Yaka (Congo)"
+ },
+ "izh": {
+ "english_name": "Ingrian"
+ },
+ "izr": {
+ "english_name": "Izere"
+ },
+ "izz": {
+ "english_name": "Izii"
+ },
+ "ja": {
+ "english_name": "Japanese",
+ "name": "\u65e5\u672c\u8a9e"
+ },
+ "jaa": {
+ "english_name": "Jamamad\u00ed"
+ },
+ "jab": {
+ "english_name": "Hyam"
+ },
+ "jac": {
+ "english_name": "Popti'"
+ },
+ "jad": {
+ "english_name": "Jahanka"
+ },
+ "jae": {
+ "english_name": "Yabem"
+ },
+ "jaf": {
+ "english_name": "Jara"
+ },
+ "jah": {
+ "english_name": "Jah Hut"
+ },
+ "jaj": {
+ "english_name": "Zazao"
+ },
+ "jak": {
+ "english_name": "Jakun"
+ },
+ "jal": {
+ "english_name": "Yalahatan"
+ },
+ "jam": {
+ "english_name": "Creole English, Jamaican"
+ },
+ "jan": {
+ "english_name": "Jandai"
+ },
+ "jao": {
+ "english_name": "Yanyuwa"
+ },
+ "jaq": {
+ "english_name": "Yaqay"
+ },
+ "jas": {
+ "english_name": "Javanese, New Caledonian"
+ },
+ "jat": {
+ "english_name": "Jakati"
+ },
+ "jau": {
+ "english_name": "Yaur"
+ },
+ "jax": {
+ "english_name": "Malay, Jambi"
+ },
+ "jay": {
+ "english_name": "Yan-nhangu"
+ },
+ "jaz": {
+ "english_name": "Jawe"
+ },
+ "jbe": {
+ "english_name": "Judeo-Berber"
+ },
+ "jbi": {
+ "english_name": "Badjiri"
+ },
+ "jbj": {
+ "english_name": "Arandai"
+ },
+ "jbk": {
+ "english_name": "Barikewa"
+ },
+ "jbn": {
+ "english_name": "Nafusi"
+ },
+ "jbo": {
+ "english_name": "Lojban"
+ },
+ "jbr": {
+ "english_name": "Jofotek-Bromnya"
+ },
+ "jbt": {
+ "english_name": "Jabut\u00ed"
+ },
+ "jbu": {
+ "english_name": "Jukun Takum"
+ },
+ "jbw": {
+ "english_name": "Yawijibaya"
+ },
+ "jcs": {
+ "english_name": "Jamaican Country Sign Language"
+ },
+ "jct": {
+ "english_name": "Krymchak"
+ },
+ "jda": {
+ "english_name": "Jad"
+ },
+ "jdg": {
+ "english_name": "Jadgali"
+ },
+ "jdt": {
+ "english_name": "Judeo-Tat"
+ },
+ "jeb": {
+ "english_name": "Jebero"
+ },
+ "jee": {
+ "english_name": "Jerung"
+ },
+ "jeg": {
+ "english_name": "Jeng"
+ },
+ "jeh": {
+ "english_name": "Jeh"
+ },
+ "jei": {
+ "english_name": "Yei"
+ },
+ "jek": {
+ "english_name": "Jeri Kuo"
+ },
+ "jel": {
+ "english_name": "Yelmek"
+ },
+ "jen": {
+ "english_name": "Dza"
+ },
+ "jer": {
+ "english_name": "Jere"
+ },
+ "jet": {
+ "english_name": "Manem"
+ },
+ "jeu": {
+ "english_name": "Jonkor Bourmataguil"
+ },
+ "jgb": {
+ "english_name": "Ngbee"
+ },
+ "jge": {
+ "english_name": "Judeo-Georgian"
+ },
+ "jgk": {
+ "english_name": "Gwak"
+ },
+ "jgo": {
+ "english_name": "Ngomba"
+ },
+ "jhi": {
+ "english_name": "Jehai"
+ },
+ "jhs": {
+ "english_name": "Jhankot Sign Language"
+ },
+ "jia": {
+ "english_name": "Jina"
+ },
+ "jib": {
+ "english_name": "Jibu"
+ },
+ "jic": {
+ "english_name": "Tol"
+ },
+ "jid": {
+ "english_name": "Bu"
+ },
+ "jie": {
+ "english_name": "Jilbe"
+ },
+ "jig": {
+ "english_name": "Djingili"
+ },
+ "jih": {
+ "english_name": "sTodsde"
+ },
+ "jii": {
+ "english_name": "Jiiddu"
+ },
+ "jil": {
+ "english_name": "Jilim"
+ },
+ "jim": {
+ "english_name": "Jimi (Cameroon)"
+ },
+ "jio": {
+ "english_name": "Jiamao"
+ },
+ "jiq": {
+ "english_name": "Guanyinqiao"
+ },
+ "jit": {
+ "english_name": "Jita"
+ },
+ "jiu": {
+ "english_name": "Jinuo, Youle"
+ },
+ "jiv": {
+ "english_name": "Shuar"
+ },
+ "jiy": {
+ "english_name": "Jinuo, Buyuan"
+ },
+ "jjr": {
+ "english_name": "Bankal"
+ },
+ "jkm": {
+ "english_name": "Karen, Mobwa"
+ },
+ "jko": {
+ "english_name": "Kubo"
+ },
+ "jkp": {
+ "english_name": "Karen, Paku"
+ },
+ "jkr": {
+ "english_name": "Koro (India)"
+ },
+ "jku": {
+ "english_name": "Labir"
+ },
+ "jle": {
+ "english_name": "Ngile"
+ },
+ "jls": {
+ "english_name": "Jamaican Sign Language"
+ },
+ "jma": {
+ "english_name": "Dima"
+ },
+ "jmb": {
+ "english_name": "Zumbun"
+ },
+ "jmc": {
+ "english_name": "Machame"
+ },
+ "jmd": {
+ "english_name": "Yamdena"
+ },
+ "jmi": {
+ "english_name": "Jimi (Nigeria)"
+ },
+ "jml": {
+ "english_name": "Jumli"
+ },
+ "jmn": {
+ "english_name": "Naga, Makuri"
+ },
+ "jmr": {
+ "english_name": "Kamara"
+ },
+ "jms": {
+ "english_name": "Mashi (Nigeria)"
+ },
+ "jmw": {
+ "english_name": "Mouwase"
+ },
+ "jmx": {
+ "english_name": "Mixtec, Western Juxtlahuaca"
+ },
+ "jna": {
+ "english_name": "Jangshung"
+ },
+ "jnd": {
+ "english_name": "Jandavra"
+ },
+ "jng": {
+ "english_name": "Yangman"
+ },
+ "jni": {
+ "english_name": "Janji"
+ },
+ "jnj": {
+ "english_name": "Yemsa"
+ },
+ "jnl": {
+ "english_name": "Rawat"
+ },
+ "jns": {
+ "english_name": "Jaunsari"
+ },
+ "job": {
+ "english_name": "Joba"
+ },
+ "jod": {
+ "english_name": "Wojenaka"
+ },
+ "jor": {
+ "english_name": "Jor\u00e1"
+ },
+ "jos": {
+ "english_name": "Jordanian Sign Language"
+ },
+ "jow": {
+ "english_name": "Jowulu"
+ },
+ "jpa": {
+ "english_name": "Aramaic, Jewish Palestinian"
+ },
+ "jpr": {
+ "english_name": "Judeo-Persian"
+ },
+ "jqr": {
+ "english_name": "Jaqaru"
+ },
+ "jra": {
+ "english_name": "Jarai"
+ },
+ "jrb": {
+ "english_name": "Judeo-Arabic"
+ },
+ "jrr": {
+ "english_name": "Jiru"
+ },
+ "jrt": {
+ "english_name": "Jorto"
+ },
+ "jru": {
+ "english_name": "Japrer\u00eda"
+ },
+ "jsl": {
+ "english_name": "Japanese Sign Language"
+ },
+ "jua": {
+ "english_name": "J\u00fama"
+ },
+ "jub": {
+ "english_name": "Wannu"
+ },
+ "juc": {
+ "english_name": "Jurchen"
+ },
+ "jud": {
+ "english_name": "Worodougou"
+ },
+ "juh": {
+ "english_name": "H\u00f5ne"
+ },
+ "jui": {
+ "english_name": "Ngadjuri"
+ },
+ "juk": {
+ "english_name": "Wapan"
+ },
+ "jul": {
+ "english_name": "Jirel"
+ },
+ "jum": {
+ "english_name": "Jumjum"
+ },
+ "jun": {
+ "english_name": "Juang"
+ },
+ "juo": {
+ "english_name": "Jiba"
+ },
+ "jup": {
+ "english_name": "Hupd\u00eb"
+ },
+ "jur": {
+ "english_name": "Jur\u00fana"
+ },
+ "jus": {
+ "english_name": "Jumla Sign Language"
+ },
+ "jut": {
+ "english_name": "Jutish"
+ },
+ "juu": {
+ "english_name": "Ju"
+ },
+ "juw": {
+ "english_name": "W\u00e3pha"
+ },
+ "juy": {
+ "english_name": "Juray"
+ },
+ "jv": {
+ "english_name": "Javanese"
+ },
+ "jvd": {
+ "english_name": "Javindo"
+ },
+ "jvn": {
+ "english_name": "Javanese, Caribbean"
+ },
+ "jwi": {
+ "english_name": "Jwira-Pepesa"
+ },
+ "jya": {
+ "english_name": "Jiarong"
+ },
+ "jye": {
+ "english_name": "Arabic, Judeo-Yemeni"
+ },
+ "jyy": {
+ "english_name": "Jaya"
+ },
+ "ka": {
+ "english_name": "Georgian"
+ },
+ "kaa": {
+ "english_name": "Kara-Kalpak"
+ },
+ "kab": {
+ "english_name": "Kabyle"
+ },
+ "kac": {
+ "english_name": "Kachin"
+ },
+ "kad": {
+ "english_name": "Adara"
+ },
+ "kae": {
+ "english_name": "Ketangalan"
+ },
+ "kaf": {
+ "english_name": "Katso"
+ },
+ "kag": {
+ "english_name": "Kajaman"
+ },
+ "kah": {
+ "english_name": "Kara (Central African Republic)"
+ },
+ "kai": {
+ "english_name": "Karekare"
+ },
+ "kaj": {
+ "english_name": "Jju"
+ },
+ "kak": {
+ "english_name": "Kallahan, Kayapa"
+ },
+ "kam": {
+ "english_name": "Kamba (Kenya)"
+ },
+ "kao": {
+ "english_name": "Xaasongaxango"
+ },
+ "kap": {
+ "english_name": "Bezhta"
+ },
+ "kaq": {
+ "english_name": "Capanahua"
+ },
+ "kav": {
+ "english_name": "Katuk\u00edna"
+ },
+ "kaw": {
+ "english_name": "Kawi"
+ },
+ "kax": {
+ "english_name": "Kao"
+ },
+ "kay": {
+ "english_name": "Kamayur\u00e1"
+ },
+ "kba": {
+ "english_name": "Kalarko"
+ },
+ "kbb": {
+ "english_name": "Kaxui\u00e2na"
+ },
+ "kbc": {
+ "english_name": "Kadiw\u00e9u"
+ },
+ "kbd": {
+ "english_name": "Kabardian"
+ },
+ "kbe": {
+ "english_name": "Kanju"
+ },
+ "kbg": {
+ "english_name": "Khamba"
+ },
+ "kbh": {
+ "english_name": "Cams\u00e1"
+ },
+ "kbi": {
+ "english_name": "Kaptiau"
+ },
+ "kbj": {
+ "english_name": "Kari"
+ },
+ "kbk": {
+ "english_name": "Koiari, Grass"
+ },
+ "kbl": {
+ "english_name": "Kanembu"
+ },
+ "kbm": {
+ "english_name": "Iwal"
+ },
+ "kbn": {
+ "english_name": "Kare (Central African Republic)"
+ },
+ "kbo": {
+ "english_name": "Keliko"
+ },
+ "kbp": {
+ "english_name": "Kabiy\u00e8"
+ },
+ "kbq": {
+ "english_name": "Kamano"
+ },
+ "kbr": {
+ "english_name": "Kafa"
+ },
+ "kbs": {
+ "english_name": "Kande"
+ },
+ "kbt": {
+ "english_name": "Abadi"
+ },
+ "kbu": {
+ "english_name": "Kabutra"
+ },
+ "kbv": {
+ "english_name": "Dera (Indonesia)"
+ },
+ "kbw": {
+ "english_name": "Kaiep"
+ },
+ "kbx": {
+ "english_name": "Ap Ma"
+ },
+ "kby": {
+ "english_name": "Kanuri, Manga"
+ },
+ "kbz": {
+ "english_name": "Duhwa"
+ },
+ "kca": {
+ "english_name": "Khanty"
+ },
+ "kcb": {
+ "english_name": "Kawacha"
+ },
+ "kcc": {
+ "english_name": "Lubila"
+ },
+ "kcd": {
+ "english_name": "Kanum, Ngk\u00e2lmpw"
+ },
+ "kce": {
+ "english_name": "Kaivi"
+ },
+ "kcf": {
+ "english_name": "Ukaan"
+ },
+ "kcg": {
+ "english_name": "Tyap"
+ },
+ "kch": {
+ "english_name": "Vono"
+ },
+ "kci": {
+ "english_name": "Kamantan"
+ },
+ "kcj": {
+ "english_name": "Kobiana"
+ },
+ "kck": {
+ "english_name": "Kalanga"
+ },
+ "kcl": {
+ "english_name": "Kela (Papua New Guinea)"
+ },
+ "kcm": {
+ "english_name": "Gula (Central African Republic)"
+ },
+ "kcn": {
+ "english_name": "Nubi"
+ },
+ "kco": {
+ "english_name": "Kinalakna"
+ },
+ "kcp": {
+ "english_name": "Kanga"
+ },
+ "kcq": {
+ "english_name": "Kamo"
+ },
+ "kcr": {
+ "english_name": "Katla"
+ },
+ "kcs": {
+ "english_name": "Koenoem"
+ },
+ "kct": {
+ "english_name": "Kaian"
+ },
+ "kcu": {
+ "english_name": "Kami (Tanzania)"
+ },
+ "kcv": {
+ "english_name": "Kete"
+ },
+ "kcw": {
+ "english_name": "Kabwari"
+ },
+ "kcx": {
+ "english_name": "Kachama-Ganjule"
+ },
+ "kcy": {
+ "english_name": "Korandje"
+ },
+ "kcz": {
+ "english_name": "Konongo"
+ },
+ "kda": {
+ "english_name": "Worimi"
+ },
+ "kdc": {
+ "english_name": "Kutu"
+ },
+ "kdd": {
+ "english_name": "Yankunytjatjara"
+ },
+ "kde": {
+ "english_name": "Makonde"
+ },
+ "kdf": {
+ "english_name": "Mamusi"
+ },
+ "kdg": {
+ "english_name": "Seba"
+ },
+ "kdh": {
+ "english_name": "Tem"
+ },
+ "kdi": {
+ "english_name": "Kumam"
+ },
+ "kdj": {
+ "english_name": "Karamojong"
+ },
+ "kdk": {
+ "english_name": "Num\u00e8\u00e8"
+ },
+ "kdl": {
+ "english_name": "Tsikimba"
+ },
+ "kdm": {
+ "english_name": "Kagoma"
+ },
+ "kdn": {
+ "english_name": "Kunda"
+ },
+ "kdp": {
+ "english_name": "Kaningdon-Nindem"
+ },
+ "kdq": {
+ "english_name": "Koch"
+ },
+ "kdr": {
+ "english_name": "Karaim"
+ },
+ "kdt": {
+ "english_name": "Kuy"
+ },
+ "kdu": {
+ "english_name": "Kadaru"
+ },
+ "kdw": {
+ "english_name": "Koneraw"
+ },
+ "kdx": {
+ "english_name": "Kam"
+ },
+ "kdy": {
+ "english_name": "Keder"
+ },
+ "kdz": {
+ "english_name": "Kwaja"
+ },
+ "kea": {
+ "english_name": "Kabuverdianu"
+ },
+ "keb": {
+ "english_name": "K\u00e9l\u00e9"
+ },
+ "kec": {
+ "english_name": "Keiga"
+ },
+ "ked": {
+ "english_name": "Kerewe"
+ },
+ "kee": {
+ "english_name": "Keres, Eastern"
+ },
+ "kef": {
+ "english_name": "Kpessi"
+ },
+ "keg": {
+ "english_name": "Tese"
+ },
+ "keh": {
+ "english_name": "Keak"
+ },
+ "kei": {
+ "english_name": "Kei"
+ },
+ "kej": {
+ "english_name": "Kadar"
+ },
+ "kek": {
+ "english_name": "Kekch\u00ed"
+ },
+ "kel": {
+ "english_name": "Kela (Democratic Republic of Congo)"
+ },
+ "kem": {
+ "english_name": "Kemak"
+ },
+ "ken": {
+ "english_name": "Kenyang"
+ },
+ "keo": {
+ "english_name": "Kakwa"
+ },
+ "kep": {
+ "english_name": "Kaikadi"
+ },
+ "keq": {
+ "english_name": "Kamar"
+ },
+ "ker": {
+ "english_name": "Kera"
+ },
+ "kes": {
+ "english_name": "Kugbo"
+ },
+ "ket": {
+ "english_name": "Ket"
+ },
+ "keu": {
+ "english_name": "Akebu"
+ },
+ "kev": {
+ "english_name": "Kanikkaran"
+ },
+ "kew": {
+ "english_name": "Kewa, West"
+ },
+ "kex": {
+ "english_name": "Kukna"
+ },
+ "key": {
+ "english_name": "Kupia"
+ },
+ "kez": {
+ "english_name": "Kukele"
+ },
+ "kfa": {
+ "english_name": "Kodava"
+ },
+ "kfb": {
+ "english_name": "Kolami, Northwestern"
+ },
+ "kfc": {
+ "english_name": "Konda-Dora"
+ },
+ "kfd": {
+ "english_name": "Koraga, Korra"
+ },
+ "kfe": {
+ "english_name": "Kota (India)"
+ },
+ "kff": {
+ "english_name": "Koya"
+ },
+ "kfg": {
+ "english_name": "Kudiya"
+ },
+ "kfh": {
+ "english_name": "Kurichiya"
+ },
+ "kfi": {
+ "english_name": "Kurumba, Kannada"
+ },
+ "kfj": {
+ "english_name": "Kemiehua"
+ },
+ "kfk": {
+ "english_name": "Kinnauri"
+ },
+ "kfl": {
+ "english_name": "Kung"
+ },
+ "kfm": {
+ "english_name": "Khunsari"
+ },
+ "kfn": {
+ "english_name": "Kuk"
+ },
+ "kfo": {
+ "english_name": "Koro (C\u00f4te d'Ivoire)"
+ },
+ "kfp": {
+ "english_name": "Korwa"
+ },
+ "kfq": {
+ "english_name": "Korku"
+ },
+ "kfr": {
+ "english_name": "Kachchi"
+ },
+ "kfs": {
+ "english_name": "Bilaspuri"
+ },
+ "kft": {
+ "english_name": "Kanjari"
+ },
+ "kfu": {
+ "english_name": "Katkari"
+ },
+ "kfv": {
+ "english_name": "Kurmukar"
+ },
+ "kfw": {
+ "english_name": "Naga, Kharam"
+ },
+ "kfx": {
+ "english_name": "Pahari, Kullu"
+ },
+ "kfy": {
+ "english_name": "Kumaoni"
+ },
+ "kfz": {
+ "english_name": "Koromf\u00e9"
+ },
+ "kg": {
+ "english_name": "Kongo"
+ },
+ "kga": {
+ "english_name": "Koyaga"
+ },
+ "kgb": {
+ "english_name": "Kawe"
+ },
+ "kgc": {
+ "english_name": "Kasseng"
+ },
+ "kgd": {
+ "english_name": "Kataang"
+ },
+ "kge": {
+ "english_name": "Komering"
+ },
+ "kgf": {
+ "english_name": "Kube"
+ },
+ "kgg": {
+ "english_name": "Kusunda"
+ },
+ "kgi": {
+ "english_name": "Selangor Sign Language"
+ },
+ "kgj": {
+ "english_name": "Kham, Gamale"
+ },
+ "kgk": {
+ "english_name": "Kaiw\u00e1"
+ },
+ "kgl": {
+ "english_name": "Kunggari"
+ },
+ "kgm": {
+ "english_name": "Karip\u00fana"
+ },
+ "kgn": {
+ "english_name": "Karingani"
+ },
+ "kgo": {
+ "english_name": "Krongo"
+ },
+ "kgp": {
+ "english_name": "Kaingang"
+ },
+ "kgq": {
+ "english_name": "Kamoro"
+ },
+ "kgr": {
+ "english_name": "Abun"
+ },
+ "kgs": {
+ "english_name": "Kumbainggar"
+ },
+ "kgt": {
+ "english_name": "Somyev"
+ },
+ "kgu": {
+ "english_name": "Kobol"
+ },
+ "kgv": {
+ "english_name": "Karas"
+ },
+ "kgw": {
+ "english_name": "Karon Dori"
+ },
+ "kgx": {
+ "english_name": "Kamaru"
+ },
+ "kgy": {
+ "english_name": "Kyerung"
+ },
+ "kha": {
+ "english_name": "Khasi"
+ },
+ "khb": {
+ "english_name": "L\u00fc"
+ },
+ "khc": {
+ "english_name": "Tukang Besi North"
+ },
+ "khd": {
+ "english_name": "Kanum, B\u00e4di"
+ },
+ "khe": {
+ "english_name": "Korowai"
+ },
+ "khf": {
+ "english_name": "Khuen"
+ },
+ "khg": {
+ "english_name": "Tibetan, Khams"
+ },
+ "khh": {
+ "english_name": "Kehu"
+ },
+ "khj": {
+ "english_name": "Kuturmi"
+ },
+ "khk": {
+ "english_name": "Mongolian, Halh"
+ },
+ "khl": {
+ "english_name": "Lusi"
+ },
+ "khn": {
+ "english_name": "Khandesi"
+ },
+ "kho": {
+ "english_name": "Khotanese"
+ },
+ "khp": {
+ "english_name": "Kapori"
+ },
+ "khq": {
+ "english_name": "Songhay, Koyra Chiini"
+ },
+ "khr": {
+ "english_name": "Kharia"
+ },
+ "khs": {
+ "english_name": "Kasua"
+ },
+ "kht": {
+ "english_name": "Khamti"
+ },
+ "khu": {
+ "english_name": "Nkhumbi"
+ },
+ "khv": {
+ "english_name": "Khvarshi"
+ },
+ "khw": {
+ "english_name": "Khowar"
+ },
+ "khx": {
+ "english_name": "Kanu"
+ },
+ "khy": {
+ "english_name": "Kele (Democratic Republic of Congo)"
+ },
+ "khz": {
+ "english_name": "Keapara"
+ },
+ "ki": {
+ "english_name": "Kikuyu"
+ },
+ "kia": {
+ "english_name": "Kim"
+ },
+ "kib": {
+ "english_name": "Koalib"
+ },
+ "kic": {
+ "english_name": "Kickapoo"
+ },
+ "kid": {
+ "english_name": "Koshin"
+ },
+ "kie": {
+ "english_name": "Kibet"
+ },
+ "kif": {
+ "english_name": "Kham, Eastern Parbate"
+ },
+ "kig": {
+ "english_name": "Kimaama"
+ },
+ "kih": {
+ "english_name": "Kilmeri"
+ },
+ "kii": {
+ "english_name": "Kitsai"
+ },
+ "kij": {
+ "english_name": "Kilivila"
+ },
+ "kil": {
+ "english_name": "Kariya"
+ },
+ "kim": {
+ "english_name": "Karagas"
+ },
+ "kio": {
+ "english_name": "Kiowa"
+ },
+ "kip": {
+ "english_name": "Kham, Sheshi"
+ },
+ "kiq": {
+ "english_name": "Kosadle"
+ },
+ "kis": {
+ "english_name": "Kis"
+ },
+ "kit": {
+ "english_name": "Agob"
+ },
+ "kiu": {
+ "english_name": "Kirmanjki (individual language)"
+ },
+ "kiv": {
+ "english_name": "Kimbu"
+ },
+ "kiw": {
+ "english_name": "Kiwai, Northeast"
+ },
+ "kix": {
+ "english_name": "Naga, Khiamniungan"
+ },
+ "kiy": {
+ "english_name": "Kirikiri"
+ },
+ "kiz": {
+ "english_name": "Kisi"
+ },
+ "kj": {
+ "english_name": "Kuanyama"
+ },
+ "kja": {
+ "english_name": "Mlap"
+ },
+ "kjb": {
+ "english_name": "Q'anjob'al"
+ },
+ "kjc": {
+ "english_name": "Konjo, Coastal"
+ },
+ "kjd": {
+ "english_name": "Kiwai, Southern"
+ },
+ "kje": {
+ "english_name": "Kisar"
+ },
+ "kjf": {
+ "english_name": "Khalaj"
+ },
+ "kjg": {
+ "english_name": "Khmu"
+ },
+ "kjh": {
+ "english_name": "Khakas"
+ },
+ "kji": {
+ "english_name": "Zabana"
+ },
+ "kjj": {
+ "english_name": "Khinalugh"
+ },
+ "kjk": {
+ "english_name": "Konjo, Highland"
+ },
+ "kjl": {
+ "english_name": "Kham, Western Parbate"
+ },
+ "kjm": {
+ "english_name": "Kh\u00e1ng"
+ },
+ "kjn": {
+ "english_name": "Kunjen"
+ },
+ "kjo": {
+ "english_name": "Kinnauri, Harijan"
+ },
+ "kjp": {
+ "english_name": "Karen, Pwo Eastern"
+ },
+ "kjq": {
+ "english_name": "Keres, Western"
+ },
+ "kjr": {
+ "english_name": "Kurudu"
+ },
+ "kjs": {
+ "english_name": "Kewa, East"
+ },
+ "kjt": {
+ "english_name": "Karen, Phrae Pwo"
+ },
+ "kju": {
+ "english_name": "Kashaya"
+ },
+ "kjx": {
+ "english_name": "Ramopa"
+ },
+ "kjy": {
+ "english_name": "Erave"
+ },
+ "kjz": {
+ "english_name": "Bumthangkha"
+ },
+ "kk": {
+ "english_name": "Kazakh"
+ },
+ "kka": {
+ "english_name": "Kakanda"
+ },
+ "kkb": {
+ "english_name": "Kwerisa"
+ },
+ "kkc": {
+ "english_name": "Odoodee"
+ },
+ "kkd": {
+ "english_name": "Kinuku"
+ },
+ "kke": {
+ "english_name": "Kakabe"
+ },
+ "kkf": {
+ "english_name": "Monpa, Kalaktang"
+ },
+ "kkg": {
+ "english_name": "Kalinga, Mabaka Valley"
+ },
+ "kkh": {
+ "english_name": "Kh\u00fcn"
+ },
+ "kki": {
+ "english_name": "Kagulu"
+ },
+ "kkj": {
+ "english_name": "Kako"
+ },
+ "kkk": {
+ "english_name": "Kokota"
+ },
+ "kkl": {
+ "english_name": "Yale, Kosarek"
+ },
+ "kkm": {
+ "english_name": "Kiong"
+ },
+ "kkn": {
+ "english_name": "Kon Keu"
+ },
+ "kko": {
+ "english_name": "Karko"
+ },
+ "kkp": {
+ "english_name": "Gugubera"
+ },
+ "kkq": {
+ "english_name": "Kaiku"
+ },
+ "kkr": {
+ "english_name": "Kir-Balar"
+ },
+ "kks": {
+ "english_name": "Giiwo"
+ },
+ "kkt": {
+ "english_name": "Koi"
+ },
+ "kku": {
+ "english_name": "Tumi"
+ },
+ "kkv": {
+ "english_name": "Kangean"
+ },
+ "kkw": {
+ "english_name": "Teke-Kukuya"
+ },
+ "kkx": {
+ "english_name": "Kohin"
+ },
+ "kky": {
+ "english_name": "Guguyimidjir"
+ },
+ "kkz": {
+ "english_name": "Kaska"
+ },
+ "kl": {
+ "english_name": "Kalaallisut"
+ },
+ "kla": {
+ "english_name": "Klamath-Modoc"
+ },
+ "klb": {
+ "english_name": "Kiliwa"
+ },
+ "klc": {
+ "english_name": "Kolbila"
+ },
+ "kld": {
+ "english_name": "Gamilaraay"
+ },
+ "kle": {
+ "english_name": "Kulung (Nepal)"
+ },
+ "klf": {
+ "english_name": "Kendeje"
+ },
+ "klg": {
+ "english_name": "Tagakaulo"
+ },
+ "klh": {
+ "english_name": "Weliki"
+ },
+ "kli": {
+ "english_name": "Kalumpang"
+ },
+ "klj": {
+ "english_name": "Khalaj, Turkic"
+ },
+ "klk": {
+ "english_name": "Kono (Nigeria)"
+ },
+ "kll": {
+ "english_name": "Kalagan, Kagan"
+ },
+ "klm": {
+ "english_name": "Migum"
+ },
+ "kln": {
+ "english_name": "Kalenjin"
+ },
+ "klo": {
+ "english_name": "Kapya"
+ },
+ "klp": {
+ "english_name": "Kamasa"
+ },
+ "klq": {
+ "english_name": "Rumu"
+ },
+ "klr": {
+ "english_name": "Khaling"
+ },
+ "kls": {
+ "english_name": "Kalasha"
+ },
+ "klt": {
+ "english_name": "Nukna"
+ },
+ "klu": {
+ "english_name": "Klao"
+ },
+ "klv": {
+ "english_name": "Maskelynes"
+ },
+ "klw": {
+ "english_name": "Lindu"
+ },
+ "klx": {
+ "english_name": "Koluwawa"
+ },
+ "kly": {
+ "english_name": "Kalao"
+ },
+ "klz": {
+ "english_name": "Kabola"
+ },
+ "km": {
+ "english_name": "Khmer, Central"
+ },
+ "kma": {
+ "english_name": "Konni"
+ },
+ "kmb": {
+ "english_name": "Kimbundu"
+ },
+ "kmc": {
+ "english_name": "Dong, Southern"
+ },
+ "kmd": {
+ "english_name": "Kalinga, Majukayang"
+ },
+ "kme": {
+ "english_name": "Bakole"
+ },
+ "kmf": {
+ "english_name": "Kare (Papua New Guinea)"
+ },
+ "kmg": {
+ "english_name": "K\u00e2te"
+ },
+ "kmh": {
+ "english_name": "Kalam"
+ },
+ "kmi": {
+ "english_name": "Kami (Nigeria)"
+ },
+ "kmj": {
+ "english_name": "Kumarbhag Paharia"
+ },
+ "kmk": {
+ "english_name": "Kalinga, Limos"
+ },
+ "kml": {
+ "english_name": "Kalinga, Tanudan"
+ },
+ "kmm": {
+ "english_name": "Kom (India)"
+ },
+ "kmn": {
+ "english_name": "Awtuw"
+ },
+ "kmo": {
+ "english_name": "Kwoma"
+ },
+ "kmp": {
+ "english_name": "Gimme"
+ },
+ "kmq": {
+ "english_name": "Kwama"
+ },
+ "kmr": {
+ "english_name": "Kurdish, Northern"
+ },
+ "kms": {
+ "english_name": "Kamasau"
+ },
+ "kmt": {
+ "english_name": "Kemtuik"
+ },
+ "kmu": {
+ "english_name": "Kanite"
+ },
+ "kmv": {
+ "english_name": "Creole French, Karip\u00fana"
+ },
+ "kmw": {
+ "english_name": "Komo (Democratic Republic of Congo)"
+ },
+ "kmx": {
+ "english_name": "Waboda"
+ },
+ "kmy": {
+ "english_name": "Koma"
+ },
+ "kmz": {
+ "english_name": "Khorasani Turkish"
+ },
+ "kn": {
+ "english_name": "Kannada",
+ "name": "\u0c95\u0ca8\u0ccd\u0ca8\u0ca1"
+ },
+ "kna": {
+ "english_name": "Dera (Nigeria)"
+ },
+ "knb": {
+ "english_name": "Kalinga, Lubuagan"
+ },
+ "knc": {
+ "english_name": "Kanuri, Central"
+ },
+ "knd": {
+ "english_name": "Konda"
+ },
+ "kne": {
+ "english_name": "Kankanaey"
+ },
+ "knf": {
+ "english_name": "Mankanya"
+ },
+ "kng": {
+ "english_name": "Koongo"
+ },
+ "kni": {
+ "english_name": "Kanufi"
+ },
+ "knj": {
+ "english_name": "Kanjobal, Western"
+ },
+ "knk": {
+ "english_name": "Kuranko"
+ },
+ "knl": {
+ "english_name": "Keninjal"
+ },
+ "knm": {
+ "english_name": "Kanamar\u00ed"
+ },
+ "knn": {
+ "english_name": "Konkani (individual language)"
+ },
+ "kno": {
+ "english_name": "Kono (Sierra Leone)"
+ },
+ "knp": {
+ "english_name": "Kwanja"
+ },
+ "knq": {
+ "english_name": "Kintaq"
+ },
+ "knr": {
+ "english_name": "Kaningra"
+ },
+ "kns": {
+ "english_name": "Kensiu"
+ },
+ "knt": {
+ "english_name": "Katuk\u00edna, Panoan"
+ },
+ "knu": {
+ "english_name": "Kono (Guinea)"
+ },
+ "knv": {
+ "english_name": "Tabo"
+ },
+ "knw": {
+ "english_name": "Kung-Ekoka"
+ },
+ "knx": {
+ "english_name": "Kendayan"
+ },
+ "kny": {
+ "english_name": "Kanyok"
+ },
+ "knz": {
+ "english_name": "Kalams\u00e9"
+ },
+ "ko": {
+ "english_name": "Korean",
+ "name": "\ud55c\uad6d\uc5b4"
+ },
+ "koa": {
+ "english_name": "Konomala"
+ },
+ "koc": {
+ "english_name": "Kpati"
+ },
+ "kod": {
+ "english_name": "Kodi"
+ },
+ "koe": {
+ "english_name": "Kacipo-Balesi"
+ },
+ "kof": {
+ "english_name": "Kubi"
+ },
+ "kog": {
+ "english_name": "Cogui"
+ },
+ "koh": {
+ "english_name": "Koyo"
+ },
+ "koi": {
+ "english_name": "Komi-Permyak"
+ },
+ "kok": {
+ "english_name": "Konkani (macrolanguage)",
+ "name": "Konkani (macrolanguage)"
+ },
+ "kol": {
+ "english_name": "Kol (Papua New Guinea)"
+ },
+ "koo": {
+ "english_name": "Konzo"
+ },
+ "kop": {
+ "english_name": "Waube"
+ },
+ "koq": {
+ "english_name": "Kota (Gabon)"
+ },
+ "kos": {
+ "english_name": "Kosraean"
+ },
+ "kot": {
+ "english_name": "Lagwan"
+ },
+ "kou": {
+ "english_name": "Koke"
+ },
+ "kov": {
+ "english_name": "Kudu-Camo"
+ },
+ "kow": {
+ "english_name": "Kugama"
+ },
+ "kox": {
+ "english_name": "Coxima"
+ },
+ "koy": {
+ "english_name": "Koyukon"
+ },
+ "koz": {
+ "english_name": "Korak"
+ },
+ "kpa": {
+ "english_name": "Kutto"
+ },
+ "kpb": {
+ "english_name": "Kurumba, Mullu"
+ },
+ "kpc": {
+ "english_name": "Curripaco"
+ },
+ "kpd": {
+ "english_name": "Koba"
+ },
+ "kpe": {
+ "english_name": "Kpelle"
+ },
+ "kpf": {
+ "english_name": "Komba"
+ },
+ "kpg": {
+ "english_name": "Kapingamarangi"
+ },
+ "kph": {
+ "english_name": "Kplang"
+ },
+ "kpi": {
+ "english_name": "Kofei"
+ },
+ "kpj": {
+ "english_name": "Karaj\u00e1"
+ },
+ "kpk": {
+ "english_name": "Kpan"
+ },
+ "kpl": {
+ "english_name": "Kpala"
+ },
+ "kpm": {
+ "english_name": "Koho"
+ },
+ "kpn": {
+ "english_name": "Kepkiriw\u00e1t"
+ },
+ "kpo": {
+ "english_name": "Ikposo"
+ },
+ "kpq": {
+ "english_name": "Korupun-Sela"
+ },
+ "kpr": {
+ "english_name": "Korafe-Yegha"
+ },
+ "kps": {
+ "english_name": "Tehit"
+ },
+ "kpt": {
+ "english_name": "Karata"
+ },
+ "kpu": {
+ "english_name": "Kafoa"
+ },
+ "kpv": {
+ "english_name": "Komi-Zyrian"
+ },
+ "kpw": {
+ "english_name": "Kobon"
+ },
+ "kpx": {
+ "english_name": "Koiali, Mountain"
+ },
+ "kpy": {
+ "english_name": "Koryak"
+ },
+ "kpz": {
+ "english_name": "Kupsabiny"
+ },
+ "kqa": {
+ "english_name": "Mum"
+ },
+ "kqb": {
+ "english_name": "Kovai"
+ },
+ "kqc": {
+ "english_name": "Doromu-Koki"
+ },
+ "kqd": {
+ "english_name": "Koy Sanjaq Surat"
+ },
+ "kqe": {
+ "english_name": "Kalagan"
+ },
+ "kqf": {
+ "english_name": "Kakabai"
+ },
+ "kqg": {
+ "english_name": "Khe"
+ },
+ "kqh": {
+ "english_name": "Kisankasa"
+ },
+ "kqi": {
+ "english_name": "Koitabu"
+ },
+ "kqj": {
+ "english_name": "Koromira"
+ },
+ "kqk": {
+ "english_name": "Gbe, Kotafon"
+ },
+ "kql": {
+ "english_name": "Kyenele"
+ },
+ "kqm": {
+ "english_name": "Khisa"
+ },
+ "kqn": {
+ "english_name": "Kaonde"
+ },
+ "kqo": {
+ "english_name": "Krahn, Eastern"
+ },
+ "kqp": {
+ "english_name": "Kimr\u00e9"
+ },
+ "kqq": {
+ "english_name": "Krenak"
+ },
+ "kqr": {
+ "english_name": "Kimaragang"
+ },
+ "kqs": {
+ "english_name": "Kissi, Northern"
+ },
+ "kqt": {
+ "english_name": "Kadazan, Klias River"
+ },
+ "kqu": {
+ "english_name": "Seroa"
+ },
+ "kqv": {
+ "english_name": "Okolod"
+ },
+ "kqw": {
+ "english_name": "Kandas"
+ },
+ "kqx": {
+ "english_name": "Mser"
+ },
+ "kqy": {
+ "english_name": "Koorete"
+ },
+ "kqz": {
+ "english_name": "Korana"
+ },
+ "kr": {
+ "english_name": "Kanuri"
+ },
+ "kra": {
+ "english_name": "Kumhali"
+ },
+ "krb": {
+ "english_name": "Karkin"
+ },
+ "krc": {
+ "english_name": "Karachay-Balkar"
+ },
+ "krd": {
+ "english_name": "Kairui-Midiki"
+ },
+ "kre": {
+ "english_name": "Panar\u00e1"
+ },
+ "krf": {
+ "english_name": "Koro (Vanuatu)"
+ },
+ "krh": {
+ "english_name": "Kurama"
+ },
+ "kri": {
+ "english_name": "Krio"
+ },
+ "krj": {
+ "english_name": "Kinaray-A"
+ },
+ "krk": {
+ "english_name": "Kerek"
+ },
+ "krl": {
+ "english_name": "Karelian"
+ },
+ "krm": {
+ "english_name": "Krim"
+ },
+ "krn": {
+ "english_name": "Sapo"
+ },
+ "krp": {
+ "english_name": "Korop"
+ },
+ "krr": {
+ "english_name": "Kru'ng 2"
+ },
+ "krs": {
+ "english_name": "Gbaya (Sudan)"
+ },
+ "krt": {
+ "english_name": "Kanuri, Tumari"
+ },
+ "kru": {
+ "english_name": "Kurukh"
+ },
+ "krv": {
+ "english_name": "Kavet"
+ },
+ "krw": {
+ "english_name": "Krahn, Western"
+ },
+ "krx": {
+ "english_name": "Karon"
+ },
+ "kry": {
+ "english_name": "Kryts"
+ },
+ "krz": {
+ "english_name": "Kanum, Sota"
+ },
+ "ks": {
+ "english_name": "Kashmiri"
+ },
+ "ksa": {
+ "english_name": "Shuwa-Zamani"
+ },
+ "ksb": {
+ "english_name": "Shambala"
+ },
+ "ksc": {
+ "english_name": "Kalinga, Southern"
+ },
+ "ksd": {
+ "english_name": "Kuanua"
+ },
+ "kse": {
+ "english_name": "Kuni"
+ },
+ "ksf": {
+ "english_name": "Bafia"
+ },
+ "ksg": {
+ "english_name": "Kusaghe"
+ },
+ "ksh": {
+ "english_name": "K\u00f6lsch"
+ },
+ "ksi": {
+ "english_name": "Krisa"
+ },
+ "ksj": {
+ "english_name": "Uare"
+ },
+ "ksk": {
+ "english_name": "Kansa"
+ },
+ "ksl": {
+ "english_name": "Kumalu"
+ },
+ "ksm": {
+ "english_name": "Kumba"
+ },
+ "ksn": {
+ "english_name": "Kasiguranin"
+ },
+ "kso": {
+ "english_name": "Kofa"
+ },
+ "ksp": {
+ "english_name": "Kaba"
+ },
+ "ksq": {
+ "english_name": "Kwaami"
+ },
+ "ksr": {
+ "english_name": "Borong"
+ },
+ "kss": {
+ "english_name": "Kisi, Southern"
+ },
+ "kst": {
+ "english_name": "Winy\u00e9"
+ },
+ "ksu": {
+ "english_name": "Khamyang"
+ },
+ "ksv": {
+ "english_name": "Kusu"
+ },
+ "ksw": {
+ "english_name": "Karen, S'gaw"
+ },
+ "ksx": {
+ "english_name": "Kedang"
+ },
+ "ksy": {
+ "english_name": "Kharia Thar"
+ },
+ "ksz": {
+ "english_name": "Kodaku"
+ },
+ "kta": {
+ "english_name": "Katua"
+ },
+ "ktb": {
+ "english_name": "Kambaata"
+ },
+ "ktc": {
+ "english_name": "Kholok"
+ },
+ "ktd": {
+ "english_name": "Kokata"
+ },
+ "kte": {
+ "english_name": "Nubri"
+ },
+ "ktf": {
+ "english_name": "Kwami"
+ },
+ "ktg": {
+ "english_name": "Kalkutung"
+ },
+ "kth": {
+ "english_name": "Karanga"
+ },
+ "kti": {
+ "english_name": "Muyu, North"
+ },
+ "ktj": {
+ "english_name": "Krumen, Plapo"
+ },
+ "ktk": {
+ "english_name": "Kaniet"
+ },
+ "ktl": {
+ "english_name": "Koroshi"
+ },
+ "ktm": {
+ "english_name": "Kurti"
+ },
+ "ktn": {
+ "english_name": "Kariti\u00e2na"
+ },
+ "kto": {
+ "english_name": "Kuot"
+ },
+ "ktp": {
+ "english_name": "Kaduo"
+ },
+ "ktq": {
+ "english_name": "Katabaga"
+ },
+ "ktr": {
+ "english_name": "Kota Marudu Tinagas"
+ },
+ "kts": {
+ "english_name": "Muyu, South"
+ },
+ "ktt": {
+ "english_name": "Ketum"
+ },
+ "ktu": {
+ "english_name": "Kituba (Democratic Republic of Congo)"
+ },
+ "ktv": {
+ "english_name": "Katu, Eastern"
+ },
+ "ktw": {
+ "english_name": "Kato"
+ },
+ "ktx": {
+ "english_name": "Kaxarar\u00ed"
+ },
+ "kty": {
+ "english_name": "Kango (Bas-U\u00e9l\u00e9 District)"
+ },
+ "ktz": {
+ "english_name": "Ju/'hoan"
+ },
+ "ku": {
+ "english_name": "Kurdish"
+ },
+ "kub": {
+ "english_name": "Kutep"
+ },
+ "kuc": {
+ "english_name": "Kwinsu"
+ },
+ "kud": {
+ "english_name": "'Auhelawa"
+ },
+ "kue": {
+ "english_name": "Kuman"
+ },
+ "kuf": {
+ "english_name": "Katu, Western"
+ },
+ "kug": {
+ "english_name": "Kupa"
+ },
+ "kuh": {
+ "english_name": "Kushi"
+ },
+ "kui": {
+ "english_name": "Kuik\u00faro-Kalap\u00e1lo"
+ },
+ "kuj": {
+ "english_name": "Kuria"
+ },
+ "kuk": {
+ "english_name": "Kepo'"
+ },
+ "kul": {
+ "english_name": "Kulere"
+ },
+ "kum": {
+ "english_name": "Kumyk"
+ },
+ "kun": {
+ "english_name": "Kunama"
+ },
+ "kuo": {
+ "english_name": "Kumukio"
+ },
+ "kup": {
+ "english_name": "Kunimaipa"
+ },
+ "kuq": {
+ "english_name": "Karipuna"
+ },
+ "kus": {
+ "english_name": "Kusaal"
+ },
+ "kut": {
+ "english_name": "Kutenai"
+ },
+ "kuu": {
+ "english_name": "Kuskokwim, Upper"
+ },
+ "kuv": {
+ "english_name": "Kur"
+ },
+ "kuw": {
+ "english_name": "Kpagua"
+ },
+ "kux": {
+ "english_name": "Kukatja"
+ },
+ "kuy": {
+ "english_name": "Kuuku-Ya'u"
+ },
+ "kuz": {
+ "english_name": "Kunza"
+ },
+ "kv": {
+ "english_name": "Komi"
+ },
+ "kva": {
+ "english_name": "Bagvalal"
+ },
+ "kvb": {
+ "english_name": "Kubu"
+ },
+ "kvc": {
+ "english_name": "Kove"
+ },
+ "kvd": {
+ "english_name": "Kui (Indonesia)"
+ },
+ "kve": {
+ "english_name": "Kalabakan"
+ },
+ "kvf": {
+ "english_name": "Kabalai"
+ },
+ "kvg": {
+ "english_name": "Kuni-Boazi"
+ },
+ "kvh": {
+ "english_name": "Komodo"
+ },
+ "kvi": {
+ "english_name": "Kwang"
+ },
+ "kvj": {
+ "english_name": "Psikye"
+ },
+ "kvk": {
+ "english_name": "Korean Sign Language"
+ },
+ "kvl": {
+ "english_name": "Kayaw"
+ },
+ "kvm": {
+ "english_name": "Kendem"
+ },
+ "kvn": {
+ "english_name": "Kuna, Border"
+ },
+ "kvo": {
+ "english_name": "Dobel"
+ },
+ "kvp": {
+ "english_name": "Kompane"
+ },
+ "kvq": {
+ "english_name": "Karen, Geba"
+ },
+ "kvr": {
+ "english_name": "Kerinci"
+ },
+ "kvs": {
+ "english_name": "Kunggara"
+ },
+ "kvt": {
+ "english_name": "Karen, Lahta"
+ },
+ "kvu": {
+ "english_name": "Karen, Yinbaw"
+ },
+ "kvv": {
+ "english_name": "Kola"
+ },
+ "kvw": {
+ "english_name": "Wersing"
+ },
+ "kvx": {
+ "english_name": "Koli, Parkari"
+ },
+ "kvy": {
+ "english_name": "Karen, Yintale"
+ },
+ "kvz": {
+ "english_name": "Tsakwambo"
+ },
+ "kw": {
+ "english_name": "Cornish"
+ },
+ "kwa": {
+ "english_name": "D\u00e2w"
+ },
+ "kwb": {
+ "english_name": "Kwa"
+ },
+ "kwc": {
+ "english_name": "Likwala"
+ },
+ "kwd": {
+ "english_name": "Kwaio"
+ },
+ "kwe": {
+ "english_name": "Kwerba"
+ },
+ "kwf": {
+ "english_name": "Kwara'ae"
+ },
+ "kwg": {
+ "english_name": "Sara Kaba Deme"
+ },
+ "kwh": {
+ "english_name": "Kowiai"
+ },
+ "kwi": {
+ "english_name": "Awa-Cuaiquer"
+ },
+ "kwj": {
+ "english_name": "Kwanga"
+ },
+ "kwk": {
+ "english_name": "Kwakiutl"
+ },
+ "kwl": {
+ "english_name": "Kofyar"
+ },
+ "kwm": {
+ "english_name": "Kwambi"
+ },
+ "kwn": {
+ "english_name": "Kwangali"
+ },
+ "kwo": {
+ "english_name": "Kwomtari"
+ },
+ "kwp": {
+ "english_name": "Kodia"
+ },
+ "kwr": {
+ "english_name": "Kwer"
+ },
+ "kws": {
+ "english_name": "Kwese"
+ },
+ "kwt": {
+ "english_name": "Kwesten"
+ },
+ "kwu": {
+ "english_name": "Kwakum"
+ },
+ "kwv": {
+ "english_name": "Sara Kaba N\u00e1\u00e0"
+ },
+ "kww": {
+ "english_name": "Kwinti"
+ },
+ "kwx": {
+ "english_name": "Khirwar"
+ },
+ "kwy": {
+ "english_name": "Kongo, San Salvador"
+ },
+ "kwz": {
+ "english_name": "Kwadi"
+ },
+ "kxa": {
+ "english_name": "Kairiru"
+ },
+ "kxb": {
+ "english_name": "Krobu"
+ },
+ "kxc": {
+ "english_name": "Konso"
+ },
+ "kxd": {
+ "english_name": "Brunei"
+ },
+ "kxf": {
+ "english_name": "Karen, Manumanaw"
+ },
+ "kxh": {
+ "english_name": "Karo (Ethiopia)"
+ },
+ "kxi": {
+ "english_name": "Murut, Keningau"
+ },
+ "kxj": {
+ "english_name": "Kulfa"
+ },
+ "kxk": {
+ "english_name": "Karen, Zayein"
+ },
+ "kxl": {
+ "english_name": "Kurux, Nepali"
+ },
+ "kxm": {
+ "english_name": "Khmer, Northern"
+ },
+ "kxn": {
+ "english_name": "Melanau, Kanowit-Tanjong"
+ },
+ "kxo": {
+ "english_name": "Kano\u00e9"
+ },
+ "kxp": {
+ "english_name": "Koli, Wadiyara"
+ },
+ "kxq": {
+ "english_name": "Kanum, Sm\u00e4rky"
+ },
+ "kxr": {
+ "english_name": "Koro (Papua New Guinea)"
+ },
+ "kxs": {
+ "english_name": "Kangjia"
+ },
+ "kxt": {
+ "english_name": "Koiwat"
+ },
+ "kxu": {
+ "english_name": "Kui (India)"
+ },
+ "kxv": {
+ "english_name": "Kuvi"
+ },
+ "kxw": {
+ "english_name": "Konai"
+ },
+ "kxx": {
+ "english_name": "Likuba"
+ },
+ "kxy": {
+ "english_name": "Kayong"
+ },
+ "kxz": {
+ "english_name": "Kerewo"
+ },
+ "ky": {
+ "english_name": "Kirghiz"
+ },
+ "kya": {
+ "english_name": "Kwaya"
+ },
+ "kyb": {
+ "english_name": "Kalinga, Butbut"
+ },
+ "kyc": {
+ "english_name": "Kyaka"
+ },
+ "kyd": {
+ "english_name": "Karey"
+ },
+ "kye": {
+ "english_name": "Krache"
+ },
+ "kyf": {
+ "english_name": "Kouya"
+ },
+ "kyg": {
+ "english_name": "Keyagana"
+ },
+ "kyh": {
+ "english_name": "Karok"
+ },
+ "kyi": {
+ "english_name": "Kiput"
+ },
+ "kyj": {
+ "english_name": "Karao"
+ },
+ "kyk": {
+ "english_name": "Kamayo"
+ },
+ "kyl": {
+ "english_name": "Kalapuya"
+ },
+ "kym": {
+ "english_name": "Kpatili"
+ },
+ "kyn": {
+ "english_name": "Binukidnon, Northern"
+ },
+ "kyo": {
+ "english_name": "Kelon"
+ },
+ "kyp": {
+ "english_name": "Kang"
+ },
+ "kyq": {
+ "english_name": "Kenga"
+ },
+ "kyr": {
+ "english_name": "Kuru\u00e1ya"
+ },
+ "kys": {
+ "english_name": "Kayan, Baram"
+ },
+ "kyt": {
+ "english_name": "Kayagar"
+ },
+ "kyu": {
+ "english_name": "Kayah, Western"
+ },
+ "kyv": {
+ "english_name": "Kayort"
+ },
+ "kyw": {
+ "english_name": "Kudmali"
+ },
+ "kyx": {
+ "english_name": "Rapoisi"
+ },
+ "kyy": {
+ "english_name": "Kambaira"
+ },
+ "kyz": {
+ "english_name": "Kayab\u00ed"
+ },
+ "kza": {
+ "english_name": "Karaboro, Western"
+ },
+ "kzb": {
+ "english_name": "Kaibobo"
+ },
+ "kzc": {
+ "english_name": "Kulango, Bondoukou"
+ },
+ "kzd": {
+ "english_name": "Kadai"
+ },
+ "kze": {
+ "english_name": "Kosena"
+ },
+ "kzf": {
+ "english_name": "Kaili, Da'a"
+ },
+ "kzg": {
+ "english_name": "Kikai"
+ },
+ "kzi": {
+ "english_name": "Kelabit"
+ },
+ "kzj": {
+ "english_name": "Kadazan, Coastal"
+ },
+ "kzk": {
+ "english_name": "Kazukuru"
+ },
+ "kzl": {
+ "english_name": "Kayeli"
+ },
+ "kzm": {
+ "english_name": "Kais"
+ },
+ "kzn": {
+ "english_name": "Kokola"
+ },
+ "kzo": {
+ "english_name": "Kaningi"
+ },
+ "kzp": {
+ "english_name": "Kaidipang"
+ },
+ "kzq": {
+ "english_name": "Kaike"
+ },
+ "kzr": {
+ "english_name": "Karang"
+ },
+ "kzs": {
+ "english_name": "Dusun, Sugut"
+ },
+ "kzt": {
+ "english_name": "Dusun, Tambunan"
+ },
+ "kzu": {
+ "english_name": "Kayupulau"
+ },
+ "kzv": {
+ "english_name": "Komyandaret"
+ },
+ "kzw": {
+ "english_name": "Karir\u00ed-Xoc\u00f3"
+ },
+ "kzx": {
+ "english_name": "Kamarian"
+ },
+ "kzy": {
+ "english_name": "Kango (Tshopo District)"
+ },
+ "kzz": {
+ "english_name": "Kalabra"
+ },
+ "la": {
+ "english_name": "Latin"
+ },
+ "laa": {
+ "english_name": "Subanen, Southern"
+ },
+ "lab": {
+ "english_name": "Linear A"
+ },
+ "lac": {
+ "english_name": "Lacandon"
+ },
+ "lad": {
+ "english_name": "Ladino"
+ },
+ "lae": {
+ "english_name": "Pattani"
+ },
+ "laf": {
+ "english_name": "Lafofa"
+ },
+ "lag": {
+ "english_name": "Langi"
+ },
+ "lah": {
+ "english_name": "Lahnda"
+ },
+ "lai": {
+ "english_name": "Lambya"
+ },
+ "laj": {
+ "english_name": "Lango (Uganda)"
+ },
+ "lak": {
+ "english_name": "Laka (Nigeria)"
+ },
+ "lal": {
+ "english_name": "Lalia"
+ },
+ "lam": {
+ "english_name": "Lamba"
+ },
+ "lan": {
+ "english_name": "Laru"
+ },
+ "lap": {
+ "english_name": "Laka (Chad)"
+ },
+ "laq": {
+ "english_name": "Qabiao"
+ },
+ "lar": {
+ "english_name": "Larteh"
+ },
+ "las": {
+ "english_name": "Lama (Togo)"
+ },
+ "lau": {
+ "english_name": "Laba"
+ },
+ "law": {
+ "english_name": "Lauje"
+ },
+ "lax": {
+ "english_name": "Tiwa"
+ },
+ "lay": {
+ "english_name": "Lama (Myanmar)"
+ },
+ "laz": {
+ "english_name": "Aribwatsa"
+ },
+ "lb": {
+ "english_name": "Luxembourgish"
+ },
+ "lba": {
+ "english_name": "Lui"
+ },
+ "lbb": {
+ "english_name": "Label"
+ },
+ "lbc": {
+ "english_name": "Lakkia"
+ },
+ "lbe": {
+ "english_name": "Lak"
+ },
+ "lbf": {
+ "english_name": "Tinani"
+ },
+ "lbg": {
+ "english_name": "Laopang"
+ },
+ "lbi": {
+ "english_name": "La'bi"
+ },
+ "lbj": {
+ "english_name": "Ladakhi"
+ },
+ "lbk": {
+ "english_name": "Bontok, Central"
+ },
+ "lbl": {
+ "english_name": "Bikol, Libon"
+ },
+ "lbm": {
+ "english_name": "Lodhi"
+ },
+ "lbn": {
+ "english_name": "Lamet"
+ },
+ "lbo": {
+ "english_name": "Laven"
+ },
+ "lbq": {
+ "english_name": "Wampar"
+ },
+ "lbr": {
+ "english_name": "Lohorung"
+ },
+ "lbs": {
+ "english_name": "Libyan Sign Language"
+ },
+ "lbt": {
+ "english_name": "Lachi"
+ },
+ "lbu": {
+ "english_name": "Labu"
+ },
+ "lbv": {
+ "english_name": "Lavatbura-Lamusong"
+ },
+ "lbw": {
+ "english_name": "Tolaki"
+ },
+ "lbx": {
+ "english_name": "Lawangan"
+ },
+ "lby": {
+ "english_name": "Lamu-Lamu"
+ },
+ "lbz": {
+ "english_name": "Lardil"
+ },
+ "lcc": {
+ "english_name": "Legenyem"
+ },
+ "lcd": {
+ "english_name": "Lola"
+ },
+ "lce": {
+ "english_name": "Loncong"
+ },
+ "lcf": {
+ "english_name": "Lubu"
+ },
+ "lch": {
+ "english_name": "Luchazi"
+ },
+ "lcl": {
+ "english_name": "Lisela"
+ },
+ "lcm": {
+ "english_name": "Tungag"
+ },
+ "lcp": {
+ "english_name": "Lawa, Western"
+ },
+ "lcq": {
+ "english_name": "Luhu"
+ },
+ "lcs": {
+ "english_name": "Lisabata-Nuniali"
+ },
+ "lda": {
+ "english_name": "Kla-Dan"
+ },
+ "ldb": {
+ "english_name": "Du\u0303ya"
+ },
+ "ldd": {
+ "english_name": "Luri"
+ },
+ "ldg": {
+ "english_name": "Lenyima"
+ },
+ "ldh": {
+ "english_name": "Lamja-Dengsa-Tola"
+ },
+ "ldi": {
+ "english_name": "Laari"
+ },
+ "ldj": {
+ "english_name": "Lemoro"
+ },
+ "ldk": {
+ "english_name": "Leelau"
+ },
+ "ldl": {
+ "english_name": "Kaan"
+ },
+ "ldm": {
+ "english_name": "Landoma"
+ },
+ "ldn": {
+ "english_name": "L\u00e1adan"
+ },
+ "ldo": {
+ "english_name": "Loo"
+ },
+ "ldp": {
+ "english_name": "Tso"
+ },
+ "ldq": {
+ "english_name": "Lufu"
+ },
+ "lea": {
+ "english_name": "Lega-Shabunda"
+ },
+ "leb": {
+ "english_name": "Lala-Bisa"
+ },
+ "lec": {
+ "english_name": "Leco"
+ },
+ "led": {
+ "english_name": "Lendu"
+ },
+ "lee": {
+ "english_name": "Ly\u00e9l\u00e9"
+ },
+ "lef": {
+ "english_name": "Lelemi"
+ },
+ "leh": {
+ "english_name": "Lenje"
+ },
+ "lei": {
+ "english_name": "Lemio"
+ },
+ "lej": {
+ "english_name": "Lengola"
+ },
+ "lek": {
+ "english_name": "Leipon"
+ },
+ "lel": {
+ "english_name": "Lele (Democratic Republic of Congo)"
+ },
+ "lem": {
+ "english_name": "Nomaande"
+ },
+ "len": {
+ "english_name": "Lenca"
+ },
+ "leo": {
+ "english_name": "Leti (Cameroon)"
+ },
+ "lep": {
+ "english_name": "Lepcha"
+ },
+ "leq": {
+ "english_name": "Lembena"
+ },
+ "ler": {
+ "english_name": "Lenkau"
+ },
+ "les": {
+ "english_name": "Lese"
+ },
+ "let": {
+ "english_name": "Lesing-Gelimi"
+ },
+ "leu": {
+ "english_name": "Kara (Papua New Guinea)"
+ },
+ "lev": {
+ "english_name": "Lamma"
+ },
+ "lew": {
+ "english_name": "Kaili, Ledo"
+ },
+ "lex": {
+ "english_name": "Luang"
+ },
+ "ley": {
+ "english_name": "Lemolang"
+ },
+ "lez": {
+ "english_name": "Lezghian"
+ },
+ "lfa": {
+ "english_name": "Lefa"
+ },
+ "lfn": {
+ "english_name": "Lingua Franca Nova"
+ },
+ "lg": {
+ "english_name": "Ganda"
+ },
+ "lga": {
+ "english_name": "Lungga"
+ },
+ "lgb": {
+ "english_name": "Laghu"
+ },
+ "lgg": {
+ "english_name": "Lugbara"
+ },
+ "lgh": {
+ "english_name": "Laghuu"
+ },
+ "lgi": {
+ "english_name": "Lengilu"
+ },
+ "lgk": {
+ "english_name": "Lingarak"
+ },
+ "lgl": {
+ "english_name": "Wala"
+ },
+ "lgm": {
+ "english_name": "Lega-Mwenga"
+ },
+ "lgn": {
+ "english_name": "Opuuo"
+ },
+ "lgq": {
+ "english_name": "Logba"
+ },
+ "lgr": {
+ "english_name": "Lengo"
+ },
+ "lgt": {
+ "english_name": "Pahi"
+ },
+ "lgu": {
+ "english_name": "Longgu"
+ },
+ "lgz": {
+ "english_name": "Ligenza"
+ },
+ "lha": {
+ "english_name": "Laha (Viet Nam)"
+ },
+ "lhh": {
+ "english_name": "Laha (Indonesia)"
+ },
+ "lhi": {
+ "english_name": "Lahu Shi"
+ },
+ "lhl": {
+ "english_name": "Lohar, Lahul"
+ },
+ "lhm": {
+ "english_name": "Lhomi"
+ },
+ "lhn": {
+ "english_name": "Lahanan"
+ },
+ "lhp": {
+ "english_name": "Lhokpu"
+ },
+ "lhs": {
+ "english_name": "Mlahs\u00f6"
+ },
+ "lht": {
+ "english_name": "Lo-Toga"
+ },
+ "lhu": {
+ "english_name": "Lahu"
+ },
+ "li": {
+ "english_name": "Limburgan"
+ },
+ "lia": {
+ "english_name": "Limba, West-Central"
+ },
+ "lib": {
+ "english_name": "Likum"
+ },
+ "lic": {
+ "english_name": "Hlai"
+ },
+ "lid": {
+ "english_name": "Nyindrou"
+ },
+ "lie": {
+ "english_name": "Likila"
+ },
+ "lif": {
+ "english_name": "Limbu"
+ },
+ "lig": {
+ "english_name": "Ligbi"
+ },
+ "lih": {
+ "english_name": "Lihir"
+ },
+ "lij": {
+ "english_name": "Ligurian"
+ },
+ "lik": {
+ "english_name": "Lika"
+ },
+ "lil": {
+ "english_name": "Lillooet"
+ },
+ "lio": {
+ "english_name": "Liki"
+ },
+ "lip": {
+ "english_name": "Sekpele"
+ },
+ "liq": {
+ "english_name": "Libido"
+ },
+ "lir": {
+ "english_name": "English, Liberian"
+ },
+ "lis": {
+ "english_name": "Lisu"
+ },
+ "liu": {
+ "english_name": "Logorik"
+ },
+ "liv": {
+ "english_name": "Liv"
+ },
+ "liw": {
+ "english_name": "Col"
+ },
+ "lix": {
+ "english_name": "Liabuku"
+ },
+ "liy": {
+ "english_name": "Banda-Bambari"
+ },
+ "liz": {
+ "english_name": "Libinza"
+ },
+ "lja": {
+ "english_name": "Golpa"
+ },
+ "lje": {
+ "english_name": "Rampi"
+ },
+ "lji": {
+ "english_name": "Laiyolo"
+ },
+ "ljl": {
+ "english_name": "Li'o"
+ },
+ "ljp": {
+ "english_name": "Lampung Api"
+ },
+ "ljw": {
+ "english_name": "Yirandali"
+ },
+ "ljx": {
+ "english_name": "Yuru"
+ },
+ "lka": {
+ "english_name": "Lakalei"
+ },
+ "lkb": {
+ "english_name": "Kabras"
+ },
+ "lkc": {
+ "english_name": "Kucong"
+ },
+ "lkd": {
+ "english_name": "Lakond\u00ea"
+ },
+ "lke": {
+ "english_name": "Kenyi"
+ },
+ "lkh": {
+ "english_name": "Lakha"
+ },
+ "lki": {
+ "english_name": "Laki"
+ },
+ "lkj": {
+ "english_name": "Remun"
+ },
+ "lkl": {
+ "english_name": "Laeko-Libuat"
+ },
+ "lkm": {
+ "english_name": "Kalaamaya"
+ },
+ "lkn": {
+ "english_name": "Lakon"
+ },
+ "lko": {
+ "english_name": "Khayo"
+ },
+ "lkr": {
+ "english_name": "P\u00e4ri"
+ },
+ "lks": {
+ "english_name": "Kisa"
+ },
+ "lkt": {
+ "english_name": "Lakota"
+ },
+ "lku": {
+ "english_name": "Kungkari"
+ },
+ "lky": {
+ "english_name": "Lokoya"
+ },
+ "lla": {
+ "english_name": "Lala-Roba"
+ },
+ "llb": {
+ "english_name": "Lolo"
+ },
+ "llc": {
+ "english_name": "Lele (Guinea)"
+ },
+ "lld": {
+ "english_name": "Ladin"
+ },
+ "lle": {
+ "english_name": "Lele (Papua New Guinea)"
+ },
+ "llf": {
+ "english_name": "Hermit"
+ },
+ "llg": {
+ "english_name": "Lole"
+ },
+ "llh": {
+ "english_name": "Lamu"
+ },
+ "lli": {
+ "english_name": "Teke-Laali"
+ },
+ "llj": {
+ "english_name": "Ladji Ladji"
+ },
+ "llk": {
+ "english_name": "Lelak"
+ },
+ "lll": {
+ "english_name": "Lilau"
+ },
+ "llm": {
+ "english_name": "Lasalimu"
+ },
+ "lln": {
+ "english_name": "Lele (Chad)"
+ },
+ "llo": {
+ "english_name": "Khlor"
+ },
+ "llp": {
+ "english_name": "Efate, North"
+ },
+ "llq": {
+ "english_name": "Lolak"
+ },
+ "lls": {
+ "english_name": "Lithuanian Sign Language"
+ },
+ "llu": {
+ "english_name": "Lau"
+ },
+ "llx": {
+ "english_name": "Lauan"
+ },
+ "lma": {
+ "english_name": "Limba, East"
+ },
+ "lmb": {
+ "english_name": "Merei"
+ },
+ "lmc": {
+ "english_name": "Limilngan"
+ },
+ "lmd": {
+ "english_name": "Lumun"
+ },
+ "lme": {
+ "english_name": "P\u00e9v\u00e9"
+ },
+ "lmf": {
+ "english_name": "Lembata, South"
+ },
+ "lmg": {
+ "english_name": "Lamogai"
+ },
+ "lmh": {
+ "english_name": "Lambichhong"
+ },
+ "lmi": {
+ "english_name": "Lombi"
+ },
+ "lmj": {
+ "english_name": "Lembata, West"
+ },
+ "lmk": {
+ "english_name": "Lamkang"
+ },
+ "lml": {
+ "english_name": "Hano"
+ },
+ "lmn": {
+ "english_name": "Lambadi"
+ },
+ "lmo": {
+ "english_name": "Lombard"
+ },
+ "lmp": {
+ "english_name": "Limbum"
+ },
+ "lmq": {
+ "english_name": "Lamatuka"
+ },
+ "lmr": {
+ "english_name": "Lamalera"
+ },
+ "lmu": {
+ "english_name": "Lamenu"
+ },
+ "lmv": {
+ "english_name": "Lomaiviti"
+ },
+ "lmw": {
+ "english_name": "Miwok, Lake"
+ },
+ "lmx": {
+ "english_name": "Laimbue"
+ },
+ "lmy": {
+ "english_name": "Lamboya"
+ },
+ "lmz": {
+ "english_name": "Lumbee"
+ },
+ "ln": {
+ "english_name": "Lingala"
+ },
+ "lna": {
+ "english_name": "Langbashe"
+ },
+ "lnb": {
+ "english_name": "Mbalanhu"
+ },
+ "lnd": {
+ "english_name": "Lundayeh"
+ },
+ "lng": {
+ "english_name": "Langobardic"
+ },
+ "lnh": {
+ "english_name": "Lanoh"
+ },
+ "lni": {
+ "english_name": "Daantanai'"
+ },
+ "lnj": {
+ "english_name": "Leningitij"
+ },
+ "lnl": {
+ "english_name": "Banda, South Central"
+ },
+ "lnm": {
+ "english_name": "Langam"
+ },
+ "lnn": {
+ "english_name": "Lorediakarkar"
+ },
+ "lno": {
+ "english_name": "Lango (Sudan)"
+ },
+ "lns": {
+ "english_name": "Lamnso'"
+ },
+ "lnu": {
+ "english_name": "Longuda"
+ },
+ "lnw": {
+ "english_name": "Lanima"
+ },
+ "lnz": {
+ "english_name": "Lonzo"
+ },
+ "lo": {
+ "english_name": "Lao"
+ },
+ "loa": {
+ "english_name": "Loloda"
+ },
+ "lob": {
+ "english_name": "Lobi"
+ },
+ "loc": {
+ "english_name": "Inonhan"
+ },
+ "loe": {
+ "english_name": "Saluan"
+ },
+ "lof": {
+ "english_name": "Logol"
+ },
+ "log": {
+ "english_name": "Logo"
+ },
+ "loh": {
+ "english_name": "Narim"
+ },
+ "loi": {
+ "english_name": "Loma (C\u00f4te d'Ivoire)"
+ },
+ "loj": {
+ "english_name": "Lou"
+ },
+ "lok": {
+ "english_name": "Loko"
+ },
+ "lol": {
+ "english_name": "Mongo"
+ },
+ "lom": {
+ "english_name": "Loma (Liberia)"
+ },
+ "lon": {
+ "english_name": "Lomwe, Malawi"
+ },
+ "loo": {
+ "english_name": "Lombo"
+ },
+ "lop": {
+ "english_name": "Lopa"
+ },
+ "loq": {
+ "english_name": "Lobala"
+ },
+ "lor": {
+ "english_name": "T\u00e9\u00e9n"
+ },
+ "los": {
+ "english_name": "Loniu"
+ },
+ "lot": {
+ "english_name": "Otuho"
+ },
+ "lou": {
+ "english_name": "Creole French, Louisiana"
+ },
+ "lov": {
+ "english_name": "Lopi"
+ },
+ "low": {
+ "english_name": "Lobu, Tampias"
+ },
+ "lox": {
+ "english_name": "Loun"
+ },
+ "loy": {
+ "english_name": "Loke"
+ },
+ "loz": {
+ "english_name": "Lozi"
+ },
+ "lpa": {
+ "english_name": "Lelepa"
+ },
+ "lpe": {
+ "english_name": "Lepki"
+ },
+ "lpn": {
+ "english_name": "Naga, Long Phuri"
+ },
+ "lpo": {
+ "english_name": "Lipo"
+ },
+ "lpx": {
+ "english_name": "Lopit"
+ },
+ "lra": {
+ "english_name": "Rara Bakati'"
+ },
+ "lrc": {
+ "english_name": "Luri, Northern"
+ },
+ "lre": {
+ "english_name": "Laurentian"
+ },
+ "lrg": {
+ "english_name": "Laragia"
+ },
+ "lri": {
+ "english_name": "Marachi"
+ },
+ "lrk": {
+ "english_name": "Loarki"
+ },
+ "lrl": {
+ "english_name": "Lari"
+ },
+ "lrm": {
+ "english_name": "Marama"
+ },
+ "lrn": {
+ "english_name": "Lorang"
+ },
+ "lro": {
+ "english_name": "Laro"
+ },
+ "lrr": {
+ "english_name": "Yamphu, Southern"
+ },
+ "lrt": {
+ "english_name": "Malay, Larantuka"
+ },
+ "lrv": {
+ "english_name": "Larevat"
+ },
+ "lrz": {
+ "english_name": "Lemerig"
+ },
+ "lsa": {
+ "english_name": "Lasgerdi"
+ },
+ "lsd": {
+ "english_name": "Lishana Deni"
+ },
+ "lse": {
+ "english_name": "Lusengo"
+ },
+ "lsg": {
+ "english_name": "Lyons Sign Language"
+ },
+ "lsh": {
+ "english_name": "Lish"
+ },
+ "lsi": {
+ "english_name": "Lashi"
+ },
+ "lsl": {
+ "english_name": "Latvian Sign Language"
+ },
+ "lsm": {
+ "english_name": "Saamia"
+ },
+ "lso": {
+ "english_name": "Laos Sign Language"
+ },
+ "lsp": {
+ "english_name": "Panamanian Sign Language"
+ },
+ "lsr": {
+ "english_name": "Aruop"
+ },
+ "lss": {
+ "english_name": "Lasi"
+ },
+ "lst": {
+ "english_name": "Trinidad and Tobago Sign Language"
+ },
+ "lsy": {
+ "english_name": "Mauritian Sign Language"
+ },
+ "lt": {
+ "english_name": "Lithuanian",
+ "name": "Lietuvi\u0173"
+ },
+ "ltc": {
+ "english_name": "Chinese, Late Middle"
+ },
+ "ltg": {
+ "english_name": "Latgalian"
+ },
+ "lti": {
+ "english_name": "Leti (Indonesia)"
+ },
+ "ltn": {
+ "english_name": "Latund\u00ea"
+ },
+ "lto": {
+ "english_name": "Tsotso"
+ },
+ "lts": {
+ "english_name": "Tachoni"
+ },
+ "ltu": {
+ "english_name": "Latu"
+ },
+ "lu": {
+ "english_name": "Luba-Katanga"
+ },
+ "lua": {
+ "english_name": "Luba-Lulua"
+ },
+ "luc": {
+ "english_name": "Aringa"
+ },
+ "lud": {
+ "english_name": "Ludian"
+ },
+ "lue": {
+ "english_name": "Luvale"
+ },
+ "luf": {
+ "english_name": "Laua"
+ },
+ "lui": {
+ "english_name": "Luiseno"
+ },
+ "luj": {
+ "english_name": "Luna"
+ },
+ "luk": {
+ "english_name": "Lunanakha"
+ },
+ "lul": {
+ "english_name": "Olu'bo"
+ },
+ "lum": {
+ "english_name": "Luimbi"
+ },
+ "lun": {
+ "english_name": "Lunda"
+ },
+ "luo": {
+ "english_name": "Luo (Kenya and Tanzania)"
+ },
+ "lup": {
+ "english_name": "Lumbu"
+ },
+ "luq": {
+ "english_name": "Lucumi"
+ },
+ "lur": {
+ "english_name": "Laura"
+ },
+ "lus": {
+ "english_name": "Lushai"
+ },
+ "lut": {
+ "english_name": "Lushootseed"
+ },
+ "luu": {
+ "english_name": "Lumba-Yakkha"
+ },
+ "luv": {
+ "english_name": "Luwati"
+ },
+ "luw": {
+ "english_name": "Luo (Cameroon)"
+ },
+ "luy": {
+ "english_name": "Luyia"
+ },
+ "luz": {
+ "english_name": "Luri, Southern"
+ },
+ "lv": {
+ "english_name": "Latvian",
+ "name": "Latvie\u0161u"
+ },
+ "lva": {
+ "english_name": "Maku'a"
+ },
+ "lvk": {
+ "english_name": "Lavukaleve"
+ },
+ "lvs": {
+ "english_name": "Latvian, Standard"
+ },
+ "lvu": {
+ "english_name": "Levuka"
+ },
+ "lwa": {
+ "english_name": "Lwalu"
+ },
+ "lwe": {
+ "english_name": "Lewo Eleng"
+ },
+ "lwg": {
+ "english_name": "Wanga"
+ },
+ "lwh": {
+ "english_name": "Lachi, White"
+ },
+ "lwl": {
+ "english_name": "Lawa, Eastern"
+ },
+ "lwm": {
+ "english_name": "Laomian"
+ },
+ "lwo": {
+ "english_name": "Luwo"
+ },
+ "lwt": {
+ "english_name": "Lewotobi"
+ },
+ "lwu": {
+ "english_name": "Lawu"
+ },
+ "lww": {
+ "english_name": "Lewo"
+ },
+ "lya": {
+ "english_name": "Layakha"
+ },
+ "lyg": {
+ "english_name": "Lyngngam"
+ },
+ "lyn": {
+ "english_name": "Luyana"
+ },
+ "lzh": {
+ "english_name": "Chinese, Literary"
+ },
+ "lzl": {
+ "english_name": "Litzlitz"
+ },
+ "lzn": {
+ "english_name": "Naga, Leinong"
+ },
+ "lzz": {
+ "english_name": "Laz"
+ },
+ "maa": {
+ "english_name": "Mazatec, San Jer\u00f3nimo Tec\u00f3atl"
+ },
+ "mab": {
+ "english_name": "Mixtec, Yutanduchi"
+ },
+ "mad": {
+ "english_name": "Madurese"
+ },
+ "mae": {
+ "english_name": "Bo-Rukul"
+ },
+ "maf": {
+ "english_name": "Mafa"
+ },
+ "mag": {
+ "english_name": "Magahi"
+ },
+ "mai": {
+ "english_name": "Maithili"
+ },
+ "maj": {
+ "english_name": "Mazatec, Jalapa De D\u00edaz"
+ },
+ "mak": {
+ "english_name": "Makasar"
+ },
+ "mam": {
+ "english_name": "Mam"
+ },
+ "man": {
+ "english_name": "Mandingo"
+ },
+ "maq": {
+ "english_name": "Mazatec, Chiquihuitl\u00e1n"
+ },
+ "mas": {
+ "english_name": "Masai"
+ },
+ "mat": {
+ "english_name": "Matlatzinca, San Francisco"
+ },
+ "mau": {
+ "english_name": "Mazatec, Huautla"
+ },
+ "mav": {
+ "english_name": "Sater\u00e9-Maw\u00e9"
+ },
+ "maw": {
+ "english_name": "Mampruli"
+ },
+ "max": {
+ "english_name": "Malay, North Moluccan"
+ },
+ "maz": {
+ "english_name": "Mazahua, Central"
+ },
+ "mba": {
+ "english_name": "Higaonon"
+ },
+ "mbb": {
+ "english_name": "Manobo, Western Bukidnon"
+ },
+ "mbc": {
+ "english_name": "Macushi"
+ },
+ "mbd": {
+ "english_name": "Manobo, Dibabawon"
+ },
+ "mbe": {
+ "english_name": "Molale"
+ },
+ "mbf": {
+ "english_name": "Malay, Baba"
+ },
+ "mbh": {
+ "english_name": "Mangseng"
+ },
+ "mbi": {
+ "english_name": "Manobo, Ilianen"
+ },
+ "mbj": {
+ "english_name": "Nad\u00ebb"
+ },
+ "mbk": {
+ "english_name": "Malol"
+ },
+ "mbl": {
+ "english_name": "Maxakal\u00ed"
+ },
+ "mbm": {
+ "english_name": "Ombamba"
+ },
+ "mbn": {
+ "english_name": "Macagu\u00e1n"
+ },
+ "mbo": {
+ "english_name": "Mbo (Cameroon)"
+ },
+ "mbp": {
+ "english_name": "Malayo"
+ },
+ "mbq": {
+ "english_name": "Maisin"
+ },
+ "mbr": {
+ "english_name": "Nukak Mak\u00fa"
+ },
+ "mbs": {
+ "english_name": "Manobo, Sarangani"
+ },
+ "mbt": {
+ "english_name": "Manobo, Matigsalug"
+ },
+ "mbu": {
+ "english_name": "Mbula-Bwazza"
+ },
+ "mbv": {
+ "english_name": "Mbulungish"
+ },
+ "mbw": {
+ "english_name": "Maring"
+ },
+ "mbx": {
+ "english_name": "Mari (East Sepik Province)"
+ },
+ "mby": {
+ "english_name": "Memoni"
+ },
+ "mbz": {
+ "english_name": "Mixtec, Amoltepec"
+ },
+ "mca": {
+ "english_name": "Maca"
+ },
+ "mcb": {
+ "english_name": "Machiguenga"
+ },
+ "mcc": {
+ "english_name": "Bitur"
+ },
+ "mcd": {
+ "english_name": "Sharanahua"
+ },
+ "mce": {
+ "english_name": "Mixtec, Itundujia"
+ },
+ "mcf": {
+ "english_name": "Mats\u00e9s"
+ },
+ "mcg": {
+ "english_name": "Mapoyo"
+ },
+ "mch": {
+ "english_name": "Maquiritari"
+ },
+ "mci": {
+ "english_name": "Mese"
+ },
+ "mcj": {
+ "english_name": "Mvanip"
+ },
+ "mck": {
+ "english_name": "Mbunda"
+ },
+ "mcl": {
+ "english_name": "Macaguaje"
+ },
+ "mcm": {
+ "english_name": "Creole Portuguese, Malaccan"
+ },
+ "mcn": {
+ "english_name": "Masana"
+ },
+ "mco": {
+ "english_name": "Mixe, Coatl\u00e1n"
+ },
+ "mcp": {
+ "english_name": "Makaa"
+ },
+ "mcq": {
+ "english_name": "Ese"
+ },
+ "mcr": {
+ "english_name": "Menya"
+ },
+ "mcs": {
+ "english_name": "Mambai"
+ },
+ "mct": {
+ "english_name": "Mengisa"
+ },
+ "mcu": {
+ "english_name": "Mambila, Cameroon"
+ },
+ "mcv": {
+ "english_name": "Minanibai"
+ },
+ "mcw": {
+ "english_name": "Mawa (Chad)"
+ },
+ "mcx": {
+ "english_name": "Mpiemo"
+ },
+ "mcy": {
+ "english_name": "Watut, South"
+ },
+ "mcz": {
+ "english_name": "Mawan"
+ },
+ "mda": {
+ "english_name": "Mada (Nigeria)"
+ },
+ "mdb": {
+ "english_name": "Morigi"
+ },
+ "mdc": {
+ "english_name": "Male (Papua New Guinea)"
+ },
+ "mdd": {
+ "english_name": "Mbum"
+ },
+ "mde": {
+ "english_name": "Maba (Chad)"
+ },
+ "mdf": {
+ "english_name": "Moksha"
+ },
+ "mdg": {
+ "english_name": "Massalat"
+ },
+ "mdh": {
+ "english_name": "Maguindanaon"
+ },
+ "mdi": {
+ "english_name": "Mamvu"
+ },
+ "mdj": {
+ "english_name": "Mangbetu"
+ },
+ "mdk": {
+ "english_name": "Mangbutu"
+ },
+ "mdl": {
+ "english_name": "Maltese Sign Language"
+ },
+ "mdm": {
+ "english_name": "Mayogo"
+ },
+ "mdn": {
+ "english_name": "Mbati"
+ },
+ "mdp": {
+ "english_name": "Mbala"
+ },
+ "mdq": {
+ "english_name": "Mbole"
+ },
+ "mdr": {
+ "english_name": "Mandar"
+ },
+ "mds": {
+ "english_name": "Maria (Papua New Guinea)"
+ },
+ "mdt": {
+ "english_name": "Mbere"
+ },
+ "mdu": {
+ "english_name": "Mboko"
+ },
+ "mdv": {
+ "english_name": "Mixtec, Santa Luc\u00eda Monteverde"
+ },
+ "mdw": {
+ "english_name": "Mbosi"
+ },
+ "mdx": {
+ "english_name": "Dizin"
+ },
+ "mdy": {
+ "english_name": "Male (Ethiopia)"
+ },
+ "mdz": {
+ "english_name": "Suru\u00ed Do Par\u00e1"
+ },
+ "mea": {
+ "english_name": "Menka"
+ },
+ "meb": {
+ "english_name": "Ikobi"
+ },
+ "mec": {
+ "english_name": "Mara"
+ },
+ "med": {
+ "english_name": "Melpa"
+ },
+ "mee": {
+ "english_name": "Mengen"
+ },
+ "mef": {
+ "english_name": "Megam"
+ },
+ "meh": {
+ "english_name": "Mixtec, Southwestern Tlaxiaco"
+ },
+ "mei": {
+ "english_name": "Midob"
+ },
+ "mej": {
+ "english_name": "Meyah"
+ },
+ "mek": {
+ "english_name": "Mekeo"
+ },
+ "mel": {
+ "english_name": "Melanau, Central"
+ },
+ "mem": {
+ "english_name": "Mangala"
+ },
+ "men": {
+ "english_name": "Mende (Sierra Leone)"
+ },
+ "meo": {
+ "english_name": "Malay, Kedah"
+ },
+ "mep": {
+ "english_name": "Miriwung"
+ },
+ "meq": {
+ "english_name": "Merey"
+ },
+ "mer": {
+ "english_name": "Meru"
+ },
+ "mes": {
+ "english_name": "Masmaje"
+ },
+ "met": {
+ "english_name": "Mato"
+ },
+ "meu": {
+ "english_name": "Motu"
+ },
+ "mev": {
+ "english_name": "Mano"
+ },
+ "mew": {
+ "english_name": "Maaka"
+ },
+ "mey": {
+ "english_name": "Hassaniyya"
+ },
+ "mez": {
+ "english_name": "Menominee"
+ },
+ "mfa": {
+ "english_name": "Malay, Pattani"
+ },
+ "mfb": {
+ "english_name": "Bangka"
+ },
+ "mfc": {
+ "english_name": "Mba"
+ },
+ "mfd": {
+ "english_name": "Mendankwe-Nkwen"
+ },
+ "mfe": {
+ "english_name": "Morisyen"
+ },
+ "mff": {
+ "english_name": "Naki"
+ },
+ "mfg": {
+ "english_name": "Mogofin"
+ },
+ "mfh": {
+ "english_name": "Matal"
+ },
+ "mfi": {
+ "english_name": "Wandala"
+ },
+ "mfj": {
+ "english_name": "Mefele"
+ },
+ "mfk": {
+ "english_name": "Mofu, North"
+ },
+ "mfl": {
+ "english_name": "Putai"
+ },
+ "mfm": {
+ "english_name": "Marghi South"
+ },
+ "mfn": {
+ "english_name": "Mbembe, Cross River"
+ },
+ "mfo": {
+ "english_name": "Mbe"
+ },
+ "mfp": {
+ "english_name": "Malay, Makassar"
+ },
+ "mfq": {
+ "english_name": "Moba"
+ },
+ "mfr": {
+ "english_name": "Marithiel"
+ },
+ "mfs": {
+ "english_name": "Mexican Sign Language"
+ },
+ "mft": {
+ "english_name": "Mokerang"
+ },
+ "mfu": {
+ "english_name": "Mbwela"
+ },
+ "mfv": {
+ "english_name": "Mandjak"
+ },
+ "mfw": {
+ "english_name": "Mulaha"
+ },
+ "mfx": {
+ "english_name": "Melo"
+ },
+ "mfy": {
+ "english_name": "Mayo"
+ },
+ "mfz": {
+ "english_name": "Mabaan"
+ },
+ "mg": {
+ "english_name": "Malagasy"
+ },
+ "mga": {
+ "english_name": "Irish, Middle (900-1200)"
+ },
+ "mgb": {
+ "english_name": "Mararit"
+ },
+ "mgc": {
+ "english_name": "Morokodo"
+ },
+ "mgd": {
+ "english_name": "Moru"
+ },
+ "mge": {
+ "english_name": "Mango"
+ },
+ "mgf": {
+ "english_name": "Maklew"
+ },
+ "mgg": {
+ "english_name": "Mpumpong"
+ },
+ "mgh": {
+ "english_name": "Makhuwa-Meetto"
+ },
+ "mgi": {
+ "english_name": "Lijili"
+ },
+ "mgj": {
+ "english_name": "Abureni"
+ },
+ "mgk": {
+ "english_name": "Mawes"
+ },
+ "mgl": {
+ "english_name": "Maleu-Kilenge"
+ },
+ "mgm": {
+ "english_name": "Mambae"
+ },
+ "mgn": {
+ "english_name": "Mbangi"
+ },
+ "mgo": {
+ "english_name": "Meta'"
+ },
+ "mgp": {
+ "english_name": "Magar, Eastern"
+ },
+ "mgq": {
+ "english_name": "Malila"
+ },
+ "mgr": {
+ "english_name": "Mambwe-Lungu"
+ },
+ "mgs": {
+ "english_name": "Manda (Tanzania)"
+ },
+ "mgt": {
+ "english_name": "Mongol"
+ },
+ "mgu": {
+ "english_name": "Mailu"
+ },
+ "mgv": {
+ "english_name": "Matengo"
+ },
+ "mgw": {
+ "english_name": "Matumbi"
+ },
+ "mgy": {
+ "english_name": "Mbunga"
+ },
+ "mgz": {
+ "english_name": "Mbugwe"
+ },
+ "mh": {
+ "english_name": "Marshallese"
+ },
+ "mha": {
+ "english_name": "Manda (India)"
+ },
+ "mhb": {
+ "english_name": "Mahongwe"
+ },
+ "mhc": {
+ "english_name": "Mocho"
+ },
+ "mhd": {
+ "english_name": "Mbugu"
+ },
+ "mhe": {
+ "english_name": "Besisi"
+ },
+ "mhf": {
+ "english_name": "Mamaa"
+ },
+ "mhg": {
+ "english_name": "Margu"
+ },
+ "mhi": {
+ "english_name": "Ma'di"
+ },
+ "mhj": {
+ "english_name": "Mogholi"
+ },
+ "mhk": {
+ "english_name": "Mungaka"
+ },
+ "mhl": {
+ "english_name": "Mauwake"
+ },
+ "mhm": {
+ "english_name": "Makhuwa-Moniga"
+ },
+ "mhn": {
+ "english_name": "M\u00f3cheno"
+ },
+ "mho": {
+ "english_name": "Mashi (Zambia)"
+ },
+ "mhp": {
+ "english_name": "Malay, Balinese"
+ },
+ "mhq": {
+ "english_name": "Mandan"
+ },
+ "mhr": {
+ "english_name": "Mari, Eastern"
+ },
+ "mhs": {
+ "english_name": "Buru (Indonesia)"
+ },
+ "mht": {
+ "english_name": "Mandahuaca"
+ },
+ "mhu": {
+ "english_name": "Digaro-Mishmi"
+ },
+ "mhw": {
+ "english_name": "Mbukushu"
+ },
+ "mhx": {
+ "english_name": "Maru"
+ },
+ "mhy": {
+ "english_name": "Ma'anyan"
+ },
+ "mhz": {
+ "english_name": "Mor (Mor Islands)"
+ },
+ "mi": {
+ "english_name": "Maori",
+ "name": "Reo M\u0101ori"
+ },
+ "mia": {
+ "english_name": "Miami"
+ },
+ "mib": {
+ "english_name": "Mixtec, Atatl\u00e1huca"
+ },
+ "mic": {
+ "english_name": "Mi'kmaq"
+ },
+ "mid": {
+ "english_name": "Mandaic"
+ },
+ "mie": {
+ "english_name": "Mixtec, Ocotepec"
+ },
+ "mif": {
+ "english_name": "Mofu-Gudur"
+ },
+ "mig": {
+ "english_name": "Mixtec, San Miguel El Grande"
+ },
+ "mih": {
+ "english_name": "Mixtec, Chayuco"
+ },
+ "mii": {
+ "english_name": "Mixtec, Chigmecatitl\u00e1n"
+ },
+ "mij": {
+ "english_name": "Abar"
+ },
+ "mik": {
+ "english_name": "Mikasuki"
+ },
+ "mil": {
+ "english_name": "Mixtec, Pe\u00f1oles"
+ },
+ "mim": {
+ "english_name": "Mixtec, Alacatlatzala"
+ },
+ "min": {
+ "english_name": "Minangkabau"
+ },
+ "mio": {
+ "english_name": "Mixtec, Pinotepa Nacional"
+ },
+ "mip": {
+ "english_name": "Mixtec, Apasco-Apoala"
+ },
+ "miq": {
+ "english_name": "M\u00edskito"
+ },
+ "mir": {
+ "english_name": "Mixe, Isthmus"
+ },
+ "mis": {
+ "english_name": "Uncoded languages"
+ },
+ "mit": {
+ "english_name": "Mixtec, Southern Puebla"
+ },
+ "miu": {
+ "english_name": "Mixtec, Cacaloxtepec"
+ },
+ "miw": {
+ "english_name": "Akoye"
+ },
+ "mix": {
+ "english_name": "Mixtec, Mixtepec"
+ },
+ "miy": {
+ "english_name": "Mixtec, Ayutla"
+ },
+ "miz": {
+ "english_name": "Mixtec, Coatzospan"
+ },
+ "mjc": {
+ "english_name": "Mixtec, San Juan Colorado"
+ },
+ "mjd": {
+ "english_name": "Maidu, Northwest"
+ },
+ "mje": {
+ "english_name": "Muskum"
+ },
+ "mjg": {
+ "english_name": "Tu"
+ },
+ "mjh": {
+ "english_name": "Mwera (Nyasa)"
+ },
+ "mji": {
+ "english_name": "Kim Mun"
+ },
+ "mjj": {
+ "english_name": "Mawak"
+ },
+ "mjk": {
+ "english_name": "Matukar"
+ },
+ "mjl": {
+ "english_name": "Mandeali"
+ },
+ "mjm": {
+ "english_name": "Medebur"
+ },
+ "mjn": {
+ "english_name": "Ma (Papua New Guinea)"
+ },
+ "mjo": {
+ "english_name": "Malankuravan"
+ },
+ "mjp": {
+ "english_name": "Malapandaram"
+ },
+ "mjq": {
+ "english_name": "Malaryan"
+ },
+ "mjr": {
+ "english_name": "Malavedan"
+ },
+ "mjs": {
+ "english_name": "Miship"
+ },
+ "mjt": {
+ "english_name": "Sauria Paharia"
+ },
+ "mju": {
+ "english_name": "Manna-Dora"
+ },
+ "mjv": {
+ "english_name": "Mannan"
+ },
+ "mjw": {
+ "english_name": "Karbi"
+ },
+ "mjx": {
+ "english_name": "Mahali"
+ },
+ "mjy": {
+ "english_name": "Mahican"
+ },
+ "mjz": {
+ "english_name": "Majhi"
+ },
+ "mk": {
+ "english_name": "Macedonian",
+ "name": "\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438"
+ },
+ "mka": {
+ "english_name": "Mbre"
+ },
+ "mkb": {
+ "english_name": "Mal Paharia"
+ },
+ "mkc": {
+ "english_name": "Siliput"
+ },
+ "mke": {
+ "english_name": "Mawchi"
+ },
+ "mkf": {
+ "english_name": "Miya"
+ },
+ "mkg": {
+ "english_name": "Mak (China)"
+ },
+ "mki": {
+ "english_name": "Dhatki"
+ },
+ "mkj": {
+ "english_name": "Mokilese"
+ },
+ "mkk": {
+ "english_name": "Byep"
+ },
+ "mkl": {
+ "english_name": "Mokole"
+ },
+ "mkm": {
+ "english_name": "Moklen"
+ },
+ "mkn": {
+ "english_name": "Malay, Kupang"
+ },
+ "mko": {
+ "english_name": "Mingang Doso"
+ },
+ "mkp": {
+ "english_name": "Moikodi"
+ },
+ "mkq": {
+ "english_name": "Miwok, Bay"
+ },
+ "mkr": {
+ "english_name": "Malas"
+ },
+ "mks": {
+ "english_name": "Mixtec, Silacayoapan"
+ },
+ "mkt": {
+ "english_name": "Vamale"
+ },
+ "mku": {
+ "english_name": "Maninka, Konyanka"
+ },
+ "mkv": {
+ "english_name": "Mafea"
+ },
+ "mkw": {
+ "english_name": "Kituba (Congo)"
+ },
+ "mkx": {
+ "english_name": "Manobo, Kinamiging"
+ },
+ "mky": {
+ "english_name": "Makian, East"
+ },
+ "mkz": {
+ "english_name": "Makasae"
+ },
+ "ml": {
+ "english_name": "Malayalam"
+ },
+ "mla": {
+ "english_name": "Malo"
+ },
+ "mlb": {
+ "english_name": "Mbule"
+ },
+ "mlc": {
+ "english_name": "Cao Lan"
+ },
+ "mle": {
+ "english_name": "Manambu"
+ },
+ "mlf": {
+ "english_name": "Mal"
+ },
+ "mlh": {
+ "english_name": "Mape"
+ },
+ "mli": {
+ "english_name": "Malimpung"
+ },
+ "mlj": {
+ "english_name": "Miltu"
+ },
+ "mlk": {
+ "english_name": "Ilwana"
+ },
+ "mll": {
+ "english_name": "Malua Bay"
+ },
+ "mlm": {
+ "english_name": "Mulam"
+ },
+ "mln": {
+ "english_name": "Malango"
+ },
+ "mlo": {
+ "english_name": "Mlomp"
+ },
+ "mlp": {
+ "english_name": "Bargam"
+ },
+ "mlq": {
+ "english_name": "Maninkakan, Western"
+ },
+ "mlr": {
+ "english_name": "Vame"
+ },
+ "mls": {
+ "english_name": "Masalit"
+ },
+ "mlu": {
+ "english_name": "To'abaita"
+ },
+ "mlv": {
+ "english_name": "Motlav"
+ },
+ "mlw": {
+ "english_name": "Moloko"
+ },
+ "mlx": {
+ "english_name": "Malfaxal"
+ },
+ "mlz": {
+ "english_name": "Malaynon"
+ },
+ "mma": {
+ "english_name": "Mama"
+ },
+ "mmb": {
+ "english_name": "Momina"
+ },
+ "mmc": {
+ "english_name": "Mazahua, Michoac\u00e1n"
+ },
+ "mmd": {
+ "english_name": "Maonan"
+ },
+ "mme": {
+ "english_name": "Mae"
+ },
+ "mmf": {
+ "english_name": "Mundat"
+ },
+ "mmg": {
+ "english_name": "Ambrym, North"
+ },
+ "mmh": {
+ "english_name": "Mehin\u00e1ku"
+ },
+ "mmi": {
+ "english_name": "Musar"
+ },
+ "mmj": {
+ "english_name": "Majhwar"
+ },
+ "mmk": {
+ "english_name": "Mukha-Dora"
+ },
+ "mml": {
+ "english_name": "Man Met"
+ },
+ "mmm": {
+ "english_name": "Maii"
+ },
+ "mmn": {
+ "english_name": "Mamanwa"
+ },
+ "mmo": {
+ "english_name": "Buang, Mangga"
+ },
+ "mmp": {
+ "english_name": "Siawi"
+ },
+ "mmq": {
+ "english_name": "Musak"
+ },
+ "mmr": {
+ "english_name": "Miao, Western Xiangxi"
+ },
+ "mmt": {
+ "english_name": "Malalamai"
+ },
+ "mmu": {
+ "english_name": "Mmaala"
+ },
+ "mmv": {
+ "english_name": "Miriti"
+ },
+ "mmw": {
+ "english_name": "Emae"
+ },
+ "mmx": {
+ "english_name": "Madak"
+ },
+ "mmy": {
+ "english_name": "Migaama"
+ },
+ "mmz": {
+ "english_name": "Mabaale"
+ },
+ "mn": {
+ "english_name": "Mongolian",
+ "name": "\u041c\u043e\u043d\u0433\u043e\u043b"
+ },
+ "mna": {
+ "english_name": "Mbula"
+ },
+ "mnb": {
+ "english_name": "Muna"
+ },
+ "mnc": {
+ "english_name": "Manchu"
+ },
+ "mnd": {
+ "english_name": "Mond\u00e9"
+ },
+ "mne": {
+ "english_name": "Naba"
+ },
+ "mnf": {
+ "english_name": "Mundani"
+ },
+ "mng": {
+ "english_name": "Mnong, Eastern"
+ },
+ "mnh": {
+ "english_name": "Mono (Democratic Republic of Congo)"
+ },
+ "mni": {
+ "english_name": "Manipuri"
+ },
+ "mnj": {
+ "english_name": "Munji"
+ },
+ "mnk": {
+ "english_name": "Mandinka"
+ },
+ "mnl": {
+ "english_name": "Tiale"
+ },
+ "mnm": {
+ "english_name": "Mapena"
+ },
+ "mnn": {
+ "english_name": "Mnong, Southern"
+ },
+ "mnp": {
+ "english_name": "Chinese, Min Bei"
+ },
+ "mnq": {
+ "english_name": "Minriq"
+ },
+ "mnr": {
+ "english_name": "Mono (USA)"
+ },
+ "mns": {
+ "english_name": "Mansi"
+ },
+ "mnu": {
+ "english_name": "Mer"
+ },
+ "mnv": {
+ "english_name": "Rennell-Bellona"
+ },
+ "mnw": {
+ "english_name": "Mon"
+ },
+ "mnx": {
+ "english_name": "Manikion"
+ },
+ "mny": {
+ "english_name": "Manyawa"
+ },
+ "mnz": {
+ "english_name": "Moni"
+ },
+ "moa": {
+ "english_name": "Mwan"
+ },
+ "moc": {
+ "english_name": "Mocov\u00ed"
+ },
+ "mod": {
+ "english_name": "Mobilian"
+ },
+ "moe": {
+ "english_name": "Montagnais"
+ },
+ "mog": {
+ "english_name": "Mongondow"
+ },
+ "moh": {
+ "english_name": "Mohawk"
+ },
+ "moi": {
+ "english_name": "Mboi"
+ },
+ "moj": {
+ "english_name": "Monzombo"
+ },
+ "mok": {
+ "english_name": "Morori"
+ },
+ "mom": {
+ "english_name": "Mangue"
+ },
+ "moo": {
+ "english_name": "Monom"
+ },
+ "mop": {
+ "english_name": "Mop\u00e1n Maya"
+ },
+ "moq": {
+ "english_name": "Mor (Bomberai Peninsula)"
+ },
+ "mor": {
+ "english_name": "Moro"
+ },
+ "mos": {
+ "english_name": "Mossi"
+ },
+ "mot": {
+ "english_name": "Bar\u00ed"
+ },
+ "mou": {
+ "english_name": "Mogum"
+ },
+ "mov": {
+ "english_name": "Mohave"
+ },
+ "mow": {
+ "english_name": "Moi (Congo)"
+ },
+ "mox": {
+ "english_name": "Molima"
+ },
+ "moy": {
+ "english_name": "Shekkacho"
+ },
+ "moz": {
+ "english_name": "Mukulu"
+ },
+ "mpa": {
+ "english_name": "Mpoto"
+ },
+ "mpb": {
+ "english_name": "Mullukmulluk"
+ },
+ "mpc": {
+ "english_name": "Mangarayi"
+ },
+ "mpd": {
+ "english_name": "Machinere"
+ },
+ "mpe": {
+ "english_name": "Majang"
+ },
+ "mpg": {
+ "english_name": "Marba"
+ },
+ "mph": {
+ "english_name": "Maung"
+ },
+ "mpi": {
+ "english_name": "Mpade"
+ },
+ "mpj": {
+ "english_name": "Martu Wangka"
+ },
+ "mpk": {
+ "english_name": "Mbara (Chad)"
+ },
+ "mpl": {
+ "english_name": "Watut, Middle"
+ },
+ "mpm": {
+ "english_name": "Mixtec, Yosond\u00faa"
+ },
+ "mpn": {
+ "english_name": "Mindiri"
+ },
+ "mpo": {
+ "english_name": "Miu"
+ },
+ "mpp": {
+ "english_name": "Migabac"
+ },
+ "mpq": {
+ "english_name": "Mat\u00eds"
+ },
+ "mpr": {
+ "english_name": "Vangunu"
+ },
+ "mps": {
+ "english_name": "Dadibi"
+ },
+ "mpt": {
+ "english_name": "Mian"
+ },
+ "mpu": {
+ "english_name": "Makur\u00e1p"
+ },
+ "mpv": {
+ "english_name": "Mungkip"
+ },
+ "mpw": {
+ "english_name": "Mapidian"
+ },
+ "mpx": {
+ "english_name": "Misima-Panaeati"
+ },
+ "mpy": {
+ "english_name": "Mapia"
+ },
+ "mpz": {
+ "english_name": "Mpi"
+ },
+ "mqa": {
+ "english_name": "Maba (Indonesia)"
+ },
+ "mqb": {
+ "english_name": "Mbuko"
+ },
+ "mqc": {
+ "english_name": "Mangole"
+ },
+ "mqe": {
+ "english_name": "Matepi"
+ },
+ "mqf": {
+ "english_name": "Momuna"
+ },
+ "mqg": {
+ "english_name": "Malay, Kota Bangun Kutai"
+ },
+ "mqh": {
+ "english_name": "Mixtec, Tlazoyaltepec"
+ },
+ "mqi": {
+ "english_name": "Mariri"
+ },
+ "mqj": {
+ "english_name": "Mamasa"
+ },
+ "mqk": {
+ "english_name": "Manobo, Rajah Kabunsuwan"
+ },
+ "mql": {
+ "english_name": "Mbelime"
+ },
+ "mqm": {
+ "english_name": "Marquesan, South"
+ },
+ "mqn": {
+ "english_name": "Moronene"
+ },
+ "mqo": {
+ "english_name": "Modole"
+ },
+ "mqp": {
+ "english_name": "Manipa"
+ },
+ "mqq": {
+ "english_name": "Minokok"
+ },
+ "mqr": {
+ "english_name": "Mander"
+ },
+ "mqs": {
+ "english_name": "Makian, West"
+ },
+ "mqt": {
+ "english_name": "Mok"
+ },
+ "mqu": {
+ "english_name": "Mandari"
+ },
+ "mqv": {
+ "english_name": "Mosimo"
+ },
+ "mqw": {
+ "english_name": "Murupi"
+ },
+ "mqx": {
+ "english_name": "Mamuju"
+ },
+ "mqy": {
+ "english_name": "Manggarai"
+ },
+ "mqz": {
+ "english_name": "Pano"
+ },
+ "mr": {
+ "english_name": "Marathi",
+ "name": "\u092e\u0930\u093e\u0920\u0940"
+ },
+ "mra": {
+ "english_name": "Mlabri"
+ },
+ "mrb": {
+ "english_name": "Marino"
+ },
+ "mrc": {
+ "english_name": "Maricopa"
+ },
+ "mrd": {
+ "english_name": "Magar, Western"
+ },
+ "mre": {
+ "english_name": "Martha's Vineyard Sign Language"
+ },
+ "mrf": {
+ "english_name": "Elseng"
+ },
+ "mrg": {
+ "english_name": "Mising"
+ },
+ "mrh": {
+ "english_name": "Chin, Mara"
+ },
+ "mrj": {
+ "english_name": "Mari, Western"
+ },
+ "mrk": {
+ "english_name": "Hmwaveke"
+ },
+ "mrl": {
+ "english_name": "Mortlockese"
+ },
+ "mrm": {
+ "english_name": "Merlav"
+ },
+ "mrn": {
+ "english_name": "Cheke Holo"
+ },
+ "mro": {
+ "english_name": "Mru"
+ },
+ "mrp": {
+ "english_name": "Morouas"
+ },
+ "mrq": {
+ "english_name": "Marquesan, North"
+ },
+ "mrr": {
+ "english_name": "Maria (India)"
+ },
+ "mrs": {
+ "english_name": "Maragus"
+ },
+ "mrt": {
+ "english_name": "Marghi Central"
+ },
+ "mru": {
+ "english_name": "Mono (Cameroon)"
+ },
+ "mrv": {
+ "english_name": "Mangareva"
+ },
+ "mrw": {
+ "english_name": "Maranao"
+ },
+ "mrx": {
+ "english_name": "Maremgi"
+ },
+ "mry": {
+ "english_name": "Mandaya"
+ },
+ "mrz": {
+ "english_name": "Marind"
+ },
+ "ms": {
+ "english_name": "Malay (macrolanguage)",
+ "name": "Malay (macrolanguage)"
+ },
+ "msb": {
+ "english_name": "Masbatenyo"
+ },
+ "msc": {
+ "english_name": "Maninka, Sankaran"
+ },
+ "msd": {
+ "english_name": "Yucatec Maya Sign Language"
+ },
+ "mse": {
+ "english_name": "Musey"
+ },
+ "msf": {
+ "english_name": "Mekwei"
+ },
+ "msg": {
+ "english_name": "Moraid"
+ },
+ "msh": {
+ "english_name": "Malagasy, Masikoro"
+ },
+ "msi": {
+ "english_name": "Malay, Sabah"
+ },
+ "msj": {
+ "english_name": "Ma (Democratic Republic of Congo)"
+ },
+ "msk": {
+ "english_name": "Mansaka"
+ },
+ "msl": {
+ "english_name": "Molof"
+ },
+ "msm": {
+ "english_name": "Manobo, Agusan"
+ },
+ "msn": {
+ "english_name": "Vur\u00ebs"
+ },
+ "mso": {
+ "english_name": "Mombum"
+ },
+ "msp": {
+ "english_name": "Maritsau\u00e1"
+ },
+ "msq": {
+ "english_name": "Caac"
+ },
+ "msr": {
+ "english_name": "Mongolian Sign Language"
+ },
+ "mss": {
+ "english_name": "Masela, West"
+ },
+ "msu": {
+ "english_name": "Musom"
+ },
+ "msv": {
+ "english_name": "Maslam"
+ },
+ "msw": {
+ "english_name": "Mansoanka"
+ },
+ "msx": {
+ "english_name": "Moresada"
+ },
+ "msy": {
+ "english_name": "Aruamu"
+ },
+ "msz": {
+ "english_name": "Momare"
+ },
+ "mt": {
+ "english_name": "Maltese",
+ "name": "Malti"
+ },
+ "mta": {
+ "english_name": "Manobo, Cotabato"
+ },
+ "mtb": {
+ "english_name": "Anyin Morofo"
+ },
+ "mtc": {
+ "english_name": "Munit"
+ },
+ "mtd": {
+ "english_name": "Mualang"
+ },
+ "mte": {
+ "english_name": "Mono (Solomon Islands)"
+ },
+ "mtf": {
+ "english_name": "Murik (Papua New Guinea)"
+ },
+ "mtg": {
+ "english_name": "Una"
+ },
+ "mth": {
+ "english_name": "Munggui"
+ },
+ "mti": {
+ "english_name": "Maiwa (Papua New Guinea)"
+ },
+ "mtj": {
+ "english_name": "Moskona"
+ },
+ "mtk": {
+ "english_name": "Mbe'"
+ },
+ "mtl": {
+ "english_name": "Montol"
+ },
+ "mtm": {
+ "english_name": "Mator"
+ },
+ "mtn": {
+ "english_name": "Matagalpa"
+ },
+ "mto": {
+ "english_name": "Mixe, Totontepec"
+ },
+ "mtp": {
+ "english_name": "Wich\u00ed Lhamt\u00e9s Nocten"
+ },
+ "mtq": {
+ "english_name": "Muong"
+ },
+ "mtr": {
+ "english_name": "Mewari"
+ },
+ "mts": {
+ "english_name": "Yora"
+ },
+ "mtt": {
+ "english_name": "Mota"
+ },
+ "mtu": {
+ "english_name": "Mixtec, Tututepec"
+ },
+ "mtv": {
+ "english_name": "Asaro'o"
+ },
+ "mtw": {
+ "english_name": "Binukidnon, Southern"
+ },
+ "mtx": {
+ "english_name": "Mixtec, Tida\u00e1"
+ },
+ "mty": {
+ "english_name": "Nabi"
+ },
+ "mua": {
+ "english_name": "Mundang"
+ },
+ "mub": {
+ "english_name": "Mubi"
+ },
+ "muc": {
+ "english_name": "Ajumbu"
+ },
+ "mud": {
+ "english_name": "Aleut, Mednyj"
+ },
+ "mue": {
+ "english_name": "Media Lengua"
+ },
+ "mug": {
+ "english_name": "Musgu"
+ },
+ "muh": {
+ "english_name": "M\u00fcnd\u00fc"
+ },
+ "mui": {
+ "english_name": "Musi"
+ },
+ "muj": {
+ "english_name": "Mabire"
+ },
+ "muk": {
+ "english_name": "Mugom"
+ },
+ "mul": {
+ "english_name": "Multiple languages"
+ },
+ "mum": {
+ "english_name": "Maiwala"
+ },
+ "muo": {
+ "english_name": "Nyong"
+ },
+ "mup": {
+ "english_name": "Malvi"
+ },
+ "muq": {
+ "english_name": "Miao, Eastern Xiangxi"
+ },
+ "mur": {
+ "english_name": "Murle"
+ },
+ "mus": {
+ "english_name": "Creek"
+ },
+ "mut": {
+ "english_name": "Muria, Western"
+ },
+ "muu": {
+ "english_name": "Yaaku"
+ },
+ "muv": {
+ "english_name": "Muthuvan"
+ },
+ "mux": {
+ "english_name": "Bo-Ung"
+ },
+ "muy": {
+ "english_name": "Muyang"
+ },
+ "muz": {
+ "english_name": "Mursi"
+ },
+ "mva": {
+ "english_name": "Manam"
+ },
+ "mvb": {
+ "english_name": "Mattole"
+ },
+ "mvd": {
+ "english_name": "Mamboru"
+ },
+ "mve": {
+ "english_name": "Marwari (Pakistan)"
+ },
+ "mvf": {
+ "english_name": "Mongolian, Peripheral"
+ },
+ "mvg": {
+ "english_name": "Mixtec, Yucua\u00f1e"
+ },
+ "mvh": {
+ "english_name": "Mulgi"
+ },
+ "mvi": {
+ "english_name": "Miyako"
+ },
+ "mvk": {
+ "english_name": "Mekmek"
+ },
+ "mvl": {
+ "english_name": "Mbara (Australia)"
+ },
+ "mvm": {
+ "english_name": "Muya"
+ },
+ "mvn": {
+ "english_name": "Minaveha"
+ },
+ "mvo": {
+ "english_name": "Marovo"
+ },
+ "mvp": {
+ "english_name": "Duri"
+ },
+ "mvq": {
+ "english_name": "Moere"
+ },
+ "mvr": {
+ "english_name": "Marau"
+ },
+ "mvs": {
+ "english_name": "Massep"
+ },
+ "mvt": {
+ "english_name": "Mpotovoro"
+ },
+ "mvu": {
+ "english_name": "Marfa"
+ },
+ "mvv": {
+ "english_name": "Murut, Tagal"
+ },
+ "mvw": {
+ "english_name": "Machinga"
+ },
+ "mvx": {
+ "english_name": "Meoswar"
+ },
+ "mvy": {
+ "english_name": "Kohistani, Indus"
+ },
+ "mvz": {
+ "english_name": "Mesqan"
+ },
+ "mwa": {
+ "english_name": "Mwatebu"
+ },
+ "mwb": {
+ "english_name": "Juwal"
+ },
+ "mwc": {
+ "english_name": "Are"
+ },
+ "mwe": {
+ "english_name": "Mwera (Chimwera)"
+ },
+ "mwf": {
+ "english_name": "Murrinh-Patha"
+ },
+ "mwg": {
+ "english_name": "Aiklep"
+ },
+ "mwh": {
+ "english_name": "Mouk-Aria"
+ },
+ "mwi": {
+ "english_name": "Labo"
+ },
+ "mwk": {
+ "english_name": "Maninkakan, Kita"
+ },
+ "mwl": {
+ "english_name": "Mirandese"
+ },
+ "mwm": {
+ "english_name": "Sar"
+ },
+ "mwn": {
+ "english_name": "Nyamwanga"
+ },
+ "mwo": {
+ "english_name": "Maewo, Central"
+ },
+ "mwp": {
+ "english_name": "Kala Lagaw Ya"
+ },
+ "mwq": {
+ "english_name": "Chin, M\u00fcn"
+ },
+ "mwr": {
+ "english_name": "Marwari"
+ },
+ "mws": {
+ "english_name": "Mwimbi-Muthambi"
+ },
+ "mwt": {
+ "english_name": "Moken"
+ },
+ "mwu": {
+ "english_name": "Mittu"
+ },
+ "mwv": {
+ "english_name": "Mentawai"
+ },
+ "mww": {
+ "english_name": "Hmong Daw"
+ },
+ "mwx": {
+ "english_name": "Mediak"
+ },
+ "mwy": {
+ "english_name": "Mosiro"
+ },
+ "mwz": {
+ "english_name": "Moingi"
+ },
+ "mxa": {
+ "english_name": "Mixtec, Northwest Oaxaca"
+ },
+ "mxb": {
+ "english_name": "Mixtec, Tezoatl\u00e1n"
+ },
+ "mxc": {
+ "english_name": "Manyika"
+ },
+ "mxd": {
+ "english_name": "Modang"
+ },
+ "mxe": {
+ "english_name": "Mele-Fila"
+ },
+ "mxf": {
+ "english_name": "Malgbe"
+ },
+ "mxg": {
+ "english_name": "Mbangala"
+ },
+ "mxh": {
+ "english_name": "Mvuba"
+ },
+ "mxi": {
+ "english_name": "Mozarabic"
+ },
+ "mxj": {
+ "english_name": "Miju-Mishmi"
+ },
+ "mxk": {
+ "english_name": "Monumbo"
+ },
+ "mxl": {
+ "english_name": "Gbe, Maxi"
+ },
+ "mxm": {
+ "english_name": "Meramera"
+ },
+ "mxn": {
+ "english_name": "Moi (Indonesia)"
+ },
+ "mxo": {
+ "english_name": "Mbowe"
+ },
+ "mxp": {
+ "english_name": "Mixe, Tlahuitoltepec"
+ },
+ "mxq": {
+ "english_name": "Mixe, Juquila"
+ },
+ "mxr": {
+ "english_name": "Murik (Malaysia)"
+ },
+ "mxs": {
+ "english_name": "Mixtec, Huitepec"
+ },
+ "mxt": {
+ "english_name": "Mixtec, Jamiltepec"
+ },
+ "mxu": {
+ "english_name": "Mada (Cameroon)"
+ },
+ "mxv": {
+ "english_name": "Mixtec, Metlat\u00f3noc"
+ },
+ "mxw": {
+ "english_name": "Namo"
+ },
+ "mxx": {
+ "english_name": "Mahou"
+ },
+ "mxy": {
+ "english_name": "Mixtec, Southeastern Nochixtl\u00e1n"
+ },
+ "mxz": {
+ "english_name": "Masela, Central"
+ },
+ "my": {
+ "english_name": "Burmese"
+ },
+ "myb": {
+ "english_name": "Mbay"
+ },
+ "myc": {
+ "english_name": "Mayeka"
+ },
+ "myd": {
+ "english_name": "Maramba"
+ },
+ "mye": {
+ "english_name": "Myene"
+ },
+ "myf": {
+ "english_name": "Bambassi"
+ },
+ "myg": {
+ "english_name": "Manta"
+ },
+ "myh": {
+ "english_name": "Makah"
+ },
+ "myi": {
+ "english_name": "Mina (India)"
+ },
+ "myj": {
+ "english_name": "Mangayat"
+ },
+ "myk": {
+ "english_name": "Senoufo, Mamara"
+ },
+ "myl": {
+ "english_name": "Moma"
+ },
+ "mym": {
+ "english_name": "Me'en"
+ },
+ "myo": {
+ "english_name": "Anfillo"
+ },
+ "myp": {
+ "english_name": "Pirah\u00e3"
+ },
+ "myr": {
+ "english_name": "Muniche"
+ },
+ "mys": {
+ "english_name": "Mesmes"
+ },
+ "myu": {
+ "english_name": "Munduruk\u00fa"
+ },
+ "myv": {
+ "english_name": "Erzya"
+ },
+ "myw": {
+ "english_name": "Muyuw"
+ },
+ "myx": {
+ "english_name": "Masaaba"
+ },
+ "myy": {
+ "english_name": "Macuna"
+ },
+ "myz": {
+ "english_name": "Mandaic, Classical"
+ },
+ "mza": {
+ "english_name": "Mixtec, Santa Mar\u00eda Zacatepec"
+ },
+ "mzb": {
+ "english_name": "Tumzabt"
+ },
+ "mzc": {
+ "english_name": "Madagascar Sign Language"
+ },
+ "mzd": {
+ "english_name": "Malimba"
+ },
+ "mze": {
+ "english_name": "Morawa"
+ },
+ "mzg": {
+ "english_name": "Monastic Sign Language"
+ },
+ "mzh": {
+ "english_name": "Wich\u00ed Lhamt\u00e9s G\u00fcisnay"
+ },
+ "mzi": {
+ "english_name": "Mazatec, Ixcatl\u00e1n"
+ },
+ "mzj": {
+ "english_name": "Manya"
+ },
+ "mzk": {
+ "english_name": "Mambila, Nigeria"
+ },
+ "mzl": {
+ "english_name": "Mixe, Mazatl\u00e1n"
+ },
+ "mzm": {
+ "english_name": "Mumuye"
+ },
+ "mzn": {
+ "english_name": "Mazanderani"
+ },
+ "mzo": {
+ "english_name": "Matipuhy"
+ },
+ "mzp": {
+ "english_name": "Movima"
+ },
+ "mzq": {
+ "english_name": "Mori Atas"
+ },
+ "mzr": {
+ "english_name": "Mar\u00fabo"
+ },
+ "mzs": {
+ "english_name": "Macanese"
+ },
+ "mzt": {
+ "english_name": "Mintil"
+ },
+ "mzu": {
+ "english_name": "Inapang"
+ },
+ "mzv": {
+ "english_name": "Manza"
+ },
+ "mzw": {
+ "english_name": "Deg"
+ },
+ "mzx": {
+ "english_name": "Mawayana"
+ },
+ "mzy": {
+ "english_name": "Mozambican Sign Language"
+ },
+ "mzz": {
+ "english_name": "Maiadomu"
+ },
+ "na": {
+ "english_name": "Nauru"
+ },
+ "naa": {
+ "english_name": "Namla"
+ },
+ "nab": {
+ "english_name": "Nambiku\u00e1ra, Southern"
+ },
+ "nac": {
+ "english_name": "Narak"
+ },
+ "nad": {
+ "english_name": "Nijadali"
+ },
+ "nae": {
+ "english_name": "Naka'ela"
+ },
+ "naf": {
+ "english_name": "Nabak"
+ },
+ "nag": {
+ "english_name": "Naga Pidgin"
+ },
+ "naj": {
+ "english_name": "Nalu"
+ },
+ "nak": {
+ "english_name": "Nakanai"
+ },
+ "nal": {
+ "english_name": "Nalik"
+ },
+ "nam": {
+ "english_name": "Ngan'gityemerri"
+ },
+ "nan": {
+ "english_name": "Chinese, Min Nan"
+ },
+ "nao": {
+ "english_name": "Naaba"
+ },
+ "nap": {
+ "english_name": "Neapolitan"
+ },
+ "naq": {
+ "english_name": "Nama (Namibia)"
+ },
+ "nar": {
+ "english_name": "Iguta"
+ },
+ "nas": {
+ "english_name": "Naasioi"
+ },
+ "nat": {
+ "english_name": "Hungworo"
+ },
+ "naw": {
+ "english_name": "Nawuri"
+ },
+ "nax": {
+ "english_name": "Nakwi"
+ },
+ "nay": {
+ "english_name": "Narrinyeri"
+ },
+ "naz": {
+ "english_name": "Nahuatl, Coatepec"
+ },
+ "nb": {
+ "english_name": "Norwegian Bokm\u00e5l",
+ "name": "Norwegian Bokm\u00e5l"
+ },
+ "nba": {
+ "english_name": "Nyemba"
+ },
+ "nbb": {
+ "english_name": "Ndoe"
+ },
+ "nbc": {
+ "english_name": "Naga, Chang"
+ },
+ "nbd": {
+ "english_name": "Ngbinda"
+ },
+ "nbe": {
+ "english_name": "Naga, Konyak"
+ },
+ "nbg": {
+ "english_name": "Nagarchal"
+ },
+ "nbh": {
+ "english_name": "Ngamo"
+ },
+ "nbi": {
+ "english_name": "Naga, Mao"
+ },
+ "nbj": {
+ "english_name": "Ngarinman"
+ },
+ "nbk": {
+ "english_name": "Nake"
+ },
+ "nbm": {
+ "english_name": "Ngbaka Ma'bo"
+ },
+ "nbn": {
+ "english_name": "Kuri"
+ },
+ "nbo": {
+ "english_name": "Nkukoli"
+ },
+ "nbp": {
+ "english_name": "Nnam"
+ },
+ "nbq": {
+ "english_name": "Nggem"
+ },
+ "nbr": {
+ "english_name": "Numana-Nunku-Gbantu-Numbu"
+ },
+ "nbs": {
+ "english_name": "Namibian Sign Language"
+ },
+ "nbt": {
+ "english_name": "Na"
+ },
+ "nbu": {
+ "english_name": "Naga, Rongmei"
+ },
+ "nbv": {
+ "english_name": "Ngamambo"
+ },
+ "nbw": {
+ "english_name": "Ngbandi, Southern"
+ },
+ "nby": {
+ "english_name": "Ningera"
+ },
+ "nca": {
+ "english_name": "Iyo"
+ },
+ "ncb": {
+ "english_name": "Nicobarese, Central"
+ },
+ "ncc": {
+ "english_name": "Ponam"
+ },
+ "ncd": {
+ "english_name": "Nachering"
+ },
+ "nce": {
+ "english_name": "Yale"
+ },
+ "ncf": {
+ "english_name": "Notsi"
+ },
+ "ncg": {
+ "english_name": "Nisga'a"
+ },
+ "nch": {
+ "english_name": "Nahuatl, Central Huasteca"
+ },
+ "nci": {
+ "english_name": "Nahuatl, Classical"
+ },
+ "ncj": {
+ "english_name": "Nahuatl, Northern Puebla"
+ },
+ "nck": {
+ "english_name": "Nakara"
+ },
+ "ncl": {
+ "english_name": "Nahuatl, Michoac\u00e1n"
+ },
+ "ncm": {
+ "english_name": "Nambo"
+ },
+ "ncn": {
+ "english_name": "Nauna"
+ },
+ "nco": {
+ "english_name": "Sibe"
+ },
+ "ncp": {
+ "english_name": "Ndaktup"
+ },
+ "ncr": {
+ "english_name": "Ncane"
+ },
+ "ncs": {
+ "english_name": "Nicaraguan Sign Language"
+ },
+ "nct": {
+ "english_name": "Naga, Chothe"
+ },
+ "ncu": {
+ "english_name": "Chumburung"
+ },
+ "ncx": {
+ "english_name": "Nahuatl, Central Puebla"
+ },
+ "ncz": {
+ "english_name": "Natchez"
+ },
+ "nd": {
+ "english_name": "Ndebele, North"
+ },
+ "nda": {
+ "english_name": "Ndasa"
+ },
+ "ndb": {
+ "english_name": "Kenswei Nsei"
+ },
+ "ndc": {
+ "english_name": "Ndau"
+ },
+ "ndd": {
+ "english_name": "Nde-Nsele-Nta"
+ },
+ "ndf": {
+ "english_name": "Nadruvian"
+ },
+ "ndg": {
+ "english_name": "Ndengereko"
+ },
+ "ndh": {
+ "english_name": "Ndali"
+ },
+ "ndi": {
+ "english_name": "Samba Leko"
+ },
+ "ndj": {
+ "english_name": "Ndamba"
+ },
+ "ndk": {
+ "english_name": "Ndaka"
+ },
+ "ndl": {
+ "english_name": "Ndolo"
+ },
+ "ndm": {
+ "english_name": "Ndam"
+ },
+ "ndn": {
+ "english_name": "Ngundi"
+ },
+ "ndp": {
+ "english_name": "Ndo"
+ },
+ "ndq": {
+ "english_name": "Ndombe"
+ },
+ "ndr": {
+ "english_name": "Ndoola"
+ },
+ "nds": {
+ "english_name": "German, Low"
+ },
+ "ndt": {
+ "english_name": "Ndunga"
+ },
+ "ndu": {
+ "english_name": "Dugun"
+ },
+ "ndv": {
+ "english_name": "Ndut"
+ },
+ "ndw": {
+ "english_name": "Ndobo"
+ },
+ "ndx": {
+ "english_name": "Nduga"
+ },
+ "ndy": {
+ "english_name": "Lutos"
+ },
+ "ndz": {
+ "english_name": "Ndogo"
+ },
+ "ne": {
+ "english_name": "Nepali (macrolanguage)"
+ },
+ "nea": {
+ "english_name": "Ngad'a, Eastern"
+ },
+ "neb": {
+ "english_name": "Toura (C\u00f4te d'Ivoire)"
+ },
+ "nec": {
+ "english_name": "Nedebang"
+ },
+ "ned": {
+ "english_name": "Nde-Gbite"
+ },
+ "nee": {
+ "english_name": "N\u00eal\u00eamwa-Nixumwak"
+ },
+ "nef": {
+ "english_name": "Nefamese"
+ },
+ "neg": {
+ "english_name": "Negidal"
+ },
+ "neh": {
+ "english_name": "Nyenkha"
+ },
+ "nei": {
+ "english_name": "Hittite, Neo-"
+ },
+ "nej": {
+ "english_name": "Neko"
+ },
+ "nek": {
+ "english_name": "Neku"
+ },
+ "nem": {
+ "english_name": "Nemi"
+ },
+ "nen": {
+ "english_name": "Nengone"
+ },
+ "neo": {
+ "english_name": "N\u00e1-Meo"
+ },
+ "neq": {
+ "english_name": "Mixe, North Central"
+ },
+ "ner": {
+ "english_name": "Yahadian"
+ },
+ "nes": {
+ "english_name": "Kinnauri, Bhoti"
+ },
+ "net": {
+ "english_name": "Nete"
+ },
+ "neu": {
+ "english_name": "Neo"
+ },
+ "nev": {
+ "english_name": "Nyaheun"
+ },
+ "new": {
+ "english_name": "Newari"
+ },
+ "nex": {
+ "english_name": "Neme"
+ },
+ "ney": {
+ "english_name": "Neyo"
+ },
+ "nez": {
+ "english_name": "Nez Perce"
+ },
+ "nfa": {
+ "english_name": "Dhao"
+ },
+ "nfd": {
+ "english_name": "Ahwai"
+ },
+ "nfl": {
+ "english_name": "Ayiwo"
+ },
+ "nfr": {
+ "english_name": "Nafaanra"
+ },
+ "nfu": {
+ "english_name": "Mfumte"
+ },
+ "ng": {
+ "english_name": "Ndonga"
+ },
+ "nga": {
+ "english_name": "Ngbaka"
+ },
+ "ngb": {
+ "english_name": "Ngbandi, Northern"
+ },
+ "ngc": {
+ "english_name": "Ngombe (Democratic Republic of Congo)"
+ },
+ "ngd": {
+ "english_name": "Ngando (Central African Republic)"
+ },
+ "nge": {
+ "english_name": "Ngemba"
+ },
+ "ngg": {
+ "english_name": "Ngbaka Manza"
+ },
+ "ngh": {
+ "english_name": "N/u"
+ },
+ "ngi": {
+ "english_name": "Ngizim"
+ },
+ "ngj": {
+ "english_name": "Ngie"
+ },
+ "ngk": {
+ "english_name": "Dalabon"
+ },
+ "ngl": {
+ "english_name": "Lomwe"
+ },
+ "ngm": {
+ "english_name": "Ngatik Men's Creole"
+ },
+ "ngn": {
+ "english_name": "Ngwo"
+ },
+ "ngo": {
+ "english_name": "Ngoni"
+ },
+ "ngp": {
+ "english_name": "Ngulu"
+ },
+ "ngq": {
+ "english_name": "Ngurimi"
+ },
+ "ngr": {
+ "english_name": "Engdewu"
+ },
+ "ngs": {
+ "english_name": "Gvoko"
+ },
+ "ngt": {
+ "english_name": "Ngeq"
+ },
+ "ngu": {
+ "english_name": "Nahuatl, Guerrero"
+ },
+ "ngv": {
+ "english_name": "Nagumi"
+ },
+ "ngw": {
+ "english_name": "Ngwaba"
+ },
+ "ngx": {
+ "english_name": "Nggwahyi"
+ },
+ "ngy": {
+ "english_name": "Tibea"
+ },
+ "ngz": {
+ "english_name": "Ngungwel"
+ },
+ "nha": {
+ "english_name": "Nhanda"
+ },
+ "nhb": {
+ "english_name": "Beng"
+ },
+ "nhc": {
+ "english_name": "Nahuatl, Tabasco"
+ },
+ "nhd": {
+ "english_name": "Chirip\u00e1"
+ },
+ "nhe": {
+ "english_name": "Nahuatl, Eastern Huasteca"
+ },
+ "nhf": {
+ "english_name": "Nhuwala"
+ },
+ "nhg": {
+ "english_name": "Nahuatl, Tetelcingo"
+ },
+ "nhh": {
+ "english_name": "Nahari"
+ },
+ "nhi": {
+ "english_name": "Nahuatl, Zacatl\u00e1n-Ahuacatl\u00e1n-Tepetzintla"
+ },
+ "nhk": {
+ "english_name": "Nahuatl, Isthmus-Cosoleacaque"
+ },
+ "nhm": {
+ "english_name": "Nahuatl, Morelos"
+ },
+ "nhn": {
+ "english_name": "Nahuatl, Central"
+ },
+ "nho": {
+ "english_name": "Takuu"
+ },
+ "nhp": {
+ "english_name": "Nahuatl, Isthmus-Pajapan"
+ },
+ "nhq": {
+ "english_name": "Nahuatl, Huaxcaleca"
+ },
+ "nhr": {
+ "english_name": "Naro"
+ },
+ "nht": {
+ "english_name": "Nahuatl, Ometepec"
+ },
+ "nhu": {
+ "english_name": "Noone"
+ },
+ "nhv": {
+ "english_name": "Nahuatl, Temascaltepec"
+ },
+ "nhw": {
+ "english_name": "Nahuatl, Western Huasteca"
+ },
+ "nhx": {
+ "english_name": "Nahuatl, Isthmus-Mecayapan"
+ },
+ "nhy": {
+ "english_name": "Nahuatl, Northern Oaxaca"
+ },
+ "nhz": {
+ "english_name": "Nahuatl, Santa Mar\u00eda La Alta"
+ },
+ "nia": {
+ "english_name": "Nias"
+ },
+ "nib": {
+ "english_name": "Nakame"
+ },
+ "nid": {
+ "english_name": "Ngandi"
+ },
+ "nie": {
+ "english_name": "Niellim"
+ },
+ "nif": {
+ "english_name": "Nek"
+ },
+ "nig": {
+ "english_name": "Ngalakan"
+ },
+ "nih": {
+ "english_name": "Nyiha (Tanzania)"
+ },
+ "nii": {
+ "english_name": "Nii"
+ },
+ "nij": {
+ "english_name": "Ngaju"
+ },
+ "nik": {
+ "english_name": "Nicobarese, Southern"
+ },
+ "nil": {
+ "english_name": "Nila"
+ },
+ "nim": {
+ "english_name": "Nilamba"
+ },
+ "nin": {
+ "english_name": "Ninzo"
+ },
+ "nio": {
+ "english_name": "Nganasan"
+ },
+ "niq": {
+ "english_name": "Nandi"
+ },
+ "nir": {
+ "english_name": "Nimboran"
+ },
+ "nis": {
+ "english_name": "Nimi"
+ },
+ "nit": {
+ "english_name": "Kolami, Southeastern"
+ },
+ "niu": {
+ "english_name": "Niuean"
+ },
+ "niv": {
+ "english_name": "Gilyak"
+ },
+ "niw": {
+ "english_name": "Nimo"
+ },
+ "nix": {
+ "english_name": "Hema"
+ },
+ "niy": {
+ "english_name": "Ngiti"
+ },
+ "niz": {
+ "english_name": "Ningil"
+ },
+ "nja": {
+ "english_name": "Nzanyi"
+ },
+ "njb": {
+ "english_name": "Naga, Nocte"
+ },
+ "njd": {
+ "english_name": "Ndonde Hamba"
+ },
+ "njh": {
+ "english_name": "Naga, Lotha"
+ },
+ "nji": {
+ "english_name": "Gudanji"
+ },
+ "njj": {
+ "english_name": "Njen"
+ },
+ "njl": {
+ "english_name": "Njalgulgule"
+ },
+ "njm": {
+ "english_name": "Naga, Angami"
+ },
+ "njn": {
+ "english_name": "Naga, Liangmai"
+ },
+ "njo": {
+ "english_name": "Naga, Ao"
+ },
+ "njr": {
+ "english_name": "Njerep"
+ },
+ "njs": {
+ "english_name": "Nisa"
+ },
+ "njt": {
+ "english_name": "Ndyuka-Trio Pidgin"
+ },
+ "nju": {
+ "english_name": "Ngadjunmaya"
+ },
+ "njx": {
+ "english_name": "Kunyi"
+ },
+ "njy": {
+ "english_name": "Njyem"
+ },
+ "njz": {
+ "english_name": "Nyishi"
+ },
+ "nka": {
+ "english_name": "Nkoya"
+ },
+ "nkb": {
+ "english_name": "Naga, Khoibu"
+ },
+ "nkc": {
+ "english_name": "Nkongho"
+ },
+ "nkd": {
+ "english_name": "Koireng"
+ },
+ "nke": {
+ "english_name": "Duke"
+ },
+ "nkf": {
+ "english_name": "Naga, Inpui"
+ },
+ "nkg": {
+ "english_name": "Nekgini"
+ },
+ "nkh": {
+ "english_name": "Naga, Khezha"
+ },
+ "nki": {
+ "english_name": "Naga, Thangal"
+ },
+ "nkj": {
+ "english_name": "Nakai"
+ },
+ "nkk": {
+ "english_name": "Nokuku"
+ },
+ "nkm": {
+ "english_name": "Namat"
+ },
+ "nkn": {
+ "english_name": "Nkangala"
+ },
+ "nko": {
+ "english_name": "Nkonya"
+ },
+ "nkp": {
+ "english_name": "Niuatoputapu"
+ },
+ "nkq": {
+ "english_name": "Nkami"
+ },
+ "nkr": {
+ "english_name": "Nukuoro"
+ },
+ "nks": {
+ "english_name": "Asmat, North"
+ },
+ "nkt": {
+ "english_name": "Nyika (Tanzania)"
+ },
+ "nku": {
+ "english_name": "Kulango, Bouna"
+ },
+ "nkv": {
+ "english_name": "Nyika (Malawi and Zambia)"
+ },
+ "nkw": {
+ "english_name": "Nkutu"
+ },
+ "nkx": {
+ "english_name": "Nkoroo"
+ },
+ "nkz": {
+ "english_name": "Nkari"
+ },
+ "nl": {
+ "english_name": "Dutch",
+ "name": "Nederlands"
+ },
+ "nla": {
+ "english_name": "Ngombale"
+ },
+ "nlc": {
+ "english_name": "Nalca"
+ },
+ "nle": {
+ "english_name": "Nyala, East"
+ },
+ "nlg": {
+ "english_name": "Gela"
+ },
+ "nli": {
+ "english_name": "Grangali"
+ },
+ "nlj": {
+ "english_name": "Nyali"
+ },
+ "nlk": {
+ "english_name": "Yali, Ninia"
+ },
+ "nll": {
+ "english_name": "Nihali"
+ },
+ "nlo": {
+ "english_name": "Ngul"
+ },
+ "nlq": {
+ "english_name": "Naga, Lao"
+ },
+ "nlu": {
+ "english_name": "Nchumbulu"
+ },
+ "nlv": {
+ "english_name": "Nahuatl, Orizaba"
+ },
+ "nlw": {
+ "english_name": "Walangama"
+ },
+ "nlx": {
+ "english_name": "Nahali"
+ },
+ "nly": {
+ "english_name": "Nyamal"
+ },
+ "nlz": {
+ "english_name": "Nal\u00f6go"
+ },
+ "nma": {
+ "english_name": "Naga, Maram"
+ },
+ "nmb": {
+ "english_name": "Nambas, Big"
+ },
+ "nmc": {
+ "english_name": "Ngam"
+ },
+ "nmd": {
+ "english_name": "Ndumu"
+ },
+ "nme": {
+ "english_name": "Naga, Mzieme"
+ },
+ "nmf": {
+ "english_name": "Naga, Tangkhul (India)"
+ },
+ "nmg": {
+ "english_name": "Kwasio"
+ },
+ "nmh": {
+ "english_name": "Naga, Monsang"
+ },
+ "nmi": {
+ "english_name": "Nyam"
+ },
+ "nmj": {
+ "english_name": "Ngombe (Central African Republic)"
+ },
+ "nmk": {
+ "english_name": "Namakura"
+ },
+ "nml": {
+ "english_name": "Ndemli"
+ },
+ "nmm": {
+ "english_name": "Manangba"
+ },
+ "nmn": {
+ "english_name": "!X\u00f3\u00f5"
+ },
+ "nmo": {
+ "english_name": "Naga, Moyon"
+ },
+ "nmp": {
+ "english_name": "Nimanbur"
+ },
+ "nmq": {
+ "english_name": "Nambya"
+ },
+ "nmr": {
+ "english_name": "Nimbari"
+ },
+ "nms": {
+ "english_name": "Letemboi"
+ },
+ "nmt": {
+ "english_name": "Namonuito"
+ },
+ "nmu": {
+ "english_name": "Maidu, Northeast"
+ },
+ "nmv": {
+ "english_name": "Ngamini"
+ },
+ "nmw": {
+ "english_name": "Nimoa"
+ },
+ "nmx": {
+ "english_name": "Nama (Papua New Guinea)"
+ },
+ "nmy": {
+ "english_name": "Namuyi"
+ },
+ "nmz": {
+ "english_name": "Nawdm"
+ },
+ "nn": {
+ "english_name": "Norwegian Nynorsk",
+ "name": "Norwegian Nynorsk"
+ },
+ "nna": {
+ "english_name": "Nyangumarta"
+ },
+ "nnb": {
+ "english_name": "Nande"
+ },
+ "nnc": {
+ "english_name": "Nancere"
+ },
+ "nnd": {
+ "english_name": "Ambae, West"
+ },
+ "nne": {
+ "english_name": "Ngandyera"
+ },
+ "nnf": {
+ "english_name": "Ngaing"
+ },
+ "nng": {
+ "english_name": "Naga, Maring"
+ },
+ "nnh": {
+ "english_name": "Ngiemboon"
+ },
+ "nni": {
+ "english_name": "Nuaulu, North"
+ },
+ "nnj": {
+ "english_name": "Nyangatom"
+ },
+ "nnk": {
+ "english_name": "Nankina"
+ },
+ "nnl": {
+ "english_name": "Naga, Northern Rengma"
+ },
+ "nnm": {
+ "english_name": "Namia"
+ },
+ "nnn": {
+ "english_name": "Ngete"
+ },
+ "nnp": {
+ "english_name": "Naga, Wancho"
+ },
+ "nnq": {
+ "english_name": "Ngindo"
+ },
+ "nnr": {
+ "english_name": "Narungga"
+ },
+ "nns": {
+ "english_name": "Ningye"
+ },
+ "nnt": {
+ "english_name": "Nanticoke"
+ },
+ "nnu": {
+ "english_name": "Dwang"
+ },
+ "nnv": {
+ "english_name": "Nugunu (Australia)"
+ },
+ "nnw": {
+ "english_name": "Nuni, Southern"
+ },
+ "nny": {
+ "english_name": "Nyangga"
+ },
+ "nnz": {
+ "english_name": "Nda'nda'"
+ },
+ "no": {
+ "english_name": "Norwegian"
+ },
+ "noa": {
+ "english_name": "Woun Meu"
+ },
+ "noc": {
+ "english_name": "Nuk"
+ },
+ "nod": {
+ "english_name": "Thai, Northern"
+ },
+ "noe": {
+ "english_name": "Nimadi"
+ },
+ "nof": {
+ "english_name": "Nomane"
+ },
+ "nog": {
+ "english_name": "Nogai"
+ },
+ "noh": {
+ "english_name": "Nomu"
+ },
+ "noi": {
+ "english_name": "Noiri"
+ },
+ "noj": {
+ "english_name": "Nonuya"
+ },
+ "nok": {
+ "english_name": "Nooksack"
+ },
+ "nol": {
+ "english_name": "Nomlaki"
+ },
+ "nom": {
+ "english_name": "Nocam\u00e1n"
+ },
+ "non": {
+ "english_name": "Norse, Old"
+ },
+ "nop": {
+ "english_name": "Numanggang"
+ },
+ "noq": {
+ "english_name": "Ngongo"
+ },
+ "nos": {
+ "english_name": "Nisu, Eastern"
+ },
+ "not": {
+ "english_name": "Nomatsiguenga"
+ },
+ "nou": {
+ "english_name": "Ewage-Notu"
+ },
+ "nov": {
+ "english_name": "Novial"
+ },
+ "now": {
+ "english_name": "Nyambo"
+ },
+ "noy": {
+ "english_name": "Noy"
+ },
+ "noz": {
+ "english_name": "Nayi"
+ },
+ "npa": {
+ "english_name": "Nar Phu"
+ },
+ "npb": {
+ "english_name": "Nupbikha"
+ },
+ "npg": {
+ "english_name": "Naga, Ponyo-Gongwang"
+ },
+ "nph": {
+ "english_name": "Naga, Phom"
+ },
+ "npi": {
+ "english_name": "Nepali (individual language)"
+ },
+ "npl": {
+ "english_name": "Nahuatl, Southeastern Puebla"
+ },
+ "npn": {
+ "english_name": "Mondropolon"
+ },
+ "npo": {
+ "english_name": "Naga, Pochuri"
+ },
+ "nps": {
+ "english_name": "Nipsan"
+ },
+ "npu": {
+ "english_name": "Naga, Puimei"
+ },
+ "npy": {
+ "english_name": "Napu"
+ },
+ "nqg": {
+ "english_name": "Nago, Southern"
+ },
+ "nqk": {
+ "english_name": "Ede Nago, Kura"
+ },
+ "nqm": {
+ "english_name": "Ndom"
+ },
+ "nqn": {
+ "english_name": "Nen"
+ },
+ "nqo": {
+ "english_name": "N'Ko"
+ },
+ "nqq": {
+ "english_name": "Naga, Kyan-Karyaw"
+ },
+ "nqy": {
+ "english_name": "Naga, Akyaung Ari"
+ },
+ "nr": {
+ "english_name": "Ndebele, South"
+ },
+ "nra": {
+ "english_name": "Ngom"
+ },
+ "nrb": {
+ "english_name": "Nara"
+ },
+ "nrc": {
+ "english_name": "Noric"
+ },
+ "nre": {
+ "english_name": "Naga, Southern Rengma"
+ },
+ "nrg": {
+ "english_name": "Narango"
+ },
+ "nri": {
+ "english_name": "Naga, Chokri"
+ },
+ "nrk": {
+ "english_name": "Ngarla"
+ },
+ "nrl": {
+ "english_name": "Ngarluma"
+ },
+ "nrm": {
+ "english_name": "Narom"
+ },
+ "nrn": {
+ "english_name": "Norn"
+ },
+ "nrp": {
+ "english_name": "Picene, North"
+ },
+ "nrr": {
+ "english_name": "Norra"
+ },
+ "nrt": {
+ "english_name": "Kalapuya, Northern"
+ },
+ "nru": {
+ "english_name": "Narua"
+ },
+ "nrx": {
+ "english_name": "Ngurmbur"
+ },
+ "nrz": {
+ "english_name": "Lala"
+ },
+ "nsa": {
+ "english_name": "Naga, Sangtam"
+ },
+ "nsc": {
+ "english_name": "Nshi"
+ },
+ "nsd": {
+ "english_name": "Nisu, Southern"
+ },
+ "nse": {
+ "english_name": "Nsenga"
+ },
+ "nsf": {
+ "english_name": "Nisu, Northwestern"
+ },
+ "nsg": {
+ "english_name": "Ngasa"
+ },
+ "nsh": {
+ "english_name": "Ngoshie"
+ },
+ "nsi": {
+ "english_name": "Nigerian Sign Language"
+ },
+ "nsk": {
+ "english_name": "Naskapi"
+ },
+ "nsl": {
+ "english_name": "Norwegian Sign Language"
+ },
+ "nsm": {
+ "english_name": "Naga, Sumi"
+ },
+ "nsn": {
+ "english_name": "Nehan"
+ },
+ "nso": {
+ "english_name": "Pedi",
+ "name": "Pedi"
+ },
+ "nsp": {
+ "english_name": "Nepalese Sign Language"
+ },
+ "nsq": {
+ "english_name": "Miwok, Northern Sierra"
+ },
+ "nsr": {
+ "english_name": "Maritime Sign Language"
+ },
+ "nss": {
+ "english_name": "Nali"
+ },
+ "nst": {
+ "english_name": "Naga, Tase"
+ },
+ "nsu": {
+ "english_name": "Nahuatl, Sierra Negra"
+ },
+ "nsv": {
+ "english_name": "Nisu, Southwestern"
+ },
+ "nsw": {
+ "english_name": "Navut"
+ },
+ "nsx": {
+ "english_name": "Nsongo"
+ },
+ "nsy": {
+ "english_name": "Nasal"
+ },
+ "nsz": {
+ "english_name": "Nisenan"
+ },
+ "nte": {
+ "english_name": "Nathembo"
+ },
+ "ntg": {
+ "english_name": "Ngantangarra"
+ },
+ "nti": {
+ "english_name": "Natioro"
+ },
+ "ntj": {
+ "english_name": "Ngaanyatjarra"
+ },
+ "ntk": {
+ "english_name": "Ikoma-Nata-Isenye"
+ },
+ "ntm": {
+ "english_name": "Nateni"
+ },
+ "nto": {
+ "english_name": "Ntomba"
+ },
+ "ntp": {
+ "english_name": "Tepehuan, Northern"
+ },
+ "ntr": {
+ "english_name": "Delo"
+ },
+ "nts": {
+ "english_name": "Natagaimas"
+ },
+ "ntu": {
+ "english_name": "Nat\u00fcgu"
+ },
+ "ntw": {
+ "english_name": "Nottoway"
+ },
+ "ntx": {
+ "english_name": "Naga, Tangkhul (Myanmar)"
+ },
+ "nty": {
+ "english_name": "Mantsi"
+ },
+ "ntz": {
+ "english_name": "Natanzi"
+ },
+ "nua": {
+ "english_name": "Yuanga"
+ },
+ "nuc": {
+ "english_name": "Nukuini"
+ },
+ "nud": {
+ "english_name": "Ngala"
+ },
+ "nue": {
+ "english_name": "Ngundu"
+ },
+ "nuf": {
+ "english_name": "Nusu"
+ },
+ "nug": {
+ "english_name": "Nungali"
+ },
+ "nuh": {
+ "english_name": "Ndunda"
+ },
+ "nui": {
+ "english_name": "Ngumbi"
+ },
+ "nuj": {
+ "english_name": "Nyole"
+ },
+ "nuk": {
+ "english_name": "Nuu-chah-nulth"
+ },
+ "nul": {
+ "english_name": "Nusa Laut"
+ },
+ "num": {
+ "english_name": "Niuafo'ou"
+ },
+ "nun": {
+ "english_name": "Anong"
+ },
+ "nuo": {
+ "english_name": "Ngu\u00f4n"
+ },
+ "nup": {
+ "english_name": "Nupe-Nupe-Tako"
+ },
+ "nuq": {
+ "english_name": "Nukumanu"
+ },
+ "nur": {
+ "english_name": "Nukuria"
+ },
+ "nus": {
+ "english_name": "Nuer"
+ },
+ "nut": {
+ "english_name": "Nung (Viet Nam)"
+ },
+ "nuu": {
+ "english_name": "Ngbundu"
+ },
+ "nuv": {
+ "english_name": "Nuni, Northern"
+ },
+ "nuw": {
+ "english_name": "Nguluwan"
+ },
+ "nux": {
+ "english_name": "Mehek"
+ },
+ "nuy": {
+ "english_name": "Nunggubuyu"
+ },
+ "nuz": {
+ "english_name": "Nahuatl, Tlamacazapa"
+ },
+ "nv": {
+ "english_name": "Navajo"
+ },
+ "nvh": {
+ "english_name": "Nasarian"
+ },
+ "nvm": {
+ "english_name": "Namiae"
+ },
+ "nvo": {
+ "english_name": "Nyokon"
+ },
+ "nwa": {
+ "english_name": "Nawathinehena"
+ },
+ "nwb": {
+ "english_name": "Nyabwa"
+ },
+ "nwc": {
+ "english_name": "Newari, Classical"
+ },
+ "nwe": {
+ "english_name": "Ngwe"
+ },
+ "nwg": {
+ "english_name": "Ngayawung"
+ },
+ "nwi": {
+ "english_name": "Tanna, Southwest"
+ },
+ "nwm": {
+ "english_name": "Nyamusa-Molo"
+ },
+ "nwo": {
+ "english_name": "Nauo"
+ },
+ "nwr": {
+ "english_name": "Nawaru"
+ },
+ "nwx": {
+ "english_name": "Newar, Middle"
+ },
+ "nwy": {
+ "english_name": "Nottoway-Meherrin"
+ },
+ "nxa": {
+ "english_name": "Nauete"
+ },
+ "nxd": {
+ "english_name": "Ngando (Democratic Republic of Congo)"
+ },
+ "nxe": {
+ "english_name": "Nage"
+ },
+ "nxg": {
+ "english_name": "Ngad'a"
+ },
+ "nxi": {
+ "english_name": "Nindi"
+ },
+ "nxk": {
+ "english_name": "Naga, Koki"
+ },
+ "nxl": {
+ "english_name": "Nuaulu, South"
+ },
+ "nxm": {
+ "english_name": "Numidian"
+ },
+ "nxn": {
+ "english_name": "Ngawun"
+ },
+ "nxq": {
+ "english_name": "Naxi"
+ },
+ "nxr": {
+ "english_name": "Ninggerum"
+ },
+ "nxu": {
+ "english_name": "Narau"
+ },
+ "nxx": {
+ "english_name": "Nafri"
+ },
+ "ny": {
+ "english_name": "Nyanja"
+ },
+ "nyb": {
+ "english_name": "Nyangbo"
+ },
+ "nyc": {
+ "english_name": "Nyanga-li"
+ },
+ "nyd": {
+ "english_name": "Nyore"
+ },
+ "nye": {
+ "english_name": "Nyengo"
+ },
+ "nyf": {
+ "english_name": "Giryama"
+ },
+ "nyg": {
+ "english_name": "Nyindu"
+ },
+ "nyh": {
+ "english_name": "Nyigina"
+ },
+ "nyi": {
+ "english_name": "Ama (Sudan)"
+ },
+ "nyj": {
+ "english_name": "Nyanga"
+ },
+ "nyk": {
+ "english_name": "Nyaneka"
+ },
+ "nyl": {
+ "english_name": "Nyeu"
+ },
+ "nym": {
+ "english_name": "Nyamwezi"
+ },
+ "nyn": {
+ "english_name": "Nyankole"
+ },
+ "nyo": {
+ "english_name": "Nyoro"
+ },
+ "nyp": {
+ "english_name": "Nyang'i"
+ },
+ "nyq": {
+ "english_name": "Nayini"
+ },
+ "nyr": {
+ "english_name": "Nyiha (Malawi)"
+ },
+ "nys": {
+ "english_name": "Nyunga"
+ },
+ "nyt": {
+ "english_name": "Nyawaygi"
+ },
+ "nyu": {
+ "english_name": "Nyungwe"
+ },
+ "nyv": {
+ "english_name": "Nyulnyul"
+ },
+ "nyw": {
+ "english_name": "Nyaw"
+ },
+ "nyx": {
+ "english_name": "Nganyaywana"
+ },
+ "nyy": {
+ "english_name": "Nyakyusa-Ngonde"
+ },
+ "nza": {
+ "english_name": "Mbembe, Tigon"
+ },
+ "nzb": {
+ "english_name": "Njebi"
+ },
+ "nzi": {
+ "english_name": "Nzima"
+ },
+ "nzk": {
+ "english_name": "Nzakara"
+ },
+ "nzm": {
+ "english_name": "Naga, Zeme"
+ },
+ "nzs": {
+ "english_name": "New Zealand Sign Language"
+ },
+ "nzu": {
+ "english_name": "Teke-Nzikou"
+ },
+ "nzy": {
+ "english_name": "Nzakambay"
+ },
+ "nzz": {
+ "english_name": "Dogon, Nanga Dama"
+ },
+ "oaa": {
+ "english_name": "Orok"
+ },
+ "oac": {
+ "english_name": "Oroch"
+ },
+ "oar": {
+ "english_name": "Aramaic, Old (up to 700 BCE)"
+ },
+ "oav": {
+ "english_name": "Avar, Old"
+ },
+ "obi": {
+ "english_name": "Obispe\u00f1o"
+ },
+ "obk": {
+ "english_name": "Bontok, Southern"
+ },
+ "obl": {
+ "english_name": "Oblo"
+ },
+ "obm": {
+ "english_name": "Moabite"
+ },
+ "obo": {
+ "english_name": "Manobo, Obo"
+ },
+ "obr": {
+ "english_name": "Burmese, Old"
+ },
+ "obt": {
+ "english_name": "Breton, Old"
+ },
+ "obu": {
+ "english_name": "Obulom"
+ },
+ "oc": {
+ "english_name": "Occitan (post 1500)",
+ "name": "Occitan (apr\u00e8p 1500)"
+ },
+ "oca": {
+ "english_name": "Ocaina"
+ },
+ "och": {
+ "english_name": "Chinese, Old"
+ },
+ "oco": {
+ "english_name": "Cornish, Old"
+ },
+ "ocu": {
+ "english_name": "Matlatzinca, Atzingo"
+ },
+ "oda": {
+ "english_name": "Odut"
+ },
+ "odk": {
+ "english_name": "Od"
+ },
+ "odt": {
+ "english_name": "Dutch, Old"
+ },
+ "odu": {
+ "english_name": "Odual"
+ },
+ "ofo": {
+ "english_name": "Ofo"
+ },
+ "ofs": {
+ "english_name": "Frisian, Old"
+ },
+ "ofu": {
+ "english_name": "Efutop"
+ },
+ "ogb": {
+ "english_name": "Ogbia"
+ },
+ "ogc": {
+ "english_name": "Ogbah"
+ },
+ "oge": {
+ "english_name": "Georgian, Old"
+ },
+ "ogg": {
+ "english_name": "Ogbogolo"
+ },
+ "ogo": {
+ "english_name": "Khana"
+ },
+ "ogu": {
+ "english_name": "Ogbronuagum"
+ },
+ "oht": {
+ "english_name": "Hittite, Old"
+ },
+ "ohu": {
+ "english_name": "Hungarian, Old"
+ },
+ "oia": {
+ "english_name": "Oirata"
+ },
+ "oin": {
+ "english_name": "One, Inebu"
+ },
+ "oj": {
+ "english_name": "Ojibwa"
+ },
+ "ojb": {
+ "english_name": "Ojibwa, Northwestern"
+ },
+ "ojc": {
+ "english_name": "Ojibwa, Central"
+ },
+ "ojg": {
+ "english_name": "Ojibwa, Eastern"
+ },
+ "ojp": {
+ "english_name": "Japanese, Old"
+ },
+ "ojs": {
+ "english_name": "Ojibwa, Severn"
+ },
+ "ojv": {
+ "english_name": "Ontong Java"
+ },
+ "ojw": {
+ "english_name": "Ojibwa, Western"
+ },
+ "oka": {
+ "english_name": "Okanagan"
+ },
+ "okb": {
+ "english_name": "Okobo"
+ },
+ "okd": {
+ "english_name": "Okodia"
+ },
+ "oke": {
+ "english_name": "Okpe (Southwestern Edo)"
+ },
+ "okg": {
+ "english_name": "Koko Babangk"
+ },
+ "okh": {
+ "english_name": "Koresh-e Rostam"
+ },
+ "oki": {
+ "english_name": "Okiek"
+ },
+ "okj": {
+ "english_name": "Oko-Juwoi"
+ },
+ "okk": {
+ "english_name": "One, Kwamtim"
+ },
+ "okl": {
+ "english_name": "Kentish Sign Language, Old"
+ },
+ "okm": {
+ "english_name": "Korean, Middle (10th-16th cent.)"
+ },
+ "okn": {
+ "english_name": "Oki-No-Erabu"
+ },
+ "oko": {
+ "english_name": "Korean, Old (3rd-9th cent.)"
+ },
+ "okr": {
+ "english_name": "Kirike"
+ },
+ "oks": {
+ "english_name": "Oko-Eni-Osayen"
+ },
+ "oku": {
+ "english_name": "Oku"
+ },
+ "okv": {
+ "english_name": "Orokaiva"
+ },
+ "okx": {
+ "english_name": "Okpe (Northwestern Edo)"
+ },
+ "ola": {
+ "english_name": "Walungge"
+ },
+ "old": {
+ "english_name": "Mochi"
+ },
+ "ole": {
+ "english_name": "Olekha"
+ },
+ "olk": {
+ "english_name": "Olkol"
+ },
+ "olm": {
+ "english_name": "Oloma"
+ },
+ "olo": {
+ "english_name": "Livvi"
+ },
+ "olr": {
+ "english_name": "Olrat"
+ },
+ "om": {
+ "english_name": "Oromo"
+ },
+ "oma": {
+ "english_name": "Omaha-Ponca"
+ },
+ "omb": {
+ "english_name": "Ambae, East"
+ },
+ "omc": {
+ "english_name": "Mochica"
+ },
+ "ome": {
+ "english_name": "Omejes"
+ },
+ "omg": {
+ "english_name": "Omagua"
+ },
+ "omi": {
+ "english_name": "Omi"
+ },
+ "omk": {
+ "english_name": "Omok"
+ },
+ "oml": {
+ "english_name": "Ombo"
+ },
+ "omn": {
+ "english_name": "Minoan"
+ },
+ "omo": {
+ "english_name": "Utarmbung"
+ },
+ "omp": {
+ "english_name": "Manipuri, Old"
+ },
+ "omr": {
+ "english_name": "Marathi, Old"
+ },
+ "omt": {
+ "english_name": "Omotik"
+ },
+ "omu": {
+ "english_name": "Omurano"
+ },
+ "omw": {
+ "english_name": "Tairora, South"
+ },
+ "omx": {
+ "english_name": "Mon, Old"
+ },
+ "ona": {
+ "english_name": "Ona"
+ },
+ "onb": {
+ "english_name": "Lingao"
+ },
+ "one": {
+ "english_name": "Oneida"
+ },
+ "ong": {
+ "english_name": "Olo"
+ },
+ "oni": {
+ "english_name": "Onin"
+ },
+ "onj": {
+ "english_name": "Onjob"
+ },
+ "onk": {
+ "english_name": "One, Kabore"
+ },
+ "onn": {
+ "english_name": "Onobasulu"
+ },
+ "ono": {
+ "english_name": "Onondaga"
+ },
+ "onp": {
+ "english_name": "Sartang"
+ },
+ "onr": {
+ "english_name": "One, Northern"
+ },
+ "ons": {
+ "english_name": "Ono"
+ },
+ "ont": {
+ "english_name": "Ontenu"
+ },
+ "onu": {
+ "english_name": "Unua"
+ },
+ "onw": {
+ "english_name": "Nubian, Old"
+ },
+ "onx": {
+ "english_name": "Onin Based Pidgin"
+ },
+ "ood": {
+ "english_name": "Tohono O'odham"
+ },
+ "oog": {
+ "english_name": "Ong"
+ },
+ "oon": {
+ "english_name": "\u00d6nge"
+ },
+ "oor": {
+ "english_name": "Oorlams"
+ },
+ "oos": {
+ "english_name": "Ossetic, Old"
+ },
+ "opa": {
+ "english_name": "Okpamheri"
+ },
+ "opk": {
+ "english_name": "Kopkaka"
+ },
+ "opm": {
+ "english_name": "Oksapmin"
+ },
+ "opo": {
+ "english_name": "Opao"
+ },
+ "opt": {
+ "english_name": "Opata"
+ },
+ "opy": {
+ "english_name": "Ofay\u00e9"
+ },
+ "or": {
+ "english_name": "Oriya (macrolanguage)",
+ "name": "Oriya (macrolanguage)"
+ },
+ "ora": {
+ "english_name": "Oroha"
+ },
+ "orc": {
+ "english_name": "Orma"
+ },
+ "ore": {
+ "english_name": "Orej\u00f3n"
+ },
+ "org": {
+ "english_name": "Oring"
+ },
+ "orh": {
+ "english_name": "Oroqen"
+ },
+ "orn": {
+ "english_name": "Orang Kanaq"
+ },
+ "oro": {
+ "english_name": "Orokolo"
+ },
+ "orr": {
+ "english_name": "Oruma"
+ },
+ "ors": {
+ "english_name": "Orang Seletar"
+ },
+ "ort": {
+ "english_name": "Oriya, Adivasi"
+ },
+ "oru": {
+ "english_name": "Ormuri"
+ },
+ "orv": {
+ "english_name": "Russian, Old"
+ },
+ "orw": {
+ "english_name": "Oro Win"
+ },
+ "orx": {
+ "english_name": "Oro"
+ },
+ "ory": {
+ "english_name": "Oriya (individual language)"
+ },
+ "orz": {
+ "english_name": "Ormu"
+ },
+ "os": {
+ "english_name": "Ossetian"
+ },
+ "osa": {
+ "english_name": "Osage"
+ },
+ "osc": {
+ "english_name": "Oscan"
+ },
+ "osi": {
+ "english_name": "Osing"
+ },
+ "oso": {
+ "english_name": "Ososo"
+ },
+ "osp": {
+ "english_name": "Spanish, Old"
+ },
+ "ost": {
+ "english_name": "Osatu"
+ },
+ "osu": {
+ "english_name": "One, Southern"
+ },
+ "osx": {
+ "english_name": "Saxon, Old"
+ },
+ "ota": {
+ "english_name": "Turkish, Ottoman (1500-1928)"
+ },
+ "otb": {
+ "english_name": "Tibetan, Old"
+ },
+ "otd": {
+ "english_name": "Ot Danum"
+ },
+ "ote": {
+ "english_name": "Otomi, Mezquital"
+ },
+ "oti": {
+ "english_name": "Oti"
+ },
+ "otk": {
+ "english_name": "Turkish, Old"
+ },
+ "otl": {
+ "english_name": "Otomi, Tilapa"
+ },
+ "otm": {
+ "english_name": "Otomi, Eastern Highland"
+ },
+ "otn": {
+ "english_name": "Otomi, Tenango"
+ },
+ "otq": {
+ "english_name": "Otomi, Quer\u00e9taro"
+ },
+ "otr": {
+ "english_name": "Otoro"
+ },
+ "ots": {
+ "english_name": "Otomi, Estado de M\u00e9xico"
+ },
+ "ott": {
+ "english_name": "Otomi, Temoaya"
+ },
+ "otu": {
+ "english_name": "Otuke"
+ },
+ "otw": {
+ "english_name": "Ottawa"
+ },
+ "otx": {
+ "english_name": "Otomi, Texcatepec"
+ },
+ "oty": {
+ "english_name": "Tamil, Old"
+ },
+ "otz": {
+ "english_name": "Otomi, Ixtenco"
+ },
+ "oua": {
+ "english_name": "Tagargrent"
+ },
+ "oub": {
+ "english_name": "Glio-Oubi"
+ },
+ "oue": {
+ "english_name": "Oune"
+ },
+ "oui": {
+ "english_name": "Uighur, Old"
+ },
+ "oum": {
+ "english_name": "Ouma"
+ },
+ "owi": {
+ "english_name": "Owiniga"
+ },
+ "owl": {
+ "english_name": "Welsh, Old"
+ },
+ "oyb": {
+ "english_name": "Oy"
+ },
+ "oyd": {
+ "english_name": "Oyda"
+ },
+ "oym": {
+ "english_name": "Wayampi"
+ },
+ "oyy": {
+ "english_name": "Oya'oya"
+ },
+ "ozm": {
+ "english_name": "Koonzime"
+ },
+ "pa": {
+ "english_name": "Panjabi",
+ "name": "\u0a2a\u0a70\u0a1c\u0a3e\u0a2c\u0a40"
+ },
+ "pab": {
+ "english_name": "Parec\u00eds"
+ },
+ "pac": {
+ "english_name": "Pacoh"
+ },
+ "pad": {
+ "english_name": "Paumar\u00ed"
+ },
+ "pae": {
+ "english_name": "Pagibete"
+ },
+ "paf": {
+ "english_name": "Paranaw\u00e1t"
+ },
+ "pag": {
+ "english_name": "Pangasinan"
+ },
+ "pah": {
+ "english_name": "Tenharim"
+ },
+ "pai": {
+ "english_name": "Pe"
+ },
+ "pak": {
+ "english_name": "Parakan\u00e3"
+ },
+ "pal": {
+ "english_name": "Pahlavi"
+ },
+ "pam": {
+ "english_name": "Pampanga"
+ },
+ "pao": {
+ "english_name": "Paiute, Northern"
+ },
+ "pap": {
+ "english_name": "Papiamento"
+ },
+ "paq": {
+ "english_name": "Parya"
+ },
+ "par": {
+ "english_name": "Panamint"
+ },
+ "pas": {
+ "english_name": "Papasena"
+ },
+ "pat": {
+ "english_name": "Papitalai"
+ },
+ "pau": {
+ "english_name": "Palauan"
+ },
+ "pav": {
+ "english_name": "Paka\u00e1snovos"
+ },
+ "paw": {
+ "english_name": "Pawnee"
+ },
+ "pax": {
+ "english_name": "Pankarar\u00e9"
+ },
+ "pay": {
+ "english_name": "Pech"
+ },
+ "paz": {
+ "english_name": "Pankarar\u00fa"
+ },
+ "pbb": {
+ "english_name": "P\u00e1ez"
+ },
+ "pbc": {
+ "english_name": "Patamona"
+ },
+ "pbe": {
+ "english_name": "Popoloca, Mezontla"
+ },
+ "pbf": {
+ "english_name": "Popoloca, Coyotepec"
+ },
+ "pbg": {
+ "english_name": "Paraujano"
+ },
+ "pbh": {
+ "english_name": "E'\u00f1apa Woromaipu"
+ },
+ "pbi": {
+ "english_name": "Parkwa"
+ },
+ "pbl": {
+ "english_name": "Mak (Nigeria)"
+ },
+ "pbn": {
+ "english_name": "Kpasam"
+ },
+ "pbo": {
+ "english_name": "Papel"
+ },
+ "pbp": {
+ "english_name": "Badyara"
+ },
+ "pbr": {
+ "english_name": "Pangwa"
+ },
+ "pbs": {
+ "english_name": "Pame, Central"
+ },
+ "pbt": {
+ "english_name": "Pashto, Southern"
+ },
+ "pbu": {
+ "english_name": "Pashto, Northern"
+ },
+ "pbv": {
+ "english_name": "Pnar"
+ },
+ "pby": {
+ "english_name": "Pyu"
+ },
+ "pca": {
+ "english_name": "Popoloca, Santa In\u00e9s Ahuatempan"
+ },
+ "pcb": {
+ "english_name": "Pear"
+ },
+ "pcc": {
+ "english_name": "Bouyei"
+ },
+ "pcd": {
+ "english_name": "Picard"
+ },
+ "pce": {
+ "english_name": "Palaung, Ruching"
+ },
+ "pcf": {
+ "english_name": "Paliyan"
+ },
+ "pcg": {
+ "english_name": "Paniya"
+ },
+ "pch": {
+ "english_name": "Pardhan"
+ },
+ "pci": {
+ "english_name": "Duruwa"
+ },
+ "pcj": {
+ "english_name": "Parenga"
+ },
+ "pck": {
+ "english_name": "Chin, Paite"
+ },
+ "pcl": {
+ "english_name": "Pardhi"
+ },
+ "pcm": {
+ "english_name": "Pidgin, Nigerian"
+ },
+ "pcn": {
+ "english_name": "Piti"
+ },
+ "pcp": {
+ "english_name": "Pacahuara"
+ },
+ "pcw": {
+ "english_name": "Pyapun"
+ },
+ "pda": {
+ "english_name": "Anam"
+ },
+ "pdc": {
+ "english_name": "German, Pennsylvania"
+ },
+ "pdi": {
+ "english_name": "Pa Di"
+ },
+ "pdn": {
+ "english_name": "Podena"
+ },
+ "pdo": {
+ "english_name": "Padoe"
+ },
+ "pdt": {
+ "english_name": "Plautdietsch"
+ },
+ "pdu": {
+ "english_name": "Kayan"
+ },
+ "pea": {
+ "english_name": "Indonesian, Peranakan"
+ },
+ "peb": {
+ "english_name": "Pomo, Eastern"
+ },
+ "ped": {
+ "english_name": "Mala (Papua New Guinea)"
+ },
+ "pee": {
+ "english_name": "Taje"
+ },
+ "pef": {
+ "english_name": "Pomo, Northeastern"
+ },
+ "peg": {
+ "english_name": "Pengo"
+ },
+ "peh": {
+ "english_name": "Bonan"
+ },
+ "pei": {
+ "english_name": "Chichimeca-Jonaz"
+ },
+ "pej": {
+ "english_name": "Pomo, Northern"
+ },
+ "pek": {
+ "english_name": "Penchal"
+ },
+ "pel": {
+ "english_name": "Pekal"
+ },
+ "pem": {
+ "english_name": "Phende"
+ },
+ "peo": {
+ "english_name": "Persian, Old (ca. 600-400 B.C.)"
+ },
+ "pep": {
+ "english_name": "Kunja"
+ },
+ "peq": {
+ "english_name": "Pomo, Southern"
+ },
+ "pes": {
+ "english_name": "Persian, Iranian"
+ },
+ "pev": {
+ "english_name": "P\u00e9mono"
+ },
+ "pex": {
+ "english_name": "Petats"
+ },
+ "pey": {
+ "english_name": "Petjo"
+ },
+ "pez": {
+ "english_name": "Penan, Eastern"
+ },
+ "pfa": {
+ "english_name": "P\u00e1\u00e1fang"
+ },
+ "pfe": {
+ "english_name": "Peere"
+ },
+ "pfl": {
+ "english_name": "Pfaelzisch"
+ },
+ "pga": {
+ "english_name": "Creole Arabic, Sudanese"
+ },
+ "pgg": {
+ "english_name": "Pangwali"
+ },
+ "pgi": {
+ "english_name": "Pagi"
+ },
+ "pgk": {
+ "english_name": "Rerep"
+ },
+ "pgl": {
+ "english_name": "Irish, Primitive"
+ },
+ "pgn": {
+ "english_name": "Paelignian"
+ },
+ "pgs": {
+ "english_name": "Pangseng"
+ },
+ "pgu": {
+ "english_name": "Pagu"
+ },
+ "pha": {
+ "english_name": "Pa-Hng"
+ },
+ "phd": {
+ "english_name": "Phudagi"
+ },
+ "phg": {
+ "english_name": "Phuong"
+ },
+ "phh": {
+ "english_name": "Phukha"
+ },
+ "phk": {
+ "english_name": "Phake"
+ },
+ "phl": {
+ "english_name": "Phalura"
+ },
+ "phm": {
+ "english_name": "Phimbi"
+ },
+ "phn": {
+ "english_name": "Phoenician"
+ },
+ "pho": {
+ "english_name": "Phunoi"
+ },
+ "phq": {
+ "english_name": "Phana'"
+ },
+ "phr": {
+ "english_name": "Pahari-Potwari"
+ },
+ "pht": {
+ "english_name": "Phu Thai"
+ },
+ "phu": {
+ "english_name": "Phuan"
+ },
+ "phv": {
+ "english_name": "Pahlavani"
+ },
+ "phw": {
+ "english_name": "Phangduwali"
+ },
+ "pi": {
+ "english_name": "Pali"
+ },
+ "pia": {
+ "english_name": "Pima Bajo"
+ },
+ "pib": {
+ "english_name": "Yine"
+ },
+ "pic": {
+ "english_name": "Pinji"
+ },
+ "pid": {
+ "english_name": "Piaroa"
+ },
+ "pie": {
+ "english_name": "Piro"
+ },
+ "pif": {
+ "english_name": "Pingelapese"
+ },
+ "pig": {
+ "english_name": "Pisabo"
+ },
+ "pih": {
+ "english_name": "Pitcairn-Norfolk"
+ },
+ "pii": {
+ "english_name": "Pini"
+ },
+ "pij": {
+ "english_name": "Pijao"
+ },
+ "pil": {
+ "english_name": "Yom"
+ },
+ "pim": {
+ "english_name": "Powhatan"
+ },
+ "pin": {
+ "english_name": "Piame"
+ },
+ "pio": {
+ "english_name": "Piapoco"
+ },
+ "pip": {
+ "english_name": "Pero"
+ },
+ "pir": {
+ "english_name": "Piratapuyo"
+ },
+ "pis": {
+ "english_name": "Pijin"
+ },
+ "pit": {
+ "english_name": "Pitta Pitta"
+ },
+ "piu": {
+ "english_name": "Pintupi-Luritja"
+ },
+ "piv": {
+ "english_name": "Pileni"
+ },
+ "piw": {
+ "english_name": "Pimbwe"
+ },
+ "pix": {
+ "english_name": "Piu"
+ },
+ "piy": {
+ "english_name": "Piya-Kwonci"
+ },
+ "piz": {
+ "english_name": "Pije"
+ },
+ "pjt": {
+ "english_name": "Pitjantjatjara"
+ },
+ "pka": {
+ "english_name": "Pr\u0101krit, Ardham\u0101gadh\u012b"
+ },
+ "pkb": {
+ "english_name": "Pokomo"
+ },
+ "pkc": {
+ "english_name": "Paekche"
+ },
+ "pkg": {
+ "english_name": "Pak-Tong"
+ },
+ "pkh": {
+ "english_name": "Pankhu"
+ },
+ "pkn": {
+ "english_name": "Pakanha"
+ },
+ "pko": {
+ "english_name": "P\u00f6koot"
+ },
+ "pkp": {
+ "english_name": "Pukapuka"
+ },
+ "pkr": {
+ "english_name": "Kurumba, Attapady"
+ },
+ "pks": {
+ "english_name": "Pakistan Sign Language"
+ },
+ "pkt": {
+ "english_name": "Maleng"
+ },
+ "pku": {
+ "english_name": "Paku"
+ },
+ "pl": {
+ "english_name": "Polish",
+ "name": "polski"
+ },
+ "pla": {
+ "english_name": "Miani"
+ },
+ "plb": {
+ "english_name": "Polonombauk"
+ },
+ "plc": {
+ "english_name": "Palawano, Central"
+ },
+ "pld": {
+ "english_name": "Polari"
+ },
+ "ple": {
+ "english_name": "Palu'e"
+ },
+ "plg": {
+ "english_name": "Pilag\u00e1"
+ },
+ "plh": {
+ "english_name": "Paulohi"
+ },
+ "plj": {
+ "english_name": "Polci"
+ },
+ "plk": {
+ "english_name": "Shina, Kohistani"
+ },
+ "pll": {
+ "english_name": "Palaung, Shwe"
+ },
+ "pln": {
+ "english_name": "Palenquero"
+ },
+ "plo": {
+ "english_name": "Popoluca, Oluta"
+ },
+ "plp": {
+ "english_name": "Palpa"
+ },
+ "plq": {
+ "english_name": "Palaic"
+ },
+ "plr": {
+ "english_name": "Senoufo, Palaka"
+ },
+ "pls": {
+ "english_name": "Popoloca, San Marcos Tlalcoyalco"
+ },
+ "plt": {
+ "english_name": "Malagasy, Plateau"
+ },
+ "plu": {
+ "english_name": "Palik\u00far"
+ },
+ "plv": {
+ "english_name": "Palawano, Southwest"
+ },
+ "plw": {
+ "english_name": "Palawano, Brooke's Point"
+ },
+ "ply": {
+ "english_name": "Bolyu"
+ },
+ "plz": {
+ "english_name": "Paluan"
+ },
+ "pma": {
+ "english_name": "Paama"
+ },
+ "pmb": {
+ "english_name": "Pambia"
+ },
+ "pmc": {
+ "english_name": "Palumata"
+ },
+ "pmd": {
+ "english_name": "Pallanganmiddang"
+ },
+ "pme": {
+ "english_name": "Pwaamei"
+ },
+ "pmf": {
+ "english_name": "Pamona"
+ },
+ "pmh": {
+ "english_name": "Pr\u0101krit, M\u0101h\u0101r\u0101\u1e63\u1e6dri"
+ },
+ "pmi": {
+ "english_name": "Pumi, Northern"
+ },
+ "pmj": {
+ "english_name": "Pumi, Southern"
+ },
+ "pmk": {
+ "english_name": "Pamlico"
+ },
+ "pml": {
+ "english_name": "Lingua Franca"
+ },
+ "pmm": {
+ "english_name": "Pomo"
+ },
+ "pmn": {
+ "english_name": "Pam"
+ },
+ "pmo": {
+ "english_name": "Pom"
+ },
+ "pmq": {
+ "english_name": "Pame, Northern"
+ },
+ "pmr": {
+ "english_name": "Paynamar"
+ },
+ "pms": {
+ "english_name": "Piemontese"
+ },
+ "pmt": {
+ "english_name": "Tuamotuan"
+ },
+ "pmw": {
+ "english_name": "Miwok, Plains"
+ },
+ "pmx": {
+ "english_name": "Naga, Poumei"
+ },
+ "pmy": {
+ "english_name": "Malay, Papuan"
+ },
+ "pmz": {
+ "english_name": "Pame, Southern"
+ },
+ "pna": {
+ "english_name": "Punan Bah-Biau"
+ },
+ "pnb": {
+ "english_name": "Panjabi, Western"
+ },
+ "pnc": {
+ "english_name": "Pannei"
+ },
+ "pne": {
+ "english_name": "Penan, Western"
+ },
+ "png": {
+ "english_name": "Pongu"
+ },
+ "pnh": {
+ "english_name": "Penrhyn"
+ },
+ "pni": {
+ "english_name": "Aoheng"
+ },
+ "pnj": {
+ "english_name": "Pinjarup"
+ },
+ "pnk": {
+ "english_name": "Paunaka"
+ },
+ "pnl": {
+ "english_name": "Paleni"
+ },
+ "pnm": {
+ "english_name": "Punan Batu 1"
+ },
+ "pnn": {
+ "english_name": "Pinai-Hagahai"
+ },
+ "pno": {
+ "english_name": "Panobo"
+ },
+ "pnp": {
+ "english_name": "Pancana"
+ },
+ "pnq": {
+ "english_name": "Pana (Burkina Faso)"
+ },
+ "pnr": {
+ "english_name": "Panim"
+ },
+ "pns": {
+ "english_name": "Ponosakan"
+ },
+ "pnt": {
+ "english_name": "Pontic"
+ },
+ "pnu": {
+ "english_name": "Bunu, Jiongnai"
+ },
+ "pnv": {
+ "english_name": "Pinigura"
+ },
+ "pnw": {
+ "english_name": "Panytyima"
+ },
+ "pnx": {
+ "english_name": "Phong-Kniang"
+ },
+ "pny": {
+ "english_name": "Pinyin"
+ },
+ "pnz": {
+ "english_name": "Pana (Central African Republic)"
+ },
+ "poc": {
+ "english_name": "Poqomam"
+ },
+ "pod": {
+ "english_name": "Ponares"
+ },
+ "poe": {
+ "english_name": "Popoloca, San Juan Atzingo"
+ },
+ "pof": {
+ "english_name": "Poke"
+ },
+ "pog": {
+ "english_name": "Potigu\u00e1ra"
+ },
+ "poh": {
+ "english_name": "Poqomchi'"
+ },
+ "poi": {
+ "english_name": "Popoluca, Highland"
+ },
+ "pok": {
+ "english_name": "Pokang\u00e1"
+ },
+ "pom": {
+ "english_name": "Pomo, Southeastern"
+ },
+ "pon": {
+ "english_name": "Pohnpeian"
+ },
+ "poo": {
+ "english_name": "Pomo, Central"
+ },
+ "pop": {
+ "english_name": "Pwapw\u00e2"
+ },
+ "poq": {
+ "english_name": "Popoluca, Texistepec"
+ },
+ "pos": {
+ "english_name": "Popoluca, Sayula"
+ },
+ "pot": {
+ "english_name": "Potawatomi"
+ },
+ "pov": {
+ "english_name": "Crioulo, Upper Guinea"
+ },
+ "pow": {
+ "english_name": "Popoloca, San Felipe Otlaltepec"
+ },
+ "pox": {
+ "english_name": "Polabian"
+ },
+ "poy": {
+ "english_name": "Pogolo"
+ },
+ "ppa": {
+ "english_name": "Pao"
+ },
+ "ppe": {
+ "english_name": "Papi"
+ },
+ "ppi": {
+ "english_name": "Paipai"
+ },
+ "ppk": {
+ "english_name": "Uma"
+ },
+ "ppl": {
+ "english_name": "Pipil"
+ },
+ "ppm": {
+ "english_name": "Papuma"
+ },
+ "ppn": {
+ "english_name": "Papapana"
+ },
+ "ppo": {
+ "english_name": "Folopa"
+ },
+ "ppp": {
+ "english_name": "Pelende"
+ },
+ "ppq": {
+ "english_name": "Pei"
+ },
+ "pps": {
+ "english_name": "Popoloca, San Lu\u00eds Temalacayuca"
+ },
+ "ppt": {
+ "english_name": "Pare"
+ },
+ "ppu": {
+ "english_name": "Papora"
+ },
+ "pqa": {
+ "english_name": "Pa'a"
+ },
+ "pqm": {
+ "english_name": "Malecite-Passamaquoddy"
+ },
+ "prb": {
+ "english_name": "Lua'"
+ },
+ "prc": {
+ "english_name": "Parachi"
+ },
+ "prd": {
+ "english_name": "Parsi-Dari"
+ },
+ "pre": {
+ "english_name": "Principense"
+ },
+ "prf": {
+ "english_name": "Paranan"
+ },
+ "prg": {
+ "english_name": "Prussian"
+ },
+ "prh": {
+ "english_name": "Porohanon"
+ },
+ "pri": {
+ "english_name": "Paic\u00ee"
+ },
+ "prk": {
+ "english_name": "Parauk"
+ },
+ "prl": {
+ "english_name": "Peruvian Sign Language"
+ },
+ "prm": {
+ "english_name": "Kibiri"
+ },
+ "prn": {
+ "english_name": "Prasuni"
+ },
+ "pro": {
+ "english_name": "Proven\u00e7al, Old (to 1500)"
+ },
+ "prp": {
+ "english_name": "Parsi"
+ },
+ "prq": {
+ "english_name": "Ash\u00e9ninka Peren\u00e9"
+ },
+ "prr": {
+ "english_name": "Puri"
+ },
+ "prs": {
+ "english_name": "Dari"
+ },
+ "prt": {
+ "english_name": "Phai"
+ },
+ "pru": {
+ "english_name": "Puragi"
+ },
+ "prw": {
+ "english_name": "Parawen"
+ },
+ "prx": {
+ "english_name": "Purik"
+ },
+ "pry": {
+ "english_name": "Pray 3"
+ },
+ "prz": {
+ "english_name": "Providencia Sign Language"
+ },
+ "ps": {
+ "english_name": "Pushto",
+ "name": "Pushto"
+ },
+ "psa": {
+ "english_name": "Awyu, Asue"
+ },
+ "psc": {
+ "english_name": "Persian Sign Language"
+ },
+ "psd": {
+ "english_name": "Plains Indian Sign Language"
+ },
+ "pse": {
+ "english_name": "Malay, Central"
+ },
+ "psg": {
+ "english_name": "Penang Sign Language"
+ },
+ "psh": {
+ "english_name": "Pashayi, Southwest"
+ },
+ "psi": {
+ "english_name": "Pashayi, Southeast"
+ },
+ "psl": {
+ "english_name": "Puerto Rican Sign Language"
+ },
+ "psm": {
+ "english_name": "Pauserna"
+ },
+ "psn": {
+ "english_name": "Panasuan"
+ },
+ "pso": {
+ "english_name": "Polish Sign Language"
+ },
+ "psp": {
+ "english_name": "Philippine Sign Language"
+ },
+ "psq": {
+ "english_name": "Pasi"
+ },
+ "psr": {
+ "english_name": "Portuguese Sign Language"
+ },
+ "pss": {
+ "english_name": "Kaulong"
+ },
+ "pst": {
+ "english_name": "Pashto, Central"
+ },
+ "psu": {
+ "english_name": "Pr\u0101krit, Sauraseni"
+ },
+ "psw": {
+ "english_name": "Port Sandwich"
+ },
+ "psy": {
+ "english_name": "Piscataway"
+ },
+ "pt": {
+ "english_name": "Portuguese",
+ "name": "Portugu\u00eas"
+ },
+ "pta": {
+ "english_name": "Pai Tavytera"
+ },
+ "pth": {
+ "english_name": "Patax\u00f3 H\u00e3-Ha-H\u00e3e"
+ },
+ "pti": {
+ "english_name": "Pintiini"
+ },
+ "ptn": {
+ "english_name": "Patani"
+ },
+ "pto": {
+ "english_name": "Zo'\u00e9"
+ },
+ "ptp": {
+ "english_name": "Patep"
+ },
+ "ptr": {
+ "english_name": "Piamatsina"
+ },
+ "ptt": {
+ "english_name": "Enrekang"
+ },
+ "ptu": {
+ "english_name": "Bambam"
+ },
+ "ptv": {
+ "english_name": "Port Vato"
+ },
+ "ptw": {
+ "english_name": "Pentlatch"
+ },
+ "pty": {
+ "english_name": "Pathiya"
+ },
+ "pua": {
+ "english_name": "Purepecha, Western Highland"
+ },
+ "pub": {
+ "english_name": "Purum"
+ },
+ "puc": {
+ "english_name": "Punan Merap"
+ },
+ "pud": {
+ "english_name": "Punan Aput"
+ },
+ "pue": {
+ "english_name": "Puelche"
+ },
+ "puf": {
+ "english_name": "Punan Merah"
+ },
+ "pug": {
+ "english_name": "Phuie"
+ },
+ "pui": {
+ "english_name": "Puinave"
+ },
+ "puj": {
+ "english_name": "Punan Tubu"
+ },
+ "puk": {
+ "english_name": "Pu Ko"
+ },
+ "pum": {
+ "english_name": "Puma"
+ },
+ "puo": {
+ "english_name": "Puoc"
+ },
+ "pup": {
+ "english_name": "Pulabu"
+ },
+ "puq": {
+ "english_name": "Puquina"
+ },
+ "pur": {
+ "english_name": "Purubor\u00e1"
+ },
+ "put": {
+ "english_name": "Putoh"
+ },
+ "puu": {
+ "english_name": "Punu"
+ },
+ "puw": {
+ "english_name": "Puluwatese"
+ },
+ "pux": {
+ "english_name": "Puare"
+ },
+ "puy": {
+ "english_name": "Purisime\u00f1o"
+ },
+ "pwa": {
+ "english_name": "Pawaia"
+ },
+ "pwb": {
+ "english_name": "Panawa"
+ },
+ "pwg": {
+ "english_name": "Gapapaiwa"
+ },
+ "pwi": {
+ "english_name": "Patwin"
+ },
+ "pwm": {
+ "english_name": "Molbog"
+ },
+ "pwn": {
+ "english_name": "Paiwan"
+ },
+ "pwo": {
+ "english_name": "Karen, Pwo Western"
+ },
+ "pwr": {
+ "english_name": "Powari"
+ },
+ "pww": {
+ "english_name": "Karen, Pwo Northern"
+ },
+ "pxm": {
+ "english_name": "Mixe, Quetzaltepec"
+ },
+ "pye": {
+ "english_name": "Krumen, Pye"
+ },
+ "pym": {
+ "english_name": "Fyam"
+ },
+ "pyn": {
+ "english_name": "Poyan\u00e1wa"
+ },
+ "pys": {
+ "english_name": "Paraguayan Sign Language"
+ },
+ "pyu": {
+ "english_name": "Puyuma"
+ },
+ "pyx": {
+ "english_name": "Pyu (Myanmar)"
+ },
+ "pyy": {
+ "english_name": "Pyen"
+ },
+ "pzn": {
+ "english_name": "Naga, Para"
+ },
+ "qu": {
+ "english_name": "Quechua"
+ },
+ "qua": {
+ "english_name": "Quapaw"
+ },
+ "qub": {
+ "english_name": "Quechua, Huallaga Hu\u00e1nuco"
+ },
+ "quc": {
+ "english_name": "K'iche'"
+ },
+ "qud": {
+ "english_name": "Quichua, Calder\u00f3n Highland"
+ },
+ "quf": {
+ "english_name": "Quechua, Lambayeque"
+ },
+ "qug": {
+ "english_name": "Quichua, Chimborazo Highland"
+ },
+ "quh": {
+ "english_name": "Quechua, South Bolivian"
+ },
+ "qui": {
+ "english_name": "Quileute"
+ },
+ "quk": {
+ "english_name": "Quechua, Chachapoyas"
+ },
+ "qul": {
+ "english_name": "Quechua, North Bolivian"
+ },
+ "qum": {
+ "english_name": "Sipacapense"
+ },
+ "qun": {
+ "english_name": "Quinault"
+ },
+ "qup": {
+ "english_name": "Quechua, Southern Pastaza"
+ },
+ "quq": {
+ "english_name": "Quinqui"
+ },
+ "qur": {
+ "english_name": "Quechua, Yanahuanca Pasco"
+ },
+ "qus": {
+ "english_name": "Quichua, Santiago del Estero"
+ },
+ "quv": {
+ "english_name": "Sacapulteco"
+ },
+ "quw": {
+ "english_name": "Quichua, Tena Lowland"
+ },
+ "qux": {
+ "english_name": "Quechua, Yauyos"
+ },
+ "quy": {
+ "english_name": "Quechua, Ayacucho"
+ },
+ "quz": {
+ "english_name": "Quechua, Cusco"
+ },
+ "qva": {
+ "english_name": "Quechua, Ambo-Pasco"
+ },
+ "qvc": {
+ "english_name": "Quechua, Cajamarca"
+ },
+ "qve": {
+ "english_name": "Quechua, Eastern Apur\u00edmac"
+ },
+ "qvh": {
+ "english_name": "Quechua, Huamal\u00edes-Dos de Mayo Hu\u00e1nuco"
+ },
+ "qvi": {
+ "english_name": "Quichua, Imbabura Highland"
+ },
+ "qvj": {
+ "english_name": "Quichua, Loja Highland"
+ },
+ "qvl": {
+ "english_name": "Quechua, Cajatambo North Lima"
+ },
+ "qvm": {
+ "english_name": "Quechua, Margos-Yarowilca-Lauricocha"
+ },
+ "qvn": {
+ "english_name": "Quechua, North Jun\u00edn"
+ },
+ "qvo": {
+ "english_name": "Quechua, Napo Lowland"
+ },
+ "qvp": {
+ "english_name": "Quechua, Pacaraos"
+ },
+ "qvs": {
+ "english_name": "Quechua, San Mart\u00edn"
+ },
+ "qvw": {
+ "english_name": "Quechua, Huaylla Wanca"
+ },
+ "qvy": {
+ "english_name": "Queyu"
+ },
+ "qvz": {
+ "english_name": "Quichua, Northern Pastaza"
+ },
+ "qwa": {
+ "english_name": "Quechua, Corongo Ancash"
+ },
+ "qwc": {
+ "english_name": "Quechua, Classical"
+ },
+ "qwh": {
+ "english_name": "Quechua, Huaylas Ancash"
+ },
+ "qwm": {
+ "english_name": "Kuman (Russia)"
+ },
+ "qws": {
+ "english_name": "Quechua, Sihuas Ancash"
+ },
+ "qwt": {
+ "english_name": "Kwalhioqua-Tlatskanai"
+ },
+ "qxa": {
+ "english_name": "Quechua, Chiqui\u00e1n Ancash"
+ },
+ "qxc": {
+ "english_name": "Quechua, Chincha"
+ },
+ "qxh": {
+ "english_name": "Quechua, Panao Hu\u00e1nuco"
+ },
+ "qxl": {
+ "english_name": "Quichua, Salasaca Highland"
+ },
+ "qxn": {
+ "english_name": "Quechua, Northern Conchucos Ancash"
+ },
+ "qxo": {
+ "english_name": "Quechua, Southern Conchucos Ancash"
+ },
+ "qxp": {
+ "english_name": "Quechua, Puno"
+ },
+ "qxq": {
+ "english_name": "Qashqa'i"
+ },
+ "qxr": {
+ "english_name": "Quichua, Ca\u00f1ar Highland"
+ },
+ "qxs": {
+ "english_name": "Qiang, Southern"
+ },
+ "qxt": {
+ "english_name": "Quechua, Santa Ana de Tusi Pasco"
+ },
+ "qxu": {
+ "english_name": "Quechua, Arequipa-La Uni\u00f3n"
+ },
+ "qxw": {
+ "english_name": "Quechua, Jauja Wanca"
+ },
+ "qya": {
+ "english_name": "Quenya"
+ },
+ "qyp": {
+ "english_name": "Quiripi"
+ },
+ "raa": {
+ "english_name": "Dungmali"
+ },
+ "rab": {
+ "english_name": "Camling"
+ },
+ "rac": {
+ "english_name": "Rasawa"
+ },
+ "rad": {
+ "english_name": "Rade"
+ },
+ "raf": {
+ "english_name": "Meohang, Western"
+ },
+ "rag": {
+ "english_name": "Logooli"
+ },
+ "rah": {
+ "english_name": "Rabha"
+ },
+ "rai": {
+ "english_name": "Ramoaaina"
+ },
+ "raj": {
+ "english_name": "Rajasthani"
+ },
+ "rak": {
+ "english_name": "Tulu-Bohuai"
+ },
+ "ral": {
+ "english_name": "Ralte"
+ },
+ "ram": {
+ "english_name": "Canela"
+ },
+ "ran": {
+ "english_name": "Riantana"
+ },
+ "rao": {
+ "english_name": "Rao"
+ },
+ "rap": {
+ "english_name": "Rapanui"
+ },
+ "raq": {
+ "english_name": "Saam"
+ },
+ "rar": {
+ "english_name": "Rarotongan"
+ },
+ "ras": {
+ "english_name": "Tegali"
+ },
+ "rat": {
+ "english_name": "Razajerdi"
+ },
+ "rau": {
+ "english_name": "Raute"
+ },
+ "rav": {
+ "english_name": "Sampang"
+ },
+ "raw": {
+ "english_name": "Rawang"
+ },
+ "rax": {
+ "english_name": "Rang"
+ },
+ "ray": {
+ "english_name": "Rapa"
+ },
+ "raz": {
+ "english_name": "Rahambuu"
+ },
+ "rbb": {
+ "english_name": "Palaung, Rumai"
+ },
+ "rbk": {
+ "english_name": "Bontok, Northern"
+ },
+ "rbl": {
+ "english_name": "Bikol, Miraya"
+ },
+ "rbp": {
+ "english_name": "Barababaraba"
+ },
+ "rcf": {
+ "english_name": "Creole French, R\u00e9union"
+ },
+ "rdb": {
+ "english_name": "Rudbari"
+ },
+ "rea": {
+ "english_name": "Rerau"
+ },
+ "reb": {
+ "english_name": "Rembong"
+ },
+ "ree": {
+ "english_name": "Kayan, Rejang"
+ },
+ "reg": {
+ "english_name": "Kara (Tanzania)"
+ },
+ "rei": {
+ "english_name": "Reli"
+ },
+ "rej": {
+ "english_name": "Rejang"
+ },
+ "rel": {
+ "english_name": "Rendille"
+ },
+ "rem": {
+ "english_name": "Remo"
+ },
+ "ren": {
+ "english_name": "Rengao"
+ },
+ "rer": {
+ "english_name": "Rer Bare"
+ },
+ "res": {
+ "english_name": "Reshe"
+ },
+ "ret": {
+ "english_name": "Retta"
+ },
+ "rey": {
+ "english_name": "Reyesano"
+ },
+ "rga": {
+ "english_name": "Roria"
+ },
+ "rge": {
+ "english_name": "Romano-Greek"
+ },
+ "rgk": {
+ "english_name": "Rangkas"
+ },
+ "rgn": {
+ "english_name": "Romagnol"
+ },
+ "rgr": {
+ "english_name": "Res\u00edgaro"
+ },
+ "rgs": {
+ "english_name": "Roglai, Southern"
+ },
+ "rgu": {
+ "english_name": "Ringgou"
+ },
+ "rhg": {
+ "english_name": "Rohingya"
+ },
+ "rhp": {
+ "english_name": "Yahang"
+ },
+ "ria": {
+ "english_name": "Riang (India)"
+ },
+ "rie": {
+ "english_name": "Rien"
+ },
+ "rif": {
+ "english_name": "Tarifit"
+ },
+ "ril": {
+ "english_name": "Riang (Myanmar)"
+ },
+ "rim": {
+ "english_name": "Nyaturu"
+ },
+ "rin": {
+ "english_name": "Nungu"
+ },
+ "rir": {
+ "english_name": "Ribun"
+ },
+ "rit": {
+ "english_name": "Ritarungo"
+ },
+ "riu": {
+ "english_name": "Riung"
+ },
+ "rjg": {
+ "english_name": "Rajong"
+ },
+ "rji": {
+ "english_name": "Raji"
+ },
+ "rjs": {
+ "english_name": "Rajbanshi"
+ },
+ "rka": {
+ "english_name": "Kraol"
+ },
+ "rkb": {
+ "english_name": "Rikbaktsa"
+ },
+ "rkh": {
+ "english_name": "Rakahanga-Manihiki"
+ },
+ "rki": {
+ "english_name": "Rakhine"
+ },
+ "rkm": {
+ "english_name": "Marka"
+ },
+ "rkt": {
+ "english_name": "Rangpuri"
+ },
+ "rkw": {
+ "english_name": "Arakwal"
+ },
+ "rm": {
+ "english_name": "Romansh"
+ },
+ "rma": {
+ "english_name": "Rama"
+ },
+ "rmb": {
+ "english_name": "Rembarunga"
+ },
+ "rmc": {
+ "english_name": "Romani, Carpathian"
+ },
+ "rmd": {
+ "english_name": "Danish, Traveller"
+ },
+ "rme": {
+ "english_name": "Angloromani"
+ },
+ "rmf": {
+ "english_name": "Romani, Kalo Finnish"
+ },
+ "rmg": {
+ "english_name": "Norwegian, Traveller"
+ },
+ "rmh": {
+ "english_name": "Murkim"
+ },
+ "rmi": {
+ "english_name": "Lomavren"
+ },
+ "rmk": {
+ "english_name": "Romkun"
+ },
+ "rml": {
+ "english_name": "Romani, Baltic"
+ },
+ "rmm": {
+ "english_name": "Roma"
+ },
+ "rmn": {
+ "english_name": "Romani, Balkan"
+ },
+ "rmo": {
+ "english_name": "Romani, Sinte"
+ },
+ "rmp": {
+ "english_name": "Rempi"
+ },
+ "rmq": {
+ "english_name": "Cal\u00f3"
+ },
+ "rms": {
+ "english_name": "Romanian Sign Language"
+ },
+ "rmt": {
+ "english_name": "Domari"
+ },
+ "rmu": {
+ "english_name": "Romani, Tavringer"
+ },
+ "rmv": {
+ "english_name": "Romanova"
+ },
+ "rmw": {
+ "english_name": "Romani, Welsh"
+ },
+ "rmx": {
+ "english_name": "Romam"
+ },
+ "rmy": {
+ "english_name": "Romani, Vlax"
+ },
+ "rmz": {
+ "english_name": "Marma"
+ },
+ "rn": {
+ "english_name": "Rundi"
+ },
+ "rna": {
+ "english_name": "Runa"
+ },
+ "rnd": {
+ "english_name": "Ruund"
+ },
+ "rng": {
+ "english_name": "Ronga"
+ },
+ "rnl": {
+ "english_name": "Ranglong"
+ },
+ "rnn": {
+ "english_name": "Roon"
+ },
+ "rnp": {
+ "english_name": "Rongpo"
+ },
+ "rnr": {
+ "english_name": "Nari Nari"
+ },
+ "rnw": {
+ "english_name": "Rungwa"
+ },
+ "ro": {
+ "english_name": "Romanian",
+ "name": "Rom\u00e2n\u0103"
+ },
+ "rob": {
+ "english_name": "Tae'"
+ },
+ "roc": {
+ "english_name": "Roglai, Cacgia"
+ },
+ "rod": {
+ "english_name": "Rogo"
+ },
+ "roe": {
+ "english_name": "Ronji"
+ },
+ "rof": {
+ "english_name": "Rombo"
+ },
+ "rog": {
+ "english_name": "Roglai, Northern"
+ },
+ "rol": {
+ "english_name": "Romblomanon"
+ },
+ "rom": {
+ "english_name": "Romany"
+ },
+ "roo": {
+ "english_name": "Rotokas"
+ },
+ "rop": {
+ "english_name": "Kriol"
+ },
+ "ror": {
+ "english_name": "Rongga"
+ },
+ "rou": {
+ "english_name": "Runga"
+ },
+ "row": {
+ "english_name": "Dela-Oenale"
+ },
+ "rpn": {
+ "english_name": "Repanbitip"
+ },
+ "rpt": {
+ "english_name": "Rapting"
+ },
+ "rri": {
+ "english_name": "Ririo"
+ },
+ "rro": {
+ "english_name": "Waima"
+ },
+ "rrt": {
+ "english_name": "Arritinngithigh"
+ },
+ "rsb": {
+ "english_name": "Romano-Serbian"
+ },
+ "rsi": {
+ "english_name": "Rennellese Sign Language"
+ },
+ "rsl": {
+ "english_name": "Russian Sign Language"
+ },
+ "rtc": {
+ "english_name": "Chin, Rungtu"
+ },
+ "rth": {
+ "english_name": "Ratahan"
+ },
+ "rtm": {
+ "english_name": "Rotuman"
+ },
+ "rtw": {
+ "english_name": "Rathawi"
+ },
+ "ru": {
+ "english_name": "Russian",
+ "name": "\u0440\u0443\u0441\u0441\u043a\u0438\u0439"
+ },
+ "rub": {
+ "english_name": "Gungu"
+ },
+ "ruc": {
+ "english_name": "Ruuli"
+ },
+ "rue": {
+ "english_name": "Rusyn"
+ },
+ "ruf": {
+ "english_name": "Luguru"
+ },
+ "rug": {
+ "english_name": "Roviana"
+ },
+ "ruh": {
+ "english_name": "Ruga"
+ },
+ "rui": {
+ "english_name": "Rufiji"
+ },
+ "ruk": {
+ "english_name": "Che"
+ },
+ "ruo": {
+ "english_name": "Romanian, Istro"
+ },
+ "rup": {
+ "english_name": "Romanian, Macedo-"
+ },
+ "ruq": {
+ "english_name": "Romanian, Megleno"
+ },
+ "rut": {
+ "english_name": "Rutul"
+ },
+ "ruu": {
+ "english_name": "Lobu, Lanas"
+ },
+ "ruy": {
+ "english_name": "Mala (Nigeria)"
+ },
+ "ruz": {
+ "english_name": "Ruma"
+ },
+ "rw": {
+ "english_name": "Kinyarwanda",
+ "name": "Ikinyarwanda"
+ },
+ "rwa": {
+ "english_name": "Rawo"
+ },
+ "rwk": {
+ "english_name": "Rwa"
+ },
+ "rwm": {
+ "english_name": "Amba (Uganda)"
+ },
+ "rwo": {
+ "english_name": "Rawa"
+ },
+ "rwr": {
+ "english_name": "Marwari (India)"
+ },
+ "rxd": {
+ "english_name": "Ngardi"
+ },
+ "rxw": {
+ "english_name": "Karuwali"
+ },
+ "ryn": {
+ "english_name": "Amami-Oshima, Northern"
+ },
+ "rys": {
+ "english_name": "Yaeyama"
+ },
+ "ryu": {
+ "english_name": "Okinawan, Central"
+ },
+ "sa": {
+ "english_name": "Sanskrit"
+ },
+ "saa": {
+ "english_name": "Saba"
+ },
+ "sab": {
+ "english_name": "Buglere"
+ },
+ "sac": {
+ "english_name": "Meskwaki"
+ },
+ "sad": {
+ "english_name": "Sandawe"
+ },
+ "sae": {
+ "english_name": "Saban\u00ea"
+ },
+ "saf": {
+ "english_name": "Safaliba"
+ },
+ "sah": {
+ "english_name": "Yakut"
+ },
+ "saj": {
+ "english_name": "Sahu"
+ },
+ "sak": {
+ "english_name": "Sake"
+ },
+ "sam": {
+ "english_name": "Aramaic, Samaritan"
+ },
+ "sao": {
+ "english_name": "Sause"
+ },
+ "saq": {
+ "english_name": "Samburu"
+ },
+ "sar": {
+ "english_name": "Saraveca"
+ },
+ "sas": {
+ "english_name": "Sasak"
+ },
+ "sat": {
+ "english_name": "Santali"
+ },
+ "sau": {
+ "english_name": "Saleman"
+ },
+ "sav": {
+ "english_name": "Saafi-Saafi"
+ },
+ "saw": {
+ "english_name": "Sawi"
+ },
+ "sax": {
+ "english_name": "Sa"
+ },
+ "say": {
+ "english_name": "Saya"
+ },
+ "saz": {
+ "english_name": "Saurashtra"
+ },
+ "sba": {
+ "english_name": "Ngambay"
+ },
+ "sbb": {
+ "english_name": "Simbo"
+ },
+ "sbc": {
+ "english_name": "Kele (Papua New Guinea)"
+ },
+ "sbd": {
+ "english_name": "Samo, Southern"
+ },
+ "sbe": {
+ "english_name": "Saliba"
+ },
+ "sbf": {
+ "english_name": "Shabo"
+ },
+ "sbg": {
+ "english_name": "Seget"
+ },
+ "sbh": {
+ "english_name": "Sori-Harengan"
+ },
+ "sbi": {
+ "english_name": "Seti"
+ },
+ "sbj": {
+ "english_name": "Surbakhal"
+ },
+ "sbk": {
+ "english_name": "Safwa"
+ },
+ "sbl": {
+ "english_name": "Sambal, Botolan"
+ },
+ "sbm": {
+ "english_name": "Sagala"
+ },
+ "sbn": {
+ "english_name": "Bhil, Sindhi"
+ },
+ "sbo": {
+ "english_name": "Sab\u00fcm"
+ },
+ "sbp": {
+ "english_name": "Sangu (Tanzania)"
+ },
+ "sbq": {
+ "english_name": "Sileibi"
+ },
+ "sbr": {
+ "english_name": "Sembakung Murut"
+ },
+ "sbs": {
+ "english_name": "Subiya"
+ },
+ "sbt": {
+ "english_name": "Kimki"
+ },
+ "sbu": {
+ "english_name": "Bhoti, Stod"
+ },
+ "sbv": {
+ "english_name": "Sabine"
+ },
+ "sbw": {
+ "english_name": "Simba"
+ },
+ "sbx": {
+ "english_name": "Seberuang"
+ },
+ "sby": {
+ "english_name": "Soli"
+ },
+ "sbz": {
+ "english_name": "Sara Kaba"
+ },
+ "sc": {
+ "english_name": "Sardinian"
+ },
+ "scb": {
+ "english_name": "Chut"
+ },
+ "sce": {
+ "english_name": "Dongxiang"
+ },
+ "scf": {
+ "english_name": "Creole French, San Miguel"
+ },
+ "scg": {
+ "english_name": "Sanggau"
+ },
+ "sch": {
+ "english_name": "Sakachep"
+ },
+ "sci": {
+ "english_name": "Creole Malay, Sri Lankan"
+ },
+ "sck": {
+ "english_name": "Sadri"
+ },
+ "scl": {
+ "english_name": "Shina"
+ },
+ "scn": {
+ "english_name": "Sicilian"
+ },
+ "sco": {
+ "english_name": "Scots"
+ },
+ "scp": {
+ "english_name": "Helambu Sherpa"
+ },
+ "scq": {
+ "english_name": "Sa'och"
+ },
+ "scs": {
+ "english_name": "Slavey, North"
+ },
+ "scu": {
+ "english_name": "Shumcho"
+ },
+ "scv": {
+ "english_name": "Sheni"
+ },
+ "scw": {
+ "english_name": "Sha"
+ },
+ "scx": {
+ "english_name": "Sicel"
+ },
+ "sd": {
+ "english_name": "Sindhi"
+ },
+ "sda": {
+ "english_name": "Toraja-Sa'dan"
+ },
+ "sdb": {
+ "english_name": "Shabak"
+ },
+ "sdc": {
+ "english_name": "Sardinian, Sassarese"
+ },
+ "sde": {
+ "english_name": "Surubu"
+ },
+ "sdf": {
+ "english_name": "Sarli"
+ },
+ "sdg": {
+ "english_name": "Savi"
+ },
+ "sdh": {
+ "english_name": "Kurdish, Southern"
+ },
+ "sdj": {
+ "english_name": "Suundi"
+ },
+ "sdk": {
+ "english_name": "Sos Kundi"
+ },
+ "sdl": {
+ "english_name": "Saudi Arabian Sign Language"
+ },
+ "sdm": {
+ "english_name": "Semandang"
+ },
+ "sdn": {
+ "english_name": "Sardinian, Gallurese"
+ },
+ "sdo": {
+ "english_name": "Bidayuh, Bukar-Sadung"
+ },
+ "sdp": {
+ "english_name": "Sherdukpen"
+ },
+ "sdr": {
+ "english_name": "Sadri, Oraon"
+ },
+ "sds": {
+ "english_name": "Sened"
+ },
+ "sdt": {
+ "english_name": "Shuadit"
+ },
+ "sdu": {
+ "english_name": "Sarudu"
+ },
+ "sdx": {
+ "english_name": "Melanau, Sibu"
+ },
+ "sdz": {
+ "english_name": "Sallands"
+ },
+ "se": {
+ "english_name": "Sami, Northern"
+ },
+ "sea": {
+ "english_name": "Semai"
+ },
+ "seb": {
+ "english_name": "Senoufo, Shempire"
+ },
+ "sec": {
+ "english_name": "Sechelt"
+ },
+ "sed": {
+ "english_name": "Sedang"
+ },
+ "see": {
+ "english_name": "Seneca"
+ },
+ "sef": {
+ "english_name": "Senoufo, Cebaara"
+ },
+ "seg": {
+ "english_name": "Segeju"
+ },
+ "seh": {
+ "english_name": "Sena"
+ },
+ "sei": {
+ "english_name": "Seri"
+ },
+ "sej": {
+ "english_name": "Sene"
+ },
+ "sek": {
+ "english_name": "Sekani"
+ },
+ "sel": {
+ "english_name": "Selkup"
+ },
+ "sen": {
+ "english_name": "S\u00e9noufo, Nanerig\u00e9"
+ },
+ "seo": {
+ "english_name": "Suarmin"
+ },
+ "sep": {
+ "english_name": "S\u00e9noufo, S\u00ecc\u00ect\u00e9"
+ },
+ "seq": {
+ "english_name": "S\u00e9noufo, Senara"
+ },
+ "ser": {
+ "english_name": "Serrano"
+ },
+ "ses": {
+ "english_name": "Songhai, Koyraboro Senni"
+ },
+ "set": {
+ "english_name": "Sentani"
+ },
+ "seu": {
+ "english_name": "Serui-Laut"
+ },
+ "sev": {
+ "english_name": "Senoufo, Nyarafolo"
+ },
+ "sew": {
+ "english_name": "Sewa Bay"
+ },
+ "sey": {
+ "english_name": "Secoya"
+ },
+ "sez": {
+ "english_name": "Chin, Senthang"
+ },
+ "sfb": {
+ "english_name": "Langue des signes de Belgique Francophone"
+ },
+ "sfe": {
+ "english_name": "Subanen, Eastern"
+ },
+ "sfm": {
+ "english_name": "Miao, Small Flowery"
+ },
+ "sfs": {
+ "english_name": "South African Sign Language"
+ },
+ "sfw": {
+ "english_name": "Sehwi"
+ },
+ "sg": {
+ "english_name": "Sango"
+ },
+ "sga": {
+ "english_name": "Irish, Old (to 900)"
+ },
+ "sgb": {
+ "english_name": "Ayta, Mag-antsi"
+ },
+ "sgc": {
+ "english_name": "Kipsigis"
+ },
+ "sgd": {
+ "english_name": "Surigaonon"
+ },
+ "sge": {
+ "english_name": "Segai"
+ },
+ "sgg": {
+ "english_name": "Swiss-German Sign Language"
+ },
+ "sgh": {
+ "english_name": "Shughni"
+ },
+ "sgi": {
+ "english_name": "Suga"
+ },
+ "sgj": {
+ "english_name": "Surgujia"
+ },
+ "sgk": {
+ "english_name": "Sangkong"
+ },
+ "sgm": {
+ "english_name": "Singa"
+ },
+ "sgp": {
+ "english_name": "Singpho"
+ },
+ "sgr": {
+ "english_name": "Sangisari"
+ },
+ "sgs": {
+ "english_name": "Samogitian"
+ },
+ "sgt": {
+ "english_name": "Brokpake"
+ },
+ "sgu": {
+ "english_name": "Salas"
+ },
+ "sgw": {
+ "english_name": "Sebat Bet Gurage"
+ },
+ "sgx": {
+ "english_name": "Sierra Leone Sign Language"
+ },
+ "sgy": {
+ "english_name": "Sanglechi"
+ },
+ "sgz": {
+ "english_name": "Sursurunga"
+ },
+ "sha": {
+ "english_name": "Shall-Zwall"
+ },
+ "shb": {
+ "english_name": "Ninam"
+ },
+ "shc": {
+ "english_name": "Sonde"
+ },
+ "shd": {
+ "english_name": "Kundal Shahi"
+ },
+ "she": {
+ "english_name": "Sheko"
+ },
+ "shg": {
+ "english_name": "Shua"
+ },
+ "shh": {
+ "english_name": "Shoshoni"
+ },
+ "shi": {
+ "english_name": "Tachelhit"
+ },
+ "shj": {
+ "english_name": "Shatt"
+ },
+ "shk": {
+ "english_name": "Shilluk"
+ },
+ "shl": {
+ "english_name": "Shendu"
+ },
+ "shm": {
+ "english_name": "Shahrudi"
+ },
+ "shn": {
+ "english_name": "Shan"
+ },
+ "sho": {
+ "english_name": "Shanga"
+ },
+ "shp": {
+ "english_name": "Shipibo-Conibo"
+ },
+ "shq": {
+ "english_name": "Sala"
+ },
+ "shr": {
+ "english_name": "Shi"
+ },
+ "shs": {
+ "english_name": "Shuswap"
+ },
+ "sht": {
+ "english_name": "Shasta"
+ },
+ "shu": {
+ "english_name": "Arabic, Chadian"
+ },
+ "shv": {
+ "english_name": "Shehri"
+ },
+ "shw": {
+ "english_name": "Shwai"
+ },
+ "shx": {
+ "english_name": "She"
+ },
+ "shy": {
+ "english_name": "Tachawit"
+ },
+ "shz": {
+ "english_name": "Senoufo, Syenara"
+ },
+ "si": {
+ "english_name": "Sinhala"
+ },
+ "sia": {
+ "english_name": "Sami, Akkala"
+ },
+ "sib": {
+ "english_name": "Sebop"
+ },
+ "sid": {
+ "english_name": "Sidamo"
+ },
+ "sie": {
+ "english_name": "Simaa"
+ },
+ "sif": {
+ "english_name": "Siamou"
+ },
+ "sig": {
+ "english_name": "Paasaal"
+ },
+ "sih": {
+ "english_name": "Zire"
+ },
+ "sii": {
+ "english_name": "Shom Peng"
+ },
+ "sij": {
+ "english_name": "Numbami"
+ },
+ "sik": {
+ "english_name": "Sikiana"
+ },
+ "sil": {
+ "english_name": "Sisaala, Tumulung"
+ },
+ "sim": {
+ "english_name": "Mende (Papua New Guinea)"
+ },
+ "sip": {
+ "english_name": "Sikkimese"
+ },
+ "siq": {
+ "english_name": "Sonia"
+ },
+ "sir": {
+ "english_name": "Siri"
+ },
+ "sis": {
+ "english_name": "Siuslaw"
+ },
+ "siu": {
+ "english_name": "Sinagen"
+ },
+ "siv": {
+ "english_name": "Sumariup"
+ },
+ "siw": {
+ "english_name": "Siwai"
+ },
+ "six": {
+ "english_name": "Sumau"
+ },
+ "siy": {
+ "english_name": "Sivandi"
+ },
+ "siz": {
+ "english_name": "Siwi"
+ },
+ "sja": {
+ "english_name": "Epena"
+ },
+ "sjb": {
+ "english_name": "Sajau Basap"
+ },
+ "sjd": {
+ "english_name": "Sami, Kildin"
+ },
+ "sje": {
+ "english_name": "Sami, Pite"
+ },
+ "sjg": {
+ "english_name": "Assangori"
+ },
+ "sjk": {
+ "english_name": "Sami, Kemi"
+ },
+ "sjl": {
+ "english_name": "Sajalong"
+ },
+ "sjm": {
+ "english_name": "Mapun"
+ },
+ "sjn": {
+ "english_name": "Sindarin"
+ },
+ "sjo": {
+ "english_name": "Xibe"
+ },
+ "sjp": {
+ "english_name": "Surjapuri"
+ },
+ "sjr": {
+ "english_name": "Siar-Lak"
+ },
+ "sjs": {
+ "english_name": "Senhaja De Srair"
+ },
+ "sjt": {
+ "english_name": "Sami, Ter"
+ },
+ "sju": {
+ "english_name": "Sami, Ume"
+ },
+ "sjw": {
+ "english_name": "Shawnee"
+ },
+ "sk": {
+ "english_name": "Slovak",
+ "name": "Slovensk\u00fd"
+ },
+ "ska": {
+ "english_name": "Skagit"
+ },
+ "skb": {
+ "english_name": "Saek"
+ },
+ "skc": {
+ "english_name": "Ma Manda"
+ },
+ "skd": {
+ "english_name": "Miwok, Southern Sierra"
+ },
+ "ske": {
+ "english_name": "Seke (Vanuatu)"
+ },
+ "skf": {
+ "english_name": "Sakirabi\u00e1"
+ },
+ "skg": {
+ "english_name": "Malagasy, Sakalava"
+ },
+ "skh": {
+ "english_name": "Sikule"
+ },
+ "ski": {
+ "english_name": "Sika"
+ },
+ "skj": {
+ "english_name": "Seke (Nepal)"
+ },
+ "skk": {
+ "english_name": "Sok"
+ },
+ "skm": {
+ "english_name": "Kutong"
+ },
+ "skn": {
+ "english_name": "Subanon, Kolibugan"
+ },
+ "sko": {
+ "english_name": "Seko Tengah"
+ },
+ "skp": {
+ "english_name": "Sekapan"
+ },
+ "skq": {
+ "english_name": "Sininkere"
+ },
+ "skr": {
+ "english_name": "Seraiki"
+ },
+ "sks": {
+ "english_name": "Maia"
+ },
+ "skt": {
+ "english_name": "Sakata"
+ },
+ "sku": {
+ "english_name": "Sakao"
+ },
+ "skv": {
+ "english_name": "Skou"
+ },
+ "skw": {
+ "english_name": "Creole Dutch, Skepi"
+ },
+ "skx": {
+ "english_name": "Seko Padang"
+ },
+ "sky": {
+ "english_name": "Sikaiana"
+ },
+ "skz": {
+ "english_name": "Sekar"
+ },
+ "sl": {
+ "english_name": "Slovenian",
+ "name": "sloven\u0161\u010dina"
+ },
+ "slc": {
+ "english_name": "S\u00e1liba"
+ },
+ "sld": {
+ "english_name": "Sissala"
+ },
+ "sle": {
+ "english_name": "Sholaga"
+ },
+ "slf": {
+ "english_name": "Swiss-Italian Sign Language"
+ },
+ "slg": {
+ "english_name": "Selungai Murut"
+ },
+ "slh": {
+ "english_name": "Salish, Southern Puget Sound"
+ },
+ "sli": {
+ "english_name": "Silesian, Lower"
+ },
+ "slj": {
+ "english_name": "Salum\u00e1"
+ },
+ "sll": {
+ "english_name": "Salt-Yui"
+ },
+ "slm": {
+ "english_name": "Sama, Pangutaran"
+ },
+ "sln": {
+ "english_name": "Salinan"
+ },
+ "slp": {
+ "english_name": "Lamaholot"
+ },
+ "slq": {
+ "english_name": "Salchuq"
+ },
+ "slr": {
+ "english_name": "Salar"
+ },
+ "sls": {
+ "english_name": "Singapore Sign Language"
+ },
+ "slt": {
+ "english_name": "Sila"
+ },
+ "slu": {
+ "english_name": "Selaru"
+ },
+ "slw": {
+ "english_name": "Sialum"
+ },
+ "slx": {
+ "english_name": "Salampasu"
+ },
+ "sly": {
+ "english_name": "Selayar"
+ },
+ "slz": {
+ "english_name": "Ma'ya"
+ },
+ "sm": {
+ "english_name": "Samoan"
+ },
+ "sma": {
+ "english_name": "Sami, Southern"
+ },
+ "smb": {
+ "english_name": "Simbari"
+ },
+ "smc": {
+ "english_name": "Som"
+ },
+ "smd": {
+ "english_name": "Sama"
+ },
+ "smf": {
+ "english_name": "Auwe"
+ },
+ "smg": {
+ "english_name": "Simbali"
+ },
+ "smh": {
+ "english_name": "Samei"
+ },
+ "smj": {
+ "english_name": "Lule Sami"
+ },
+ "smk": {
+ "english_name": "Bolinao"
+ },
+ "sml": {
+ "english_name": "Sama, Central"
+ },
+ "smm": {
+ "english_name": "Musasa"
+ },
+ "smn": {
+ "english_name": "Sami, Inari"
+ },
+ "smp": {
+ "english_name": "Samaritan"
+ },
+ "smq": {
+ "english_name": "Samo"
+ },
+ "smr": {
+ "english_name": "Simeulue"
+ },
+ "sms": {
+ "english_name": "Sami, Skolt"
+ },
+ "smt": {
+ "english_name": "Simte"
+ },
+ "smu": {
+ "english_name": "Somray"
+ },
+ "smv": {
+ "english_name": "Samvedi"
+ },
+ "smw": {
+ "english_name": "Sumbawa"
+ },
+ "smx": {
+ "english_name": "Samba"
+ },
+ "smy": {
+ "english_name": "Semnani"
+ },
+ "smz": {
+ "english_name": "Simeku"
+ },
+ "sn": {
+ "english_name": "Shona"
+ },
+ "snb": {
+ "english_name": "Sebuyau"
+ },
+ "snc": {
+ "english_name": "Sinaugoro"
+ },
+ "sne": {
+ "english_name": "Bidayuh, Bau"
+ },
+ "snf": {
+ "english_name": "Noon"
+ },
+ "sng": {
+ "english_name": "Sanga (Democratic Republic of Congo)"
+ },
+ "snh": {
+ "english_name": "Shinabo"
+ },
+ "sni": {
+ "english_name": "Sensi"
+ },
+ "snj": {
+ "english_name": "Sango, Riverain"
+ },
+ "snk": {
+ "english_name": "Soninke"
+ },
+ "snl": {
+ "english_name": "Sangil"
+ },
+ "snm": {
+ "english_name": "Ma'di, Southern"
+ },
+ "snn": {
+ "english_name": "Siona"
+ },
+ "sno": {
+ "english_name": "Snohomish"
+ },
+ "snp": {
+ "english_name": "Siane"
+ },
+ "snq": {
+ "english_name": "Sangu (Gabon)"
+ },
+ "snr": {
+ "english_name": "Sihan"
+ },
+ "sns": {
+ "english_name": "South West Bay"
+ },
+ "snu": {
+ "english_name": "Senggi"
+ },
+ "snv": {
+ "english_name": "Sa'ban"
+ },
+ "snw": {
+ "english_name": "Selee"
+ },
+ "snx": {
+ "english_name": "Sam"
+ },
+ "sny": {
+ "english_name": "Saniyo-Hiyewe"
+ },
+ "snz": {
+ "english_name": "Sinsauru"
+ },
+ "so": {
+ "english_name": "Somali"
+ },
+ "soa": {
+ "english_name": "Thai Song"
+ },
+ "sob": {
+ "english_name": "Sobei"
+ },
+ "soc": {
+ "english_name": "So (Democratic Republic of Congo)"
+ },
+ "sod": {
+ "english_name": "Songoora"
+ },
+ "soe": {
+ "english_name": "Songomeno"
+ },
+ "sog": {
+ "english_name": "Sogdian"
+ },
+ "soh": {
+ "english_name": "Aka"
+ },
+ "soi": {
+ "english_name": "Sonha"
+ },
+ "soj": {
+ "english_name": "Soi"
+ },
+ "sok": {
+ "english_name": "Sokoro"
+ },
+ "sol": {
+ "english_name": "Solos"
+ },
+ "soo": {
+ "english_name": "Songo"
+ },
+ "sop": {
+ "english_name": "Songe"
+ },
+ "soq": {
+ "english_name": "Kanasi"
+ },
+ "sor": {
+ "english_name": "Somrai"
+ },
+ "sos": {
+ "english_name": "Seeku"
+ },
+ "sou": {
+ "english_name": "Thai, Southern"
+ },
+ "sov": {
+ "english_name": "Sonsorol"
+ },
+ "sow": {
+ "english_name": "Sowanda"
+ },
+ "sox": {
+ "english_name": "Swo"
+ },
+ "soy": {
+ "english_name": "Miyobe"
+ },
+ "soz": {
+ "english_name": "Temi"
+ },
+ "spb": {
+ "english_name": "Sepa (Indonesia)"
+ },
+ "spc": {
+ "english_name": "Sap\u00e9"
+ },
+ "spd": {
+ "english_name": "Saep"
+ },
+ "spe": {
+ "english_name": "Sepa (Papua New Guinea)"
+ },
+ "spg": {
+ "english_name": "Sian"
+ },
+ "spi": {
+ "english_name": "Saponi"
+ },
+ "spk": {
+ "english_name": "Sengo"
+ },
+ "spl": {
+ "english_name": "Selepet"
+ },
+ "spm": {
+ "english_name": "Akukem"
+ },
+ "spo": {
+ "english_name": "Spokane"
+ },
+ "spp": {
+ "english_name": "Senoufo, Supyire"
+ },
+ "spq": {
+ "english_name": "Spanish, Loreto-Ucayali"
+ },
+ "spr": {
+ "english_name": "Saparua"
+ },
+ "sps": {
+ "english_name": "Saposa"
+ },
+ "spt": {
+ "english_name": "Bhoti, Spiti"
+ },
+ "spu": {
+ "english_name": "Sapuan"
+ },
+ "spv": {
+ "english_name": "Sambalpuri"
+ },
+ "spx": {
+ "english_name": "Picene, South"
+ },
+ "spy": {
+ "english_name": "Sabaot"
+ },
+ "sq": {
+ "english_name": "Albanian"
+ },
+ "sqa": {
+ "english_name": "Shama-Sambuga"
+ },
+ "sqh": {
+ "english_name": "Shau"
+ },
+ "sqk": {
+ "english_name": "Albanian Sign Language"
+ },
+ "sqm": {
+ "english_name": "Suma"
+ },
+ "sqn": {
+ "english_name": "Susquehannock"
+ },
+ "sqo": {
+ "english_name": "Sorkhei"
+ },
+ "sqq": {
+ "english_name": "Sou"
+ },
+ "sqr": {
+ "english_name": "Arabic, Siculo"
+ },
+ "sqs": {
+ "english_name": "Sri Lankan Sign Language"
+ },
+ "sqt": {
+ "english_name": "Soqotri"
+ },
+ "squ": {
+ "english_name": "Squamish"
+ },
+ "sr": {
+ "english_name": "Serbian",
+ "name": "\u0441\u0440\u043f\u0441\u043a\u0438"
+ },
+ "sra": {
+ "english_name": "Saruga"
+ },
+ "srb": {
+ "english_name": "Sora"
+ },
+ "src": {
+ "english_name": "Sardinian, Logudorese"
+ },
+ "sre": {
+ "english_name": "Sara"
+ },
+ "srf": {
+ "english_name": "Nafi"
+ },
+ "srg": {
+ "english_name": "Sulod"
+ },
+ "srh": {
+ "english_name": "Sarikoli"
+ },
+ "sri": {
+ "english_name": "Siriano"
+ },
+ "srk": {
+ "english_name": "Serudung Murut"
+ },
+ "srl": {
+ "english_name": "Isirawa"
+ },
+ "srm": {
+ "english_name": "Saramaccan"
+ },
+ "srn": {
+ "english_name": "Sranan Tongo"
+ },
+ "sro": {
+ "english_name": "Sardinian, Campidanese"
+ },
+ "srq": {
+ "english_name": "Sirion\u00f3"
+ },
+ "srr": {
+ "english_name": "Serer"
+ },
+ "srs": {
+ "english_name": "Sarsi"
+ },
+ "srt": {
+ "english_name": "Sauri"
+ },
+ "sru": {
+ "english_name": "Suru\u00ed"
+ },
+ "srv": {
+ "english_name": "Sorsoganon, Southern"
+ },
+ "srw": {
+ "english_name": "Serua"
+ },
+ "srx": {
+ "english_name": "Sirmauri"
+ },
+ "sry": {
+ "english_name": "Sera"
+ },
+ "srz": {
+ "english_name": "Shahmirzadi"
+ },
+ "ss": {
+ "english_name": "Swati"
+ },
+ "ssb": {
+ "english_name": "Sama, Southern"
+ },
+ "ssc": {
+ "english_name": "Suba-Simbiti"
+ },
+ "ssd": {
+ "english_name": "Siroi"
+ },
+ "sse": {
+ "english_name": "Balangingi"
+ },
+ "ssf": {
+ "english_name": "Thao"
+ },
+ "ssg": {
+ "english_name": "Seimat"
+ },
+ "ssh": {
+ "english_name": "Arabic, Shihhi"
+ },
+ "ssi": {
+ "english_name": "Sansi"
+ },
+ "ssj": {
+ "english_name": "Sausi"
+ },
+ "ssk": {
+ "english_name": "Sunam"
+ },
+ "ssl": {
+ "english_name": "Sisaala, Western"
+ },
+ "ssm": {
+ "english_name": "Semnam"
+ },
+ "ssn": {
+ "english_name": "Waata"
+ },
+ "sso": {
+ "english_name": "Sissano"
+ },
+ "ssp": {
+ "english_name": "Spanish Sign Language"
+ },
+ "ssq": {
+ "english_name": "So'a"
+ },
+ "ssr": {
+ "english_name": "Swiss-French Sign Language"
+ },
+ "sss": {
+ "english_name": "S\u00f4"
+ },
+ "sst": {
+ "english_name": "Sinasina"
+ },
+ "ssu": {
+ "english_name": "Susuami"
+ },
+ "ssv": {
+ "english_name": "Shark Bay"
+ },
+ "ssx": {
+ "english_name": "Samberigi"
+ },
+ "ssy": {
+ "english_name": "Saho"
+ },
+ "ssz": {
+ "english_name": "Sengseng"
+ },
+ "st": {
+ "english_name": "Sotho, Southern"
+ },
+ "sta": {
+ "english_name": "Settla"
+ },
+ "stb": {
+ "english_name": "Subanen, Northern"
+ },
+ "std": {
+ "english_name": "Sentinel"
+ },
+ "ste": {
+ "english_name": "Liana-Seti"
+ },
+ "stf": {
+ "english_name": "Seta"
+ },
+ "stg": {
+ "english_name": "Trieng"
+ },
+ "sth": {
+ "english_name": "Shelta"
+ },
+ "sti": {
+ "english_name": "Stieng, Bulo"
+ },
+ "stj": {
+ "english_name": "Samo, Matya"
+ },
+ "stk": {
+ "english_name": "Arammba"
+ },
+ "stl": {
+ "english_name": "Stellingwerfs"
+ },
+ "stm": {
+ "english_name": "Setaman"
+ },
+ "stn": {
+ "english_name": "Owa"
+ },
+ "sto": {
+ "english_name": "Stoney"
+ },
+ "stp": {
+ "english_name": "Tepehuan, Southeastern"
+ },
+ "stq": {
+ "english_name": "Saterfriesisch"
+ },
+ "str": {
+ "english_name": "Salish, Straits"
+ },
+ "sts": {
+ "english_name": "Shumashti"
+ },
+ "stt": {
+ "english_name": "Stieng, Budeh"
+ },
+ "stu": {
+ "english_name": "Samtao"
+ },
+ "stv": {
+ "english_name": "Silt'e"
+ },
+ "stw": {
+ "english_name": "Satawalese"
+ },
+ "sty": {
+ "english_name": "Tatar, Siberian"
+ },
+ "su": {
+ "english_name": "Sundanese"
+ },
+ "sua": {
+ "english_name": "Sulka"
+ },
+ "sub": {
+ "english_name": "Suku"
+ },
+ "suc": {
+ "english_name": "Subanon, Western"
+ },
+ "sue": {
+ "english_name": "Suena"
+ },
+ "sug": {
+ "english_name": "Suganga"
+ },
+ "sui": {
+ "english_name": "Suki"
+ },
+ "suj": {
+ "english_name": "Shubi"
+ },
+ "suk": {
+ "english_name": "Sukuma"
+ },
+ "suq": {
+ "english_name": "Suri"
+ },
+ "sur": {
+ "english_name": "Mwaghavul"
+ },
+ "sus": {
+ "english_name": "Susu"
+ },
+ "sut": {
+ "english_name": "Subtiaba"
+ },
+ "suv": {
+ "english_name": "Puroik"
+ },
+ "suw": {
+ "english_name": "Sumbwa"
+ },
+ "sux": {
+ "english_name": "Sumerian"
+ },
+ "suy": {
+ "english_name": "Suy\u00e1"
+ },
+ "suz": {
+ "english_name": "Sunwar"
+ },
+ "sv": {
+ "english_name": "Swedish",
+ "name": "Svenska"
+ },
+ "sva": {
+ "english_name": "Svan"
+ },
+ "svb": {
+ "english_name": "Ulau-Suain"
+ },
+ "svc": {
+ "english_name": "Creole English, Vincentian"
+ },
+ "sve": {
+ "english_name": "Serili"
+ },
+ "svk": {
+ "english_name": "Slovakian Sign Language"
+ },
+ "svm": {
+ "english_name": "Slavomolisano"
+ },
+ "svr": {
+ "english_name": "Savara"
+ },
+ "svs": {
+ "english_name": "Savosavo"
+ },
+ "svx": {
+ "english_name": "Skalvian"
+ },
+ "sw": {
+ "english_name": "Swahili (macrolanguage)"
+ },
+ "swb": {
+ "english_name": "Comorian, Maore"
+ },
+ "swc": {
+ "english_name": "Swahili, Congo"
+ },
+ "swf": {
+ "english_name": "Sere"
+ },
+ "swg": {
+ "english_name": "Swabian"
+ },
+ "swh": {
+ "english_name": "Swahili (individual language)"
+ },
+ "swi": {
+ "english_name": "Sui"
+ },
+ "swj": {
+ "english_name": "Sira"
+ },
+ "swk": {
+ "english_name": "Sena, Malawi"
+ },
+ "swl": {
+ "english_name": "Swedish Sign Language"
+ },
+ "swm": {
+ "english_name": "Samosa"
+ },
+ "swn": {
+ "english_name": "Sawknah"
+ },
+ "swo": {
+ "english_name": "Shanenawa"
+ },
+ "swp": {
+ "english_name": "Suau"
+ },
+ "swq": {
+ "english_name": "Sharwa"
+ },
+ "swr": {
+ "english_name": "Saweru"
+ },
+ "sws": {
+ "english_name": "Seluwasan"
+ },
+ "swt": {
+ "english_name": "Sawila"
+ },
+ "swu": {
+ "english_name": "Suwawa"
+ },
+ "swv": {
+ "english_name": "Shekhawati"
+ },
+ "sww": {
+ "english_name": "Sowa"
+ },
+ "swx": {
+ "english_name": "Suruah\u00e1"
+ },
+ "swy": {
+ "english_name": "Sarua"
+ },
+ "sxb": {
+ "english_name": "Suba"
+ },
+ "sxc": {
+ "english_name": "Sicanian"
+ },
+ "sxe": {
+ "english_name": "Sighu"
+ },
+ "sxg": {
+ "english_name": "Shixing"
+ },
+ "sxk": {
+ "english_name": "Kalapuya, Southern"
+ },
+ "sxl": {
+ "english_name": "Selian"
+ },
+ "sxm": {
+ "english_name": "Samre"
+ },
+ "sxn": {
+ "english_name": "Sangir"
+ },
+ "sxo": {
+ "english_name": "Sorothaptic"
+ },
+ "sxr": {
+ "english_name": "Saaroa"
+ },
+ "sxs": {
+ "english_name": "Sasaru"
+ },
+ "sxu": {
+ "english_name": "Saxon, Upper"
+ },
+ "sxw": {
+ "english_name": "Gbe, Saxwe"
+ },
+ "sya": {
+ "english_name": "Siang"
+ },
+ "syb": {
+ "english_name": "Subanen, Central"
+ },
+ "syc": {
+ "english_name": "Syriac, Classical"
+ },
+ "syi": {
+ "english_name": "Seki"
+ },
+ "syk": {
+ "english_name": "Sukur"
+ },
+ "syl": {
+ "english_name": "Sylheti"
+ },
+ "sym": {
+ "english_name": "Samo, Maya"
+ },
+ "syn": {
+ "english_name": "Senaya"
+ },
+ "syo": {
+ "english_name": "Suoy"
+ },
+ "syr": {
+ "english_name": "Syriac"
+ },
+ "sys": {
+ "english_name": "Sinyar"
+ },
+ "syw": {
+ "english_name": "Kagate"
+ },
+ "syy": {
+ "english_name": "Al-Sayyid Bedouin Sign Language"
+ },
+ "sza": {
+ "english_name": "Semelai"
+ },
+ "szb": {
+ "english_name": "Ngalum"
+ },
+ "szc": {
+ "english_name": "Semaq Beri"
+ },
+ "szd": {
+ "english_name": "Seru"
+ },
+ "sze": {
+ "english_name": "Seze"
+ },
+ "szg": {
+ "english_name": "Sengele"
+ },
+ "szl": {
+ "english_name": "Silesian"
+ },
+ "szn": {
+ "english_name": "Sula"
+ },
+ "szp": {
+ "english_name": "Suabo"
+ },
+ "szv": {
+ "english_name": "Isu (Fako Division)"
+ },
+ "szw": {
+ "english_name": "Sawai"
+ },
+ "ta": {
+ "english_name": "Tamil",
+ "name": "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd"
+ },
+ "taa": {
+ "english_name": "Tanana, Lower"
+ },
+ "tab": {
+ "english_name": "Tabassaran"
+ },
+ "tac": {
+ "english_name": "Tarahumara, Lowland"
+ },
+ "tad": {
+ "english_name": "Tause"
+ },
+ "tae": {
+ "english_name": "Tariana"
+ },
+ "taf": {
+ "english_name": "Tapirap\u00e9"
+ },
+ "tag": {
+ "english_name": "Tagoi"
+ },
+ "taj": {
+ "english_name": "Tamang, Eastern"
+ },
+ "tak": {
+ "english_name": "Tala"
+ },
+ "tal": {
+ "english_name": "Tal"
+ },
+ "tan": {
+ "english_name": "Tangale"
+ },
+ "tao": {
+ "english_name": "Yami"
+ },
+ "tap": {
+ "english_name": "Taabwa"
+ },
+ "taq": {
+ "english_name": "Tamasheq"
+ },
+ "tar": {
+ "english_name": "Tarahumara, Central"
+ },
+ "tas": {
+ "english_name": "Tay Boi"
+ },
+ "tau": {
+ "english_name": "Tanana, Upper"
+ },
+ "tav": {
+ "english_name": "Tatuyo"
+ },
+ "taw": {
+ "english_name": "Tai"
+ },
+ "tax": {
+ "english_name": "Tamki"
+ },
+ "tay": {
+ "english_name": "Atayal"
+ },
+ "taz": {
+ "english_name": "Tocho"
+ },
+ "tba": {
+ "english_name": "Aikan\u00e3"
+ },
+ "tbb": {
+ "english_name": "Tapeba"
+ },
+ "tbc": {
+ "english_name": "Takia"
+ },
+ "tbd": {
+ "english_name": "Kaki Ae"
+ },
+ "tbe": {
+ "english_name": "Tanimbili"
+ },
+ "tbf": {
+ "english_name": "Mandara"
+ },
+ "tbg": {
+ "english_name": "Tairora, North"
+ },
+ "tbh": {
+ "english_name": "Thurawal"
+ },
+ "tbi": {
+ "english_name": "Gaam"
+ },
+ "tbj": {
+ "english_name": "Tiang"
+ },
+ "tbk": {
+ "english_name": "Tagbanwa, Calamian"
+ },
+ "tbl": {
+ "english_name": "Tboli"
+ },
+ "tbm": {
+ "english_name": "Tagbu"
+ },
+ "tbn": {
+ "english_name": "Tunebo, Barro Negro"
+ },
+ "tbo": {
+ "english_name": "Tawala"
+ },
+ "tbp": {
+ "english_name": "Taworta"
+ },
+ "tbr": {
+ "english_name": "Tumtum"
+ },
+ "tbs": {
+ "english_name": "Tanguat"
+ },
+ "tbt": {
+ "english_name": "Tembo (Kitembo)"
+ },
+ "tbu": {
+ "english_name": "Tubar"
+ },
+ "tbv": {
+ "english_name": "Tobo"
+ },
+ "tbw": {
+ "english_name": "Tagbanwa"
+ },
+ "tbx": {
+ "english_name": "Kapin"
+ },
+ "tby": {
+ "english_name": "Tabaru"
+ },
+ "tbz": {
+ "english_name": "Ditammari"
+ },
+ "tca": {
+ "english_name": "Ticuna"
+ },
+ "tcb": {
+ "english_name": "Tanacross"
+ },
+ "tcc": {
+ "english_name": "Datooga"
+ },
+ "tcd": {
+ "english_name": "Tafi"
+ },
+ "tce": {
+ "english_name": "Tutchone, Southern"
+ },
+ "tcf": {
+ "english_name": "Me'phaa, Malinaltepec"
+ },
+ "tcg": {
+ "english_name": "Tamagario"
+ },
+ "tch": {
+ "english_name": "Creole English, Turks And Caicos"
+ },
+ "tci": {
+ "english_name": "W\u00e1ra"
+ },
+ "tck": {
+ "english_name": "Tchitchege"
+ },
+ "tcl": {
+ "english_name": "Taman (Myanmar)"
+ },
+ "tcm": {
+ "english_name": "Tanahmerah"
+ },
+ "tcn": {
+ "english_name": "Tichurong"
+ },
+ "tco": {
+ "english_name": "Taungyo"
+ },
+ "tcp": {
+ "english_name": "Chin, Tawr"
+ },
+ "tcq": {
+ "english_name": "Kaiy"
+ },
+ "tcs": {
+ "english_name": "Creole, Torres Strait"
+ },
+ "tct": {
+ "english_name": "T'en"
+ },
+ "tcu": {
+ "english_name": "Tarahumara, Southeastern"
+ },
+ "tcw": {
+ "english_name": "Totonac, Tecpatl\u00e1n"
+ },
+ "tcx": {
+ "english_name": "Toda"
+ },
+ "tcy": {
+ "english_name": "Tulu"
+ },
+ "tcz": {
+ "english_name": "Chin, Thado"
+ },
+ "tda": {
+ "english_name": "Tagdal"
+ },
+ "tdb": {
+ "english_name": "Panchpargania"
+ },
+ "tdc": {
+ "english_name": "Ember\u00e1-Tad\u00f3"
+ },
+ "tdd": {
+ "english_name": "Tai N\u00fca"
+ },
+ "tde": {
+ "english_name": "Dogon, Tiranige Diga"
+ },
+ "tdf": {
+ "english_name": "Talieng"
+ },
+ "tdg": {
+ "english_name": "Tamang, Western"
+ },
+ "tdh": {
+ "english_name": "Thulung"
+ },
+ "tdi": {
+ "english_name": "Tomadino"
+ },
+ "tdj": {
+ "english_name": "Tajio"
+ },
+ "tdk": {
+ "english_name": "Tambas"
+ },
+ "tdl": {
+ "english_name": "Sur"
+ },
+ "tdn": {
+ "english_name": "Tondano"
+ },
+ "tdo": {
+ "english_name": "Teme"
+ },
+ "tdq": {
+ "english_name": "Tita"
+ },
+ "tdr": {
+ "english_name": "Todrah"
+ },
+ "tds": {
+ "english_name": "Doutai"
+ },
+ "tdt": {
+ "english_name": "Tetun Dili"
+ },
+ "tdu": {
+ "english_name": "Dusun, Tempasuk"
+ },
+ "tdv": {
+ "english_name": "Toro"
+ },
+ "tdx": {
+ "english_name": "Malagasy, Tandroy-Mahafaly"
+ },
+ "tdy": {
+ "english_name": "Tadyawan"
+ },
+ "te": {
+ "english_name": "Telugu"
+ },
+ "tea": {
+ "english_name": "Temiar"
+ },
+ "teb": {
+ "english_name": "Tetete"
+ },
+ "tec": {
+ "english_name": "Terik"
+ },
+ "ted": {
+ "english_name": "Krumen, Tepo"
+ },
+ "tee": {
+ "english_name": "Tepehua, Huehuetla"
+ },
+ "tef": {
+ "english_name": "Teressa"
+ },
+ "teg": {
+ "english_name": "Teke-Tege"
+ },
+ "teh": {
+ "english_name": "Tehuelche"
+ },
+ "tei": {
+ "english_name": "Torricelli"
+ },
+ "tek": {
+ "english_name": "Teke, Ibali"
+ },
+ "tem": {
+ "english_name": "Timne"
+ },
+ "ten": {
+ "english_name": "Tama (Colombia)"
+ },
+ "teo": {
+ "english_name": "Teso"
+ },
+ "tep": {
+ "english_name": "Tepecano"
+ },
+ "teq": {
+ "english_name": "Temein"
+ },
+ "ter": {
+ "english_name": "Tereno"
+ },
+ "tes": {
+ "english_name": "Tengger"
+ },
+ "tet": {
+ "english_name": "Tetum"
+ },
+ "teu": {
+ "english_name": "Soo"
+ },
+ "tev": {
+ "english_name": "Teor"
+ },
+ "tew": {
+ "english_name": "Tewa (USA)"
+ },
+ "tex": {
+ "english_name": "Tennet"
+ },
+ "tey": {
+ "english_name": "Tulishi"
+ },
+ "tfi": {
+ "english_name": "Gbe, Tofin"
+ },
+ "tfn": {
+ "english_name": "Tanaina"
+ },
+ "tfo": {
+ "english_name": "Tefaro"
+ },
+ "tfr": {
+ "english_name": "Teribe"
+ },
+ "tft": {
+ "english_name": "Ternate"
+ },
+ "tg": {
+ "english_name": "Tajik"
+ },
+ "tga": {
+ "english_name": "Sagalla"
+ },
+ "tgb": {
+ "english_name": "Tobilung"
+ },
+ "tgc": {
+ "english_name": "Tigak"
+ },
+ "tgd": {
+ "english_name": "Ciwogai"
+ },
+ "tge": {
+ "english_name": "Tamang, Eastern Gorkha"
+ },
+ "tgf": {
+ "english_name": "Chalikha"
+ },
+ "tgh": {
+ "english_name": "Creole English, Tobagonian"
+ },
+ "tgi": {
+ "english_name": "Lawunuia"
+ },
+ "tgj": {
+ "english_name": "Tagin"
+ },
+ "tgn": {
+ "english_name": "Tandaganon"
+ },
+ "tgo": {
+ "english_name": "Sudest"
+ },
+ "tgp": {
+ "english_name": "Tangoa"
+ },
+ "tgq": {
+ "english_name": "Tring"
+ },
+ "tgr": {
+ "english_name": "Tareng"
+ },
+ "tgs": {
+ "english_name": "Nume"
+ },
+ "tgt": {
+ "english_name": "Tagbanwa, Central"
+ },
+ "tgu": {
+ "english_name": "Tanggu"
+ },
+ "tgv": {
+ "english_name": "Tingui-Boto"
+ },
+ "tgw": {
+ "english_name": "Senoufo, Tagwana"
+ },
+ "tgx": {
+ "english_name": "Tagish"
+ },
+ "tgy": {
+ "english_name": "Togoyo"
+ },
+ "tgz": {
+ "english_name": "Tagalaka"
+ },
+ "th": {
+ "english_name": "Thai",
+ "name": "\u0e44\u0e17\u0e22"
+ },
+ "thc": {
+ "english_name": "Tai Hang Tong"
+ },
+ "thd": {
+ "english_name": "Thayore"
+ },
+ "the": {
+ "english_name": "Tharu, Chitwania"
+ },
+ "thf": {
+ "english_name": "Thangmi"
+ },
+ "thh": {
+ "english_name": "Tarahumara, Northern"
+ },
+ "thi": {
+ "english_name": "Tai Long"
+ },
+ "thk": {
+ "english_name": "Tharaka"
+ },
+ "thl": {
+ "english_name": "Tharu, Dangaura"
+ },
+ "thm": {
+ "english_name": "Aheu"
+ },
+ "thn": {
+ "english_name": "Thachanadan"
+ },
+ "thp": {
+ "english_name": "Thompson"
+ },
+ "thq": {
+ "english_name": "Tharu, Kochila"
+ },
+ "thr": {
+ "english_name": "Tharu, Rana"
+ },
+ "ths": {
+ "english_name": "Thakali"
+ },
+ "tht": {
+ "english_name": "Tahltan"
+ },
+ "thu": {
+ "english_name": "Thuri"
+ },
+ "thv": {
+ "english_name": "Tamahaq, Tahaggart"
+ },
+ "thw": {
+ "english_name": "Thudam"
+ },
+ "thy": {
+ "english_name": "Tha"
+ },
+ "thz": {
+ "english_name": "Tamajeq, Tayart"
+ },
+ "ti": {
+ "english_name": "Tigrinya",
+ "name": "\u1275\u130d\u122d\u129b"
+ },
+ "tia": {
+ "english_name": "Tamazight, Tidikelt"
+ },
+ "tic": {
+ "english_name": "Tira"
+ },
+ "tid": {
+ "english_name": "Tidong"
+ },
+ "tif": {
+ "english_name": "Tifal"
+ },
+ "tig": {
+ "english_name": "Tigre",
+ "name": "\u1275\u130d\u1228"
+ },
+ "tih": {
+ "english_name": "Murut, Timugon"
+ },
+ "tii": {
+ "english_name": "Tiene"
+ },
+ "tij": {
+ "english_name": "Tilung"
+ },
+ "tik": {
+ "english_name": "Tikar"
+ },
+ "til": {
+ "english_name": "Tillamook"
+ },
+ "tim": {
+ "english_name": "Timbe"
+ },
+ "tin": {
+ "english_name": "Tindi"
+ },
+ "tio": {
+ "english_name": "Teop"
+ },
+ "tip": {
+ "english_name": "Trimuris"
+ },
+ "tiq": {
+ "english_name": "Ti\u00e9fo"
+ },
+ "tis": {
+ "english_name": "Itneg, Masadiit"
+ },
+ "tit": {
+ "english_name": "Tinigua"
+ },
+ "tiu": {
+ "english_name": "Adasen"
+ },
+ "tiv": {
+ "english_name": "Tiv"
+ },
+ "tiw": {
+ "english_name": "Tiwi"
+ },
+ "tix": {
+ "english_name": "Tiwa, Southern"
+ },
+ "tiy": {
+ "english_name": "Tiruray"
+ },
+ "tiz": {
+ "english_name": "Tai Hongjin"
+ },
+ "tja": {
+ "english_name": "Tajuasohn"
+ },
+ "tjg": {
+ "english_name": "Tunjung"
+ },
+ "tji": {
+ "english_name": "Tujia, Northern"
+ },
+ "tjl": {
+ "english_name": "Tai Laing"
+ },
+ "tjm": {
+ "english_name": "Timucua"
+ },
+ "tjn": {
+ "english_name": "Tonjon"
+ },
+ "tjo": {
+ "english_name": "Tamazight, Temacine"
+ },
+ "tjs": {
+ "english_name": "Tujia, Southern"
+ },
+ "tju": {
+ "english_name": "Tjurruru"
+ },
+ "tjw": {
+ "english_name": "Djabwurrung"
+ },
+ "tk": {
+ "english_name": "Turkmen"
+ },
+ "tka": {
+ "english_name": "Truk\u00e1"
+ },
+ "tkb": {
+ "english_name": "Buksa"
+ },
+ "tkd": {
+ "english_name": "Tukudede"
+ },
+ "tke": {
+ "english_name": "Takwane"
+ },
+ "tkf": {
+ "english_name": "Tukumanf\u00e9d"
+ },
+ "tkg": {
+ "english_name": "Malagasy, Tesaka"
+ },
+ "tkl": {
+ "english_name": "Tokelau"
+ },
+ "tkm": {
+ "english_name": "Takelma"
+ },
+ "tkn": {
+ "english_name": "Toku-No-Shima"
+ },
+ "tkp": {
+ "english_name": "Tikopia"
+ },
+ "tkq": {
+ "english_name": "Tee"
+ },
+ "tkr": {
+ "english_name": "Tsakhur"
+ },
+ "tks": {
+ "english_name": "Takestani"
+ },
+ "tkt": {
+ "english_name": "Tharu, Kathoriya"
+ },
+ "tku": {
+ "english_name": "Totonac, Upper Necaxa"
+ },
+ "tkw": {
+ "english_name": "Teanu"
+ },
+ "tkx": {
+ "english_name": "Tangko"
+ },
+ "tkz": {
+ "english_name": "Takua"
+ },
+ "tl": {
+ "english_name": "Tagalog"
+ },
+ "tla": {
+ "english_name": "Tepehuan, Southwestern"
+ },
+ "tlb": {
+ "english_name": "Tobelo"
+ },
+ "tlc": {
+ "english_name": "Totonac, Yecuatla"
+ },
+ "tld": {
+ "english_name": "Talaud"
+ },
+ "tlf": {
+ "english_name": "Telefol"
+ },
+ "tlg": {
+ "english_name": "Tofanma"
+ },
+ "tlh": {
+ "english_name": "Klingon"
+ },
+ "tli": {
+ "english_name": "Tlingit"
+ },
+ "tlj": {
+ "english_name": "Talinga-Bwisi"
+ },
+ "tlk": {
+ "english_name": "Taloki"
+ },
+ "tll": {
+ "english_name": "Tetela"
+ },
+ "tlm": {
+ "english_name": "Tolomako"
+ },
+ "tln": {
+ "english_name": "Talondo'"
+ },
+ "tlo": {
+ "english_name": "Talodi"
+ },
+ "tlp": {
+ "english_name": "Totonac, Filomena Mata-Coahuitl\u00e1n"
+ },
+ "tlq": {
+ "english_name": "Tai Loi"
+ },
+ "tlr": {
+ "english_name": "Talise"
+ },
+ "tls": {
+ "english_name": "Tambotalo"
+ },
+ "tlt": {
+ "english_name": "Teluti"
+ },
+ "tlu": {
+ "english_name": "Tulehu"
+ },
+ "tlv": {
+ "english_name": "Taliabu"
+ },
+ "tlx": {
+ "english_name": "Khehek"
+ },
+ "tly": {
+ "english_name": "Talysh"
+ },
+ "tma": {
+ "english_name": "Tama (Chad)"
+ },
+ "tmb": {
+ "english_name": "Katbol"
+ },
+ "tmc": {
+ "english_name": "Tumak"
+ },
+ "tmd": {
+ "english_name": "Haruai"
+ },
+ "tme": {
+ "english_name": "Trememb\u00e9"
+ },
+ "tmf": {
+ "english_name": "Toba-Maskoy"
+ },
+ "tmg": {
+ "english_name": "Ternate\u00f1o"
+ },
+ "tmh": {
+ "english_name": "Tamashek"
+ },
+ "tmi": {
+ "english_name": "Tutuba"
+ },
+ "tmj": {
+ "english_name": "Samarokena"
+ },
+ "tmk": {
+ "english_name": "Tamang, Northwestern"
+ },
+ "tml": {
+ "english_name": "Citak, Tamnim"
+ },
+ "tmm": {
+ "english_name": "Tai Thanh"
+ },
+ "tmn": {
+ "english_name": "Taman (Indonesia)"
+ },
+ "tmo": {
+ "english_name": "Temoq"
+ },
+ "tmp": {
+ "english_name": "Tai M\u00e8ne"
+ },
+ "tmq": {
+ "english_name": "Tumleo"
+ },
+ "tmr": {
+ "english_name": "Aramaic, Jewish Babylonian (ca. 200-1200 CE)"
+ },
+ "tms": {
+ "english_name": "Tima"
+ },
+ "tmt": {
+ "english_name": "Tasmate"
+ },
+ "tmu": {
+ "english_name": "Iau"
+ },
+ "tmv": {
+ "english_name": "Tembo (Motembo)"
+ },
+ "tmw": {
+ "english_name": "Temuan"
+ },
+ "tmy": {
+ "english_name": "Tami"
+ },
+ "tmz": {
+ "english_name": "Tamanaku"
+ },
+ "tn": {
+ "english_name": "Tswana"
+ },
+ "tna": {
+ "english_name": "Tacana"
+ },
+ "tnb": {
+ "english_name": "Tunebo, Western"
+ },
+ "tnc": {
+ "english_name": "Tanimuca-Retuar\u00e3"
+ },
+ "tnd": {
+ "english_name": "Tunebo, Angosturas"
+ },
+ "tne": {
+ "english_name": "Kallahan, Tinoc"
+ },
+ "tng": {
+ "english_name": "Tobanga"
+ },
+ "tnh": {
+ "english_name": "Maiani"
+ },
+ "tni": {
+ "english_name": "Tandia"
+ },
+ "tnk": {
+ "english_name": "Kwamera"
+ },
+ "tnl": {
+ "english_name": "Lenakel"
+ },
+ "tnm": {
+ "english_name": "Tabla"
+ },
+ "tnn": {
+ "english_name": "Tanna, North"
+ },
+ "tno": {
+ "english_name": "Toromono"
+ },
+ "tnp": {
+ "english_name": "Whitesands"
+ },
+ "tnq": {
+ "english_name": "Taino"
+ },
+ "tnr": {
+ "english_name": "M\u00e9nik"
+ },
+ "tns": {
+ "english_name": "Tenis"
+ },
+ "tnt": {
+ "english_name": "Tontemboan"
+ },
+ "tnu": {
+ "english_name": "Tay Khang"
+ },
+ "tnv": {
+ "english_name": "Tangchangya"
+ },
+ "tnw": {
+ "english_name": "Tonsawang"
+ },
+ "tnx": {
+ "english_name": "Tanema"
+ },
+ "tny": {
+ "english_name": "Tongwe"
+ },
+ "tnz": {
+ "english_name": "Tonga (Thailand)"
+ },
+ "to": {
+ "english_name": "Tonga (Tonga Islands)"
+ },
+ "tob": {
+ "english_name": "Toba"
+ },
+ "toc": {
+ "english_name": "Totonac, Coyutla"
+ },
+ "tod": {
+ "english_name": "Toma"
+ },
+ "toe": {
+ "english_name": "Tomedes"
+ },
+ "tof": {
+ "english_name": "Gizrra"
+ },
+ "tog": {
+ "english_name": "Tonga (Nyasa)"
+ },
+ "toh": {
+ "english_name": "Gitonga"
+ },
+ "toi": {
+ "english_name": "Tonga (Zambia)"
+ },
+ "toj": {
+ "english_name": "Tojolabal"
+ },
+ "tol": {
+ "english_name": "Tolowa"
+ },
+ "tom": {
+ "english_name": "Tombulu"
+ },
+ "too": {
+ "english_name": "Totonac, Xicotepec De Ju\u00e1rez"
+ },
+ "top": {
+ "english_name": "Totonac, Papantla"
+ },
+ "toq": {
+ "english_name": "Toposa"
+ },
+ "tor": {
+ "english_name": "Banda, Togbo-Vara"
+ },
+ "tos": {
+ "english_name": "Totonac, Highland"
+ },
+ "tou": {
+ "english_name": "Tho"
+ },
+ "tov": {
+ "english_name": "Taromi, Upper"
+ },
+ "tow": {
+ "english_name": "Jemez"
+ },
+ "tox": {
+ "english_name": "Tobian"
+ },
+ "toy": {
+ "english_name": "Topoiyo"
+ },
+ "toz": {
+ "english_name": "To"
+ },
+ "tpa": {
+ "english_name": "Taupota"
+ },
+ "tpc": {
+ "english_name": "Me'phaa, Azoy\u00fa"
+ },
+ "tpe": {
+ "english_name": "Tippera"
+ },
+ "tpf": {
+ "english_name": "Tarpia"
+ },
+ "tpg": {
+ "english_name": "Kula"
+ },
+ "tpi": {
+ "english_name": "Tok Pisin"
+ },
+ "tpj": {
+ "english_name": "Tapiet\u00e9"
+ },
+ "tpk": {
+ "english_name": "Tupinikin"
+ },
+ "tpl": {
+ "english_name": "Me'phaa, Tlacoapa"
+ },
+ "tpm": {
+ "english_name": "Tampulma"
+ },
+ "tpn": {
+ "english_name": "Tupinamb\u00e1"
+ },
+ "tpo": {
+ "english_name": "Tai Pao"
+ },
+ "tpp": {
+ "english_name": "Tepehua, Pisaflores"
+ },
+ "tpq": {
+ "english_name": "Tukpa"
+ },
+ "tpr": {
+ "english_name": "Tupar\u00ed"
+ },
+ "tpt": {
+ "english_name": "Tepehua, Tlachichilco"
+ },
+ "tpu": {
+ "english_name": "Tampuan"
+ },
+ "tpv": {
+ "english_name": "Tanapag"
+ },
+ "tpw": {
+ "english_name": "Tup\u00ed"
+ },
+ "tpx": {
+ "english_name": "Me'phaa, Acatepec"
+ },
+ "tpy": {
+ "english_name": "Trumai"
+ },
+ "tpz": {
+ "english_name": "Tinputz"
+ },
+ "tqb": {
+ "english_name": "Temb\u00e9"
+ },
+ "tql": {
+ "english_name": "Lehali"
+ },
+ "tqm": {
+ "english_name": "Turumsa"
+ },
+ "tqn": {
+ "english_name": "Tenino"
+ },
+ "tqo": {
+ "english_name": "Toaripi"
+ },
+ "tqp": {
+ "english_name": "Tomoip"
+ },
+ "tqq": {
+ "english_name": "Tunni"
+ },
+ "tqr": {
+ "english_name": "Torona"
+ },
+ "tqt": {
+ "english_name": "Totonac, Western"
+ },
+ "tqu": {
+ "english_name": "Touo"
+ },
+ "tqw": {
+ "english_name": "Tonkawa"
+ },
+ "tr": {
+ "english_name": "Turkish",
+ "name": "T\u00fcrk\u00e7e"
+ },
+ "tra": {
+ "english_name": "Tirahi"
+ },
+ "trb": {
+ "english_name": "Terebu"
+ },
+ "trc": {
+ "english_name": "Triqui, Copala"
+ },
+ "trd": {
+ "english_name": "Turi"
+ },
+ "tre": {
+ "english_name": "Tarangan, East"
+ },
+ "trf": {
+ "english_name": "Creole English, Trinidadian"
+ },
+ "trg": {
+ "english_name": "Lish\u00e1n Did\u00e1n"
+ },
+ "trh": {
+ "english_name": "Turaka"
+ },
+ "tri": {
+ "english_name": "Tri\u00f3"
+ },
+ "trj": {
+ "english_name": "Toram"
+ },
+ "trl": {
+ "english_name": "Scottish, Traveller"
+ },
+ "trm": {
+ "english_name": "Tregami"
+ },
+ "trn": {
+ "english_name": "Trinitario"
+ },
+ "tro": {
+ "english_name": "Naga, Tarao"
+ },
+ "trp": {
+ "english_name": "Kok Borok"
+ },
+ "trq": {
+ "english_name": "Triqui, San Mart\u00edn Itunyoso"
+ },
+ "trr": {
+ "english_name": "Taushiro"
+ },
+ "trs": {
+ "english_name": "Triqui, Chicahuaxtla"
+ },
+ "trt": {
+ "english_name": "Tunggare"
+ },
+ "tru": {
+ "english_name": "Turoyo"
+ },
+ "trv": {
+ "english_name": "Taroko"
+ },
+ "trw": {
+ "english_name": "Torwali"
+ },
+ "trx": {
+ "english_name": "Bidayuh, Tringgus-Sembaan"
+ },
+ "try": {
+ "english_name": "Turung"
+ },
+ "trz": {
+ "english_name": "Tor\u00e1"
+ },
+ "ts": {
+ "english_name": "Tsonga"
+ },
+ "tsa": {
+ "english_name": "Tsaangi"
+ },
+ "tsb": {
+ "english_name": "Tsamai"
+ },
+ "tsc": {
+ "english_name": "Tswa"
+ },
+ "tsd": {
+ "english_name": "Tsakonian"
+ },
+ "tse": {
+ "english_name": "Tunisian Sign Language"
+ },
+ "tsg": {
+ "english_name": "Tausug"
+ },
+ "tsh": {
+ "english_name": "Tsuvan"
+ },
+ "tsi": {
+ "english_name": "Tsimshian"
+ },
+ "tsj": {
+ "english_name": "Tshangla"
+ },
+ "tsk": {
+ "english_name": "Tseku"
+ },
+ "tsl": {
+ "english_name": "Ts'\u00fcn-Lao"
+ },
+ "tsm": {
+ "english_name": "Turkish Sign Language"
+ },
+ "tsp": {
+ "english_name": "Toussian, Northern"
+ },
+ "tsq": {
+ "english_name": "Thai Sign Language"
+ },
+ "tsr": {
+ "english_name": "Akei"
+ },
+ "tss": {
+ "english_name": "Taiwan Sign Language"
+ },
+ "tst": {
+ "english_name": "Songway Kiini, Tondi"
+ },
+ "tsu": {
+ "english_name": "Tsou"
+ },
+ "tsv": {
+ "english_name": "Tsogo"
+ },
+ "tsw": {
+ "english_name": "Tsishingini"
+ },
+ "tsx": {
+ "english_name": "Mubami"
+ },
+ "tsy": {
+ "english_name": "Tebul Sign Language"
+ },
+ "tsz": {
+ "english_name": "Purepecha"
+ },
+ "tt": {
+ "english_name": "Tatar",
+ "name": "\u0422\u0430\u0442\u0430\u0440\u0447\u0430"
+ },
+ "tta": {
+ "english_name": "Tutelo"
+ },
+ "ttb": {
+ "english_name": "Gaa"
+ },
+ "ttc": {
+ "english_name": "Tektiteko"
+ },
+ "ttd": {
+ "english_name": "Tauade"
+ },
+ "tte": {
+ "english_name": "Bwanabwana"
+ },
+ "ttf": {
+ "english_name": "Tuotomb"
+ },
+ "ttg": {
+ "english_name": "Tutong"
+ },
+ "tth": {
+ "english_name": "Ta'oih, Upper"
+ },
+ "tti": {
+ "english_name": "Tobati"
+ },
+ "ttj": {
+ "english_name": "Tooro"
+ },
+ "ttk": {
+ "english_name": "Totoro"
+ },
+ "ttl": {
+ "english_name": "Totela"
+ },
+ "ttm": {
+ "english_name": "Tutchone, Northern"
+ },
+ "ttn": {
+ "english_name": "Towei"
+ },
+ "tto": {
+ "english_name": "Ta'oih, Lower"
+ },
+ "ttp": {
+ "english_name": "Tombelala"
+ },
+ "ttq": {
+ "english_name": "Tamajaq, Tawallammat"
+ },
+ "ttr": {
+ "english_name": "Tera"
+ },
+ "tts": {
+ "english_name": "Thai, Northeastern"
+ },
+ "ttt": {
+ "english_name": "Tat, Muslim"
+ },
+ "ttu": {
+ "english_name": "Torau"
+ },
+ "ttv": {
+ "english_name": "Titan"
+ },
+ "ttw": {
+ "english_name": "Long Wat"
+ },
+ "tty": {
+ "english_name": "Sikaritai"
+ },
+ "ttz": {
+ "english_name": "Tsum"
+ },
+ "tua": {
+ "english_name": "Wiarumus"
+ },
+ "tub": {
+ "english_name": "T\u00fcbatulabal"
+ },
+ "tuc": {
+ "english_name": "Mutu"
+ },
+ "tud": {
+ "english_name": "Tux\u00e1"
+ },
+ "tue": {
+ "english_name": "Tuyuca"
+ },
+ "tuf": {
+ "english_name": "Tunebo, Central"
+ },
+ "tug": {
+ "english_name": "Tunia"
+ },
+ "tuh": {
+ "english_name": "Taulil"
+ },
+ "tui": {
+ "english_name": "Tupuri"
+ },
+ "tuj": {
+ "english_name": "Tugutil"
+ },
+ "tul": {
+ "english_name": "Tula"
+ },
+ "tum": {
+ "english_name": "Tumbuka"
+ },
+ "tun": {
+ "english_name": "Tunica"
+ },
+ "tuo": {
+ "english_name": "Tucano"
+ },
+ "tuq": {
+ "english_name": "Tedaga"
+ },
+ "tus": {
+ "english_name": "Tuscarora"
+ },
+ "tuu": {
+ "english_name": "Tututni"
+ },
+ "tuv": {
+ "english_name": "Turkana"
+ },
+ "tux": {
+ "english_name": "Tuxin\u00e1wa"
+ },
+ "tuy": {
+ "english_name": "Tugen"
+ },
+ "tuz": {
+ "english_name": "Turka"
+ },
+ "tva": {
+ "english_name": "Vaghua"
+ },
+ "tvd": {
+ "english_name": "Tsuvadi"
+ },
+ "tve": {
+ "english_name": "Te'un"
+ },
+ "tvk": {
+ "english_name": "Ambrym, Southeast"
+ },
+ "tvl": {
+ "english_name": "Tuvalu"
+ },
+ "tvm": {
+ "english_name": "Tela-Masbuar"
+ },
+ "tvn": {
+ "english_name": "Tavoyan"
+ },
+ "tvo": {
+ "english_name": "Tidore"
+ },
+ "tvs": {
+ "english_name": "Taveta"
+ },
+ "tvt": {
+ "english_name": "Naga, Tutsa"
+ },
+ "tvu": {
+ "english_name": "Tunen"
+ },
+ "tvw": {
+ "english_name": "Sedoa"
+ },
+ "tvy": {
+ "english_name": "Pidgin, Timor"
+ },
+ "tw": {
+ "english_name": "Twi"
+ },
+ "twa": {
+ "english_name": "Twana"
+ },
+ "twb": {
+ "english_name": "Tawbuid, Western"
+ },
+ "twc": {
+ "english_name": "Teshenawa"
+ },
+ "twd": {
+ "english_name": "Twents"
+ },
+ "twe": {
+ "english_name": "Tewa (Indonesia)"
+ },
+ "twf": {
+ "english_name": "Tiwa, Northern"
+ },
+ "twg": {
+ "english_name": "Tereweng"
+ },
+ "twh": {
+ "english_name": "Tai D\u00f3n"
+ },
+ "twl": {
+ "english_name": "Tawara"
+ },
+ "twm": {
+ "english_name": "Monpa, Tawang"
+ },
+ "twn": {
+ "english_name": "Twendi"
+ },
+ "two": {
+ "english_name": "Tswapong"
+ },
+ "twp": {
+ "english_name": "Ere"
+ },
+ "twq": {
+ "english_name": "Tasawaq"
+ },
+ "twr": {
+ "english_name": "Tarahumara, Southwestern"
+ },
+ "twt": {
+ "english_name": "Turiw\u00e1ra"
+ },
+ "twu": {
+ "english_name": "Termanu"
+ },
+ "tww": {
+ "english_name": "Tuwari"
+ },
+ "twx": {
+ "english_name": "Tewe"
+ },
+ "twy": {
+ "english_name": "Tawoyan"
+ },
+ "txa": {
+ "english_name": "Tombonuo"
+ },
+ "txb": {
+ "english_name": "Tokharian B"
+ },
+ "txc": {
+ "english_name": "Tsetsaut"
+ },
+ "txe": {
+ "english_name": "Totoli"
+ },
+ "txg": {
+ "english_name": "Tangut"
+ },
+ "txh": {
+ "english_name": "Thracian"
+ },
+ "txi": {
+ "english_name": "Ikpeng"
+ },
+ "txm": {
+ "english_name": "Tomini"
+ },
+ "txn": {
+ "english_name": "Tarangan, West"
+ },
+ "txo": {
+ "english_name": "Toto"
+ },
+ "txq": {
+ "english_name": "Tii"
+ },
+ "txr": {
+ "english_name": "Tartessian"
+ },
+ "txs": {
+ "english_name": "Tonsea"
+ },
+ "txt": {
+ "english_name": "Citak"
+ },
+ "txu": {
+ "english_name": "Kayap\u00f3"
+ },
+ "txx": {
+ "english_name": "Tatana"
+ },
+ "txy": {
+ "english_name": "Malagasy, Tanosy"
+ },
+ "ty": {
+ "english_name": "Tahitian"
+ },
+ "tya": {
+ "english_name": "Tauya"
+ },
+ "tye": {
+ "english_name": "Kyanga"
+ },
+ "tyh": {
+ "english_name": "O'du"
+ },
+ "tyi": {
+ "english_name": "Teke-Tsaayi"
+ },
+ "tyj": {
+ "english_name": "Tai Do"
+ },
+ "tyl": {
+ "english_name": "Thu Lao"
+ },
+ "tyn": {
+ "english_name": "Kombai"
+ },
+ "typ": {
+ "english_name": "Thaypan"
+ },
+ "tyr": {
+ "english_name": "Tai Daeng"
+ },
+ "tys": {
+ "english_name": "T\u00e0y Sa Pa"
+ },
+ "tyt": {
+ "english_name": "T\u00e0y Tac"
+ },
+ "tyu": {
+ "english_name": "Kua"
+ },
+ "tyv": {
+ "english_name": "Tuvinian"
+ },
+ "tyx": {
+ "english_name": "Teke-Tyee"
+ },
+ "tyz": {
+ "english_name": "T\u00e0y"
+ },
+ "tza": {
+ "english_name": "Tanzanian Sign Language"
+ },
+ "tzh": {
+ "english_name": "Tzeltal"
+ },
+ "tzj": {
+ "english_name": "Tz'utujil"
+ },
+ "tzl": {
+ "english_name": "Talossan"
+ },
+ "tzm": {
+ "english_name": "Tamazight, Central Atlas"
+ },
+ "tzn": {
+ "english_name": "Tugun"
+ },
+ "tzo": {
+ "english_name": "Tzotzil"
+ },
+ "tzx": {
+ "english_name": "Tabriak"
+ },
+ "uam": {
+ "english_name": "Uamu\u00e9"
+ },
+ "uan": {
+ "english_name": "Kuan"
+ },
+ "uar": {
+ "english_name": "Tairuma"
+ },
+ "uba": {
+ "english_name": "Ubang"
+ },
+ "ubi": {
+ "english_name": "Ubi"
+ },
+ "ubl": {
+ "english_name": "Bikol, Buhi'non"
+ },
+ "ubr": {
+ "english_name": "Ubir"
+ },
+ "ubu": {
+ "english_name": "Umbu-Ungu"
+ },
+ "uby": {
+ "english_name": "Ubykh"
+ },
+ "uda": {
+ "english_name": "Uda"
+ },
+ "ude": {
+ "english_name": "Udihe"
+ },
+ "udg": {
+ "english_name": "Muduga"
+ },
+ "udi": {
+ "english_name": "Udi"
+ },
+ "udj": {
+ "english_name": "Ujir"
+ },
+ "udl": {
+ "english_name": "Wuzlam"
+ },
+ "udm": {
+ "english_name": "Udmurt"
+ },
+ "udu": {
+ "english_name": "Uduk"
+ },
+ "ues": {
+ "english_name": "Kioko"
+ },
+ "ufi": {
+ "english_name": "Ufim"
+ },
+ "ug": {
+ "english_name": "Uighur"
+ },
+ "uga": {
+ "english_name": "Ugaritic"
+ },
+ "ugb": {
+ "english_name": "Kuku-Ugbanh"
+ },
+ "uge": {
+ "english_name": "Ughele"
+ },
+ "ugn": {
+ "english_name": "Ugandan Sign Language"
+ },
+ "ugo": {
+ "english_name": "Ugong"
+ },
+ "ugy": {
+ "english_name": "Uruguayan Sign Language"
+ },
+ "uha": {
+ "english_name": "Uhami"
+ },
+ "uhn": {
+ "english_name": "Damal"
+ },
+ "uis": {
+ "english_name": "Uisai"
+ },
+ "uiv": {
+ "english_name": "Iyive"
+ },
+ "uji": {
+ "english_name": "Tanjijili"
+ },
+ "uk": {
+ "english_name": "Ukrainian",
+ "name": "\u0443\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"
+ },
+ "uka": {
+ "english_name": "Kaburi"
+ },
+ "ukg": {
+ "english_name": "Ukuriguma"
+ },
+ "ukh": {
+ "english_name": "Ukhwejo"
+ },
+ "ukl": {
+ "english_name": "Ukrainian Sign Language"
+ },
+ "ukp": {
+ "english_name": "Ukpe-Bayobiri"
+ },
+ "ukq": {
+ "english_name": "Ukwa"
+ },
+ "uks": {
+ "english_name": "Urub\u00fa-Kaapor Sign Language"
+ },
+ "uku": {
+ "english_name": "Ukue"
+ },
+ "ukw": {
+ "english_name": "Ukwuani-Aboh-Ndoni"
+ },
+ "uky": {
+ "english_name": "Kuuk-Yak"
+ },
+ "ula": {
+ "english_name": "Fungwa"
+ },
+ "ulb": {
+ "english_name": "Ulukwumi"
+ },
+ "ulc": {
+ "english_name": "Ulch"
+ },
+ "ule": {
+ "english_name": "Lule"
+ },
+ "ulf": {
+ "english_name": "Usku"
+ },
+ "uli": {
+ "english_name": "Ulithian"
+ },
+ "ulk": {
+ "english_name": "Meriam"
+ },
+ "ull": {
+ "english_name": "Ullatan"
+ },
+ "ulm": {
+ "english_name": "Ulumanda'"
+ },
+ "uln": {
+ "english_name": "Unserdeutsch"
+ },
+ "ulu": {
+ "english_name": "Uma' Lung"
+ },
+ "ulw": {
+ "english_name": "Ulwa"
+ },
+ "uma": {
+ "english_name": "Umatilla"
+ },
+ "umb": {
+ "english_name": "Umbundu"
+ },
+ "umc": {
+ "english_name": "Marrucinian"
+ },
+ "umd": {
+ "english_name": "Umbindhamu"
+ },
+ "umg": {
+ "english_name": "Umbuygamu"
+ },
+ "umi": {
+ "english_name": "Ukit"
+ },
+ "umm": {
+ "english_name": "Umon"
+ },
+ "umn": {
+ "english_name": "Naga, Makyan"
+ },
+ "umo": {
+ "english_name": "Umot\u00edna"
+ },
+ "ump": {
+ "english_name": "Umpila"
+ },
+ "umr": {
+ "english_name": "Umbugarla"
+ },
+ "ums": {
+ "english_name": "Pendau"
+ },
+ "umu": {
+ "english_name": "Munsee"
+ },
+ "una": {
+ "english_name": "Watut, North"
+ },
+ "und": {
+ "english_name": "Undetermined"
+ },
+ "une": {
+ "english_name": "Uneme"
+ },
+ "ung": {
+ "english_name": "Ngarinyin"
+ },
+ "unk": {
+ "english_name": "Enawen\u00e9-Naw\u00e9"
+ },
+ "unm": {
+ "english_name": "Unami"
+ },
+ "unn": {
+ "english_name": "Kurnai"
+ },
+ "unr": {
+ "english_name": "Mundari"
+ },
+ "unu": {
+ "english_name": "Unubahe"
+ },
+ "unx": {
+ "english_name": "Munda"
+ },
+ "unz": {
+ "english_name": "Kaili, Unde"
+ },
+ "upi": {
+ "english_name": "Umeda"
+ },
+ "upv": {
+ "english_name": "Uripiv-Wala-Rano-Atchin"
+ },
+ "ur": {
+ "english_name": "Urdu"
+ },
+ "ura": {
+ "english_name": "Urarina"
+ },
+ "urb": {
+ "english_name": "Urub\u00fa-Kaapor"
+ },
+ "urc": {
+ "english_name": "Urningangg"
+ },
+ "ure": {
+ "english_name": "Uru"
+ },
+ "urf": {
+ "english_name": "Uradhi"
+ },
+ "urg": {
+ "english_name": "Urigina"
+ },
+ "urh": {
+ "english_name": "Urhobo"
+ },
+ "uri": {
+ "english_name": "Urim"
+ },
+ "urk": {
+ "english_name": "Urak Lawoi'"
+ },
+ "url": {
+ "english_name": "Urali"
+ },
+ "urm": {
+ "english_name": "Urapmin"
+ },
+ "urn": {
+ "english_name": "Uruangnirin"
+ },
+ "uro": {
+ "english_name": "Ura (Papua New Guinea)"
+ },
+ "urp": {
+ "english_name": "Uru-Pa-In"
+ },
+ "urr": {
+ "english_name": "Lehalurup"
+ },
+ "urt": {
+ "english_name": "Urat"
+ },
+ "uru": {
+ "english_name": "Urumi"
+ },
+ "urv": {
+ "english_name": "Uruava"
+ },
+ "urw": {
+ "english_name": "Sop"
+ },
+ "urx": {
+ "english_name": "Urimo"
+ },
+ "ury": {
+ "english_name": "Orya"
+ },
+ "urz": {
+ "english_name": "Uru-Eu-Wau-Wau"
+ },
+ "usa": {
+ "english_name": "Usarufa"
+ },
+ "ush": {
+ "english_name": "Ushojo"
+ },
+ "usi": {
+ "english_name": "Usui"
+ },
+ "usk": {
+ "english_name": "Usaghade"
+ },
+ "usp": {
+ "english_name": "Uspanteco"
+ },
+ "usu": {
+ "english_name": "Uya"
+ },
+ "uta": {
+ "english_name": "Otank"
+ },
+ "ute": {
+ "english_name": "Ute-Southern Paiute"
+ },
+ "utp": {
+ "english_name": "Amba (Solomon Islands)"
+ },
+ "utr": {
+ "english_name": "Etulo"
+ },
+ "utu": {
+ "english_name": "Utu"
+ },
+ "uum": {
+ "english_name": "Urum"
+ },
+ "uun": {
+ "english_name": "Kulon-Pazeh"
+ },
+ "uur": {
+ "english_name": "Ura (Vanuatu)"
+ },
+ "uuu": {
+ "english_name": "U"
+ },
+ "uve": {
+ "english_name": "Uvean, West"
+ },
+ "uvh": {
+ "english_name": "Uri"
+ },
+ "uvl": {
+ "english_name": "Lote"
+ },
+ "uwa": {
+ "english_name": "Kuku-Uwanh"
+ },
+ "uya": {
+ "english_name": "Doko-Uyanga"
+ },
+ "uz": {
+ "english_name": "Uzbek"
+ },
+ "uzn": {
+ "english_name": "Uzbek, Northern"
+ },
+ "uzs": {
+ "english_name": "Uzbek, Southern"
+ },
+ "vaa": {
+ "english_name": "Vaagri Booli"
+ },
+ "vae": {
+ "english_name": "Vale"
+ },
+ "vaf": {
+ "english_name": "Vafsi"
+ },
+ "vag": {
+ "english_name": "Vagla"
+ },
+ "vah": {
+ "english_name": "Varhadi-Nagpuri"
+ },
+ "vai": {
+ "english_name": "Vai"
+ },
+ "vaj": {
+ "english_name": "Vasekela Bushman"
+ },
+ "val": {
+ "english_name": "Vehes"
+ },
+ "vam": {
+ "english_name": "Vanimo"
+ },
+ "van": {
+ "english_name": "Valman"
+ },
+ "vao": {
+ "english_name": "Vao"
+ },
+ "vap": {
+ "english_name": "Vaiphei"
+ },
+ "var": {
+ "english_name": "Huarijio"
+ },
+ "vas": {
+ "english_name": "Vasavi"
+ },
+ "vau": {
+ "english_name": "Vanuma"
+ },
+ "vav": {
+ "english_name": "Varli"
+ },
+ "vay": {
+ "english_name": "Wayu"
+ },
+ "vbb": {
+ "english_name": "Babar, Southeast"
+ },
+ "vbk": {
+ "english_name": "Bontok, Southwestern"
+ },
+ "ve": {
+ "english_name": "Venda",
+ "name": "Venda"
+ },
+ "vec": {
+ "english_name": "Venetian"
+ },
+ "ved": {
+ "english_name": "Veddah"
+ },
+ "vel": {
+ "english_name": "Veluws"
+ },
+ "vem": {
+ "english_name": "Vemgo-Mabas"
+ },
+ "veo": {
+ "english_name": "Venture\u00f1o"
+ },
+ "vep": {
+ "english_name": "Veps"
+ },
+ "ver": {
+ "english_name": "Mom Jango"
+ },
+ "vgr": {
+ "english_name": "Vaghri"
+ },
+ "vgt": {
+ "english_name": "Vlaamse Gebarentaal"
+ },
+ "vi": {
+ "english_name": "Vietnamese",
+ "name": "Ti\u1ebfng Vi\u1ec7t"
+ },
+ "vic": {
+ "english_name": "Creole English, Virgin Islands"
+ },
+ "vid": {
+ "english_name": "Vidunda"
+ },
+ "vif": {
+ "english_name": "Vili"
+ },
+ "vig": {
+ "english_name": "Viemo"
+ },
+ "vil": {
+ "english_name": "Vilela"
+ },
+ "vin": {
+ "english_name": "Vinza"
+ },
+ "vis": {
+ "english_name": "Vishavan"
+ },
+ "vit": {
+ "english_name": "Viti"
+ },
+ "viv": {
+ "english_name": "Iduna"
+ },
+ "vka": {
+ "english_name": "Kariyarra"
+ },
+ "vki": {
+ "english_name": "Ija-Zuba"
+ },
+ "vkj": {
+ "english_name": "Kujarge"
+ },
+ "vkk": {
+ "english_name": "Kaur"
+ },
+ "vkl": {
+ "english_name": "Kulisusu"
+ },
+ "vkm": {
+ "english_name": "Kamakan"
+ },
+ "vko": {
+ "english_name": "Kodeoha"
+ },
+ "vkp": {
+ "english_name": "Creole Portuguese, Korlai"
+ },
+ "vkt": {
+ "english_name": "Malay, Tenggarong Kutai"
+ },
+ "vku": {
+ "english_name": "Kurrama"
+ },
+ "vlp": {
+ "english_name": "Valpei"
+ },
+ "vls": {
+ "english_name": "Vlaams"
+ },
+ "vma": {
+ "english_name": "Martuyhunira"
+ },
+ "vmb": {
+ "english_name": "Barbaram"
+ },
+ "vmc": {
+ "english_name": "Mixtec, Juxtlahuaca"
+ },
+ "vmd": {
+ "english_name": "Koraga, Mudu"
+ },
+ "vme": {
+ "english_name": "Masela, East"
+ },
+ "vmf": {
+ "english_name": "Mainfr\u00e4nkisch"
+ },
+ "vmg": {
+ "english_name": "Lungalunga"
+ },
+ "vmh": {
+ "english_name": "Maraghei"
+ },
+ "vmi": {
+ "english_name": "Miwa"
+ },
+ "vmj": {
+ "english_name": "Mixtec, Ixtayutla"
+ },
+ "vmk": {
+ "english_name": "Makhuwa-Shirima"
+ },
+ "vml": {
+ "english_name": "Malgana"
+ },
+ "vmm": {
+ "english_name": "Mixtec, Mitlatongo"
+ },
+ "vmp": {
+ "english_name": "Mazatec, Soyaltepec"
+ },
+ "vmq": {
+ "english_name": "Mixtec, Soyaltepec"
+ },
+ "vmr": {
+ "english_name": "Marenje"
+ },
+ "vms": {
+ "english_name": "Moksela"
+ },
+ "vmu": {
+ "english_name": "Muluridyi"
+ },
+ "vmv": {
+ "english_name": "Maidu, Valley"
+ },
+ "vmw": {
+ "english_name": "Makhuwa"
+ },
+ "vmx": {
+ "english_name": "Mixtec, Tamazola"
+ },
+ "vmy": {
+ "english_name": "Mazatec, Ayautla"
+ },
+ "vmz": {
+ "english_name": "Mazatec, Mazatl\u00e1n"
+ },
+ "vnk": {
+ "english_name": "Vano"
+ },
+ "vnm": {
+ "english_name": "Vinmavis"
+ },
+ "vnp": {
+ "english_name": "Vunapu"
+ },
+ "vo": {
+ "english_name": "Volap\u00fck"
+ },
+ "vor": {
+ "english_name": "Voro"
+ },
+ "vot": {
+ "english_name": "Votic"
+ },
+ "vra": {
+ "english_name": "Vera'a"
+ },
+ "vro": {
+ "english_name": "V\u00f5ro"
+ },
+ "vrs": {
+ "english_name": "Varisi"
+ },
+ "vrt": {
+ "english_name": "Burmbar"
+ },
+ "vsi": {
+ "english_name": "Moldova Sign Language"
+ },
+ "vsl": {
+ "english_name": "Venezuelan Sign Language"
+ },
+ "vsv": {
+ "english_name": "Valencian Sign Language"
+ },
+ "vto": {
+ "english_name": "Vitou"
+ },
+ "vum": {
+ "english_name": "Vumbu"
+ },
+ "vun": {
+ "english_name": "Vunjo"
+ },
+ "vut": {
+ "english_name": "Vute"
+ },
+ "vwa": {
+ "english_name": "Awa (China)"
+ },
+ "wa": {
+ "english_name": "Walloon",
+ "name": "Walon"
+ },
+ "waa": {
+ "english_name": "Walla Walla"
+ },
+ "wab": {
+ "english_name": "Wab"
+ },
+ "wac": {
+ "english_name": "Wasco-Wishram"
+ },
+ "wad": {
+ "english_name": "Wandamen"
+ },
+ "wae": {
+ "english_name": "Walser"
+ },
+ "waf": {
+ "english_name": "Wakon\u00e1"
+ },
+ "wag": {
+ "english_name": "Wa'ema"
+ },
+ "wah": {
+ "english_name": "Watubela"
+ },
+ "wai": {
+ "english_name": "Wares"
+ },
+ "waj": {
+ "english_name": "Waffa"
+ },
+ "wal": {
+ "english_name": "Wolaytta"
+ },
+ "wam": {
+ "english_name": "Wampanoag"
+ },
+ "wan": {
+ "english_name": "Wan"
+ },
+ "wao": {
+ "english_name": "Wappo"
+ },
+ "wap": {
+ "english_name": "Wapishana"
+ },
+ "waq": {
+ "english_name": "Wageman"
+ },
+ "war": {
+ "english_name": "Waray (Philippines)"
+ },
+ "was": {
+ "english_name": "Washo"
+ },
+ "wat": {
+ "english_name": "Kaninuwa"
+ },
+ "wau": {
+ "english_name": "Waur\u00e1"
+ },
+ "wav": {
+ "english_name": "Waka"
+ },
+ "waw": {
+ "english_name": "Waiwai"
+ },
+ "wax": {
+ "english_name": "Watam"
+ },
+ "way": {
+ "english_name": "Wayana"
+ },
+ "waz": {
+ "english_name": "Wampur"
+ },
+ "wba": {
+ "english_name": "Warao"
+ },
+ "wbb": {
+ "english_name": "Wabo"
+ },
+ "wbe": {
+ "english_name": "Waritai"
+ },
+ "wbf": {
+ "english_name": "Wara"
+ },
+ "wbh": {
+ "english_name": "Wanda"
+ },
+ "wbi": {
+ "english_name": "Vwanji"
+ },
+ "wbj": {
+ "english_name": "Alagwa"
+ },
+ "wbk": {
+ "english_name": "Waigali"
+ },
+ "wbl": {
+ "english_name": "Wakhi"
+ },
+ "wbm": {
+ "english_name": "Wa"
+ },
+ "wbp": {
+ "english_name": "Warlpiri"
+ },
+ "wbq": {
+ "english_name": "Waddar"
+ },
+ "wbr": {
+ "english_name": "Wagdi"
+ },
+ "wbt": {
+ "english_name": "Wanman"
+ },
+ "wbv": {
+ "english_name": "Wajarri"
+ },
+ "wbw": {
+ "english_name": "Woi"
+ },
+ "wca": {
+ "english_name": "Yanom\u00e1mi"
+ },
+ "wci": {
+ "english_name": "Gbe, Waci"
+ },
+ "wdd": {
+ "english_name": "Wandji"
+ },
+ "wdg": {
+ "english_name": "Wadaginam"
+ },
+ "wdj": {
+ "english_name": "Wadjiginy"
+ },
+ "wdk": {
+ "english_name": "Wadikali"
+ },
+ "wdu": {
+ "english_name": "Wadjigu"
+ },
+ "wdy": {
+ "english_name": "Wadjabangayi"
+ },
+ "wea": {
+ "english_name": "Wewaw"
+ },
+ "wec": {
+ "english_name": "W\u00e8 Western"
+ },
+ "wed": {
+ "english_name": "Wedau"
+ },
+ "weg": {
+ "english_name": "Wergaia"
+ },
+ "weh": {
+ "english_name": "Weh"
+ },
+ "wei": {
+ "english_name": "Kiunum"
+ },
+ "wem": {
+ "english_name": "Gbe, Weme"
+ },
+ "weo": {
+ "english_name": "Wemale"
+ },
+ "wep": {
+ "english_name": "Westphalien"
+ },
+ "wer": {
+ "english_name": "Weri"
+ },
+ "wes": {
+ "english_name": "Pidgin, Cameroon"
+ },
+ "wet": {
+ "english_name": "Perai"
+ },
+ "weu": {
+ "english_name": "Chin, Rawngtu"
+ },
+ "wew": {
+ "english_name": "Wejewa"
+ },
+ "wfg": {
+ "english_name": "Yafi"
+ },
+ "wga": {
+ "english_name": "Wagaya"
+ },
+ "wgb": {
+ "english_name": "Wagawaga"
+ },
+ "wgg": {
+ "english_name": "Wangganguru"
+ },
+ "wgi": {
+ "english_name": "Wahgi"
+ },
+ "wgo": {
+ "english_name": "Waigeo"
+ },
+ "wgu": {
+ "english_name": "Wirangu"
+ },
+ "wgy": {
+ "english_name": "Warrgamay"
+ },
+ "wha": {
+ "english_name": "Manusela"
+ },
+ "whg": {
+ "english_name": "Wahgi, North"
+ },
+ "whk": {
+ "english_name": "Kenyah, Wahau"
+ },
+ "whu": {
+ "english_name": "Kayan, Wahau"
+ },
+ "wib": {
+ "english_name": "Toussian, Southern"
+ },
+ "wic": {
+ "english_name": "Wichita"
+ },
+ "wie": {
+ "english_name": "Wik-Epa"
+ },
+ "wif": {
+ "english_name": "Wik-Keyangan"
+ },
+ "wig": {
+ "english_name": "Wik-Ngathana"
+ },
+ "wih": {
+ "english_name": "Wik-Me'anha"
+ },
+ "wii": {
+ "english_name": "Minidien"
+ },
+ "wij": {
+ "english_name": "Wik-Iiyanh"
+ },
+ "wik": {
+ "english_name": "Wikalkan"
+ },
+ "wil": {
+ "english_name": "Wilawila"
+ },
+ "wim": {
+ "english_name": "Wik-Mungkan"
+ },
+ "win": {
+ "english_name": "Ho-Chunk"
+ },
+ "wir": {
+ "english_name": "Wiraf\u00e9d"
+ },
+ "wiu": {
+ "english_name": "Wiru"
+ },
+ "wiv": {
+ "english_name": "Vitu"
+ },
+ "wiy": {
+ "english_name": "Wiyot"
+ },
+ "wja": {
+ "english_name": "Waja"
+ },
+ "wji": {
+ "english_name": "Warji"
+ },
+ "wka": {
+ "english_name": "Kw'adza"
+ },
+ "wkb": {
+ "english_name": "Kumbaran"
+ },
+ "wkd": {
+ "english_name": "Wakde"
+ },
+ "wkl": {
+ "english_name": "Kalanadi"
+ },
+ "wku": {
+ "english_name": "Kunduvadi"
+ },
+ "wkw": {
+ "english_name": "Wakawaka"
+ },
+ "wky": {
+ "english_name": "Wangkayutyuru"
+ },
+ "wla": {
+ "english_name": "Walio"
+ },
+ "wlc": {
+ "english_name": "Comorian, Mwali"
+ },
+ "wle": {
+ "english_name": "Wolane"
+ },
+ "wlg": {
+ "english_name": "Kunbarlang"
+ },
+ "wli": {
+ "english_name": "Waioli"
+ },
+ "wlk": {
+ "english_name": "Wailaki"
+ },
+ "wll": {
+ "english_name": "Wali (Sudan)"
+ },
+ "wlm": {
+ "english_name": "Welsh, Middle"
+ },
+ "wlo": {
+ "english_name": "Wolio"
+ },
+ "wlr": {
+ "english_name": "Wailapa"
+ },
+ "wls": {
+ "english_name": "Wallisian"
+ },
+ "wlu": {
+ "english_name": "Wuliwuli"
+ },
+ "wlv": {
+ "english_name": "Wich\u00ed Lhamt\u00e9s Vejoz"
+ },
+ "wlw": {
+ "english_name": "Walak"
+ },
+ "wlx": {
+ "english_name": "Wali (Ghana)"
+ },
+ "wly": {
+ "english_name": "Waling"
+ },
+ "wma": {
+ "english_name": "Mawa (Nigeria)"
+ },
+ "wmb": {
+ "english_name": "Wambaya"
+ },
+ "wmc": {
+ "english_name": "Wamas"
+ },
+ "wmd": {
+ "english_name": "Mamaind\u00e9"
+ },
+ "wme": {
+ "english_name": "Wambule"
+ },
+ "wmh": {
+ "english_name": "Waima'a"
+ },
+ "wmi": {
+ "english_name": "Wamin"
+ },
+ "wmm": {
+ "english_name": "Maiwa (Indonesia)"
+ },
+ "wmn": {
+ "english_name": "Waamwang"
+ },
+ "wmo": {
+ "english_name": "Wom (Papua New Guinea)"
+ },
+ "wms": {
+ "english_name": "Wambon"
+ },
+ "wmt": {
+ "english_name": "Walmajarri"
+ },
+ "wmw": {
+ "english_name": "Mwani"
+ },
+ "wmx": {
+ "english_name": "Womo"
+ },
+ "wnb": {
+ "english_name": "Wanambre"
+ },
+ "wnc": {
+ "english_name": "Wantoat"
+ },
+ "wnd": {
+ "english_name": "Wandarang"
+ },
+ "wne": {
+ "english_name": "Waneci"
+ },
+ "wng": {
+ "english_name": "Wanggom"
+ },
+ "wni": {
+ "english_name": "Comorian, Ndzwani"
+ },
+ "wnk": {
+ "english_name": "Wanukaka"
+ },
+ "wnm": {
+ "english_name": "Wanggamala"
+ },
+ "wnn": {
+ "english_name": "Wunumara"
+ },
+ "wno": {
+ "english_name": "Wano"
+ },
+ "wnp": {
+ "english_name": "Wanap"
+ },
+ "wnu": {
+ "english_name": "Usan"
+ },
+ "wnw": {
+ "english_name": "Wintu"
+ },
+ "wny": {
+ "english_name": "Wanyi"
+ },
+ "wo": {
+ "english_name": "Wolof"
+ },
+ "woa": {
+ "english_name": "Tyaraity"
+ },
+ "wob": {
+ "english_name": "W\u00e8 Northern"
+ },
+ "woc": {
+ "english_name": "Wogeo"
+ },
+ "wod": {
+ "english_name": "Wolani"
+ },
+ "woe": {
+ "english_name": "Woleaian"
+ },
+ "wof": {
+ "english_name": "Wolof, Gambian"
+ },
+ "wog": {
+ "english_name": "Wogamusin"
+ },
+ "woi": {
+ "english_name": "Kamang"
+ },
+ "wok": {
+ "english_name": "Longto"
+ },
+ "wom": {
+ "english_name": "Wom (Nigeria)"
+ },
+ "won": {
+ "english_name": "Wongo"
+ },
+ "woo": {
+ "english_name": "Manombai"
+ },
+ "wor": {
+ "english_name": "Woria"
+ },
+ "wos": {
+ "english_name": "Hanga Hundi"
+ },
+ "wow": {
+ "english_name": "Wawonii"
+ },
+ "woy": {
+ "english_name": "Weyto"
+ },
+ "wpc": {
+ "english_name": "Maco"
+ },
+ "wra": {
+ "english_name": "Warapu"
+ },
+ "wrb": {
+ "english_name": "Warluwara"
+ },
+ "wrd": {
+ "english_name": "Warduji"
+ },
+ "wrg": {
+ "english_name": "Warungu"
+ },
+ "wrh": {
+ "english_name": "Wiradhuri"
+ },
+ "wri": {
+ "english_name": "Wariyangga"
+ },
+ "wrk": {
+ "english_name": "Garrwa"
+ },
+ "wrl": {
+ "english_name": "Warlmanpa"
+ },
+ "wrm": {
+ "english_name": "Warumungu"
+ },
+ "wrn": {
+ "english_name": "Warnang"
+ },
+ "wro": {
+ "english_name": "Worrorra"
+ },
+ "wrp": {
+ "english_name": "Waropen"
+ },
+ "wrr": {
+ "english_name": "Wardaman"
+ },
+ "wrs": {
+ "english_name": "Waris"
+ },
+ "wru": {
+ "english_name": "Waru"
+ },
+ "wrv": {
+ "english_name": "Waruna"
+ },
+ "wrw": {
+ "english_name": "Gugu Warra"
+ },
+ "wrx": {
+ "english_name": "Wae Rana"
+ },
+ "wry": {
+ "english_name": "Merwari"
+ },
+ "wrz": {
+ "english_name": "Waray (Australia)"
+ },
+ "wsa": {
+ "english_name": "Warembori"
+ },
+ "wsi": {
+ "english_name": "Wusi"
+ },
+ "wsk": {
+ "english_name": "Waskia"
+ },
+ "wsr": {
+ "english_name": "Owenia"
+ },
+ "wss": {
+ "english_name": "Wasa"
+ },
+ "wsu": {
+ "english_name": "Wasu"
+ },
+ "wsv": {
+ "english_name": "Wotapuri-Katarqalai"
+ },
+ "wtf": {
+ "english_name": "Watiwa"
+ },
+ "wth": {
+ "english_name": "Wathawurrung"
+ },
+ "wti": {
+ "english_name": "Berta"
+ },
+ "wtk": {
+ "english_name": "Watakataui"
+ },
+ "wtm": {
+ "english_name": "Mewati"
+ },
+ "wtw": {
+ "english_name": "Wotu"
+ },
+ "wua": {
+ "english_name": "Wikngenchera"
+ },
+ "wub": {
+ "english_name": "Wunambal"
+ },
+ "wud": {
+ "english_name": "Wudu"
+ },
+ "wuh": {
+ "english_name": "Wutunhua"
+ },
+ "wul": {
+ "english_name": "Silimo"
+ },
+ "wum": {
+ "english_name": "Wumbvu"
+ },
+ "wun": {
+ "english_name": "Bungu"
+ },
+ "wur": {
+ "english_name": "Wurrugu"
+ },
+ "wut": {
+ "english_name": "Wutung"
+ },
+ "wuu": {
+ "english_name": "Chinese, Wu"
+ },
+ "wuv": {
+ "english_name": "Wuvulu-Aua"
+ },
+ "wux": {
+ "english_name": "Wulna"
+ },
+ "wuy": {
+ "english_name": "Wauyai"
+ },
+ "wwa": {
+ "english_name": "Waama"
+ },
+ "wwb": {
+ "english_name": "Wakabunga"
+ },
+ "wwo": {
+ "english_name": "Wetamut"
+ },
+ "wwr": {
+ "english_name": "Warrwa"
+ },
+ "www": {
+ "english_name": "Wawa"
+ },
+ "wxa": {
+ "english_name": "Waxianghua"
+ },
+ "wxw": {
+ "english_name": "Wardandi"
+ },
+ "wya": {
+ "english_name": "Wyandot"
+ },
+ "wyb": {
+ "english_name": "Wangaaybuwan-Ngiyambaa"
+ },
+ "wyi": {
+ "english_name": "Woiwurrung"
+ },
+ "wym": {
+ "english_name": "Wymysorys"
+ },
+ "wyr": {
+ "english_name": "Wayor\u00f3"
+ },
+ "wyy": {
+ "english_name": "Fijian, Western"
+ },
+ "xaa": {
+ "english_name": "Arabic, Andalusian"
+ },
+ "xab": {
+ "english_name": "Sambe"
+ },
+ "xac": {
+ "english_name": "Kachari"
+ },
+ "xad": {
+ "english_name": "Adai"
+ },
+ "xae": {
+ "english_name": "Aequian"
+ },
+ "xag": {
+ "english_name": "Aghwan"
+ },
+ "xai": {
+ "english_name": "Kaimb\u00e9"
+ },
+ "xal": {
+ "english_name": "Kalmyk"
+ },
+ "xam": {
+ "english_name": "/Xam"
+ },
+ "xan": {
+ "english_name": "Xamtanga"
+ },
+ "xao": {
+ "english_name": "Khao"
+ },
+ "xap": {
+ "english_name": "Apalachee"
+ },
+ "xaq": {
+ "english_name": "Aquitanian"
+ },
+ "xar": {
+ "english_name": "Karami"
+ },
+ "xas": {
+ "english_name": "Kamas"
+ },
+ "xat": {
+ "english_name": "Katawixi"
+ },
+ "xau": {
+ "english_name": "Kauwera"
+ },
+ "xav": {
+ "english_name": "Xav\u00e1nte"
+ },
+ "xaw": {
+ "english_name": "Kawaiisu"
+ },
+ "xay": {
+ "english_name": "Kayan Mahakam"
+ },
+ "xba": {
+ "english_name": "Kamba (Brazil)"
+ },
+ "xbb": {
+ "english_name": "Burdekin, Lower"
+ },
+ "xbc": {
+ "english_name": "Bactrian"
+ },
+ "xbd": {
+ "english_name": "Bindal"
+ },
+ "xbe": {
+ "english_name": "Bigambal"
+ },
+ "xbg": {
+ "english_name": "Bunganditj"
+ },
+ "xbi": {
+ "english_name": "Kombio"
+ },
+ "xbj": {
+ "english_name": "Birrpayi"
+ },
+ "xbm": {
+ "english_name": "Breton, Middle"
+ },
+ "xbn": {
+ "english_name": "Kenaboi"
+ },
+ "xbo": {
+ "english_name": "Bolgarian"
+ },
+ "xbp": {
+ "english_name": "Bibbulman"
+ },
+ "xbr": {
+ "english_name": "Kambera"
+ },
+ "xbw": {
+ "english_name": "Kambiw\u00e1"
+ },
+ "xbx": {
+ "english_name": "Kabix\u00ed"
+ },
+ "xby": {
+ "english_name": "Batyala"
+ },
+ "xcb": {
+ "english_name": "Cumbric"
+ },
+ "xcc": {
+ "english_name": "Camunic"
+ },
+ "xce": {
+ "english_name": "Celtiberian"
+ },
+ "xcg": {
+ "english_name": "Gaulish, Cisalpine"
+ },
+ "xch": {
+ "english_name": "Chemakum"
+ },
+ "xcl": {
+ "english_name": "Armenian, Classical"
+ },
+ "xcm": {
+ "english_name": "Comecrudo"
+ },
+ "xcn": {
+ "english_name": "Cotoname"
+ },
+ "xco": {
+ "english_name": "Chorasmian"
+ },
+ "xcr": {
+ "english_name": "Carian"
+ },
+ "xct": {
+ "english_name": "Tibetan, Classical"
+ },
+ "xcu": {
+ "english_name": "Curonian"
+ },
+ "xcv": {
+ "english_name": "Chuvantsy"
+ },
+ "xcw": {
+ "english_name": "Coahuilteco"
+ },
+ "xcy": {
+ "english_name": "Cayuse"
+ },
+ "xda": {
+ "english_name": "Darkinyung"
+ },
+ "xdc": {
+ "english_name": "Dacian"
+ },
+ "xdk": {
+ "english_name": "Dharuk"
+ },
+ "xdm": {
+ "english_name": "Edomite"
+ },
+ "xdy": {
+ "english_name": "Dayak, Malayic"
+ },
+ "xeb": {
+ "english_name": "Eblan"
+ },
+ "xed": {
+ "english_name": "Hdi"
+ },
+ "xeg": {
+ "english_name": "//Xegwi"
+ },
+ "xel": {
+ "english_name": "Kelo"
+ },
+ "xem": {
+ "english_name": "Kembayan"
+ },
+ "xep": {
+ "english_name": "Epi-Olmec"
+ },
+ "xer": {
+ "english_name": "Xer\u00e9nte"
+ },
+ "xes": {
+ "english_name": "Kesawai"
+ },
+ "xet": {
+ "english_name": "Xet\u00e1"
+ },
+ "xeu": {
+ "english_name": "Keoru-Ahia"
+ },
+ "xfa": {
+ "english_name": "Faliscan"
+ },
+ "xga": {
+ "english_name": "Galatian"
+ },
+ "xgb": {
+ "english_name": "Gbin"
+ },
+ "xgd": {
+ "english_name": "Gudang"
+ },
+ "xgf": {
+ "english_name": "Gabrielino-Fernande\u00f1o"
+ },
+ "xgg": {
+ "english_name": "Goreng"
+ },
+ "xgi": {
+ "english_name": "Garingbal"
+ },
+ "xgl": {
+ "english_name": "Galindan"
+ },
+ "xgm": {
+ "english_name": "Guwinmal"
+ },
+ "xgr": {
+ "english_name": "Garza"
+ },
+ "xgu": {
+ "english_name": "Unggumi"
+ },
+ "xgw": {
+ "english_name": "Guwa"
+ },
+ "xh": {
+ "english_name": "Xhosa",
+ "name": "Xhosa"
+ },
+ "xha": {
+ "english_name": "Harami"
+ },
+ "xhc": {
+ "english_name": "Hunnic"
+ },
+ "xhd": {
+ "english_name": "Hadrami"
+ },
+ "xhe": {
+ "english_name": "Khetrani"
+ },
+ "xhr": {
+ "english_name": "Hernican"
+ },
+ "xht": {
+ "english_name": "Hattic"
+ },
+ "xhu": {
+ "english_name": "Hurrian"
+ },
+ "xhv": {
+ "english_name": "Khua"
+ },
+ "xib": {
+ "english_name": "Iberian"
+ },
+ "xii": {
+ "english_name": "Xiri"
+ },
+ "xil": {
+ "english_name": "Illyrian"
+ },
+ "xin": {
+ "english_name": "Xinca"
+ },
+ "xip": {
+ "english_name": "Xipin\u00e1wa"
+ },
+ "xir": {
+ "english_name": "Xiri\u00e2na"
+ },
+ "xiv": {
+ "english_name": "Indus Valley Language"
+ },
+ "xiy": {
+ "english_name": "Xipaya"
+ },
+ "xjb": {
+ "english_name": "Minjungbal"
+ },
+ "xjt": {
+ "english_name": "Jaitmatang"
+ },
+ "xka": {
+ "english_name": "Kalkoti"
+ },
+ "xkb": {
+ "english_name": "Nago, Northern"
+ },
+ "xkc": {
+ "english_name": "Kho'ini"
+ },
+ "xkd": {
+ "english_name": "Kayan, Mendalam"
+ },
+ "xke": {
+ "english_name": "Kereho"
+ },
+ "xkf": {
+ "english_name": "Khengkha"
+ },
+ "xkg": {
+ "english_name": "Kagoro"
+ },
+ "xkh": {
+ "english_name": "Karahawyana"
+ },
+ "xki": {
+ "english_name": "Kenyan Sign Language"
+ },
+ "xkj": {
+ "english_name": "Kajali"
+ },
+ "xkk": {
+ "english_name": "Kaco'"
+ },
+ "xkl": {
+ "english_name": "Mainstream Kenyah"
+ },
+ "xkn": {
+ "english_name": "Kayan, Kayan River"
+ },
+ "xko": {
+ "english_name": "Kiorr"
+ },
+ "xkp": {
+ "english_name": "Kabatei"
+ },
+ "xkq": {
+ "english_name": "Koroni"
+ },
+ "xkr": {
+ "english_name": "Xakriab\u00e1"
+ },
+ "xks": {
+ "english_name": "Kumbewaha"
+ },
+ "xkt": {
+ "english_name": "Kantosi"
+ },
+ "xku": {
+ "english_name": "Kaamba"
+ },
+ "xkv": {
+ "english_name": "Kgalagadi"
+ },
+ "xkw": {
+ "english_name": "Kembra"
+ },
+ "xkx": {
+ "english_name": "Karore"
+ },
+ "xky": {
+ "english_name": "Uma' Lasan"
+ },
+ "xkz": {
+ "english_name": "Kurtokha"
+ },
+ "xla": {
+ "english_name": "Kamula"
+ },
+ "xlb": {
+ "english_name": "Loup B"
+ },
+ "xlc": {
+ "english_name": "Lycian"
+ },
+ "xld": {
+ "english_name": "Lydian"
+ },
+ "xle": {
+ "english_name": "Lemnian"
+ },
+ "xlg": {
+ "english_name": "Ligurian (Ancient)"
+ },
+ "xli": {
+ "english_name": "Liburnian"
+ },
+ "xln": {
+ "english_name": "Alanic"
+ },
+ "xlo": {
+ "english_name": "Loup A"
+ },
+ "xlp": {
+ "english_name": "Lepontic"
+ },
+ "xls": {
+ "english_name": "Lusitanian"
+ },
+ "xlu": {
+ "english_name": "Luwian, Cuneiform"
+ },
+ "xly": {
+ "english_name": "Elymian"
+ },
+ "xma": {
+ "english_name": "Mushungulu"
+ },
+ "xmb": {
+ "english_name": "Mbonga"
+ },
+ "xmc": {
+ "english_name": "Makhuwa-Marrevone"
+ },
+ "xmd": {
+ "english_name": "Mbudum"
+ },
+ "xme": {
+ "english_name": "Median"
+ },
+ "xmf": {
+ "english_name": "Mingrelian"
+ },
+ "xmg": {
+ "english_name": "Mengaka"
+ },
+ "xmh": {
+ "english_name": "Kuku-Muminh"
+ },
+ "xmj": {
+ "english_name": "Majera"
+ },
+ "xmk": {
+ "english_name": "Macedonian, Ancient"
+ },
+ "xml": {
+ "english_name": "Malaysian Sign Language"
+ },
+ "xmm": {
+ "english_name": "Malay, Manado"
+ },
+ "xmn": {
+ "english_name": "Persian, Manichaean Middle"
+ },
+ "xmo": {
+ "english_name": "Morerebi"
+ },
+ "xmp": {
+ "english_name": "Kuku-Mu'inh"
+ },
+ "xmq": {
+ "english_name": "Kuku-Mangk"
+ },
+ "xmr": {
+ "english_name": "Meroitic"
+ },
+ "xms": {
+ "english_name": "Moroccan Sign Language"
+ },
+ "xmt": {
+ "english_name": "Matbat"
+ },
+ "xmu": {
+ "english_name": "Kamu"
+ },
+ "xmv": {
+ "english_name": "Malagasy, Antankarana"
+ },
+ "xmw": {
+ "english_name": "Malagasy, Tsimihety"
+ },
+ "xmx": {
+ "english_name": "Maden"
+ },
+ "xmy": {
+ "english_name": "Mayaguduna"
+ },
+ "xmz": {
+ "english_name": "Mori Bawah"
+ },
+ "xna": {
+ "english_name": "North Arabian, Ancient"
+ },
+ "xnb": {
+ "english_name": "Kanakanabu"
+ },
+ "xng": {
+ "english_name": "Mongolian, Middle"
+ },
+ "xnh": {
+ "english_name": "Kuanhua"
+ },
+ "xni": {
+ "english_name": "Ngarigu"
+ },
+ "xnk": {
+ "english_name": "Nganakarti"
+ },
+ "xnn": {
+ "english_name": "Kankanay, Northern"
+ },
+ "xno": {
+ "english_name": "Anglo-Norman"
+ },
+ "xnr": {
+ "english_name": "Kangri"
+ },
+ "xns": {
+ "english_name": "Kanashi"
+ },
+ "xnt": {
+ "english_name": "Narragansett"
+ },
+ "xnu": {
+ "english_name": "Nukunul"
+ },
+ "xny": {
+ "english_name": "Nyiyaparli"
+ },
+ "xnz": {
+ "english_name": "Kenzi"
+ },
+ "xoc": {
+ "english_name": "O'chi'chi'"
+ },
+ "xod": {
+ "english_name": "Kokoda"
+ },
+ "xog": {
+ "english_name": "Soga"
+ },
+ "xoi": {
+ "english_name": "Kominimung"
+ },
+ "xok": {
+ "english_name": "Xokleng"
+ },
+ "xom": {
+ "english_name": "Komo (Sudan)"
+ },
+ "xon": {
+ "english_name": "Konkomba"
+ },
+ "xoo": {
+ "english_name": "Xukur\u00fa"
+ },
+ "xop": {
+ "english_name": "Kopar"
+ },
+ "xor": {
+ "english_name": "Korubo"
+ },
+ "xow": {
+ "english_name": "Kowaki"
+ },
+ "xpa": {
+ "english_name": "Pirriya"
+ },
+ "xpc": {
+ "english_name": "Pecheneg"
+ },
+ "xpe": {
+ "english_name": "Kpelle, Liberia"
+ },
+ "xpg": {
+ "english_name": "Phrygian"
+ },
+ "xpi": {
+ "english_name": "Pictish"
+ },
+ "xpj": {
+ "english_name": "Mpalitjanh"
+ },
+ "xpk": {
+ "english_name": "Pano, Kulina"
+ },
+ "xpm": {
+ "english_name": "Pumpokol"
+ },
+ "xpn": {
+ "english_name": "Kapinaw\u00e1"
+ },
+ "xpo": {
+ "english_name": "Pochutec"
+ },
+ "xpp": {
+ "english_name": "Puyo-Paekche"
+ },
+ "xpq": {
+ "english_name": "Mohegan-Pequot"
+ },
+ "xpr": {
+ "english_name": "Parthian"
+ },
+ "xps": {
+ "english_name": "Pisidian"
+ },
+ "xpt": {
+ "english_name": "Punthamara"
+ },
+ "xpu": {
+ "english_name": "Punic"
+ },
+ "xpy": {
+ "english_name": "Puyo"
+ },
+ "xqa": {
+ "english_name": "Karakhanid"
+ },
+ "xqt": {
+ "english_name": "Qatabanian"
+ },
+ "xra": {
+ "english_name": "Krah\u00f4"
+ },
+ "xrb": {
+ "english_name": "Karaboro, Eastern"
+ },
+ "xrd": {
+ "english_name": "Gundungurra"
+ },
+ "xre": {
+ "english_name": "Kreye"
+ },
+ "xrg": {
+ "english_name": "Minang"
+ },
+ "xri": {
+ "english_name": "Krikati-Timbira"
+ },
+ "xrm": {
+ "english_name": "Armazic"
+ },
+ "xrn": {
+ "english_name": "Arin"
+ },
+ "xrq": {
+ "english_name": "Karranga"
+ },
+ "xrr": {
+ "english_name": "Raetic"
+ },
+ "xrt": {
+ "english_name": "Aranama-Tamique"
+ },
+ "xru": {
+ "english_name": "Marriammu"
+ },
+ "xrw": {
+ "english_name": "Karawa"
+ },
+ "xsa": {
+ "english_name": "Sabaean"
+ },
+ "xsb": {
+ "english_name": "Sambal"
+ },
+ "xsc": {
+ "english_name": "Scythian"
+ },
+ "xsd": {
+ "english_name": "Sidetic"
+ },
+ "xse": {
+ "english_name": "Sempan"
+ },
+ "xsh": {
+ "english_name": "Shamang"
+ },
+ "xsi": {
+ "english_name": "Sio"
+ },
+ "xsl": {
+ "english_name": "Slavey, South"
+ },
+ "xsm": {
+ "english_name": "Kasem"
+ },
+ "xsn": {
+ "english_name": "Sanga (Nigeria)"
+ },
+ "xso": {
+ "english_name": "Solano"
+ },
+ "xsp": {
+ "english_name": "Silopi"
+ },
+ "xsq": {
+ "english_name": "Makhuwa-Saka"
+ },
+ "xsr": {
+ "english_name": "Sherpa"
+ },
+ "xss": {
+ "english_name": "Assan"
+ },
+ "xsu": {
+ "english_name": "Sanum\u00e1"
+ },
+ "xsv": {
+ "english_name": "Sudovian"
+ },
+ "xsy": {
+ "english_name": "Saisiyat"
+ },
+ "xta": {
+ "english_name": "Mixtec, Alcozauca"
+ },
+ "xtb": {
+ "english_name": "Mixtec, Chazumba"
+ },
+ "xtc": {
+ "english_name": "Katcha-Kadugli-Miri"
+ },
+ "xtd": {
+ "english_name": "Mixtec, Diuxi-Tilantongo"
+ },
+ "xte": {
+ "english_name": "Ketengban"
+ },
+ "xtg": {
+ "english_name": "Gaulish, Transalpine"
+ },
+ "xth": {
+ "english_name": "Yitha Yitha"
+ },
+ "xti": {
+ "english_name": "Mixtec, Sinicahua"
+ },
+ "xtj": {
+ "english_name": "Mixtec, San Juan Teita"
+ },
+ "xtl": {
+ "english_name": "Mixtec, Tijaltepec"
+ },
+ "xtm": {
+ "english_name": "Mixtec, Magdalena Pe\u00f1asco"
+ },
+ "xtn": {
+ "english_name": "Mixtec, Northern Tlaxiaco"
+ },
+ "xto": {
+ "english_name": "Tokharian A"
+ },
+ "xtp": {
+ "english_name": "Mixtec, San Miguel Piedras"
+ },
+ "xtq": {
+ "english_name": "Tumshuqese"
+ },
+ "xtr": {
+ "english_name": "Tripuri, Early"
+ },
+ "xts": {
+ "english_name": "Mixtec, Sindihui"
+ },
+ "xtt": {
+ "english_name": "Mixtec, Tacahua"
+ },
+ "xtu": {
+ "english_name": "Mixtec, Cuyamecalco"
+ },
+ "xtv": {
+ "english_name": "Thawa"
+ },
+ "xtw": {
+ "english_name": "Tawand\u00ea"
+ },
+ "xty": {
+ "english_name": "Mixtec, Yoloxochitl"
+ },
+ "xtz": {
+ "english_name": "Tasmanian"
+ },
+ "xua": {
+ "english_name": "Kurumba, Alu"
+ },
+ "xub": {
+ "english_name": "Kurumba, Betta"
+ },
+ "xud": {
+ "english_name": "Umiida"
+ },
+ "xug": {
+ "english_name": "Kunigami"
+ },
+ "xuj": {
+ "english_name": "Kurumba, Jennu"
+ },
+ "xul": {
+ "english_name": "Ngunawal"
+ },
+ "xum": {
+ "english_name": "Umbrian"
+ },
+ "xun": {
+ "english_name": "Unggaranggu"
+ },
+ "xuo": {
+ "english_name": "Kuo"
+ },
+ "xup": {
+ "english_name": "Umpqua, Upper"
+ },
+ "xur": {
+ "english_name": "Urartian"
+ },
+ "xut": {
+ "english_name": "Kuthant"
+ },
+ "xuu": {
+ "english_name": "Kxoe"
+ },
+ "xve": {
+ "english_name": "Venetic"
+ },
+ "xvi": {
+ "english_name": "Kamviri"
+ },
+ "xvn": {
+ "english_name": "Vandalic"
+ },
+ "xvo": {
+ "english_name": "Volscian"
+ },
+ "xvs": {
+ "english_name": "Vestinian"
+ },
+ "xwa": {
+ "english_name": "Kwaza"
+ },
+ "xwc": {
+ "english_name": "Woccon"
+ },
+ "xwd": {
+ "english_name": "Wadi Wadi"
+ },
+ "xwe": {
+ "english_name": "Gbe, Xwela"
+ },
+ "xwg": {
+ "english_name": "Kwegu"
+ },
+ "xwj": {
+ "english_name": "Wajuk"
+ },
+ "xwk": {
+ "english_name": "Wangkumara"
+ },
+ "xwl": {
+ "english_name": "Gbe, Western Xwla"
+ },
+ "xwo": {
+ "english_name": "Oirat, Written"
+ },
+ "xwr": {
+ "english_name": "Kwerba Mamberamo"
+ },
+ "xwt": {
+ "english_name": "Wotjobaluk"
+ },
+ "xww": {
+ "english_name": "Wemba Wemba"
+ },
+ "xxb": {
+ "english_name": "Boro (Ghana)"
+ },
+ "xxk": {
+ "english_name": "Ke'o"
+ },
+ "xxm": {
+ "english_name": "Minkin"
+ },
+ "xxr": {
+ "english_name": "Korop\u00f3"
+ },
+ "xxt": {
+ "english_name": "Tambora"
+ },
+ "xya": {
+ "english_name": "Yaygir"
+ },
+ "xyb": {
+ "english_name": "Yandjibara"
+ },
+ "xyj": {
+ "english_name": "Mayi-Yapi"
+ },
+ "xyk": {
+ "english_name": "Mayi-Kulan"
+ },
+ "xyl": {
+ "english_name": "Yalakalore"
+ },
+ "xyt": {
+ "english_name": "Mayi-Thakurti"
+ },
+ "xyy": {
+ "english_name": "Yorta Yorta"
+ },
+ "xzh": {
+ "english_name": "Zhang-Zhung"
+ },
+ "xzm": {
+ "english_name": "Zemgalian"
+ },
+ "xzp": {
+ "english_name": "Zapotec, Ancient"
+ },
+ "yaa": {
+ "english_name": "Yaminahua"
+ },
+ "yab": {
+ "english_name": "Yuhup"
+ },
+ "yac": {
+ "english_name": "Yali, Pass Valley"
+ },
+ "yad": {
+ "english_name": "Yagua"
+ },
+ "yae": {
+ "english_name": "Pum\u00e9"
+ },
+ "yaf": {
+ "english_name": "Yaka (Democratic Republic of Congo)"
+ },
+ "yag": {
+ "english_name": "Y\u00e1mana"
+ },
+ "yah": {
+ "english_name": "Yazgulyam"
+ },
+ "yai": {
+ "english_name": "Yagnobi"
+ },
+ "yaj": {
+ "english_name": "Banda-Yangere"
+ },
+ "yak": {
+ "english_name": "Yakama"
+ },
+ "yal": {
+ "english_name": "Yalunka"
+ },
+ "yam": {
+ "english_name": "Yamba"
+ },
+ "yan": {
+ "english_name": "Mayangna"
+ },
+ "yao": {
+ "english_name": "Yao"
+ },
+ "yap": {
+ "english_name": "Yapese"
+ },
+ "yaq": {
+ "english_name": "Yaqui"
+ },
+ "yar": {
+ "english_name": "Yabarana"
+ },
+ "yas": {
+ "english_name": "Nugunu (Cameroon)"
+ },
+ "yat": {
+ "english_name": "Yambeta"
+ },
+ "yau": {
+ "english_name": "Yuwana"
+ },
+ "yav": {
+ "english_name": "Yangben"
+ },
+ "yaw": {
+ "english_name": "Yawalapit\u00ed"
+ },
+ "yax": {
+ "english_name": "Yauma"
+ },
+ "yay": {
+ "english_name": "Agwagwune"
+ },
+ "yaz": {
+ "english_name": "Lokaa"
+ },
+ "yba": {
+ "english_name": "Yala"
+ },
+ "ybb": {
+ "english_name": "Yemba"
+ },
+ "ybe": {
+ "english_name": "Yugur, West"
+ },
+ "ybh": {
+ "english_name": "Yakha"
+ },
+ "ybi": {
+ "english_name": "Yamphu"
+ },
+ "ybj": {
+ "english_name": "Hasha"
+ },
+ "ybk": {
+ "english_name": "Bokha"
+ },
+ "ybl": {
+ "english_name": "Yukuben"
+ },
+ "ybm": {
+ "english_name": "Yaben"
+ },
+ "ybn": {
+ "english_name": "Yaba\u00e2na"
+ },
+ "ybo": {
+ "english_name": "Yabong"
+ },
+ "ybx": {
+ "english_name": "Yawiyo"
+ },
+ "yby": {
+ "english_name": "Yaweyuha"
+ },
+ "ych": {
+ "english_name": "Chesu"
+ },
+ "ycl": {
+ "english_name": "Lolopo"
+ },
+ "ycn": {
+ "english_name": "Yucuna"
+ },
+ "ycp": {
+ "english_name": "Chepya"
+ },
+ "yda": {
+ "english_name": "Yanda"
+ },
+ "ydd": {
+ "english_name": "Yiddish, Eastern"
+ },
+ "yde": {
+ "english_name": "Yangum Dey"
+ },
+ "ydg": {
+ "english_name": "Yidgha"
+ },
+ "ydk": {
+ "english_name": "Yoidik"
+ },
+ "yea": {
+ "english_name": "Ravula"
+ },
+ "yec": {
+ "english_name": "Yeniche"
+ },
+ "yee": {
+ "english_name": "Yimas"
+ },
+ "yei": {
+ "english_name": "Yeni"
+ },
+ "yej": {
+ "english_name": "Yevanic"
+ },
+ "yel": {
+ "english_name": "Yela"
+ },
+ "yer": {
+ "english_name": "Tarok"
+ },
+ "yes": {
+ "english_name": "Nyankpa"
+ },
+ "yet": {
+ "english_name": "Yetfa"
+ },
+ "yeu": {
+ "english_name": "Yerukula"
+ },
+ "yev": {
+ "english_name": "Yapunda"
+ },
+ "yey": {
+ "english_name": "Yeyi"
+ },
+ "yga": {
+ "english_name": "Malyangapa"
+ },
+ "ygi": {
+ "english_name": "Yiningayi"
+ },
+ "ygl": {
+ "english_name": "Yangum Gel"
+ },
+ "ygm": {
+ "english_name": "Yagomi"
+ },
+ "ygp": {
+ "english_name": "Gepo"
+ },
+ "ygr": {
+ "english_name": "Yagaria"
+ },
+ "ygu": {
+ "english_name": "Yugul"
+ },
+ "ygw": {
+ "english_name": "Yagwoia"
+ },
+ "yha": {
+ "english_name": "Buyang, Baha"
+ },
+ "yhd": {
+ "english_name": "Arabic, Judeo-Iraqi"
+ },
+ "yhl": {
+ "english_name": "Phowa, Hlepho"
+ },
+ "yi": {
+ "english_name": "Yiddish"
+ },
+ "yia": {
+ "english_name": "Yinggarda"
+ },
+ "yif": {
+ "english_name": "Ache"
+ },
+ "yig": {
+ "english_name": "Nasu, Wusa"
+ },
+ "yih": {
+ "english_name": "Yiddish, Western"
+ },
+ "yii": {
+ "english_name": "Yidiny"
+ },
+ "yij": {
+ "english_name": "Yindjibarndi"
+ },
+ "yik": {
+ "english_name": "Lalo, Dongshanba"
+ },
+ "yil": {
+ "english_name": "Yindjilandji"
+ },
+ "yim": {
+ "english_name": "Naga, Yimchungru"
+ },
+ "yin": {
+ "english_name": "Yinchia"
+ },
+ "yip": {
+ "english_name": "Pholo"
+ },
+ "yiq": {
+ "english_name": "Miqie"
+ },
+ "yir": {
+ "english_name": "Awyu, North"
+ },
+ "yis": {
+ "english_name": "Yis"
+ },
+ "yit": {
+ "english_name": "Lalu, Eastern"
+ },
+ "yiu": {
+ "english_name": "Awu"
+ },
+ "yiv": {
+ "english_name": "Nisu, Northern"
+ },
+ "yix": {
+ "english_name": "Yi, Axi"
+ },
+ "yiz": {
+ "english_name": "Azhe"
+ },
+ "yka": {
+ "english_name": "Yakan"
+ },
+ "ykg": {
+ "english_name": "Yukaghir, Northern"
+ },
+ "yki": {
+ "english_name": "Yoke"
+ },
+ "ykk": {
+ "english_name": "Yakaikeke"
+ },
+ "ykl": {
+ "english_name": "Khlula"
+ },
+ "ykm": {
+ "english_name": "Kap"
+ },
+ "ykn": {
+ "english_name": "Kua-nsi"
+ },
+ "yko": {
+ "english_name": "Yasa"
+ },
+ "ykr": {
+ "english_name": "Yekora"
+ },
+ "ykt": {
+ "english_name": "Kathu"
+ },
+ "yku": {
+ "english_name": "Kuamasi"
+ },
+ "yky": {
+ "english_name": "Yakoma"
+ },
+ "yla": {
+ "english_name": "Yaul"
+ },
+ "ylb": {
+ "english_name": "Yaleba"
+ },
+ "yle": {
+ "english_name": "Yele"
+ },
+ "ylg": {
+ "english_name": "Yelogu"
+ },
+ "yli": {
+ "english_name": "Yali, Angguruk"
+ },
+ "yll": {
+ "english_name": "Yil"
+ },
+ "ylm": {
+ "english_name": "Limi"
+ },
+ "yln": {
+ "english_name": "Buyang, Langnian"
+ },
+ "ylo": {
+ "english_name": "Yi, Naluo"
+ },
+ "ylr": {
+ "english_name": "Yalarnnga"
+ },
+ "ylu": {
+ "english_name": "Aribwaung"
+ },
+ "yly": {
+ "english_name": "Ny\u00e2layu"
+ },
+ "ymb": {
+ "english_name": "Yambes"
+ },
+ "ymc": {
+ "english_name": "Muji, Southern"
+ },
+ "ymd": {
+ "english_name": "Muda"
+ },
+ "yme": {
+ "english_name": "Yameo"
+ },
+ "ymg": {
+ "english_name": "Yamongeri"
+ },
+ "ymh": {
+ "english_name": "Mili"
+ },
+ "ymi": {
+ "english_name": "Moji"
+ },
+ "ymk": {
+ "english_name": "Makwe"
+ },
+ "yml": {
+ "english_name": "Iamalele"
+ },
+ "ymm": {
+ "english_name": "Maay"
+ },
+ "ymn": {
+ "english_name": "Yamna"
+ },
+ "ymo": {
+ "english_name": "Yangum Mon"
+ },
+ "ymp": {
+ "english_name": "Yamap"
+ },
+ "ymq": {
+ "english_name": "Muji, Qila"
+ },
+ "ymr": {
+ "english_name": "Malasar"
+ },
+ "yms": {
+ "english_name": "Mysian"
+ },
+ "ymx": {
+ "english_name": "Muji, Northern"
+ },
+ "ymz": {
+ "english_name": "Muzi"
+ },
+ "yna": {
+ "english_name": "Aluo"
+ },
+ "ynd": {
+ "english_name": "Yandruwandha"
+ },
+ "yne": {
+ "english_name": "Lang'e"
+ },
+ "yng": {
+ "english_name": "Yango"
+ },
+ "ynk": {
+ "english_name": "Yupik, Naukan"
+ },
+ "ynl": {
+ "english_name": "Yangulam"
+ },
+ "ynn": {
+ "english_name": "Yana"
+ },
+ "yno": {
+ "english_name": "Yong"
+ },
+ "ynq": {
+ "english_name": "Yendang"
+ },
+ "yns": {
+ "english_name": "Yansi"
+ },
+ "ynu": {
+ "english_name": "Yahuna"
+ },
+ "yo": {
+ "english_name": "Yoruba"
+ },
+ "yob": {
+ "english_name": "Yoba"
+ },
+ "yog": {
+ "english_name": "Yogad"
+ },
+ "yoi": {
+ "english_name": "Yonaguni"
+ },
+ "yok": {
+ "english_name": "Yokuts"
+ },
+ "yol": {
+ "english_name": "Yola"
+ },
+ "yom": {
+ "english_name": "Yombe"
+ },
+ "yon": {
+ "english_name": "Yongkom"
+ },
+ "yot": {
+ "english_name": "Yotti"
+ },
+ "yox": {
+ "english_name": "Yoron"
+ },
+ "yoy": {
+ "english_name": "Yoy"
+ },
+ "ypa": {
+ "english_name": "Phala"
+ },
+ "ypb": {
+ "english_name": "Phowa, Labo"
+ },
+ "ypg": {
+ "english_name": "Phola"
+ },
+ "yph": {
+ "english_name": "Phupha"
+ },
+ "ypm": {
+ "english_name": "Phuma"
+ },
+ "ypn": {
+ "english_name": "Phowa, Ani"
+ },
+ "ypo": {
+ "english_name": "Phola, Alo"
+ },
+ "ypp": {
+ "english_name": "Phupa"
+ },
+ "ypz": {
+ "english_name": "Phuza"
+ },
+ "yra": {
+ "english_name": "Yerakai"
+ },
+ "yrb": {
+ "english_name": "Yareba"
+ },
+ "yre": {
+ "english_name": "Yaour\u00e9"
+ },
+ "yri": {
+ "english_name": "Yar\u00ed"
+ },
+ "yrk": {
+ "english_name": "Nenets"
+ },
+ "yrl": {
+ "english_name": "Nhengatu"
+ },
+ "yrm": {
+ "english_name": "Yirrk-Mel"
+ },
+ "yrn": {
+ "english_name": "Yerong"
+ },
+ "yrs": {
+ "english_name": "Yarsun"
+ },
+ "yrw": {
+ "english_name": "Yarawata"
+ },
+ "yry": {
+ "english_name": "Yarluyandi"
+ },
+ "ysc": {
+ "english_name": "Yassic"
+ },
+ "ysd": {
+ "english_name": "Samatao"
+ },
+ "ysg": {
+ "english_name": "Sonaga"
+ },
+ "ysl": {
+ "english_name": "Yugoslavian Sign Language"
+ },
+ "ysn": {
+ "english_name": "Sani"
+ },
+ "yso": {
+ "english_name": "Nisi (China)"
+ },
+ "ysp": {
+ "english_name": "Lolopo, Southern"
+ },
+ "ysr": {
+ "english_name": "Yupik, Sirenik"
+ },
+ "yss": {
+ "english_name": "Yessan-Mayo"
+ },
+ "ysy": {
+ "english_name": "Sanie"
+ },
+ "yta": {
+ "english_name": "Talu"
+ },
+ "ytl": {
+ "english_name": "Tanglang"
+ },
+ "ytp": {
+ "english_name": "Thopho"
+ },
+ "ytw": {
+ "english_name": "Yout Wam"
+ },
+ "yty": {
+ "english_name": "Yatay"
+ },
+ "yua": {
+ "english_name": "Yucateco"
+ },
+ "yub": {
+ "english_name": "Yugambal"
+ },
+ "yuc": {
+ "english_name": "Yuchi"
+ },
+ "yud": {
+ "english_name": "Arabic, Judeo-Tripolitanian"
+ },
+ "yue": {
+ "english_name": "Chinese, Yue"
+ },
+ "yuf": {
+ "english_name": "Havasupai-Walapai-Yavapai"
+ },
+ "yug": {
+ "english_name": "Yug"
+ },
+ "yui": {
+ "english_name": "Yurut\u00ed"
+ },
+ "yuj": {
+ "english_name": "Karkar-Yuri"
+ },
+ "yuk": {
+ "english_name": "Yuki"
+ },
+ "yul": {
+ "english_name": "Yulu"
+ },
+ "yum": {
+ "english_name": "Quechan"
+ },
+ "yun": {
+ "english_name": "Bena (Nigeria)"
+ },
+ "yup": {
+ "english_name": "Yukpa"
+ },
+ "yuq": {
+ "english_name": "Yuqui"
+ },
+ "yur": {
+ "english_name": "Yurok"
+ },
+ "yut": {
+ "english_name": "Yopno"
+ },
+ "yuw": {
+ "english_name": "Yau (Morobe Province)"
+ },
+ "yux": {
+ "english_name": "Yukaghir, Southern"
+ },
+ "yuy": {
+ "english_name": "Yugur, East"
+ },
+ "yuz": {
+ "english_name": "Yuracare"
+ },
+ "yva": {
+ "english_name": "Yawa"
+ },
+ "yvt": {
+ "english_name": "Yavitero"
+ },
+ "ywa": {
+ "english_name": "Kalou"
+ },
+ "ywg": {
+ "english_name": "Yinhawangka"
+ },
+ "ywl": {
+ "english_name": "Lalu, Western"
+ },
+ "ywn": {
+ "english_name": "Yawanawa"
+ },
+ "ywq": {
+ "english_name": "Yi, Wuding-Luquan"
+ },
+ "ywr": {
+ "english_name": "Yawuru"
+ },
+ "ywt": {
+ "english_name": "Lalo, Xishanba"
+ },
+ "ywu": {
+ "english_name": "Nasu, Wumeng"
+ },
+ "yww": {
+ "english_name": "Yawarawarga"
+ },
+ "yxa": {
+ "english_name": "Mayawali"
+ },
+ "yxg": {
+ "english_name": "Yagara"
+ },
+ "yxl": {
+ "english_name": "Yardliyawarra"
+ },
+ "yxm": {
+ "english_name": "Yinwum"
+ },
+ "yxu": {
+ "english_name": "Yuyu"
+ },
+ "yxy": {
+ "english_name": "Yabula Yabula"
+ },
+ "yyr": {
+ "english_name": "Yir Yoront"
+ },
+ "yyu": {
+ "english_name": "Yau (Sandaun Province)"
+ },
+ "yyz": {
+ "english_name": "Ayizi"
+ },
+ "yzg": {
+ "english_name": "Buyang, E'ma"
+ },
+ "yzk": {
+ "english_name": "Zokhuo"
+ },
+ "za": {
+ "english_name": "Zhuang"
+ },
+ "zaa": {
+ "english_name": "Zapotec, Sierra de Ju\u00e1rez"
+ },
+ "zab": {
+ "english_name": "Zapotec, San Juan Guelav\u00eda"
+ },
+ "zac": {
+ "english_name": "Zapotec, Ocotl\u00e1n"
+ },
+ "zad": {
+ "english_name": "Zapotec, Cajonos"
+ },
+ "zae": {
+ "english_name": "Zapotec, Yareni"
+ },
+ "zaf": {
+ "english_name": "Zapotec, Ayoquesco"
+ },
+ "zag": {
+ "english_name": "Zaghawa"
+ },
+ "zah": {
+ "english_name": "Zangwal"
+ },
+ "zai": {
+ "english_name": "Zapotec, Isthmus"
+ },
+ "zaj": {
+ "english_name": "Zaramo"
+ },
+ "zak": {
+ "english_name": "Zanaki"
+ },
+ "zal": {
+ "english_name": "Zauzou"
+ },
+ "zam": {
+ "english_name": "Zapotec, Miahuatl\u00e1n"
+ },
+ "zao": {
+ "english_name": "Zapotec, Ozolotepec"
+ },
+ "zap": {
+ "english_name": "Zapotec"
+ },
+ "zaq": {
+ "english_name": "Zapotec, Alo\u00e1pam"
+ },
+ "zar": {
+ "english_name": "Zapotec, Rinc\u00f3n"
+ },
+ "zas": {
+ "english_name": "Zapotec, Santo Domingo Albarradas"
+ },
+ "zat": {
+ "english_name": "Zapotec, Tabaa"
+ },
+ "zau": {
+ "english_name": "Zangskari"
+ },
+ "zav": {
+ "english_name": "Zapotec, Yatzachi"
+ },
+ "zaw": {
+ "english_name": "Zapotec, Mitla"
+ },
+ "zax": {
+ "english_name": "Zapotec, Xadani"
+ },
+ "zay": {
+ "english_name": "Zayse-Zergulla"
+ },
+ "zaz": {
+ "english_name": "Zari"
+ },
+ "zbc": {
+ "english_name": "Berawan, Central"
+ },
+ "zbe": {
+ "english_name": "Berawan, East"
+ },
+ "zbl": {
+ "english_name": "Blissymbols"
+ },
+ "zbt": {
+ "english_name": "Batui"
+ },
+ "zbw": {
+ "english_name": "Berawan, West"
+ },
+ "zca": {
+ "english_name": "Zapotec, Coatecas Altas"
+ },
+ "zch": {
+ "english_name": "Zhuang, Central Hongshuihe"
+ },
+ "zdj": {
+ "english_name": "Comorian, Ngazidja"
+ },
+ "zea": {
+ "english_name": "Zeeuws"
+ },
+ "zeg": {
+ "english_name": "Zenag"
+ },
+ "zeh": {
+ "english_name": "Zhuang, Eastern Hongshuihe"
+ },
+ "zen": {
+ "english_name": "Zenaga"
+ },
+ "zga": {
+ "english_name": "Kinga"
+ },
+ "zgb": {
+ "english_name": "Zhuang, Guibei"
+ },
+ "zgh": {
+ "english_name": "Tamazight, Standard Moroccan"
+ },
+ "zgm": {
+ "english_name": "Zhuang, Minz"
+ },
+ "zgn": {
+ "english_name": "Zhuang, Guibian"
+ },
+ "zgr": {
+ "english_name": "Magori"
+ },
+ "zh": {
+ "english_name": "Chinese",
+ "name": "\u4e2d\u6587"
+ },
+ "zhb": {
+ "english_name": "Zhaba"
+ },
+ "zhd": {
+ "english_name": "Zhuang, Dai"
+ },
+ "zhi": {
+ "english_name": "Zhire"
+ },
+ "zhn": {
+ "english_name": "Zhuang, Nong"
+ },
+ "zhw": {
+ "english_name": "Zhoa"
+ },
+ "zia": {
+ "english_name": "Zia"
+ },
+ "zib": {
+ "english_name": "Zimbabwe Sign Language"
+ },
+ "zik": {
+ "english_name": "Zimakani"
+ },
+ "zil": {
+ "english_name": "Zialo"
+ },
+ "zim": {
+ "english_name": "Mesme"
+ },
+ "zin": {
+ "english_name": "Zinza"
+ },
+ "zir": {
+ "english_name": "Ziriya"
+ },
+ "ziw": {
+ "english_name": "Zigula"
+ },
+ "ziz": {
+ "english_name": "Zizilivakan"
+ },
+ "zka": {
+ "english_name": "Kaimbulawa"
+ },
+ "zkb": {
+ "english_name": "Koibal"
+ },
+ "zkd": {
+ "english_name": "Kadu"
+ },
+ "zkg": {
+ "english_name": "Koguryo"
+ },
+ "zkh": {
+ "english_name": "Khorezmian"
+ },
+ "zkk": {
+ "english_name": "Karankawa"
+ },
+ "zkn": {
+ "english_name": "Kanan"
+ },
+ "zko": {
+ "english_name": "Kott"
+ },
+ "zkp": {
+ "english_name": "Kaing\u00e1ng, S\u00e3o Paulo"
+ },
+ "zkr": {
+ "english_name": "Zakhring"
+ },
+ "zkt": {
+ "english_name": "Kitan"
+ },
+ "zku": {
+ "english_name": "Kaurna"
+ },
+ "zkv": {
+ "english_name": "Krevinian"
+ },
+ "zkz": {
+ "english_name": "Khazar"
+ },
+ "zlj": {
+ "english_name": "Zhuang, Liujiang"
+ },
+ "zlm": {
+ "english_name": "Malay (individual language)"
+ },
+ "zln": {
+ "english_name": "Zhuang, Lianshan"
+ },
+ "zlq": {
+ "english_name": "Zhuang, Liuqian"
+ },
+ "zma": {
+ "english_name": "Manda (Australia)"
+ },
+ "zmb": {
+ "english_name": "Zimba"
+ },
+ "zmc": {
+ "english_name": "Margany"
+ },
+ "zmd": {
+ "english_name": "Maridan"
+ },
+ "zme": {
+ "english_name": "Mangerr"
+ },
+ "zmf": {
+ "english_name": "Mfinu"
+ },
+ "zmg": {
+ "english_name": "Marti Ke"
+ },
+ "zmh": {
+ "english_name": "Makolkol"
+ },
+ "zmi": {
+ "english_name": "Negeri Sembilan Malay"
+ },
+ "zmj": {
+ "english_name": "Maridjabin"
+ },
+ "zmk": {
+ "english_name": "Mandandanyi"
+ },
+ "zml": {
+ "english_name": "Madngele"
+ },
+ "zmm": {
+ "english_name": "Marimanindji"
+ },
+ "zmn": {
+ "english_name": "Mbangwe"
+ },
+ "zmo": {
+ "english_name": "Molo"
+ },
+ "zmp": {
+ "english_name": "Mpuono"
+ },
+ "zmq": {
+ "english_name": "Mituku"
+ },
+ "zmr": {
+ "english_name": "Maranunggu"
+ },
+ "zms": {
+ "english_name": "Mbesa"
+ },
+ "zmt": {
+ "english_name": "Maringarr"
+ },
+ "zmu": {
+ "english_name": "Muruwari"
+ },
+ "zmv": {
+ "english_name": "Mbariman-Gudhinma"
+ },
+ "zmw": {
+ "english_name": "Mbo (Democratic Republic of Congo)"
+ },
+ "zmx": {
+ "english_name": "Bomitaba"
+ },
+ "zmy": {
+ "english_name": "Mariyedi"
+ },
+ "zmz": {
+ "english_name": "Mbandja"
+ },
+ "zna": {
+ "english_name": "Zan Gula"
+ },
+ "zne": {
+ "english_name": "Zande (individual language)"
+ },
+ "zng": {
+ "english_name": "Mang"
+ },
+ "znk": {
+ "english_name": "Manangkari"
+ },
+ "zns": {
+ "english_name": "Mangas"
+ },
+ "zoc": {
+ "english_name": "Zoque, Copainal\u00e1"
+ },
+ "zoh": {
+ "english_name": "Zoque, Chimalapa"
+ },
+ "zom": {
+ "english_name": "Zou"
+ },
+ "zoo": {
+ "english_name": "Zapotec, Asunci\u00f3n Mixtepec"
+ },
+ "zoq": {
+ "english_name": "Zoque, Tabasco"
+ },
+ "zor": {
+ "english_name": "Zoque, Ray\u00f3n"
+ },
+ "zos": {
+ "english_name": "Zoque, Francisco Le\u00f3n"
+ },
+ "zpa": {
+ "english_name": "Zapotec, Lachiguiri"
+ },
+ "zpb": {
+ "english_name": "Zapotec, Yautepec"
+ },
+ "zpc": {
+ "english_name": "Zapotec, Choapan"
+ },
+ "zpd": {
+ "english_name": "Zapotec, Southeastern Ixtl\u00e1n"
+ },
+ "zpe": {
+ "english_name": "Zapotec, Petapa"
+ },
+ "zpf": {
+ "english_name": "Zapotec, San Pedro Quiatoni"
+ },
+ "zpg": {
+ "english_name": "Zapotec, Guevea De Humboldt"
+ },
+ "zph": {
+ "english_name": "Zapotec, Totomachapan"
+ },
+ "zpi": {
+ "english_name": "Zapotec, Santa Mar\u00eda Quiegolani"
+ },
+ "zpj": {
+ "english_name": "Zapotec, Quiavicuzas"
+ },
+ "zpk": {
+ "english_name": "Zapotec, Tlacolulita"
+ },
+ "zpl": {
+ "english_name": "Zapotec, Lachix\u00edo"
+ },
+ "zpm": {
+ "english_name": "Zapotec, Mixtepec"
+ },
+ "zpn": {
+ "english_name": "Zapotec, Santa In\u00e9s Yatzechi"
+ },
+ "zpo": {
+ "english_name": "Zapotec, Amatl\u00e1n"
+ },
+ "zpp": {
+ "english_name": "Zapotec, El Alto"
+ },
+ "zpq": {
+ "english_name": "Zapotec, Zoogocho"
+ },
+ "zpr": {
+ "english_name": "Zapotec, Santiago Xanica"
+ },
+ "zps": {
+ "english_name": "Zapotec, Coatl\u00e1n"
+ },
+ "zpt": {
+ "english_name": "Zapotec, San Vicente Coatl\u00e1n"
+ },
+ "zpu": {
+ "english_name": "Zapotec, Yal\u00e1lag"
+ },
+ "zpv": {
+ "english_name": "Zapotec, Chichicapan"
+ },
+ "zpw": {
+ "english_name": "Zapotec, Zaniza"
+ },
+ "zpx": {
+ "english_name": "Zapotec, San Baltazar Loxicha"
+ },
+ "zpy": {
+ "english_name": "Zapotec, Mazaltepec"
+ },
+ "zpz": {
+ "english_name": "Zapotec, Texmelucan"
+ },
+ "zqe": {
+ "english_name": "Zhuang, Qiubei"
+ },
+ "zra": {
+ "english_name": "Kara (Korea)"
+ },
+ "zrg": {
+ "english_name": "Mirgan"
+ },
+ "zrn": {
+ "english_name": "Zerenkel"
+ },
+ "zro": {
+ "english_name": "Z\u00e1paro"
+ },
+ "zrp": {
+ "english_name": "Zarphatic"
+ },
+ "zrs": {
+ "english_name": "Mairasi"
+ },
+ "zsa": {
+ "english_name": "Sarasira"
+ },
+ "zsk": {
+ "english_name": "Kaskean"
+ },
+ "zsl": {
+ "english_name": "Zambian Sign Language"
+ },
+ "zsm": {
+ "english_name": "Malay, Standard"
+ },
+ "zsr": {
+ "english_name": "Zapotec, Southern Rincon"
+ },
+ "zsu": {
+ "english_name": "Sukurum"
+ },
+ "zte": {
+ "english_name": "Zapotec, Elotepec"
+ },
+ "ztg": {
+ "english_name": "Zapotec, Xanagu\u00eda"
+ },
+ "ztl": {
+ "english_name": "Zapotec, Lapagu\u00eda-Guivini"
+ },
+ "ztm": {
+ "english_name": "Zapotec, San Agust\u00edn Mixtepec"
+ },
+ "ztn": {
+ "english_name": "Zapotec, Santa Catarina Albarradas"
+ },
+ "ztp": {
+ "english_name": "Zapotec, Loxicha"
+ },
+ "ztq": {
+ "english_name": "Zapotec, Quioquitani-Quier\u00ed"
+ },
+ "zts": {
+ "english_name": "Zapotec, Tilquiapan"
+ },
+ "ztt": {
+ "english_name": "Zapotec, Tejalapan"
+ },
+ "ztu": {
+ "english_name": "Zapotec, G\u00fcil\u00e1"
+ },
+ "ztx": {
+ "english_name": "Zapotec, Zaachila"
+ },
+ "zty": {
+ "english_name": "Zapotec, Yatee"
+ },
+ "zu": {
+ "english_name": "Zulu",
+ "name": "Isi-Zulu"
+ },
+ "zua": {
+ "english_name": "Zeem"
+ },
+ "zuh": {
+ "english_name": "Tokano"
+ },
+ "zum": {
+ "english_name": "Kumzari"
+ },
+ "zun": {
+ "english_name": "Zuni"
+ },
+ "zuy": {
+ "english_name": "Zumaya"
+ },
+ "zwa": {
+ "english_name": "Zay"
+ },
+ "zxx": {
+ "english_name": "No linguistic content"
+ },
+ "zyb": {
+ "english_name": "Zhuang, Yongbei"
+ },
+ "zyg": {
+ "english_name": "Zhuang, Yang"
+ },
+ "zyj": {
+ "english_name": "Zhuang, Youjiang"
+ },
+ "zyn": {
+ "english_name": "Zhuang, Yongnan"
+ },
+ "zyp": {
+ "english_name": "Chin, Zyphe"
+ },
+ "zza": {
+ "english_name": "Zaza"
+ },
+ "zzj": {
+ "english_name": "Zhuang, Zuojiang"
+ }
+ },
+ "ddg definitions": [
+ "ar-XA",
+ "bg-BG",
+ "ca-CT",
+ "ca-ES",
+ "cs-CZ",
+ "da-DK",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "el-GR",
+ "en-AU",
+ "en-CA",
+ "en-ID",
+ "en-IE",
+ "en-IL",
+ "en-IN",
+ "en-MY",
+ "en-NZ",
+ "en-PH",
+ "en-PK",
+ "en-SG",
+ "en-TH",
+ "en-UK",
+ "en-US",
+ "en-VN",
+ "en-ZA",
+ "es-AR",
+ "es-CL",
+ "es-CO",
+ "es-ES",
+ "es-MX",
+ "es-PE",
+ "es-US",
+ "et-EE",
+ "fi-FI",
+ "fr-BE",
+ "fr-CA",
+ "fr-CH",
+ "fr-FR",
+ "hr-HR",
+ "hu-HU",
+ "it-IT",
+ "jp-JP",
+ "kr-KR",
+ "lt-LT",
+ "lv-LV",
+ "nl-BE",
+ "nl-NL",
+ "no-NO",
+ "pl-PL",
+ "pt-BR",
+ "pt-PT",
+ "ro-RO",
+ "ru-RU",
+ "sk-SK",
+ "sl-SL",
+ "sv-SE",
+ "tr-TR",
+ "tzh-HK",
+ "tzh-TW",
+ "uk-UA",
+ "wt-WT",
+ "zh-CN"
+ ],
+ "duckduckgo": [
+ "ar-XA",
+ "bg-BG",
+ "ca-CT",
+ "ca-ES",
+ "cs-CZ",
+ "da-DK",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "el-GR",
+ "en-AU",
+ "en-CA",
+ "en-ID",
+ "en-IE",
+ "en-IL",
+ "en-IN",
+ "en-MY",
+ "en-NZ",
+ "en-PH",
+ "en-PK",
+ "en-SG",
+ "en-TH",
+ "en-UK",
+ "en-US",
+ "en-VN",
+ "en-ZA",
+ "es-AR",
+ "es-CL",
+ "es-CO",
+ "es-ES",
+ "es-MX",
+ "es-PE",
+ "es-US",
+ "et-EE",
+ "fi-FI",
+ "fr-BE",
+ "fr-CA",
+ "fr-CH",
+ "fr-FR",
+ "hr-HR",
+ "hu-HU",
+ "it-IT",
+ "jp-JP",
+ "kr-KR",
+ "lt-LT",
+ "lv-LV",
+ "nl-BE",
+ "nl-NL",
+ "no-NO",
+ "pl-PL",
+ "pt-BR",
+ "pt-PT",
+ "ro-RO",
+ "ru-RU",
+ "sk-SK",
+ "sl-SL",
+ "sv-SE",
+ "tr-TR",
+ "tzh-HK",
+ "tzh-TW",
+ "uk-UA",
+ "wt-WT",
+ "zh-CN"
+ ],
+ "duckduckgo images": [
+ "ar-XA",
+ "bg-BG",
+ "ca-CT",
+ "ca-ES",
+ "cs-CZ",
+ "da-DK",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "el-GR",
+ "en-AU",
+ "en-CA",
+ "en-ID",
+ "en-IE",
+ "en-IL",
+ "en-IN",
+ "en-MY",
+ "en-NZ",
+ "en-PH",
+ "en-PK",
+ "en-SG",
+ "en-TH",
+ "en-UK",
+ "en-US",
+ "en-VN",
+ "en-ZA",
+ "es-AR",
+ "es-CL",
+ "es-CO",
+ "es-ES",
+ "es-MX",
+ "es-PE",
+ "es-US",
+ "et-EE",
+ "fi-FI",
+ "fr-BE",
+ "fr-CA",
+ "fr-CH",
+ "fr-FR",
+ "hr-HR",
+ "hu-HU",
+ "it-IT",
+ "jp-JP",
+ "kr-KR",
+ "lt-LT",
+ "lv-LV",
+ "nl-BE",
+ "nl-NL",
+ "no-NO",
+ "pl-PL",
+ "pt-BR",
+ "pt-PT",
+ "ro-RO",
+ "ru-RU",
+ "sk-SK",
+ "sl-SL",
+ "sv-SE",
+ "tr-TR",
+ "tzh-HK",
+ "tzh-TW",
+ "uk-UA",
+ "wt-WT",
+ "zh-CN"
+ ],
+ "google": {
+ "af": {
+ "name": "Afrikaans"
+ },
+ "ar": {
+ "name": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629"
+ },
+ "be": {
+ "name": "\u0431\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f"
+ },
+ "bg": {
+ "name": "\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438"
+ },
+ "ca": {
+ "name": "catal\u00e0"
+ },
+ "cs": {
+ "name": "\u010de\u0161tina"
+ },
+ "da": {
+ "name": "dansk"
+ },
+ "de": {
+ "name": "Deutsch"
+ },
+ "el": {
+ "name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"
+ },
+ "en": {
+ "name": "English"
+ },
+ "eo": {
+ "name": "esperanto"
+ },
+ "es": {
+ "name": "espa\u00f1ol"
+ },
+ "et": {
+ "name": "eesti"
+ },
+ "fa": {
+ "name": "\u0641\u0627\u0631\u0633\u06cc"
+ },
+ "fi": {
+ "name": "suomi"
+ },
+ "fr": {
+ "name": "fran\u00e7ais"
+ },
+ "hi": {
+ "name": "\u0939\u093f\u0928\u094d\u0926\u0940"
+ },
+ "hr": {
+ "name": "hrvatski"
+ },
+ "hu": {
+ "name": "magyar"
+ },
+ "hy": {
+ "name": "\u0570\u0561\u0575\u0565\u0580\u0565\u0576"
+ },
+ "id": {
+ "name": "Indonesia"
+ },
+ "is": {
+ "name": "\u00edslenska"
+ },
+ "it": {
+ "name": "italiano"
+ },
+ "iw": {
+ "name": "\u05e2\u05d1\u05e8\u05d9\u05ea"
+ },
+ "ja": {
+ "name": "\u65e5\u672c\u8a9e"
+ },
+ "ko": {
+ "name": "\ud55c\uad6d\uc5b4"
+ },
+ "lt": {
+ "name": "lietuvi\u0173"
+ },
+ "lv": {
+ "name": "latvie\u0161u"
+ },
+ "nl": {
+ "name": "Nederlands"
+ },
+ "no": {
+ "name": "norsk"
+ },
+ "pl": {
+ "name": "polski"
+ },
+ "pt": {
+ "name": "portugu\u00eas"
+ },
+ "ro": {
+ "name": "rom\u00e2n\u0103"
+ },
+ "ru": {
+ "name": "\u0440\u0443\u0441\u0441\u043a\u0438\u0439"
+ },
+ "sk": {
+ "name": "sloven\u010dina"
+ },
+ "sl": {
+ "name": "sloven\u0161\u010dina"
+ },
+ "sr": {
+ "name": "\u0441\u0440\u043f\u0441\u043a\u0438"
+ },
+ "sv": {
+ "name": "svenska"
+ },
+ "sw": {
+ "name": "Kiswahili"
+ },
+ "th": {
+ "name": "\u0e44\u0e17\u0e22"
+ },
+ "tl": {
+ "name": "Filipino"
+ },
+ "tr": {
+ "name": "T\u00fcrk\u00e7e"
+ },
+ "uk": {
+ "name": "\u0443\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"
+ },
+ "vi": {
+ "name": "Ti\u1ebfng Vi\u1ec7t"
+ },
+ "zh-CN": {
+ "name": "\u4e2d\u6587 (\u7b80\u4f53)"
+ },
+ "zh-TW": {
+ "name": "\u4e2d\u6587 (\u7e41\u9ad4)"
+ }
+ },
+ "google images": {
+ "af": {
+ "name": "Afrikaans"
+ },
+ "ar": {
+ "name": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629"
+ },
+ "be": {
+ "name": "\u0431\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f"
+ },
+ "bg": {
+ "name": "\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438"
+ },
+ "ca": {
+ "name": "catal\u00e0"
+ },
+ "cs": {
+ "name": "\u010de\u0161tina"
+ },
+ "da": {
+ "name": "dansk"
+ },
+ "de": {
+ "name": "Deutsch"
+ },
+ "el": {
+ "name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"
+ },
+ "en": {
+ "name": "English"
+ },
+ "eo": {
+ "name": "esperanto"
+ },
+ "es": {
+ "name": "espa\u00f1ol"
+ },
+ "et": {
+ "name": "eesti"
+ },
+ "fa": {
+ "name": "\u0641\u0627\u0631\u0633\u06cc"
+ },
+ "fi": {
+ "name": "suomi"
+ },
+ "fr": {
+ "name": "fran\u00e7ais"
+ },
+ "hi": {
+ "name": "\u0939\u093f\u0928\u094d\u0926\u0940"
+ },
+ "hr": {
+ "name": "hrvatski"
+ },
+ "hu": {
+ "name": "magyar"
+ },
+ "hy": {
+ "name": "\u0570\u0561\u0575\u0565\u0580\u0565\u0576"
+ },
+ "id": {
+ "name": "Indonesia"
+ },
+ "is": {
+ "name": "\u00edslenska"
+ },
+ "it": {
+ "name": "italiano"
+ },
+ "iw": {
+ "name": "\u05e2\u05d1\u05e8\u05d9\u05ea"
+ },
+ "ja": {
+ "name": "\u65e5\u672c\u8a9e"
+ },
+ "ko": {
+ "name": "\ud55c\uad6d\uc5b4"
+ },
+ "lt": {
+ "name": "lietuvi\u0173"
+ },
+ "lv": {
+ "name": "latvie\u0161u"
+ },
+ "nl": {
+ "name": "Nederlands"
+ },
+ "no": {
+ "name": "norsk"
+ },
+ "pl": {
+ "name": "polski"
+ },
+ "pt": {
+ "name": "portugu\u00eas"
+ },
+ "ro": {
+ "name": "rom\u00e2n\u0103"
+ },
+ "ru": {
+ "name": "\u0440\u0443\u0441\u0441\u043a\u0438\u0439"
+ },
+ "sk": {
+ "name": "sloven\u010dina"
+ },
+ "sl": {
+ "name": "sloven\u0161\u010dina"
+ },
+ "sr": {
+ "name": "\u0441\u0440\u043f\u0441\u043a\u0438"
+ },
+ "sv": {
+ "name": "svenska"
+ },
+ "sw": {
+ "name": "Kiswahili"
+ },
+ "th": {
+ "name": "\u0e44\u0e17\u0e22"
+ },
+ "tl": {
+ "name": "Filipino"
+ },
+ "tr": {
+ "name": "T\u00fcrk\u00e7e"
+ },
+ "uk": {
+ "name": "\u0443\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"
+ },
+ "vi": {
+ "name": "Ti\u1ebfng Vi\u1ec7t"
+ },
+ "zh-CN": {
+ "name": "\u4e2d\u6587 (\u7b80\u4f53)"
+ },
+ "zh-TW": {
+ "name": "\u4e2d\u6587 (\u7e41\u9ad4)"
+ }
+ },
+ "google news": {
+ "af": {
+ "name": "Afrikaans"
+ },
+ "ar": {
+ "name": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629"
+ },
+ "be": {
+ "name": "\u0431\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f"
+ },
+ "bg": {
+ "name": "\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438"
+ },
+ "ca": {
+ "name": "catal\u00e0"
+ },
+ "cs": {
+ "name": "\u010de\u0161tina"
+ },
+ "da": {
+ "name": "dansk"
+ },
+ "de": {
+ "name": "Deutsch"
+ },
+ "el": {
+ "name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"
+ },
+ "en": {
+ "name": "English"
+ },
+ "eo": {
+ "name": "esperanto"
+ },
+ "es": {
+ "name": "espa\u00f1ol"
+ },
+ "et": {
+ "name": "eesti"
+ },
+ "fa": {
+ "name": "\u0641\u0627\u0631\u0633\u06cc"
+ },
+ "fi": {
+ "name": "suomi"
+ },
+ "fr": {
+ "name": "fran\u00e7ais"
+ },
+ "hi": {
+ "name": "\u0939\u093f\u0928\u094d\u0926\u0940"
+ },
+ "hr": {
+ "name": "hrvatski"
+ },
+ "hu": {
+ "name": "magyar"
+ },
+ "hy": {
+ "name": "\u0570\u0561\u0575\u0565\u0580\u0565\u0576"
+ },
+ "id": {
+ "name": "Indonesia"
+ },
+ "is": {
+ "name": "\u00edslenska"
+ },
+ "it": {
+ "name": "italiano"
+ },
+ "iw": {
+ "name": "\u05e2\u05d1\u05e8\u05d9\u05ea"
+ },
+ "ja": {
+ "name": "\u65e5\u672c\u8a9e"
+ },
+ "ko": {
+ "name": "\ud55c\uad6d\uc5b4"
+ },
+ "lt": {
+ "name": "lietuvi\u0173"
+ },
+ "lv": {
+ "name": "latvie\u0161u"
+ },
+ "nl": {
+ "name": "Nederlands"
+ },
+ "no": {
+ "name": "norsk"
+ },
+ "pl": {
+ "name": "polski"
+ },
+ "pt": {
+ "name": "portugu\u00eas"
+ },
+ "ro": {
+ "name": "rom\u00e2n\u0103"
+ },
+ "ru": {
+ "name": "\u0440\u0443\u0441\u0441\u043a\u0438\u0439"
+ },
+ "sk": {
+ "name": "sloven\u010dina"
+ },
+ "sl": {
+ "name": "sloven\u0161\u010dina"
+ },
+ "sr": {
+ "name": "\u0441\u0440\u043f\u0441\u043a\u0438"
+ },
+ "sv": {
+ "name": "svenska"
+ },
+ "sw": {
+ "name": "Kiswahili"
+ },
+ "th": {
+ "name": "\u0e44\u0e17\u0e22"
+ },
+ "tl": {
+ "name": "Filipino"
+ },
+ "tr": {
+ "name": "T\u00fcrk\u00e7e"
+ },
+ "uk": {
+ "name": "\u0443\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"
+ },
+ "vi": {
+ "name": "Ti\u1ebfng Vi\u1ec7t"
+ },
+ "zh-CN": {
+ "name": "\u4e2d\u6587 (\u7b80\u4f53)"
+ },
+ "zh-TW": {
+ "name": "\u4e2d\u6587 (\u7e41\u9ad4)"
+ }
+ },
+ "google scholar": {
+ "af": {
+ "name": "Afrikaans"
+ },
+ "ar": {
+ "name": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629"
+ },
+ "be": {
+ "name": "\u0431\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f"
+ },
+ "bg": {
+ "name": "\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438"
+ },
+ "ca": {
+ "name": "catal\u00e0"
+ },
+ "cs": {
+ "name": "\u010de\u0161tina"
+ },
+ "da": {
+ "name": "dansk"
+ },
+ "de": {
+ "name": "Deutsch"
+ },
+ "el": {
+ "name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"
+ },
+ "en": {
+ "name": "English"
+ },
+ "eo": {
+ "name": "esperanto"
+ },
+ "es": {
+ "name": "espa\u00f1ol"
+ },
+ "et": {
+ "name": "eesti"
+ },
+ "fa": {
+ "name": "\u0641\u0627\u0631\u0633\u06cc"
+ },
+ "fi": {
+ "name": "suomi"
+ },
+ "fr": {
+ "name": "fran\u00e7ais"
+ },
+ "hi": {
+ "name": "\u0939\u093f\u0928\u094d\u0926\u0940"
+ },
+ "hr": {
+ "name": "hrvatski"
+ },
+ "hu": {
+ "name": "magyar"
+ },
+ "hy": {
+ "name": "\u0570\u0561\u0575\u0565\u0580\u0565\u0576"
+ },
+ "id": {
+ "name": "Indonesia"
+ },
+ "is": {
+ "name": "\u00edslenska"
+ },
+ "it": {
+ "name": "italiano"
+ },
+ "iw": {
+ "name": "\u05e2\u05d1\u05e8\u05d9\u05ea"
+ },
+ "ja": {
+ "name": "\u65e5\u672c\u8a9e"
+ },
+ "ko": {
+ "name": "\ud55c\uad6d\uc5b4"
+ },
+ "lt": {
+ "name": "lietuvi\u0173"
+ },
+ "lv": {
+ "name": "latvie\u0161u"
+ },
+ "nl": {
+ "name": "Nederlands"
+ },
+ "no": {
+ "name": "norsk"
+ },
+ "pl": {
+ "name": "polski"
+ },
+ "pt": {
+ "name": "portugu\u00eas"
+ },
+ "ro": {
+ "name": "rom\u00e2n\u0103"
+ },
+ "ru": {
+ "name": "\u0440\u0443\u0441\u0441\u043a\u0438\u0439"
+ },
+ "sk": {
+ "name": "sloven\u010dina"
+ },
+ "sl": {
+ "name": "sloven\u0161\u010dina"
+ },
+ "sr": {
+ "name": "\u0441\u0440\u043f\u0441\u043a\u0438"
+ },
+ "sv": {
+ "name": "svenska"
+ },
+ "sw": {
+ "name": "Kiswahili"
+ },
+ "th": {
+ "name": "\u0e44\u0e17\u0e22"
+ },
+ "tl": {
+ "name": "Filipino"
+ },
+ "tr": {
+ "name": "T\u00fcrk\u00e7e"
+ },
+ "uk": {
+ "name": "\u0443\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"
+ },
+ "vi": {
+ "name": "Ti\u1ebfng Vi\u1ec7t"
+ },
+ "zh-CN": {
+ "name": "\u4e2d\u6587 (\u7b80\u4f53)"
+ },
+ "zh-TW": {
+ "name": "\u4e2d\u6587 (\u7e41\u9ad4)"
+ }
+ },
+ "google videos": {
+ "af": {
+ "name": "Afrikaans"
+ },
+ "ar": {
+ "name": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629"
+ },
+ "be": {
+ "name": "\u0431\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f"
+ },
+ "bg": {
+ "name": "\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438"
+ },
+ "ca": {
+ "name": "catal\u00e0"
+ },
+ "cs": {
+ "name": "\u010de\u0161tina"
+ },
+ "da": {
+ "name": "dansk"
+ },
+ "de": {
+ "name": "Deutsch"
+ },
+ "el": {
+ "name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"
+ },
+ "en": {
+ "name": "English"
+ },
+ "eo": {
+ "name": "esperanto"
+ },
+ "es": {
+ "name": "espa\u00f1ol"
+ },
+ "et": {
+ "name": "eesti"
+ },
+ "fa": {
+ "name": "\u0641\u0627\u0631\u0633\u06cc"
+ },
+ "fi": {
+ "name": "suomi"
+ },
+ "fr": {
+ "name": "fran\u00e7ais"
+ },
+ "hi": {
+ "name": "\u0939\u093f\u0928\u094d\u0926\u0940"
+ },
+ "hr": {
+ "name": "hrvatski"
+ },
+ "hu": {
+ "name": "magyar"
+ },
+ "hy": {
+ "name": "\u0570\u0561\u0575\u0565\u0580\u0565\u0576"
+ },
+ "id": {
+ "name": "Indonesia"
+ },
+ "is": {
+ "name": "\u00edslenska"
+ },
+ "it": {
+ "name": "italiano"
+ },
+ "iw": {
+ "name": "\u05e2\u05d1\u05e8\u05d9\u05ea"
+ },
+ "ja": {
+ "name": "\u65e5\u672c\u8a9e"
+ },
+ "ko": {
+ "name": "\ud55c\uad6d\uc5b4"
+ },
+ "lt": {
+ "name": "lietuvi\u0173"
+ },
+ "lv": {
+ "name": "latvie\u0161u"
+ },
+ "nl": {
+ "name": "Nederlands"
+ },
+ "no": {
+ "name": "norsk"
+ },
+ "pl": {
+ "name": "polski"
+ },
+ "pt": {
+ "name": "portugu\u00eas"
+ },
+ "ro": {
+ "name": "rom\u00e2n\u0103"
+ },
+ "ru": {
+ "name": "\u0440\u0443\u0441\u0441\u043a\u0438\u0439"
+ },
+ "sk": {
+ "name": "sloven\u010dina"
+ },
+ "sl": {
+ "name": "sloven\u0161\u010dina"
+ },
+ "sr": {
+ "name": "\u0441\u0440\u043f\u0441\u043a\u0438"
+ },
+ "sv": {
+ "name": "svenska"
+ },
+ "sw": {
+ "name": "Kiswahili"
+ },
+ "th": {
+ "name": "\u0e44\u0e17\u0e22"
+ },
+ "tl": {
+ "name": "Filipino"
+ },
+ "tr": {
+ "name": "T\u00fcrk\u00e7e"
+ },
+ "uk": {
+ "name": "\u0443\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"
+ },
+ "vi": {
+ "name": "Ti\u1ebfng Vi\u1ec7t"
+ },
+ "zh-CN": {
+ "name": "\u4e2d\u6587 (\u7b80\u4f53)"
+ },
+ "zh-TW": {
+ "name": "\u4e2d\u6587 (\u7e41\u9ad4)"
+ }
+ },
+ "peertube": [
+ "aa",
+ "ab",
+ "af",
+ "ak",
+ "am",
+ "an",
+ "ar",
+ "as",
+ "ase",
+ "av",
+ "avk",
+ "ay",
+ "az",
+ "ba",
+ "be",
+ "bfi",
+ "bg",
+ "bi",
+ "bm",
+ "bn",
+ "bo",
+ "br",
+ "bs",
+ "bzs",
+ "ca",
+ "ce",
+ "ch",
+ "co",
+ "cr",
+ "cs",
+ "cse",
+ "csl",
+ "cv",
+ "cy",
+ "da",
+ "de",
+ "dsl",
+ "dv",
+ "dz",
+ "ee",
+ "el",
+ "en",
+ "eo",
+ "es",
+ "et",
+ "eu",
+ "fa",
+ "ff",
+ "fi",
+ "fj",
+ "fo",
+ "fr",
+ "fsl",
+ "fy",
+ "ga",
+ "gd",
+ "gl",
+ "gn",
+ "gsg",
+ "gu",
+ "gv",
+ "ha",
+ "he",
+ "hi",
+ "ho",
+ "hr",
+ "ht",
+ "hu",
+ "hy",
+ "hz",
+ "id",
+ "ig",
+ "ii",
+ "ik",
+ "is",
+ "it",
+ "iu",
+ "ja",
+ "jbo",
+ "jsl",
+ "jv",
+ "ka",
+ "kg",
+ "ki",
+ "kj",
+ "kk",
+ "kl",
+ "km",
+ "kn",
+ "ko",
+ "kr",
+ "ks",
+ "ku",
+ "kv",
+ "kw",
+ "ky",
+ "lb",
+ "lg",
+ "li",
+ "ln",
+ "lo",
+ "lt",
+ "lu",
+ "lv",
+ "mg",
+ "mh",
+ "mi",
+ "mk",
+ "ml",
+ "mn",
+ "mr",
+ "ms",
+ "mt",
+ "my",
+ "na",
+ "nb",
+ "nd",
+ "ne",
+ "ng",
+ "nl",
+ "nn",
+ "no",
+ "nr",
+ "nv",
+ "ny",
+ "oc",
+ "oj",
+ "om",
+ "or",
+ "os",
+ "pa",
+ "pks",
+ "pl",
+ "ps",
+ "pt",
+ "qu",
+ "rm",
+ "rn",
+ "ro",
+ "rsl",
+ "ru",
+ "rw",
+ "sc",
+ "sd",
+ "sdl",
+ "se",
+ "sfs",
+ "sg",
+ "sh",
+ "si",
+ "sk",
+ "sl",
+ "sm",
+ "sn",
+ "so",
+ "sq",
+ "sr",
+ "ss",
+ "st",
+ "su",
+ "sv",
+ "sw",
+ "swl",
+ "ta",
+ "te",
+ "tg",
+ "th",
+ "ti",
+ "tk",
+ "tl",
+ "tlh",
+ "tn",
+ "to",
+ "tr",
+ "ts",
+ "tt",
+ "tw",
+ "ty",
+ "ug",
+ "uk",
+ "ur",
+ "uz",
+ "ve",
+ "vi",
+ "wa",
+ "wo",
+ "xh",
+ "yi",
+ "yo",
+ "za",
+ "zh",
+ "zu"
+ ],
+ "qwant": [
+ "bg-BG",
+ "ca-ES",
+ "cs-CZ",
+ "da-DK",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "el-GR",
+ "en-AU",
+ "en-CA",
+ "en-GB",
+ "en-IE",
+ "en-IN",
+ "en-MY",
+ "en-NZ",
+ "en-US",
+ "es-AR",
+ "es-CL",
+ "es-ES",
+ "es-MX",
+ "et-EE",
+ "fi-FI",
+ "fr-BE",
+ "fr-CA",
+ "fr-CH",
+ "fr-FR",
+ "hu-HU",
+ "it-CH",
+ "it-IT",
+ "ko-KR",
+ "nb-NO",
+ "nl-BE",
+ "nl-NL",
+ "pl-PL",
+ "pt-BR",
+ "pt-PT",
+ "ro-RO",
+ "sv-SE",
+ "th-TH",
+ "zh-CN",
+ "zh-HK"
+ ],
+ "qwant images": [
+ "bg-BG",
+ "ca-ES",
+ "cs-CZ",
+ "da-DK",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "el-GR",
+ "en-AU",
+ "en-CA",
+ "en-GB",
+ "en-IE",
+ "en-IN",
+ "en-MY",
+ "en-NZ",
+ "en-US",
+ "es-AR",
+ "es-CL",
+ "es-ES",
+ "es-MX",
+ "et-EE",
+ "fi-FI",
+ "fr-BE",
+ "fr-CA",
+ "fr-CH",
+ "fr-FR",
+ "hu-HU",
+ "it-CH",
+ "it-IT",
+ "ko-KR",
+ "nb-NO",
+ "nl-BE",
+ "nl-NL",
+ "pl-PL",
+ "pt-BR",
+ "pt-PT",
+ "ro-RO",
+ "sv-SE",
+ "th-TH",
+ "zh-CN",
+ "zh-HK"
+ ],
+ "qwant news": [
+ "bg-BG",
+ "ca-ES",
+ "cs-CZ",
+ "da-DK",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "el-GR",
+ "en-AU",
+ "en-CA",
+ "en-GB",
+ "en-IE",
+ "en-IN",
+ "en-MY",
+ "en-NZ",
+ "en-US",
+ "es-AR",
+ "es-CL",
+ "es-ES",
+ "es-MX",
+ "et-EE",
+ "fi-FI",
+ "fr-BE",
+ "fr-CA",
+ "fr-CH",
+ "fr-FR",
+ "hu-HU",
+ "it-CH",
+ "it-IT",
+ "ko-KR",
+ "nb-NO",
+ "nl-BE",
+ "nl-NL",
+ "pl-PL",
+ "pt-BR",
+ "pt-PT",
+ "ro-RO",
+ "sv-SE",
+ "th-TH",
+ "zh-CN",
+ "zh-HK"
+ ],
+ "qwant videos": [
+ "bg-BG",
+ "ca-ES",
+ "cs-CZ",
+ "da-DK",
+ "de-AT",
+ "de-CH",
+ "de-DE",
+ "el-GR",
+ "en-AU",
+ "en-CA",
+ "en-GB",
+ "en-IE",
+ "en-IN",
+ "en-MY",
+ "en-NZ",
+ "en-US",
+ "es-AR",
+ "es-CL",
+ "es-ES",
+ "es-MX",
+ "et-EE",
+ "fi-FI",
+ "fr-BE",
+ "fr-CA",
+ "fr-CH",
+ "fr-FR",
+ "hu-HU",
+ "it-CH",
+ "it-IT",
+ "ko-KR",
+ "nb-NO",
+ "nl-BE",
+ "nl-NL",
+ "pl-PL",
+ "pt-BR",
+ "pt-PT",
+ "ro-RO",
+ "sv-SE",
+ "th-TH",
+ "zh-CN",
+ "zh-HK"
+ ],
+ "startpage": {
+ "af": {
+ "alias": "afrikaans"
+ },
+ "am": {
+ "alias": "amharic"
+ },
+ "ar": {
+ "alias": "arabic"
+ },
+ "az": {
+ "alias": "azerbaijani"
+ },
+ "be": {
+ "alias": "belarusian"
+ },
+ "bg": {
+ "alias": "bulgarian"
+ },
+ "bn": {
+ "alias": "bengali"
+ },
+ "bs": {
+ "alias": "bosnian"
+ },
+ "ca": {
+ "alias": "catalan"
+ },
+ "cs": {
+ "alias": "czech"
+ },
+ "cy": {
+ "alias": "welsh"
+ },
+ "da": {
+ "alias": "dansk"
+ },
+ "de": {
+ "alias": "deutsch"
+ },
+ "el": {
+ "alias": "greek"
+ },
+ "en": {
+ "alias": "english"
+ },
+ "en-GB": {
+ "alias": "english_uk"
+ },
+ "eo": {
+ "alias": "esperanto"
+ },
+ "es": {
+ "alias": "espanol"
+ },
+ "et": {
+ "alias": "estonian"
+ },
+ "eu": {
+ "alias": "basque"
+ },
+ "fa": {
+ "alias": "persian"
+ },
+ "fi": {
+ "alias": "suomi"
+ },
+ "fo": {
+ "alias": "faroese"
+ },
+ "fr": {
+ "alias": "francais"
+ },
+ "fy": {
+ "alias": "frisian"
+ },
+ "ga": {
+ "alias": "irish"
+ },
+ "gd": {
+ "alias": "gaelic"
+ },
+ "gl": {
+ "alias": "galician"
+ },
+ "gu": {
+ "alias": "gujarati"
+ },
+ "he": {
+ "alias": "hebrew"
+ },
+ "hi": {
+ "alias": "hindi"
+ },
+ "hr": {
+ "alias": "croatian"
+ },
+ "hu": {
+ "alias": "hungarian"
+ },
+ "ia": {
+ "alias": "interlingua"
+ },
+ "id": {
+ "alias": "indonesian"
+ },
+ "is": {
+ "alias": "icelandic"
+ },
+ "it": {
+ "alias": "italiano"
+ },
+ "ja": {
+ "alias": "nihongo"
+ },
+ "jv": {
+ "alias": "javanese"
+ },
+ "ka": {
+ "alias": "georgian"
+ },
+ "kn": {
+ "alias": "kannada"
+ },
+ "ko": {
+ "alias": "hangul"
+ },
+ "la": {
+ "alias": "latin"
+ },
+ "lt": {
+ "alias": "lithuanian"
+ },
+ "lv": {
+ "alias": "latvian"
+ },
+ "mai": {
+ "alias": "bihari"
+ },
+ "mk": {
+ "alias": "macedonian"
+ },
+ "ml": {
+ "alias": "malayalam"
+ },
+ "mr": {
+ "alias": "marathi"
+ },
+ "ms": {
+ "alias": "malay"
+ },
+ "mt": {
+ "alias": "maltese"
+ },
+ "nb": {
+ "alias": "norsk"
+ },
+ "ne": {
+ "alias": "nepali"
+ },
+ "nl": {
+ "alias": "nederlands"
+ },
+ "oc": {
+ "alias": "occitan"
+ },
+ "pa": {
+ "alias": "punjabi"
+ },
+ "pl": {
+ "alias": "polski"
+ },
+ "pt": {
+ "alias": "portugues"
+ },
+ "ro": {
+ "alias": "romanian"
+ },
+ "ru": {
+ "alias": "russian"
+ },
+ "si": {
+ "alias": "sinhalese"
+ },
+ "sk": {
+ "alias": "slovak"
+ },
+ "sl": {
+ "alias": "slovenian"
+ },
+ "sq": {
+ "alias": "albanian"
+ },
+ "sr": {
+ "alias": "serbian"
+ },
+ "su": {
+ "alias": "sudanese"
+ },
+ "sv": {
+ "alias": "svenska"
+ },
+ "sw": {
+ "alias": "swahili"
+ },
+ "ta": {
+ "alias": "tamil"
+ },
+ "te": {
+ "alias": "telugu"
+ },
+ "th": {
+ "alias": "thai"
+ },
+ "ti": {
+ "alias": "tigrinya"
+ },
+ "tl": {
+ "alias": "tagalog"
+ },
+ "tr": {
+ "alias": "turkce"
+ },
+ "uk": {
+ "alias": "ukrainian"
+ },
+ "ur": {
+ "alias": "urdu"
+ },
+ "uz": {
+ "alias": "uzbek"
+ },
+ "vi": {
+ "alias": "vietnamese"
+ },
+ "xh": {
+ "alias": "xhosa"
+ },
+ "zh": {
+ "alias": "jiantizhongwen"
+ },
+ "zh-HK": {
+ "alias": "fantizhengwen"
+ },
+ "zh-TW": {
+ "alias": "fantizhengwen"
+ },
+ "zu": {
+ "alias": "zulu"
+ }
+ },
+ "wikidata": {
+ "ab": {
+ "english_name": "Abkhazian",
+ "name": "\u0410\u0525\u0441\u0443\u0430"
+ },
+ "ace": {
+ "english_name": "Acehnese",
+ "name": "Basa Ac\u00e8h"
+ },
+ "ady": {
+ "english_name": "Adyghe",
+ "name": "\u0410\u0434\u044b\u0433\u044d\u0431\u0437\u044d"
+ },
+ "af": {
+ "english_name": "Afrikaans",
+ "name": "Afrikaans"
+ },
+ "ak": {
+ "english_name": "Akan",
+ "name": "Akana"
+ },
+ "als": {
+ "english_name": "Alemannic",
+ "name": "Alemannisch"
+ },
+ "alt": {
+ "english_name": "Southern Altai",
+ "name": "\u0410\u043b\u0442\u0430\u0439"
+ },
+ "am": {
+ "english_name": "Amharic",
+ "name": "\u12a0\u121b\u122d\u129b"
+ },
+ "an": {
+ "english_name": "Aragonese",
+ "name": "Aragon\u00e9s"
+ },
+ "ang": {
+ "english_name": "Anglo-Saxon",
+ "name": "Englisc"
+ },
+ "ar": {
+ "english_name": "Arabic",
+ "name": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629"
+ },
+ "arc": {
+ "english_name": "Aramaic",
+ "name": "\u0710\u072a\u0721\u071d\u0710"
+ },
+ "ary": {
+ "english_name": "Moroccan Arabic",
+ "name": "\u0627\u0644\u062f\u0627\u0631\u062c\u0629"
+ },
+ "arz": {
+ "english_name": "Egyptian Arabic",
+ "name": "\u0645\u0635\u0631\u0649 (Ma\u1e63ri)"
+ },
+ "as": {
+ "english_name": "Assamese",
+ "name": "\u0985\u09b8\u09ae\u09c0\u09af\u09bc\u09be"
+ },
+ "ast": {
+ "english_name": "Asturian",
+ "name": "Asturianu"
+ },
+ "atj": {
+ "english_name": "Atikamekw",
+ "name": "Atikamekw"
+ },
+ "av": {
+ "english_name": "Avar",
+ "name": "\u0410\u0432\u0430\u0440"
+ },
+ "avk": {
+ "english_name": "Kotava",
+ "name": "Kotava"
+ },
+ "awa": {
+ "english_name": "Awadhi",
+ "name": "\u0905\u0935\u0927\u0940"
+ },
+ "ay": {
+ "english_name": "Aymara",
+ "name": "Aymar"
+ },
+ "az": {
+ "english_name": "Azerbaijani",
+ "name": "Az\u0259rbaycanca"
+ },
+ "azb": {
+ "english_name": "South Azerbaijani",
+ "name": "\u062a\u06c6\u0631\u06a9\u062c\u0647"
+ },
+ "ba": {
+ "english_name": "Bashkir",
+ "name": "\u0411\u0430\u0448\u04a1\u043e\u0440\u0442"
+ },
+ "ban": {
+ "english_name": "Balinese",
+ "name": "Bali"
+ },
+ "bar": {
+ "english_name": "Bavarian",
+ "name": "Boarisch"
+ },
+ "bat-smg": {
+ "english_name": "Samogitian",
+ "name": "\u017demait\u0117\u0161ka"
+ },
+ "bcl": {
+ "english_name": "Central Bicolano",
+ "name": "Bikol"
+ },
+ "be": {
+ "english_name": "Belarusian",
+ "name": "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f"
+ },
+ "be-tarask": {
+ "english_name": "Belarusian (Tara\u0161kievica)",
+ "name": "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f (\u0442\u0430\u0440\u0430\u0448\u043a\u0435\u0432\u0456\u0446\u0430)"
+ },
+ "bg": {
+ "english_name": "Bulgarian",
+ "name": "\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438"
+ },
+ "bh": {
+ "english_name": "Bhojpuri",
+ "name": "\u092d\u094b\u091c\u092a\u0941\u0930\u0940"
+ },
+ "bi": {
+ "english_name": "Bislama",
+ "name": "Bislama"
+ },
+ "bjn": {
+ "english_name": "Banjar",
+ "name": "Bahasa Banjar"
+ },
+ "bm": {
+ "english_name": "Bambara",
+ "name": "Bamanankan"
+ },
+ "bn": {
+ "english_name": "Bengali",
+ "name": "\u09ac\u09be\u0982\u09b2\u09be"
+ },
+ "bo": {
+ "english_name": "Tibetan",
+ "name": "\u0f56\u0f7c\u0f51\u0f0b\u0f66\u0f90\u0f51"
+ },
+ "bpy": {
+ "english_name": "Bishnupriya Manipuri",
+ "name": "\u0987\u09ae\u09be\u09b0 \u09a0\u09be\u09b0/\u09ac\u09bf\u09b7\u09cd\u09a3\u09c1\u09aa\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u09ae\u09a3\u09bf\u09aa\u09c1\u09b0\u09c0"
+ },
+ "br": {
+ "english_name": "Breton",
+ "name": "Brezhoneg"
+ },
+ "bs": {
+ "english_name": "Bosnian",
+ "name": "Bosanski"
+ },
+ "bug": {
+ "english_name": "Buginese",
+ "name": "Basa Ugi"
+ },
+ "bxr": {
+ "english_name": "Buryat",
+ "name": "\u0411\u0443\u0440\u044f\u0430\u0434"
+ },
+ "ca": {
+ "english_name": "Catalan",
+ "name": "Catal\u00e0"
+ },
+ "cbk-zam": {
+ "english_name": "Zamboanga Chavacano",
+ "name": "Chavacano de Zamboanga"
+ },
+ "cdo": {
+ "english_name": "Min Dong",
+ "name": "M\u00ecng-d\u0115\u0324ng-ng\u1e73\u0304"
+ },
+ "ce": {
+ "english_name": "Chechen",
+ "name": "\u041d\u043e\u0445\u0447\u0438\u0439\u043d"
+ },
+ "ceb": {
+ "english_name": "Cebuano",
+ "name": "Sinugboanong Binisaya"
+ },
+ "ch": {
+ "english_name": "Chamorro",
+ "name": "Chamoru"
+ },
+ "chr": {
+ "english_name": "Cherokee",
+ "name": "\u13e3\u13b3\u13a9"
+ },
+ "chy": {
+ "english_name": "Cheyenne",
+ "name": "Tsets\u00eahest\u00e2hese"
+ },
+ "ckb": {
+ "english_name": "Sorani",
+ "name": "Soran\u00ee / \u06a9\u0648\u0631\u062f\u06cc"
+ },
+ "co": {
+ "english_name": "Corsican",
+ "name": "Corsu"
+ },
+ "cr": {
+ "english_name": "Cree",
+ "name": "Nehiyaw"
+ },
+ "crh": {
+ "english_name": "Crimean Tatar",
+ "name": "Q\u0131r\u0131mtatarca"
+ },
+ "cs": {
+ "english_name": "Czech",
+ "name": "\u010ce\u0161tina"
+ },
+ "csb": {
+ "english_name": "Kashubian",
+ "name": "Kasz\u00ebbsczi"
+ },
+ "cu": {
+ "english_name": "Old Church Slavonic",
+ "name": "\u0421\u043b\u043e\u0432\u0463\u043d\u044c\u0441\u043a\u044a"
+ },
+ "cv": {
+ "english_name": "Chuvash",
+ "name": "\u0427\u0103\u0432\u0430\u0448"
+ },
+ "cy": {
+ "english_name": "Welsh",
+ "name": "Cymraeg"
+ },
+ "da": {
+ "english_name": "Danish",
+ "name": "Dansk"
+ },
+ "de": {
+ "english_name": "German",
+ "name": "Deutsch"
+ },
+ "din": {
+ "english_name": "Dinka",
+ "name": "Thu\u0254\u014bj\u00e4\u014b"
+ },
+ "diq": {
+ "english_name": "Zazaki",
+ "name": "Zazaki"
+ },
+ "dsb": {
+ "english_name": "Lower Sorbian",
+ "name": "Dolnoserbski"
+ },
+ "dty": {
+ "english_name": "Doteli",
+ "name": "\u0921\u094b\u091f\u0947\u0932\u0940"
+ },
+ "dv": {
+ "english_name": "Divehi",
+ "name": "\u078b\u07a8\u0788\u07ac\u0780\u07a8\u0784\u07a6\u0790\u07b0"
+ },
+ "dz": {
+ "english_name": "Dzongkha",
+ "name": "\u0f47\u0f7c\u0f44\u0f0b\u0f41"
+ },
+ "ee": {
+ "english_name": "Ewe",
+ "name": "E\u028begbe"
+ },
+ "el": {
+ "english_name": "Greek",
+ "name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"
+ },
+ "eml": {
+ "english_name": "Emilian-Romagnol",
+ "name": "Emili\u00e0n e rumagn\u00f2l"
+ },
+ "en": {
+ "english_name": "English",
+ "name": "English"
+ },
+ "eo": {
+ "english_name": "Esperanto",
+ "name": "Esperanto"
+ },
+ "es": {
+ "english_name": "Spanish",
+ "name": "Espa\u00f1ol"
+ },
+ "et": {
+ "english_name": "Estonian",
+ "name": "Eesti"
+ },
+ "eu": {
+ "english_name": "Basque",
+ "name": "Euskara"
+ },
+ "ext": {
+ "english_name": "Extremaduran",
+ "name": "Estreme\u00f1u"
+ },
+ "fa": {
+ "english_name": "Persian",
+ "name": "\u0641\u0627\u0631\u0633\u06cc"
+ },
+ "ff": {
+ "english_name": "Fula",
+ "name": "Fulfulde"
+ },
+ "fi": {
+ "english_name": "Finnish",
+ "name": "Suomi"
+ },
+ "fiu-vro": {
+ "english_name": "V\u00f5ro",
+ "name": "V\u00f5ro"
+ },
+ "fj": {
+ "english_name": "Fijian",
+ "name": "Na Vosa Vakaviti"
+ },
+ "fo": {
+ "english_name": "Faroese",
+ "name": "F\u00f8royskt"
+ },
+ "fr": {
+ "english_name": "French",
+ "name": "Fran\u00e7ais"
+ },
+ "frp": {
+ "english_name": "Franco-Proven\u00e7al",
+ "name": "Arpetan"
+ },
+ "frr": {
+ "english_name": "North Frisian",
+ "name": "Nordfriisk"
+ },
+ "fur": {
+ "english_name": "Friulian",
+ "name": "Furlan"
+ },
+ "fy": {
+ "english_name": "West Frisian",
+ "name": "Frysk"
+ },
+ "ga": {
+ "english_name": "Irish",
+ "name": "Gaeilge"
+ },
+ "gag": {
+ "english_name": "Gagauz",
+ "name": "Gagauz"
+ },
+ "gan": {
+ "english_name": "Gan",
+ "name": "\u8d1b\u8a9e"
+ },
+ "gcr": {
+ "english_name": "Guianan Creole",
+ "name": "Kriy\u00f2l Gwiyannen"
+ },
+ "gd": {
+ "english_name": "Scottish Gaelic",
+ "name": "G\u00e0idhlig"
+ },
+ "gl": {
+ "english_name": "Galician",
+ "name": "Galego"
+ },
+ "glk": {
+ "english_name": "Gilaki",
+ "name": "\u06af\u06cc\u0644\u06a9\u06cc"
+ },
+ "gn": {
+ "english_name": "Guarani",
+ "name": "Ava\u00f1e'\u1ebd"
+ },
+ "gom": {
+ "english_name": "Goan Konkani",
+ "name": "\u0917\u094b\u0902\u092f\u091a\u0940 \u0915\u094b\u0902\u0915\u0923\u0940 / G\u00f5ychi Konknni"
+ },
+ "gor": {
+ "english_name": "Gorontalo",
+ "name": "Hulontalo"
+ },
+ "got": {
+ "english_name": "Gothic",
+ "name": "\ud800\udf32\ud800\udf3f\ud800\udf44\ud800\udf39\ud800\udf43\ud800\udf3a"
+ },
+ "gu": {
+ "english_name": "Gujarati",
+ "name": "\u0a97\u0ac1\u0a9c\u0ab0\u0abe\u0aa4\u0ac0"
+ },
+ "gv": {
+ "english_name": "Manx",
+ "name": "Gaelg"
+ },
+ "ha": {
+ "english_name": "Hausa",
+ "name": "Hausa / \u0647\u064e\u0648\u064f\u0633\u064e"
+ },
+ "hak": {
+ "english_name": "Hakka",
+ "name": "Hak-k\u00e2-fa / \u5ba2\u5bb6\u8a71"
+ },
+ "haw": {
+ "english_name": "Hawaiian",
+ "name": "Hawai\u02bbi"
+ },
+ "he": {
+ "english_name": "Hebrew",
+ "name": "\u05e2\u05d1\u05e8\u05d9\u05ea"
+ },
+ "hi": {
+ "english_name": "Hindi",
+ "name": "\u0939\u093f\u0928\u094d\u0926\u0940"
+ },
+ "hif": {
+ "english_name": "Fiji Hindi",
+ "name": "Fiji Hindi"
+ },
+ "hr": {
+ "english_name": "Croatian",
+ "name": "Hrvatski"
+ },
+ "hsb": {
+ "english_name": "Upper Sorbian",
+ "name": "Hornjoserbsce"
+ },
+ "ht": {
+ "english_name": "Haitian",
+ "name": "Kr\u00e8yol ayisyen"
+ },
+ "hu": {
+ "english_name": "Hungarian",
+ "name": "Magyar"
+ },
+ "hy": {
+ "english_name": "Armenian",
+ "name": "\u0540\u0561\u0575\u0565\u0580\u0565\u0576"
+ },
+ "hyw": {
+ "english_name": "Western Armenian",
+ "name": "\u0531\u0580\u0565\u0582\u0574\u057f\u0561\u0570\u0561\u0575\u0565\u0580\u0567\u0576"
+ },
+ "ia": {
+ "english_name": "Interlingua",
+ "name": "Interlingua"
+ },
+ "id": {
+ "english_name": "Indonesian",
+ "name": "Bahasa Indonesia"
+ },
+ "ie": {
+ "english_name": "Interlingue",
+ "name": "Interlingue"
+ },
+ "ig": {
+ "english_name": "Igbo",
+ "name": "\u00ccgb\u00f2"
+ },
+ "ik": {
+ "english_name": "Inupiak",
+ "name": "I\u00f1upiatun"
+ },
+ "ilo": {
+ "english_name": "Ilokano",
+ "name": "Ilokano"
+ },
+ "inh": {
+ "english_name": "Ingush",
+ "name": "\u0413\u04c0\u0430\u043b\u0433\u04c0\u0430\u0439"
+ },
+ "io": {
+ "english_name": "Ido",
+ "name": "Ido"
+ },
+ "is": {
+ "english_name": "Icelandic",
+ "name": "\u00cdslenska"
+ },
+ "it": {
+ "english_name": "Italian",
+ "name": "Italiano"
+ },
+ "iu": {
+ "english_name": "Inuktitut",
+ "name": "\u1403\u14c4\u1483\u144e\u1450\u1466"
+ },
+ "ja": {
+ "english_name": "Japanese",
+ "name": "\u65e5\u672c\u8a9e"
+ },
+ "jam": {
+ "english_name": "Jamaican Patois",
+ "name": "Jumiekan Kryuol"
+ },
+ "jbo": {
+ "english_name": "Lojban",
+ "name": "Lojban"
+ },
+ "jv": {
+ "english_name": "Javanese",
+ "name": "Basa Jawa"
+ },
+ "ka": {
+ "english_name": "Georgian",
+ "name": "\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8"
+ },
+ "kaa": {
+ "english_name": "Karakalpak",
+ "name": "Qaraqalpaqsha"
+ },
+ "kab": {
+ "english_name": "Kabyle",
+ "name": "Taqbaylit"
+ },
+ "kbd": {
+ "english_name": "Kabardian Circassian",
+ "name": "\u0410\u0434\u044b\u0433\u044d\u0431\u0437\u044d (Adighabze)"
+ },
+ "kbp": {
+ "english_name": "Kabiye",
+ "name": "Kab\u0269y\u025b"
+ },
+ "kg": {
+ "english_name": "Kongo",
+ "name": "Kik\u00f4ngo"
+ },
+ "ki": {
+ "english_name": "Kikuyu",
+ "name": "G\u0129k\u0169y\u0169"
+ },
+ "kk": {
+ "english_name": "Kazakh",
+ "name": "\u049a\u0430\u0437\u0430\u049b\u0448\u0430"
+ },
+ "kl": {
+ "english_name": "Greenlandic",
+ "name": "Kalaallisut"
+ },
+ "km": {
+ "english_name": "Khmer",
+ "name": "\u1797\u17b6\u179f\u17b6\u1781\u17d2\u1798\u17c2\u179a"
+ },
+ "kn": {
+ "english_name": "Kannada",
+ "name": "\u0c95\u0ca8\u0ccd\u0ca8\u0ca1"
+ },
+ "ko": {
+ "english_name": "Korean",
+ "name": "\ud55c\uad6d\uc5b4"
+ },
+ "koi": {
+ "english_name": "Komi-Permyak",
+ "name": "\u041f\u0435\u0440\u0435\u043c \u041a\u043e\u043c\u0438 (Perem Komi)"
+ },
+ "krc": {
+ "english_name": "Karachay-Balkar",
+ "name": "\u041a\u044a\u0430\u0440\u0430\u0447\u0430\u0439-\u041c\u0430\u043b\u043a\u044a\u0430\u0440 (Qarachay-Malqar)"
+ },
+ "ks": {
+ "english_name": "Kashmiri",
+ "name": "\u0915\u0936\u094d\u092e\u0940\u0930\u0940 / \u0643\u0634\u0645\u064a\u0631\u064a"
+ },
+ "ksh": {
+ "english_name": "Ripuarian",
+ "name": "Ripoarisch"
+ },
+ "ku": {
+ "english_name": "Kurdish",
+ "name": "Kurd\u00ee / \u0643\u0648\u0631\u062f\u06cc"
+ },
+ "kv": {
+ "english_name": "Komi",
+ "name": "\u041a\u043e\u043c\u0438"
+ },
+ "kw": {
+ "english_name": "Cornish",
+ "name": "Kernowek/Karnuack"
+ },
+ "ky": {
+ "english_name": "Kirghiz",
+ "name": "\u041a\u044b\u0440\u0433\u044b\u0437\u0447\u0430"
+ },
+ "la": {
+ "english_name": "Latin",
+ "name": "Latina"
+ },
+ "lad": {
+ "english_name": "Ladino",
+ "name": "Dzhudezmo"
+ },
+ "lb": {
+ "english_name": "Luxembourgish",
+ "name": "L\u00ebtzebuergesch"
+ },
+ "lbe": {
+ "english_name": "Lak",
+ "name": "\u041b\u0430\u043a\u043a\u0443"
+ },
+ "lez": {
+ "english_name": "Lezgian",
+ "name": "\u041b\u0435\u0437\u0433\u0438 \u0447\u0406\u0430\u043b (Lezgi \u010d\u2019al)"
+ },
+ "lfn": {
+ "english_name": "Lingua Franca Nova",
+ "name": "Lingua franca nova"
+ },
+ "lg": {
+ "english_name": "Luganda",
+ "name": "Luganda"
+ },
+ "li": {
+ "english_name": "Limburgish",
+ "name": "Limburgs"
+ },
+ "lij": {
+ "english_name": "Ligurian",
+ "name": "L\u00ecgure"
+ },
+ "lld": {
+ "english_name": "Ladin",
+ "name": "Lingaz"
+ },
+ "lmo": {
+ "english_name": "Lombard",
+ "name": "Lumbaart"
+ },
+ "ln": {
+ "english_name": "Lingala",
+ "name": "Lingala"
+ },
+ "lo": {
+ "english_name": "Lao",
+ "name": "\u0ea5\u0eb2\u0ea7"
+ },
+ "lt": {
+ "english_name": "Lithuanian",
+ "name": "Lietuvi\u0173"
+ },
+ "ltg": {
+ "english_name": "Latgalian",
+ "name": "Latga\u013cu"
+ },
+ "lv": {
+ "english_name": "Latvian",
+ "name": "Latvie\u0161u"
+ },
+ "mad": {
+ "english_name": "Madurese",
+ "name": "Madhur\u00e2"
+ },
+ "mai": {
+ "english_name": "Maithili",
+ "name": "\u092e\u0948\u0925\u093f\u0932\u0940"
+ },
+ "map-bms": {
+ "english_name": "Banyumasan",
+ "name": "Basa Banyumasan"
+ },
+ "mdf": {
+ "english_name": "Moksha",
+ "name": "\u041c\u043e\u043a\u0448\u0435\u043d\u044c (Mokshanj K\u00e4lj)"
+ },
+ "mg": {
+ "english_name": "Malagasy",
+ "name": "Malagasy"
+ },
+ "mhr": {
+ "english_name": "Meadow Mari",
+ "name": "\u041e\u043b\u044b\u043a \u041c\u0430\u0440\u0438\u0439 (Olyk Marij)"
+ },
+ "mi": {
+ "english_name": "Maori",
+ "name": "M\u0101ori"
+ },
+ "min": {
+ "english_name": "Minangkabau",
+ "name": "Minangkabau"
+ },
+ "mk": {
+ "english_name": "Macedonian",
+ "name": "\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438"
+ },
+ "ml": {
+ "english_name": "Malayalam",
+ "name": "\u0d2e\u0d32\u0d2f\u0d3e\u0d33\u0d02"
+ },
+ "mn": {
+ "english_name": "Mongolian",
+ "name": "\u041c\u043e\u043d\u0433\u043e\u043b"
+ },
+ "mni": {
+ "english_name": "Meitei",
+ "name": "\uabc3\uabe4\uabc7\uabe9\uabc2\uabe3\uabdf"
+ },
+ "mnw": {
+ "english_name": "Mon",
+ "name": "\u1019\u1014\u103a"
+ },
+ "mr": {
+ "english_name": "Marathi",
+ "name": "\u092e\u0930\u093e\u0920\u0940"
+ },
+ "mrj": {
+ "english_name": "Hill Mari",
+ "name": "\u041a\u044b\u0440\u044b\u043a \u041c\u0430\u0440\u044b (Kyryk Mary)"
+ },
+ "ms": {
+ "english_name": "Malay",
+ "name": "Bahasa Melayu"
+ },
+ "mt": {
+ "english_name": "Maltese",
+ "name": "Malti"
+ },
+ "mwl": {
+ "english_name": "Mirandese",
+ "name": "Mirand\u00e9s"
+ },
+ "my": {
+ "english_name": "Burmese",
+ "name": "\u1019\u103c\u1014\u103a\u1019\u102c\u1018\u102c\u101e\u102c"
+ },
+ "myv": {
+ "english_name": "Erzya",
+ "name": "\u042d\u0440\u0437\u044f\u043d\u044c (Erzjanj Kelj)"
+ },
+ "mzn": {
+ "english_name": "Mazandarani",
+ "name": "\u0645\u064e\u0632\u0650\u0631\u0648\u0646\u064a"
+ },
+ "na": {
+ "english_name": "Nauruan",
+ "name": "dorerin Naoero"
+ },
+ "nah": {
+ "english_name": "Nahuatl",
+ "name": "N\u0101huatl"
+ },
+ "nap": {
+ "english_name": "Neapolitan",
+ "name": "Nnapulitano"
+ },
+ "nds": {
+ "english_name": "Low Saxon",
+ "name": "Plattd\u00fc\u00fctsch"
+ },
+ "nds-nl": {
+ "english_name": "Dutch Low Saxon",
+ "name": "Nedersaksisch"
+ },
+ "ne": {
+ "english_name": "Nepali",
+ "name": "\u0928\u0947\u092a\u093e\u0932\u0940"
+ },
+ "new": {
+ "english_name": "Newar",
+ "name": "\u0928\u0947\u092a\u093e\u0932 \u092d\u093e\u0937\u093e"
+ },
+ "nia": {
+ "english_name": "Nias",
+ "name": "Li Niha"
+ },
+ "nl": {
+ "english_name": "Dutch",
+ "name": "Nederlands"
+ },
+ "nn": {
+ "english_name": "Norwegian (Nynorsk)",
+ "name": "Nynorsk"
+ },
+ "no": {
+ "english_name": "Norwegian (Bokm\u00e5l)",
+ "name": "Norsk (Bokm\u00e5l)"
+ },
+ "nov": {
+ "english_name": "Novial",
+ "name": "Novial"
+ },
+ "nqo": {
+ "english_name": "N\u2019Ko",
+ "name": "\u07d2\u07de\u07cf"
+ },
+ "nrm": {
+ "english_name": "Norman",
+ "name": "Nouormand/Normaund"
+ },
+ "nso": {
+ "english_name": "Northern Sotho",
+ "name": "Sepedi"
+ },
+ "nv": {
+ "english_name": "Navajo",
+ "name": "Din\u00e9 bizaad"
+ },
+ "ny": {
+ "english_name": "Chichewa",
+ "name": "Chichewa"
+ },
+ "oc": {
+ "english_name": "Occitan",
+ "name": "Occitan"
+ },
+ "olo": {
+ "english_name": "Livvi-Karelian",
+ "name": "Karjalan"
+ },
+ "om": {
+ "english_name": "Oromo",
+ "name": "Oromoo"
+ },
+ "or": {
+ "english_name": "Oriya",
+ "name": "\u0b13\u0b21\u0b3c\u0b3f\u0b06"
+ },
+ "os": {
+ "english_name": "Ossetian",
+ "name": "\u0418\u0440\u043e\u043d\u0430\u0443"
+ },
+ "pa": {
+ "english_name": "Punjabi",
+ "name": "\u0a2a\u0a70\u0a1c\u0a3e\u0a2c\u0a40"
+ },
+ "pag": {
+ "english_name": "Pangasinan",
+ "name": "Pangasinan"
+ },
+ "pam": {
+ "english_name": "Kapampangan",
+ "name": "Kapampangan"
+ },
+ "pap": {
+ "english_name": "Papiamentu",
+ "name": "Papiamentu"
+ },
+ "pcd": {
+ "english_name": "Picard",
+ "name": "Picard"
+ },
+ "pdc": {
+ "english_name": "Pennsylvania German",
+ "name": "Deitsch"
+ },
+ "pfl": {
+ "english_name": "Palatinate German",
+ "name": "P\u00e4lzisch"
+ },
+ "pi": {
+ "english_name": "Pali",
+ "name": "\u092a\u093e\u0934\u093f"
+ },
+ "pih": {
+ "english_name": "Norfolk",
+ "name": "Norfuk"
+ },
+ "pl": {
+ "english_name": "Polish",
+ "name": "Polski"
+ },
+ "pms": {
+ "english_name": "Piedmontese",
+ "name": "Piemont\u00e8is"
+ },
+ "pnb": {
+ "english_name": "Western Punjabi",
+ "name": "\u0634\u0627\u06c1 \u0645\u06a9\u06be\u06cc \u067e\u0646\u062c\u0627\u0628\u06cc (Sh\u0101hmukh\u012b Pa\u00f1j\u0101b\u012b)"
+ },
+ "pnt": {
+ "english_name": "Pontic",
+ "name": "\u03a0\u03bf\u03bd\u03c4\u03b9\u03b1\u03ba\u03ac"
+ },
+ "ps": {
+ "english_name": "Pashto",
+ "name": "\u067e\u069a\u062a\u0648"
+ },
+ "pt": {
+ "english_name": "Portuguese",
+ "name": "Portugu\u00eas"
+ },
+ "qu": {
+ "english_name": "Quechua",
+ "name": "Runa Simi"
+ },
+ "rm": {
+ "english_name": "Romansh",
+ "name": "Rumantsch"
+ },
+ "rmy": {
+ "english_name": "Romani",
+ "name": "romani - \u0930\u094b\u092e\u093e\u0928\u0940"
+ },
+ "rn": {
+ "english_name": "Kirundi",
+ "name": "Ikirundi"
+ },
+ "ro": {
+ "english_name": "Romanian",
+ "name": "Rom\u00e2n\u0103"
+ },
+ "roa-rup": {
+ "english_name": "Aromanian",
+ "name": "Arm\u00e3neashce"
+ },
+ "roa-tara": {
+ "english_name": "Tarantino",
+ "name": "Tarand\u00edne"
+ },
+ "ru": {
+ "english_name": "Russian",
+ "name": "\u0420\u0443\u0441\u0441\u043a\u0438\u0439"
+ },
+ "rue": {
+ "english_name": "Rusyn",
+ "name": "\u0420\u0443\u0441\u0438\u043d\u044c\u0441\u043a\u044b\u0439"
+ },
+ "rw": {
+ "english_name": "Kinyarwanda",
+ "name": "Ikinyarwanda"
+ },
+ "sa": {
+ "english_name": "Sanskrit",
+ "name": "\u0938\u0902\u0938\u094d\u0915\u0943\u0924\u092e\u094d"
+ },
+ "sah": {
+ "english_name": "Sakha",
+ "name": "\u0421\u0430\u0445\u0430 \u0442\u044b\u043b\u0430 (Saxa Tyla)"
+ },
+ "sat": {
+ "english_name": "Santali",
+ "name": "\u1c65\u1c5f\u1c71\u1c5b\u1c5f\u1c72\u1c64"
+ },
+ "sc": {
+ "english_name": "Sardinian",
+ "name": "Sardu"
+ },
+ "scn": {
+ "english_name": "Sicilian",
+ "name": "Sicilianu"
+ },
+ "sco": {
+ "english_name": "Scots",
+ "name": "Scots"
+ },
+ "sd": {
+ "english_name": "Sindhi",
+ "name": "\u0633\u0646\u068c\u064a\u060c \u0633\u0646\u062f\u06be\u06cc \u060c \u0938\u093f\u0928\u094d\u0927"
+ },
+ "se": {
+ "english_name": "Northern Sami",
+ "name": "S\u00e1megiella"
+ },
+ "sg": {
+ "english_name": "Sango",
+ "name": "S\u00e4ng\u00f6"
+ },
+ "sh": {
+ "english_name": "Serbo-Croatian",
+ "name": "Srpskohrvatski / \u0421\u0440\u043f\u0441\u043a\u043e\u0445\u0440\u0432\u0430\u0442\u0441\u043a\u0438"
+ },
+ "shn": {
+ "english_name": "Shan",
+ "name": "\u101c\u102d\u1075\u103a\u1088\u1010\u1086\u1038"
+ },
+ "si": {
+ "english_name": "Sinhalese",
+ "name": "\u0dc3\u0dd2\u0d82\u0dc4\u0dbd"
+ },
+ "simple": {
+ "english_name": "Simple English",
+ "name": "Simple English"
+ },
+ "sk": {
+ "english_name": "Slovak",
+ "name": "Sloven\u010dina"
+ },
+ "skr": {
+ "english_name": "Saraiki",
+ "name": "\u0633\u0631\u0627\u0626\u06cc\u06a9\u06cc"
+ },
+ "sl": {
+ "english_name": "Slovenian",
+ "name": "Sloven\u0161\u010dina"
+ },
+ "sm": {
+ "english_name": "Samoan",
+ "name": "Gagana Samoa"
+ },
+ "smn": {
+ "english_name": "Inari Sami",
+ "name": "Anar\u00e2\u0161kiel\u00e2"
+ },
+ "sn": {
+ "english_name": "Shona",
+ "name": "chiShona"
+ },
+ "so": {
+ "english_name": "Somali",
+ "name": "Soomaali"
+ },
+ "sq": {
+ "english_name": "Albanian",
+ "name": "Shqip"
+ },
+ "sr": {
+ "english_name": "Serbian",
+ "name": "\u0421\u0440\u043f\u0441\u043a\u0438 / Srpski"
+ },
+ "srn": {
+ "english_name": "Sranan",
+ "name": "Sranantongo"
+ },
+ "ss": {
+ "english_name": "Swati",
+ "name": "SiSwati"
+ },
+ "st": {
+ "english_name": "Sesotho",
+ "name": "Sesotho"
+ },
+ "stq": {
+ "english_name": "Saterland Frisian",
+ "name": "Seeltersk"
+ },
+ "su": {
+ "english_name": "Sundanese",
+ "name": "Basa Sunda"
+ },
+ "sv": {
+ "english_name": "Swedish",
+ "name": "Svenska"
+ },
+ "sw": {
+ "english_name": "Swahili",
+ "name": "Kiswahili"
+ },
+ "szl": {
+ "english_name": "Silesian",
+ "name": "\u015al\u016fnski"
+ },
+ "szy": {
+ "english_name": "Sakizaya",
+ "name": "Sakizaya"
+ },
+ "ta": {
+ "english_name": "Tamil",
+ "name": "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd"
+ },
+ "tay": {
+ "english_name": "Tayal",
+ "name": "Tayal"
+ },
+ "tcy": {
+ "english_name": "Tulu",
+ "name": "\u0ca4\u0cc1\u0cb3\u0cc1"
+ },
+ "te": {
+ "english_name": "Telugu",
+ "name": "\u0c24\u0c46\u0c32\u0c41\u0c17\u0c41"
+ },
+ "tet": {
+ "english_name": "Tetum",
+ "name": "Tetun"
+ },
+ "tg": {
+ "english_name": "Tajik",
+ "name": "\u0422\u043e\u04b7\u0438\u043a\u04e3"
+ },
+ "th": {
+ "english_name": "Thai",
+ "name": "\u0e44\u0e17\u0e22"
+ },
+ "ti": {
+ "english_name": "Tigrinya",
+ "name": "\u1275\u130d\u122d\u129b"
+ },
+ "tk": {
+ "english_name": "Turkmen",
+ "name": "T\u00fcrkmen"
+ },
+ "tl": {
+ "english_name": "Tagalog",
+ "name": "Tagalog"
+ },
+ "tn": {
+ "english_name": "Tswana",
+ "name": "Setswana"
+ },
+ "to": {
+ "english_name": "Tongan",
+ "name": "faka Tonga"
+ },
+ "tpi": {
+ "english_name": "Tok Pisin",
+ "name": "Tok Pisin"
+ },
+ "tr": {
+ "english_name": "Turkish",
+ "name": "T\u00fcrk\u00e7e"
+ },
+ "trv": {
+ "english_name": "Seediq",
+ "name": "Taroko"
+ },
+ "ts": {
+ "english_name": "Tsonga",
+ "name": "Xitsonga"
+ },
+ "tt": {
+ "english_name": "Tatar",
+ "name": "Tatar\u00e7a / \u0422\u0430\u0442\u0430\u0440\u0447\u0430"
+ },
+ "tum": {
+ "english_name": "Tumbuka",
+ "name": "chiTumbuka"
+ },
+ "tw": {
+ "english_name": "Twi",
+ "name": "Twi"
+ },
+ "ty": {
+ "english_name": "Tahitian",
+ "name": "Reo M\u0101`ohi"
+ },
+ "tyv": {
+ "english_name": "Tuvan",
+ "name": "\u0422\u044b\u0432\u0430"
+ },
+ "udm": {
+ "english_name": "Udmurt",
+ "name": "\u0423\u0434\u043c\u0443\u0440\u0442 \u043a\u044b\u043b"
+ },
+ "ug": {
+ "english_name": "Uyghur",
+ "name": "\u0626\u06c7\u064a\u063a\u06c7\u0631 \u062a\u0649\u0644\u0649"
+ },
+ "uk": {
+ "english_name": "Ukrainian",
+ "name": "\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"
+ },
+ "ur": {
+ "english_name": "Urdu",
+ "name": "\u0627\u0631\u062f\u0648"
+ },
+ "uz": {
+ "english_name": "Uzbek",
+ "name": "O\u2018zbek"
+ },
+ "ve": {
+ "english_name": "Venda",
+ "name": "Tshivenda"
+ },
+ "vec": {
+ "english_name": "Venetian",
+ "name": "V\u00e8neto"
+ },
+ "vep": {
+ "english_name": "Vepsian",
+ "name": "Veps\u00e4n"
+ },
+ "vi": {
+ "english_name": "Vietnamese",
+ "name": "Ti\u1ebfng Vi\u1ec7t"
+ },
+ "vls": {
+ "english_name": "West Flemish",
+ "name": "West-Vlams"
+ },
+ "vo": {
+ "english_name": "Volap\u00fck",
+ "name": "Volap\u00fck"
+ },
+ "wa": {
+ "english_name": "Walloon",
+ "name": "Walon"
+ },
+ "war": {
+ "english_name": "Waray-Waray",
+ "name": "Winaray"
+ },
+ "wo": {
+ "english_name": "Wolof",
+ "name": "Wolof"
+ },
+ "wuu": {
+ "english_name": "Wu",
+ "name": "\u5434\u8bed"
+ },
+ "xal": {
+ "english_name": "Kalmyk",
+ "name": "\u0425\u0430\u043b\u044c\u043c\u0433"
+ },
+ "xh": {
+ "english_name": "Xhosa",
+ "name": "isiXhosa"
+ },
+ "xmf": {
+ "english_name": "Mingrelian",
+ "name": "\u10db\u10d0\u10e0\u10d2\u10d0\u10da\u10e3\u10e0\u10d8 (Margaluri)"
+ },
+ "yi": {
+ "english_name": "Yiddish",
+ "name": "\u05d9\u05d9\u05b4\u05d3\u05d9\u05e9"
+ },
+ "yo": {
+ "english_name": "Yoruba",
+ "name": "Yor\u00f9b\u00e1"
+ },
+ "za": {
+ "english_name": "Zhuang",
+ "name": "Cuengh"
+ },
+ "zea": {
+ "english_name": "Zeelandic",
+ "name": "Ze\u00eauws"
+ },
+ "zh": {
+ "english_name": "Chinese",
+ "name": "\u4e2d\u6587"
+ },
+ "zh-classical": {
+ "english_name": "Classical Chinese",
+ "name": "\u53e4\u6587 / \u6587\u8a00\u6587"
+ },
+ "zh-min-nan": {
+ "english_name": "Min Nan",
+ "name": "B\u00e2n-l\u00e2m-g\u00fa"
+ },
+ "zh-yue": {
+ "english_name": "Cantonese",
+ "name": "\u7cb5\u8a9e"
+ },
+ "zu": {
+ "english_name": "Zulu",
+ "name": "isiZulu"
+ }
+ },
+ "wikipedia": {
+ "ab": {
+ "english_name": "Abkhazian",
+ "name": "\u0410\u0525\u0441\u0443\u0430"
+ },
+ "ace": {
+ "english_name": "Acehnese",
+ "name": "Basa Ac\u00e8h"
+ },
+ "ady": {
+ "english_name": "Adyghe",
+ "name": "\u0410\u0434\u044b\u0433\u044d\u0431\u0437\u044d"
+ },
+ "af": {
+ "english_name": "Afrikaans",
+ "name": "Afrikaans"
+ },
+ "ak": {
+ "english_name": "Akan",
+ "name": "Akana"
+ },
+ "als": {
+ "english_name": "Alemannic",
+ "name": "Alemannisch"
+ },
+ "alt": {
+ "english_name": "Southern Altai",
+ "name": "\u0410\u043b\u0442\u0430\u0439"
+ },
+ "am": {
+ "english_name": "Amharic",
+ "name": "\u12a0\u121b\u122d\u129b"
+ },
+ "an": {
+ "english_name": "Aragonese",
+ "name": "Aragon\u00e9s"
+ },
+ "ang": {
+ "english_name": "Anglo-Saxon",
+ "name": "Englisc"
+ },
+ "ar": {
+ "english_name": "Arabic",
+ "name": "\u0627\u0644\u0639\u0631\u0628\u064a\u0629"
+ },
+ "arc": {
+ "english_name": "Aramaic",
+ "name": "\u0710\u072a\u0721\u071d\u0710"
+ },
+ "ary": {
+ "english_name": "Moroccan Arabic",
+ "name": "\u0627\u0644\u062f\u0627\u0631\u062c\u0629"
+ },
+ "arz": {
+ "english_name": "Egyptian Arabic",
+ "name": "\u0645\u0635\u0631\u0649 (Ma\u1e63ri)"
+ },
+ "as": {
+ "english_name": "Assamese",
+ "name": "\u0985\u09b8\u09ae\u09c0\u09af\u09bc\u09be"
+ },
+ "ast": {
+ "english_name": "Asturian",
+ "name": "Asturianu"
+ },
+ "atj": {
+ "english_name": "Atikamekw",
+ "name": "Atikamekw"
+ },
+ "av": {
+ "english_name": "Avar",
+ "name": "\u0410\u0432\u0430\u0440"
+ },
+ "avk": {
+ "english_name": "Kotava",
+ "name": "Kotava"
+ },
+ "awa": {
+ "english_name": "Awadhi",
+ "name": "\u0905\u0935\u0927\u0940"
+ },
+ "ay": {
+ "english_name": "Aymara",
+ "name": "Aymar"
+ },
+ "az": {
+ "english_name": "Azerbaijani",
+ "name": "Az\u0259rbaycanca"
+ },
+ "azb": {
+ "english_name": "South Azerbaijani",
+ "name": "\u062a\u06c6\u0631\u06a9\u062c\u0647"
+ },
+ "ba": {
+ "english_name": "Bashkir",
+ "name": "\u0411\u0430\u0448\u04a1\u043e\u0440\u0442"
+ },
+ "ban": {
+ "english_name": "Balinese",
+ "name": "Bali"
+ },
+ "bar": {
+ "english_name": "Bavarian",
+ "name": "Boarisch"
+ },
+ "bat-smg": {
+ "english_name": "Samogitian",
+ "name": "\u017demait\u0117\u0161ka"
+ },
+ "bcl": {
+ "english_name": "Central Bicolano",
+ "name": "Bikol"
+ },
+ "be": {
+ "english_name": "Belarusian",
+ "name": "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f"
+ },
+ "be-tarask": {
+ "english_name": "Belarusian (Tara\u0161kievica)",
+ "name": "\u0411\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f (\u0442\u0430\u0440\u0430\u0448\u043a\u0435\u0432\u0456\u0446\u0430)"
+ },
+ "bg": {
+ "english_name": "Bulgarian",
+ "name": "\u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438"
+ },
+ "bh": {
+ "english_name": "Bhojpuri",
+ "name": "\u092d\u094b\u091c\u092a\u0941\u0930\u0940"
+ },
+ "bi": {
+ "english_name": "Bislama",
+ "name": "Bislama"
+ },
+ "bjn": {
+ "english_name": "Banjar",
+ "name": "Bahasa Banjar"
+ },
+ "bm": {
+ "english_name": "Bambara",
+ "name": "Bamanankan"
+ },
+ "bn": {
+ "english_name": "Bengali",
+ "name": "\u09ac\u09be\u0982\u09b2\u09be"
+ },
+ "bo": {
+ "english_name": "Tibetan",
+ "name": "\u0f56\u0f7c\u0f51\u0f0b\u0f66\u0f90\u0f51"
+ },
+ "bpy": {
+ "english_name": "Bishnupriya Manipuri",
+ "name": "\u0987\u09ae\u09be\u09b0 \u09a0\u09be\u09b0/\u09ac\u09bf\u09b7\u09cd\u09a3\u09c1\u09aa\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u09ae\u09a3\u09bf\u09aa\u09c1\u09b0\u09c0"
+ },
+ "br": {
+ "english_name": "Breton",
+ "name": "Brezhoneg"
+ },
+ "bs": {
+ "english_name": "Bosnian",
+ "name": "Bosanski"
+ },
+ "bug": {
+ "english_name": "Buginese",
+ "name": "Basa Ugi"
+ },
+ "bxr": {
+ "english_name": "Buryat",
+ "name": "\u0411\u0443\u0440\u044f\u0430\u0434"
+ },
+ "ca": {
+ "english_name": "Catalan",
+ "name": "Catal\u00e0"
+ },
+ "cbk-zam": {
+ "english_name": "Zamboanga Chavacano",
+ "name": "Chavacano de Zamboanga"
+ },
+ "cdo": {
+ "english_name": "Min Dong",
+ "name": "M\u00ecng-d\u0115\u0324ng-ng\u1e73\u0304"
+ },
+ "ce": {
+ "english_name": "Chechen",
+ "name": "\u041d\u043e\u0445\u0447\u0438\u0439\u043d"
+ },
+ "ceb": {
+ "english_name": "Cebuano",
+ "name": "Sinugboanong Binisaya"
+ },
+ "ch": {
+ "english_name": "Chamorro",
+ "name": "Chamoru"
+ },
+ "chr": {
+ "english_name": "Cherokee",
+ "name": "\u13e3\u13b3\u13a9"
+ },
+ "chy": {
+ "english_name": "Cheyenne",
+ "name": "Tsets\u00eahest\u00e2hese"
+ },
+ "ckb": {
+ "english_name": "Sorani",
+ "name": "Soran\u00ee / \u06a9\u0648\u0631\u062f\u06cc"
+ },
+ "co": {
+ "english_name": "Corsican",
+ "name": "Corsu"
+ },
+ "cr": {
+ "english_name": "Cree",
+ "name": "Nehiyaw"
+ },
+ "crh": {
+ "english_name": "Crimean Tatar",
+ "name": "Q\u0131r\u0131mtatarca"
+ },
+ "cs": {
+ "english_name": "Czech",
+ "name": "\u010ce\u0161tina"
+ },
+ "csb": {
+ "english_name": "Kashubian",
+ "name": "Kasz\u00ebbsczi"
+ },
+ "cu": {
+ "english_name": "Old Church Slavonic",
+ "name": "\u0421\u043b\u043e\u0432\u0463\u043d\u044c\u0441\u043a\u044a"
+ },
+ "cv": {
+ "english_name": "Chuvash",
+ "name": "\u0427\u0103\u0432\u0430\u0448"
+ },
+ "cy": {
+ "english_name": "Welsh",
+ "name": "Cymraeg"
+ },
+ "da": {
+ "english_name": "Danish",
+ "name": "Dansk"
+ },
+ "de": {
+ "english_name": "German",
+ "name": "Deutsch"
+ },
+ "din": {
+ "english_name": "Dinka",
+ "name": "Thu\u0254\u014bj\u00e4\u014b"
+ },
+ "diq": {
+ "english_name": "Zazaki",
+ "name": "Zazaki"
+ },
+ "dsb": {
+ "english_name": "Lower Sorbian",
+ "name": "Dolnoserbski"
+ },
+ "dty": {
+ "english_name": "Doteli",
+ "name": "\u0921\u094b\u091f\u0947\u0932\u0940"
+ },
+ "dv": {
+ "english_name": "Divehi",
+ "name": "\u078b\u07a8\u0788\u07ac\u0780\u07a8\u0784\u07a6\u0790\u07b0"
+ },
+ "dz": {
+ "english_name": "Dzongkha",
+ "name": "\u0f47\u0f7c\u0f44\u0f0b\u0f41"
+ },
+ "ee": {
+ "english_name": "Ewe",
+ "name": "E\u028begbe"
+ },
+ "el": {
+ "english_name": "Greek",
+ "name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"
+ },
+ "eml": {
+ "english_name": "Emilian-Romagnol",
+ "name": "Emili\u00e0n e rumagn\u00f2l"
+ },
+ "en": {
+ "english_name": "English",
+ "name": "English"
+ },
+ "eo": {
+ "english_name": "Esperanto",
+ "name": "Esperanto"
+ },
+ "es": {
+ "english_name": "Spanish",
+ "name": "Espa\u00f1ol"
+ },
+ "et": {
+ "english_name": "Estonian",
+ "name": "Eesti"
+ },
+ "eu": {
+ "english_name": "Basque",
+ "name": "Euskara"
+ },
+ "ext": {
+ "english_name": "Extremaduran",
+ "name": "Estreme\u00f1u"
+ },
+ "fa": {
+ "english_name": "Persian",
+ "name": "\u0641\u0627\u0631\u0633\u06cc"
+ },
+ "ff": {
+ "english_name": "Fula",
+ "name": "Fulfulde"
+ },
+ "fi": {
+ "english_name": "Finnish",
+ "name": "Suomi"
+ },
+ "fiu-vro": {
+ "english_name": "V\u00f5ro",
+ "name": "V\u00f5ro"
+ },
+ "fj": {
+ "english_name": "Fijian",
+ "name": "Na Vosa Vakaviti"
+ },
+ "fo": {
+ "english_name": "Faroese",
+ "name": "F\u00f8royskt"
+ },
+ "fr": {
+ "english_name": "French",
+ "name": "Fran\u00e7ais"
+ },
+ "frp": {
+ "english_name": "Franco-Proven\u00e7al",
+ "name": "Arpetan"
+ },
+ "frr": {
+ "english_name": "North Frisian",
+ "name": "Nordfriisk"
+ },
+ "fur": {
+ "english_name": "Friulian",
+ "name": "Furlan"
+ },
+ "fy": {
+ "english_name": "West Frisian",
+ "name": "Frysk"
+ },
+ "ga": {
+ "english_name": "Irish",
+ "name": "Gaeilge"
+ },
+ "gag": {
+ "english_name": "Gagauz",
+ "name": "Gagauz"
+ },
+ "gan": {
+ "english_name": "Gan",
+ "name": "\u8d1b\u8a9e"
+ },
+ "gcr": {
+ "english_name": "Guianan Creole",
+ "name": "Kriy\u00f2l Gwiyannen"
+ },
+ "gd": {
+ "english_name": "Scottish Gaelic",
+ "name": "G\u00e0idhlig"
+ },
+ "gl": {
+ "english_name": "Galician",
+ "name": "Galego"
+ },
+ "glk": {
+ "english_name": "Gilaki",
+ "name": "\u06af\u06cc\u0644\u06a9\u06cc"
+ },
+ "gn": {
+ "english_name": "Guarani",
+ "name": "Ava\u00f1e'\u1ebd"
+ },
+ "gom": {
+ "english_name": "Goan Konkani",
+ "name": "\u0917\u094b\u0902\u092f\u091a\u0940 \u0915\u094b\u0902\u0915\u0923\u0940 / G\u00f5ychi Konknni"
+ },
+ "gor": {
+ "english_name": "Gorontalo",
+ "name": "Hulontalo"
+ },
+ "got": {
+ "english_name": "Gothic",
+ "name": "\ud800\udf32\ud800\udf3f\ud800\udf44\ud800\udf39\ud800\udf43\ud800\udf3a"
+ },
+ "gu": {
+ "english_name": "Gujarati",
+ "name": "\u0a97\u0ac1\u0a9c\u0ab0\u0abe\u0aa4\u0ac0"
+ },
+ "gv": {
+ "english_name": "Manx",
+ "name": "Gaelg"
+ },
+ "ha": {
+ "english_name": "Hausa",
+ "name": "Hausa / \u0647\u064e\u0648\u064f\u0633\u064e"
+ },
+ "hak": {
+ "english_name": "Hakka",
+ "name": "Hak-k\u00e2-fa / \u5ba2\u5bb6\u8a71"
+ },
+ "haw": {
+ "english_name": "Hawaiian",
+ "name": "Hawai\u02bbi"
+ },
+ "he": {
+ "english_name": "Hebrew",
+ "name": "\u05e2\u05d1\u05e8\u05d9\u05ea"
+ },
+ "hi": {
+ "english_name": "Hindi",
+ "name": "\u0939\u093f\u0928\u094d\u0926\u0940"
+ },
+ "hif": {
+ "english_name": "Fiji Hindi",
+ "name": "Fiji Hindi"
+ },
+ "hr": {
+ "english_name": "Croatian",
+ "name": "Hrvatski"
+ },
+ "hsb": {
+ "english_name": "Upper Sorbian",
+ "name": "Hornjoserbsce"
+ },
+ "ht": {
+ "english_name": "Haitian",
+ "name": "Kr\u00e8yol ayisyen"
+ },
+ "hu": {
+ "english_name": "Hungarian",
+ "name": "Magyar"
+ },
+ "hy": {
+ "english_name": "Armenian",
+ "name": "\u0540\u0561\u0575\u0565\u0580\u0565\u0576"
+ },
+ "hyw": {
+ "english_name": "Western Armenian",
+ "name": "\u0531\u0580\u0565\u0582\u0574\u057f\u0561\u0570\u0561\u0575\u0565\u0580\u0567\u0576"
+ },
+ "ia": {
+ "english_name": "Interlingua",
+ "name": "Interlingua"
+ },
+ "id": {
+ "english_name": "Indonesian",
+ "name": "Bahasa Indonesia"
+ },
+ "ie": {
+ "english_name": "Interlingue",
+ "name": "Interlingue"
+ },
+ "ig": {
+ "english_name": "Igbo",
+ "name": "\u00ccgb\u00f2"
+ },
+ "ik": {
+ "english_name": "Inupiak",
+ "name": "I\u00f1upiatun"
+ },
+ "ilo": {
+ "english_name": "Ilokano",
+ "name": "Ilokano"
+ },
+ "inh": {
+ "english_name": "Ingush",
+ "name": "\u0413\u04c0\u0430\u043b\u0433\u04c0\u0430\u0439"
+ },
+ "io": {
+ "english_name": "Ido",
+ "name": "Ido"
+ },
+ "is": {
+ "english_name": "Icelandic",
+ "name": "\u00cdslenska"
+ },
+ "it": {
+ "english_name": "Italian",
+ "name": "Italiano"
+ },
+ "iu": {
+ "english_name": "Inuktitut",
+ "name": "\u1403\u14c4\u1483\u144e\u1450\u1466"
+ },
+ "ja": {
+ "english_name": "Japanese",
+ "name": "\u65e5\u672c\u8a9e"
+ },
+ "jam": {
+ "english_name": "Jamaican Patois",
+ "name": "Jumiekan Kryuol"
+ },
+ "jbo": {
+ "english_name": "Lojban",
+ "name": "Lojban"
+ },
+ "jv": {
+ "english_name": "Javanese",
+ "name": "Basa Jawa"
+ },
+ "ka": {
+ "english_name": "Georgian",
+ "name": "\u10e5\u10d0\u10e0\u10d7\u10e3\u10da\u10d8"
+ },
+ "kaa": {
+ "english_name": "Karakalpak",
+ "name": "Qaraqalpaqsha"
+ },
+ "kab": {
+ "english_name": "Kabyle",
+ "name": "Taqbaylit"
+ },
+ "kbd": {
+ "english_name": "Kabardian Circassian",
+ "name": "\u0410\u0434\u044b\u0433\u044d\u0431\u0437\u044d (Adighabze)"
+ },
+ "kbp": {
+ "english_name": "Kabiye",
+ "name": "Kab\u0269y\u025b"
+ },
+ "kg": {
+ "english_name": "Kongo",
+ "name": "Kik\u00f4ngo"
+ },
+ "ki": {
+ "english_name": "Kikuyu",
+ "name": "G\u0129k\u0169y\u0169"
+ },
+ "kk": {
+ "english_name": "Kazakh",
+ "name": "\u049a\u0430\u0437\u0430\u049b\u0448\u0430"
+ },
+ "kl": {
+ "english_name": "Greenlandic",
+ "name": "Kalaallisut"
+ },
+ "km": {
+ "english_name": "Khmer",
+ "name": "\u1797\u17b6\u179f\u17b6\u1781\u17d2\u1798\u17c2\u179a"
+ },
+ "kn": {
+ "english_name": "Kannada",
+ "name": "\u0c95\u0ca8\u0ccd\u0ca8\u0ca1"
+ },
+ "ko": {
+ "english_name": "Korean",
+ "name": "\ud55c\uad6d\uc5b4"
+ },
+ "koi": {
+ "english_name": "Komi-Permyak",
+ "name": "\u041f\u0435\u0440\u0435\u043c \u041a\u043e\u043c\u0438 (Perem Komi)"
+ },
+ "krc": {
+ "english_name": "Karachay-Balkar",
+ "name": "\u041a\u044a\u0430\u0440\u0430\u0447\u0430\u0439-\u041c\u0430\u043b\u043a\u044a\u0430\u0440 (Qarachay-Malqar)"
+ },
+ "ks": {
+ "english_name": "Kashmiri",
+ "name": "\u0915\u0936\u094d\u092e\u0940\u0930\u0940 / \u0643\u0634\u0645\u064a\u0631\u064a"
+ },
+ "ksh": {
+ "english_name": "Ripuarian",
+ "name": "Ripoarisch"
+ },
+ "ku": {
+ "english_name": "Kurdish",
+ "name": "Kurd\u00ee / \u0643\u0648\u0631\u062f\u06cc"
+ },
+ "kv": {
+ "english_name": "Komi",
+ "name": "\u041a\u043e\u043c\u0438"
+ },
+ "kw": {
+ "english_name": "Cornish",
+ "name": "Kernowek/Karnuack"
+ },
+ "ky": {
+ "english_name": "Kirghiz",
+ "name": "\u041a\u044b\u0440\u0433\u044b\u0437\u0447\u0430"
+ },
+ "la": {
+ "english_name": "Latin",
+ "name": "Latina"
+ },
+ "lad": {
+ "english_name": "Ladino",
+ "name": "Dzhudezmo"
+ },
+ "lb": {
+ "english_name": "Luxembourgish",
+ "name": "L\u00ebtzebuergesch"
+ },
+ "lbe": {
+ "english_name": "Lak",
+ "name": "\u041b\u0430\u043a\u043a\u0443"
+ },
+ "lez": {
+ "english_name": "Lezgian",
+ "name": "\u041b\u0435\u0437\u0433\u0438 \u0447\u0406\u0430\u043b (Lezgi \u010d\u2019al)"
+ },
+ "lfn": {
+ "english_name": "Lingua Franca Nova",
+ "name": "Lingua franca nova"
+ },
+ "lg": {
+ "english_name": "Luganda",
+ "name": "Luganda"
+ },
+ "li": {
+ "english_name": "Limburgish",
+ "name": "Limburgs"
+ },
+ "lij": {
+ "english_name": "Ligurian",
+ "name": "L\u00ecgure"
+ },
+ "lld": {
+ "english_name": "Ladin",
+ "name": "Lingaz"
+ },
+ "lmo": {
+ "english_name": "Lombard",
+ "name": "Lumbaart"
+ },
+ "ln": {
+ "english_name": "Lingala",
+ "name": "Lingala"
+ },
+ "lo": {
+ "english_name": "Lao",
+ "name": "\u0ea5\u0eb2\u0ea7"
+ },
+ "lt": {
+ "english_name": "Lithuanian",
+ "name": "Lietuvi\u0173"
+ },
+ "ltg": {
+ "english_name": "Latgalian",
+ "name": "Latga\u013cu"
+ },
+ "lv": {
+ "english_name": "Latvian",
+ "name": "Latvie\u0161u"
+ },
+ "mad": {
+ "english_name": "Madurese",
+ "name": "Madhur\u00e2"
+ },
+ "mai": {
+ "english_name": "Maithili",
+ "name": "\u092e\u0948\u0925\u093f\u0932\u0940"
+ },
+ "map-bms": {
+ "english_name": "Banyumasan",
+ "name": "Basa Banyumasan"
+ },
+ "mdf": {
+ "english_name": "Moksha",
+ "name": "\u041c\u043e\u043a\u0448\u0435\u043d\u044c (Mokshanj K\u00e4lj)"
+ },
+ "mg": {
+ "english_name": "Malagasy",
+ "name": "Malagasy"
+ },
+ "mhr": {
+ "english_name": "Meadow Mari",
+ "name": "\u041e\u043b\u044b\u043a \u041c\u0430\u0440\u0438\u0439 (Olyk Marij)"
+ },
+ "mi": {
+ "english_name": "Maori",
+ "name": "M\u0101ori"
+ },
+ "min": {
+ "english_name": "Minangkabau",
+ "name": "Minangkabau"
+ },
+ "mk": {
+ "english_name": "Macedonian",
+ "name": "\u041c\u0430\u043a\u0435\u0434\u043e\u043d\u0441\u043a\u0438"
+ },
+ "ml": {
+ "english_name": "Malayalam",
+ "name": "\u0d2e\u0d32\u0d2f\u0d3e\u0d33\u0d02"
+ },
+ "mn": {
+ "english_name": "Mongolian",
+ "name": "\u041c\u043e\u043d\u0433\u043e\u043b"
+ },
+ "mni": {
+ "english_name": "Meitei",
+ "name": "\uabc3\uabe4\uabc7\uabe9\uabc2\uabe3\uabdf"
+ },
+ "mnw": {
+ "english_name": "Mon",
+ "name": "\u1019\u1014\u103a"
+ },
+ "mr": {
+ "english_name": "Marathi",
+ "name": "\u092e\u0930\u093e\u0920\u0940"
+ },
+ "mrj": {
+ "english_name": "Hill Mari",
+ "name": "\u041a\u044b\u0440\u044b\u043a \u041c\u0430\u0440\u044b (Kyryk Mary)"
+ },
+ "ms": {
+ "english_name": "Malay",
+ "name": "Bahasa Melayu"
+ },
+ "mt": {
+ "english_name": "Maltese",
+ "name": "Malti"
+ },
+ "mwl": {
+ "english_name": "Mirandese",
+ "name": "Mirand\u00e9s"
+ },
+ "my": {
+ "english_name": "Burmese",
+ "name": "\u1019\u103c\u1014\u103a\u1019\u102c\u1018\u102c\u101e\u102c"
+ },
+ "myv": {
+ "english_name": "Erzya",
+ "name": "\u042d\u0440\u0437\u044f\u043d\u044c (Erzjanj Kelj)"
+ },
+ "mzn": {
+ "english_name": "Mazandarani",
+ "name": "\u0645\u064e\u0632\u0650\u0631\u0648\u0646\u064a"
+ },
+ "na": {
+ "english_name": "Nauruan",
+ "name": "dorerin Naoero"
+ },
+ "nah": {
+ "english_name": "Nahuatl",
+ "name": "N\u0101huatl"
+ },
+ "nap": {
+ "english_name": "Neapolitan",
+ "name": "Nnapulitano"
+ },
+ "nds": {
+ "english_name": "Low Saxon",
+ "name": "Plattd\u00fc\u00fctsch"
+ },
+ "nds-nl": {
+ "english_name": "Dutch Low Saxon",
+ "name": "Nedersaksisch"
+ },
+ "ne": {
+ "english_name": "Nepali",
+ "name": "\u0928\u0947\u092a\u093e\u0932\u0940"
+ },
+ "new": {
+ "english_name": "Newar",
+ "name": "\u0928\u0947\u092a\u093e\u0932 \u092d\u093e\u0937\u093e"
+ },
+ "nia": {
+ "english_name": "Nias",
+ "name": "Li Niha"
+ },
+ "nl": {
+ "english_name": "Dutch",
+ "name": "Nederlands"
+ },
+ "nn": {
+ "english_name": "Norwegian (Nynorsk)",
+ "name": "Nynorsk"
+ },
+ "no": {
+ "english_name": "Norwegian (Bokm\u00e5l)",
+ "name": "Norsk (Bokm\u00e5l)"
+ },
+ "nov": {
+ "english_name": "Novial",
+ "name": "Novial"
+ },
+ "nqo": {
+ "english_name": "N\u2019Ko",
+ "name": "\u07d2\u07de\u07cf"
+ },
+ "nrm": {
+ "english_name": "Norman",
+ "name": "Nouormand/Normaund"
+ },
+ "nso": {
+ "english_name": "Northern Sotho",
+ "name": "Sepedi"
+ },
+ "nv": {
+ "english_name": "Navajo",
+ "name": "Din\u00e9 bizaad"
+ },
+ "ny": {
+ "english_name": "Chichewa",
+ "name": "Chichewa"
+ },
+ "oc": {
+ "english_name": "Occitan",
+ "name": "Occitan"
+ },
+ "olo": {
+ "english_name": "Livvi-Karelian",
+ "name": "Karjalan"
+ },
+ "om": {
+ "english_name": "Oromo",
+ "name": "Oromoo"
+ },
+ "or": {
+ "english_name": "Oriya",
+ "name": "\u0b13\u0b21\u0b3c\u0b3f\u0b06"
+ },
+ "os": {
+ "english_name": "Ossetian",
+ "name": "\u0418\u0440\u043e\u043d\u0430\u0443"
+ },
+ "pa": {
+ "english_name": "Punjabi",
+ "name": "\u0a2a\u0a70\u0a1c\u0a3e\u0a2c\u0a40"
+ },
+ "pag": {
+ "english_name": "Pangasinan",
+ "name": "Pangasinan"
+ },
+ "pam": {
+ "english_name": "Kapampangan",
+ "name": "Kapampangan"
+ },
+ "pap": {
+ "english_name": "Papiamentu",
+ "name": "Papiamentu"
+ },
+ "pcd": {
+ "english_name": "Picard",
+ "name": "Picard"
+ },
+ "pdc": {
+ "english_name": "Pennsylvania German",
+ "name": "Deitsch"
+ },
+ "pfl": {
+ "english_name": "Palatinate German",
+ "name": "P\u00e4lzisch"
+ },
+ "pi": {
+ "english_name": "Pali",
+ "name": "\u092a\u093e\u0934\u093f"
+ },
+ "pih": {
+ "english_name": "Norfolk",
+ "name": "Norfuk"
+ },
+ "pl": {
+ "english_name": "Polish",
+ "name": "Polski"
+ },
+ "pms": {
+ "english_name": "Piedmontese",
+ "name": "Piemont\u00e8is"
+ },
+ "pnb": {
+ "english_name": "Western Punjabi",
+ "name": "\u0634\u0627\u06c1 \u0645\u06a9\u06be\u06cc \u067e\u0646\u062c\u0627\u0628\u06cc (Sh\u0101hmukh\u012b Pa\u00f1j\u0101b\u012b)"
+ },
+ "pnt": {
+ "english_name": "Pontic",
+ "name": "\u03a0\u03bf\u03bd\u03c4\u03b9\u03b1\u03ba\u03ac"
+ },
+ "ps": {
+ "english_name": "Pashto",
+ "name": "\u067e\u069a\u062a\u0648"
+ },
+ "pt": {
+ "english_name": "Portuguese",
+ "name": "Portugu\u00eas"
+ },
+ "qu": {
+ "english_name": "Quechua",
+ "name": "Runa Simi"
+ },
+ "rm": {
+ "english_name": "Romansh",
+ "name": "Rumantsch"
+ },
+ "rmy": {
+ "english_name": "Romani",
+ "name": "romani - \u0930\u094b\u092e\u093e\u0928\u0940"
+ },
+ "rn": {
+ "english_name": "Kirundi",
+ "name": "Ikirundi"
+ },
+ "ro": {
+ "english_name": "Romanian",
+ "name": "Rom\u00e2n\u0103"
+ },
+ "roa-rup": {
+ "english_name": "Aromanian",
+ "name": "Arm\u00e3neashce"
+ },
+ "roa-tara": {
+ "english_name": "Tarantino",
+ "name": "Tarand\u00edne"
+ },
+ "ru": {
+ "english_name": "Russian",
+ "name": "\u0420\u0443\u0441\u0441\u043a\u0438\u0439"
+ },
+ "rue": {
+ "english_name": "Rusyn",
+ "name": "\u0420\u0443\u0441\u0438\u043d\u044c\u0441\u043a\u044b\u0439"
+ },
+ "rw": {
+ "english_name": "Kinyarwanda",
+ "name": "Ikinyarwanda"
+ },
+ "sa": {
+ "english_name": "Sanskrit",
+ "name": "\u0938\u0902\u0938\u094d\u0915\u0943\u0924\u092e\u094d"
+ },
+ "sah": {
+ "english_name": "Sakha",
+ "name": "\u0421\u0430\u0445\u0430 \u0442\u044b\u043b\u0430 (Saxa Tyla)"
+ },
+ "sat": {
+ "english_name": "Santali",
+ "name": "\u1c65\u1c5f\u1c71\u1c5b\u1c5f\u1c72\u1c64"
+ },
+ "sc": {
+ "english_name": "Sardinian",
+ "name": "Sardu"
+ },
+ "scn": {
+ "english_name": "Sicilian",
+ "name": "Sicilianu"
+ },
+ "sco": {
+ "english_name": "Scots",
+ "name": "Scots"
+ },
+ "sd": {
+ "english_name": "Sindhi",
+ "name": "\u0633\u0646\u068c\u064a\u060c \u0633\u0646\u062f\u06be\u06cc \u060c \u0938\u093f\u0928\u094d\u0927"
+ },
+ "se": {
+ "english_name": "Northern Sami",
+ "name": "S\u00e1megiella"
+ },
+ "sg": {
+ "english_name": "Sango",
+ "name": "S\u00e4ng\u00f6"
+ },
+ "sh": {
+ "english_name": "Serbo-Croatian",
+ "name": "Srpskohrvatski / \u0421\u0440\u043f\u0441\u043a\u043e\u0445\u0440\u0432\u0430\u0442\u0441\u043a\u0438"
+ },
+ "shn": {
+ "english_name": "Shan",
+ "name": "\u101c\u102d\u1075\u103a\u1088\u1010\u1086\u1038"
+ },
+ "si": {
+ "english_name": "Sinhalese",
+ "name": "\u0dc3\u0dd2\u0d82\u0dc4\u0dbd"
+ },
+ "simple": {
+ "english_name": "Simple English",
+ "name": "Simple English"
+ },
+ "sk": {
+ "english_name": "Slovak",
+ "name": "Sloven\u010dina"
+ },
+ "skr": {
+ "english_name": "Saraiki",
+ "name": "\u0633\u0631\u0627\u0626\u06cc\u06a9\u06cc"
+ },
+ "sl": {
+ "english_name": "Slovenian",
+ "name": "Sloven\u0161\u010dina"
+ },
+ "sm": {
+ "english_name": "Samoan",
+ "name": "Gagana Samoa"
+ },
+ "smn": {
+ "english_name": "Inari Sami",
+ "name": "Anar\u00e2\u0161kiel\u00e2"
+ },
+ "sn": {
+ "english_name": "Shona",
+ "name": "chiShona"
+ },
+ "so": {
+ "english_name": "Somali",
+ "name": "Soomaali"
+ },
+ "sq": {
+ "english_name": "Albanian",
+ "name": "Shqip"
+ },
+ "sr": {
+ "english_name": "Serbian",
+ "name": "\u0421\u0440\u043f\u0441\u043a\u0438 / Srpski"
+ },
+ "srn": {
+ "english_name": "Sranan",
+ "name": "Sranantongo"
+ },
+ "ss": {
+ "english_name": "Swati",
+ "name": "SiSwati"
+ },
+ "st": {
+ "english_name": "Sesotho",
+ "name": "Sesotho"
+ },
+ "stq": {
+ "english_name": "Saterland Frisian",
+ "name": "Seeltersk"
+ },
+ "su": {
+ "english_name": "Sundanese",
+ "name": "Basa Sunda"
+ },
+ "sv": {
+ "english_name": "Swedish",
+ "name": "Svenska"
+ },
+ "sw": {
+ "english_name": "Swahili",
+ "name": "Kiswahili"
+ },
+ "szl": {
+ "english_name": "Silesian",
+ "name": "\u015al\u016fnski"
+ },
+ "szy": {
+ "english_name": "Sakizaya",
+ "name": "Sakizaya"
+ },
+ "ta": {
+ "english_name": "Tamil",
+ "name": "\u0ba4\u0bae\u0bbf\u0bb4\u0bcd"
+ },
+ "tay": {
+ "english_name": "Tayal",
+ "name": "Tayal"
+ },
+ "tcy": {
+ "english_name": "Tulu",
+ "name": "\u0ca4\u0cc1\u0cb3\u0cc1"
+ },
+ "te": {
+ "english_name": "Telugu",
+ "name": "\u0c24\u0c46\u0c32\u0c41\u0c17\u0c41"
+ },
+ "tet": {
+ "english_name": "Tetum",
+ "name": "Tetun"
+ },
+ "tg": {
+ "english_name": "Tajik",
+ "name": "\u0422\u043e\u04b7\u0438\u043a\u04e3"
+ },
+ "th": {
+ "english_name": "Thai",
+ "name": "\u0e44\u0e17\u0e22"
+ },
+ "ti": {
+ "english_name": "Tigrinya",
+ "name": "\u1275\u130d\u122d\u129b"
+ },
+ "tk": {
+ "english_name": "Turkmen",
+ "name": "T\u00fcrkmen"
+ },
+ "tl": {
+ "english_name": "Tagalog",
+ "name": "Tagalog"
+ },
+ "tn": {
+ "english_name": "Tswana",
+ "name": "Setswana"
+ },
+ "to": {
+ "english_name": "Tongan",
+ "name": "faka Tonga"
+ },
+ "tpi": {
+ "english_name": "Tok Pisin",
+ "name": "Tok Pisin"
+ },
+ "tr": {
+ "english_name": "Turkish",
+ "name": "T\u00fcrk\u00e7e"
+ },
+ "trv": {
+ "english_name": "Seediq",
+ "name": "Taroko"
+ },
+ "ts": {
+ "english_name": "Tsonga",
+ "name": "Xitsonga"
+ },
+ "tt": {
+ "english_name": "Tatar",
+ "name": "Tatar\u00e7a / \u0422\u0430\u0442\u0430\u0440\u0447\u0430"
+ },
+ "tum": {
+ "english_name": "Tumbuka",
+ "name": "chiTumbuka"
+ },
+ "tw": {
+ "english_name": "Twi",
+ "name": "Twi"
+ },
+ "ty": {
+ "english_name": "Tahitian",
+ "name": "Reo M\u0101`ohi"
+ },
+ "tyv": {
+ "english_name": "Tuvan",
+ "name": "\u0422\u044b\u0432\u0430"
+ },
+ "udm": {
+ "english_name": "Udmurt",
+ "name": "\u0423\u0434\u043c\u0443\u0440\u0442 \u043a\u044b\u043b"
+ },
+ "ug": {
+ "english_name": "Uyghur",
+ "name": "\u0626\u06c7\u064a\u063a\u06c7\u0631 \u062a\u0649\u0644\u0649"
+ },
+ "uk": {
+ "english_name": "Ukrainian",
+ "name": "\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"
+ },
+ "ur": {
+ "english_name": "Urdu",
+ "name": "\u0627\u0631\u062f\u0648"
+ },
+ "uz": {
+ "english_name": "Uzbek",
+ "name": "O\u2018zbek"
+ },
+ "ve": {
+ "english_name": "Venda",
+ "name": "Tshivenda"
+ },
+ "vec": {
+ "english_name": "Venetian",
+ "name": "V\u00e8neto"
+ },
+ "vep": {
+ "english_name": "Vepsian",
+ "name": "Veps\u00e4n"
+ },
+ "vi": {
+ "english_name": "Vietnamese",
+ "name": "Ti\u1ebfng Vi\u1ec7t"
+ },
+ "vls": {
+ "english_name": "West Flemish",
+ "name": "West-Vlams"
+ },
+ "vo": {
+ "english_name": "Volap\u00fck",
+ "name": "Volap\u00fck"
+ },
+ "wa": {
+ "english_name": "Walloon",
+ "name": "Walon"
+ },
+ "war": {
+ "english_name": "Waray-Waray",
+ "name": "Winaray"
+ },
+ "wo": {
+ "english_name": "Wolof",
+ "name": "Wolof"
+ },
+ "wuu": {
+ "english_name": "Wu",
+ "name": "\u5434\u8bed"
+ },
+ "xal": {
+ "english_name": "Kalmyk",
+ "name": "\u0425\u0430\u043b\u044c\u043c\u0433"
+ },
+ "xh": {
+ "english_name": "Xhosa",
+ "name": "isiXhosa"
+ },
+ "xmf": {
+ "english_name": "Mingrelian",
+ "name": "\u10db\u10d0\u10e0\u10d2\u10d0\u10da\u10e3\u10e0\u10d8 (Margaluri)"
+ },
+ "yi": {
+ "english_name": "Yiddish",
+ "name": "\u05d9\u05d9\u05b4\u05d3\u05d9\u05e9"
+ },
+ "yo": {
+ "english_name": "Yoruba",
+ "name": "Yor\u00f9b\u00e1"
+ },
+ "za": {
+ "english_name": "Zhuang",
+ "name": "Cuengh"
+ },
+ "zea": {
+ "english_name": "Zeelandic",
+ "name": "Ze\u00eauws"
+ },
+ "zh": {
+ "english_name": "Chinese",
+ "name": "\u4e2d\u6587"
+ },
+ "zh-classical": {
+ "english_name": "Classical Chinese",
+ "name": "\u53e4\u6587 / \u6587\u8a00\u6587"
+ },
+ "zh-min-nan": {
+ "english_name": "Min Nan",
+ "name": "B\u00e2n-l\u00e2m-g\u00fa"
+ },
+ "zh-yue": {
+ "english_name": "Cantonese",
+ "name": "\u7cb5\u8a9e"
+ },
+ "zu": {
+ "english_name": "Zulu",
+ "name": "isiZulu"
+ }
+ },
+ "yahoo": [
+ "ar",
+ "bg",
+ "cs",
+ "da",
+ "de",
+ "el",
+ "en",
+ "es",
+ "et",
+ "fi",
+ "fr",
+ "he",
+ "hr",
+ "hu",
+ "it",
+ "ja",
+ "ko",
+ "lt",
+ "lv",
+ "nl",
+ "no",
+ "pl",
+ "pt",
+ "ro",
+ "ru",
+ "sk",
+ "sl",
+ "sv",
+ "th",
+ "tr",
+ "zh_chs",
+ "zh_cht"
+ ]
} \ No newline at end of file
diff --git a/searx/data/external_bangs.json b/searx/data/external_bangs.json
new file mode 100644
index 0000000..46aa09f
--- /dev/null
+++ b/searx/data/external_bangs.json
@@ -0,0 +1,19068 @@
+{
+ "version": "260",
+ "trie": {
+ "4": {
+ "2": "//profile.intra.42.fr/searches/search?query=\u0002\u000138",
+ "*": "//www.4fitnessrules.com/workout-videos/?frm_search=\u0002\u000140",
+ "7": "//www.47news.jp/search?phrase=\u0002\u00010",
+ "g": {
+ "*": "http://4chan.org/g/\u0002\u000145",
+ "a": "//archive.rebeccablacktech.com/g/search/text/\u0002/\u00010"
+ },
+ "_b": "http://boards.4chan.org/b/catalog#s=\u0002\u00010",
+ "cc": "http://implyingrigged.info/w/index.php?search=\u0002\u00010",
+ "ch": {
+ "*": "//4chan.org/\u0002\u00011493",
+ "a": {
+ "*": "//boards.4chan.org/a/catalog#s=\u0002\u00013",
+ "n": {
+ "*": "//duckduckgo.com/?q=\u0002+site%3A4chan.org&t=ffsb\u000181",
+ "b": "http://4chan.org/b/\u0002\u0001103"
+ }
+ },
+ "c": "//boards.4chan.org/\u0002/catalog\u000162",
+ "g": "//boards.4chan.org/g/catalog#s=\u0002\u00010",
+ "n": {
+ "*": "//archive.nyafuu.org/n/search/text/\u0002/\u00010",
+ "ews": "//boards.4chan.org/news/catalog#s=\u0002\u00010"
+ },
+ "v": "//boards.4chan.org/v/catalog#s=\u0002\u00010",
+ "fa": "//boards.4chan.org/fa/catalog#s=\u0002\u000113",
+ "mu": "//boards.4chan.org/mu/catalog#s=\u0002\u00014",
+ "int": "//boards.4chan.org/int/catalog#s=\u0002\u00010",
+ "r9k": "//boards.4chan.org/r9k/catalog#s=\u0002\u00010",
+ "random": "//boards.4chan.org/b/catalog#s=\u0002\u00015",
+ "search": "//4chansearch.com/?q=\u0002\u000111"
+ },
+ "pl": {
+ "*": "http://www.4players.de/4players.php/suchergebnis/Allgemein/4players/?s=\u0002\u00010",
+ "ayers": "http://www.4players.de/4players.php/suchergebnis/Allgemein/4players/?s=\u0002\u00010",
+ "ebs": "//archive.4plebs.org/_/search/text/\u0002/\u0001595"
+ },
+ "sq": "//foursquare.com/explore?mode=url&nearGeoId=&q=\u0002\u00013",
+ "01games": "//store.401games.ca/pages/search-results?q=\u0002\u00010",
+ "cvg": "http://boards.4chan.org/vg/catalog#s=\u0002\u00010",
+ "pda": "http://4pda.ru/forum/index.php?act=search&source=all&forums[]=all&query=\u0002&x=0&y=0\u000118",
+ "shared": "http://search.4shared.com/q/CCAD/1/\u0002\u00010",
+ "sound": "http://www.4sound.dk/search/\u0002\u00010",
+ "x4community": "http://www.4x4community.co.za/forum/threadloom/threadloom.php?query=\u0002\u00010",
+ "x4direct": "http://www.4x4direct.co.za/search?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=\u00010"
+ },
+ "5": {
+ "2": "http://food52.com/recipes/search?q=\u0002\u00013",
+ "a": "//www.quintoandar.com.br/alugar/imovel/\u0002/\u00010",
+ "e": {
+ "*": "http://engl393-dnd5th.wikia.com/wiki/Special:Search?query=\u0002\u00014",
+ "w": "http://dnd5e.wikidot.com/search:site/a/p/q/\u0002\u000143"
+ },
+ "*": "http://fiverr.com/gigs/search?query=\u0002\u000132",
+ "00": {
+ "*": "//prime.500px.com/search/keywords=\u0002\u00013",
+ "px": "//500px.com/search?q=\u0002\u00016"
+ },
+ "38": "http://fivethirtyeight.com/?s=\u0002\u000167",
+ "ch": {
+ "*": "//find.5ch.net/search?q=\u0002\u0001277",
+ "annel": "//find.5ch.net/search?q=\u0002\u0001277"
+ },
+ "mods": "//www.gta5-mods.com/search/\u0002\u00010"
+ },
+ "9": {
+ "1": {
+ "1": {
+ "*": "http://www.911tabs.com/search.php?search=\u0002&type=band\u00016",
+ "s": "http://www.911tabs.com/search.php?search=\u0002&type=song\u00010"
+ },
+ "*": "http://www.91mobiles.com/topic/\u0002/all\u00013"
+ },
+ "3": {
+ "*": "//hermetic.com/index?do=search&id=\u0002\u00010",
+ "1women": "//931women.com/?s=\u0002: \u00010"
+ },
+ "*": "http://9pp.co/search?q=\u0002\u000132",
+ "g": {
+ "*": "http://9gag.com/search?query=\u0002\u0001322",
+ "ag": "//9gag.com/search?query=\u0002\u0001551"
+ },
+ "5g": {
+ "*": "//cse.google.com/cse?cx=008464549922976904202:uxmexxzm3k4&q=\u0002\u00013",
+ "oogle": "//9to5google.com/?s=\u0002\u000121"
+ },
+ "90": "http://990finder.foundationcenter.org/990results.aspx?990_type=&fn=\u0002&st=&zp=&ei=&fy=&action=Search\u00010",
+ "99": "//999.md/ru/search?query=\u0002\u00010",
+ "5mac": "http://9to5mac.com/?s=\u0002\u000113",
+ "9quotes": "//99quotes.me/search?q=\u0002\u00010"
+ },
+ "a": {
+ "2": "http://alternativeto.net/browse/search/?q=\u0002&ignoreExactMatch=true\u0001232",
+ "5": "//v5.angular.io/api?query=\u0002\u00010",
+ "6": "//v6.angular.io/api?query=\u0002\u00010",
+ "7": "//v7.angular.io/api?query=\u0002\u00010",
+ "a": {
+ "a": "//careers-calstate.aaa.com/search-results?keywords=\u0002\u00014",
+ "*": "http://www.amazon.com/s/&url=search-alias%3Dautomotive&field-keywords=\u0002\u000123",
+ "e": "http://www.albumartexchange.com/covers.php?q=\u0002\u00010",
+ "j": "//www.allaboutjazz.com/php/article_center.php?in_artist=\u0002&in_album=&in_label=&in_author=&in_type=0&orderby=dt_pub\u00013",
+ "m": {
+ "*": "//careers.aam.com/us/en/search-results?keywords=\u0002\u00010",
+ "ulehti": "//duckduckgo.com/?sites=www.aamulehti.fi&kh=1&q=\u0002&ia=web\u00010"
+ },
+ "t": "http://www.getty.edu/vow/AATServlet?english=N&find=\u0002&logic=AND&page=1&note=\u00010",
+ "u": "//www.amazon.com.au/s/?field-keywords=\u0002\u0001166",
+ "w": "http://aceattorney.wikia.com/wiki/\u0002\u000113",
+ "x": "http://www.albumartexchange.com/covers.php?q=\u0002\u00010",
+ "dl": "http://www.aadl.org/catalog/search/keyword/\u0002\u00010",
+ "kb": "//www.aakb.dk/search/ting/\u0002?\u00010",
+ "pt": "http://www.aptoide.com/search/view?search_top= \u0002 &x=0&y=0\u00010",
+ "rd": "http://www.aardwolf.com/wiki/index.php/Site/Search?q=\u0002\u00010",
+ "re": "//aare.edu.ee/dictionary.html?query=\u0002&lang=ee\u00010"
+ },
+ "*": "//www.amazon.com/s/?tag=duc0c-20&url=search-alias%3Daps&field-keywords=\u0002\u000141823",
+ "b": {
+ "*": "http://airbitz.co/search?term=\u0002\u000110",
+ "b": {
+ "*": "//new.abb.com/search/results#query=\u0002\u00010",
+ "r": "http://www.abbreviations.com/\u0002\u000123",
+ "uc": "http://www.abbuc.de/component/search/?searchword=\u0002\u00010",
+ "ott": "//www.jobs.abbott/us/en/search-results?keywords=\u0002\u00010"
+ },
+ "c": {
+ "*": "http://abcnotation.com/searchTunes?q=\u0002\u00010",
+ "am": "//www.abcam.com/products?keywords=\u0002\u00010",
+ "au": "http://search.abc.net.au/s/search.html?query=\u0002&collection=abcall_meta&form=simple\u00013",
+ "ya": "//www.abcya.com/search/?term=\u0002&type=\u0002\u00010",
+ "games": "http://www.abcgames.cz/?p=sekcia_hladaj&key=\u0002\u00010",
+ "news": "http://abcnews.go.com/search?searchtext=\u0002\u000126",
+ "notation": "http://abcnotation.com/searchTunes?q=\u0002&f=c&o=a&s=0\u00013"
+ },
+ "e": {
+ "*": "http://www.abesmarket.com/catalogsearch/result/?cat=5&order=relevance&dir=desc&q=\u0002\u00015",
+ "uk": "http://www.abebooks.co.uk/servlet/SearchResults?kn=\u0002\u00014",
+ "books": {
+ "*": "http://www.abebooks.com/servlet/SearchResults?kn=\u0002\u000183",
+ "de": "http://www.abebooks.de/servlet/SearchResults?kn=\u0002&sts=t&x=0&y=0\u00013"
+ }
+ },
+ "n": {
+ "*": "http://abr.business.gov.au/Search.aspx?SearchText=\u0002\u00010",
+ "b": "//www.airbnb.com/s/\u0002/all\u00010"
+ },
+ "r": {
+ "*": "//www.amazon.com.br/s/ref=nb_sb_noss_2?__mk_pt_BR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&url=search-alias%3Daps&field-keywords=\u0002 \u0001414",
+ "etelibro": "http://www.abretelibro.com/foro/search.php?keywords=\u0002&sf=titleonly\u00010"
+ },
+ "s": {
+ "*": "http://www.allbookstores.com/search?q=\u0002\u00013",
+ "hire": "http://aberdeenshire.gov.uk/search?search=\u0002\u00010"
+ },
+ "ol": "//abo.finna.fi/Search/Results?lookfor=\u0002&type=AllFields\u00010",
+ "adise": "//dictionary.abadis.ir/?LnType=entofa&Word=\u0002\u00010",
+ "adisf": "//dictionary.abadis.ir/?lntype=fatoen&word=\u0002\u00010",
+ "andonia": "http://www.abandonia.com/en/search_abandonia/\u0002\u00019",
+ "-er": "http://www.lingvo-online.ru/en/Translate/en-ru/\u0002\u00010",
+ "fahrt": "//mobile.bahn.de/bin/mobil/bhftafel.exe/dox?input=\u0002&productsFilter=1111111111000000&time=actual&maxJourneys=40&start=Suchen&boardType=Abfahrt&rt=1\u00013",
+ "iunity": "//www.abiunity.de/datenbank.php?boardid=48#!v=searchdb&search=\u0002&boardid=48\u00010",
+ "out": "http://search.about.com/fullsearch.htm?terms=\u0002\u000111",
+ "uela": "http://miabuelavende.com/?s=\u0002&post_type=product\u00010",
+ "useip": "//www.abuseipdb.com/check/\u0002\u000110",
+ "yss": "http://wall.alphacoders.com/search.php?search=\u0002\u00010"
+ },
+ "c": {
+ "a": {
+ "*": "//www.amazon.ca/s/?tag=duc22-20&url=search-alias%3Daps&field-keywords=\u0002\u0001871",
+ "d": {
+ "*": "http://dic.academic.ru/searchall.php?SWord=\u0002\u000131",
+ "emia": "http://www.academia.edu/people/search?utf8=%E2%9C%93&q=\u0002\u000158",
+ "emicearth": "//academicearth.org/?s=\u0002\u00010"
+ }
+ },
+ "*": "http://www.allocine.fr/recherche/?q=\u0002\u000113",
+ "b": "//americancustomboxes.com/?s=\u0002\u00010",
+ "c": {
+ "*": "//aleth.io/account/\u0002\u00013",
+ "c": "//www.accc.gov.au/site-search/\u0002\u00010",
+ "ountcia": "//www.accountcia.com/?geodir_search=1&stype=gd_place&sgd_placecategory%5B%5D=&s=\u0002\u00010",
+ "ountkiller": "http://www.accountkiller.com/en/delete-\u0002-account\u00015",
+ "uweather": "http://www.accuweather.com/us-city-list.asp?zipcode=\u0002\u000148"
+ },
+ "e": {
+ "*": "http://www.acehardware.com/search/index.jsp?kwCatId=&kw=\u0002&origkw=\u0002&f=Taxonomy/ACE/19541496&sr=1\u000114",
+ "r": "http://us.acer.com/ac/en/US/search?q=\u0002\u00010",
+ "forum": "http://forum.acelaboratory.com/search.php?keywords=\u0002\u00010"
+ },
+ "h": "http://www.archchinese.com/chinese_english_dictionary.html?find=\u0002\u00013",
+ "l": {
+ "*": "//www.aclweb.org/anthology/search/?q=\u0002\u000113",
+ "u": "//www.aclu.org/search/\u0002?show_aff=1\u00010"
+ },
+ "m": {
+ "*": "http://dl.acm.org/results.cfm?dlr=GUIDE&query=\u0002\u00010",
+ "dl": "//dl.acm.org/results.cfm?query=\u0002\u00013"
+ },
+ "n": {
+ "*": "//www.amazon.cn/s/?tag=duc0c-20&url=search-alias%3Daps&field-keywords=\u0002\u00015",
+ "e": "//www.acne.org/search.php?i=&q=\u0002\u00010",
+ "l": "//applecoach.nl/?s=\u0002\u00010"
+ },
+ "p": "http://plugins.cordova.io/#/search?search=\u0002\u00010",
+ "r": {
+ "*": "http://www.acronymfinder.com/\u0002.html\u000117",
+ "o": {
+ "*": "http://www.acronymfinder.com/~/search/af.aspx?string=exact&Acronym=\u0002\u000155",
+ "nym": {
+ "*": "http://www.acronymfinder.com/~/search/af.aspx?string=exact&Acronym=\u0002\u000155",
+ "s": "http://www.acronymfinder.com/~/search/af.aspx?string=exact&Acronym=\u0002\u000155"
+ }
+ }
+ },
+ "s": "http://pubs.acs.org/action/doSearch?AllField=\u0002\u00010",
+ "w": {
+ "*": "http://animalcrossing.wikia.com/wiki/Special:Search?query=\u0002\u00013",
+ "iki": "//assassinscreed.fandom.com/wiki/Special:Search?query=\u0002\u000116"
+ },
+ "fun": "http://www.acfun.cn/search/?#query=\u0002 \u00014",
+ "kuc": "//www.amarchitrakatha.com/us/catalogsearch/result/?cat=0&q=\u0002\u00010",
+ "ortar": "http://cortas.elpais.com/encode.pl?u=http://\u0002\u00010",
+ "quiredby": "//acquiredby.co/?s=\u0002\u00010",
+ "tivestate": "http://www.activestate.com/search/index.html?cx=005567415255730122040%3Aiof7ftsiexy&cof=FORID%3A11&sa.x=0&sa.y=0&q=\u0002#1013\u00010",
+ "tuly": "//www.actuly.fr/?s=\u0002\u00010",
+ "urazine": "http://acurazine.com/forums/search.php?do=showgcs&query=\u0002\u00010"
+ },
+ "d": {
+ "a": {
+ "*": "http://www.ada-auth.org/search-rm05.cgi?SearchA=\u0002&SearchO=&SearchN=\u00014",
+ "blog": "//blog.adafruit.com/?s=\u0002\u00010",
+ "derana": "http://adaderana.lk/search_results.php?mode=1&show=1&query=\u0002\u00010",
+ "fruit": "//www.adafruit.com/?q=\u0002\u000131",
+ "gio": "http://www.adagio.com/search/index.html?query=\u0002\u00010"
+ },
+ "*": "http://apple.stackexchange.com/search?q=\u0002\u000112",
+ "b": "http://arquivodabola.com.br/busca.html?termo=\u0002\u00010",
+ "c": "//developer.apple.com/search/index.php?q=\u0002\u00010",
+ "e": {
+ "*": "//www.amazon.de/s/?tag=duc048-21&url=search-alias%3Daps&field-keywords=\u0002\u00016020",
+ "s": "//smile.amazon.de/s/ref=nb_sb_noss?field-keywords=\u0002\u000129",
+ "v": "//developer.apple.com/search/?q=\u0002\u000134",
+ "fb": "//www.amazon.de/s/ref=nb_sb_noss?__mk_de_DE=ÅMÅŽÕÑ&url=search-alias%3Denglish-books&field-keywords=\u0002\u00010",
+ "lung": "http://woerterbuchnetz.de/Adelung/?lemma=\u0002\u00010"
+ },
+ "f": "//forums.developer.apple.com/search.jspa?q=\u0002\u00015",
+ "i": {
+ "*": "//www.adiglobaldistribution.us/search?criteria=\u0002\u00010",
+ "das": "http://www.adidas.fr/search?q=\u0002\u00010"
+ },
+ "n": "http://animedigitalnetwork.fr/video#search=\u0002\u00018",
+ "r": "//adrenaline.uol.com.br/site/pesquisa/\u0002\u00015",
+ "s": {
+ "*": "//ui.adsabs.harvard.edu/#search/q=\u0002\u0001141",
+ "k": "http://forums.autodesk.com/t5/forums/searchpage/tab/message?q=\u0002\u00010",
+ "r": {
+ "*": "//www.adsrsounds.com/?src=\u0002\u00010",
+ "ef": "http://adsabs.harvard.edu/cgi-bin/nph-abs_connect?db_key=ALL&bibcode=\u0002 \u00010"
+ },
+ "abs": "http://adsabs.harvard.edu//cgi-bin/basic_connect?qsearch=\u0002\u000116",
+ "beta": "//ui.adsabs.harvard.edu/#search/q=\u0002\u0001141",
+ "labs": "http://labs.adsabs.harvard.edu/ui/cgi-bin/topicSearch?q=\u0002\u00010"
+ },
+ "v": {
+ "*": "//duckduckgo.com/?q=site%3Aadvrider.com+\u0002\u00010",
+ "fn": "http://uk.advfn.com/p.php?pid=qkquote&symbol=\u0002 \u00010",
+ "erts": "http://www.adverts.ie/for-sale/q_\u0002/\u00014",
+ "gta": "//advancedgta.com/?s=\u0002\u00010"
+ },
+ "z": {
+ "*": "//www.audeze.com/search?q=\u0002*\u00010",
+ "una": "//www.adzuna.co.uk/jobs/search?q=\u0002 \u00010"
+ },
+ "me": "//www.adme.ru/search/?q=\u0002\u00010",
+ "oc": "//docs.ansible.com/ansible/latest/search.html?q=\u0002\u000111",
+ "om": "http://ancardia.wikia.com/wiki/Special:Search?search=\u0002\u00017",
+ "or": "//www.adorama.com/l/?searchinfo=\u0002\u00010",
+ "dgene": "//www.addgene.org/search/advanced/?q=\u0002\u00010",
+ "dicting": {
+ "*": "http://www.addictinggames.com/search/games.jsp?gameKeyword=\u0002\u00010",
+ "-games": "http://www.addictinggames.com/search/games.jsp?gameKeyword=\u0002\u00010"
+ },
+ "dons": "http://addons.prestashop.com/fr/recherche?search_query=\u0002\u000118",
+ "dtopocket": "//getpocket.com/edit?url=\u0002\u00010",
+ "jective": "http://adjective1.com/?s=\u0002\u00010",
+ "libris": {
+ "*": "//www.adlibris.com/se/sok?q=\u0002\u000110",
+ "dk": "http://www.adlibris.com/dk/searchresult.aspx?search=quickfirstpage&quickvalue=\u0002\u00010",
+ "fi": "http://www.adlibris.com/fi/searchresult.aspx?search=quickfirstpage&quickvalue=\u0002\u00010",
+ "no": "http://www.adlibris.com/no/searchresult.aspx?search=quickfirstpage&quickvalue=\u0002\u00010",
+ "se": "http://www.adlibris.com/se/searchresult.aspx?search=quickfirstpage&quickvalue=\u0002\u00010"
+ },
+ "minwiki": "//www.adminwiki.fr/start?do=search&id=\u0002\u00010",
+ "obe": "http://www.adobe.com/cfusion/search/index.cfm?loc=en_us&term=\u0002\u00013",
+ "talem": "//careers.adtalem.com/us/en/search-results?keywords=\u0002\u00010"
+ },
+ "e": {
+ "*": "//www.aliexpress.com/wholesale?SearchText=\u0002\u0001197",
+ "o": "//www.ae.com/search/\u0002\u00010",
+ "q": "http://ae7q.com/query/data/CallHistory.php?CALL=\u0002\u00010",
+ "s": "//www.amazon.es/s/?tag=duc00-21&url=search-alias%3Daps&field-keywords=\u0002\u00011128",
+ "iou": "//austria-forum.org/Search.jsp?category=Austria-Forum&sname=name%2Csuchbegriff&query=\u0002+&searchType=default&useShortcuts=y&useSynonyms=n&doFuzzy=y&minResults=15\u00010",
+ "met": "http://www.aemet.es/es/buscador?modo=and&orden=n&tipo=sta&str=\u0002\u000154",
+ "ris": "//duckduckgo.com/?q=site%3Aimirhil.fr+\u0002\u00010",
+ "robis": "//www.aerobis.com/en/?s=\u0002\u00010"
+ },
+ "f": {
+ "*": "http://www.acronymfinder.com/\u0002.html\u000117",
+ "c": {
+ "*": "//www.arsenal.com/search?search=\u0002\u00010",
+ "ind": "//www.afcindustries.com/products/search.aspx?search=\u0002\u00010"
+ },
+ "h": "//androidfilehost.com/?w=search&s=\u0002\u00010",
+ "l": "//learn.adafruit.com/search?q=\u0002\u00017",
+ "p": {
+ "*": "http://www.afpforum.com/AFPForum/Search/Results.aspx?pn=1&smd=8&fst=\u0002&fto=7&mui=3&t=2\u00010",
+ "f": "http://www.afpforum.com/AFPForum/Search/Results.aspx?pn=1&smd=8&fst=\u0002&fto=7&mui=3&t=2\u00010",
+ "ls": "http://afpl.ent.sirsi.net/client/default/search/results?qu=\u0002&te=ILS\u00010",
+ "ubs": "http://www.e-publishing.af.mil/index.asp?txtSearchWord=\u0002&rdoFormPub=rdoPub\u00010"
+ },
+ "r": "//www.amazon.fr/s/?tag=duc0a-21&url=search-alias%3Daps&field-keywords=\u0002\u00011963",
+ "t": {
+ "*": "//www.adafruit.com/search?q=\u0002\u00013",
+ "ership": "//track.aftership.com/\u0002\u00013",
+ "vhacks": "//aftvhacks.de/?s=\u0002\u00010"
+ },
+ "inna": "//aalto.finna.fi/Search/Results?lookfor=\u0002\u00013",
+ "wiki": "//af.wikipedia.org/w/index.php?search=\u0002&title=Spesiaal%3ASoek&go=Wys\u00010"
+ },
+ "g": {
+ "*": "http://www.android.gs/?s=&q=\u0002\u000112",
+ "e": {
+ "*": "//www.amazon.de/s/?url=search-alias%3Daps&field-keywords=\u0002\u000139",
+ "r": {
+ "*": "//www.amazon.de/s/ref=nb_sb_noss?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&url=search-alias%3Daps&field-keywords=\u0002\u000112",
+ "rit": "//android-review.googlesource.com/q/\u0002\u00010"
+ }
+ },
+ "s": "//adventuregamers.com/games/search?keywords=\u0002\u00013",
+ "dl": "http://duckduckgo.com/?q=\u0002+site:artsites.ucsc.edu/GDead/agdl/+!\u00010",
+ "ri": {
+ "*": "//www.agrireseau.net/documents?r=\u0002\u00010",
+ "cola": "//agricola.nal.usda.gov/vwebv/search?searchArg=\u0002&searchCode=GKEY%5E&setLimit=1&recCount=10&searchType=1&page.search.search.button=Search\u00010"
+ },
+ "ame": {
+ "*": "http://www.agame.com/search?searchTerm=\u0002\u00010",
+ "s": "//www.anaitgames.com/buscador.php?search=\u0002\u00010"
+ },
+ "oga": "//www.arturogoga.com/?s=\u0002\u00010",
+ "ora": {
+ "*": "http://agora.gg/search/\u0002\u00010",
+ "il": "//agora.co.il/toGet.asp?iseek=\u0002\u00010"
+ }
+ },
+ "h": {
+ "*": "//www.ah.nl/zoeken?rq=\u0002\u000158",
+ "d": {
+ "*": "//ahdictionary.com/word/search.html?q=\u0002&submit.x=0&submit.y=0\u000141",
+ "b": "//arkhamdb.com/find?q=\u0002\u000136"
+ },
+ "k": "http://www.autohotkey.com/search/search.php?site=4&refine=0&template_demo=phpdig.html&result_page=search.php&search=Go+...&limite=100&option=start&path=docs/&query_string=\u0002\u000121",
+ "w": "http://www.arkhamhorrorwiki.com/wiki/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "metcadirci": "//ahmetcadirci.com.tr/search/?q=\u0002\u00010",
+ "mia": "//ahmia.fi/search/?q=\u0002\u00017",
+ "refs": "//ahrefs.com/site-explorer/overview/v2/subdomains/recent?target=\u0002\u00013"
+ },
+ "i": {
+ "n": "//www.amazon.in/s/?tag=duc21-21&url=search-alias%3Daps&field-keywords=\u0002\u0001128",
+ "p": "http://scitation.aip.org/search?value1=\u0002&option1=fulltext\u00010",
+ "s": {
+ "*": "http://archive.is/\u0002\u000178",
+ "h": "http://www.aish.com/search/?keywords=\u0002\u00010",
+ "tars": "http://aikatsustars.wikia.com/wiki/Special:Search?query=\u0002\u00010"
+ },
+ "t": {
+ "*": "//www.amazon.it/s/?tag=duc04-21&url=search-alias%3Daps&field-keywords=\u0002\u00011075",
+ "opics": "//aitopics.org/search?q=\u0002\u00010"
+ },
+ "*": "//www.amazon.in/s/ref=nb_sb_noss?tag=duc21-21&url=search-alias%3Daps&field-keywords=\u0002 \u0001524",
+ "on": "http://aion.wikia.com/wiki/index.php?search=\u0002&fulltext=0\u00010",
+ "r1": "http://www.air1.com/search.aspx?searchterm=\u0002\u00010",
+ "rn": {
+ "*": "//airnav.com/airport/\u0002\u00015",
+ "av": "//airnav.com/airport/\u0002\u00015"
+ },
+ "daily": "//www.aidaily.co.uk/search?q=\u0002\u00010",
+ "den": "//aidenpromotions.com/blog/?s=phones \u0002\u00010",
+ "fit": "http://www.aifittings.com/searchResults?q=\u0002\u00010",
+ "friends": "http://aikatsu-friends.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "hit": "//www.aihitdata.com/search/companies?i=\u0002\u00010",
+ "jobs": "//ai-jobs.net/?search_keywords=\u0002\u00010",
+ "katsu": "http://aikatsu.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "rbnb": "//www.airbnb.com/s/\u0002\u000142",
+ "rforums": "http://airforums.com/?=\u0002:\u00010",
+ "rframes": "http://www.airframes.org/reg/\u0002\u00010",
+ "rlinehyd": "//www.airlinehyd.com/Results.aspx?srh=\u0002\u00010",
+ "rliners": "http://www.airliners.net/search?keywords=\u0002\u00015",
+ "rmo": "//air.mozilla.org/search/?q=\u0002\u00013",
+ "rquality": "//www.goodtobreathein.com/?zipcode=\u0002\u00010",
+ "rsoftdb": "//www.airsoftdb.com/search/?q=\u0002\u00010"
+ },
+ "j": {
+ "a": {
+ "*": "http://america.aljazeera.com/search.html?q=\u0002\u00010",
+ "tt": "http://www.alljapaneseallthetime.com/blog/?s=\u0002\u00010"
+ },
+ "b": "http://www.achajogobarato.com.br/search.html?query=\u0002\u00010",
+ "e": "http://www.aljazeera.com/Search/?q=\u0002\u00013",
+ "*": "//www.amazon.co.jp/s/?tag=duc0c-20&url=search-alias%3Daps&field-keywords=\u0002\u0001551",
+ "l": "//www.amazon.co.jp/s/?field-keywords=\u0002\u00013",
+ "p": "//www.amazon.co.jp/s/?tag=duc0c-20&url=search-alias%3Daps&field-keywords=\u0002\u0001551"
+ },
+ "k": {
+ "*": "//www.accountkiller.com/en/delete-\u0002-account\u00013",
+ "c": "//www.akc.org/?s=\u0002\u00015",
+ "s": "http://www.allkeyshop.com/blog/catalogue/search-\u0002/\u000118",
+ "akce": "http://www.akakce.com/arama/?q=\u0002\u000121",
+ "iduki": "http://akizukidenshi.com/catalog/goods/search.aspx?keyword= \u0002&goods=&number=&name=&min_price=&max_price=&search.x=0&search.y=0\u00010",
+ "tualne": "//www.aktualne.cz/hledani/?query=\u0002\u00010",
+ "tuality": "//www.aktuality.sk/vyhladavanie/?q=\u0002\u00010"
+ },
+ "l": {
+ "a": {
+ "*": "http://www.alamaula.com/q/\u0002/S0\u00010",
+ "di": {
+ "*": "//aladi.diba.cat/search*cat/-\u0002\u00010",
+ "n": "http://www.aladin.co.kr/search/wsearchresult.aspx?SearchTarget=All&SearchWord=\u0002\u000130"
+ },
+ "us": "//bie.ala.org.au/search?q=\u0002\u00010",
+ "rmpkg": "//archlinuxarm.org/packages/?q=\u0002\u00010",
+ "test": "http://alatest.de/searchaction.html?keyword1=\u0002\u00010"
+ },
+ "*": "//anilist.co/search/anime?search=\u0002\u0001405",
+ "b": {
+ "*": "//www.alibaba.com/trade/search?fsb=y&IndexArea=product_en&CatId=&SearchText=\u0002\u00014",
+ "ex": "http://www.albumartexchange.com/covers.php?q=\u0002 \u00010",
+ "um": {
+ "*": "http://www.allmusic.com/search/albums/\u0002\u00010",
+ "s": "http://www.allmusic.com/search/albums/\u0002\u00010",
+ "art": {
+ "*": "//bendodson.com/projects/itunes-artwork-finder/index.html?entity=album&country=us&query=\u0002\u00010",
+ "cd": "http://www.albumart.org/index.php?skey=\u0002&itempage=1&newsearch=1&searchindex=Music\u00010",
+ "dvd": "http://www.albumart.org/index.php?skey=\u0002&itempage=1&newsearch=1&searchindex=DVD\u00010"
+ }
+ },
+ "erta": "//www.alberta.ca/search-results.aspx?q=\u0002\u00010",
+ "erthein": "//www.ah.nl/zoeken?rq=\u0002\u000158"
+ },
+ "c": "http://eow.alc.co.jp/search?q=\u0002\u0001270",
+ "f": {
+ "*": "//www.alfinsight.com/app/SearchResults?quickSearch=\u0002 \u00013",
+ "red": "//www.alfredapp.com/search/?q=\u0002\u00010"
+ },
+ "g": {
+ "*": "http://www.algomation.com/search?q=\u0002\u00010",
+ "o": "//algorithmia.com/search?q=\u0002\u00010"
+ },
+ "i": {
+ "*": "//www.aliexpress.com/wholesale?SearchText=\u0002\u0001197",
+ "b": {
+ "*": "//discover.elgar.govt.nz/iii/encore/search/C__S\u0002__Orightresult__U?lang=eng&suite=def\u00010",
+ "ro": {
+ "*": "http://www.abretelibro.com/foro/search.php?keywords=\u0002&sf=titleonly\u00010",
+ "s": "http://www.abretelibro.com/foro/search.php?keywords=\u0002\u00010"
+ },
+ "aba": "http://www.alibaba.com/trade/search?SearchText=\u0002\u000133",
+ "ris": "http://www.alibris.com/booksearch?keyword=\u0002\u000115"
+ },
+ "m": "//m.aliexpress.com/search.htm?keywords=\u0002\u0001257",
+ "cemail": "//mail.alice.it/?q=\u0002\u00010",
+ "exp": {
+ "*": "//www.aliexpress.com/wholesale?SearchText=\u0002\u0001197",
+ "ress": "//www.aliexpress.com/wholesale?SearchText=\u0002\u0001197"
+ },
+ "ght": "//careers.alight.com/search-results?keywords=\u0002\u00010",
+ "paczka": "//alipaczka.pl/?track=\u0002\u00010",
+ "seeks": "http://aliseeks.com/search?SearchText=\u0002\u00013"
+ },
+ "l": {
+ "*": "http://all-io.net/?q=\u0002\u000113",
+ "o": {
+ "*": "http://www.allocine.fr/recherche/?q=\u0002\u000113",
+ "cine": "http://www.allocine.fr/recherche/?q=\u0002\u000113",
+ "ciné": "http://www.allocine.fr/recherche/?q=\u0002\u000113"
+ },
+ "abolag": "//www.allabolag.se/what/\u0002\u000112",
+ "aboutcircuits": "http://www.allaboutcircuits.com/scripts/search.html?cx=006978388026519765659%3Ahg719j5vhl8&cof=FORID%3A9&q=\u0002&sa=Find\u00010",
+ "acronyms": "//www.allacronyms.com/\u0002\u00010",
+ "biz": "http://www.all.biz/search/goods/?q=\u0002\u00010",
+ "bibles": "http://biblez.com/search.php?q=\u0002\u00010",
+ "egro": "http://allegro.pl/listing.php/search?string=\u0002\u00011147",
+ "elec": "http://www.allelectronics.com/index.php?page=seek&id%5Bm%5D=pattern&id%5Bq%5D=\u0002\u00010",
+ "erhande": "//www.ah.nl/allerhande/recepten-zoeken?Ntt=\u0002\u00016",
+ "erstorfer": "//www.allerstorfer.at/?s=\u0002\u00010",
+ "experts": "http://en.allexperts.com/sitesearch.htm?terms=\u0002\u00010",
+ "iance": "//alliancechampions.com/?s=\u0002\u00010",
+ "iedelec": "http://www.alliedelec.com/search/results.aspx?term=\u0002\u00010",
+ "movie": "http://allmovie.com/search/all/\u0002\u000126",
+ "mus": {
+ "*": "//www.allmusic.com/search/all/\u0002\u00016",
+ "ic": "//www.allmusic.com/search/all/\u0002\u00016"
+ },
+ "posters": "http://www.allposters.com/gallery.asp?txtSearch=\u0002\u00010",
+ "recipes": "http://allrecipes.com/search/results/?wt=\u0002\u00017",
+ "sides": "//www.allsides.com/allsides-search-results?search_api_views_fulltext=\u0002\u00010",
+ "songs": "http://allsongs.tv/search/?q=\u0002\u00010"
+ },
+ "p": {
+ "*": "//www.archlinux.org/packages/?sort=&q=\u0002\u000159",
+ "ha": "http://www.wolframalpha.com/input/?i=\u0002\u0001155",
+ "ine": "http://pkgs.alpinelinux.org/packages?name=\u0002\u0001210"
+ },
+ "t": {
+ "*": "http://alternativeto.net/SearchResult.aspx?search=\u0002\u00011319",
+ "o": "http://alternativeto.net/browse/search?q=\u0002 \u0001504",
+ "be": "//www.alternate.be/html/search.html?query=\u0002\u00010",
+ "ex": "//altex.ro/cauta/?q=\u0002\u00014",
+ "ro": "http://www.altroconsumo.it/Serp/ShowResults?keyword=\u0002\u00010",
+ "ru": "//altru.greatjob.net/search-results?keywords=\u0002\u00010",
+ "to": "http://alternativeto.net/browse/search?q=\u0002\u0001630",
+ "ernate": {
+ "*": "http://www.alternate.de/html/search.html?searchCriteria=\u0002\u00016",
+ "nl": "//www.alternate.nl/html/search.html?query=\u0002\u00010"
+ },
+ "ernative": {
+ "*": "http://alternativeto.net/searchresult.aspx?search=\u0002\u0001144",
+ "to": "http://alternativeto.net/browse/search?q=\u0002\u0001630"
+ },
+ "ernet": "//www.alternet.org/search/site/\u0002\u00010",
+ "ium": "http://techdocs.altium.com/search/wikinode/\u0002\u00010"
+ },
+ "w": "//wiki.alpinelinux.org/w/index.php?search=\u0002\u000120",
+ "ko": "//www.alko.fi/INTERSHOP/web/WFS/Alko-OnlineShop-Site/fi_FI/-/EUR/ViewParametricSearchBySearchIndex-SimpleGenericSearch?SearchTerm=\u0002\u000111",
+ "za": "//www.alza.cz/search.htm?exps=\u0002\u000128",
+ "ert": "http://biznesalert.pl/?s=\u0002\u00010",
+ "esund": "http://www.alesund.kommune.no/component/finder/search?q=\u0002&Itemid=406\u00010",
+ "exa": {
+ "*": "http://alexa.com/search?q=\u0002\u000153",
+ "lt": "//www.alexalt.es/?s=\u0002\u00010",
+ "si": "http://www.alexa.com/siteinfo/\u0002\u00010"
+ },
+ "exion": "http://alexion.nl/?s=\u0002&post_type=faq\u00010",
+ "exshoes": "http://www.alexshoes.com.br/buscacomfab.asp?chaves=\u0002\u00010",
+ "jazeera": "http://english.aljazeera.net/Services/Search/?q=\u0002\u00015",
+ "maanyar": "http://www.almaany.com/ar/dict/ar-ar/\u0002\u00010",
+ "maanyen": "http://www.almaany.com/ar/dict/ar-en/\u0002/\u00010",
+ "maanyfa": "//www.almaany.com/ar/dict/ar-fa/\u0002/\u00010",
+ "manac": "http://www.almanac.com/store/product-search?keys=\u0002\u00010",
+ "medina": "//www.almedina.net/search.php?query=\u0002\u00010",
+ "naturade": "http://www.alnatura.de/de-de/suche?q=\u0002\u00010",
+ "obg": "//www.alo.bg/searchq/?q=\u0002\u00010",
+ "ugha": "//alugha.com/search?q=\u0002\u00010",
+ "vanista": "http://alvanista.com/search?s=\u0002\u00010"
+ },
+ "m": {
+ "a": {
+ "*": "//www.amazon.de/s/?url=search-alias%3Daps&field-keywords=\u0002\u000139",
+ "u": "//www.amazon.com.au/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=\u0002\u0001113",
+ "nz": "//amanz.my/?s=\u0002\u00015",
+ "ps": "http://maps.apple.com/?q=\u0002\u000158",
+ "ra": "http://www.amara.org/search/#/?q=\u0002\u00010",
+ "demp3": "//www.amazon.de/s/ref=nb_sb_noss_2?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&url=search-alias%3Ddigital-music&field-keywords=\u0002\u00010",
+ "lexa": "//www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Dalexa-skills&field-keywords=\u0002\u00010",
+ "zon": {
+ "*": "//www.amazon.com/s/?tag=duc0c-20&url=search-alias%3Daps&field-keywords=\u0002\u000141823",
+ "au": "//www.amazon.com.au/s/ref=nb_sb_noss?field-keywords=\u0002\u0001126",
+ "ca": "//www.amazon.ca/s/?tag=duc22-20&url=search-alias%3Daps&field-keywords=\u0002\u0001871",
+ "cn": "//www.amazon.cn/s/?tag=duc0c-20&url=search-alias%3Daps&field-keywords=\u0002\u00015",
+ "de": "//www.amazon.de/s/?tag=duc048-21&url=search-alias%3Daps&field-keywords=\u0002\u00016020",
+ "es": "//www.amazon.es/s/?tag=duc00-21&url=search-alias%3Daps&field-keywords=\u0002\u00011128",
+ "fr": "//www.amazon.fr/s/?tag=duc0a-21&url=search-alias%3Daps&field-keywords=\u0002\u00011963",
+ "in": "//www.amazon.in/s/?tag=duc21-21&url=search-alias%3Daps&field-keywords=\u0002\u0001128",
+ "it": "//www.amazon.it/s/?tag=duc04-21&url=search-alias%3Daps&field-keywords=\u0002\u00011075",
+ "jp": "//www.amazon.co.jp/s/?tag=duc0c-20&url=search-alias%3Daps&field-keywords=\u0002\u0001551",
+ "mx": "//www.amazon.com.mx/s/ref=nb_sb_noss_1?__mk_es_MX=%C3%85M%C3%85%C5%BD%C3%95%C3%91&url=search-alias%3Daps&field-keywords=\u0002\u000161",
+ "nl": "//www.amazon.nl/s?k=\u0002&ref=nb_sb_noss_2\u000174",
+ "tr": "//www.amazon.com.tr/s/field-keywords=\u0002\u00014",
+ "uk": "//www.amazon.co.uk/s/?tag=duc0c-21&url=search-alias%3Daps&field-keywords=\u0002\u0001470",
+ "_de": "//www.amazon.de/s/?field-keywords=\u0002\u00010",
+ ".in": "//www.amazon.in/s/?tag=duc21-21&url=search-alias%3Daps&field-keywords=\u0002\u0001128",
+ ".it": "//www.amazon.it/s/?tag=duc04-21&url=search-alias%3Daps&field-keywords=\u0002\u00011075",
+ "mp3": "//www.amazon.com/s/?url=search-alias%3Ddigital-music&tag=duc0c-20&field-keywords=\u0002\u00010",
+ "orders": "//www.amazon.com/gp/your-account/order-history/ref=oh_aui_search?opt=ab&search=\u0002 \u00010"
+ }
+ },
+ "*": "//www.amazon.com/s/?tag=duc0c-20&url=search-alias%3Daps&field-keywords=\u0002\u000141823",
+ "c": {
+ "a": "//www.amazon.ca/s/?tag=duc0c-20&url=search-alias%3Daps&field-keywords=\u0002\u0001232",
+ "*": "http://www.amctv.com/search#q=\u0002\u000110",
+ "n": "//www.amazon.cn/s/?tag=duc0c-20&url=search-alias%3Daps&field-keywords=\u0002\u00015",
+ "loud": "//www.amazon.com/clouddrive/#G=0&path=\u0002\u00010"
+ },
+ "d": {
+ "*": "http://search.amd.com/en-us/Pages/results-all.aspx?k=\u0002\u00019",
+ "e": "//www.amazon.de/s/?tag=duc048-21&url=search-alias%3Daps&field-keywords=\u0002\u00016020"
+ },
+ "f": {
+ "*": "http://ask.metafilter.com/search.mefi?q=\u0002\u00017",
+ "r": "//www.amazon.fr/s/?tag=duc0a-21&url=search-alias%3Daps&field-keywords=\u0002\u00011963"
+ },
+ "g": {
+ "*": "//www.allmusic.com/search/all/\u0002\u00016",
+ "uy": "//www.angrymetalguy.com/?s=\u0002\u00010",
+ "lobal": "//www.amazon.com/s/ref=nb_sb_noss?&tag=duc0c-20&url=search-alias%3Dus-worldwide-shipping-aps&field-keywords=\u0002&x=0&y=0\u00010"
+ },
+ "n": {
+ "*": "//jobs.amncareers.com/search-results?keywords=\u0002\u00010",
+ "esty": "//www.amnesty.org/en/search/?q=\u0002\u00015"
+ },
+ "o": {
+ "*": "//addons.mozilla.org/firefox/search/?q=\u0002&cat=all\u0001256",
+ "eba": "//www.amoeba.com/search/all/?s=\u0002\u00010"
+ },
+ "s": {
+ "*": "http://smile.amazon.com/s/ref=nb_sb_noss_2?url=search-alias%3Daps&field-keywords=\u0002\u000174",
+ "uk": "//smile.amazon.co.uk/s?field-keywords=\u0002\u000114"
+ },
+ "x": "//www.amazon.com.mx/s?k=\u0002&__mk_es_MX=%C3%85M%C3%85%C5%BD%C3%95%C3%91&ref=nb_sb_noss_2\u0001413",
+ "z": {
+ "*": "//www.amazon.com/s/?field-keywords=\u0002\u0001301",
+ "bks": "//www.amazon.com/s/?url=search-alias%3Dstripbooks&field-keywords=\u0002\u00010",
+ "nde": "//www.amazon.de/s/field-keywords=\u0002\u00010",
+ "nin": "//www.amazon.in/s?field-keywords=\u0002\u000126"
+ },
+ "es": "//www.amazon.es/s/?tag=duc00-21&url=search-alias%3Daps&field-keywords=\u0002\u00011128",
+ "in": {
+ "*": "//www.amazon.in/s/ref=nb_sb_noss?tag=duc21-21&url=search-alias%3Daps&field-keywords=\u0002\u0001162",
+ "et": "http://aminet.net/search?query=\u0002\u00010"
+ },
+ "it": "//www.amazon.it/s/?tag=duc04-21&url=search-alias%3Daps&field-keywords=\u0002\u00011075",
+ "jp": "//www.amazon.co.jp/s/?tag=duc0c-20&url=search-alias%3Daps&field-keywords=\u0002\u0001551",
+ "kt": "//marketplace.atlassian.com/search?q=\u0002\u00010",
+ "mo": "http://www.ammodepottx.com/#sthash.Bx8Cvh8l.dpbs=\u0002:\u00010",
+ "p3": "//www.amazon.com/s/?url=search-alias%3Ddigital-music&tag=duc0c-20&field-keywords=\u0002\u00010",
+ "uk": {
+ "*": "//www.amazon.co.uk/s/?tag=duc0c-21&url=search-alias%3Daps&field-keywords=\u0002\u0001470",
+ "mp3": "//www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Ddigital-music&tag=duc0c-21&field-keywords=\u0002&x=0&y=0\u00010"
+ },
+ "us": {
+ "*": "//www.amazon.com/s/?tag=duc0c-20&url=search-alias%3Daps&field-keywords=\u0002\u000141823",
+ "ic": "//music.amazon.com/search/\u0002\u00018",
+ "ing": "//www.google.com/cse?cx=partner-pub-4049870445958322%3Apxmbpw-atgu&ie=ISO-8859-1&q=\u0002\u00010"
+ },
+ ".ca": "//www.amazon.ca/s/?url=search-alias%3Daps&field-keywords=\u0002\u000112",
+ "eblo": "http://search.ameba.jp/search.html?q=\u0002\u00010",
+ "egy": "//careers.amegybank.com/search-results?keywords=\u0002\u00010",
+ "erican": "//agentcareers.americannational.com/search-results?keywords=\u0002\u00010",
+ "ericastestkitchen": "http://americastestkitchen.com/search?q=\u0002\u00010",
+ "etsoc": "//journals.ametsoc.org/action/doSearch?AllField=\u0002\u00010",
+ "iami": "http://slist.amiami.com/top/search/list?s_keywords=\u0002\u00010",
+ "ipwned": "//haveibeenpwned.com/account/\u0002\u00010",
+ "plify": "//careers.amplifysnacks.com/search-results?keywords=\u0002\u00010",
+ "pnet": "http://www.auto-medienportal.net/artikel/quicksearch/?searchterm=\u0002\u00010",
+ "pparit": "http://www.ampparit.com/haku?q=\u0002\u00010",
+ "p-what": "http://www.amp-what.com/unicode/search/\u0002\u00010",
+ "pwhat": "http://www.amp-what.com/unicode/search/\u0002\u00010",
+ "vid": {
+ "*": "//www.amazon.com/s/url=search-alias%3Dinstant-video&field-keywords=\u0002\u00010",
+ "de": "http://www.amazon.de/s/url=search-alias%3Dinstant-video&field-keywords=\u0002\u00010"
+ },
+ "way": "//www.amway.com/Shop/Search/SearchResults.aspx?searchkeyword=\u0002\u00010"
+ },
+ "n": {
+ "*": "http://anilist.co/search?q=\u0002\u000121",
+ "f": "//www.abercrombie.com/webapp/wcs/stores/servlet/Search?storeId=10051&catalogId=10901&langId=-1&departmentCategoryId=10000&search-field=\u0002\u00010",
+ "g": {
+ "*": "//duckduckgo.com/?q=\u0002+site%3Aangular.io\u00010",
+ "ry": "//www.angrymetalguy.com/?s=\u0002\u00010",
+ "elajey": "//www.angelajey.com/index.php?route=product/search&search=\u0002\u00010",
+ "elhalowiki": "http://www.rigvedawiki.net/r1/wiki.php/\u0002\u00010",
+ "ellist": "//angel.co/search?q=\u0002\u00010",
+ "hami": "//www.anghami.com/search/\u0002\u00010",
+ "lenews": "//www.anglenews.com/?s=\u0002\u00010",
+ "ular": {
+ "*": "//angular.io/api?query=\u0002\u000143",
+ "js": "//docs.angularjs.org/?as_q=\u0002\u00010"
+ },
+ "uscatalogue": "http://library.angus.gov.uk/ipac20/ipac.jsp?session=138BN7L458484.310312&menu=search&aspect=subtab184&npp=10&ipp=20&spp=20&profile=ang--7&ri=&term=\u0002&index=.AW&x=-354&y=-218&aspect=subtab184&term=&index=.TW&term=&index=.SE&term=&index=.SW&term=&index=BSTLLR&sort=\u00010"
+ },
+ "i": {
+ "*": "//anilist.co/search/anime?sort=SEARCH_MATCH&search=\u0002\u0001366",
+ "db": "//anidb.net/perl-bin/animedb.pl?adb.search=\u0002&show=animelist&do.search=search\u0001342",
+ "me": {
+ "*": "//anidb.net/perl-bin/animedb.pl?show=animelist&adb.search=\u0002\u0001120",
+ "s": "//kitsu.io/anime?text=\u0002\u00010",
+ "ka": "http://animeka.com/search/index.html?req=\u0002\u00010",
+ "filler": "http://www.animefillerlist.com/search/node/\u0002\u00010",
+ "lyrics": "http://www.animelyrics.com/search.php?q=\u0002\u00010",
+ "newsnetwork": "http://www.animenewsnetwork.com/search?cx=016604166282602569737:znd1ysjewre&cof=FORID:11&q=\u0002\u00010",
+ "-planet": "http://www.anime-planet.com/anime/all?name=\u0002\u00014",
+ "planet": "http://www.anime-planet.com/anime/all?name=\u0002\u00014"
+ },
+ "bara": "http://anime.akihabara.cz/vyhledavani/\u0002\u00010",
+ "bin": "//anibin.blogspot.com/search?q=\u0002\u00010",
+ "fit": "//katzothek.provital.com/content/partners/katzothek/futtershop/de/article_search?article_name=\u0002\u00010",
+ "list": "//anilist.co/search/anime?sort=SEARCH_MATCH&search=\u0002\u0001366",
+ "lyrics": "//anilyrics.com/?s=\u0002\u00010",
+ "msi": "//animesimple.com/search?q=\u0002\u00010",
+ "search": "//www.anisearch.com/search?q=\u0002\u000147"
+ },
+ "j": "http://www.actionnewsjax.com/?q=\u0002\u00010",
+ "n": {
+ "*": "http://www.animenewsnetwork.com/search?cx=016604166282602569737:znd1ysjewre&cof=FORID:11&q=\u0002\u00010",
+ "e": {
+ "*": "http://www.animenewsnetwork.com/encyclopedia/search/name?only=anime&q=\u0002\u00019",
+ "x.931women": "//annex.931women.com/?s=\u0002: \u00010"
+ },
+ "ie": "http://www.appannie.com/search/?q=\u0002\u00010"
+ },
+ "u": {
+ "*": "http://find.anu.edu.au/search?filter=0&client=anu_frontend&proxystylesheet=anu_frontend&site=default_collection&btnG=Search&q=\u0002&search1=Go\u00010",
+ "lib": "http://anu.summon.serialssolutions.com/search?q=\u0002\u00010"
+ },
+ "w": "http://anw.inl.nl/search?type=simple&q=\u0002\u00010",
+ "ag": {
+ "*": "//new.wordsmith.org/anagram/anagram.cgi?anagram=\u0002&t=500&a=n\u00010",
+ "ram": "http://www.oneacross.com/cgi-bin/search_anagram.cgi?p0=\u0002&c0=&s=+Go+\u000116"
+ },
+ "au": "http://www.androidauthority.com/?q=\u0002\u00014",
+ "ki": "//ankiweb.net/shared/decks/\u0002\u00015",
+ "sa": "http://www.ansa.it/ricerca/index.jsp?si=1&ns=10&sb=date&lang=it&home=%2Fweb&search=1&c=webarchive&qt=\u0002&radio-search=ansa&forid=1&ie=ISO-8859-1&oe=ISO-8859-1&cof=GALT%3A%23008000%3BGL%3A1%3BDIV%3A%23009C41%3BVLC%3A663399%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3A336699%3BALC%3A10578b%3BLC%3A10578b%3BT%3A000000%3BGFNT%3A10578b%3BGIMP%3A10578b%3BFORID%3A11&hl=it&client=pub-2538762546398839\u000148",
+ "101": "http://anarchy101.org/search?q=\u0002\u00010",
+ "aconda": "//anaconda.org/search?q=\u0002\u00010",
+ "alog": "//careers.analog.com/search-results?keywords=\u0002\u00015",
+ "alyser": "//duckduckgo.com/?q=\u0002+site%3Ahttp%3A%2F%2Flarmarange.github.io%2Fanalyse-R\u00010",
+ "andtech": "http://anandtech.com/SearchResults?q=\u0002\u00010",
+ "aped": "http://en.anarchopedia.org/index.php?title=Special:Search&search=\u0002\u00010",
+ "archistlib": "http://theanarchistlibrary.org/search?query=\u0002\u00015",
+ "archopedia": "http://anarchopedia.org/Special:Search?search=\u0002\u00010",
+ "cestry": "//www.ancestry.com/search/?keyword=\u0002\u00010",
+ "dar": "//android-arsenal.com/search?q=\u0002\u00010",
+ "dce": "//www.androidcentral.com/search/\u0002\u00010",
+ "dev": "//developer.android.com/s/results/?q=\u0002\u00013",
+ "dpol": "http://www.androidpolice.com/?s=\u0002\u000160",
+ "droid": {
+ "*": "//developer.android.com/s/results/?q=\u0002\u00013",
+ "pit": {
+ "*": "http://www.androidpit.com/en/android/search?st=\u0002\u00010",
+ "fr": "http://www.androidpit.fr/search?st=\u0002\u00010"
+ }
+ },
+ "evry": "http://www.anevry.com/?s=\u0002\u00010",
+ "laf": "//www.apertium.org/index.eng.html?dir=nld-afr&q=\u0002\u00010",
+ "lamı": "http://nedir-sozluk.com/ara/\u0002\u00010",
+ "mat": "http://www.anmat.gov.ar/resultados.asp?cx=018082787451070703178%3Arx-vbt5pdfu&cof=FORID%3A10&ie=UTF-8&q=\u0002\u00010",
+ "obii": "http://www.anobii.com/search?s=1&keyword=\u0002\u000113",
+ "oikis": "http://anoik.is/systems/\u0002\u00010",
+ "otchortwo": "http://anotchortwo.com/?s=\u0002\u00010",
+ "sible": {
+ "*": "//docs.ansible.com/ansible/latest/#stq=\u0002&stp=1\u0001100",
+ "-galaxy": "//galaxy.ansible.com/list#/roles?page=1&page_size=10&autocomplete=\u0002\u00018",
+ "mod": "http://docs.ansible.com/ansible/\u0002_module.html\u00017"
+ },
+ "s.splunk": "//answers.splunk.com/search.html?q=\u0002\u00010",
+ "swer": {
+ "s": {
+ "*": "http://www.answers.com/\u0002\u00013",
+ "ingenesis": "//answersingenesis.org/search/?q=\u0002\u00010",
+ ".splunk": "http://answers.splunk.com/search/?q=\u0002&Submit=Search\u00010"
+ },
+ "*": "http://answers.yahoo.com/search/search_result;_ylt=AmLr_DtDPVmDQzOuA2T6sxAjzKIX;_ylv=3?p=\u0002&submit-go=Search+Y!+Answers\u00010"
+ },
+ "tiwar": "http://news.antiwar.com/?s=\u0002\u00010",
+ "tonimo": {
+ "*": "http://www.antonimos.net/?termino=\u0002&btnG=Ant%F3nimos\u00010",
+ "s": "//www.antonimos.com.br/busca.php?q=\u0002\u00010"
+ },
+ "tonym": "http://www.synonyms.net/antonyms/\u0002\u000114",
+ "tyweb": "http://antyweb.pl/?s=\u0002\u00010"
+ },
+ "o": {
+ "3": {
+ "*": "//archiveofourown.org/works/search?utf8=%E2%9C%93&work_search%5Bquery%5D=\u0002\u0001810",
+ "tags": "//archiveofourown.org/tags/search?query[name]=\u0002\u00017"
+ },
+ "*": "//www.amazon.com/gp/your-account/order-history/ref=oh_aui_search?opt=ab&search=\u0002\u000119",
+ "e": {
+ "*": "http://ageofempires.wikia.com/wiki/Special:Search?search=\u0002\u00016",
+ "2r": "//www.reddit.com/r/aoe2/search?q=\u0002&restrict_sr=1\u00010"
+ },
+ "l": "http://search.aol.com/aol/search?enabled_terms=&s_it=comsearch&q=\u0002\u00015",
+ "m": "http://www.artofmanliness.com/?s=\u0002\u000121",
+ "ps": {
+ "*": "http://artofproblemsolving.com/wiki/index.php?title=Special%3ASearch&fulltext=Search&search=\u0002\u00014",
+ "comm": "//artofproblemsolving.com/community/search/\u0002\u00016"
+ },
+ "ty": "//www.albumoftheyear.org/search.php?q=\u0002\u0001132",
+ "wow": "http://db.vanillagaming.org/?search=\u0002\u00010"
+ },
+ "p": {
+ "a": {
+ "*": "http://apastyle.org/search.aspx?query=\u0002\u00015",
+ "che": "//duckduckgo.com/?q=\u0002+site%3Ahttps%3A%2F%2Fhttpd.apache.org%2Fdocs%2Fcurrent%2F\u00018",
+ "ckages": "http://www.archlinux.org/packages/?sort=&q=\u0002&maintainer=&last_update=&flagged=&limit=50\u00015",
+ "rat": "http://www.aparat.com/result/\u0002\u00010"
+ },
+ "*": "http://ap.org/Search/SearchResults?searchkeywords=\u0002\u000142",
+ "c": {
+ "*": "//auspost.com.au/search?q=\u0002\u00010",
+ "k": "//www.archlinux.org/packages/?sort=&q=\u0002&maintainer=&last_update=&flagged=&limit=50\u0001118",
+ "entral": "//apstudent.collegeboard.org/search?searchq=\u0002&searchType=aps_site&tp=aps_site\u00010"
+ },
+ "h": "http://ArcadePrehacks.com/\u0002\u00010",
+ "i": {
+ "*": "//api.duckduckgo.com/?q=\u0002&o=json&pretty=1&no_html=1&no_redirect=1\u00013",
+ "n": {
+ "*": "//academicprogress.in/library/search/?q=\u0002\u00010",
+ "c": "//careers.activision.com/search-results?keywords=\u0002\u00010"
+ },
+ "v": "//www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Dprime-instant-video&field-keywords=\u0002\u00013",
+ "dockrails": "http://apidock.com/rails/search/quick?query=\u0002\u00010",
+ "dockruby": "http://apidock.com/ruby/search/quick?query=\u0002 \u00010",
+ "lity": "//apility.io/search/\u0002\u00010",
+ "platform": "//duckduckgo.com/?q=\u0002+site%3Aapi-platform.com&t=canonical&ia=web\u00010"
+ },
+ "k": {
+ "*": "http://apps.evozi.com/apk-downloader/?id=\u0002\u000141",
+ "d": "//apkpure.com/search?q=\u0002\u00010",
+ "g": "//www.archlinux.org/packages/?sort=&q=\u0002&maintainer=&flagged=\u0001594",
+ "m": {
+ "*": "//www.apkmirror.com/?s=\u0002\u000171",
+ "irror": "//www.apkmirror.com/?s=\u0002\u000171"
+ },
+ "pure": "//apkpure.com/search?q=\u0002\u00010"
+ },
+ "l": {
+ "*": "http://scitation.aip.org/search?value1=\u0002&option1=all\u00014",
+ "n": "//www.anime-planet.com/anime/all?name=\u0002\u00010",
+ "ib": "//austin.bibliocommons.com/v2/search?query=\u0002&searchType=smart\u00010",
+ "cart": "//aplcart.info/?q=\u0002\u00010"
+ },
+ "m": {
+ "*": "//atom.io/packages/search?q=\u0002\u00013",
+ "ex": "http://www.apmex.com/search?q=\u0002\u00010"
+ },
+ "o": {
+ "d": "//apod.nasa.gov/apod/ap\u0002.html\u00010",
+ "*": "//addons.palemoon.org/search/?terms=\u0002\u00010",
+ "lloduck": "http://www.apolloduck.com/search.phtml?search=\u0002&exact=1&sr=1&q=1\u00013"
+ },
+ "p": {
+ "*": "//www.amazon.com/s/search-alias%3Dpantry&field-keywords=\u0002\u000110",
+ "db": "http://www.winehq.org/search?cx=partner-pub-0971840239976722%3Aw9sqbcsxtyf&cof=FORID%3A10&ie=UTF-8&q=\u0002&siteurl=appdb.winehq.org%2F&ref=www.winehq.org%2Fsearch%2F%3Fcx%3Dpartner-pub-0971840239976722%253Aw9sqbcsxtyf%26cof%3DFORID%253A10%26ie%3DUTF-8%26q%3Dsomething&ss=674j114846j5\u000125",
+ "ex": "//appexchange.salesforce.com/results?keywords=\u0002\u00010",
+ "ie": "//www.ah.nl/zoeken?rq=\u0002\u000158",
+ "le": {
+ "*": "http://www.apple.com/search/?q=\u0002\u0001190",
+ "br": "//www.apple.com/br/search/\u0002\u00010",
+ "se": "http://apple.stackexchange.com/search?q=\u0002\u000112",
+ "tv": "//duckduckgo.com/?q=\u0002%20site%3Atv.apple.com\u00019",
+ "base": "//applebase.net/Search.html?term=\u0002&cat=1\u00010",
+ "daily": {
+ "*": "//hk.appledaily.com/search/\u0002?q=\u0002\u00010",
+ "tw": "//tw.appledaily.com/search/result?querystrS=\u0002\u00010"
+ },
+ "dev": "//developer.apple.com/search/index.php?q=\u0002 \u000127",
+ "discuss": "//discussions.apple.com/search.jspa?peopleEnabled=true&userID=&containerType=&container=&spotlight=true&q=\u0002\u00010",
+ "fritter": "//www.applefritter.com/search/node/\u0002\u00010",
+ "insider": "http://appleinsider.com/search/\u0002\u00010",
+ "maps": "http://maps.apple.com/?q=\u0002\u000158",
+ "music": "//itunes.apple.com/search?term=\u0002&entity=musicTrack\u000112",
+ "realty": "http://applesold.com/search?q=\u0002\u00010",
+ "software": "//support.apple.com/en_US/downloads/\u0002\u00013",
+ "support": "http://support.apple.com/kb/index?page=search&product=&q=\u0002&src=support_site.kbase.search.searchresults\u00010",
+ "trailer": "http://duckduckgo.com/?q=site:trailers.apple.com%20\u0002\u00010"
+ },
+ "nr": "http://appnr.com/search/\u0002\u00010",
+ "vv": "http://www.appvv.com/search.htm?search=\u0002&device=1\u00010",
+ "brain": "http://www.appbrain.com/search?q=\u0002\u00010",
+ "cel": "http://developer.appcelerator.com/apidoc/search/mobile/latest?q=\u0002\u00010",
+ "ear": "//appear.in/\u0002\u00016",
+ "engine": "http://code.google.com/query/#p=appengine&q=\u0002\u00010",
+ "inn": "//search.appinn.com/cse/search?q=\u0002&s=5999676002387380177&source=www.appinn.com\u00010",
+ "pedia": "http://programs.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "shopper": "http://appshopper.com/search/?search=\u0002\u00010",
+ "sliced": "http://appsliced.co/apps?search=\u0002\u00015",
+ "s.splunk": "http://apps.splunk.com/apps/#/search/\u0002\u00010",
+ "store": "/?q=site%3Aitunes.apple.com%2Fus%2Fapp%2F+\u0002\u000127"
+ },
+ "s": "http://journals.aps.org/search?q=\u0002\u000123",
+ "t": {
+ "*": "//packages.ubuntu.com/search?keywords=\u0002&searchon=all&suite=all&section=all\u0001126",
+ "browse": "//www.apt-browse.org/search/?query=\u0002\u00010",
+ "oide": "//en.aptoide.com/search?query=\u0002\u00010"
+ },
+ "ro": "//aprohirdetesingyen.hu/osszes-hirdetes/kereses--\u0002\u00010",
+ "ert-en-es": "//www.apertium.org/index.spa.html?dir=eng-spa&q=\u0002#translation\u00010",
+ "ertium": "http://wiki.apertium.org/w/index.php?title=Special:Search&search=\u0002&go=Go\u00010",
+ "nic": "//wq.apnic.net/static/search.html?query=\u0002\u00013",
+ "ril": "//www.april.org/search/node/\u0002\u00010",
+ "rsfi": "http://aprs.fi/#!mt=roadmap&z=11&call=a%2F\u0002&timerange=3600&tail=3600\u00010",
+ "vde": "//www.amazon.de/s?k=\u0002&i=instant-video\u000110"
+ },
+ "r": {
+ "a": {
+ "*": "http://www.ara.cat/cercador/?text=\u0002\u00010",
+ "bic": "http://www.perseus.tufts.edu/hopper/morph?l=\u0002&la=ar\u00010",
+ "bnews": "http://www.arabnews.com/search/google/\u0002\u00010",
+ "geek": "http://www.arageek.com/?s=\u0002\u00010",
+ "mex": "//www.aramex.com/track-results-multiple.aspx?ShipmentNumber=\u0002\u00010"
+ },
+ "*": "http://allrecipes.com/search/default.aspx?qt=k&wt=\u0002&rt=r&origin=Recipe%20Search%20Results\u000147",
+ "b": {
+ "*": "//ruby.libhunt.com/search?query=\u0002\u00010",
+ "eitsagentur": "//con.arbeitsagentur.de/prod/jobboerse/jobsuche-ui/?VOLLTEXT=\u0002&FCT.ANGEBOTSART=ARBEIT&FCT.AKTUALITAET=100&FCT.BEHINDERUNG=AUS&page=1&size=10&sort=Relevanz&s=5\u00010"
+ },
+ "d": {
+ "*": "//www.ardmediathek.de/ard/search/\u0002\u0001104",
+ "a": "http://www.glyphweb.com/arda/search.asp?search=\u0002\u00010",
+ "moor": "//www.ardmoor.co.uk/search/\u0002\u00010",
+ "uino": {
+ "*": "http://arduino.stackexchange.com/search?q=\u0002\u00013",
+ "reference": "//duckduckgo.com/?q=\u0002+site%3Aarduino.cc&ia=web\u00010"
+ }
+ },
+ "f": "//duckduckgo.com/?q=\u0002+site%3Aar15.com&ia=web\u000186",
+ "k": {
+ "*": "//ark.intel.com/search?q=\u0002\u0001151",
+ "pedia": "http://ark.gamepedia.com/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010",
+ "wiki": "http://ark.gamepedia.com/index.php?search=\u0002\u00014"
+ },
+ "l": "http://aynrandlexicon.com/searchresults/index.html?cx=013104633629966810561%3Ag5jt9ka8qre&cof=FORID%3A11&q=\u0002\u00010",
+ "r": {
+ "*": "http://ffxiv.gamerescape.com/wiki/Special:Search?search=\u0002\u000126",
+ "ow": {
+ "*": "//www.arrow.com/en/products/search?q=\u0002\u00014",
+ "-wikia": "http://arrow.wikia.com/wiki/Special:Search?query=\u0002\u00010"
+ }
+ },
+ "s": {
+ "*": "//arstechnica.com/search/?ie=UTF-8&q=\u0002\u0001270",
+ "uk": "http://arstechnica.co.uk/search/?query=\u0002\u00010",
+ "technica": {
+ "*": "//arstechnica.com/search/?q=\u0002\u000126",
+ "uk": "http://arstechnica.co.uk/search/?query=\u0002\u00010"
+ }
+ },
+ "t": {
+ "d": {
+ "*": "//www.artdiscount.co.uk/catalogsearch/result/?cat=0&q=\u0002 \u00010",
+ "iscount": "//www.artdiscount.co.uk/catalogsearch/result/?cat=0&q=\u0002\u00010"
+ },
+ "e": "//www.arte.tv/fr/search/?q=\u0002&page=1\u000145",
+ "*": "//www.aparatorul.md/?s=\u0002\u00014",
+ "fire": "http://www.artfire.com/browse/?term=\u0002\u00010",
+ "ifact": "//artifact.gamepedia.com/index.php?search=\u0002\u00010",
+ "ist": "http://www.artcyclopedia.com/scripts/tsearch.pl?type=1&t=\u0002\u00010",
+ "smia": "//collections.artsmia.org/index.php?page=search#query=\u0002\u00010",
+ "stor": "//library.artstor.org/#/search/\u0002;page=1;size=48\u00010",
+ "station": "//www.artstation.com/search?q=\u0002&sorting=recent\u000161",
+ "urogoga": "//www.arturogoga.com/?s=\u0002\u00010",
+ "work": "http://www.artcyclopedia.com/scripts/tsearch.pl?t=\u0002&type=2\u00010"
+ },
+ "u": {
+ "*": "//www.arukereso.hu/CategorySearch.php?st=\u0002\u000116",
+ "ba": "//community.arubanetworks.com/t5/forums/searchpage/tab/message?q=\u0002\u00010",
+ "kereso": "//www.arukereso.hu/CategorySearch.php?st=\u0002\u000116"
+ },
+ "x": {
+ "*": "http://arxiv.org/search?query=\u0002&searchtype=all\u000151",
+ "iv": "http://arxiv.org/search?query=\u0002&searchtype=all\u000151"
+ },
+ "ch": {
+ "*": "//wiki.archlinux.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00016659",
+ "i": {
+ "*": "http://catalogue.biu-toulouse.fr/ipac20/ipac.jsp?profile=http://catalogue.biu-toulouse.fr/ipac20/ipac.jsp?profile=http://catalogue.biu-toulouse.fr/ipac20/ipac.jsp?profile=http://catalogue.biu-toulouse.fr/ipac20/ipac.jsp?profile=?q=\u0002:\u00010",
+ "ve": {
+ "d": {
+ "*": "//web.archive.org/web/*/\u0002\u000145",
+ "moe": "//archived.moe/_/search/text/\u0002\u000112"
+ },
+ "*": "//archive.org/search.php?query=\u0002\u0001804",
+ "is": "http://archive.is/search/?q=\u0002\u0001100",
+ "tv": "//archive.org/details/tv?q=\u0002\u00010",
+ "team": "http://www.archiveteam.org/index.php?title=Special%3ASearch&search=\u0002&fulltext=Search\u00010",
+ "web": "//web.archive.org/web/*/\u0002\u000145"
+ },
+ "pel": "http://catalogue.biu-toulouse.fr/ipac20/ipac.jsp?menu=search&aspect=subtab26&npp=10&ipp=20&spp=20&profile=sicd&ri=&index=.GK&term=\u0002\u00010",
+ "plus": "http://univtoulouse.summon.serialssolutions.com/search?s.q=\u0002\u00010"
+ },
+ "ch": {
+ "*": "http://www.archchinese.com/chinese_english_dictionary.html?find=\u0002\u00013",
+ "ine": "http://www.archchinese.com/chinese_english_dictionary.html?find=\u0002 \u00010"
+ },
+ "de": "//wiki.archlinux.de/index.php?search=\u0002\u00010",
+ "fr": "http://wiki.archlinux.fr/index.php?title=Sp%C3%A9cial%3ARecherche&profile=default&search=\u0002&fulltext=Search\u00010",
+ "jp": "//wiki.archlinux.jp/index.php?search=\u0002\u000111",
+ "pl": "//wiki.archlinux.org/index.php/\u0002 _(Polski)\u00010",
+ "angels": "//heavenlyarchangels.wordpress.com/?s=\u0002\u00010",
+ "aur": "//aur.archlinux.org/packages.php?O=0&K=\u0002&do_Search=Go\u000167",
+ "bugs": "//bugs.archlinux.org/index.php?string=\u0002&project=0\u00018",
+ "daily": "//www.archdaily.com/search/all?q=\u0002\u00013",
+ "forums": "//bbs.archlinux.org/search.php?action=search&keywords=\u0002&author=&search_in=0&sort_by=0&sort_dir=DESC&show_as=topics&search=Submit\u000112",
+ "linux": {
+ "*": "//bbs.archlinux.org/search.php?action=search&keywords=\u0002&author=&search_in=0&sort_by=0&sort_dir=DESC&show_as=topics&search=Submit\u000112",
+ "fr": "//wiki.archlinux.fr/index.php?title=Spécial%3ARecherche&profile=default&fulltext=Search&search=\u0002\u00010",
+ "it": "//wiki.archlinux.org/index.php?title=Special%3ASearch&search=\u0002\u00014"
+ },
+ "man": "http://jlk.fjfi.cvut.cz/arch/manpages/search?q=\u0002\u0001222",
+ "packages": "//www.archlinux.org/packages/?q=\u0002\u000162",
+ "pkg": "//www.archlinux.org/packages/?sort=&q=\u0002&maintainer=&flagged=\u0001594",
+ "wiki": "//wiki.archlinux.org/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00011641"
+ },
+ "ia": "http://www.aria.co.uk/Products?search=\u0002\u00010",
+ "in": "http://whois.arin.net/rest/nets;q=\u0002?showDetails=true&showARIN=false&ext=netref2\u000133",
+ "ms": {
+ "*": "//armswiki.org/wiki/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010",
+ "list": "//www.armslist.com/classifieds/search?search=\u0002&location=usa&category=all&posttype=7&ships=\u00010"
+ },
+ "-15": "//veriforcetactical.com/?s=\u0002\u00010",
+ "-ar": "http://www.almaany.com/ar/dict/ar-ar/\u0002\u00010",
+ "-en": "//www.almaany.com/ar/dict/ar-en/\u0002\u00010",
+ "2en": "//translate.google.com/#ar/en/\u0002\u00017",
+ "cadeotaku": "//wiki.arcadeotaku.com/index.php?search=\u0002\u00010",
+ "cblog": "//www.esri.com/en-us/search/?q=\u0002\u00010",
+ "cdev": "//developers.arcgis.com/search/?q=\u0002\u00010",
+ "cdoc": "//doc.arcgis.com/search/?q=\u0002\u00010",
+ "cgis": {
+ "*": "http://www.arcgis.com/home/search.html?q=\u0002\u00010",
+ "res": "http://resources.arcgis.com/content/search-result?searchKeyWord=\u0002\u00010"
+ },
+ "cgames": "http://www.arcgames.com/en/games/all-games/query/\u0002\u00010",
+ "ea51": "http://discuss.area51.stackexchange.com/search?q= \u0002\u00010",
+ "eena": "http://haku.yle.fi/?q=\u0002&category=Areena\u00013",
+ "ena": "//www.are.na/search/\u0002\u00010",
+ "gep": "http://www.argep.hu/main.aspx?suche=\u0002&x=0&y=0\u00010",
+ "gos": {
+ "*": "http://www.argos.co.uk/search/\u0002\u000150",
+ "ie": "http://www.argos.ie/webapp/wcs/stores/servlet/Search?storeId=10152&catalogId=14551&langId=111&searchTerms=\u0002\u00010"
+ },
+ "got": "http://www.speakinglatino.com/?s=\u0002&advanced=0&search_type=&posts_country=&posts_category=&words_country=&words_category=&words_letter=CHOOSE+A+STARTING+LETTER&all_country=&all_letter=CHOOSE+A+STARTING+LETTER\u00010",
+ "madeus": "http://www.armadeus.com/wiki/index.php?search=\u0002\u00010",
+ "morgames": "http://armorgames.com/search/games?type=games&q=\u0002\u00018",
+ "mtemp": "//azure.microsoft.com/de-de/resources/templates/?term=\u0002\u00010",
+ "noldbusck": "//www.arnoldbusck.dk/soeg?s=\u0002&cid=alle\u00010",
+ "nzenarms": "//secure.arnzenarms.com/catalog-search?fulltext=\u0002\u00010"
+ },
+ "s": {
+ "a": {
+ "*": "//sysadmin.libhunt.com/search?query=\u0002\u00010",
+ "hi": "http://sitesearch.asahi.com/.cgi/sitesearch/sitesearch.pl?Keywords=\u0002\u00010",
+ "na": "//app.asana.com/0/search/\u0002\u00010",
+ "psupplies": "//www.asap-supplies.com/catalogsearch/result/?q=\u0002\u00010"
+ },
+ "*": "http://smile.amazon.com/s?url=search-alias%3Daps&field-keywords=\u0002\u00011679",
+ "b": "//astrobites.org/?s=\u0002\u00013",
+ "d": {
+ "a": "//groceries.asda.com/asda-webstore/landing/home.shtml#/search/\u0002\u000117",
+ "*": "//smile.amazon.de/s?url=search-alias%3Daps&field-keywords=\u0002\u000191",
+ "e": "//smile.amazon.de/s/field-keywords=\u0002\u000116"
+ },
+ "g": "//smile.amazon.de/s/?field-keywords=\u0002\u000164",
+ "h": {
+ "a": "//ashadidi.com/search/\u0002\u00010",
+ "*": "//selfhosted.libhunt.com/search?query=\u0002\u00013"
+ },
+ "i": {
+ "*": "http://www.asihablamos.com/www/significado/palabra/\u0002\u00010",
+ "n": "//www.amazon.com/dp/\u0002\u00010",
+ "cs": "http://www.asics.com/us/en-us/search?text=\u0002\u00010",
+ "anwiki": "http://asianwiki.com/index.php?title=Special%3ASearch&search=\u0002&fulltext=Search\u000114",
+ "avape": "//asiavape.co/?s=\u0002&post_type=product\u00010"
+ },
+ "k": {
+ "*": "http://www.ask.com/web?q=\u0002\u00017",
+ "d": "http://apple.stackexchange.com/search?\u0002\u00010",
+ "u": {
+ "*": "http://askubuntu.com/search?q=\u0002\u00013",
+ "bnt": "http://askubuntu.com/search?q=\u0002\u00013",
+ "buntu": "http://askubuntu.com/search?q=\u0002\u00013"
+ },
+ "f5": "//support.f5.com/kb/en-us/search.res.html?productList=big-ip%2Cbc%2Cfp%2C3-dns%2Clc%2Cts%2Cwj%2Cwa_5_x%2Csam%2Clinerate-eol&versionList=all%2C&searchType=basic&isFromGSASearch=false&query=\u0002&site=support_external&client=support-f5-com&q=\u0002&prodName=ALL&prodVersText=&docTypeName=ALL&includeArchived=false&submit_form=&product=all&eolProducts=all&documentType=all\u00010",
+ "vg": "http://www.askvg.com/?s=\u0002\u00010",
+ "apatient": "http://www.askapatient.com/searchresults.asp?searchField=\u0002 \u00010",
+ "fedora": "//ask.fedoraproject.org/en/questions/scope:all/sort:activity-desc/page:1/query:\u0002/\u00010",
+ "imam": "http://askimam.org/public/processsearch/Question.keywords:\u0002/Question.type:1\u00010",
+ "men": "http://ca.askmen.com/search?q=\u0002\u00013",
+ "reddit": "//www.reddit.com/r/AskReddit/search?q=\u0002&restrict_sr=on&sort=relevance&t=all\u00010",
+ "steem": "//www.asksteem.com/search?q=\u0002\u00010",
+ "sutra": "http://www.asksutra.com/en/serp.php?cx=006191677038902776655%3Akobzooodbpy&cof=FORID%3A11&q=\u0002\u00010"
+ },
+ "m": {
+ "*": "http://smile.amazon.com/s/?field-keywords=\u0002\u000131",
+ "uk": "//smile.amazon.co.uk/s?field-keywords=\u0002\u000114",
+ "mrg": "//www.asthamobileshop.ml/_/search?query=\u0002\u00010"
+ },
+ "s": "//smile.amazon.com/s?url=srs%3D5856181011&field-keywords=\u0002\u00010",
+ "x": "//search.asx.com.au/s/search.html?query=\u0002&collection=asx-meta&profile=web\u00013",
+ "cl": "http://ascl.net/code/search/\u0002\u00010",
+ "ee": "//peer.asee.org/?q=\u0002\u00010",
+ "os": "http://www.asos.com/search/?q=\u0002\u00016",
+ "tk": "//stock.adobe.com/search?k=\u0002\u00010",
+ "uk": "//smile.amazon.co.uk/s?field-keywords=\u0002\u000114",
+ "us": "http://www.asus.com/us/Search/?SearchKey=\u0002\u00016",
+ "cent": "//www.ascent.co.nz/search.aspx?query=\u0002&sortBy=products\u00010",
+ "earchoficeandfire": "//asearchoficeandfire.com/?q=\u0002\u00014",
+ "number": "//www.ultratools.com/tools/asnInfoResult?domainName=\u0002\u00010",
+ "oiaf": "http://awoiaf.westeros.org/index.php?search=\u0002\u000133",
+ "terisk": "//duckduckgo.com/?q=\u0002+site%3Awiki.asterisk.org&ia=web\u00010",
+ "tock": "//stock.adobe.com/fr/search?k=\u0002\u00010",
+ "tray": "http://www.astray.com/recipes/?search=\u0002\u00010",
+ "trobin": "http://www.astrobin.com/search/?q=\u0002&search_type=1&solar_system_main_subject=&telescope_type=any&camera_type=any&aperture_min=&aperture_max=&pixel_size_min=&pixel_size_max=&start_date=&end_date=&integration_min=&integration_max=&moon_phase_min=&moon_phase_max=\u00017"
+ },
+ "t": {
+ "*": "http://www.addictivetips.com/archives/search/?cx=015974260755795457590%3Akigcmyffu6y&cof=FORID%3A11&ie=UTF-8&q=\u0002&s=Search\u000124",
+ "d": "http://allthingsd.com/?s=\u0002:\u00010",
+ "h": "//www.athletic.net/Search.aspx#?q=\u0002\u00013",
+ "i": {
+ "*": "http://www.accesstoinsight.org/search_results.html?cx=015061908441090246348%3Adj4lxnh4dda&cof=FORID%3A9%3BNB%3A1&ie=UTF-8&q=\u0002&sa=Search\u00010",
+ "lf": "//academie.atilf.fr/9/consulter/\u0002?page=1\u00018"
+ },
+ "k": "//www.americastestkitchen.com/search?q=\u0002\u00019",
+ "l": {
+ "*": "http://atlwiki.net/Special:Search/\u0002\u00010",
+ "as": {
+ "*": "//atlas.torproject.org/#search/\u0002\u00010",
+ "o": "//www.atlasobscura.com/search?q=\u0002&kind=keyword\u00018",
+ "piv": "http://www.atlaspiv.cz/?beername=\u0002 \u00010"
+ },
+ "antis": "//www.atlantistime.com/?s=\u0002\u00010",
+ "ona": "http://atlona.com/?s=\u0002\u00010"
+ },
+ "o": {
+ "*": "//alternativeto.net/browse/search/?q=\u0002\u0001161",
+ "m": {
+ "*": "//www.atomtickets.com/search?query=\u0002\u00010",
+ "io": "//atom.io/packages/search?utf8=%E2%9C%93&q=\u0002\u00010",
+ "packages": "//atom.io/packages/search?q=\u0002\u00013",
+ "themes": "//atom.io/themes/search?q=\u0002\u00010"
+ }
+ },
+ "p": "http://www.atpworldtour.com/Search/Site.aspx?q=\u0002\u00010",
+ "s": "http://www.abovetopsecret.com/forum/index.php \u0002\u00010",
+ "t": "http://www.advancedtautactica.com/search.php?keywords=\u0002\u00014",
+ "x": "http://atomix.vg/?s=\u0002\u00010",
+ "40": "http://www.at40.com/?q=\u0002\u00010",
+ "js": "//atmospherejs.com/?q=\u0002\u00010",
+ "comp": "//www.atcmarket.cz/zbozi?hledani=true&zb=\u0002\u00010",
+ "matix": "//www.atmatix.pl/patterns/all?q=\u0002\u00010",
+ "mospherejs": "//atmospherejs.com/?q=\u0002\u00010"
+ },
+ "u": {
+ "3": "//www.autoitscript.com/forum/search/?q=\u0002\u00010",
+ "*": "//aur.archlinux.org/packages/?K=\u0002\u000168",
+ "b": {
+ "*": "http://primo.aub.aau.dk/primo_library/libweb/action/search.do?fn=search&ct=search&initialSearch=true&mode=Basic&tab=default_tab&indx=1&dum=true&srt=rank&vid=desktop&frbg=&vl%28freeText0%29=\u0002&scp.scps=scope%3A%28AUB_PROJEKT_DC%29%2Cscope%3A%28AUB_SFX%29%2Cscope%3A%28AUB_AAL%29%2Cscope%3A%28AUB_ESB%29%2Cscope%3A%28AUB_KBH%29%2Cscope%3A%28AUB_VBN%29%2Cprimo_central_multiple_fe&vl%2857399062UI1%29=all_items&vl%281UIStartWith0%29=contains&vl%2857399064UI0%29=any&vl%2857399064UI0%29=title&vl%2857399064UI0%29=any\u00010",
+ "untu": "http://askubuntu.com/search?q=\u0002\u00013"
+ },
+ "k": {
+ "*": "//www.amazon.co.uk/s/?tag=duc0c-21&url=search-alias%3Daps&field-keywords=\u0002\u0001470",
+ "ro": "http://aukro.cz/listing.php/search?string=\u0002\u00010"
+ },
+ "r": {
+ "4": "//aur4.archlinux.org/packages/?K=\u0002\u00013",
+ "*": "//aur.archlinux.org/packages/?K=\u0002\u000168",
+ "p": "//aur.archlinux.org/packages/\u0002\u00017"
+ },
+ "s": {
+ "*": "//www.amazon.com/s/?tag=duc0c-20&url=search-alias%3Daps&field-keywords=\u0002\u000141823",
+ "gov": "http://australia.gov.au/search?collection=gov_all&coverage=all&num_ranks=3&extra_all_num_ranks=3&form=simple&query=\u0002\u00010",
+ "med": "http://www.ausmed.com.au/sitesearch?q=\u0002\u00010",
+ "open": "//ausopen.com/search?search=\u0002\u00010",
+ "post": "http://auspost.com.au/track/track.html?id=\u0002\u00019",
+ "tlii": "http://www.austlii.edu.au/cgi-bin/sinosrch.cgi?query=\u0002&results=50&submit=Search&mask_world=&mask_path=&callback=on&method=auto&meta=%2Fau\u00010",
+ "tralian": "//www.theaustralian.com.au/search-results?q=\u0002\u00010"
+ },
+ "df": "//forum.audacityteam.org/search.php?keywords=\u0002\u00010",
+ "di": {
+ "*": "http://www.audi.de/de/brand/de/tools/search.html#search=\u0002\u00010",
+ "ble": {
+ "*": "http://www.audible.com/search?advsearchKeywords=\u0002\u0001113",
+ "de": "http://www.audible.de/search?advsearchKeywords=\u0002\u00010",
+ "uk": "http://www.audible.co.uk/search/?advsearchKeywords=\u0002&filterby=field-keywords&x=0&y=0\u00013",
+ ".com": "http://www.audible.com/search?advsearchKeywords=\u0002\u0001113",
+ ".de": "http://www.audible.de/search?advsearchKeywords=\u0002\u00010"
+ },
+ "obookjp": "//audiobook.jp/search?q=\u0002\u00010",
+ "ofanzine": "http://fr.audiofanzine.com/recherche/\u0002.html\u00010",
+ "ogon": "//app.audiogon.com/listings?&global_search_text=\u0002\u00010",
+ "ojungle": "http://audiojungle.net/search?utf8=%E2%9C%93&term=\u0002\u00010",
+ "onetwork": "http://www.audionetwork.com/show-production-results.aspx?stype=4&keywords=\u0002\u00010"
+ },
+ "d2usd": "http://www.xe.com/currencyconverter/convert/?Amount=\u0002&From=AUD&To=USD\u00010",
+ "dubon": {
+ "b": "http://birds.audubon.org/search/node?keys=\u0002\u00010",
+ "*": "http://www.audubon.org/search/node?keys=\u0002\u00010",
+ "mag": "http://www.audubonmagazine.org/search/node?keys=\u0002\u00010"
+ },
+ "lete": "http://www.aulete.com.br/\u0002\u00013",
+ "one": "http://search.auone.jp/?q=\u0002\u00010",
+ "tos": {
+ "*": "http://www.autocosmos.com.mx/search?q=\u0002\u00010",
+ "ar": "//www.autosar.org/nc/document-search/?tx_sysgsearch_pi1%5Bquery%5D=\u0002\u00010"
+ },
+ "toanything": "http://www.autoanything.com/shop/\u0002\u00010",
+ "toblip": "http://www.autoblip.com/used/\u0002 \u00010",
+ "tobus": "http://seznam-autobusu.cz/seznam?numberPlateOrNumber=\u0002\u000110",
+ "tocar": "http://www.autocar.co.uk/SearchResults.aspx?q=\u0002\u00010",
+ "tozone": "http://www.autozone.com/searchresult?searchText=\u0002\u000114"
+ },
+ "v": {
+ "*": "//www.avclub.com/search?q=\u0002\u00014",
+ "c": {
+ "*": "http://www.avclub.com/search/?q=\u0002\u00018",
+ "lub": "//www.avclub.com/search?q=\u0002\u00014"
+ },
+ "g": {
+ "*": "http://search.avg.com/search?q=\u0002\u00010",
+ "kb": "http://kb.avg.com/pkb_Home?q=\u0002\u00010"
+ },
+ "i": {
+ "*": "//avicultura.com/?s=\u0002\u00010",
+ "s": "//www.applevis.com/search?search_api_views_fulltext=\u0002\u00010",
+ "to": "//www.avito.ru/rossiya?q=\u0002\u0001100"
+ },
+ "w": "http://anevandos.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "ax": {
+ "*": "http://avxsearch.se/search?q=\u0002:\u00010",
+ "h": "http://avaxsearch.net/avaxhome_search?q=\u0002 &a=&commit=Search&c=&l=&sort_by=\u00010"
+ },
+ "tm": "http://www.adamvstheman.com/?s=\u0002 \u00010",
+ "vo": "//www.avvo.com/search?query=\u0002&commit=Search\u00010",
+ "aktiv": "//www.alpenvereinaktiv.com/en/search/?q=\u0002\u00010",
+ "anza": "//www.avanza.se/sok.html?query=\u0002\u000116",
+ "atar": {
+ "*": "http://avatar.wikia.com/wiki/Special:Search?query=\u0002\u00018",
+ "press": "http://www.avatarpress.com/?s=\u0002\u00010"
+ },
+ "echi": "//avechi.com/catalogsearch/result/?q=\u0002\u00010",
+ "entrix": "//www.aventrix.com/?q=\u0002\u00010",
+ "enwiki": "http://www.asexuality.org/wiki/index.php?search=\u0002\u00010",
+ "pod": "//avpodcast.net/?s=\u0002\u00010",
+ "toprom": "//avtoprom.org/search.php?keywords=\u0002\u00010"
+ },
+ "w": {
+ "*": "//wiki.archlinux.org/index.php?title=Special%3ASearch&search=\u0002\u00014",
+ "d": {
+ "*": "//www.amazon.com/s/url=search-alias%3Dwarehouse-deals&field-keywords=\u0002\u000111",
+ "e": "//wiki.archlinux.de/index.php?title=Spezial%3ASuche&search=\u0002\u00010"
+ },
+ "s": "//docs.aws.amazon.com/search/doc-search.html?searchPath=documentation&searchQuery=\u0002 \u000179",
+ "ad": "http://wordsmith.org/awad/search.html?cx=partner-pub-0068747404870456%3A118gxl-7atb&cof=FORID%3A11&q=\u0002&sa=Search\u00010",
+ "ay": "//www.getawaygear.com/index.php?page=search&sPattern=\u0002\u00010",
+ "are": "http://flightaware.com/live/airport/\u0002\u00010",
+ "erb": "//ruby.libhunt.com/search?query=\u0002\u00010",
+ "esomecow": "http://awesomecow.com/index.php?ieska=\u0002\u00013",
+ "esomenauts": "http://awesomenauts.gamepedia.com/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u00010",
+ "iki": "//www.augsburgwiki.de/index.php/AugsburgWiki/Suchergebnisse?q=\u0002\u00013",
+ "img": "http://images.search.yahoo.com/search/images;_ylt=A0PDoS1.milPyVkAh7OJzbkF?p=\u0002&fr=alltheweb&ei=utf-8&n=30&x=wrt&y=Search\u00015",
+ "isdom": "//www.ancientwisdom.biz/search.php?q=\u0002\u00010",
+ "oiaf": "http://awoiaf.westeros.org/index.php?search=\u0002&title=Special%3ASearch&go=Go\u000125"
+ },
+ "x": "http://androidxref.com/5.1.0_r1/search?&project=abi&project=art&project=bionic&project=bootable&project=build&project=cts&project=dalvik&project=developers&project=development&project=device&project=docs&project=external&project=frameworks&project=hardware&project=libcore&project=libnativehelper&project=ndk&project=packages&project=pdk&project=prebuilts&project=sdk&project=system&project=tools&q=\u0002\u00015",
+ "y": {
+ "*": "//www.aboutyou.de/suche?term=\u0002&search_source=ddgo\u00017",
+ "rne": "//ayrne.io/?s=\u0002\u00010"
+ },
+ "z": {
+ "*": "//www.amazon.com/s/?tag=duc0c-20&url=search-alias%3Daps&field-keywords=\u0002\u000141823",
+ "d": "//www.amazon.de/s/?url=search-alias%3Daps&field-keywords=\u0002\u000139",
+ "e": "//www.amazon.es/s/ref=nb_sb_noss_1?__mk_es_ES=%C3%85M%C3%85%C5%BD%C3%95%C3%91&url=search-alias%3Daps&field-keywords=\u0002\u000130",
+ "f": {
+ "*": "//www.amazon.fr/s/?url=search-alias%3Daps&field-keywords=\u0002&tag=duc0a-21\u0001125",
+ "onts": "//www.azfonts.net/search.html?query=\u0002\u00010"
+ },
+ "l": {
+ "*": "http://search.azlyrics.com/search.php?q=\u0002\u0001131",
+ "ane": "//azurlane.koumakan.jp/w/index.php?search=\u0002\u000116",
+ "yrics": "http://search.azlyrics.com/search.php?q=\u0002\u0001131"
+ },
+ "m": "//www.azom.com/search.aspx?q=\u0002&site=all&fsb=1\u00010",
+ "s": "//azspot.net/search/\u0002\u00010",
+ "ol": "http://azol.de/suche/?q=\u0002\u00010",
+ "om": "//www.azom.com/search.aspx?q=\u0002&site=all&fsb=1\u00010",
+ "uk": "//www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=\u0002&tag=duc0c-21\u0001653",
+ "ure": "//azure.microsoft.com/en-us/search/?q=\u0002\u00017"
+ },
+ ".a": {
+ "*": "//aktueladam.com/?s=\u0002 \u00010",
+ "t": "//www.amazon.de/s/field-keywords=\u0002\u00010"
+ },
+ ".t": "//arcade.tokyo/?s=\u0002\u00010",
+ ".de": "//www.amazon.de/s/field-keywords=\u0002\u00010",
+ ".es": "//www.amazon.es/s/ref=nb_sb_noss?__mk_es_ES=ÅMÅŽÕÑ&url=search-alias%3Daps&field-keywords=\u0002\u000144",
+ ".in": "//www.amazon.in/s/?tag=duc21-21&url=search-alias%3Daps&field-keywords=\u0002\u0001128",
+ ".it": "//www.amazon.it/s/?url=search-alias%3Daps&field-keywords=\u0002\u000143",
+ ".uk": "//www.amazon.co.uk/s/field-keywords=\u0002\u00014",
+ "NOW": "//primenow.amazon.com/search?k=\u0002 \u00010",
+ "qasha": "//www.aqasha.de/search/result?term=\u0002\u00010",
+ "qicn": "http://aqicn.org/city/\u0002\u00010",
+ "-tm": "http://forum.a-tm.co.jp/search?q=hello&searchJSON={%22keywords%22%3A%22\u0002%22}\u00010"
+ },
+ "b": {
+ "5": "http://babylon5.wikia.com/wiki/Special:Search?search=\u0002\u00018",
+ "a": {
+ "b": {
+ "a": "//www.alibaba.com/trade/search?IndexArea=product_en&CatId=&SearchText=\u0002\u00010",
+ "*": "http://www.babla.fr/anglais-francais/\u0002\u000112",
+ "p": {
+ "*": "//en.bab.la/dictionary/polish-english/\u0002\u00010",
+ "l": {
+ "*": "http://pl.bab.la/slownik/angielski-polski/\u0002\u0001111",
+ "ru": "//pl.bab.la/slownik/polski-rosyjski/\u0002\u00010"
+ }
+ },
+ "cs": "//en.bab.la/dictionary/english-czech/\u0002\u00010",
+ "el": {
+ "*": "http://nl.bab.la/woordenboek/nederlands-engels/\u0002\u00014",
+ "net": "http://live.babelnet.org/search?word=\u0002&lang=EN\u00010"
+ },
+ "sv": "http://sv.bab.la/lexikon/engelsk-svensk/\u0002\u000124",
+ "dedk": "http://fr.bab.la/dictionnaire/danois-allemand/\u0002\u00010",
+ "ende": "http://en.bab.la/dictionary/english-german/\u0002\u00010",
+ "eneo": "http://en.bab.la/dictionary/english-esperanto/\u0002\u00015",
+ "ensw": "//en.bab.la/dictionary/english-swedish/\u0002\u00010",
+ "esde": "http://de.bab.la/woerterbuch/spanisch-deutsch/\u0002\u00010",
+ "idoo": "//babidoo.de/?s=\u0002\u00010",
+ "ylonee": "http://traductor.babylon-software.com/ingles/a-espanol/\u0002\u00010",
+ "ymigo": "//babymigo.com/search/questions?query=\u0002\u00010"
+ },
+ "*": "http://beeradvocate.com/search?q=\u0002&qt=beer\u000125",
+ "c": {
+ "*": "http://buenosairesconnect.com/?s=\u0002\u00010",
+ "on": "http://oracleofbacon.org/cgi-bin/movielinks?a=Kevin+Bacon&b=\u0002\u00010",
+ "kpack": {
+ "*": "http://backpack.tf/id/\u0002\u00010",
+ "er": "//www.backpacker.com/search?query=\u0002\u00010"
+ }
+ },
+ "m": {
+ "*": "http://www.booksamillion.com/search?query=\u0002\u00013",
+ "bali": "//duckduckgo.com/?q=site%3Abambali.net+\u0002\u00010"
+ },
+ "x": "http://www.bax-shop.nl/assortiment?keyword=\u0002&avz=true\u00010",
+ "di": "//badi.com/us/s/\u0002\u00010",
+ "hn": "http://reiseauskunft.bahn.de/bin/query.exe/dn?S=&Z=\u0002\u000147",
+ "ng": {
+ "*": "/bang?q=\u0002\u00011712",
+ "s": "//duckduckgo.com/bang?q=\u0002\u0001803",
+ "lg": "http://de.pons.com/übersetzung?q=\u0002&l=dela&in=&lf=de\u00010",
+ "fren": "//de.pons.com/%C3%BCbersetzung?q=\u0002&l=enfr&in=&lf=fr\u00010",
+ "good": "http://www.banggood.com/index.php?keywords=\u0002&cat_id=0&com=search\u000127"
+ },
+ "nq": "http://www.banq.qc.ca/techno/recherche/rms.html?keyword=\u0002&Recherche=tout&fonction=chercher&afficherPortail=checked&afficherIris=checked&afficherPistard=checked&afficherColNum=checked\u00010",
+ "nt": "//archive.nyafuu.org/bant/search/text/\u0002/\u00014",
+ "se": {
+ "*": "//www.base-search.net/Search/Results?lookfor=\u0002&type=all&oaboost=1&ling=1&name=&newsearch=1&refid=dcbasen\u00017",
+ "64e": "//cryptography.cc/convert?text=\u0002&algorithm=base64encode\u00013",
+ "ballreference": "http://www.baseball-reference.com/pl/player_search.cgi?search=\u0002\u00010",
+ "notes": "http://www.basenotes.net/fragrancedirectory/?search=\u0002\u00010",
+ "search": "http://www.base-search.net/Search/Results?lookfor=\u0002&refid=duckduckgo\u00010"
+ },
+ "sh": "http://duckduckgo.com/?q=\u0002+site:mywiki.wooledge.org,wiki.bash-hackers.org\u000122",
+ "to": {
+ "*": "http://bato.to/search?name=\u0002&name_cond=c\u000138",
+ "to": "http://bato.to/search?name=\u0002&name_cond=c\u000138"
+ },
+ "eldung": "//www.baeldung.com/?s=\u0002\u00014",
+ "idu": "http://www.baidu.com/s?wd=\u0002&cl=3\u0001723",
+ "ilii": "http://www.bailii.org/cgi-bin/sino_search_1.cgi?sort=rank&query=\u0002\u00010",
+ "ixaki": "http://www.baixaki.com.br/busca.asp?q=\u0002\u00010",
+ "katsuki": "//www.baka-tsuki.org/project/index.php?search=\u0002\u00010",
+ "kaupdatesmanga": "//www.mangaupdates.com/search.html?search=\u0002\u00016",
+ "llot": "//ballotpedia.org/wiki/index.php?search=\u0002\u00010",
+ "ncodata": "//bancodata.com.br/busca/?i=\u0002\u00010",
+ "ndq": "//www.diy.com/search?Ntt=\u0002\u00010",
+ "ndband": "//band-band.com/?s=\u0002\u00010",
+ "ndcamp": "//bandcamp.com/search?q=\u0002\u0001659",
+ "neks": "//baneks.site/search/\u0002\u00010",
+ "nned": "//banned.video/?q=\u0002\u000112",
+ "rchive": "//thebarchive.com/_/search/text/\u0002\u00010",
+ "rgain": "http://www.shopping-bargains.com/?s=\u0002\u00010",
+ "rnesandnoble": "//www.barnesandnoble.com/s/\u0002\u00015",
+ "rnivore": "http://www.barnivore.com/search?keyword=\u0002\u000147",
+ "rtender": "http://www.webtender.com/cgi-bin/search?name=\u0002&show=15&verbose=on\u00010",
+ "rtlets": "//www.bartleby.com/search?q=\u0002\u00010",
+ "scan": "http://duckduckgo.com/?q=\u0002+site:www.lyc-bascan-rambouillet.ac-versailles.fr\u00010",
+ "sketballreference": "//www.basketball-reference.com/search/search.fcgi?hint=&search=\u0002\u00010",
+ "tman": "http://batman.wikia.com/wiki/\u0002\u00013",
+ "ttledex": "//pokemongohub.net/?s=\u0002\u00010",
+ "ttlenet": "http://eu.battle.net/en/search?q=\u0002\u00010",
+ "y12": "//duckduckgo.com/?q=\u0002+site%3Abay12games.com\u00010",
+ "ygel": "//www.baygel.de/baygel.php?query=\u0002 \u00010",
+ "zar": {
+ "*": "http://cafebazaar.ir/search/?l=&q=\u0002\u00010",
+ "bg": "//bazar.bg/obiavi?q=\u0002\u00010"
+ },
+ "zel": "//docs.bazel.build/search.html?q=\u0002\u000116",
+ "zos": "http://www.bazos.cz/search.php?hledat=\u0002\u000113"
+ },
+ "b": {
+ "b": "http://www.bbb.org/us/Find-Business-Reviews/name/\u0002\u00016",
+ "*": "//bitbucket.org/repo/all/?name=\u0002\u000193",
+ "c": {
+ "*": "http://www.bbc.co.uk/search/?q=\u0002\u0001507",
+ "i": "http://www.bbc.co.uk/iplayer/search?q=\u0002\u00010",
+ "m": {
+ "*": "http://www.bbc.co.uk/mundo/search/?q=\u0002\u00010",
+ "usic": "http://www.bbc.co.uk/music/search-results?q=\u0002\u00010"
+ },
+ "r": "http://www.bbc.co.uk/search?q=\u0002\u00010",
+ "s": {
+ "*": "//bitbucket.org/search?q=\u0002\u00013",
+ "port": "http://www.bbc.co.uk/search/sport/\u0002?video=on&audio=on&text=on\u00010"
+ },
+ "w": "//www.bbc.co.uk/weather/search?s=\u0002\u000155",
+ "gf": "http://www.bbcgoodfood.com/search/recipes?query=\u0002\u00015",
+ "om": "//search.bodybuilding.com/slp/full?context=all&query=\u0002\u00010",
+ "food": "http://www.bbc.co.uk/food/recipes/search?keywords=\u0002&x=0&y=0\u00010",
+ "news": "http://www.bbc.co.uk/search/news/?q=\u0002\u000132"
+ },
+ "m": {
+ "*": "//digital.bbm.usp.br/simple-search?location=&query=\u0002\u00010",
+ "x": "//www.bestbuy.com.mx/c/buscar-best-buy/buscar?query=\u0002\u00010"
+ },
+ "r": {
+ "*": "http://www.basketball-reference.com/player_search.cgi?search=\u0002\u000181",
+ "ef": "//www.baseball-reference.com/search/search.fcgi?hint=&search=\u0002\u0001100"
+ },
+ "t": "//www.bbt.com/search-results.html?query=\u0002\u00010",
+ "y": {
+ "*": "http://www.bestbuy.com/site/olspage.jsp?id=pcat17071&type=page&st=\u0002&sc=Global&cp=1&nrp=15&sp=&qp=&list=n&iht=y&usc=All+Categories&ks=960\u000144",
+ "c": "//m.bestbuy.ca/en-CA/search?search=\u0002\u000119"
+ },
+ "fc": "http://www.bbfc.co.uk/search/releases/\u0002\u000124",
+ "js": "//doc.babylonjs.com/search/?bjsq=\u0002\u00010",
+ "us": {
+ "*": "//bitbucket.org/\u0002/\u00010",
+ "p": "//digital.bbm.usp.br/simple-search?location=&query= \u0002 &rpp=100\u00010"
+ },
+ "uy": "http://www.bestbuy.com/site/Brands/Apple/pcmcat128500050005.c?id=pcmcat128500050005&pageType=REDIRECT&issolr=1&searchterm=\u0002\u00014",
+ "allref": "//www.basketball-reference.com/search/search.fcgi?hint=&search=\u0002&pid=&idx= \u000114",
+ "apps": "http://appworld.blackberry.com/webstore/search/\u0002\u00010",
+ "art": "http://www.breitbart.com/search/?s=\u0002\u00014",
+ "dev": "//developer.blackberry.com/native/search/?search=\u0002&searchaction=Search\u00010",
+ "qpb": "//bbqpitboys.com/?s=\u0002&post_type=post\u00010",
+ "sfr": "http://www.bbs-consultant.net/search/node/\u0002\u00010"
+ },
+ "*": "//www.bing.com/search?q=\u0002\u000111319",
+ "c": {
+ "*": "http://blockchain.info/search/\u0002 \u000127",
+ "c": "http://www.bcc.nl/search?fh_location=%2F%2Fcatalog01%2Fnl_NL%2Fchannel%3E%7Bm2ebcc2enl%7D&search=\u0002\u00010",
+ "e": "//cn.bing.com/dict/search?q=\u0002\u00010",
+ "l": "//boston.craigslist.org/search/sss?query=\u0002\u00010",
+ "m": {
+ "*": "http://www.brawlcustommusic.com/index.php?song=\u0002&submit=Search\u00010",
+ "oe": "http://because.moe/?q=\u0002\u00010"
+ },
+ "o": "http://boardcrewcial.org/search/thread/\u0002/\u00010",
+ "p": "http://tools.ietf.org/html/bcp\u0002\u00010",
+ "t": {
+ "*": "http://bct.comperio.it/opac/search/lst?q=\u0002\u00010",
+ "ag": "http://bandcamp.com/tag/\u0002\u00010"
+ },
+ "w": {
+ "*": "//boxcritters.wiki/?search=\u0002\u00010",
+ "alls": "//www.blockchainwalls.com/category/\u0002\u00010",
+ "iki": "//en.bitcoin.it/w/index.php?title=Special%3ASearch&search=\u0002\u00010"
+ },
+ "db": "http://www.bcdb.com/bcdb/search.cgi?query=\u0002&amp;bool=and&amp;substring=1\u00013",
+ "amp": "//bandcamp.com/search?q=\u0002\u0001659",
+ "b-atm": "//bcb-atm.com/map?keyword=\u0002\u00010",
+ "bsla": "//www.bcbsla.com/search/Results.aspx?k=\u0002\u00010",
+ "hain": "//blockchain.info/address/\u0002\u00014",
+ "site": "//sitereview.bluecoat.com/sitereview.jsp#/?search=\u0002\u00010",
+ "spca": "http://www.spca.bc.ca/search.html?q=\u0002\u00010"
+ },
+ "d": {
+ "*": "http://www.baidu.com/s?wd=\u0002\u00011170",
+ "b": {
+ "*": "//baddogbooks.com/?s=\u0002&post_type=product\u00010",
+ "k": "//wapbaike.baidu.com/search/word?word=\u0002\u00015",
+ "aike": "//baike.baidu.com/item/\u0002\u00010"
+ },
+ "e": {
+ "*": "http://dict.tu-chemnitz.de/dings.cgi?query=\u0002\u00010",
+ "als": "http://www.bradsdeals.com/search?query=\u0002\u00010"
+ },
+ "g": {
+ "*": "http://www.bedetheque.com/search/tout?RechTexte=\u0002&RechWhere=0 \u00010",
+ "c": "//www.bitdegree.org/search?q=\u0002&src=ukw\u00010",
+ "l": "//www.bitdegree.org/learn/search?query=\u0002\u00010"
+ },
+ "h": "http://www.leblogduhacker.fr/?s=\u0002\u00010",
+ "i": {
+ "*": "//cn.bing.com/dict/search?q=\u0002\u00010",
+ "ca": "//www.boadica.com.br/busca-resultado?q=\u0002\u00010",
+ "mg": "//image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=index&fr=&hs=0&xthttps=111111&sf=1&fmq=&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word=\u0002&oq=test&rsp=-1\u00010",
+ "ctionary": "http://www.businessdictionary.com/search.php?q=\u0002\u00010"
+ },
+ "l": {
+ "*": "http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?T1=\u0002&T3.x=0&T3.y=0\u00010",
+ "p": "http://dblp.uni-trier.de/search?q=\u0002\u00010"
+ },
+ "t": {
+ "*": "http://www.bedetheque.com/search/tout?RechTexte=\u0002&RechWhere=0\u00010",
+ "r": "//fanyi.baidu.com/#en/zh/\u0002\u00016"
+ },
+ "ay": "//www.bing.com/search?q=\u0002&filters=ex1%3a\"\"ez1\"\"\u00010"
+ },
+ "e": {
+ "*": "//blockexplorer.com/searchgo/\u0002\u00016",
+ "l": {
+ "*": "//kgov.com/search?query=\u0002\u00010",
+ "l": {
+ "*": "http://www.bell.ca/Search?q=\u0002\u00010",
+ "evuecollege": "http://www.bellevuecollege.edu/search/?txtQuery=\u0002&search=Search\u00010",
+ "issimi.bg": "http://bellissimi.bg/index.php?route=product/search&search=\u0002\u00010"
+ },
+ "kin": "http://www.belkin.com/us/search?text=\u0002\u00010",
+ "simpel": "//www.belsimpel.nl/zoeken?s=\u0002\u00010"
+ },
+ "o": {
+ "*": "http://dict.tu-chemnitz.de/dings.cgi?service=deen&query=\u0002\u000196",
+ "es": "http://dict.tu-chemnitz.de/dings.cgi?service=dees&query=\u0002\u00010",
+ "pt": "http://dict.tu-chemnitz.de/dings.cgi?service=dept&query=\u0002\u00010",
+ "lingus": "http://dict.tu-chemnitz.de/dings.cgi?query=\u0002\u00010"
+ },
+ "u": "//bertholdsson.eu/?s=\u0002\u00010",
+ "am": "http://www.beammachine.net/de/qsearch.php?q=\u0002&strict=1\u00010",
+ "ck": {
+ "*": "//beck-online.beck.de/Search?words=\u0002\u000139",
+ "shop": "http://www.beck-shop.de/trefferliste.aspx?q=\u0002&action=search&page=0\u00010"
+ },
+ "er": {
+ "*": "http://beeradvocate.com/search?q=\u0002&qt=beer\u000125",
+ "advocate": "//www.beeradvocate.com/search/?q=\u0002\u00016"
+ },
+ "et": "//beets.readthedocs.io/en/latest/search.html?q=\u0002\u00010",
+ "atport": "//www.beatport.com/search?q=\u0002\u000119",
+ "autyheaven": "//www.beautyheaven.com.au/search?term=\u0002\u00010",
+ "autymnl": "//beautymnl.com/search?utf8=%E2%9C%93&q=\u0002\u00010",
+ "autypedia": "//www.beautypedia.com/skin-care-reviews/?Ntt=\u0002\u00010",
+ "cause": "http://because.moe/?q=\u0002\u00010",
+ "cho": "//www.bournemouthecho.co.uk/search/?search=\u0002\u00010",
+ "dbath": "http://www.bedbathandbeyond.com/store/s/\u0002\u00013",
+ "detheque": "http://www.bedetheque.com/search/tout?RechTexte=\u0002&RechWhere=0\u00010",
+ "drock": "//bedrockgranitecompany.com/?s=\u0002\u00010",
+ "ebom": "//beebom.com/?s=\u0002\u00010",
+ "ewigs": "//beewigs.com/search?q=\u0002\u00010",
+ "ezer": "http://www.beezer.com.au/search?type=product&q=\u0002\u00010",
+ "foreiplay": "http://beforeiplay.com/index.php?search=\u0002\u00013",
+ "geek": "http://www.begeek.fr/?s=\u0002\u00010",
+ "hance": "http://www.behance.net/search?search=\u0002\u000126",
+ "hindsurname": "http://surnames.behindthename.com/name/\u0002 \u00016",
+ "hindthename": "http://www.behindthename.com/name/\u0002\u000151",
+ "insa": "http://beinsa.bg/search.php?q=\u0002&submit=ТЪРСИ&s_type=all&id=&status=1\u00010",
+ "n10": "http://ben10.wikia.com/wiki/Special:Search?query=\u0002\u00016",
+ "ndixking": "//bendixkingradios.com/catalogsearch/result/?q=\u0002\u00010",
+ "neco": "http://luzonmorningsun.com/?s=\u0002\u00010",
+ "rekenen": "http://www.berekenhet.nl/zoeken.html?q=\u0002\u00010",
+ "rgdorf": "http://www.bergdorfgoodman.com/search.jsp?N=0&Ntt=\u0002\u00010",
+ "rgfex": "http://www.bergfex.com/sommer/suchen/?q=\u0002\u00010",
+ "rgfreunde": "http://www.bergfreunde.de/s/*/?searchparam=\u0002\u00010",
+ "rita": "//katasapa.com/vanessa?q=\u0002\u00010",
+ "rlingske": "http://b.dk/search/\u0002\u00010",
+ "rlinmap": "http://www.berlin.de/stadtplan/?ADR_STREET=\u0002\u00010",
+ "rmuda": "http://bermuda.io/dataset?q=\u0002\u00010",
+ "rneri": "http://circoloberneri.indivia.net/?s=\u0002\u00010",
+ "rtrand": "//www.bertrand.pt/pesquisa/\u0002\u00010",
+ "rufenet": "//berufenet.arbeitsagentur.de/berufenet/faces/index?path=null/suchergebnisse&such=\u0002\u00010",
+ "sch": "http://conjugueur.bescherelle.com/ConjugueurWeb/index.jsf?term=\u0002\u00016",
+ "slist": "http://www.beslist.nl/products/r/\u0002/\u00016",
+ "stbuy": {
+ "*": "http://www.bestbuy.com/site/olspage.jsp?id=pcat17071&type=page&st=\u0002&sc=Global&cp=1&nrp=15&sp=&qp=&list=n&iht=y&usc=All+Categories&ks=960\u000144",
+ "ca": "//www.bestbuy.ca/en-ca/search?search=\u0002\u000118"
+ },
+ "steveralbums": "//www.besteveralbums.com/search.php?s_o=all&s_q=\u0002\u00010",
+ "stprice": "http://www.bestprice.gr/search?q=\u0002\u00010",
+ "stsellinglover": "//www.bestsellinglover.com/search-now?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=\u00010",
+ "talist": "http://betalist.com/search?q=\u0002\u00010",
+ "tches": "http://www.betches.com/search/\u0002\u00010",
+ "tterworldbooks": "//betterworldbooks.com/?q=\u0002\u00010",
+ "ver": "//www.bever.nl/lister.html?q=\u0002\u00010",
+ "vmo": "http://www.bevmo.com/Shop/ProductList.aspx/_/D-\u0002/N-/Ntt-\u0002?DNID=Home&Dx=mode%2Bmatchany&fromsearch=true&Ntk=All&Ntx=mode%2Bmatchany\u00013",
+ "vvy": "//bevvy.co/search?q=\u0002\u00010"
+ },
+ "f": {
+ "*": "http://www.buzzfeed.com/search?q=\u0002\u000124",
+ "i": "//www.bfi.org.uk/search/search-bfi/\u0002\u00010",
+ "x": "//www.bergfex.at/suchen/?q=\u0002\u000113",
+ "de": "http://www.babelfish.de/dict?query=\u0002&src=auto&dst=en&submit=übersetzen\u00010",
+ "m899": "//www.bfm.my/podcast.html?qseaid=\u0002&pseaid=latest&iseaid=all&dsseaid=&deseaid=&tag=&prg=\u00010"
+ },
+ "g": {
+ "*": "http://www.biblegateway.com/passage/?search=\u0002\u0001161",
+ "c": "//www.bankgirot.se/en/sok-bg-nr/?company=\u0002\u00010",
+ "g": {
+ "*": "//boardgamegeek.com/geeksearch.php?action=search&objecttype=boardgame&q=\u0002&B1=Go\u00012242",
+ "gm": "http://boardgamegeek.com/geekmarket/search?q=\u0002\u00010"
+ },
+ "l": "//www.babygearlab.com/search?ftr=\u0002\u00010",
+ "m": "//bgm.tv/subject_search/\u0002?cat=all\u00015",
+ "n": "//www.bankgirot.se/en/sok-bg-nr/?bgnr=\u0002\u00010",
+ "o": "//www.bankgirot.se/en/sok-bg-nr/?orgnr=\u0002\u00010",
+ "p": {
+ "*": "http://bgp.he.net/search?search%5Bsearch%5D=\u0002&commit=Search\u000146",
+ "uk": "//boardgameprices.co.uk/item/search?search=\u0002\u000111"
+ },
+ "s": "http://www.boardgamesearch.com.au/#!/search/\u0002\u00010",
+ "w": "http://www.biblegateway.com/keyword/?search=\u0002\u00018",
+ "ea": "http://billygraham.org/?s=\u0002\u00010",
+ "kj": {
+ "*": "//www.biblegateway.com/quicksearch/?quicksearch=\u0002&qs_version=KJV\u00010",
+ "v": "//www.biblegateway.com/quicksearch/?quicksearch=\u0002&qs_version=KJV\u00010"
+ },
+ "unikat": "//bgunikat.eu/index.php?route=product/search&search=\u0002\u00010"
+ },
+ "h": {
+ "b": "http://biblehub.net/search.php?q=\u0002\u00010",
+ "*": "http://www.bhphotovideo.com/c/search?Ntt=\u0002\u0001270",
+ "o": "http://www.british-history.ac.uk/search?query=\u0002\u00010",
+ "t": "http://baheth.info/all.jsp?term=\u0002\u00010",
+ "ive": "//www.bhive.org/?s=\u0002\u00010",
+ "photovideo": "//www.bhphotovideo.com/c/search?Ntt=\u0002&N=0&InitialSearch=yes&sts=ma&typedValue=&Top+Nav-Search=\u000111"
+ },
+ "i": {
+ "*": "//www.bing.com/images/search?q=\u0002&go=&form=QBIL&qs=n\u00014709",
+ "l": {
+ "*": "//www.billiger.de/search?searchstring=\u0002\u00010",
+ "i": {
+ "*": "http://www.bilibili.com/search?keyword=\u0002:\u0001227",
+ "bili": "http://search.bilibili.com/all?keyword=\u0002 \u0001183"
+ },
+ "ka": "//www.bilka.dk/s%C3%B8g?tekst=\u0002\u00010",
+ "liger": "//www.billiger.de/search?searchstring=\u0002\u00010",
+ "lygraham": "//billygraham.org/?s=\u0002\u00010",
+ "priser": "http://www.bilpriser.se/bilvardering?regnr=\u0002\u00010",
+ "tema": "http://www.biltema.se/sv/Sok/?query=\u0002\u00010",
+ "uppg": "//biluppgifter.se/fordon/\u0002\u00010"
+ },
+ "m": {
+ "*": "//www.bing.com/images/search?q=\u0002&go=&form=QBIL&qs=n\u00014709",
+ "ages": "//www.bing.com/images/search?q=\u0002&go=&form=QBIL&qs=n\u00014709"
+ },
+ "n": {
+ "*": "http://bin.arnastofnun.is/leit/?q=\u0002\u000131",
+ "g": {
+ "*": "//www.bing.com/search?q=\u0002\u000111319",
+ "gif": "http://www.bing.com/images/search?&q=\u0002&qft=+filterui:photo-animatedgif&FORM=R5IR25\u00010",
+ "images": "//www.bing.com/images/search?q=\u0002&go=&form=QBIL&qs=n\u00014709",
+ "maps": "//www.bing.com/maps/?q=\u0002&obox=1\u000132",
+ "videos": "//www.bing.com/videos/search?q=\u0002\u000130"
+ },
+ "nys": "http://www.binnys.com/all/\u0002\u00010",
+ "tray": "//bintray.com/search?query=\u0002\u00010"
+ },
+ "o": {
+ "*": "http://www.biography.com/search?query=\u0002\u00010",
+ "c": "http://bioconductor.org/help/search/index.html?q=\u0002\u00013",
+ "belp": "//www.biohelp-profi.at/store-search-result.php?keywords=\u0002\u00010",
+ "grid": "http://thebiogrid.org/search.php?search=\u0002\u00010",
+ "graphy": "//www.biography.com/search?query=\u0002\u00010",
+ "logy": "//allyouneedisbiology.wordpress.com/?s=\u0002\u00010",
+ "-online": "http://www.biology-online.org/search.php?search=\u0002\u00010",
+ "rxiv": "http://biorxiv.org/search/\u0002\u000115"
+ },
+ "r": {
+ "*": "//www.bing.com/images/search?q=imgurl:\u0002&view=detailv2&iss=sbi&FORM=IRSBIQ#enterInsights\u00017",
+ "d": {
+ "*": "//www.allaboutbirds.org/search/?q=\u0002\u00010",
+ "s": "//www.allaboutbirds.org/search/?q=\u0002\u00010"
+ },
+ "ikim": "http://www.birikimdergisi.com/arama/\u0002\u00010"
+ },
+ "z": {
+ "*": "//incfact.com/company/search/?q=\u0002\u00010",
+ "dic": "http://www.businessdictionary.com/search.php?q=\u0002\u00010",
+ "gift": "//bizgift.vn/?s=\u0002\u00010",
+ "nar": "http://www.biznar.com/biznar/result-list/fullRecord:\u0002\u00010",
+ "rate": "http://www.bizrate.com/classify?search_box=1&keyword=\u0002&originalKeyword=&SEARCH_GO=\u00010"
+ },
+ "ch": "//bitinfocharts.com/comparison/marketcap-\u0002.html#log\u00010",
+ "fr": "http://bioinfo-fr.net/?s=\u0002\u00010",
+ "gw": {
+ "*": "//www.bigw.com.au/search/?text=\u0002&category=\u00010",
+ "ords": "http://www5.bigwords.com/search/easy-search/?producttype=all&searchtype=isbn&searchstring=\u0002&buySell=\u00010"
+ },
+ "ke": {
+ "*": "http://sheldonbrown.com/searchResults.html?cx=partner-pub-1229949690989515%3A1174459614&cof=FORID%3A10&q=\u0002\u00013",
+ "24": "//www.bike24.com/1.php?content=13&search=\u0002\u000114",
+ "dsct": "//www.bike-discount.de/de/suche?q=\u0002\u00010",
+ "net": "//bikenet.nl/occasions/?zoeken=\u0002\u00010"
+ },
+ "sa": "//www.bisafans.de/suchbisa.php?q=\u0002\u00010",
+ "sp": "//www.bisp-surf.de/Search/Results?type=AllFields&lookfor=\u0002&submit=Suchen&limit=20&sort=relevance\u00010",
+ "tc": {
+ "*": "//www.bitchute.com/search/?q=\u0002&sort=date_created+desc\u00016",
+ "h": {
+ "*": "//www.bitchute.com/search/?q=\u0002&sort=date_created+desc\u00016",
+ "ute": "//www.bitchute.com/search/?q=\u0002&sort=date_created+desc\u00016"
+ },
+ "oin": "//blockchain.info/search?search=\u0002\u000112"
+ },
+ "ben": "http://www.biblestudytools.com/search/?s=references&q=\u0002&rc=ENC&rc2=\u00010",
+ "berfurt": "http://opac.uni-erfurt.de/DB=1/SET=3/TTL=11/CMD?ACT=SRCHA&IKT=1016&SRT=YOP&TRM=\u0002\u00010",
+ "bgent": "http://zoeken.gent.bibliotheek.be/?q=\u0002\u00010",
+ "bhub": "http://biblehub.net/search.php?q=\u0002\u00010",
+ "ble": {
+ "*": "http://www.biblegateway.com/keyword/?search=\u0002&searchtype=all\u0001435",
+ "atlas": "http://biblehub.net/searchatlas.php?q=\u0002\u00010",
+ "com": "//www.bible.com/search/bible?q=\u0002\u00010",
+ "gateway": "http://www.biblegateway.com/keyword/?search=\u0002&version1=47&searchtype=all\u000139",
+ "hub": "http://biblemenus.com/search.php?q=\u0002\u000126",
+ "server": "http://bibleserver.com/search/LUT/\u0002/1\u00010",
+ "tools": "http://www.biblestudytools.com/search/?q=\u0002\u00010"
+ },
+ "blio": {
+ "*": "http://biblio.com/search.php?keyisbn=\u0002\u000117",
+ "mi": "//milano.biblioteche.it/opac/search/lst?q=\u0002\u00010",
+ "netka": "http://www.biblionetka.pl/search.aspx?searchType=book_catalog&searchPhrase=\u0002\u00010",
+ "tek": {
+ "*": "//bibliotek.dk/search/work/\u0002\u00010",
+ "kavlinge": "http://bibliotek.kavlinge.se/search?query=\u0002\u00010"
+ }
+ },
+ "blija": "http://www.biblija.net/biblija.cgi?m=\u0002 \u00010",
+ "blsrv": "http://www.bibleserver.com/search/\u0002\u00010",
+ "bnet": "http://www.biblionet.gr/main.asp?page=results&key=\u0002\u00010",
+ "bparis": "//bibliotheques.paris.fr/Default/search.aspx?SC=CATALOGUE&QUERY=\u0002\u00010",
+ "bsonomy": "http://www.bibsonomy.org/search/\u0002\u00010",
+ "bunipi": "http://onesearch.unipi.it/primo_library/libweb/action/search.do?fn=search&ct=search&initialSearch=true&mode=Basic&tab=default_tab&indx=1&dum=true&srt=rank&vid=39UPI_V1&frbg=&tb=t&vl(freeText0)=\u0002&scp.scps=scope%3A(39UPI)%2C39UPI_EbscoLocal%2Cprimo_central_multiple_fe\u00010",
+ "dorbuy": "http://www.bidorbuy.co.za/search/\u0002 \u00010",
+ "dvoy": "http://bidvoy.net/%22\u0002 \u00010",
+ "gbasket": "http://bigbasket.com/ps/?q=\u0002\u00010",
+ "genc": "//bigenc.ru/search?q=\u0002\u00010",
+ "gfish": "http://www.bigfishgames.com/download-games/search.html?search=\u0002\u00010",
+ "gfuture": "//bigfuture.collegeboard.org/sitesearch?searchType=bf_site&tp=bf&q=\u0002\u00010",
+ "ghuge": "http://words.bighugelabs.com/\u0002\u00014",
+ "goven": "http://www.bigoven.com/recipes/\u0002/best\u00010",
+ "gstock": "http://www.bigstockphoto.com/search/\u0002/\u00010",
+ "jbel": "//www.debijbel.nl/zoeken/?q=\u0002&v=NBV&t=bible\u00010",
+ "sbn": "http://bookprice.co/isbn/\u0002\u00010",
+ "taps": "//bitaps.com/\u0002\u00010",
+ "tbucket": "//bitbucket.org/repo/all/?name=\u0002\u000193",
+ "tesizegcse": "http://www.bbc.co.uk/schools/gcsebitesize/search/index.shtml?scope=gcsebitesize_include&q=\u0002\u00017",
+ "tly": "//bitly.com/?url=\u0002\u00018",
+ "tlair": "//wiki.bitlair.nl/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "tref": "//bitref.com/\u0002\u00010",
+ "ttrust": "http://bittrust.org/search#stq=\u0002\u00010",
+ "tview": "http://www.bitview.net/results.php?search=\u0002&t=Search+Videos\u00013",
+ "vol": "//search.bivol.bg/?q=\u0002#results\u00010"
+ },
+ "k": {
+ "*": "//www.bluekangaroo.com/products?term=\u0002\u00010",
+ "l": "http://search.books.com.tw/search/query/key/\u0002/cat/all\u00010",
+ "r": {
+ "*": "http://www.basketball-reference.com/player_search.cgi?search=\u0002\u000181",
+ "ef": "http://www.basketball-reference.com/search/search.fcgi?hint=\u0002&search=\u0002&pid=&idx=\u0001146",
+ "adio": "//bendixkingradios.com/catalogsearch/result/?q=\u0002\u00010"
+ },
+ "adda": "http://www.bookadda.com/general-search?searchkey=\u0002\u00010",
+ "kpost": "//search.bangkokpost.com/search/result_advanced?category=all&xChannel=&q=\u0002\u00010",
+ "share": "//www.bookshare.org/search?keyword=\u0002\u00010"
+ },
+ "l": {
+ "a": {
+ "*": "http://blackle.com/results/?cx=partner-pub-8993703457585266%3A4862972284&cof=FORID%3A10&ie=UTF-8&q= \u0002&sa=+#gsc.tab=0&gsc.q= \u0002&gsc.page=1\u00013",
+ "nd": "//bland.is/classified/default.aspx?q=\u0002\u00010",
+ "ze": "http://www.theblaze.com/?s=\u0002\u00010",
+ "blacar": "//www.blablacar.fr/trajets/vers-\u0002\u00010",
+ "ckbook": {
+ "*": "http://www.blackbookmag.com/search/articles#keywords:\u0002\u00016",
+ "mag": "http://www.blackbookmag.com/search/articles#keywords:\u0002\u00016"
+ },
+ "cklist": "http://mxtoolbox.com/SuperTool.aspx?action=blacklist%3a\u0002&run=toolpage\u000111",
+ "ckwells": "//blackwells.co.uk/bookshop/search/?keyword=\u0002\u00013",
+ "dehq": "//www.bladehq.com/?search=\u0002\u00010"
+ },
+ "b": {
+ "*": "http://www.blb.org/search/preSearch.cfm?plugin=yes&Criteria=\u0002\u000179",
+ "l": "http://www.bilibili.com/search?keyword=\u0002\u000115"
+ },
+ "d": "http://thelawdictionary.org/search2/?cx=partner-pub-4620319056007131%3A7293005414&cof=FORID%3A11&ie=UTF-8&q=\u0002}\u00010",
+ "e": {
+ "*": "//bluetoothle.wiki/start?do=search&id=start&q=\u0002\u00010",
+ "x": "http://blender.stackexchange.com/search?q=\u0002\u00010",
+ "ep": {
+ "*": "//bleep.com/search/query?q=\u0002\u00010",
+ "ingpc": "//www.bleepingcomputer.com/search/?q=\u0002\u00016"
+ },
+ "ach": "http://bleach.wikia.com/wiki/Special:Search?query=\u0002\u00014",
+ "nder": {
+ "*": "http://blender.org/manual/search.html?check_keywords=yes&q=\u0002\u000118",
+ "api": "//docs.blender.org/api/current/search.html?q=\u0002\u00010",
+ "guru": "http://www.blenderguru.com/?s=\u0002&submit.x=0&submit.y=0\u00013"
+ },
+ "ndle": "//blendle.nl/search/\u0002\u00010",
+ "ndapi": "//docs.blender.org/api/current/search.html?q=\u0002&check_keywords=yes&area=default\u00010"
+ },
+ "f": "http://budgetlightforum.com/search?q_as=\u0002\u00010",
+ "g": "http://www.blenderguru.com/?s=\u0002&submit.x=0&submit.y=0\u00013",
+ "k": "//www.booklooker.de/Bücher/Angebote/infotext=\u0002\u00010",
+ "m": {
+ "b": "http://www.bloomberg.com/search?query=\u0002\u00010",
+ "*": "http://blogmotion.fr/?utm_source=duckduckgo&utm_medium=bang&s=\u0002\u00010",
+ "s": "http://searcharchives.bl.uk/primo_library/libweb/action/search.do?fn=search&vl(freeText0)=\u0002\u00010"
+ },
+ "n": "//www.blendernation.com/?s=\u0002\u00010",
+ "*": "http://explore.bl.uk/primo_library/libweb/action/search.do?fn=search&vl(freeText0)=\u0002\u00015",
+ "x": "http://www.blox.pl/html?page=blogPublicSearch&container_search=\u0002\u00010",
+ "cy": "//live.blockcypher.com/btc/address/\u0002\u00010",
+ "og": {
+ "*": "//duckduckgo.com/?q=\u0002+site%3Aduck.co%2Fblog\u00016",
+ "anchoi": "http://bloganchoi.com/?s=\u0002\u00010",
+ "spot": "/?q=\u0002+site:blogspot.com\u000111",
+ "s.splunk": "http://blogs.splunk.com/?s=\u0002\u00010",
+ "talkradio": "http://blogtalkradio.com/search/\u0002\u00014",
+ "udir": "//www.blogudir.com/search?q=\u0002\u00010"
+ },
+ "uk": "http://explore.bl.uk/primo_library/libweb/action/search.do?fn=search&vl(freeText0)=\u0002\u00015",
+ "ickaa": "http://www.blickamabend.ch/suche/?q=\u0002\u00013",
+ "indekuh": "http://www.blinde-kuh.de/bksearch.cgi?input=bksearchbox+start&query=\u0002\u00010",
+ "ockchain": "//blockchain.info/en/search?search=\u0002\u000116",
+ "ockchair": "//blockchair.com/search?q=\u0002\u000110",
+ "ocket": "http://www.blocket.se/hela_sverige?q=\u0002&cg=0&w=3&st=s&st=u&st=b&ca=11&l=0&md=th\u000119",
+ "oom": "//www.bloomberg.com/search?query=\u0002\u000145",
+ "oodcat": "//bloodcat.com/osu/?q=\u0002&c=b&s=&m=&g=&l=\u00010",
+ "oonswiki": "http://bloons.wikia.com/search?query=\u0002\u000124",
+ "ueapron": "http://blueapron.com/?q=\u0002\u00010",
+ "uehive": "//www.bluehive.com/providers/search/\u0002\u00010",
+ "ueletterbible": "http://www.blueletterbible.org/search/search.cfm?Criteria=\u0002&t=KJV#s=s_primary_0_1\u00010",
+ "ueline": "//rsw.me.uk/blueline/methods/search?q=\u0002\u00010",
+ "uelight": "http://cse.google.com/cse?cx=009513296995230692334:6ksgwcos37i&q=\u0002\u00010",
+ "uray": "http://www.blu-ray.com/search/?quicksearch=1&quicksearch_country=all&quicksearch_keyword=\u0002&section=bluraymovies\u000153"
+ },
+ "m": {
+ "*": "//www.bing.com/maps/?q=\u0002&obox=1\u000132",
+ "j": {
+ "*": "//www.bmj.com/search/advanced/\u0002\u00010",
+ "bp": "//bestpractice.bmj.com/search?q=\u0002\u00010"
+ },
+ "k": "//blendermarket.com/search?q=\u0002\u00013",
+ "o": {
+ "*": "//bugzilla.mozilla.org/buglist.cgi?quicksearch=\u0002\u00015",
+ "notes": "//www.bmonotes.com/Search/GeneralSearch?query=\u0002\u00016",
+ "nth": "//www.bing.com/search?q=\u0002&filters=ex1%3a\"\"ez3\"\"\u00010"
+ },
+ "p": "//bookmyparts.com/?s=\u0002&post_type=product\u00010",
+ "r": "http://bluemoonrising.com/?s=\u0002\u00010",
+ "s": "http://in.bookmyshow.com/search/results/?_s=0.2&search=\u0002\u00010",
+ "de": "//www.brickmerge.de/?find=\u0002\u00010",
+ "aps": "//www.bing.com/maps/?q=\u0002&obox=1\u000132",
+ "wparts": "//www.getbmwparts.com/search?search_str=\u0002\u00010"
+ },
+ "n": {
+ "a": "http://www.bna.com.ar/Buscador?q=\u0002\u00010",
+ "*": "//www.barnesandnoble.com/s/\u0002\u00015",
+ "f": "http://catalogue.bnf.fr/rechercher.do?motRecherche=\u0002\u00010",
+ "l": "//www.bing.com/search?q=\u0002&cc=nl\u000115",
+ "r": "http://www.bnrmetal.com/v5/search/search/\u0002\u00010",
+ "s": "//bokunoshumi.wordpress.com/?s=\u0002\u00010",
+ "br": "http://www.bing.com/search?q=\u0002&rf=1&qpvt=\u0002\u00010",
+ "dc": "//bandcamp.com/search?q=\u0002\u0001659",
+ "ha": "http://bokunoheroacademia.wikia.com/wiki/Special:Search?go&query=\u0002\u000111",
+ "il": "http://www.baileynurseries.com/imagelibrary/gallery/search/?name=\u0002&brand=All&plant_type=All&height_lo=&height=f&spread_lo=&spread=f&exposure=All&zone=All&foliage=&dosearch=Do+Search\u00010",
+ "ews": "//www.bing.com/news/search?q=\u0002\u000123"
+ },
+ "o": {
+ "*": "http://www.boerse-online.de/suchergebnisse?_search=\u0002\u000110",
+ "i": {
+ "*": "http://bindingofisaacrebirth.gamepedia.com/index.php?search=\u0002\u0001350",
+ "ngboing": "http://www.google.com/cse?cx=partner-pub-2170174688585464:d58nno-rqp8&ie=ISO-8859-1&q=\u0002&sa=GO&siteurl=www.boingboing.net/\u00010"
+ },
+ "l": {
+ "a": {
+ "*": "//wiki.parabola.nu/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "pkg": "//www.parabola.nu/packages/?q=\u0002\u000111"
+ },
+ "*": "//www.bol.com/nl/s/?searchtext=\u0002\u0001252",
+ "ha": "http://www.bolha.com/iskanje?q=\u0002\u00013",
+ "or": "http://www.bolor-toli.com/dictionary/word?search=\u0002\u00010"
+ },
+ "m": {
+ "*": "http://www.boxofficemojo.com/search/?q=\u0002\u00018",
+ "negocio": "http://www.bomnegocio.com/brasil?q=\u0002\u00010"
+ },
+ "o": {
+ "k": {
+ "*": "http://www.booking.com/searchresults.html?ss=\u0002&si=ai\u000192",
+ "o": "http://booko.com.au/books/search?q=\u0002\u000123",
+ "s": {
+ "*": "//www.amazon.com/s/?tag=duc0c-20&url=search-alias%3Daps&field-keywords=\u0002\u000141823",
+ "etc": "http://www.booksetc.co.uk/books/search?q=\u0002\u00010"
+ },
+ "baz": "http://bookbaz.ir/?s=\u0002 \u00010",
+ "brainz": "//bookbrainz.org/search?q=\u0002\u00010",
+ "crossing": "http://bookcrossing.by/books?find=\u0002\u00010",
+ "dep": {
+ "*": "http://bookdepository.com/search?searchTerm=\u0002&search=Find+book\u0001104",
+ "ository": "//www.bookdepository.com/search?searchTerm=\u0002&search=Find+book\u000127"
+ },
+ "een": "//www.bookeenstore.com/search?words=\u0002\u00010",
+ "finder": "http://www.bookfinder.com/search/?author=&title=\u0002&lang=en&submit=Begin+search&new_used=*&destination=us&currency=USD&mode=basic&st=sr&ac=qr\u000120",
+ "flavor": "http://bookflavor.com/#!\u0002\u00010",
+ "ing": {
+ "*": "http://www.booking.com/searchresults.html?ss=\u0002&si=ai\u000192",
+ "es": "//www.booking.com/search.es.html?ss=\u0002\u00010"
+ },
+ "live": "http://booklive.jp/search/keyword?keyword=\u0002\u00010",
+ "looker": "http://www.booklooker.de/B%C3%BCcher/Angebote/infotext=\u0002?lid=1\u00014",
+ "myshow": "http://in.bookmyshow.com/search/results/?_s=0.2&search=\u0002\u00010",
+ "net": "http://www.booknet.co.il/subc.asp?serin=3&c=3947&ser=\u0002\u00010"
+ },
+ "m": {
+ "*": "http://www.websmartboomer.com/?q=\u0002\u00013",
+ "kat": "http://boomkat.com/search?q=\u0002\u00010"
+ },
+ "*": "//bugzilla.opensuse.org/buglist.cgi?quicksearch=\u0002\u000178",
+ "t": {
+ "*": "//getbootstrap.com/docs/4.0/components/\u0002/\u000114",
+ "leg": "http://bootleggames.wikia.com/wiki/Special:Search?search=\u0002\u00010"
+ },
+ "st": "/?q=\u0002+site:boost.org\u00019"
+ },
+ "do": "//www.bodo.de/suche.html?tx_kesearch_pi1[sword]=\u0002\u00010",
+ "na": "//www.bona.co.za/?s=\u0002\u00010",
+ "tb": "//duckduckgo.com/?q=site%3Abattleofthebits.org+\u0002\u00010",
+ "ards": "http://www.boards.ie/search/submit/?query=\u0002\u00010",
+ "ardgame": {
+ "*": "//boardgamegeek.com/geeksearch.php?action=search&objecttype=boardgame&q=\u0002&B1=Go\u00012242",
+ "geek": "http://boardgamegeek.com/geeksearch.php?action=search&objecttype=boardgame&q=\u0002\u00019",
+ "prices": "http://www.boardgameprices.com/compare-prices-for?q=\u0002\u00013"
+ },
+ "ardman": "http://dillonboardman.wordpress.com/?s=\u0002&submit=Search\u00010",
+ "bdylan": "//www.bobdylan.com/?s=\u0002\u00013",
+ "cca": "//bestonlinecasinoca.com/?s=\u0002\u00010",
+ "cpages": "http://bocpages.org/w/index.php?search=\u0002\u00010",
+ "deka": "http://bodeka.org/?s=\u0002\u00010",
+ "dycare": "//www.bodycarereviews.com/?s=\u0002\u00010",
+ "dyfit": "http://www.bodyenfitshop.nl/#twn|?tn_q=\u0002\u00010",
+ "gle": "http://www.bogleheads.org/w/index.php?search=\u0002\u00010",
+ "kmålsordboka": "http://ordbok.uib.no/perl/ordbok.cgi?OPP=+\u0002&ant_bokmaal=5&ant_nynorsk=5&bokmaal=+&ordbok=bokmaal\u00010",
+ "kus": "http://www.bokus.com/cgi-bin/product_search.cgi?ac_used=no&search_word=\u0002\u00014",
+ "ndfaro": "http://www.bondfaro.com.br/cprocura?produto=\u0002\u00010",
+ "nfire": "//www.bonfire.com/results/\u0002\u00010",
+ "nnus": "//bonnus.ulb.uni-bonn.de/Summon/Search?lookfor=\u0002&type=AllFields&submit=Suchen\u00010",
+ "rderlands": "http://borderlands.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "stonglobe": "http://www.bostonglobe.com/queryResult/search?q=\u0002\u00010",
+ "stonpubliclibrary": "//bpl.bibliocommons.com/search?q=\u0002&t=smart&search_category=keyword&commit=Search&submitsearch=go&se=catalog\u00010",
+ "tlist": "//botlist.co/search?query=\u0002\u00010",
+ "to3": "//boto3.readthedocs.io/en/latest/search.html?q=\u0002&check_keywords=yes&area=default\u000115",
+ "ulet": "http://www.bouletcorp.com/?s=\u0002\u00010",
+ "ulanger": "http://www.boulanger.com/resultats?tr=\u0002\u00019",
+ "untysource": "//www.bountysource.com/search?query=\u0002\u00010",
+ "urbon": "http://bourbon.io/docs/?q=\u0002\u00010",
+ "wer": "//libraries.io/search?q=\u0002&platforms=Bower&sort=rank&sort=rank\u00010",
+ "xoh": "http://boxoh.com/?t=\u0002\u00015",
+ "yslife": "http://boyslife.org/search/?q=\u0002 \u00010"
+ },
+ "p": {
+ "a": {
+ "*": "http://bulbapedia.bulbagarden.net/wiki/\u0002\u000136",
+ "nda": "//www.boredpanda.com/?s=\u0002\u00016"
+ },
+ "b": "http://www.bpb.de/suche/?suchwort=\u0002&suchen=Suchen\u00010",
+ "*": "http://beautifulpixels.com/?s=\u0002 \u00017",
+ "i": "http://products.bpiworld.org/companies?title=&field_industry_category_tid=&field_member_id_value=\u0002\u00010",
+ "l": "http://www.backpackinglight.com/cgi-bin/backpackinglight/search.html?q=\u0002\u00010",
+ "m": "//songbpm.com/\u0002\u00018",
+ "o": {
+ "i": "//bugs.python.org/issue\u0002\u00010",
+ "p": "//www.brainpop.com/search/?keyword=\u0002\u00010",
+ "*": "//bugs.python.org/issue?%40columns=id%2Cactivity%2Ctitle%2Ccreator%2Cassignee%2Cstatus%2Ctype&%40sort=-activity&%40filter=status&%40action=searchid&ignore=file%3Acontent&%40search_text=\u0002&submit=search&status=-1%2C1%2C2%2C3\u00010",
+ "st": "http://track.bpost.be/btr/web/#/search?itemCode=\u0002\u00010"
+ },
+ "p": {
+ "*": "//bibliotheques.paris.fr/Default/search.aspx?SC=CATALOGUE&QUERY=\u0002&QUERY_LABEL=\u00010",
+ "n": "http://katalog.bppn.waw.pl/F?func=find-b&request=\u0002&find_code=WRD&adjacent=N&local_base=PRA01&x=0&y=0&filter_code_1=WLN&filter_request_1=&filter_code_2=WYR&filter_request_2=&filter_code_3=WYR&filter_request_3=&filter_code_4=WFM&filter_request_4=&filter_code_5=WSL&filter_request_5=\u00010",
+ "ro": "//pro.beatport.com/search?q=\u0002\u00010"
+ },
+ "t": "//www.brownpapertickets.com/browse.html?keywords=\u0002\u00010",
+ "ro": "//legacy.baseballprospectus.com/player_search.php?search_name=\u0002\u00015",
+ "edia": "http://bulbapedia.bulbagarden.net/w/index.php?title=Special:Search&search=\u0002&go=Go\u00015"
+ },
+ "q": "//www.bloombergquint.com/search?q=\u0002\u00014",
+ "r": {
+ "*": "http://www.baseball-reference.com/pl/player_search.cgi?search=\u0002\u00010",
+ "d": "//boardreader.com/s/\u0002.html\u00010",
+ "i": {
+ "*": "//www.bing.com/images/search?q=imgurl:\u0002&view=detailv2&iss=sbi&FORM=IRSBIQ#enterInsights\u00017",
+ "m": "http://www.bricksinmotion.com/forums/search/?action=search&keywords=\u0002&search=Submit+search&show_as=topics\u00010",
+ "t": {
+ "*": "//www.britannica.com/search?query=\u0002\u000113",
+ "annica": {
+ "*": "http://www.britannica.com/search?query=\u0002\u000133",
+ "schoole": "http://school.eb.com/levels/elementary/search/articles?query=\u0002\u00010",
+ "schoolh": "http://school.eb.com/levels/high/search/articles?query=\u0002\u00010",
+ "schoolm": "http://school.eb.com/levels/middle/search/articles?query=\u0002\u00010"
+ },
+ "imgq": "http://quest.eb.com/search/\u0002\u00010",
+ "ish": "http://www.britishslang.co.uk/search/default.aspx?q=\u0002\u00017",
+ "sche": "http://school.eb.com/levels/elementary/search/articles?query=\u0002\u00010",
+ "schh": "http://school.eb.com/levels/high/search/articles?query=\u0002\u00010",
+ "schm": "http://school.eb.com/levels/middle/search/articles?query=\u0002\u00010"
+ },
+ "cklink": {
+ "*": "http://www.bricklink.com/search.asp?q=\u0002\u00013",
+ "cat": "http://www.bricklink.com/catalogList.asp?q=\u0002\u00010"
+ },
+ "ckpart": "http://brickset.com/parts?query=\u0002\u00010",
+ "ckset": "http://brickset.com/sets?query=\u0002\u000114",
+ "coman": "//www.bricoman.it/search/?q=\u0002\u00010",
+ "ghtstorm": "http://www.brightstorm.com/search/?k=\u0002\u00010"
+ },
+ "k": "http://www.bruun-rasmussen.dk/search.do?q=\u0002\u00010",
+ "o": {
+ "*": "http://bropages.org/\u0002\u00010",
+ "ok": "//www.brookings.edu/search/?s=\u0002\u00010",
+ "wn": {
+ "*": "//search.library.brown.edu/?utf8=✓&q=\u0002\u00010",
+ "ells": "//www.brownells.com/search/index.htm?k=\u0002\u00013",
+ "lib": "//search.library.brown.edu/?utf8=✓&q=\u0002\u00010"
+ },
+ "adsign": "//duckduckgo.com/?q=site%3Abroadsign.com+\u0002\u00010",
+ "ckhaus": "//brockhaus.de/search/?t=enzy&q=\u0002\u00010",
+ "-ids": "//www.bro.org/sphinx/search.html?check_keywords=yes&q=\u0002\u00010",
+ "nco": "http://broncowine.com/woocommerce-search/?cat_in=&rs=\u0002&search_in=product&search_other=product\u00010"
+ },
+ "t": {
+ "*": "//www.britannica.com/search?query=\u0002\u000113",
+ "m": "//www.baroteam.fr/?s=\u0002\u00010"
+ },
+ "ew": {
+ "f": "//formulae.brew.sh/formula/\u0002\u000119",
+ "*": "http://brewformulas.org/search?search%5Bterm%5D=\u0002\u000148"
+ },
+ "ly": "//brainly.com/app/ask?entry=hero&q=\u0002\u000152",
+ "st": "//brawlstars.fandom.com/wiki/Special:Search?query=\u0002\u00010",
+ "ack": "//www.brack.ch/search?query=\u0002\u00014",
+ "ainpop": {
+ "*": "//www.brainpop.com/search/search.weml?keyword=\u0002\u00010",
+ "educators": "http://educators.brainpop.com/search/?q=\u0002\u00010"
+ },
+ "ainyquote": "//www.brainyquote.com/search_results.html?q=\u0002\u00010",
+ "akdag": "//brakdag.nl/?s=\u0002\u00010",
+ "ands": "http://www.brandsoftheworld.com/search/logo?search_api_views_fulltext=\u0002\u00010",
+ "atabase": "http://www.bratabase.com/search/?q=\u0002\u00010",
+ "ave": "//search.brave.com/search?q=\u0002\u0001156",
+ "eitbart": "http://www.breitbart.com/search/?s=\u0002\u00014",
+ "ettspiele": "http://www.brettspiel-angebote.de/spiele/?s=\u0002&t=\u00015",
+ "l2eur": "//www.xe.com/currencyconverter/convert/?Amount=\u0002&From=BRL&To=EUR\u00010",
+ "l2gbp": "//www.xe.com/currencyconverter/convert/?Amount=\u0002&From=BRL&To=GBP\u00010",
+ "l2usd": "//www.xe.com/currencyconverter/convert/?Amount=\u0002&From=BRL&To=USD\u00010",
+ "reg": "http://w2.brreg.no/enhet/sok/treffliste.jsp?navn=\u0002 &orgform=0&fylke=0&kommune=0\u00010",
+ "umario": "http://brumario.usal.es/search/?searchtype=X&searcharg=\u0002 &op=Buscar&SORT=D&searchscope=\u00010",
+ "ussels": "//welovebrussels.org/?s=\u0002\u00010",
+ "utsel": "//www.brutsellog.nl/?s=\u0002\u00010"
+ },
+ "s": {
+ "4": "//www.crummy.com/software/BeautifulSoup/bs4/doc/search.html?q=\u0002\u00010",
+ "a": {
+ "*": "//www.biblesociety.org.au/?s=\u0002&x=0&y=0\u00010",
+ "g": "//www.bsag.de/index.php?q=\u0002\u00010",
+ "ber": "//bsaber.com/?s=\u0002\u000110"
+ },
+ "b": "//opacplus.bsb-muenchen.de/InfoGuideClient/start.do?Login=opacext&BaseURL=https%3a%2f%2fopacplus.bsb-muenchen.de%2fInfoGuideClient%2fstart.do%3fLogin%3dopacext&Query=-1=%22\u0002%22\u00010",
+ "*": "//www.bing.com/shop?q=\u0002\u000138",
+ "i": {
+ "*": "http://www.businessinsider.com/s?q=\u0002\u00014",
+ "shop": "//shop.bsigroup.com/SearchResults/?q=\u0002\u00010"
+ },
+ "l": "http://www.signbsl.com/sign/\u0002\u00010",
+ "p": "//www.blendswap.com/blends/search?keywords=\u0002\u00013",
+ "r": "http://www.blueskyrotor.com/performance/search/index.php?keyword=\u0002\u00018",
+ "t": {
+ "*": "http://www.barbershoptags.com/dbpage.php?pg=tags&go=Go&_searchq=\u0002\u00010",
+ "ar": {
+ "*": "//www.biostars.org/local/search/page/?q=\u0002\u00010",
+ "s": "//www.bundlestars.com/en/games?search=\u0002\u00010"
+ }
+ },
+ "w": "//bladeandsoul.gamepedia.com/index.php?search=\u0002\u00010",
+ "dman": "http://www.freebsd.org/cgi/man.cgi?query=\u0002\u00017",
+ "ocial": "//www.bing.com/social/search/updates?q=\u0002\u00017"
+ },
+ "t": {
+ "c": {
+ "*": "//www.blockchain.com/search?search=\u0002\u000136",
+ "m": "http://bitcoinity.org/markets/\u0002/USD\u00010",
+ "addr": "//www.blockchain.com/btc/address/\u0002\u00017"
+ },
+ "*": "//www.bing.com/translator?text=\u0002\u0001200",
+ "s": "//bugs.debian.org/cgi-bin/bugreport.cgi?bug=\u0002\u00013",
+ "tf": "http://bttf.duckduckgo.com/?q=\u0002\u00010",
+ "abs": "http://www.ultimate-guitar.com/search.php?s=\u0002&w=songs\u00010",
+ "name": "//www.behindthename.com/names/search.php?terms=\u0002&type=\u000113",
+ "rfs": "//btrfs.wiki.kernel.org/index.php?title=Special%3ASearch&search=\u0002\u00010",
+ "url": "http://www.microsofttranslator.com/bv.aspx?a=\u0002\u000115"
+ },
+ "u": {
+ "b": "//www.bookbub.com/search?search=\u0002\u00010",
+ "*": "//bulbapedia.bulbagarden.net/w/index.php?title=Special%3ASearch&search=\u0002\u0001158",
+ "m": "//www.mangaupdates.com/search.html?search=\u0002\u00016",
+ "y": {
+ "*": "//www.amazon.com/s/?tag=duc0c-20&url=search-alias%3Daps&field-keywords=\u0002\u000141823",
+ "ee": "http://buyee.jp/item/search?query=\u0002 \u00010",
+ "cott": "http://www.buycott.com/search/all?query=\u0002\u00010",
+ "truckwheels": "http://www.buytruckwheels.com/index.php?route=product/search&filter_name=\u0002 \u00010"
+ },
+ "z": {
+ "*": "//www.buzer.de/s1.htm?a=&g=\u0002\u00010",
+ "z": {
+ "*": "http://www.playbuzz.com/search?query=\u0002\u00010",
+ "feed": "//www.buzzfeed.com/search?q=\u0002\u000122"
+ }
+ },
+ "ch": {
+ "7": "//www.buch7.de/store/simple_search_results?utf8=%E2%9C%93&navkat=&search=\u0002&commit.x=0&commit.y=0\u00014",
+ "*": "//buchonline.info/?s=\u0002\u00010",
+ "preis24": "//www.buchpreis24.de/stichwort/\u0002\u00010"
+ },
+ "ej": "//buprimo.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&tab=default_tab&search_scope=default_scope&vid=BU&lang=en_US&offset=0\u00010",
+ "nd": {
+ "*": "//www.bund.net/service/suchergebnis/?L=0&q=\u0002\u00010",
+ "le": {
+ "*": "//bundlephobia.com/result?p=\u0002\u000114",
+ "s": "//www.bundlestars.com/en/games?search=\u0002\u00010",
+ "phobia": "//bundlephobia.com/result?p=\u0002\u000114"
+ }
+ },
+ "ng": "http://www.lawyersaroundme.com/search/?term=\u0002\u00010",
+ "nq": "//together.bunq.com/?q=\u0002\u00010",
+ "p8": "http://catalogue.bu.univ-paris8.fr/cgi-bin/koha/opac-search.pl?idx=&q=\u0002\u00010",
+ "sa": "http://www.basketusa.com/?s=\u0002\u00010",
+ "cea": "http://ucm.summon.serialssolutions.com/es-ES/#!/search?ho=t&fvf=ContentType,Newspaper%20Article,t&l=es-ES&q=\u0002&pg=buscador&utf8=%E2%9C%93\u00010",
+ "dgetbytes": "http://www.budgetbytes.com/?s=\u0002\u00013",
+ "ffy": "http://buffy.wikia.com/wiki/Special:Search?search= \u0002&go=Go\u00014",
+ "ffalolib": "//www.buffalolib.org/vufind/Union/Search?lookfor=\u0002&type=keyword&submit=Find&sort=title\u00010",
+ "gforum": "//www.bug.hr/forum/search/topic/?txt=\u0002\u00010",
+ "gguide": "http://bugguide.net/index.php?q=search&keys=\u0002\u000110",
+ "gzilla": "//bugzilla.mozilla.org/buglist.cgi?quicksearch=\u0002 \u00014",
+ "ien": "http://www.buienalarm.nl/location/\u0002\u00010",
+ "ild": "http://www.build.com/index.cfm?page=search:browse&term=\u0002\u00010",
+ "ilt": {
+ "*": "//builtwith.com/?\u0002\u00010",
+ "with": "//builtwith.com/?\u0002\u00010"
+ },
+ "kalapak": "//www.bukalapak.com/products?utf8=%E2%9C%93&search%5Bkeywords%5D=\u0002\u00016",
+ "kdev": "http://dev.bukkit.org/search/?search=\u0002\u00010",
+ "kkit": "//www.curseforge.com/minecraft/bukkit-plugins/search?search=\u0002\u00010",
+ "lba": {
+ "*": "//bulbapedia.bulbagarden.net/w/index.php?title=Special%3ASearch&search=\u0002\u0001158",
+ "pedia": "http://bulbapedia.bulbagarden.net/w/index.php?title=Special:Search&search=\u0002&go=Go\u00015"
+ },
+ "lletproof": "//blog.bulletproof.com/?s=\u0002\u00010",
+ "llmoose": "http://www.bullmoose.com/search?q=\u0002&SC=1\u000121",
+ "nnings": "//www.bunnings.com.au/search/products?q=\u0002&redirectFrom=Any\u000133",
+ "nware": "http://www.bunnings.com.au/search/products?q=\u0002 &redirectFrom=Any\u00010",
+ "rbuja": "http://www.burbuja.info/inmobiliaria/search.php?do=process&query=\u0002\u00010",
+ "rst": "//burst.shopify.com/photos/search?utf8=✓&q=\u0002\u00013",
+ "scape": "http://www.buscape.com.br/cprocura?produto=\u0002\u00014",
+ "sinessgovau": "//www.business.gov.au/search?q=\u0002\u00010",
+ "stimes": "//bustimes.org/search?q=\u0002\u00010"
+ },
+ "v": {
+ "*": "//www.bing.com/videos?q=\u0002\u00012393",
+ "g": "//fahrinfo.bvg.de/Fahrinfo/bin/query.bin/?pk_campaign=BVG.de_Eingabe&from=\u0002 \u00014",
+ "s": "http://pesquisa.bvsalud.org/regional/?q=\u0002\u00010",
+ "ideo": {
+ "*": "//www.bing.com/videos?q=\u0002\u00012393",
+ "s": "//www.bing.com/videos?q=\u0002\u00012393"
+ }
+ },
+ "w": {
+ "*": "//www.bing.com/weather/forecast?q=\u0002\u00016",
+ "c": "http://belfrycomics.net/pg/?searchtype=Titles&searchpat=\u0002\u00010",
+ "s": "//bws.com.au/search?searchTerm=\u0002\u00010",
+ "books": "http://www.betterworldbooks.com/\u0002-H0.aspx?SearchTerm=\u0002 \u00017",
+ "eek": "//www.bing.com/search?q=\u0002&filters=ex1%3a\"\"ez2\"\"\u00010"
+ },
+ "0b": "http://b0b.fr/?s=\u0002\u00010",
+ "4x": "//www.b4x.com/android/forum/pages/results/?query=\u0002\u00010",
+ "jj": "//www.bjjheroes.com/?s=\u0002\u00010",
+ "jp": "http://www.bjp.org/?searchword=\u0002&searchphrase=exact&limit=20&ordering=newest&view=search&option=com_search\u00010",
+ "&n": "//www.barnesandnoble.com/s/\u0002\u00015",
+ "xr": "http://bxr.su/search?refs=\u0002\u00010",
+ "yu": {
+ "*": "//www.byu.edu/search-all?q=\u0002\u00010",
+ "i": "//www.byui.edu/search/result?q=\u0002\u00010"
+ },
+ "3ta": "http://b3ta.com/search/posts?q=\u0002\u00010",
+ "4kids": "http://www.biology4kids.com/search.html?cx=partner-pub-9168758629909687%3A9553394167&cof=FORID%3A10&ie=UTF-8&q=\u0002&sa=Search\u00013",
+ "-rhymes": "http://www.b-rhymes.com/rhyme/word/\u0002\u00010",
+ "yggahus": "//www.byggahus.se/sokresultat/?q=\u0002 \u00010",
+ "yond": "http://www.byond.com/games/?text=\u0002\u00010",
+ "yte": "//www.byte-post.com/?s=\u0002\u00010",
+ "ztch": "//yadda.icm.edu.pl/baztech/search/page.action?q=sc.general*c_0all_0eq.\u0002*l_0&qt=SEARCH\u00010"
+ },
+ "c": {
+ "2": {
+ "1": "//www.channel21.de/catalogsearch/result/?q=\u0002\u00010",
+ "4": "//www.chrono24.com/search/index.htm?watchTypes=&query=\u0002&dosearch=true&searchexplain=1&accessoryTypes=\u00013",
+ "c": {
+ "*": "http://www.camptocamp.org/summits/list/snam/\u0002\u00010",
+ "forum": "http://www.camptocamp.org/documents/search?type=forums&q=\u0002 \u00010",
+ "site": "http://www.camptocamp.org/documents/search?type=sites&q=\u0002\u00010",
+ "summit": "http://www.camptocamp.org/documents/search?type=summits&q=\u0002\u00010"
+ },
+ "e": "//translate.google.com/#cs/en/\u0002\u00010",
+ "*": "http://c2.com/cgi/fullSearch?search=\u0002\u00015"
+ },
+ "4": "http://www.channel4.com/search/?q=\u0002\u00010",
+ "a": {
+ "a": "http://www.caa.ca/?s=\u0002&submit=Search&lang=en\u00010",
+ "*": "//www.amazon.ca/s/?tag=duc22-20&field-keywords=\u0002\u0001564",
+ "d": {
+ "*": "//www.caddetails.com/search?q=\u0002\u00010",
+ "ence": "//www.cadence.com/content/cadence-www/global/en_US/home/search.html?k=\u0002\u00010"
+ },
+ "h": {
+ "*": "http://michaelyingling.com/random/calvin_and_hobbes/search.php?phrase=\u0002\u00010",
+ "o": "//www.cardhoarder.com/cards?data[search]=\u0002\u00013"
+ },
+ "m": {
+ "d": "http://dictionary.cambridge.org/search/american-english/direct/?q=\u0002\u0001324",
+ "g": "http://dictionary.cambridge.org/us/grammar/british-grammar/\u0002\u00010",
+ "*": "http://search.cam.ac.uk/web?query=\u0002\u00016",
+ "el": {
+ "*": "http://camelcamelcamel.com/products?sq=\u0002 \u0001126",
+ "de": "//de.camelcamelcamel.com/products?sq=\u0002\u00015",
+ "fr": "//fr.camelcamelcamel.com/search?sq=\u0002\u00010"
+ },
+ "pl": {
+ "*": "http://dictionary.cambridge.org/dictionary/english-polish/\u0002\u00010",
+ "en": "//dictionary.cambridge.org/dictionary/polish-english/\u0002\u00010"
+ },
+ "tw": "//dictionary.cambridge.org/dictionary/english-chinese-traditional/\u0002\u000155",
+ "aro": "//www.z28.com/search/search?keywords=\u0002&order=relevance\u00010",
+ "bridge": "http://dictionary.cambridge.org/dictionary/english/\u0002\u0001304",
+ "erapb": "//www.camerapricebuster.co.uk/Search?q=\u0002\u00010",
+ "esen": "//dictionary.cambridge.org/dictionary/spanish-english/\u0002\u00010",
+ "fren": "//dictionary.cambridge.org/dictionary/french-english/\u0002\u00010",
+ "lib": "http://idiscover.lib.cam.ac.uk/primo-explore/search?query=any,contains,\u0002&tab=cam_lib_coll&search_scope=SCOP_CAM_ALL&vid=44CAM_PROD&lang=en_US&offset=0\u00010",
+ "pus": {
+ "*": "//accucampus.net/search?q=\u0002\u00013",
+ "nav": "//navigator.tu-dresden.de/erweitertesuche/\u0002\u00010"
+ }
+ },
+ "n": {
+ "*": "//recherche-search.gc.ca/rGs/s_r?cdn=canada&st=s&num=10&langs=eng&st1rt=0&s5bm3ts21rch=x&q=\u0002\u00016",
+ "on": "//www.usa.canon.com/internet/portal/us/home/searchresults?query=\u0002&searchTab=products\u00010",
+ "oo": "http://www.canoonet.eu/services/Controller?input=\u0002\u00010",
+ "to": {
+ "*": "http://cantonese.org/search.php?q=\u0002\u00013",
+ "dict": "http://www.cantonese.sheik.co.uk/dictionary/search/?searchtype=1&text=\u0002\u000190"
+ },
+ "ada": {
+ "*": "//recherche-search.gc.ca/rGs/s_r?cdn=canada&st=s&num=10&langs=eng&st1rt=0&s5bm3ts21rch=x&q=\u0002\u00016",
+ "computers": "http://www.canadacomputers.com/advanced_search_result.php?keywords=\u0002 \u000111",
+ "post": "//www.canadapost.ca/cpotools/apps/track/personal/findByTrackNumber?trackingNumber=\u0002&LOCALE=en&LOCALE2=en\u000136"
+ },
+ "adiantire": "http://www.canadiantire.ca/en/search-results.html?searchByTerm=true&q=\u0002\u00017",
+ "dade": "//www.c-and-a.com/webapp/wcs/stores/servlet/SearchDisplay?catalogId=10001&storeId=10153&langId=-3&articleSearch=false&searchTerm=\u0002&x=0&y=0\u00010",
+ "dlestickpatterns": "http://www.candlestickpatterns.org/?s=\u0002\u00010",
+ "istream": {
+ "*": "http://www.canistream.it/search/term/\u0002\u00016",
+ "it": "http://www.canistream.it/search/term/\u0002\u00016",
+ "tv": "http://www.canistream.it/search/tv/\u0002\u00010",
+ "movie": "http://www.canistream.it/search/movie/\u0002\u00010"
+ },
+ "iuse": "http://caniuse.com/#search=\u0002\u0001374",
+ "lii": "http://www.canlii.ca/en/search/search.do?all=\u0002\u00010",
+ "nabis": "//www.andcannabis.com/?s=\u0002\u00010",
+ "opener": "http://11foot8.com/?s=\u0002\u00016"
+ },
+ "p": {
+ "*": "//coinmarketcap.com/search/?q=\u0002\u0001193",
+ "f": "//www.capfriendly.com/search?s=\u0002\u00015",
+ "p": "http://www.cappusa.com/catalogsearch/result/?q=\u0002\u00010",
+ "ital": "//www.capital.bg/search.php?stext=\u0002\u00010",
+ "ost": "http://www.canadapost.ca//cpotools/apps/track/personal/findByTrackNumber?trackingNumber=\u0002\u000122"
+ },
+ "r": {
+ "*": "http://www.carmagazine.co.uk/GLOBAL/Search-Results/?N=0&Ntx=mode%20matchallpartial&Ntk=site&Ntt=\u0002\u00014",
+ "bs": "http://www.calorieking.com.au/foods/search.php?keywords=\u0002&showresults=yes&go=Search\u00010",
+ "go": "//crates.io/search?q=\u0002\u0001875",
+ "anddriver": "http://caranddriver.com/search/\u0002\u00010",
+ "dboard": "//www.cardboardconnection.com/search-results?q=\u0002\u00010",
+ "dkingdom": "//www.cardkingdom.com/catalog/search?search=header&filter%5Bname%5D=\u0002\u00017",
+ "eerbuilder": "http://www.careerbuilder.com/Jobseeker/Jobs/JobResults.aspx?IPath=QH&ch=&rs=&s_rawwords=\u0002&s_jobtypes=ALL&s_freshness=30&s_education=DRNS&s_freeloc=&qsbButton=Find+Jobs+%3E%3E\u00010",
+ "jam": "//carjam.co.nz/car/?plate=\u0002\u00010",
+ "mag": "http://www.carmagazine.co.uk/GLOBAL/Search-Results/?N=0&Ntx=mode%20matchallpartial&Ntk=site&Ntt=\u0002\u00014",
+ "max": "//www.carmax.com/search#FreeText=\u0002\u00010",
+ "ousell": "//carousell.com/search/products/?query=\u0002 \u00015",
+ "rot": "http://search.carrot2.org/stable/search?source=web&view=folders&skin=fancy-compact&query=\u0002&results=100&algorithm=lingo\u00010",
+ "sales": "//www.carsales.com.au/cars/results/?q=CarAll.keyword(\u0002).&area=Stock&vertical=car&WT.z_srchsrcx=makemodel\u00010",
+ "toonnetwork": "http://www.cartoonnetwork.com/search/index.html?keywords=\u0002\u00010"
+ },
+ "s": {
+ "*": "http://www.commonchemistry.org/ChemicalDetail.aspx?ref=\u0002\u00010",
+ "chy": "http://stadt-bremerhaven.de/?s=\u0002\u000128",
+ "etext": "//casetext.com/search?q=\u0002\u000112",
+ "hoverflow": "http://www.cashoverflow.in/?s=\u0002 \u00010",
+ "tbox": "//castbox.fm/podcasts/\u0002\u00010"
+ },
+ "t": {
+ "h": {
+ "*": "http://www.cathdb.info/search?q=\u0002\u00010",
+ "olic": {
+ "*": "http://www.catholic.com/search/content/\u0002\u00016",
+ "store": "//www.zieglers.com/search.php?search_query=\u0002\u00010"
+ }
+ },
+ "*": "//dlc.iec.cat/results.asp?txtEntrada=\u0002\u000123",
+ "alandictionary": "http://www.catalandictionary.org/en/search/?q=\u0002\u00010",
+ "awikibe": "//www.catawiki.be/search?q=\u0002\u00010"
+ },
+ "bq": "http://www.cabq.gov/searchresults?q=\u0002\u00010",
+ "ct": {
+ "*": "http://conjd.cactus2000.de/index.php?q=\u0002\u00018",
+ "us": {
+ "*": "//shop.cactusmart.com/search?q=\u0002\u00010",
+ "mart": "//shop.cactusmart.com/search?q=\u0002\u00010"
+ }
+ },
+ "fr": "http://www.carrefour.fr/?q=\u0002\u00010",
+ "ke": {
+ "2": {
+ "*": "http://book.cakephp.org/2.0/en/search.html?q=\u0002\u00010",
+ "book": "http://book.cakephp.org/2.0/en/search.html?q=\u0002 \u00010"
+ },
+ "*": "http://api.cakephp.org/search/\u0002\u00010",
+ "book": "//book.cakephp.org/3.0/en/search.html?check_keywords=yes&area=default&q=\u0002\u00010"
+ },
+ "lc": {
+ "*": "//duckduckgo.com/?q=\u0002&ia=calculator\u0001125",
+ "ulator": "//duckduckgo.com/?ia=calculator&q=\u0002\u00018"
+ },
+ "ld": "http://dictionary.cambridge.org/search/british/?source=duckduckgo&q=\u0002\u0001199",
+ "ll": {
+ "*": "http://qrzcq.com/?q=\u0002&action=search&page=search\u00010",
+ "ook": "http://callook.info/\u0002\u00013"
+ },
+ "ls": "//www.caloriecount.com/search/foods?searchpro=\u0002\u00010",
+ "che": {
+ "d": {
+ "*": "//webcache.googleusercontent.com/search?q=cache:\u0002\u000175",
+ "view": "//webcache.googleusercontent.com/search?q=cache:\u0002\u000175"
+ },
+ "*": "//webcache.googleusercontent.com/search?q=cache:\u0002\u000175"
+ },
+ "fepress": "//www.cafepress.com/+\u0002\u00010",
+ "gematch": "http://www.cagematch.net/?id=666&search=\u0002\u00014",
+ "irn": "http://www.cairn.info/resultats_recherche.php?searchTerm=\u0002\u00019",
+ "lendar": "//www.google.com/calendar/b/0/render?q=\u0002\u000155",
+ "lvinandhobbes": "http://michaelyingling.com/random/calvin_and_hobbes/search.php?phrase=\u0002\u00010"
+ },
+ "b": {
+ "c": "//www.cbc.ca/search?q=\u0002\u000110",
+ "*": "//www.crunchbase.com/textsearch?q=\u0002\u000180",
+ "d": {
+ "*": "http://www.christianbook.com/Christian/Books/easy_find?Ntt=\u0002&N=0&Ntk=keywords&action=Search&Ne=0\u00010",
+ "bcz": "//cbdb.cz/hledat?text=\u0002\u00010",
+ "oil": "//cbd-oil-canada.ca/?s=/\u0002\u00010"
+ },
+ "k": "http://carminbook.com/?s=\u0002\u00010",
+ "n": "http://www1.cbn.com/cbn-search?search_term=\u0002&site=default_collection\u00010",
+ "r": "http://comicbookroundup.com/search_results.php?f_search=\u0002\u00010",
+ "s": {
+ "*": "//www.cbs.nl/nl-nl/zoeken/?query=\u0002\u00010",
+ "ervice": "http://www.cbservicedetersivi.it/?s=\u0002\u00010",
+ "news": "http://search.cbsnews.com/?source=cbs&q=\u0002\u00010",
+ "sports": "http://www.sportsline.com/info/search?q=\u0002\u00010"
+ },
+ "x": "http://choualbox.com/recherche?q=\u0002\u00010",
+ "br": "//www.sports-reference.com/cbb/search/search.fcgi?hint=&search=\u0002&pid=&idx=\u00010",
+ "ase": "http://www.computerbase.de/suche/?q=\u0002\u00010",
+ "lue": "//www.coolblue.nl/zoeken?query=\u0002\u00010",
+ "ottle": "//codebottle.io/?q=\u0002\u00010",
+ "tnuggets": "//www.cbtnuggets.com/search?q=\u0002\u00010",
+ "wiki": "http://combineoverwiki.net/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010"
+ },
+ "c": {
+ "b": "//www.climbbybike.com/climbs_selection.asp?Mountainname=\u0002\u00010",
+ "c": {
+ "c": {
+ "a": "//ca.camelcamelcamel.com/search?sq=\u0002\u00010",
+ "*": "http://ccc.scborromeo.org.master.com/texis/master/search/?sufs=0&q=\u0002\u00010"
+ },
+ "*": "http://camelcamelcamel.com/search?sq=\u0002\u0001584",
+ "de": "//de.camelcamelcamel.com/search?sq=\u0002\u00017",
+ "uk": "http://uk.camelcamelcamel.com/search?sq=\u0002\u000133"
+ },
+ "*": "//search.creativecommons.org/search?q=\u0002\u000149",
+ "d": "http://hamster.foxhollow.ca/ccd/index.php?keywords=\u0002 \u00010",
+ "k": "http://cinemaclock.com/search?r=bri&m=Vancouver&key=\u0002 \u00010",
+ "l": {
+ "*": "http://www.cclonline.com/search/?q=\u0002\u00010",
+ "y": "//colorcodedlyrics.com/?s=\u0002\u00014"
+ },
+ "m": "//coinmarketcap.com/currencies/search/?q=\u0002\u00014",
+ "p": {
+ "*": "http://canadiancouchpotato.com/?s=\u0002&submit=Search\u00013",
+ "lace": "//www.coworking.coffee/places?q=\u0002\u00010"
+ },
+ "r": "//ccr.chakralinux.org/packages.php?O=0&K=\u0002&do_Search=+Go+\u00010",
+ "u": "//coincheckup.com/coins/\u0002\u00010",
+ "ap": "//coinmarketcap.com/currencies/search/?q=\u0002\u00014",
+ "el": "http://www.ccel.org/search/fulltext/\u0002\u00010",
+ "nz": "//www.cheapies.nz/search/node/\u0002\u00010",
+ "st": "http://css-tricks.com/search-results/?q=\u0002\u00010",
+ "tv": "http://so.cntv.cn/language/english/?qtext=\u0002\u00010",
+ "grforum": "//www.christcenteredgamer.com/phpBB3/search.php?keywords=\u0002&submit=Search\u00010",
+ "grreviews": "//www.christcenteredgamer.com/index.php/component/search/?searchword=\u0002&ordering=newest&searchphrase=all&areas[0]=blogs\u00010",
+ "heck": "//www.codecheck.info/product.search?q=\u0002&OK=Suchen\u00010",
+ "ode": "http://www.country-codes.org/\u0002\u00010",
+ "onst": "http://recherche.conseil-constitutionnel.fr/?q=\u0002\u00010",
+ "ook": "http://www.cybercook.com.br/receitas/\u0002\u00010",
+ "search": "//ccsearch.creativecommons.org/search?q=\u0002\u00019",
+ "trl": "//www.class-central.com/search?q=\u0002 \u00010",
+ "wiki": "http://computercraft.info/wiki/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010"
+ },
+ "*": "http://www.cnet.com/1770-5_1-0.html?query=\u0002\u0001210",
+ "d": {
+ "a": {
+ "*": "http://cda.chronomania.net/search.php?search=\u0002\u00014",
+ "ndlp": "http://www.cdandlp.com/en/search/?q=\u0002\u00010"
+ },
+ "b": "//chess-db.com/public/execute.jsp?name=\u0002\u00010",
+ "c": "http://www.cdc.gov/search.do?queryText=\u0002\u000138",
+ "*": "http://www.collinsdictionary.com/dictionary/english/\u0002?showCookiePolicy=true\u0001133",
+ "d": {
+ "a": {
+ "*": "http://cddawiki.chezzo.com/cdda_wiki/index.php?search=\u0002\u00010",
+ "i": "http://cdda-trunk.chezzo.com/search?q=\u0002\u000114",
+ "w": "http://cddawiki.chezzo.com/cdda_wiki/index.php?search=\u0002\u00010"
+ },
+ "*": "//cheapdigitaldownload.com/catalog/search-\u0002\u00010"
+ },
+ "e": {
+ "*": "http://lookup.computerlanguage.com/host_app/search?cid=C999999&term=\u0002&lookup.x=0&lookup.y=0\u00010",
+ "en": "http://www.collinsdictionary.com/spellcheck/english-german?q=\u0002 \u00010",
+ "nde": "//dictionary.cambridge.org/dictionary/english-german/\u0002\u000117",
+ "nes": "//dictionary.cambridge.org/dictionary/english-spanish/\u0002\u000112"
+ },
+ "i": {
+ "c": {
+ "*": "//dictionary.cambridge.org/spellcheck/english/?q=\u0002\u000188",
+ "t": "//cdict.net/?q=\u0002\u00010"
+ },
+ "*": "//www.dictionary.com/browse/\u0002\u00010",
+ "rect": "//www.comdirect.de/inf/search/general.html?SEARCH_VALUE=\u0002\u00010",
+ "scount": "http://www.cdiscount.com/search/10/\u0002.html\u000111",
+ "ver": "//chronodivers.com/?s=\u0002\u00010"
+ },
+ "j": "http://www.cdjapan.co.jp/products?q=\u0002\u00015",
+ "l": "http://www.collinsdictionary.com/dictionary/english-cobuild-learners/\u0002\u00010",
+ "m": "http://www.cdm.me/pretraga/\u0002\u00010",
+ "n": {
+ "*": "http://www.cdnjs.com/#/search/\u0002 \u00016",
+ "js": "//cdnjs.com/#q=\u0002\u000136",
+ "finder": "http://www.cdnplanet.com/tools/cdnfinder/#host:\u0002 \u00010"
+ },
+ "p": "//www.cdp.net/en/responses?utf8=✓&queries[name]=\u0002\u00010",
+ "s": "http://cdsportal.u-strasbg.fr/#\u0002\u00010",
+ "t": "//www.collinsdictionary.com/dictionary/english-thesaurus/\u0002\u00010",
+ "u": "http://www.cduniverse.com/sresult.asp?HT_Search_Info=\u0002\u00010",
+ "w": {
+ "*": "http://www.cdw.com/shop/search/result.aspx?key=\u0002\u000114",
+ "ca": "//www.cdw.ca/shop/search/result.aspx?key=\u0002}&wclsscat=&b=&p=&ctlgfilter=&searchscope=all&sr=1\u00010"
+ },
+ "on": {
+ "*": "http://cdon.se/search?q=\u0002\u00010",
+ "dk": "http://cdon.dk/search?q=\u0002\u00010",
+ "eu": "http://cdon.eu/search?q=\u0002\u00010",
+ "fi": "http://cdon.fi/search?q=\u0002\u00013",
+ "no": "http://cdon.no/search?q=\u0002\u00010",
+ "se": "http://cdon.se/search?q=\u0002\u00010"
+ },
+ "gdic": "http://dictionary.cambridge.org/dictionary/learner-english/\u0002_1?q=\u0002\u00010",
+ "keys": "//www.cdkeys.com/catalogsearch/result/?q=\u0002\u000128",
+ "own": "http://currentlydown.com/\u0002\u00013"
+ },
+ "e": {
+ "b": "//www.ebay.com/csc/items/?_nkw=\u0002+&LH_Complete=1\u00010",
+ "*": "http://forum.cheatengine.org/search.php?q=\u0002\u00010",
+ "p": "http://www.consultarcep.com.br/resultados.html?cx=partner-pub-6657933402951336%3A8478085485&cof=FORID%3A10&ie=UTF-8&q=\u0002&sa=%C2%A0\u00010",
+ "v": "//www.biblegateway.com/quicksearch/?quicksearch=\u0002&qs_version=CEV\u00010",
+ "x": "//uk.webuy.com/search/index.php?stext=\u0002\u000186",
+ "rb": "//www.cerberusbyte.com/?s=\u0002\u00010",
+ "rl": "http://thesaurus.cerl.org/cgi-bin/search.pl?type=l&type=i&type=p&type=c&query=\u0002\u00010",
+ "rn": {
+ "*": "//phonebook.cern.ch/phonebook/#search/?query=\u0002\u00014",
+ "map": "//maps.cern.ch/mapsearch/mapsearch.htm?n=[%27\u0002%27]\u00010"
+ },
+ "cmed": "//www.cecmed.cu/search/node?keys=\u0002\u00010",
+ "ekjp": "http://www.ceek.jp/search.cgi?q=\u0002\u00010",
+ "leb": {
+ "*": "//wikisceleb.com/?s=\u0002\u00014",
+ "rity": "//celebrity.tn/?s=\u0002\u00010"
+ },
+ "llartracker": "http://www.cellartracker.com/list.asp?fInStock=0&Table=List&iUserOverride=0&szSearch=\u0002\u00010",
+ "lticpodcast": "http://celticmusicpodcast.com/?s=\u0002\u00010",
+ "neo": "http://www.ceneo.pl/;szukaj-\u0002\u0001227",
+ "nes": "//www.collinsdictionary.com/dictionary/english-spanish/\u0002\u00010",
+ "neje": "//www.ceneje.si/Iskanje/Izdelki?q=\u0002\u00015",
+ "nfr": "http://www.collinsdictionary.com/dictionary/english-french/\u0002\u00010",
+ "nsys": "//www.censys.io/ipv4?q=\u0002\u00017",
+ "ntredailytimes": "http://www.centredaily.com/search/?q=\u0002\u00010",
+ "rcavino": "http://cercavino.com/cerca?vino=\u0002\u00010"
+ },
+ "g": {
+ "*": "http://hub.culturegraph.org/search?query=\u0002\u000110",
+ "g": "http://champion.gg/champion/\u0002\u000118",
+ "l": "//pittsburgh.craigslist.org/search/sss?query=\u0002\u00010",
+ "p": "http://catalog.gpo.gov/F?func=find-b&find_code=WRD&request=\u0002\u00017",
+ "t": "//www.cgtrader.com/3d-models?keywords=\u0002\u00010",
+ "w": "//resources.allsetlearning.com/gramwiki/?search=\u0002\u000115"
+ },
+ "h": {
+ "*": "http://chequeado.com/?s=\u0002\u00013",
+ "d": "http://camphikedrive.blogspot.com.au/search?q=\u0002&m=1\u00010",
+ "e": {
+ "*": "//chrome.google.com/webstore/search/\u0002?_category=extensions\u000115",
+ "f": {
+ "*": "http://www.chefkoch.de/rs/s0/\u0002/Rezepte.html\u00017",
+ "io": "//docs.chef.io/search.html#stq=\u0002&stp=1\u00010",
+ "doc": "//docs.chef.io/search.html#stq=\u0002&stp=1\u00010",
+ "koch": {
+ "*": "//www.chefkoch.de/suche.php?wo=2&suche=\u0002\u000187",
+ "vegan": "http://www.chefkoch.de/rs/s0t57/\u0002/Vegan-Rezepte.html\u00013"
+ }
+ },
+ "at": {
+ "*": "//devhints.io/\u0002\u00014",
+ "cc": "http://www.cheatcc.com/search_results.html?sitesearch=CheatCC.com&domains=CheatCC.com&q=\u0002&sa=Google+Search&client=pub-7081624040320322&forid=1&ie=UTF8&oe=UTF8&cof=GALT%3A%23008000%3BGL%3A1%3BDIV%3A%230000FF%3BVLC%3A663399%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3AFFFFFF%3BALC%3A0000FF%3BLC%3A0000FF%3BT%3A000000%3BGFNT%3A0000FF%3BGIMP%3A0000FF%3BLH%3A0%3BLW%3A0%3BL%3Ahttp%3A%2F%2Fwww.cheatcc.com%2Fccclink.gif%3BS%3Ahttp%3A%2F%2Fwww.cheatcc.com%2Findex2.html%3BFORID%3A11\u00010",
+ "codes": "http://www.cheatcc.com/search_results.html?sitesearch=CheatCC.com&domains=CheatCC.com&q=\u0002&sa=Google+Search&client=pub-7081624040320322&forid=1&ie=UTF8&oe=UTF8&cof=GALT%3A%23008000%3BGL%3A1%3BDIV%3A%230000FF%3BVLC%3A663399%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3AFFFFFF%3BALC%3A0000FF%3BLC%3A0000FF%3BT%3A000000%3BGFNT%3A0000FF%3BGIMP%3A0000FF%3BLH%3A0%3BLW%3A0%3BL%3Ahttp%3A%2F%2Fwww.cheatcc.com%2Fccclink.gif%3BS%3Ahttp%3A%2F%2Fwww.cheatcc.com%2Findex2.html%3BFORID%3A11\u00010",
+ "ography": "http://www.cheatography.com/explore/search/?q=\u0002\u00010"
+ },
+ "gg": "http://www.chegg.com/search/\u0002\u000110",
+ "ss": {
+ "*": "//www.chess.com/topic/\u0002\u0001114",
+ "games": "http://www.chessgames.com/perl/ezsearch.pl?search=\u0002\u00010"
+ },
+ "wy": "http://www.chewy.com/s?dept=all&query=\u0002\u00018",
+ "apassgamer": "http://www.cheapassgamer.com/query.php?keywords=\u0002\u00010",
+ "ck24": "//preisvergleich.check24.de/suche.html?query=\u0002\u00010",
+ "ckhost": "//check-host.net/ip-info?host=\u0002\u00014",
+ "ddar": "//cheddar.com/search?q=\u0002\u00010",
+ "ese": "http://www.cheese.com/?q=\u0002\u00010",
+ "ezburger": "http://search.cheezburger.com/?q=\u0002\u00010",
+ "micalize": "http://www.chemicalize.org/structure/#!mol=\u0002&source=fp\u00010",
+ "mie.de": "http://www.chemie.de/search/?q=\u0002\u00010",
+ "mse": "http://chemistry.stackexchange.com/search?q=\u0002\u00010",
+ "mspider": "http://www.chemspider.com/Search.aspx?q=\u0002\u00010",
+ "mwiki": "http://chemwiki.ucdavis.edu/Special:Search?search=\u0002&qid=&fpid=1285&fpth=\u00010"
+ },
+ "l": {
+ "*": "http://churchhistorycatalog.lds.org/primo_library/libweb/action/search.do?fn=search&ct=search&initialSearch=true&mode=Basic&tab=chl&indx=1&dum=true&srt=rank&vid=CHL_PUBLIC&frbg=&tb=t&vl%28freeText0%29=\u0002&scp.scps=scope%3A%28PEAD%29%2Cscope%3A%28PARCHIVES%29%2Cscope%3A%28PLIBRARY%29%2Cscope%3A%28ALEPH-PCPX%29%2Cscope%3A%28ALEPH-JHX%29%2Cscope%3A%28ALEPH-CAX%29&vl%2830857204UI1%29=all_items&vl%281UIStartWith0%29=contains&vl%2830857210UI0%29=any&vl%2830857210UI0%29=title&vl%2830857210UI0%29=any\u00010",
+ "ib": "http://chalmers.summon.serialssolutions.com/en/search?ho=t&q=\u0002\u00010"
+ },
+ "m": {
+ "*": "//www.lachainemeteo.com/synthese-previsions-meteo-\u0002\u00010",
+ "od": "//chmodcommand.com/chmod-\u0002/\u00010"
+ },
+ "p": "//www.computerhope.com/search2.htm?q=\u0002\u00010",
+ "s": "//chain.so/address/\u0002\u00010",
+ "ar": {
+ "*": "http://charcod.es/#\u0002\u00010",
+ "t": "//hub.helm.sh/charts?q=\u0002\u00013",
+ "ge": "http://initialcharge.net/?s=\u0002 \u00010",
+ "bara": "http://postavy.akihabara.cz/vyhledavani/\u0002\u00010",
+ "ity": {
+ "*": "http://www.charitynavigator.org/index.cfm?bay=search.results&keyword_list=\u0002\u00010",
+ "navigator": "http://www.charitynavigator.org/index.cfm?bay=search.results&keyword_list=\u0002\u00010"
+ },
+ "lotteslaw": "//www.charlotteslaw.nl/?s=\u0002\u00010",
+ "med": "http://charmed.wikia.com/wiki/Special:Search?search=\u0002 \u00010"
+ },
+ "gg": "http://champion.gg/champion/\u0002\u000118",
+ "ip": {
+ "*": "http://suche.chip.de/?q=\u0002&it=1&submit.x=0&submit.y=0\u00010",
+ "db": "http://www.msarnoff.org/chipdb/\u0002\u00010",
+ "oteka": "//www.chipoteka.hr/search?q=\u0002\u00010"
+ },
+ "oc": {
+ "*": "//chocolatecoveredkatie.com/?s=\u0002\u00010",
+ "o": {
+ "*": "//chocolatey.org/packages?q=\u0002\u0001574",
+ "latey": "//chocolatey.org/packages?q=\u0002\u0001574"
+ }
+ },
+ "ow": "http://www.chow.com/search?type=Topic&from_date=1+year+ago&query=\u0002\u00010",
+ "uk": "//beta.companieshouse.gov.uk/search?q=\u0002\u00013",
+ "abad": "http://www.chabad.org/search/results.asp?searchWord=\u0002\u00010",
+ "airish": "//www.chairish.com/search?q=\u0002 \u00010",
+ "akraforum": "http://chakraos.org/forum/search.php?action=search&keywords=\u0002&author=&search_in=0&sort_by=0&sort_dir=DESC&show_as=topics&search=Submit\u00010",
+ "akrapkg": "http://www.chakraos.org/packages/index.php?act=search&subdir=&sortby=date&order=descending&searchpattern=\u0002\u00010",
+ "akrawiki": "http://chakraos.org/wiki/index.php?search=\u0002&go=Go\u00016",
+ "ambers": "http://chambers.co.uk/search.php?query=\u0002&title=21st\u00010",
+ "ampion": {
+ "*": "//championrunner.com/?s=\u0002\u00010",
+ "gg": "http://champion.gg/champion/\u0002\u000118"
+ },
+ "ampssports": "http://www.champssports.com/_-_/keyword-\u0002\u00010",
+ "ange": "//www.change.org/search?q=\u0002\u00015",
+ "annel4": "http://www.channel4.com/search/?q=\u0002\u00010",
+ "annel5": "http://www.channel5.com/search?q=\u0002\u00010",
+ "apo": "//www.reddit.com/r/ChapoTrapHouse/search?q=\u0002&restrict_sr=1\u00010",
+ "atters": "//chatters.ca/catalogsearch/result/?q=\u0002\u00010",
+ "icagotribune": "http://www.chicagotribune.com/search/dispatcher.front?Query=\u0002&sortby=display_time+descending&subheader-search-button=Go&target=article\u00010",
+ "ichester": "http://www.chichester.gov.uk/article/23353/Search?q=\u0002\u00010",
+ "icken": "//wiki.call-cc.org/search?text=\u0002\u00010",
+ "ief": "//www.chiefdelphi.com/search?expanded=true&q=\u0002\u00010",
+ "ilango": "//www.chilango.com/?s=\u0002\u00010",
+ "illingeffects": "//www.chillingeffects.org/notices/search?&term=\u0002\u00010",
+ "imerarevo": "http://www.chimerarevo.com/search/\u0002\u00010",
+ "inook": "http://ucblibraries.summon.serialssolutions.com/search?q=\u0002\u00010",
+ "oice": "//www.choice.com.au/search?q=\u0002\u00010",
+ "ollo": "//www.chollometro.com/search?q=\u0002\u00010",
+ "ords": "http://www.ultimate-guitar.com/search.php?search_type=title&value=\u0002\u000158",
+ "ordie": "http://www.chordie.com/?q=\u0002\u00010",
+ "ordify": "//chordify.net/?search=\u0002\u00019",
+ "ordwiki": "//ja.chordwiki.org/search.html?q=\u0002\u00010",
+ "osun": "http://nsearch.chosun.com/search/total.search?query=\u0002\u00010",
+ "oual": {
+ "*": "//choualbox.com/recherche?q=\u0002\u00010",
+ "box": "//choualbox.com/recherche?q=\u0002\u00010"
+ },
+ "rome": {
+ "*": "//chrome.google.com/webstore/search/\u0002\u0001198",
+ "store": "//chrome.google.com/webstore/search/\u0002\u0001198",
+ "webstore": "//chrome.google.com/webstore/search/\u0002\u0001198"
+ },
+ "ronopost": "http://www.chronopost.fr/fr/chrono_suivi_search?lang=fr&listeNumerosLT=\u0002\u00010",
+ "tsh": "//cheat.sh/\u0002\u00010",
+ "uck": "http://chuck-nbc.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "urchclarity": "//www.churchclarity.org/search?query=\u0002\u00010",
+ "urchofsatan": "http://www.churchofsatan.com/search-results.php?q=\u0002\u00010"
+ },
+ "i": {
+ "a": {
+ "*": "//www.cia.gov/search?q=\u0002&site=WORLD_FACTBOOK&btnG=Search&x=0&y=0&output=xml_no_dtd&client=CIA&myAction=%2Fsearch&proxystylesheet=CIA&submitMethod=get&sort=date%3AD%3AL%3Ad1&oe=UTF-8&ie=UTF-8&ud=1&exclude_apps=1\u00013",
+ "o": "http://www.ciao.de/sr/q-\u0002\u00010"
+ },
+ "b": {
+ "*": "http://web2.wipo.int/classifications/ipc/ipcpub/#lang=fr&menulang=FR&refresh=page&fipcpc=yes&indexes=yes&notion=scheme&version=20160101&symbol=\u0002\u00010",
+ "erduvidas": "//ciberduvidas.iscte-iul.pt/pesquisa?termo=\u0002\u00010"
+ },
+ "*": "//www.codeigniter.com/user_guide/search.html?q=\u0002\u00010",
+ "e": "//paper.sc/search/?as=page&query=\u0002\u00010",
+ "f": {
+ "*": "http://www.cinemainfocus.com/search?q=\u0002\u00013",
+ "raclub": "http://www.cifraclub.com.br/?q=\u0002\u000165"
+ },
+ "o": "//company.info/organisations/search?q=\u0002\u00010",
+ "u": {
+ "*": "http://caniuse.com/#search=\u0002\u0001374",
+ "s": "//caniuse.com/#search=\u0002\u00010",
+ "py3": "//caniusepython3.com/project/\u0002\u00010"
+ },
+ "v": {
+ "*": "http://civilization.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u000112",
+ "ilization": "http://civilization.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u000112"
+ },
+ "ne": {
+ "*": "http://cinemassacre.com/?s=\u0002&search.x=0&search.y=0\u00010",
+ "magay": "http://www.cinemagay.it/ricerca.asp?tipo=0&campo=\u0002&Submit=Cerca\u00014",
+ "ycortosgay": "http://www.cineycortosgay.com/search?q=\u0002\u00013"
+ },
+ "ti": {
+ "*": "http://citizendium.org/wiki?search=\u0002&title=Special%3ASearch&go=Go+To+Page\u00010",
+ "zenes": "http://www.citizen.es/search?s=\u0002\u00010"
+ },
+ "ied": "http://ciied.xyz/?s=\u0002\u00010",
+ "nst": "//chocolatey.org/packages?q=\u0002\u0001574",
+ "nta": "//www.lirikcinta.com/result/?q=\u0002\u00010",
+ "rcuit": {
+ "*": "http://racingcircuits.info/misc/search-results.html?search=\u0002\u00016",
+ "-help-ph": "//www.circuit-help.com.ph/?s=\u0002\u00010"
+ },
+ "sco": "//search.cisco.com/search?query=\u0002\u00017",
+ "sne": "http://cisne.sim.ucm.es/search*spi~S/X?SEARCH=\u0002\u00010",
+ "tatum": "//www.citatum.hu/kereso.php?kereses=\u0002\u00010",
+ "teul": "http://www.citeulike.org/search/all?q=\u0002\u00010",
+ "teseer": "http://citeseer.ist.psu.edu/search?q=\u0002&submit=Search&sort=rlv&t=doc\u00010",
+ "troenc3owners": "http://citroenc3owners.com/search.php?keywords=\u0002&terms=all&author=&fid[]=5&sc=1&sf=all&sk=t&sd=d&sr=posts&st=0&ch=300&t=0&submit=Search\u00010"
+ },
+ "j": {
+ "*": "//conjour.world/?s=\u0002\u00010",
+ "eu": "http://curia.europa.eu/juris/liste.jsf?language=en&num=\u0002\u00010"
+ },
+ "k": {
+ "2": "//ck2.paradoxwikis.com/index.php?search=\u0002\u000199",
+ "*": "http://www.chefkoch.de/rs/scr/s0/\u0002/Rezepte.html\u000187",
+ "t": {
+ "*": "http://www.creationkit.com/index.php?search=\u0002\u00010",
+ "l": "http://www.1001cocktails.com/cocktails/rechercheCocktailsNom.php?mot=\u0002\u00010"
+ },
+ "12": "//www.ck12.org/search/?q=\u0002&referrer=top_nav&autoComplete=false\u00010",
+ "lt": "http://www.cookinglight.com/search?q=\u0002\u00010",
+ "eys": "http://craftkeys.com/site-info/\u0002\u00010",
+ "iiwiki": "//ck2.paradoxwikis.com/index.php?search=\u0002\u000199"
+ },
+ "l": {
+ "c": "//clcnederland.com/producten/zoeken?sq=\u0002\u00010",
+ "*": "//www.craigslist.org/search/sss?query=\u0002\u0001414",
+ "d": "//support.cloudinary.com/hc/en-us/search?utf8=%E2%9C%93&query=\u0002\u00010",
+ "f": {
+ "*": "http://www.commandlinefu.com/commands/matching/\u0002/bys=/sort-by-votes\u00015",
+ "p": "//www.charlotteslaw.nl/?s=\u0002\u00010"
+ },
+ "j": {
+ "*": "//clojuredocs.org/search?q=\u0002\u0001197",
+ "doc": "//cljdoc.org/search?q=\u0002\u00019"
+ },
+ "r": "//clearlinux.org/search?search=\u0002\u00010",
+ "t": "//calil.jp/local/search?csid=tokyo&q=\u0002\u00010",
+ "u": {
+ "*": "//catalogue.leidenuniv.nl/primo-explore/search?query=any,contains,\u0002&tab=all_content&search_scope=All_Content&vid=UBL_V1&lang=en_US&offset=0\u00010",
+ "bic": "http://www.clubic.com/r/\u0002\u00010"
+ },
+ "as": {
+ "*": "//www.clasohlson.com/se/view/content/search?searchKey=All&search_prefix=\u0002\u00010",
+ "fi": "//www.clasohlson.com/fi/view/content/search?N=0&Ntk=All&Ntt=\u0002&Nty=1&D=\u0002&Ntx=mode+matchpartial&Dx=mode+matchpartial&showTabs=true\u00010",
+ "no": "//www.clasohlson.com/no/view/content/search?searchKey=All&search_prefix=\u0002\u00010",
+ "hofclans": "http://clashofclans.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1#\u00010",
+ "sicdb": "http://classicdb.ch/?search=\u0002\u00010",
+ "srr": "//www.classrr.com/classroom/list?q=\u0002\u00010"
+ },
+ "hs": "http://www.lispworks.com/cgi-bin/search.cgi?q=\u0002&cmd=Search%21&t=-D--HB-\u000185",
+ "io": "//clio.columbia.edu/catalog?q=\u0002\u00014",
+ "wb": "//clwb.net/?post_type=event&s=\u0002\u00010",
+ "amps": "//www.encole.com/search/\u0002\u00010",
+ "anky": "//clanky.seznam.cz/?q=\u0002\u00010",
+ "ark": {
+ "*": "//clark.com/search/?q=\u0002\u00010",
+ "s": "//www.clarks.co.uk/search/?text=\u0002\u00010"
+ },
+ "arin": "//www.clarin.com/buscador/?q=\u0002\u00010",
+ "eanfreak": "//www.cleanfreak.com/catalogsearch/result/?q=\u0002\u00010",
+ "eanuptheworld": "http://www.cleanuptheworld.org/en/search.html?kw=\u0002\u00010",
+ "early": "//www.clearly.ca/eyewear/search?query=\u0002\u00010",
+ "earweb": "http://www.clearwebstats.com/process.php?q=\u0002\u00014",
+ "ickforce": "//clickforce.com.au/?s=\u0002\u00010",
+ "icrbs": "http://www.clicrbs.com.br/busca/rs/?q=\u0002 \u00010",
+ "ien": "//www.clien.net/service/search?q=\u0002\u000117",
+ "iggo": "//www.music.cliggo.com/search/\u0002\u00010",
+ "iki": "http://cliki.net/site/search?query=\u0002\u00010",
+ "imatecounts": "http://climatecounts.org/searchresults.php?p=term&term=\u0002\u00010",
+ "imatempo": "http://www.climatempo.com.br/?q=\u0002\u00010",
+ "inical": "//jobs.advancedclinical.com/search-results?keywords=\u0002\u00010",
+ "inicas": "//clinicasyhospitales.com.co/buscar?q=\u0002\u00010",
+ "ipart": "http://office.microsoft.com/en-us/clipart/results.aspx?qu=\u0002&sc=20\u00010",
+ "ipstijl": "http://www.clipstijl.nl/zoeken.php?zoek=\u0002 \u00010",
+ "iqz": "//beta.cliqz.com/search?q=\u0002&lang=en\u00010",
+ "iqist": "http://cliqist.com/?s=\u0002\u00013",
+ "ker": "http://www.clker.com/search/\u0002\u00010",
+ "ockworksynergy": "http://www.clockworksynergy.com/?s=\u0002 &post_type=product\u00010",
+ "ojars": "//clojars.org/search?q=\u0002\u000133",
+ "ojure": {
+ "*": "http://clojuredocs.org/search?x=0&y=0&q=\u0002\u000141",
+ "docs": "http://clojuredocs.org/search?x=0&y=0&q=\u0002\u000141"
+ },
+ "oogle": "http://cloogle.org/#\u0002\u000125",
+ "osebook": "//www.worldcat.org/search?qt=worldcat_org_bks&q=\u0002&fq=dt%3Abks\u00010",
+ "oudformation": "//docs.aws.amazon.com/search/doc-search.html?searchPath=documentation-guide&searchQuery=\u0002&this_doc_product=AWS+CloudFormation&this_doc_guide=User+Guide&doc_locale=en_us#facet_doc_product=AWS CloudFormation&facet_doc_guide=User Guide\u00014",
+ "oudron": "//cloudron.io/appstore.html?search=\u0002\u00010",
+ "oudsdale": "//www.cloudsdale.org/explore/clouds/search?q=\u0002\u00010",
+ "ovia.app": "//nightwear.clovia.com/search/?q=\u0002\u00010"
+ },
+ "m": {
+ "c": {
+ "*": "//coinmarketcap.com/currencies/\u0002\u00010",
+ "ap": "//coinmarketcap.com/currencies/\u0002\u00010"
+ },
+ "*": "//cm.center/catalog/?q=\u0002\u00014",
+ "e": "//www.chicagomusicexchange.com/search?query=\u0002\u00010",
+ "i": "http://library.cmi.ac.in/cgi-bin/koha/opac-search.pl?q=\u0002\u00010",
+ "l": "http://catalog.clcohio.org/polaris/search/searchresults.aspx?term=\u0002\u00010",
+ "s": {
+ "*": "http://www.chicagomanualofstyle.org/search.epl?q=\u0002\u00010",
+ "sw": "http://cmslxr.fnal.gov/search?_filestring=&_string=\u0002\u00010"
+ },
+ "mm": {
+ "*": "//www.cmmmanager.com/forum/search.php?keywords=\u0002\u00010",
+ "gr": "//www.cmmmanager.com/forum/search.php?keywords=\u0002\u00010"
+ },
+ "ake": {
+ "*": "//cmake.org/cmake/help/latest/search.html?q=\u0002&check_keywords=yes&area=default\u0001117",
+ "30": "http://www.cmake.org/cmake/help/v3.0/search.html?q=\u0002\u00010"
+ },
+ "peu": "http://compare.eu/?fs=\u0002\u00010"
+ },
+ "n": {
+ "*": "http://www.charitynavigator.org/index.cfm?bay=search.results&keyword_list=\u0002\u00010",
+ "h": "//www.conservativehome.com/?s=\u0002\u00010",
+ "m": "//www.cnm.edu/@@gcse-searchresults?q=\u0002\u00010",
+ "n": {
+ "*": "http://www.cnn.com/search/?q=\u0002\u0001199",
+ "e": "http://cnnespanol.cnn.com/?s=\u0002\u00010"
+ },
+ "t": {
+ "*": "http://casinonews.today/?s=\u0002 \u00010",
+ "rl": "http://www.cnrtl.fr/definition/\u0002\u0001238",
+ "rp": "//www.counterpunch.org/search-results/?q=\u0002\u00010"
+ },
+ "w": "//cannanewswire.co/?s=\u0002\u00010",
+ "z": "//www.cheapies.nz/search/node/\u0002\u00010",
+ "ba": "http://cnba.uba.ar/search/node/\u0002\u00010",
+ "bc": "http://search.cnbc.com/main.do?target=all&keywords=\u0002\u00015",
+ "et": {
+ "*": "http://www.cnet.com/1770-5_1-0.html?query=\u0002&tag=srch&target=nw\u000122",
+ "e": "http://www.cnet.com/es/busqueda/?query=\u0002\u00010",
+ "uk": "http://www.cnet.com/search/?query=\u0002\u00010"
+ },
+ "dic": "http://cndic.naver.com/search/all?q=\u0002\u00019",
+ "plx": "http://www.cineplex.com/search-2015?search-query=\u0002\u00010",
+ "rtl": {
+ "a": "http://www.cnrtl.fr/antonymie/\u0002\u00010",
+ "c": "http://www.cnrtl.fr/concordance/\u0002\u00010",
+ "*": "http://www.cnrtl.fr/definition/\u0002\u0001238",
+ "d": "http://www.cnrtl.fr/definition/\u0002\u0001238",
+ "e": "http://www.cnrtl.fr/etymologie/\u0002\u00010",
+ "m": "http://www.cnrtl.fr/morphologie/\u0002\u00010",
+ "p": "http://www.cnrtl.fr/proxemie/\u0002\u00010",
+ "s": "http://www.cnrtl.fr/synonymie/\u0002\u000117"
+ },
+ "y2eur": "//www.xe.com/currencyconverter/convert/?From=CNY&To=EUR&Amount=\u0002\u00010"
+ },
+ "p": {
+ "b": "//www.passmark.com/search/zoomsearch.php?zoom_query=\u0002\u000117",
+ "c": "http://cpc.farnell.com/search?st=\u0002\u00010",
+ "g": "//cygwin.com/cgi-bin2/package-grep.cgi?grep=\u0002\u00010",
+ "*": "//coinpaprika.com/?sort=\u0002\u000122",
+ "l": {
+ "*": "//chipublib.bibliocommons.com/search?&t=title&search_category=title&q=\u0002\u00017",
+ "usplus": "http://www.cplusplus.com/query/search.cgi?q=\u0002\u000116"
+ },
+ "p": {
+ "*": "http://en.cppreference.com/mwiki/index.php?search=\u0002\u00013484",
+ "r": {
+ "*": "http://en.cppreference.com/mwiki/index.php?title=Special%3ASearch&search=\u0002&go=Go\u0001235",
+ "ef": {
+ "*": "http://en.cppreference.com/mwiki/index.php?title=Special:Search&search=\u0002\u0001195",
+ "erence": "http://cppreference.com/w/?search=\u0002\u000181"
+ }
+ },
+ "de": "http://de.cppreference.com/mwiki/index.php?title=Spezial%3ASuche&search=\u0002\u00010",
+ "samples": "http://www.cppsamples.com/#/search/\u0002\u00010"
+ },
+ "t": {
+ "*": "//coder.aapc.com/cpt-codes/\u0002\u00010",
+ "en": "//www.collinsdictionary.com/dictionary/portuguese-english/\u0002\u00010"
+ },
+ "u": {
+ "*": "//www.cpugeek.co.uk/search?q=\u0002\u00015",
+ "world": "http://www.cpu-world.com/cgi-bin/SearchSite.pl?SEARCH=\u0002&PROCESS=Search\u00010"
+ },
+ "an": {
+ "1": "//metacpan.org/search?q=\u0002&lucky=1\u00010",
+ "*": "http://metacpan.org/search?q=\u0002\u0001451",
+ "m": "http://metacpan.org/search?q=\u0002\u0001451",
+ "deps": "http://deps.cpantesters.org/?module=\u0002&perl=any+version&os=any+OS\u00010"
+ },
+ "ap": "http://www.cpap.com/productSearch.php?q=1&query=\u0002\u00010",
+ "dl": "http://www1.cpdl.org/wiki/index.php/Special:Search?search=\u0002&fulltext=Keyword+search\u00016",
+ "en": "http://codepen.io/search?q=\u0002&limit=all&depth=everything&show_forks=false\u00019",
+ "ost": "//www.postaonline.cz/trackandtrace/-/zasilka/cislo?parcelNumbers=\u0002\u00010",
+ "roj": "http://www.codeproject.com/search.aspx?q=\u0002\u00010"
+ },
+ "q": {
+ "*": "http://qrzcq.com/call/\u0002\u00010",
+ "rq": "//www.rollcall.com/page/search?keyword=\u0002&advanced=false&sort=relevance\u00010"
+ },
+ "r": {
+ "c": {
+ "*": "http://www.chainreactioncycles.com/s?q=\u0002&sort=pricelow\u000111",
+ "om": "//www.cloudretails.com/search?q=\u0002\u00010"
+ },
+ "*": "http://codereview.stackexchange.com/search?q=\u0002\u000182",
+ "i": {
+ "c": {
+ "*": "//www.criterionchannel.com/search?q=\u0002\u00010",
+ "buzz": "//www.cricbuzz.com/search?q=\u0002\u0001109",
+ "info": "http://search.espncricinfo.com/ci/content/site/search.html?search=\u0002&gblsearch=\u000138",
+ "khero": "//crickhero.blogspot.com/search/?q=\u0002\u00010"
+ },
+ "*": "//www.criterion.com/search#stq=\u0002\u00010",
+ "sco": "http://www.crisco.unicaen.fr/des/synonymes/\u0002\u000142",
+ "tiki": "//critiki.com/search/?t=\u0002\u00010",
+ "ticker": "//www.criticker.com/?search=\u0002&type=films\u00013",
+ "tique": "//critiquebrainz.org/search/?query=\u0002&type=artist\u00010",
+ "trole": "http://criticalrole.wikia.com/wiki/Special:Search?query=\u0002\u00013"
+ },
+ "r": "http://chemsearch.kovsky.net/index.php?q=\u0002\u00010",
+ "s": {
+ "*": "http://www.crunchyroll.com/search?from=&q=\u0002\u0001101",
+ "h": "//crystalshards.xyz/?filter=\u0002\u00010"
+ },
+ "t": "//crt.sh/?q=\u0002\u00019",
+ "w": "//clashroyale.fandom.com/wiki/Special:Search?query=\u0002\u00010",
+ "x": {
+ "*": "//chrome.google.com/webstore/search?q=\u0002\u000125",
+ "viewer": "//robwu.nl/crxviewer/?crx=\u0002\u00010"
+ },
+ "am": "http://www.cram.com/search?query=\u0002&submit=Search\u00010",
+ "an": {
+ "*": "http://finzi.psych.upenn.edu/cgi-bin/namazu.cgi?query=\u0002&max=100&result=normal&sort=score&idxname=functions&idxname=vignettes&idxname=views\u00016",
+ "n": "//crystal-ann.com/?query=\u0002\u00010"
+ },
+ "db": "//www.cockroachlabs.com/docs/search.html?q=\u0002\u00010",
+ "ep": {
+ "*": "//www.consumerreports.org/search/?query=\u0002\u00010",
+ "s": "//www.consumerreports.org/search/?query=\u0002\u00010"
+ },
+ "ol": "//www.crol.hr/index.php/search?searchword=\u0002&searchphrase=all\u00010",
+ "on": {
+ "*": "//crontab.guru/#\u0002\u00013",
+ "ista": "//www.cronista.com/buscar/\u0002\u00010"
+ },
+ "ux": "http://crux.nu/portdb/?a=search&q=\u0002\u00010",
+ "ackberry": "http://crackberry.com/search/google/\u0002?query=\u0002\u00010",
+ "acked": "http://www.cracked.com/search/search.php?sa=search&q=\u0002\u00018",
+ "afts": {
+ "*": "//wikidiy.org/?s=\u0002\u00010",
+ "y": "//www.craftsy.com/search?query=\u0002\u00010"
+ },
+ "aigslist": "http://craigslist.org/search/sss?query=\u0002\u000149",
+ "ate": {
+ "*": "//crate.io/docs/stable/search.html?check_keywords=yes&area=default&q=\u0002\u000162",
+ "s": "//crates.io/search?q=\u0002\u0001875"
+ },
+ "awl": {
+ "*": "http://crawl.chaosforge.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00016",
+ "db": "//loom.shalott.org/learndb.html#\u0002\u00015"
+ },
+ "bug": "//bugs.chromium.org/p/chromium/issues/list?q=\u0002\u00010",
+ "doc": "//crystal-lang.org/docs/?q=\u0002\u00010",
+ "eacables": "//www.creative-cables.nl/zoeken?controller=search&orderby=position&orderway=desc&search_query=\u0002\u00010",
+ "eation": "//creation.com/search?q=\u0002\u00010",
+ "eativecow": {
+ "*": "http://forums.creativecow.net/search.php?content=F&q=\u0002\u00010",
+ "lib": "http://library.creativecow.net/search.php?q=\u0002\u00010"
+ },
+ "ocker": "//www.bettycrocker.com/search?term=\u0002 \u00010",
+ "ossclj": "http://crossclj.info/search?q=\u0002\u00010",
+ "ossover": "http://www.codeweavers.com/compatibility/search/?name=\u0002&search=app\u00010",
+ "ossref": "http://search.crossref.org/?q=\u0002\u00014",
+ "ossvalidated": "http://stats.stackexchange.com/search?q=\u0002\u00010",
+ "ossword": "http://www.wordfun.ca/words/fw?q=\u0002\u00010",
+ "owdin": "//crowdin.com/projects?q=\u0002#advanced-search\u00010",
+ "owdsupply": "//www.crowdsupply.com/search?q=\u0002\u00010",
+ "unch": {
+ "*": "//www.crunchbase.com/textsearch/?q=\u0002\u00010",
+ "base": "//www.crunchbase.com/textsearch?q=\u0002\u000180",
+ "yroll": "http://www.crunchyroll.com/search?q=\u0002\u000161"
+ },
+ "ush": "//www.crushwineco.com/catalogsearch/result/?q=\u0002\u00010",
+ "ypto": {
+ "*": "http://crypto.stackexchange.com/search?q=\u0002\u00016",
+ "analyst": "//www.cryptoanalyst.co/?s=\u0002\u00010",
+ "coinspy": "//cryptocoinspy.com/?s=\u0002\u00010"
+ }
+ },
+ "s": {
+ "c": "http://api.call-cc.org/cdoc?q=\u0002&query-regex=Regexp\u00017",
+ "*": "http://www.cheapshark.com/search?q=\u0002\u000126",
+ "i": {
+ "*": "http://www.coolstuffinc.com/main_search.php?pa=searchOnName&page=1&resultsPerPage=25&q=\u0002\u00010",
+ "nfo": "//ciphersuite.info/search/?q=\u0002 \u00010"
+ },
+ "m": {
+ "*": "//www.commonsensemedia.org/search/\u0002\u0001125",
+ "onitor": "http://www.csmonitor.com/content/search?SearchText=\u0002&SearchButton=Search\u00010"
+ },
+ "n": "http://cisne.sim.ucm.es/search*spi~S/X?SEARCH=\u0002&sort=D\u00010",
+ "s": {
+ "*": "//developer.mozilla.org/en-US/search?q=\u0002&topic=css\u000164",
+ "e": "http://cs.stackexchange.com/search?q=\u0002\u00010",
+ "t": {
+ "*": "//css-tricks.com/?s=\u0002\u000112",
+ "ricks": "//css-tricks.com/search-results/?q=\u0002\u00010"
+ }
+ },
+ "u": {
+ "*": "http://checkshorturl.com/expand.php?u=\u0002\u00010",
+ "rf": "//www.couchsurfing.com/?q=\u0002\u00010"
+ },
+ "v": "//www.csv.de/artsearchresult.php?STICHWORT=\u0002\u00010",
+ "w": {
+ "*": "http://wiki.call-cc.org/search?text=\u0002&ident=\u00010",
+ "iki": "http://cs.wikipedia.org/wiki/\u0002\u00015"
+ },
+ "db": "http://noname.c64.org/csdb/search/?seinsel=all&search=\u0002\u00013",
+ "fd": "//www.csfd.cz/hledat/?q=\u0002\u0001171",
+ "go": {
+ "*": "//www.reddit.com/r/GlobalOffensive/search/?q=\u0002&restrict_sr=1\u00018",
+ "stats": "//csgo-stats.net/search?q=\u0002\u00010"
+ },
+ "lq": "http://wiki.teamliquid.net/counterstrike/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "bno": "http://webopac.csbno.net/opac/search/lst?q=\u0002\u00014",
+ "harp": "http://social.msdn.microsoft.com/Search/en-US?query=\u0002&Refinement=126&ac=8\u00016",
+ "ound": "http://www.csounds.com/manual/html/\u0002.html\u00010",
+ "pan": "http://www.c-span.org/search.aspx?For=\u0002\u00016",
+ "pen": "//www.collinsdictionary.com/dictionary/spanish-english/\u0002\u00010",
+ "theory": "http://cstheory.stackexchange.com/search?q=\u0002\u00010",
+ "tore": "//chrome.google.com/webstore/search/\u0002\u0001198",
+ "trade": "//www.reddit.com/r/GlobalOffensiveTrade/search?q=\u0002&restrict_sr=on&sort=new&t=all\u00010"
+ },
+ "t": {
+ "*": "http://www.canadiantire.ca/en/search-results.html?q=\u0002\u00014",
+ "d": "http://www.cheaperthandirt.com/SolrSearchResults.aspx?site=All+Products&num=15&q=\u0002\u00010",
+ "h": "//www.collinsdictionary.com/dictionary/english-thesaurus/\u0002\u00010",
+ "t": "//www.ctt.pt/feapl_2/app/open/objectSearch/objectSearch.jspx?objects=\u0002\u00016",
+ "v": {
+ "*": "http://www.ctv.ca/searchResult.aspx?q=\u0002\u00010",
+ "news": "http://www.ctvnews.ca/search-results/search-ctv-news-7.137?q=\u0002\u00014"
+ },
+ "an": "http://ctan.org/search/?phrase=\u0002&x=1&PORTAL=on&PKG=on&AUTHORS=on&TOPICS=on&max=16\u0001374",
+ "extd": "http://ctext.org/dictionary.pl?if=en&char=\u0002\u000113",
+ "gov": "//clinicaltrials.gov/ct2/results?term=\u0002\u00010",
+ "imes": "//www.collegiatetimes.com/search/?q=\u0002\u00010"
+ },
+ "u": {
+ "b": {
+ "*": "//cubash.com/users?filter=0&query=\u0002\u00010",
+ "anet": "http://www.cubanet.org/?s=\u0002\u00010",
+ "ehero": "//cubehero.com/search?q=\u0002\u00010",
+ "icles": "http://www.skutchi.com/catalogsearch/result/?q=\u0002\u00010"
+ },
+ "*": "//caniuse.com/#search=\u0002\u00010",
+ "l": {
+ "*": "//newcatalog.library.cornell.edu/search?q=\u0002\u00010",
+ "y": "http://www.culy.nl/?s=\u0002\u00010",
+ "ib": {
+ "*": "//newcatalog.library.cornell.edu/catalog?q=\u0002\u00010",
+ "rary": "http://libraries.clemson.edu/?s=\u0002\u00010"
+ },
+ "tofmac": "http://www.cultofmac.com/?s=\u0002\u00010",
+ "tpens": "//www.cultpens.com/s?q=\u0002\u00010",
+ "ts3d": "//cults3d.com/fr/recherche?utf8=%E2%9C%93&q=\u0002\u00010",
+ "tureunplugged": "http://www.cultureunplugged.com/festival/gsearch.php?cx=006605354541519765965:qm01kqkdyrq&cof=FORID:10;NB:1&ie=UTF-8&q=\u0002&sa.x=0&sa.y=0\u00010"
+ },
+ "p": {
+ "*": "//www.cambridge.org/gb/search?query=\u0002\u00010",
+ "rinoluk": "http://www.cuprinol.co.uk/servlet/SiteAdvancedSearchHandler?searchtype=all&searchString=\u0002\u00010"
+ },
+ "dl": "//cudl.lib.cam.ac.uk/search?keyword=\u0002\u00010",
+ "antocabron": "http://www.cuantocabron.com/busqueda/0/\u0002\u00010",
+ "chilleriaalbacete": "//cuchilleriaalbacete.com/articulos-buscar.php?busco=\u0002\u00010",
+ "ria": {
+ "c": "http://curia.europa.eu/juris/liste.jsf?pro=&lgrec=en&nat=&oqp=&dates=&lg=&language=en&jur=C%2CT%2CF&cit=none%252CC%252CCJ%252CR%252C2008E%252C%252C%252C%252C%252C%252C%252C%252C%252C%252Ctrue%252Cfalse%252Cfalse&num=\u0002&td=ALL&pcs=O&avg=&page=1&mat=or&jge=&for=&cid=114819\u00010",
+ "*": "http://curia.europa.eu/juris/liste.jsf?&num=\u0002\u00018",
+ "n": "http://curia.europa.eu/juris/liste.jsf?pro=&nat=&oqp=&dates=&lg=&language=en&jur=C%2CT%2CF&cit=none%252CC%252CCJ%252CR%252C2008E%252C%252C%252C%252C%252C%252C%252C%252C%252C%252Ctrue%252Cfalse%252Cfalse&td=ALL&pcs=O&avg=&page=1&mat=or&parties=\u0002&jge=&for=&cid=114819\u00013"
+ },
+ "rrclick": "http://www.currclick.com/browse.php?keywords=\u0002\u00010",
+ "rse": {
+ "*": "//www.curseforge.com/wow/addons/search?search=\u0002\u000119",
+ "forge": "//duckduckgo.com/?q=\u0002+site%3Acurseforge.com\u000137"
+ },
+ "rsos": "http://www.gesformacion.es/buscar?controller=search&search_query=\u0002\u00010",
+ "spide": "http://www.cuspide.com/resultados.aspx?c=\u0002\u00010"
+ },
+ "v": {
+ "*": "//stats.stackexchange.com/search?q=\u0002\u00017",
+ "e": {
+ "*": "//cve.mitre.org/cgi-bin/cvekey.cgi?keyword=\u0002\u000140",
+ "d": {
+ "*": "http://cvedetails.com/cve-details.php?t=1&cve_id=\u0002\u00010",
+ "tls": "//www.cvedetails.com/google-search-results.php?q=\u0002&sa=Search\u00010"
+ }
+ },
+ "m": {
+ "*": "http://www.cvmarket.lt/joboffers.php?op=search&search%5Bkeyword%5D=\u0002\u00010",
+ "cia": "http://cvmweb.cvm.gov.br/SWB/Sistemas/SCW/CPublica/CiaAb/ResultBuscaParticCiaAb.aspx?CNPJNome=\u0002&TipoConsult=C\u00010"
+ },
+ "o": {
+ "*": "http://www.cvo.co.uk/?s=\u0002\u00010",
+ "fire": "//www.cvo.co.uk/?s=\u0002\u00010"
+ },
+ "r": "//datacvr.virk.dk/data/visninger?soeg=\u0002\u00019",
+ "s": "http://www.cvs.com/search/_/N-0?searchTerm=\u0002&pt=global\u00018"
+ },
+ "w": {
+ "*": "//www.codewars.com/kata/search/?q=\u0002\u00018",
+ "e": {
+ "*": "//cse.google.com/cse?oe=utf8&ie=utf8&source=uds&q=\u0002&start=0&cx=012899561505164599335:tb0er0xsk_o\u00017",
+ "n": "//en.wikipedia.org/wiki/Special:CiteThisPage?page=\u0002\u00010",
+ "bstore": "//chrome.google.com/webstore/search/\u0002\u0001198"
+ },
+ "j": "//www.cwjobs.co.uk/jobs/\u0002\u00010",
+ "s": "//chrome.google.com/webstore/search/\u0002\u0001198",
+ "t": "http://crosswordtracker.com/answer/\u0002/\u00010",
+ "de": "//de.wikipedia.org/w/index.php?title=Spezial:Zitierhilfe&page=\u0002\u00010",
+ "ow": "//classic.wowhead.com/search?q=\u0002\u00010"
+ },
+ "z": {
+ "c": "http://www.czc.cz/search?q-fulltext=\u0002\u00019",
+ "*": "//complexityzoo.uwaterloo.ca/index.php?search=\u0002&title=Special%3ASearch\u00010",
+ "k2eur": "//www.xe.com/currencyconverter/convert/?Amount=\u0002&From=CZK&To=EUR\u00010"
+ },
+ "74": "//cycling74.com/search/page/1/\u0002\u00010",
+ "++": {
+ "*": "http://www.cplusplus.com/search.do?q=\u0002\u00010",
+ "ref": "http://en.cppreference.com/mwiki/index.php?search=Special%3ASearch&search=\u0002\u00010"
+ },
+ "fa": "//www.cfainstitute.org/en/search#q=\u0002\u00010",
+ "fb": {
+ "*": "http://store.channelfireball.com/products/search?query=\u0002\u00010",
+ "r": "http://www.sports-reference.com/cfb/search/search.fcgi?search=\u0002\u00010"
+ },
+ "fd": "//cfdocs.org/\u0002\u000119",
+ "fe": "//www.codingforentrepreneurs.com/search/?q=\u0002\u00010",
+ "fn": "http://docs.aws.amazon.com/search/doc-search.html?searchPath=documentation-guide&searchQuery=\u0002&this_doc_product=AWS+CloudFormation&this_doc_guide=User+Guide&doc_locale=en_us#facet_doc_product=AWS%20CloudFormation&facet_doc_guide=User%20Guide\u000150",
+ "fp": {
+ "*": "http://wikicfp.com/cfp/servlet/tool.search?q=\u0002&year=f\u00010",
+ "forum": "//forum.curvefever.pro/search?q=\u0002\u00010"
+ },
+ "fr": {
+ "*": "http://www.ecfr.gov/cgi-bin/searchECFR?q1=\u0002\u00013",
+ "en": "http://www.collinsdictionary.com/dictionary/french-english/\u0002\u00014"
+ },
+ "og": "//www.cloudofgoods.com/s/products?query=\u0002\u00010",
+ "ol": {
+ "*": "//www.colourbox.com/search/find?q=\u0002\u00010",
+ "es": "//shop.coles.com.au/a/a-national/everything/search/\u0002?pageNumber=1\u000112",
+ "or": {
+ "*": "http://www.colorhexa.com/\u0002\u000116",
+ "mango": "http://www.colormango.com/search/index.asp?keyword=\u0002\u00010"
+ },
+ "dfusion": "http://community.adobe.com/help/search.html?searchterm=\u0002&go=go&q=\u0002&l=coldfusion_product_adobelr&x=0&y=0&area=0&lr=en_US\u00010",
+ "legeboard": "//www.collegeboard.org/search?tp=usearch&x=15&x1=t4&y=13&searchType=site&word=\u0002\u00010",
+ "legeconfidential": "http://www.collegeconfidential.com/search_results.htm?q=\u0002&sa=Google+Search&userInput=&sitesearch=collegeconfidential.com&cx=013579521852154800353%3Avvp1k6kluvq&cof=FORID%3A9 \u00010",
+ "lins": {
+ "*": "//www.collinsdictionary.com/dictionary/english/\u0002\u00010",
+ "ge": "//www.collinsdictionary.com/dictionary/german-english/\u0002\u00010"
+ },
+ "loq": "//colloq.io/search?query=\u0002\u00010",
+ "location": "http://oxforddictionary.so8848.com/search1?word=\u0002\u00010"
+ },
+ "om": {
+ "c": "//www.comc.com/Cards,=\u0002\u00010",
+ "*": "//computernewb.com/w/index.php?search=\u0002\u00010",
+ "s": "//www.conference-service.com/conferences/conference-search.html?searchwords=\u0002\u00010",
+ "fy": "//comfy.ua/catalogsearch/result?q=\u0002\u00010",
+ "ix": {
+ "*": "//www.comixology.com/search?search=\u0002\u00016",
+ "eu": "//www.comixology.eu/search?search=\u0002 \u00010",
+ "uk": "//www.comixology.co.uk/search?search=\u0002&submit=Submit\u00010"
+ },
+ "bodeck": "http://combodeck.net/Query/\u0002 \u00014",
+ "icrocket": "//www.comic-rocket.com/search?q=\u0002\u00010",
+ "icvine": "http://www.comicvine.com/search/?q=\u0002\u00018",
+ "mitstrip": "http://www.commitstrip.com/?s=\u0002\u00017",
+ "mons": {
+ "*": "//commons.wikimedia.org/w/index.php?search=\u0002\u0001157",
+ "ensemedia": "http://www.commonsensemedia.org/search/\u0002\u000112"
+ },
+ "pass": "http://compass-style.org/search/?q=\u0002\u00010",
+ "panieshouse": "//beta.companieshouse.gov.uk/search/companies?q=\u0002\u00018",
+ "paregames": "http://www.comparegames.com.br/comprar/\u0002 \u00010",
+ "pfight": "http://compfight.com/search/\u0002 /\u00010",
+ "pose": "//mail.google.com/mail/?view=cm&to=&su=\u0002\u00016",
+ "ptoirsecu": "http://www.comptoirsecu.fr/?s=\u0002\u00010",
+ "pumundo": "//www.compumundo.com.ar/q/\u0002/srch?q=\u0002\u00010",
+ "puterhope": "//www.computerhope.com/search2.htm?q=\u0002\u00010",
+ "putrabajo": "http://www.computrabajo.com.ar/ofertas-de-trabajo/?q=\u0002\u00010"
+ },
+ "oq": "//coq.inria.fr/distrib/current/refman/search.html?q=\u0002\u00010",
+ "or": {
+ "*": "//www.cornishdictionary.org.uk/home?locale=en#\u0002\u00010",
+ "e": "//core.ac.uk/search?q=\u0002\u00013",
+ "p": "//opencorporates.com/companies?q=\u0002\u000149",
+ "dovapl": "http://plugins.cordova.io/#/search?search=\u0002\u00010",
+ "ona": "//coronalabs.com/?s=\u0002\u00010",
+ "reos": "http://www.correos.es/ss/Satellite/site/aplicacion-4000003383089-herramientas_y_apps/detalle_app-sidioma=es_ES?numero=\u0002\u00013",
+ "reios": "//www.linkcorreios.com.br/\u0002\u000116",
+ "riere": "http://sitesearch.corriere.it/forward.jsp?q=\u0002\u000116"
+ },
+ "os": {
+ "*": "http://consequenceofsound.net/?s=\u0002\u00013",
+ "dna": "http://www.cosdna.com/eng/product.php?q=\u0002\u00010",
+ "moty": "http://www.cosmoty.de/suche/\u0002/\u00010",
+ "tco": {
+ "*": "http://www.costco.com/CatalogSearch?storeId=10301&catalogId=10701&langId=-1&keyword=\u0002\u000194",
+ "ca": "//www.costco.ca/CatalogSearch?dept=All&keyword=\u0002\u00010"
+ }
+ },
+ "ow": {
+ "*": "http://combineoverwiki.net/index.php?search=\u0002&button=&title=Special%3ASearch\u00010",
+ "boylyrics": "//www.cowboylyrics.com/search.html?cx=partner-pub-1248082249428003%3A7921416976&ie=UTF-8&q=\u0002&cof=FORID%3A10&siteurl=cowboylyrics.com%2F&ref=&ss=346j47246j4\u00010"
+ },
+ "xx": "http://www.cplusplus.com/search.do?q=\u0002\u00010",
+ "yb": {
+ "*": "//cyberlearn.hes-so.ch/course/search.php?search=\u0002\u00010",
+ "l": "//cyberleninka.ru/search?q=\u0002\u00014",
+ "er": {
+ "*": "//www.cyberscoop.com/?s=\u0002\u00010",
+ "port": "http://www.cyberport.de/?EVENT=itemsearch&query=\u0002\u00010"
+ },
+ "rhome": "//www.cybrhome.com/search?q=\u0002\u00010"
+ },
+ "ye": {
+ "*": "http://www.chooseyourevent.co.uk/keywordsearch.asp?searchterms=\u0002\u00010",
+ "n": "//translate.google.com/#cy/en/\u0002\u00010"
+ },
+ "yt": "//cadence.gq/cloudtube/search?q=\u0002&sort_by=relevance\u00018",
+ "1024": "http://www.commander1024.de/wordpress/?s=\u0002\u00010",
+ "3tv": "//media.ccc.de/search/?q=\u0002\u00010",
+ "64wde": "http://www.c64-wiki.de/index.php?title=Spezial%3ASuche&go=Seite&search=\u0002\u00010",
+ "oastercrazy": "http://www.coastercrazy.com/forums/search.php?keywords=\u0002\u00010",
+ "ocoa": {
+ "*": "//developer.apple.com/search/index.php?q=\u0002 \u000127",
+ "pods": "http://cocoapods.org/?q=\u0002\u00010"
+ },
+ "ocatalog": {
+ "*": "http://cocatalog.loc.gov/cgi-bin/Pwebrecon.cgi?Search_Arg=\u0002&Search_Code=TALL&CNT=25&HIST=1\u00010",
+ "n": "http://cocatalog.loc.gov/cgi-bin/Pwebrecon.cgi?Search_Arg=\u0002&Search_Code=NALL&CNT=25&HIST=1\u00010"
+ },
+ "occoc": "http://coccoc.com/search#query=\u0002\u00010",
+ "ocklestorm": "http://www.cocklestorm.com/catalogsearch/result/?q=\u0002 \u00010",
+ "ode": {
+ "*": "http://www.searchco.de/?q=\u0002&cs=on\u000114",
+ "x": "http://codex.wordpress.org/?search=\u0002\u00014",
+ "42": "//support.code42.com/Special:Search?search=\u0002\u00010",
+ "kx": "//code.kx.com/q/search?query=\u0002\u00010",
+ "bottle": "//codebottle.io/?q=\u0002\u00010",
+ "canyon": "http://codecanyon.net/search?utf8=%E2%9C%93&term=\u0002\u00010",
+ "dgar": "//codedgar.com.ve/?s=\u0002\u00010",
+ "forces": "http://codeforces.com/search?query=\u0002\u000117",
+ "gov": "//code.gov/search?query=\u0002\u00010",
+ "pen": "//codepen.io/search/pens?q=\u0002&limit=all&type=type-pens\u000131",
+ "points": "http://codepoints.net/search?q=\u0002\u00013",
+ "weavers": "http://www.codeweavers.com/compatibility/search/?name=\u0002\u00010"
+ },
+ "odi": {
+ "*": "//www.collinsdictionary.com/dictionary/english/\u0002\u00010",
+ "nglove": "http://thecodinglove.com/search/\u0002\u00010"
+ },
+ "odw": "http://callofduty.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "odat": {
+ "a": "//physics.nist.gov/cgi-bin/cuu/Results?search_for=\u0002\u00010",
+ "*": "//coda.io/templates/productivity?search=\u0002\u00010"
+ },
+ "odpedia": "//cod.esportspedia.com/index.php?search=\u0002\u00010",
+ "odrops": "http://tympanus.net/codrops/?s=\u0002\u000113",
+ "offeeshop": "//getsmokin.nl/coffeeshops?shopsearch=\u0002\u00010",
+ "oho": "http://bookmanager.com/760081x/index.php?q=h.tviewer&using_sb=status&qsb=keyword&so=oh&searchtype=keyword&qs=\u0002&x=0&y=0&qs_file=\u00010",
+ "oin": {
+ "*": "//coinmarketcap.com/search/?q=\u0002\u0001193",
+ "s": "http://www.londoncoins.co.uk/?page=Pastresults&searchterm=\u0002&searchtype=1\u00010",
+ "mc": "//coinmarketcap.com/currencies/search/?q=\u0002\u00014",
+ "gecko": "//www.coingecko.com/en/search/bang?query=\u0002\u0001220",
+ "marketcap": "//coinmarketcap.com/search/?q=\u0002\u0001193"
+ },
+ "onj": {
+ "*": "//leconjugueur.lefigaro.fr/conjugaison/verbe/\u0002\u000146",
+ "en": "http://conjugator.reverso.net/conjugation-english-verb-\u0002.html\u00010",
+ "es": "http://www.spanishdict.com/conjugate/\u0002\u000111",
+ "fr": "http://conjugueur.reverso.net/conjugaison-francais-verbe-\u0002.html\u00010",
+ "uga": {
+ "*": "http://www.conjuga-me.net/verbo-\u0002\u00010",
+ "cao": "//www.conjugacao.com.br/busca.php?q=\u0002\u00010"
+ },
+ "uguer": "http://leconjugueur.lefigaro.fr/conjugaison/verbe/\u0002.html\u00014"
+ },
+ "onv": {
+ "*": "//theconversation.com/search?q=\u0002\u00010",
+ "ert": "http://www.clipconverter.cc/?url=\u0002\u000112",
+ "ersa": "http://www.conversadesofa.com/?s=\u0002\u00010"
+ },
+ "onda": "//anaconda.org/search?q=\u0002\u00010",
+ "onfi": {
+ "*": "http://www.elconfidencial.com/buscar/2-6-1-3/0/1/10/desc/\u0002/\u00010",
+ "g": "//config.lk/?s=\u0002\u00014"
+ },
+ "onaff": "//www.consumeraffairs.com/search.html?q=\u0002&cat=homepage\u00010",
+ "onarte": "http://conarte.org.mx/?s=\u0002\u00010",
+ "oncerts": "http://www.pollstar.com/tour/searchall.pl?By=All&Content=\u0002&go_green.x=0&go_green.y=0\u00010",
+ "onfrank": {
+ "*": "http://portal.core.edu.au/conf-ranks/?search=\u0002&by=all&source=all&sort=atitle&page=1\u00014",
+ "s": "http://www.conferenceranks.com/?searchall=\u0002\u00010"
+ },
+ "ongress": "//www.congress.gov/search?q={%22source%22%3A%22legislation%22%2C%22search%22%3A%22\u0002%22}\u00010",
+ "onnectny": "http://www.connectny.info/search/?searchtype=X&SORT=D&searcharg=\u0002\u00010",
+ "onrad": {
+ "*": "http://www.conrad.de/ce/de/Search.html?search=\u0002\u000117",
+ "at": "//www.conrad.at/de/Search.html?searchType=REGULAR&search=\u0002\u00010"
+ },
+ "onsent": "//consent.games/?s=\u0002\u00010",
+ "onservapedia": "http://www.conservapedia.com/index.php?search=\u0002\u00016",
+ "onsplus": "//www.consultant.ru/search/?q=\u0002\u00010",
+ "onsumer": {
+ "*": "//www.consumerreports.org/search/?query=\u0002\u00010",
+ "lab": "//www.consumerlab.com/Search/\u0002\u00010"
+ },
+ "ontacts": "//contacts.google.com/search/\u0002\u000118",
+ "ontamet": "http://contamet.wordpress.com/?s=\u0002\u00010",
+ "ontinente": "http://www.continente.pt/stores/continente/pt-pt/public/Pages/searchResults.aspx?k=\u0002\u00010",
+ "ook": {
+ "*": "http://www.cooks.com/?/q=\u0002\u00010",
+ "s": {
+ "c": "http://www.cookscountry.com/search/?type=&q=\u0002\u00010",
+ "*": "http://www.cooks.com/rec/search?q=\u0002\u00010",
+ "i": "http://www.cooksillustrated.com/search/results.asp?query=\u0002\u00010"
+ },
+ "book": "//supermarket.chef.io/cookbooks?q=\u0002\u00010",
+ "ing": "//cooking.nytimes.com/search?q=\u0002\u00010",
+ "pad": "http://cookpad.com/search/\u0002\u00013"
+ },
+ "ool": {
+ "*": "http://cooljugator.com/lt/\u0002\u00010",
+ "blue": {
+ "*": "//www.coolblue.nl/zoeken?query=\u0002\u00010",
+ "be": "//www.coolblue.be/zoeken?query=\u0002\u00015",
+ "nl": "//www.coolblue.nl/zoeken?query=\u0002\u00010"
+ },
+ "inarika": "//www.coolinarika.com/recepti/pretrazivanje/?upit=\u0002\u00010",
+ "math": "//duckduckgo.com/?q=site%3Acoolmathgames.com+\u0002&ia=web\u00010",
+ "shop": "//www.coolshop.dk/s/?q=\u0002\u00010",
+ "stuffinc": "http://www.coolstuffinc.com/main_search.php?pa=searchOnName&page=1&resultsPerPage=25&q=\u0002\u00010"
+ },
+ "oop": {
+ "*": "//www.coop.se/handla-online/sok/?q=\u0002\u00010",
+ "athome": "//www.coopathome.ch/search/?text=\u0002\u00010",
+ "_de": "http://www.coop.ch/pb/site/search/search/2057/Lde/index.html?qs=\u0002&fr=coop2012&SuchButton.x=0&SuchButton.y=0&search=search&backend=backend_coop2012&la=de&_sid=4aea1684-910e-4741-9099-86fff3d8a570\u00010",
+ "_fr": "http://www.coop.ch/pb/site/search/search/2057/Lfr/index.html?qs=\u0002&fr=coop2012&SuchButton.x=0&SuchButton.y=0&search=search&backend=backend_coop2012&la=fr&_sid=2fae98df-7f08-49a8-86b5-38148b71ebdb\u00010",
+ "_it": "http://www.coop.ch/pb/site/search/search/2057/Lit/index.html?qs=\u0002&fr=coop2012&SuchButton.x=0&SuchButton.y=0&search=search&backend=backend_coop2012&la=it&_sid=537d493c-9c35-41dc-8881-d878b57e702f\u00010",
+ "_se": "//www.coop.se/Sok/Receptsok/\u0002\u00010"
+ },
+ "oobook": "//supermarket.chef.io/cookbooks?utf8=%E2%9C%93&q=\u0002\u00010",
+ "opr": "http://copr.fedoraproject.org/coprs/fulltext/?fulltext=\u0002\u000121",
+ "opac": "http://copac.ac.uk/search?&title=\u0002\u00010",
+ "optr": "http://coptr.digipres.org/index.php?search=\u0002\u00010",
+ "op2usd": "http://www.xe.com/currencyconverter/convert/?From=COP&To=USD&Amount=\u0002\u00010",
+ "oppermind": "http://coppermind.net/wiki/Special:Search?search=\u0002\u000120",
+ "ottages": "//selfcater.com/find?query=\u0002\u00010",
+ "ottrillcompassblog": "http://cottrillcompass.com/blog/?s=\u0002\u00010",
+ "oub": "http://coub.com/search?q=\u0002\u000122",
+ "ouch": "//www.couchsurfing.org/?q=\u0002\u00010",
+ "ouleur": "http://couleur-science.eu/index.php?q=\u0002\u00010",
+ "ountry": "//www.countrycode.org/\u0002\u00015",
+ "ountdown": "http://cd.justinjc.com/\u0002\u00010",
+ "oupang": "//www.coupang.com/np/search?component=&q=\u0002\u000115",
+ "oupons": {
+ "*": "http://www.dealtaker.com/site/search?q=\u0002\u00010",
+ "urfer": "http://www.couponsurfer.com/coupon_search.cfm?q=\u0002\u00010"
+ },
+ "ouponcabin": "http://www.couponcabin.com/ps/\u0002/1/\u00010",
+ "ouponmeup": "http://www.couponmeup.com/cgi-bin/display.pl?search=1&q=\u0002 \u00010",
+ "ourant": "http://www.courant.com/search/dispatcher.front?target=article&sortby=display_time++descending&Query=\u0002 \u00010",
+ "ourrierint": "http://www.courrierinternational.com/search/result/\u0002\u00010",
+ "oursera": "//www.coursera.org/search?query=\u0002\u000135",
+ "ourttv": "//www.courttv.com/?s=\u0002\u00010",
+ "oveo": "http://www.coveo.com/en/search#q=\u0002\u00010",
+ "ovot": "http://www.covot.net/dictionary?search=\u0002\u00010",
+ "ozydays": "//www.cozydays.com/search.aspx?q=\u0002\u00010",
+ "yanide": "/?q=\u0002+site:explosm.net\u00010",
+ "ycletec": "//www.cycletec.ch/index.php?route=product/search&search=\u0002\u00010",
+ "yclingweekly": "//www.cyclingweekly.com/?s=\u0002\u00010",
+ "yg64": "//cygwin.com/cgi-bin2/package-grep.cgi?grep=\u0002&arch=x86_64\u00010",
+ "ygwin": "//cygwin.com/cgi-bin2/package-grep.cgi?grep=\u0002\u00010",
+ "ymon": "//cymon.io/\u0002\u00010",
+ "ymath": "http://www.cymath.com/answer.php?q=\u0002\u000119"
+ },
+ "d": {
+ "2": {
+ "0": {
+ "*": "http://www.d20srd.org/search.htm?q=\u0002\u00015",
+ "pfsrd": "http://www.d20pfsrd.com/system/app/pages/search?scope=search-site&q=\u0002\u00015",
+ "srd": "http://www.d20srd.org/search.htm?q=\u0002\u00015"
+ },
+ "*": "//www.light.gg/db/search/?q=\u0002\u000123",
+ "r": "//www.drive2.ru/search?text=\u0002\u00010",
+ "w": "http://diablo2.diablowiki.net/index.php?title=Special%3ASearch&redirs=1&search=\u0002&fulltext=Search&ns0=1&ns14=1\u00010",
+ "gp": "http://dota2.gamepedia.com/Special:Search/\u0002\u00014"
+ },
+ "3": "//dirty.ru/search/?query=\u0002\u00018",
+ "a": {
+ "*": "http://www.deviantart.com/browse/all/?section=&global=1&q=\u0002\u0001882",
+ "l": {
+ "*": "//duckduckgo.com/?q=\u0002+site:abretelibro.com\u00013",
+ "la": {
+ "*": "http://asturianu.elahorcado.net/search.php?search=\u0002\u00010",
+ "snews": "//www.dallasnews.com/search?q=\u0002\u00010"
+ }
+ },
+ "x": "http://duckduckgo.com/?q=\u0002\u0001242",
+ "y": "//duckduckgo.com/?q=\u0002&df=d\u000137",
+ "en": "//translate.google.com/#da/en/\u0002\u00018",
+ "ne": "http://dane.ac-dijon.fr/?s=\u0002\u00010",
+ "nm": {
+ "*": "//www.nexusmods.com/dragonage/search/?gsearch=\u0002&gsearchtype=mods\u00010",
+ "urphys": "//www.danmurphys.com.au/search?searchTerm=\u0002\u00010"
+ },
+ "pi": "//api.drupal.org/api/drupal/latest/search/\u0002\u00010",
+ "rc": "//www.d-archive.org/?s=\u0002\u00010",
+ "rk": {
+ "*": "//duckduckgo.com/?q=\u0002&kae=d\u000196",
+ "horse": "http://www.darkhorse.com/Search/\u0002\u00010",
+ "lyrics": "http://www.darklyrics.com/search?q=\u0002\u000114",
+ "netmarkets": "//www.darknetmarkets.net/?s=\u0002\u00018"
+ },
+ "rt": {
+ "*": "http://www.dartlang.org/search.html?q=\u0002\u00015",
+ "y": "http://www.darty.com/nav/recherche?text=\u0002\u000110",
+ "lib": "http://libcat.dartmouth.edu/search/X?\u0002\u00010",
+ "pub": "//pub.dartlang.org/packages?q=\u0002\u00015"
+ },
+ "ru": "http://dic.academic.ru/searchall.php?SWord=\u0002&from=xx&to=ru&did=&stype=0\u00010",
+ "sh": {
+ "*": "http://dash.harvard.edu/search?scope=%2F&query=\u0002&rpp=10&sort_by=0&order=DESC\u00013",
+ "radio": "http://dashradio.com/?q=\u0002\u00010"
+ },
+ "ta": {
+ "*": "//toolbox.google.com/datasetsearch/search?query=\u0002\u00016",
+ "baze-her": "http://www.databaze-her.cz/hledani/?fraze=\u0002\u00010",
+ "blogger": "//www.data-blogger.com/?s=\u0002&submit=Search\u00010",
+ "cite": "//search.datacite.org/works?query=\u0002\u00010",
+ "deer": "//datadeer.net/search/index.php?q=\u0002\u00010",
+ "gov": {
+ "*": "http://catalog.data.gov/dataset?q=\u0002&sort=score+desc%2C+name+asc\u00010",
+ "au": "http://data.gov.au/dataset?q=\u0002\u00010"
+ },
+ "gouv": "//www.data.gouv.fr/fr/search/?q=\u0002\u00010",
+ "search": "//toolbox.google.com/datasetsearch/search?query=\u0002\u00016",
+ "sheetarchive": "http://www.datasheetarchive.com/\u0002-datasheet.html\u00010",
+ "vicgov": "//www.data.vic.gov.au/data/dataset?q=\u0002\u00010",
+ "zar": "//www.datazar.com/search/data/?q=\u0002\u00010"
+ },
+ "um": {
+ "*": "http://search.daum.net/search?w=tot&q=\u0002\u0001500",
+ "dic": "http://dic.daum.net/search.do?q=\u0002\u000123"
+ },
+ "cardworld": "http://www.dacardworld.com/search?Search=\u0002\u00010",
+ "ccaa": "//daccaa.com/results/?q=\u0002\u00010",
+ "ddyknows": "//daddyknows.ru/?s=\u0002\u00010",
+ "dtribe": "//dadtribe.in/?s=\u0002\u00010",
+ "font": "http://www.dafont.com/search.php?psize=m&q=\u0002\u000111",
+ "foodmall": "http://www.dafoodmall.com/goods/search.asp?sword=\u0002\u00010",
+ "gen": "http://www.dagen.se/search-7.157994?sortby=date&q=\u0002\u00010",
+ "gjeweg": "//www.dagjeweg.nl/zoeken?dq=\u0002\u00010",
+ "gobah": "http://dagobah.net/?search=\u0002\u00010",
+ "ilycollegian": "http://www.collegian.psu.edu/search/?f=html&q=\u0002\u00010",
+ "ilymed": "//dailymed.nlm.nih.gov/dailymed/search.cfm?labeltype=all&query=\u0002\u00010",
+ "ilymail": "//www.dailymail.co.uk/home/search.html?sel=site&searchPhrase=\u0002\u000146",
+ "ilymotion": "//www.dailymotion.com/search/\u0002\u0001117",
+ "ilytimes": "http://www.delcotimes.com/search?text=\u0002\u00010",
+ "ilywriting": "//www.dailywritingtips.com/?s=\u0002\u00010",
+ "nas": "//www.danas.rs/?s=\u0002\u00010",
+ "nawa": "http://search.danawa.com/dsearch.php?query=\u0002\u000142",
+ "nbooru": "//danbooru.donmai.us/posts?tags=\u0002+rating:safe\u0001301",
+ "ndyfellow": "//www.dandyfellow.com/search/\u0002\u00010",
+ "nielha": "//danielha.tk/search.html?query=\u0002\u00010",
+ "nielshomecenter": "//www.danielshomecenter.com/catalogsearch/result/?q=\u0002\u00010",
+ "niweb": "//www.daniweb.com/search/index?q=\u0002\u00010",
+ "nsverine": "//www.dansverine.com/search?q=\u0002\u00010",
+ "ria": "http://www.dariawiki.org/wiki/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010",
+ "riusf": "//dariusforoux.com/?s=\u0002\u00010",
+ "tev": "//www.datev.de/web/de/suche/?query=\u0002\u00010",
+ "tpiff": "http://datpiff.com/mixtapes-search?criteria=\u0002&sort=rating\u00010",
+ "user": "http://\u0002.deviantart.com\u00010",
+ "vesgarden": "http://davesgarden.com/sitewidesearch.php?q=\u0002\u000111",
+ "vetiyebaski": "http://www.davetiyebaski.net/arama?q=\u0002\u00010",
+ "vidnesher": "http://davidnesher.com.ar/?q=\u0002:\u00010",
+ "vidsw": "http://davidsw.com/?s=\u0002&post_type=product\u00010",
+ "viswiki": "//daviswiki.org/_rsearch/?q=\u0002\u00010",
+ "wiki": "//dragonage.fandom.com/wiki/Special:Search?query=\u0002\u00010"
+ },
+ "b": {
+ "a": {
+ "*": "http://www.dba.dk/soeg/?soeg=\u0002\u00018",
+ "sx": "http://dba.stackexchange.com/search?q=\u0002\u00010"
+ },
+ "d": "//deadbydaylight.gamepedia.com/index.php?search=\u0002&title=Special:Search&go=Go\u000163",
+ "*": "//m.douban.com/search/?query=\u0002\u000121",
+ "k": "http://www.databazeknih.cz/search?q=\u0002\u00010",
+ "l": {
+ "*": "//discordbots.org/search?q=\u0002\u00010",
+ "p": {
+ "*": "//dblp.uni-trier.de/search?q=\u0002\u0001382",
+ ".pub": "http://dblp.uni-trier.de/search/publ?q=\u0002 \u00010"
+ }
+ },
+ "m": {
+ "*": "//movie.douban.com/subject_search?search_text=\u0002\u00010",
+ "ovie": "//movie.douban.com/subject_search?search_text=\u0002&cat=1002\u00010",
+ "usic": "//music.douban.com/subject_search?search_text=\u0002&cat=1003\u00010"
+ },
+ "o": {
+ "*": "http://dev.bukkit.org/search/?search=\u0002\u00010",
+ "ts": "//discord.bots.gg/search?q=\u0002\u00010",
+ "ats": "//discord.boats/bots?search=\u0002\u00010"
+ },
+ "p": {
+ "*": "//paper.dropbox.com/?q=\u0002\u00010",
+ "edia": "http://wiki.dbpedia.org/Search?phrase=\u0002\u00010"
+ },
+ "r": {
+ "*": "//danbooru.donmai.us/posts?tags=\u0002+rating:safe\u0001301",
+ "artist": "//danbooru.donmai.us/artists?commit=Search&search%5Bany_name_matches%5D=\u0002&search%5Border%5D=created_at&utf8=%E2%9C%93\u00010",
+ "ead": "//read.douban.com/search?q=\u0002\u00010"
+ },
+ "v": "http://dragonbolt-vanguard.wikia.com/search?query=\u0002\u00010",
+ "2z": "//www.ibm.com/support/knowledgecenter/search/\u0002?scope=SSEPEK_11.0.0\u00010",
+ "gb": "http://dejure.org/gesetze/BGB/\u0002.html\u00010",
+ "nf": "http://data.bnf.fr/search?term=\u0002\u00010",
+ "nl": "http://dbnl.nl/zoeken/zoekeninteksten/index.php?zoek=\u0002\u00010",
+ "ts": "//bugs.debian.org/\u0002\u00014",
+ "book": "//book.douban.com/subject_search?search_text=\u0002&cat=1001\u00015",
+ "gap": "//www.ncbi.nlm.nih.gov/gap/?term=\u0002\u00010",
+ "guide": "//www.dotabuff.com/heroes/\u0002/guides\u00010",
+ "snp": "http://www.ncbi.nlm.nih.gov/snp?term=\u0002\u00010",
+ "uch": "http://diebuchsuche.de/r.php?q=\u0002\u00010",
+ "uff": "http://www.dotabuff.com/search?utf8=%E2%9C%93&q=\u0002\u000113",
+ "ugs": "//bugs.debian.org/\u0002\u00014",
+ "wiki": "http://deathbattle.wikia.com/wiki/Special:Search?fulltext=Search&search=\u0002\u00010",
+ "yte": "http://int.darkbyte.ru/\u0002\u00010"
+ },
+ "c": {
+ "c": {
+ "*": "http://www.dict.cc/?s=\u0002\u00012494",
+ "omics": "http://www.dccomics.com/search/node/\u0002\u00013"
+ },
+ "*": "//duck.co/forum/search?q=\u0002\u000129",
+ "n": {
+ "*": "http://dict.cn/\u0002\u00010",
+ "r": "http://www.apps.dcnr.state.pa.us/search.aspx?cx=008544532008978746929:8o8oxsc28a8&cof=FORID:11&ie=UTF-8&q=\u0002\u00010"
+ },
+ "p": "http://docs.anakeen.com/dynacase/stable/#\u0002\u00010",
+ "r": "http://www.dcrainmaker.com/?s=\u0002 \u00010",
+ "s": {
+ "*": "//dcs.rutgers.edu/search/node/\u0002\u00013",
+ "s": "http://crawl.chaosforge.org/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u00010"
+ },
+ "w": {
+ "*": "http://wiki.dcinside.com/wiki/\u0002\u000119",
+ "iki": "http://dc.wikia.com/wiki/Special:Search?search=\u0002\u00010"
+ },
+ "om": "//www.dictionary.com/browse/\u0002\u00010",
+ "ul": "//capitadiscovery.co.uk/dcu/items?query=\u0002\u00010",
+ "inside": "http://search.dcinside.com/combine/q/\u0002\u000131"
+ },
+ "d": {
+ "b": "//www.deutsche-digitale-bibliothek.de/searchresults?query=\u0002\u00013",
+ "d": "http://sli.uvigo.gal/ddd/ddd_pescuda.php?pescuda=\u0002&tipo_busca=lema\u00010",
+ "*": "//devdocs.io/#q=\u0002\u0001240",
+ "e": {
+ "*": "//duckduckgo.com/?kl=de-de&q=\u0002\u000114",
+ "v": "//qa.debian.org/developer.php?login=\u0002\u00010"
+ },
+ "f": "//duckduckgo.com/?q=\u0002+site%3Aforums.dansdeals.com\u00010",
+ "g": {
+ "c": "//duckduckgo.com/?q=\u0002&ia=calculator\u0001125",
+ "d": {
+ "*": "//duckduckgo.com/?q=\u0002&ia=definition\u000133",
+ "e": "//duckduckgo.com/?kl=de-de&q=\u0002\u000114"
+ },
+ "*": "http://duckduckgo.com/?q=\u0002\u0001242",
+ "f": "http://duckduckgo.com/?kl=fr-fr&q=\u0002\u0001249",
+ "i": "//duckduckgo.com/?q=\u0002&iax=images&ia=images\u00011119",
+ "m": "//duckduckgo.com/?q=\u0002&iaxm=maps\u000194",
+ "n": {
+ "*": "http://duckduckgo.com/?q=\u0002&iar=news&ia=news\u000121",
+ "l": "//duckduckgo.com/?q=\u0002&kl=nl-nl\u000135",
+ "o": "//duckduckgo.com/?kl=no-no&q=\u0002\u00010"
+ },
+ "r": "//duckduckgo.com/?q=site:reddit.com+\u0002\u0001225",
+ "v": "//duckduckgo.com/?q=\u0002&iar=videos&iax=videos&ia=videos\u0001104",
+ "al": "//duckduckgo.com/?t=palemoon&kl=xl-es&ko=1&k1=1&q=\u0002\u00010",
+ "ar": "//duckduckgo.com/?t=palemoon&kl=ar-es&ko=1&k1=1&q=\u0002\u00010",
+ "br": "//duckduckgo.com/?q=\u0002&kp=-1&kl=br-pt\u00016",
+ "ee": "//duckduckgo.com/?kl=ee-et&q=\u0002\u00010",
+ "hu": "http://duckduckgo.com/?kl=hu-hu&q=\u0002\u00010",
+ "ja": "//duckduckgo.com/?q=\u0002&kl=jp-jp&kp=-1\u00016",
+ "pd": "//duckduckgo.com/?df=d&q=\u0002\u00016",
+ "eue": "//duckduckgo.com/?kl=ue-es&q=\u0002\u00010"
+ },
+ "h": {
+ "1": {
+ "0": "http://ddh10.duckduckgo.com/?q=\u0002\u00010",
+ "*": "http://ddh1.duckduckgo.com/?q=\u0002\u00010"
+ },
+ "2": "http://ddh2.duckduckgo.com/?q=\u0002\u00010",
+ "3": "http://ddh3.duckduckgo.com/?q=\u0002\u00010",
+ "4": "http://ddh4.duckduckgo.com/?q=\u0002\u00010",
+ "5": "http://ddh5.duckduckgo.com/?q=\u0002\u00010",
+ "6": "http://ddh6.duckduckgo.com/?q=\u0002\u00010",
+ "7": "http://ddh7.duckduckgo.com/?q=\u0002\u00010",
+ "8": "http://ddh8.duckduckgo.com/?q=\u0002\u00010",
+ "9": "http://ddh9.duckduckgo.com/?q=\u0002\u00010",
+ "*": "//duck.co/ia?q=\u0002\u00015",
+ "u": "http://duckduckhack.com/u/\u0002\u00010",
+ "doc": "http://docs.duckduckhack.com/?q=\u0002\u00010"
+ },
+ "i": {
+ "c": "http://dic.daum.net/search.do?q=\u0002\u000123",
+ "*": "//duckduckgo.com/?q=\u0002&iax=images&ia=images\u00011119"
+ },
+ "n": {
+ "*": "//www.daytondailynews.com/google-search/?q=\u0002\u00010",
+ "et": "//ddnet.tw/players/\u0002\u00013"
+ },
+ "o": "http://ordnet.dk/ddo/ordbog?query=\u0002 \u0001114",
+ "t": "http://3g2upl4pq6kufc4m.onion/?q=\u0002\u000132",
+ "w": {
+ "*": "//www.deepdotweb.com/?s=\u0002\u00010",
+ "rt": "http://www.dd-wrt.com/wiki/index.php/Special:Search?search=\u0002\u00010",
+ "iki": "//darkestdungeon.gamepedia.com/index.php?search=\u0002\u00010"
+ },
+ "jt": "//www.digitaldjtips.com/?s=\u0002\u00010",
+ "ms": "//duckduckgo.com/?q= \u0002+site%3Adansdeals.com\u00010",
+ "so": "//duckduckgo.com/?q=\u0002+site:stackoverflow.com\u00013",
+ "uknow": "http://www.dduknow.com/?s=\u0002\u00010"
+ },
+ "*": {
+ "*": "//www.joindiaspora.com/people?utf8=✓&q=\u0002\u00010",
+ "t": "//www.joindiaspora.com/tags/\u0002 \u00010"
+ },
+ "e": {
+ "b": {
+ "*": "//packages.debian.org/search?keywords=\u0002\u0001671",
+ "g": "//translate.google.com/#view=home&op=translate&sl=de&tl=bg&text=\u0002\u00010",
+ "ml": {
+ "a": "http://lists.debian.org/debian-\u0002/\u00010",
+ "*": "http://lists.debian.org/cgi-bin/search?query=\u0002&DEFAULTOP=and&author=&sort=relevance&HITSPERPAGE=10&language=en\u000110"
+ },
+ "pc": "//qa.debian.org/popcon.php?package=\u0002\u00010",
+ "ate": "http://www.debate.org/search?q=\u0002\u00010",
+ "bug": "//bugs.debian.org/\u0002\u00014",
+ "buildd": "http://buildd.debian.org/status/package.php?p=\u0002\u00010",
+ "content": "//packages.debian.org/search?searchon=contents&keywords=\u0002&mode=path&suite=unstable&arch=any\u00010",
+ "enhams": "http://www.debenhams.com/search/\u0002\u00010",
+ "files": "//packages.debian.org/search?searchon=contents&keywords=\u0002\u00018",
+ "ian": {
+ "*": "http://search.debian.org/cgi-bin/omega?DB=en&P=\u0002\u000134",
+ "fr": "http://www.google.com/cse?cx=007724375775369850404%3Ajwpah_hbbjk&ie=UTF-8&q=\u0002&sa=Rechercher&siteurl=www.google.com%2Fcse%2Fhome%3Fcx%3D007724375775369850404%3Ajwpah_hbbjk\u00010",
+ "forums": "http://forums.debian.net/search.php?keywords=\u0002\u00010",
+ "izzati": "http://forum.debianizzati.org/search.php?keywords=\u0002\u00010",
+ "pack": "//packages.debian.org/search?keywords=\u0002\u0001671"
+ },
+ "man": "//dyn.manpages.debian.org/jump?q=\u0002\u000185",
+ "packages": "//packages.debian.org/search?keywords=\u0002\u0001671",
+ "snap": "http://snapshot.debian.org/binary/\u0002/\u00010",
+ "tracker": "//tracker.debian.org/search?package_name=\u0002\u00018",
+ "wiki": "http://wiki.debian.org/FrontPage?action=fullsearch&context=180&value=\u0002&titlesearch=Titles\u00015"
+ },
+ "d": {
+ "*": "http://dedalus.usp.br/F/2GT4AME1FV9M25Q886NF9PCLB2BK39NF8XMFRXNHCQIL1JX5IG-19193?func=find-b&request=\u0002&find_code=WRD&adjacent=N&local_base=USP01&x=39&y=11&filter_code_1=WLN&filter_request_1=&filter_code_2=WYR&filter_request_2=&filter_code_3=WYR&filter_request_3=&filter_code_4=WMA&filter_request_4=&filter_code_5=WBA&filter_request_5=\u00010",
+ "alus": "http://dedalus.usp.br/F/?func=find-b&request=\u0002\u00010"
+ },
+ "f": {
+ "r": "http://defr.dict.cc/?s=\u0002\u000110",
+ "*": "http://www.thefreedictionary.com/\u0002\u00011081",
+ "ine": {
+ "*": "http://www.thefreedictionary.com/\u0002\u00011081",
+ "kids": "//kids.wordsmyth.net/we/?ent=\u0002\u00010"
+ },
+ "key": "//defkey.com/search?irq=\u0002\u00010"
+ },
+ "*": "http://dict.tu-chemnitz.de/dings.cgi?query=\u0002\u00010",
+ "i": {
+ "c": "//sok.deichman.no/search?query=\u0002\u00010",
+ "*": "http://www.deichmann.com/DE/de/shop/search.html?q=\u0002\u00010",
+ "t": "http://deit.dict.cc/?s=\u0002\u00015"
+ },
+ "s": {
+ "c": "http://descriptionari.com/q/\u0002\u00010",
+ "i": {
+ "*": "//www.desiclik.com/_search.php?page=1&q=\u0002\u00010",
+ "clik": "//www.desiclik.com/_search.php?page=1&q=\u0002\u00010",
+ "gndirectory": "http://www.dexigner.com/directory/search.html?q=\u0002\u00010",
+ "gnernews": "//www.designernews.co/search?q=\u0002\u00010"
+ },
+ "*": "http://es.thefreedictionary.com/\u0002\u000118",
+ "v": "http://desv.dict.cc/?s=\u0002\u000133",
+ "tinonegocio": "http://destinonegocio.com/search/\u0002\u00010",
+ "tructoid": "http://www.destructoid.com/search.phtml?cx=009275597616460404995%3A_iu6yjvsnom&cof=FORID%3A11&q=\u0002&sa=Search&siteurl=http%3A%2F%2Fwww.destructoid.com%2F\u000129"
+ },
+ "v": {
+ "*": "//devdocs.io/#q=\u0002\u0001240",
+ "o": {
+ "*": "http://dev.opera.com/search?q=\u0002\u00010",
+ "nforum": "http://forum.devontechnologies.com/search.php?keywords=\u0002\u00010",
+ "tee": "http://devot-ee.com/search/results?keywords=\u0002&addon_version_support=ee2\u00010"
+ },
+ "to": "//dev.to/search?q=\u0002\u00018",
+ "apple": "//developer.apple.com/search/index.php?q=\u0002\u00010",
+ "docs": "//devdocs.io/#q=\u0002\u0001240",
+ "eloppez": "http://www.developpez.com/recherche/?q=\u0002&sa.x=0&sa.y=0&sa=Go&cx=006424388311999799839:-31tnf0iuqy&cof=FORID:9&ie=ISO-8859-1&siteurl=www.developpez.com/\u00010",
+ "hints": "//devhints.io/?q=\u0002\u00010",
+ "iantart": "http://www.deviantart.com/browse/all/?section=&global=1&q=\u0002\u0001882",
+ "rant": "//devrant.com/search?term=\u0002\u00013",
+ ".splunk": "http://dev.splunk.com/search/dev?q=\u0002\u00010",
+ ".to": "//dev.to/search?q=\u0002\u00018",
+ "tube": "http://dev.tube?q=\u0002\u00010"
+ },
+ "w": {
+ "*": "//de.wikipedia.org/wiki/\u0002\u000110",
+ "iki": {
+ "*": "http://de.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u000160",
+ "how": "http://de.wikihow.com/Special:GoogSearch?ie=UTF-8&q=\u0002&sa=Suche\u00010"
+ }
+ },
+ "x": {
+ "*": "http://index.hu/24ora/?word=1&pepe=1&tol=1999-01-01&ig=2016-01-18&s=\u0002\u00016",
+ "6g": "//www.pokebip.com/pokedex/index.php?phppage=recherche&req=\u0002\u00010",
+ "igner": "http://www.dexigner.com/search?q=\u0002\u00010",
+ "online": "http://dexonline.ro/definitie/\u0002\u0001131"
+ },
+ "al": {
+ "*": "http://dealbook.nytimes.com/?s=\u0002\u00010",
+ "s": {
+ "*": "//www.reddit.com/r/deals/search/?q=\u0002&restrict_sr=1\u00010",
+ "pricer": "http://www.dealspricer.com/search?q=\u0002&utm_source=ddgbang&utm_medium=organic\u00010"
+ },
+ "abs": "http://www.dealabs.com/search/?q=\u0002\u000128",
+ "agora": "//www.dealagora.com/recherche?q=\u0002\u00010",
+ "extreme": "http://dx.com/s/\u0002\u00013",
+ "news": "http://dealnews.com/search.html?search=\u0002\u00015"
+ },
+ "co": {
+ "*": "//decoracion2.com/search/\u0002\u00010",
+ "de": "//urldecode.org/?text=\u0002&mode=decode\u00014"
+ },
+ "en": "http://www.dict.cc/?s=\u0002\u00012494",
+ "eo": "//deeo.dict.cc/?s=\u0002\u00010",
+ "es": "http://dees.dict.cc/?s=\u0002\u000112",
+ "hr": "//dehr.dict.cc/?s=\u0002\u00010",
+ "hu": "http://translate.google.com/#de/hu/\u0002\u00010",
+ "ll": {
+ "*": "http://search.dell.com/results.aspx?s=gen&c=us&l=en&cs=&k=\u0002&cat=all\u000112",
+ "sp": "//www.dell.com/support/search/us/en/19#q=\u0002&sort=relevancy&f:langFacet=[en]\u00010",
+ "st": "http://www.dell.com/support/home/us/en/19/product-support/servicetag/\u0002\u000122",
+ "uk": "http://search.euro.dell.com/results.aspx?s=gen&c=uk&l=en&cs=&k=\u0002&cat=all&x=0&y=0\u00010"
+ },
+ "nl": "http://denl.dict.cc/?s=\u0002\u000114",
+ "no": "//deno.dict.cc/?s=\u0002\u000110",
+ "nv": "//forum.dragen-en-voeden.nl/search.php?keywords=\u0002&terms=all&author=&sc=1&sf=all&sr=posts&sk=t&sd=d&st=0&ch=300&t=0&submit=Zoek\u00010",
+ "pl": "//translate.google.com/#de/pl/\u0002\u000124",
+ "ru": "//translate.google.com/#view=home&op=translate&sl=de&tl=ru&text=\u0002\u00013",
+ "2fr": "//translate.google.com/#de/fr/\u0002\u00010",
+ "adline": "//deadline.com/results/#?q=\u0002 \u00010",
+ "adspin": "http://deadspin.com/search?q=\u0002\u00010",
+ "akin": "http://library.deakin.edu.au/search/?searchtype=X&SORT=D&searcharg=\u0002&searchscope=1\u00010",
+ "cathlon": {
+ "*": "http://www.decathlon.co.uk/Buy/\u0002\u00016",
+ "es": "//www.decathlon.es/Comprar/\u0002\u00010",
+ "fr": "http://www.decathlon.fr/Acheter/\u0002\u00010",
+ "it": "http://www.decathlon.it/Comprare/\u0002\u00010"
+ },
+ "cde": "//www.decathlon.de/search?Ntt=\u0002\u00010",
+ "citre": "http://www.decitre.fr/rechercher/result/?q=\u0002\u00010",
+ "cks": "//www.decks.de/decks/workfloor/search_db.php?such=\u0002\u00010",
+ "epl": {
+ "*": "//www.deepl.com/translator#xx/en/\u0002\u00015633",
+ "ef": "//www.deepl.com/translator#en/fr/\u0002\u000128",
+ "eg": "//www.deepl.com/translator#en/de/\u0002\u000121",
+ "en": {
+ "*": "//www.deepl.com/translator#es/en/\u0002\u00014",
+ "es": "//www.deepl.com/translator#en/es/\u0002\u000157",
+ "pt": "//www.deepl.com/translator#de/pt/\u0002\u000167"
+ },
+ "es": "//www.deepl.com/translator#en/es/\u0002\u000157",
+ "fr": "//www.deepl.com/translator#fr/en/\u0002\u000129",
+ "ge": "//www.deepl.com/translator#de/en/\u0002\u000113",
+ "ru": "//www.deepl.com/ru/translator#en/ru/\u0002\u000129",
+ "een": "//www.deepl.com/translator#es/en/\u0002\u00014",
+ "pten": "//www.deepl.com/translator#pt/en/\u0002\u00015"
+ },
+ "epdyve": "//www.deepdyve.com/search?query=\u0002\u00010",
+ "epthidevaki": "//dd.thekkedam.org/search/?q=\u0002\u00010",
+ "ezer": "//www.deezer.com/search/\u0002\u0001331",
+ "jure": "//dejure.org/cgi-bin/suche?Suchenach=\u0002\u000164",
+ "lcat": "//delcat.worldcat.org/search?qt=wc_org_delcat&q=\u0002&scope=0&oldscope=0&wcsbtn2w=Search&fq=&dblist=1461%2C1542%2C638\u00010",
+ "lcotimes": "http://www.delcotimes.com/search?text=\u0002\u00010",
+ "lectable": "//delectable.com/search/\u0002\u00010",
+ "lfi": {
+ "*": "http://www.delfi.lt/paieska/?q=\u0002\u00010",
+ "ee": "http://otsing.delfi.ee/find?c=dns&q=\u0002 &x=0&y=0\u00010"
+ },
+ "lflt": "http://www.delfi.lt/paieska/?q=\u0002\u00010",
+ "lfruit": "http://delicious-fruit.com/ratings/full.php?s=\u0002\u00015",
+ "lib": "http://dlc.lib.de.us/client/default/search/results?qu=\u0002&te=\u00010",
+ "lijn": "//www.delijn.be/nl/zoekresultaten/index.html?searchtext=\u0002\u00010",
+ "livery": "http://www.yelp.com/search?&rpp=10&find_loc=&start=0&attrs=RestaurantsDelivery&find_desc=\u0002\u00014",
+ "lphi": "http://www.delphibasics.co.uk/RTL.asp?Name=\u0002\u00010",
+ "ltaco": "//www.deltaco.se/Sidor/SearchResults.aspx?k=\u0002\u00010",
+ "mauro": "//dizionario.internazionale.it/parola/\u0002\u00010",
+ "meureetjardin": "http://www.demeure-et-jardin.com/?q=\u0002\u00010",
+ "mocracynow": "http://www.democracynow.org/search?query=\u0002\u00019",
+ "nde": "//www.dict.cc/?s=\u0002\u000111",
+ "nicheur": "http://ledenicheur.fr/#rparams=ss=\u0002 \u00010",
+ "nru": "//www.deepl.com/translator#en/ru/\u0002%0A\u000116",
+ "openthesaurus": "//www.openthesaurus.de/synonyme/?q=\u0002\u00010",
+ "pop": "//www.depop.com/search/?q=\u0002\u000133",
+ "redactie": "http://deredactie.be/cm/vrtnieuws/1.516538?text=\u0002&action=submit\u00010",
+ "rpi": {
+ "*": "//derpibooru.org/search?q=\u0002\u000171",
+ "booru": {
+ "*": "//derpibooru.org/search?utf8=%E2%9C%93&sbq=\u0002\u000126",
+ "org": "//derpibooru.org/search?utf8=✓&sbq= \u0002\u00010"
+ }
+ },
+ "rstandard": "//www.derstandard.at/search?query=\u0002\u00010",
+ "tfd": "http://de.tfd.com/\u0002\u00010",
+ "tik": "//www.detik.com/search/searchall?query=\u0002\u00010",
+ "uturk": "//deutsch-tuerkisch.net/suche/\u0002\u00010"
+ },
+ "f": {
+ "a": "//www.dogfoodadvisor.com/?s=\u0002\u00010",
+ "*": "//duckduckgo.com/?q=\u0002+site%3Adaringfireball.net\u000121",
+ "w": {
+ "*": "http://dwarffortresswiki.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000182",
+ "iki": "http://dwarffortresswiki.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000182"
+ },
+ "eojm": "//downforeveryoneorjustme.com/\u0002\u00015",
+ "iles": "http://packages.debian.org/search?section=all&arch=any&searchon=contents&keywords=\u0002 \u00010",
+ "man": "http://leaf.dragonflybsd.org/cgi/web-man?command=\u0002&section=ANY\u00014",
+ "ren": "//enfr.dict.cc/?s=\u0002\u00013"
+ },
+ "g": {
+ "*": "http://www.desiringgod.org/search/results?utf8=%E2%9C%93&search_source=navbar&q=\u0002#gsc.tab=0&gsc.q=\u0002&gsc.page=1\u000118",
+ "g": {
+ "*": "http://dejure.org/gesetze/GG/\u0002.html\u00019",
+ "i": "//duckduckgo.com/?q=\u0002&ia=images\u000140"
+ },
+ "i": "//duckduckgo.com/?q=\u0002&iar=images&iax=images&ia=images\u0001275",
+ "s": "http://www.degulesider.dk/person/resultat/\u0002\u00010",
+ "ky": "//www.digikey.com/products/en?keywords=\u0002\u000133",
+ "l4": "//duckduckgo.com/?q=site%3Adocs.gl%2Fgl4+\u0002\u00013"
+ },
+ "h": {
+ "c": "http://delhihighcourt.nic.in/SiteSearch.asp?zoom_query= \u0002\u00010",
+ "*": "//hub.docker.com/search/?q=\u0002&page=1&isAutomated=0&isOfficial=0&starCount=0&pullCount=0\u0001776",
+ "g": {
+ "*": "http://www.dhgate.com/wholesale/search.do?act=search&sus=&searchkey=\u0002\u00010",
+ "ate": "http://www.dhgate.com/wholesale/search.do?act=search&supplierid=&isfactory=&sus=&searchkey=\u0002&catalog=#search\u00013"
+ },
+ "l": {
+ "*": "http://www.dhl-usa.com/content/us/en/express/tracking.shtml?AWB=\u0002\u0001112",
+ "f": "//activetracing.dhl.com/DatPublic/datSelection.do?search=consignmentId&at=cons_ordercode&valueShipmentOrderField=\u0002&focus=search2&searchConsignmentId=track\u00010",
+ "de": "http://nolp.dhl.de/nextt-online-public/set_identcodes.do?lang=de&idc=\u0002&rfn=&extendedSearch=true\u000118",
+ "gm": "http://webtrack.dhlglobalmail.com/?trackingnumber=\u0002\u00010"
+ },
+ "bb": "http://www.fgv.br/cpdoc/acervo/arquivo?busca= \u0002 &TipoUD=0&MacroTipoUD=0&nItens=100\u00010",
+ "ub": "//hub.docker.com/search/?q=\u0002\u000154",
+ "docs": "//docs.docker.com/search/?q=\u0002\u00014",
+ "net": "http://www.dhnet.be/search/?query=\u0002\u00010"
+ },
+ "i": {
+ "a": {
+ "*": "//duck.co/ia?q=\u0002\u00015",
+ "blo": "http://diablo.wikia.com/wiki/Special:Search?query=\u0002\u000129",
+ "lnet": "http://dialnet.unirioja.es/buscar/documentos?querysDismax.DOCUMENTAL_TODO=\u0002\u00010",
+ "sporatags": "//joindiaspora.com/tags/\u0002\u00010"
+ },
+ "c": {
+ "*": "http://www.merriam-webster.com/dictionary/\u0002\u0001208",
+ "n": {
+ "*": "http://dict.cn/\u0002 \u00010",
+ "ico": "//dic.nicovideo.jp/a/\u0002\u00015"
+ },
+ "o": {
+ "*": "//dicoado.org/wiki/index.php?search=\u0002\u00010",
+ "z": "http://www.dicoz.fr/?s=\u0002\u00010",
+ "iscenfr": "http://dico.isc.cnrs.fr/dico/tr/chercher_en?r=\u0002\u00010",
+ "iscfren": "http://dico.isc.cnrs.fr/dico/tr/chercher_fr?r=\u0002\u00010"
+ },
+ "t": {
+ "*": "http://www.dict.org/bin/Dict?Form=Dict2&Database=*&Query=\u0002\u0001280",
+ "n": "http://dict-navi.com/en/dictionary/list/?type=search&search_term=\u0002\u00010",
+ "cc": "//www.dict.cc/?s=\u0002\u000111",
+ "gr": "http://www.greek-language.gr/greekLang/modern_greek/tools/lexica/triantafyllides/search.html?lq=\u0002\u00010",
+ "pl": "http://dict.pl/dict?word=\u0002\u00010",
+ "re": "http://www.dict.org/bin/Dict?Form=Dict1&Database=*&Strategy=re&Query=^\u0002$\u00010",
+ ".cc": "//www.dict.cc/?s=\u0002\u000111",
+ "ionary": {
+ "r": "http://dictionary.reference.com/browse/\u0002\u000120",
+ "*": "http://www.thefreedictionary.com/\u0002\u00011081"
+ },
+ "leode": "http://dict.leo.org/ende?cmpType=relaxed&search=\u0002\u000114",
+ "zonespma": "http://dictzone.com/spanyol-magyar-szotar/\u0002\u00010"
+ },
+ "io": "//www.dicio.com.br/pesquisa.php?q=\u0002\u0001201",
+ "pt": "//www.infopedia.pt/dicionarios/lingua-portuguesa/\u0002\u00019",
+ "cionari": "http://www.diccionari.cat/cgi-bin/AppDLC3.exe?APP=CERCADLC&GECART=\u0002\u000124",
+ "info": "//www.dicionarioinformal.com.br/\u0002/\u00010",
+ "pixiv": "http://dic.pixiv.net/a/\u0002\u00018",
+ "-ptbr": "http://michaelis.uol.com.br/moderno-portugues/busca/portugues-brasileiro/\u0002\u00010"
+ },
+ "*": "//www.dictionary.com/browse/\u0002\u00010",
+ "e": {
+ "c": "//dlc.iec.cat/results.asp?txtEntrada=\u0002\u000123",
+ "*": "http://www.die.net/search/?q=\u0002&sa=Search&ie=ISO-8859-1&cx=partner-pub-5823754184406795%3A54htp1rtx5u&cof=FORID%3A9\u000129",
+ "presse": "http://diepresse.com/user/search.do?resetForm=1&resultsPage=0&searchText=\u0002&x=0&y=0\u00010",
+ "renkruiden": "//www.dierenkruiden.nl/search?s=\u0002 \u00010"
+ },
+ "g": {
+ "*": "http://networking.ringofsaturn.com/Tools/dig.php?domain=ANY+\u0002\u000125",
+ "g": "http://digg.com/search?q=\u0002\u000190",
+ "i": {
+ "*": "//www.digi.no/sok?query=\u0002\u00013",
+ "24": "//www.digi24.ro/cautare?q=\u0002\u00010",
+ "ato": "http://digiato.com/?q=\u0002: \u00010",
+ "bron": "//www.digibron.nl/search/results?q=\u0002\u00010",
+ "kala": "//www.digikala.com/Search?q=\u0002\u00014",
+ "key": "http://www.digikey.com/product-search/en?x=17&y=13&lang=en&site=us&KeyWords=\u0002\u0001182",
+ "talcomics": "http://digitalcomicmuseum.com/index.php?ACT=dosearch&terms=\u0002\u00010",
+ "talcomicmuseum": "http://digitalcomicmuseum.com/index.php?ACT=dosearch&terms=\u0002\u00010",
+ "talspy": "http://www.digitalspy.com/search/\u0002\u00015",
+ "taltrends": "http://www.digitaltrends.com/?s=\u0002\u00010",
+ "tec": "//www.digitec.ch/Search?q=\u0002\u000161",
+ "tick": "http://www.digitick.com/fr/recherche?query=\u0002\u00010"
+ },
+ "ra": "//igranje.hr/?s=\u0002\u00010"
+ },
+ "m": {
+ "*": "//duckduckgo.com/?q=\u0002&ia=images&iax=images\u000117",
+ "ensions": "//app.dimensions.ai/discover/publication?search_text=\u0002&search_type=kws&search_field=full_search\u00010"
+ },
+ "n": {
+ "*": "http://www.dicionarioinformal.com.br/\u0002\u00010",
+ "g": "//dict.tu-chemnitz.de/dings.cgi?query=\u0002\u00010"
+ },
+ "o": "//invidio.us/search?q=\u0002\u000111",
+ "r": {
+ "*": "//www.google.de/maps/dir/\u0002\u00014",
+ "ae": "http://dirae.es/palabras/?q=\u0002\u00010",
+ "py": "http://www.dirpy.com/studio?url=\u0002\u00010",
+ "ble": "http://dirble.com/search?q=\u0002\u00010",
+ "encnet": "//www.direnc.net/arama?q=\u0002\u00010"
+ },
+ "s": {
+ "*": "//www.discogs.com/search/?q=\u0002&type=all\u0001484",
+ "t": {
+ "*": "http://www.distrelec.de/search?q=\u0002\u00013",
+ "ch": "//www.distrelec.ch/search?q=\u0002\u00010",
+ "ro": {
+ "*": "http://distrowatch.com/table.php?distribution=\u0002\u000175",
+ "watch": "http://distrowatch.com/table.php?distribution=\u0002\u000175"
+ }
+ },
+ "co": {
+ "*": "http://discoverygc.com/wiki/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "gs": "http://www.discogs.com/search?q=\u0002&btn=&type=all\u00012581",
+ "rd": "//discordapp.com/invite/\u0002\u00011145",
+ "nnect": {
+ "*": "http://search.disconnect.me/searchTerms/search?query=\u0002&ses=Google\u000126",
+ "img": "//search.disconnect.me/searchTerms/search?query=\u0002&option=Images\u00010"
+ },
+ "untoffice": "//discountoffice.co.nz/search?type=product&q=\u0002*\u00010",
+ "urse": "//meta.discourse.org/search?q=\u0002\u00010",
+ "very": "http://dsc.discovery.com/search.htm?terms=\u0002\u00010"
+ },
+ "pt": "http://www.dispostable.com/inbox/\u0002/\u00013",
+ "board": "//disboard.org/search?keyword=\u0002\u000113",
+ "closetv": "http://www.disclose.tv/search/desk?title=\u0002\u00010",
+ "cme": "//discord.me/servers/1/\u0002\u00017",
+ "cussscratch": "http://scratch.mit.edu/search/google_results/?q=\u0002&date=anytime&sort_by=datetime_shared\u00010",
+ "cworld": "http://discworld.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "ney": "http://search.disney.go.com/?q=\u0002\u000115",
+ "sent": "//dissenter.com/search?q=\u0002\u00010"
+ },
+ "t": "//dizionario.internazionale.it/parola/\u0002\u00010",
+ "y": {
+ "*": "http://www.diynetwork.com/search/\u0002\u00014",
+ "org": "/?q=site:diy.org+\u0002\u00010"
+ },
+ "be": "http://www.differencebetween.net/search/?q=\u0002\u00010",
+ "bs": "//www.1stdibs.com/search/?q=\u0002\u00010",
+ "ff": "//duckduckgo.com/?q=difference+between+\u0002&ia=qa\u00014",
+ "fm": "//www.di.fm/search?q=\u0002\u00013",
+ "ki": {
+ "*": "//www.diki.pl/slownik-angielskiego/?q=\u0002\u0001554",
+ "de": "//www.diki.pl/slownik-niemieckiego?q=\u0002\u00017"
+ },
+ "va": {
+ "*": "//www.diva-portal.org/smash/resultList.jsf?dswid=8805&language=en&searchType=SIMPLE&query=\u0002&af=%5B%5D&aq=%5B%5B%5D%5D&aq2=%5B%5B%5D%5D&aqe=%5B%5D&noOfRows=50&sortOrder=author_sort_asc&sortOrder2=title_sort_asc&onlyFullText=false&sf=all\u00010",
+ "liu": "http://liu.diva-portal.org/smash/resultList.jsf?searchType=SIMPLE&query=\u0002\u00010",
+ "zus": "//divazus.com/?s=\u0002\u00010"
+ },
+ "vi": {
+ "*": "//www.elegantthemes.com/documentation/?s=\u0002&submit.x=0&submit.y=0\u00010",
+ "i": "http://www.divii.org/search?q= \u0002\u00010",
+ "nipedia": "http://kidicarus.wikia.com/wiki/Special:Search?search=\u0002\u00010"
+ },
+ "ddal": "http://portail.atilf.fr/cgi-bin/search2e?title=\u0002&author=&class=&speech=&objtype=&word=&CONJUNCT=PHRASE&PROXY=moins+de&DISTANCE=3&OUTPUT=conc&SYSTEM_DIR=%2Fvar%2Fartfla%2Fencyclopedie%2Ftextdata%2FIMAGE%2F\u00010",
+ "igo": "http://www.diigo.com/search/my?q=\u0002\u00014",
+ "igt": "//www.diigo.com/tag/\u0002?year=2\u00010",
+ "lbert": "//dilbert.com/search_results?terms=\u0002\u00013",
+ "plo": "http://www.monde-diplomatique.fr/recherche?s=\u0002\u00010",
+ "zint": "http://dizionario.internazionale.it/cerca/\u0002\u00010"
+ },
+ "j": {
+ "*": "//docs.djangoproject.com/search/?q=\u0002\u000146",
+ "i": "//store.dji.com/product-search?q=\u0002\u00010",
+ "s": "//discord.js.org/#/docs/main/stable/search?q=\u0002\u000189",
+ "ay": "http://www.deejay.de/\u0002\u00010",
+ "tt": "http://www.djtechtools.com/?s=\u0002\u00010",
+ "ango": {
+ "*": "http://docs.djangoproject.com/search/?q=\u0002\u0001194",
+ "doc": "//docs.djangoproject.com/en/1.8/search/?q=\u0002\u00010"
+ },
+ "ent": "//www.djentmag.com/?s=\u0002\u00010",
+ "lts": "//docs.djangoproject.com/en/2.2/search/?q=\u0002\u00010",
+ "ones": "//search.www.davidjones.com/search?w=\u0002\u00010",
+ "packages": "http://djangopackages.com/search/?q=\u0002\u00010",
+ "ticket": "//code.djangoproject.com/ticket/\u0002\u00010",
+ "trans": "http://www.dictjuggler.net/en/yakugo/?word=\u0002\u00010"
+ },
+ "k": {
+ "c": "http://www.digikey.ca/product-search/en?x=-1308&y=-74&lang=en&site=ca&KeyWords=\u0002 \u000119",
+ "*": "//store.docker.com/search?q=\u0002\u000116",
+ "p": "//diksiyonaryo.ph/search/\u0002\u000132",
+ "y": "//www.digikey.com/products/en?keywords=\u0002\u000133",
+ "de": "http://www.digikey.de/product-search/de?keywords=\u0002\u00013",
+ "es": "//www.digikey.es/products/es?keywords=\u0002\u00010",
+ "fr": "http://www.digikey.fr/product-search/fr?keywords=\u0002\u000144",
+ "it": "http://www.digikey.it/products/it?keywords=\u0002\u00010",
+ "wk": "http://www.dokuwiki.org/start?do=search&id=\u0002\u00010",
+ "ord": "http://ordnet.dk/ddo/ordbog?query=\u0002\u00010",
+ "store": "//store.docker.com/search?q=\u0002\u000116"
+ },
+ "l": {
+ "c": {
+ "*": "http://www.dlcompare.com/search?q=\u0002\u00010",
+ "at": "http://mdlc.iec.cat/results.asp?txtEntrada=\u0002&operEntrada=0\u00010"
+ },
+ "*": "http://blog.desdelinux.net/?s=\u0002\u000123",
+ "e": {
+ "*": "http://dle.rae.es/?w=\u0002\u0001373",
+ "s": "//www.deepl.com/translator#au/es/\u0002\u000110",
+ "ague": "http://dleague.nba.com/?q=\u0002\u00010",
+ "nes": "//www.deepl.com/translator#en/es/\u0002\u000157"
+ },
+ "f": "http://www.deutschlandfunk.de/suchergebnisse.448.de.html?search%5Bsubmit%5D=1&search%5BwithNews%5D%5B%5D=WithNews&search%5Bword%5D=\u0002\u00010",
+ "l": "http://www.dll-files.com/search.php?q=\u0002\u00010",
+ "o": "//dict.leo.org/german-english/\u0002\u000111",
+ "ib": "http://discipleshiplibrary.com/search.php?a=1&e=1&m=0&p=0&n=0&s=topic1&t=TOPIC%20A&ss=\u0002&st=all&ssf=\u00010",
+ "mf": "http://dlmf.nist.gov/search/search?q=\u0002\u00010",
+ "po": {
+ "c": "//www.priberam.pt/dlpo/Conjugar/\u0002\u00010",
+ "*": "//www.priberam.pt/dlpo/\u0002\u0001172"
+ },
+ "ss": "http://duke.summon.serialssolutions.com/?summonVersion=2.0#!/search?ho=t&fvf=SourceType,Library%20Catalog,f%7CContentType,Book%20%2F%20eBook,f&q=\u0002&l=en\u00018",
+ "ang": "//duckduckgo.com/?q=site%3Adlang.org+\u0002\u000114",
+ "antrad": "http://traducciones-videojuegos.clandlan.net/index.php?page=academia%2Fsearch&search=\u0002\u00010",
+ "ive": "//dlive.tv/s/search/\u0002\u00010"
+ },
+ "m": {
+ "*": "//www.dailymotion.com/search/\u0002\u0001117",
+ "e": "//eikaiwa.dmm.com/uknow/search/?keyword=\u0002\u00010",
+ "f": "http://www.cnrtl.fr/definition/dmf/\u0002\u00010",
+ "g": "//www.digitalinmarket.com/search?q=\u0002\u00010",
+ "i": {
+ "*": "http://www.dmi.dk/byindex?by=\u0002\u00010",
+ "by": "http://www.dmi.dk/byindex?by=\u0002\u00010"
+ },
+ "o": "//duckduckgo.com/?q=\u0002+site%3Adeb-multimedia.org%2Fpool%2F\u00010",
+ "w": "//www.merriam-webster.com/dictionary/\u0002\u0001109",
+ "an": "//dyn.manpages.debian.org/jump?q=\u0002\u000185",
+ "ap": "http://map.daum.net/?q=\u0002\u00017",
+ "de": "//www.dm.de/search/468652.html?type=product&q=\u0002\u00013",
+ "aciasblog": "http://dmaciasblog.com/?s=\u0002\u00010",
+ "arc": "//mxtoolbox.com/SuperTool.aspx?action=dmarc%3a\u0002&run=networktools\u00010"
+ },
+ "n": {
+ "b": "//portal.dnb.de/opac.htm?query=\u0002&method=simpleSearch\u00014",
+ "*": "//www.dn.se/sok/?q=\u0002&page=1&sort=relevance\u00014",
+ "d": {
+ "*": "//www.dndbeyond.com/search?q=\u0002\u00010",
+ "e": "http://dict-navi.com/de/dictionary/list/?type=search&search_term=\u0002\u00010",
+ "beyond": "//www.dndbeyond.com/search?q=\u0002\u00010",
+ "wiki": "http://dungeons.wikia.com/wiki/Special:Search?search=\u0002\u00014"
+ },
+ "f": "//dnf.readthedocs.io/en/latest/search.html?q=\u0002\u00010",
+ "p": "http://referenceworks.brillonline.com/search?s.q=\u0002&s.f.s2_parent=s.f.book.der-neue-pauly\u00010",
+ "s": {
+ "*": "http://mxtoolbox.com/SuperTool.aspx?action=a%3a\u0002&run=toolpage\u000143",
+ "shop": "http://www.dns-shop.ru/search/?q=\u0002\u000113"
+ },
+ "t": "//www.dnt.no/søk/?q=\u0002\u00010",
+ "v": "http://www.avl.gva.es/lexicval/dnv?paraula=\u0002\u000111",
+ "w": "http://search.danawa.com/dsearch.php?k1=\u0002\u000117",
+ "ab": "//docs.microsoft.com/en-us/dotnet/api/?term=\u0002\u00010",
+ "evnik": "//www.dnevnik.bg/search/\u0002\u00010",
+ "ews": "//www.designernews.co/search#stq=\u0002&stp=1\u00010"
+ },
+ "o": {
+ "c": {
+ "c": {
+ "*": "http://m.flexikon.doccheck.com/en/search/?q=\u0002\u00015",
+ "de": "http://flexikon.doccheck.com/de/index.php?title=Spezial:Suche&q=\u0002\u00013",
+ "heck": "http://www.doccheck.com/de/search/?q=\u0002\u00010"
+ },
+ "*": "//www.doctorofcredit.com/?s=\u0002\u000114",
+ "o": "http://www.donationcoder.com/forum/index.php?action=search2&search=\u0002 \u00010",
+ "s": {
+ "*": "http://www.scribd.com/search?query=\u0002\u000145",
+ "rs": "//docs.rs/releases/search?query=\u0002\u0001522",
+ ".rs": "//docs.rs/releases/search?query=\u0002\u0001522",
+ ".splunk": "//docs.splunk.com/Special:SplunkSearch/docs?q=\u0002\u00010"
+ },
+ "book5": "http://docbook.org/search/?cx=008085259838719972531%3Atqmky0g0tbo&q=\u0002&sa=DocBook+Search&cof=FORID%3A9&siteurl=docbook.org%2F&ref=&ss=551j84183j5\u00010",
+ "ker": {
+ "*": "//store.docker.com/search?q=\u0002\u000116",
+ "hub": "//hub.docker.com/search/?isAutomated=0&isOfficial=0&page=1&pullCount=0&q=\u0002&starCount=0\u0001492"
+ },
+ "ksal": "//docksal.readthedocs.io/en/master/search.html?q=\u0002\u00010",
+ "trine": "//www.doctrine.fr/?q=\u0002\u00010",
+ "ubu": {
+ "*": "//help.ubuntu.com/search.html?cof=FORID%3A9&cx=004599128559784038176%3Avj_p0xo-nng&ie=UTF-8&q=\u0002&sa=Search\u00010",
+ "fr": "//duckduckgo.com/?q=\u0002+site%3Adoc.ubuntu-fr.org\u00010"
+ },
+ "umentary": "http://documentaryheaven.com/find/?q=\u0002\u00010"
+ },
+ "*": "//www.digitalocean.com/community/search?q=\u0002\u000123",
+ "e": "http://www.dasoertliche.de/Controller?form_name=search_inv&page=5&context=4&action=43&ph=\u0002\u00010",
+ "g": {
+ "*": "http://canigivemydog.com/?s=\u0002 \u000110",
+ "ob": "http://www.dogobooks.com/search/\u0002\u00010",
+ "om": "http://www.dogomovies.com/search/\u0002\u00010",
+ "echain": "http://dogechain.info/address/\u0002\u00010",
+ "pedia": "http://www.dogpedia.org/?s=\u0002\u00010",
+ "pile": "http://results.dogpile.com/search/web?q=\u0002&ql=&topSearchSubmit.x=0&topSearchSubmit.y=0&fcoid=417&fcop=topnav&fpid=27&om_nextpage=True\u000152",
+ "sing": "//dogsing.com/results/?q=\u0002\u00010"
+ },
+ "i": {
+ "*": "//doi.org/\u0002\u0001340",
+ "t": "//www.doityourself.com/search?dsp=how-to&psearch=\u0002\u00010"
+ },
+ "m": {
+ "*": "//developer.mozilla.org/en-US/search?topic=api&q=\u0002\u00015",
+ "u": "//www.domu.com/chicago/apartment-search2?domu_search=\u0002\u00010",
+ "w": "http://wiki.dominionstrategy.com/index.php?search=\u0002&go=Go&title=Special%3ASearch\u00019",
+ "ain": {
+ "*": "http://www.namecheap.com/domains/domain-name-search/results.aspx?domain=\u0002\u000110",
+ "r": "//domainr.com/?q=\u0002\u000118",
+ "dossier": "http://centralops.net/co/DomainDossier.aspx?addr=\u0002&dom_whois=true&dom_dns=true&traceroute=true&net_whois=true&svc_scan=true\u00014",
+ "sbot": "http://domainsbot.com/?q=\u0002 \u00010"
+ },
+ "ein": "//domeinwinkel.hosting/?domain=\u0002\u00010",
+ "ize.com": "//domize.com/?q=\u0002\u00010"
+ },
+ "t": {
+ "a": {
+ "2": "http://wiki.teamliquid.net/dota2/index.php?search=\u0002\u000146",
+ "*": "http://dota2.gamepedia.com/index.php?search=\u0002 \u0001253",
+ "buff": "http://www.dotabuff.com/search?q=\u0002\u00017"
+ },
+ "*": "//www.digitalocean.com/community/tutorials?q=\u0002\u00013",
+ "tk": "http://my.dot.tk/registration/register?domainname=\u0002\u00010",
+ "lan": "http://evemaps.dotlan.net/search?q=\u0002\u00010",
+ "net": {
+ "*": "//docs.microsoft.com/en-us/search/index?search=\u0002&scope=.NET\u000145",
+ "api": "//docs.microsoft.com/en-us/dotnet/api/?term=\u0002\u00010"
+ },
+ "what": "http://dotwhat.net/search/\u0002\u00010"
+ },
+ "x": "//www.amdocs.com/search?search=\u0002\u00010",
+ "ai": "http://doai.io/\u0002\u00014",
+ "aj": "//www.doaj.org/search?source=%7B%22query%22%3A%7B%22query_string%22%3A%7B%22query%22%3A%22\u0002%22%2C%22default_operator%22%3A%22AND%22%7D%7D%2C%22from%22%3A0%2C%22size%22%3A10%7D\u00010",
+ "hp": "//dohp.com/search?q=\u0002\u00010",
+ "om": {
+ "*": "http://doomwiki.org/wiki/Special:Search?search=\u0002\u0001108",
+ "sday": "//www.doomsdayprep.com/?s=\u0002&post_type=product\u00010"
+ },
+ "rf": {
+ "*": "http://dwarffortresswiki.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000182",
+ "or": "//www.steinberg.net/forums/search.php?keywords=\u0002&fid%5B0%5D=246\u00010"
+ },
+ "wn": {
+ "d": "//downdetector.co.uk/search/?q=\u0002\u00019",
+ "*": "//downforeveryoneorjustme.com/\u0002\u00015",
+ "4me": "//downforeveryoneorjustme.com/\u0002\u00015",
+ "for": {
+ "*": "//downforeveryoneorjustme.com/\u0002\u00015",
+ "me": "//downforeveryoneorjustme.com/\u0002\u00015"
+ },
+ "load": {
+ "*": "http://download.cnet.com/1770-20_4-0.html?searchtype=downloads&query=\u0002&tg=dl-20&search.x=0&search.y=0&search=+Go%252521\u000111",
+ "cnet": "http://download.cnet.com/1770-20_4-0.html?query=\u0002&platformSelect=&tag=srch&searchtype=downloads&filterName=platform%3DWindows%2CMobile%2CMac%2CWebware&filter=platform%3DWindows%2CMobile%2CMac%2CWebware\u00010"
+ },
+ "pour": "http://www.downpour.com/catalogsearch/result/?q=\u0002\u00010"
+ },
+ "bber": "//dobberhockey.com/?s=\u0002&orderby=post_date\u00010",
+ "breknihy": "http://www.dobre-knihy.cz/vyhledavani/?q=\u0002\u00010",
+ "daxit": "//www.dodax.it/it-it/search/?s=\u0002\u00013",
+ "fus": "//dofuswiki.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "lphin": "//wiki.dolphin-emu.org/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u000115",
+ "nedeal": "//www.donedeal.ie/all?words=\u0002\u00010",
+ "ntstarve": "http://dont-starve-game.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u000112",
+ "peclics": "http://www.dopeclics.com/search?q=\u0002\u00010",
+ "rabara": "http://dorama.akihabara.cz/vyhledavani/\u0002\u00010",
+ "uban": {
+ "*": "http://www.douban.com/search?q=\u0002\u000176",
+ "movie": "//movie.douban.com/subject_search?search_text=\u0002\u00010"
+ },
+ "ubtbox": "//www.doubtbox.online/search/?q=\u0002\u00010",
+ "uga": "http://en.niconico.sarashi.com/?\u0002\u00010",
+ "uglas": "//www.douglas.nl/douglas/search.html?query=\u0002&searchType=search&init=true\u00010",
+ "ugscripts": "http://dougscripts.com/itunes/itinfo/searchform.php?my_srch_term=\u0002\u00010",
+ "ujinshi": "http://www.doujinshi.org/search/simple/?T=objects&sn=\u0002\u00013",
+ "ver": "http://search.doverpublications.com/search?keywords=\u0002\u00010"
+ },
+ "p": {
+ "b": "//derpibooru.org/search?q=\u0002\u000171",
+ "c": {
+ "*": "http://dvdpascher.net/recherche/?q=\u0002\u00010",
+ "s": "//duckduckgo.com/?q=\u0002+site:doc.pcsoft.fr&ia=web\u00010"
+ },
+ "d": {
+ "*": "http://lema.rae.es/dpd/?key=\u0002\u000115",
+ "t": "//tracking.dpd.de/cgi-bin/delistrack?typ=1&pknr=\u0002\u00010",
+ "post": "http://tracking.dpd.de/parcelstatus?query=\u0002&locale=en_DE\u00010"
+ },
+ "*": "http://www.duckduckgo.com/?q=site%3Adlang.org+\u0002\u000137",
+ "g": "//www.dpg-verhandlungen.de/year/2019/conference/regensburg/search?query=\u0002&submit=Search\u00010",
+ "i": "http://www.dogpile.com/search/images?q=\u0002\u0001119",
+ "l": {
+ "a": "http://dp.la/search?utf8=✓&q=\u0002\u00010",
+ "b": "http://www.dblp.org/search/index.php#query=\u0002\u00010",
+ "*": "//www.deepl.com/translator#xx/en/\u0002\u00015633",
+ "g": "http://ilg.usc.es/pronuncia/?pq=&q=\u0002&l=1&c[]=0\u00010",
+ "docs": "//dpldocs.info/locate?q=\u0002\u000114"
+ },
+ "n": "http://www.dogpile.com/search/news?q=\u0002\u00010",
+ "r": {
+ "*": "http://www.dpreview.com/search/?query=\u0002 \u00014",
+ "eview": "http://www.dpreview.com/search/?query=\u0002&terms=\u0002\u00015"
+ },
+ "t": {
+ "*": "http://www.dicio.com.br/\u0002\u000116",
+ "s": "//tracker.debian.org/pkg/\u0002\u000145",
+ "br": "http://michaelis.uol.com.br/moderno-portugues/busca/portugues-brasileiro/\u0002\u00010"
+ },
+ "v": "http://www.dogpile.com/search/video?q=\u0002\u00010",
+ "w": "http://www.dogpile.com/search/web?q=\u0002\u00010",
+ "kg": "//packages.debian.org/search?keywords=\u0002\u0001671",
+ "mt": "//anonscm.debian.org/git/python-modules/packages/\u0002.git\u00010",
+ "ub": "http://pub.dartlang.org/search?q=\u0002\u000112",
+ "ackages": "//packages.debian.org/search?keywords=\u0002\u0001671",
+ "olicy": "//www.debian.org/doc/debian-policy \u0002\u00010"
+ },
+ "q": "http://dragon-quest.org/w/index.php?search=\u0002\u00010",
+ "r": {
+ "*": "http://dribbble.com/search?q=\u0002\u000127",
+ "f": "http://www.django-rest-framework.org/?q=\u0002\u000111",
+ "o": {
+ "m": "//www.drom.ru/search/?q=\u0002\u00010",
+ "p": {
+ "*": "//www.maildrop.cc/inbox/\u0002\u0001103",
+ "box": "//www.dropbox.com/search/personal?query=\u0002\u000149"
+ },
+ "*": "//dsn.dk/?retskriv=\u0002\u00010"
+ },
+ "s": "//docs.rs/\u0002\u0001666",
+ "w": "http://drw-www.adw.uni-heidelberg.de/drw-cgi/zeige?term=\u0002&index=lemmata\u00010",
+ "ae": "http://dle.rae.es/srv/fetch?w=\u0002&m=30\u0001196",
+ "ag": {
+ "*": "http://academia.gal/dicionario_rag/searchNoun.do?nounTitle=\u0002\u00010",
+ "ball": "//dragonball.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "cave": "http://dragcave.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010",
+ "onflyman": "//leaf.dragonflybsd.org/cgi/web-man?command=\u0002\u00010"
+ },
+ "db": {
+ "a": "http://dr.loudness-war.info/album/list?album=\u0002\u00010",
+ "*": "http://dr.loudness-war.info/album/list?artist=\u0002\u00010"
+ },
+ "dk": "http://www.dr.dk/search/Result?query=\u0002\u00010",
+ "ef": "http://dictionary.reference.com/browse/\u0002\u000120",
+ "eg": "//www.diarioregistrado.com/search?text=\u0002\u00010",
+ "ly": "http://www.directlyrics.com/search/?q=direct+lyrics&ie=utf-8&q=\u0002\u00010",
+ "tv": "//www.dr.dk/tv/soeg/\u0002\u00010",
+ "adio": "http://www.deutschlandradio.de/text-und-audio-suche.287.de.html?search%5Bsubmit%5D=1&search%5Bword%5D=\u0002\u00010",
+ "aftexpress": "http://www.draftexpress.com/search/term/\u0002\u00010",
+ "aomai": "//violettacyra.blogspot.com/search/?term=\u0002\u00010",
+ "argapress": "http://www.drargapress.com/?s=\u0002\u00010",
+ "axe": "//draxe.com/?s=\u0002\u00010",
+ "eam": {
+ "*": "http://dreammoods.com/cgibin/dreamdictionarysearch.pl?method=exact&header=dreamsymbol&search=\u0002\u00013",
+ "bible": "http://www.dreambible.com/search.php?q=\u0002\u00010",
+ "careerbuilder": "//www.dreamcareerbuilder.com/findjob.php?keyword=\u0002\u00010",
+ "incode": "http://www.dreamincode.net/forums/index.php?app=core&module=search&section=search&do=quick_search&search_app=core&fromsearch=1&search_term=\u0002&search_app=forums\u00010"
+ },
+ "emio": "//community.dremio.com/search?q=\u0002\u00010",
+ "eye": "//yun.dreye.com/dict_new/dict.php?w=\u0002\u00010",
+ "ibbble": "http://dribbble.com/search?q=\u0002\u000127",
+ "ibble": "http://dribbble.com/search?q=\u0002\u000127",
+ "ill": "http://www.drillsource.com/?s=\u0002\u00010",
+ "inkify": "http://www.drinkify.org/\u0002\u00010",
+ "ive": {
+ "*": "//drive.google.com/drive/search?q=\u0002 \u00012432",
+ "tribe": "//drivetribe.com/search/\u0002\u00010"
+ },
+ "nerdlove": "http://www.doctornerdlove.com/?s=\u0002\u00010",
+ "udge": "http://www.drudgereportarchives.com/dsp/search.htm?searchFor=\u0002\u00010",
+ "ugs": {
+ "*": "http://www.drugs.com/search.php?&searchterm=\u0002\u000110",
+ ".com": "//www.drugs.com/search.php?searchterm=\u0002\u00010"
+ },
+ "ugbank": "http://www.drugbank.ca/search?query=\u0002 \u00017",
+ "upp": "http://drupal.org/project/\u0002\u000122",
+ "upal": {
+ "*": "http://drupal.org/search/apachesolr_search/\u0002\u00016",
+ "api": "//api.drupal.org/api/drupal/includes%21common.inc/function/\u0002/7.x\u00010",
+ "code": "//cgit.drupalcode.org/\u0002\u00010"
+ },
+ "upmod": "//www.drupal.org/project/project_module/token?f%5B0%5D=&f%5B1%5D=&f%5B2%5D=&f%5B3%5D=&f%5B4%5D=sm_field_project_type%3Afull&f%5B5%5D=&f%5B6%5D=&text=\u0002&solrsort=iss_project_release_usage+desc&op=Search\u00010"
+ },
+ "s": {
+ "1": "//darksouls.wiki.fextralife.com/\u0002\u00018",
+ "a": {
+ "*": "http://wiki-aventurica.de/wiki/index.php?title=Spezial:Suche&search=\u0002\u000112",
+ "rw": "http://www.ulisses-regelwiki.de/index.php/suche.html?keywords=\u0002\u00010"
+ },
+ "c": "//screenshots.debian.net/packages?utf8=✓&search=\u0002\u00010",
+ "d": "http://www.denstoredanske.dk/Special:Opslag?q=\u0002\u00010",
+ "*": "http://www.standaard.be/zoeken?keyword=\u0002 \u000112",
+ "n": "//dsn.dk/?retskriv=\u0002&ae=0\u00010",
+ "r": {
+ "*": "//www.reddit.com/r/DotA2/search?q=\u0002&restrict_sr=on&sort=relevance&t=all\u00010",
+ "t": "//search.disroot.org/?q=\u0002\u000121"
+ },
+ "t": {
+ "*": "//security-tracker.debian.org/tracker/\u0002\u00010",
+ "e": "//www.d-seite.de/vis/vis.php?lemma=\u0002\u00010",
+ "r": "//dontsweattherecipe.com/?s=\u0002\u00010",
+ "gb": "http://dejure.org/gesetze/StGB/\u0002.html\u00010",
+ "arve": "http://dont-starve-game.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u000112"
+ },
+ "v": "http://dsv.su.se/s%C3%B6k?q=\u0002\u00010",
+ "w": {
+ "*": "http://darksouls.wikidot.com/search:site/q/\u0002\u00010",
+ "iki": "//www.datenschutz-wiki.de/index.php?search=\u0002\u00010"
+ },
+ "2w": "http://darksouls2.wikidot.com/search:site/q/\u0002\u00013",
+ "3w": "http://darksouls3.wikidot.com/search:site/a/p/q/\u0002\u00010",
+ "bin": "http://snapshot.debian.org/binary/?bin=\u0002\u00010",
+ "gvo": "//www.datenschutz-wiki.de/index.php?search=\u0002&ns3000=1\u00010",
+ "mcz": "http://dsmcz.com/prestashop/en/search?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=\u00010",
+ "mrf": "//www.dsmrf.com/?s=\u0002\u00010",
+ "ource": "//codesearch.debian.net/search?q=\u0002\u000122",
+ "pse": "http://dsp.stackexchange.com/search?q=\u0002\u00010",
+ "src": "http://snapshot.debian.org/package/?src=\u0002\u00010"
+ },
+ "t": {
+ "c": "http://danstonchat.com/search.html?search= \u0002\u000113",
+ "*": "//deskthority.net/wiki/index.php?search=\u0002\u00016",
+ "g": "//www.data.gouv.fr/search/?q=\u0002\u00010",
+ "n": "http://www.discoverthenetworks.org/search/?q=\u0002&cof=FORID%3A11&cx=013255222075609514560%3Avfcebs4vcuo\u00010",
+ "r": {
+ "*": "//tracker.debian.org/pkg/\u0002\u000145",
+ "pg": "//www.drivethrurpg.com/browse.php?keywords=\u0002\u000146"
+ },
+ "ag": {
+ "*": "http://debtags.debian.net/search/?q=\u0002\u00010",
+ "s": "//www.joindiaspora.com/tags/\u0002\u00010"
+ },
+ "es": "http://translate.reference.com/english/spanish/\u0002/\u00010",
+ "deals": "http://www.doubletakedeals.com/searchresults?srch=\u0002\u00010",
+ "hority": "http://deskthority.net/w/index.php?search=\u0002\u00010",
+ "ube": "//d.tube/#!/s/\u0002\u00016",
+ "wiki": "//deskthority.net/wiki/\u0002\u00010"
+ },
+ "v": {
+ "b": "//m.dvb.de/de/verbindungsauskunft/verbindungen.do?vaform%5Bstartname%5D=\u0002\u00010",
+ "*": "http://www.ikonet.com/fr/ledictionnairevisuel/static/qc/searchresults?cx=partner-pub-7156007925185226%3Atd1ipa-ejn8&cof=FORID%3A9&ie=UTF-8&q=\u0002&siteurl=www.ikonet.com%2Ffr%2Fledictionnairevisuel%2F&ref=www.ikonet.com%2Ffr%2Fledictionnairevisuel%2Fstatic%2Fqc%2Fsearchresults%3Fcx%3Dpartner-pub-7156007925185226%253Atd1ipa-ejn8%26cof%3DFORID%253A9%26ie%3DUTF-8%26q%3Dfraise%26siteurl%3Dwww.ikonet.com%252Ffr%252Fledictionnairevisuel%252Fstatic%252Fqc%252Fvisuel%26ref%3D%26ss%3D607j79921j6&ss=648j91840j6\u00010",
+ "p": "http://www.developpez.com/recherche/?cx=006424388311999799839%3A-31tnf0iuqy&cof=FORID%3A9&ie=ISO-8859-1&q=\u0002&sa=Rechercher\u00010",
+ "r": "http://xboxdvr.com/gamer/\u0002\u00010",
+ "lp": "http://www.developpez.com/recherche/?q=\u0002&sa.x=-1376&sa.y=-2&cx=006424388311999799839%3A-31tnf0iuqy&cof=FORID%3A9&ie=ISO-8859-1&siteurl=www.developpez.com%2F%3Fq%3Dmicrosoft&ref=&ss=1463j290467j10\u00010",
+ "247": "http://www.dv247.com/search/0/0/Relevance/Descending/\u0002/1/\u00010",
+ "dfr": "http://www.dvdfr.com/search/search.php?produit=all&title=\u0002\u00010",
+ "dupc": "//www.dvdupc.com/find?find=\u0002\u00010"
+ },
+ "w": {
+ "b": "http://woerterbuchnetz.de/DWB/?lemma=\u0002\u00014",
+ "d": {
+ "*": "//www.dwd.de/DE/wetter/warnungen/warnWetter_node.html?ort=\u0002\u00015",
+ "l": "http://www.dwdl.de/features/suche/?suche=\u0002 \u00014",
+ "s": "http://www.dwds.de/?qu=\u0002\u000161"
+ },
+ "*": "//wiki.d-addicts.com/index.php?search=\u0002\u000111",
+ "e": {
+ "*": "http://www.dw.com/search/es?languageCode=es&item=\u0002\u000117",
+ "ll": "//www.dwell.com/query/\u0002\u00010"
+ },
+ "w": "http://tardis.wikia.com/wiki/index.php?search=\u0002\u00013",
+ "ru": "http://dark-world.ru/search/?q=\u0002\u00010",
+ "arf": "http://dwarffortresswiki.org/index.php?search=\u0002\u000126",
+ "iki": "//daviswiki.org/_rsearch/?q=\u0002\u00010"
+ },
+ "x": {
+ "*": "http://www.dx.com/s/\u0002\u00013",
+ "n": "http://www.dictionary.com/browse/\u0002?s=ts\u000125",
+ "o": "http://www.dxomark.com/content/search/?SearchText=\u0002 \u00010",
+ "r": "//dxr.mozilla.org/mozilla-central/search?q=\u0002\u00010"
+ },
+ "z": "//www.deezer.com/search/\u0002\u0001331",
+ "4u": "http://datasheet4u.com/share_search.php?sWord=\u0002\u00013",
+ "66": "//d66.nl/?s=\u0002\u00010",
+ "&d": "//www.dndbeyond.com/search?q=\u0002\u00010",
+ "&r": "//www.dr.com.tr/search?q=\u0002\u00010",
+ "ub": {
+ "*": "http://code.dlang.org/search?q=\u0002\u00010",
+ "izzle": "http://dubai.dubizzle.com/search/?keywords=\u0002&is_basic_search_widget=1&is_search=1\u00010"
+ },
+ "uc": {
+ "*": "//find.library.duke.edu/?search_field=all_fields&q=\u0002\u00013",
+ "x": "http://help.appducx.com/index.php?topic=doc/Search-Result/index_en.htm&q=\u0002\u00010",
+ "k.co": "//duck.co/search/\u0002\u00016",
+ "kco": "//duck.co/search/\u0002\u00016",
+ "kduckgo": "//duckduckgo.com/?q=\u0002\u0001156",
+ "kgoes": "//duckduckgo.com/?q=\u0002&kp=-1&k5=1&kah=wt-wt&kl=xl-es&kad=es_ES\u00010"
+ },
+ "uk": "//duckduckgo.com/?q=\u0002&kah=uk-en&kl=uk-en&ia=web\u000113",
+ "ul": {
+ "*": "http://library.duke.edu/find/all?Ntt=\u0002 \u00010",
+ "uxdc": "http://www.duluxdecoratorcentre.co.uk/servlet/SiteAdvancedSearchHandler?searchString=\u0002\u00010",
+ "uxuk": "//www.dulux.co.uk/en/search?s=\u0002\u00010"
+ },
+ "yn": {
+ "*": "//dynasty-scans.com/search?q=\u0002\u000114",
+ "amicrange": {
+ "a": "http://www.dr.loudness-war.info/index.php?search_album=\u0002\u00010",
+ "*": "http://www.dr.loudness-war.info/index.php?search_artist=\u0002\u00010"
+ },
+ "amite": "http://dynamite.com/htmlfiles/search2.html?0=19&next0=&KMPZ=\u0002\u00010"
+ },
+ "1pkg": "//pkginfo.devuan.org/cgi-bin/d1pkgweb-query?search=\u0002&release=any\u00010",
+ ".com": "http://dictionary.reference.com/browse/\u0002?s=t\u00018",
+ "örner": "//buecher-doerner.buchhandlung.de/shop/quickSearch?searchString=\u0002\u00010",
+ "ualb": "//board.dualthegame.com/index.php?/search/&q=\u0002\u00010",
+ "uden": "http://www.duden.de/suchen/dudenonline/\u0002\u00011905",
+ "uet": "//duet3d.dozuki.com/Search?query=\u0002\u00010",
+ "uedil": "//www.duedil.com/companies/search?query=\u0002&op=Companies\u00010",
+ "uff": "http://www.dotabuff.com/search?q=\u0002\u00017",
+ "ummi": {
+ "*": "http://www.dummies.com/search.html?query=\u0002\u00010",
+ "es": "//www.dummies.com/?s=\u0002\u00010"
+ },
+ "umpert": "http://www.dumpert.nl/tag/\u0002/\u00015",
+ "urhg": "//dejure.org/cgi-bin/suche?Suchenach=\u0002\u000164",
+ "uss": "//kulturkaufhaus.buchhandlung.de/shop/quickSearch?searchString=\u0002\u00010",
+ "ustin": "//www.dustin.se/search/\u0002\u00010",
+ "ustloop": "http://www.dustloop.com/wiki/index.php?search=\u0002\u000128",
+ "uunitori": "//duunitori.fi/tyopaikat/?haku=\u0002\u00010",
+ "ymocks": "//www.dymocks.com.au/books/?term=\u0002\u00010"
+ },
+ "?": "//duckduckgo.com/?q=\u0002\u0001156",
+ "e": {
+ "1": "//www.e1.ru/news/search/?search=\u0002\u00010",
+ "2": {
+ "c": "//translate.google.com/#en/cs/\u0002\u00014",
+ "*": "http://everything2.com/title/\u0002?searchy=search\u00013",
+ "u": "//e2u.org.ua/s?w=\u0002&dicts=all&highlight=on\u00015"
+ },
+ "b": {
+ "c": {
+ "a": "//www.ebay.ca/sch/items/?_nkw=\u0002\u000183",
+ "*": "//www.ebay.ca/sch/\u0002\u000124",
+ "h": "//www.ebay.ch/sch/items/?_nkw=\u0002\u00010"
+ },
+ "d": {
+ "*": "http://www.eatbydate.com/search/?q=\u0002\u00013",
+ "e": "//www.ebay.de/sch/items/?_nkw=\u0002\u0001444"
+ },
+ "*": "//www.ebay.com/sch/items/?_nkw=\u0002\u00017126",
+ "e": {
+ "*": "//www.befr.ebay.be/sch/items/?_nkw=\u0002\u00010",
+ "s": "//www.ebay.es/sch/items/?_nkw=\u0002\u000128",
+ "rt": "//www.rogerebert.com/search?utf8=%E2%9C%93&q=\u0002\u000112"
+ },
+ "g": {
+ "*": "//ebgames.com.au/any/any?q=\u0002\u00010",
+ "r": "http://search.eim.ebay.gr/?kw=\u0002\u00010",
+ "amesca": "//www.ebgames.ca/SearchResult/QuickSearch?q=\u0002\u00010",
+ "amesaustralia": "//www.ebgames.com.au/any/any?q=\u0002\u00010"
+ },
+ "i": {
+ "e": "//www.ebay.ie/sch/items/?_nkw=\u0002\u000136",
+ "*": "//www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=\u0002&requestFrom=duckduckgo\u00013",
+ "n": "http://shop.ebay.in/?_nkw=\u0002&_sacat=See-All-Categories\u00010",
+ "t": "//www.ebay.it/sch/items/?_nkw=\u0002\u000192"
+ },
+ "at": {
+ "*": "//www.ebay.at/sch/i.html?_nkw=\u0002\u00010",
+ "es": {
+ "*": "http://www.ebates.com/search/all.htm?query=\u0002&position=submit&type=suggest&store_name=\u0002\u00010",
+ "ca": "//www.ebates.ca/srch/all?query=\u0002\u00010"
+ }
+ },
+ "au": "//www.ebay.com.au/sch/items/?_nkw=\u0002\u000177",
+ "ay": {
+ "*": "//www.ebay.com/sch/items/?_nkw=\u0002\u00017126",
+ "at": "//www.ebay.at/sch/items/?_nkw=\u0002\u00015",
+ "au": "//www.ebay.com.au/sch/items/?_nkw=\u0002\u000177",
+ "be": "//www.befr.ebay.be/sch/items/?_nkw=\u0002\u00010",
+ "ca": "//www.ebay.ca/sch/items/?_nkw=\u0002\u000183",
+ "ch": "//www.ebay.ch/sch/items/?_nkw=\u0002\u00010",
+ "de": "//www.ebay.de/sch/items/?_nkw=\u0002\u0001444",
+ "es": "//www.ebay.es/sch/items/?_nkw=\u0002\u000128",
+ "fr": "//www.ebay.fr/sch/items/?_nkw=\u0002\u000169",
+ "gr": "http://search.eim.ebay.gr/?kw=\u0002\u00010",
+ "hk": "http://shop.ebay.com.hk/?_nkw=\u0002&_sacat=See-All-Categories\u00010",
+ "ie": "//www.ebay.ie/sch/items/?_nkw=\u0002\u000136",
+ "in": "http://shop.ebay.in/?_nkw=\u0002&_sacat=See-All-Categories\u00010",
+ "it": "//www.ebay.it/sch/items/?_nkw=\u0002\u000192",
+ "my": "http://shop.ebay.com.my/?_nkw=\u0002&_sacat=See-All-Categories\u00010",
+ "nl": "//www.ebay.nl/sch/items/?_nkw=\u0002\u00019",
+ "ph": "http://shop.ebay.ph/?_nkw=\u0002&_sacat=See-All-Categories\u00010",
+ "pl": "http://shop.ebay.pl/?_nkw=\u0002&_sacat=See-All-Categories\u00013",
+ "sg": "http://shop.ebay.com.sg/?_nkw=\u0002&_sacat=See-All-Categories\u00010",
+ "uk": "//www.ebay.co.uk/sch/items/?_nkw=\u0002\u0001750",
+ "kleinanzeigen": "//www.ebay-kleinanzeigen.de/s-\u0002/k0\u000117"
+ },
+ "be": "//www.befr.ebay.be/sch/items/?_nkw=\u0002\u00010",
+ "fr": "//www.ebay.fr/sch/items/?_nkw=\u0002\u000169",
+ "hk": "http://shop.ebay.com.hk/?_nkw=\u0002&_sacat=See-All-Categories\u00010",
+ "my": "http://shop.ebay.com.my/?_nkw=\u0002&_sacat=See-All-Categories\u00010",
+ "nl": "//www.ebay.nl/sch/items/?_nkw=\u0002\u00019",
+ "ph": "http://shop.ebay.ph/?_nkw=\u0002&_sacat=See-All-Categories\u00010",
+ "pl": "http://shop.ebay.pl/?_nkw=\u0002&_sacat=See-All-Categories\u00013",
+ "sg": "http://shop.ebay.com.sg/?_nkw=\u0002&_sacat=See-All-Categories\u00010",
+ "th": "//www.ebth.com/search?q=\u0002\u00010",
+ "uk": {
+ "*": "//www.ebay.co.uk/sch/items/?_nkw=\u0002\u0001750",
+ "aokoriesblog": "//ebukaokorie.blogspot.com/search?q=\u0002\u00010"
+ },
+ "ooki": "//ebooki.swiatczytnikow.pl/szukaj/\u0002\u00010",
+ "ooko": "//booko.com.au/products/search?product_type=3&q=\u0002\u00010",
+ "ookde": "//www.ebook.de/de/quickSearch?searchString=\u0002\u00010",
+ "rary": "http://site.ebrary.com/lib/alltitles/search.action?p00=\u0002 \u00010",
+ "rit": "//www.britannica.com/search?query=\u0002\u000113",
+ "seller": "http://www.ebay.com/sch/\u0002/m.html\u00017",
+ "sold": "//ebay.com/sch/i.html?isRefine=true&_nkw=\u0002&LH_Sold=1\u000132",
+ "uild": {
+ "*": "http://gpo.zugaina.org/Search?search=\u0002\u00019",
+ "s": "http://gpo.zugaina.org/Search?search=\u0002\u00019"
+ },
+ "uyer": "//www.ebuyer.com/search?q=\u0002\u000111",
+ "yrec": "//www.ebay.com/sch/176985/i.html?_nkw=\u0002\u00010"
+ },
+ "c": {
+ "a": "//www.ebay.ca/sch/items/?_nkw=\u0002\u000183",
+ "*": "http://www.ecosia.org/search?q=\u0002\u0001653",
+ "h": "//www.ebay.ch/sch/items/?_nkw=\u0002\u00010",
+ "i": {
+ "a": "http://www.eciaauthorized.com/search?pn=\u0002\u00010",
+ "*": "http://www.elcorteingles.es/search?s=\u0002\u00013",
+ "m": "//www.ecosia.org/images?q=\u0002\u00010"
+ },
+ "o": {
+ "b": "//www.ecobookstore.de/shop/quickSearch?searchString=\u0002\u00010",
+ "*": "//www.ecosia.org/search?q=\u0002\u0001135",
+ "m": {
+ "*": "//community.e-spirit.com/search.jspa?peopleEnabled=true&userID=&containerType=&container=&spotlight=true&q=\u0002\u00010",
+ "es": "//ecomes.org/?s=\u0002\u00010"
+ },
+ "lo": "http://www.ecolo.be/spip.php?recherche=\u0002&page=recherche\u00010",
+ "dices": "http://www.e-codices.unifr.ch/en/search/all?sQueryString=\u0002\u00010",
+ "lab": "http://www.ecolab.com/search/#q=\u0002&sort=relevancy\u00010",
+ "le-club": "//www.ecole-club.ch/Cours/recherche@\u0002\u00010",
+ "nbiz": "http://www.econbiz.de/Search/Results?lookfor=\u0002&type=AllFields&submit=Suchen\u00010",
+ "nlib": "http://econlib.org/cgi-bin/fullsearch.pl?query=\u0002\u00010",
+ "nomist": "//www.economist.com/search?q=\u0002\u00013",
+ "shopper": "http://www.ecoshopper.de/ecoshopper2/faces/SuchErgebnis.jsp?query=\u0002&brancheDropDown=alle&preisspanneDropDown=0&_charset_=UTF-8&suchen=Suchen&searchrange=namen\u00010",
+ "sia": "//www.ecosia.org/search?q=\u0002\u0001135",
+ "timesindia": "//economictimes.indiatimes.com/topic/\u0002\u00010",
+ "wiki": "//eco.gamepedia.com/index.php?search=\u0002&title=Special:Search\u00010"
+ },
+ "s": "//secure.ecs.soton.ac.uk/kb/search/?q=\u0002&s=1\u00010",
+ "li": {
+ "*": "http://curia.europa.eu/juris/liste.jsf?critereEcli=\u0002\u00010",
+ "psewiki": "//wiki.eclipse.org/index.php?search=\u0002&fulltext=search\u00010"
+ },
+ "cpd": "http://www.encyclo.nl/zoek.php?woord=\u0002\u00010",
+ "lair": "http://eclair.md/search?type=product&q=\u0002\u00010",
+ "uavisa": "//www.ecuavisa.com/busqueda?search_api_views_fulltext=\u0002\u00010"
+ },
+ "d": {
+ "b": {
+ "c": "//www.exploit-db.com/search/?action=search&text=\u0002\u00010",
+ "*": "//www.exploit-db.com/search/?action=search&description=\u0002\u00010",
+ "priser": "http://www.edbpriser.dk/Search/General.aspx?q=\u0002}\u00010"
+ },
+ "c": "http://everydaycarry.com/search\u0002\u000110",
+ "e": "//www.ebay.de/sch/items/?_nkw=\u0002\u0001444",
+ "*": "//encyclopediadramatica.rs/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000112",
+ "f": {
+ "*": "//forums.frontier.co.uk/search.php?do=process&query=\u0002\u00010",
+ "eminism": "http://everydayfeminism.com/?s=\u0002\u00010"
+ },
+ "h": {
+ "*": "//www.elsalvador.com/search?s=\u0002\u00010",
+ "rec": "//edhrec.com/cards/\u0002\u000117"
+ },
+ "m": {
+ "*": "http://edmofy.com/?s=\u0002\u00010",
+ "o": {
+ "*": "//new.edmodo.com/search?q=\u0002\u00010",
+ "do": "//spotlight.edmodo.com/Browse?search=true&q=\u0002\u00010"
+ },
+ "sauce": "//www.edmsauce.com/?s=\u0002\u00010"
+ },
+ "w": {
+ "*": "http://elite-dangerous.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u000123",
+ "eb": "http://www.eldestapeweb.com/\u0002-s\u00010",
+ "eek": "http://www.edweek.org/search.html?q=\u0002\u00010"
+ },
+ "x": "//www.edx.org/course?search_query=\u0002\u000110",
+ "ut": {
+ "*": "http://edutin.com/cursos/buscar/\u0002\u00010",
+ "alk": "//edutalk.id/?s=\u0002\u00010"
+ },
+ "diebauer": "//www.eddiebauer.com/search/a-search.jsp?sTerm=\u0002\u00010",
+ "gar": {
+ "*": "http://www.sec.gov/cgi-bin/browse-edgar?company=\u0002&CIK=&filenum=&State=&SIC=&owner=include&action=getcompany\u000112",
+ "t": "http://www.sec.gov/cgi-bin/browse-edgar?company=&match=&CIK=\u0002&filenum=&State=&Country=&SIC=&owner=exclude&Find=Find+Companies&action=getcompany\u00010"
+ },
+ "inburgh": "http://www.edinburgh.gov.uk/site/scripts/google_results.php?q=\u0002\u00010",
+ "itus": "http://www.editus.lu/ed/fr/recherche.html?q=\u0002\u00010",
+ "panama": "//eldigitalpanama.com/?s=\u0002\u00010",
+ "ucalingofr": "//educalingo.com/fr/dic-fr/\u0002\u00010"
+ },
+ "*": "//www.ebay.com/sch/items/?_nkw=\u0002\u00017126",
+ "e": {
+ "*": "//duckduckgo.com/?q=site%3Ahttp%3A%2F%2Fellislab.com%2Fforums%2F+\u0002\u00010",
+ "s": "//www.ebay.es/sch/items/?_nkw=\u0002\u000128",
+ "cms": "//docs.expressionengine.com/search/latest/?q=\u0002\u00010",
+ "ggs": "http://www.eeggs.com/php/search.php?cx=partner-pub-3374430587172271%3Aqa6js0-hxxa&cof=FORID%3A10&ie=ISO-8859-1&q=\u0002&siteurl=www.eeggs.com/&ref=\u00010"
+ },
+ "g": {
+ "*": "http://duckduckgo.com/?q=\u0002+site:epguides.com\u000110",
+ "o": "//extensions.gnome.org/#search=\u0002\u000125",
+ "r": "http://search.eim.ebay.gr/?kw=\u0002\u00010",
+ "s": "//www.epicgames.com/store/en-US/store-search?q=\u0002\u000143",
+ "t": "http://www.engadget.com/search/?q=\u0002\u00010",
+ "dl": "http://diglib.eg.org/discover?query=\u0002&submit=Go\u00010",
+ "ear": "//e-gear.se/catalogsearch/result/?q=\u0002\u00010",
+ "forums": "http://duckduckgo.com/?q=site:eurogamer.net/forums+\u0002\u00010",
+ "ged": "http://mslworld.egged.co.il/?state=3&language=he&freelang=\u0002&width=1280#/search\u00010",
+ "ghead": "//egghead.io/search?q=\u0002\u00010",
+ "gtimer": "http://e.ggtimer.com/\u0002 \u000187",
+ "uias": "//www.eliteguias.com/buscar.php?q=\u0002\u00010"
+ },
+ "h": {
+ "*": "//www.english-heritage.org.uk/search?searchTerm=\u0002\u00010",
+ "k": "http://shop.ebay.com.hk/?_nkw=\u0002&_sacat=See-All-Categories\u00010",
+ "u": "http://www.evonyhookups.info/?s=\u0002\u00010",
+ "ow": "http://www.ehow.com/search.html?s=\u0002\u00010"
+ },
+ "i": {
+ "c": "//eic.rsc.org/searchresults?qkeyword=\u0002\u00010",
+ "*": "//www.ecosia.org/images?q=\u0002\u00010",
+ "e": "//www.ebay.ie/sch/items/?_nkw=\u0002\u000136",
+ "n": "http://shop.ebay.in/?_nkw=\u0002&_sacat=See-All-Categories\u00010",
+ "r": "http://www.iranicaonline.org/articles/search/keywords:\u0002\u00010",
+ "t": "//www.ebay.it/sch/items/?_nkw=\u0002\u000192",
+ "ps": "//github.com/ethereum/EIPs/issues?utf8=✓&q=\u0002\u00018",
+ "jirou": "//eow.alc.co.jp/search?q=\u0002\u000121"
+ },
+ "j": {
+ "*": "http://www.tanoshiijapanese.com/dictionary/index.cfm?j=&e=\u0002&search=Search+%3E\u00010",
+ "w": "//econjwatch.org/search/?m=all&q=\u0002\u00010",
+ "mr": "//duckduckgo.com/?q=\u0002+site%3Aeconjobrumors.com\u000110",
+ "oy": "//ejoy-english.com/go/wordhunt?word=\u0002\u00010",
+ "umbo": "http://www.e-jumbo.gr/pages/searchProducts.aspx?lang=el&search-for=\u0002\u00010"
+ },
+ "k": {
+ "a": {
+ "c": "//www.ebay-kleinanzeigen.de/s-aachen/\u0002/k0l1921\u00019",
+ "*": "//www.ebay-kleinanzeigen.de/s-\u0002/k0\u000117"
+ },
+ "b": "http://kleinanzeigen.ebay.de/anzeigen/s-berlin/\u0002/k0l3331\u000130",
+ "*": "http://www.elektronik-kompendium.de/service/suchen/index.htm?domains=www.elektronik-kompendium.de&sitesearch=www.elektronik-kompendium.de&q=\u0002&sa=Suchen&client=pub-7453653573550802&forid=1&channel=3122011476&ie=ISO-8859-1&oe=ISO-8859-1&flav=0000&sig=XvZoofyEi29r3eL9&cof=GALT%3A%23008000%3BGL%3A1%3BDIV%3A%23FFFFFF%3BVLC%3A663399%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3A336699%3BALC%3A0000FF%3BLC%3A0000FF%3BT%3A000000%3BGFNT%3A0000FF%3BGIMP%3A0000FF%3BFORID%3A11&hl=de\u000152",
+ "h": {
+ "*": "//www.ebay-kleinanzeigen.de/s-hamburg/\u0002/k0l9409\u00010",
+ "r": "//www.ebay-kleinanzeigen.de/s-hannover/\u0002/k0l3155\u00010"
+ },
+ "k": "//www.ebay-kleinanzeigen.de/s-koeln/\u0002/k0l945\u00010",
+ "l": "//www.ebay-kleinanzeigen.de/s-leipzig/\u0002/k0l4233\u00016",
+ "m": "//www.ebay-kleinanzeigen.de/s-muenchen/\u0002/k0l6411\u00018",
+ "şi": "//eksisozluk.com/?q=\u0002\u00010",
+ "si": {
+ "*": "//eksisozluk.com/?q=\u0002\u00010",
+ "sozluk": "http://www.eksisozluk.com/show.asp?t=\u0002\u00017"
+ },
+ "ss": "http://www.eki.ee/dict/ekss/index.cgi?Q=\u0002&F=M\u00015",
+ "wb": "//www.ekwb.com/shop/catalogsearch/result/?q=\u0002\u00010",
+ "spress": "http://ekspress.delfi.ee/otsing/?query=\u0002\u00010"
+ },
+ "m": {
+ "a": {
+ "*": "http://www.ema.europa.eu/ema/index.jsp?curl=pages%2Fincludes%2Fmedicines%2Fmedicines_landing_page.jsp&searchkwByEnter=true&quickSearch=\u0002\u00013",
+ "g": {
+ "*": "//www.emag.ro/search/\u0002\u000161",
+ "bg": "//www.emag.bg/search/\u0002?ref=effective_search\u00010"
+ },
+ "cs": {
+ "*": "//duckduckgo.com/?q=site:emacswiki.org+\u0002\u000115",
+ "wiki": "//duckduckgo.com/?q=site:emacswiki.org+\u0002\u000115"
+ },
+ "cu": "//emaculation.com/doku.php/mac_emulation?do=search&id=mac_emulation&q=\u0002\u00010"
+ },
+ "c": "//www.medicines.org.uk/emc/search?q= \u0002\u00013",
+ "*": "http://motors.shop.ebay.com/eBay-Motors-/6000/i.html?_nkw=\u0002&_trksid=p2050885.m570.l1313&_rdc=1\u000138",
+ "o": {
+ "*": "http://www.emotiyou.com/search/\u0002\u00013",
+ "ji": {
+ "*": "//emojipedia.org/search/?q=\u0002\u0001613",
+ "cons": "http://emojicons.com/tag/\u0002\u00010",
+ "pedia": "http://emojipedia.org/?s=\u0002\u000150"
+ },
+ "neyge": "//www.emoney.ge/index.php/main/services?search_query=\u0002\u00010"
+ },
+ "p": {
+ "*": "http://www.emp.de/search/\u0002/\u00010",
+ "ik": "http://www.empik.com/szukaj/produkt?q=\u0002\u00019",
+ "ire": "http://www.empireonline.com/search/default.asp?search=\u0002\u00014",
+ "loi": {
+ "*": "//www.jobillico.com/recherche-emploi?skwd=\u0002\u00010",
+ "s": {
+ "*": "//www.jobillico.com/recherche-emploi/0?skwd=\u0002&scty=&icty=0&ipc=0&sil=&sjdpl=&sdl=&imc1=0&imc2=0&flat=0&flng=0&mfil=40&ipg=1&clr=1\u00010",
+ "mtl": "//www.jobillico.com/recherche-emploi?skwd=\u0002&scty=Montr%C3%A9al%2C%20QC&icty=6185&ipc=0&sil=&sjdpl=&sdl=&imc1=0&imc2=0&flat=45.509828&flng=-73.6715&mfil=byCity&ipg=1&clr=1\u00010"
+ }
+ },
+ "regosaqui": "//www.empregosaqui.com.br/?s=\u0002\u00010"
+ },
+ "u": {
+ "*": "http://emulation.gametechwiki.com/index.php?search=\u0002\u00016",
+ "sic": "//www.emusic.com/search/\u0002\u00010"
+ },
+ "y": "http://shop.ebay.com.my/?_nkw=\u0002&_sacat=See-All-Categories\u00010",
+ "ber": "//duckduckgo.com/?q=\u0002+site%3Ahttps%3A%2F%2Fapi.emberjs.com\u00010",
+ "edicine": "http://search.medscape.com/reference-search?newSearchHeader=1&queryText=\u0002\u00010",
+ "erge": "//packages.gentoo.org/packages/search?q=\u0002\u0001159",
+ "ich": "//www.emich.edu/search/?q=\u0002\u00010"
+ },
+ "n": {
+ "c": {
+ "*": "http://www.encyclo.nl/begrip/\u0002\u00010",
+ "y": {
+ "c": {
+ "*": "http://encyc.org/wiki/\u0002\u00010",
+ "lo": {
+ "*": "http://www.encyclo.nl/begrip/\u0002\u00010",
+ "pedia": {
+ "*": "http://en.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "ofmath": "http://www.encyclopediaofmath.org/index.php?title=Special:Search&search=\u0002\u00010"
+ }
+ }
+ },
+ "*": "//translate.google.com/#en/cy/\u0002\u00010"
+ },
+ "om": "http://www.encyclopedia.com/searchresults.aspx?q=\u0002\u00017",
+ "ode": "//www.encodeproject.org/search/?searchTerm=\u0002\u00015",
+ "rypt": "//www.searchencrypt.com/search?eq=\u0002\u00019"
+ },
+ "*": "http://english.stackexchange.com/search?q=\u0002\u000146",
+ "l": {
+ "*": "//www.ebay.nl/sch/items/?_nkw=\u0002\u00019",
+ "t": "http://translate.google.com/#en/lt/\u0002\u00017",
+ "at": "http://latin-dictionary.net/search/english/\u0002\u00010"
+ },
+ "s": {
+ "*": "http://www.ensembl.org/Multi/psychic?q=\u0002\u00010",
+ "l": "http://translate.google.com/#en/sl/\u0002\u00010",
+ "v": "//translate.google.com/#en/sv/\u0002\u000196",
+ "dcl": "http://encore.sdcl.org/iii/encore/search/C__S\u0002__Orightresult__U?lang=eng&suite=def\u00010",
+ "embl": "http://www.ensembl.org/Multi/Search/Results?q=\u0002;site=ensembl\u00013",
+ "tex": "//english.stackexchange.com/search?q=\u0002\u00010"
+ },
+ "ar": "//translate.google.com/#view=home&op=translate&sl=en&tl=ar&text=\u0002\u000140",
+ "bn": "http://www.english-bangla.com/dictionary/\u0002\u00013",
+ "br": "//translate.google.com/#en/pt/\u0002\u000144",
+ "da": "//translate.google.com/#en/da/\u0002\u00010",
+ "de": "//translate.google.com/#en/de/\u0002\u0001121",
+ "el": "http://translate.google.com/#en/el/\u0002\u000116",
+ "es": "http://translate.google.com/#en/es/\u0002\u0001470",
+ "fi": "http://translate.google.com/#en/fi/\u0002\u0001108",
+ "fr": "//translate.google.com/#en/fr/\u0002\u000194",
+ "he": "//translate.google.com/#en/iw/\u0002\u00010",
+ "hu": "http://translate.google.com/#en/hu/\u0002\u000129",
+ "id": "//translate.google.com/translate#en/id/\u0002\u000118",
+ "ig": {
+ "*": "http://enigma.huma-num.fr/index.php?q=1&w=\u0002\u00010",
+ "ma": "http://enigma.huma-num.fr/index.php?q=1&w=\u0002\u00010"
+ },
+ "it": "http://translate.google.com/#en/it/\u0002 \u0001123",
+ "kr": "//translate.google.com/#en/ko/\u0002\u00010",
+ "mu": "http://www.enmu.edu/search?q=\u0002\u00010",
+ "nl": "//translate.google.com/#en/nl/\u0002\u000113",
+ "no": "//translate.google.com/#view=home&op=translate&sl=en&tl=no&text=\u0002\u000115",
+ "oj": "//ojibwe.lib.umn.edu/search?utf8=%E2%9C%93&q=\u0002&commit=Search&type=english\u00010",
+ "pl": "//translate.google.com/#en/pl/\u0002\u0001154",
+ "pt": "http://translate.google.com/#en/pt/\u0002 \u0001277",
+ "ru": "http://translate.google.com/#en/ru/\u0002\u0001293",
+ "th": "//translate.google.com/#en/th/\u0002\u00010",
+ "tr": {
+ "*": "//translate.google.com/#en/tr/\u0002 \u000155",
+ "ez": "http://www.ncbi.nlm.nih.gov/sites/gquery?term=\u0002\u00010",
+ "ance": "//entranceadda.in/?s=\u0002\u00010"
+ },
+ "um": "http://enumquery.com/lookup?e164=\u0002\u00010",
+ "wn": "//en.wikinews.org/w/index.php?search=\u0002\u00010",
+ "2ar": "//translate.google.com/#en/ar/\u0002\u000117",
+ "2da": "//translate.google.com/#en/da/\u0002\u00010",
+ "2de": "//translate.google.com/#view=home&op=translate&sl=en&tl=de&text=\u0002\u000112",
+ "2el": "//translate.google.gr/#en/el/\u0002\u00014",
+ "2fa": "//translate.google.com/#en/fa/\u0002\u00013",
+ "2fr": "//translate.google.com/#en/fr/\u0002\u000194",
+ "2hi": "//translate.google.com/#view=home&op=translate&sl=en&tl=hi&text=\u0002\u00019",
+ "2nl": "//translate.google.com/#en/nl/\u0002\u000113",
+ "2ru": "//translate.google.com/?#view=home&op=translate&sl=en&tl=ru&text=\u0002\u000178",
+ "2tl": "//translate.google.com/#view=home&op=translate&sl=en&tl=tl&text=\u0002\u00013",
+ "2ua": "//translate.google.com/?source=osdd#view=home&op=translate&sl=auto&tl=uk&text=\u0002\u00010",
+ "2zh": "//translate.google.com/#en/zh-CN/\u0002\u00010",
+ "dic": "http://endic.naver.com/search.nhn?sLn=en&isOnlyViewEE=N&query=\u0002\u0001104",
+ "dlessphere": "http://endless-sphere.com/forums/?q \u0002 \u00010",
+ "dole": "http://www.endole.co.uk/search/?search=\u0002\u00010",
+ "ergystar": "http://essearch.energystar.gov/search?query=\u0002&affiliate=www.energystar.gov\u00010",
+ "ews": "//www.eternitynews.com.au/?s=\u0002\u00010",
+ "foc": "http://www.focloir.ie/en/dictionary/ei/\u0002?advSearch=1&q=\u0002&inlanguage=en\u00010",
+ "gadget": "//www.engadget.com/search/?search-terms=\u0002\u00010",
+ "gadin": "//www.engadin.stmoritz.ch/suche/q.\u0002/\u00010",
+ "ges": "http://es.engadget.com/search/?q=\u0002\u00010",
+ "gfor": "//www.englishforums.com/search/\u0002.htm\u00010",
+ "ggramm": "//www.englishgrammar.org/?s=\u0002\u00010",
+ "gineering360": "http://www.globalspec.com/search/all?query=\u0002\u00010",
+ "grish": "http://www.engrish.com/?s=\u0002\u00010",
+ "gtb": "//cse.google.com/cse?cx=partner-pub-3176996020956223:6582549258&q=\u0002&og=_l=partner-generic.3...19628.24-generic..0.0.0.\u00010",
+ "gtips": "http://www.eng-tips.com/search.cfm?q=\u0002&action=search\u00010",
+ "iro": "http://gulasidorna.eniro.se/hitta:\u0002\u000114",
+ "kcwiki": "http://en.kancollewiki.net/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00018",
+ "-sutsis": "http://mw.lojban.org/extensions/ilmentufa/i/en/#sisku/http://mw.lojban.org/extensions/ilmentufa/i/en/#sisku/\u0002\u00010",
+ "tearth": "//www.entertainmentearth.com/s/?query1=\u0002\u00010",
+ "tireweb": "http://entireweb.com/?q=\u0002\u00014",
+ "vatomarkettheme": "//themeforest.net/search?term=\u0002\u00010"
+ },
+ "o": {
+ "l": "http://eol.org/search?q=\u0002&search=Go\u00010",
+ "m": "http://www.encyclopediaofmath.org/index.php?title=Special:Search&search=\u0002\u00010",
+ "*": "http://www.etymonline.com/index.php?search=\u0002\u000173",
+ "p": "http://eune.op.gg/summoner/userName=\u0002\u00010",
+ "r": {
+ "*": "//eu.finalfantasyxiv.com/lodestone/playguide/db/search/?q=\u0002\u00013",
+ "de": "//de.finalfantasyxiv.com/lodestone/playguide/db/search/?q=\u0002\u00010",
+ "fr": "//fr.finalfantasyxiv.com/lodestone/playguide/db/search/?q=\u0002\u00010"
+ },
+ "s": "//www.eosdigitaal.nl/forum/search.php?keywords=\u0002&terms=all&author=&sc=1&sf=all&sk=t&sd=d&sr=posts&st=0&ch=300&t=0&submit=Zoeken\u00010",
+ "w": "http://eowp.alc.co.jp/search?q=\u0002\u00015",
+ "en": "//translate.google.com/#eo/en/\u0002\u00010",
+ "2en": "//glosbe.com/eo/en/\u0002\u00010",
+ "earth": "http://www.eoearth.org/results/all/?searchnext=true&q=\u0002\u00010"
+ },
+ "p": {
+ "a": "http://nlquery.epa.gov/epasearch/epasearch?querytext=\u0002&fld=&areaname=&typeofsearch=epa&areacontacts=http%3A%2F%2Fwww.epa.gov%2Fepahome%2Fcomments.htm&areasearchurl=&result_template=epafiles_default.xsl&filter=sample4filt.hts&x=0&y=0\u00010",
+ "d": "//www.episodate.com/search?q=\u0002\u00010",
+ "*": "//everipedia.org/wiki/\u0002\u00017",
+ "g": "//duckduckgo.com/?q=site%3Aepguides.com+\u0002\u00013",
+ "h": "http://shop.ebay.ph/?_nkw=\u0002&_sacat=See-All-Categories\u00010",
+ "l": {
+ "*": "http://shop.ebay.pl/?_nkw=\u0002&_sacat=See-All-Categories\u00013",
+ "ibrary": "http://ccs.polarislibrary.com/polaris/search/searchresults.aspx?ctx=19.1033.0.0.2&type=Keyword&term=\u0002&by=KW&sort=PD&limit=TOM=*&query=&page=0&searchid=1\u00010"
+ },
+ "w": {
+ "*": "http://www.episodeworld.com/search/?searchitem=\u0002\u00010",
+ "in": "http://www.epw.in/search/site/\u0002\u00010"
+ },
+ "fl": {
+ "*": "http://search.epfl.ch/web.action?q=\u0002\u00018",
+ "p": "http://plan.epfl.ch/?room=\u0002\u00010",
+ "bib": "//beast-epfl.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&tab=default_tab&search_scope=default_scope&vid=EPFL&lang=en_US&offset=0\u00010",
+ "book": "//beast-epfl.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&tab=default_tab&search_scope=default_scope&vid=EPFL&lang=fr_FR&offset=0&fn=search\u00010",
+ "dir": "//search.epfl.ch/psearch.action?q=\u0002&f=directory&lang=en&pageSize=10&sort=\u00018"
+ },
+ "ic": {
+ "*": "//www.epicgames.com/bing-search?keyword=\u0002\u000185",
+ "g": "//galaxy.epic.com/?#Search/version=8200&searchWord=\u0002&lastUpdate=\u00010",
+ "mafia": "http://wiki.epicmafia.com/index.php?title=Special%3ASearch&search=\u0002\u00010",
+ "urious": "http://www.epicurious.com/tools/searchresults?search=\u0002&x=0&y=0\u00010"
+ },
+ "mc": "http://europepmc.org/search?query=\u0002\u00010",
+ "pl": "//elpasopl.ent.sirsi.net/client/en_US/default/search/results?ln=en_US&q=\u0002\u00010",
+ "sg": "http://spatialreference.org/ref/?search=epsg:\u0002\u00010",
+ "och": "//www.unixtimeconverter.io//\u0002\u00016",
+ "oreg": "//register.epo.org/smartSearch?searchMode=smart&query=\u0002\u00010",
+ "riceit": "http://www.eprice.it/search/qs=\u0002&mets=\u0002\u00010"
+ },
+ "r": {
+ "*": "//www.erowid.org/search.php?q=\u0002\u000131",
+ "f": "http://www.erf.de/?node=1097&page=1&NAV_CatSelect=0&NAV_MetaSuchtext=\u0002\u00010",
+ "l": {
+ "*": "http://erlang.org/doc/search/?q=\u0002\u00010",
+ "m": "http://erlang.org/doc/man/\u0002.html\u00010",
+ "ang": "//duckduckgo.com/?q=site%3Aerlang.org+\u0002\u00016"
+ },
+ "ic": "//eric.ed.gov/?q=\u0002\u00010",
+ "oexp": "//www.erowid.org/experiences/exp.cgi?S1=0&S2=-1&C1=-1&Str=\u0002\u00010",
+ "owid": "//www.erowid.org/search.php?q=\u0002\u000131",
+ "ste": "//www.daserste.de/search/index.jsp?searchText=\u0002\u00010"
+ },
+ "s": {
+ "1": "//www.ethnicsmart.com/catalogsearch/result/?q=\u0002\u00010",
+ "*": "//duckduckgo.com/?q=\u0002&kl=xl-es&kad=es_ES&ia=about\u000120",
+ "g": "http://shop.ebay.com.sg/?_nkw=\u0002&_sacat=See-All-Categories\u00010",
+ "h": {
+ "*": "//explainshell.com/explain?cmd=\u0002\u00010",
+ "u": "//translate.google.hu/#es/hu/\u0002\u00010",
+ "ell": "//explainshell.com/explain?cmd=\u0002\u00010",
+ "opuk": "//www.nintendo.co.uk/Search/Search-299117.html?q=\u0002\u00019"
+ },
+ "o": {
+ "*": "http://esolangs.org/w/index.php?search=\u0002&title=Special%3ASearch\u00014",
+ "lang": "http://esolangs.org/w/index.php?search=\u0002\u000112",
+ "talk": "//esotalk.net/#search:\u0002\u00010"
+ },
+ "t": {
+ "*": "http://emacs.stackexchange.com/search?q=\u0002\u00010",
+ "adao": "//busca.estadao.com.br/?q=\u0002\u00010",
+ "antevirtual": "//www.estantevirtual.com.br/busca?utf8=✓&type=q&new=&q=\u0002\u00010",
+ "raviz": "//estraviz.org/\u0002\u00015"
+ },
+ "v": {
+ "*": "http://www.esvbible.org/search/?q=\u0002\u000184",
+ "online": "http://www.esvonline.org/search/\u0002/\u00010"
+ },
+ "de": {
+ "f": "http://www.wordreference.com/definicion/\u0002\u000121",
+ "*": "//translate.google.de/#view=home&op=translate&sl=es&tl=de&text=\u0002\u00010"
+ },
+ "ea": "http://play.esea.net/index.php?s=search&query=\u0002\u00010",
+ "en": "http://translate.google.com/#es/en/\u0002\u0001204",
+ "et": "http://support.eset.com/search/?search=\u0002\u00010",
+ "fr": "http://translate.google.com/#es/fr/\u0002\u00010",
+ "it": "http://translate.google.com/#es/it/\u0002\u00014",
+ "k8": "//www.electric-skateboard.builders/search?q=\u0002\u00010",
+ "pn": "http://www.espn.com/search/results?q=\u0002\u0001224",
+ "pt": "//translate.google.com/#es/pt/\u0002\u00015",
+ "rb": "http://www.esrb.org/ratings/search.jsp?titleOrPublisher=\u0002\u00014",
+ "se": {
+ "*": "//physics.stackexchange.com/search?q=\u0002\u00010",
+ "fn": "http://www.essef.be/ndl/cataloog/index.search.asp?zoek=\u0002\u00010",
+ "ffr": "http://www.essef.be/fr/cataloog/index.search.asp?zoek=\u0002 \u00010"
+ },
+ "cape": "http://rsagames.com/?s=\u0002\u00010",
+ "doc": "//doc.esdoc.org/-/search.html?keyword=\u0002\u00010",
+ "lexicon": "http://lexicoon.org/es/\u0002\u00010",
+ "lint": "http://eslint.org/docs/rules/\u0002\u000115",
+ "pacenet": "//worldwide.espacenet.com/searchResults?ST=singleline&query=\u0002&Submit=Search\u00013",
+ "pcod": "http://cod.esportspedia.com/w/index.php?search=\u0002\u00010",
+ "phalo": "http://halo.esportspedia.com/w/index.php?search=\u0002\u00010",
+ "plol": "http://lol.esportspedia.com/w/index.php?search=\u0002\u00010",
+ "psmite": "http://smite.esportspedia.com/w/index.php?search=\u0002\u00010",
+ "sin": "http://www.wordreference.com/sinonimos/\u0002\u00013"
+ },
+ "t": {
+ "c": "//www.etcconnect.com/Search.aspx?q=\u0002\u00010",
+ "*": "http://www.eltiempo.es/buscar?q=\u0002\u000121",
+ "g": "http://enterthegungeon.gamepedia.com/index.php?search=\u0002\u000113",
+ "h": {
+ "*": "//etherscan.io/search?q=\u0002\u000147",
+ "l": "//search.library.ethz.ch/primo-explore/search?query=any,contains,\u0002&tab=default_tab&search_scope=default_scope&vid=DADS&lang=en_US&offset=0\u00010",
+ "z": "//www.ethz.ch/en/utils/search.html?search=\u0002\u00010",
+ "erscan": "//etherscan.io/search?q=\u0002\u000147",
+ "nologue": "http://www.ethnologue.com/search?keys=\u0002\u00010",
+ "rev": "//ethicalrevolution.co.uk/?s=\u0002\u00010"
+ },
+ "w": "http://www.eattheweeds.com/?s=\u0002\u00010",
+ "y": {
+ "m": {
+ "*": "//www.etymonline.com/search?q=\u0002\u0001407",
+ "o": {
+ "*": "http://www.etymonline.com/index.php?term=\u0002\u000119",
+ "logy": "http://www.etymonline.com/index.php?search=\u0002&searchmode=none\u000174",
+ "nline": "//www.etymonline.com/search?q=\u0002\u0001407"
+ }
+ },
+ "*": "http://www.etymonline.com/index.php?allowed_in_frame=0&search=\u0002&searchmode=none\u0001110",
+ "nl": "http://etymologiebank.nl/trefwoord/\u0002\u00013"
+ },
+ "de": "//de.excel-translator.de/\u0002/\u00010",
+ "en": "//en.excel-translator.de/\u0002/\u00017",
+ "sy": "//www.etsy.com/search?q=\u0002\u0001482",
+ "bm.ro": "http://www.etbm.ro/search?Q=\u0002 \u00010",
+ "ernalwarcry": "//eternalwarcry.com/cards?Query=\u0002\u00010",
+ "ernity": "http://eternity.youfailit.net/index.php?title=Special%3ASearch&search=\u0002\u00014",
+ "f2l": "http://etf2l.org/search/\u0002/\u00010",
+ "imo": "http://etimo.it/?term=\u0002\u00010",
+ "net": "http://etnet.com.hk/?q=\u0002\u00010",
+ "ools": "//www.etools.ch/searchSubmit.do?query=\u0002\u000113",
+ "rans": "http://www.tritrans.net/cgibin/translate.cgi?spraak=Engelsk&Fra=\u0002\u00010",
+ "ree": "http://archive.org/search.php?query=\u0002%20AND%20collection%3Aetree\u00010"
+ },
+ "u": {
+ "3": "http://www.eu3wiki.com/index.php?title=Special%3ASearch&search=\u0002\u00010",
+ "4": {
+ "*": "//eu4.paradoxwikis.com/index.php?search=\u0002\u000155",
+ "wiki": "//eu4.paradoxwikis.com/index.php?search=\u0002\u000155"
+ },
+ "*": "//europa.eu/search/?QueryText=\u0002\u00016",
+ "k": {
+ "*": "//www.ebay.co.uk/sch/items/?_nkw=\u0002\u0001750",
+ "eries": "//www.eukeries.com/?s=\u0002\u00010"
+ },
+ "p": "http://edinboro.edu/search/search.html?keyword=\u0002\u00010",
+ "t": "//www.essen-und-trinken.de/suche#site=eut&category=Rezept&query=\u0002&page=1&sorting=relevance\u00010",
+ "r2brl": "//www.xe.com/currencyconverter/convert/?Amount=\u0002&From=EUR&To=BRL\u00010",
+ "r2cny": "//www.xe.com/currencyconverter/convert/?From=EUR&To=CNY&Amount=\u0002\u00010",
+ "r2usd": "http://www.xe.com/currencyconverter/convert/?From=EUR&To=USD&Amount=\u0002\u000111",
+ "rlex": "http://eur-lex.europa.eu/search.html?text=\u0002&scope=EURLEX&type=quick\u00013",
+ "robuch": "http://www.eurobuch.com/buch/isbn/3838758854.html?author=&coverState=&doAbeDe=1&doAchtungBuecher=1&doAko=1&doAlibris=1&doAmazon=1&doAmazonCa=1&doAmazonCom=1&doAmazonEs=1&doAmazonFr=1&doAmazonIt=1&doAmazonUk=1&doAudibile=1&doAudiobooks=1&doAum=1&doBUCH=1&doBUCHCH=1&doBbBuch=1&doBetterworld=1&doBiblio=1&doBlackwell=1&doBn=1&doBoeken=1&doBolCom=1&doBookdepository=1&doBooklooker=1&doBruna=1&doBuch24=1&doBuchfreund=1&doBuchmarie=1&doBuecherDe=1&doCasaDelLibro=1&doCiando=1&doEBS=1&doEBay=1&doEBooknl=1&doEbooks=1&doEbookscom=1&doEci=1&doElsevier=1&doFnac=1&doFoyles=1&doGoogle=1&doHive=1&doHoepli=1&doIbs=1&doImosver=1&doIndigo=1&doJokers=1&doKobo=1&doLaFeltrinelli=1&doLehmanns=1&doLibri=1&doLibriEB=1&doLibroco=1&doLuisterboeken=1&doMedimops=1&doMondadori=1&doMusicroom=1&doNotenbuch=1&doOnderwijsboek=1&doProlibri=1&doProxis=1&doRegalfrei=1&doRheinberg=1&doScholastic=1&doStudystore=1&doThaliaAt=1&doThaliaCh=1&doThaliaDe=1&doThriftbooks=1&doVoordeelboekenonline=1&doWaterstones=1&doWebster=1&doZVAB=1&fromDateDays=7&isbn=&land=&maxJahr=&maxPrice=&mediatype=0&minJahr=&minPrice=&noBids=0&noReprint=0&pageLen=20&proSearch=&professionalState=&publisher=&search=\u0002&search_submit=suchen&sisbn=&title=&updatePresets=1&updateProState=1&usedState=\u00010",
+ "rogamer": "http://www.eurogamer.net/search.php?q=\u0002\u00010",
+ "ro-industry": "//euro-industry.com/main.php?index=search&search=\u0002\u00010",
+ "ronewsen": "http://www.euronews.com/search?query=\u0002\u00010",
+ "ronics": "//www.euronics.de/search/?sSearch=\u0002&log=search\u00010",
+ "roparl": "http://www.europarl.europa.eu/portal/en/search?q=\u0002\u00010",
+ "ropeana": "http://europeana.eu/portal/search.html?query=\u0002\u00010",
+ "ropepmc": "http://europepmc.org/search?query=\u0002\u00010",
+ "w.op": "http://euw.op.gg/summoner/userName=\u0002\u000125"
+ },
+ "v": {
+ "e": {
+ "c": {
+ "*": "//eve-central.com/home/typesearch.html?search=\u0002\u00010",
+ "entral": "//eve-central.com/home/typesearch.html?search=\u0002\u00010"
+ },
+ "*": "http://wiki.eveonline.com/en/wiki/Special:Search/\u0002 \u00013",
+ "r": {
+ "*": "//everipedia.org/wiki/\u0002\u00017",
+ "i": {
+ "*": "//everipedia.org/wiki/\u0002\u00017",
+ "pedia": "//everipedia.org/wiki/\u0002/\u00010"
+ },
+ "note": "//www.evernote.com/Home.action#x=\u0002\u000122",
+ "yclick": "http://www.everyclick.com/search?keyword=\u0002&filterType=&sortType=&searchArea=web&sbtn=\u00010",
+ "yeye": "http://www.everyeye.it/ricerca/?q=\u0002\u00010",
+ "ymac": "http://www.everymac.com/ultimate-mac-lookup/?search_keywords=\u0002\u00015"
+ },
+ "u": {
+ "*": "http://wiki.eveuniversity.org/w/index.php?title=Special%3ASearch&search=\u0002\u00010",
+ "ni": "http://wiki.eveuniversity.org/index.php?title=Special%3ASearch&search=\u0002\u00010"
+ },
+ "market": "//eve-marketdata.com/price_check.php?type_name_header=\u0002\u00010",
+ "ningstandard": "http://www.standard.co.uk/search/site/\u0002 \u00010",
+ "ntid": "http://eventid.net/display.asp?eventid=\u0002&source=\u00010",
+ "ntim": "http://www.eventim.de/Tickets.html?affiliate=TUG&fun=search&fuzzy=yes&doc=search&action=grouped&inline=false&suchbegriff=\u0002&btn=true&x10=4\u00010",
+ "ntful": "http://eventful.com/events?ga_type=events&ga_search=\u0002&q=\u0002\u00010",
+ "search": "http://eve-search.com/search/\u0002\u00010",
+ "sta": "http://www.evesta.jp/lyric/search2.php?ct=1&go=%E6%A4%9C%E7%B4%A2&a=&ca=0&l=&cl=0&k=&t=\u0002 \u00010"
+ },
+ "*": "//cse.google.com/cse?cx=008464549922976904202:3wy4ipwvlno&q=\u0002&oq=\u0002&gs_l=partner-generic.3...27208.27522.3.27758.3.3.0.0.0.0.67.174.3.3.0.gsnos%2Cn%3D13...0.1844j1376214j6j1...1.34.partner-generic..3.2.102.qiNHoIwD47w\u00010",
+ "o": "http://www.eauxvives.org/forum/search.php?keywords=\u0002\u00010",
+ "s": "http://eki.ee/dict/evs/index.cgi?Q=\u0002\u00010",
+ "iq": "//www.eviq.org.au/search?searchtext=\u0002\u00010",
+ "afing": "//eva.fing.edu.uy/course/search.php?search=\u0002\u00010",
+ "ans": "http://www.evanscycles.com/search?query=\u0002&x=0&y=0\u00010",
+ "awk": "//wiki.evageeks.org/Special:Search?search=\u0002\u00010",
+ "illecom": "http://www.e-ville.com/fi/q/\u0002\u00010",
+ "irt": {
+ "*": "http://www.estantevirtual.com.br/qt/\u0002\u00010",
+ "at": "http://www.estantevirtual.com.br/q/\u0002\u00010",
+ "au": "http://www.estantevirtual.com.br/qau/\u0002\u00010",
+ "ed": "http://www.estantevirtual.com.br/qed/\u0002\u00010",
+ "des": "http://www.estantevirtual.com.br/qdes/\u0002\u00010",
+ "tit": "http://www.estantevirtual.com.br/qtit/\u0002\u00010"
+ },
+ "ren": "//www.evrenbilim.com/?s=\u0002\u00010",
+ "reward": "http://evreward.com/store/find?store[name]=\u0002\u00010"
+ },
+ "w": {
+ "c": "//eternalwarcry.com/cards?query=\u0002\u00010",
+ "*": "//duckduckgo.com/?q=site%3Aew.com+\u0002\u000112"
+ },
+ "x": {
+ "a": {
+ "*": "//www.exasoft.cz/default.asp?cls=stoitems&stifulltext_search=and&fulltext=\u0002\u00010",
+ "led": "http://www.3ds.com/search/?q=\u0002 \u00010",
+ "lead": "http://www.exalead.com/search/web/results/?q=\u0002\u00010",
+ "mine": "http://examine.com/search.php?q=\u0002\u00016",
+ "stris": "http://www.ex-astris-scientia.org/search/search.cgi?Terms=\u0002:\u00010"
+ },
+ "c": "http://www.exclusiveclue.com/?term=\u0002\u00010",
+ "*": "//examine.com/search/?q=\u0002\u000117",
+ "p": {
+ "*": "http://irfantoor.com/exploits?s=\u0002\u00010",
+ "o": {
+ "*": "//docs.expo.io/versions/latest/sdk/\u0002\u00013",
+ "rt": "//www.weltexporte.de/?s=\u0002\u00010"
+ },
+ "edia": "http://search.expedia.com/socialsearch/query?st=1&cn=expedia&cc=www&q=\u0002\u000110",
+ "ert": "//www.expert.nl/catalogsearch/result/?q=\u0002\u00010",
+ "ired": "//www.expireddomains.net/domain-name-search/?searchinit=1&q=\u0002 \u00010",
+ "lara": "//www.explara.com/search/\u0002\u00010",
+ "lainshell": "//explainshell.com/explain?cmd=\u0002\u00010",
+ "lainxkcd": "http://www.explainxkcd.com/wiki/index.php?search=\u0002\u000136",
+ "loitdb": "//www.exploit-db.com/search?q=\u0002\u000110",
+ "lorecourses": "http://explorecourses.stanford.edu/search?q=\u0002\u000123",
+ "ressio": "http://www.expressio.fr/search.php?q=\u0002&lang=\u00010",
+ "xkcd": "http://www.explainxkcd.com/wiki/index.php?search=\u0002&go=Go&title=Special%3ASearch\u00010"
+ },
+ "t": {
+ "*": "http://filext.com/file-extension/\u0002\u00018",
+ "ra": "http://www.extrastores.com/en-sa/search?q=\u0002\u00010"
+ },
+ "ex": "http://www.experts-exchange.com/searchResults.jsp?searchTerms=\u0002&searchType=10\u00010",
+ "istgo": "//exist.ua/price.aspx?pcode=\u0002&sortType=\u00010",
+ "ite": "http://msxml.excite.com/search/web?q=\u0002 \u00010",
+ "kcd": "http://www.explainxkcd.com/wiki/index.php?search=\u0002&title=Special%3ASearch\u000174",
+ "libris": "//www.exlibris.ch/de/suche/?q=\u0002\u00013",
+ "mojo": "//www.expressmojo.com/search/?q=\u0002\u00010",
+ "odus": "//reports.exodus-privacy.eu.org/reports/search/\u0002\u00017"
+ },
+ "5p": "//www.everything5pounds.com/en/search/?q=%3AbestSeller&text=\u0002\u00010",
+ "af": "//duckduckgo.com/?q=site%3Ahttp%3A%2F%2Feffective-altruism.com+\u0002\u00010",
+ "an": "http://www.ean-search.org/perl/ean-search.pl?q=\u0002\u00016",
+ "at": {
+ "*": "//www.ebay.at/sch/items/?_nkw=\u0002\u00015",
+ "bydate": "http://eatbydate.com/search/?q=\u0002\u00010",
+ "erlon": "//london.eater.com/search?q=\u0002\u00010",
+ "tender": "http://eattender.com/recipes/search?q=\u0002\u00010",
+ "this": "//www.eat-this.org/?s=\u0002\u00010"
+ },
+ "au": "//www.ebay.com.au/sch/items/?_nkw=\u0002\u000177",
+ "-c": "//www.e-chords.com/search-all/\u0002\u00010",
+ "ff": "//www.eff.org/search/site/\u0002\u00013",
+ "fr": "//www.ebay.fr/sch/items/?_nkw=\u0002\u000169",
+ "ft": "//escapefromtarkov.gamepedia.com/\u0002\u000132",
+ "lb": {
+ "*": "http://www.bibleserver.com/text/ELB/\u0002\u00010",
+ "aul": "http://elbauldelprogramador.com/?s=\u0002\u00010"
+ },
+ "le": {
+ "*": "//electronjs.org/search?q=\u0002\u00010",
+ "n": "http://translate.google.com/#el/en/\u0002\u00014",
+ "y": "http://eleymcqueen.blogspot.in/search?q=\u0002\u00010",
+ "ctron": "//electron.atom.io/apps/?q=\u0002\u00014",
+ "venr": "//eleven.rijitsu.com/?s=\u0002\u00010"
+ },
+ "lf": {
+ "a": "//www.elfa.se/elfa3~se_sv/elfa/init.do?sq=\u0002\u00010",
+ "*": "http://eshop.elfetex.cz/fulltext_search/1?query=\u0002\u00010",
+ "ster": "//www.elfster.com/shop/search/?q=\u0002\u00010"
+ },
+ "ll": {
+ "*": "//ell.stackexchange.com/search?q=\u0002\u00010",
+ "o": {
+ "*": "//ello.co/search?terms=\u0002 \u00010",
+ "s": "//www.ellos.se/search?SearchTerm=\u0002\u00010"
+ },
+ "iottwave": "//elliottwaveideas.com/search.php?query=\u0002\u00010"
+ },
+ "lm": {
+ "*": "http://klaftertief.github.io/elm-search/?q=\u0002\u00019",
+ "undo": "http://ariadna.elmundo.es/buscador/archivo.html?q=\u0002&b_avanzada=\u00010"
+ },
+ "lw": "//el.wikipedia.org/w/index.php?search=\u0002&title=%CE%95%CE%B9%CE%B4%CE%B9%CE%BA%CF%8C%3A%CE%91%CE%BD%CE%B1%CE%B6%CE%AE%CF%84%CE%B7%CF%83%CE%B7&go=%CE%9C%CE%B5%CF%84%CE%AC%CE%B2%CE%B1%CF%83%CE%B7\u00010",
+ "lx": "//evelexicon.com/term/\u0002\u00010",
+ "q2": "http://eq2.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "qd": "http://www.google.com/cse?cx=partner-pub-6285692791338183%3A7732117278&ie=UTF-8&q=\u0002\u00019",
+ "qr": "http://eqresource.com/search.php?cx=partner-pub-8686271290388928%3Atjkxdymxk9a&cof=FORID%3A9&ie=ISO-8859-1&q=\u0002&sa=Search\u00010",
+ "yb": "//www.eatyourbooks.com/bookshelf?q=\u0002\u00010",
+ "zt": "//docops.ca.com/ca-easytrieve/11-6/en/search?q=\u0002&max=10&key=CAET116\u00010",
+ "926": "http://e926.net/post/search?tags=\u0002\u000110",
+ "arth": {
+ "*": "//earth.google.com/web/search/\u0002\u000179",
+ "911": "http://search.earth911.com/?what=\u0002\u00010",
+ "bound": "http://earthbound.wikia.com/wiki/Special:Search?search=\u0002\u000114",
+ "cam": "http://www.earthcam.com/?q=\u0002 \u00010"
+ },
+ "arpod": "//www.earpod.co/search?q=\u0002\u00010",
+ "astbay": "http://www.eastbay.com/_-_/keyword-\u0002\u00010",
+ "asybi": {
+ "b": "http://www.easybib.com/cite/eval?url=\u0002\u00010",
+ "*": "http://easy-bi.org/blog/?s=\u0002\u00010"
+ },
+ "asymerchant": "//www.easymerchant.co.uk/?product_cat=&s=\u0002&post_type=product\u00010",
+ ".at": "//www.ebay.at/sch/i.html?_nkw=\u0002\u00010",
+ ".au": "//www.ebay.com.au/sch/?_nkw=\u0002&_sacat=0\u00010",
+ ".de": "http://www.ebay.de/sch/i.html?_nkw=\u0002\u00019",
+ ".uk": "http://www.ebay.co.uk/sch/i.html?_nkw=\u0002\u000130",
+ "-words": "http://e-words.jp/?cx=partner-pub-1175263777233757%3Axelkt7-c6j8&cof=FORID%3A10&ie=Shift_JIS&q=\u0002&sa=%88%EA%92v%82%B7%82%E9%97p%8C%EA%82%F0%95%5C%8E%A6&siteurl=e-words.jp%2F&ref=e-words.jp%2Fw%2FE382B9E3839AE383BCE382B9.html&ss=1193j290715j7\u00010",
+ "l19": "//www.el19digital.com/busqueda/articulos?q=\u0002\u00010",
+ "lastic": "//www.elastic.co/search?q=\u0002&section=Learn%2FDocs%2F\u00016",
+ "lcomercio": {
+ "*": "//elcomercio.pe/buscar/?query=\u0002\u00010",
+ "pe": "//elcomercio.pe/buscar/?query=\u0002\u00010"
+ },
+ "lconjugador": "http://www.elconjugador.com/conjugaison/verbe/espagnol/\u0002.html\u00010",
+ "lderwiki": "http://elderscrolls.wikia.com/wiki/index.php?search=\u0002&fulltext=Search\u000124",
+ "ldict": "http://www.greek-language.gr/greekLang/modern_greek/tools/lexica/triantafyllides/search.html?lq=%22\u0002%22\u00010",
+ "lgiganten": "//www.elgiganten.se/search?SearchTerm=\u0002\u00010",
+ "lgoog": "http://elgoog.im/search/?q=\u0002\u00010",
+ "lheneu": "http://hiztegiak.elhuyar.eus/en_eu/\u0002\u00010",
+ "lheseu": "http://hiztegiak.elhuyar.eus/es_eu/\u0002\u00013",
+ "lheuen": "http://hiztegiak.elhuyar.eus/eu_en/\u0002\u00010",
+ "lheues": "http://hiztegiak.elhuyar.eus/eu_es/\u0002\u00010",
+ "lheufr": "http://hiztegiak.elhuyar.eus/eu_fr/\u0002\u00010",
+ "lhfreu": "http://hiztegiak.elhuyar.eus/fr_eu/\u0002\u00010",
+ "lhuyar": "http://hiztegiak.elhuyar.org/es_eu/\u0002\u00010",
+ "li5": "//www.reddit.com/r/explainlikeimfive/search?q=\u0002&restrict_sr=on&sort=relevance&t=all\u000112",
+ "lix": {
+ "*": "//www.elix-lsf.fr/spip.php?page=recherche_definitions&recherche=\u0002&lang=fr\u00010",
+ "ir": {
+ "*": "//hexdocs.pm/elixir/search.html?q=\u0002\u000132",
+ "-docs": "//duckduckgo.com/?q=site%3Aelixir-lang.org%2Fdocs+\u0002\u00010",
+ "forum": "//elixirforum.com/search?q=\u0002\u00010"
+ }
+ },
+ "lite": {
+ "*": "//www.eliteprospects.com/search/player?q=\u0002\u000110",
+ "pr": {
+ "*": "//www.eliteprospects.com/search/player?q=\u0002\u000110",
+ "ospects": "//www.eliteprospects.com/search/team?q=\u0002\u00010"
+ }
+ },
+ "linux": "http://elinux.org/index.php?search=\u0002\u00010",
+ "lobs": "http://www.elobservador.com.uy/\u0002-s\u00010",
+ "loquii": "http://www.eloquii.com/on/demandware.store/Sites-eloquii-Site/default/Search-Show?q= \u0002\u00010",
+ "lotrolado": "http://www.elotrolado.net/search.php?keywords=\u0002&type=h\u00010",
+ "lpais": "http://elpais.com/buscador/?qt=\u0002\u000139",
+ "lreg": "http://search.theregister.co.uk/?q=\u0002\u00010",
+ "luta": "http://www.eluta.ca/search?q=\u0002\u00010",
+ "luniverso": "//www.eluniverso.com/resultados?search=\u0002\u00010",
+ "quo": "//packages.sabayon.org/quicksearch?q=\u0002\u00010",
+ "qualdex": "http://equaldex.com/search?q=\u0002\u00010",
+ "questriadaily": "http://duckduckgo.com/?q=site:equestriadaily.com+\u0002\u00010",
+ "quipboard": "http://equipboard.com/search?search_term=\u0002\u00013",
+ "yeem": "//www.eyeem.com/search?q=\u0002&sort=relevance\u00010",
+ "zine": "http://ezinearticles.com/search/?q=\u0002\u00010",
+ "zydvd": "http://www.ezydvd.com.au/search?q=\u0002&t=all\u00010"
+ },
+ "f": {
+ "1": "http://www.f1zone.net/news/index.php?s=\u0002\u00019",
+ "3": {
+ "*": "http://www.france3.fr/recherche?s=\u0002\u00013",
+ "nm": "//www.nexusmods.com/fallout3/search/?gsearch=\u0002&gsearchtype=mods\u00010"
+ },
+ "6": {
+ "4": "//www.f64.ro/\u0002\u00010",
+ "*": "//fordsix.com/search.php?keywords=\u0002\u00010"
+ },
+ "a": {
+ "b": {
+ "*": "http://fab.com/search/?q=\u0002&ref=ddb\u00010",
+ "ienm": "http://www.fabienm.eu/wordpress/?s=\u0002\u00010",
+ "ric": "//www.fabric.com/SearchResults2.aspx?SearchText=\u0002\u00010"
+ },
+ "d": "//addons.mozilla.org/en-US/firefox/search/?q=\u0002\u000137",
+ "f": {
+ "f": "http://www.filmaffinity.com/es/search.php?stext=\u0002 &stype=all\u00019",
+ "*": "http://www.filmaffinity.com/es/advsearch2.php?cx=008177178803676006601%3A6zmc6j5pngs&cof=FORID%3A9&ie=ISO-8859-1&q=\u0002:\u00010"
+ },
+ "*": "http://www.filmaffinity.com/es/search.php?stext=\u0002&stype=all\u0001303",
+ "s": {
+ "*": "//fontawesome.com/icons?d=gallery&q=\u0002\u00010",
+ "s": {
+ "*": "//www.fass.se/m/sok/\u0002/public\u00010",
+ "v": "//www.fass.se/LIF/result?userType=0&query=\u0002\u00010"
+ },
+ "hionmodeldirectory": "http://www.fashionmodeldirectory.com/search/?q=\u0002\u00010",
+ "tai": "//forums.fast.ai/search?q=\u0002\u00010",
+ "tmail": "//www.fastmail.com/help/search/?q=\u0002\u00013",
+ "tube": "http://fastu.be/\u0002\u00010"
+ },
+ "w": "http://flightaware.com/live/flight/\u0002\u000130",
+ "z": "http://www.faz.net/suche/?query=\u0002\u00017",
+ "ir": {
+ "*": "//fair.org/?s=\u0002\u00010",
+ "mondo": "//www.fairmondo.de/articles?article_search_form[q]=\u0002\u00010",
+ "tragen": "//www.fairtragen.de/advanced_search_result.php?keywords=\u0002\u00010"
+ },
+ "ke": {
+ "*": "//www.fakespot.com/analyze?url=\u0002\u000121",
+ "spot": "//www.fakespot.com/analyze?url=\u0002\u000121"
+ },
+ "rk": "//www.fark.com/hlsearch?&qq=\u0002\u00013",
+ "rr": "//www.farrvintners.com/winelist.php?keywords=\u0002\u00010",
+ "tv": "//fanart.tv/?sect=all&s=\u0002\u000110",
+ "2en": "//translate.google.com/#fa/en/\u0002\u00010",
+ "ces": "//www.google.com/search?tbm=isch&tbs=itp:face&q=\u0002\u000115",
+ "cebook": "http://www.facebook.com/s.php?q=\u0002\u0001760",
+ "cephoto": "//www.google.com/search?q=%22\u0002%22&tbm=isch&tbs=ic:color,isz:lt,itp:face,isg:to&filter=0&safe=off&pws=0&tbs=rl:0\u00013",
+ "cepunch": "//forum.facepunch.com/search/?q=\u0002\u00010",
+ "ctly": "//factly.in/?s=\u0002\u00010",
+ "ctor": {
+ "*": "http://factornumber.com/?page=\u0002;\u00010",
+ "io": {
+ "*": "//wiki.factorio.com/index.php?search=\u0002&title=Special%3ASearch&go=Go\u000120",
+ "mods": "//mods.factorio.com/query/\u0002\u00010"
+ }
+ },
+ "ctbites": "http://www.factbites.com/topics/\u0002\u00010",
+ "hrschule": "http://www.fahrschule-berne.de/component/search/?searchword=\u0002\u00010",
+ "icon": "//fontawesome.com/icons?d=gallery&q=\u0002\u00010",
+ "illiet": "//www.faillissementen.com/insolventies/nederlandse-insolventies/?q=\u0002\u00010",
+ "llenlondon": "http://fallenlondon.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u000112",
+ "llout": {
+ "*": "http://fallout.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u000121",
+ "lore": "//fallout.gamepedia.com/index.php?search=\u0002\u00010"
+ },
+ "nart": {
+ "*": "//fanart.tv/?sect=all&s=\u0002\u000110",
+ "m": "//fanart.tv/?s=\u0002&sect=2\u00010"
+ },
+ "nch": "http://www.qth.fr/?s=\u0002\u00010",
+ "ncy": {
+ "*": "http://www.thefancy.com/search?q=\u0002 \u00010",
+ "that": "//www.shopfancythat.com/search?q=\u0002\u00010"
+ },
+ "ncade": "http://www.fancade.com/search/?q=\u0002\u00010",
+ "ndom": "//www.fandom.com/?s=\u0002\u000136",
+ "ndango": "http://www.fandango.com/search/?q=\u0002\u00018",
+ "nfiction": "//www.fanfiction.net/search/?keywords=\u0002\u00010",
+ "ngamer": "//www.fangamer.com/search?type=product&q=*\u0002*\u00014",
+ "ngraphs": "http://www.fangraphs.com/players.aspx?lastname=\u0002\u00010",
+ "nlore": "//fanlore.org/w/index.php?search=\u0002\u00015",
+ "npop": "http://www.fanpop.com/search?query=\u0002\u00010",
+ "nsale": "//www.fansale.de/fansale/events.htm?searchText=\u0002\u00010",
+ "ntagraphics": "http://www.fantagraphics.com/index.php?keyword=\u0002\u00010",
+ "ntasy": {
+ "*": "http://www.fantasy.fr/searches/index/\u0002 \u00010",
+ "life": "http://fantasy-life.wikia.com/wiki/\u0002\u00010"
+ },
+ "ntlab": "//fantlab.ru/searchmain?searchstr=\u0002\u00010",
+ "rit": "http://it.farnell.com/webapp/wcs/stores/servlet/Search?catalogId=15001&langId=-4&storeId=10165&categoryName=Tutte le categorie&selectedCategoryId=&gs=true&st=\u0002\u00010",
+ "rmaline": "//www.farmaline.be/apotheek/zoeken/\u0002/?ref=duckduckgo\u00010",
+ "rmfor": "//www.farmfor.com.br/?s=\u0002\u00010",
+ "rnl": "//nl.farnell.com/webapp/wcs/stores/servlet/Search?&st=\u0002\u00010",
+ "rnde": "http://de.farnell.com/webapp/wcs/stores/servlet/Search?catalogId=15001&langId=-3&storeId=10161&categoryName=Alle%20Kategorien&selectedCategoryId=&gs=true&st=\u0002\u00010",
+ "rnes": "//es.farnell.com/search?st=\u0002\u00014",
+ "rnell": {
+ "*": "http://uk.farnell.com/webapp/wcs/stores/servlet/Search?&st=\u0002\u000134",
+ "fr": "http://fr.farnell.com/\u0002 \u00019"
+ },
+ "rsi123": "http://farsi123.com/?word=\u0002\u00010",
+ "tsecret": "//www.fatsecret.com/calories-nutrition/search?q=\u0002\u000114",
+ "ucet": "http://www.faucet.com/index.cfm?page=search:browse&term=\u0002\u00010",
+ "user": "http://furaffinity.net/user/\u0002\u00019"
+ },
+ "b": {
+ "*": "//www.facebook.com/search.php/?q=\u0002\u000112089",
+ "g": "//duckduckgo.com/?q=site%3Afootballguys.com+\u0002\u00010",
+ "k": "//www.facebook.com/search/results/?q=\u0002\u000116",
+ "m": "//www.facebook.com/messages/search?action=search-snippet&mquery=\u0002\u000124",
+ "p": "//www.facebook.com/search/results/?q=\u0002&type=pages\u00016",
+ "r": "http://www.pro-football-reference.com/player_search.fcgi?search=\u0002\u00010",
+ "s": "http://www.fbschedules.com/search.php?q=\u0002\u00010",
+ "ee": "//framabee.org/?q=\u0002 \u00010",
+ "bva": "http://www.fundeu.es/?s=\u0002\u00010",
+ "lite": "//mbasic.facebook.com/search/?refid=46&search=people&search_source=search_bar&query=\u0002\u00018",
+ "onion": "//facebookcorewwwi.onion/search.php/?q=\u0002\u000121",
+ "ugs": "//bugs.freebsd.org/bugzilla/buglist.cgi?quicksearch=\u0002\u00013"
+ },
+ "c": {
+ "b": {
+ "*": "http://www.fcbayern.de/de/search#search=\u0002&chronology=chrono\u00010",
+ "ar": "http://www.fcbayern.de/ar/search#search=\u0002&chronology=chrono\u00010",
+ "en": "http://www.fcbayern.de/en/search#search=\u0002&chronology=chrono\u00010",
+ "es": "http://www.fcbayern.de/es/search#search=\u0002&chronology=chrono\u00010",
+ "jp": "http://www.fcbayern.de/jp/search#search=\u0002&chronology=chrono\u00010",
+ "ru": "http://www.fcbayern.de/ru/search#search=\u0002&chronology=chrono\u00010",
+ "us": "http://www.fcbayernmunich.com/us/search#search=\u0002&chronology=chrono\u00010"
+ },
+ "c": {
+ "f": "//www.freecodecamp.org/forum/search?q= \u0002\u000110",
+ "*": "http://www.forocoches.com/foro/search.php?do=process&titleonly=1&query=\u0002\u000114"
+ },
+ "*": "//duckduckgo.com/?q=site%3A+freecadweb.org+\u0002\u000110",
+ "s": "http://portal.fultonschools.org/_layouts/OSSSearchResults.aspx?k=\u0002\u00010",
+ "it": "//fcit.usf.edu/search/index.php?searchWords=\u0002\u00010",
+ "aesar": "//www.frag-caesar.de/lateinwoerterbuch/\u0002-uebersetzung.html\u000111",
+ "ode": "//search.freecodecamp.org/?q=\u0002\u00010",
+ "onj": "http://www.wordreference.com/conj/FRverbs.aspx?v=\u0002 \u00013",
+ "peuro": "//www.fcpeuro.com/products?utf8=%E2%9C%93&keywords=\u0002\u00010",
+ "ulture": "//www.franceculture.fr/recherche?q=\u0002\u00010"
+ },
+ "d": {
+ "a": "//search.usa.gov/search?utf8=%E2%9C%93&affiliate=fda&query=\u0002&commit=Search\u00010",
+ "b": {
+ "*": "http://www.fdb.cz/vyhledavani.php?co=vsechno&hledat=\u0002\u00013",
+ "pl": "//fdb.pl/szukaj?utf8=✓&query=\u0002\u00010",
+ "log": "//blog.freshdesk.com/?s=\u0002\u00010"
+ },
+ "f": "//support.freshdesk.com/support/search/topics?term=\u0002\u00010",
+ "*": "http://freedictionary.org/?Query=\u0002&button=Search\u000112",
+ "l": "//feedly.com/i/search/\u0002\u000188",
+ "o": {
+ "*": "//www.google.com/search?sitesearch=http%3A%2F%2Fwww.freedesktop.org%2Fwiki%2F&q=\u0002&gws_rd=ssl\u00010",
+ "bugs": "//bugs.freedesktop.org/buglist.cgi?quicksearch=\u0002\u00010"
+ },
+ "s": "//support.freshdesk.com/support/search/solutions?term=\u0002\u00010",
+ "db": "http://fddb.info/db/de/suche/?udd=0&cat=site-de&search=\u0002\u00019",
+ "ic": "http://finedictionary.com/\u0002.html\u00010",
+ "rlst": "http://thefederalist.com/?s=\u0002\u00010",
+ "roid": "//search.f-droid.org/?q=\u0002 \u0001232"
+ },
+ "f": {
+ "a": "//addons.mozilla.org/en-US/firefox/search/?q=\u0002\u000137",
+ "c": {
+ "*": "http://foundfootagecritic.com/?s=\u0002\u00010",
+ "h": "//www.admin.ch/opc/search/?lang=fr&language[]=fr&product[]=fg&text=\u0002&lang=fr\u00010"
+ },
+ "*": "http://www.fanfiction.net/search.php?type=story&keywords=\u0002&match=title&sort=0&genreid=0&subgenreid=0&characterid=0&subcharacterid=0&words=0&ready=1&categoryid=0\u000183",
+ "i": {
+ "*": "//www.finder.fi/search?what=\u0002\u00014",
+ "nv": "http://ff14.inven.co.kr/dataninfo/item/?itemname=\u0002&datagroup=search\u00010"
+ },
+ "m": "//fastfoodmusic.com/?s=\u0002\u00010",
+ "n": "//www.fanfiction.net/search/?keywords=\u0002&ready=1&type=story\u000119",
+ "s": {
+ "*": "//www.freefallsupport.com/?s=\u0002\u00010",
+ "tory": "//www.fanfiction.net/search.php?keywords=\u0002&type=story&match=any&formatid=any&sort=0&genreid1=0&genreid2=0&characterid1=0&characterid2=0&characterid3=0&characterid4=0&words=0&ready=1&categoryid=0\u00010"
+ },
+ "w": {
+ "*": "//www.fanfiction.net/search.php?type=writer&keywords=\u0002&match=title&sort=0&genreid=0&subgenreid=0&characterid=0&subcharacterid=0&words=0&ready=1&categoryid=0#\u00010",
+ "iki": "http://finalfantasy.wikia.com/wiki/Special:Search?query=\u0002\u000125"
+ },
+ "z": "http://www.frankerfacez.com/emoticons/?q=\u0002\u000114",
+ "bbunt": "//ffbbunt.wordpress.com/?s=\u0002\u00010",
+ "xiv": {
+ "*": "//ffxiv.consolegameswiki.com/mediawiki/index.php?search=\u0002\u0001107",
+ "tc": "//ffxivteamcraft.com/search?query=\u0002&onlyRecipes=true\u00010"
+ }
+ },
+ "*": "http://www.flickr.com/search/?q=\u0002\u00011303",
+ "g": {
+ "*": "http://www.fangraphs.com/players.aspx?lastname=\u0002\u00010",
+ "f": "http://www.flightgear.org/forums/search.php?keywords=\u0002\u00010",
+ "cs": "//www.frag-caesar.de/lateinwoerterbuch/\u0002-uebersetzung.html\u000111",
+ "ow": "http://fategrandorder.wikia.com/wiki/Special:Search?query=\u0002\u000121",
+ "entoo": "//duckduckgo.com/?q=site%3Aforums.gentoo.org+\u0002\u00015"
+ },
+ "h": {
+ "*": "http://filehippo.com/search?q=\u0002\u00016",
+ "q": "//fidgethq.com/search?q=\u0002\u00010",
+ "em": "//wiki.fhem.de/w/index.php?search=\u0002\u00013",
+ "su": "//fhsu.edu/searchresults.aspx?query=\u0002\u00010",
+ "ub": "//www.fosshub.com/search/\u0002\u00010"
+ },
+ "i": {
+ "d": {
+ "e": "//ratings.fide.com/search.phtml?search=\u0002\u000153",
+ "*": "//www.file.net/process/\u0002.html\u00010",
+ "o": "http://www.fido.ca/consumer/search?q=\u0002\u00010",
+ "dling": "//duckduckgo.com/?q=site%3Agladyscelticcorner.com+\u0002\u00010"
+ },
+ "*": "http://www.finanzen.net/suchergebnis.asp?strSuchString=\u0002\u0001113",
+ "m": {
+ "*": "//www.fimfiction.net/stories?q=\u0002\u000144",
+ "fic": {
+ "*": "//www.fimfiction.net/stories?q=\u0002\u000144",
+ "tion": "//www.fimfiction.net/stories?q=\u0002\u000144"
+ }
+ },
+ "n": {
+ "f": {
+ "*": "//forum.finf.uni-hannover.de/index.php?form=Search&q=\u0002\u00010",
+ "o": "//www.francetvinfo.fr/recherche/?request=\u0002\u000112"
+ },
+ "*": "//finviz.com/search.ashx?p=\u0002\u000114",
+ "k": "http://pdb.finkproject.org/pdb/browse.php?summary=\u0002\u00010",
+ "n": {
+ "a": "//finna.fi/Search/Results?lookfor=\u0002\u00010",
+ "*": "//www.finn.no/globalsearchlander.html?searchKeys=&q=\u0002\u000125",
+ "kino": {
+ "*": "http://www.finnkino.fi/Search?query=\u0002\u00010",
+ "en": "http://www.finnkino.fi/eng/Search/?query=\u0002\u00010"
+ }
+ },
+ "o": "//finofilipino.org/?s=\u0002\u00010",
+ "do": "//findo.com/app/search?query=\u0002\u00010",
+ "alfantasy": "http://finalfantasy.wikia.com/wiki/Special:Search?search=\u0002\u000119",
+ "anzennet": "http://www.finanzen.net/suchergebnis.asp?_search=\u0002\u00015",
+ "danyfilm": "http://www.findanyfilm.com/search?term=\u0002\u00017",
+ "dchips": "http://www.findchips.com/avail?part=\u0002\u000197",
+ "dlaw": "http://public.findlaw.com/LCsearch.html?entry=\u0002\u00010",
+ "ecooking": "http://www.finecooking.com/?s=\u0002\u00010",
+ "edict": "http://www.finedictionary.com/\u0002.html\u00010",
+ "eli": {
+ "*": "//fineli.fi/fineli/fi/elintarvikkeet?q=\u0002\u00010",
+ "en": "//fineli.fi/fineli/en/elintarvikkeet?q=\u0002\u00010",
+ "sv": "//fineli.fi/fineli/sv/elintarvikkeet?q=\u0002\u00010"
+ },
+ "lex": "http://finlex.fi/fi/laki/haku/?search[type]=pika&search[pika]=\u0002\u00010"
+ },
+ "p": "//www.fip.fr/player/\u0002\u00010",
+ "u": {
+ "*": "//fontsinuse.com/search?terms=\u0002\u00019",
+ "eds": "http://search.ebscohost.com.ezproxy.fiu.edu/login.aspx?direct=true&scope=site&type=0&site=eds-live&lang=en&bquery=[\u0002]\u00010"
+ },
+ "en": "http://translate.google.com/#fi/en/\u0002 \u000127",
+ "fa": "//www.fifa.com/search/?q=\u0002\u00010",
+ "le": {
+ "*": "http://filehippo.com/search?q=\u0002\u00016",
+ "xt": "http://filext.com/file-extension/\u0002\u00018",
+ "ext": "http://www.file-extensions.org/search/?searchstring=\u0002\u00010",
+ "facts": "http://www.filefacts.net/search.php?ext=\u0002\u00010",
+ "hippo": "http://filehippo.com/search?q=\u0002\u00016",
+ "info": "http://fileinfo.com/extension/\u0002\u000131"
+ },
+ "lm": {
+ "*": "//www.filmaffinity.com/es/search.php?stext=\u0002\u000131",
+ "s": {
+ "*": "http://www.filmsarecool.com/#search=\u0002 \u00010",
+ "tarts": "http://www.filmstarts.de/suche/?q=\u0002\u00010"
+ },
+ "nl": "//www.film.nl/?q=\u0002\u00010",
+ "on": "http://www.filmon.tv/search/?term=\u0002\u00010",
+ "ow": "http://filmow.com/buscar/?q=\u0002\u000110",
+ "tv": {
+ "*": "http://www.filmtv.it/cerca/?q=\u0002\u000119",
+ "de": "//www.film.tv/google-suchergebnisse.html?cx=partner-pub-3004436243331931%3A1982226405&query=\u0002\u00010"
+ },
+ "affinity": {
+ "*": "//www.filmaffinity.com/en/search.php?stext=\u0002\u000113",
+ "es": "//m.filmaffinity.com/es/search.php?stext=\u0002\u00010"
+ },
+ "anic": "//filmanic.com/search-for-movies-actors-directors/?q=\u0002\u00010",
+ "art": "//filmartgallery.com/pages/search-results?q=\u0002\u00010",
+ "portal.de": "//www.filmportal.de/search?search_api_fulltext=\u0002\u00010",
+ "racket": "http://filmracket.com/?s=\u0002&submit=Search\u00010",
+ "web": "http://www.filmweb.pl/search?q=\u0002\u000196"
+ },
+ "sh": {
+ "*": "http://fishshell.com/docs/current/commands.html#\u0002\u00014",
+ "pond": "http://www.fishpond.com.au/advanced_search_result.php?keywords=\u0002\u00010"
+ },
+ "bercables": "http://www.fibercables.com/search?q=\u0002\u00010",
+ "cly": "http://ficly.com/search?query=\u0002\u00010",
+ "fthcity": "http://thefifthcity.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "guya": "//figuya.com/en/products?q[query]=\u0002\u00010",
+ "reball": "//fireball.de/q/\u0002\u00010",
+ "rebox": "http://www.firebox.com/search/\u0002\u00010",
+ "refox": {
+ "*": "//addons.mozilla.org/en-US/firefox/search/?q=\u0002&cat=all\u0001267",
+ "addon": {
+ "*": "//addons.mozilla.org/en-US/firefox/search/?q=\u0002\u000137",
+ "s": "//addons.mozilla.org/en-US/firefox/search/?q=\u0002\u000137"
+ }
+ },
+ "rmy": {
+ "*": "//www.firmy.cz/?q=\u0002\u00014",
+ "cz": "http://www.firmy.cz/?thru=&q=\u0002\u00010"
+ },
+ "rstcry": "http://www.firstcry.com/search.aspx?q=\u0002\u00010",
+ "rstmats": "//www.firstmats.co.uk/search?type=product&q=\u0002\u00010",
+ "rstpagefitness": "//firstpagefitness.com/?s=\u0002\u00010",
+ "rstpost": "http://www.firstpost.com/?s=\u0002\u00010",
+ "schertechnik": "http://www.fischertechnik.de/desktopdefault.aspx/tabid-1//tabid-35/searchcall-4/4_keepvisible-true/redirected-1/?/sid-3230669/mid-4/tid-1/ct-0/q-\u0002//k-/et-0/rpp-10/sar-False/t-/p-0/ap-True/cat-/cr-0/pr-0/icp-False/icc-False/ifc-False/sl-1/sp-0/cs-/\u00010",
+ "tfolly": "//fitfolly.com/?s=\u0002\u00010",
+ "xyt": "http://fixyt.com/search?q=\u0002\u00010"
+ },
+ "j": "http://funnyjunk.com/search/?q=\u0002\u000149",
+ "k": {
+ "b": "//fkb.dk/search/ting/\u0002\u00010",
+ "*": "http://www.flipkart.com/search?q=\u0002 \u0001272",
+ "k": "http://fkk-freunde.info/search.php?keywords=\u0002\u00010",
+ "t": "//www.felleskatalogen.no/medisin/sok?sokord=\u0002\u00010"
+ },
+ "l": {
+ "d": "//www.frontlinedefenders.org/en/search/\u0002\u00010",
+ "e": {
+ "*": "http://flexikon.doccheck.com/de/Spezial:Suche?q=\u0002\u000121",
+ "xjobs": "//www.flexjobs.com/search?search=\u0002&Location=\u00010"
+ },
+ "*": "http://www.google.com/search?btnI&q=\u0002\u0001158",
+ "r": "//www.reddit.com/r/FluidLang/search?q=\u0002&restrict_sr=on\u00010",
+ "t": "//flutter.io/search/?q=\u0002\u00010",
+ "y": {
+ "*": "http://flybase.org/search/\u0002\u00010",
+ "er": "//flyerhunters.com/?s=\u0002\u00010"
+ },
+ "ag": "//duckduckgo.com/?q=site%3Aflagpoles.com.au+\u0002\u00013",
+ "at": {
+ "*": "//flathub.org/apps/search/\u0002\u000137",
+ "tr": "//flattr.com/q/\u0002\u00010",
+ "hub": "//flathub.org/apps/search/\u0002\u000137",
+ "icon": "http://www.flaticon.com/search/\u0002\u000132",
+ "music": "//flat.io/search?q=\u0002\u00010"
+ },
+ "ip": {
+ "*": "http://www.flipkart.com/search?q=\u0002&as=off&as-show=on&otracker=start\u000118",
+ "juke": "http://www.flipjuke.fr/search.php?keywords=\u0002\u00010",
+ "kart": "//www.flipkart.com/search?q=\u0002\u0001128"
+ },
+ "is": "http://www.webflis.us//webflis.aspx?All=\u0002\u00010",
+ "ix": "http://www.flixster.com/search/?search=\u0002 \u00010",
+ "ask": "http://flask.pocoo.org/search/?q=\u0002\u00017",
+ "ashback": "//www.flashback.org/sok/\u0002\u000128",
+ "ickr": {
+ "c": {
+ "c": "//www.flickr.com/search/?text=\u0002&license=2%2C3%2C4%2C5%2C6%2C9\u00015",
+ "*": "http://www.flickr.com/search/?q=\u0002&l=commderiv\u00014"
+ },
+ "*": "http://flickr.com/search/?q=\u0002\u0001154",
+ "id": "//secure.flickr.com/photo.gne?id=\u0002\u00010",
+ "iver": "http://flickriver.com/search/\u0002/\u00010"
+ },
+ "icks": "//www.flicks.co.nz/search/?q=\u0002\u00010",
+ "ickchart": "http://www.flickchart.com/SearchResults.aspx?s=\u0002\u00010",
+ "ight": {
+ "*": "//spotterlead.net/flights/\u0002\u000110",
+ "aware": "//flightaware.com/live/flight/\u0002 \u000131",
+ "radar": "//www.flightradar24.com/data/flights/\u0002\u00010"
+ },
+ "optv": "http://www.floptv.tv/search/?q=\u0002\u00010",
+ "ower": "http://www.wildflower.org/plants/search.php?search_field=\u0002&newsearch=true\u00010",
+ "utter": "//flutter.io/search/?q=\u0002\u00010"
+ },
+ "m": {
+ "4": "http://fm4.orf.at/search?q=\u0002&sort=date_desc&submit.x=0&submit.y=0\u00010",
+ "a": {
+ "*": "http://freemusicarchive.org/search/?quicksearch=\u0002&sort=track_interest\u00010",
+ "n": "http://www.freebsd.org/cgi/man.cgi?query=\u0002\u00017"
+ },
+ "d": "http://www.fashionmodeldirectory.com/search/?q=\u0002\u00010",
+ "*": "http://filmaster.com/search/?q=\u0002\u000115",
+ "i": "http://ilmatieteenlaitos.fi/saa/\u0002\u000110",
+ "p": "//community.filemaker.com/en/s/global-search/\u0002\u00010",
+ "s": "http://www.foromedios.com/index.php?app=core&module=search&do=search&andor_type=&sid=&search_app_filters[forums][sortKey]=date&search_app_filters[forums][sortKey]=date&search_app_filters[forums][searchInKey]=&search_term=\u0002&search_app=forums\u00010",
+ "x": "http://www.fightmatrix.com/fighter-search/?fName=\u0002\u00010",
+ "od": "//mods.factorio.com/query/\u0002\u00010",
+ "edoc": "//www.safe.com/search/?site-search=\u0002&site=docs.safe.com\u00010",
+ "ekb": "//knowledge.safe.com/search.html?f=&type=question+OR+idea+OR+kbentry&c=&redirect=search%2Fsearch&sort=relevance&q=\u0002:\u00010"
+ },
+ "n": {
+ "b": "//www.fanburst.com/search?q=\u0002\u00010",
+ "d": "//fnd.io/#/us/search?mediaType=all&term=\u0002\u00010",
+ "*": "//www.foodnetwork.com/search/\u0002-\u000113",
+ "ac": {
+ "*": "http://recherche.fnac.com/SearchResult/ResultList.aspx?Search=\u0002\u000151",
+ "es": "http://busqueda.fnac.es/Search/SearchResult.aspx?SCat=0%211&Search=\u0002&sft=1&submitbtn=OK\u00010",
+ "portugal": "http://pesquisa.fnac.pt/Search/SearchResult.aspx?Search=\u0002\u00010"
+ },
+ "af": "//freddy-fazbears-pizza.fandom.com/search?query=\u0002\u00010",
+ "et": "http://www.finanzen.net/suchergebnis.asp?frmAktiensucheTextfeld=\u0002\u00016",
+ "ite": "//www.reddit.com/r/FortNiteBR/search/?q=\u0002&restrict_sr=1\u00010",
+ "ova": "//www.fashionnova.com/pages/search-results?q=\u0002\u00010",
+ "vnm": "//www.nexusmods.com/newvegas/search/?gsearch=\u0002&gsearchtype=mods\u00010"
+ },
+ "o": {
+ "*": "http://file.org/extension/\u0002 \u00010",
+ "k": "http://zoeken.fok.nl/zoek/?searchmode=simple&tab=fok&startdate=&enddate=&startdatelast=&enddatelast=&bycreator=&byuser=&orderby=relevance&s_fields[]=titel&s_fields[]=bericht&s_fields[]=reacties&status[]=open&status[]=gesloten&status[]=sticky&status[]=openstick&status[]=centraal&q=\u0002\u00010",
+ "t": {
+ "f": "//www.focusonthefamily.com/search-results#q=\u0002&t=FocusOnTheFamilyOnly&sort=relevancy\u00010",
+ "*": "//www.fotmob.com/search?q=\u0002\u00010",
+ "bollskanalen": "http://www.fotbollskanalen.se/sok?q=\u0002\u00010",
+ "olog": "//fotolog.com/search?query=\u0002\u00014"
+ },
+ "w": {
+ "*": "http://www.fowtcg.com/cards?w=\u0002\u00010",
+ "g": "//www.fowsystem.com/de/Kartendatenbank?page=&CERCA=cerca&cardname=\u0002&block=ALL&edition=ALL&REGATT=or&cardnumber=&ABILITYTEXT=&ATKMIN=0&ATKMAX=2500&DEFMIN=0&DEFMAX=2500\u00010",
+ "iki": "http://fallout.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1\u00013",
+ "ler": "//duckduckgo.com/?q=site%3Amartinfowler.com+\u0002\u00010"
+ },
+ "x": {
+ "*": "http://www.foxnews.com/search-results/search?q=\u0002&submit=Search\u000153",
+ "lifeit": "//www.foxlife.it/search/?q=\u0002\u00010",
+ "news": "http://www.foxnews.com/search-results/search?q=\u0002\u000115",
+ "racing": "//www.foxracing.com/store/browse?_dyncharset=UTF-8&Dy=1&Nty=1&searchBox=searchBox&siteScope=ok&_D%3AsiteScope=+&autoSuggestEnabled=true&autoSuggestURL=%2Fstore%2Fassembler%3FassemblerContentCollection%3D%2Fcontent%2FShared%2FAuto-Suggest%2520Panels%26format%3Djson%26Dy%3D1%26Ntt%3D&minAutoSuggestInputLength=3&%2Fatg%2Fendeca%2Fassembler%2FSearchFormHandler.search=search&_D%3A%2Fatg%2Fendeca%2Fassembler%2FSearchFormHandler.search=+&Ntt=\u0002\u00010",
+ "sportsit": "//www.foxsports.it/?q=\u0002\u00010"
+ },
+ "nq": {
+ "*": "http://www.fonq.be/nl_BE/search/?search_term=\u0002#s=2\u00010",
+ "nl": "//www.fonq.nl/zoek/?fq=\u0002\u00010"
+ },
+ "nt": {
+ "a": {
+ "*": "//fontawesome.com/icons?d=gallery&q=\u0002\u00010",
+ "wesome": "//fontawesome.com/icons?q=\u0002\u000145"
+ },
+ "*": "http://www.identifont.com/find?font=\u0002&similar=\u0002\u00017",
+ "s": {
+ "*": "http://www.fontsquirrel.com/fonts/list/find_fonts?q[term]=\u0002&q[search_check]=Y\u000110",
+ "q": "http://www.fontsquirrel.com/fonts/list/find_fonts?q[term]=\u0002&q[search_check]=Y\u000110",
+ "like": "http://www.identifont.com/find?similar=\u0002&q=Go\u00010",
+ "pace": "http://www.fontspace.com/search/?q=\u0002\u00010"
+ },
+ "library": "//fontlibrary.org/en/search?query=\u0002\u00010"
+ },
+ "od": {
+ "*": "http://www.food.com/recipe-finder/all/\u0002\u00015",
+ "y": "//www.foody.vn/ho-chi-minh/dia-diem?q=\u0002&ss=header_search_form\u00010",
+ "2fork": "http://food2fork.com/top?q=\u0002\u00010",
+ "network": "http://www.foodnetwork.com/search/delegate.do?fnSearchString=\u0002&fnSearchType=site\u00014",
+ "subs": "http://search.freefind.com/find.html?id=81296093&pageid=r&query=\u0002\u00010"
+ },
+ "ol": "http://www.fool.com/search/index.aspx?go=1&site=USMF&q=\u0002&source=ifltnvsnq0000001&mbbid=BoardID&mbmid=MessageID\u00013",
+ "rt": {
+ "*": "//fortnite.gamepedia.com/index.php?search=\u0002\u00010",
+ "inet": "//www.fortinet.com/search.html?q=\u0002\u00014",
+ "nite": {
+ "*": "http://epicgames.com/fortnite/en-US/search?q=\u0002\u00010",
+ "stats": "//fortnitestats.com/stats/\u0002\u00010"
+ }
+ },
+ "calprice": "http://www.focalprice.com/buy/\u0002.html\u00010",
+ "ldoc": "http://foldoc.org/\u0002\u00013",
+ "lddown": "//folddownpro.com/search.php?search_query=\u0002\u00010",
+ "lha": "http://search.folha.com.br/search?q=\u0002\u00010",
+ "lkets": "http://folkets-lexikon.csc.kth.se/folkets/#lookup&\u0002&0\u000177",
+ "lktunefinder": "http://www.folktunefinder.com/tunes?text=\u0002\u00010",
+ "lkwiki": "http://www.folkwiki.se/?n=Meta.Start&action=search&q=\u0002\u00010",
+ "llow": "http://www.followthatpage.com/?url=\u0002\u00014",
+ "necta": "//www.fonecta.fi/henkilot/haku/-/\u0002/\u00010",
+ "oby": "//fooby.ch/de/suche.html?query=\u0002&treffertyp=rezepte\u00010",
+ "otage": "http://www.dissolve.com/products?keywords=\u0002\u00014",
+ "otlocker": "http://www.footlocker.com/_-_/keyword-\u0002\u00010",
+ "rbes": "http://search.forbes.com/search/find?MT=\u0002\u00013",
+ "rdsix": "//fordsix.com/search.php?keywords=\u0002\u00010",
+ "rewordreviews": "//www.forewordreviews.com/search/?q=\u0002\u00010",
+ "rexstation": "//forex-station.com/search.php?keywords=\u0002&terms=all&author=&sc=1&sf=all&sr=posts&sk=t&sd=d&st=0&ch=300&t=0&submit=Search\u00010",
+ "rkd": "http://forkd.com/recipe/search?q=\u0002\u00010",
+ "rosuse": "http://www.forosuse.org/?q=\u0002\u00010",
+ "rrester": "//www.forrester.com/search?tmtxt=\u0002\u00010",
+ "r-two": "//for-two-store.com/search?q=\u0002\u00010",
+ "rum": "//duck.co/forum/search?q=\u0002\u000129",
+ "rvo": "http://forvo.com/search/\u0002/\u0001178",
+ "ssd": {
+ "*": "//fossdroid.com/s/\u0002.html\u00010",
+ "roid": "//fossdroid.com/s.html?q=\u0002\u00015"
+ },
+ "ssil": "//www.fossil.com/uk/en/search.\u0002.html\u00010",
+ "sshub": "//www.fosshub.com/search/\u0002\u00010",
+ "und": "//foundland.shop/search?query=\u0002\u00010",
+ "ursquare": "//foursquare.com/explore?q=\u0002\u00016",
+ "yles": "http://www.foyles.co.uk/qsearch/All/All?term=\u0002\u00010"
+ },
+ "p": {
+ "e": "//florida-prep.org/search?q=\u0002\u00010",
+ "*": "http://www.fanpop.com/search?query=\u0002\u00010",
+ "o": {
+ "*": "http://www.freepatentsonline.com/result.html?sort=relevance&srch=top&query_txt=\u0002&submit=&patents=on\u00010",
+ "rts": "http://www.freebsd.org/cgi/ports.cgi?query=\u0002&stype=all\u000111"
+ },
+ "s": {
+ "*": "//apps.fedoraproject.org/packages/s/\u0002\u000115",
+ "tory": "//www.fictionpress.com/search/?keywords=\u0002&ready=1&type=story\u00010"
+ },
+ "cs": "//duckduckgo.com/?q=site:forum.pcsoft.fr+\u0002\u00010",
+ "unch": "//forum.facepunch.com/search/?q=\u0002\u00010",
+ "writer": "//www.fictionpress.com/search/?keywords=\u0002&ready=1&type=writer\u00010"
+ },
+ "r": {
+ "c": {
+ "*": "//www.frag-caesar.de/lateinwoerterbuch/\u0002-uebersetzung.html\u000111",
+ "s": "//www.frag-caesar.de/lateinwoerterbuch/\u0002-uebersetzung.html\u000111"
+ },
+ "g": {
+ "e": "http://dictionnaire.reverso.net/francais-allemand/\u0002\u00010",
+ "*": "//www.fastreplacementglass.com/index.php?route=product/search&search=\u0002\u00010"
+ },
+ "i": {
+ "*": "//www.franceinter.fr/recherche?q=\u0002\u00010",
+ "t": {
+ "*": "http://translate.google.com/#fr/it/\u0002\u00010",
+ "h": "//www.francisfrith.com/search?q=\u0002\u00010"
+ },
+ "da": "//frida.fooddata.dk/food/search?lang=en&q=\u0002\u00010",
+ "nk": {
+ "*": "http://www.futureboy.us/fsp/frink.fsp?fromVal=\u0002\u00010",
+ "iac": "//frinkiac.com/?p=search&q=\u0002\u000156"
+ },
+ "ss": "//www.fressnapf.de/s/search?text=\u0002\u00010",
+ "ght": "//frightfind.com/?s=\u0002\u00010",
+ "sky": "//www.friskyradio.com/search/?q=\u0002\u00010"
+ },
+ "*": "http://www.larousse.fr/dictionnaires/francais/\u0002\u0001144",
+ "s": "http://www.freesound.org/search/?q=\u0002\u00017",
+ "w": {
+ "*": "http://www.freewave.at/?s=\u0002\u00010",
+ "iki": "//forgottenrealms.fandom.com/wiki/Special:Search?query=\u0002\u00013"
+ },
+ "24": {
+ "f": "//www.flightradar24.com/data/flights/\u0002\u00010",
+ "*": "//www.flightradar24.com/data/flights/\u0002\u00010"
+ },
+ "ad": "//www.friday-ad.co.uk/uk/search/?keywords=\u0002\u00010",
+ "an": {
+ "*": "http://www.fran.si/iskanje?View=2&Query= \u0002 \u000125",
+ "cheval": "//news.francheval.com/search?q=\u0002 \u00010"
+ },
+ "ax": "//www.fransktlexikon.se/\u0002\u00010",
+ "ed": "//research.stlouisfed.org/fred2/search?st=\u0002\u00014",
+ "en": {
+ "*": "http://translate.google.com/#fr/en/\u0002\u000147",
+ "ch": "http://french.stackexchange.com/search?q=\u0002\u00015"
+ },
+ "es": {
+ "*": "http://translate.google.com/#fr/es/\u0002\u000112",
+ "h": {
+ "*": "//www.amazon.com/s/ref=nb_sb_noss_2?url=search-alias%3Damazonfresh&field-keywords=\u0002\u00010",
+ "desk": "//support.freshdesk.com/support/search?term=\u0002\u00010",
+ "ports": "//www.freshports.org/search.php?query=\u0002&search=go&num=10&stype=name&method=match&deleted=excludedeleted&start=1&casesensitivity=caseinsensitive\u000158"
+ }
+ },
+ "jp": "http://dictionnaire.reverso.net/francais-japonais/\u0002\u00010",
+ "mb": "//framabee.org/?q=\u0002\u00010",
+ "pl": "http://dictionnaire.reverso.net/francais-polonais/\u0002\u00010",
+ "ru": "//translate.google.com/#fr/ru/\u0002\u00010",
+ "ys": "http://www.frys.com/search?search_type=regular&sqxts=1&query_string=\u0002\u00010",
+ "2de": "//translate.google.com/#view=home&op=translate&sl=fr&tl=de&text=\u0002\u00010",
+ "2en": "http://translate.google.com/#fr/en/\u0002\u000147",
+ "ack": "//frack.nl/w/index.php?title=Special%3ASearch&search=\u0002\u00010",
+ "agrantica": "//www.fragrantica.com/search/?q=\u0002\u00013",
+ "amal": "//framalibre.org/recherche-par-crit-res?keys=\u0002\u00010",
+ "amat": "//framatube.org/search?search=\u0002\u00013",
+ "amabee": "//framabee.org/?q=\u0002 \u00010",
+ "avega": "//www.fravega.com/\u0002\u00010",
+ "azeit": "http://fraze.it/n_search.jsp?q=\u0002\u00010",
+ "eeg": {
+ "*": "//free.com.tw/?s=\u0002\u00010",
+ "roup": "//free.com.tw/?s=\u0002\u00010"
+ },
+ "eep": {
+ "*": "//www.freerepublic.com/tag/\u0002/index?tab=articles\u00010",
+ "ik": "http://www.freepik.com/index.php?goto=2&searchform=1&k=\u0002\u000134",
+ "ascal": "http://wiki.freepascal.org/index.php?search=\u0002\u000110"
+ },
+ "eebsd": {
+ "*": "//www.freebsd.org/cgi/ports.cgi?query=\u0002\u00014",
+ "man": "http://man.freebsd.org/\u0002\u00017"
+ },
+ "eecol": "http://www.freecollocation.com/search?word=\u0002\u00010",
+ "eedict": {
+ "*": "http://freedictionary.org/?Query=\u0002&button=Search\u000112",
+ "ionary": "http://freedictionary.org/?Query=\u0002&button=Search\u000112"
+ },
+ "eedom": {
+ "*": "//www.freedommobile.ca/support/search/faq-search-results?q=\u0002\u00010",
+ "press": "//freedom.press/search/?query=\u0002\u00010"
+ },
+ "eelancer": "//www.freelancer.com/work/\u0002/\u00010",
+ "eelancinghacks": "http://freelancinghacks.com/?s=\u0002\u00010",
+ "eenode": "http://webchat.freenode.net/?channels=\u0002\u00010",
+ "eesfx": "http://www.freesfx.co.uk/sfx/\u0002\u00010",
+ "eesound": "http://www.freesound.org/search/?q=\u0002\u00017",
+ "ee-theme-download": "//free-theme-download.com/search?term=\u0002\u00010",
+ "eethesaurus": "http://www.freethesaurus.com/\u0002\u00010",
+ "eitag": "//www.freitag.de/@@search?SearchableText=\u0002&SubmitSearch=Suche\u00010",
+ "eqcheck": "//www.frequencycheck.com/search?s=\u0002\u00010",
+ "equencycheck": "//www.frequencycheck.com/search?s=\u0002\u00010",
+ "ontalux": "http://www.lesfrontaliers.lu/search?text=\u0002\u00010",
+ "ontiers": "http://www.frontiersin.org/SearchData.aspx?sq=\u0002\u00010",
+ "tech": "//fr.techdico.com/traduction/francais-anglais/\u0002\u00010",
+ "uit": "http://www.adafruit.com/search?q=\u0002&b=1\u00010",
+ "utke": "http://frutke.com/?s=\u0002\u00010",
+ ".wiktionary": "//fr.wiktionary.org/wiki/\u0002\u00010"
+ },
+ "s": {
+ "c": "http://www.futura-sciences.com/magazines/sciences/recherche/?q=\u0002\u00010",
+ "d": {
+ "e": "http://www.fernsehserien.de/suche/\u0002\u00010",
+ "*": "http://directory.fsf.org/wiki/\u0002\u00010"
+ },
+ "*": "//factualsearch.news/#/&gsc.q=\u0002 \u00016",
+ "f": {
+ "d": "http://directory.fsf.org/wiki?title=Special%3ASearch&search=\u0002&fulltext=Search\u00016",
+ "e": "//fsfe.org/cgi-bin/search.cgi?l=en&x=0&y=0&q=\u0002\u00010",
+ "*": "http://www.fsf.org/search?SearchableText=\u0002 \u00013"
+ },
+ "h": "//wiki.foodsharing.de/index.php?search=\u0002\u00010",
+ "k": "//www.freesteamkeys.com/search_gcse/?q=\u0002\u00010",
+ "m": "http://futurism.com/?s=\u0002\u00010",
+ "arating": "http://ratings.food.gov.uk/enhanced-search/en-GB/\u0002/%5E/alpha/0/%5E/%5E/1/1/10\u00010"
+ },
+ "t": {
+ "b": {
+ "*": "http://ftb.gamepedia.com/index.php?search=\u0002\u00019",
+ "wiki": "//ftb.gamepedia.com/index.php?title=Special:Search&search=\u0002\u00010"
+ },
+ "*": "//www.ft.com/search?q=\u0002\u0001110",
+ "k": "//www.farmacotherapeutischkompas.nl/snelzoeken?zoekterm=\u0002&domein=geneesmiddelen\u00010",
+ "l": {
+ "*": "http://ftl.wikia.com/wiki/Special:Search?query=\u0002\u00013",
+ "n": "//www.futurelearn.com/search?q=\u0002\u00010",
+ "r": "//www.dicemagazine.com/search?q=\u0002\u00010"
+ },
+ "n": {
+ "*": "//www.fortuneo.fr/recherche?term=\u0002\u00010",
+ "l": "//www.filmtotaal.nl/zoeken/?q=\u0002\u00010"
+ },
+ "s": "//apollo.fintechstudios.com/search?searchQuery=\u0002\u00010",
+ "u": "//www.freetutorials.us/?s=\u0002\u00010",
+ "w": "//wiki.factorio.com/index.php?search=\u0002&title=Special%3ASearch&go=Go\u000120",
+ "-db": "//ft-datenbank.de/tickets?fulltext=\u0002\u00010",
+ "hes": "//www.freethesaurus.com/\u0002\u00010",
+ "hub": "//flathub.org/apps/search/\u0002\u000137"
+ },
+ "v": {
+ "*": "http://finviz.com/quote.ashx?t=\u0002\u0001367",
+ "z": "http://finviz.com/quote.ashx?t=\u0002&ty=c&ta=1&p=d\u000136",
+ "iewau": "http://www.freeview.com.au/tv-search/?search=\u0002&x=0&y=0\u00010"
+ },
+ "w": {
+ "b": "//www.filmweb.pl/search?q=\u0002\u00013",
+ "*": "http://www.forgottenweapons.com/?s=\u0002\u00010",
+ "y": "//www.fayerwayer.com/?q=\u0002\u00010",
+ "cj": "//foodwishes.blogspot.com/search?q=\u0002\u00010",
+ "tv": "http://www.fwtv.tv/buscar/\u0002\u00010",
+ "iki": "http://fortranwiki.org/fortran/search?query=\u0002\u00010",
+ "pkg": "http://frugalware.org/packages?op=pkg&arch=all&ver=current&srch=\u0002\u00010"
+ },
+ "z": "//duckduckgo.com/?q=site%3Afz.se+\u0002\u00010",
+ "e7": "//fireemblem.fandom.com/search?query=\u0002\u00010",
+ "ee": {
+ "*": "//fee.org/search/?q=\u0002\u00010",
+ "t": "//www.wikifeet.com/search/\u0002\u000115",
+ "dbooks": "http://www.feedbooks.com/search?query=\u0002\u00010",
+ "dly": "//feedly.com/i/search/\u0002\u000188",
+ "dough": "//www.feedough.com/?s=\u0002\u00010"
+ },
+ "eh": {
+ "*": "//feheroes.gamepedia.com/index.php?search=\u0002\u000135",
+ "w": "//feheroes.gamepedia.com/index.php?search=\u0002\u000135"
+ },
+ "er": "http://www.fer.unizg.hr/search?sq=\u0002 &s_skip=0\u000125",
+ "es": {
+ "*": "http://www.folklore.ee/justkui/sonastik/?otsing=\u0002&paring=Otsi\u00010",
+ "er": "//edwardfeser.blogspot.com/search?q=\u0002 \u00010"
+ },
+ "ew": {
+ "*": "//fireemblemwiki.org/w/index.php?title=Special%3ASearch&search=\u0002\u0001109",
+ "iki": "//fireemblemwiki.org/w/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010"
+ },
+ "ex": {
+ "*": "//www.firesidexpressions.com/index.php?route=product/search&search=\u0002\u00010",
+ "trads3": "//darksouls3.wiki.fextralife.com/\u0002\u00010"
+ },
+ "up": "http://filmup.leonardo.it/cgi-bin/search.cgi?ps=10&fmt=long&sy=0&q=\u0002\u00010",
+ "xp": "//www.fxp.co.il/google.php?q=\u0002\u00010",
+ "xr": "http://fxr.watson.org/fxr/ident?i=\u0002\u00010",
+ "ye": "//www.fye.com/search?q=\u0002\u00013",
+ "yt": "//www.fiyatlab.com/?s=\u0002\u00010",
+ "edex": "http://fedex.com/Tracking?tracknumbers=\u0002&action=track\u0001349",
+ "edkojip": "//koji.fedoraproject.org/koji/search?match=glob&type=package&terms=\u0002\u00010",
+ "edman": "http://linuxmanpages.net/search.py?q=\u0002\u00010",
+ "edora": {
+ "*": "//fedoraproject.org/wiki/Special:Search?search=\u0002\u000110",
+ "magazine": "//fedoramagazine.org/?s=\u0002\u00010",
+ "pkg": "//apps.fedoraproject.org/packages/s/\u0002\u000115",
+ "wiki": "//fedoraproject.org/wiki/Special:Search?search=\u0002&go=Go\u00013"
+ },
+ "edpack": "//apps.fedoraproject.org/packages/s/\u0002\u000115",
+ "edreg": "//www.federalregister.gov/documents/search?conditions%5Bterm%5D=\u0002\u00010",
+ "efe": "//blog.fefe.de/?q=\u0002\u000151",
+ "egtherm": "http://fegtherm.hu/?s=\u0002\u00010",
+ "elleskatalogen": "http://felleskatalogen.no/medisin/sok?sokord=\u0002\u00010",
+ "eltrinelli": "http://www.lafeltrinelli.it/fcom/it/home/pages/catalogo/searchresults.html?prkw=\u0002\u000111",
+ "ettrechner": "http://www.fettrechner.de/cgi-bin/kalorientabelle.pl?t=temsearch&sort=BEZEICHNUNG&f=*RUBRIK%2C*SUCHBEGRIFFE%2C*BEZEICHNUNG%2C*HERSTELLER&f1=HERSTELLER&start=1&dif=50&c=\u0002\u00010",
+ "ubib": "//www.ub-katalog.fernuni-hagen.de/F/?func=find-b&request=\u0002&find_code=WRD\u00010",
+ "uget": "//www.fuget.org/packages?q=\u0002\u00010",
+ "uglymugcompany": "//fuglymugcompany.com/search?type=product&q=\u0002\u00010",
+ "uji": "//www.fujitv.co.jp/search/index.html?keyword=\u0002\u00010",
+ "ullcontact": "//app.fullcontact.com/#/search/\u0002\u00010",
+ "ullform": {
+ "*": "//www.fullformgo.com/term/\u0002\u00010",
+ "s": "http://fullforms.com/\u0002 \u00010"
+ },
+ "uni": "//www.funimation.com/search/?q=\u0002\u00010",
+ "unda": "http://www.funda.nl/koop/\u0002\u000124",
+ "unky": "//funkytime.tv/search?q=\u0002\u00014",
+ "undeu": "//www.fundeu.es/?s=\u0002\u00014",
+ "unfact": "//wtffunfact.com/?s=\u0002\u00010",
+ "unplass": "//funplass.com/recherche.php?what=\u0002&where=0&when=0\u00010",
+ "untoo": "http://www.funtoo.org/index.php?search=\u0002\u00010",
+ "uret": "http://www.furet.com/catalogsearch/result/?q=\u0002 \u00010",
+ "uraffinity": "//www.furaffinity.net/search/?q=\u0002\u0001324",
+ "usetron": "//www.fusetronsound.com/search?q=\u0002\u00016",
+ "usionfall": "http://fusionfall.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "uskanu": {
+ "*": "http://fuska.nu/sok/?search=\u0002\u00014",
+ "forum": "http://fuska.nu/forum/sok.php?sok=\u0002\u00010"
+ },
+ "ussball": {
+ "*": "http://www.fussball.de/suche/-/text/\u0002\u00010",
+ "daten": "http://www.fussballdaten.de/suche/?\u0002\u00010"
+ },
+ "utar": "http://futar.bkk.hu/?toCoord=\u0002&toName=\u0002&toSubName=\u0002&layers=GSVB\u00010",
+ "utbin": "//www.futbin.com/players?search=\u0002\u000134",
+ "uthead": "http://www.futhead.com/16/players/?name=\u0002\u00010",
+ "uturama": "http://www.theinfosphere.org/index.php?search=\u0002\u00010",
+ "yndiq": "//fyndiq.se/search/?q=\u0002\u00010",
+ "yyd": "//fyyd.de/search?search=\u0002\u00010"
+ },
+ "@": {
+ "*": "//twitter.com/\u0002\u0001168",
+ "fb": "//facebook.com/\u0002\u00010"
+ },
+ "g": {
+ "a": {
+ "b": "//gab.ai/search/\u0002\u000137",
+ "e": {
+ "*": "http://www.google.ae/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00010",
+ "l": "http://www.focloir.ie/en/spellcheck/ei/?q=\u0002\u00010",
+ "n": "http://translate.google.com/#ga/en/\u0002\u00010"
+ },
+ "f": {
+ "*": "http://www.lexilogos.com/latin/gaffiot.php?q=\u0002\u00010",
+ "oc": "http://www.focloir.ie/en/dictionary/ei/\u0002?advSearch=1&q=\u0002&inlanguage=ga\u00010"
+ },
+ "g": {
+ "*": "//www.girlsaskguys.com/search?q=\u0002\u00016",
+ "ol": "//gymnasium-gag.de/?s=\u0002\u00010"
+ },
+ "*": "http://www.google.com.au/search?q=\u0002\u00012202",
+ "h": "//gethuman.com/phone-number/search/\u0002\u00014",
+ "l": {
+ "*": "//duckduckgo.com/?q=\u0002+site:abretelibro.com\u00013",
+ "axy": "//galaxy.ansible.com/search?keywords=\u0002\u000122",
+ "axus": "//www.galaxus.ch/de/Search?searchSectors=0&q=\u0002\u000120",
+ "erts": "//www.google.com/alerts?q=\u0002\u00010",
+ "inos": "//www.galinos.gr/web/drugs/main/search?q=\u0002\u00010",
+ "lica": "http://gallica.bnf.fr/Search?ArianeWireIndex=index&p=1&lang=FR&q=\u0002\u00016"
+ },
+ "m": {
+ "*": "http://direct3d.ir/forum/search/?keywords=\u0002\u00015",
+ "e": {
+ "*": "http://www.game.co.uk/webapp/wcs/stores/servlet/AjaxCatalogSearch?storeId=10151&catalogId=10201&langId=44&pageSize=&beginIndex=0&sType=SimpleSearch&resultCatEntryType=2&showResultsPage=true&pageView=image&predictiveSearchURL=&searchTerm=\u0002&searchBtn=z\u000123",
+ "s": {
+ "*": "//www.crazygames.com/search?q=\u0002\u00016",
+ "lol": "//games.lol/search/\u0002\u00010",
+ "pot": "http://www.gamespot.com/search/?q=\u0002\u00019",
+ "radar": "//www.gamesradar.com/search/?searchTerm=\u0002\u00010",
+ "tar": "http://www.gamestar.de/index.cfm?pid=109&s=\u0002\u00010",
+ "top": "//www.gamestop.com/search/?q=\u0002&lang=default\u000129"
+ },
+ "za": "//www.game.co.za/game-za/en/search/?text=\u0002\u00010",
+ "banana": "http://gamebanana.com/skins/search?search=\u0002 \u00016",
+ "cheats": "http://www.cheatcc.com/search_results.html?sitesearch=CheatCC.com&domains=CheatCC.com&q=\u0002&sa=Google+Search&client=pub-7081624040320322&forid=1&ie=UTF8&oe=UTF8&cof=GALT%3A%23008000%3BGL%3A1%3BDIV%3A%230000FF%3BVLC%3A663399%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3AFFFFFF%3BALC%3A0000FF%3BLC%3A0000FF%3BT%3A000000%3BGFNT%3A0000FF%3BGIMP%3A0000FF%3BLH%3A0%3BLW%3A0%3BL%3Ahttp%3A%2F%2Fwww.cheatcc.com%2Fccclink.gif%3BS%3Ahttp%3A%2F%2Fwww.cheatcc.com%2Findex2.html%3BFORID%3A11\u00010",
+ "faqs": "http://www.gamefaqs.com/search/index.html?game=\u0002&platform=0\u000152",
+ "fly": "//www.gamefly.com/#!/search/all?q=\u0002\u00010",
+ "front": "//www.gamefront.com/search/files?q=\u0002\u00010",
+ "informer": "//www.gameinformer.com/search?keyword=\u0002\u00010",
+ "jolt": "http://gamejolt.com/search/?q=\u0002\u00014",
+ "kings": "http://www.gamekings.tv/index.php?cat=3&s=\u0002\u00010",
+ "kult": "//www.gamekult.com/rechercher-jeu.html?q=\u0002\u00017",
+ "mar": "//www.gamemar.com/?s=\u0002\u00010",
+ "pressure": "http://games.gamepressure.com/games_encyclopedia.asp?search=\u0002\u00010",
+ "rankings": "http://www.gamerankings.com/browse.html?search=\u0002\u00010",
+ "rgen": "http://www.gamergen.com/s/\u0002\u00010",
+ "rsgate": "http://gamersgate.com/games?q=\u0002\u00010",
+ "zebo": "http://www.gamezebo.com/search/games?query=\u0002\u00010"
+ },
+ "ma": "//www.gamma.nl/assortiment/zoeken?text=\u0002\u00016",
+ "asutra": "http://www.gamasutra.com/search/?search_text=\u0002\u00010",
+ "ing": {
+ "*": "http://gaming.stackexchange.com/search?q=\u0002\u00010",
+ "box": "http://thegamingbox.pfweb.eu/?s=\u0002\u00010"
+ }
+ },
+ "p": {
+ "*": "http://graph.anime.plus/\u0002\u00010",
+ "p": "//play.google.com/store/search?q=\u0002\u00010"
+ },
+ "r": {
+ "*": "http://www.google.com.ar/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001284",
+ "en": "//glosbe.com/ar/en/\u0002\u00010",
+ "oa": "//garoa.net.br/w/index.php?search=\u0002\u00010",
+ "barino": "//www.garbarino.com/productos?q=\u0002\u00010",
+ "den": {
+ "*": "http://www.garden-en.com/s/en/?type=sfd&query=\u0002\u00013",
+ "ersworld": "http://www.gardenersworld.com/search/\u0002\u00010"
+ },
+ "rysmart": "//www.garrysmart.com/scripts/?&t=a&q=\u0002\u00010",
+ "tenexperte": "//www.mein-gartenexperte.de/suche?keywords=\u0002\u00010"
+ },
+ "s": {
+ "*": "http://www.google.as/search?q=\u0002\u00015",
+ "olina": "//www.maisgasolina.com/pesquisa/\u0002/\u00010"
+ },
+ "t": {
+ "*": "http://www.google.at/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001290",
+ "herer": "http://gatherer.wizards.com/Pages/Search/Default.aspx?name=+[\u0002]\u0001114"
+ },
+ "u": "http://www.google.com.au/search?&source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00011188",
+ "dv": "//www.gadventures.com/search/?q=\u0002&ref=ddgsearch\u00010",
+ "ia": "//www.vn-gaia.com/search?SearchForm%5Bkeyword%5D=\u0002&SearchForm%5BlimitSpaceGuids%5D=\u00010",
+ "wi": "//wirtschaftslexikon.gabler.de/search/content?keys=\u0002\u00010",
+ "ana": "//gaana.com/search/\u0002\u000117",
+ "ccess": "http://www.google.com/cse?ie=UTF-8&cx=000183394137052953072%3Azc1orsc6mbq&q=\u0002t&btnG=Search\u00010",
+ "dgets": {
+ "*": "http://gdgts.de/?s=\u0002\u00010",
+ "direct": "http://www.gadgetsdirect.com.au/index.php?main_page=advanced_search_result&search_in_description=1&keyword=\u0002\u00010",
+ "now": "//www.gadgetsnow.com/topic/\u0002?SEARCH_STRING=\u0002\u00010"
+ },
+ "dgetflow": "http://thegadgetflow.com/?s=\u0002&submit=Search\u00010",
+ "ndi": "//www.gandi.net/domain/suggest?domain_list=\u0002\u000125",
+ "ndhi": "//www.gandhi.com.mx/catalogsearch/result/?q=\u0002\u00010",
+ "yburg": "http://gayburg.blogspot.com/search?q=\u0002: \u00010",
+ "zeta": "//www.gazetadopovo.com.br/busca/?q=\u0002\u00010"
+ },
+ "b": {
+ "a": {
+ "*": "//mail.google.com/mail/u/\u0002\u0001139",
+ "n": "http://gamebanana.com/skins/search?search=\u0002 \u00016",
+ "t": "//gbatemp.net/search/87708019/?q=\u0002\u00010"
+ },
+ "c": "//www.greatbritishchefs.com/search2#?pi=1&ps=48&st=\u0002&orderby=\u00010",
+ "e": {
+ "*": "http://www.google.be/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001365",
+ "o": "//en.glosbe.com/en/eo/\u0002\u00016"
+ },
+ "f": "//gbf.wiki/index.php?search=\u0002\u000176",
+ "g": "http://www.google.bg/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00014",
+ "*": "http://books.google.com/books?q=\u0002&btnG=Search+Books\u0001496",
+ "k": "//www.google.com/bookmarks/l#!q=\u0002\u00010",
+ "m": "//www.google.com/bookmarks/find?q=\u0002\u00010",
+ "n": "http://gamebanana.com/search?query=\u0002\u00010",
+ "o": {
+ "*": "http://german-bash.org/?searchtext=\u0002&search_in=both&action=search_\u00013",
+ "oks": "//www.google.com/search?nfpr=1&tbm=bks&q=\u0002\u0001121"
+ },
+ "r": "http://www.google.com.br/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001933",
+ "s": "//gigablast.com/search?c=main&index=search&q=\u0002\u00014",
+ "ip": "http://www.booksinprint.com/Search/Results?q=quicksearch-all%3A\u0002&op=1&qs=1\u00010",
+ "last": "http://gigablast.com/search?q=\u0002 \u00010",
+ "p2brl": "//www.xe.com/currencyconverter/convert/?Amount=\u0002&From=GBP&To=BRL\u00010",
+ "p2eur": "http://www.xe.com/currencyconverter/convert/?Amount=\u0002&From=GBP&To=EUR\u00015",
+ "p2nzd": "//www.xe.com/currencyconverter/convert/?Amount=\u0002&From=GBP&To=NZD\u00010",
+ "p2usd": "http://www.xe.com/currencyconverter/convert/?Amount=\u0002&From=GBP&To=USD\u00010",
+ "ugs": "//bugs.gentoo.org/buglist.cgi?quicksearch=\u0002\u000145"
+ },
+ "c": {
+ "a": {
+ "*": "http://www.google.ca/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00011049",
+ "l": "//calendar.google.com/calendar/b/0/r/search?q=\u0002\u00011505",
+ "t": "http://www.google.cat/#q=\u0002\u00014",
+ "fe": "//www.gamerscafe.com.br/pesquisa/\u0002/\u00010"
+ },
+ "c": "//www.google.com/search?tbm=isch&tbs=sur:fmc&as_q=\u0002\u000118",
+ "*": "//contacts.google.com/search/\u0002\u000118",
+ "h": "http://www.google.ch/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001488",
+ "i": {
+ "*": "//www.google.co.ck/search?q=\u0002\u00010",
+ "de": "http://gcide.gnu.org.ua/?q=\u0002 &define=Define&strategy=.\u00010"
+ },
+ "k": "//www.google.co.ck/search?q=\u0002\u00010",
+ "l": "http://www.google.cl/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001654",
+ "m": {
+ "*": "http://www.gcmap.com/mapui?P=\u0002&MS=wls&DU=nm\u00010",
+ "ap": "http://www.gcmap.com/mapui?P=\u0002\u00010"
+ },
+ "n": "http://www.google.cn/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00014",
+ "o": {
+ "*": "http://www.google.com.co/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001481",
+ "de": "//code.google.com/hosting/search?q=\u0002\u00013",
+ "ntact": "//contacts.google.com/search/\u0002\u000118"
+ },
+ "p": "//cloud.google.com/s/results/?q=\u0002\u000148",
+ "s": "//cloudsearch.google.com/cloudsearch/search?q=\u0002\u000157",
+ "u": {
+ "*": "//www.google.com/search?q=\u0002&source=lnt&tbs=ctr:countryCU&cr=countryCU\u00015",
+ "bed": "//cse.google.com/cse/publicurl?cx=007995818864770319293:3weihy1amkc&cof=FORID:1&q=\u0002\u00010",
+ "ltinst": "//www.google.com/culturalinstitute/browse/\u0002\u00010"
+ },
+ "w": "http://de.creepypasta.wikia.com/wiki/Spezial:Suche?query=\u0002\u00010",
+ "y": "//www.google.com.cy/search?q=\u0002\u00010",
+ "z": "http://www.google.cz/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001165",
+ "ba": "http://www.buenosaires.gob.ar/bweb/search?keys=\u0002\u00010",
+ "ro": "//www.google.hr/#q=\u0002&*\u000118",
+ "enter": "//www.guitarcenter.com/search?typeAheadSuggestion=true&typeAheadRedirect=true&Ntt=\u0002\u00013"
+ },
+ "d": {
+ "b": "http://duckduckgo.com/?q=site:sourceware.org/gdb/current/onlinedocs/gdb/+\u0002\u00015",
+ "d": "http://docs.godotengine.org/en/latest/search.html?q=\u0002&check_keywords=yes&area=default\u00015",
+ "e": {
+ "f": "//www.google.com/search?hl=en&q=define+\u0002\u000139",
+ "*": "http://www.google.de/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00019705",
+ "v": {
+ "*": "//gamedev.stackexchange.com/search?q=\u0002\u00010",
+ "s": "//developers.google.com/s/results/?q=\u0002\u00010"
+ },
+ "en": "//translate.google.com/#de/en/\u0002\u0001141"
+ },
+ "*": "//docs.google.com/document/u/0/?q=\u0002\u0001334",
+ "k": "http://www.google.dk/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001167",
+ "s": "http://www.goodsearch.com/search-web?keywords=\u0002\u00010",
+ "t": "http://gdt.oqlf.gouv.qc.ca/resultat.aspx?terme=\u0002\u000111",
+ "v": "//docs.google.com/viewer?url=\u0002\u00018",
+ "z": "http://gdz.sub.uni-goettingen.de/en/dms/suche/?tx_goobit3_search[formquery]=\u0002&tx_goobit3_search[order]=1&tx_goobit3_search[default]=METADATA&tx_goobit3_search[orderfield]=BYCREATOR&tx_goobit3_search[link]=0\u00010",
+ "ay": "http://www.google.com/search?q=\u0002&tbs=qdr:d\u00017",
+ "gt": "http://gdgt.com/search/\u0002\u00010",
+ "lc": "http://www.diccionari.cat/cgi-bin/AppDLC3.exe?APP=CERCADLC&GECART=\u0002&x=0&y=0\u00010",
+ "ns": "//dns.google.com/query?name=\u0002&type=A&dnssec=true\u00013",
+ "himx": "http://www.gandhi.com.mx/catalogsearch/result/?q=\u0002 \u00010",
+ "iag": "//google.com/safebrowsing/diagnostic?site=\u0002\u00013",
+ "maps": "//ditu.amap.com/search?query=\u0002\u00010",
+ "ocs": "//docs.google.com/document/u/0/?pli=1&tgif=c&q=\u0002\u0001321",
+ "oms": "//domains.google.com/registrar?s=\u0002\u00015",
+ "omains": "//domains.google.com/registrar?s=\u0002\u00015",
+ "oodle": "//www.google.com/doodles?q=\u0002\u00013",
+ "rive": "//drive.google.com/drive/search?q=\u0002\u0001993"
+ },
+ "e": {
+ "c": {
+ "*": "//www.google.com.ec/search?safe=active&q=\u0002\u00013",
+ "ko": "//www.coingecko.com/en/search/bang?query=\u0002\u0001220",
+ "uador": "//www.google.com.ec/search?safe=active&q=\u0002 \u00010"
+ },
+ "e": {
+ "*": "http://www.google.ee/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00010",
+ "k": {
+ "*": "//www.geeks-curiosity.net/?s=\u0002\u00016",
+ "s": {
+ "*": "//www.geeksforgeeks.org/?s=\u0002\u00014",
+ "ided": "http://geeksided.com/?s=\u0002\u00010"
+ },
+ "u": "http://www.geekunivers.com/?s=\u0002 \u00010",
+ "bench": "http://browser.geekbench.com/v4/cpu/search?q=\u0002\u00013",
+ "buying": "http://www.geekbuying.com/Search/?keyword=\u0002\u00010"
+ },
+ "n": {
+ "*": "//translate.google.com/#ge/en/\u0002\u00017",
+ "stijl": "http://www.geenstijl.nl/fastsearch?query=\u0002&zoek=zoek\u00010"
+ },
+ "cr": "//geecr.com/search/\u0002\u00010"
+ },
+ "*": "//google.com/#q=\u0002\u0001368",
+ "m": {
+ "*": "//rubygems.org/search?utf8=%E2%9C%93&query=\u0002\u0001624",
+ "s": "http://rubygems.org/search?query=\u0002\u000141",
+ "ug": "http://www.gemug.ge/?s=\u0002\u00010",
+ "atsu": "//gematsu.com/?s=\u0002\u00010",
+ "atria": "//www.gematrix.org/?word=\u0002\u00010"
+ },
+ "n": {
+ "e": {
+ "a": "//www.genealogieonline.nl/en/zoeken/?q=\u0002 \u00010",
+ "*": "//www.ncbi.nlm.nih.gov/gene/?term=\u0002 \u00013",
+ "cards": "http://www.genecards.org/index.php?path=/Search/keyword/\u0002\u00015",
+ "rasia": "http://www.generasia.com/w/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "sis": "http://gen.lib.rus.ec/search.php?req=\u0002&lg_topic=libgen&open=0&view=simple&res=25&phrase=1&column=def\u000165"
+ },
+ "*": "http://genius.com/search?q=\u0002\u0001925",
+ "hu": "//en.glosbe.com/en/hu/\u0002\u00010",
+ "ma": "//duckduckgo.com/?q=\u0002+site%3Ahttp%3A%2F%2Fgenma.free.fr\u00010",
+ "bank": "http://www.ncbi.nlm.nih.gov/nuccore/?term=\u0002\u000111",
+ "der": "http://gender.wikia.com/search?query=\u0002\u00013",
+ "ickbruch": "http://genickbruch.com/index.php?befehl=suche&sname=\u0002\u00010",
+ "ius": "//genius.com/search?q=\u0002\u00014119",
+ "pkg": "//packages.gentoo.org/packages/search?q=\u0002\u0001159",
+ "too": {
+ "*": "http://wiki.gentoo.org/index.php?search=\u0002\u0001323",
+ "pkg": "//packages.gentoo.org/packages/search?q=\u0002\u0001159",
+ "wiki": "//wiki.gentoo.org/index.php?search=\u0002\u000139"
+ }
+ },
+ "o": {
+ "*": "http://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=\u0002\u000112",
+ "ip": {
+ "*": "http://www.infosniper.net/index.php?ip_address=\u0002\u000133",
+ "tool": "http://geoiptool.com/fr/?IP=\u0002\u00010"
+ },
+ "awesome": "http://geoawesomeness.com/?s=\u0002\u00010",
+ "cache": "http://www.geocaching.com/seek/nearest.aspx?key=\u0002\u00013",
+ "caching": "http://www.geocaching.com/seek/nearest.aspx?key=\u0002\u00013",
+ "graph": {
+ "*": "//www.geograph.org.uk/of/\u0002\u00013",
+ "y": "//geofactoftheday.blogspot.com/search?q=\u0002\u00010"
+ },
+ "names": "http://www.geonames.org/search.html?q=\u0002\u00010",
+ "norge": "//kartkatalog.geonorge.no/search?text=\u0002\u00010",
+ "rges": "http://www.zeno.org/Zeno/0/Suche?q=\u0002&k=Georges-1913\u00010",
+ "tool": "//iplookup.flagfox.net/?ip=\u0002\u00015",
+ "uri": "//www.openstreetmap.org/search?query=\u0002#map=7/0.000/-60.000\u00010"
+ },
+ "s": "//www.google.es/search?q=\u0002 \u00013288",
+ "x": "//search.gexsi.com/en/search/?q=\u0002\u00013",
+ "ar": {
+ "*": "//www.gbase.com/gear?q=\u0002\u00010",
+ "r": "http://ffxiv.gamerescape.com/wiki/Special:Search?search=\u0002\u000126",
+ "best": "http://www.gearbest.com/\u0002 -_gear/\u00010"
+ },
+ "fr": "http://dictionnaire.reverso.net/allemand-francais/\u0002\u00010",
+ "iz": {
+ "*": "//geizhals.eu/?fs=\u0002\u0001167",
+ "hals": {
+ "*": "http://geizhals.at/eu/?in=&fs=\u0002\u000189",
+ "at": "//geizhals.at/?in=&fs=\u0002\u00010",
+ "de": "http://geizhals.de/?fs=\u0002&in=\u000181"
+ }
+ },
+ "-t": "//www.ge-tracker.com/names/\u0002\u00010",
+ "ller": "//bienenzuchtbedarf-geller.de/shop/search?sSearch=\u0002\u00010",
+ "tabstract": "//www.getabstract.com/en/search?initial=true&query=\u0002\u00010",
+ "tchu": "http://www.getchu.com/php/nsearch.phtml?search_keyword=\u0002\u00010",
+ "tdeals": "//getdeals.co.in/search?q=\u0002\u00010",
+ "tfi": "//glosbe.com/et/fi/\u0002\u00010",
+ "thuman": "http://gethuman.com/phone-number/search/?q=\u0002\u00010",
+ "tlinkinfo": "http://www.getlinkinfo.com/info?link=\u0002\u00010",
+ "tracker": "//www.ge-tracker.com/names/\u0002\u00010",
+ "tty": {
+ "*": "//www.gettyimages.com/photos/\u0002\u000117",
+ "images": "http://www.gettyimages.com/Search/Search.aspx?src=quick&contractUrl=1&family=creative&phrase=\u0002\u000113"
+ }
+ },
+ "f": {
+ "a": {
+ "*": "//www.google.com/search?hl=fa&q=\u0002\u00010",
+ "q": {
+ "*": "http://www.gamefaqs.com/search/index.html?game=\u0002\u000121",
+ "s": "http://www.gamefaqs.com/search/index.html?game=\u0002&platform=0\u000152"
+ },
+ "ctory": "http://geniusfactory.fr/search/\u0002\u00010"
+ },
+ "c": "http://greatfirewallofchina.org/index.php?siteurl=\u0002\u00010",
+ "g": {
+ "*": "//www.geeksforgeeks.org/?q=\u0002\u00018",
+ "uru": "//www.gurufocus.com/guru/\u0002/stock-picks\u00010"
+ },
+ "*": "http://finance.google.com/?q=\u0002&sa=N&tab=fe\u00011441",
+ "i": {
+ "*": "//www.google.fi/search?q=\u0002\u0001280",
+ "et": "//glosbe.com/fi/et/\u0002\u00010",
+ "nance": "http://finance.google.com/?q=\u0002&sa=N&tab=fe\u00011441"
+ },
+ "k": "//www.grafikart.fr/search?q=\u0002\u00010",
+ "l": {
+ "*": "//www.google.com/flights/#search;t=\u0002\u000121",
+ "ights": "//www.google.com/flights/#search;t=\u0002\u000121"
+ },
+ "r": "http://www.google.fr/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00017692",
+ "x": "http://www.graffx.fr/blabla/index.php?q=\u0002\u00013",
+ "y": {
+ "*": "//gfycat.com/gifs/search/\u0002\u00018",
+ "catdepot": "//www.reddit.com/r/GfycatDepot/search?q=\u0002&restrict_sr=on&sort=relevance&t=all\u000115"
+ },
+ "bf": "//geriafurch.bzh/fr?q=\u0002&d=brfr\u000112",
+ "fb": "//geriafurch.bzh/fr?q=\u0002&d=frbr\u00019",
+ "ont": {
+ "*": "//fonts.google.com/?query=\u0002\u00018",
+ "s": "//fonts.google.com/?query=\u0002\u00018"
+ },
+ "ork": "//greasyfork.org/en/scripts?q=\u0002\u00016",
+ "orums": "//productforums.google.com/forum/#!topicsearch/\u0002\u00010",
+ "stock": "//www.gurufocus.com/stock/\u0002/summary\u00010",
+ "wiki": "//en.gfwiki.com/index.php?search=\u0002\u000156"
+ },
+ "g": {
+ "b": {
+ "*": "http://www.geogebra.org/cms/\u0002\u00018",
+ "tube": "http://tube.geogebra.org/search/perform/search/\u0002\u00010"
+ },
+ "d": "//www.google.gp/?gws_rd=ssl#q= \u0002 \u00010",
+ "*": "http://groups.google.com/groups/search?q=\u0002&qt_s=Search+Groups\u0001355",
+ "j": "http://globalgamejam.org/?q=\u0002\u00010",
+ "r": {
+ "*": "http://www.google.gr/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001409",
+ "law": "//ggr-law.com/suche/?id=1843&tx_kesearch_pi1%5Bsword%5D=\u0002\u00010",
+ "oups": "http://groups.google.com/groups/search?q=\u0002&qt_s=Search+Groups\u0001355"
+ },
+ "ca": "//gabgagnon.ca/?s=\u0002\u00010",
+ "if": "//google.com/search?q=\u0002&site=webhp&tbm=isch&tbs=itp%3Aanimated\u000164",
+ "net": "//gamegator.net/search.php?q=\u0002\u00010"
+ },
+ "*": "//www.google.com/search?q=\u0002\u00013015732",
+ "+": "//plus.google.com/u/0/s/\u0002 \u00010",
+ "h": {
+ "c": {
+ "*": "//github.com/search?utf8=✓&q=\u0002&type=Code\u000165",
+ "ode": "//github.com/search?utf8=✓&q=\u0002&type=Code\u000165"
+ },
+ "*": "//github.com/search?utf8=%E2%9C%93&q=\u0002\u000124658",
+ "k": "http://www.google.com.hk/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001906",
+ "l": "http://www.groenehartscholen.nl/lyceum/=\u0002\u00010",
+ "p": "//github.com/search?q=is%3Aprivate+\u0002\u000116",
+ "r": {
+ "*": "//github.com/\u0002\u000133",
+ "epo": "//github.com/\u0002\u000133"
+ },
+ "t": {
+ "*": "//github.com/trending/\u0002\u00018",
+ "opic": "//github.com/topic/\u0002\u00010"
+ },
+ "u": {
+ "*": "http://www.google.hu/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001171",
+ "s": {
+ "*": "//github.com/\u0002/\u000160",
+ "er": "//github.com/search?type=Users&q=\u0002\u000114"
+ },
+ "en": "//en.glosbe.com/hu/en/\u0002\u00013"
+ },
+ "at": "//geizhals.at/?in=&fs=\u0002\u00010",
+ "de": "//geizhals.de/?fs=\u0002\u0001274",
+ "io": "//duckduckgo.com/?q=site%3Agithub.io+\u0002&ia=web\u00010",
+ "js": "//github.com/search?l=JavaScript&o=desc&q=\u0002&s=indexed&type=Code\u00010",
+ "acks": "//www.ghacks.net/?s=\u0002\u000147",
+ "ananews": "//ghananews.xyz/?s=\u0002\u00010",
+ "our": "//google.com/search?q=\u0002&tbs=qdr:h\u00014"
+ },
+ "i": {
+ "a": {
+ "*": "http://www.gia.edu/cs/Satellite?pagename=GST%2FDispatcher&childpagename=GIA%2FPage%2FReportCheck&c=Page&cid=1355954554547&reportno=\u0002\u00010",
+ "u": "//www.google.com.au/search?tbm=isch&q=\u0002&tbs=imgo:1\u00010",
+ "nt": {
+ "*": "//www.giant-bicycles.com/global/search?keyword=\u0002\u00010",
+ "bomb": "http://www.giantbomb.com/search/?q=\u0002\u000144"
+ },
+ "llozafferano": "//www.giallozafferano.it/ricerca-ricette/\u0002\u00010"
+ },
+ "b": {
+ "*": "//gibiru.com/results.html?q=\u0002&cx=partner-pub-5956360965567042%3A8627692578&cof=FORID%3A11&ie=UTF-8\u000117",
+ "bon": "//gibbon.co/search?q=\u0002\u00010",
+ "ert": {
+ "*": "//www.gibert.com/catalogsearch/result/?q=\u0002\u00010",
+ "j": "http://www.gibertjoseph.com/catalogsearch/result/?q=\u0002\u00010"
+ }
+ },
+ "c": {
+ "a": "http://www.google.ca/search?q=\u0002&tbm=isch\u0001127",
+ "*": "//www.google.com/search?q=\u0002&tbm=isch&sout=1\u00014"
+ },
+ "d": "http://www.google.co.id/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001799",
+ "e": {
+ "*": "http://www.google.ie/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001173",
+ "z": {
+ "*": "http://geizhals.at/eu/?in=&fs=\u0002\u000189",
+ "hals": "http://geizhals.at/eu/?in=&fs=\u0002\u000189"
+ }
+ },
+ "f": {
+ "f": {
+ "*": "http://gif-finder.com/?s=\u0002\u00010",
+ "gaff": "http://community.giffgaff.com/t5/forums/searchpage/tab/message?q=\u0002\u00010"
+ },
+ "*": "//giphy.com/search/\u0002\u0001390",
+ "l": "http://google.com/search?btnI=1&q=\u0002\u000118",
+ "cities": "http://gifcities.org/?q=\u0002\u00010",
+ "tinfo": "http://www.giftinformation.se/searchpage/?query=\u0002\u00010"
+ },
+ "*": "//google.com/search?tbm=isch&q=\u0002&tbs=imgo:1\u000172653",
+ "i": "http://www.gesetze-im-internet.de/cgi-bin/htsearch?config=Gesamt_bmjhome2005&method=and&words=\u0002\u000112",
+ "k": "http://www.google.co.il/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00010",
+ "l": "//www.google.co.il/#q=\u0002\u00015",
+ "m": {
+ "g": "//www.google.com/search?tbm=isch&q=\u0002&tbs=imgo:1\u00011611",
+ "*": "//google.com/search?tbm=isch&q=\u0002&tbs=imgo:1\u000172653",
+ "ages": "//google.com/search?tbm=isch&q=\u0002&tbs=imgo:1\u000172653"
+ },
+ "n": "//www.google.co.in/#q=\u0002\u000155",
+ "p": {
+ "*": "http://glosbe.com/it/pl/\u0002\u00013",
+ "hy": {
+ "*": "http://giphy.com/search/\u0002 \u00011084",
+ "tv": "http://tv.giphy.com/\u0002\u00010"
+ }
+ },
+ "r": "http://dearcomputer.nl/gir/?q=\u0002&s=8&imgtype=any\u00018",
+ "s": {
+ "*": "//www.google.com/search?site=imghp&tbm=isch&q=\u0002\u0001703",
+ "t": "//gist.github.com/search?q=\u0002\u0001131",
+ "se": "//gis.stackexchange.com/search?q=\u0002\u00010",
+ "afeoff": "http://www.google.com/images?safe=off&q=\u0002\u00015",
+ "off": "http://www.google.com/images?safe=off&q=\u0002\u00015",
+ "stackexchange": "http://gis.stackexchange.com/search?q=\u0002 \u00010"
+ },
+ "t": {
+ "2": "//libgit2.github.com/libgit2/#HEAD/search/\u0002\u00010",
+ "*": "//github.com/search?utf8=%E2%9C%93&q=\u0002\u000124658",
+ "i": {
+ "*": "//www.google.fr/maps/dir/\u0002/\u0002\u00010",
+ "gnore": "//www.gitignore.io/api/\u0002\u00017"
+ },
+ "l": {
+ "*": "http://www.google.it/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001179",
+ "ab": "//gitlab.com/search?utf8=%E2%9C%93&search=\u0002&group_id=&repository_ref=\u0001202"
+ },
+ "docs": "//git-scm.com/search/results?search=\u0002\u000122",
+ "hub": {
+ "*": "http://github.com/search?q=\u0002&type=Everything&repo=&langOverride=&start_value=1\u00014613",
+ "help": "//help.github.com/search/?q=\u0002\u00010",
+ "stars": "//github.com/stars?utf8=%E2%9C%93&q=\u0002\u000113"
+ },
+ "ote": "//gitote.in/explore/repos?q=\u0002\u00010",
+ "-scm": "//git-scm.com/search/results?search=\u0002\u000122",
+ "tigidiyor": "http://www.gittigidiyor.com/arama/?k=\u0002\u00013"
+ },
+ "ga": {
+ "*": "http://www.gigablast.com/search?q=\u0002\u00010",
+ "om": "http://gigaom.com/?s=\u0002\u00010",
+ "blast": "http://www.gigablast.com/search?q=\u0002\u00010",
+ "byte": "//www.gigabyte.com/Search?kw=\u0002\u00010",
+ "-cultures": "http://giga-cultures.com/recherche?controller=search&search_query=\u0002:\u00010",
+ "ntti": "http://www.gigantti.fi/search?SearchTerm=\u0002\u00015"
+ },
+ "uk": "http://www.google.co.uk/search?tbm=isch&q=\u0002&tbs=imgo:1\u000115",
+ "ve": "//www.givero.com/search?q=\u0002\u00015",
+ "url": "//www.google.com/searchbyimage?image_url=\u0002\u000173",
+ "zes": "http://es.gizmodo.com/search?q=\u0002\u00010",
+ "zmodo": "http://gizmodo.com/search?q=\u0002\u00010",
+ "zoogle": "http://www.gizoogle.net/index.php?search=\u0002\u00010"
+ },
+ "j": {
+ "*": "http://www.google.co.jp/search?q=\u0002\u00012705",
+ "p": "http://www.google.co.jp/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001207",
+ "ensidige": "//www.gjensidige.no/s%C3%B8k?query=\u0002\u00010"
+ },
+ "k": {
+ "*": "//www.gamekult.com/rechercher-jeu.html?q=\u0002\u00017",
+ "r": "http://www.google.co.kr/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00013"
+ },
+ "l": {
+ "d": "//www.glassdoor.com/Reviews/company-reviews.htm?suggestCount=0&suggestChosen=false&clickSource=searchBtn&typedKeyword=\u0002+&sc.keyword=\u0002+&locT=&locId=&jobType=\u00010",
+ "k": "//www.google.lk/search?q=\u0002\u000126",
+ "n": "//www.gepir.de/?search=\u0002\u00010",
+ "*": "//www.opengl.org/search/?cx=017055583490642512057%3Ahwpumfa180i&cof=FORID%3A9&q=\u0002\u000166",
+ "s": {
+ "e": "//german.stackexchange.com/search?q=\u0002\u00010",
+ "*": "//duckduckgo.com/?q=site%3Agolang.org+\u0002\u00016"
+ },
+ "t": "http://www.google.lt/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u000116",
+ "u": {
+ "*": "//www.google.lu/search?q=\u0002\u000128",
+ "ck": "http://www.google.com/search?q=\u0002&btnI\u000192",
+ "tenfreerecipebox": "//glutenfreerecipebox.com/?s=\u0002\u00010"
+ },
+ "v": "http://www.google.lv/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00013",
+ "ab": "//gitlab.com/search?utf8=✓&search=\u0002\u0001190",
+ "adrys": "http://gladrys.com/search0results-plant\u0002.html\u00010",
+ "assdoor": "//www.glassdoor.com/Job/jobs.htm?sc.keyword=\u0002\u000140",
+ "atest": "http://www.google.com/search?q=\u0002&tbs=rltm:1\u000113",
+ "ink": "http://www.google.com/search?as_lq=\u0002&hl=en&btnG=Search\u00013",
+ "itch": "//glitch.com/search?q=\u0002\u00010",
+ "mail": "http://www.theglobeandmail.com/search/?q=\u0002\u00010",
+ "obal": {
+ "*": "http://www.globalresearch.ca/search?q=\u0002\u00014",
+ "edge": "http://globaledge.msu.edu/search?q=\u0002\u00010"
+ },
+ "obeandmail": "//www.theglobeandmail.com/search/?q=\u0002&mode=all\u00010",
+ "obetrotter": "//www.globetrotter.de/search?q=\u0002\u00010",
+ "oboesporte": "//globoesporte.globo.com/busca/?q=\u0002\u00010",
+ "ocal": "http://local.google.com/maps?f=q&source=s_q&geocode=&q=\u0002\u00010",
+ "oriatv": "http://gloria.tv/?search=\u0002\u00010",
+ "otnl": "http://interglot.com/dictionary/nl/en/search?q=\u0002\u00010",
+ "otenes": "http://www.interglot.com/dictionary/en/es/search?q=\u0002 \u00010",
+ "otennl": "http://www.interglot.com/dictionary/en/nl/search?q=\u0002\u00010",
+ "otesen": "http://www.interglot.com/dictionary/es/en/search?q=\u0002 \u00010",
+ "ottolog": "http://glottolog.org/glottolog?search=\u0002\u00010",
+ "wiki": "//www.khronos.org/opengl/wiki_opengl/index.php?search=\u0002\u00010",
+ "yde": "http://glyde.com/stores/glyde#!display_as=2&s_query=\u0002\u00010"
+ },
+ "m": {
+ "a": {
+ "*": "//mail.google.com/mail/u/0/#search/\u0002\u0001842",
+ "n": {
+ "*": "//support.google.com/search?q=\u0002\u00013",
+ "ews": "//www.gmanetwork.com/news/search/?q=\u0002\u00010"
+ },
+ "p": {
+ "*": "http://maps.google.com/maps?q=\u0002\u00011825",
+ "s": "http://maps.google.com/maps?q=\u0002\u00011825"
+ },
+ "t": "//www.google.at/maps/search/\u0002\u00010",
+ "u": "//www.google.com.au/maps/search/\u0002 \u000114",
+ "il": {
+ "*": "//mail.google.com/mail/#search/\u0002\u000110343",
+ "h": "//mail.google.com/mail/u/0/h/?s=q&q=\u0002&nvp_site_mail=Search%20Mail\u000131"
+ },
+ "rket": "http://search.gmarket.co.kr/search.aspx?keyword=\u0002\u00013"
+ },
+ "c": {
+ "a": "//www.google.ca/maps/?q=\u0002\u00010",
+ "*": "//www.google.com/maps?q=\u0002&output=classic\u00010",
+ "l": "//www.google.cl/maps/place/\u0002\u00010"
+ },
+ "d": {
+ "e": "//www.google.de/maps/place/\u0002\u000168",
+ "*": "//www.google.com/maps/dir/\u0002\u00014",
+ "ir": "//www.google.com/maps/dir//\u0002\u00013"
+ },
+ "e": "//www.gme.cz/vysledky-vyhledavani?search_keyword= \u0002\u000126",
+ "g": {
+ "f": "//www.greenmangaming.com/search/\u0002\u00010",
+ "*": "//www.greenmangaming.com/search/\u0002\u00010"
+ },
+ "*": "//google.com/maps/place/\u0002\u000154724",
+ "l": "//www.gml.se/bocker/sok?q=\u0002\u00014",
+ "r": "//gumroad.com/discover?query=\u0002\u00010",
+ "x": "//www.google.com.mx/#q=\u0002\u000184",
+ "y": "http://www.google.com.my/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00013",
+ "fr": "//www.google.fr/maps/search/\u0002\u000144",
+ "il": "//www.google.co.il/maps/search/\u0002/?hl=iw\u00016",
+ "it": "//www.google.it/maps/place/\u0002\u00010",
+ "jp": "//www.google.co.jp/maps/place/\u0002\u00013",
+ "nl": "//www.google.de/maps/place/\u0002\u000168",
+ "ob": "http://www.google.com/gwt/x?u=\u0002\u00010",
+ "od": "http://wiki.garrysmod.com/page/Special:Search?search=\u0002&fulltext=Search\u000114",
+ "ps": "http://geekmps.fr/component/search/?searchword=\u0002 \u00010",
+ "si": "//www.google.si/maps/search/\u0002/\u00013",
+ "tw": "//www.google.com.tw/maps?hl=zh-TW&q=\u0002\u000126",
+ "uk": "//www.google.co.uk/maps/place/\u0002 \u000132",
+ "onth": "http://www.google.com/search?q=\u0002&tbs=qdr:m\u000153",
+ "usic": "http://music.google.com/music/listen?#\u0002_sr\u00010"
+ },
+ "n": {
+ "b": {
+ "*": "//www.bibleserver.com/search/GNB/\u0002/1\u00010",
+ "e": "//news.google.com/news/search/section/q/\u0002/?gl=BE&ned=nl_be&hl=nl\u00010"
+ },
+ "*": "//news.google.com/news/search/section/q/\u0002\u000110970",
+ "l": {
+ "*": "http://www.google.nl/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001968",
+ "m": "http://globalnewlightofmyanmar.com/?s=\u0002\u00010"
+ },
+ "m": "http://www.google.com/m/search?site=news&q=\u0002\u00015",
+ "o": {
+ "*": "http://www.google.no/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001287",
+ "me": {
+ "*": "http://live.gnome.org/Home?action=fullsearch&context=180&value=\u0002&titlesearch=Titles\u00015",
+ "bugs": "//gitlab.gnome.org/groups/GNOME/-/issues?search=\u0002\u00010",
+ "dev": "//developer.gnome.org/symbols/?q=\u0002\u00010",
+ "wiki": "//wiki.gnome.org/Home?action=fullsearch&context=180&value=\u0002&titlesearch=Titles\u00010"
+ }
+ },
+ "s": {
+ "e": "//news.google.com/search?q=\u0002&hl=sv&gl=SE&ceid=SE%3Asv\u00013",
+ "*": "//google.com/search?q=\u0002&hl=es&prmd=niv&source=lnms&tbm=nws&sa=\u00014"
+ },
+ "t": "http://www.generation-nt.com/s/\u0002/\u00010",
+ "u": {
+ "*": "http://www.gnu.org/cgi-bin/estseek.cgi?phrase=\u0002\u000119",
+ "k": "//www.google.co.uk/search?hl=en&gl=uk&tbm=nws&authuser=0&q=\u0002\u000146",
+ "s": "//news.google.com/news/search/section/q/\u0002/\u0002?hl=en&ned=us\u000119"
+ },
+ "z": "http://www.google.co.nz/search?&source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001186",
+ "at": "//www.google.at/#q=\u0002&tbm=nws\u00010",
+ "au": "//news.google.com/search?q=\u0002&hl=en-AU&gl=AU&ceid=AU%3Aen\u00015",
+ "ca": "//news.google.com/news/search/section/q/\u0002/\u0002?hl=en-CA&ned=ca\u00010",
+ "cr": "//www.google.com/search?gws_rd=cr&gl=us&hl=en&num=20&q=\u0002\u0001112",
+ "da": "//www.google.com/?gws_rd=ssl#q=\u0002&tbs=ida:1&gl=us\u00010",
+ "de": "//news.google.com/news/search/section/q/\u0002?hl=de&ned=de\u0001231",
+ "es": "//www.google.es/search?q=\u0002&prmd=nvi&source=lnms&tbm=nws&sa=X&ved=0ahUKEwiTxIfujK3XAhXItRoKHTQfDLYQ_AUIEigB&biw=375&bih=553\u00015",
+ "fr": "http://www.google.fr/search?aq=f&hl=fr&gl=fr&tbm=nws&btnmeta_news_search=1&q=\u0002 \u000124",
+ "it": "//www.google.it/search?q=\u0002&hl=it&source=lnms&tbm=nws\u000118",
+ "nl": "//www.google.com/search?hl=nl&gl=nl&tbm=nws&q=\u0002\u00010",
+ "ru": "//www.google.ru/search?q=\u0002&tbm=nws&cad=h\u00010",
+ "avi": "//r.gnavi.co.jp/area/jp/rs/?fwr=\u0002\u00010",
+ "ews": "//news.google.com/news/search/section/q/\u0002/\u0002\u00011467"
+ },
+ "o": {
+ "d": {
+ "e": "//dictionary.goo.ne.jp/word/en/\u0002/\u00010",
+ "*": "http://www.gutsofdarkness.com/god/recherche.php?r1=\u0002\u000110",
+ "j": "//dictionary.goo.ne.jp/srch/jn/\u0002/m1u/\u00010",
+ "s": "//dictionary.goo.ne.jp/thsrs/3913/meaning/m1u/\u0002/\u00010",
+ "oc": "//godoc.org/?q=\u0002\u0001306",
+ "ot": {
+ "*": "http://docs.godotengine.org/en/stable/search.html?q=\u0002&check_keywords=yes&area=default\u000190",
+ "qa": "//godotengine.org/qa/search?q=\u0002\u00010"
+ },
+ "addy": "//www.godaddy.com/dpp/find?checkAvail=1%2c1&isc=daytona08&ci=8962&domainToCheck=\u0002\u000112",
+ "ville": "http://wiki.godvillegame.com/index.php?search=\u0002\u00010"
+ },
+ "e": {
+ "*": "//www.goettingen.de/portalsuche.html?keyword=\u0002\u00010",
+ "ttingen": "http://www.wiki-goettingen.de/index.php?search=\u0002\u00010"
+ },
+ "g": {
+ "*": "//www.gog.com/games?search=\u0002\u0001570",
+ "o": "http://www.goodgopher.com/SearchResults.asp?query=\u0002&pr=GG\u00010",
+ "db": "//www.gogdb.org/products?search=\u0002\u000122"
+ },
+ "*": "//mail.google.com/mail/u/0/#search/\u0002\u0001842",
+ "l": {
+ "d": {
+ "*": "http://goldbook.iupac.org/terms/search/\u0002\u00010",
+ "en": {
+ "*": "//golden.com/search/\u0002\u00010",
+ "line": "http://www.goldenline.pl/szukaj/?q=\u0002\u00010",
+ "moustache": "http://www.goldenmoustache.com/?s=\u0002\u00010"
+ }
+ },
+ "*": "http://www.gamingonlinux.com/index.php?module=search&q=\u0002\u000185",
+ "em": "http://suche.golem.de/search.php?l=10&q=\u0002\u00016",
+ "ang": "http://golang.org/search?q=\u0002\u000186",
+ "fparks": "http://www.golfparks.ch/de/suche?q=\u0002\u00010",
+ "ivelively": "http://golivelively.com/tag/\u0002\u00010"
+ },
+ "o": {
+ "d": {
+ "*": "//m.banggood.com/search/\u0002.html\u000118",
+ "g": {
+ "*": "http://goodgopher.com/SearchResults.asp?query=\u0002&pr=GG\u00010",
+ "uys": "//www.thegoodguys.com.au/SearchDisplay?categoryId=&storeId=900&catalogId=30000&langId=-1&sType=SimpleSearch&resultCatEntryType=2&showResultsPage=true&searchSource=Q&pageView=&beginIndex=0&orderBy=0&pageSize=60&searchTerm=\u0002\u00010"
+ },
+ "feeds": "//goodfeeds.net/search?q=\u0002\u00010",
+ "films": "http://goodfil.ms/search?term=\u0002\u00010",
+ "foodau": "//www.goodfood.com.au/search?text=\u0002&type=recipe\u00010",
+ "reads": {
+ "*": "http://www.goodreads.com/search/search?search_type=books&search[query]=\u0002\u0001666",
+ "list": "//www.goodreads.com/search?search_type=lists&q=\u0002\u00010"
+ },
+ "search": "http://www.goodsearch.com/search-web?keywords=\u0002\u00010"
+ },
+ "g": {
+ "*": "http://www.google.com/?q=\u0002\u0001401",
+ "le": {
+ "*": "//www.google.com/search?q=\u0002\u00013015732",
+ "be": "//www.google.be/#q=\u0002\u00010",
+ "ch": "//www.google.ch/search?q=\u0002\u00010",
+ "fr": "//www.google.fr/#q=\u0002\u00013",
+ "in": "//www.google.co.in/search?q=\u0002\u000188",
+ "it": "//google.com/search?hl=it&q=\u0002\u000127",
+ "jp": "//www.google.co.jp/search?q=\u0002\u00017",
+ "oz": "//www.google.com.au/#q=\u0002\u00014",
+ "pl": {
+ "*": "//www.google.pl/#q=\u0002\u00010",
+ "ay": "//play.google.com/store/search?q=\u0002\u00010"
+ },
+ "pt": "//www.google.pt/search?hl=pt_pt&q=\u0002\u00015",
+ "se": "http://google.se/?q=\u0002\u000110",
+ "sv": "//www.google.com.sv/#q=\u0002\u00010",
+ "tr": "//www.google.com.tr/search?q=\u0002 \u00010",
+ "uk": "http://www.google.co.uk/search?&source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001474",
+ "books": "//www.google.com/search?tbm=bks&q=\u0002\u000113",
+ "fonts": "//fonts.google.com/?query=\u0002\u00018",
+ "img": "//google.com/search?tbm=isch&q=\u0002&tbs=imgo:1\u000172653",
+ "images": "//google.com/search?tbm=isch&q=\u0002&tbs=imgo:1\u000172653",
+ ".kr": "//www.google.co.kr/?gws_rd=cr&ei=GEnlVfT8BMOJuQT8tLPYDg=\u0002\u00010",
+ "map": {
+ "*": "http://maps.google.com/maps?q=\u0002\u00011825",
+ "s": "http://maps.google.com/maps?q=\u0002\u00011825"
+ },
+ "scholar": "http://scholar.google.com/scholar?hl=en&q=\u0002\u0001183"
+ }
+ },
+ "*": "http://search.goo.ne.jp/web.jsp?MT=\u0002&IE=UTF-8&OE=UTF-8\u000190",
+ "j": "http://dictionary.goo.ne.jp/srch/all/\u0002/m0u/\u000116",
+ "od": "//thegooodshop.com/?s=\u0002&post_type=product\u00010",
+ "sh": "http://goosh.org/#\u0002\u00010",
+ "kokugo": "http://dictionary.goo.ne.jp/srch/jn/\u0002 /m0u/\u000113",
+ "utbrno": "//goout.net/cs/brno/#\"?\":\"\u0002\"\u00010",
+ "utprague": "//goout.net/cs/praha/#\"?\":\"\u0002\"\u00010"
+ },
+ "s": {
+ "*": "http://guruofsales.com/?s=\u0002\u00010",
+ "v": "//www.google.com.sv/#q=\u0002\u00010",
+ "pell": "http://www.gospell.org/index.php?search=\u0002\u00010",
+ "sip": "http://www.numbergossip.com/?number=\u0002\u00010"
+ },
+ "t": {
+ "*": "http://gathering.tweakers.net/forum/find?keyword=\u0002\u0001133",
+ "o": "//goto.google.com/\u0002\u00010",
+ "here": "//gothere.sg/maps#q:\u0002\u00010",
+ "hic": "//almanach.worldofgothic.de/index.php/Spezial:Suche?search=\u0002\u00010",
+ "questions": "//www.gotquestions.org/search.php?zoom_query=\u0002\u000116",
+ "rade": "//www.reddit.com/r/GlobalOffensiveTrade/search?q=\u0002&restrict_sr=on&sort=new&t=all\u00010"
+ },
+ "v": {
+ "*": "//search.usa.gov/search?affiliate=usagov&query=\u0002\u00014",
+ "uk": "//www.gov.uk/search?q= \u0002\u000121",
+ "images": "//search.usa.gov/search/images?affiliate=usagov&query=\u0002\u00010",
+ "track": "http://www.govtrack.us/search?q=\u0002\u00010",
+ ".uk": "//www.gov.uk/search?q=\u0002\u00010"
+ },
+ "at": "//www.goatbots.com/search/\u0002\u00010",
+ "iw": "//gunsoficarusonline.fandom.com/wiki/Special:Search?query=\u0002\u00010",
+ "bago": "//gobago.it/?q=\u0002\u00010",
+ "bang": "http://duckgobang.com/?s=\u0002\u00017",
+ "cafe": "//golang.cafe/Golang-\u0002-Jobs\u00010",
+ "comics": "//www.gocomics.com/search/results?utf8=%E2%9C%93&terms=\u0002\u000123",
+ "compare": "http://www.gocompare.com/searchresults/?q=\u0002\u00010",
+ "fundme": "http://www.gofundme.com/mvc.php?route=search&term=\u0002\u00013",
+ "kifu": "http://gokifu.com/index.php?q=\u0002\u00010",
+ "nthis": "http://gossiponthis.com/search/\u0002\u00010",
+ "nutss": "//www.gonutss.com/s?q=\u0002\u00010",
+ "pher": "http://gopher.floodgap.com/gopher/gw?ss=gopher%3A%2F%2Fgopher.floodgap.com%3A70%2F7%2Fv2%2Fvs&sq=\u0002\u00014",
+ "pkg": "//golang.org/pkg/\u0002\u000146",
+ "problog": "//www.goproblog.nl/component/search/?searchword=\u0002\u00010",
+ "rafi": "http://www.legorafi.fr/?s=\u0002\u00010",
+ "rila": "//www.gorila.sk/vyhladavanie?q=\u0002\u00010",
+ "rilla": "//www.gorillasports.de/search?page=search&page_action=query&desc=on&sdesc=on&keywords=\u0002\u00010",
+ "-search": "http://go-search.org/search?q=\u0002\u00010",
+ "ulet": {
+ "*": "//www.gouletpens.com/pages/search-results?limit=24&q=\u0002\u00010",
+ "pens": "//www.gouletpens.com/pages/search-results?limit=24&q=\u0002\u00010"
+ },
+ "wifi": "http://www.gowifi.co.nz/product-search.html?keyword=\u0002\u00010"
+ },
+ "p": {
+ "a": {
+ "*": "//play.google.com/store/search?q=\u0002&c=apps\u000114",
+ "t": "http://www.google.com/patents?q=\u0002&btnG=Search+Patents\u0001122",
+ "u": "http://www.greenpeace.org/australia/en/System-templates/Site-Settings-Pages/Search/?all=\u0002\u00010",
+ "ckages": "//packages.gentoo.org/packages/search?q=\u0002 \u000115",
+ "frica": "http://www.greenpeace.org/africa/en/Search-results/?all=\u0002\u00010"
+ },
+ "b": "//play.google.com/store/search?c=books&q=\u0002\u00010",
+ "d": {
+ "*": "http://go.pkgdoc.org/?q=\u0002\u00010",
+ "p": "//www.gpdp.it/home/ricerca/-/search/key/\u0002\u00010",
+ "r": "//gpodder.net/search/?q=\u0002 \u00010"
+ },
+ "e": {
+ "a": "http://www.greenpeace.org/eastasia/system-templates/search-results/?all=\u0002\u00010",
+ "*": "http://www.google.com.pe/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u000111",
+ "u": "http://www.greenpeace.org/eu-unit/en/System-templates/such-resultate/?all=\u0002\u00010",
+ "ns": "//www.gouletpens.com/pages/search-results?q=\u0002\u00010"
+ },
+ "g": "http://http-keys.gnupg.net/pks/lookup?op=vindex&search=\u0002\u00019",
+ "*": "//play.google.com/store/search?q=\u0002\u00010",
+ "h": {
+ "*": "//www.google.com.ph/search?hl=en&q=\u0002&tbs=ctr:countryPH&cr=countryPH \u00019",
+ "elp": "//help.gamepedia.com/index.php?search=\u0002\u00010",
+ "otos": "//photos.google.com/search/\u0002\u0001217"
+ },
+ "i": {
+ "*": "http://glosbe.com/pl/it/\u0002\u00013",
+ "o": "//gpio.co.uk/?s=\u0002\u00010",
+ "ndia": "http://www.greenpeace.org/india/en/System-templates/Search-results/?all=\u0002\u00010"
+ },
+ "k": "//golang.org/pkg/\u0002\u000146",
+ "l": {
+ "*": "http://www.google.pl/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001684",
+ "ay": {
+ "*": "//play.google.com/store/search?q=\u0002 \u0001218",
+ "m": "//play.google.com/store/search?q=\u0002&c=music\u00010"
+ },
+ "us": {
+ "*": "//plus.google.com/s/\u0002\u00010",
+ "p": "http://www.google.com/search?tbs=prfl:e&q=\u0002\u00010"
+ }
+ },
+ "m": {
+ "*": "//play.google.com/music/listen#/sr/\u0002\u00010",
+ "usic": "//play.google.com/music/listen?u=0#/sr/\u0002\u00010"
+ },
+ "o": "http://gpo.zugaina.org/Search?search=\u0002\u00019",
+ "s": {
+ "*": "//www.google.com/search?hl=en&tbm=shop&q=\u0002\u000170",
+ "earch": "http://gpsearch.azurewebsites.net/default.aspx?search=\u0002\u00010",
+ "easia": "http://www.greenpeace.org/seasia/System-templates/Search-results/?all=\u0002\u00010",
+ "ies": "http://gpsies.de/?q=\u0002\u00010"
+ },
+ "t": "//www.google.pt/search?q=\u0002\u0001293",
+ "nz": "http://www.greenpeace.org/new-zealand/en/System-templates/Search-results/?all=\u0002\u00010",
+ "uk": "http://www.greenpeace.org.uk/search/node/\u0002\u00010",
+ "can": {
+ "*": "http://www.greenpeace.org/canada/en/System-templates/Site-Settings-Pages/Search/?all=\u0002\u00010",
+ "fr": "http://www.greenpeace.org/canada/fr/System-templates/Site-Settings-Pages/Recherche/?all=\u0002\u00010"
+ },
+ "philip": "http://www.greenpeace.org/seasia/ph/System-templates/Search-results/?all=\u0002\u00010"
+ },
+ "q": {
+ "+": "//www.gotquestions.org/search.php?zoom_query=\u0002\u000116",
+ "*": "http://www.gq.com/search?qt=dismax&sort=score+desc&query=\u0002\u00015",
+ "uil": "//enguayaquil.com/?s=\u0002\u00010"
+ },
+ "r": {
+ "e": {
+ "*": "//bigenc.ru/search?q=\u0002\u00010",
+ "co": "//www.grecoantico.com/dizionario-greco-antico.php?parola=\u0002\u00010",
+ "ek": "http://www.perseus.tufts.edu/hopper/morph?l=\u0002&la=greek#lexicon\u00013",
+ "en": {
+ "*": "//www.greentech-news.org/?s=\u0002\u00010",
+ "peace": "http://www.greenpeace.org/usa/?s=\u0002\u00010",
+ "sdic": "//greensdictofslang.com/search/basic?q=\u0002\u00010"
+ },
+ "ads": "//www.goodreads.com/search?utf8=✓&query=\u0002\u000116",
+ "asyfork": "//greasyfork.org/scripts/search?q=\u0002\u000112",
+ "ddit": "//google.com/search?q=site%3Areddit.com+\u0002\u0001351",
+ "pmed": "//www.grepmed.com/?q=\u0002\u00010"
+ },
+ "f": "//goblinrefuge.com/mediagoblin/search/?query=\u0002\u00016",
+ "*": "//www.goodreads.com/search?q=\u0002\u00011697",
+ "i": {
+ "*": "//images.google.com/searchbyimage?image_url=\u0002 \u0001332",
+ "md": "http://grimdawn.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010",
+ "llo": "http://www.beppegrillo.it/google_cse.html?q=\u0002&x=-1208&y=-9\u00010",
+ "lls": "//www.grillscatalog.com/?s=\u0002\u00010"
+ },
+ "o": {
+ "g": "//duckduckgo.com/?q=site%3Alegrog.org+\u0002\u00010",
+ "*": "http://www.google.ro/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u000177",
+ "ene": "http://groenewaterman.mijnboekhandelaar.com/index.php?option=com_mbhbooksearch&Itemid=10008&task=gosearch&query=\u0002\u00010",
+ "ovy": "//duckduckgo.com/?q=\u0002+site:docs.groovy-lang.org\u00010",
+ "sbill": "//www.grosbill.com/catv2.cgi?mode=recherche&recherche=\u0002\u00010",
+ "ssoshop": "http://www.grossoshop.net/index.php?route=product/search&search=\u0002\u00010",
+ "ttopress": "//www.grottopress.com/?s=\u0002\u00010",
+ "undai": "//www.groundai.com/search/?text=\u0002&sort=_score\u00010",
+ "upon": "//www.groupon.com/browse/?query=\u0002\u00010",
+ "upees": "//groupees.com/?q=\u0002:\u00010",
+ "ute": "//www.google.de/maps/dir/\u0002\u00014",
+ "uvee": "http://www.grouvee.com/search/?q=\u0002\u00010"
+ },
+ "p": "http://plugins.grails.org/?query=\u0002&submit=Search\u00010",
+ "s": "//www.google.rs/search?q=\u0002\u00010",
+ "u": {
+ "b": {
+ "*": "//www.grubhub.com/search/?cuisine=\u0002\u00010",
+ "hub": "//www.grubhub.com/search?queryText=\u0002\u00018"
+ },
+ "*": "//google.ru/search?hl=ru&q=\u0002\u0001188",
+ "mps": "//www.youtube.com/user/GameGrumps/search?query=\u0002\u00010"
+ },
+ "av": {
+ "e": "http://www.findagrave.com/php/famous.php?globalSearchCriteria=\u0002\u00010",
+ "*": "//learn.getgrav.org/search?q=\u0002\u00010"
+ },
+ "cp": "//www.grc.com/port_\u0002.htm\u00010",
+ "abar": "http://www.nayiri.com/imagedDictionaryBrowser.jsp?dictionaryId=28&dt=HY_HY&query=\u0002\u00010",
+ "abcad": "http://grabcad.com/library?per_page=20&query=\u0002 \u00010",
+ "adle": {
+ "*": "http://duckduckgo.com/?q=site%3Agradle.org+\u0002\u000112",
+ "p": "//plugins.gradle.org/search?term=\u0002\u00010"
+ },
+ "adcafe": "http://thegradcafe.com/survey/index.php?q=\u0002\u00010",
+ "afikart": "//www.grafikart.fr/search?q=\u0002\u00010",
+ "ailed": "http://www.grailed.com/search?search=\u0002 \u00019",
+ "ainger": "http://www.grainger.com/search?nls=1&searchQuery=\u0002 \u00015",
+ "ammis": "//grammis.ids-mannheim.de/suche?search=\u0002&research=&research%5B%5D=sysgrams&research%5B%5D=corpora&research%5B%5D=phonos&research%5B%5D=terms&knowledge=&knowledge%5B%5D=questions&knowledge%5B%5D=programs&knowledge%5B%5D=eurograms&knowledge%5B%5D=orthos&ressources=&ressources%5B%5D=connectors&ressources%5B%5D=affixes&ressources%5B%5D=prepositions&ressources%5B%5D=verbs&scat=DuckDuckGo+Bang\u00010",
+ "amota": "http://gramota.ru/slovari/dic/?word=\u0002&all=x\u00014",
+ "aph": {
+ "*": "http://graph.tk/#\u0002\u00010",
+ "emica": "http://graphemica.com/search?q=\u0002\u000128",
+ "hopper": "//graphhopper.com/maps/?point=\u0002&point=\u0002\u00019",
+ "icriver": "http://graphicriver.net/search?utf8=%E2%9C%93&term=\u0002\u00010"
+ },
+ "atefuldead": "http://archive.org/search.php?query=\u0002%20AND%20collection%3AGratefulDead\u00010",
+ "aylog": "//marketplace.graylog.org/addons?search=\u0002\u00010",
+ "yonline": "//www.gry-online.pl/gry/\u0002/\u00010"
+ },
+ "s": {
+ "a": {
+ "*": "//www.gsaadvantage.gov/advantage/s/search.do?q=0:0\u0002&db=0&searchType=1\u00013",
+ "u": "//www.google.com.au/search?biw=1920&bih=947&tbm=shop&q=\u0002\u000110",
+ "fe": "//www.google.com/search?hl=all&safe=on&pws=0&q=\u0002\u00010"
+ },
+ "c": {
+ "*": "http://scholar.google.com/scholar?q=\u0002&btnG=Search&as_sdt=800000000001&as_sdtp=on\u00016144",
+ "h": {
+ "*": "http://scholar.google.com/scholar?&q=\u0002\u00011454",
+ "ol": {
+ "*": "http://scholar.google.com/scholar?q=\u0002 \u0001236",
+ "ar": "http://scholar.google.com/scholar?q=\u0002&btnG=Search&as_sdt=800000000001&as_sdtp=on\u00016144"
+ }
+ }
+ },
+ "e": "http://www.google.se/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001256",
+ "g": "http://www.google.com.sg/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00010",
+ "*": "http://www.google.com/products?q=\u0002&sa=N&tab=pf\u00012656",
+ "h": {
+ "*": "//docs.google.com/spreadsheets/u/0/?q=\u0002\u000126",
+ "eet": {
+ "*": "//docs.google.com/spreadsheets/u/0/?q=\u0002\u000126",
+ "s": "//docs.google.com/spreadsheets/u/0/?q=\u0002\u000126"
+ },
+ "opping": "//www.google.com/products?q=\u0002&sa=N&tab=pf\u0001130"
+ },
+ "i": {
+ "*": "//www.google.si/search?q=\u0002\u000114",
+ "t": "//www.google.it/search?hl=it&tbm=shop&q=\u0002\u00010"
+ },
+ "k": "http://www.google.sk/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u000197",
+ "l": {
+ "*": "http://www.google.com.sl/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00019",
+ "ides": "//slides.google.com/presentation/u/0/?q=\u0002\u000135"
+ },
+ "m": {
+ "a": {
+ "*": "http://www.gsmarena.com/results.php3?sName=\u0002\u000118",
+ "rena": "http://www.gsmarena.com/results.php3?sName=\u0002\u000118"
+ },
+ "*": "http://www.gsmarena.com/results.php3?sName=\u0002\u000118",
+ "punt": "//www.gsmpunt.nl/zoeken?z=\u0002\u00010"
+ },
+ "o": "//google.com/search?q=%2B%5Binurl%3Ahttp%3A%2F%2Fstackoverflow.com%5D+\u0002\u00010",
+ "p": {
+ "*": "//de.gegenstandpunkt.com/artikel/suche?modus=AND&volltextsuche=\u0002\u00015",
+ "ace": "//glammingspace.blogspot.com/search?q=\u0002\u00013",
+ "ort": "//www.gsport.no/magento/sok?q=\u0002\u00010",
+ "readsheets": "//docs.google.com/spreadsheets/u/0/?q=\u0002\u000126"
+ },
+ "v": "//google.com/search?hl=sv&q=\u0002\u000111",
+ "w": "//wiki.greasespot.net/index.php?title=Special%3ASearch&fulltext=Search&search=\u0002\u00010",
+ "x": "//www.google.com/shopping/express/#SearchResultsPlace:s=0&c=24&q=\u0002\u00010",
+ "br": "http://www.google.com.br/search?q=\u0002&hl=pt-BR&safe=off&biw=1108&bih=651&prmd=imvns&source=univ&tbm=shop&tbo=u&sa=X&ei=ZculTqjGLcvAgQf5n_CxBQ&ved=0CJkBEK0E\u00010",
+ "rc": "http://www.gradesource.com/findcourse.asp?sb=C&name=\u0002&st=0&x=0&y=0\u00010",
+ "sl": "//google.com/search?q=\u0002\u0001603",
+ "uk": "http://www.google.co.uk/search?q=\u0002&tbm=shop\u000198",
+ "us": "//www.google.com/search?tbm=shop&q=\u0002&gws_rd=cr\u00010",
+ ".es": "//www.google.es/search?tbm=shop&q=\u0002\u00010",
+ "tore": "//store.google.com/search?q=\u0002\u00010",
+ "upport": "//support.google.com/search?q=\u0002\u00013"
+ },
+ "t": {
+ "f": {
+ "a": "//translate.google.com/#auto/fa/\u0002\u000110",
+ "*": "//www.glocktalk.com/search/10717176/?q=\u0002&o=date\u00010",
+ "i": {
+ "*": "//translate.google.com/#auto/fi/\u0002\u000115",
+ "lipino": "//translate.google.com/#auto/tl/\u0002\u00010",
+ "nnish": "//translate.google.com/#auto/fi/\u0002\u000115"
+ },
+ "r": {
+ "*": "//translate.google.com/#auto/fr/\u0002\u0001395",
+ "ench": "//translate.google.com/#auto/fr/\u0002\u0001395"
+ }
+ },
+ "*": "//translate.google.com/#auto/en/\u0002\u00011136",
+ "h": {
+ "a": {
+ "*": "//translate.google.com/#auto/ha/\u0002\u00010",
+ "itiancreole": "//translate.google.com/#auto/ht/\u0002\u00010",
+ "usa": "//translate.google.com/#auto/ha/\u0002\u00010"
+ },
+ "*": "http://www.google.co.th/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00018",
+ "i": {
+ "*": "//translate.google.com/#auto/hi/\u0002\u00016",
+ "ndi": "//translate.google.com/#auto/hi/\u0002\u00016"
+ },
+ "r": "//translate.google.com/#auto/hr/\u0002\u00010",
+ "t": "//translate.google.com/#auto/ht/\u0002\u00010",
+ "u": {
+ "*": "//translate.google.com/#auto/hu/\u0002\u000129",
+ "ngarian": "//translate.google.com/#auto/hu/\u0002\u000129"
+ },
+ "y": "//translate.google.com/#auto/hy/\u0002\u00010",
+ "mn": "//translate.google.com/#auto/hmn/\u0002\u00010",
+ "ebrew": "//translate.google.com/#auto/iw/\u0002\u00010",
+ "mong": "//translate.google.com/#auto/hmn/\u0002\u00010"
+ },
+ "m": {
+ "g": "//translate.google.com/#auto/mg/\u0002\u00010",
+ "*": "//fr.gta5-mods.com/search/\u0002\u00014",
+ "i": "//translate.google.com/#auto/mi/\u0002\u00010",
+ "k": "//translate.google.com/#auto/mk/\u0002\u00010",
+ "l": "//translate.google.com/#auto/ml/\u0002\u00010",
+ "n": "//translate.google.com/#auto/mn/\u0002\u00010",
+ "r": "//translate.google.com/#auto/mr/\u0002\u00010",
+ "s": "//translate.google.com/#auto/ms/\u0002\u00010",
+ "t": "//translate.google.com/#auto/mt/\u0002\u00010",
+ "y": {
+ "*": "//translate.google.com/#auto/my/\u0002\u00010",
+ "anmar": "//translate.google.com/#auto/my/\u0002\u00010"
+ },
+ "z": "//geektimes.ru/search/?q=\u0002\u00010",
+ "acedonian": "//translate.google.com/#auto/mk/\u0002\u00010",
+ "alay": {
+ "*": "//translate.google.com/#auto/ms/\u0002\u00010",
+ "alam": "//translate.google.com/#auto/ml/\u0002\u00010"
+ },
+ "alagasy": "//translate.google.com/#auto/mg/\u0002\u00010",
+ "altese": "//translate.google.com/#auto/mt/\u0002\u00010",
+ "aori": "//translate.google.com/#auto/mi/\u0002\u00010",
+ "arathi": "//translate.google.com/#auto/mr/\u0002\u00010",
+ "ongolian": "//translate.google.com/#auto/mn/\u0002\u00010"
+ },
+ "n": {
+ "e": {
+ "*": "//translate.google.com/#auto/ne/\u0002\u00010",
+ "pali": "//translate.google.com/#auto/ne/\u0002\u00010"
+ },
+ "*": "//www.google.tn/search?q=\u0002\u00010",
+ "l": "//translate.google.com/#auto/nl/\u0002\u00014",
+ "o": {
+ "*": "//translate.google.com/#auto/no/\u0002\u00015",
+ "rwegian": "//translate.google.com/#auto/no/\u0002\u00015"
+ },
+ "y": "//translate.google.com/#auto/ny/\u0002\u00010"
+ },
+ "r": {
+ "*": "http://www.google.com.tr/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u000153",
+ "o": {
+ "*": "//translate.google.com/#auto/ro/\u0002\u000116",
+ "manian": "//translate.google.com/#auto/ro/\u0002\u000116"
+ },
+ "u": {
+ "*": "//translate.google.com/#auto/ru/\u0002\u0001333",
+ "ssian": "//translate.google.com/#auto/ru/\u0002\u0001333"
+ },
+ "ad": "//translate.google.com/#auto/fr/\u0002\u0001395",
+ "anslate": "//translate.google.com/#auto/en/\u0002\u00011136",
+ "ends": "//trends.google.com/trends/explore?date=all&geo=US&q=\u0002\u000139"
+ },
+ "w": {
+ "*": "http://www.google.com.tw/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00012969",
+ "elsh": "//translate.google.com/#auto/cy/\u0002\u00010",
+ "iki": "http://growtopia.wikia.com/wiki/Special:Search?query=\u0002\u00010"
+ },
+ "af": {
+ "*": "//translate.google.com/#auto/af/\u0002\u00010",
+ "rikaans": "//translate.google.com/#auto/af/\u0002\u00010"
+ },
+ "ar": {
+ "*": "//translate.google.com/#auto/ar/\u0002\u00010",
+ "abic": "//translate.google.com/#auto/ar/\u0002\u00010",
+ "menian": "//translate.google.com/#auto/hy/\u0002\u00010"
+ },
+ "au": "http://www.gumtree.com.au/s-\u0002/k0\u000110",
+ "az": {
+ "*": "//translate.google.com/#auto/az/\u0002\u00010",
+ "erbaijani": "//translate.google.com/#auto/az/\u0002\u00010"
+ },
+ "be": {
+ "*": "//translate.google.com/#auto/be/\u0002\u00010",
+ "larusian": "//translate.google.com/#auto/be/\u0002\u00010",
+ "ngali": "//translate.google.com/#auto/bn/\u0002\u00010"
+ },
+ "bg": "//translate.google.com/#auto/bg/\u0002\u000125",
+ "bn": "//translate.google.com/#auto/bn/\u0002\u00010",
+ "bs": "//translate.google.com/#auto/bs/\u0002\u00010",
+ "ca": {
+ "*": "//translate.google.com/#auto/ca/\u0002\u00017",
+ "talan": "//translate.google.com/#auto/ca/\u0002\u00017"
+ },
+ "cs": "//translate.google.com/#auto/cs/\u0002\u000121",
+ "cy": "//translate.google.com/#auto/cy/\u0002\u00010",
+ "cz": {
+ "*": "//translate.google.com/#auto/cs/\u0002\u000121",
+ "ech": "//translate.google.com/#auto/cs/\u0002\u000121"
+ },
+ "da": {
+ "*": "//translate.google.com/#auto/da/\u0002\u000126",
+ "nish": "//translate.google.com/#auto/da/\u0002\u000126"
+ },
+ "db": "//www.grimtools.com/db/search?query=\u0002\u00010",
+ "de": "//translate.google.com/#auto/de/\u0002\u0001195",
+ "el": "//translate.google.com/#auto/el/\u0002\u00016",
+ "en": {
+ "*": "//translate.google.com/#auto/en/\u0002\u00011136",
+ "fr": "//translate.google.com/#en/fr/\u0002\u000194",
+ "ga": "//translate.google.com/#en/ga/\u0002\u00010",
+ "it": "//translate.google.com/#en/it/\u0002\u00016",
+ "glish": "//translate.google.com/#auto/en/\u0002\u00011136"
+ },
+ "eo": "//translate.google.com/#auto/eo/\u0002\u00013",
+ "es": {
+ "*": "//translate.google.com/#auto/es/\u0002\u0001268",
+ "peranto": "//translate.google.com/#auto/eo/\u0002\u00013",
+ "tonian": "//translate.google.com/#auto/et/\u0002\u00010"
+ },
+ "et": "//translate.google.com/#auto/et/\u0002\u00010",
+ "eu": "//translate.google.com/#auto/eu/\u0002\u00010",
+ "ga": {
+ "*": "//translate.google.com/#auto/ga/\u0002\u00010",
+ "lician": "//translate.google.com/#auto/gl/\u0002\u00010"
+ },
+ "gl": "//translate.google.com/#auto/gl/\u0002\u00010",
+ "gr": {
+ "*": "//translate.google.com/#view=home&op=translate&sl=auto&tl=el&text=\u0002\u00018",
+ "eek": "//translate.google.com/#auto/el/\u0002\u00016"
+ },
+ "gu": {
+ "*": "//translate.google.com/#auto/gu/\u0002\u000112",
+ "jarati": "//translate.google.com/#auto/gu/\u0002\u000112"
+ },
+ "id": "//translate.google.com/#auto/id/\u0002\u000136",
+ "ig": {
+ "*": "//translate.google.com/#auto/ig/\u0002\u00010",
+ "bo": "//translate.google.com/#auto/ig/\u0002\u00010"
+ },
+ "in": {
+ "*": "//www.gepir.de/?search=\u0002\u00010",
+ "donesian": "//translate.google.com/#auto/id/\u0002\u000136"
+ },
+ "is": "//translate.google.com/#auto/is/\u0002\u00010",
+ "it": {
+ "*": "//translate.google.com/#auto/it/\u0002\u00010",
+ "en": "//translate.google.com/#it/en/\u0002\u000110",
+ "alian": "//translate.google.com/#auto/it/\u0002\u00010"
+ },
+ "iw": "//translate.google.com/#auto/iw/\u0002\u00010",
+ "ja": {
+ "*": "//translate.google.com/#auto/ja/\u0002\u000154",
+ "panese": "//translate.google.com/#auto/ja/\u0002\u000154",
+ "vanese": "//translate.google.com/#auto/jw/\u0002\u00010"
+ },
+ "jp": "//translate.google.com/#auto/ja/\u0002\u000154",
+ "jw": "//translate.google.com/#auto/jw/\u0002\u00010",
+ "ka": {
+ "*": "//translate.google.com/#auto/ka/\u0002\u00010",
+ "nnada": "//translate.google.com/#auto/kn/\u0002\u00010",
+ "zakh": "//translate.google.com/#auto/kk/\u0002\u00010"
+ },
+ "kk": "//translate.google.com/#auto/kk/\u0002\u00010",
+ "km": "//translate.google.com/#auto/km/\u0002\u00010",
+ "kn": "//translate.google.com/#auto/kn/\u0002\u00010",
+ "ko": {
+ "*": "//translate.google.com/#auto/ko/\u0002\u00010",
+ "rean": "//translate.google.com/#auto/ko/\u0002\u00010"
+ },
+ "kr": "//translate.google.com/#auto/ko/\u0002\u00010",
+ "la": {
+ "*": "//translate.google.com/#auto/la/\u0002\u00010",
+ "o": "//translate.google.com/#auto/lo/\u0002\u00010",
+ "nl": "//translate.google.com/#la/nl/\u0002\u00010",
+ "tin": "//translate.google.com/#auto/la/\u0002\u00010",
+ "tvian": "//translate.google.com/#auto/lv/\u0002\u00010"
+ },
+ "lt": "//translate.google.com/#auto/lt/\u0002\u00010",
+ "lv": "//translate.google.com/#auto/lv/\u0002\u00010",
+ "pa": "//translate.google.com/#auto/pa/\u0002\u00014",
+ "pl": "//translate.google.com/#auto/pl/\u0002\u000145",
+ "pt": "//translate.google.com/#auto/pt/\u0002\u00013",
+ "si": {
+ "*": "//translate.google.com/#auto/si/\u0002\u00010",
+ "nhala": "//translate.google.com/#auto/si/\u0002\u00010"
+ },
+ "sk": "//translate.google.com/#auto/sk/\u0002\u00010",
+ "sl": {
+ "*": "//translate.google.com/#auto/sl/\u0002\u00010",
+ "ovak": "//translate.google.com/#auto/sk/\u0002\u00010",
+ "ovenian": "//translate.google.com/#auto/sl/\u0002\u00010"
+ },
+ "so": {
+ "*": "//translate.google.com/#auto/so/\u0002\u00010",
+ "mali": "//translate.google.com/#auto/so/\u0002\u00010"
+ },
+ "sp": {
+ "*": "//translate.google.com/#en/es/\u0002\u000161",
+ "anish": "//translate.google.com/#auto/es/\u0002\u0001268"
+ },
+ "sq": "//translate.google.com/#auto/sq/\u0002\u00010",
+ "sr": "//translate.google.com/#auto/sr/\u0002\u00010",
+ "st": "//translate.google.com/#auto/st/\u0002\u00010",
+ "su": {
+ "*": "//translate.google.com/#auto/su/\u0002\u00010",
+ "ndanese": "//translate.google.com/#auto/su/\u0002\u00010"
+ },
+ "sv": "//translate.google.com/#auto/sv/\u0002\u000113",
+ "sw": {
+ "*": "//translate.google.com/#auto/sw/\u0002\u00010",
+ "ahili": "//translate.google.com/#auto/sw/\u0002\u00010",
+ "edish": "//translate.google.com/#auto/sv/\u0002\u000113"
+ },
+ "ta": {
+ "*": "//translate.google.com/#auto/ta/\u0002\u00010",
+ "jik": "//translate.google.com/#auto/tg/\u0002\u00010",
+ "mil": "//translate.google.com/#auto/ta/\u0002\u00010"
+ },
+ "te": {
+ "*": "//translate.google.com/#auto/te/\u0002\u00010",
+ "lugu": "//translate.google.com/#auto/te/\u0002\u00010"
+ },
+ "tg": "//translate.google.com/#auto/tg/\u0002\u00010",
+ "th": {
+ "*": "//translate.google.com/#auto/th/\u0002\u00010",
+ "ai": "//translate.google.com/#auto/th/\u0002\u00010"
+ },
+ "tl": "//translate.google.com/#auto/tl/\u0002\u00010",
+ "tr": "//translate.google.com/#auto/tr/\u0002\u000165",
+ "tw": "//translate.google.com.tw/#auto/zh-TW/\u0002\u000173",
+ "uk": {
+ "*": "//translate.google.com/#auto/uk/\u0002\u00015",
+ "rainian": "//translate.google.com/#auto/uk/\u0002\u00015"
+ },
+ "ur": {
+ "*": "//translate.google.com/#auto/ur/\u0002\u00010",
+ "l": "http://translate.google.com/translate?js=n&prev=_t&ie=UTF-8&layout=2&eotf=1&sl=auto&tl=en&u=\u0002&act=url\u0001100",
+ "du": "//translate.google.com/#auto/ur/\u0002\u00010"
+ },
+ "uz": {
+ "*": "//translate.google.com/#auto/uz/\u0002\u00010",
+ "bek": "//translate.google.com/#auto/uz/\u0002\u00010"
+ },
+ "vi": {
+ "*": "//translate.google.com/#auto/vi/\u0002\u00013",
+ "etnamese": "//translate.google.com/#auto/vi/\u0002\u00013"
+ },
+ "yi": {
+ "*": "//translate.google.com/#auto/yi/\u0002\u00010",
+ "ddish": "//translate.google.com/#auto/yi/\u0002\u00010"
+ },
+ "yo": {
+ "*": "//translate.google.com/#auto/yo/\u0002\u00010",
+ "ruba": "//translate.google.com/#auto/yo/\u0002\u00010"
+ },
+ "zu": {
+ "*": "//translate.google.com/#auto/zu/\u0002\u00010",
+ "lu": "//translate.google.com/#auto/zu/\u0002\u00010"
+ },
+ "abs": "http://www.ultimate-guitar.com/search.php?search_type=title&value=\u0002\u000158",
+ "albanian": "//translate.google.com/#auto/sq/\u0002\u00010",
+ "awiki": "//gta.fandom.com/search?query=\u0002\u000113",
+ "-afrikaans": "//translate.google.com/#auto/af/\u0002\u00010",
+ "-albanian": "//translate.google.com/#auto/sq/\u0002\u00010",
+ "-arabic": "//translate.google.com/#auto/ar/\u0002\u00010",
+ "-armenian": "//translate.google.com/#auto/hy/\u0002\u00010",
+ "-azerbaijani": "//translate.google.com/#auto/az/\u0002\u00010",
+ "-basque": "//translate.google.com/#auto/eu/\u0002\u00010",
+ "-belarusian": "//translate.google.com/#auto/be/\u0002\u00010",
+ "-bengali": "//translate.google.com/#auto/bn/\u0002\u00010",
+ "-bosnian": "//translate.google.com/#auto/bs/\u0002\u00010",
+ "-bulgarian": "//translate.google.com/#auto/bg/\u0002\u000125",
+ "-catalan": "//translate.google.com/#auto/ca/\u0002\u00017",
+ "-cebuano": "//translate.google.com/#auto/ceb/\u0002\u00010",
+ "-chichewa": "//translate.google.com/#auto/ny/\u0002\u00010",
+ "-chinese": "//translate.google.com/#auto/zh-CN/\u0002\u00010",
+ "-croatian": "//translate.google.com/#auto/hr/\u0002\u00010",
+ "-czech": "//translate.google.com/#auto/cs/\u0002\u000121",
+ "-danish": "//translate.google.com/#auto/da/\u0002\u000126",
+ "-dutch": "//translate.google.com/#auto/nl/\u0002\u00014",
+ "-english": "//translate.google.com/#auto/en/\u0002\u00011136",
+ "-esperanto": "//translate.google.com/#auto/eo/\u0002\u00013",
+ "-estonian": "//translate.google.com/#auto/et/\u0002\u00010",
+ "-filipino": "//translate.google.com/#auto/tl/\u0002\u00010",
+ "-finnish": "//translate.google.com/#auto/fi/\u0002\u000115",
+ "-french": "//translate.google.com/#auto/fr/\u0002\u0001395",
+ "-galician": "//translate.google.com/#auto/gl/\u0002\u00010",
+ "-georgian": "//translate.google.com/#auto/ka/\u0002\u00010",
+ "-german": "//translate.google.com/#auto/de/\u0002\u0001195",
+ "-greek": "//translate.google.com/#auto/el/\u0002\u00016",
+ "-gujarati": "//translate.google.com/#auto/gu/\u0002\u000112",
+ "-hausa": "//translate.google.com/#auto/ha/\u0002\u00010",
+ "-hebrew": "//translate.google.com/#auto/iw/\u0002\u00010",
+ "-hindi": "//translate.google.com/#auto/hi/\u0002\u00016",
+ "-hmong": "//translate.google.com/#auto/hmn/\u0002\u00010",
+ "-hungarian": "//translate.google.com/#auto/hu/\u0002\u000129",
+ "-icelandic": "//translate.google.com/#auto/is/\u0002\u00010",
+ "-igbo": "//translate.google.com/#auto/ig/\u0002\u00010",
+ "-indonesian": "//translate.google.com/#auto/id/\u0002\u000136",
+ "-irish": "//translate.google.com/#auto/ga/\u0002\u00010",
+ "-italian": "//translate.google.com/#auto/it/\u0002\u00010",
+ "-japanese": "//translate.google.com/#auto/ja/\u0002\u000154",
+ "-javanese": "//translate.google.com/#auto/jw/\u0002\u00010",
+ "-kannada": "//translate.google.com/#auto/kn/\u0002\u00010",
+ "-kazakh": "//translate.google.com/#auto/kk/\u0002\u00010",
+ "-khmer": "//translate.google.com/#auto/km/\u0002\u00010",
+ "-korean": "//translate.google.com/#auto/ko/\u0002\u00010",
+ "-lao": "//translate.google.com/#auto/lo/\u0002\u00010",
+ "-latin": "//translate.google.com/#auto/la/\u0002\u00010",
+ "-latvian": "//translate.google.com/#auto/lv/\u0002\u00010",
+ "-lithuanian": "//translate.google.com/#auto/lt/\u0002\u00010",
+ "-macedonian": "//translate.google.com/#auto/mk/\u0002\u00010",
+ "-malay": {
+ "*": "//translate.google.com/#auto/ms/\u0002\u00010",
+ "alam": "//translate.google.com/#auto/ml/\u0002\u00010"
+ },
+ "-malagasy": "//translate.google.com/#auto/mg/\u0002\u00010",
+ "-maltese": "//translate.google.com/#auto/mt/\u0002\u00010",
+ "-maori": "//translate.google.com/#auto/mi/\u0002\u00010",
+ "-marathi": "//translate.google.com/#auto/mr/\u0002\u00010",
+ "-mongolian": "//translate.google.com/#auto/mn/\u0002\u00010",
+ "-myanmar": "//translate.google.com/#auto/my/\u0002\u00010",
+ "-nepali": "//translate.google.com/#auto/ne/\u0002\u00010",
+ "-nl-du": "//translate.google.com/m/translate#nl/de/\u0002\u00010",
+ "-norwegian": "//translate.google.com/#auto/no/\u0002\u00015",
+ "-persian": "//translate.google.com/#auto/fa/\u0002\u000110",
+ "-polish": "//translate.google.com/#auto/pl/\u0002\u000145",
+ "-portuguese": "//translate.google.com/#auto/pt/\u0002\u00013",
+ "-punjabi": "//translate.google.com/#auto/pa/\u0002\u00014",
+ "-romanian": "//translate.google.com/#auto/ro/\u0002\u000116",
+ "-russian": "//translate.google.com/#auto/ru/\u0002\u0001333",
+ "-serbian": "//translate.google.com/#auto/sr/\u0002\u00010",
+ "-sesotho": "//translate.google.com/#auto/st/\u0002\u00010",
+ "-sinhala": "//translate.google.com/#auto/si/\u0002\u00010",
+ "-slovak": "//translate.google.com/#auto/sk/\u0002\u00010",
+ "-slovenian": "//translate.google.com/#auto/sl/\u0002\u00010",
+ "-somali": "//translate.google.com/#auto/so/\u0002\u00010",
+ "-spanish": "//translate.google.com/#auto/es/\u0002\u0001268",
+ "-sundanese": "//translate.google.com/#auto/su/\u0002\u00010",
+ "-swahili": "//translate.google.com/#auto/sw/\u0002\u00010",
+ "-swedish": "//translate.google.com/#auto/sv/\u0002\u000113",
+ "-tajik": "//translate.google.com/#auto/tg/\u0002\u00010",
+ "-tamil": "//translate.google.com/#auto/ta/\u0002\u00010",
+ "-telugu": "//translate.google.com/#auto/te/\u0002\u00010",
+ "-thai": "//translate.google.com/#auto/th/\u0002\u00010",
+ "-turkish": "//translate.google.com/#auto/tr/\u0002\u000165",
+ "-ukrainian": "//translate.google.com/#auto/uk/\u0002\u00015",
+ "-urdu": "//translate.google.com/#auto/ur/\u0002\u00010",
+ "-uzbek": "//translate.google.com/#auto/uz/\u0002\u00010",
+ "-vietnamese": "//translate.google.com/#auto/vi/\u0002\u00013",
+ "-welsh": "//translate.google.com/#auto/cy/\u0002\u00010",
+ "-yiddish": "//translate.google.com/#auto/yi/\u0002\u00010",
+ "-yoruba": "//translate.google.com/#auto/yo/\u0002\u00010",
+ "-zulu": "//translate.google.com/#auto/zu/\u0002\u00010",
+ "basque": "//translate.google.com/#auto/eu/\u0002\u00010",
+ "bosnian": "//translate.google.com/#auto/bs/\u0002\u00010",
+ "bulgarian": "//translate.google.com/#auto/bg/\u0002\u000125",
+ "ceb": {
+ "*": "//translate.google.com/#auto/ceb/\u0002\u00010",
+ "uano": "//translate.google.com/#auto/ceb/\u0002\u00010"
+ },
+ "chichewa": "//translate.google.com/#auto/ny/\u0002\u00010",
+ "chinese": "//translate.google.com/#auto/zh-CN/\u0002\u00010",
+ "croatian": "//translate.google.com/#auto/hr/\u0002\u00010",
+ "dutch": "//translate.google.com/#auto/nl/\u0002\u00014",
+ "georgian": "//translate.google.com/#auto/ka/\u0002\u00010",
+ "german": "//translate.google.com/#auto/de/\u0002\u0001195",
+ "icelandic": "//translate.google.com/#auto/is/\u0002\u00010",
+ "irish": "//translate.google.com/#auto/ga/\u0002\u00010",
+ "khmer": "//translate.google.com/#auto/km/\u0002\u00010",
+ "lib": "//gatech-primo.hosted.exlibrisgroup.com/primo-explore/search?vid=01GALI_GIT&search_scope=Everything&query=any,contains,\u0002\u00010",
+ "lithuanian": "//translate.google.com/#auto/lt/\u0002\u00010",
+ "persian": "//translate.google.com/#auto/fa/\u0002\u000110",
+ "polish": "//translate.google.com/#auto/pl/\u0002\u000145",
+ "portuguese": "//translate.google.com/#auto/pt/\u0002\u00013",
+ "punjabi": "//translate.google.com/#auto/pa/\u0002\u00014",
+ "serbian": "//translate.google.com/#auto/sr/\u0002\u00010",
+ "sesotho": "//translate.google.com/#auto/st/\u0002\u00010",
+ "turkish": "//translate.google.com/#auto/tr/\u0002\u000165",
+ "zh-CN": "//translate.google.com/#auto/zh-CN/\u0002\u00010",
+ "zh-TW": "//translate.google.com/#auto/zh-TW/\u0002\u00010"
+ },
+ "u": {
+ "a": {
+ "*": "http://www.google.com.ua/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001196",
+ "rdian": {
+ "a": "http://www.guardiana.net/MDG-Database/Search/?search_value=\u0002 \u00010",
+ "*": "//www.theguardian.com/\u0002\u0001144",
+ "project": "//guardianproject.info/?s=\u0002\u00010"
+ }
+ },
+ "e": {
+ "*": "http://www.guenstiger.de/Katalog/Preis.pl?suche=\u0002\u00010",
+ "nstiger": "http://www.guenstiger.de/Katalog/Preis.pl?suche=\u0002\u00010"
+ },
+ "k": "//www.google.co.uk/search?q=\u0002\u00017421",
+ "s": {
+ "*": "http://www.google.com/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001875",
+ "smark": "//www.gussmark.at/_/search?query=\u0002\u00010"
+ },
+ "*": "//duckduckgo.com/?q=site%3Awww.theguardian.com+\u0002\u0001136",
+ "bf": "//hds.hebis.de/ubffm/Search/Results?lookfor=\u0002&type=allfields&submit=Suchen\u00010",
+ "cci": "//www.gucci.com/fr/fr/search?search-cat=header-search&text=\u0002\u00010",
+ "folm": "//guideforlm.com/search/?q=\u0002\u00010",
+ "idestar": "//www.guidestar.org/search?q=\u0002\u00010",
+ "ildwiki": "http://www.guildwiki.org/index.php?title=Special%3ASearch&redirs=0&search=\u0002&fulltext=Search&ns0=1\u00010",
+ "itaa": "//www.guitaa.com/search?q=\u0002\u00010",
+ "itartabs": "http://www.guitartabsexplorer.com/search.php?search=\u0002\u00010",
+ "lasidorna": "http://www.eniro.se/query?what=all&search_word=\u0002\u00010",
+ "lesider": "//www.gulesider.no/?q=\u0002\u00013",
+ "mau": "http://www.gumtree.com.au/s-\u0002/k0\u000110",
+ "mball": "//theamazingworldofgumball.fandom.com/wiki/Special:Search?query=\u0002\u00010",
+ "mtree": {
+ "*": "http://www.gumtree.com.au/s-melbourne/\u0002 /k0l3001317\u000161",
+ "au": "http://www.gumtree.com.au/s-\u0002/k0\u000110",
+ "pl": "//www.gumtree.pl/s-\u0002/v1q0p1\u00010",
+ "uk": "//www.gumtree.com/search?search_category=all&q=\u0002\u000124",
+ "za": "//www.gumtree.co.za/s-\u0002/v1q0p1\u00010"
+ },
+ "nbroker": "http://www.gunbroker.com/All/BI.aspx?Keywords=\u0002\u000160",
+ "ndam": "http://gundam.wikia.com/wiki/Special:Search?search=\u0002\u000152",
+ "ndeals": "//gun.deals/search/apachesolr_search/\u0002\u00010",
+ "nengine": "http://www.gunengine.com/guns?q=\u0002\u00010",
+ "nmag": "//gunmagwarehouse.com/catalogsearch/result/?q=\u0002\u00010",
+ "nstreamer": "//gunstreamer.com/search?q=Test&idx=videos&p=0&keyword=\u0002\u00010",
+ "nwatcher": "//gunwatcher.com/Search/\u0002\u00010",
+ "rtband": "//www.gurtbandlager.de/search?sSearch=\u0002\u00010",
+ "tefrage": "//www.gutefrage.net/search?query=\u0002\u00013",
+ "tenberg": "http://www.gutenberg.org/ebooks/search/?query=\u0002\u000139",
+ "tschein": "http://www.gutscheine.de/suche?search=\u0002\u00010"
+ },
+ "v": {
+ "b": "//google.com/search?&tbs=li:1&q=\u0002\u000182",
+ "e": "http://www.google.co.ve/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u000118",
+ "*": "//www.google.com/search?tbm=vid&q=\u0002\u00012327",
+ "k": "//gso.gbv.de/DB=2.1/CMD?MATCFILTER=N&MATCSET=N&ACT0=&IKT0=&TRM0=&ACT3=*&IKT3=8183&ACT=SRCHA&IKT=1016&SRT=YOP&TRM=\u0002\u00010",
+ "n": "http://www.google.com.vn/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u00014",
+ "au": "//www.google.com.au/search?tbm=vid&q=\u0002\u00010",
+ "rl": "http://go.galegroup.com/ps/headerQuickSearch.do?quickSearchTerm=\u0002&inputFieldNames%5B0%5D=OQE&searchType=BasicSearchForm&userGroupName=mlin_m_newtnsh&nwf=y&prodId=GVRL&stw.option=&ebook=&quicksearchIndex=OQE&spellCheck=true&hasCoProduct=false\u00010",
+ "100": {
+ "*": "http://google.com/search?q=\u0002&tbo=1&num=100&tbs=li:1\u00010",
+ "en": "http://google.com/search?q=\u0002&tbo=1&num=100&tbs=li:1&lr=lang_en\u00010"
+ },
+ "iew": {
+ "*": "//docs.google.com/viewer?url=\u0002\u00018",
+ "er": "//docs.google.com/viewer?url=\u0002\u00018"
+ },
+ "oice": "//www.google.com/voice#search/\u0002\u00010"
+ },
+ "w": {
+ "2": {
+ "e": "//gw2efficiency.com/account/overview?filter.name=\u0002\u00010",
+ "*": "//wiki.guildwars2.com/index.php?search=\u0002\u0001368",
+ "de": "//wiki-de.guildwars2.com/index.php?search=\u0002&go=Seite\u00010",
+ "fr": "http://wiki-fr.guildwars2.com/index.php?search=\u0002\u00010",
+ "tp": "//www.gw2tp.com/search?name=\u0002\u00010",
+ "bltc": "//www.gw2bltc.com/en/tp/search?name=\u0002\u00018",
+ "spidy": "http://www.gw2spidy.com/search/\u0002\u00010",
+ "wiki": "http://wiki.guildwars2.com/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000156"
+ },
+ "*": "//wiki.gentoo.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u0001352",
+ "i": {
+ "*": "//gowatchit.com/search?terms=\u0002\u00013",
+ "ki": "//wiki.gentoo.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u0001352"
+ },
+ "m": "//www.girlswithmuscle.com/images/?name=\u0002\u0001112",
+ "p": {
+ "*": "http://www.google.com/search?q=\u0002%20site:wikipedia.org\u00016",
+ "de": "http://www.google.de/search?ie=UTF-8&sourceid=navclient&gfns=1&q=site:de.wikipedia.org+\u0002\u00010"
+ },
+ "r": "http://www.guinnessworldrecords.com/search?term=\u0002\u00010",
+ "s": {
+ "*": "//chrome.google.com/webstore/search/\u0002?_category=extensions\u000115",
+ "online": {
+ "*": "//www.ghanawebsolutions.com/search.php?q=\u0002\u00010",
+ "gh": "//www.ghanawebsolutions.com/search.php?q=\u0002\u00010"
+ }
+ },
+ "u": "//search.gwu.edu/search?site=gw_main_VCM&client=gw_main_VCM&proxystylesheet=phase2fe&output=xml_no_dtd&q=\u0002\u00010",
+ "w": "//wiki.guildwars.com/index.php?search=\u0002\u000114",
+ "ct": "http://www.gwct.org.uk/search?keywords=\u0002\u00010",
+ "en": {
+ "*": "http://en.glyphwiki.org/wiki/Special:Search?search=\u0002\u00010",
+ "tdb": "http://www.gwentdb.com/search?search=\u0002\u00010",
+ "tify": "http://gwentify.com/cards/?st=\u0002\u00010"
+ },
+ "es": "//www.games-workshop.com/es-ES/searchResults?_dyncharset=UTF-8&_dynSessConf=7453102396832862391&qty=&sorting=&view=&Ntt=\u0002\u00010",
+ "eek": "http://www.google.com/search?q=\u0002&tbs=qdr:w\u000191",
+ "lib": "http://library.gwu.edu/search-all?query=\u0002\u00010",
+ "orkshop": "//www.games-workshop.com/searchResults?_dyncharset=UTF-8&_dynSessConf=1497710725317319147&qty=&sorting=&view=&Ntt=\u0002\u000115"
+ },
+ "y": {
+ "*": "//google.com/search?q=\u0002 &tbs=qdr:y\u000153",
+ "k": "http://www.gyakorikerdesek.hu/kereses.php?keres=\u0002\u00010",
+ "t": "//www.genyoutube.net/search.php?q=\u0002\u000127",
+ "azo": "//gyazo.com/search/\u0002\u00010",
+ "ear": "http://www.google.com/search?q=\u0002&tbs=qdr:y\u0001108"
+ },
+ "z": {
+ "a": "http://www.google.co.za/search?source=hp&q=\u0002&meta=&aq=f&aqi=g10&aql=&oq=&gs_rfai=\u0001240",
+ "c": "//www.google.com/search?q=\u0002&lr=lang_zh-CN\u00016",
+ "*": "http://www.geekzone.fr/?s=\u0002\u000129",
+ "h": "http://www.geizhals.at/eu/?such=\u0002\u000115",
+ "ric": "http://www.giallozafferano.it/ricerca-ricette/\u0002 \u00017"
+ },
+ "24": "http://www.google.com/search?q=\u0002&tbs=qdr:d\u00017",
+ "2a": "//www.g2a.com/?search=\u0002\u000146",
+ "2p": {
+ "*": "http://www.g2play.net/catalogsearch/result/index/?q=\u0002\u00010",
+ "lay": "http://www.g2play.net/catalogsearch/result/index/?q=\u0002\u00010"
+ },
+ "4y": "http://games4you.rs/search-glavni?search_api_views_fulltext=\u0002\u00010",
+ "100": {
+ "*": "http://google.com/search?q=\u0002&tbo=1&num=100\u000113",
+ "en": "http://google.com/search?q=\u0002&tbo=1&num=100&lr=lang_en\u00013"
+ },
+ "2year": "//www.google.com/search?tbs=qdr:y2&q=\u0002&safe=off&ie=utf-8&oe=utf-8\u00017",
+ "6month": "//www.google.com/search?tbs=qdr:m6&q=\u0002&safe=off&ie=utf-8&oe=utf-8\u000114",
+ ".at": "//www.google.at/#q=\u0002\u00010",
+ ".de": "//www.google.de/#q=\u0002\u000123",
+ ".uk": "//www.google.co.uk/#q=\u0002\u00014"
+ },
+ "h": {
+ "2": {
+ "*": "http://www.h2olimpo.com/buscar?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=\u00010",
+ "m": "//duckduckgo.com/?q=\u0002&sites=hard2mano.com\u00010",
+ "o": "http://www.h2olimpo.com/buscar?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=\u00010",
+ "g2": "http://www.h2g2.com/search?search_type=article_quick_search&searchstring=\u0002&approved_entries_only_chk=1\u00010"
+ },
+ "b": {
+ "*": "//www.humblebundle.com/store/search?search=\u0002\u000178",
+ "l": "//www.hbl.fi/?s=\u0002\u00010",
+ "m": "http://www.heartbowsmakeup.com/?s=\u0002\u00010",
+ "t": "http://www.homebrewtalk.com/search/?keyword=\u0002\u00010",
+ "z": "http://okeanos-www.hbz-nrw.de/F/?func=find-c&ccl_term=WRD%3D%22\u0002%22\u00010",
+ "at": "//www.hornbach.at/shop/suche/sortiment/\u0002\u00010"
+ },
+ "c": {
+ "*": "http://www.holidaycheck.de/schnellsuche.php?q=\u0002\u00013",
+ "kg": "//hackage.haskell.org/packages/search?terms=\u0002\u000118",
+ "lib": "//hclib.bibliocommons.com/v2/search?query=\u0002&searchType=smart\u00018",
+ "ommons": "//hcommons.org/?s=\u0002\u00010",
+ "pcs": "//www.findacode.com/code.php?set=HCPCS&c=\u0002\u00010"
+ },
+ "d": {
+ "b": {
+ "*": "http://www.hockeydb.com/ihdb/stats/find_player.php?full_name=\u0002\u000134",
+ "log": "//www.hdblog.it/?sName=\u0002\u00010"
+ },
+ "c": "//www.homedepot.ca/en/home/search.html?q=\u0002\u00010",
+ "*": "http://hudoc.echr.coe.int/eng#{%22fulltext%22:[%22\u0002%22],%22documentcollectionid2%22:[%22GRANDCHAMBER%22,%22CHAMBER%22]}\u000125",
+ "l": "//www.heise.de/download/search?terms=\u0002\u00010",
+ "s": "http://search.datasheetcatalog.net/key/\u0002\u00010",
+ "t": "//www.hdtracks.com/catalogsearch/result/?q=\u0002\u00010",
+ "u": "http://acm.hdu.edu.cn/search.php?field=problem&key=\u0002\u00010",
+ "x": "http://www.homedepot.com/s/\u0002\u0001108",
+ "yc": "http://hdyc.neis-one.org/?\u0002\u00010",
+ "ict": "http://hyperdictionary.com/search.aspx?define=\u0002\u00010",
+ "rapin": "http://hdrapin.com/?s=\u0002\u00010"
+ },
+ "g": {
+ "a": "//holbein-gymnasium.de/index.php/component/search/?searchword=\u0002\u00010",
+ "l": {
+ "e": "//www.haskell.org/hoogle/?hoogle=\u0002\u000133",
+ "*": "//www.haskell.org/hoogle/?hoogle=\u0002\u000133"
+ },
+ "*": "//www.mercurial-scm.org/wiki/Mercurial?action=fullsearch&context=180&value=\u0002&titlesearch=Title\u0001119",
+ "s": "//www.herold.at/gelbe-seiten/was_\u0002/\u00010",
+ "nc": "http://www.genenames.org/cgi-bin/quick_search.pl?submit=Submit&search=\u0002\u00010",
+ "pu": "http://hgpu.org/?s=\u0002\u00010",
+ "101": "http://www.hardcoregaming101.net/?s=\u0002\u00010"
+ },
+ "h": {
+ "c": "//hexagonhotchocolate.wordpress.com/?s=\u0002\u00010",
+ "*": "//www.homehardware.ca/search?query=\u0002\u00014"
+ },
+ "*": "//www.haskell.org/hoogle/?hoogle=\u0002\u000133",
+ "j": {
+ "*": "//www.honestjohn.co.uk/search/?q=\u0002\u00010",
+ "s": "//howjsay.com/search?word=\u0002\u00010"
+ },
+ "k": {
+ "g": "//hackage.haskell.org/packages/search?terms=\u0002\u000118",
+ "*": "http://hacktips.it/?s=\u0002\u00010",
+ "t": "//hooktube.com/results?search_query=\u0002\u00010",
+ "w": {
+ "*": "http://hollowknight.wikia.com/wiki/Special:Search?query=\u0002\u00016",
+ "ikia": "http://hollowknight.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1\u00010"
+ },
+ "fp": "//www.hongkongfp.com/?s=\u0002\u00010",
+ "eleg": "//www.elegislation.gov.hk/results?SEARCH_OPTION=K&keyword.SEARCH_FIELD=E&keyword.SEARCH_KEYWORD=\u0002\u00010",
+ "legco": "//search.legco.gov.hk/LegCoWeb/Search.aspx?lang=en&searchtype=simple&keyword=\u0002\u00010",
+ "lii": "http://www.hklii.hk/cgi-bin/sinosrch.cgi?query=\u0002&results=50&submit=Search&mask_world=&mask_path=&callback=on&method=auto&meta=%2Fhklii\u00010",
+ "ref": "//www.hockey-reference.com/search/search.fcgi?hint=&search=\u0002\u00010"
+ },
+ "l": {
+ "b": "http://howlongtobeat.com/?q=\u0002\u000152",
+ "*": "http://hugelol.com/search?q=\u0002\u00010",
+ "j": "//hlj.com/search/go?w=\u0002\u00010",
+ "n": "//www.hln.be/zoeken?query=\u0002\u000175",
+ "p": "//hlp-search.tproxy.de/search?q=\u0002\u00010",
+ "tb": "http://howlongtobeat.com/?q=\u0002\u000152",
+ "tv": "//www.hltv.org/search?query=\u0002\u0001478",
+ "ectura": "//horalectura.blogspot.com/search?q=\u0002\u00010"
+ },
+ "m": {
+ "*": "//wego.here.com/search/\u0002?\u000149",
+ "cpl": "//catalog.hmcpl.org/cgi-bin/koha/opac-search.pl?q=\u0002\u00010",
+ "iku": "http://www5.atwiki.jp/hmiku/?cmd=search&keyword=\u0002\u00016"
+ },
+ "n": {
+ "d": {
+ "*": "//hn.algolia.com/?query=\u0002&sort=byDate\u00010",
+ "k": "//www.harald-nyborg.dk/search?q=\u0002\u00016"
+ },
+ "*": "//hn.algolia.com/?q=\u0002\u00012677",
+ "o": "//hackernoon.com/search?q=\u0002\u00010",
+ "u": "//www.hs-neu-ulm.de/nc/suchergebnisse/?id=1289&L=0&q=\u0002\u00010",
+ "se": {
+ "*": "http://www.harald-nyborg.se/search?q=\u0002\u00010",
+ "arch": "http://hn.algolia.com/#!/story/forever/0/\u0002\u00014"
+ }
+ },
+ "o": {
+ "h": "//www.heavenofhorror.com/?s=\u0002\u00010",
+ "*": "//www.haskell.org/hoogle/?hoogle=\u0002\u000133",
+ "l": {
+ "*": "//hol.kag.org/a/\u0002\u00013",
+ "lbarr": "//www.hollandandbarrett.com/search?query=\u0002&isSearch=true\u00010",
+ "lis": "//hollis.harvard.edu/primo-explore/search?query=any,contains,\u0002&tab=everything&search_scope=everything&vid=HVD2&lang=en_US&offset=0\u00010"
+ },
+ "n": {
+ "*": "//honto.jp/netstore/search_10\u0002.html?srchf=1&tbty=0\u00010",
+ "eypot": "http://www.projecthoneypot.org/ip_\u0002\u00010"
+ },
+ "u": {
+ "*": "//cse.google.com/cse?cx=001106583893786776783%3Au81vudxhm7a&ie=UTF-8&q=\u0002&sa=Search&siteurl=www.sidefx.com%2Fdocs%2Fhoudini%2F&ref=www.sidefx.com%2Fdocs%2F&ss=504j116288j4\u00013",
+ "zz": "//www.houzz.com/photos/query/\u0002\u00013",
+ "sepets": "http://www.housepetscomic.com/?s=\u0002\u00010",
+ "setrip": "http://www.housetrip.com/en/search-holiday-apartments/\u0002?guests=2\u00010"
+ },
+ "w": {
+ "*": "//howcode.org/search?q=\u0002\u000154",
+ "ard": "//www.howardpianoindustries.com/search.php?search_query=\u0002\u00010",
+ "jsay": "//howjsay.com/search?word=\u0002\u00010",
+ "longtobeat": "//howlongtobeat.com/?q=\u0002\u000177",
+ "stuffworks": "http://www.howstuffworks.com/search.php?terms=\u0002\u00014",
+ "thingswork": "http://howthingswork.virginia.edu/search.php?searchs=\u0002&Go.x=0&Go.y=0&searchq=yes&searcha=yes\u00010",
+ "todoinjava": "http://howtodoinjava.com/search-results/?q=\u0002\u00010",
+ "toforge": "http://www.howtoforge.com/trip_search?keys=\u0002\u00010",
+ "togeek": "http://www.howtogeek.com/search/?q=\u0002\u00013",
+ "tomakemyblog": "http://howtomakemyblog.com/?s=\u0002\u00010"
+ },
+ "de": "http://www.homedepot.com/s/\u0002?NCNI-5\u000120",
+ "i3": "http://www.hoi3wiki.com/index.php?search=\u0002\u00010",
+ "i4": "//hoi4.paradoxwikis.com/index.php?search=\u0002\u000116",
+ "me": {
+ "*": "http://www.homeadvisor.com/sitesearch/searchQuery?action=SEARCH&searchType=SiteTaskSearch&useExtSearch=false&initialSearch=true&query=\u0002\u000120",
+ "base": "http://www.homebase.co.uk/webapp/wcs/stores/servlet/Search?storeId=10151&catalogId=1500001201&langId=110&searchTerms=\u0002&authToken=\u00010",
+ "depot": {
+ "*": "//www.homedepot.com/s/\u0002\u0001360",
+ "ca": "//www.homedepot.ca/en/home/search.html?q=\u0002#!q=\u0002\u00010"
+ },
+ "snap": "//www.homesnap.com/search?q=\u0002\u00010",
+ "stuck": "//www.homestuck.com/search?search=\u0002\u000128",
+ "work": "http://homeworkhelpforkids.co.uk/?s=\u0002\u00010"
+ },
+ "od": "//www.hood.de/suchergebnisse.htm?q=\u0002\u00010",
+ "ok": {
+ "*": "//hooktube.com/results?search_query=\u0002\u00010",
+ "tube": "//hooktube.com/results?search_query=\u0002\u00010"
+ },
+ "rt": "http://en.hortipedia.com/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010",
+ "sm": "//help.openstreetmap.org/search/?q=\u0002\u00010",
+ "st": {
+ "*": "http://networking.ringofsaturn.com/Tools/dig.php?domain=ANY+\u0002\u000125",
+ "ing": "http://www.whoishostingthis.com/?q=\u0002\u00010"
+ },
+ "tn": "//www.hotnews.ro/cauta/\u0002/1\u00010",
+ "tt": {
+ "*": "//homotopytypetheory.org/?s=\u0002\u00010",
+ "opic": "http://www.hottopic.com/search?q=\u0002\u00010"
+ },
+ "bbyking": "//hobbyking.com/en_us/catalogsearch/result/?q=\u0002\u00010",
+ "bby-machinist": "http://www.hobby-machinist.com//?=\u0002\u00010",
+ "bbyworks": "//www.hobbyworks.com/index.cfm?action=search&searchText=\u0002\u00010",
+ "ckessinlib": "//dlc.lib.de.us/client/en_US/default/search/results?qu=\u0002&te=\u00010",
+ "ckeydb": "http://www.hockeydb.com/ihdb/stats/findplayer.php?full_name=\u0002\u00014",
+ "ckeymonkey": "http://www.hockeymonkey.com/nsearch?q=\u0002\u00010",
+ "ckeyref": "http://www.hockey-reference.com/search/search.fcgi?search=\u0002\u00016",
+ "ogle": "//hoogle.haskell.org/?hoogle=\u0002&scope=set%3Astackage\u00011035",
+ "oph": "http://hoopshype.com/?s=\u0002\u00010",
+ "pac": "http://opac.hebib.de/search?scope=R1&q=\u0002\u00010",
+ "rnbach": "//www.hornbach.de/shop/suche/sortiment/\u0002\u00015",
+ "ror": {
+ "*": "//horormagoria.sk/?s=\u0002\u00010",
+ "y": "//horormagoria.sk/?s=\u0002\u00010",
+ "magoria": "//horormagoria.sk/?s=\u0002\u00010"
+ },
+ "tbot": "http://www.hotbot.com/search/web?q=\u0002\u00010",
+ "tbuzzy": "//www.buzzyhot.com/search?q=\u0002\u00010",
+ "tel": {
+ "*": "//hotels.com/search.do?q-destination=\u0002\u00010",
+ "s": "//hotels.com/search.do?q-destination=\u0002\u00010"
+ },
+ "tline": "http://hotline.ua/sr/?q=\u0002\u000116",
+ "tsar": "http://www.hotstar.com/search?q=\u0002\u00010",
+ "tstar": "http://www.hotstar.com/search?q=\u0002\u00010",
+ "tud": "http://www.homeoftheunderdogs.net/search.php?search_game=\u0002\u00010",
+ "tukdeals": "http://www.hotukdeals.com/search?action=search&keywords=\u0002\u000121",
+ "ver": "//www.hover.com/domains/results?q=\u0002\u000119"
+ },
+ "p": {
+ "b": "//www.hpb.com/products?utf8=%E2%9C%93&keywords=\u0002\u000113",
+ "c": {
+ "f": "http://www.housepetscomic.com/forums/search.php?keywords=\u0002\u00010",
+ "*": "http://www.housepetscomic.com/?s=\u0002\u00010"
+ },
+ "f": "http://www.housepetscomic.com/forums/search.php?keywords=\u0002\u00010",
+ "*": "http://search.hp.com/query.html?lang=en&submit.x=0&submit.y=0&qt=\u0002&la=en&cc=us\u000112",
+ "p": {
+ "*": "//hpluspedia.org/index.php?search=\u0002\u00010",
+ "id": "//id.healthyplusplus.com/search?q=\u0002\u00010"
+ },
+ "v": "http://www.heise.de/preisvergleich/?fs=\u0002\u000188",
+ "ecas": "//hpecas.com/pesquisa?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=\u00010",
+ "hosts": "http://hosts-file.net/default.asp?s=\u0002\u00010",
+ "hys": "//duckduckgo.com/?q=site%3Ahyperphysics.phy-astr.gsu.edu+\u0002\u00015",
+ "lus": {
+ "*": "//hpluspedia.org/index.php?title=Special%3ASearch&search=\u0002\u00010",
+ "pedia": "//hpluspedia.org/index.php?search=\u0002\u00010"
+ },
+ "support": "http://www.support.hp.com/us-en/search?q=\u0002&filter=\u00013",
+ "wiki": "http://harrypotter.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010"
+ },
+ "s": {
+ "b": "http://soblex.de/?p_w=\u0002&cmd=search_soblex\u00010",
+ "*": "http://honyakustar.com/en/\u0002 \u00017",
+ "l": "//www.hsl.fi/search/solr?keywords=\u0002\u00010",
+ "w": {
+ "*": "http://computer.howstuffworks.com/search.php?terms=\u0002\u00010",
+ "iki": "http://hearthstone.gamepedia.com/index.php?search=\u0002\u00014"
+ },
+ "as": "http://www.hs-albsig.de/search/results.aspx?k=\u0002&cs=Diese%20Website&u=http%3A%2F%2Fwww.hs-albsig.de\u00010",
+ "db": "//www.adl.org/education-and-resources/resource-knowledge-base/hate-symbols?keys=\u0002\u00010",
+ "ts": "//hstspreload.org/?domain=\u0002\u00010",
+ "un": "//www.heraldsun.com.au/?s=\u0002\u00010"
+ },
+ "t": {
+ "b": "//hooktube.com/results?search_query=\u0002\u00010",
+ "f": "http://www.howtoforge.com/trip_search?keys=\u0002\u00010",
+ "g": "http://www.howtogeek.com/search/?q=\u0002\u00013",
+ "*": "//hooktube.com/results?search_query=\u0002\u00010",
+ "w": {
+ "b": "//www.htw-berlin.de/suche/?domain=www.htw-berlin.de&query=\u0002\u00010",
+ "*": "//www.htw-dresden.de/suche.html?tx_kesearch_pi1[sword]=\u0002\u00015"
+ },
+ "el": "//www.herold.at/telefonbuch/telefon_\u0002/\u00010",
+ "ml": {
+ "*": "//duckduckgo.com/html/?q=\u0002\u000167",
+ "5d": "http://html5doctor.com/search/?q=\u0002\u00010",
+ "2txt": "http://www.w3.org/services/html2txt?url=\u0002\u00010",
+ "book": "http://htmlbook.ru/search/?as_q=\u0002\u00010",
+ "dog": "http://www.htmldog.com/search/?q=\u0002\u00010"
+ },
+ "tp": {
+ "*": "//httpstatuses.com/\u0002 \u0001147",
+ "cat": "//http.cat/\u0002\u00010"
+ },
+ "cat": "//http.cat/\u0002\u00010",
+ "ube": "//hooktube.com/results?search_query=\u0002\u00010"
+ },
+ "u": {
+ "d": {
+ "e": "http://translate.google.com/#hu/de/\u0002\u00010",
+ "*": "//hud.summon.serialssolutions.com/search?ho=t&l=en&fvf=ContentType%2CBook+Review%2Ct&q=\u0002&limit=everything\u00010"
+ },
+ "*": "//healthunlocked.com/search/\u0002\u00013",
+ "m": {
+ "a": "http://www.humanite.fr/search/\u0002\u00010",
+ "*": "//www.humblebundle.com/store/search?sort=bestselling&search=\u0002\u00010",
+ "ble": {
+ "*": "//www.humblebundle.com/store/search?search=\u0002\u000178",
+ "best": "//www.humblebundle.com/store/search?sort=bestselling&search=\u0002\u00010",
+ "deals": "//www.humblebundle.com/store/search?sort=discount&search=\u0002\u00010",
+ "wiki": "http://humble.wikia.com/w/\u0002\u00010"
+ }
+ },
+ "co": "http://hudoc.echr.coe.int/sites/eng/Pages/search.aspx#{%22fulltext%22:[%22\u0002 %22],%22documentcollectionid2%22:[%22GRANDCHAMBER%22,%22CHAMBER%22]}\u00010",
+ "en": "http://translate.google.com/#hu/en/\u0002\u000119",
+ "es": "//translate.google.hu/#hu/es/\u0002\u00010",
+ "ge": "//hugethinking.com/?s=\u0002\u00010",
+ "go": "//codewithhugo.com/search/?q=\u0002\u00014",
+ "it": "http://translate.google.com/#hu/it/\u0002\u00010",
+ "kd": "http://www.hotukdeals.com/search?action=search&keywords=\u0002\u000121",
+ "lu": "http://www.hulu.com/search?query=\u0002\u000177",
+ "sr": "//translate.google.com/#hu/sr/\u0002 \u00010",
+ "awei": "http://consumer.huawei.com/en/search/index.htm?keywords=\u0002\u00010",
+ "bpg": "//hubpages.com/search/?s=\u0002 \u00010",
+ "bski": "//hubski.com/search?q=\u0002\u00010",
+ "bspot": "//knowledge.hubspot.com/search?q=\u0002\u00010",
+ "ffingtonpost": "//www.huffingtonpost.com/search?keywords=\u0002&sortBy=recency&sortOrder=desc\u00010",
+ "ffpost": "//www.huffingtonpost.com/search?keywords=\u0002&sortBy=recency&sortOrder=desc\u00010",
+ "skermax": "http://huskermax.com/?q=\u0002\u00010",
+ "uto": "http://www.huuto.net/hakutulos?words=\u0002\u00016"
+ },
+ "v": {
+ "g": "http://hvg.hu/kereses?term=\u0002&x=0&y=0\u00010",
+ "*": "http://www.hinnavaatlus.ee/search/?Type=products&Query=\u0002\u00017",
+ "v": "//geofox.hvv.de/jsf/home.seam?destination=\u0002\u00010",
+ "norman": "//www.harveynorman.com.au/catalogsearch/result/?q=\u0002\u00010",
+ "store": "//www.hv-store.de/navi.php?qs=\u0002: \u00010"
+ },
+ "w": {
+ "2": "//howto9ja.com/?s=\u0002\u00010",
+ "d": "http://www.hollywoodreporter.com/search/\u0002 \u00010",
+ "*": "http://halo.umbc.edu/cgi-bin/haloweb/nrc1.pl?display=json&operation=search&keyword=\u0002\u00014",
+ "s": "//www.hackingwithswift.com/search/\u0002\u000154",
+ "z": "http://www.hardwarezone.com.sg/search/forum/?\u0002\u00010",
+ "iki": "//hi.wikipedia.org/w/index.php?search=\u0002&title=विशेष%3Aखोज&go=जाएँ&ns0=1\u00010"
+ },
+ "x": {
+ "b": "http://www.hoaxbuster.com/search/node/\u0002%20type%3Aarticle\u00010",
+ "*": "//hex.pm/packages?search=\u0002&sort=downloads\u0001149",
+ "h": "http://hunterxhunter.wikia.com/wiki/Special:Search?query=\u0002\u00013"
+ },
+ "y": {
+ "*": "//via.hypothes.is/\u0002\u00016",
+ "p": {
+ "*": "http://www.hyperninjas.com/search?q=\u0002\u00010",
+ "em": "http://hypem.com/#!/search/\u0002/1/\u00010",
+ "er": {
+ "*": "//www.hyperbola.info/packages/?q=\u0002\u00010",
+ "ninjas": "http://hyperninjas.com/search?q=\u0002\u00010"
+ },
+ "estat": "http://www.\u0002.hypestat.com/\u00010",
+ "hen": "//www.hyphenation24.com/word/\u0002/\u00010",
+ "ixel": "//hypixel.net/player/\u0002/\u000117"
+ },
+ "t": {
+ "*": "//www.hytiva.com/search?searchString=\u0002\u00016",
+ "s": "//www.hytiva.com/strains?searchString=\u0002\u00010"
+ },
+ "mn": {
+ "*": "http://hymn.se/?s=\u0002\u00010",
+ "s": {
+ "e": "http://hymn.se/?s=\u0002\u00010",
+ "*": "//www.hymnal.net/en/search/all/all/\u0002\u00010"
+ },
+ "ary": "//hymnary.org/search?qu=\u0002\u00015"
+ },
+ "sb": "//hypixel-skyblock.fandom.com/wiki/Special:Search?query=\u0002\u000152",
+ "brid": "//maps.google.com/maps?t=h&q=\u0002\u00010",
+ "vee": "//www.hy-vee.com/grocery/search?search=\u0002\u00010",
+ "ves": "http://www.hyves.nl/search/hyver/?searchterms=\u0002\u00010"
+ },
+ "ad": {
+ "d": "//handmade-add.com/index.php?route=product/search&search=\u0002\u00010",
+ "*": "http://hackaday.com/?s=\u0002\u00019",
+ "oop": "http://search-hadoop.com/?q=\u0002\u00010"
+ },
+ "ak": {
+ "5": {
+ "f": "//forums.hak5.org/index.php?app=core&module=search&do=search&fromMainBar=1&search_term=\u0002\u00010",
+ "*": "http://hak5.org/?s=\u0002\u00010"
+ },
+ "*": "http://wiki.hydrogenaudio.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010"
+ },
+ "al": {
+ "*": "//hal.archives-ouvertes.fr/search/index/?q=\u0002\u00013",
+ "altube": "//www.halaltube.com/?s=\u0002\u00010",
+ "opedia": "http://www.halopedia.org/index.php?search=\u0002\u000114"
+ },
+ "am": "http://www.hamdata.com/getcall.html?callsign=\u0002\u00010",
+ "aq": "http://hakkani.org/?term=\u0002\u00010",
+ "eb": {
+ "*": "//www.heb.com/search/?q=\u0002\u000111",
+ "wiki": "//he.wikipedia.org/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010"
+ },
+ "ex": {
+ "*": "http://www.colorhexa.com/\u0002\u000116",
+ "pm": "//hex.pm/packages?search=\u0002&sort=downloads\u0001149",
+ "docs": "http://hexdocs.pm/\u0002\u0001173"
+ },
+ "fr": "http://duckduckgo.com/?q=site:linuxfr.org+\u0002\u00010",
+ "fs": "//www.hifishark.com/search?q=\u0002\u00010",
+ "ft": "http://www.harborfreight.com/catalogsearch/result?q=\u0002\u000114",
+ "fu": {
+ "*": "//www.hs-furtwangen.de/suche/?L=0&id=207&tx_solr[q]=\u0002\u00010",
+ "boss": "//hsfu.boss2.bsz-bw.de/Search/Results?lookfor=\u0002&limit=20\u00010"
+ },
+ "i5": "http://hi5.com/friend/processHeaderNameSearch.do?searchText=\u0002\u00016",
+ "io": "//hackaday.io/search?term=\u0002\u00010",
+ "ip": {
+ "*": "http://www.hippressurecooking.com/?s=\u0002 \u00010",
+ "pie": "//wiki.hippiestation.com//index.php?title=Special%3ASearch&profile=default&search=\u0002\u00010"
+ },
+ "ro": "//www.hogeschoolrotterdam.nl/zoek/?q=\u0002\u00010",
+ "rv": "http://www.restovisio.com/search?sq=\u0002\u00010",
+ "aaretz": "http://www.haaretz.co.il/misc/search-results?searchType=textSearch&simpleSearch=simpleSearch&text=\u0002\u00010",
+ "abr": {
+ "a": "http://habrahabr.ru/search/?q=\u0002\u00010",
+ "*": "//habr.com/ru/search/?&q=\u0002\u000165"
+ },
+ "abbotrading": "http://www.ruilwaarde.nl/?p=\u0002\u00010",
+ "ack": {
+ "*": "//www.romhacking.net/?page=hacks&genre=&platform=&game=&category=&perpage=30&order=Date&dir=1&title=\u0002&author=&hacksearch=Go\u00017",
+ "42": "//hack42.nl/mediawiki/index.php?search=\u0002\u00010",
+ "aday": "http://hackaday.com/?s=\u0002\u00019",
+ "age": "http://hackage.haskell.org/packages/search?terms=\u0002\u0001685",
+ "eradana": "//blog.hackeradana.org/search?q=\u0002\u00010",
+ "ernews": "http://hn.algolia.com/#!/all/forever/0/\u0002\u000130",
+ "ology": "//blog.drhack.net/?s=\u0002\u00010",
+ "ster": "//www.hackster.io/search?i=projects&q=\u0002\u00010"
+ },
+ "afelenl": "//www.hafele.nl/INTERSHOP/web/WFS/Haefele-HNL-Site/nl_NL/-/EUR/ViewParametricSearch-SimpleOfferSearch?SearchType=all&SearchTerm=\u0002\u00010",
+ "ahwul": "http://www.hahwul.com/search?max-results=7&q=\u0002\u00010",
+ "anja": "http://hanja.naver.com/search?query=\u0002\u00013",
+ "anze": "//www.hanze.nl/nld/zoeken?k=\u0002\u00010",
+ "andelsblatt": "http://app.handelsblatt.com/suche/?sw=\u0002\u00013",
+ "andmadeadd": "//handmade-add.com/index.php?route=product/search&search=\u0002\u00010",
+ "andytarife": "//www.handytarife.de/?q=\u0002\u00010",
+ "annaford": "http://www.hannaford.com/catalog/search.cmd?form_state=searchForm&keyword=\u0002\u00010",
+ "ansard": "//hansard.parliament.uk/search?searchTerm=\u0002\u00010",
+ "anzidb": "http://hanzidb.org/character/\u0002\u00010",
+ "anzicraft": "http://www.hanzicraft.com/character/\u0002\u00010",
+ "appi": "//www.happi.com/contents/searchcontent/all/\u0002/\u00010",
+ "appycow": "//www.happycow.net/searchmap?lat=&lng=&location=\u0002\u000117",
+ "apshoe": "//www.hapshoe.com/Arama?1&kelime=\u0002\u00010",
+ "ardocp": "//www.hardocp.com/search/?q=\u0002\u00010",
+ "ardwareinfo": "//us.hardware.info/#search:\u0002\u00010",
+ "arney": "//www.harney.com/pages/search-results?findify_q=\u0002\u00010",
+ "arptabs": "//www.harptabs.com/searchsong.php?Name=\u0002&HarpType=0\u00010",
+ "arrypotter": "http://harrypotter.wikia.com/wiki/Special:Search?query=\u0002\u00016",
+ "arvardlib": "http://hollis.harvard.edu/primo_library/libweb/action/dlSearch.do?institution=HVD&vid=HVD&tab=everything&displayField=all&search_scope=everything&mode=Basic&onCampus=false&displayMode=full&query=any%2Ccontains%2C\u0002\u00010",
+ "ashtag": "//twitter.com/search?q=%23\u0002\u000111",
+ "askellwiki": "http://www.haskell.org/haskellwiki/Special:Search/\u0002\u00016",
+ "astane": "http://www.trhastane.com/arama.php?sehir=0&word=\u0002 \u00010",
+ "athi": "http://babel.hathitrust.org/cgi/ls?field1=ocr;q1=\u0002;a=srchls\u00018",
+ "atebu": "http://b.hatena.ne.jp/search/text?q=\u0002\u000124",
+ "aven": "http://havenmaine.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "avana": "//crazyabouthavana.com/?s=\u0002\u00010",
+ "awk": "http://hawkclothing.uk/index.php?route=product/search&search=\u0002\u00010",
+ "axelib": "http://lib.haxe.org/search?v=\u0002\u00013",
+ "ayoo": "http://holumbus.fh-wedel.de/hayoo/hayoo.html?query=\u0002\u00014",
+ "aze": "//hazeguitars.com/search?q=\u0002\u00010",
+ "eadfi": "//www.head-fi.org/search/9458473/?q=\u0002&o=relevance&c[p][sonnb_xengallery_photo][focal]=0&c[p][sonnb_xengallery_photo][iso]=0&c[p][sonnb_xengallery_photo][aperture]=0\u00013",
+ "ead-fi": "http://www.head-fi.org/search.php?search=\u0002\u00010",
+ "eadtalker": "//headtalker.com/?s=\u0002&post_type[]=campaigns\u00010",
+ "ealthable": "//www.healthable.org/?s=\u0002\u00010",
+ "eartbleed": "http://filippo.io/Heartbleed/#\u0002\u00013",
+ "earthpwn": "http://www.hearthpwn.com/search?search=\u0002#t1:cards\u00010",
+ "earthstone": "http://hearthstone.gamepedia.com/?search=\u0002\u00019",
+ "eaters": "//www.heatershop.co.uk/search?query=\u0002\u00010",
+ "eatspring": "//www.heatspring.com/app/courses/?query=\u0002\u00010",
+ "ecf": "http://hazmeelchingadofavor.com/?s=\u0002\u00010",
+ "eeza": "http://www.heeza.fr/fr/recherche?orderby=position&orderway=desc&search_query=\u0002&submit_search=Rechercher\u00010",
+ "eidi": "http://katalog.ub.uni-heidelberg.de/cgi-bin/search.cgi?fsubmit=1&query= \u0002\u00013",
+ "eise": "http://www.heise.de/suche/?q=\u0002&rm=search\u000143",
+ "eilkraeuter": "http://heilkraeuter.de/cgi-bin/search.cgi?Terms=\u0002\u00010",
+ "einzelnisse": "http://www.heinzelnisse.info/dict?searchItem=\u0002 \u00018",
+ "elm": {
+ "*": "http://www.helm.nu/Pages/Search.aspx?search=\u0002\u00010",
+ "h": "//hub.helm.sh/charts?q=\u0002\u00013",
+ "et": "http://haku.helmet.fi/iii/encore/search/C__S\u0002\u00010"
+ },
+ "elp": "//help.duckduckgo.com/search?q=\u0002\u000163",
+ "elka": "//helka.finna.fi/Search/Results?lookfor=\u0002\u00010",
+ "ema": "//www.hema.nl/search?q=\u0002&lang=nl_NL\u00010",
+ "enna": "//www.henna-boy.co.uk/index.php?route=product/search&search=\u0002\u00010",
+ "enry": {
+ "*": "//www.henrys.com/Search/\u0002.aspx?q=\u0002\u00010",
+ "sphoto": "//www.henrys.com/Search/\u0002.aspx?q=\u0002\u00010"
+ },
+ "endon": "http://www.thehendonmob.com/search/?q=\u0002\u00010",
+ "epsib": {
+ "*": "http://www.hepsiburada.com/ara?q=\u0002\u00013",
+ "urada": "http://www.hepsiburada.com/ara?q=\u0002\u00013"
+ },
+ "ere": "//wego.here.com/search/\u0002\u0001198",
+ "eraldsun": "//www.heraldsun.com.au/?s=\u0002\u00010",
+ "erber": "//duckduckgo.com/?q=\u0002+site%3Aherber.de\u00010",
+ "eritage": "//www.heritage.org/search?contains=\u0002\u00010",
+ "ermes": "//www.myhermes.de/empfangen/sendungsverfolgung/sendungsinformation/#\u0002\u00010",
+ "eroes": "//heroeshearth.com/hero/\u0002/\u00010",
+ "eroku": "http://devcenter.heroku.com/articles?q=\u0002\u00014",
+ "erold": "http://www.herold.at/telefonbuch/\u0002/\u00010",
+ "esari": "http://hs.fi/haku/?search-term=\u0002\u00010",
+ "eute": "//www.zdf.de/suche?q=\u0002&synth=true&sender=heute.de&from=&to=&attrs=\u00010",
+ "eureka": {
+ "*": "http://www.heureka.cz/?h[fraze]=\u0002\u0001140",
+ "sk": "http://www.heureka.sk/?h[fraze]=\u0002 \u00010"
+ },
+ "fqpdb": "http://www.hfqpdb.com/search/\u0002\u00010",
+ "i2en": "//translate.google.com/#view=home&op=translate&sl=hi&tl=en&text=\u0002\u00010",
+ "ibp": "//haveibeenpwned.com/account/\u0002\u00010",
+ "idden": "http://hwikis25cffertqe.onion/index.php?search=\u0002&title=Special%3ASearch\u000113",
+ "ideme": "//nl.hideproxy.me/go.php?u=\u0002\u000133",
+ "ighfive": "//success.highfive.com/hc/en-us/search?utf8=✓&query=\u0002\u00010",
+ "ighsnob": "http://www.highsnobiety.com/?s=\u0002\u00010",
+ "ihostels": "//www.hihostels.com/search/hostels?q=\u0002\u00010",
+ "ikr": "http://www.hikr.org/cse.php?q=\u0002\u00010",
+ "illel": "http://www.hillel.org/college-guide/search#keyword=\u0002&radius=10\u00010",
+ "ilux4x4": "http://www.hilux4x4.co.za/views/search.php?keywords=\u0002&terms=all&author=&sc=1&sf=all&sr=posts&sk=t&sd=d&st=0&ch=300&t=0&submit=Search\u00010",
+ "indu": "http://www.thehindu.com/search/?q=\u0002\u00017",
+ "inta": {
+ "*": "http://hintaseuranta.fi/haku/\u0002\u00010",
+ "fi": "http://hinta.fi/haku?q=\u0002\u000119"
+ },
+ "inews": "http://hi-news.ru/?s=\u0002\u00010",
+ "intoeng": "http://www.maxgyan.com/search/hindi-to-english/index.php?q=\u0002\u00010",
+ "istory": "http://www.history.com/search?search-field=\u0002&x=0&y=0\u00012426",
+ "istorious": "http://historio.us/search/?q=\u0002\u00010",
+ "itta": "//www.hitta.se/sök?vad=\u0002\u000181",
+ "itchwiki": "http://hitchwiki.org/en/index.php?search=\u0002&fulltext=Search&title=Special%3ASearch\u00014",
+ "ive": "//www.hive.co.uk/Search/Keyword?keyword=\u0002\u000110",
+ "rwiki": "http://hrwiki.org/w/index.php?title=Special:Search&search=\u0002&go=Go\u000128"
+ },
+ "i": {
+ "3": "//www.i3-technologies.com/en/resources/knowledge-base/?q=\u0002\u00016",
+ "a": {
+ "*": "//web.archive.org/web/*/\u0002\u000145",
+ "p": {
+ "*": "http://indeaparis.com/component/finder/search?q=\u0002 \u00010",
+ "pmag": "http://www.iappmag.de/?s=\u0002\u00010"
+ },
+ "v": {
+ "*": "//www.iav.com/search/site/\u0002\u00010",
+ "en": "//www.iav.com/en/search/site/\u0002\u00010"
+ },
+ "w": "http://infinitythewiki.com/en/\u0002\u00010",
+ "cr": "//www.iacr.org/search/?q=\u0002\u00010",
+ "ta": "http://airportcodes.aero/\u0002\u00010",
+ "cac": "//iacac.aero/?s=\u0002\u00010",
+ "cobus": "http://iacobus.usc.es/search*gag/?searchtype=Y&SORT=D&searcharg=\u0002 \u00010",
+ "loc": "//ialoc.ro/restaurante-bucuresti?search=\u0002\u00010",
+ "rchive": "http://www.archive.org/search.php?query=\u0002 \u000137",
+ "sutoya": "http://www.irasutoya.com/search?q=\u0002\u00010",
+ "teen": "//iate.europa.eu/search/byUrl?term=\u0002&sl=en\u00010"
+ },
+ "b": {
+ "c": "http://www.mtb-news.de/forum/search/12469693/?q=\u0002&o=relevance\u000119",
+ "d": {
+ "b": "http://www.ibdb.com/search.asp?SearchFor=\u0002&SearchBy=All\u00013",
+ "*": "//research.investors.com/stock-quotes/nasdaq-apple-inc-\u0002.htm?fromsearch=1\u00010"
+ },
+ "*": "//www.indiebound.org/search/book?keys=\u0002\u000113",
+ "m": {
+ "*": "http://www.ibm.com/Search/?q=\u0002&v=16&en=utf&lang=en&cc=us&Search=Search\u00014",
+ "kc": "//www.ibm.com/support/knowledgecenter/en/search/\u0002\u00010"
+ },
+ "s": "//www.ibs.it/search/?ts=as&query=\u0002\u000124",
+ "ge": "//www.ibge.gov.br/busca.html?searchword=\u0002&searchphrase=all\u00010",
+ "ergourfr": "//www.ibergour.fr/fr/search?query=\u0002\u00010",
+ "erlibro": "//www.iberlibro.com/servlet/SearchResults?sts=t&an=&tn=&kn=\u0002&isbn=\u00010",
+ "hejo": "http://www.ibhejo.com/ssearch.php?simple_search=Y&mode=search&search_substring=\u0002&sort_by=high\u00010",
+ "iblio": "http://www.ibiblio.org/gsearch/?cx=006345117986368989313%3Ar2fkn4tcz5i&cof=FORID%3A11&ie=UTF-8&q=\u0002\u00010"
+ },
+ "c": {
+ "a": {
+ "*": "//www.google.ca/imghp?\u0002\u00010",
+ "nn": {
+ "*": "//www.icann.org/search/#!/?searchText=\u0002\u00013",
+ "wiki": "//icannwiki.com/index.php?search=\u0002\u00010"
+ },
+ "recept": "//www.ica.se/receptsok/#:search=\u0002\u00010",
+ "ruspedia": "http://www.kidicaruswiki.org/index.php?title=Special%3ASearch&search=\u0002\u00010"
+ },
+ "d": {
+ "9": "http://www.icd9data.com/Search/?q=\u0002\u00010",
+ "*": "http://www.icd-code.de/suche/icd/recherche.html?sp=0&sp=S\u0002 \u00010",
+ "10": "http://www.icd10data.com/Search.aspx?search=\u0002\u00010"
+ },
+ "i": {
+ "*": "//ici.radio-canada.ca/recherche?q=\u0002\u00010",
+ "ba": "http://www.iciba.com/\u0002\u00015"
+ },
+ "*": "//www.imperial.ac.uk/search/?q=\u0002\u00010",
+ "m": "http://www.icheckmovies.com/search/movies/?query=\u0002\u00010",
+ "o": {
+ "*": "//icobench.com/icos?s=\u0002\u00010",
+ "n": {
+ "*": "http://www.iconfinder.com/search/?q=\u0002\u00016",
+ "s": {
+ "8": "//icons8.com/web-app/for/all/\u0002 \u00013",
+ "*": "http://www.iconfinder.com/search/?q=\u0002\u00016"
+ },
+ "archive": {
+ "*": "http://www.iconarchive.com/tag/\u0002\u00010",
+ "cc": "http://www.iconarchive.com/search?q=\u0002&license=commercialfree\u00010"
+ },
+ "finder": "http://www.iconfinder.com/search/?q=\u0002\u00016"
+ },
+ "mp": "http://www.i-comparateur.com/search.aspx?q=\u0002\u00010"
+ },
+ "es": "http://ices.dk/Searchcenter/Pages/default.aspx?k=\u0002\u00010",
+ "pl": "//catpro.icpl.org/iii/encore/search?lang=eng&target=\u0002\u00010",
+ "ecast": "http://dir.xiph.org/search?search=\u0002 \u00010",
+ "heckmovies": "http://www.icheckmovies.com/search/movies/?query=\u0002\u00010",
+ "station": "http://www.icstation.com/advanced_search_result.php?keywords=\u0002&search_in_description=1\u00010",
+ "ultr": "http://www.iculture.nl/?s=\u0002\u00010"
+ },
+ "d": {
+ "d": "http://www.google.it/cse?cx=partner-pub-5110806989181281:4419033070&q=\u0002\u00010",
+ "e": {
+ "e": "//www.idee-shop.com/search?sSearch=\u0002\u00010",
+ "*": "http://www.idealo.de/preisvergleich/MainSearchProductCategory.html?q=\u0002\u000190",
+ "s": "//www.idealo.es/resultados.html?q=\u0002\u00014",
+ "al": {
+ "*": "http://www.idealworld.tv/search/\u0002?fh_location=//IdealWorld/en_GB/$s=\u0002&gs=\u0002\u00010",
+ "o": {
+ "*": "http://www.idealo.de/preisvergleich/MainSearchProductCategory.html?q=\u0002\u000190",
+ "de": "http://www.idealo.de/preisvergleich/MainSearchProductCategory.html?q=\u0002\u000190",
+ "es": "//www.idealo.es/resultados.html?q=\u0002\u00014"
+ }
+ },
+ "as": "http://ideas.repec.org/cgi-bin/htsearch?q=\u0002&cmd=Search!\u00010",
+ "je": "//ideja.d2.si/results.php?q=\u0002\u00010",
+ "fix": "//www.idefix.com/search/?Q=\u0002\u00010",
+ "ntica": "http://identi.ca/search/people?q=\u0002&search=Search\u00014"
+ },
+ "g": "//www.doomworld.com/idgames//index.php?search=1&field=title&sort=time&order=desc&word=\u0002\u000129",
+ "*": "http://www.idealo.de/preisvergleich/MainSearchProductCategory.html?q=\u0002\u000190",
+ "i": {
+ "*": "//idoimaging.com/programs/fulltext?utf8=✓&Program[fulltext]=\u0002\u00010",
+ "om": {
+ "*": "http://idioms.thefreedictionary.com/\u0002\u000124",
+ "s": "http://www.thefreedictionary.com/\u0002 \u00010"
+ }
+ },
+ "l": "http://www.harrisgeospatial.com/docs/SearchResults.aspx?q=\u0002\u00010",
+ "s": "//instantdomainsearch.com/#search=\u0002\u000123",
+ "fr": "//www.idealo.fr/prechcat.html?q=\u0002 \u000113",
+ "fy": "//docs.idfy.io/?q=\u0002\u00010",
+ "os": "//jizdnirady.idnes.cz/vlakyautobusymhdvse/spojeni/?f=\u0002&t=\u0002\u000110",
+ "olmawiki": "http://idolmaster.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010",
+ "ownloadblog": "http://www.idownloadblog.com/search/?cx=partner-pub-2130162217902648%3Adgi3x3-xedb&cof=FORID%3A11&ie=ISO-8859-1&q=\u0002&siteurl=www.idownloadblog.com%2F&ref=www.google.com%2F&ss=1069j239311j6\u00010",
+ "ris": "http://docs.idris-lang.org/en/latest/search.html?q=\u0002&check_keywords=yes&area=default\u00010",
+ "rop": "//www.idropnews.com/?s=\u0002\u00010",
+ "root": "//idroot.us/?s=\u0002\u00010"
+ },
+ "*": "//duckduckgo.com/?q=\u0002&ia=images&iax=images\u000117",
+ "e": {
+ "c": "//dlc.iec.cat/results.asp?txtEntrada=\u0002\u000123",
+ "*": "//duckduckgo.com/?q=site%3Aie+\u0002\u00013",
+ "l": {
+ "*": "//support.inspiredelearning.com/help/search/?phrase=\u0002\u00010",
+ "w": "//industriaenlaweb.com.ar/buscador?name=\u0002\u00010"
+ },
+ "p": "http://www.iep.utm.edu/\u0002 \u00016",
+ "s": "http://www.eki.ee/dict/ies/index.cgi?Q=\u0002\u00017",
+ "t": {
+ "f": "http://datatracker.ietf.org/doc/search/?name=\u0002&activeDrafts=on&rfcs=on\u00010",
+ "*": "//digital-library.theiet.org/search?value1=\u0002&option1=all&option2=contentType&pageSize=20&value2=\u00010"
+ },
+ "x": "//www.iex.nl/Zoeken/Default.aspx?q=\u0002\u00010",
+ "ee": {
+ "*": "http://ieeexplore.ieee.org/search/searchresult.jsp?newsearch=true&queryText=\u0002\u000151",
+ "s": "http://spectrum.ieee.org/searchContent?q=\u0002\u00010"
+ },
+ "ns": "http://www.iens.nl/restaurant?q=\u0002\u00010"
+ },
+ "g": {
+ "a": "//www.iga.net/en/search?k=\u0002\u00010",
+ "g": "//www.indiegogo.com/explore?q=\u0002\u000113",
+ "*": "//www.instagram.com/explore/tags/\u0002/\u00013960",
+ "n": "//www.ign.com/search?q=\u0002\u000191",
+ "u": "//www.instagram.com/\u0002\u0001113",
+ "db": "//www.igdb.com/search?q=\u0002\u000175",
+ "em": "http://parts.igem.org/Special:Search?search=\u0002 \u00010",
+ "if": "//imgur.com/search/score?q=ext%3Agif+\u0002\u000115",
+ "ra": "http://igra-apple.ru/?s=\u0002\u00010",
+ "orandandre": "//igorandandre.com/search/\u0002\u00010"
+ },
+ "l": {
+ "*": "//duckduckgo.com/?q=\u0002&ia=images&iax=images&iaf=size%3Aimagesize-large\u000158",
+ "m": "http://www.ilmeteo.it/meteo/\u0002\u000113",
+ "fatto": "http://www.ilfattoquotidiano.it/\u0002\u000147",
+ "ink": "//il.ink/\u0002\u00010",
+ "lumos": "http://illumos.org/man/\u0002\u00010",
+ "ounge": "http://www.ilounge.com/index.php/search/results/search&keywords=\u0002\u00010",
+ "ovefreesoftware": "http://www.ilovefreesoftware.com/gsearch?ie=UTF-8&q=\u0002&ss=1633j526083j9&cof=FORID%3a10&cx=008701510501807727669%3aabbyr0bpxi0&siteurl=www.ilovefreesoftware.com%2f\u00010",
+ "post": "http://www.ilpost.it/?s=\u0002\u00016",
+ "sole24ore": "http://www.ricerca24.ilsole24ore.com/fc?keyWords=\u0002&submit=+&header-search=keyWords&cmd=static&moneyPath=http://finanza-mercati.ilsole24ore.com&chId=30&path=/search/search_engine.jsp&field=Titolo|Testo&orderBy=score+desc\u00010",
+ "stu": "http://search.illinoisstate.edu/?q=\u0002\u00010",
+ "tapulu": "http://www.iltapulu.fi/search.php?q=\u0002\u00010",
+ "tasanomat": "http://iltasanomat.fi/haku/?search-term=\u0002\u00010"
+ },
+ "n": {
+ "d": {
+ "*": "//www.india.com/searchresult/?cx=partner-pub-6717584324019958%3A4408969895&cof=FORID%3A10&ie=UTF-8&q=\u0002&sa=\u00010",
+ "ol": "//www.indolio.com/search?q=\u0002\u00010",
+ "eed": "http://www.indeed.com/jobs?q=\u0002\u000161",
+ "ependent": "http://www.independent.co.uk/search/simple.do?destinationSectionUniqueName=search&publicationName=ind&searchString=\u0002\u00010",
+ "iabookstore": "//www.indiabookstore.net/search?q=\u0002\u00010",
+ "iamart": "http://dir.indiamart.com/cgi/catprdsearch.mp?ss=\u0002\u00010",
+ "iankanoon": "//indiankanoon.org/search/?formInput=\u0002\u00010",
+ "iedb": "http://www.indiedb.com/search?cx=008031850949085947773%3Acbmjgaamtxe&cof=FORID%3A11&ie=UTF-8&q=\u0002&sa.x=0&sa.y=0\u00010",
+ "iegogo": "//www.indiegogo.com/search#/?q=\u0002\u00010",
+ "iemerch": "//www.indiemerchstore.com/search?q=\u0002\u00010",
+ "ieweb": "http://indieweb.org/wiki/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00013",
+ "igo": "http://www.chapters.indigo.ca/home/search/?keywords=\u0002\u00015",
+ "yaconnects": "http://www.indyaconnects.com/catalogsearch/result/?q=\u0002\u00010"
+ },
+ "g": "//www.ing.de/suche/?query=\u0002\u000116",
+ "*": "//invidio.us/search?q=\u0002\u000111",
+ "l": "//ivdnt.org/zoeken-in-woordenboeken?w=\u0002\u00010",
+ "n": {
+ "*": "//www.israelnationalnews.com/Search.aspx?string=\u0002\u00010",
+ "erf": "http://www.innerfidelity.com/search/node/\u0002\u00010",
+ "erlightcrystals": "//innerlightcrystals.co.uk/sales/index.php?main_page=advanced_search_result&keyword=\u0002&search_in_description=1\u00010",
+ "ooo": "http://www.innovativity.org/moteur-de-recherche-innooo.php?typerecherche=&item=\u0002\u00010",
+ "sida": "//innsida.ntnu.no/sok?site=innsida&query=\u0002&category=all\u00010"
+ },
+ "o": "http://www.inoreader.com/search/\u0002\u00010",
+ "p": {
+ "*": "//duckduckgo.com/?q=-site%3Apinterest.com+\u0002&iar=images&iax=images&ia=images\u00014",
+ "ost": "//inpost.pl/pl/pomoc/znajdz-przesylke?parcel=\u0002\u00017"
+ },
+ "s": {
+ "*": "http://www.instructables.com/howto/\u0002\u000122",
+ "as": "http://www.insa-strasbourg.fr/fr/?s=\u0002\u00010",
+ "ta": {
+ "*": "//www.instagram.com/explore/tags/\u0002\u00011499",
+ "gram": "//instagram.com/explore/tags/\u0002\u0001527",
+ "llgentoo": "//wiki.installgentoo.com/index.php/\u0002\u00018",
+ "ntgaming": "//www.instant-gaming.com/en/search/?q=\u0002\u000142",
+ "ntlogo": "http://instantlogosearch.com/?q=\u0002\u00010",
+ "paper": "//www.instapaper.com/search?q=\u0002\u00016"
+ },
+ "ectimages": "//www.insectimages.org/search/action.cfm?q=\u0002\u00010",
+ "ider": "//insider.in/search?q=\u0002\u00010",
+ "ideschools": "http://insideschools.org/search?q=\u0002 \u00010",
+ "pire": "http://inspirehep.net/search?p=\u0002\u0001132",
+ "pirationhut": "http://inspirationhut.net/?s=\u0002\u00010",
+ "tructables": "http://www.instructables.com/howto/\u0002\u000122"
+ },
+ "t": {
+ "*": "http://www.internazionale.it/search/?q=\u0002\u00010",
+ "el": {
+ "i": "//software.intel.com/sites/landingpage/IntrinsicsGuide/#!=undefined&text=\u0002\u00010",
+ "*": "http://www.intel.com/content/www/us/en/search.html?keyword=\u0002\u00016"
+ },
+ "er": {
+ "*": "//www.interencheres.com/recherche/lots?search=\u0002&area=france\u00010",
+ "cept": "//theintercept.com/search/?s=\u0002\u00018",
+ "nazionale": "http://www.internazionale.it/search/\u0002\u00010",
+ "sport": "//www.intersport.se/soksida/?q=\u0002\u00010"
+ },
+ "aljazeera": "http://www.aljazeera.com/Services/Search/?q=\u0002\u00010",
+ "egral": "//www.wolframalpha.com/input/?i=integral+\u0002\u00010",
+ "heclouds": "//intheclouds.io/search?q=\u0002\u00010",
+ "odns": "http://www.intodns.com/\u0002\u00010",
+ "ohu": "http://into.hu/kereses.php?kereses=\u0002&cikk=1&forum=1&letolt=1&fal=1&zene=1&kerdesek=1&page=1\u00010"
+ },
+ "v": {
+ "d": "//invidio.us/search?q=\u0002\u000111",
+ "*": "//inventaire.io/search?q=\u0002\u000113",
+ "ak": "//invak.info/?s=\u0002\u00010",
+ "id": {
+ "*": "//invidio.us/search?q=\u0002\u000111",
+ "io": {
+ "*": "//invidio.us/search?q=\u0002\u000111",
+ "us": "//www.invidio.us/search?q=\u0002\u000130"
+ }
+ },
+ "est": {
+ "*": "//www.investopedia.com/search/?search-terms=\u0002\u000123",
+ "ing": "//www.investing.com/search/?q=\u0002\u000112",
+ "opedia": "//www.investopedia.com/search/?search-terms=\u0002\u000123",
+ "orwords": "http://www.investorwords.com/search_cse.php?q=\u0002\u00010"
+ }
+ },
+ "ab": "http://www.ineedabargain.com/deals/search?q=\u0002 \u00010",
+ "ah": "//www.inah.gob.mx/buscador?searchword=\u0002\u00010",
+ "at": "//www.inaturalist.org/search?q=\u0002\u000137",
+ "ci": "http://inci.sozlukspot.com/w/\u0002\u000112",
+ "et": "http://www.inet.se/hitta?q=\u0002\u00010",
+ "ha": {
+ "*": "http://catalogue.inha.fr/inha/List.csp?SearchT1=\u0002&Index1=Tlm&Database=5&OpacLanguage=fre&NumberToRetrieve=50&SearchMethod=Find_1&SearchTerm1=\u0002&Profile=Profile35&PreviousList=Start&PageType=Start&WebPageNr=1&WebAction=NewSearch&StartValue=1&RowRepeat=0&MyChannelCount=\u00010",
+ "lt": "//www.inhaltsangabe.de/?s=\u0002\u00010"
+ },
+ "kb": {
+ "*": "//inkbunny.net/submissionsviewall.php?rid=&mode=search&page=1&orderby=create_datetime&text=\u0002&stringtype=and&keywords=yes&title=yes&description=no&artist=&favsby=&type=&sale=&days=&keyword_id=&user_id=&random=&md5=\u00014",
+ "un": "//inkbunny.net/submissionsviewall.php?mode=search&stringtype=and&keywords=yes&title=yes&description=yes&text=\u0002\u00010"
+ },
+ "rs": "http://www.inrs.fr/header/recherche.html?queryStr=\u0002\u00010",
+ "wx": "http://www.inwx.com/en/domain/check#search=\u0002#region=DEFAULT\u00014",
+ "2p3": "//annuaire.in2p3.fr/search/\u0002\u00010",
+ "box": "//inbox.google.com/search/\u0002\u000168",
+ "cense": "//www.incensepro.com/search?type=product&q=\u0002\u00010",
+ "comp": "//incompetech.com/wordpress/?s=\u0002\u00010",
+ "credible": "//www.incredible.co.za/search/?q=\u0002\u00010",
+ "floo": "http://inflooenz.com/?artist=\u0002\u00010",
+ "fog": {
+ "*": "//infogalactic.com/info/\u0002\u000122",
+ "al": {
+ "*": "//infogalactic.com/w/index.php?search=\u0002\u00010",
+ "actic": "http://infogalactic.com/w/index.php?search=\u0002\u000134"
+ },
+ "ram": "//infogr.am/search#\u0002\u00010"
+ },
+ "foq": "http://www.infoq.com/search.action?queryString=\u0002\u00010",
+ "fobae": "//www.infobae.com/search/\u0002/?q=\u0002\u00010",
+ "fopedia": "//www.infopedia.pt/dicionarios/lingua-portuguesa/\u0002\u00019",
+ "foseek": "http://websearch.rakuten.co.jp/Web?qt=\u0002\u000173",
+ "fosphere": "http://theinfosphere.org/index.php?search=\u0002&go=Go&title=Special%3ASearch\u00010",
+ "fowars": "//www.infowars.com/?s=\u0002\u00014",
+ "foworld": "//www.infoworld.com/search/google?cx=014839440456418836424%3Ahugs45or03k&cof=FORID%3A9&query=\u0002&op=Search&gl=US&safe=off&form_build_id=form-ea211c8bee91b69175fca8d84e9d9543&form_id=google_cse_results_searchbox_form\u00010",
+ "itium": "//initium.fandom.com/wiki/Special:Search?query=\u0002\u00010",
+ "keri": "http://inkeri-klubi.radioviola.net/system/app/pages/search?scope=search-site&q=\u0002\u00014",
+ "kipedia": "http://splatoonwiki.org/w/index.php?search=\u0002&go=Go\u00015",
+ "ktweb": "//www.inktweb.nl/search.php?search=\u0002\u00010",
+ "rocks": "//lesinrocks.com/recherche/?q=\u0002\u00010"
+ },
+ "p": {
+ "a": {
+ "*": "//en.wikipedia.org/wiki/Help:IPA/\u0002\u00013",
+ "pi": "http://ip-api.com/#\u0002\u000114",
+ "rcel": "//tracking.i-parcel.com/secure/track.aspx?track=\u0002\u00010"
+ },
+ "l": {
+ "*": "//www.iplt20.com/search?term=\u0002\u00013",
+ "oc": {
+ "*": "//www.iptolocation.net/trace-\u0002\u00010",
+ "ation": "//www.iplocation.net/?query=\u0002\u000169"
+ },
+ "ayer": {
+ "*": "http://www.bbc.co.uk/iplayer/search?q=\u0002\u00010",
+ "radio": "http://www.bbc.co.uk/radio/programmes/a-z/by/\u0002/player\u00010"
+ },
+ "ookup": "http://iplookup.theel0ja.info/?host=\u0002\u00014"
+ },
+ "s": "//interpersonal.stackexchange.com/search?q=\u0002\u00010",
+ "*": "http://whatismyipaddress.com/ip/\u0002\u0001485",
+ "db": "http://www.ipdb.org/search.pl?any=\u0002&sortby=name&search=Search+Database&searchtype=quick\u00010",
+ "fs": "//ipfs.io/ipfs/\u0002\u000115",
+ "ns": "//ipfs.io/ipns/\u0002\u00010",
+ "ro": "http://www.iprofesional.com/index.php?p=buscadorProfesional&texto=\u0002\u00010",
+ "v6": "http://ready.chair6.net/?url=\u0002\u00010",
+ "ernity": "http://www.ipernity.com/search/doc?q=\u0002&w=on\u00010",
+ "honees": "http://www.actualidadiphone.com/search/\u0002\u00010",
+ "info": "http://ipinfo.io/\u0002\u0001153",
+ "rice": "//iprice.my/search/?term=\u0002\u00010",
+ "track": {
+ "*": "http://www.ip-tracker.org/locator/ip-lookup.php?ip=\u0002\u00013",
+ "er": "http://www.ip-tracker.org/locator/ip-lookup.php?ip=\u0002 \u000140"
+ },
+ "void": "http://www.ipvoid.com/scan/\u0002\u00010"
+ },
+ "s": {
+ "b": {
+ "*": "http://www.isbns.net/search/?query=\u0002 \u00010",
+ "n": {
+ "*": "//isbndb.com/search/books/\u0002\u000135",
+ "db": "http://isbndb.com/search-all.html?kw=\u0002\u00010",
+ "nu": "http://isbn.nu/\u0002\u00010",
+ "search": "//isbnsearch.org/search?s=\u0002\u00010"
+ }
+ },
+ "c": {
+ "*": "//isc.sans.edu/ipinfo.html?ip=\u0002\u00010",
+ "rap": "http://iscrapapp.com/?SearchTxt=\u0002\u00010"
+ },
+ "*": "http://ilmainensanakirja.fi/sanakirja/\u0002?\u000150",
+ "l": {
+ "*": "//islamansiklopedisi.org.tr/arama/?q=\u0002&p=m\u00010",
+ "amqa": "http://islamqa.info/en/search?key=\u0002&yt0=search\u00010",
+ "am21c": "//www.Islam21c.com/?s=\u0002\u00010",
+ "amicboighor": "http://islamicboighor.com/?s=\u0002&post_type=product\u00010"
+ },
+ "o": {
+ "*": "//distrowatch.com/table.php?distribution=\u0002\u000135",
+ "ffline": "http://www.downforeveryoneorjustme.com/\u0002\u00010",
+ "nline": "http://www.downforeveryoneorjustme.com/\u0002\u00010"
+ },
+ "s": {
+ "*": "http://issuu.com/search?q=\u0002\u00017",
+ "uu": "//issuu.com/search?q=\u0002\u00016"
+ },
+ "w": "//www.instantstreetview.com/s/\u0002\u00010",
+ "ec": "//security.stackexchange.com/search?q=\u0002\u00015",
+ "gd": "//is.gd/create.php?url=\u0002\u000111",
+ "hr": "http://www.ishr.ch/advanced-search?term=\u0002 \u00010",
+ "mu": "//is.muni.cz/auth/vyhledavani/?search=\u0002\u000135",
+ "ni": "//isni.oclc.org/xslt/CMD?ACT=SRCH&IKT=8006&TRM=\u0002\u00010",
+ "up": "//downforeveryoneorjustme.com/\u0002\u00015",
+ "aac": "http://bindingofisaacrebirth.gamepedia.com/index.php?search=\u0002\u0001350",
+ "aca": "http://www.isaca.org/Search/Pages/DefaultResults.aspx?k=Test&s=\u0002\u00010",
+ "erv": "//www.iserv.fr/?s=\u0002\u00010",
+ "fdb": "http://www.isfdb.org/cgi-bin/se.cgi?type=Fiction%20Titles&arg=\u0002\u00019",
+ "huffle": "http://www.indieshuffle.com/search/songs/\u0002\u00010",
+ "itup": "//isitup.org/\u0002\u00018",
+ "itdown": "//downforeveryoneorjustme.com/\u0002\u00015",
+ "prime": "http://www.isprimenumber.com/prime/\u0002\u00014",
+ "rgrajan": "//www.isrgrajan.com/?s=\u0002\u00010",
+ "thereanydeal": "//isthereanydeal.com/search/?q=\u0002\u000152",
+ "tock": {
+ "*": "http://www.istockphoto.com/photos/\u0002?phrase=\u0002\u000125",
+ "photo": "http://www.istockphoto.com/file_search.php?action=file&text=\u0002\u00010"
+ },
+ "toric-preturi": "//www.istoric-preturi.info/search/\u0002\u00010"
+ },
+ "t": {
+ "*": "//duckduckgo.com/?q=\u0002&kl=it-it\u0001106",
+ "s": "//www.its-mo.com/search/freeword/\u0002\u00010",
+ "v": {
+ "*": "//www.itv.com/itvplayer/search/term/\u0002\u00010",
+ "erb": "http://www.italian-verbs.com/italian-verbs/conjugation.php?verbo=\u0002\u00010"
+ },
+ "ad": "//isthereanydeal.com/search/?q=\u0002\u000152",
+ "ch": "//itch.io/search?q=\u0002\u0001178",
+ "en": "http://translate.google.com/#it/en/\u0002 \u000190",
+ "eo": "http://www.swahili.it/glossword/index.php?a=term&d=2&q=\u0002\u00010",
+ "es": "http://translate.google.com/#it/es/\u0002\u00010",
+ "fr": "http://context.reverso.net/traduction/italien-francais/\u0002\u00010",
+ "hu": "http://translate.google.com/#it/hu/\u0002\u00010",
+ "aigi": "//itaigi.tw/k/\u0002\u00010",
+ "ebooks": "http://it-ebooks.info/search/?q=\u0002&type=title\u00010",
+ "ella": "http://www.itella.fi/itemtracking/itella/search_by_shipment_id?ShipmentId=\u0002\u00010",
+ "news": "//it-news.press/search?searchword=\u0002\u00010",
+ "newz": "http://itnewz.ro/?s=\u0002: \u00010",
+ "ninja": "http://www.itninja.com/search?q=\u0002\u00010",
+ "rig": "http://www.itrig.de/index.php?serendipity%5Baction%5D=search&serendipity%5Bfullentry%5D=1&serendipity%5BsearchTerm%5D=\u0002\u00010",
+ "unes": {
+ "*": "//duckduckgo.com/?q=\u0002%20site%3Aitunes.apple.com\u000114",
+ "es": "//duckduckgo.com/?q=\u0002+site%3Aitunes.apple.com%2Fes%2F\u00010",
+ "artist": "//itunes.apple.com/us/artist/\u0002\u00010"
+ },
+ "wiki": "//it.wikipedia.org/wiki/Special:Search?search=\u0002\u000151"
+ },
+ "v": {
+ "*": "http://www.italian-verbs.com/italian-verbs/conjugation.php?verbo=\u0002\u00010",
+ "st": "//www.investopedia.com/search?q=\u0002\u000120",
+ "oox": "//www.ivoox.com/\u0002_sb.html?sb=\u0002\u00017"
+ },
+ "w": {
+ "*": "http://instantwatcher.com/search?content_type=1+2&source=1+2+3&q=\u0002\u00010",
+ "mn": "//iwantmyname.com/?domain=\u0002\u00013",
+ "ant": {
+ "*": "http://iwantmyname.com/search?domain=\u0002\u00010",
+ "myname": "//iwantmyname.com/?domain=\u0002\u00013"
+ },
+ "iki": "//www.theiphonewiki.com/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00013",
+ "oot": "http://www.iwoot.com/elysium.search?search=\u0002\u00010"
+ },
+ "id": {
+ "*": "//www.isitdownrightnow.com/\u0002.html\u00016",
+ "rn": "//www.isitdownrightnow.com/\u0002.html\u00016"
+ },
+ "jp": "http://prirucka.ujc.cas.cz/?slovo=\u0002\u000112",
+ "mb": {
+ "d": "http://www.imdb.com/find?q=\u0002&s=all\u0001107",
+ "*": "http://www.imbiomed.com.mx/1/1/articulos.php?method=searchKeyword&keywords=\u0002\u00018"
+ },
+ "md": {
+ "b": {
+ "a": "http://www.imdb.com/find?ref_=nv_sr_fn&q=\u0002&s=nm\u00014",
+ "*": "http://www.imdb.com/find?s=all&q=\u0002\u000124423",
+ "k": "http://www.imdb.com/find?s=kw&q=\u0002\u00010",
+ "m": "//m.imdb.com/find?q=\u0002\u000187",
+ "n": "http://www.imdb.com/find?s=nm&q=\u0002\u000112",
+ "p": "http://pro-labs.imdb.com/find?q=\u0002 \u000120",
+ "s": "http://imdb.com/showtimes/US/\u0002\u00010",
+ "ep": "//www.imdb.com/find?&q=\u0002&s=ep\u00010",
+ "tv": "//www.imdb.com/search/title?title=\u0002&title_type=tv_series\u00010"
+ },
+ "*": "http://www.imdb.com/find?q=\u0002+&s=all\u0001266"
+ },
+ "mg": {
+ "*": "//duckduckgo.com/?q=\u0002&ia=images&iax=images\u000117",
+ "s": "//duckduckgo.com/?q=\u0002&ia=images&iax=images\u000117",
+ "ur": {
+ "*": "//imgur.com/search?q=\u0002\u0001466",
+ "ul": "http://imgur.com/api/upload/?url=\u0002\u00014"
+ },
+ "flip": "//imgflip.com/search?q=\u0002\u00016",
+ "ops": "//imgops.com/\u0002\u000113",
+ "rwm": "//google.com/search?tbm=isch&q=\u0002&tbs=imgo:1#q=\u0002&tbs=imgo:1,sur:fmc&tbm=isch\u00017"
+ },
+ "mh": "//www.inmotionhosting.com/support/search?searchword=\u0002\u00010",
+ "ms": {
+ "*": "//ims.com.br/?s=\u0002\u00010",
+ "lp": "http://imslp.org/index.php?title=Special:Search&search=\u0002\u0001133"
+ },
+ "o9": "http://io9.com/search?q=\u0002\u00010",
+ "ol": "//www.iol.co.za/search?q=\u0002\u00010",
+ "op": {
+ "*": "http://iopscience.iop.org/nsearch?terms=\u0002&searchType=yourSearch\u00010",
+ "s": "//imgops.com/\u0002\u000113"
+ },
+ "os": "http://developer.apple.com/library/ios/search/?q=\u0002\u000141",
+ "ot": {
+ "*": "//www.roomalert.ro/search?q=\u0002\u00010",
+ "eksperten": "//ioteksperten.dk/?s=\u0002&post_type=product\u00010"
+ },
+ "rc": {
+ "*": "http://irc.netsplit.de/channels/?chat=\u0002\u00013",
+ "-galleria": "//irc-galleria.net/users/search?username=\u0002 \u00010"
+ },
+ "rs": "http://search.irs.gov/search?q=\u0002&proxystylesheet=irs_portals_frontend\u00010",
+ "xl": "//ca.ixl.com/search?q=\u0002\u00010",
+ "ya": {
+ "*": "//yandex.com/images/search?text=\u0002\u0001323",
+ "nmv": "http://iyanmv.com/?s=\u0002\u00010"
+ },
+ "fab": "http://theifab.com/search/\u0002\u00010",
+ "fdb": "http://ifdb.tads.org/search?searchbar=\u0002\u00016",
+ "fht": "http://www.ifht.rwth-aachen.de/ca/be/ovbs/?lidx=&search=\u0002\u00010",
+ "fixit": "http://www.ifixit.com/search?x=0&y=0&query=\u0002\u000127",
+ "fttt": "//ifttt.com/search/query/\u0002\u00010",
+ "fun": {
+ "*": "//www.ifun.de/suche/\u0002\u00010",
+ "ny": "//ifunny.co/search/memes?q=\u0002\u00010"
+ },
+ "hep": "http://inspirehep.net/search?p=\u0002\u0001132",
+ "herb": "//iherb.com/search?kw=\u0002\u000117",
+ "iba": "//www.iiba.org/search/?q=\u0002\u00010",
+ "jinus": "//www.ijinus.com/?s=\u0002&lang=en\u00010",
+ "kanoon": "//indiankanoon.org/search/?formInput=\u0002\u00010",
+ "kea": {
+ "*": "http://www.ikea.com/us/en/search/?query=\u0002\u000175",
+ "at": "//www.ikea.com/at/de/search/products/?q=\u0002\u00010",
+ "au": "http://www.ikea.com/au/en/search/?query=\u0002\u00013",
+ "be": "http://www.ikea.com/be/nl/search/?query=\u0002\u00010",
+ "ca": "//www.ikea.com/ca/en/search/products/?q=\u0002\u000135",
+ "ch": "http://www.ikea.com/ch/de/search/?query=\u0002\u00010",
+ "cs": "//www.ikea.com/cz/cs/search/?query=\u0002\u00010",
+ "de": "//www.ikea.com/de/de/search/products/?q=\u0002\u00018",
+ "es": "//www.ikea.com/es/es/search/products/?q=\u0002\u00010",
+ "fr": "http://www.ikea.com/fr/fr/search/?query=\u0002\u00010",
+ "ie": "http://www.ikea.com/ie/en/search/?query=\u0002 \u00010",
+ "it": "http://www.ikea.com/it/it/search/?query=\u0002\u00010",
+ "nl": "//www.ikea.com/nl/nl/search/?q=\u0002\u00010",
+ "pl": "//www.ikea.com/pl/pl/search/?query=\u0002\u00010",
+ "uk": "//www.ikea.com/gb/en/search/products/?q=\u0002\u00010"
+ },
+ "kkepedia": "http://ikkepedia.org/wiki/\u0002\u00010",
+ "kman": "//ikman.lk/en/ads?query=\u0002\u00010",
+ "kso": "http://kantaro.ikso.net/?do=search&id=\u0002&fulltext=Serĉo\u00010",
+ "mag": {
+ "e": {
+ "*": "//duckduckgo.com/?q=\u0002&ia=images&iax=images\u000117",
+ "s": {
+ "*": "//duckduckgo.com/?q=\u0002&ia=images&iax=images\u000117",
+ "hack": "http://imageshack.us/photos/\u0002\u00014"
+ },
+ "ly": "//www.imagely.com/?s=\u0002 \u00010",
+ "layers": "//imagelayers.io/?images=\u0002\u00010",
+ "net": "http://www.image-net.org/search?q=\u0002\u00010",
+ "quest": "http://quest.eb.com/search/\u0002\u00010"
+ },
+ "*": "//www.indiemag.fr/search/node/\u0002\u00010",
+ "r": "//imagr.eu/?action=search&search=\u0002\u00014"
+ },
+ "mas": {
+ "*": "http://www.project-imas.com/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00018",
+ "wiki": "http://www.project-imas.com/w/index.php?search=\u0002\u00010"
+ },
+ "maths": "http://images.math.cnrs.fr/spip.php?page=recherche&page=recherche&recherche=\u0002\u00010",
+ "mfdb": "http://www.imfdb.org/w/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000127",
+ "more": "http://www.imore.com/search/\u0002?query=\u0002\u00010",
+ "mpdb": "http://impdb.org/index.php?search=\u0002\u00014",
+ "mperial": "//www.imperial.ac.uk/search/?q=\u0002\u00010",
+ "mpericonde": "http://www.impericon.com/de/advancedsearch/result/?q=\u0002\u00010",
+ "mpericonuk": "http://www.impericon.com/uk/advancedsearch/result/?q=\u0002\u00010",
+ "qdb": "http://iqdb.org/?url=\u0002\u000166",
+ "rasutoya": "http://www.irasutoya.com/search?q=\u0002\u00010",
+ "res": "http://www.imaging-resource.com/search.html?q=\u0002\u00010",
+ "recommend": "http://irecommend.ru/srch?query=\u0002\u00010",
+ "ris": {
+ "*": "http://scitools.org.uk/iris/docs/latest/search.html?q=\u0002\u00010",
+ "htimes": "//www.irishtimes.com/search/search-7.4195619?q=\u0002\u00010"
+ },
+ "rowiki": "http://irowiki.org/w/index.php?search=\u0002\u00010",
+ "ukb": "//kb.iu.edu/search?q=\u0002\u00010",
+ "upac": "//iupac.org/?s=\u0002\u00010",
+ "url": "http://google.com/searchbyimage?image_url=\u0002\u000120",
+ "xigo": "//ixigo.com/q/\u0002\u00010",
+ "zneo": "http://www.izneo.com/search.html?pattern=\u0002\u00010"
+ },
+ "j": {
+ "a": {
+ "b": "//www.jabong.com/find/\u0002\u00010",
+ "*": "http://www.j-archive.com/search.php?search=\u0002\u00010",
+ "l": {
+ "*": "http://www.jal.co.jp/cgi-bin/jal/insite_search/index.cgi?keyword=\u0002&collection=jalcojp&charset=shift_jis\u00010",
+ "op": {
+ "*": "http://jalopnik.com/search?q=\u0002\u00010",
+ "nik": "http://jalopnik.com/search?q=\u0002\u00010"
+ }
+ },
+ "m": {
+ "f": "//www.jamf.com/jamf-nation/search?query=\u0002\u00010",
+ "*": "//www.jamendo.com/en/search?qs=q=\u0002\u00010",
+ "ie": "//www.jamieoliver.com/search/?s=\u0002\u00010",
+ "endo": "//www.jamendo.com/search?q=\u0002\u00010"
+ },
+ "p": {
+ "i": "//duckduckgo.com/?q=site%3Aapi.joomla.org+\u0002\u00010",
+ "*": "//support.justaddpower.com/kb/search/?q=\u0002\u00010"
+ },
+ "r": {
+ "*": "http://www.findjar.com/index.x?query=\u0002\u000150",
+ "gon": {
+ "f": "http://jargonf.org/index.php?search=\u0002\u00010",
+ "*": "//duckduckgo.com/?q=\u0002+site%3Acatb.org+inurl%3Ajargon\u00017"
+ }
+ },
+ "y": {
+ "*": "http://www.jaycar.com.au/search?text=\u0002\u00010",
+ "car": "//www.jaycar.co.nz/search/?q=\u0002\u00010"
+ },
+ "de": "//jade.io/search/\u0002\u00010",
+ "di": "//jadi.net/?s=\u0002\u00010",
+ "va": {
+ "4": "http://search.oracle.com/search/search?tzoffset=420&default=true&q=\u0002+url:/javase/1.4.2/docs&start=1&nodeid=&fid=&showSimilarDoc=true&group=Documentation&keyword=&x=0&y=0\u00010",
+ "5": "http://search.oracle.com/search/search?tzoffset=420&default=true&q=\u0002+url:/javase/1.5.0/docs&start=1&nodeid=&fid=&showSimilarDoc=true&group=Documentation&keyword=&x=0&y=0\u00010",
+ "6": "http://search.oracle.com/search/search?tzoffset=420&default=true&q=\u0002+url:/javase/6/docs&start=1&nodeid=&fid=&showSimilarDoc=true&group=Documentation&keyword=&x=0&y=0\u00010",
+ "7": "//docs.oracle.com/apps/search/search.jsp?q=\u0002&category=java&product=e17409-01\u00010",
+ "8": "//duckduckgo.com/?q=site%3Adocs.oracle.com%2Fjavase%2F8%2Fdocs%2Fapi%2F+\u0002\u000157",
+ "9": "http://docs.oracle.com/apps/search/search.jsp?category=java&q=\u0002\u00013",
+ "*": "//docs.oracle.com/apps/search/search.jsp?q=\u0002&category=java\u000178",
+ "11": "//duckduckgo.com/?q=site%3Adocs.oracle.com%2Fen%2Fjava%2Fjavase%2F11%2Fdocs%2Fapi%2F+\u0002\u000192",
+ "fx": "//search.oracle.com/search/search?num=10&exttimeout=false&q=\u0002+url:/javase/8/javafx/api&group=Documentation\u00010",
+ "libs": "//javalibs.com/search?q=\u0002\u00010",
+ "libhunt": "//java.libhunt.com/search?query=\u0002\u00010",
+ "script": "//developer.mozilla.org/search?q=\u0002\u000111"
+ },
+ "wb": "//ja.wikibooks.org/w/index.php?search=\u0002\u00010",
+ "wp": "//ja.wikipedia.org/w/index.php?search=\u0002\u00014",
+ "wq": "//ja.wikiquote.org/w/index.php?search=\u0002\u00010",
+ "ws": "//ja.wikisource.org/w/index.php?search=\u0002\u00010",
+ "wt": "//ja.wiktionary.org/w/index.php?search=\u0002\u00010",
+ "wv": "//ja.wikiversity.org/w/index.php?search=\u0002\u00010",
+ "2en": "//translate.google.com/#ja/en/\u0002\u00010",
+ "conj": "http://japaneseverbconjugator.com/VerbDetails.asp?txtVerb=\u0002&Go=Conjugate\u00010",
+ "cobin": "//jacobinmag.com/search?query=\u0002\u00010",
+ "nus": "//janus.lib.cam.ac.uk/db/node.xsp?search=\u0002\u00013",
+ "wiki": "//ja.wikipedia.org/wiki/\u0002 \u00014"
+ },
+ "á": "http://ja.is/?q=\u0002\u00010",
+ "b": {
+ "*": "http://www.jupiterbroadcasting.com/?s=\u0002\u00016",
+ "o": {
+ "*": "http://jbovlaste.lojban.org/lookup?Form=lookup.pl1&Strategy=*&Query=\u0002\u00010",
+ "vlaste": "http://jbovlaste.lojban.org/dict/\u0002\u00014"
+ },
+ "hifi": "http://www.jbhifi.com.au/?q=\u0002\u000110",
+ "plugins": "//plugins.jetbrains.com/search?correctionAllowed=true&search=\u0002\u00010"
+ },
+ "d": {
+ "f": "http://www.journaldesfemmes.com/s/\u0002\u00010",
+ "g": "http://www.journaldugeek.com/?s=\u0002\u00015",
+ "k": "http://docs.oracle.com/apps/search/search.jsp?category=java&q=\u0002\u00013",
+ "l": "//www.jdlighting.com.au/catalogsearch/result/?q=\u0002\u00010",
+ "n": "http://www.journaldunet.com/s/\u0002\u00010",
+ "w": "http://www.jdwetherspoon.co.uk/home/pubs/find/\u0002\u00010",
+ "*": "http://search.jd.com/Search?keyword=\u0002&enc=utf-8\u000161",
+ "be": "http://www.lejournaldubienetre.com/search?tag=\u0002\u00010",
+ "ca": "http://ca.justdial.com/allus/\u0002\u00010",
+ "in": "http://www.justdial.com/National-Search/\u0002\u00010",
+ "pune": "http://www.justdial.com/Pune/\u0002\u00010"
+ },
+ "e": {
+ "d": {
+ "i": {
+ "*": "//www.jedipedia.net/w/index.php?search=\u0002\u00010",
+ "s": "http://www.jedisjeux.net/search_results.php?search=\u0002&button_search=Ok\u00010",
+ "pedia": "http://jedipedia.wikia.com/wiki/Spezial:Suche?search=\u0002&fulltext=Search\u00010"
+ },
+ "*": "//extensions.joomla.org/extensions/extension/?searchall=\u0002&filter%5Btags%5D%5B%5D=&filter%5Bcore_catid%5D=&filter%5Bincludes%5D=&filter%5Bversions%5D=&filter%5Btype%5D=&filter%5Bhasdemo%5D=&filter%5Bnewupdated%5D=&filter%5Bscore%5D=&dir=DESC&limitstart=&controller=filter&view=extension&layout=list&Itemid=145&clearorders=0&clearfilters=1\u00010"
+ },
+ "p": "//www.aeaweb.org/journals/jep/search-results?within%5Btitle%5D=on&within%5Babstract%5D=on&within%5Bauthor%5D=on&journal=3&q=\u0002\u00010",
+ "*": "http://www.tanoshiijapanese.com/dictionary/index.cfm?j=\u0002&e=&search=Search+%3E\u00010",
+ "t": {
+ "*": "//jet.com/search?term=\u0002\u00010",
+ "brains": "//www.jetbrains.com/search/?q=\u0002\u00010",
+ "lag": "//thehappyjetlagger.com/?s=\u0002\u00010",
+ "pens": "http://www.jetpens.com/search?q=\u0002\u00014"
+ },
+ "gs": "//www.jegs.com/webapp/wcs/stores/servlet/SearchResultsPageCmd?Ntt=\u0002\u00010",
+ "ux": "http://www.jeuxvideo.com/recherche.php?q=\u0002\u00014",
+ "llyneo": "//items.jellyneo.net/search/?name=\u0002\u00010",
+ "nsonusa": "http://www.jensonusa.com/search?q=\u0002\u00010",
+ "opardy": "http://www.j-archive.com/search.php?search=\u0002\u00010",
+ "rgas": "http://www.jergasdehablahispana.org/?pais=&palabra=\u0002&submit=Buscar&tipobusqueda=0\u00010",
+ "suerocha": "//jesuerocha.com/search/\u0002\u00010",
+ "zebel": "http://jezebel.com/search?q=\u0002\u00010"
+ },
+ "i": {
+ "d": "//items.jellyneo.net/search/?name=\u0002\u00010",
+ "g": "http://jayisgames.com/search/?cx=partner-pub-4854273876013864%3A9692641413&cof=FORID%3A11&ie=ISO-8859-1&q=\u0002&sa=Search&siteurl=jayisgames.com%2Fgames%2F&ref=jayisgames.com%2F&ss=&siteurl=jayisgames.com%2Fsearch%2F%3Fq%3Dhello&ref=&ss=849j189425j6\u00010",
+ "*": "//jisho.org/search/\u0002\u00011994",
+ "k": "//jisho.org/search/%23kanji%20\u0002\u00017",
+ "t": "http://www.jobintree.com/emploi?keywords=\u0002\u00010",
+ "v": {
+ "e": "//jivesearch.com/?q=\u0002\u00010",
+ "*": "//www.jouwictvacature.nl/vacatures?s=\u0002\u00010"
+ },
+ "on": "//jionews.com/search?query=\u0002\u00010",
+ "mms": "//www.jimms.fi/fi/Product/Search?q=\u0002\u00016",
+ "sho": "//jisho.org/search/\u0002\u00011994"
+ },
+ "*": "//jet.com/search?term=\u0002\u00010",
+ "j": "http://jinja.pocoo.org/docs/2.10/search/?q=\u0002\u00010",
+ "l": {
+ "*": "http://www.johnlewis.com/Search/Search.aspx?SearchTerm=\u0002\u00014",
+ "m": "http://www.jean-luc-melenchon.fr/?s=\u0002\u00010",
+ "pt": "http://jlptdictionary.com/index.php?pn=1&st=0&jl=0&njl=0&sb=0&obt=0&wpp=25&ot=0&k=\u0002\u00010",
+ "se": "http://japanese.stackexchange.com/search?q=\u0002\u00010"
+ },
+ "m": {
+ "e": {
+ "*": "//hub.jmonkeyengine.org/search?q=\u0002\u00010",
+ "w": "//duckduckgo.com/?q=\u0002 site:wiki.jmonkeyengine.org\u00010"
+ },
+ "*": "http://joemonster.org/search.php?q=\u0002\u00010",
+ "p": "http://www.jemepropose.com/annonces?keywords=\u0002\u00010"
+ },
+ "n": {
+ "*": "//www.jellynote.com/en/search?q=\u0002\u00010",
+ "n": "//jovemnerd.com.br/?s=\u0002\u00010"
+ },
+ "o": {
+ "b": {
+ "*": "//job.am/hy/jobs?q=\u0002\u00010",
+ "s": {
+ "*": "http://www.indeed.com/jobs?q=\u0002\u000161",
+ "bg": "//www.jobs.bg/front_job_search.php?zone_id=0&distance=0&location_sid=0&all_categories=0&all_type=0&all_position_level=1&all_company_type=1&keyword=\u0002&last=0\u00010",
+ "ca": "http://www.indeed.ca/jobs?q=\u0002\u00010",
+ "de": "//englishjobs.de/search?q=\u0002\u00010",
+ "mtl": "//www.jobillico.com/search-jobs?skwd=\u0002&scty=Montr%C3%A9al%2C%20QC&icty=6185&ipc=0&sil=&sjdpl=&sdl=&imc1=0&imc2=0&flat=45.509828&flng=-73.6715&mfil=byCity&ipg=1&clr=1\u00010"
+ },
+ "2u": "//us.job2u.org/?s=\u0002\u00010"
+ },
+ "e": {
+ "*": "http://joemonster.org/search.php?q=\u0002\u00010",
+ "fresh": "//www.joefresh.com/search?text=\u0002\u00010",
+ "monster": "http://joemonster.org/search.php?q=\u0002\u00010"
+ },
+ "*": "//www.jotrin.com/product/list?keyword=\u0002\u00018",
+ "cb": "//www.justonecookbook.com/?s=\u0002\u00010",
+ "co": "http://www.jonathancoulton.com/mediawiki/index.php?search=\u0002\u00010",
+ "jo": "http://jojo.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00014",
+ "om": "//www.joom.com/en/search/q.\u0002\u00010",
+ "tb": "//jotboard.info/lookup.php?q=\u0002\u00010",
+ "ve": {
+ "*": "//www.jove.com/search?q=\u0002\u00010",
+ "mnerd": "//jovemnerd.com.br/?s=\u0002\u00010"
+ },
+ "ann": "//www.joann.com/search?q=\u0002\u00010",
+ "fogas": "http://www.jofogas.hu/magyarorszag?q=\u0002\u00016",
+ "hnlewis": "http://www.johnlewis.com/Search/Search.aspx?SearchTerm=\u0002\u00014",
+ "inup": "//joinup.ec.europa.eu/search?keys=\u0002\u00010",
+ "ker": "//www.joker.be/nl/groepsreizen/\u0002\u00010",
+ "lla": "//together.jolla.com/questions/scope:all/sort:activity-desc/page:1/query:\u0002/\u00010",
+ "mgeek": "//jomgeek.my/?s=\u0002\u00010",
+ "official": "http://www.joofficial.com/website/search?query=\u0002 \u00010",
+ "rnaldaparaiba": "http://www.jornaldaparaiba.com.br/?s=\u0002\u00010",
+ "rudan": "//www.jorudan.co.jp/jt/cgi/qsearch/qsearch.cgi?s=\u0002\u000137"
+ },
+ "p": {
+ "c": "//www.jpc.de/s/\u0002\u0001111",
+ "d": {
+ "*": "//www.japandict.com/?s=\u0002\u0001100",
+ "ic": "http://jpdic.naver.com/search.nhn?query=\u0002\u000125"
+ },
+ "*": "http://www.jetpens.com/search?q=\u0002\u00014",
+ "j": "//www.buycarplate.com/?m=scr&searchval=\u0002\u00010",
+ "l": "//www.jpl.nasa.gov/search.php?q=\u0002\u00010",
+ "en": "http://www.kanjijapanese.com/en/dictionary-japanese-english/\u0002\u00017",
+ "ost": "//trackings.post.japanpost.jp/services/srv/search/direct?searchKind=S004&locale=en&reqCodeNo1=\u0002\u00013",
+ "ralves": "//jpralves.net/search.html?q=\u0002\u00010"
+ },
+ "q": {
+ "d": "http://api.jquery.com/\u0002/\u00010",
+ "*": "http://api.jquery.com/?ns0=1&s=\u0002\u000131",
+ "m": "http://jquerymobile.com/?s=\u0002\u00010",
+ "u": {
+ "i": "http://api.jqueryui.com/?s=\u0002\u00010",
+ "*": "http://jqueryui.com/?s=\u0002\u00010",
+ "ery": "http://api.jquery.com/?ns0=1&s=\u0002\u000131"
+ }
+ },
+ "r": {
+ "a": {
+ "*": "http://www.jra.go.jp/search/top/index.html?q=\u0002\u00010",
+ "dy": "//www.idsjmk.cz/jrady/\u0002.pdf\u00010"
+ },
+ "*": "http://joyreactor.cc/search?q=\u0002\u00010",
+ "s": "//jrsbelgium.org/spip.php?page=recherche&recherche=\u0002\u00010",
+ "devjobs": "//www.jrdevjobs.com/jobs?query=\u0002\u00010"
+ },
+ "s": {
+ "d": "//www.jsdelivr.com/?query=\u0002\u00010",
+ "m": "//junespringmultimedia.com/?s=\u0002&post_type=page\u00010",
+ "*": "//developer.mozilla.org/en-US/search?topic=api&topic=js&q=\u0002\u0001308",
+ "o": {
+ "*": "http://stackoverflow.com/search?q=[java]+\u0002\u00010",
+ "nlint": "http://jsonlint.com/?json=\u0002\u00010"
+ },
+ "bf": "//bundlephobia.com/result?p=\u0002\u000114",
+ "coach": "//js.coach/?search=\u0002\u00010",
+ "hint": "http://www.jshint.com/docs/options/#\u0002\u00010",
+ "info": "//javascript.info/search/?query=\u0002\u000111",
+ "supply": "//www.johnstonesupply.com/search/go?w=\u0002\u00010",
+ "tor": "http://www.jstor.org/action/doBasicSearch?Query=\u0002\u000113"
+ },
+ "v": {
+ "c": {
+ "*": "http://japaneseverbconjugator.com/VerbDetails.asp?txtVerb=\u0002\u00013",
+ "om": "http://www.jeuxvideo.com/recherche.php?q=\u0002 \u000172"
+ },
+ "d": "http://www.jeuxvideo.com/recherche.php?q=\u0002\u00014",
+ "*": "http://www.jeuxvideo.com/recherche.php?q=\u0002\u00014",
+ "j": "//www.japanesevehicles.com/stocklist.php?qsearch_kbn=1&lang=en&opt=0&qsearch=\u0002\u00010"
+ },
+ "w": {
+ "h": "//www.justwatch.com/us/search?q=\u0002\u0001335",
+ "i": {
+ "*": "//www.justwatch.com/in/search?q=\u0002\u000122",
+ "t": "//www.justwatch.com/it/cerca?q=\u0002\u000112"
+ },
+ "*": "http://www.jw.org/en/search/?q=\u0002\u000130",
+ "p": {
+ "*": "http://www.jwpepper.com/sheet-music/search.jsp?keywords=\u0002\u00010",
+ "epper": "http://www.jwpepper.com/sheet-music/search.jsp?keywords=\u0002\u00010"
+ },
+ "de": "//www.jw.org/de/suche/?q=\u0002\u00010",
+ "es": "//www.jw.org/es/búsquedas/?q=\u0002:\u00010",
+ "se": "//www.justwatch.com/se/search?q=\u0002\u00010"
+ },
+ "cp": "//jcp.org/en/jsr/summary?id=\u0002\u00010",
+ "fl": "//www.liberty.edu/library/search-results/?type=all&q=\u0002\u00010",
+ "fm": "//www.cambridge.org/core/journals/journal-of-fluid-mechanics/listing?q=\u0002\u00010",
+ "gf": "http://www.jazzguitar.be/forum/search.php?searchid=\u0002\u00010",
+ "hg": "http://jhg-traunreut.de/index.php?q=\u0002&option=com_finder&view=search\u00010",
+ "ta": "//www.justtryart.ml/search.php?k=\u0002\u00010",
+ "tw": "http://www.just-the-word.com/api/combinations?word=\u0002\u00010",
+ "2team": "//junookyo.blogspot.com/search?q=\u0002\u00010",
+ "comp": "http://chaitan.cloudapp.net/justcompare/search?q=\u0002\u00010",
+ "guitar": "http://jguitar.com/chordsearch?chordsearch=\u0002\u00010",
+ "hulib": "//catalyst.library.jhu.edu/multi_search?utf8=✓&search_field=all_fields&q=\u0002\u00010",
+ "tut": "http://search.oracle.com/search/search?search_p_main_operator=all&group=Documentation&q=\u0002+url%3A%2Fjavase%2Ftutorial\u00010",
+ "ualusg": "//www.jualusg2d3dmurah.com/search?q=\u0002\u00010",
+ "uejin": "//juejin.im/search?query= \u0002&type=all\u00010",
+ "uick": "http://juick.com/?search=\u0002\u00010",
+ "uju": "//jujucharms.com/q/\u0002\u00010",
+ "ukuu": "http://jukuu.com/search.php?q=\u0002\u00010",
+ "ula": "//www.jula.se/search/?query=\u0002\u00010",
+ "uls": "http://slovniky.juls.savba.sk/?w=\u0002&s=exact&c=608a&d=kssj4&d=psp&d=sssj&d=scs&d=sss&d=peciar&d=ma&d=hssjV&d=bernolak&d=obce&d=priezviska&d=un&d=locutio&d=pskcs&d=psken&d=noundb&ie=utf-8&oe=utf-8#\u00010",
+ "ulia": "//docs.julialang.org/en/latest/search?q=\u0002\u000116",
+ "umbo": {
+ "*": "//www.jumbo.pt/Frontoffice/search/\u0002\u00010",
+ "supermarkt": "http://www.jumbo.com/zoeken?SearchTerm=\u0002\u00010"
+ },
+ "umps": "//www.jumps.nl/index.php/component/finder/search?q=\u0002&Itemid=106\u00010",
+ "uno": {
+ "*": "//www.juno.co.uk/search/?q[all][]=\u0002\u00013",
+ "dl": "http://www.junodownload.com/search/?q[all][0]=\u0002\u00010"
+ },
+ "unat": "//www.junat.net/en/\u0002\u00010",
+ "uninet": "//www.juniper.net/search/gsa/?keyword=\u0002\u00010",
+ "usbr": {
+ "*": "http://www.jusbrasil.com.br/busca?q=\u0002 \u00010",
+ "asil": "//www.jusbrasil.com.br/busca?q=\u0002\u00010"
+ },
+ "ustia": "http://law.justia.com/lawsearch?query=\u0002\u00010",
+ "ustice": "//or.justice.cz/ias/ui/rejstrik-$firma?jenPlatne=PLATNE&nazev=\u0002\u00010",
+ "ustimprinted": "//www.justimprinted.com/catalogsearch/result/?q=\u0002\u00010",
+ "ustwalkers": "http://justwalkers.com/catalogsearch/result/?q=\u0002\u00010",
+ "ustwatch": {
+ "*": "//www.justwatch.com/us/search?q=\u0002\u0001335",
+ "au": "//www.justwatch.com/au/search?q=\u0002\u00013",
+ "de": "//www.justwatch.com/de/Suche?q=\u0002\u00014",
+ "fi": "//www.justwatch.com/fi/search?q=\u0002\u00010",
+ "uk": "//www.justwatch.com/uk/search?q=\u0002\u000136"
+ },
+ "utarnji": "//www.jutarnji.hr/search/?q=\u0002\u00010",
+ "uwelo": "//www.juwelo.es/catalogsearch/result/?q=\u0002\u00010"
+ },
+ "k": {
+ "a": {
+ "*": "//www.khanacademy.org/search?page_search_query=\u0002\u000130",
+ "m": {
+ "*": "http://kamusiturki.com/\u0002\u00010",
+ "us": "http://prpm.dbp.gov.my/Search.aspx?k=\u0002\u00010",
+ "ailio": "//www.kamailio.org/w/?s=\u0002\u00010",
+ "elopedia": "http://kamelopedia.mormo.org/index.php?title=Spezial%3ASuche&search=\u0002&button=Senden\u00010"
+ },
+ "s": {
+ "*": "http://www.kaskus.co.id/search?q=\u0002\u00010",
+ "hipara": "//www.kashipara.com/search/search.php?search=\u0002\u00010",
+ "kus": "//www.kaskus.co.id/search?q=\u0002\u00010",
+ "persky": {
+ "*": "http://support.kaspersky.com/search?query=\u0002\u00010",
+ "mal": "//www.securelist.com/en/descriptions?words=\u0002&behavior=&Search=Search&search_type=1\u00010"
+ }
+ },
+ "li": {
+ "*": "//www.kali.org/?s=\u0002\u00017",
+ "mah": "//kalimah.top/results/?q=\u0002\u00010"
+ },
+ "os": {
+ "*": "//forum.kaosx.us/?q=\u0002\u00010",
+ "pkg": "http://kaosx.tk/packages/?act=search&subdir=&sortby=date&order=descending&searchpattern=\u0002 \u00010"
+ },
+ "pi": "http://api.kde.org/mapsearcher.php?class=\u0002&module=ALL&version=ALL&go=Go\u00010",
+ "rt": "//kart.finn.no/?q=\u0002\u00010",
+ "artje": "//www.kaartje2go.nl/zoeken?q=\u0002\u00010",
+ "bum": "//www.kabum.com.br/cgi-local/site/listagem/listagem.cgi?string=\u0002&btnG=\u000117",
+ "ffee": "//kaffee.citadella.de/de/suche?controller=search&s=\u0002\u00010",
+ "fto": "//www.kafto.gr/?s=\u0002\u00010",
+ "hoot": "//create.kahoot.it/search?filter=1&query=science&tags=\u0002\u00014",
+ "hta": "//www.kahtahaber.com/search?q=\u0002\u00010",
+ "kaku": "http://kakaku.com/search_results/\u0002\u000176",
+ "kijun": "http://kakijun.jp/main/u_kensaku.php?KANJI=\u0002\u00010",
+ "kosepise": "http://kakosepise.com/?s=\u0002\u00010",
+ "leva": "//www.kaleva.fi/haku/?search=\u0002\u00010",
+ "ncolle": "http://kancolle.wikia.com/wiki/Special:Search?search=\u0002\u000116",
+ "ngaroo": "//kangarookarry.com/search?type=product&q=\u0002\u00010",
+ "nji": "//app.kanjialive.com/search/\u0002\u00010",
+ "nopy": "//www.kanopy.com/s?query=\u0002\u00010",
+ "prof": "//www.khanacademy.org/profile/\u0002/\u00010",
+ "rhcj": "http://judgmenthck.kar.nic.in/judgments/simple-search?query=\u0002\u00010",
+ "rir": "//dikarier.com/layanan/?keywords=\u0002\u00010",
+ "rmadecay": "http://karmadecay.com/\u0002\u00013",
+ "tacoda": "//katacoda.com/search?q=\u0002\u00010",
+ "teglo": "http://kateglo.com/?phrase=\u0002&mod=dictionary\u00013",
+ "yak": "//www.kayak.com/sherlock/opensearch/search?q=\u0002\u000120",
+ "zan": "http://fegszerviz.hu/?s=\u0002\u00010"
+ },
+ "b": {
+ "b": {
+ "i": "//kbbi.kemdikbud.go.id/entri/\u0002\u000172",
+ "*": "//www.kbb.com/search/?source=homepage&query=\u0002\u00014"
+ },
+ "*": "http://duckduckgo.com/?q=site%3Akeybase.io+\u0002\u00010",
+ "n": "//korben.info/?s=\u0002\u000118",
+ "t": "//kabutan.jp/stock/?code=\u0002\u00010",
+ "ors": "http://kuldnebors.ee/search/search.mec?search_evt=onsearch&pob_action=search&search_O_string=\u0002\u00010",
+ "ugs": "//bugs.kde.org/buglist.cgi?quicksearch=\u0002\u00010"
+ },
+ "d": {
+ "b": "//code.kx.com/q/search?query=\u0002\u00010",
+ "*": "http://kanjidamage.com/kanji/search?utf8=%E2%9C%93&q=\u0002\u000117",
+ "eblog": "http://www.kdeblog.com/?s=\u0002\u00010",
+ "nuggets": "//www.kdnuggets.com/?s=\u0002\u00010"
+ },
+ "f": {
+ "*": "//kasperfred.com/posts/?q=\u0002\u00010",
+ "s": "http://www.keyforsteam.de/catalogue/search-\u0002/\u000111",
+ "z": "http://www.kfz-info.net/\u0002-kfz-kennzeichen/\u00010"
+ },
+ "g": {
+ "*": "http://kg-portal.ru/?search&s_str= \u0002\u00010",
+ "m": "http://keygenmusic.net/?page=search&query=\u0002\u00010",
+ "forum": "http://forum.kvinneguiden.no/?q=\u0002\u00010",
+ "itlab": "//invent.kde.org/search?utf8=✓&snippets=&scope=&search=\u0002\u00010"
+ },
+ "h": {
+ "*": "//hub.kubeapps.com/charts?q=\u0002\u00010",
+ "an": {
+ "*": "//www.khanacademy.org/search?page_search_query=\u0002\u000130",
+ "academy": "//www.khanacademy.org/search?page_search_query=\u0002\u000130"
+ },
+ "amsat": "//khamsat.com/search?utf8=✓&q=\u0002\u00010",
+ "insider": "http://www.khinsider.com/search?search=\u0002\u00010",
+ "ronos": "http://www.khronos.org/search/?cx=017055583490642512057:_ak1bpok_no&cof=FORID:9&q=\u0002&sa=Search&siteurl=www.khronos.org/\u00010",
+ "wiki": "//www.khwiki.com/index.php?title=Special%3ASearch&search=\u0002\u00010"
+ },
+ "j": {
+ "i": "http://kanji.jitenon.jp/cat/search.php?getdata=\u0002\u00010",
+ "*": "http://www.biblestudytools.com/search/?q=\u0002&s=Bibles&t=kjv\u00010",
+ "v": "http://www.kingjamesbibleonline.org/search.php?q=\u0002\u000132",
+ "ell": {
+ "*": "http://www.kjell.com/Sok?query=\u0002\u00010",
+ "no": "//www.kjell.com/no/sok?query=\u0002\u00010"
+ }
+ },
+ "k": {
+ "c": "//kingkiller.wiki/w/index.php?search=\u0002\u00010",
+ "*": "//kubekings.com/buscar?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=\u00010",
+ "bb": "http://www.kisskissbankbank.com/search?q=\u0002\u00010",
+ "bib": "//bibliotek.kk.dk/search/ting/\u0002\u00010",
+ "box": "//www.kkbox.com/search.php?search=mix&word=\u0002\u00010",
+ "bruce": "http://www.google.com/cse?cx=002209521788924011185:wzz9w-qvlhi&q=\u0002\u00010",
+ "tix": "//kktix.com/events?search=\u0002\u00010",
+ "usta": "http://www.kuantokusta.pt/search?q= \u0002 \u000114"
+ },
+ "*": "//www.konsolentreff.de/search/1/?q=\u0002\u000150",
+ "l": {
+ "*": "//kabarlinux.id/?s=\u0002\u00010",
+ "n": "http://klnavarro.free.fr/spip/spip.php?page=recherche&recherche=\u0002\u00010",
+ "ein": {
+ "*": "//www.ebay-kleinanzeigen.de/\u0002/k0\u000157",
+ "ezeitung": "http://www.kleinezeitung.at/user/search.do?searchText=\u0002&action=1&resetForm=1&resultsPage=0\u00010"
+ },
+ "ocks": "//klocksnack.se/search/6404040/?q=\u0002&o=date\u00010",
+ "ubschule": "//www.klubschule.ch/Kurse/suche@\u0002\u00010"
+ },
+ "m": {
+ "c": "//knowledge.kaltura.com/search?search_api_views_fulltext=\u0002\u00010",
+ "f": "//forum.keyboardmaestro.com/search?q=\u0002\u00010",
+ "*": "//kara.moe/base/karas?filter=\u0002\u00010",
+ "jy": "http://kaomojiya.jp/keyword/\u0002/?search_flg=1\u00010",
+ "art": {
+ "*": "http://www.kmart.com/shc/s/search_10151_10104?keyword=\u0002\u00010",
+ "au": "//www.kmart.com.au/webapp/wcs/stores/servlet/SearchDisplay?searchTerm=\u0002&categoryId=&storeId=10701&catalogId=10102&langId=-1&pageSize=30&beginIndex=0&sType=SimpleSearch&resultCatEntryType=2&showResultsPage=true&searchSource=Q&pageView=\u00010"
+ }
+ },
+ "n": {
+ "f": "//www.knf.gov.pl/wyniki_wyszukiwania?searchText=\u0002&publicationId=18&sortType=accuracy\u00010",
+ "*": "//knoema.com/search?query=\u0002\u00010",
+ "mi": "//knmi.nl/zoeken?q=\u0002\u00010",
+ "owyourmeme": "http://knowyourmeme.com/search?utf8=%E2%9C%93&q=\u0002\u000143"
+ },
+ "p": {
+ "e": {
+ "d": "//www.kpedia.jp/w/\u0002\u00010",
+ "*": "http://kalliope.staatsbibliothek-berlin.de/de/search.html?q=\u0002\u00010"
+ },
+ "*": "//www.kupujemprodajem.com/search.php?action=list&data%5Bad_kind%5D=&data%5Bad_type%5D=&data%5Bfollow%5D=&data%5Bad_kind_type%5D=&data%5Btip_oglasa%5D=&data%5Bcategory_id%5D=&data%5Bgroup_id%5D=&data%5Blocation_id%5D=&data%5Blocation_radius%5D=&data%5Bhas_photo%5D=&data%5Bcondition%5D=&data%5Bperiod%5D=&data%5Border%5D=&data%5Bcar_model%5D=&data%5Bvehicle_power_min%5D=&data%5Bvehicle_power_max%5D=&data%5Bvehicle_cc_min%5D=&data%5Bvehicle_cc_max%5D=&data%5Bvehicle_km_min%5D=&data%5Bvehicle_km_max%5D=&data%5Bvehicle_make_year_min%5D=&data%5Bvehicle_make_year_max%5D=&data%5Bcar_body_type%5D=&data%5Bcar_fuel_type%5D=&data%5Bcar_doors%5D=&data%5Bcar_gearbox%5D=&data%5Bvehicle_aircondition%5D=&data%5Bvehicle_drive%5D=&data%5Bprice_from%5D=&data%5Bprice_to%5D=&dummy=name&data%5Bkeywords%5D=\u0002 &=&=&=&=&=&=&return_url=aW5kZXgucGhw\u000130",
+ "op": "//www.allkpop.com/search/articles/\u0002\u0001240",
+ "oisk": "http://www.kinopoisk.ru/index.php?first=no&what=&kp_query=\u0002\u000167",
+ "rojects": "//projects.kde.org/search?q=\u0002&all_words=1&projects=1&submit=Submit\u00010"
+ },
+ "r": {
+ "*": "//www.kroger.com/search?query=\u0002\u00016",
+ "l": "http://catalog.krl.org/polaris/search/searchresults.aspx?ctx=1.1033.0.0.9&type=Keyword&term=\u0002&by=KW&sort=RELEVANCE&limit=TOM%3D*&query=&page=0&searchid=1\u00010",
+ "ak": "//www.krak.dk/search?searchQuery=\u0002\u00013",
+ "aftly": "//kraftly.com/search?q=\u0002\u00010",
+ "dic": "http://krdic.naver.com/search.nhn?query=\u0002\u000149",
+ "eativfont": "//www.kreativfont.com/?s=\u0002\u00010",
+ "ebs": {
+ "*": "//krebsonsecurity.com/?s=\u0002\u00010",
+ "onsec": "//krebsonsecurity.com/?s=\u0002&x=0&y=0\u00010"
+ },
+ "eedo": "//www.kreedo.de/index.php?cl=search&searchparam=\u0002 \u00010",
+ "ita": "//docs.krita.org/index.php?search=\u0002\u00010",
+ "itiker": "//kritiker.se/sok/?q=\u0002\u00010",
+ "oger": "//www.kroger.com/search?query=\u0002\u00016"
+ },
+ "s": {
+ "*": "http://www.kickstarter.com/projects/search?utf8=✓&term=\u0002+\u0001151",
+ "l": {
+ "c": "//www.ksl.com/classifieds/search/?keyword=\u0002\u00015",
+ "*": "//classifieds.ksl.com/search?keyword=\u0002\u00018"
+ },
+ "p": {
+ "f": "http://forum.kerbalspaceprogram.com/search.php?s=\u0002\u00010",
+ "*": "http://wiki.kerbalspaceprogram.com/index.php?search=\u0002\u000111",
+ "pc": "//ksp.co.il/index.php?txt_search=\u0002\u00014",
+ "wiki": "http://wiki.kerbalspaceprogram.com/w/index.php?search=\u0002&title=Special%3ASearch\u00013"
+ },
+ "t": "//www.kickstarter.com/\u0002 \u00010",
+ "u": "//kitsu.io/anime?text=\u0002\u00010"
+ },
+ "t": {
+ "b": "http://techbase.kde.org/Special:Search?search=\u0002&fulltext=Search\u00010",
+ "h": {
+ "b": "//kth-primo.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&vid=46KTH_VU1_L&search_scope=default_scope&sortby=rank&tab=default_tab&lang=en_US&mode=simple&fromRedirectFilter=true\u00010",
+ "*": "//www.kth.se/search/search?q=\u0002\u00010",
+ "places": "//www.kth.se/places/search/?query=\u0002\u00010"
+ },
+ "*": "http://www.kicktraq.com/search/?find=\u0002\u00010",
+ "k": "http://kotaku.com/search?q=\u0002\u000161",
+ "s": "//www.kielitoimistonsanakirja.fi/\u0002\u00010",
+ "cz": "http://www.karaoketexty.cz/search?q=\u0002\u00010",
+ "echbase": "http://techbase.kde.org/Special:Search?search=\u0002&fulltext=Search\u00010"
+ },
+ "x": {
+ "*": "http://kodexploit.com/blog/search?search=\u0002\u00010",
+ "ref": "//code.kx.com/q/search?query=\u0002\u00010"
+ },
+ "8s": "//kubernetes.io/docs/search/?q=\u0002\u000120",
+ "cl": {
+ "*": "//www.kcl.ac.uk/search/search.aspx#/all?term=\u0002\u00010",
+ "s": "http://kcls.bibliocommons.com/search?t=smart&search_category=keyword&q=\u0002&commit=Search\u00010"
+ },
+ "cp": {
+ "*": "//github.com/KaOS-Community-Packages?query=\u0002\u00010",
+ "l": "http://catalog.kentonlibrary.org/eg/opac/results?query=\u0002\u00014"
+ },
+ "eh": "//www.keh.com/shop/catalogsearch/result/?q=\u0002\u00010",
+ "er": {
+ "o": "http://www.kerosenokomputing.com/search?q=\u0002 \u00010",
+ "*": "//git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/log/?h=v5.0.1&qt=grep&q=\u0002\u00010",
+ "as": "//keras.io/search.html?q=\u0002\u00010",
+ "des": "//www.gyakorikerdesek.hu/kereses.php?keres=\u0002\u00010",
+ "jasama": "http://kerjasama.bandung.go.id/?s=\u0002\u00010"
+ },
+ "ey": "//keybase.io/\u0002\u00013",
+ "id": {
+ "*": "//www.kiddle.co/s.php?q=\u0002\u00013",
+ "rex": "http://www.kidrex.org/results/?q=\u0002\u00010",
+ "sinmind": "http://www.kids-in-mind.com/cgi-bin/search/search.pl?q=\u0002 \u00015"
+ },
+ "im": {
+ "*": "//kids-in-mind.com/?s=\u0002\u00013",
+ "deyir": "//kimdeyir.com/?s=\u0002\u00010",
+ "ovil": "http://www.kimovil.com/en/compare-smartphones/name.\u0002\u00015"
+ },
+ "it": {
+ "*": "http://primo.bibliothek.kit.edu/primo_library/libweb/action/search.do?mode=Basic&vid=KIT&vl%28freeText0%29=\u0002&vl%28freeText0%29=test&fn=search&tab=kit&srt=date\u00016",
+ "su": "//kitsu.io/anime?text=\u0002\u00010",
+ "apyurdu": "//www.kitapyurdu.com/index.php?route=product/search&filter_name=\u0002\u000111",
+ "chenstories": "//kitchenstories.io/en/search?search=\u0002\u00010",
+ "hara": "//kithara.to/index.php?cmd=fi&query=\u0002\u00010",
+ "kraft": "http://kitkraft.com/search_a.php?q=\u0002\u00010"
+ },
+ "ol": {
+ "*": "http://kol.coldfront.net/thekolwiki/index.php/Special:Search?search=\u0002&go=Go\u0001147",
+ "w": {
+ "*": "http://kol.coldfront.net/thekolwiki/index.php/Special:Search?search=\u0002&go=Go\u0001147",
+ "iki": "http://kol.coldfront.net/thekolwiki/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u000131"
+ },
+ "li": "//www.postnord.se/sv/verktyg/sok/Sidor/spara-brev-paket-och-pall.aspx?view=item&itemid=\u0002\u00010",
+ "lekt": "//kollekt.fm/search/?q=\u0002&type=all\u00010"
+ },
+ "os": {
+ "*": "http://en.kingofsat.net/find.php?question=\u0002&Submit=Zap\u00010",
+ "mas": "http://www.kosmas.cz/hledani/?query=\u0002\u00010"
+ },
+ "ur": {
+ "*": "//www.kurpirkt.lv/cena.php?q=\u0002\u00010",
+ "an": "//kuranara.com/ara?q=\u0002\u00010",
+ "ibo64": "http://kuribo64.net/board/search.php?q=\u0002&inposts=0\u00010"
+ },
+ "vk": {
+ "*": "http://www.kvk.nl/orderstraat/bedrijf-kiezen/?q=\u0002\u000121",
+ "de": "http://kvk.bibliothek.kit.edu/hylib-bin/kvk/nph-kvk2.cgi?maske=kvk-redesign&lang=de&title=KIT-Bibliothek%3A+Karlsruher+Virtueller+Katalog+KVK+%3A+Ergebnisanzeige&head=%2F%2Fkvk.bibliothek.kit.edu%2Fasset%2Fhtml%2Fhead.html&header=%2F%2Fkvk.bibliothek.kit.edu%2Fasset%2Fhtml%2Fheader.html&spacer=%2F%2Fkvk.bibliothek.kit.edu%2Fasset%2Fhtml%2Fspacer.html&footer=%2F%2Fkvk.bibliothek.kit.edu%2Fasset%2Fhtml%2Ffooter.html&css=none&input-charset=utf-8&ALL=&TI=\u0002&AU=&CI=&ST=&PY=&SB=&SS=&PU=&kataloge=SWB&kataloge=BVB&kataloge=NRW&kataloge=HEBIS&kataloge=HEBIS_RETRO&kataloge=KOBV_SOLR&kataloge=GBV&kataloge=DDB&kataloge=STABI_BERLIN&kataloge=TIB&kataloge=OEVK_GBV&kataloge=VD16&kataloge=VD17&kataloge=VD18&kataloge=VOE&kataloge=ZDB&ref=direct&client-js=yes\u00010"
+ },
+ "vr": {
+ "*": "http://www.kvraudio.com/q.php?search=1&q=\u0002\u00010",
+ "audio": "http://www.kvraudio.com/q.php?search=1&q=\u0002\u00010"
+ },
+ "ym": "http://knowyourmeme.com/search?utf8=%E2%9C%93&q=\u0002\u000143",
+ "zs": "http://www.kidzsearch.com/kzsearch.php?q=\u0002\u00010",
+ "channet": "http://konachan.net/post?tags=\u0002\u00010",
+ "cmm": "http://kc-mm.com/?s=\u0002\u00010",
+ "community": "http://community.kde.org/index.php?title=Special:Search&search=\u0002\u00010",
+ "eel": "http://kn.eki.ee/?Q=\u0002\u00010",
+ "eep": {
+ "a": "http://keepa.com/#search/x-\u0002\u0001109",
+ "*": "//keep.google.com/#search/text=\u0002\u0001254"
+ },
+ "eithspecialty": "http://keithspecialty.com/cgi-keithspecialty/sb/productsearch.cgi?storeid=*0ee0f14a0870280c8d&search_field= \u0002 \u00010",
+ "ekanto": "//kekanto.com.br/newsearch?search=\u0002\u00010",
+ "eldan": "//leit.keldan.is/Home/Search?term=\u0002\u00010",
+ "elkoo": {
+ "*": "http://shopping.kelkoo.co.uk/ss-\u0002.html\u00010",
+ "se": "http://shopping.kelkoo.se/ss-\u0002.html\u00010"
+ },
+ "emono": "//japari-library.com/w/index.php?search=\u0002\u00010",
+ "enteken": "//ovi.rdw.nl/default.aspx?kenteken=\u0002\u00015",
+ "etab": "//ketab.io/search?submit=جستجو&q=\u0002\u00010",
+ "icker": "http://www.kicker.de/home/suchergebnisse.html?suchbegriff=\u0002\u00010",
+ "icknews": "http://www.kicknews.net/news/search?q=\u0002 \u00010",
+ "ickstarter": "//www.kickstarter.com/projects/search?utf8=✓&term=\u0002\u000137",
+ "icktraq": "http://www.kicktraq.com/search/?find=\u0002\u00010",
+ "ieskeurig": "http://www.kieskeurig.nl/zoeken/index.html?q=\u0002\u00015",
+ "ijiji": {
+ "*": "//www.kijiji.ca/b-search.html?formSubmit=true&pageNumber=1&searchView=LIST&sortByName=dateDesc&urgentOnly=false&keywords=\u0002&SearchCategory=0\u000125",
+ "gm": "http://www.kijiji.ca/b-grand-montreal/\u0002/k0l80002\u00014",
+ "it": "http://www.kijiji.it/\u0002/\u00010",
+ "og": "//www.kijiji.ca/b-ottawa-gatineau-area/\u0002/k0l1700184?dc=true\u00010",
+ "yyc": "//www.kijiji.ca/b-calgary/\u0002/k0l1700199?dc=true\u00013"
+ },
+ "ika": "//www.kika.de/suche/suche104.html?q=\u0002\u00010",
+ "ilimall": "//www.kilimall.co.ke/?act=search&keyword=\u0002\u00010",
+ "illerstartups": "http://www.killerstartups.com/?s=\u0002 \u00010",
+ "ino": {
+ "*": "http://www.kinopoisk.ru/index.php?first=no&what=&kp_query=\u0002\u000167",
+ "kuniya": "//www.kinokuniya.co.jp/disp/CSfDispListPage_001.jsp?qsd=true&ptk=01&q=\u0002&SEARCH.x=0&SEARCH.y=0\u00013"
+ },
+ "inderfilmliste": "http://www.kinderfilmliste.de/?suche=\u0002\u00010",
+ "indle": {
+ "*": "//www.amazon.com/s/?tag=duc0c-20&url=search-alias%3Ddigital-text&field-keywords=\u0002\u000194",
+ "cn": "//www.amazon.cn/s/ref=nb_sb_noss_2?url=node%3D116169071&field-keywords=\u0002\u00010",
+ "de": "//www.amazon.de/s/ref=nb_sb_noss?__mk_de_DE=ÅMÅŽÕÑ&url=search-alias%3Ddigital-text&field-keywords=\u0002\u00010",
+ "es": "//www.amazon.es/s/search-alias%3Ddigital-text&field-keywords=\u0002\u00010",
+ "jp": "//www.amazon.co.jp/s?k=\u0002&i=digital-text&__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A\u00017",
+ "uk": "//www.amazon.co.uk/s/?tag=duc0c-21&url=search-alias%3Ddigital-text&field-keywords=\u0002\u00013"
+ },
+ "inguin": "http://www.kinguin.net/catalogsearch/result/?q=\u0002\u00013",
+ "inige": "http://kinige.com/ksearch.php?searchfor=\u0002\u00010",
+ "irp": "http://kirp.pl/?s=\u0002\u00010",
+ "irby": "//getkirby.com/search?q=\u0002\u00010",
+ "irkus": "//www.kirkusreviews.com/search/?q=\u0002\u00010",
+ "issbb": "http://www.kisskissbankbank.com/fr/search?utf8=%E2%9C%93&q=\u0002\u00010",
+ "ivy": {
+ "*": "http://kivy.org/docs/search.html?check_keywords=yes&area=default&q=\u0002\u00010",
+ "api": "http://kivy.org/docs/search.html?check_keywords=yes&area=default&q=\u0002\u00010"
+ },
+ "obo": {
+ "*": "//www.kobo.com/us/en/search?Query=\u0002\u000138",
+ "ca": "//www.kobo.com/ca/en/search?Query=\u0002\u00010",
+ "nz": "//www.kobo.com/nz/en/search?Query=\u0002\u00010"
+ },
+ "obv": "http://portal.kobv.de/simpleSearch.do?query= \u0002\u00013",
+ "ochwiki": "//www.kochwiki.org/w/index.php?search=\u0002&go=Seite\u00010",
+ "odi": {
+ "*": "http://kodi.wiki/index.php?search=\u0002&title=Special%3ASearch\u00017",
+ "ct": "//ko.dict.naver.com/#/search?query=\u0002\u00019"
+ },
+ "oei": "http://koei.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010",
+ "ogan": "//www.kogan.com/au/shop/?q=\u0002\u00010",
+ "oha": "//bugs.koha-community.org/bugzilla3/buglist.cgi?quicksearch=\u0002\u00010",
+ "ohls": "http://www.kohls.com/search.jsp?search=\u0002\u000111",
+ "oherald": "http://www.koreaherald.com/search/index.php?q=\u0002&kr=0\u00010",
+ "ojipkg": "//koji.fedoraproject.org/koji/search?match=glob&type=package&terms=\u0002\u00010",
+ "okothemes": "//www.kokothemes.com/?s=\u0002\u00010",
+ "ompas": "//search.kompas.com/search/?q=\u0002&submit=Submit+Query\u00010",
+ "omplett": "//www.komplett.no/search?q=\u0002\u00016",
+ "omputeko": "http://www.komputeko.net/index_eo.php?vorto=\u0002\u00010",
+ "ong": {
+ "a": "http://www.konga.com/catalogsearch/result/?cat=0&q=\u0002 \u00010",
+ "*": "http://www.kongregate.com/search?q=\u0002\u00010",
+ "regate": "http://www.kongregate.com/search?q=\u0002\u00010"
+ },
+ "onj": "http://de.bab.la/konjugieren/deutsch/\u0002\u00010",
+ "oodous": "//koodous.com/apks?search=\u0002\u00010",
+ "oohii": "//kanji.koohii.com/study/kanji/\u0002\u000112",
+ "oopjedeal": "//www.koopjedeal.nl/catalogsearch/result/?q=\u0002\u00010",
+ "ooponline": "//www.kooponline.com/search.php?q=\u0002\u00010",
+ "oorong": "//www.koorong.com/search/results.jhtml?w=\u0002\u00010",
+ "oreus": "//www.koreus.com/search.php?q=\u0002&sa=Rechercher\u00018",
+ "orpus": "http://slovniky.korpus.sk/?w=\u0002\u00010",
+ "orrekturen": "//www.korrekturen.de/suche/searcher.php?q=\u0002\u00010",
+ "otus": "http://www.kielitoimistonsanakirja.fi/netmot.exe?page=results&UI=fi80&Opt=8&dic=1&SearchWord=\u0002&SearchMode=1\u00014",
+ "otaku": {
+ "*": "http://kotaku.com/search?q=\u0002\u000161",
+ "au": "http://www.kotaku.com.au/?s=\u0002\u00010"
+ },
+ "otikokki": "//www.kotikokki.net/reseptit/?freeText=\u0002\u00010",
+ "otlin": {
+ "*": "//kotlinlang.org/?q=\u0002\u000112",
+ "links": "//kotlin.link/?q=\u0002\u00010"
+ },
+ "otoba": {
+ "*": "http://kotobank.jp/word/\u0002\u000129",
+ "nk": "http://kotobank.jp/word/\u0002 \u000123"
+ },
+ "öket": "//www.koket.se/search?searchtext=\u0002\u00010",
+ "-on": "http://k-on.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "uantokusta": "http://www.kuantokusta.pt/search?q=\u0002 \u00016",
+ "ubadownload": "//kubadownload.com/search?q=\u0002\u00010",
+ "ubapichci": "http://www.kuba-pichci.pl/?s=\u0002\u00010",
+ "ubernetes": "//kubernetes.io/docs/search/?q=\u0002\u000120",
+ "uketz": "//www.kuketz-blog.de/?s=\u0002\u00013",
+ "ulib": "//catalog.lib.ku.edu/cgi-bin/Pwebrecon.cgi?Search_Arg=\u0002&SL=None&Search_Code=FT*&PID=vT8gNN42qqUs0JjgNd8tssHev&SEQ=20180430021422&CNT=25&HIST=1&kujSubmitButtonName=Search\u00010",
+ "ulinarian": "//www.kulinarian.com/recipe/search?q=\u0002\u00010",
+ "ultofathena": "http://kultofathena.com/s_results.asp?search=\u0002\u00010",
+ "unu": {
+ "*": "//www.kununu.com/de/search#/?q=\u0002&country=COUNTRY_DE\u00010",
+ "nu": "//www.kununu.com/de/search#/?q=\u0002&country=COUNTRY_DE\u00010"
+ },
+ "uopassa": "http://kuopassa.net/haku/?q=\u0002\u00010",
+ "userbase": "//userbase.kde.org/index.php?search=\u0002&title=Special%3ASearch\u00010",
+ "vasir": "http://www.kvasir.no/alle?q=\u0002\u00019",
+ "wzf": "http://kwzf.net/#search=\u0002&page=1\u00010",
+ "yobo": "//search.kyobobook.co.kr/web/search?vPstrKeyWord=\u0002\u00010"
+ },
+ "m": {
+ "1": {
+ "*": "//www.motor1.com/search/?q=\u0002\u00010",
+ "63": "http://music.163.com/#/search/m/?s=\u0002\u00010"
+ },
+ "a": {
+ "a": {
+ "*": "http://www.maa.org/search/node?keys=\u0002\u00010",
+ "ny": "http://www.almaany.com/ar/dict/ar-en/\u0002/\u00010",
+ "jim": "//www.maajim.com/dictionary/\u0002\u00010",
+ "kjetaart": "http://www.maakjetaart.nl/advanced_search_result.php?search_in_description=0&keywords=\u0002\u00010",
+ "lbum": "http://www.metal-archives.com/search?searchString=\u0002&type=album_title\u00014"
+ },
+ "b": {
+ "*": "http://www.metal-archives.com/search?type=band_name&searchString=\u0002\u000163",
+ "and": "http://www.metal-archives.com/search?searchString=\u0002&type=band_name\u000144",
+ "iwiki": "http://wiki.mabinogiworld.com/index.php?search=\u0002\u000126"
+ },
+ "c": {
+ "g": "http://www.macg.co/search/site/\u0002\u00010",
+ "*": "http://www.macvendorlookup.com/search/\u0002\u000116",
+ "q": "//www.macquariedictionary.com.au/features/word/search/?word=\u0002&search_word_type=Dictionary\u00010",
+ "id": "http://www.everymac.com/ultimate-mac-lookup/?search_keywords=\u0002\u00015",
+ "ys": "//www.macys.com/shop/featured/\u0002\u00016",
+ "brit": "http://www.macmillandictionary.com/dictionary/british/\u0002\u00010",
+ "dic": "http://www.macmillandictionary.com/dictionary/american/\u0002\u00010",
+ "ewan": "//library.macewan.ca/library-search?query=\u0002\u00010",
+ "mag": "//macmagazine.uol.com.br/?s=\u0002\u00010",
+ "millan": "http://www.macmillandictionary.com/dictionary/american/\u0002\u00010",
+ "observer": "//www.macobserver.com/?s=\u0002\u00010",
+ "ports": "//www.macports.org/ports.php?by=name&substr=\u0002\u000112",
+ "rumors": "http://www.macrumors.com/search/?s=\u0002\u00016",
+ "sales": "//eshop.macsales.com/search/?q=\u0002\u00010",
+ "stories": "http://www.macstories.net/?s=\u0002\u00010",
+ "update": "http://www.macupdate.com/find/mac/\u0002\u00014",
+ "vendor": "http://www.macvendorlookup.com/search/\u0002\u000116",
+ "welt": "http://www.macwelt.de/suche?searchStr=\u0002\u00010",
+ "world": "http://www.macworld.com/search?query=\u0002 &submit=search\u00010"
+ },
+ "l": {
+ "l": "//www.mall.cz/hledej?s=\u0002\u00013",
+ "*": "//myanimelist.net/anime.php?q=\u0002\u00013525",
+ "id": "http://malid.is/leit/\u0002\u000123",
+ "all": "//myanimelist.net/search/all?q=\u0002\u000114",
+ "ist": "http://myanimelist.net/anime.php?q=\u0002\u0001176",
+ "pha": "http://memory-alpha.org/index.php?search=\u0002\u00017",
+ "tapark": "//www.maltapark.com/search?c=s1&search=\u0002\u00014"
+ },
+ "*": "http://en.memory-alpha.org/wiki/Special:Search?search=\u0002&fulltext=Search\u0001211",
+ "n": {
+ "1": "//linux.die.net/man/1/\u0002\u000131",
+ "7": "//duckduckgo.com/?q=\u0002+site%3Aman7.org%2Flinux%2Fman-pages\u000150",
+ "*": "http://manpage.me/?q=\u0002\u0001652",
+ "ds": "http://www.marksandspencer.com/gp/search?field-keywords=\u0002\u000111",
+ "ga": {
+ "*": "http://myanimelist.net/manga.php?q=\u0002\u0001171",
+ "s": "//kitsu.io/manga?text=\u0002\u00010",
+ "dex": "//mangadex.org/search?tag_mode_exc=any&tag_mode_inc=all&title=\u0002\u000113",
+ "high": "//www.mangahigh.com/browse/?q=\u0002\u00010",
+ "rock": "//mangarock.com/search?q=\u0002\u00010"
+ },
+ "jf": "//forum.manjaro.org/search?expanded=true&q=\u0002\u000110",
+ "jw": "//wiki.manjaro.org/index.php?search=\u0002\u00010",
+ "-k": "http://man-k.org/search?q=\u0002&dist=NetBSD-current\u00010",
+ "ta": "http://www.manta.com/mb?search=\u0002\u00010",
+ "bara": "http://manga.akihabara.cz/vyhledavani/\u0002\u00010",
+ "darake": "http://ekizo.mandarake.co.jp/shop/en/search.do?action=keyword&doujin=all&searchStrategy=keyword&keyword=\u0002\u00010",
+ "gotv": "http://mangotv.co/?s=\u0002\u00010",
+ "jaro": "//wiki.manjaro.org/index.php?search=\u0002&title=Special%3ASearch\u000114",
+ "kier": "http://www.mankier.com/?q=\u0002\u0001106",
+ "ned": "//manned.org/browse/search?q=\u0002\u000113",
+ "orama": "//www.manoramaonline.com/search-results.html?q=\u0002\u00010",
+ "osx": "http://duckduckgo.com/?q=\u0002+site%3Adeveloper.apple.com\u00010",
+ "page": "//manpage.me/?q=\u0002\u00018",
+ "ualslib": "http://www.manualslib.com/a/\u0002.html\u00010"
+ },
+ "p": {
+ "*": "http://maps.google.com/maps?q=\u0002\u00011825",
+ "p": {
+ "*": "http://mapper.acme.com/?q=\u0002 \u00014",
+ "y": "http://fr.mappy.com/#/TSearch/S\u0002\u000125"
+ },
+ "s": {
+ "*": "//google.com/maps?q=\u0002\u000131854",
+ "r": "//www.google.com/maps/dir/\u0002\u00014",
+ "de": "//www.google.de/maps/place/\u0002\u000168",
+ "fr": "//maps.google.com/maps?hl=fr&q=\u0002\u000173",
+ "uk": "//maps.google.co.uk/maps?q=\u0002\u000165"
+ },
+ "y": "//mapy.cz/zakladni?q=\u0002\u0001288",
+ "fan": "//mapfan.com/map/words/\u0002/spots\u00014",
+ "ion": "//www.mapion.co.jp/s/q=\u0002/t=spot/\u00010",
+ "quest": "http://www.mapquest.com/?q=\u0002\u00015"
+ },
+ "r": {
+ "i": {
+ "o": {
+ "*": "//www.mariowiki.com/\u0002\u00018",
+ "wiki": "http://www.mariowiki.com/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000118"
+ },
+ "*": "http://putusan.mahkamahagung.go.id/main/pencarian/?q=\u0002\u00010",
+ "ne": {
+ "*": "http://www.marinetraffic.com/en/ais/index/search/all/keyword:\u0002\u00017",
+ "parts": "//www.marinepartssource.com/catalogsearch/result/?q=\u0002\u00010",
+ "traffic": "//www.marinetraffic.com/en/ais/index/search/all?keyword=\u0002\u00010"
+ },
+ "adb": "//mariadb.com/kb/en/+search/?q=\u0002\u000122",
+ "sela": "//mariselaveludo.fashion/?s=\u0002\u00010"
+ },
+ "*": "http://marktplaats.nl/z.html?query=\u0002\u000136",
+ "ca": "http://cgi.marca.com/buscador/archivo_marca.html?q=\u0002\u00010",
+ "ch": "http://www.metal-archives.com/search?searchString=\u0002&type=band_name\u000144",
+ "kt": {
+ "*": "http://www.markt.de/muenchen/keywords,\u0002/suche.htm\u00010",
+ "plaats": "//www.marktplaats.nl/z.html?query=\u0002\u000169"
+ },
+ "ginalrevolution": "http://marginalrevolution.com/?s=\u0002\u00010",
+ "kandgraham": "http://www.markandgraham.com/search/results.html?words=\u0002\u00010",
+ "ket": {
+ "*": "//market.android.com/search?q=\u0002&c=apps\u000124",
+ "placetf": "//marketplace.tf/search?q=\u0002&?r=76561198039950396\u00010"
+ },
+ "kmail": "http://markmail.org/search/?q=\u0002\u00010",
+ "kos": "//duckduckgo.com/?q=\u0002+site%3Amarkosweb.com \u00010",
+ "maris": "//www.marmarisreservation.com/?s=\u0002\u00010",
+ "mit": {
+ "*": "http://www.marmiton.org/recettes/recherche.aspx?s=\u0002 \u00010",
+ "on": "http://www.marmiton.org/recettes/recherche.aspx?aqt=\u0002\u000119"
+ },
+ "tinka": "http://www.martinka.com/catalogsearch/result/?q=\u0002\u00010",
+ "tinus": "http://www.martinus.sk/?uMod=list&uTyp=search&uQ=\u0002\u00017",
+ "vel": {
+ "c": "http://marvel.com/search/?q=\u0002&category=comics\u00010",
+ "*": "//www.marvel.com/search/?query=\u0002\u00015",
+ "wiki": "http://marvel.wikia.com/Special:Search?search=\u0002&fulltext=Search\u000119"
+ }
+ },
+ "de": "http://www.made.com/catalogsearch/result/?q=\u0002\u00010",
+ "il": {
+ "*": "//mail.google.com/mail/u/0/#inbox\u0002:\u00011179",
+ "ru": "//go.mail.ru/search?fm=1&q=\u0002\u000118",
+ "catch": "http://mailcatch.com/en/temporary-inbox?box=\u0002\u00010",
+ "chimp": "//mailchimp.com/search/?q=\u0002\u000110",
+ "inator": "//www.mailinator.com/v3/index.jsp?zone=public&query=\u0002\u00016"
+ },
+ "ke": {
+ "*": "//makezine.com/?s=\u0002\u00014",
+ "mac": "http://makemac.com/?s=\u0002\u00010",
+ "upalley": "//www.makeupalley.com/search.asp?q=\u0002&x=0&y=0\u00010",
+ "useof": "//www.makeuseof.com/?s=\u0002\u00010",
+ "zine": "//makezine.com/?s=\u0002\u00014"
+ },
+ "ku": "http://www.maku.fi/haku/recipe?q=\u0002\u00010",
+ "sh": {
+ "*": "http://mashable.com/follow/search/?q=\u0002 \u00010",
+ "able": "http://mashable.com/follow/search?q=\u0002\u00010"
+ },
+ "sk": "http://www.UnmaskParasites.com/security-report/?page=\u0002\u00010",
+ "th": {
+ "*": "http://mathworld.wolfram.com/search/?query=\u0002&x=0&y=0\u00018",
+ "em": {
+ "*": "//www.mathem.se/sok?q=\u0002\u000110",
+ "atica": "http://reference.wolfram.com/search/?q=\u0002\u00010"
+ },
+ "se": "http://math.stackexchange.com/search?q=\u0002\u000141",
+ "isfun": "http://www.mathsisfun.com/sphider/search.php?query=\u0002&submit=&search=1\u00018",
+ "jax": "http://docs.mathjax.org/en/latest/search.html?q=\u0002&check_keywords=yes&area=default\u00010",
+ "overflow": "http://mathoverflow.net/search?q=\u0002\u00010",
+ "works": "http://duckduckgo.com/?q=\u0002+site:mathworks.com\u00010",
+ "world": "http://mathworld.wolfram.com/search/?query=\u0002&x=0&y=0\u00018"
+ },
+ "tl": {
+ "*": "http://www.matweb.com/search/QuickText.aspx?SearchText=\u0002\u00010",
+ "ab": {
+ "*": "http://uk.mathworks.com/help/search.html?qdoc=\u0002&submitsearch=Search\u000138",
+ "fx": "http://www.mathworks.com/matlabcentral/fileexchange/?term=\u0002\u00010",
+ "ans": "//es.mathworks.com/matlabcentral/answers/?term=\u0002\u00010"
+ }
+ },
+ "tw": {
+ "*": "http://www.matweb.com/search/QuickText.aspx?SearchText=\u0002\u00010",
+ "eb": "http://www.matweb.com/search/QuickText.aspx?SearchText=\u0002\u00010"
+ },
+ "yo": "//www.mayoclinic.org/search/search-results?q=\u0002\u00013",
+ "dison": "http://host.madison.com/search/?l=25&sd=desc&s=start_time&f=html&t=article%2Cvideo%2Cyoutube%2Ccollection&app=editorial&q=\u0002&nsa=eedition\u00010",
+ "donc": "//madoncollections.com/collectables/?q=\u0002\u00010",
+ "dura": "//maduraonline.com/?find=\u0002\u00010",
+ "edler": "//www.maedler.de/ShopSearch?query=\u0002\u00010",
+ "erklinde": "http://www.maerklin.de/index.php?id=247&q=\u0002\u000112",
+ "fia": {
+ "*": "//www2.informatik.uni-hamburg.de/fachschaft/wiki/index.php?search=\u0002\u00010",
+ "si": "//www2.informatik.uni-hamburg.de/fachschaft/wiki/index.php?search=\u0002\u00010"
+ },
+ "galu": "//www.magazineluiza.com.br/busca/\u0002\u00013",
+ "gento": "//magento.com/search/gss/\u0002\u00010",
+ "gic": {
+ "*": "http://gatherer.wizards.com/Pages/Search/Default.aspx?name=+[\u0002]\u0001114",
+ "card": {
+ "*": "http://magiccards.info/query?q=\u0002&v=card&s=cname\u00010",
+ "s": "http://magiccards.info/query?q=\u0002&v=card&s=cname\u00010",
+ "market": "//www.cardmarket.com/en/Magic/MainPage/showSearchResult?searchFor=\u0002\u00010"
+ }
+ },
+ "giskmod": "//github.com/Magisk-Modules-Repo?&q=\u0002\u00010",
+ "gma": "http://magma.maths.usyd.edu.au/magma/handbook/search?query=\u0002&intrinsics=1\u00010",
+ "gpi": {
+ "e": "http://store.musicmagpie.co.uk/category/?keyword=\u0002\u00010",
+ "*": "//www.raspberrypi.org/magpi/?s=\u0002\u00010"
+ },
+ "gsx": "http://magento.stackexchange.com/search?q=\u0002\u00010",
+ "jorsbooks": "http://www.majorsbooks.com/search/?searchQuery=\u0002\u00010",
+ "kro": "//www.makro.cz/vyhledavani?q=\u0002\u00010",
+ "mma": "http://www.mamma.com/result.php?q=\u0002&type=web\u00010",
+ "ori": {
+ "*": "http://maoridictionary.co.nz/search?idiom=&phrase=&proverb=&loan=&histLoanWords=&keywords=\u0002\u00010",
+ "dictionary": "http://maoridictionary.co.nz/search?idiom=&phrase=&proverb=&loan=&histLoanWords=&keywords=\u0002\u00010"
+ },
+ "ssdrop": "//drop.com/search/\u0002/drops\u00014",
+ "sterseek": "http://www.masterseek.com/lead_generation_final.aspx?q=\u0002\u00010",
+ "teriel": "http://www.materiel.net/achat/\u0002/\u00010",
+ "tpl": {
+ "*": "http://www.matematyka.pl/search.php?keywords=\u0002\u00010",
+ "otlib": "http://matplotlib.sourceforge.net/search.html?q=\u0002 \u000121"
+ },
+ "ven": "http://search.maven.org/#search|ga|1|\u0002\u0001159",
+ "vin": "//mavin.io/search?q=\u0002\u00010",
+ "xspar": "//www.maxspar.de/s/\u0002\u00010",
+ "xthon": "http://extension.maxthon.com/all/index.php?keyword=\u0002\u00010"
+ },
+ "b": {
+ "c": {
+ "*": "//www.mybeercellar.com/?search=\u0002\u00010",
+ "dstub": "//musicbrainz.org/search?query=\u0002&type=cdstub\u00010"
+ },
+ "e": {
+ "*": "//musicbrainz.org/search?query=\u0002&type=event&method=indexed\u00010",
+ "ans": "//mbeans.com/search.html?search=\u0002\u00010",
+ "ditor": "//musicbrainz.org/search?query=\u0002&type=editor\u00010",
+ "vent": "//musicbrainz.org/search?query=\u0002&type=event\u00010"
+ },
+ "l": {
+ "*": "//musicbrainz.org/search?query=\u0002&type=label&method=indexed\u00010",
+ "ue": "//www.meteoblue.com/?q=\u0002\u00018",
+ "abel": "//musicbrainz.org/search?query=\u0002&type=label\u00013"
+ },
+ "*": "http://musicbrainz.org/search/textsearch.html?type=artist&query=\u0002&handlearguments=1\u0001197",
+ "p": {
+ "h": "//mb.com.ph/?s=\u0002\u00010",
+ "*": "//musicbrainz.org/search?query=\u0002&type=place&method=indexed\u00010",
+ "lace": "//musicbrainz.org/search?query=\u0002&type=place\u00013"
+ },
+ "r": {
+ "c": "//musicbrainz.org/search?query=\u0002&type=recording\u00010",
+ "g": "http://musicbrainz.org/search?query=\u0002&type=release_group&method=indexed\u000113",
+ "*": "http://musicbrainz.org/search?type=release&query=\u0002&handlearguments=1\u000115",
+ "ec": {
+ "*": "//musicbrainz.org/search?query=\u0002&type=recording&method=indexed\u00013",
+ "ording": "//musicbrainz.org/search?query=\u0002&type=recording\u00010"
+ },
+ "elease": {
+ "*": "//musicbrainz.org/search?query=\u0002&type=release\u000113",
+ "group": "//musicbrainz.org/search?query=\u0002&type=release_group\u00010"
+ }
+ },
+ "s": {
+ "*": "http://mapa.buenosaires.gov.ar/buscador/?dir= \u0002\u00010",
+ "dman": "//www.mirbsd.org/man.cgi?q=\u0002 \u00010",
+ "eries": "//musicbrainz.org/search?query=\u0002&type=series\u00014"
+ },
+ "w": {
+ "*": "http://musicbrainz.org/search?query=\u0002&type=work&method=indexed\u00017",
+ "iki": "//wiki.musicbrainz.org/index.php?title=Special%3ASearch&go=Go&search=\u0002\u00014",
+ "ork": "//musicbrainz.org/search?query=\u0002&type=work\u00010"
+ },
+ "fc": "//mediabiasfactcheck.com/?s=\u0002\u000129",
+ "ug": "//bugzilla.mozilla.org/buglist.cgi?quicksearch=\u0002\u00015",
+ "amblog": "//blog.malwarebytes.org/?s=\u0002\u00010",
+ "annotation": "//musicbrainz.org/search?query=\u0002&type=annotation\u00010",
+ "area": "//musicbrainz.org/search?query=\u0002&type=area\u00014",
+ "artist": "//musicbrainz.org/search?query=\u0002&type=artist\u000121",
+ "doc": "//musicbrainz.org/search?query=\u0002&type=doc\u00010",
+ "glick": "http://www.mbglick.com/catalogsearch/result/?q=\u0002\u00010",
+ "instrument": "//musicbrainz.org/search?query=\u0002&type=instrument\u00010",
+ "tag": "//musicbrainz.org/search?query=\u0002&type=tag\u00010"
+ },
+ "c": {
+ "b": "http://mycallbot.com/numbers/\u0002\u00010",
+ "c": {
+ "c": "//media.ccc.de/search/?q=\u0002\u00010",
+ "*": "//www.monroecc.edu/search/#gsc.q=\u0002\u00010"
+ },
+ "f": {
+ "*": "http://www.minecraftforum.net/search?search=\u0002\u00010",
+ "r": "//minecraft.fr/?s=\u0002\u00010"
+ },
+ "h": "http://map.geo.admin.ch/?swisssearch=\u0002\u00010",
+ "k": "//mms.mckesson.com/catalog?query=\u0002\u00010",
+ "m": {
+ "*": "//www.cardmarket.com/en/Magic/Products/Search?searchString=\u0002\u000166",
+ "aster": "http://www.mcmaster.com/#\u0002\u000165",
+ "ods": "//www.curseforge.com/minecraft/mc-mods/search?search=\u0002\u0001171",
+ "odpacks": "//www.curseforge.com/minecraft/modpacks/search?search=\u0002\u00013"
+ },
+ "*": "http://www.metacritic.com/search/all/\u0002/results\u0001732",
+ "r": "http://www.metacrawler.com/search/web?fcoid=417&fcop=topnav&fpid=2&om_nextpage=True&q=\u0002\u00010",
+ "s": {
+ "*": "http://www.movie-censorship.com/list.php?s=\u0002\u00010",
+ "kin": "http://www.mcskinsearch.com/skin/\u0002\u00010",
+ "tats": "//minecraft-statistic.net/en/search/?q=\u0002\u00010"
+ },
+ "u": "http://marvelcinematicuniverse.wikia.com/wiki/Special:Search?query=\u0002\u00019",
+ "v": "http://moviecovers.com/multicrit.html?titre=\u0002\u00010",
+ "w": {
+ "d": "http://minecraft-de.gamepedia.com/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010",
+ "m": "//www.minecraftworldmap.com/search?ss=\u0002\u00013",
+ "*": "//minecraft.gamepedia.com/index.php?search=\u0002\u0001825",
+ "iki": {
+ "*": "//minecraft.gamepedia.com/index.php?search=\u0002\u0001825",
+ "de": "http://de.minecraftwiki.net/index.php?title=Spezial%3ASuche&search=\u0002\u00015",
+ "fr": "http://minecraft-fr.gamepedia.com/index.php?search=\u0002\u00010",
+ "zh": "//minecraft-zh.gamepedia.com/\u0002\u00010"
+ }
+ },
+ "z": "//mapy.cz/?q=\u0002\u000120",
+ "at": {
+ "*": "//www.monstercat.com/search?term=\u0002\u00010",
+ "wiki": "http://monstercat.wikia.com/wiki/Special:Search?query=\u0002\u00010"
+ },
+ "de": "//minecraft-de.gamepedia.com/\u0002\u00017",
+ "pc": "http://minecraft-computer.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "pl": {
+ "*": "//mcpac.mcpl.lib.ny.us/search/t?\u0002\u00010",
+ "md": "//mdpl.ent.sirsi.net/client/en_US/catalog/search/results?qu=\u0002\u00010"
+ },
+ "gill": {
+ "*": "http://www.mcgill.ca/search/?query=\u0002&find=Search\u00010",
+ "lib": "http://mcgill.worldcat.org/search?q=\u0002&qt=owc_search&scope=2\u00010"
+ },
+ ".info": "http://magiccards.info/query?q=\u0002&v=card&s=cname\u00010",
+ "name": "//namemc.com/s?\u0002\u00010",
+ "pan": "http://metacpan.org/search?q=\u0002\u0001451",
+ "pew": "http://minecraftpocketedition.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010",
+ "pedl": "http://mcpedl.com/?s=\u0002\u00010",
+ "-pl": "//minecraft-pl.gamepedia.com/index.php?search=\u0002&title=Specjalna:Szukaj&go=Przejd%C5%BA\u00010"
+ },
+ "d": {
+ "5": "http://md5.gromweb.com/?md5=\u0002\u00015",
+ "a": {
+ "*": "http://www.marksdailyapple.com/search-results/?cx=004987908667488763946%3Akd-fp2c7jek&cof=FORID%3A11&ie=UTF-8&q=\u0002&siteurl=www.marksdailyapple.com%2F&ref=&ss=1623j619159j7\u00010",
+ "sh": "//mmlafleur.com/mdash/search/\u0002\u00010"
+ },
+ "b": {
+ "g": {
+ "*": "//www.mdbg.net/chinese/dictionary?page=worddict&wdrst=0&wdqb=\u0002\u0001258",
+ "t": "http://www.mdbg.net/chindict/chindict.php?page=worddict&wdrst=1&wdqb=\u0002\u000120"
+ },
+ "*": "http://moridb.com/items/search?q=\u0002\u000120",
+ "s": "http://mapa.buenosaires.gov.ar/buscador/?dir= \u0002\u00010"
+ },
+ "c": {
+ "c": "//m.dict.cc/?s=\u0002\u00015",
+ "*": "//developer.mozilla.org/search?q=\u0002\u000111",
+ "omp": "//mdcomputers.in/index.php?route=product/search&search=\u0002&description=true\u00010"
+ },
+ "j": "http://mixing.dj/?s=\u0002\u00010",
+ "l": "http://mydramalist.com/browse/all?sort[]=relevance&q=\u0002\u000181",
+ "*": "//docs.microsoft.com/en-us/search/index?search=\u0002\u0001111",
+ "n": {
+ "*": "//developer.mozilla.org/search?q=\u0002\u000111",
+ "io": "//mdn.io/\u0002\u000110",
+ "js": "//developer.mozilla.org/en-US/search?q=\u0002&topic=js\u000146",
+ ".s": "//duckduckgo.com/?q=\u0002+site%3Adeveloper.mozilla.org\u00013",
+ "api": "//developer.mozilla.org/en-US/search?q=\u0002&topic=api\u00019",
+ "css": "//developer.mozilla.org/en-US/search?q=\u0002&topic=css\u000164",
+ "html": "//developer.mozilla.org/en-US/search?q=\u0002&topic=html\u00014"
+ },
+ "p": "//www.mediapart.fr/search?search_word=\u0002&op=ok\u00010",
+ "t": {
+ "*": "http://www.mdt.co.uk/catalogsearch/result/?q=\u0002&t=general&order=most_viewed\u00010",
+ "z": "//www.mediatize.info/search?q=\u0002\u00010"
+ },
+ "u": "//manualdousuario.net/?s=\u0002\u000129",
+ "x": "//mangadex.org/search?title=\u0002\u000176",
+ "mz": "http://www.madmoizelle.com/recherche.php?q=\u0002&sitesearch=madmoizelle.com&cx=014204933963475694561%3Aq69po45gmum&cof=FORID%3A11&client=pub-9887088429202220&forid=1&ie=ISO-8859-1&oe=ISO-8859-1&cof=GALT%3A%23008000%3BGL%3A1%3BDIV%3A%23336699%3BVLC%3A663399%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3A336699%3BALC%3A0000FF%3BLC%3A0000FF%3BT%3A000000%3BGFNT%3A0000FF%3BGIMP%3A0000FF%3BFORID%3A11&hl=fr&sa=Recherche\u00010",
+ "ona": "//tienda.mercadona.es/search-results?query=\u0002\u00010"
+ },
+ "e": {
+ "c": {
+ "*": "//www.mec.ca/en/search?text=\u0002 \u00010",
+ "o": "//www.metalochimice.ro/?s=\u0002&post_type=product\u00010",
+ "abricks": "http://mecabricks.com/en/library/search?q=\u0002\u00010"
+ },
+ "d": {
+ "b": "http://www.medbullets.com/search?cx=011011587714199370644:0fb95tj2wze&cof=FORID:9&ie=UTF-8&sa.x=10&sa.y=12&sa=Search&q=\u0002\u00010",
+ "f": "//mechanicalsite.com/?s=\u0002\u00010",
+ "i": {
+ "*": "http://www.translatetheweb.com/?item1=\u0002&field=all&maxKurztitel=25&sachgruppen=0&sachgruppenSchulfaecher=0&media=all&local=0&produzent=0&article_id=23&submitEinfacheSuche=Find+Titles&from=&to=en&a=http%3A%2F%2Fmedibus.info%2Findex.php%3Farticle_id%3D23%23einfSucheInfo&f=1\u00010",
+ "um": "//medium.com/search?q=\u0002\u000152",
+ "abias": "//mediabiasfactcheck.com/?s=\u0002\u000129",
+ "accc": "//media.ccc.de/search/?q= \u0002\u00013",
+ "adico": "http://mediadico.com/dictionnaire/definition/\u0002\u00010",
+ "ainfo": "http://media.info/search?s=\u0002\u00010",
+ "amarkt": {
+ "*": "http://www.mediamarkt.nl/nl/search.html?storeId=10259&langId=-11&searchProfile=onlineshop&channel=mmnlnl&searchParams=&path=&query=\u0002\u00015",
+ "fr": "http://www.mediamarkt.be/fr/search.html?query=\u0002\u00010",
+ "nl": "http://www.mediamarkt.nl/nl/search.html?query=\u0002&searchProfile=onlineshop&channel=mmnlnl\u00010"
+ },
+ "apart": "//www.mediapart.fr/search?search_word=\u0002\u00010",
+ "atum": "//mediatum.ub.tum.de/?query=\u0002\u00010",
+ "awiki": "//www.mediawiki.org/w/index.php?search=\u0002 \u00016",
+ "cal": "http://medical-dictionary.thefreedictionary.com/\u0002\u00010",
+ "max": "//www.medimax.de/search?search=\u0002\u00010",
+ "mops": "http://www.medimops.de/produkte-C0/?fcIsSearch=1&searchparam=\u0002\u000139"
+ },
+ "*": "//medium.com/search?q=\u0002\u000152",
+ "gadget": "http://www.medgadget.com/?s=\u0002\u00010",
+ "lineplus": "http://vsearch.nlm.nih.gov/vivisimo/cgi-bin/query-meta?v%3Aproject=medlineplus&query=\u0002\u00014",
+ "nar": "http://www.mednar.com/mednar/result-list/fullRecord:\u0002\u00010",
+ "phd": "//medical-phd.blogspot.com/search?q=\u0002\u00010",
+ "scape": "http://search.medscape.com/reference-search?newSearchHeader=1&queryText=\u0002\u00010"
+ },
+ "*": "http://masseffect.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u000148",
+ "s": {
+ "h": "//www.ncbi.nlm.nih.gov/mesh/?term=\u0002\u000111",
+ "*": "//www.messicks.com/search?q=\u0002\u00010",
+ "saggero": "http://www.ilmessaggero.it/?p=search&q=\u0002\u00015",
+ "seinfo": "http://egliseinfo.catholique.fr/horaires/\u0002\u00010",
+ "serle": "//shop.messerle.at/dataTransfer/custom/suche.php?keyword=\u0002\u00010"
+ },
+ "t": {
+ "*": "http://meteox.de/search.aspx?s=\u0002\u00010",
+ "al": {
+ "*": "http://www.metal-archives.com/search?searchString=\u0002&type=band_name\u000144",
+ "ab": "//metalab.at/wiki/index.php?search=\u0002\u00010",
+ "it": "//metalitalia.com/?s=\u0002\u00010",
+ "arch": "http://www.metal-archives.com/search?searchString=\u0002&type=band_name\u000144",
+ "lum": "//www.metal-archives.com/search?searchString=\u0002&type=band_name\u0001120",
+ "scrap": "//romaandmacmetalscrap.com/?product_cat=0&s=\u0002\u00010",
+ "storm": "http://www.metalstorm.net/home/search.php?search_where=band&search_what=\u0002&x=0&y=0\u000157"
+ },
+ "ar": "http://av-wx.com/?search=\u0002&mode=metar\u00015",
+ "ro": {
+ "*": "//www.metro.ca/en/search?free-text=\u0002\u00010",
+ "idwiki": "http://www.metroidwiki.org/w/index.php?title=Special%3ASearch&search=\u0002\u00010",
+ "lyrics": "http://www.metrolyrics.com/search.html?search=\u0002\u00013"
+ },
+ "acafe": "http://www.metacafe.com/videos_about/\u0002/\u00014",
+ "acanada": "//www.reddit.com/r/metacanada/search?q=\u0002&restrict_sr=on\u00010",
+ "acpan": "//metacpan.org/search?q=\u0002\u000116",
+ "acrawler": "http://www.metacrawler.com/search/web?q=\u0002\u000118",
+ "acritic": "http://www.metacritic.com/search/all/\u0002/results\u0001732",
+ "aculus": "//www.metaculus.com/questions/?search=\u0002\u00010",
+ "ade": "//de.metapedia.org/m/index.php?search=\u0002&title=Spezial%3ASuche\u00010",
+ "afilter": "http://www.metafilter.com/contribute/search.mefi?site=mefi&q=\u0002\u00010",
+ "ager": {
+ "*": "//www.metager.de/meta/meta.ger3?eingabe=\u0002\u000130",
+ "en": "//metager.de/meta/cgi-bin/meta.ger1?ui=en&lang=en&wikiboost=on&QuickTips=off&langfilter=yes&eingabe=\u0002&mm=and&time=1&exalead=on&fastbot=on&yacy=on&nebel=on&atsearch=on&acoon=on&overture=on&base=on&yandex=on&onenewspage=on&dmozint=on\u00016",
+ "tor": {
+ "*": "http://b7cxf4dkdsko6ah2.onion/meta/meta.ger3?focus=web&encoding=utf8&lang=all&eingabe=\u0002\u00017",
+ "en": "http://b7cxf4dkdsko6ah2.onion/en/meta/meta.ger3?focus=web&encoding=utf8&lang=en&eingabe=\u0002\u00013"
+ }
+ },
+ "appcg": "//codegolf.meta.stackexchange.com/search?q=\u0002\u00010",
+ "aso": "http://meta.stackoverflow.com/search?q=\u0002\u00010",
+ "asx": "http://meta.stackexchange.com/search?q=\u0002\u00013",
+ "eli": "http://www.meteli.net/tapahtumahaku?q=\u0002\u00010",
+ "eofr": "http://www.meteofrance.com/recherche/resultats?facet=previsions&lieuId=&lieuType=&search-type=previsions&query=\u0002\u000135",
+ "eoblue": "//www.meteoblue.com/en/weather/forecast/14-days/\u0002\u00010",
+ "eociel": "http://www.meteociel.fr/prevville.php?action=getville&ville=\u0002\u000110",
+ "eomedia": "//www.meteomedia.com/ca/search?q=\u0002\u00010",
+ "eorjs": "http://docs.meteor.com/#/full/\u0002\u00010",
+ "off": {
+ "*": "http://www.metoffice.gov.uk/public/weather/location-search/sitename?searchLocation=\u0002\u00019",
+ "ice": "http://www.metoffice.gov.uk/public/weather/location-search/sitename?searchLocation=\u0002\u00019"
+ }
+ },
+ "fi": "http://www.metafilter.com/contribute/search.mefi?site=mefi&q=\u0002\u00010",
+ "ma": {
+ "*": "http://en.memory-alpha.org/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns4=1#\u00010",
+ "lphade": "http://de.memory-alpha.wikia.com/wiki/Spezial:Suche?query=\u0002\u00010"
+ },
+ "me": {
+ "*": "http://knowyourmeme.com/search?utf8=%E2%9C%93&q=\u0002\u000143",
+ "gen": "http://memegenerator.net/memes/search?q=\u0002\u00010",
+ "nto": "http://timetravel.mementoweb.org/list/2013/\u0002\u00010"
+ },
+ "mx": "http://www.memoryexpress.com/Search/Products?Search=\u0002\u00010",
+ "we": "//mewe.com/profile/\u0002\u00013",
+ "etup": "http://www.meetup.com/find/?keywords=\u0002\u000118",
+ "galodon": "http://megalodon.jp/?url=\u0002\u00010",
+ "galyr": "http://megalyrics.ru/search?utf8=%E2%9C%93&search=\u0002\u00010",
+ "gaman": "http://megaman.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00015",
+ "gamitensei": "http://megamitensei.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010",
+ "gatenw": "http://megamitensei.wikia.com/wiki/Special:Search?search=\u0002\u000116",
+ "ijer": "http://www.meijer.com/catalog/search_command.cmd?keyword=\u0002&tierId=\u00010",
+ "_irl": "//www.reddit.com/r/me_irl/search?q=\u0002&restrict_sr=on\u00010",
+ "ligrana": "//www.meligrana.com/es/alojamiento-turismo/buscar-alojamiento.asp?q=\u0002 \u00010",
+ "llowviews": "//mellowviews.com/search/?query=\u0002\u00010",
+ "lopero": "//www.melopero.com/?s=\u0002&post_type=product\u00010",
+ "lorra": "//www.melorra.com/jewellery/search/?q=\u0002:\u00010",
+ "lpa": "http://melpa.milkbox.net/#/?q=\u0002\u000127",
+ "lvyl": "http://melvyl.worldcat.org/search?q=\u0002\u00010",
+ "midex": "http://www.memidex.com/\u0002\u00010",
+ "moryalpha": "http://en.memory-alpha.org/wiki/Special:Search?search=\u0002&fulltext=Search&resultsLang=en\u000130",
+ "morybeta": "http://memory-beta.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "moryexpress": "http://www.memoryexpress.com/Search/Products?Search=\u0002\u00010",
+ "mrise": "http://www.memrise.com/courses/english/?q=\u0002\u00010",
+ "nadoc": "//menadoc.bibliothek.uni-halle.de/search/quick?query=\u0002\u00010",
+ "nards": "//www.menards.com/main/search.html?search=\u0002\u000167",
+ "ndeley": "http://www.mendeley.com/research-papers/search/?query=\u0002\u00010",
+ "ndesah": "//www.mediamarkt.de/de/search.html?query=\u0002\u00010",
+ "neame": "//www.meneame.net/search?q=\u0002\u000112",
+ "nnlex": "http://www.mennlex.de/doku.php?do=search&id=\u0002\u00010",
+ "nupages": "http://www.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010",
+ "rcadolibre": {
+ "*": "http://mercadolibre.com/?q= \u0002\u000112",
+ "ar": "http://listado.mercadolibre.com.ar/\u0002#D[A:\u0002]\u000185",
+ "cl": "http://listado.mercadolibre.cl/\u0002#D[A:\u0002]\u00013",
+ "mx": "//listado.mercadolibre.com.mx/\u0002\u000169"
+ },
+ "rcadolivre": "http://lista.mercadolivre.com.br/\u0002\u0001178",
+ "rcari": {
+ "*": "//www.mercari.com/search/?keyword=\u0002\u000118",
+ "jp": "//www.mercari.com/jp/search/?keyword=\u0002\u000121"
+ },
+ "rcola": "//search.mercola.com/results.aspx?q=\u0002 \u00013",
+ "rcurynews": "http://www.mercurynews.com/circare/html/sca_template.jsp?runSearch=true&query=\u0002&searchButton.x=0&searchButton.y=0&searchButton=Search&view=entiresitesppublished\u00010",
+ "rit": {
+ "*": "http://meritbadge.org/wiki/index.php/Special:Search?search=\u0002\u00010",
+ "badge": "http://meritbadge.org/wiki/index.php/Special:Search?search=\u0002&go=Go\u00010"
+ },
+ "rlin": "http://merlin.pl/browse/search.html?offer=O&phrase=\u0002\u00010",
+ "rriamwebster": "//www.merriam-webster.com/dictionary/\u0002\u0001109",
+ "ucrespo": "http://meucrespo.com.br/?s=\u0002\u00010",
+ "yers": "http://woerterbuchnetz.de/Meyers/?lemme=\u0002\u00010"
+ },
+ "f": {
+ "c": "http://myfigurecollection.net/browse.v4.php?keywords=\u0002\u000169",
+ "g": "http://www.mobafire.com/league-of-legends/\u0002-guide\u000114",
+ "l": "http://www.muscleforlife.com/?s=\u0002 \u00010",
+ "m": "http://mfm.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "*": "//morguefile.com/search/morguefile/1/\u0002/pop\u00014",
+ "p": "http://www.myfitnesspal.com/food/search?search=\u0002\u000135",
+ "x": "http://www.morfix.co.il/\u0002\u000116",
+ "ac": "//www.mindfactory.de/search_result.php?select_search=0&search_query=\u0002\u00010",
+ "de": "http://www.mindfactory.de/search_result.php?search_query=\u0002&x=0&y=0\u00013"
+ },
+ "*": "http://maps.google.com/maps?q=\u0002\u00011825",
+ "h": {
+ "r": "//www.reddit.com/r/MonsterHunter/search?q=\u0002&restrict_sr=on\u00010",
+ "*": "http://monsterhunter.wikia.com/wiki/index.php?search=\u0002\u00010",
+ "lo": "http://www.mentalhealthlaw.co.uk/index.php?search=\u0002\u00010",
+ "wiki": "http://monsterhunter.wikia.com/wiki/index.php?search=\u0002&fulltext=Search\u00010"
+ },
+ "i": {
+ "b": "http://search.mibbit.com/search/\u0002\u00010",
+ "k": "//wiki.mikrotik.com/index.php?search=\u0002&title=Special:Search&go=Go\u00010",
+ "*": "http://www.myinstants.com/search/?name=\u0002\u00015",
+ "t": {
+ "*": "http://student.mit.edu/catalog/search.cgi?search=\u0002\u000113",
+ "lib": "//lib.mit.edu/search/bento?q=\u0002\u00013",
+ "ocw": "http://search.mit.edu/search?site=ocw&client=mit&output=xml_no_dtd&proxystylesheet=http://ocw.mit.edu/search/google-ocw.xsl&proxyreload=1&q=\u0002\u00010",
+ "vid": "http://video.mit.edu/search/?q=\u0002\u00010"
+ },
+ "x": {
+ "*": "//www.cogimix.com/?q=\u0002\u00010",
+ "er": {
+ "*": "http://www.drinksmixer.com/search/?q=\u0002&d=1&p=1\u00010",
+ "gy": "http://mixergy.com/?s=\u0002\u00010"
+ },
+ "esdb": "http://www.mixesdb.com/db/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00014"
+ },
+ "di": "//freemidi.org/search?q=\u0002\u00010",
+ "ll": {
+ "*": "//millionshort.com/search?keywords=\u0002&remove=1000000\u00010",
+ "ersv": "//www.millersville.edu/search-results.php?query=\u0002\u00010",
+ "ionshort": "http://millionshort.com/search.php?q=\u0002&remove=1000k\u00010"
+ },
+ "me": "http://mimeapplication.net/search?q=\u0002\u00010",
+ "nt": "http://linuxmint.com/search.php?query=\u0002&search=1\u000111",
+ "chaels": "http://www.michaels.com/search?q=\u0002\u00016",
+ "chaelis": {
+ "*": "http://michaelis.uol.com.br/busca?r=1&f=0&t=1&palavra=\u0002\u00014",
+ "pt": "http://michaelis.uol.com.br/busca?r=1&f=1&t=0&palavra=\u0002\u000120"
+ },
+ "crocenter": "http://www.microcenter.com/search/search_results.phtml?Ntt=\u0002\u000189",
+ "crosoft": "http://search.microsoft.com/results.aspx?mkt=en-US&form=MSHOME&setlang=en-US&q=\u0002\u000123",
+ "dday": "//www.middaysomewhere.com/prices/search?q=\u0002\u00010",
+ "dori": "//midori-browser.org?term=\u0002\u00010",
+ "ghtyape": "http://www.mightyape.co.nz/search/?i=All&prev=&s=\u0002&SearchButton=Search\u00010",
+ "gros_de": "//search.migros.ch/de/q:\u0002\u00010",
+ "gros_fr": "//search.migros.ch/de/q:\u0002\u00010",
+ "gros_it": "//search.migros.ch/de/q:\u0002\u00010",
+ "itopia": "http://miitopia.wikia.com/wiki/\u0002\u00010",
+ "jisou": "//mijisou.com/?q=\u0002\u00010",
+ "jnserie": "//www.mijnserie.nl/zoeken/?search=\u0002\u00010",
+ "litary": {
+ "*": "//www.military-stuff.org/?s=\u0002\u00010",
+ "surplus": "http://blackstarsurplus.com/\u0002\u00010"
+ },
+ "log": "http://milog.co.il/\u0002\u000111",
+ "movrste": "//www.mimovrste.com/iskanje?s=\u0002\u00013",
+ "ndf": {
+ "*": "//www.mindfactory.de/search_result.php?select_search=0&search_query=\u0002\u00010",
+ "actory": "//www.mindfactory.de/search_result.php?select_search=0&search_query=\u0002\u00010"
+ },
+ "nds": "//www.minds.com/search;q=\u0002\u00010",
+ "ndat": "http://www.mindat.org/search.php?search=\u0002\u000118",
+ "necraft": {
+ "*": "//minecraft.gamepedia.com/index.php?search=\u0002\u0001825",
+ "de": "http://minecraft-de.gamepedia.com/index.php?search=\u0002&title=Spezial%3ASuche&go=Seite\u00013",
+ "-de": "http://minecraft-de.gamepedia.com/index.php?search=\u0002\u00010",
+ "-ru": "//minecraft-ru.gamepedia.com/index.php?search=\u0002\u00010",
+ "seeds": "http://minecraft-seeds.net/seeds/search/?q=\u0002\u00013",
+ "wiki": "http://minecraft.gamepedia.com/index.php?search=\u0002&title=Special%3ASearch&go=Go\u0001120"
+ },
+ "necratwiki": "//minecraft.gamepedia.com/index.php?search=\u0002\u0001825",
+ "neforum": "//www.minecraftforum.net/search?search=\u0002\u00010",
+ "ngpao": "//news.mingpao.com/cfm/search2.cfm?keywords=\u0002\u00010",
+ "niclip": "http://www.miniclip.com/games/en/search.php?query=\u0002\u00010",
+ "nigame": "http://www.miniclip.com/games/search/en/?query=\u0002#t-sd\u00010",
+ "niinthebox": "http://www.miniinthebox.com/index.php?main_page=advanced_search_result&inc_subcat=1&search_in_description=0&keyword=\u0002\u00010",
+ "nimins": "//www.minimins.com/index.php?search/search&keywords=\u0002:\u00010",
+ "niology": "http://miniology.com/?s=\u0002&submit=Search\u00010",
+ "nsal": "http://cerca.ministerosalute.it/search?q=\u0002&client=defaultPORT_front-end&proxystylesheet=defaultPORT_front-end&site=default_collection&output=xml_no_dtd&filter=p\u00010",
+ "nsearch": "//minimalsearch.com/search?q=\u0002\u00010",
+ "rabile": "http://www.mirabileweb.it/ricerca_semplice.aspx?tsearch=\u0002\u00010",
+ "ronet": "//www.mironet.cz/Productlist/showSearch?EXPS=\u0002\u00010",
+ "ses": "//mises.org/search/site/\u0002\u00015",
+ "stborn": "http://mistborn.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "sumi": "//us.misumi-ec.com/vona2/result/?Keyword=\u0002\u000122"
+ },
+ "k": {
+ "g": "//sammlungonline.mkg-hamburg.de/de/search?s=\u0002\u00010",
+ "*": "http://mechanicalkeyboards.com/search.php?switch_id=ALL&size=ALL&keyword=\u0002 \u00013",
+ "m": "//www.cardmarket.com/en/Magic/Products/Search?searchString=\u0002\u000166",
+ "p": "//search.mlp.cz/cz/?query=\u0002&kde=all#/c_s_ol=query-eq:\u0002\u00010",
+ "rw": "http://mariokart.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "tw": "http://www.marketwatch.com/investing/stock/\u0002\u0001270"
+ },
+ "l": {
+ "b": {
+ "*": "http://mlb.mlb.com/searchGlobalSearchServlet?club=mlb&search_mode=1&searchtypeid=-1&page_number=1&query_text1=\u0002\u000165",
+ "p": "http://espn.go.com/mlb/players?=1&search=\u0002 \u00010",
+ "r": "http://lista.mercadolivre.com.br/\u0002 \u0001421"
+ },
+ "d": {
+ "b": "http://www.mldb.org/search?mq=\u0002\u00013",
+ "*": "http://www.learnersdictionary.com/definition/\u0002\u000110",
+ "o": "http://listado.mercadolibre.com.do/\u0002 \u00010"
+ },
+ "f": "//forum.manjaro.org/search?q=\u0002\u00010",
+ "g": {
+ "b": "http://mlgb3.bodleian.ox.ac.uk/mlgb/?search_term=\u0002\u00010",
+ "*": "//mylaptopguide.com/?s=\u0002\u00010"
+ },
+ "*": "//google.com/maps/search/\u0002?force=canvas\u000171",
+ "l": "//www.liquormarts.ca/search-products/%25/\u0002\u00010",
+ "n": "//find.minlib.net/iii/encore/search/C__S\u0002\u00018",
+ "o": "http://www.mageialinux-online.org/search/search.php#results?q=\u0002&search_submit=Recherche\u00010",
+ "p": {
+ "a": "http://listado.mercadolibre.com.pa/\u0002 \u00010",
+ "e": {
+ "*": "http://listado.mercadolibre.com.pe/\u0002 \u000111",
+ "s": "//vsearch.nlm.nih.gov/vivisimo/cgi-bin/query-meta?v%3Aproject=medlineplus-spanish&v%3Asources=medlineplus-spanish-bundle&query=\u0002\u00010"
+ },
+ "f": "//mlpforums.com/search/?q=\u0002\u00010",
+ "*": "http://mlp.wikia.com/wiki/Special:Search?search=\u0002\u000121",
+ "it": "//multiplayer.it/ricerca/?q=\u0002\u00010"
+ },
+ "s": "http://www.mlssoccer.com/search/\u0002\u00010",
+ "ar": "http://listado.mercadolibre.com.ar/\u0002\u0001561",
+ "at": "http://www.mlat.uzh.ch/MLS/advsuchergebnis.php?suchbegriff=\u0002&mode=SPH_MATCH_EXTENDED2&corpus=all\u00010",
+ "cl": "http://listado.mercadolibre.cl/\u0002 \u000127",
+ "co": "http://listado.mercadolibre.com.co/\u0002 \u000183",
+ "cr": "http://listado.mercadolibre.co.cr/\u0002 \u000113",
+ "ec": "http://listado.mercadolibre.com.ec/\u0002 \u00013",
+ "mx": "//listado.mercadolibre.com.mx/\u0002\u000169",
+ "uy": "http://listado.mercadolibre.com.uy/\u0002\u00017",
+ "ve": "http://listado.mercadolibre.com.ve/\u0002 \u000118",
+ "ibreco": "//listado.mercadolibre.com.co/\u0002\u000120",
+ "ivre": "http://lista.mercadolivre.com.br/\u0002#D[A:\u0002]\u000144"
+ },
+ "m": {
+ "c": "http://www.mcmaster.com/#\u0002 \u000168",
+ "e": "//metromatinee.com/search/\u0002\u00010",
+ "f": "//www.myminifactory.com/search/?query=\u0002&searchType=1\u00010",
+ "i": "http://www.mymovies.it/database/ricercalibera/default.asp?q=\u0002&cx=partner-pub-1699801751737986%3Ax7j961-1g3m&cof=FORID%3A9&ie=ISO-8859-1&sa=Cerca \u00013",
+ "k": "//www.miniaturemarket.com/searchresults?q=\u0002\u00010",
+ "l": {
+ "*": "http://myanimelist.net/manga.php?q=\u0002\u0001171",
+ "s": "http://find.minlib.net/iii/encore/search?formids=target&lang=eng&suite=def&reservedids=lang%2Csuite&submitmode=&submitname=&target=\u0002\u00010",
+ "afleur": "//mmlafleur.com/shop/catalogsearch/result/?q=\u0002\u00010"
+ },
+ "*": "http://www.macmillandictionary.com/us/search/british/direct/?q=\u0002\u000179",
+ "m": "//www.mrmoneymustache.com/?s=\u0002\u00014",
+ "r": "//na.whatismymmr.com/\u0002\u00010",
+ "z": "//www.cardmarket.com/en/Magic/MainPage/browseUserProducts?idCategory=1&idUser=25674&resultsPage=0&cardName=\u0002\u000121",
+ "nl": "//www.moviemeter.nl/site/search?q=\u0002\u00010",
+ "ol": "//medieval.bodleian.ox.ac.uk/?q=\u0002\u000112",
+ "oz": "//musicmoz.org/search/search.cgi?search=\u0002\u00010",
+ "anga": "http://muslimmanga.org/?lang=en&s=\u0002\u00010",
+ "atch": "//www.musixmatch.com/search/\u0002\u00010",
+ "o13": "//mmo13.com/search/\u0002\u00010",
+ "oga": "//www.mmoga.de/advanced_search.php?keywords=\u0002\u000110"
+ },
+ "n": {
+ "b": "//minimalistbaker.com/?s=\u0002\u00010",
+ "f": "//www.makenewfriendspodcast.com/?s=\u0002\u00010",
+ "*": "http://www.medicinanet.com.br/pesquisas/\u0002.htm\u00015",
+ "m": "//www.nexusmods.com/morrowind/search/?gsearch=\u0002&gsearchtype=mods\u00010",
+ "p": "http://manpages.org/\u0002\u00010",
+ "t": "http://www.medicalnewstoday.com/search?q=\u0002 \u00010",
+ "aver": "//m.search.naver.com/search.naver?query=\u0002\u00010",
+ "nthbx": "//mnnthbx.com/?post_type=product&s=\u0002\u00010"
+ },
+ "o": {
+ "d": {
+ "*": "//modarchive.org/index.php?request=search&query=\u0002&submit=Find&search_type=filename_or_songtitle\u00010",
+ "x": "//docs.modx.org/current/en/search?q=\u0002\u00010",
+ "db": "http://moddb.com/search?q=\u0002\u000112",
+ "archive": "//modarchive.org/index.php?request=search&query=\u0002&submit=Find&search_type=filename_or_songtitle\u00010",
+ "cloth": "http://www.modcloth.com/shop/search?keyword=\u0002 \u00010",
+ "dota": "//moddota.com/forums/search?Search=\u0002\u00010",
+ "es4u": {
+ "*": "//www.modes4u.com/japanese/\u0002\u00010",
+ "_it": "//www.modes4u.com/carino/\u0002\u00010"
+ },
+ "help": "http://www.reddit.com/r/modhelp/search?q=\u0002\u00010",
+ "ule": "//en.wikipedia.org/wiki/Module:\u0002\u00010",
+ "ulargrid": "//www.modulargrid.net/e/modules/browser?SearchName=\u0002\u00014"
+ },
+ "j": {
+ "*": "//www.madeofjeans.com/search/?q=\u0002\u00010",
+ "o": "http://boxofficemojo.com/search/?q=\u0002\u000110",
+ "angbug": "//bugs.mojang.com/issues/?jql=text ~ '\u0002'\u000122",
+ "eek": "//www.mojeek.com/search?q=\u0002\u00016",
+ "posao": "//www.moj-posao.net/Pretraga-Poslova/?keyword=\u0002&area=&category=\u00010"
+ },
+ "l": {
+ "*": "//paikat.te-palvelut.fi/tpt/?searchPhrase=\u0002\u00010",
+ "w": "http://www.webqc.org/mmcalc.php?compound=\u0002\u00010",
+ "y": "http://moly.hu/kereses?q=\u0002\u00010",
+ "lat": "//www.mollat.com/recherche?requete=\u0002\u00010"
+ },
+ "*": "http://mathoverflow.net/search?q=\u0002\u00010",
+ "o": {
+ "c": {
+ "*": "//www.class-central.com/search?q=\u0002\u00010",
+ "s": "//www.class-central.com/search?q=\u0002\u00010"
+ },
+ "*": "//www.moo.com/search?query=\u0002\u00010",
+ "n": {
+ "*": "//moonmonday.space/?s=\u0002\u00010",
+ "pig": "//www.moonpig.com/uk/testpages/search/ab277/?q=\u0002\u00010"
+ },
+ "ji": "http://mooji.tv/freemedia/?_fm_s=\u0002\u00010"
+ },
+ "z": {
+ "*": "//www.google.com/cse?cx=002443141534113389537%3Aysdmevkkknw&cof=FORID%3A0&q=\u0002\u00017",
+ "pb": "//phonebook.mozilla.org/?search/\u0002\u00010",
+ "sf": "http://searchfox.org/mozilla-central/search?q=\u0002\u00010",
+ "addon": "//addons.mozilla.org/en-US/firefox/search/?q=\u0002\u000137",
+ "browser": "http://www.mozbrowser.nl/forum/search.php?keywords=\u0002\u00010",
+ "dxr": "//dxr.mozilla.org/mozilla-central/search?q=\u0002\u00010",
+ "illasupport": "//support.mozilla.org/search?q=\u0002\u00010",
+ "illians": "//mozillians.org/en-US/search/?q=\u0002\u00010",
+ "test": "//observatory.mozilla.org/analyze/\u0002\u00010",
+ "wiki": "//wiki.mozilla.org/index.php?search=\u0002\u00013"
+ },
+ "by": {
+ "*": "http://www.mobygames.com/search/quick?q=\u0002\u0001150",
+ "games": "http://www.mobygames.com/search/quick?q=\u0002&x=0&y=0\u0001112",
+ "thes": "http://www.moby-thesaurus.org/search?q=\u0002\u00010"
+ },
+ "ex": "//www.moex.com/en/issue.aspx?code=\u0002\u000133",
+ "pi": "//www.moviepilot.de/suche?utf8=%E2%9C%93&q=\u0002\u00010",
+ "re": "//duckduckgo.com/?q=site:https://www.mobileread.com%20\u0002\u00010",
+ "vl": "//movielens.org/explore?q=\u0002\u00010",
+ "13fps": "//masterof13fps.de/forums/search/46335/?q=\u0002\u00010",
+ "bafire": {
+ "*": "http://www.mobafire.com//?q=\u0002:\u00013",
+ "builds": "http://www.mobafire.com/league-of-legends/browse/?q=\u0002: \u00010"
+ },
+ "bce": "//mobilecentre.am/search/?searchData=\u0002\u00010",
+ "bcup": "//mobcup.net/search?q=\u0002\u00010",
+ "bileday": "//www.mobileday.in/search/label/\u0002\u00010",
+ "bilefriendly": "//search.google.com/test/mobile-friendly?url=\u0002\u00010",
+ "bilegeeks": "http://www.mobilegeeks.com/?s=\u0002\u00010",
+ "bileread": "//www.mobileread.com/forums/gcs.php?cx=011403329271260343335%3Amzng3fi-cti&q=\u0002&sa=Search&siteurl=www.mobileread.com%2F\u00010",
+ "birum": "//mobirumdiscovery.com/search?q=\u0002\u00010",
+ "edict": "//www.moedict.tw/\u0002\u000110",
+ "egirl": "//zh.moegirl.org/Special:Search?search=\u0002\u000124",
+ "fakult": "//www.mofakult.ch/catalogsearch/result/?q=\u0002\u00010",
+ "glix": "//www.moglix.com/search?controller=search&orderby=position&orderway=desc&search_query= \u0002&submit_search=Search\u00010",
+ "nash": "//www.monash.edu/search?query=\u0002\u00010",
+ "ncul": "http://moncul.org/?s=\u0002\u00010",
+ "nde": {
+ "*": "//www.lemonde.fr/recherche/?search_keywords=\u0002\u000111",
+ "fr": "//www.lemonde.fr/recherche/?keywords=\u0002\u00010"
+ },
+ "ndou": "//www.mondou.com/en-CA/Search?keywords=\u0002\u00010",
+ "ndadoristore": "http://www.mondadoristore.it/search/?tpr=10&g=\u0002&swe=N&search-input=active\u00010",
+ "ndofox": "//www.mondofox.it/?q=\u0002\u00010",
+ "ney": {
+ "*": "http://moneybadger.stocktwits.com/?s=\u0002\u00010",
+ "control": "http://www.moneycontrol.com/stocks/cptmarket/compsearchnew.php?search_data=&cid=&mbsearch_str=&topsearch_type=1&search_str=\u0002\u0001651",
+ "land": "//www.moneyland.ch/search?q=\u0002\u00010"
+ },
+ "ngo": {
+ "*": "http://docs.mongodb.org/manual/search/?query=\u0002\u000113",
+ "db": "http://docs.mongodb.org/manual/search/?query=\u0002\u000113"
+ },
+ "nolecte": "http://blog.monolecte.fr/?s=\u0002 \u00010",
+ "noprice": "http://www.monoprice.com/products/search.asp?keyword=\u0002\u00014",
+ "nster": {
+ "*": "http://jobsearch.monster.com/Search.aspx?re=130&cy=us&brd=1&JSNONREG=1&q=\u0002&rad=20&rad_units=miles\u00017",
+ "cat": "//www.monstercat.com/search?term=\u0002\u00010",
+ "coupons": "//monster-coupons.com/search.php?q=\u0002\u00010"
+ },
+ "nth": "//duckduckgo.com/?q=\u0002&df=m\u00010",
+ "raneducation": "http://www.moraneducation.com/index.php?route=product/search&search=\u0002 \u00010",
+ "rbo": {
+ "*": "//morbotron.com/?q=\u0002\u00010",
+ "tron": "//morbotron.com/?q=\u0002\u00010"
+ },
+ "rchstore": "//www.morchstore.com/?post_type=product&s=\u0002\u00010",
+ "rfix": "http://www.morfix.co.il/\u0002\u000116",
+ "rmon": "//www.mormon.org/searchresults#?query=\u0002\u00010",
+ "rningstar": "//www.morningstar.com/search.html?q=\u0002\u000123",
+ "saik": "//ingressmosaik.com/search?f=\u0002\u00010",
+ "saicmarble": "//mosaicmarble.com/products/search?query=\u0002\u00010",
+ "shville": "http://www.moshville.co.uk//?s=\u0002\u00010",
+ "staql": "//mostaql.com/freelancers?keyword=\u0002\u00010",
+ "tonet": "http://www.motonet.fi/fi/haku?q=\u0002\u00010",
+ "torsport": "http://www.motorsport.com/all/search/?q=\u0002\u00010",
+ "untainwarehouse": "//www.mountainwarehouse.com/search/\u0002/\u00010",
+ "user": "http://www.mouser.com/Search/Refine.aspx?Keyword=\u0002\u0001129",
+ "vies": "//www.atomtickets.com/search?query=\u0002\u00010",
+ "viechat": "//moviechat.org/search?name=\u0002\u00010",
+ "viefone": "//www.moviefone.com/search/\u0002/\u00010",
+ "vieguide": "http://www.movieguide.org/?s=\u0002&submit.x=0&submit.y=0&submit=Search&key=hs\u00010",
+ "viemeter": "//www.moviemeter.nl/site/search?q=\u0002\u00010",
+ "viepilot": {
+ "m": "http://m.moviepilot.de/suche?utf8=✓&q=\u0002\u00010",
+ "*": "http://www.moviepilot.de/suche?utf8=✓&q=\u0002\u00015"
+ },
+ "vieweb": "http://www.movieweb.com/search?search=\u0002\u00010",
+ "xo.ir": "http://www.moxo.ir/?s=\u0002 \u00010"
+ },
+ "p": {
+ "g": {
+ "*": "http://www.mpg.de/en/search?utf8=%E2%9C%93&searchfield=\u0002\u00010",
+ "de": "http://www.mpg.de/en/search?utf8=%E2%9C%93&searchfield=\u0002\u00010",
+ "pure": "http://pubman.mpdl.mpg.de/pubman/faces/SearchResultListPage.jsp?cql=escidoc.objecttype%3D%22item%22+AND+escidoc.content-model.objid%3D%22escidoc%3Apersistent4%22+AND+%28%28escidoc.metadata%3D%22\u0002%22%29+OR+%28%28escidoc.any-identifier%3D%22\u0002%22+OR+escidoc.property.latest-release.objid%3D%22\u0002%22%29%29+%29\u00010",
+ "rena": "http://rena.mpdl.mpg.de/rena/Search/Results?lookfor=\u0002\u00010"
+ },
+ "l": {
+ "a": "http://losangeles.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010",
+ "*": "//matplotlib.org/search.html?q=\u0002 \u000123"
+ },
+ "*": "http://www.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010",
+ "bo": "http://boston.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010",
+ "ch": "http://chicago.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010",
+ "dc": "http://washingtondc.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010",
+ "fl": "http://southflorida.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010",
+ "ny": "http://www.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010",
+ "pb": "//www.medienpaedagogik-praxis.de/?s=\u0002\u00010",
+ "ph": "http://philadelphia.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010",
+ "sf": "http://sanfrancisco.menupages.com/restaurants/text/\u0002/all-areas/all-neighborhoods/all-cuisines/\u00010",
+ "ora": "http://mpora.com/search/videos?q=\u0002\u00010",
+ "roj": "//www.mountainproject.com/search?q=\u0002\u000111"
+ },
+ "q": "http://www.mapquest.com/?q=\u0002\u00015",
+ "r": {
+ "e": {
+ "f": "//mathscinet.ams.org/mathscinet-mref?ref=\u0002\u00010",
+ "*": "//m.reddit.com/search?q=\u0002\u00010"
+ },
+ "g": "//go.mail.ru/msearch?q=\u0002\u00010",
+ "i": "//mri.iop.kcl.ac.uk/mediawiki/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010",
+ "*": "http://www.macrumors.com/search?s=\u0002\u000188",
+ "w": "//www.mrw.es/seguimiento_envios/MRW_resultados_consultas.asp?modo=nacional&envio=\u0002\u00010",
+ "qe": "http://www.mrqe.com/search?utf8=%E2%9C%93&q=\u0002 \u00010",
+ "money": "//www.mrmoneymustache.com/?s=\u0002\u00014",
+ "phone": "//www.themrphone.com/search/\u0002\u00010",
+ "porter": "//www.mrporter.com/mens/search?keywords=\u0002\u00010"
+ },
+ "s": {
+ "2": "http://forums.maplestory2.nexon.net/search?Search=\u0002\u00010",
+ "a": {
+ "c": {
+ "*": "//academic.microsoft.com/search?q=\u0002&f=&orderBy=0&forceFallback=true\u00014",
+ "ademic": "http://academic.research.microsoft.com/Search?query=\u0002&s=0\u00010"
+ },
+ "*": "//academic.microsoft.com/search?q=\u0002\u00018",
+ "mmler": "//www.musik-sammler.de/search/\u0002/\u00010",
+ "nctuary": "http://www.manga-sanctuary.com/recherche.php?keywords=\u0002\u00010"
+ },
+ "c": {
+ "*": "http://www.ams.org/mathscinet/search/publications.html?pg4=ALLF&s4=\u0002\u000117",
+ "pp": "//docs.microsoft.com/en-us/search/index?search=\u0002&scope=C%2B%2B\u00010",
+ "direct": "//www.mscdirect.com/browse/?searchterm=\u0002\u00019",
+ "ore": "//duckduckgo.com/?q=site%3Amusescore.org+\u0002&ia=web\u00013"
+ },
+ "d": {
+ "*": "//docs.microsoft.com/en-us/search/index?search=\u0002\u0001111",
+ "n": "http://social.msdn.microsoft.com/Search/en-US?query=\u0002&ac=8\u0001250",
+ "s": "http://www.sciencelab.com/search.php?q=\u0002\u00010",
+ "jp": "//www.msdmanuals.com/ja-jp/ホーム/SearchResults?query=\u0002\u00010",
+ "ocs": "//docs.microsoft.com/en-us/search/index?search=\u0002\u0001111",
+ "otnet": "//docs.microsoft.com/en-us/search/index?search=\u0002&scope=.NET\u000145"
+ },
+ "e": {
+ "*": "//magento.stackexchange.com/search?q=\u0002\u00010",
+ "q": "http://etfs.morningstar.com/quote?t=\u0002\u000119"
+ },
+ "g": "//www.messenger.com/t/\u0002\u0001475",
+ "h": "http://mashable.com/follow/search/?q=\u0002&commit=Search\u00010",
+ "i": "//us.msi.com/search/\u0002\u00010",
+ "*": "http://search.microsoft.com/results.aspx?mkt=en-US&form=MSHOME&setlang=en-US&q=\u0002\u000123",
+ "n": {
+ "m": "http://investing.money.msn.com/investments/stock-price?Symbol=\u0002 \u000190",
+ "*": "//www.msn.al/?s=\u0002\u000116",
+ "bc": "http://www.msnbc.com/search/\u0002\u0001130"
+ },
+ "o": {
+ "*": "//meta.stackoverflow.com/search?q=\u0002\u00010",
+ "cial": "//mastodon.social/tags/\u0002\u00010"
+ },
+ "q": "http://quote.morningstar.com/stock/s.aspx?t=\u0002\u00010",
+ "t": {
+ "*": "http://www.microsofttranslator.com/bv.aspx?a=\u0002\u000115",
+ "ack": "//math.stackexchange.com/search?q=\u0002\u00014",
+ "ore": "//www.microsoft.com/en-us/search?q=\u0002\u000117"
+ },
+ "y": "http://www.msy.com.au/saonline/search?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=Go\u00010",
+ "fq": "http://www.morningstar.com/funds/xnas/\u0002/quote.html\u00010",
+ "kb": "//support.microsoft.com/en-us/search?query=\u0002\u00016",
+ "pa": {
+ "*": "http://mspaintadventures.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010",
+ "wiki": "http://mspaintadventures.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010"
+ },
+ "pu": "http://mspoweruser.com/?s=\u0002\u00010",
+ "rd": "http://www.musicradar.com/search?searchTerm=\u0002:\u00010",
+ "ui": "//www.meteoswiss.admin.ch/home/search.html?query=\u0002 \u00010",
+ "malware": "http://www.microsoft.com/security/portal/Threat/Encyclopedia/Search.aspx?query=\u0002\u00010",
+ "mvps": "http://msmvps.com/search/SearchResults.aspx?q=\u0002&o=Relevance\u00010",
+ ".net": "//docs.microsoft.com/en-us/dotnet/api/?view=netframework-4.7&term=\u0002\u000113",
+ "sql": "//social.technet.microsoft.com/Search/en-US/sqlserver?query=\u0002&Refinement=30&ac=4\u00014",
+ "ulibrary": "//lib.msu.edu/searchresults/?Ntt=\u0002\u00010",
+ "update": "//www.catalog.update.microsoft.com/Search.aspx?q=\u0002\u00010"
+ },
+ "t": {
+ "b": "//www.mtbproject.com/search?q=\u0002\u00015",
+ "f": {
+ "*": "//www.moestuinforum.nl/search/gsearch_body.html?q=\u0002\u00010",
+ "orums": "//forum.minetest.net/search.php?keywords=\u0002\u000112"
+ },
+ "g": {
+ "g": {
+ "f": "http://www.mtggoldfish.com/q?query_string=\u0002\u00018",
+ "*": "http://gatherer.wizards.com/Pages/Search/Default.aspx?name=+[\u0002]\u0001114"
+ },
+ "h": "http://mtg-hunter.com/?q=\u0002\u00010",
+ "*": "//scryfall.com/search?q=\u0002\u00011411",
+ "s": "http://mtgsalvation.gamepedia.com/?search=\u0002\u000124",
+ "w": {
+ "*": "//mtg.wtf/card?q=\u0002\u000165",
+ "tf": "//mtg.wtf/card?q=\u0002\u000165",
+ "iki": "http://mtgsalvation.gamepedia.com/index.php?search=\u0002\u000135"
+ },
+ "cm": "//www.cardmarket.com/en/Magic/Products/Search?searchString=\u0002\u000166",
+ "otraders": "http://www.mtgotraders.com/store/search.php?q=\u0002&x=0&y=0\u00010"
+ },
+ "k": "//www.mturk.com/mturk/searchbar?selectedSearchType=hitgroups&searchWords=\u0002\u00010",
+ "*": "//www.multitran.com/m.exe?s=\u0002\u0001109",
+ "n": "//www.mountainproject.com/search?q=\u0002\u000111",
+ "r": {
+ "*": "http://mwsgsa01.mtr.com.hk/search?site=default_collection&output=xml_no_dtd&client=mtr_eng&proxystylesheet=mtr_eng&proxyreload=1&ie=big5&oe=UTF-8&q=\u0002\u00010",
+ "l": "//material.io/search.html?q=\u0002\u00010"
+ },
+ "s": "http://www.modthesims.info/browse.php?tag=\u0002\u000111",
+ "t": "http://www.multitracks.com/search/?q=\u0002\u00010",
+ "u": "//www.mtu.edu/search/?q=\u0002\u00010",
+ "v": "http://www.mtv.com/search/?searchterm=\u0002\u00010",
+ "w": "http://wiki.minetest.net/index.php?search=\u0002\u00013",
+ "cn": "http://www.mandarintools.com/cgi-bin/wordlook.pl?word=\u0002&where=whole\u00010",
+ "en": "http://www.mandarintools.com/cgi-bin/wordlook.pl?word=\u0002&searchtype=english&where=whole\u00010",
+ "awiki": "//wiki.multitheftauto.com/index.php?title=Special%3ASearch&profile=default&fulltext=Search&search=\u0002\u00010",
+ "content": "//mt-content-search-engine.000webhostapp.com/?search=\u0002&do_search=\u00010",
+ "mod": "//content.minetest.net/packages/?q=\u0002\u000115"
+ },
+ "u": {
+ "a": "http://makeupalley.com/search.asp?q=\u0002\u00010",
+ "i": "//material-ui.com/api/\u0002\u000149",
+ "k": {
+ "e": "//www.google.co.uk/maps/?hl=en&q=\u0002\u00010",
+ "*": "//www.google.co.uk/maps/?hl=en&q=\u0002\u00010"
+ },
+ "*": "http://macupdate.com/find/mac/\u0002\u00016",
+ "o": "//www.makeuseof.com/?s=\u0002\u00010",
+ "bi": "http://mubi.com/search/results?cx=016360985607050269103%3Acmmod4epzpo&cof=FORID%3A10&ie=UTF-8&q=\u0002\u00010",
+ "ff": "//www.muffwiggler.com/forum/search.php?search_keywords=\u0002&search_terms=extended&search_author=&search_forum=-1&search_time=0&search_fields=all&sort_by=0&sort_dir=desc&show_results=topics&return_chars=200\u00010",
+ "rl": "//murlengine.com/api/en/search.php?q=\u0002\u00010",
+ "dah": "//m.mudah.my/list?q=\u0002&ca=9_3_s&sa=&cg=&catname=All+Categories&o=1&f=p&srch=1&so=1\u00010",
+ "gshots": "http://mugshots.com/search.html?q=\u0002\u00015",
+ "ltcolib": "//multcolib.org/search/site/\u0002\u00010",
+ "ltitran": "http://www.multitran.ru/c/m.exe?CL=1&s=\u0002&l1=1\u000113",
+ "ltitron": "//www.multitronic.fi/en/search/results#lang=en&c=search&keywords=\u0002\u00010",
+ "ngfali": "http://mungfali.com/explore.php?q=\u0002\u00010",
+ "ppet": "http://muppet.wikia.com/wiki/Special:Search?search=\u0002\u00013",
+ "ragon": "//muragon.com/search/?ie=UTF-8&q=\u0002&sa=検索\u00010",
+ "ralpsi": "http://muralpsicologia.com.br/eventos/pesquisa?s=\u0002\u00010",
+ "rfie": "//www.murfie.com/search?search=\u0002\u00010",
+ "scdevforum": "http://forums.musculardevelopment.com?q=\u0002: \u00010",
+ "sescore": "http://musescore.com/sheetmusic?text=\u0002\u000155",
+ "sicr": "http://www.musicradar.com/search?searchTerm=\u0002 \u00010",
+ "sikm": "http://www.musik-meisinger.de/1/advanced_search_result.php?keywords=\u0002 \u00010",
+ "sicaneto": "http://www.musicaneto.com/?s=\u0002\u00010",
+ "sicbrainz": "http://musicbrainz.org/search/textsearch.html?type=artist&query=\u0002&handlearguments=1\u0001197",
+ "siciansfriend": "http://www.musiciansfriend.com/search/search.jsp?sB=r&question=\u0002\u00010",
+ "sicme": "http://www.musicme.com/page.php?q=\u0002\u00010",
+ "sicmap": "http://www.music-map.com/\u0002\u00013",
+ "sicmoz": "//musicmoz.org/search/search.cgi?search=\u0002\u00010",
+ "sicstack": "http://www.musicstack.com/show.cgi?find=\u0002\u00010",
+ "sicxm": "//www.musixmatch.com/search/\u0002\u00010",
+ "sikazblai": "http://eu.musikazblai.com/foro/search.php?q=\u0002\u00010",
+ "siker-board": "//www.google.de/search?q=\u0002+site%3Awww.musiker-board.de&oq=Schaffer+site%3Awww.musiker-board.de\u00010",
+ "simundo": "http://www.musimundo.com/Busqueda?cbrand=0&title=0&artist=0&categories=&search=\u0002&typeGrid=grid\u00010",
+ "sipedia": "http://www.musipedia.org/result.html?tx_mpsearch_pi1[pc]=\u0002&tx_mpsearch_pi1[submit_button]=Search\u00010",
+ "sixmatch": {
+ "*": "//www.musixmatch.com/search/\u0002\u00010",
+ "de": "//www.musixmatch.com/de/search/\u0002\u00010"
+ },
+ "slimmanga": "http://muslimmanga.org/?lang=en&s=\u0002\u00010",
+ "sopen": "http://musopen.org/search?q=\u0002\u00010",
+ "usikoiden": "//muusikoiden.net/tori/haku.php?keyword=\u0002&title_only=0&location=all&province=&city=&type=all&price_min=&price_max=&category=all&with_image=0\u00010",
+ "ycomputer": "//www.muycomputer.com/?s=\u0002\u00010",
+ "ylinux": "//www.muylinux.com/?s=\u0002\u00013",
+ "zikersk": "//www.muziker.sk/search?q=\u0002\u00010",
+ "zli": "//search.muz.li/search/\u0002\u00010",
+ "zofon": "http://muzofon.com/search/\u0002\u00010"
+ },
+ "v": {
+ "*": "http://www.myvideo.de/Videos_A-Z?searchWord=\u0002\u000125",
+ "n": {
+ "*": "//mvnrepository.com/search?q=\u0002\u0001256",
+ "rep": {
+ "*": "http://mvnrepository.com/search.html?query=\u0002:\u00018",
+ "ository": "http://mvnrepository.com/search.html?query=\u0002\u000124"
+ }
+ },
+ "v": "http://efa.mvv-muenchen.de/index.html?name_destination=\u0002\u000111",
+ "db": "http://www.mvdbase.com/index.php?term=\u0002&field=vid&page=results\u00013"
+ },
+ "w": {
+ "b": "http://www.mijnwoordenboek.nl/vertaal/NL/EN/\u0002\u00017",
+ "d": "//www.merriam-webster.com/dictionary/\u0002\u0001109",
+ "i": "//duckduckgo.com/?q=\u0002+site%3Amusicweb-international.com\u00010",
+ "l": {
+ "d": "http://www.learnersdictionary.com/definition/\u0002\u000110",
+ "*": "http://www.learnersdictionary.com/definition/\u0002\u000110"
+ },
+ "*": "//www.merriam-webster.com/dictionary/\u0002\u0001109",
+ "m": "//meta.wikimedia.org/w/index.php?&title=Special%3ASearch&go=Go&search=\u0002\u00010",
+ "t": "http://www.merriam-webster.com/thesaurus/\u0002\u000168",
+ "u": {
+ "*": "http://mobile.wunderground.com/q/\u0002\u00010",
+ "nabridged": "http://unabridged.merriam-webster.com/unabridged/\u0002\u00010"
+ },
+ "eb": "//www.merriam-webster.com/dictionary/\u0002\u0001109",
+ "ave": "//www.mwave.com.au/searchresult?w=\u0002\u00010"
+ },
+ "x": {
+ "c": "//www.mixcloud.com/\u0002\u00010",
+ "m": "//www.musixmatch.com/search/\u0002\u00010",
+ "*": "http://mxtoolbox.com/SuperTool.aspx?action=mx%3a\u0002&run=networktools\u000128",
+ "r": "//www.mixer.com/\u0002\u00010",
+ "s": "http://forum.mxsimulator.com/search.php?keywords=\u0002\u00010",
+ "tool": "//mxtoolbox.com/SuperTool.aspx?action=\u0002\u00016"
+ },
+ "z": "//www.mittelbayerische.de/suche/?scope=20000&type=articles%2Cgalleries%2Cvideos&interval=month&searchterm=\u0002\u00010",
+ "3s": "//www.mp3skulls.icu/mp3/\u0002.html\u00010",
+ "4l": "http://maxforlive.com/library/index.php?by=any&q=\u0002\u00010",
+ "gh": "//www.dmgh.de/de/fs1/search/query.html?fulltext=\u0002\u00010",
+ "gm": "//www.mgm.gov.tr/tahmin/il-ve-ilceler.aspx?il=\u0002\u00010",
+ "gw": "http://metalgear.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "js": "//www.miningjobsearch.com/Mining-Jobs/Search/\u0002\u00010",
+ "ya": {
+ "*": "//market.yandex.ru/search?text=\u0002\u000112",
+ "ctivity": "//myactivity.google.com/myactivity?q=\u0002\u00010",
+ "llsearch": "http://www.myallsearch.com/Web/\u0002.html\u00010",
+ "nimelist": "//myanimelist.net/anime.php?q=\u0002\u00013525"
+ },
+ "yc": {
+ "*": "//www.mycomicshop.com/search?q=\u0002\u00010",
+ "om": "//mycom.nl/search/\u0002\u00010",
+ "roft": "http://mycroftproject.com/search-engines.html?name=\u0002&opensearch=yes\u00013"
+ },
+ "yk": "//www.myknobs.com/page/search?Ntt=\u0002\u00010",
+ "ym": {
+ "*": "http://www.mymovies.it/database/ricerca/?q=\u0002\u00010",
+ "ovies": "http://www.mymovies.it/database/ricercalibera/default.asp?q=\u0002&cx=partner-pub-1699801751737986%3Ax7j961-1g3m&cof=FORID%3A9&ie=ISO-8859-1&sa=Cerca\u00010",
+ "ovingreviews": "http://www.mymovingreviews.com/search.php?q=\u0002&x=0&y=0\u00010"
+ },
+ "yn": {
+ "*": "http://www.myntra.com/\u0002\u00014",
+ "tra": "http://www.myntra.com/\u0002 \u00014"
+ },
+ "yo": "http://www.plazademayo.com/mediosyopinion/?s=\u0002\u00010",
+ "yp": {
+ "*": "//pt.myprotein.com/elysium.search?search=\u0002\u00010",
+ "dns": "http://www.mypdns.org/trac/search?q=\u0002\u00010"
+ },
+ "ys": {
+ "*": "http://www.mysupermarket.co.uk/Shopping/FindProducts.aspx?Query=\u0002\u00010",
+ "ku": "http://mysku.ru/search/topics/?q=\u0002\u00010",
+ "ql": "/?q=\u0002+site:dev.mysql.com\u000154",
+ "hows": "http://myshows.me/search/?q=\u0002\u00010",
+ "ongbook": "http://www.mysongbook.com/search?utf8=%E2%9C%93&search%5Btype_item%5D=4&search%5Bname%5D=\u0002\u00010",
+ "pace": "http://searchservice.myspace.com/index.cfm?fuseaction=sitesearch.results&orig=search_Header&origpfc=Splash&type=People&qry=\u0002&submit=Search\u00014"
+ },
+ "yt": {
+ "*": "//music.youtube.com/search?q=\u0002\u0001262",
+ "ip": "//www.mytip.co/explore?search=\u0002\u00010"
+ },
+ "āori": "http://maoridictionary.co.nz/search?keywords=\u0002\u00010",
+ "gtbk": "//www.managementboek.nl/zoeken?c=&q=\u0002\u00010",
+ "jtsai": "//duckduckgo.com/?q=\u0002&sites=mjtsai.com&ia=web\u00010",
+ "ybb": "//mybroadband.co.za/news/?s=\u0002\u00010",
+ "ybestbrands": "http://www.mybestbrands.de/search/?q=\u0002\u00010",
+ "ybrain": "//mywellbrain.com/?s=\u0002\u00010",
+ "ydns": "//mypdns.org/trac/search?q=\u0002\u00010",
+ "ydealz": "//www.mydealz.de/search?q=\u0002\u000192",
+ "ydrama": "//mydramalist.com/search?q=\u0002\u00010",
+ "yer": "//www.myer.com.au/search?query=\u0002\u00010",
+ "yecp": "//my.ecp.fr/search?query=\u0002\u00010",
+ "yfl": "http://www.myflorida.com/search_results.html?q=\u0002#gsc.tab=0&gsc.q=dmv&gsc.page=1\u00010",
+ "yfonts": "http://new.myfonts.com/search/\u0002/\u00010",
+ "ygofer": "http://www.mygofer.com/search=\u0002\u00010",
+ "ygovscot": "//www.mygov.scot/search?q=\u0002&cat=sitesearch\u00010",
+ "yinstants": "//www.myinstants.com/search/?name=\u0002\u00014",
+ "yrec": "http://www.myrecipes.com/search/site/\u0002\u00010",
+ "yvidster": "//www.myvidster.com/search/?q=\u0002\u000122",
+ "ywot": "//www.mywot.com/en/scorecard/\u0002\u00015"
+ },
+ "n": {
+ "a": {
+ "b": {
+ "*": "//notabug.org/explore/repos?q=\u0002\u00016",
+ "re": "//www.biblegateway.com/passage/?search=\u0002&version=NABRE\u00013",
+ "ava": "//www.nabava.net/search.php?q=\u0002\u00014"
+ },
+ "*": "//search.naver.com/search.naver?query=\u0002\u00011144",
+ "v": {
+ "a": "http://www.navalactionwiki.com/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "m": "//beta.map.naver.com/search/\u0002\u00013",
+ "*": "http://www.navigium.de/latein-woerterbuch.php?form=\u0002&wb=gross&phr=true&mh=true\u000118",
+ "er": {
+ "*": "http://search.naver.com/search.naver?where=nexearch&sm=osd&ie={inputEncoding}&query=\u0002\u00014813",
+ "dicfr": "//dict.naver.com/frkodict/#/search?query=\u0002\u00013"
+ }
+ },
+ "eb": "http://naeb.brit.org/uses/search/?string=\u0002\u00010",
+ "me": {
+ "*": "http://www.name.com/name?&domain=\u0002\u000117",
+ "mc": "//de.namemc.com/s?\u0002\u0001157",
+ "cheap": "//www.namecheap.com/domains/registration/results.aspx?domain=\u0002\u000149",
+ "ling": "http://nameling.net/name/\u0002\u00010"
+ },
+ "mu": "//namu.wiki/go/\u0002\u00014108",
+ "no": "//www.timini.no/search/q/\u0002\u00010",
+ "ob": "//www.naob.no/s%C3%B8k/\u0002\u0001169",
+ "sa": "//nasasearch.nasa.gov/search?query=\u0002&affiliate=nasa&utf8=%E2%9C%93\u00014",
+ "sb": "//www.biblegateway.com/quicksearch/?quicksearch=\u0002&qs_version=NASB\u00013",
+ "sp": "//search.shopping.naver.com/search/all.nhn?query=\u0002&cat_id=&frm=NVSHATC\u000110",
+ "arden": "http://www.naardensebijbel.nl/?search-class=DB_CustomSearch_Widget-db_customsearch_widget&widget_number=preset-default&-0=vers&cs-booknr-1=&cs-bijbelhoofdstuk-2=&cs-versnummer-3=&cs-bijbelvers_v2-4=\u0002&search=Zoeken\u00010",
+ "cht": "http://gbpicx.de//?s=\u0002\u00010",
+ "ijalingo": "http://naijalingo.com/search?word=\u0002\u00010",
+ "ijatoptech": "//www.naijatoptech.com.ng/search?q=\u0002\u00010",
+ "jdi": "http://www.najdi.si/search.jsp?q=\u0002\u00010",
+ "kedsec": "//nakedsecurity.sophos.com/?s=\u0002\u00010",
+ "mchey": "//namchey.com/search/?searchKeyword=\u0002\u00010",
+ "ointendo": "http://www.naointendo.com.br/blog/busca?utf8=✓&q=\u0002\u00010",
+ "opgg": "http://na.op.gg/summoner/userName=\u0002\u000134",
+ "ora": "//www.naora.me/web?q=\u0002\u00010",
+ ".op": "http://na.op.gg/summoner/userName=\u0002\u000134",
+ "ruto": "http://naruto.wikia.com/wiki/Special:Search?search=\u0002\u000111",
+ "sdaq": "//www.nasdaq.com/symbol/\u0002/real-time\u000149",
+ "slovi": "http://www.naslovi.net/search.php?q=\u0002\u000118",
+ "tgeo": {
+ "*": "//www.nationalgeographic.com/search/?q=\u0002\u00010",
+ "kids": "//www.natgeokids.com/?s=testhttps://www.nationalgeographic.com/search/?q=\u0002\u00010"
+ },
+ "tionalgeographic": "//www.nationalgeographic.com/search/?q=\u0002\u00010",
+ "tionalobserver": "//www.nationalobserver.com/search?keywords=\u0002\u00010",
+ "tionalpost": "//nationalpost.com/?s=\u0002\u00010",
+ "tionalreview": "//www.nationalreview.com/?s=\u0002\u00010",
+ "tiveinstruments": "//www.native-instruments.com/en/reaktor-community/reaktor-user-library/all/all/all/all/\u0002/latest/1/all/?q=\u0002&t=userlib\u00010",
+ "tobserver": "//www.nationalobserver.com/search?keywords=\u0002\u00010",
+ "tpng": "http://www.thenational.com.pg/?s=\u0002\u00010",
+ "ture": {
+ "*": "http://www.nature.com/search/executeSearch?sp-q-1=&sp-q=\u0002\u00016",
+ "spic": "http://www.naturespic.com/NewZealand/result_search.asp?search=\u0002\u00010"
+ },
+ "tural": "//naturallybeautycare.com/search/\u0002\u00010",
+ "turvin": "//naturvin.wordpress.com/?s=\u0002\u00010",
+ "utilus": "http://nautil.us/search/\u0002\u00010",
+ "utiljon": "http://www.nautiljon.com/search.php?cx=partner-pub-0881008410530095%3Ad1y8wrnakj0&cof=FORID%3A10&ie=UTF-8&q=\u0002\u000117",
+ "yiri": "http://nayiri.com/search?query=\u0002\u00010"
+ },
+ "b": {
+ "a": {
+ "m": "//www.nbamaniacs.com/?s=\u0002\u00010",
+ "*": "http://www.nba.com/search#/\u0002\u0001111",
+ "dl": "http://dleague.nba.com/?q=\u0002\u00010"
+ },
+ "c": {
+ "*": "//www.notebookcheck.net/Google-Search.36690.0.html?q=\u0002\u000124",
+ "de": "//www.notebookcheck.com/Notebook-Suche.1095.0.html?&manufacturer=&model=\u0002\u00010"
+ },
+ "d": "http://ordbok.uib.no/perl/ordbok.cgi?bokmaal=1&opp=\u0002\u000117",
+ "*": "http://www.nb.no/nbsok/search?page=0&menuOpen=false&instant=true&action=search&currentHit=-1&searchString=\u0002\u00010",
+ "n": {
+ "*": "//nbn-resolving.org/\u0002\u00010",
+ "otes": "//nbcstructuredsolutions.ca/listeProduits.aspx?search=\u0002\u00010"
+ },
+ "ooks": "http://www.notebooksbilliger.de/produkte/\u0002\u00010",
+ "sdman": "http://netbsd.gw.com/cgi-bin/man-cgi?\u0002\u00010"
+ },
+ "c": {
+ "e": "http://nciku.com/search/en/\u0002\u00010",
+ "k": "http://nciku.com/search/all/\u0002\u00010",
+ "l": "//www.nclive.org/search-everything?search=\u0002\u00010",
+ "*": "//www.namecheap.com/domains/registration/results.aspx?domain=\u0002 \u000165",
+ "r": "//www.ncregister.com/search/results?q=\u0002\u00010",
+ "z": "http://nciku.com/search/zh/\u0002\u00010",
+ "bc": "//www.nocoastbestcoast.com/search.php?search=\u0002\u00010",
+ "bi": "http://www.ncbi.nlm.nih.gov/gquery/?term=\u0002\u0001159",
+ "sc": "//www.ncsc.nl/zoeken?trefwoord=\u0002\u00010",
+ "vi": "http://www.nicovideo.jp/search/\u0002?track=nicouni_search_keyword\u00010",
+ "atlab": "http://ncatlab.org/nlab/show/HomePage/?q=\u0002\u00010",
+ "heap": "http://www.namecheap.com/domains/domain-name-search/results.aspx?domain=\u0002\u000110",
+ "iku": "http://www.nciku.com/search/all/\u0002\u00010",
+ "sulib": "http://search.lib.ncsu.edu/?q=\u0002\u00010"
+ },
+ "d": {
+ "b": "//www.deutsche-biographie.de/search?name=\u0002&kat=ndbadb&beruf=&orte=&geburtsjahr=&todesjahr=&gnd=&st=erw&facets=&cf=10&number=0&ot=&sl=[]&sort=\u00010",
+ "l": {
+ "a": "//ndla.no/en/search/apachesolr_search/\u0002?language[]=und&filters=1/\u00010",
+ "*": "//ndlonline.ndl.go.jp/#!/search?keyword=\u0002\u00018"
+ },
+ "*": "//onesearch.library.nd.edu/primo-explore/search?query=any,contains,\u0002&tab=onesearch&search_scope=malc_blended&vid=NDU&lang=en_US&offset=0\u000111",
+ "r": {
+ "*": "//www.ndr.de/suche10.html?query=\u0002\u00010",
+ "de": "//ndr.de/suche10.html?query=\u0002\u00010"
+ },
+ "s": "http://www.nachdenkseiten.de/?s=\u0002\u00010",
+ "ic": "http://endic.naver.com/search.nhn?query=\u0002\u000172",
+ "pr": "http://ndpr.nd.edu/search/?search_keyword=&as_sitesearch=ndpr.nd.edu&q=\u0002\u00010",
+ "tv": "http://ndtv.com/topic/\u0002\u00010",
+ "eutsch": "//www.neues-deutschland.de/suche/index.php?and=\u0002&s0_d=00&s0_m=00&s0_y=0000&s1_d=00&s1_m=00&s1_y=0000&modus=2&sort=1&searchfields%5B%5D=0&searchfields%5B%5D=1&searchfields%5B%5D=2&searchfields%5B%5D=3&searchfields%5B%5D=4&display=1&search=Suchen\u00010"
+ },
+ "*": "//duckduckgo.com/?q=\u0002&iar=news&ia=news\u00011030",
+ "e": {
+ "b": {
+ "*": "//www.neb.com/search?q=\u0002\u00010",
+ "is": "//recherche.nebis.ch/primo-explore/search?query=any,contains,\u0002&tab=default_tab&search_scope=default_scope&vid=NEBIS\u00010"
+ },
+ "d": {
+ "*": "http://ned.ipac.caltech.edu/cgi-bin/objsearch?objname=\u0002\u00010",
+ "ir": "http://nedir-sozluk.com/ara/\u0002\u00010"
+ },
+ "m": {
+ "*": "http://music.163.com/#/search/m/?s=\u0002\u00010",
+ "lig": "//www.nemlig.com/?search=\u0002\u00010"
+ },
+ "*": "http://www.newegg.com/Product/ProductList.aspx?Submit=ENE&DEPA=0&Description=\u0002\u0001113",
+ "o": {
+ "*": "//neocities.org/browse?tag=\u0002\u00010",
+ "s": "//www.neos.io/download-and-extend/packages.html?search=\u0002\u00010",
+ "4j": "//neo4j.com/?s=\u0002\u00010",
+ "win": "http://www.neowin.net/search/news?terms=\u0002\u000131"
+ },
+ "s": {
+ "e": "http://www.ne.se/sok?q=\u0002\u00010",
+ "*": "http://www.ne.se/sok?q=\u0002\u00010",
+ "dev": "http://wiki.nesdev.com/w/index.php?title=Special%3ASearch&search=\u0002&fulltext=1\u00010",
+ "tde": "http://www.nestoria.de/\u0002\u00010",
+ "tuk": "http://www.nestoria.co.uk/\u0002 \u00010"
+ },
+ "t": {
+ "i": "http://www.neti.ee/cgi-bin/otsing?src=web&query=\u0002 \u00010",
+ "*": "//www.netflix.com/search?q=\u0002\u0001527",
+ "acad": "//www.netacad.com/search/node/\u0002\u00010",
+ "api": "//docs.microsoft.com/dotnet/api/?term=\u0002\u00013",
+ "bsd": {
+ "*": "http://www.google.com/cse?cx=006277936787196004968:mbdhrauy1wm&q=guide&oq=guide&gs_l=partner.12...0.0.1.52071.0.0.0.0.0.0.0.0..0.0.gsnos%2Cn%3D13..0.0.0jj1..1ac.#gsc.tab=0&gsc.q=\u0002&gsc.page=1\u00010",
+ "man": "http://man.netbsd.org/man/\u0002\u00010"
+ },
+ "core2api": "//docs.microsoft.com/en-us/dotnet/api/?view=netcore-2.0&term=\u0002\u00010",
+ "craft": "http://toolbar.netcraft.com/site_report?url=\u0002\u00010",
+ "flix": {
+ "*": "//www.netflix.com/search?q=\u0002\u0001527",
+ "dvd": "//dvd.netflix.com/Search?v1=\u0002\u00015"
+ },
+ "gear": "http://netgear.com/Search.aspx?q=\u0002\u00010",
+ "hack": "http://nethackwiki.com/mediawiki/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000150",
+ "lingo": "http://www.netlingo.com/search.php?searchtxt=\u0002\u00010",
+ "olink": "//netolink.com/?s=\u0002\u00010",
+ "onnet": "//www.netonnet.no/Search?query=\u0002\u00010",
+ "runner": "http://netrunnerdb.com/find/?q=\u0002\u00010",
+ "src": "http://referencesource.microsoft.com/#q=\u0002\u00010",
+ "timarkkina": "//www.nettimarkkina.com/haku?tag_cld=Y&site=A&status_typeF=F&status_typeR=R&status_typeP=P&search_keyword[]=\u0002&\u00010",
+ "tuts": "//code.tutsplus.com/tutorials/search/\u0002\u00010",
+ "werk": "http://networkpeople.nl/?s=\u0002\u00010",
+ "workx": "http://networkx.lanl.gov/search.html?q=\u0002&check_keywords=yes&area=default\u00013",
+ "workpeople": "http://networkpeople.nl/?s=\u0002\u00010",
+ "zpolitik": "//netzpolitik.org/?s=\u0002\u00010"
+ },
+ "ca": "http://www.newegg.ca/Product/ProductList.aspx?Submit=ENE&DEPA=0&Order=BESTMATCH&Description=\u0002&N=-1&isNodeId=1\u00018",
+ "cy": "http://necyklopedie.wikia.com/wiki/\u0002\u00010",
+ "jm": "http://www.nejm.org/search?q=\u0002&asug=\u00010",
+ "pu": "http://neptunia.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "ws": {
+ "*": "//duckduckgo.com/?q=\u0002&iar=news&ia=news\u00011030",
+ "h": "http://us.newshub.org/search/\u0002/us/all/p1\u00010",
+ "24": "//www.news24.com/search?q=\u0002\u00013",
+ "de": "//duckduckgo.com/?q=\u0002&iar=news&ia=news&kl=de-de\u00015",
+ "fr": "//duckduckgo.com/?q=\u0002&iar=news&ia=news&kl=fr-fr\u00013",
+ "mx": "//duckduckgo.com/?q=\u0002&iar=news&kl=mx-es&ia=news\u00016",
+ "yc": "http://hn.algolia.com/#!/story/forever/0/\u0002\u00014",
+ "365club": "http://news365.club/arama?q=\u0002\u00010",
+ "archive": "http://www.google.com/#q=\u0002&hl=en&tbm=nws&prmd=imvnsfd&source=lnt&tbs=ar:1&sa=X&ei=UJrnT8LwO8Sf6QGHmIjhDg&ved=0CCcQpwUoBQ&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&fp=3c6a142c5aa1edc2&biw=1366&bih=706\u000136",
+ "comau": "http://search.news.com.au/search?us=ndmnews&as=NEWS&q=\u0002\u00010",
+ "day": "http://www.newsday.com/7.25434?q=\u0002\u00010",
+ "ela": "//newsela.com/search/#/?needle=\u0002\u00013",
+ "journal": "//www.delawareonline.com/search/\u0002/\u00010",
+ "max": "http://www.google.com/custom?domains=NewsMax.com&client=pub-2932230807573228&forid=1&ie=UTF8&oe=UTF8&safe=active&cof=GALT%3A%23008000%3BGL%3A1%3BDIV%3A%23336699%3BVLC%3A663399%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3A336699%3BALC%3A0000FF%3BLC%3A0000FF%3BT%3A000000%3BGFNT%3A0000FF%3BGIMP%3A0000FF%3BLH%3A70%3BLW%3A297%3BL%3Ahttp%3A%2F%2Fwww.newsmax.com%2Fimages%2Fhome%2Fa-logo.gif%3BS%3Ahttp%3A%2F%2Fwww.newsmax.com%2F%3BLP%3A1%3BFORID%3A1%3B&sitesearch=Newsmax.com&q=\u0002\u00013",
+ "now": "http://www.newsnow.co.uk/h/?search=\u0002\u000126",
+ "tapa": "http://newstapa.org/?s=\u0002\u00010",
+ "week": "//www.newsweek.com/search/site/\u0002\u00010"
+ },
+ "xo": "//www.nexojornal.com.br/utility/search/?q=\u0002\u00010",
+ "xt": {
+ "*": "http://next-episode.net/site-search-\u0002.html\u000121",
+ "cloudapp": "//apps.nextcloud.com/?search=\u0002\u00010"
+ },
+ "crod": "http://crypt-of-the-necrodancer.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns1=1&ns2=1&ns3=1&ns4=1&ns5=1&ns6=1&ns7=1&ns8=1&ns9=1&ns10=1&ns11=1&ns12=1&ns13=1&ns14=1&ns15=1&ns110=1&ns111=1&ns828=1&ns829=1&ns1201=1#advanced\u00010",
+ "edsnest": "//www.needsnest.com/search/?search_keywords=\u0002\u00010",
+ "rdscoop": "http://www.nerdscoop.com/?s=\u0002\u00010",
+ "rdstore": "http://www.nerdstore.com.br/\u0002\u00010",
+ "rdwallet": "http://www.nerdwallet.com/search/results#q=\u0002\u00010",
+ ".se": "http://www.ne.se/s%C3%B6k/?t=uppslagsverk&q=\u0002\u00010",
+ "vakit": "//nevakit.com/ara/\u0002\u00010",
+ "wark": "http://www.newark.com/jsp/search/browse.jsp;jsessionid=HLQ02PGLEB0YKCXDUZ1G4IQ?N=0&Ntk=gensearch_001&Ntt=\u0002&Ntx=mode+matchallpartial&suggestions=false&ref=globalsearch&_requestid=285160\u00015",
+ "wegg": {
+ "*": "http://www.newegg.com/Product/ProductList.aspx?Submit=ENE&DEPA=0&Description=\u0002\u0001113",
+ "ca": "//www.newegg.ca/Product/ProductList.aspx?Submit=ENE&DEPA=0&Order=BESTMATCH&Description=\u0002&N=-1&isNodeId=1\u00017"
+ },
+ "wffr": "http://newffr.com/search.php?words=\u0002&mode=1&s_in_forum=1\u00010",
+ "wgrounds": "//www.newgrounds.com/search/summary?suitabilities=etm&terms=\u0002\u000144",
+ "whome": {
+ "*": "http://www.newhome.se/index.php?route=product/search&filter_name=\u0002\u00010",
+ "s": "//www.newhomesource.com/locationhandler?searchtext=\u0002\u00010"
+ },
+ "wport": "//www.newport.com/search/?text=\u0002\u00010",
+ "wyorker": "http://www.newyorker.com/search/q/\u0002\u00010",
+ "xpress": "//catalog.nexpresslibrary.org/cgi-bin/koha/opac-search.pl?q=\u0002 \u00010",
+ "yzen": "http://www.neyzen.com/aramasonuc.html?q=\u0002\u00010"
+ },
+ "f": {
+ "b": "//www.nfb.ca/search/#?queryString=\u0002&index=0&language=en\u00010",
+ "l": {
+ "*": "http://search.nfl.com/search/?query=\u0002\u00010",
+ "ps": "http://www.nfl.com/players/search?category=name&filter=\u0002\u00010"
+ },
+ "*": "//www.netflix.com/search?q=\u0002\u0001527",
+ "r": "//duckduckgo.com/?q=\u0002&iar=news&ia=news&kl=fr-fr\u00013",
+ "ib": "http://www.nfib.com/search/?query=\u0002\u00010",
+ "sw": "http://nfs.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "owrs": "http://www.infowars.com/?q=\u0002\u00010"
+ },
+ "g": {
+ "2": "//v2.angular.io/api?search=\u0002\u00010",
+ "4": "//angular.io/api?query=\u0002\u000143",
+ "8": "//v8.angular.io/api?search=\u0002\u00010",
+ "*": "//angular.io/api?query=\u0002\u000143",
+ "g": "http://www.newgrounds.com/portal/search/games/\u0002\u00017",
+ "r": {
+ "*": "//books.google.com/ngrams/graph?content=\u0002&year_start=1850&year_end=2009&corpus=15&smoothing=0\u00010",
+ "am": {
+ "*": "http://books.google.com/ngrams/graph?content=\u0002&year_start=1800&year_end=2000&corpus=15&smoothing=3\u000121",
+ "s": {
+ "*": "//books.google.com/ngrams/graph?content=\u0002&year_start=1800&year_end=2000\u000119",
+ "de": "//books.google.com/ngrams/graph?content=\u0002&year_start=1800&year_end=2000&corpus=20&smoothing=3\u00010"
+ }
+ }
+ },
+ "t": "http://tracking.newgistics.com/?trackingvalue=\u0002\u00010",
+ "ü": "http://www.bibleserver.com/search/NG%C3%9C/\u0002\u00010",
+ "inx": {
+ "*": "//www.nginx.com/resources/wiki/search/?q=\u0002\u00018",
+ "wiki": "http://wiki.nginx.org/Special:Search?search=\u0002&fulltext=Search\u00010"
+ }
+ },
+ "h": {
+ "d": "http://nhd.heinle.com/Definition.aspx?word=\u0002\u00010",
+ "k": "http://cgi2.nhk.or.jp/news/nsearch/query.cgi?col=news&st=1&rf=1&charset=utf-8&qt=\u0002&search.x=-318&search.y=-183\u00013",
+ "l": "http://www.nhl.com/ice/search.htm?tab=news&q=\u0002&x=0&y=0\u000133",
+ "*": "//nethackwiki.com/mediawiki/index.php?search=\u0002\u000116",
+ "s": "http://www.nhs.uk/Search/?q=\u0002\u000115",
+ "w": "//nethackwiki.com/mediawiki/index.php?search=\u0002\u000116"
+ },
+ "i": {
+ "h": {
+ "*": "//search.nih.gov/search?utf8=%E2%9C%93&affiliate=nih&query=\u0002&commit=Search&btnG.x=0&btnG.y=0&btnG=search\u000121",
+ "ongodict": "http://www.nihongodict.com/?s=\u0002\u00010"
+ },
+ "n": {
+ "a": "http://www.nina.gov.pl/searchresult?query=\u0002\u00010",
+ "*": "http://www.ninwiki.com/index.php?title=Special:Search&redirs=0&search=\u0002&fulltext=Search\u00010",
+ "ja": "http://ninjawords.com/\u0002\u00010",
+ "life": "http://www.nintendolife.com/search?q=\u0002&submit=Go\u00010",
+ "tendo": {
+ "*": "//www.nintendo.com/search/#category=all&page=1&query=\u0002\u000153",
+ "de": "//www.nintendo.de/Suche-/Suche-299117.html?q=\u0002&f=147393\u00010",
+ "life": "http://www.nintendolife.com/search?q=\u0002&submit=Go\u00010",
+ "wiki": "http://nintendo.wikia.com/wiki/Special:Search?search=\u0002\u00010"
+ }
+ },
+ "*": "http://search.ni.com/nisearch/app/main/p/bot/no/ap/global/lang/en/pg/1/q/\u0002/\u000112",
+ "s": {
+ "*": "http://www.notesinspanish.com/?s=\u0002\u00010",
+ "anyan": "http://www.nisanyansozluk.com/?k=\u0002\u000118"
+ },
+ "v": {
+ "*": "http://www.biblestudytools.com/search/?q=\u0002&s=Bibles&t=niv\u00010",
+ "l": "//images.nasa.gov/search-results?searchInput=\u0002\u00010"
+ },
+ "x": {
+ "*": "//nixos.wiki/index.php?search=\u0002\u000199",
+ "os": {
+ "*": "//nixos.wiki/index.php?search=\u0002\u000199",
+ "wiki": "//nixos.wiki/index.php?search=\u0002\u000199"
+ },
+ "course": "//discourse.nixos.org/search?q=\u0002\u000123",
+ "craft": "http://www.cyberciti.biz/faq/?s=\u0002\u00010",
+ "opt": "//nixos.org/nixos/options.html#\u0002\u0001206",
+ "pkg": {
+ "*": "//nixos.org/nixos/packages.html?query=\u0002\u0001267",
+ "s": "//nixos.org/nixos/packages.html?query=\u0002\u0001267"
+ },
+ "todon": "//masto.nixnet.xyz/@\u0002\u00010"
+ },
+ "ce": {
+ "*": "//www.nice.org.uk/search?q=\u0002\u00010",
+ "gear": "http://nicegear.co.nz/search/?q=\u0002\u00010"
+ },
+ "co": {
+ "*": "http://www.nicovideo.jp/search/\u0002\u0001656",
+ "dic": "//dic.nicovideo.jp/s/al/t/\u0002/rev_created/desc/1-\u000139",
+ "live": "//live.nicovideo.jp/search?keyword=\u0002\u00010",
+ "nico": "http://www.nicovideo.jp/search/\u0002\u0001656"
+ },
+ "fs": "//www.niferry.co.uk/?s=\u0002\u00010",
+ "if": "http://www.niif.hu/search/node/\u0002\u00010",
+ "che": "//www.niche.com/search/?q=\u0002\u000110",
+ "ebezpiecznik": "//niebezpiecznik.pl/?s=\u0002\u00010",
+ "elsen": "//www.nielsen.com/us/en/search.html?q=\u0002&sp_cs=UTF-8\u00010",
+ "euwsblad": "http://www.nieuwsblad.be/Search/Index.aspx?searchString=\u0002\u00014",
+ "fty": "//search.nifty.com/websearch/search?cflg=%E6%A4%9C%E7%B4%A2&q=\u0002\u00013",
+ "ghtbot": "//nightbot.tv/t/\u0002/commands\u00017",
+ "ice": "http://niice.co/?search=\u0002\u00010",
+ "kkei": "//r.nikkei.com/search?keyword=\u0002\u00010",
+ "kon": {
+ "*": "http://www.nikonusa.com/en/about-nikon/search.page?searchCollection=SEARCH_ALL&q=\u0002\u00010",
+ "uk": "//www.nikon.co.uk/en_GB/search.page#keywords=\u0002\u00010"
+ },
+ "mvelo": "http://kb.nimvelo.com/search?query=\u0002\u00010",
+ "rsoft": "http://www.nirsoft.net/search_freeware_result_new.html?cx=partner-pub-5286073190998405%3A5399172980&cof=FORID%3A10&ie=UTF-8&q=\u0002&sa=Search&siteurl=nirsoft.net%2F&ref=google.com%2F\u00010",
+ "trc": "http://www.nitrc.org/search/?type_of_search=group&term[]=\u0002\u00010",
+ "trome": "http://www.nitrome.com/search.php?id=\u0002&search_type=default\u00010"
+ },
+ "k": {
+ "j": "//www.biblegateway.com/quicksearch/?quicksearch=\u0002&qs_version=NKJV\u00010",
+ "*": "//norgeskart.no/#!?project=seeiendom&layers=1002,1015&zoom=4&lat=7197864.00&lon=396722.00&sok=\u0002\u000112",
+ "r": "http://krdic.naver.com/search.nhn?query=\u0002&kind=all\u00013",
+ "urier": "http://www.nordkurier.de/suche?text=\u0002\u00010"
+ },
+ "l": {
+ "a": {
+ "b": "//ncatlab.org/nlab/search?query=\u0002\u000141",
+ "*": "http://catalogue.nla.gov.au/Search/Home?lookfor=\u0002\u00010"
+ },
+ "b": "//www.bibleserver.com/text/NLB/\u0002\u00010",
+ "*": "//ncatlab.org/nlab/search?query=\u0002\u000141",
+ "r": "//newleftreview.org/search/hybrid?query=\u0002\u00010",
+ "w": {
+ "i": {
+ "*": "//nl.wikipedia.org/w/index.php?search=\u0002\u000116",
+ "ki": "//nl.wikipedia.org/wiki/Speciaal:Zoeken/\u0002\u000118"
+ },
+ "*": "http://nolife-wiki.fr/index.php?title=Spécial%3ARecherche&go=Lire&search=\u0002\u00010"
+ },
+ "de": "//translate.google.com/#view=home&op=translate&sl=nl&tl=de&text=\u0002\u00010",
+ "en": "//translate.google.com/#nl/en/\u0002\u000134",
+ "tk": "http://www.nltk.org/search.html?q=\u0002\u00010",
+ "ife": "http://www.nintendolife.com/search?q=\u0002&submit=Go\u00010",
+ "verbix": "http://www.verbix.com/webverbix/go.php?D1=24&T1=\u0002\u00010"
+ },
+ "m": {
+ "c": "//namemc.com/s?\u0002\u00010",
+ "*": "//www.nexusmods.com/search/?gsearch=\u0002&gsearchtype=mods\u000138",
+ "s": {
+ "*": "//nomanssky.gamepedia.com/index.php?title=Special:Search&search=\u0002\u00019",
+ "u": "//www.nmsu.edu/search_results.html?q=\u0002\u00010"
+ },
+ "t": "//nutrimatic.org/?q=\u0002\u00010",
+ "ap": "http://map.naver.com/?query=\u0002\u000120",
+ "legis": "//nmlegis.gov/?q=\u0002\u00010"
+ },
+ "n": {
+ "d": {
+ "b": "http://search.nndb.com/search/nndb.cgi?nndb=1&omenu=unspecified&query=\u0002\u00010",
+ "*": "//ordbok.uib.no/perl/ordbok.cgi?OPP=\u0002&ant_bokmaal=5&ant_nynorsk=5&nynorsk=+&ordbok=nynorsk\u00016"
+ },
+ "g": "//cowlevel.net/search?q=\u0002\u00013",
+ "l": "//live.nicovideo.jp/search?keyword=\u0002\u00010",
+ "*": "//www.naturalnews.com/SearchResults.asp?query=\u0002&pr=NN\u00019",
+ "s": "//seiga.nicovideo.jp/search/\u0002\u00018",
+ "umber": "http://registry.faa.gov/aircraftinquiry/NNum_Results.aspx?NNumbertxt=\u0002\u00010"
+ },
+ "p": {
+ "m": {
+ "d": "//npmjs.com/package/\u0002\u0001161",
+ "*": "//www.npmjs.com/search?q=\u0002\u0001132",
+ "s": {
+ "*": "//npmsearch.com/?q=\u0002\u00010",
+ "io": "//npms.io/search?q=\u0002\u000158",
+ "earch": "//npmsearch.com/?q=\u0002\u00010"
+ },
+ "js": "//www.npmjs.com/search?q=\u0002\u0001132",
+ "trends": "//www.npmtrends.com/\u0002\u00016"
+ },
+ "o": {
+ "*": "//www.npo.nl/zoeken?term=\u0002\u00010",
+ "z": "http://openscience.si/NaprednoIskanje.aspx?t=s&q=1:0:\u0002;\u00010"
+ },
+ "r": "http://www.npr.org/search/index.php?searchinput=\u0002&tabId=all&dateId=0&prgId=0&topicId=0\u0001147",
+ "s": "http://www.nps.gov/search/?affiliate=nps&query=\u0002\u00010",
+ "*": "//thenounproject.com/search/?q=\u0002\u000115",
+ "at": "http://www.parcs.at/npa/mmd_data_by.php?q=\u0002&btnG=Suche+starten&searchval=30000\u00010",
+ "edia": "//dic.nicovideo.jp/a/\u0002\u00015"
+ },
+ "r": {
+ "c": "http://www.nrc.nl/php/zoeken.php?cx=000950122183490940160%3Afse5ljfbq2u&q=\u0002&ie=anci&sa=&cof=FORID%3A9#449\u00010",
+ "k": {
+ "*": "//www.nrk.no/sok/?q=\u0002\u000119",
+ "r": "http://radio.nrk.no/sok?q=\u0002\u00010",
+ "tv": "http://tv.nrk.no/sok?q=\u0002\u00010"
+ },
+ "l": "//www.nrl.com/search/?keyword=\u0002&sort=Relevance\u00010",
+ "*": "//github.com/NixOS/nixpkgs/search?q=\u0002\u000130",
+ "db": "http://netrunnerdb.com/find/?q=\u0002\u00010",
+ "tq": "//www.nasdaq.com/symbol/\u0002/real-time\u000149"
+ },
+ "s": {
+ "*": "http://duckduckgo.com/?q=!safeoff+\u0002\u00014",
+ "e": "http://www.nseindia.com/gsa/search.jsp?q=\u0002\u00010",
+ "f": {
+ "*": "//safeweb.norton.com/report/show?url=\u0002\u00010",
+ "w": "//duckduckgo.com/?q=\u0002&kp=-2&ia=web\u000175"
+ },
+ "n": "//nationstates.net/nation=\u0002\u0001414",
+ "r": "//nationstates.net/region=\u0002\u000132",
+ "issues": "//nsindex.net/w/index.php?search=\u0002\u00010",
+ "uns": "//www.drworkout.fitness/?s=\u0002\u00010",
+ "wgov": "//www.nsw.gov.au/search-google/?Search=\u0002\u00010"
+ },
+ "t": {
+ "*": "//newstral.com/search/articles?&q=\u0002\u00015",
+ "s": "//www.nts.live/find?q=\u0002&type=all\u00015",
+ "v": "//www.ntv.co.jp/search/?q=\u0002\u00010",
+ "x": "//www.nutritionix.com/search?q=\u0002\u00010",
+ "el": "//www.numeroinconnu.fr/numero/\u0002\u00010",
+ "hp": "//history.newtheatre.org.uk/search/?q=\u0002\u00010",
+ "nu": "http://www.ntnu.edu/sok?query=\u0002\u00010",
+ "rs": "//ntrs.nasa.gov/?Ntt=\u0002&Ntx=mode matchallpartial&Nm=123|Collection|NASA STI||17|Collection|NACA\u00010",
+ "rans": "http://www.tritrans.net/cgibin/translate.cgi?spraak=Norsk&Fra=\u0002\u00013"
+ },
+ "u": {
+ "*": "http://www.nu.nl/zoeken/?q=\u0002 \u000121",
+ "clearthrone": "http://nuclear-throne.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "get": "http://nuget.org/packages?q=\u0002&sortOrder=package-download-count\u0001155",
+ "kepy": "//docs.thefoundry.co.uk/products/nuke/developers/80/pythondevguide/search.html?q=\u0002&check_keywords=yes&area=default\u00010",
+ "llbyte": "//null-byte.wonderhowto.com/search/\u0002 \u00010",
+ "mber": "http://numbermatics.com/n/\u0002/\u00015",
+ "merama": "http://www.numerama.com/magazine/recherche/1/\u0002/date\u00010",
+ "mista": "//en.numista.com/catalogue/index.php?r=\u0002&mode=simplifie&p=1\u00010",
+ "mpy": "http://docs.scipy.org/doc/numpy/search.html?q=\u0002&check_keywords=yes&area=default\u000197",
+ "sagates": "//nusagates.com/?s=\u0002\u00010",
+ "search": "http://nusearch.nottingham.ac.uk/primo_library/libweb/action/search.do?dscnt=0&scp.scps=scope%3A%28UNUK%29%2Cscope%3A%28unuk_pda_ebl%29&frbg=&tab=default_tab&dstmp=1430162925299&srt=rank&ct=search&mode=Basic&dum=true&indx=1&tb=t&vl(freeText0)=\u0002&fn=search&vid=UNUK\u00010",
+ "tridata": "http://nutritiondata.self.com/foods-\u0002}000000000000000000000.html\u00010",
+ "tritiondata": "http://nutritiondata.self.com/foods-\u0002000000000000000000000.html\u00010",
+ "tritionfacts": "//nutritionfacts.org/?s=\u0002\u00010",
+ "uvem": "//www.nuuvem.com/catalog/search/\u0002\u00010"
+ },
+ "v": {
+ "d": {
+ "e": "//dict.naver.com/dekodict/#/search?query=\u0002\u00010",
+ "*": "//nvd.nist.gov/vuln/search/results?form_type=Basic&results_type=overview&query=\u0002&search_type=all\u000127",
+ "s": "//nvd.nist.gov/vuln/search/results?form_type=Basic&results_type=overview&query=\u0002&search_type=all\u000127"
+ },
+ "i": {
+ "*": "//search.naver.com/search.naver?sm=tab_hty.top&where=image&query=\u0002\u00010",
+ "dia": "//duckduckgo.com/?q=\u0002+site%3Anvidia.com&ia=web\u00015"
+ },
+ "*": "http://m.search.naver.com/search.naver?query=\u0002):\u000156",
+ "u": "http://www.novelupdates.com/?s=\u0002&post_type=seriesplans\u000120",
+ "enkr": "//papago.naver.com/?sk=en&tk=ko&hn=0&st=\u0002\u00010",
+ "krjp": "//papago.naver.com/?sk=ko&tk=ja&st=\u0002\u00010",
+ "wiki": "http://nightvale.wikia.com/wiki/Special:Search?search= \u0002&fulltext=Search\u00010"
+ },
+ "w": {
+ "b": "//webbook.nist.gov/cgi/cbook.cgi?Name=\u0002&Units=SI\u00010",
+ "*": "http://ninjawords.com/\u0002\u00010",
+ "n": "http://nwn.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "s": "http://forecast.weather.gov/zipcity.php?inputstring=\u0002\u0001235",
+ "vault": "//neverwintervault.org/search/node/\u0002\u00010"
+ },
+ "x": {
+ "i": {
+ "m": "//m.nextinpact.com/rechercher?term=\u0002\u00010",
+ "*": "http://www.nextinpact.com/recherche?_search=\u0002\u00019"
+ },
+ "*": "http://networkx.lanl.gov/search.html?q=\u0002&check_keywords=yes&area=default\u00013"
+ },
+ "11": "http://www.n11.com/arama?q=\u0002\u000119",
+ "24": "http://www.news24.com/search?q=\u0002\u00010",
+ "oi": {
+ "*": "http://www.noi.cn/search.html?q=\u0002\u00010",
+ "ta": "//noita.gamepedia.com/\u0002\u00016",
+ "seless": "http://pasokatu.com/nsearch#gsc.q=\u0002\u00015"
+ },
+ "os": {
+ "*": "//nos.nl/zoeken/?q=\u0002\u0001101",
+ "cript": "//duckduckgo.com/html/?q=\u0002\u000167",
+ "deputes": "//www.nosdeputes.fr/recherche/\u0002\u00010",
+ "livres": "http://noslivres.net/?r=\u0002\u00010"
+ },
+ "oz": "//www.noz.de/suche/?q=\u0002\u00010",
+ "yt": {
+ "c": "//cooking.nytimes.com/search?q=\u0002\u00010",
+ "*": "http://query.nytimes.com/search/sitesearch?query=\u0002&srchst=cse\u0001680",
+ "o": "//www.nytimes3xbfgragh.onion/search?query=\u0002\u00014",
+ "imes": "//www.nytimes.com/search?query=\u0002\u000149"
+ },
+ "zf": "//nzf.org.nz/Search/Results?term=\u0002\u00010",
+ "zz": "http://www.nzz.ch/suche?form%5Bq%5D=\u0002\u00010",
+ "jalla": "//njal.la/list/?search=\u0002\u000119",
+ "juskalo": "//www.njuskalo.hr/?ctl=search_ads&keywords=\u0002\u000134",
+ "oaa": "http://forecast.weather.gov/zipcity.php?inputstring=\u0002\u0001235",
+ "ode": {
+ "*": "http://nodejs.org/api/\u0002.html\u0001222",
+ "js": "//duckduckgo.com/?q=!node+\u0002\u000132"
+ },
+ "oel": "//www.noelleeming.co.nz/search.html?q=\u0002\u00010",
+ "oen": "//translate.google.com/#no/en/\u0002\u000124",
+ "ofap": "//www.reddit.com/r/NoFap/search/?q=\u0002&restrict_sr=1\u00018",
+ "ohu": "//translate.google.hu/#view=home&op=translate&sl=no&tl=hu&text=\u0002\u00010",
+ "ojs": "//duckduckgo.com/html/?q=\u0002\u000167",
+ "olo": "//www.nolo.com/search2?type=all&query=\u0002&location=\u00010",
+ "omad": "//nomadlist.com/?q=\u0002\u00010",
+ "ominatim": "http://nominatim.openstreetmap.org/search?q=\u0002\u00010",
+ "omnom": "//nomnompaleo.com/?s=\u0002\u00010",
+ "onciclopedia": "http://nonciclopedia.wikia.com/index.php?title=Speciale%3ARicerca&search=\u0002&go=Vai\u00010",
+ "ook": "http://nookipedia.com/w/index.php?title=Special%3ASearch&search=\u0002\u000139",
+ "oodle": "//www.noodlechinese.com/search?q=\u0002 \u00010",
+ "orid": "http://www.norid.no/index.html?charset=UTF-8&page=index&sok=Søk&query=\u0002\u00010",
+ "orsk": "http://ordbok.uib.no/perl/ordbok.cgi?OPP=\u0002&ant_bokmaal=5&ant_nynorsk=5&begge=+&ordbok=begge\u000149",
+ "ordicnames": "//www.nordicnames.de/w/index.php?title=Special%3ASearch&search=\u0002\u00010",
+ "ordstrom": "http://shop.nordstrom.com/sr?origin=keywordsearch&keyword=\u0002\u00010",
+ "ortonsafe": {
+ "*": "//safeweb.norton.com/report/show?url=\u0002\u00010",
+ "web": "//safeweb.norton.com/report/show?url=\u0002\u00010"
+ },
+ "ote": {
+ "*": "//note.mu/search?context=note&mode=search&q=\u0002\u000119",
+ "flight": "http://www.noteflight.com/public_scores#/search/\u0002\u00010",
+ "vil": "http://hss3uro2hsxfogfq.onion/index.php?q=\u0002\u00010"
+ },
+ "otalwaysright": "http://notalwaysright.com/?s=\u0002\u00010",
+ "otdoppler": "http://www.notdoppler.com/search.php?cx=partner-pub-5587930311934766%3A9473942733&cof=FORID%3A9&ie=UTF-8&q=\u0002&sa=Search\u00010",
+ "oticiados": "http://noticiados.net/blog/buscar/?query=\u0002\u00010",
+ "oun": {
+ "*": "//thenounproject.com/search/?q=\u0002\u000115",
+ "project": "http://thenounproject.com/search/?q=\u0002\u00010"
+ },
+ "ovelupdates": "http://www.novelupdates.com/?s=\u0002&post_type=seriesplans\u000120",
+ "overbix": "http://www.verbix.com/webverbix/go.php?D1=25&T1=\u0002\u00010",
+ "ovinky": "http://www.novinky.cz/hledej?w=\u0002\u00010",
+ "-tv": "http://www.n-tv.de/suche/?a=search&at=all&q=\u0002&submit=Suche starten\u00010",
+ "yheteridag": "//nyheteridag.se/?s=\u0002\u00010",
+ "ypl": "//browse.nypl.org/iii/encore/search/C__S\u0002__Orightresult__U?lang=eng\u000111",
+ "ypost": "//nypost.com/search/\u0002/\u000166",
+ "yrb": "http://www.nybooks.com/search/?s=\u0002&option_match=&year_after=1963&year_before=2017&type=all&orderby=relevance\u00010",
+ "yse": "//www.nyse.com/quote/XNYS:\u0002\u00018",
+ "zlibraries": "//tepuna.on.worldcat.org/external-search?queryString=\u0002\u00010",
+ "zqa": {
+ "*": "//search.nzqa.govt.nz/apps/search/?q=\u0002\u00010",
+ "s": "//www.nzqa.govt.nz/ncea/assessment/view-detailed.do?standardNumber=\u0002\u00010"
+ }
+ },
+ "ㄴ": "//search.naver.com/search.naver?query=\u0002\u00011144",
+ "o": {
+ "2": "//www.o2.co.uk/shop/\u0002\u00010",
+ "b": {
+ "a": "http://onlinebooks.library.upenn.edu/webbin/book/search?author=\u0002&amode=words\u00010",
+ "b": "http://bible.oremus.org/?passage=\u0002\u00010",
+ "d": "http://engine-codes.com/search_codes.php?q=\u0002\u00010",
+ "i": {
+ "*": "//www.obi.de/decom/search/\u0002\u000112",
+ "at": "//www.obi.at/searchresult/?isi=true&searchTerm=\u0002\u00014"
+ },
+ "*": "//openbuilds.com/search/49203883/?q=\u0002\u00010",
+ "s": {
+ "*": "//build.opensuse.org/search?search_text=\u0002 \u000118",
+ "py": {
+ "*": "http://docs.obspy.org/search.html?q=\u0002\u00010",
+ "dev": "http://docs.obspy.org/master/search.html?q=\u0002\u00010"
+ },
+ "ervador": "http://observador.pt/pesquisa/?q=\u0002\u00010"
+ },
+ "razky": "//www.obrazky.cz/?q=\u0002\u00010"
+ },
+ "c": {
+ "a": {
+ "l": "http://www.openclipart.org/search/?query=\u0002\u00010",
+ "*": "http://www.openclipart.org/search/?query=\u0002\u00010",
+ "t": "//www.overclockers.at/search.php?action=simplesearch&query=\u0002\u00010",
+ "do": "//www.ocado.com/webshop/getSearchProducts.do?entry=\u0002\u000116",
+ "ml": {
+ "*": "http://caml.inria.fr/pub/docs/manual-ocaml/libref/\u0002.html\u000115",
+ "oscope": "//camlspotter.github.io/ocamloscope.html?q=\u0002\u00010"
+ },
+ "mod": "//odoo-community.org/shop?search=\u0002\u00010"
+ },
+ "c": {
+ "*": "//openclassrooms.com/courses?q=\u0002\u00010",
+ "uprint": "http://occuprint.org/?action=search&q=\u0002 \u00010"
+ },
+ "o": "//camlspotter.github.io/ocamloscope.html?q=\u0002\u00010",
+ "*": "//openclassrooms.com/courses?q=\u0002\u00010",
+ "s": "//www.opendesktop.org/search?projectSearchText=\u0002\u00010",
+ "w": "http://search.mit.edu/search?site=ocw&client=mit&output=xml_no_dtd&proxystylesheet=http://ocw.mit.edu/search/google-ocw.xsl&proxyreload=1&q=\u0002\u00010",
+ "lc": "//www.worldcat.org/search?q=\u0002\u00018",
+ "na": "//www.opencaching.us/search.php?searchto=searchbyname&showresult=1&expert=0&output=HTML&sort=bydistance&f_inactive=0&f_ignored=0&f_userfound=0&f_userowner=0&f_watched=0&f_geokret=0&cachename=https://www.opencaching.us/search.php?searchto=searchbyname&showresult=1&expert=0&output=HTML&sort=bydistance&f_inactive=0&f_ignored=0&f_userfound=0&f_userowner=0&f_watched=0&f_geokret=0&cachename=\u0002&submit=Search&submit=Search\u00010",
+ "to": {
+ "*": "//octopart.com/search?q=\u0002\u0001184",
+ "part": "//octopart.com/search?q=\u0002\u0001184"
+ },
+ "uk": "http://overclockers.co.uk/search_results.php?keywords=\u0002\u00019",
+ "doc": "//ocdoc.cil.li/doku.php?id=start&do=search&q=\u0002\u00010",
+ "register": "http://www.ocregister.com/search/?q=\u0002&x=0&y=0\u00010",
+ "remix": "http://ocremix.org/quicksearch/remix/?qs_query=\u0002\u00010",
+ "ulus": "//www.oculus.com/experiences/go/search/?q=\u0002\u00010"
+ },
+ "d": {
+ "b": "//odb.org/search?q=\u0002\u00010",
+ "d": "//theodd1sout.com/search?q=\u0002\u00010",
+ "*": "http://oxforddictionaries.com/definition/english/\u0002?q=\u0002\u000120",
+ "s": "http://public.opendatasoft.com/explore/dataset/european-train-stations/?q=\u0002\u00010",
+ "eu": "//data.europa.eu/euodp/en/data/dataset?q=\u0002\u00010",
+ "ic": "//en.oxforddictionaries.com/search?utf8=%E2%9C%93&filter=dictionary&query=\u0002\u00013",
+ "nb": "http://www.oxforddnb.com/search?q=\u0002\u00010",
+ "oo": "//www.odoo.com/apps?search=\u0002\u00010",
+ "ota": "//www.opendota.com/search?q=\u0002\u00010",
+ "piralni": "http://odpiralnicasi.com/spots?utf8=✓&q=\u0002\u00010"
+ },
+ "f": {
+ "f": {
+ "*": "http://world.openfoodfacts.org/cgi/search.pl?search_terms=\u0002\u00010",
+ "erteinternet": "//www.offerteinternet.net/?s=\u0002\u00010",
+ "icedepot": "http://www.officedepot.com/catalog/search.do?Ntt=\u0002\u00014",
+ "icefurniture": "//www.office-furniture-direct.co.uk/search?query=\u0002\u00010",
+ "line": "http://www.downforeveryoneorjustme.com/\u0002\u00010",
+ "liberty": "http://offliberty.com/#\u0002\u00010"
+ },
+ "l": "http://openfontlibrary.org/en/search?query=\u0002\u00010",
+ "*": "//duckduckgo.com/?q=\u0002+site%3Ahttp%3A%2F%2Fforum.openframeworks.cc\u00014",
+ "db": "http://www.ofdb.de/view.php?SText=\u0002&Kat=All&page=suchergebnis\u000114"
+ },
+ "g": {
+ "a": "http://opengameart.org/art-search?keys=\u0002\u00019",
+ "l": {
+ "*": "//www.outdoorgearlab.com/search.php?ftr=\u0002\u00010",
+ "asnik": "//www.oglasnik.hr/search?q=\u0002&category_id=\u00010",
+ "obo": "//oglobo.globo.com/busca/?q=\u0002\u00010"
+ },
+ "*": "//duckduckgo.com/?q=\u0002+site%3Aomniglot.com\u000116",
+ "s": "//forums.online-go.com/search?q=\u0002\u00013",
+ "db": "http://ogdb.eu/index.php?section=simplesearchresults&searchstring=\u0002\u00010",
+ "js": "//www.oilandgasjobsearch.com/Oil-and-Gas-Jobs/Search/\u0002\u00010",
+ "ol": "http://www.ogol.com.br/search.php?inputString=\u0002\u00010"
+ },
+ "h": {
+ "m": {
+ "*": "http://orbithangar.com/advsearch.php?text=\u0002\u00010",
+ "ygear": "//ohmygear.net/en/search/\u0002\u00010"
+ },
+ "*": "//www.openhub.net/p?q=\u0002\u00010",
+ "r": "http://rpg.hamsterrepublic.com/ohrrpgce/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "loh": "//www.ohloh.net/search?q=\u0002\u00010",
+ "norobot": "http://www.ohnorobot.com/index.php?s=\u0002&Search=Search&comic=\u00010"
+ },
+ "i": {
+ "d": "http://www.oid-info.com/cgi-bin/display?oid=\u0002&submit=Display&action=display\u00010",
+ "*": "http://oxfordindex.oup.com/search?q=\u0002\u00013",
+ "landgas": "//www.oilandgasjobsearch.com/Oil-and-Gas-Jobs/Search/\u0002\u00010",
+ "seaux": "http://www.oiseaux.net/search/?q=\u0002\u00010"
+ },
+ "l": {
+ "e": "http://buscador.ole.com.ar/\u0002\u00010",
+ "*": "http://search.oregonlive.com/\u0002\u00014",
+ "x": {
+ "*": "//www.olx.pl/oferty/q- \u0002/\u0001124",
+ "ar": "//www.olx.com.ar/nf/search/\u0002\u00010",
+ "bb": "//bahiablanca.olx.com.ar/nf/search/\u0002\u00010",
+ "bg": "//www.olx.bg/ads/?q=\u0002\u00010",
+ "br": "http://www.olx.com.br/brasil?q=\u0002\u000124",
+ "df": "//df.olx.com.br/?q=\u0002\u00010",
+ "id": "//m.olx.co.id/all-results/q-\u0002 \u00010",
+ "in": "//www.olx.in/?\u0002\u00010",
+ "lb": "//olxliban.com/en/ads/q-\u0002\u00010",
+ "ph": "//www.olx.ph/all-results?q=\u0002\u00010",
+ "pl": "http://olx.pl/oferty/q-\u0002/\u000110",
+ "pt": "//www.olx.pt/ads/q-\u0002\u000132",
+ "ro": "//www.olx.ro/ads/?q=\u0002\u000110",
+ "ua": "http://olx.ua/uk/list/q-\u0002/\u000127",
+ "poland": "http://olx.pl/oferty/q-\u0002/\u000110"
+ },
+ "ad": "//www.oxfordlearnersdictionaries.com/definition/american_english/\u0002\u00014",
+ "am": "http://olam.in/Dictionary/en_ml/\u0002 \u000114",
+ "dv": {
+ "*": "http://www.oldversion.com/search?query=\u0002\u00010",
+ "ersion": "http://www.oldversion.com/search?query=\u0002\u00010"
+ },
+ "ib": {
+ "*": "http://openlibrary.org/search?q=\u0002\u00010",
+ "text": "//openlibrary.org/search/inside?q=\u0002\u00010"
+ },
+ "th": "http://www.onelook.com/reverse-dictionary.shtml?s=\u0002\u00010",
+ "dapps": "http://www.oldapps.com/betasearch.php?cx=007779823686351122034%3Ai7o_lb6edjm&cof=FORID%3A9&ie=UTF-8&q=\u0002&siteurl=\u00013",
+ "dcpan": "http://search.cpan.org/search?query=\u0002&mode=all\u00010",
+ "dred": {
+ "*": "//old.reddit.com/search?q=\u0002\u0001174",
+ "dit": "//old.reddit.com/search?q=\u0002\u0001174"
+ },
+ "iverse": "//oliverse.ch/?search=\u0002\u00013",
+ "ivetti": "//www.dizionario-italiano.it/dizionario-italiano.php?parola=\u0002\u00014"
+ },
+ "n": {
+ "*": "//www.ontario.ca/search/search-results?query=\u0002\u00014",
+ "i": {
+ "*": "http://oxygennotincluded.gamepedia.com/index.php?search=\u0002\u000134",
+ "on": "http://www.theonion.com/search/?q=\u0002\u000153"
+ },
+ "m": "//www.nexusmods.com/oblivion/search/?gsearch=\u0002&gsearchtype=mods\u00010",
+ "r": "http://www.ohnorobot.com/index.php?s=\u0002&Search=Search&comic=\u00010",
+ "s": {
+ "*": "//www.ons.gov.uk/search?q=\u0002\u00010",
+ "hape": "//cad.onshape.com/documents?resourceType=filter&nodeId=1&column=modifiedAt&order=desc&viewMode=0&q=\u0002\u00010"
+ },
+ "bit": "//www.onbit.pt/catalogsearch/result/?q=\u0002\u00010",
+ "cyclo": "http://oncyclopedia.org/wiki/Speciaal:Zoeken?search=\u0002&go=Zoeken\u00010",
+ "darock": "http://www.ondarock.it/websearch.php?domains=www.ondarock.it&q=\u0002&sitesearch=www.ondarock.it&client=pub-4895368002735382&forid=1&ie=ISO-8859-1&oe=ISO-8859-1&cof=GALT%3A%23117dd2%3BGL%3A1%3BDIV%3A%23FFFFFF%3BVLC%3A7292ab%3BAH%3Acenter%3BBGC%3AFFFFFF%3BLBGC%3AFFFFFF%3BALC%3A0569b7%3BLC%3A0569b7%3BT%3A191919%3BGFNT%3A73baf2%3BGIMP%3A73baf2%3BFORID%3A11&hl=it\u00010",
+ "ecard": "//onecard.network/client/en_AU/sapubliclibraries/search/results?qu=\u0002\u00010",
+ "edrive": "//onedrive.live.com/#qt=search&q=\u0002\u000166",
+ "eill": "http://us.oneill.com/shop/search/?q=\u0002\u00010",
+ "elook": {
+ "*": "http://onelook.com/?w=\u0002\u000140",
+ "r": "http://onelook.com/?w=*&loc=revfp2&clue=\u0002\u00013",
+ "th": "http://www.onelook.com/reverse-dictionary.shtml?s=\u0002\u00010"
+ },
+ "epiece": "http://onepiece.wikia.com/wiki/Special:Search?search=\u0002\u000110",
+ "estopenglish": "http://www.onestopenglish.com/searchResults.aspx?keywords=\u0002\u00010",
+ "goal": "//ongoal.se/search?type=article%2Cpage%2Cproduct&q=\u0002*\u00010",
+ "linelinkscan": "http://onlinelinkscan.com/results/\u0002\u00014",
+ "orsk": "http://www.perseus.tufts.edu/hopper/morph?l=\u0002&la=non\u00010",
+ "vista": "http://www.onvista.de/suche/?onvHeaderSearchBoxAction=true&searchValue=\u0002\u000146",
+ "zetaal": "//onzetaal.nl/zoekresultaten/?q=\u0002\u00010"
+ },
+ "o": {
+ "c": "//outof.cards/search/?query=\u0002\u00010",
+ "*": "//www.otto-office.com/de/app/search/index?query[query]=\u0002\u00010",
+ "tl": "//www.reddit.com/r/OutOfTheLoop/search?q=\u0002&restrict_sr=on\u00010",
+ "tv": "http://www.imperialassembly.com/oracle/?quicksearch=1&search_13=\u0002\u00010",
+ "lone": "http://www.oolone.com/?search=\u0002\u00010"
+ },
+ "*": "http://onelook.com/?w=\u0002&ls=a\u0001171",
+ "p": {
+ "c": "http://fr.openclassrooms.com/recherche/?search=\u0002\u00010",
+ "g": {
+ "g": {
+ "*": "http://www.op.gg/summoner/userName=\u0002\u000174",
+ "na": "http://na.op.gg/summoner/userName=\u0002\u000134",
+ "euw": "http://euw.op.gg/summoner/userName=\u0002\u000125"
+ },
+ "*": "http://www.op.gg/champion/\u0002\u0001135"
+ },
+ "*": "//openplaques.org/search?utf8=%E2%9C%93&phrase=\u0002\u00014",
+ "q": "http://checklists.opquast.com/fr/opquastv2?q=\u0002 \u00010",
+ "am": "http://duckduckgo.com/?q=\u0002+site:https://opam.ocaml.org/packages\u00017",
+ "br": "http://br.op.gg/summoner/userName=\u0002\u00010",
+ "na": "http://na.op.gg/summoner/userName=\u0002\u000134",
+ "ru": "http://ru.op.gg/summoner/userName=\u0002\u00010",
+ "tr": "http://tr.op.gg/summoner/userName=\u0002\u00010",
+ "acp": "//opac.ub.uni-potsdam.de/DB=1/SET=4/TTL=1/CMD?ACT=SRCHA&IKT=1016&SRT=YOP&TRM=\u0002\u00010",
+ "achu": "//hu-berlin.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&search_scope=default_scope&displayField=all&pcAvailabiltyMode=false&dum=true&vid=hub_ub&displayMode=full&bulkSize=30&mode=Basic&tab=default_tab&highlight=true&institution=HUB_UB&sortby=rank&lang=de_DE\u00016",
+ "achgw": "//lhgrw.gbv.de/DB=1/SET=18/TTL=1/CMD?ACT=SRCHA&IKT=1016&SRT=YOP&TRM=\u0002\u00010",
+ "encv": "http://docs.opencv.org/3.0-last-rst/search.html?q=\u0002\u00014",
+ "enga": "http://opengameart.org/art-search?keys=\u0002\u00019",
+ "enbadges": "//openbadges.it/search/\u0002 \u00010",
+ "enbox": "http://openbox.org/wiki/Special:Search?search=\u0002\u00013",
+ "enbsd": {
+ "*": "http://man.openbsd.org/?query=\u0002\u000161",
+ "man": "http://man.openbsd.org/?query=\u0002&apropos=0&sec=0&arch=default&manpath=OpenBSD-current\u000175",
+ "misc": "http://marc.info/?l=openbsd-misc&w=2&r=1&s=\u0002&q=b\u00010",
+ "ports": "//marc.info/?l=openbsd-ports&w=2&r=1&s=\u0002&q=b\u00010"
+ },
+ "enclipart": "http://openclipart.org/search/?query=\u0002\u00010",
+ "encomp": "//www.opencompanies.nl/zoekresultaten?q=\u0002\u00010",
+ "enculture": "//duckduckgo.com/?q=site%3Aopenculture.com+\u0002\u00010",
+ "endesktop": "//www.opendesktop.org/search?projectSearchText=\u0002\u00010",
+ "endns": "http://www.opendns.com/search/?s=\u0002\u00010",
+ "endota": "//www.opendota.com/search?q=\u0002\u00010",
+ "enfont": "http://openfontlibrary.org/en/search?query=\u0002\u00010",
+ "enfreax": "http://open-freax.fr/?s=\u0002\u00010",
+ "englwiki": "//www.khronos.org/opengl/wiki_opengl/index.php?search=\u0002\u00010",
+ "enhours": "//openhours.dk/spots?utf8=%E2%9C%93&q=\u0002\u00010",
+ "enhub": "//www.openhub.net/p?query=\u0002&sort=relevance\u00010",
+ "enings": "http://openings.moe/list/?s=\u0002\u00010",
+ "enlib": {
+ "*": "//openlibra.com/en/collection/search/term/\u0002/\u00010",
+ "rary": "http://openlibrary.org/search?q=\u0002\u00010"
+ },
+ "enlistings": "//www.openlistings.co/s/\u0002 \u00010",
+ "enmaps": "//www.openstreetmap.org/search?query=\u0002\u000145",
+ "ennet": "http://www.opennet.ru/search.shtml?exclude=index%7C%2Fman.shtml&words=\u0002\u00010",
+ "enparl": "//openparliament.ca/search/?q=\u0002\u00010",
+ "enports": "http://openports.se/search.php?so=\u0002\u000117",
+ "enprocessing": "http://www.openprocessing.org/search/?q=\u0002\u00010",
+ "enradar": "http://openradar.appspot.com/search?query=\u0002\u00010",
+ "enrent": "//www.openrent.co.uk/properties-to-rent/\u0002\u00013",
+ "enrepos": "//openrepos.net/search/node/\u0002\u00010",
+ "enrice": "http://www.openrice.com/zh/hongkong/restaurant/sr1.htm?tc=sr1quick&s=1&region=0&inputstrwhat=\u0002&inputstrwhere=\u00015",
+ "ensecrets": "http://www.opensecrets.org/usearch/?q=\u0002\u00010",
+ "ensource": "//opensource.com/sitewide-search?search_api_views_fulltext=\u0002\u00010",
+ "enstax": "//cnx.org/search?q=\u0002\u00010",
+ "enstreet": {
+ "*": "http://www.openstreetmap.org/?query=\u0002\u000195",
+ "map": {
+ "*": "http://www.openstreetmap.org/?query=\u0002\u000195",
+ "wiki": "//wiki.openstreetmap.org/wiki/Special:Search?search=\u0002&go=Go\u00010"
+ }
+ },
+ "ensuse": {
+ "*": "http://en.opensuse.org/Special:Search?search=\u0002\u00016",
+ "software": "http://software.opensuse.org/search?q=\u0002\u00016"
+ },
+ "enthebox": "//openthebox.be/search?q=\u0002&v=t\u00010",
+ "enuni": "http://search.open.ac.uk/public/search/results?q=\u0002\u00010",
+ "enuserjs": "//openuserjs.org/?q=\u0002\u00010",
+ "era": {
+ "*": "//addons.opera.com/addons/extensions/?query=\u0002\u00016",
+ "ext": "//addons.opera.com/addons/extensions/?query=\u0002&order=new&top=0\u00010"
+ },
+ "euw": "http://euw.op.gg/summoner/userName=\u0002\u000125",
+ ".gg": "http://www.op.gg/summoner/userName=\u0002\u000174",
+ "las": "http://las.op.gg/summoner/userName=\u0002\u00010",
+ "oce": "http://oce.op.gg/summoner/userName=\u0002\u00010",
+ "ood": "//www.oomipood.ee/product/search?q=\u0002\u00010",
+ "skins": "//opskins.com/index.php?search_item=\u0002&min=&max=&grade=Grade&type=Type&sort=f&loc=shop_search\u00010",
+ "ticsplanet": "//www.opticsplanet.com/s/\u0002\u00016",
+ "timot": "http://aplicacions.llengua.gencat.cat/llc/AppJava/index.html?action=Principal&method=cerca_generica&input_cercar=\u0002&tipusCerca=cerca.tot\u00016",
+ "toma": "//www.optomaeurope.com/search?query=\u0002\u00010",
+ "tus": "//www.optus.com.au/customercentre/search?query=\u0002\u00010",
+ "ussoftware": "http://www.opus-software.com.br/?s=\u0002\u00010"
+ },
+ "r": {
+ "d": {
+ "*": "//ne.ord.se/ordbok/svenska/engelska/s%C3%B6k/\u0002\u00013",
+ "fr": "http://www.ord.se/oversattning/franska/?s=\u0002&l=FRASVE\u00010",
+ "sv": "http://www.ord.se/oversattning/Svenska/?s=\u0002&l=SVESVE\u00010",
+ "bog": {
+ "*": "//beta.ordbogen.com/da/search#/\u0002\u00017",
+ "en": "http://www.ordbogen.com/opslag.php?word=\u0002&dict=auto\u000110"
+ },
+ "bok": "http://ordbok.uib.no/perl/ordbok.cgi?OPP=+\u0002&ant_bokmaal=5&ant_nynorsk=5&begge=+&ordbok=begge\u000163",
+ "guru": "//www.ordguru.se/synonymer/sök?q=\u0002\u00010",
+ "net": {
+ "*": "http://ordnet.dk/ddo/ordbog?query=\u0002\u00010",
+ "t": "//www.ordnett.no/search?language=no&phrase=\u0002\u00010",
+ ".dk": "http://ordnet.dk/ddo/ordbog?query=\u0002+&search=S%C3%B8g\u00010"
+ }
+ },
+ "e": {
+ "d": "//old.reddit.com/search?q=\u0002&sort=relevance&t=all\u00011030",
+ "*": "//ore.spongepowered.org/?q=\u0002\u00014",
+ "ll": "//www.orellfuessli.ch/suche?utf8=%E2%9C%93&filterPATHROOT=&sq=\u0002\u00010",
+ "gon": "//duckduckgo.com/?q=\u0002+site%3Atheoregoncoast.info\u00010",
+ "illy": {
+ "*": "http://search.oreilly.com/?q=\u0002\u00010",
+ "auto": "//www.oreillyauto.com/search/?q=\u0002\u00010"
+ }
+ },
+ "f": {
+ "o": {
+ "*": "http://www.orfoqrafiya.az/aze/\u0002\u00010",
+ "qrafiya": "http://www.orfoqrafiya.az/aze/?q=\u0002\u00010"
+ },
+ "*": "http://tvthek.orf.at/search?q=\u0002\u00010"
+ },
+ "g": "//duckduckgo.com/?q=site:http://orgmode.org/manual/+\u0002\u00010",
+ "*": "//or.justice.cz/ias/ui/rejstrik-$firma?jenPlatne=PLATNE&nazev=\u0002&polozek=50&typHledani=STARTS_WITH\u00019",
+ "s": "//old.reddit.com/r/\u0002/\u0001891",
+ "u": "//www.oru.se/funktioner/sokresultat/?query=\u0002\u00010",
+ "ly": "//learning.oreilly.com/search/?query=\u0002\u000133",
+ "ms": "//www.ormsdirect.co.za/catalogsearch/result/index/?q=\u0002\u00010",
+ "acle": "//www.oracle.com/search/results?Ntt=\u0002&Dy=1&Nty=1&Ntk=SI-ALL5\u00013",
+ "adocs": "//docs.oracle.com/apps/search/search.jsp?q=\u0002\u00010",
+ "cid": "//orcid.org/orcid-search/quick-search?searchQuery=\u0002 \u000114",
+ "iantnu": "//bibsys-almaprimo.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&tab=default_tab&search_scope=default_scope&vid=NTNU_UB&lang=no_NO&offset=0\u00010",
+ "igin": "//www.origin.com/en-us/store/browse?q=\u0002\u00014",
+ "ing": "http://www.theoringstore.com/index.php?main_page=advanced_search_result&search_in_description=1&keyword=\u0002\u00010",
+ "thodoxwiki": "http://orthodoxwiki.org/index.php?title=Special%3ASearch&search=\u0002\u00010",
+ "thonet": "http://orthonet.sdv.fr/php/rech_mot.php?mot=\u0002&x=0&y=0\u00010"
+ },
+ "s": {
+ "a": {
+ "a": "http://osaa.dk/wiki/index.php?title=Speciel%3ASearch&search=\u0002&go=Gå+til\u00010",
+ "*": "//www.osapublishing.org/search.cfm?q=\u0002\u00010",
+ "lt": "//osalt.com/search?q=\u0002\u00010"
+ },
+ "c": "//oscobo.co.uk/search.php?q=\u0002\u00013",
+ "f": "//osf.io/search/?q=\u0002\u00010",
+ "i": "http://opensource.org/search/node/\u0002\u00014",
+ "l": {
+ "*": "//libraries.io/search?q=\u0002\u000115",
+ "o": "//www.oslo.kommune.no/sokeresultater/?q=\u0002\u00010",
+ "ri": "//encore.oslri.net/iii/encore/search?target=\u0002\u00010"
+ },
+ "m": {
+ "c": {
+ "*": "//discourse.osmc.tv/search?q=\u0002\u00010",
+ "ha": "//osmcha.mapbox.com/changesets/\u0002\u000111"
+ },
+ "*": "//www.openstreetmap.org/search?query=\u0002\u000145",
+ "w": {
+ "*": "http://wiki.openstreetmap.org/w/index.php?title=Special%3ASearch&search=\u0002\u0001279",
+ "ay": "//www.openstreetmap.org/way/\u0002\u00016",
+ "iki": "//wiki.openstreetmap.org/wiki/Special:Search?search=\u0002&go=Go\u00010"
+ },
+ "fr": "http://tile.openstreetmap.fr/?q=\u0002\u00010",
+ "forum": {
+ "*": "http://forum.openstreetmap.org/search.php?action=search&keywords=\u0002&author=&forums=&search_in=0&sort_by=0&sort_dir=DESC&show_as=topics\u00010",
+ "nl": "//forum.openstreetmap.org/search.php?action=search&keywords=\u0002&forums[]=12\u00010"
+ },
+ "link": "http://www.openlinkmap.org/?q=\u0002\u00010",
+ "node": "//www.openstreetmap.org/node/\u0002\u00010",
+ "relation": "//www.openstreetmap.org/relation/\u0002\u00010"
+ },
+ "*": "http://software.opensuse.org/search?utf8=✓&q=\u0002&search_devel=false&search_unsupported=false&baseproject=openSUSE:13.1\u0001120",
+ "r": {
+ "m": "http://map.project-osrm.org/?dest=\u0002\u00018",
+ "*": "//old.reddit.com/r/\u0002\u00014255",
+ "s": {
+ "*": "//oldschool.runescape.wiki/?search=\u0002&title=Special%3ASearch\u00011826",
+ "w": {
+ "*": "//oldschool.runescape.wiki/?search=\u0002\u000153",
+ "iki": "//oldschool.runescape.wiki/?search=\u0002\u000153"
+ },
+ "ge": "http://services.runescape.com/m=itemdb_oldschool/results?query=\u0002\u00016",
+ "hs": "http://services.runescape.com/m=hiscore_oldschool/hiscorepersonal.ws?user1=\u0002\u00015"
+ }
+ },
+ "s": "//www.osstatus.com/search/results?platform=all&framework=all&search=\u0002\u00010",
+ "t": {
+ "a": {
+ "*": "http://www.osta.ee/index.php?q[q]=\u0002&fuseaction=search.search&q[show_items]=1&q[show_shop]=1&q[cat]=1000&search=OTSI\u00010",
+ "dium": "http://ostadium.com/search?q=\u0002\u00010",
+ "rrichi": "http://www.ostarrichi.org/dictionary-search.html?search=\u0002\u00010"
+ },
+ "*": "//www.openstreetmap.org/search?query=\u0002\u000145",
+ "ech": "//www.ostechnix.com/?s=\u0002\u00010"
+ },
+ "u": {
+ "f": "http://osu.ppy.sh/forum/search.php?keywords=\u0002&terms=all&author=&sc=1&sd=d&sr=posts&ch=300&t=0&submit=Search\u00010",
+ "*": "//osu.ppy.sh/home/search?query=\u0002\u0001252",
+ "s": "http://osusearch.com/search/?title=\u0002\u00013",
+ "u": "//osu.ppy.sh/u/\u0002\u000110",
+ "mmon": "//oberlin.summon.serialssolutions.com/search?q=\u0002\u00010"
+ },
+ "w": "//en.opensuse.org/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u00013",
+ "x": {
+ "*": "//developer.apple.com/search/?q=\u0002&platform=OS%20X\u00010",
+ "daily": "http://osxdaily.com/gsearch/?cx=partner-pub-7321635426958037%3A1x5yj0-316e&cof=FORID%3A10&ie=ISO-8859-1&q=\u0002&sa=Search\u00010"
+ },
+ "dn": "//osdn.net/search/?iq=\u0002\u00010",
+ "dev": "//wiki.osdev.org/index.php?title=Special%3ASearch&search=\u0002&fulltext=Search\u000126",
+ "news": "http://www.osnews.com/search?q=\u0002\u00010"
+ },
+ "t": {
+ "4": "//optochip.org/search/?q=\u0002\u00010",
+ "*": "//templates.office.com/en-US/Search/results?query=\u0002\u00010",
+ "n": "//community.oracle.com/search.jspa?q=\u0002\u00010",
+ "t": {
+ "o": {
+ "*": "//www.otto.de/suche/\u0002/\u000124",
+ "bibtex": "http://www.ottobib.com/isbn/\u0002/bibtex\u00010",
+ "office": "http://www.otto-office.com/de/search/si.obtshop?query[query]=\u0002\u00010"
+ },
+ "*": "//ottawa.ca/en/search?searchfield=\u0002\u00010",
+ "awacitizen": "//ottawacitizen.com/?s=\u0002\u00010"
+ },
+ "w": "http://overpass-turbo.eu/?w=\u0002&R\u000121",
+ "rd": "http://onelook.com/thesaurus/?s=\u0002\u00017",
+ "hde": "//www.openthesaurus.de/synonyme/\u0002\u000133",
+ "hesa": "//www.openthesaurus.de/synonyme/\u0002\u000133"
+ },
+ "u": {
+ "p": "//offerup.com/search/?q= \u0002\u00013",
+ "*": "http://www.ou.edu/content/web/search.html?q=\u0002\u00010",
+ "icar": "http://www.ouicar.fr/car/search?where=\u0002&from=ddgbang\u00010",
+ "rdocs": "//our.umbraco.com/search?q=\u0002&cat=documentation\u00010",
+ "tclock": "http://www.outclock.org/index.php?searchword=\u0002&searchphrase=all&Itemid=548&option=com_search\u00010",
+ "tdoorandcountry": "//www.outdoorandcountry.co.uk/search/go?w=\u0002 \u00010",
+ "tletpc": "http://www.outlet-pc.es/?q=\u0002:\u00010",
+ "tlook": "//mail.live.com/default.aspx?skws=hello#fid=flsearch&srch=1&skws=\u0002&sdr=4&satt=0\u0001593",
+ "tsidemag": "//www.outsideonline.com/search/site/\u0002\u00010"
+ },
+ "v": {
+ "d": "//www.overdrive.com/search?q=\u0002\u00010",
+ "i": "http://store.ovi.com/search?q=\u0002\u00014",
+ "*": "http://stackoverflow.com/search?q=\u0002\u000113",
+ "erdrive": "//www.overdrive.com/search?q=\u0002\u00010",
+ "erstock": "http://www.overstock.com/search?keywords=\u0002\u00015",
+ "erwatch": "http://overwatch.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1#\u00013"
+ },
+ "w": {
+ "c": "//eshop.macsales.com/search/?q=\u0002\u00010",
+ "d": "http://webstersdictionary1828.com/Dictionary/\u0002\u00014",
+ "l": {
+ "*": "http://buscador.lechuza.org/resultados.php?texto=\u0002&xx=buscar\u00010",
+ "er": "//www.owler.com/iaApp/browsecompanyprofiles.htm?searchTerm=\u0002\u00010",
+ "iquipedia": "//liquipedia.net/overwatch/index.php?search=\u0002\u00010",
+ "-you-need": "http://www.owl-you-need.de/suche/\u0002\u00010"
+ },
+ "m": {
+ "*": "http://openweathermap.org/find?q=\u0002\u000133",
+ "aster": "//masteroverwatch.com/search/\u0002\u00010"
+ },
+ "*": "//openwhyd.org/search?q=\u0002\u00010",
+ "s": {
+ "*": "//addons.opera.com/ru/search/?query=\u0002&type=extensions\u00010",
+ "r": "//www.reddit.com/r/Overwatch/search?q=\u0002&restrict_sr=on\u00010"
+ },
+ "id": "http://www.owid.de/suche/wort?wort=\u0002\u00010",
+ "rt": "//openwrt.org/doku.php?do=search&id=start&q=\u0002\u00010",
+ "asp": "//www.owasp.org/index.php?search=\u0002\u00013",
+ "gamepedia": "//overwatch.gamepedia.com/index.php?search=\u0002&title=Special:Search&go=Go\u00010",
+ "orks": "//www.officeworks.com.au/shop/SearchDisplay?searchTerm=\u0002\u00010"
+ },
+ "x": {
+ "l": "//www.oxfordlearnersdictionaries.com/definition/english/\u0002_1?isEntryInOtherDict=false\u0001176",
+ "*": "//www.lexico.com/search?utf8=%E2%9C%93&filter=dictionary&dictionary=en&query=\u0002\u000184",
+ "s": "//en.oxforddictionaries.com/thesaurus/\u0002\u00018",
+ "t": "//en.oxforddictionaries.com/thesaurus/\u0002\u00018",
+ "ed": "http://www.oxforddictionaries.com/definition/english/\u0002\u0001102",
+ "bib": "http://www.oxfordbibliographies.com/search?q=\u0002\u00010",
+ "enes": "//es.oxforddictionaries.com/translate/english-spanish/\u0002\u00010",
+ "esen": "//es.oxforddictionaries.com/translate/spanish-english/\u0002\u00010",
+ "ford": {
+ "*": "//en.oxforddictionaries.com/definition/\u0002\u0001330",
+ "dictionaries": "http://www.oxforddictionaries.com/definition/english/\u0002\u0001102",
+ "learners": "http://www.oxfordlearnersdictionaries.com/definition/english/\u0002\u000174",
+ "ref": "http://www.oxfordreference.com/search?siteToSearch=aup&q=\u0002\u00010"
+ },
+ "fren": "//premium.oxforddictionaries.com/translate/french-english/\u0002?q=insoumise&searchDictCode=english-french\u00010"
+ },
+ "z": {
+ "b": {
+ "*": "//www.ozbargain.com.au/search/node/\u0002\u000115",
+ "argain": "//www.ozbargain.com.au/search/node/\u0002\u000115"
+ },
+ "*": "http://oz.by/search/?q=\u0002\u00013",
+ "er": "//outdoorzer.com/s=\u0002\u00010",
+ "on": "http://www.ozon.ru/?context=search&text=\u0002\u000111",
+ "dic": "http://www.ozdic.com/collocation-dictionary/\u0002\u00010",
+ "smoke.com.au": "//ozsmoke.com.au/search/?q=\u0002\u00010",
+ "stoners": "//cannabis.community.forums.ozstoners.com/index.php?app=core&module=search&do=search&andor_type=and&sid=58ffdab89aaeb17e49a50f52929f35d6&search_content=both&search_app_filters[ccs][searchInKey]=pages&search_app_filters[ccs][pages][sortKey]=date&search_app_filters[ccs][pages][sortDir]=0&search_app_filters[ccs][database_1][sortKey]=date_added&search_app_filters[ccs][database_1][sortDir]=0&search_term=\u0002&search_app=forums\u00013"
+ },
+ "ab": "//openaccessbutton.org/?url=\u0002\u00010",
+ "ad": "http://www.oxforddictionaries.com/definition/american_english/\u0002\u0001155",
+ "as": "//www.offresasaisir.fr/recherche?q=\u0002\u00010",
+ "ec": "http://www.oeconsortium.org/courses/search/?search= \u0002 \u00010",
+ "ed": "http://www.oed.com/search?searchType=dictionary&q=\u0002&_searchBtn=Search\u000192",
+ "el": "//affygility.com/oel/search.html?addsearch=\u0002\u00010",
+ "em": "http://www.oemstrade.com/search/\u0002\u00010",
+ "er": "http://www.oercommons.org/search?f.search=\u0002\u00010",
+ "kc": {
+ "*": "//okcupid.com/profile/\u0002\u0001113",
+ "aller": "http://www.okcaller.com/detail.php?number=\u0002\u00017"
+ },
+ "mg": {
+ "c": {
+ "*": "http://www.omgchrome.com/?s=\u0002\u00010",
+ "hrome": "http://www.omgchrome.com/?s=\u0002\u00010"
+ },
+ "h": "//omghackers.com/?s=\u0002\u00015",
+ "*": "http://www.omgubuntu.co.uk/?s=\u0002 \u0001133",
+ "u": {
+ "*": "http://www.omgubuntu.co.uk/?s=\u0002\u00010",
+ "buntu": "http://www.omgubuntu.co.uk/?s=\u0002\u00010"
+ },
+ "v": {
+ "*": "//omgvoice.com/search?term=\u0002\u00010",
+ "oice": "//omgvoice.com/search?term=\u0002\u00010"
+ }
+ },
+ "ms": "//www.onmsft.com/?s=\u0002\u000111",
+ "mt": "http://www.onemorething.nl/zoeken/\u0002/\u00010",
+ "mx": "//theomx.com/companies?keyword%5D=\u0002\u00010",
+ "qc": "//www.ouquoicomment.ch/?s=\u0002&search_by=all\u00010",
+ "yz": "//www.oyez.org/search/\u0002\u00010",
+ "aad": "//www.oxfordlearnersdictionaries.com/definition/american_english/\u0002\u00014",
+ "ald": "//www.oxfordlearnersdictionaries.com/search/english/?q=\u0002\u0001109",
+ "api": "http://overapi.com/\u0002\u00010",
+ "atmeal": "//duckduckgo.com/?q=\u0002+site:theoatmeal.com\u00010",
+ "eis": "http://oeis.org/search?q=\u0002&language=english&go=Search\u0001112",
+ "eticket": "http://www.oeticket.com/Tickets.html?affiliate=EOE&fun=search&fuzzy=yes&doc=search&action=grouped&inline=false&suchbegriff=\u0002\u00010",
+ "jad": "http://www.gavo.t.u-tokyo.ac.jp/ojad/search/index/word:\u0002\u00013",
+ "jen": "//ojibwe.lib.umn.edu/search?utf8=%E2%9C%93&q=\u0002&commit=Search&type=ojibwe\u00010",
+ "kazii": "http://www.okazii.ro/cautare/\u0002.html?autoc=write\u00010",
+ "kidoki": "http://www.okidoki.ee/buy/all/?query=\u0002\u00010",
+ "kkazeo": "//www.okkazeo.com/jeux/searchJeux?rech_nom=\u0002\u00010",
+ "map": {
+ "*": "//www.openstreetmap.org/search?query=\u0002\u000145",
+ "s": "http://omaps.worldofo.com/index.php?st=\u0002\u00015"
+ },
+ "mbe": "http://www.ombe.com/find/\u0002 \u00010",
+ "mdb": "//www.omdb.org/search?search%5Btext%5D=\u0002\u000113",
+ "meka": "//forum.omeka.org/search?q=\u0002\u00010",
+ "megawiki": "http://www.omegawiki.org/index.php?search=\u0002\u00010",
+ "melete": "//omelete.uol.com.br/busca/?q=\u0002\u00010",
+ "mevan": "//www.omevan.com/search?q=\u0002:\u00010",
+ "mfr": "http://open.mapquest.fr/?q=\u0002 \u00010",
+ "mim": "http://omim.org/search?index=entry&sort=score+desc%2C+prefix_sort+desc&start=1&limit=10&search=\u0002 \u00010",
+ "mni": "http://omni.se/sok?q=\u0002\u00013",
+ "mnum": "http://omnum.se/search/?q=\u0002\u00010",
+ "yez": "//www.oyez.org/search/\u0002\u00010"
+ },
+ "õ": {
+ "*": "http://www.eki.ee/dict/qs/index.cgi?Q=\u0002\u00010",
+ "s": "http://www.eki.ee/dict/qs/index.cgi?Q=\u0002\u00010"
+ },
+ "p": {
+ "5": "//p5js.org/reference/#/p5/\u0002\u000110",
+ "a": {
+ "c": {
+ "*": "//www.archlinux.org/packages/?sort=&q=\u0002&maintainer=&flagged=\u0001594",
+ "k": {
+ "*": "//packagist.org/search/?q=\u0002\u000188",
+ "t": "//www.packtpub.com/all/?search=\u0002 \u00010",
+ "et": "http://packetstormsecurity.com/search/?q=\u0002\u00010",
+ "age": "http://www.packagemapping.com/?action=track&tracknum=\u0002\u00015",
+ "agist": "//packagist.org/search/?q=\u0002\u000188",
+ "ers": "http://packers.com/?=\u0002\u00010",
+ "man": "http://packman.links2linux.org/search?q=\u0002\u00010"
+ },
+ "o": "//www.pacogames.com/search?q=\u0002\u00010",
+ "ific": "//www.pacificpkg.com/search.php?kw=\u0002\u00010",
+ "man": "//www.archlinux.org/packages/?sort=&q=\u0002\u000159"
+ },
+ "d": {
+ "*": "http://pad.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1\u00010",
+ "x": "http://www.puzzledragonx.com/en/search.asp?q=\u0002\u00010"
+ },
+ "i": "http://www.pai.pt/q/business/advanced/what/\u0002/?contentErrorLinkEnabled=true\u00010",
+ "n": {
+ "*": "//panlexicon.com/?q=\u0002 \u00014",
+ "da": {
+ "*": "http://pandalook.com/search?controller=search&search_query=\u0002 \u00010",
+ "s": "http://pandas.pydata.org/pandas-docs/stable/search.html?q=\u0002&check_keywords=yes&area=default\u0001116"
+ },
+ "dora": "//www.pandora.com/search/\u0002/all\u00015",
+ "ideas": "//www.theideaskitchen.co.uk/search/-\u0002\u00010",
+ "stwo": "//mojepanstwo.pl/?q=\u0002\u00010",
+ "tip": "//pantip.com/search?q=\u0002\u00010",
+ "tone": "//www.pantone.com/color-finder?q=\u0002\u00014"
+ },
+ "*": "//www.paginasamarillas.es/search/all-ac/all-ma/all-pr/all-is/all-ci/all-ba/all-pu/all-nc/1?what=\u0002\u00010",
+ "p": {
+ "*": "http://www.papskubber.dk/?q=\u0002&s=search&submitbutton=S%C3%B8g\u00010",
+ "er": {
+ "*": "//paperity.org/search/?q=\u0002\u00018",
+ "s": {
+ "*": "http://scholar.google.com/scholar?as_ylo=2000&q=\u0002&as_sdt=1,5&as_vis=1&num=100\u0001148",
+ "era": "http://www.papersera.net/cgi-bin/yabb/YaBB.cgi\u0002 \u00010"
+ }
+ },
+ "ps": "http://portableapps.com/search/node/\u0002%20type%3Aapp\u00010"
+ },
+ "t": {
+ "g": "//patents.google.com/?q=\u0002\u00014",
+ "m": "http://www.pauker.at/app.php/DE_DE/?s=\u0002#suche\u00010",
+ "*": "http://www.pauker.at/pauker/DE_DE/EN/wb?modus=&suche=\u0002&page=1#\u00010",
+ "ft": "http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&u=%2Fnetahtml%2FPTO%2Fsearch-adv.htm&r=0&f=S&l=50&d=PTXT&OS=&RS=%22\u0002%22&Query=%22\u0002%22&TD=&Srch1=%22\u0002%22&NextList1=xxx\u00010",
+ "he": {
+ "*": "//www.pathe.nl/Zoek?q=\u0002\u00010",
+ "os": "//www.patheos.com/search?q=\u0002\u00010"
+ },
+ "ent": "//patents.google.com/?oq=\u0002\u000124",
+ ".fi": "http://www.pauker.at/pauker/DE_DE/FI/wb/?modus=&suche=\u0002&page=1#\u00010",
+ ".pt": "http://www.pauker.at/pauker/DE_DE/PT/wb/?modus=&suche=\u0002&page=1#\u00010",
+ ".sv": "http://www.pauker.at/pauker/DE_DE/SE/wb?modus=&suche=\u0002&page=1#\u00010",
+ "hfinderwiki": "//pathfinderwiki.com/mediawiki/index.php?title=Special%3ASearch&search=\u0002\u00019",
+ "hsrd": "http://paizo.com/search?q=\u0002&what=prd\u00010",
+ "hway": "//www.wholesalehome.com/collections/outdoor-\u0002-lighting\u00010",
+ "ient": {
+ "*": "//patient.info/search.asp?searchterm=\u0002&searchcoll=All\u00010",
+ "uk": "//patient.info/search.asp?searchterm=\u0002\u00010",
+ "info": "//patient.info/search.asp?searchterm=\u0002\u00010"
+ },
+ "reon": "http://www.patreon.com/search?q=\u0002 \u000130"
+ },
+ "w": "http://wiki.archusers.ir/index.php?search=\u0002\u00013",
+ "bn": "//www.prothomalo.com/search/?q=\u0002\u00010",
+ "o1": "http://www.pseudomonas.com/searchAnnotation.do?strain_ids=107&field1=commonNameFields&input1=\u0002\u00010",
+ "ss": {
+ "*": "http://www.passwird.com/search?query=\u0002\u00013",
+ "apalavra": "http://passapalavra.info/?s=\u0002\u00010",
+ "mark": "http://www.passmark.com/search/zoomsearch.php?zoom_query=\u0002&search=Search\u000117"
+ },
+ "gely": "//pagely.com/?s=\u0002\u00010",
+ "gesblanches": "//www.pagesjaunes.fr/pagesblanches/recherche?quoiqui=\u0002\u00010",
+ "gesjaunes": "//www.pagesjaunes.fr/annuaire/chercherlespros?quoiqui=\u0002&monochamp=\u0002\u000112",
+ "gespeed": "//developers.google.com/speed/pagespeed/insights/?url=\u0002\u00016",
+ "gine": "http://www.paginegialle.it/pgol/4-\u0002\u00010",
+ "latinelibrary": "http://encore.palatinelibrary.org/iii/encore/search?target=\u0002\u00010",
+ "leo": {
+ "*": "//www.paleohacks.com/searches?utf8=%E2%9C%93&query=\u0002&commit=Search\u00010",
+ "leap": "http://paleoleap.com/?s=\u0002\u00010"
+ },
+ "lemoon": "http://forum.palemoon.org/search.php?keywords=\u0002\u00010",
+ "lio": "http://www.ilpalio.siena.it/5/cerca.aspx?q=\u0002\u00010",
+ "loalto": "//www.paloaltonetworks.com/documentation/document-search.html?q=\u0002\u00010",
+ "okfc": "http://www.paokfc.gr/en/?s=\u0002\u00010",
+ "rabola": {
+ "*": "//www.parabola.nu/packages/?q=\u0002\u000111",
+ "w": "//wiki.parabola.nu/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010"
+ },
+ "radigit": "//www.paradigit.nl/zoekresultaten/?tn_q=\u0002\u00010",
+ "rawiki": "//wiki.parabola.nu/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "rcels": "http://parcelsapp.com/en/tracking/\u0002\u00010",
+ "rcello": "//www.parcello.org/tracking?tid=\u0002\u00010",
+ "risreview": "http://www.theparisreview.org/search?q=\u0002\u00010",
+ "rker": "//www.parker.com/portal/site/PARKER/menuitem.c9e5838e8a4c0934704b7b10237ad1ca/?selectCategory=all&vgnextfmt=EN&vgnextoid=941b13fc0fa14110VgnVCM10000032a71dacRCRD&newSearch=1&searchbox=\u0002\u00010",
+ "rking": "http://www.parkwhiz.com/search/?destination=\u0002\u00010",
+ "rkrun": "//www.parkrun.com/search?cx=partner-pub-2762663671557547%3A1576658957&cof=FORID%3A11&ie=UTF-8&q=\u0002&sa=Search&siteurl=www.parkrun.com%2F&ref=&ss=631j112681j5\u00010",
+ "rts": {
+ "*": "http://parts.io/search/term-\u0002 \u00013",
+ "dr": "http://partsdr.com/model-number-search/?query=\u0002\u00010"
+ },
+ "rticleforums": "//community.particle.io/users/\u0002/\u00010",
+ "setrad": "http://www.pasetrad.com/search-engine.html?#gsc.tab=0&gsc.q=\u0002&gsc.sort==\u00010",
+ "stebin": "http://pastebin.com/search?cx=partner-pub-4339714761096906%3A1qhz41g8k4m&cof=FORID%3A10&ie=UTF-8&q=\u0002\u000117",
+ "uker": "http://www.pauker.at/pauker/DE_EN/EN/wb/?modus=&suche=\u0002&page=1#\u00010",
+ "uly": "http://referenceworks.brillonline.com/search?s.q=\u0002&s.f.s2_parent=s.f.book.der-neue-pauly&search-go=Search\u00010",
+ "xgal": "http://www.paxinasgalegas.es/resultados.aspx?tipo=0&texto=\u0002\u00010",
+ "yday": "http://payday.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u000116",
+ "ypal": "//www.paypal.com/us/selfhelp/search?q=\u0002&helpSearchButton=Search\u000167",
+ "yscale": "http://www.payscale.com/rcsearch.aspx?category=&str=\u0002&CountryName=United+States&SourceId=%2Fresearch%2FUS%2FCountry%3DUnited_States%2FSalary\u00010",
+ "ytm": {
+ "*": "//paytm.com/shop/search/?q=\u0002\u00010",
+ "mall": "//paytmmall.com/shop/search?q=\u0002&from=organic&child_site_id=6&site_id=2&brand=16051\u00010"
+ }
+ },
+ "b": {
+ "c": "//www.probuilds.net/champions/details/\u0002\u000110",
+ "f": "http://pbfcomics.com/?s=\u0002\u00010",
+ "l": "http://www.pagesjaunes.fr/pagesblanches/recherche?quoiqui=\u0002&proximite=0\u00010",
+ "*": "http://pinboard.in/search/?query=\u0002&mine=Search+Mine\u000167",
+ "s": {
+ "*": "//www.pbs.org/search/?q=\u0002\u00013",
+ "wap": "http://www.paperbackswap.com/book/browser.php?k=\u0002\u00010"
+ },
+ "kids": "http://www.potterybarnkids.com/search/results.html?words=\u0002\u00010",
+ "olo": "//pbolo.com/?s=\u0002\u00010",
+ "one": "http://rpm.pbone.net/index.php3?stat=3&search=\u0002&Search.x=0&Search.y=0&simple=1&srodzaj=1\u00010",
+ "tag": "//pinboard.in/t:\u0002 \u00010",
+ "tech": "//www.pbtech.co.nz/search?sf=\u0002\u00016",
+ "teen": "http://www.pbteen.com/search/results.html?words=\u0002\u00010",
+ "wiki": "//polandball.wikia.com/wiki/Special:Search?search=\u0002\u00010"
+ },
+ "c": {
+ "c": {
+ "g": "http://search.pccasegear.com/search#w=\u0002 \u000123",
+ "o": {
+ "*": "//www.pccomponentes.com/buscar/?query=\u0002\u000130",
+ "mponentes": "//www.pccomponentes.com/buscar/?query=\u0002\u000130"
+ },
+ "*": "http://www.pcconnection.com/IPA/Shop/Product/Search.htm?SearchType=1&term=\u0002\u00010"
+ },
+ "d": "//www.pcdiga.com/catalogsearch/result/?q=\u0002\u00010",
+ "g": {
+ "n": "//www.pcgamesn.com/search/\u0002\u00010",
+ "*": "//www.pcgamer.com/search/?searchTerm=\u0002\u000122",
+ "w": "//pcgamingwiki.com/w/index.php?search=\u0002\u0001810",
+ "amingwiki": "http://pcgamingwiki.com/w/index.php?search=\u0002\u0001122",
+ "uia": "http://www.pcguia.pt/?s=\u0002\u00010"
+ },
+ "h": "http://pch.com/?=\u0002\u00010",
+ "i": {
+ "o": "//packagecontrol.io/search/\u0002\u00010",
+ "*": "http://www.pcinpact.com/recherche?_search=\u0002\u00010",
+ "dss": "//www.pcisecuritystandards.org/search/search.php?query=\u0002\u00010"
+ },
+ "l": {
+ "o": "//www.parcello.org/tracking?tid=\u0002\u00010",
+ "*": "http://docs.pointclouds.org/trunk/search.php?query=\u0002\u00010",
+ "ick": "//picclick.co.uk/?q=\u0002\u00010"
+ },
+ "*": "http://www.presidentschoice.ca/en_CA/search-page.query@\u0002.html\u000110",
+ "s": {
+ "*": "//www.procyclingstats.com/search.php?term=\u0002\u000175",
+ "x2": "//wiki.pcsx2.net/index.php?search=\u0002\u00010"
+ },
+ "24": "http://ecshweb.pchome.com.tw/search/?q=\u0002\u00018",
+ "at": "//catalog.princeton.edu/catalog?utf8=✓&search_field=all_fields&q=\u0002\u00010",
+ "ks": "http://www.peacocks.co.uk/catalogsearch/result/?q=\u0002\u00010",
+ "mr": "//www.reddit.com/r/pcmasterrace/search?q=\u0002&restrict_sr=on&sort=relevance&t=all\u00010",
+ "oo": "//pcoo.gov.ph/?s=\u0002\u00010",
+ "pp": "http://pcpartpicker.com/search/?q=\u0002\u000116",
+ "asio": "//www.planet-casio.com/Fr/aide/recherche.php?q=\u0002\u00010",
+ "mag": "http://www.pcmag.com/search_redirect/?qry=\u0002&searchSection=0&site=3\u00010",
+ "masters": "http://www.pcmasters.de/suche?search_keywords=\u0002\u00010",
+ "omp": "//www.pccomponentes.com/buscar/?query=\u0002\u000130",
+ "partpicker": "http://pcpartpicker.com/search/?q=\u0002\u000116",
+ "per": "http://www.pcper.com/search/node/\u0002\u00010",
+ "trl": "//packagecontrol.io/search/\u0002\u00010",
+ "welt": "//www.pcwelt.de/suche?searchStr=\u0002\u00010",
+ "world": {
+ "*": "http://www.pcworld.com/search?qt=\u0002&tk=srch_top\u00010",
+ "bg": "http://pcworld.bg/search/all/\u0002\u00010"
+ }
+ },
+ "d": {
+ "b": {
+ "e": "//www.ebi.ac.uk/pdbe/entry/search/index/?searchParams={\"\"text\"\":[{\"\"value\"\":\"\"\u0002\"\",\"\"condition1\"\":\"\"AND\"\",\"\"condition2\"\":\"\"Contains\"\"}]}\u00010",
+ "*": "http://www.rcsb.org/pdb/search/navbarsearch.do?f=&q=\u0002\u000148"
+ },
+ "f": {
+ "*": "/?q=\u0002+filetype:pdf\u0001213",
+ "y": "//www.printfriendly.com/print/?source=site&url=\u0002\u00010"
+ },
+ "l": "//www.placedeslibraires.fr/listeliv.php?mots_recherche=\u0002&base=allbooks\u00016",
+ "*": "http://folkets-lexikon.csc.kth.se/folkets/folkets.en.html#lookup&\u0002&0\u000111",
+ "x": "http://puzzledragonx.com/en/search.asp?q=\u0002&searchoption=1\u00010",
+ "cstlst": "//podcastlist.ca/?s=\u0002\u00010",
+ "ict.cc": "http://pocket.dict.cc/?s=\u0002\u00010",
+ "preddit": "//www.reddit.com/r/PewdiepieSubmissions/search?q=\u0002&restrict_sr=1\u00010",
+ "qtglobal": "http://fedsearch.proquest.com/search/sru/pqdtglobal?operation=searchRetrieve&version=1.2&maximumRecords=30&query=\u0002\u00010",
+ "qtopen": "//pqdtopen.proquest.com/results.html?QryTxt=\u0002\u00010"
+ },
+ "e": {
+ "*": "//www.infopedia.pt/dicionarios/pesquisa/\u0002\u00010",
+ "f": "//candidat.pole-emploi.fr/offres/recherche?motsCles=\u0002\u00010",
+ "p": {
+ "*": "http://www.python.org/dev/peps/pep-\u0002/\u000124",
+ "permintos": "//forum.peppermintos.com/index.php?action=search2&search=\u0002\u00010",
+ "pernl": "//nl.pepper.com/search?q=\u0002\u00010",
+ "perplate": "http://www.pepperplate.com/search/?text=\u0002\u00010"
+ },
+ "r": {
+ "i": "//www.periscope.tv/search?q=\u0002\u00015",
+ "l": {
+ "*": "http://p3rl.org/\u0002\u00010",
+ "doc": "//perldoc.pl/search?q=\u0002\u000153",
+ "mod": {
+ "6": "//modules.perl6.org/search/?q=\u0002\u00010",
+ "*": "http://p3rl.org/\u0002\u00010"
+ },
+ "monks": "http://www.perlmonks.org/?node=\u0002\u00010"
+ },
+ "*": "//personality-database.com/search?q=\u0002\u0001107",
+ "ch": "http://forum.grabaperch.com/forum/search?query=\u0002\u00010",
+ "dola": "//childishgiant.github.io/perdola/?app=\u0002\u00010",
+ "ezhilton": "http://perezhilton.com/?s=\u0002\u00010",
+ "fectgame": "//www.perfectgame.org/Search.aspx?search=\u0002\u00010",
+ "fil": "http://www.perfil.com/buscador/?q=\u0002\u00010",
+ "rypedia": "http://www.perrypedia.proc.org/mediawiki/index.php?search=\u0002\u00010",
+ "see": "http://www.persee.fr/search?q=\u0002\u00010",
+ "seus": "http://www.perseus.tufts.edu/hopper/searchresults?q=\u0002\u000119",
+ "u21": "//peru21.pe/buscar/?query=\u0002\u00010"
+ },
+ "ar": "http://pear.php.net/search.php?in=packages&x=0&y=0&q=\u0002\u00010",
+ "cl": "http://pecl.php.net/package-search.php?pkg_name=\u0002\u00010",
+ "ek": "//peekier.com/#!\u0002\u000113",
+ "gi": "//pegi.info/search-pegi?q=\u0002\u00010",
+ "apod": "//www.peapod.com/product-search/\u0002\u00010",
+ "ctive": "http://pective.com/search?q=\u0002\u00010",
+ "diaa": "//pediaa.com/?s=\u0002\u00010",
+ "digree": "http://www.pedigreedatabase.com/search.html?q=\u0002 \u00010",
+ "eron": "http://peeron.com/cgi-bin/invcgis/psearch?query=\u0002&limit=none\u00010",
+ "eringdb": "//www.peeringdb.com/search?q=\u0002\u00010",
+ "gasos": "http://pegasos.kirjas.to/selaushaku.asp?kohde=vapaasana&hakuehto=\u0002\u00010",
+ "ggo": "http://peggo.co/search/\u0002\u00015",
+ "ixe": "//www.peixeurbano.com.br/#q=\u0002\u00010",
+ "lando": "//www.pelando.com.br/search?q=\u0002\u00010",
+ "ngicau": "//pengicau.com/w/index.php?search=\u0002&title=Special%3ASearch&fulltext=1\u00010",
+ "nguinmagic": "http://www.penguinmagic.com/s/\u0002\u00010",
+ "nnbooks": "//onlinebooks.library.upenn.edu/webbin/book/search?author=&amode=words&title=\u0002&tmode=words&c=x\u00010",
+ "nnydeals": "http://pennydeals.in/usearch.php?search=\u0002\u00010",
+ "ople": "//people.zoho.com/people/#selfservice/directory/employees-searchstring=\u0002&searchType=0\u00014",
+ "tco": "http://www.petco.com/shop/SearchDisplay?categoryId=&storeId=10151&catalogId=10051&langId=-1&sType=SimpleSearch&resultCatEntryType=2&showResultsPage=true&searchSource=Q&pageView=&beginIndex=0&pageSize=24&fromPageValue=search&searchTerm=\u0002\u00016",
+ "teyvid": "//www.peteyvid.com/index.php?q=\u0002\u00010",
+ "titweb": "http://www.petitweb.fr/?s=\u0002\u00010",
+ "tsmart": {
+ "*": "http://www.petsmart.com/search/?q=\u0002\u00013",
+ "ca": "http://www.petsmart.ca/search?SearchTerm=\u0002\u00010"
+ },
+ "wdiepie": "//www.youtube.com/user/PewDiePie/search?query=\u0002 \u00015",
+ "wnews": "//pewnews.org/?s=\u0002\u00010",
+ "xels": "http://www.pexels.com/search/\u0002/\u000151"
+ },
+ "f": {
+ "i": "//poinformowani.pl/szukaj?q=\u0002\u00010",
+ "l": "http://www.portagefilelist.de/site/query/file/?file=\u0002&unique_packages=yes&do\u00013",
+ "*": "//www.printfriendly.com/print/?source=site&url=\u0002\u00010",
+ "r": "http://www.pro-football-reference.com/search/search.fcgi?search=\u0002&pid=\u0001285",
+ "s": {
+ "*": "//cse.google.com/cse?cx=006680642033474972217%3A6zo0hx_wle8&q=\u0002\u000122",
+ "s": "//www.netgate.com/docs/pfsense/search.html?q=\u0002&check_keywords=yes&area=default\u00010"
+ },
+ "w": {
+ "c": "http://www.portablefreeware.com/index.php?q=\u0002\u00010",
+ "*": "http://www.portablefreeware.com/index.php?q=\u0002\u00010",
+ "iki": "http://phineasandferb.wikia.com/wiki/Special:Search?search=\u0002\u00010"
+ },
+ "x": "http://www.brooksbaseball.net/search.php?name=\u0002\u00010",
+ "online": "http://www.pathfindersonline.org/component/search/?searchword=\u0002&ordering=newest&searchphrase=all\u00010"
+ },
+ "g": {
+ "n": {
+ "o": "//prisguiden.no/sok?q=\u0002\u00010",
+ "*": "//kontoutdrag.plusgirot.se/ku/sokko002?SO_KTO=\u0002\u00010"
+ },
+ "p": {
+ "*": "//pgp.mit.edu/pks/lookup?search=\u0002\u00016",
+ "key": "//api.posteo.de/v1/public-keys/\u0002?type=openpgp\u00010"
+ },
+ "*": "//www.gutenberg.org/ebooks/search/?query=\u0002\u000133",
+ "r": {
+ "i": "http://www.pgri.or.id/?s=\u0002\u00010",
+ "*": "http://www.perseus.tufts.edu/hopper/morph?l=\u0002&la=greek\u00019"
+ },
+ "de": "http://gutenberg.spiegel.de/suche?q=\u0002\u00010",
+ "fr": "//www.gutenberg.org/ebooks/search/?query=l.fr+\u0002\u00010",
+ "kb": "//www.pharmgkb.org/search?query=\u0002\u00010",
+ "docs": "http://www.postgresql.org/search/?u=%2Fdocs%2F&q=\u0002\u000119"
+ },
+ "h": {
+ "e": {
+ "*": "//careers.phenompeople.com/us/en/search-results?keywords=\u0002\u00010",
+ "t": "http://phet.colorado.edu/en/search?q=\u0002\u00010"
+ },
+ "i": {
+ "*": "http://latin.packhum.org/search?q=\u0002\u00016",
+ "sh": "http://phish.net/song/?s=\u0002\u00010",
+ "lenews": "http://www.philenews.com/search?kw=\u0002\u00010",
+ "lips": "//www.careers.philips.com/professional/global/en/search-results?keywords=\u0002\u00010",
+ "libert": "http://www.philibertnet.com/fr/recherche?orderby=position&orderway=desc&search_query=\u0002&submit_search=C%27est+parti+%21\u00010",
+ "lpapers": "http://philpapers.org/s/\u0002\u000112"
+ },
+ "o": {
+ "*": "//photics.com/?s=\u0002\u000110",
+ "ne": {
+ "*": "http://www.whitepages.com/phone/\u0002 \u00019",
+ "arena": "http://www.phonearena.com/search/term/\u0002\u00010",
+ "more": "//www.phonemore.com/search/?q=\u0002\u00013",
+ "spell": "//phonespell.org/combo.cgi?n=\u0002\u00013"
+ },
+ "ronix": "//www.phoronix.com/scan.php?page=search&q=\u0002\u000132",
+ "tics": "//photics.com/?s=\u0002\u000110",
+ "tobucket": "http://photobucket.com/images/\u0002/\u00018",
+ "tocrati": "http://www.photocrati.com/?s=\u0002\u00010",
+ "todune": "http://photodune.net/search?utf8=%E2%9C%93&term=\u0002\u00010",
+ "topin": "http://photopin.com/search/\u0002\u00010"
+ },
+ "p": {
+ "*": "//secure.php.net/manual-lookup.php?pattern=\u0002\u00010",
+ "2py": "http://www.php2python.com/wiki/search/?search_term=\u0002 \u00010",
+ "net": "//secure.php.net/manual-lookup.php?pattern=\u0002\u00010"
+ },
+ "*": "//www.producthunt.com/search?q=\u0002\u0001192",
+ "w": "//www.pharmawiki.ch/wiki/index.php?wiki=\u0002\u00010",
+ "y": {
+ "*": "//www.physicsclassroom.com/?q=\u0002\u00010",
+ "se": "//physics.stackexchange.com/search?q=\u0002\u00010",
+ "sics": "//www.physicsforums.com/search/90229641/?q=\u0002&o=relevance \u00010",
+ "sse": "//physics.stackexchange.com/search?q=\u0002\u00010"
+ },
+ "un": "http://phun.freeforums.org/search.php?keywords=\u0002\u00010",
+ "alcondoc": "//cse.google.com/cse?cx=009733439235723428699:lh9ltjgvdz8&q=validation&oq=validation&gs_l=partner.3...77240.79724.1.80133.10.10.0.0.0.0.325.1627.4j2j1j3.10.0.gsnos%2Cn%3D13...0.2495j1017187j10..1ac.1.25.partner..10.0.0.XePJcoeor8s#gsc.tab=0&gsc.q=\u0002&gsc.page=1\u00010",
+ "armgkb": "//www.pharmgkb.org/search?query=\u0002\u00010",
+ "as3r": "//duckduckgo.com/?q=inurl%3Ahttps%3A%2F%2Fphotonstorm.github.io%2Fphaser3-docs%2F+\u0002#\u00010",
+ "rase": {
+ "n": "//www.phrasen.com/index.php?do=suche&q=\u0002\u00010",
+ "*": "//duckduckgo.com/?q=site:phrases.org.uk%20\u0002\u00013"
+ },
+ "set": "http://phi.sh/\u0002\u00010"
+ },
+ "i": {
+ "c": {
+ "*": "http://www.picsearch.com/index.cgi?q=\u0002\u000110",
+ "s": "//duckduckgo.com/?q=\u0002&ia=images&iax=images\u000117",
+ "olisp": "http://picolisp.com/wiki/?home&*Search=\u0002\u00010",
+ "tame": "//www.pictame.com/search?query=\u0002\u00013",
+ "tures": "//duckduckgo.com/?q=\u0002&ia=images&iax=images\u000117"
+ },
+ "n": {
+ "a": "http://pinboard.in/search/?query=\u0002&all=Search+All\u00010",
+ "f": "//pinboard.in/search/?query=\u0002&fulltext=on\u00010",
+ "g": "http://dns-tools.domaintools.com/?method=ping&query=\u0002\u00016",
+ "k": "http://www.pinknews.co.uk/?s=\u0002 \u00015",
+ "*": "http://pinterest.com/search/pins/?q=\u0002\u0001116",
+ "board": "http://pinboard.in/search/?query=\u0002&mine=Search+Mine\u000167",
+ "e64": "//forum.pine64.org/search.php?text=\u0002&sortby=&order=desc\u00010",
+ "out": "http://pinoutsguide.com/search.php?lang=eng&t=\u0002\u00010",
+ "pin": "http://dictionary.pinpinchinese.com/search/t/\u0002\u00010",
+ "side": "//pinside.com/pinball/forum/search?s=1&q=\u0002&include_basement=0#results\u00014",
+ "terest": "//pinterest.com/search/?q=\u0002\u0001206",
+ "voke": "http://pinvoke.net/search.aspx?search=\u0002\u00013",
+ "yin1": "http://www.pin1yin1.com/#\u0002\u00010"
+ },
+ "o": "http://platformio.org/lib/search?query=\u0002\u00013",
+ "p": {
+ "l": "//pipl.com/search/?q=\u0002&l=&sloc=&in=5\u00010",
+ "*": "//pypi.python.org/pypi?:action=search&term=\u0002&submit=search\u0001697",
+ "ilika": "//www.pipilika.com/search?q=\u0002\u00010"
+ },
+ "*": "http://www.philly.com/philly/search/?search=y&adv=y&searchKeywords=\u0002&minscore=50&pagesize=20&sites=philly&fields=full&sections=5&queryType=all\u00014",
+ "v": "http://vortaro.net/#\u0002\u000143",
+ "x": {
+ "*": "http://shop.pixbreak.com/?s=\u0002\u00013",
+ "el": {
+ "*": "http://pixelmonmod.com/wiki/index.php?title=\u0002\u00010",
+ "p": {
+ "*": "http://www.pixelprospector.com/?s=\u0002\u00010",
+ "osts": "http://pixels.thetangible.in/search/\u0002\u00010"
+ }
+ },
+ "iv": "http://www.pixiv.net/search.php?word=\u0002\u0001463",
+ "abay": "http://pixabay.com/en/photos/?q=\u0002\u000176"
+ },
+ "gu": "http://pigu.lt/search?q=\u0002\u00010",
+ "ka": {
+ "*": "//www.pikapkg.com/packages/?q=\u0002\u00010",
+ "bu": "http://pikabu.ru/search.php?q=\u0002\u00010"
+ },
+ "ls": "http://patient.info/Search.asp?searchTerm=\u0002&collections=Condition_Leaflets\u00010",
+ "mo": {
+ "*": "//shop.pimoroni.com/search?q=\u0002\u00010",
+ "roni": "//shop.pimoroni.com/?q=\u0002\u00010"
+ },
+ "to": "http://www.pisatoday.it/search/query/\u0002\u00010",
+ "anostreet": "//www.pianostreet.com/index_sr.php?q=\u0002\u00010",
+ "apro": "//piapro-studio.fandom.com/wiki/Special:Search?query=\u0002\u00010",
+ "er1": "//www.pier1.com/on/demandware.store/Sites-pier1_us-Site/default/Search-ShowContent?q=\u0002\u00010",
+ "etsmiet": "//www.pietsmiet.de/search?query=\u0002\u000159",
+ "kipedia": "http://www.pikminwiki.com/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000122",
+ "ratenwiki": "//wiki.piratenpartei.de/Spezial:Suche?search=\u0002&fulltext=Suchen\u00010",
+ "ratetimes": "http://piratetimes.net/?s=\u0002&submit=Search\u00010",
+ "rsa": "http://pirsa.org/index.php?p=speaker&name=\u0002\u00010",
+ "tchbook": "//duckduckgo.com/?q=site%3Apitchbook.com%2Fprofiles%2Fcompany+\u0002\u00010",
+ "tchfork": "http://pitchfork.com/search/?query=\u0002\u000197"
+ },
+ "j": {
+ "m": "//pjmedia.com/search/?s=\u0002 \u00010",
+ "*": "//www.prisjakt.nu/search?search=\u0002\u000184",
+ "no": "http://www.prisjakt.no/#rparams=ss=\u0002 \u00010"
+ },
+ "k": {
+ "b": "//pikabu.ru/search.php?q=\u0002\u00010",
+ "g": {
+ "*": "//www.archlinux.org/packages/?sort=&q=\u0002\u000159",
+ "s": {
+ "*": "http://pkgs.org/search/?keyword=\u0002\u000165",
+ "rc": "http://pkgsrc.se/search.php?so=\u0002\u00010"
+ },
+ "rd": "//packageradar.com/form?tracking_form[tracking_number]=\u0002\u00010",
+ "tr": "//www.packagetrackr.com/track/\u0002\u00010"
+ },
+ "o": "//packages.knightos.org/search?terms=\u0002\u00010",
+ "*": "//peekier.com/#!\u0002\u000113",
+ "mce": "http://wiki.pokemoncentral.it/index.php?search=\u0002\u00010"
+ },
+ "l": {
+ "a": {
+ "*": "http://www.perseus.tufts.edu/hopper/morph?l=\u0002&la=la\u000132",
+ "y": {
+ "*": "//play.google.com/store/search?q=\u0002\u00010",
+ "asia": "http://www.play-asia.com/paOS-19-71-99-15-\u0002.html\u00015",
+ "grounds": "//www.customplaygroundequipment.com/search?search=\u0002\u00010",
+ "music": "//play.google.com/music/listen#/sr/\u0002\u00010",
+ "onlinux": "//duckduckgo.com/?q=\u0002+site%3Aplayonlinux.com\u00010",
+ "right": "http://www.playright.dk/playright/soeg?_submit=1&_soeg=0&soeg=\u0002\u00010",
+ "station": "//www.playstation.com/search-results/?q=\u0002\u00013",
+ "store": "//play.google.com/store/search?q=\u0002\u00010",
+ "term": "http://www.playterm.org/s/?tags=\u0002\u00010"
+ },
+ "ne": {
+ "*": "http://www.planespotters.net/search.php?q=\u0002\u00010",
+ "tdepos": "//planetdepos.com/?s=\u0002\u00010",
+ "tebd": "http://www.planetebd.com/recherche?mot-clef=\u0002\u00010",
+ "tkey": "//www.planetkey.de/suche/?s=\u0002\u00010",
+ "tmc": "//www.planetminecraft.com/resources/?keywords=\u0002\u00019",
+ "tmath": "//github.com/search?l=TeX&q=org%3Aplanetmath+\u0002&type=Topics\u00010"
+ },
+ "se": "//plase.net/?s= \u0002&post_type=product\u00010",
+ "to": "http://plato.stanford.edu/search/searcher.py?query=\u0002\u000124",
+ "tt": {
+ "*": "http://www.platt-wb.de/platt-hoch/?term=\u0002\u00010",
+ "entests": "http://www.plattentests.de/suche.php?parameter=all&suche=\u0002\u00010"
+ },
+ "isio": "http://www.plaisio.gr/search.aspx?query=\u0002&catalogue=all&mode=searchlist\u00010",
+ "n3t": "http://plan3t.info/?s=\u0002\u00010",
+ "ncke": "//plancke.io/hypixel/player/stats/\u0002\u000153",
+ "nplus": "//www.planplus.rs/#!pretraga/\u0002\u00010",
+ "nts": "http://powo.science.kew.org/?q=\u0002\u00010",
+ "tekompaniet": "//platekompaniet.no/search/?q=\u0002\u00010"
+ },
+ "m": "//www.buyplm.com/general-info/pdxpert-plm-software-search.aspx?query=\u0002\u00010",
+ "p": "//www.playpilot.com/se/en/search/?q=\u0002\u00010",
+ "*": "http://publiclab.org/search/\u0002\u00013",
+ "s": "//www.pluralsight.com/search?q=\u0002\u00010",
+ "t": "http://latin.packhum.org/search?q=\u0002\u00016",
+ "w": "//pl.wikipedia.org/w/index.php?search=\u0002\u000112",
+ "z": "//www.postdirekt.de/plzserver/PlzSearchServlet?finda=miniapp&city=\u0002\u00010",
+ "de": "//translate.google.com/#view=home&op=translate&sl=pl&tl=de&text=\u0002\u00013",
+ "en": "http://translate.google.com/#pl/en/\u0002\u000128",
+ "fr": "http://dictionnaire.reverso.net/polonais-francais/\u0002\u00010",
+ "ug": {
+ "*": "http://www.pluggedin.com/search?q=\u0002\u00010",
+ "gedin": "//www.pluggedin.com/search/?q=\u0002&i=titles&p=0&l=20&c=%7B%7D\u00010"
+ },
+ "us": {
+ "*": "//plus.codes/map/\u0002\u00010",
+ "codes": "//plus.codes/\u0002\u00010"
+ },
+ "eatedjeans": "http://www.pleated-jeans.com/?s=\u0002 \u00010",
+ "eiades": "http://pleiades.stoa.org/search?SearchableText=\u0002&portal_type=Place&submit=Search\u00010",
+ "ombservice": "http://www.plombservice.fr/catalogsearch/result/?imageField.x=0&imageField.y=0&q=\u0002\u00010",
+ "one": "//plone.org/@@search?SearchableText=\u0002\u00010",
+ "osmed": "http://www.plosmedicine.org/search/simple?query=\u0002&filterJournals=PLoSMedicine\u00010",
+ "oum": "//ploum.net/?s=\u0002\u00010",
+ "unket": "//www.plunket.org.nz/home/SearchForm?Search=\u0002&action_results=Search\u00010",
+ "urk": "//www.plurk.com/search?q=\u0002\u000118",
+ "uralsight": "http://www.pluralsight.com/search/?searchTerm=\u0002\u00010",
+ "yrics": "http://search.plyrics.com/search.php?q=\u0002\u00010"
+ },
+ "m": {
+ "c": {
+ "b": "//www.planetminecraft.com/banners/?keywords=\u0002\u00010",
+ "c": "//www.planetminecraft.com/collections/?keywords=\u0002\u00010",
+ "d": "//www.planetminecraft.com/resources/mods/data-pack/?keywords=\u0002\u00010",
+ "k": "//www.planetminecraft.com/resources/skins/?keywords=\u0002\u00010",
+ "m": "//www.planetminecraft.com/resources/mods/?keywords=\u0002\u00010",
+ "*": "//www.planetminecraft.com/resources/?keywords=\u0002\u00019",
+ "p": "//www.planetminecraft.com/resources/projects/?keywords=\u0002\u00010",
+ "r": "//www.planetminecraft.com/resources/texture_packs/?keywords=\u0002\u00010",
+ "s": "//www.planetminecraft.com/resources/servers/?keywords=\u0002\u00010"
+ },
+ "d": "http://www.ncbi.nlm.nih.gov/pubmed/?term=\u0002\u000124",
+ "f": {
+ "e": "//forum.palemoon.org/search.php?keywords=\u0002&fid[0]=9\u00010",
+ "*": "http://forum.palemoon.org/search.php?keywords=\u0002\u00010"
+ },
+ "i": {
+ "d": "http://www.ncbi.nlm.nih.gov/pubmed/?term=\u0002\u000124",
+ "*": "//search.pmi.org/default.aspx?q=\u0002\u00010"
+ },
+ "k": "http://pimpmykeyboard.com/search.php?Search=&search_query=\u0002\u00010",
+ "*": "//www.ncbi.nlm.nih.gov/pubmed/?term=\u0002\u0001225",
+ "s": "http://www.postimees.ee/search?query=\u0002\u00010",
+ "eg": "http://duckduckgo.com/?q=\u0002 site:http://bertilow.com/pmeg/\u00016",
+ "mm": "//wiki.puella-magi.net/index.php?title=Special%3ASearch&search=\u0002\u00010",
+ "on": "http://pixelmon.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1\u00010",
+ "os": "//forum.peppermintos.com/index.php?action=search2&search=\u0002\u00010",
+ "use": "//muse.jhu.edu/search?action=search&query=content:\u0002:and&min=1&max=10&t=header\u00010",
+ "wiki": "http://papermario.wikia.com/wiki/Special:Search?search=\u0002\u00010"
+ },
+ "n": {
+ "*": "//primenow.amazon.com/search?k=\u0002\u00014",
+ "p": "http://shop.pnp.co.za/b2c_pnp/b2c/display/(cpgsize=12&layout=5.1-6_2_4_86_92_8_3&uiarea=1&carea=%24ROOT&cpgnum=1&cquery=\u0002)/.do?rf=y\u00014",
+ "w": "//psychonautwiki.org/w/index.php?search=\u0002\u000122",
+ "as": "http://www.pnas.org/search/\u0002%20numresults%3A10%20sort%3Arelevance-rank%20format_result%3Astandard\u00010",
+ "de": "//primenow.amazon.de/search?k=\u0002\u00010",
+ "dr": "//www.pandora.com/search/\u0002\u000122",
+ "uk": "//primenow.amazon.co.uk/search?k=\u0002\u00010"
+ },
+ "o": {
+ "d": {
+ "*": "http://cocoapods.org/?q=\u0002\u00010",
+ "io": "//podio.com/search#/query/\u0002\u00010",
+ "cast": "//www.listennotes.com/search/?q=\u0002&sort_by_date=0\u00019",
+ "cloud": "//podcloud.fr/search?q=\u0002\u00010"
+ },
+ "e": {
+ "m": {
+ "*": "http://www.poemhunter.com/search/?q=\u0002\u00010",
+ "s": "//www.poetryfoundation.org/search?query=\u0002 \u00010"
+ },
+ "*": "//pathofexile.gamepedia.com/index.php?search=\u0002\u00010",
+ "r": "//www.reddit.com/r/pathofexile/search?q=\u0002&restrict_sr=on\u00010",
+ "db": "http://poedb.tw/us/search.php?Search=\u0002\u000112",
+ "gp": "//pathofexile.gamepedia.com/index.php?search=\u0002\u00010",
+ "ts": "//www.poets.org/search/node/\u0002\u00010",
+ "page": "http://pathofexile.gamepedia.com/\u0002\u00010",
+ "try": "http://www.poetryfoundation.org/search/?q=\u0002\u00010",
+ "wiki": "http://pathofexile.gamepedia.com/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u00014"
+ },
+ "k": {
+ "*": "//www.petersofkensington.com.au/Public/Catalog/searchresults.aspx?search=\u0002&issearch=true\u00010",
+ "ebrickbronze": "http://brickbronze.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "ecommunity": "//www.pokecommunity.com/search.php?do=q\u0002\u00010",
+ "edb": "http://pokemondb.net/search?q=\u0002\u000116",
+ "edex": "//www.pokemon.com/us/pokedex/\u0002\u00013",
+ "emmo": "http://pokemmo.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "emondb": "http://pokemondb.net/search?q=\u0002\u000116",
+ "epedia": "http://www.pokepedia.fr/index.php?title=Special%3ARecherche&search=\u0002\u000143",
+ "ewiki": "http://www.pokewiki.de/index.php?search=\u0002&button=&title=Spezial%3ASuche\u000140"
+ },
+ "p": {
+ "*": "http://incendar.com/funko_pop_search.php?search=\u0002\u00013",
+ "py": "//poppy.fandom.com/wiki/Special:Search?query=\u0002\u00010",
+ "pin": "http://www.poppin.com/search?q=\u0002\u00010",
+ "sci": "//www.popsci.com/find/\u0002\u00010",
+ "sike": "http://www.popsike.com/php/quicksearch.php?searchtext=\u0002\u00013"
+ },
+ "*": "//prensaobrera.com/buscar?q=\u0002\u00017",
+ "r": {
+ "*": "http://sjp.pwn.pl/poradnia/szukaj/\u0002.html\u00017",
+ "t": {
+ "*": "//www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=\u0002\u000110",
+ "s": "http://www.speedguide.net/port.php?port=\u0002\u00016",
+ "hu": "http://port.hu/kereso?q=\u0002\u00010",
+ "ableapps": "http://portableapps.com/search/node/\u0002\u00013",
+ "ablefreeware": "http://www.portablefreeware.com/index.php?q=\u0002\u00010",
+ "al12": "//portal12.bg/search?q=\u0002\u00010",
+ "allinux": "http://portallinux.es/?s=\u0002\u00010",
+ "alwiki": "http://theportalwiki.com/w/index.php?search=\u0002 \u00013"
+ },
+ "kbun": "//porkbun.com/checkout/search?q=\u0002\u000113",
+ "omagia": "//poromagia.com/fi/search/?q=\u0002\u00010"
+ },
+ "al": "//poal.co/search/\u0002\u00010",
+ "lk": "http://www.polkaudio.com/search/products?q=\u0002\u00010",
+ "ly": {
+ "*": "//poly.google.com/search/\u0002\u00010",
+ "gon": "http://www.polygon.com/search?q=\u0002\u000161",
+ "mtl": "//www.polymtl.ca/etudes/cours/recherche/*?sigle=\u0002\u00010",
+ "ratings": "http://polyratings.com/search.php?type=ProfName&terms=\u0002&format=long&sort=name\u00010"
+ },
+ "ma": {
+ "*": "//postmates.com/search?q=\u0002\u00010",
+ "galo": "//search.pomagalo.com/?keywords_id=&keywords=\u0002\u00010"
+ },
+ "ns": {
+ "*": "//en.pons.com/translate?q=\u0002\u0001234",
+ "de": {
+ "*": "//de.pons.com/%C3%BCbersetzung?q=\u0002&l=deen&in=&lf=de\u000147",
+ "en": "http://en.pons.com/translate?q=\u0002&l=deen&in=&lf=de\u000148",
+ "es": "http://de.pons.com/%C3%BCbersetzung?q=\u0002&l=dees&in=&lf=de\u000114",
+ "fr": "http://de.pons.com/%C3%BCbersetzung?q=\u0002&l=defr&in=&lf=de\u000130",
+ "it": "http://de.pons.com/%C3%BCbersetzung?q=\u0002&l=deit&in=&lf=de\u000110",
+ "la": "//de.pons.com/%C3%BCbersetzung?q=\u0002&l=dela\u00013",
+ "pl": "http://en.pons.com/translate?q=\u0002&l=depl&in=&lf=de\u00016",
+ "ru": "http://en.pons.com/translate?q=\u0002&l=deru&in=&lf=de&cid=\u00010",
+ "sv": "//de.pons.com/%C3%BCbersetzung?q=\u0002&l=desv&in=&lf=de\u00010"
+ },
+ "ed": "http://en.pons.com/translate?q=\u0002&l=deen&in=&lf=en\u00010",
+ "ge": "//mobile.pons.com/dict/search/mobile-results/?q=\u0002&l=deen\u00010",
+ "pt": "http://en.pons.com/translate?q=\u0002&l=enpt&in=&lf=en\u00010",
+ "ende": "//de.pons.com/%C3%BCbersetzung?q=\u0002&l=deen&in=&lf=en\u000119",
+ "enfr": "http://en.pons.eu/translate?q=\u0002&l=enfr&in=&lf=fr\u00010",
+ "ensl": "//en.pons.com/translate?q=\u0002&l=ensl&in=en&lf=en\u00010",
+ "itpl": "http://pl.pons.com/tłumaczenie?q=\u0002&l=itpl\u00010",
+ "plde": "//pl.pons.com/tłumaczenie?q=\u0002&l=depl&in=&lf=de\u00010",
+ "plen": "//en.pons.com/translate?q=\u0002&l=enpl&in=&lf=en\u00010",
+ "ples": "//pl.pons.com/t%C5%82umaczenie?q=\u0002&l=espl&in=&lf=es\u00010"
+ },
+ "ny": "//stdlib.ponylang.org/search.html?q=\u0002\u00010",
+ "sh": "//docs.microsoft.com/en-us/search/index?search=\u0002\u0001111",
+ "wt": "//www.powerthesaurus.org/\u0002/synonyms\u00017",
+ "cewiki": "http://wiki.pokemoncentral.it/index.php?search=\u0002\u00010",
+ "cket": {
+ "*": "//app.getpocket.com/search/\u0002\u000147",
+ "explore": "//www.getpocket.com/explore/\u0002\u00010",
+ "gamer": "http://www.pocketgamer.co.uk/latest.asp?srch=\u0002\u00010",
+ "tactics": "http://www.pockettactics.com/home/SearchForm?Search=\u0002\u00010"
+ },
+ "czta": "http://emonitoring.poczta-polska.pl/?numer=\u0002\u00010",
+ "limi": "//www.polimi.it/risultati-ricerca?q=\u0002&cerca=Cerca\u00010",
+ "lito": "http://www.polito.it/search/?lang=it&q=\u0002\u00010",
+ "litico": {
+ "*": "http://www.politico.com/search?q=\u0002\u000119",
+ "eu": "http://www.politico.eu/?s=\u0002\u00010"
+ },
+ "litifact": "http://www.politifact.com/search/?q=\u0002\u00010",
+ "litiken": "http://politiken.dk/search/?q=\u0002\u00010",
+ "llen": "//www.pollen.com/forecast/current/pollen/\u0002\u000113",
+ "llin": "http://www.pollin.de/shop/suchergebnis.html?S_TEXT=\u0002\u00010",
+ "llstar": "http://pollstar.com/tour/searchall.pl?By=All&Content=\u0002&go_green.x=0&go_green.y=0\u00010",
+ "nd5": "//www.pond5.com/stock-video-footage/1/\u0002.html\u00010",
+ "olsupplyworld": "http://www.poolsupplyworld.com/search.htm?searchBox=\u0002&x=0&y=0\u00010",
+ "ser": "http://www.evilinnocence.com/shop/catalogsearch/result/?q=\u0002\u00010",
+ "six": "http://pubs.opengroup.org/cgi/kman4.cgi?value=\u0002\u000152",
+ "ste": {
+ "n": "http://sporing.posten.no/sporing.html?lang=no&q=\u0002&submit=\u00010",
+ "*": "//www.poste.it/cerca/index.html#/risultati-spedizioni/\u0002\u00010",
+ "rs": {
+ "*": "http://www.allposters.com/gallery.asp?startat=%2Fgallery.asp&CID=A34475974C344D66A5E4D6D2F5CDA949&txtSearch=\u0002&imageField2.x=0&imageField2.y=0\u00010",
+ "py": "//posterspy.com/posters/?s=\u0002&post_type=poster\u00010"
+ }
+ },
+ "stat": "//www.post.at/sendungsverfolgung.php/details?pnum1=\u0002\u00010",
+ "stdk": "http://www.postnord.dk/da/Sider/TrackTrace.aspx?search=\u0002\u00010",
+ "stnl": "//www.postnl.nl/search?q=\u0002&searchEntry=searchfield&boosting_label=\u00010",
+ "stgres": {
+ "*": "http://www.postgresql.org/search/?q=\u0002&a=1&submit=Search\u000141",
+ "ql": "http://www.postgresql.org/search?q=\u0002&a=1&submit=Search\u000113"
+ },
+ "stillon": "http://www.der-postillon.com/search?q=\u0002\u00010",
+ "stimees": "http://www.postimees.ee/search?query=\u0002\u00010",
+ "stmates": "//postmates.com/search?q=\u0002\u00010",
+ "stnord": "http://www.postnord.no/minside/SOPS/\u0002\u00010",
+ "ststatus": "//poststatus.com/?s=\u0002\u00010",
+ "tafocal": "http://www.potafocal.com/?s=\u0002\u00010",
+ "tco": "//piratesonline.fandom.com/wiki/Special:Search?query=\u0002\u00010",
+ "ttery": {
+ "*": "//www.pentyofamelie.com/search/?term=\u0002\u00010",
+ "barn": "http://www.potterybarn.com/search/results.html?words=\u0002\u00010"
+ },
+ "uet": "http://pouet.net/search.php?what=\u0002&type=prod\u00015",
+ "upar": "//www.pouparmelhor.com/?s=\u0002\u00010",
+ "wells": "//www.powells.com/searchresults?keyword= \u0002\u00017",
+ "weren": "//poweren.ir/?s=\u0002\u00010",
+ "werui": "//powerui.kulestar.com/wiki/index.php?search=\u0002\u00010",
+ "wned": "//www.powned.it/?s=\u0002\u00010",
+ "ycp": "http://putonyourcakepants.com/?s=\u0002\u00010"
+ },
+ "p": {
+ "a": "//launchpad.net/ubuntu/+ppas?name_filter=\u0002\u000120",
+ "c": {
+ "g": "//codegolf.stackexchange.com/search?q=\u0002\u000134",
+ "*": "http://www.pocketpc.ch/google.php?cx=partner-pub-5163471580494836%3A7047225119&ie=UTF-8&cof=FORID%3A9&q=\u0002&sa.x=0&sa.y=0\u00010"
+ },
+ "g": "//papago.naver.com/?st=\u0002\u000152",
+ "l": {
+ "*": "//plymouthpubliclibrary.bibliocommons.com/search?utf8=%E2%9C%93&t=smart&search_category=keyword&q=\u0002\u00010",
+ "ware": "http://pplware.sapo.pt/resultados-da-pesquisa/?cx=partner-pub-1446920356351445%3Apqahidy83wu&cof=FORID%3A11&ie=UTF-8&q=\u0002&sa=Pesquisar\u00010",
+ "wiki": "//thepluginpeople.atlassian.net/wiki/dosearchsite.action?queryString=\u0002\u00010"
+ },
+ "*": "http://passapalavra.info/?s=\u0002\u00010",
+ "t": {
+ "*": "//duckduckgo.com/?q=\u0002+filetype%3Appt\u00010",
+ "rack": "http://emonitoring.poczta-polska.pl/?lang=en&numer=\u0002\u00010"
+ },
+ "in": "http://dictionary.pinpinchinese.com/search/t/\u0002\u00010",
+ "dev": "//developer.paypal.com/search/?q=\u0002\u00010"
+ },
+ "*": "//www.pinterest.com/search/pins/?q=\u0002\u0001691",
+ "r": {
+ "0": "http://pr0gramm.com/top/\u0002\u0001202",
+ "c": "http://www.progressiverc.com/catalogsearch/result/?q=\u0002\u00010",
+ "d": {
+ "b": "//www.protondb.com/search?q=\u0002\u000129",
+ "l": "http://www.prdl.org/search.php?q=\u0002\u00010",
+ "*": "http://paizo.com/search?q=\u0002&what=prd&includeUnrated=true&includeUnavailable=true\u00014"
+ },
+ "l": "http://journals.aps.org/search?q=\u0002\u000123",
+ "o": {
+ "7": "http://www.prosieben.de/suche?q=\u0002\u00010",
+ "c": {
+ "*": "/?q=\u0002+site:processing.org\u00010",
+ "essing": "/?q=\u0002+site:processing.org\u00010",
+ "omm": "//community.progress.com/search#q=\u0002\u00010",
+ "ook": "http://www.procook.co.uk/shop/search/?searchDep=main+site&searchstr=\u0002\u00010"
+ },
+ "g": {
+ "*": "http://programmers.stackexchange.com/search?q=\u0002\u00010",
+ "access": "//progaccess33.net/search/?q=\u0002\u00010",
+ "archives": "http://www.progarchives.com/google-search-results.asp?cof=FORID%3A10&ie=ISO-8859-1&q=\u0002&cx=partner-pub-0447992028883143%3Aj1syec-2iv1&sa=submit&siteurl=www.progarchives.com%252Falbum.asp%253Fid%253D998\u00016",
+ "ram": {
+ "*": "//www.codespeedy.com/?s=\u0002\u00010",
+ "mableweb": "http://www.programmableweb.com/search/\u0002\u00010",
+ "merhumor": "//www.reddit.com/r/ProgrammerHumor/search?q=\u0002&restrict_sr=on\u00010"
+ },
+ "ress": "http://knowledgebase.progress.com/pkb_Home?q=\u0002\u00010",
+ "rock": "http://www.progarchives.com/google-search-results.asp?cof=FORID%3A10&ie=ISO-8859-1&q=\u0002&cx=partner-pub-0447992028883143%3Aj1syec-2iv1&sa=submit&siteurl=www.progarchives.com%2F&ref=&ss=515j83611j5\u000122"
+ },
+ "m": {
+ "*": "//prom.ua/search?search_term=\u0002\u00019",
+ "obit": "//www.promobit.com.br/buscar?q=\u0002\u00010"
+ },
+ "*": "http://programmers.stackexchange.com/search?q=\u0002\u00010",
+ "z": "//www.proz.com/search/?term=\u0002\u00013",
+ "av": "//prostor-av.com/search/?q=\u0002\u00010",
+ "ff": "//www.proff.no/rollesøk?q=\u0002\u00013",
+ "ll": "http://www.precisionroller.com/search.php?q=\u0002\u00010",
+ "of": {
+ "*": "//proofwiki.org/w/index.php?search=\u0002\u00010",
+ "wiki": "http://www.proofwiki.org/w/index.php?title=Special%3ASearch&search=\u0002\u000121"
+ },
+ "builds": "//www.probuilds.net/champions/details/\u0002\u000110",
+ "dhun": "http://www.producthunt.com/#!/s/posts/\u0002\u00010",
+ "ducthunt": "//www.producthunt.com/search?q=\u0002\u0001192",
+ "fitopia": "//help.profitopia.de/search.html?q=\u0002&check_keywords=yes&area=default\u00010",
+ "jectgutenberg": "//www.gutenberg.org/ebooks/search/?query=\u0002\u000133",
+ "nounce": "http://dictionary.reference.com/browse/\u0002\u000120",
+ "nto": "http://www.pronto.com.ar/search/google?q=\u0002\u00010",
+ "shop": "//www.proshop.dk/?s=\u0002\u00010",
+ "tein": "//www.ncbi.nlm.nih.gov/protein/?term=\u0002\u00010",
+ "ton": {
+ "*": "//www.protondb.com/search?q=\u0002\u000129",
+ "db": "//www.protondb.com/search?q=\u0002\u000129",
+ "mail": "//mail.protonmail.com/search?keyword=\u0002\u0001714"
+ },
+ "tocentral": "//www.protocentral.com/search?controller=search&orderby=position&orderway=desc&search_query=\u0002\u00010",
+ "tocol": {
+ "*": "//www.protocol.co.il/?s=\u0002\u00010",
+ "sio": "//protocols.io/search?key=\u0002\u00010"
+ },
+ "vigo": "//www.provigo.ca/search/?search-bar=\u0002\u00010"
+ },
+ "*": "http://ar.prvademecum.com/?s=\u0002\u00016",
+ "ab": "//www.prabhasakshi.com/topics/\u0002\u00010",
+ "el": {
+ "*": "//archive.org/details/prelinger?and%5B%5D=\u0002\u00010",
+ "oved": "http://preloved.com/?q=\u0002\u00010"
+ },
+ "fc": "http://pretty-rfc.herokuapp.com/search?q=\u0002\u00015",
+ "is": {
+ "*": "//www.prisjakt.nu/search?search=\u0002\u000184",
+ "guide": "//www.prisguide.no/sok?q=\u0002\u00018",
+ "jakt": "//www.prisjakt.nu/search?search=\u0002\u000184"
+ },
+ "pl": "http://discover.poudrelibraries.org/iii/encore/search/C__S\u0002__Orightresult__U?lang=eng\u00010",
+ "pm": "http://prpm.dbp.gov.my/Search.aspx?k=\u0002\u00010",
+ "agprog": "//pragprog.com/search?q=\u0002\u00014",
+ "avda": "//www.pravda.sk/vyhladavanie/?q=\u0002\u00010",
+ "avidla": "http://www.pravidla.cz/hledej/?qr=\u0002\u00010",
+ "edictit": "//www.predictit.org/markets/search?query=\u0002\u00010",
+ "ess": "//prwirepro.com/?s=\u0002\u00010",
+ "esto": "http://www.prestoclassical.co.uk/search.php?searchString=\u0002\u00010",
+ "etium": "http://pretium.direct/search/?query=\u0002\u00010",
+ "ezi": "http://prezi.com/explore/search/?search=\u0002\u00010",
+ "ezzybox": "http://www.prezzybox.com/Search/?s=\u0002\u00010",
+ "iberam": "//www.priberam.pt/dlpo/\u0002\u0001172",
+ "ice": {
+ "*": "//www.amazon.com/s/?tag=duc0c-20&url=search-alias%3Daps&field-keywords=\u0002\u000141823",
+ "hk": "http://www.price.com.hk/search.php?g=A&q=\u0002\u000140",
+ "ro": "//www.price.ro/index.php?action=q&text=\u0002&submit=Cauta\u00010",
+ "grabber": "http://www.pricegrabber.com/\u0002/products.html/form_keyword=\u0002/st=query/sv=findit_top\u00010",
+ "mania": "//www.pricemania.sk/katalog/vyhladavanie/\u0002.html\u00010",
+ "run": {
+ "*": "http://www.pricerunner.dk/search?q=\u0002\u000138",
+ "ner": "http://www.pricerunner.se/pl/360-364563094/Herrklaeder/Jam-OD-Yellow-Yellow-over-dyed-jean-jacket-priser?other_hits=%3B25607%3B%3B&q=acne+jam+od+yellow+yellow&ref=redirect&search=\u0002&sort=4\u00018"
+ },
+ "spy": "//pricespy.co.nz/search?search=\u0002\u00017",
+ "watch": "http://tweakers.net/pricewatch/zoeken/?keyword=\u0002\u000156"
+ },
+ "ide": "//www.outcast.amsterdam/search?type=product&q=\u0002\u00010",
+ "imo": "//fu-berlin.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&tab=fub&search_scope=FUB_ALL&vid=FUB&lang=de_DE&offset=0\u00010",
+ "imfx": "//www.primfx.com/q/\u0002/\u00010",
+ "imeabgb": "//www.primeabgb.com/?s=\u0002&post_type=product\u00010",
+ "imeinspire": "//www.primeinspiration.com/?s=\u0002\u00010",
+ "imevideo": {
+ "*": "//www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Dprime-instant-video&field-keywords=\u0002\u000145",
+ "jp": "//www.amazon.co.jp/s/?url=search-alias%3Dinstant-video&field-keywords=\u0002\u00010"
+ },
+ "imrose": "http://www.primrose.co.uk/search.mvc?search_term=\u0002\u00010",
+ "inceton": {
+ "*": "//www.princeton.edu/main/tools/search/?q=\u0002&x=0&y=0\u00010",
+ "lib": "//library.princeton.edu/find/all/\u0002\u00010",
+ "review": "//www.princetonreview.com/search-results?q=\u0002\u00010"
+ },
+ "inteera": "//printeera.com/search?type=product&q=\u0002\u00010",
+ "ivacy": "//www.reddit.com/r/privacy/search?q=\u0002&restrict_sr=on\u00019",
+ "usa": "//www.prusaprinters.org/search/all?q=\u0002\u00019"
+ },
+ "s": {
+ "a": "//palmettostatearmory.com/catalogsearch/result/?q=\u0002\u000110",
+ "e": "//physics.stackexchange.com/search?q=\u0002\u00010",
+ "g": {
+ "*": "//www.powershellgallery.com/packages?q=\u0002\u00014",
+ "ca": "//store.playstation.com/en-ca/grid/search-game/1?query=\u0002\u00010"
+ },
+ "i": {
+ "*": "//www.psi.ch/search/telefonbuch-und-e-mail?q=\u0002\u00013",
+ "mplified": "http://www.programmingsimplified.com/search/node/\u0002\u00010",
+ "ram": "//www.psiram.com/de/index.php?title=Spezial%3ASuche&profile=default&search=\u0002&fulltext=Search\u00016"
+ },
+ "j": {
+ "i": "http://image.parsijoo.ir/image?q=\u0002\u00010",
+ "*": "http://parsijoo.ir/web?q=\u0002\u00010"
+ },
+ "n": {
+ "*": "//store.playstation.com/#!/en-us/search/q=\u0002\u000136",
+ "z": "//pricespy.co.nz/search?q=\u0002\u00010",
+ "de": "//store.playstation.com/de-de/search/\u0002\u00010",
+ "jp": "//store.playstation.com/ja-jp/search/\u0002\u00010",
+ "nz": "//store.playstation.com/en-nz/grid/search-game/1?query=\u0002\u00010",
+ "uk": "http://store.playstation.com/#!/en-gb/search/q=\u0002\u00010",
+ "profiles": "//psnprofiles.com/search/games?q=\u0002\u000111"
+ },
+ "o": "//www.psoriasis-netz.de/?s=\u0002\u00010",
+ "*": "//www.playstation.com/search-results/?q=\u0002\u00013",
+ "s": "//store.playstation.com/en-us/search/\u0002\u00016",
+ "u": {
+ "k": "//pricespy.co.uk/search?q=\u0002\u00010",
+ "*": "http://www.psu.edu/search/gss?query=\u0002\u00010",
+ "dc": "http://www.collegian.psu.edu/search/?f=html&q=\u0002\u00010",
+ "lib": "http://psu.summon.serialssolutions.com/search/results?spellcheck=true&q=\u0002&x=0&y=0\u00010"
+ },
+ "y": {
+ "*": "//psychonautwiki.org/w/index.php?search=\u0002&title=Special:Search\u000181",
+ "ch": {
+ "*": "//psychiatry.org/home/search-results?k=\u0002\u00010",
+ "22": "//www.psychologytoday.com/us/search/site/\u0002\u00010",
+ "onautwiki": "//psychonautwiki.org/w/index.php?search=\u0002\u000122"
+ }
+ },
+ "ci": "http://www.podcastscience.fm/?s=\u0002 \u00010",
+ "mb": "//docs.microsoft.com/en-us/powershell/module/?term=\u0002\u00014",
+ "ql": "http://www.postgresql.org/search/?q=\u0002 &a=1&submit=Search\u000131",
+ "te": "//pste.eu/?q=\u0002\u00010",
+ "ddude": "http://www.psd-dude.com/tutorials/?search=\u0002\u00010",
+ "pgen": "http://www.pspgen.com/s/\u0002/\u00010",
+ "prices": "//psprices.com/search/?q=\u0002\u000135"
+ },
+ "t": {
+ "g": "//the-ptg.blogspot.in/search?q=\u0002\u00010",
+ "h": "//www.planttherapy.com/search?Store_Code=PT&q=\u0002\u00010",
+ "n": "//www.protondb.com/search?q=\u0002\u000129",
+ "*": "//www.powerthesaurus.org/\u0002\u0001187",
+ "r": "http://www.protoolreviews.com/?s=\u0002\u00010",
+ "t": "//www.ptt.cc/bbs/\u0002\u000151",
+ "v": "//www.ptv.vic.gov.au/search/getForm?Search=\u0002&action_getSearchResults=Go\u00010",
+ "ax": "http://jp.search.app.ricoh/en_imaging/search.x?q=\u0002\u00010",
+ "cg": "http://pkmncards.com/?s=\u0002&display=card&sort=date\u00010",
+ "en": "//translate.google.com/#pt/en/\u0002\u0001125",
+ "es": "//translate.google.com/#pt/es/\u0002\u00018",
+ "ube": "//peer.tube/search?search=\u0002\u00017"
+ },
+ "u": {
+ "b": {
+ "g": {
+ "*": "//pubgmobileupdate.com/?s=\u0002\u00010",
+ "wiki": "//pubg.gamepedia.com/index.php?search=\u0002\u00010"
+ },
+ "*": "//www.ncbi.nlm.nih.gov/pubmed?EntrezSystem2.PEntrez.Pubmed.SearchBar.Db=pubmed&term=\u0002\u0001116",
+ "s": "http://www.pubsgalore.co.uk/search.php?search=\u0002\u00010",
+ "lc": "//publc.com/\u0002\u00010",
+ "chem": "http://www.ncbi.nlm.nih.gov/pccompound/?term=\u0002\u000125",
+ "dev": "//pub.dev/packages?q=\u0002\u0001189",
+ "labs": "//pubmed.ncbi.nlm.nih.gov/?term=\u0002\u00010",
+ "lix": "http://www.publix.com/search?query=\u0002\u00010",
+ "lico": "http://www.publico.pt/pesquisa?q=\u0002\u00010",
+ "licintelligence": "//publicintelligence.net/?s=\u0002\u00010",
+ "med": "//www.ncbi.nlm.nih.gov/pubmed/?term=\u0002\u0001225"
+ },
+ "c": {
+ "*": "http://packages.ubuntu.com/\u0002\u000117",
+ "sp": "//www.pucsp.br/buscar?search_api_fulltext=\u0002&field_area_de_conhecimento=All&field_escola=&type=All\u00010"
+ },
+ "*": "//www.pulseuniform.com/search.asp?q=\u0002\u00013",
+ "id": "http://nationalarchives.gov.uk/PRONOM/\u0002\u00016",
+ "rs": {
+ "*": "//pursuit.purescript.org/search?q=\u0002\u000136",
+ "uit": "//pursuit.purescript.org/search?q=\u0002\u000136"
+ },
+ "mpbiz": "http://www.pumpbiz.com/shopping_search.asp?searchString=\u0002&searchType=0&FIND.x=0&FIND.y=0&FIND=FIND+IT\u00010",
+ "nctumbooks": "//punctumbooks.com/?s=\u0002\u00010",
+ "ppet": "http://forge.puppetlabs.com/modules?q=\u0002&commit=Go\u000151",
+ "ptype": "//docs.puppet.com/puppet/latest/type.html#\u0002\u00010",
+ "redata": "http://puredata.info/search?SearchableText=\u0002\u00010",
+ "rolator": "//eshiponline.purolator.com/ShipOnline/Public/Track/TrackingDetails.aspx?pin=\u0002\u00013",
+ "rplemath": "http://search.freefind.com/find.html?id=5014414&pageid=r&mode=ALL&n=0&query=\u0002\u00010",
+ "zzse": "//puzzling.stackexchange.com/search?q=\u0002\u000128",
+ "zzles": "http://www.puzzlopia.com/search-results?search=\u0002\u00010"
+ },
+ "v": {
+ "*": "//www.primevideo.com/region/eu/search/ref=dv_web_nav_search?phrase=\u0002&ie=UTF8\u0001222",
+ "z": "http://plantsvszombies.wikia.com/wiki/Special:Search?query=\u0002\u00014"
+ },
+ "w": {
+ "c": "//paperswithcode.com/search?q=\u0002\u000132",
+ "f": "//polarweldfin.com/etsi?controller=search&s=\u0002\u00010",
+ "p": "//fa.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "*": "http://www.pricewatch.com/search?q=\u0002 \u000110",
+ "v": "//programadorwebvalencia.com/blog/?search=\u0002\u000113",
+ "de": "http://www.pokewiki.de/index.php?search=\u0002&title=Spezial%3ASuche&go=Seite\u000112",
+ "iki": "//psychonautwiki.org/w/index.php?search=\u0002\u000122",
+ "ned": "//haveibeenpwned.com/account/\u0002\u00010"
+ },
+ "x": {
+ "b": "http://pixabay.com/en/photos/?q=\u0002\u000176",
+ "c": "http://www.phoenixcontact.com/online/portal/us?q=\u0002&uri=pxc-search%3Awebsite&library=usen\u000110",
+ "*": "http://pixabay.com/en/photos/?q=\u0002\u000176",
+ "v": {
+ "g": "//pixabay.com/en/photos/?image_type=vector&cat=&min_width=&min_height=&q=\u0002&order=latest\u00010",
+ "*": "//pixabay.com/en/photos/?q=\u0002&image_type=vector&cat=&min_width=&min_height=\u00010"
+ },
+ "here": "//pxhere.com/en/photos?q=\u0002\u00010"
+ },
+ "y": {
+ "2": {
+ "7": "//docs.python.org/2.7/search.html?q=\u0002\u00010",
+ "*": "//docs.python.org/2.7/search.html?q=\u0002\u00010"
+ },
+ "3": {
+ "4": "//docs.python.org/3.4/search.html?q=\u0002\u00014",
+ "5": "//docs.python.org/3.5/search.html?q=\u0002\u00010",
+ "k": "http://docs.python.org/3/search.html?q=\u0002\u000120",
+ "*": "//docs.python.org/3/search.html?q=\u0002\u0001465",
+ "fr": "//docs.python.org/fr/3/search.html?q=\u0002\u00010",
+ "6doc": "//docs.python.org/3.6/library/\u0002.html\u00010"
+ },
+ "a": "http://www.primiciasya.com/search.html?q=\u0002\u00010",
+ "*": "//docs.python.org/3/search.html?q=\u0002\u0001465",
+ "lm": "http://pylint-messages.wikidot.com/messages:\u0002\u00010",
+ "pa": "//pypi.org/search/?q=\u0002\u00017",
+ "pi": "//pypi.org/search/?q=\u0002\u00017",
+ "qt": {
+ "5": "//www.riverbankcomputing.com/static/Docs/PyQt5/search.html?q=\u0002&check_keywords=yes&area=default\u00010",
+ "*": "http://pyqt.sourceforge.net/Docs/PyQt5/search.html?q=\u0002\u00010"
+ },
+ "bug": "//bugs.python.org/issue?search_text=\u0002\u00010",
+ "game": "//www.pygame.org/docs/search.html?q=\u0002\u00010",
+ "mel": "//help.autodesk.com/cloudhelp/2018/ENU/Maya-Tech-Docs/PyMel/search.html?q=\u0002&check_keywords=yes\u00010",
+ "ramid": "//docs.pylonsproject.org/projects/pyramid/en/latest/search.html?q=\u0002\u00010",
+ "side": {
+ "2": "//doc-snapshots.qt.io/qtforpython/search.html?q=\u0002&check_keywords=yes&area=default\u00010",
+ "*": "http://www.pyside.org/docs/pyside/search.html?q=\u0002&check_keywords=yes&area=default\u00010"
+ },
+ "spark": "//spark.apache.org/docs/latest/api/python/search.html?q=\u0002\u00015",
+ "thon": {
+ "2": {
+ "6": "http://docs.python.org/2.6/search.html?q=\u0002&check_keywords=yes&area=default\u00010",
+ "7": "http://docs.python.org/2.7/search.html?q=\u0002&check_keywords=yes&area=default\u00010",
+ "*": "//docs.python.org/2/search.html?q=\u0002\u000121"
+ },
+ "3": {
+ "0": "http://docs.python.org/3.0/search.html?q=\u0002&check_keywords=yes&area=default\u00010",
+ "1": "http://docs.python.org/3.1/search.html?q=\u0002&check_keywords=yes&area=default\u00010",
+ "2": "http://docs.python.org/3.2/search.html?q=\u0002&check_keywords=yes&area=default\u00010",
+ "*": "//docs.python.org/3/search.html?q=\u0002\u0001465"
+ },
+ "*": "//docs.python.org/3/search.html?q=\u0002\u0001465",
+ "dev": "http://docs.python.org/dev/search.html?q=\u0002 \u00018"
+ },
+ "torch": "//pytorch.org/docs/stable/search.html?q=\u0002&check_keywords=yes&area=default\u000176",
+ "video": "http://pyvideo.org/search?models=videos.video&q=\u0002\u00010"
+ },
+ "4k": "http://pitchfork.com/search/?query=\u0002\u000197",
+ "zw": "//pzwiki.net/w/index.php?search=\u0002\u00010",
+ "6mod": "//modules.perl6.org/search/?q=\u0002\u00010"
+ },
+ "q": {
+ "b": "//www.quimbee.com/search?q=\u0002\u00010",
+ "c": {
+ "*": "//www.qconcursos.com/busca?q=\u0002\u00010",
+ "ubbrux": "http://www.qcunbon.be/bruxelles?q=\u0002\u00010"
+ },
+ "m": {
+ "e": "http://m.quickmeme.com/search/?q=\u0002\u00010",
+ "*": "//www.qwant.com/music/search?q=\u0002\u00016",
+ "aps": "//www.qwant.com/maps/?q=\u0002\u000117"
+ },
+ "p": {
+ "*": "//www.quip.com/search?q=\u0002\u00010",
+ "on": "http://qpongo.com/ddgsearch.aspx?q=\u0002\u00010"
+ },
+ "*": "//www.quora.com/search?q=\u0002\u0001602",
+ "r": {
+ "*": "//api.qrserver.com/v1/create-qr-code/?qzone=1&data=\u0002\u0001441",
+ "z": "http://www.qrz.com/db/?callsign=\u0002&cmd=Search\u000156",
+ "decode": "http://zxing.org/w/decode?u=\u0002\u00013"
+ },
+ "s": {
+ "o": "//quant.stackexchange.com/search?q=\u0002\u00010",
+ "*": "//help.qlik.com/en-US/search/?q=\u0002\u00010",
+ "r": "//www.qsrmagazine.com/search/site/\u0002\u00010",
+ "sl": "//www.ssllabs.com/ssldb/analyze.html?d=\u0002&hideResults=on\u00010",
+ "tu": "//www.topuniversities.com/search/site/\u0002\u00010"
+ },
+ "t": {
+ "3": "//forum.quartertothree.com/search?expanded=true&q=\u0002\u00010",
+ "4": "//doc.qt.io/qt-4.8/search-results.html?q=\u0002\u00010",
+ "5": "http://doc.qt.io/qt-5/search-results.html?q=\u0002\u00016",
+ "*": "//doc.qt.io/qt-5/search-results.html?q=\u0002\u0001115"
+ },
+ "w": {
+ "e": "//www.qwantjunior.com/?q=\u0002&t=education\u00010",
+ "i": "//www.qwant.com/?q=\u0002&t=images\u000117",
+ "l": "//lite.qwant.com/?q=\u0002\u00014",
+ "m": "//www.qwant.com/music/search?q=\u0002\u00016",
+ "n": "//www.qwant.com/?q=\u0002&t=news\u00014",
+ "*": "//www.qwant.com/?q=\u0002\u0001175",
+ "s": "//www.qwant.com/?q=\u0002&t=social\u00010",
+ "t": "//qwant.com/?q=\u0002\u00010",
+ "v": "//www.qwant.com/?q=\u0002&t=videos\u000110",
+ "w": "//www.qwant.com/?q=\u0002&t=web\u000136",
+ "ant": "//www.qwant.com/?q=\u0002\u0001175"
+ },
+ "z": "http://qz.com/search/\u0002\u00010",
+ "at": "http://quinapalus.com/cgi-bin/qat?pat=\u0002\u00010",
+ "az": "http://qaz.wtf/u/convert.cgi?text=\u0002\u00015",
+ "db": "http://www.bash.org/?search=\u0002\u00010",
+ "es": "//es.quora.com/search?q=\u0002\u00010",
+ "im": {
+ "a": {
+ "*": "http://www.qim.com/albums/albums.asp?search=\u0002\u00010",
+ "lbum": "http://www.qim.com/albums/albums.asp?search=\u0002\u00010",
+ "rtiste": "http://www.qim.com/artistes/artiste.asp?search=\u0002\u00010"
+ },
+ "*": "http://www.qim.com/artistes/artiste.asp?search=\u0002\u00010"
+ },
+ "li": "//beta.cliqz.com/search?q=\u0002\u00010",
+ "oq": "//questso.blogspot.com/search?q=\u0002\u00010",
+ "um": "http://www.qumran2.net/indice.php?parole=\u0002\u00010",
+ "un": "//qunwang6.github.io/?q=\u0002\u00010",
+ "ur": {
+ "*": "http://quran.com/search?q=\u0002\u00019",
+ "an": "http://quran.com/search?q=\u0002\u00019"
+ },
+ "vc": "http://www.qvc.com/catalog/search.html?langId=-1&storeId=10251&catalogId=10151&keyword=\u0002\u000159",
+ "iita": "http://qiita.com/search?q=\u0002\u000130",
+ "lcrew": "//qlcrew.com/?q=\u0002\u00010",
+ "obuz": "http://www.qobuz.com/recherche?q=\u0002\u000127",
+ "ual": {
+ "*": "//www.qualtrics.com/support/search/?q=\u0002\u00016",
+ "ebs": "//www.qualebs.com/techbay/search?query=\u0002\u00010"
+ },
+ "uay": "//quay.io/search?q=\u0002\u00010",
+ "uandl": "//www.quandl.com/search?query=\u0002\u00010",
+ "uantcast": "//www.quantcast.com/home/site/search/\u0002\u00010",
+ "uartz": "http://qz.com/search/\u0002\u00010",
+ "uebecinfomusique": "http://www.qim.com/artistes/artiste.asp?search=\u0002\u00010",
+ "ueenslibrary": "http://www.queenslibrary.org/search/apachesolr_search/\u0002\u00010",
+ "ueryposts": "http://queryposts.com/?s=\u0002\u00010",
+ "uickdocs": "http://quickdocs.org/search?q=\u0002\u00010",
+ "uirky": "//www.quirky.com/search?query=\u0002\u00010",
+ "uizlet": "http://quizlet.com/subject/\u0002/\u00019",
+ "uora": "http://www.quora.com/search?q=\u0002&context_type=&context_id=\u000170",
+ "uotes": "http://en.wikiquote.org/wiki/Special:Search?search=\u0002\u00015",
+ "uotev": "//www.quotev.com/search/\u0002\u00010",
+ "uoteinvestigator": "//quoteinvestigator.com/?s=\u0002\u00010",
+ "uttera": "//quttera.com/sitescan/\u0002\u00010"
+ },
+ "r": {
+ "7": "http://www.rapid7.com/db/search?utf8=%E2%9C%93&q=\u0002 &t=a\u00010",
+ "a": {
+ "d": {
+ "*": "//radiopaedia.org/search?utf8=✓&q=\u0002&scope=all\u00017",
+ "hd": "//www.reddit.com/r/ADHD/search/?q=\u0002&restrict_sr=1\u00010",
+ "io": {
+ "*": "//radiopaedia.org/search?utf8=%E2%9C%93&q=\u0002&scope=all\u00018",
+ "24": "//www.radio24.ilsole24ore.com/ricerca/\u0002\u00010",
+ "javan": "//www.radiojavan.com/search?query=\u0002\u00010",
+ "paedia": "http://radiopaedia.org/search?q=\u0002\u00010",
+ "shack": "//www.radioshack.com/search?q=\u0002\u00010",
+ "times": "http://www.radiotimes.com/search?q=\u0002\u00010"
+ }
+ },
+ "e": "//dle.rae.es/?w=\u0002\u00011649",
+ "f": "http://animorphsforum.com/index.php?action=search;advanced;search=\u0002\u00010",
+ "g": "http://academia.gal/dicionario/-/termo/busca/\u0002\u000171",
+ "h": "//roosterteeth.com/channel/achievement-hunter#search?term=\u0002\u00010",
+ "i": {
+ "*": "//www.raiplay.it/ricerca?q=\u0002\u00010",
+ "ls": {
+ "*": "http://api.rubyonrails.org/?q=\u0002\u0001111",
+ "casts": "http://railscasts.com/?search=\u0002\u00010",
+ "dock": "http://apidock.com/rails/search?query=\u0002\u00010",
+ "guides": "//duckduckgo.com/?q=\u0002+site%3Aguides.rubyonrails.org\u00013"
+ },
+ "derio": "//raider.io/search?type=character&name[0][contains]=\u0002\u00017"
+ },
+ "l": {
+ "*": "http://rgb.to/ral/\u0002\u00010",
+ "it": "http://search.rockwellautomation.com/search?q=\u0002&client=literature&filter=0&ie=UTF-8&oe=UTF-8&output=xml_no_dtd&proxystylesheet=literature&site=literature&getfields=*&lang=en&hl=en&num=20&requiredfields=xlanguage%3AMU%7Cxlanguage%3AEN\u00010",
+ "lypoint": "//www.rallypoint.com/answers?q=\u0002\u00010",
+ "vid": "http://ralvid.ml/search.php?q=\u0002\u00015"
+ },
+ "p": {
+ "*": "//genius.com/search?q=\u0002\u00014119",
+ "arts": "//www.reliableaftermarketparts.com/search?q=\u0002\u00010",
+ "genius": "http://rapgenius.com/search?q=\u0002\u00014",
+ "idonline": "//www.rapidonline.com/Catalogue/Search?Query=\u0002\u00010"
+ },
+ "*": "http://www.residentadvisor.net/search.aspx?searchstr=\u0002\u000115",
+ "y": {
+ "*": "//www.raywenderlich.com/?s=\u0002\u00010",
+ "mond": "//raymond-nh.com/?s=\u0002\u00010"
+ },
+ "cv": "//www.racv.com.au/search-results.html?q=\u0002\u00010",
+ "ru": "//raru.co.za/search/\u0002\u00014",
+ "te": {
+ "*": "//www.ratemyprofessors.com/search.jsp?query=\u0002\u00013",
+ "beer": "//www.ratebeer.com/search?q=\u0002\u000117",
+ "myprofessor": "http://www.ratemyprofessors.com/search.jsp?query=\u0002\u00010",
+ "yourgenre": "//rateyourmusic.com/genre/\u0002\u00010",
+ "yourmusic": "http://rateyourmusic.com/search?searchterm=\u0002&searchtype=a\u000145"
+ },
+ "tp": "//www.ratp.fr/itineraires?start=\u0002&lieu_depart=station&\u00017",
+ "wg": "//rawg.io/search?query=\u0002\u00014",
+ "amattu": "http://www.koivuniemi.com/raamattuhaku?tila=pikahaku&hakuehto=\u0002\u00010",
+ "bbionrails": "//blog.yechiel.me/search?q=\u0002\u00010",
+ "cing": "http://www.racing.com/search?q=\u0002\u00010",
+ "cket": "http://docs.racket-lang.org/search/index.html?q=\u0002\u0001151",
+ "cksforcars": "//www.racksforcars.com/store/search.asp?keyword=\u0002\u00010",
+ "kde": "//www.rakuten.de/suchen/\u0002?category=0\u00010",
+ "kuten": {
+ "g": "//global.rakuten.com/en/search/?k=\u0002\u00010",
+ "*": "//search.rakuten.co.jp/search/mall/\u0002/\u000119"
+ },
+ "mda": "http://ramdajs.com/docs/#\u0002\u000124",
+ "ndt": "//www.roadandtrack.com/search/?q=\u0002\u00010",
+ "ndom": "//www.random.org/search?q=\u0002\u000128",
+ "spberrypi": "http://www.raspberrypi.org/?s=\u0002\u00010",
+ "tamo": "//ratamo.verkkokirjasto.fi/web/arena/search?p_p_id=searchResult_WAR_arenaportlets&p_r_p_687834046_search_query=\u0002\u00010",
+ "tgeber": "//www.topratgeber24.de/suche?s=\u0002\u00010",
+ "tionalwiki": "http://rationalwiki.org/w/index.php?search=\u0002&button=&title=Special:Search&go=Go\u000142",
+ "tko": "//www.ratkojat.fi/hae?s=\u0002\u00010",
+ "velry": "http://www.ravelry.com/patterns/search#query=\u0002\u00015",
+ "zer": "//www.razer.com/search/?text=\u0002\u000113",
+ "zzball": "http://razzball.com/index.php?s=\u0002\u00010"
+ },
+ "b": {
+ "c": "//www.rbcroyalbank.com/search-public/index.html?question=\u0002\u00010",
+ "*": "//rubydocs.org/d/ruby-latest/?q=\u0002\u000120",
+ "l": {
+ "*": "http://www.dnswatch.info/dns/rbl-lookup?host=\u0002&submit=RBL+Lookup\u00010",
+ "x": {
+ "g": "//www.roblox.com/search/users?keyword=\u0002\u00010",
+ "*": "http://www.roblox.com/Catalog/Lists.aspx?m=TopFavorites&c=9&t=AllTime&d=All&q=\u0002\u0001144"
+ }
+ },
+ "n": {
+ "*": "http://rbnorway.org/?s=\u0002\u00010",
+ "dx": "http://www.reversebeacon.net/dxsd1/dxsd1.php?f=0&c=\u0002&t=dx\u00010"
+ },
+ "t": {
+ "b": "//www.ruby-toolbox.com/?q=\u0002\u00010",
+ "c": "http://www.metric-conversions.org/pt/moeda/bitcoin-em-real.htm?val=\u0002\u00010",
+ "g": "//rbt.asia/g/search/text/\u0002\u00010",
+ "*": "//rbt.asia/_/search/text/\u0002\u0001138",
+ "ag": "http://www.radio-browser.info/gui/#!/bytag/\u0002\u00010",
+ "mu": "//rbt.asia/mu/search/text/\u0002/\u00010"
+ },
+ "bg": "//www.rbbg.it/opac/search/lst?q=\u0002\u00010",
+ "xw": "http://wiki.roblox.com/index.php?search=\u0002\u00010",
+ "ugs": "//bugzilla.redhat.com/buglist.cgi?quicksearch=\u0002\u00010",
+ "xdev": "//devforum.roblox.com/search?q=\u0002\u00019"
+ },
+ "c": {
+ "e": {
+ "f": "http://context.reverso.net/translation/english-french/\u0002\u00018",
+ "*": "//doc.rust-lang.org/error-index.html#E\u0002\u00010",
+ "npl": "http://context.reverso.net/translation/english-polish/\u0002\u000115",
+ "nru": "//context.reverso.net/translation/english-russian/\u0002\u000110"
+ },
+ "f": {
+ "e": "http://context.reverso.net/translation/french-english/\u0002\u00018",
+ "*": "//rcf.fr/rechercher/\u0002\u00010",
+ "r": {
+ "*": "//www.ricardocuisine.com/recherche/mot-cle/\u0002\u00010",
+ "nl": "http://context.reverso.net/translation/french-dutch/\u0002\u00010"
+ }
+ },
+ "l": {
+ "*": "//raleigh.craigslist.org/search/?query=\u0002\u00010",
+ "ippy": "//rust-lang.github.io/rust-clippy/master/index.html#\u0002\u00010",
+ "ivre": "//www.recyclivre.com/shop/recherche?orderby=price&orderway=asc&search_query=\u0002&submit_search=&s=\u00010"
+ },
+ "p": {
+ "p": "http://www.cplusplus.com/search.do?q=\u0002\u00010",
+ "*": "http://www.realclearpolitics.com/search/?q=\u0002\u000125",
+ "lde": "http://context.reverso.net/t%C5%82umaczenie/niemiecki-polski/\u0002\u00010",
+ "len": "http://context.reverso.net/translation/polish-english/\u0002\u000115"
+ },
+ "*": "//www.readerscave.com/?s=\u0002\u00013",
+ "w": "http://apps.leg.wa.gov/RCW/default.aspx?cite=\u0002\u00010",
+ "db": "http://rcdb.com/qs.htm?qs=\u0002\u000124",
+ "sb": "http://rcsb.org/pdb/explore/explore.do?structureId=\u0002\u00013",
+ "ss": "//www.realcanadiansuperstore.ca/search/?search-bar=\u0002\u00010",
+ "onj": "http://bab.la/conjugaison/russe/\u0002\u00010",
+ "ruen": "//context.reverso.net/translation/russian-english/\u0002\u000110"
+ },
+ "f": {
+ "c": {
+ "*": "//tools.ietf.org/html/rfc\u0002\u0001157",
+ "k": "//www.rfc-editor.org/search/rfc_search_detail.php?title=\u0002\u00010",
+ "r": "http://www.rfcreader.com/#rfc\u0002\u00010",
+ "lipart": "http://rfclipart.com/search.html?text=\u0002\u00010"
+ },
+ "d": "//refind.com/?q=\u0002\u00013",
+ "*": "http://www.reasonablefaith.org/search/results?q=\u0002\u000111",
+ "r": "http://dictionnaire.reverso.net/francais-definition/\u0002\u00010",
+ "s": {
+ "*": "http://www.radiofreesatan.com/?s=\u0002&submit=Submit\u00010",
+ "ana": {
+ "e": "//redfoxsanakirja.fi/sanakirja/-/s/eng/fin/\u0002\u00010",
+ "*": "//redfoxsanakirja.fi/sanakirja/-/s/fin/eng/\u0002\u00010"
+ }
+ }
+ },
+ "g": {
+ "i": "//images.google.com/searchbyimage?image_url=\u0002\u000174",
+ "o": "//www.reddit.com/r/GlobalOffensive/search/?q=\u0002&restrict_sr=1\u00018",
+ "*": "http://rapgenius.com/search?q=\u0002\u00014",
+ "ate": "//www.researchgate.net/search.Search.html?query=\u0002\u000122"
+ },
+ "h": {
+ "q": "http://www.runehq.com/search.php?q=\u0002\u00010",
+ "*": "//robinhood.com/stocks/\u0002\u000142",
+ "t": {
+ "*": "//access.redhat.com/search/#/?q=\u0002&p=1&srch=any&language=en&documentKind=Documentation\u00010",
+ "t": "//www.stateofthedapps.com/dapps?text=\u0002\u00010"
+ },
+ "bz": "//bugzilla.redhat.com/buglist.cgi?quicksearch=\u0002\u00010",
+ "sa": "//rhn.redhat.com/errata/RHSA-\u0002.html\u00010",
+ "ino": "http://www.food4rhino.com/browse?searchText=\u0002\u00010",
+ "ydo": "//www.rhydolabz.com/advanced_search_result.html?keyword=\u0002\u00010",
+ "yme": {
+ "*": "//www.rhymezone.com/r/rhyme.cgi?Word=\u0002&typeofrhyme=perfect&org1=syl&org2=l&org3=y\u000151",
+ "r": "http://www.rhymer.com/RhymingDictionary/\u0002.html\u00010",
+ "brain": "http://rhymebrain.com/en/What_rhymes_with_\u0002.html\u00014"
+ }
+ },
+ "j": "//www.radiojavan.com/search?query=\u0002\u00010",
+ "k": {
+ "n": {
+ "*": "//reestr.rublacklist.net/search/?q=\u0002\u00010",
+ "astro": "//rknastrovastu.com/?s=\u0002\u00010"
+ },
+ "*": "http://www.robokart.com/index.php?route=product/search&search=\u0002\u00010",
+ "t": "//docs.racket-lang.org/search/index.html?q=\u0002\u000160"
+ },
+ "m": {
+ "*": "http://www.gurusrom.net/search/term=\u0002\u00014",
+ "k": "//www.reddit.com/r/MechanicalKeyboards/search?q=\u0002&sort=relevance&t=all\u00010",
+ "n": "http://www.retailmenot.com/s/\u0002\u000111",
+ "p": "//www.ratemyprofessors.com/search.jsp?query=\u0002\u00013",
+ "w": "//rimworldwiki.com/index.php?search=\u0002&title=Special%3ASearch\u000147",
+ "it": "//www.rmit.edu.au/search?q=\u0002\u00010",
+ "ail": "//www.royalmail.com/track-your-item#/tracking-results/\u0002\u00010",
+ "elb": "//www.reddit.com/r/melbourne/search?q=\u0002&restrict_sr=on&sort=relevance&t=all\u00010"
+ },
+ "n": {
+ "l": "//duckduckgo.com/?q=\u0002&kl=nl-nl\u000135",
+ "*": "http://india.recruit.net/search.html?query=\u0002&location=delhi\u00010",
+ "z": "//www.radionz.co.nz/search/results?utf8=%E2%9C%93&q=\u0002&commit=Search\u00010",
+ "24": "http://en.rocketnews24.com/?s=\u0002\u00010"
+ },
+ "o": {
+ "*": "//www.admin.ch/opc/search/?text=\u0002&lang=fr&language%5B%5D=fr&product%5B%5D=ClassifiedCompilation\u000110",
+ "k": {
+ "*": "http://www.returnofkings.com/?s=\u0002\u00010",
+ "u": "//owner.roku.com/Add/\u0002\u00016",
+ "omari": "http://rokomari.com/search?term=\u0002\u000110"
+ },
+ "s": {
+ "*": "http://www.ros.org/search/index.html?cx=018259903093183594226%3Atxvzw9fat6w&cof=FORID%3A11%3BNB%3A1&ie=UTF-8&filter=0&num=10&input=\u0002&q=\u0002&sa=Submit\u00013",
+ "w": "//wiki.ros.org/\u0002\u00010",
+ "tr": "//rostr.disney.com/search_results?query=\u0002\u00010",
+ "ettacode": "http://rosettacode.org/mw/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00018",
+ "sde": "//www.rossmann.de/verbraucherportal/toolbox/suche.html?query=\u0002\u00010"
+ },
+ "ck": {
+ "*": "//luarocks.org/search?q=\u0002\u000123",
+ "et": {
+ "*": "http://www.rocketindustrial.com/catalogsearch/result/?q=\u0002\u00010",
+ "beans": "//www.rocketbeans.tv/?s=\u0002\u00010",
+ "hub": "http://rockethub.com/projects?utf8=%E2%9C%93&q=\u0002\u00010"
+ },
+ "it": "//www.rockit.it/web/cerca.php?k=\u0002\u00010",
+ "ol": "http://www.rockol.it/search.php?s=\u0002\u00010",
+ "auto": "//www.rockauto.com/en/partsearch/?partnum=\u0002\u00017",
+ "papershotgun": "http://www.rockpapershotgun.com/?s=\u0002\u00010"
+ },
+ "do": "//gdpr.pl/?s=\u0002\u00010",
+ "fi": "http://www.dictionar-finlandez.net/online/?word=\u0002\u00010",
+ "ld": "//old.reddit.com/search?q=\u0002\u0001174",
+ "ot": {
+ "h": "//www.roothax.com/?s=\u0002\u00010",
+ "*": "http://root.cern.ch/drupal/search/node/\u0002\u00016"
+ },
+ "r2": "//riskofrain2.fandom.com/wiki/Special:Search?query=\u0002\u000149",
+ "to": "//www.rotoworld.com/search#query=\u0002\u000139",
+ "adandtrack": "//www.roadandtrack.com/search/?q=\u0002\u00010",
+ "bertchristgau": "//robertchristgau.com/get_artist.php?name=\u0002\u00010",
+ "blox": {
+ "g": {
+ "*": "//www.roblox.com/games/?Keyword=\u0002\u000138",
+ "r": "http://www.roblox.com/Groups/search.aspx?val=\u0002\u00010"
+ },
+ "l": "//www.roblox.com/develop/library?CatalogContext=2&Keyword=\u0002&SortAggregation=5&LegendExpanded=true&Category=6\u00010",
+ "*": "//www.roblox.com/games/?Keyword=\u0002\u000138",
+ "u": "//www.roblox.com/search/users?keyword=\u0002\u00010"
+ },
+ "botreview": "//robot-review.ru/search?q=\u0002\u00010",
+ "btex": "//www.robtex.com/dns-lookup/\u0002\u00016",
+ "cwiki": "http://rocwiki.org/?action=search&string=\u0002\u00010",
+ "dev": "//developer.roblox.com/search#stq=\u0002\u00010",
+ "etgen": "//www.roetgen.de/?s=\u0002\u00010",
+ "get": "http://www.roget.org/scripts/qq.php?seekword=\u0002\u00010",
+ "gers": "//www.rogers.com/customer/search?searchTerm=\u0002\u00010",
+ "gerebert": "//www.rogerebert.com/search?utf8=%E2%9C%93&q=\u0002\u000112",
+ "guebasin": "http://roguebasin.roguelikedevelopment.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "ll205e": "//roll20.net/compendium/dnd5e/searchbook/?terms=\u0002\u000153",
+ "llingstone": {
+ "*": "http://www.rollingstone.com/search?q=\u0002\u00010",
+ "it": "http://www.rollingstone.it/?s=\u0002\u00010"
+ },
+ "majidesukanji": "http://www.romajidesu.com/kanji/\u0002 \u00010",
+ "majidesuvcb": "http://www.romajidesu.com/?m=dictionary&a=lookup&w=\u0002\u00010",
+ "t13": "http://decode.org/?q=\u0002\u00014",
+ "terpanda": "//redpandazine.at/?s=\u0002\u00010",
+ "ttentomato": {
+ "*": "http://www.rottentomatoes.com/search/?search=\u0002\u0001163",
+ "es": "http://www.rottentomatoes.com/search/?search=\u0002\u0001163"
+ },
+ "ute": {
+ "*": "//www.google.de/maps/dir/\u0002\u00014",
+ "r": "//www.router24.info/uebersicht?s=\u0002\u00010"
+ },
+ "utard": "http://www.routard.com/recherche.asp?q=\u0002&edt_cleRech=\u0002\u00010",
+ "uxbe": "//duckduckgo.com/?q=site%3Arouxbe.com+\u0002\u00010",
+ "wiki": "//developer.roblox.com/search#stq=\u0002\u00010",
+ "yalroadl": "//royalroadl.com/fictions/search?keyword=\u0002\u00015",
+ "zet": {
+ "*": "http://rozethaber.com/search/\u0002\u00010",
+ "ka": "http://rozetka.com.ua/search/?section_id=&section=&text=\u0002&rz-search-button=\u000116"
+ }
+ },
+ "p": {
+ "f": "//www.reddit.com/r/PublicFreakout/search/?q=\u0002&restrict_sr=1\u00010",
+ "g": {
+ "*": "http://rpg.stackexchange.com/search?q=\u0002\u00010",
+ "sx": "http://rpg.stackexchange.com/search?q=\u0002\u00010",
+ "geek": "http://rpggeek.com/geeksearch.php?action=search&objecttype=rpgunified&q=\u0002&B1=Go\u00019"
+ },
+ "i": {
+ "*": "//www.raspberrypi.org/search/\u0002\u00014",
+ "-so": "http://raspberrypi.stackexchange.com/search?q=\u0002\u00010"
+ },
+ "m": {
+ "*": "http://rpmfind.net/linux/rpm2html/search.php?query=\u0002&submit=Search+...\u00010",
+ "s": "//src.fedoraproject.org/rpms/\u0002\u000148",
+ "find": "http://rpmfind.net/linux/rpm2html/search.php?query=\u0002&submit=Search+...\u00010",
+ "fusion": "//admin.rpmfusion.org/pkgdb/packages/\u0002/\u00016"
+ },
+ "*": "http://www.raspberrypi.org/phpBB3/search.php?keywords=\u0002\u00010",
+ "s": "http://www.rockpapershotgun.com/?s=\u0002 \u000141",
+ "y": "//realpython.com/search?q=\u0002\u00013",
+ "ad": "//pad.riseup.net/p/\u0002\u00010",
+ "hilos": "http://www.radicalphilosophy.com/?s=\u0002\u00010",
+ "hone": "http://www.whitepages.com/phone/\u0002\u00010",
+ "len": "//context.reverso.net/tłumaczenie/polski-angielski/\u0002\u00010",
+ "rivacy": "//www.reddit.com/r/privacy/search?q=\u0002&restrict_sr=on\u00019"
+ },
+ "r": {
+ "c": "http://www.rainbowresource.com/searchspring.php?q=\u0002\u00010",
+ "*": "http://reprap.org/mediawiki/index.php?search=\u0002\u00010",
+ "w": "//riordan.fandom.com/wiki/Special:Search?query=\u0002\u00010"
+ },
+ "*": "//www.reddit.com/search?q=\u0002\u00016064",
+ "s": {
+ "4": "http://rs.4chan.org/?s=\u0002&from=ALL\u00010",
+ "c": {
+ "h": "//www.admin.ch/opc/search/?text=\u0002&lang=fr&product[]=cc&date_range_min=&date_range_max=&d_compilation=both&d_is_in_force=yes&thesaurus=1\u00010",
+ "i": "//www.reddit.com/r/askscience/search?q=\u0002&restrict_sr=1\u00010",
+ "*": "http://uk.rs-online.com/web/c/?searchTerm=\u0002\u000116",
+ "ape": "//runescape.wiki/?search=\u0002\u00010"
+ },
+ "g": {
+ "e": "http://services.runescape.com/m=itemdb_rs/results?query=\u0002\u000110",
+ "*": "//www.rockstargames.com/search/?q=\u0002\u00010"
+ },
+ "k": "//www.refseek.com/search?q=\u0002\u00010",
+ "n": {
+ "l": "http://nl.rs-online.com/web/c/?searchTerm=\u0002\u00010",
+ "*": "//www.reddit.com/r/\u0002/new/\u00010",
+ "z": "//nz.rs-online.com/web/c/?sra=oss&r=t&searchTerm=\u0002\u00010"
+ },
+ "o": "http://stackoverflow.com/search?q=[r]+\u0002\u00010",
+ "*": "//runescape.wiki/?search=\u0002\u00010",
+ "u": {
+ "b": "//reddit.com/r/\u0002\u00011380",
+ "k": "http://uk.rs-online.com/web/c/?sra=oss&r=t&searchTerm=\u0002\u00015",
+ "*": "//runsignup.com/Races?name=\u0002\u00010"
+ },
+ "w": {
+ "*": "//runescape.wiki/?search=\u0002&title=Special:Search&go=Go\u0001112",
+ "iki": {
+ "n": "//runescape.wiki/?search=test&title=Special%3ASearch&fulltext=\u0002\u00010",
+ "*": "//runescape.wiki/?search=\u0002\u00010"
+ }
+ },
+ "07": "//oldschool.runescape.wiki/w/Special:Search?search=\u0002\u00010",
+ "ar": "http://www.rollingstone.com.ar/buscador-r30-\u0002\u00010",
+ "de": "http://de.rs-online.com/web/c/?searchTerm=\u0002\u00010",
+ "es": "//es.rs-online.com/web/c/?sra=oss&r=t&searchTerm=\u0002\u00010",
+ "fr": "http://radiospares-fr.rs-online.com/web/c/?searchTerm=\u0002\u00013",
+ "it": "http://it.rs-online.com/web/c/?searchTerm=\u0002\u00010",
+ "pb": "//www.rspb.org.uk/search/?q=\u0002\u00013",
+ "ph": "http://ph.rs-online.com/web/c/?searchTerm=\u0002\u00010",
+ "pt": "//www.roblox.com/games/?Keyword=\u0002\u000138",
+ "tc": "http://rosettacode.org/mw/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u00015",
+ "za": "//za.rs-online.com/web/c/?sra=oss&r=t&searchTerm=\u0002\u00010",
+ "-docs": "//docs.rs/\u0002\u0001666",
+ "-std": "//doc.rust-lang.org/std/index.html?search=\u0002\u00016",
+ "eek": "http://www.rseek.org/?cx=010923144343702598753:boaz1reyxd4&newwindow=1&q=\u0002&sa=Search+functions,+lists,+and+more&cof=FORID:11&siteurl=www.rseek.org/\u000172",
+ "ibank": "//risibank.fr/#\u0002\u00010",
+ "ssh": "http://www.rsssearchhub.com/feeds/?search=\u0002\u00010",
+ "tats": "//www.rdocumentation.org/search?q=\u0002\u000116",
+ "vce": "//www.biblegateway.com/passage/?search=\u0002&version=RSVCE\u00010"
+ },
+ "t": {
+ "d": {
+ "*": "//readthedocs.org/search/?q=\u0002\u000110",
+ "linux": "//kernel.readthedocs.io/en/sphinx-samples/search.html?q=\u0002&check_keywords=yes&area=default\u00010"
+ },
+ "e": {
+ "*": "http://www.rte.ie/search/?query=\u0002\u00014",
+ "s": "//actualidad.rt.com/search?q=\u0002\u00010"
+ },
+ "h": "//roosterteeth.com/#search?term=\u0002\u000130",
+ "m": "//www.rememberthemilk.com/app/#search/\u0002\u00010",
+ "*": "//www.rottentomatoes.com/search/?search=\u0002\u00012398",
+ "s": "http://www.rts.ch/services/recherche/?q=\u0002\u000117",
+ "t": "http://www.realtimetrains.co.uk/search/handler?type=basic&qs=true&search=\u0002\u00010",
+ "bf": "//www.rtbf.be/info/recherche?q=\u0002\u000196",
+ "fd": "http://\u0002.rtfd.io\u00010",
+ "fr": "//fr.shopping.rakuten.com/s/\u0002\u00016",
+ "ve": "http://www.rtve.es/buscador/?q=\u0002\u000110",
+ "boi": "//www.reddit.com/r/bindingofisaac/search?q=\u0002&restrict_sr=on\u00010",
+ "i51cpp": "//community.rti.com/rti-doc/510/ndds.5.1.0/doc/html/api_cpp/search.php?query=\u0002\u00010",
+ "i51java": "//community.rti.com/rti-doc/510/ndds.5.1.0/doc/html/api_java/search.php?query=\u0002\u00010",
+ "i523um": "//community.rti.com/static/documentation/connext-dds/5.2.3/doc/manuals/connext_dds/html_files/RTI_ConnextDDS_CoreLibraries_UsersManual/index.htm#search-\u0002\u00010",
+ "ikb": "//community.rti.com/search/kb/\u0002\u00010",
+ "ings": "//www.rtings.com/search?cx=partner-pub-9742413462301870%3A7201788216&cof=FORID%3A10&ie=UTF-8&silo=&q=\u0002\u000127",
+ "news": "http://rt.com/search/?q=\u0002\u00016",
+ "oday": "//www.rt.com/search?q=\u0002\u00017",
+ "vnh": "http://www.rtvnh.nl/zoeken/1/\u0002\u00010"
+ },
+ "u": {
+ "g": {
+ "*": "http://www.rug.nl/search/?searchtext=\u0002\u00010",
+ "ame": "//www.retrovideogamestore.com/index.php?option=com_mijoshop&route=product/search&search=\u0002\u00010"
+ },
+ "k": "http://ruk.ca/search/site/\u0002\u00010",
+ "*": "http://www.redusers.com/noticias/?s=\u0002\u00018",
+ "by": {
+ "*": "http://www.google.com/cse?q=\u0002&cx=013598269713424429640:g5orptiw95w&ie=UTF-8&sa=Search\u000168",
+ "doc": {
+ "*": "http://www.ruby-doc.org/search.html?q=\u0002\u000118",
+ "s": "//rubydocs.org/d/ruby-latest/?q=\u0002\u000120"
+ },
+ "gems": "http://rubygems.org/search?query=\u0002\u000141",
+ "lane": "http://www.rubylane.com/search?q=\u0002\u00010",
+ "toolbox": "//www.ruby-toolbox.com/search?utf8=✓&q=\u0002\u00014"
+ },
+ "en": "http://translate.google.com/#ru/en/\u0002\u000181",
+ "fr": "//translate.google.com/#ru/fr/\u0002\u00010",
+ "sr": "//www.reddit.com/user/\u0002/\u00015",
+ "st": {
+ "a": "http://www.rusta.com/se/Sok/\u0002/\u00010",
+ "d": {
+ "*": "//doc.rust-lang.org/std/?search=\u0002\u0001105",
+ "oc": "//doc.rust-lang.org/std/?search=\u0002\u0001105"
+ },
+ "n": "//doc.rust-lang.org/nightly/std/?search=\u0002\u0001120",
+ "*": "//doc.rust-lang.org/std/?search=\u0002\u0001105",
+ "labs": "//rustlabs.com/search=\u0002\u000114",
+ "rfc": "//github.com/rust-lang/rfcs/issues?utf8=✓&q=\u0002\u00010",
+ "std": "//doc.rust-lang.org/std/?search=\u0002\u0001105"
+ },
+ "th": "//www.billygrahambookstore.org/catalogsearch/result/?q=\u0002\u00010",
+ "wk": "//ru.wikipedia.org/w/index.php?search=\u0002\u00017",
+ "bocop": "//rubocop.readthedocs.io/en/latest/search.html?q=\u0002\u00010",
+ "mble": "//rumble.com/all/q/\u0002/?type=videos\u000160",
+ "nescape": "//runescape.wiki/w/Special:Search?search=\u0002\u00019",
+ "nsignup": "//runsignup.com/Races?s=&cloudSearch=T&name=\u0002\u00010",
+ "ten": "http://find.ruten.com.tw/search/s000.php?enc=u&searchfrom=searchf&k=\u0002&t=0\u00010",
+ "tronik": "//www.rutronik24.com/search-result/qs:\u0002\u00010",
+ "tube": "http://rutube.ru/search.html?page=index&search=\u0002&search_type=track\u00010",
+ "wiki": "//ru.wikipedia.org/w/index.php?search=\u0002 \u000142"
+ },
+ "v": {
+ "b": "http://rvb.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "m": "//reviewmeta.com/search?q=\u0002\u00019",
+ "*": "//www.real.video/search?query=\u0002\u00013",
+ "cc": "http://raritanval.edu/rvcc/search.aspx?searchtext=\u0002\u00010",
+ "rental": "//www.elmonterv.com/search/?q=\u0002\u00010"
+ },
+ "w": {
+ "*": "http://rationalwiki.org/w/index.php?search=\u0002\u0001130",
+ "th": "http://www.rwth-aachen.de/ca/be/hx/?lidx=&institution=RWTH+Aachen+University&search=\u0002\u00010",
+ "iki": "//thereaderwiki.com/en/\u0002\u00010"
+ },
+ "z": {
+ "*": "//www.rhymezone.com/r/rhyme.cgi?Word=\u0002&typeofrhyme=perfect&org1=syl&org2=l&org3=y\u000151",
+ "r": "//www.razer.com/search?text=\u0002\u00010",
+ "tk": "//rozetka.com.ua/ua/search/?text=\u0002\u00010",
+ "elda": "//www.reddit.com/r/zelda/search/?q=\u0002\u00010"
+ },
+ "10": "//search.rakuten.co.jp/search/mall/\u0002/\u000119",
+ "2r": "//www.rome2rio.com/map/\u0002\u00013",
+ "2u": "http://www.r2u.org.ua/s?w=\u0002&scope=all&dicts=all&highlight=on\u00010",
+ "dc": "//www.rueducommerce.fr/recherche/\u0002\u00014",
+ "do": {
+ "c": {
+ "*": "http://rdoc.info/find/github?q=\u0002\u00013",
+ "s": "//www.rdocumentation.org/search?q=\u0002\u000116",
+ "u": "//www.rdocumentation.org/search?q=\u0002\u000116"
+ },
+ "*": "//www.rdocumentation.org/search?q=\u0002\u000116"
+ },
+ "ds": "//www.reddit.com/r/\u0002\u00011623",
+ "e3": "//www.re3data.org/search?query=\u0002\u00010",
+ "ef": {
+ "r": {
+ "*": "http://dictionary.reverso.net/french-definition/\u0002\u00013",
+ "eb": "http://dictionary.reverso.net/french-english/\u0002\u00018",
+ "es": {
+ "h": "http://www.refreshcartridges.co.uk/advanced_search_result.php?q=\u0002\u00010",
+ "*": "http://dictionary.reverso.net/french-spanish/\u0002\u00010"
+ },
+ "ge": "http://dictionnaire.reverso.net/francais-allemand/\u0002\u00010"
+ },
+ "*": "http://www.reference.com/web?q=\u0002\u000110",
+ "lets": "http://reflets.info/?s=\u0002\u00010",
+ "seek": "//www.refseek.com/search?q=\u0002\u00010"
+ },
+ "ei": {
+ "*": "//www.rei.com/search?q=\u0002\u000182",
+ "chelt": "//secure.reichelt.de/?ACTION=446;SEARCH=\u0002\u000110",
+ "sartikelen": "//www.reisartikelen.nl/search/?q=\u0002\u00010",
+ "ttiopas": "http://www.reittiopas.fi/?showsearchformsaved=hide&from_in= \u0002&from=&via_in=&via=&via_time=0&to_in= \u0002&to=&hour=15&minute=39&timetype=departure&date_cb=on&day=7&month=7&year=2015&cmargin=3&wspeed=70&method=1&stz=0&mc1=0&mc2=0&mc3=0&mc4=0&mc5=0&mc6=0&mc0=1&nroutes=3&gotoHash=\u00010"
+ },
+ "en": {
+ "*": "http://dictionary.reverso.net/english-definition/\u0002\u00010",
+ "pl": "//context.reverso.net/tłumaczenie/angielski-polski/\u0002\u00010",
+ "soruigo": "//renso-ruigo.com/word/\u0002\u00010"
+ },
+ "ep": {
+ "l": {
+ "*": "//repl.it/languages/\u0002\u000118",
+ "icante": "http://lamiradadelreplicante.com/?s=\u0002 \u00010"
+ },
+ "m": "//represent.com/search?q=\u0002\u00010",
+ "*": "http://www.replacements.com/search/?query=\u0002\u00010",
+ "um": "//repositorium.sdum.uminho.pt/simple-search?query=\u0002\u00010",
+ "eater": "//www.repeaterbook.com/repeaters/keyword.php?func=result&keyword=\u0002\u00013",
+ "ology": "//repology.org/metapackages/?search=\u0002\u000198",
+ "rap": "http://reprap.org/mediawiki/index.php?search=\u0002\u00010",
+ "ubblica": {
+ "*": "http://ricerca.repubblica.it/ricerca/repubblica?query=\u0002\u00010",
+ "video": "http://ricerca.repubblica.it/ricerca/repubblica-video?query=\u0002&view=repubblica-video\u00010"
+ }
+ },
+ "eu": {
+ "q": "http://www.reuters.com/search/news?blob=\u0002\u00010",
+ "*": "//www.reddit.com/user/\u0002\u000140",
+ "ters": "//www.reuters.com/search/news?blob=\u0002\u000118"
+ },
+ "ex": {
+ "*": "http://rex.kb.dk/primo_library/libweb/action/search.do?fn=search&vl%28freeText0%29=\u0002\u00010",
+ "el": "//www.rexel.de/search/?text=\u0002\u00010"
+ },
+ "im": {
+ "a": "//www.cercarime.it/?rima=\u0002\u00010",
+ "e": "http://www.rimessolides.com/rime.aspx?m=\u0002\u00010",
+ "*": "http://rimlexikon.com/index.php?rim=\u0002\u00010",
+ "wiki": "http://rimworldwiki.com/index.php?search=\u0002\u00019"
+ },
+ "ip": {
+ "*": "//reverseip.domaintools.com/search/?q=\u0002\u00010",
+ "e": {
+ "*": "//stat.ripe.net/\u0002\u000120",
+ "db": "//apps.db.ripe.net/search/query.html?searchtext=\u0002&search%3AdoSearch=Search#resultsAnchor\u00015",
+ "stat": "//stat.ripe.net/\u0002\u000120"
+ }
+ },
+ "is": "//www.ris.bka.gv.at/Ergebnis.wxe?Abfrage=Gesamtabfrage&SearchInAsylGH=False&SearchInAvn=False&SearchInAvsv=False&SearchInBegut=False&SearchInBgblAlt=False&SearchInBgblAuth=False&SearchInBgblPdf=False&SearchInBks=False&SearchInBundesnormen=False&SearchInDok=False&SearchInDsk=False&SearchInErlaesse=False&SearchInGbk=False&SearchInGemeinderecht=False&SearchInJustiz=False&SearchInBvwg=False&SearchInLvwg=False&SearchInLgbl=False&SearchInLgblNO=False&SearchInLgblAuth=False&SearchInLrBgld=False&SearchInLrK=False&SearchInLrNO=False&SearchInLrOO=False&SearchInLrSbg=False&SearchInLrStmk=False&SearchInLrT=False&SearchInLrVbg=False&SearchInLrW=False&SearchInNormenliste=False&SearchInPvak=False&SearchInRegV=False&SearchInUbas=False&SearchInUmse=False&SearchInUvs=False&SearchInVerg=False&SearchInVfgh=False&SearchInVwgh=False&ImRisSeit=Undefined&ResultPageSize=100&Suchworte=\u0002&Position=1\u00013",
+ "lp": "http://www.rugbyleagueproject.org/search/?q=\u0002\u000114",
+ "lr": "//www.reddit.com/r/RocketLeague/search?q=\u0002&restrict_sr=on\u00010",
+ "lw": "//rocketleague.fandom.com/wiki/Special:Search?query=\u0002\u00010",
+ "xp": "http://ruxpert.ru/index.php?search=\u0002\u00010",
+ "yg": "//rateyourmusic.com/genre/\u0002\u00010",
+ "ym": {
+ "f": "//rateyourmusic.com/search?searchtype=F&searchterm=\u0002\u000118",
+ "*": "//rateyourmusic.com/search?searchterm=\u0002\u00013684",
+ "r": {
+ "*": "//rateyourmusic.com/search?searchtype=l&searchterm=\u0002\u00015",
+ "elease": "//rateyourmusic.com/search?searchterm=\u0002&type=l\u00010"
+ },
+ "genre": "//rateyourmusic.com/search?searchtype=g&searchterm=\u0002\u000114"
+ },
+ "dkj": "http://www.romajidesu.com/kanji/\u0002\u00010",
+ "dns": "http://mxtoolbox.com/SuperTool.aspx?action=ptr%3a\u0002&run=toolpage\u00014",
+ "drr": "//rdrr.io/search?q=\u0002\u00010",
+ "dvcb": "http://www.romajidesu.com/?m=dictionary&a=lookup&w=\u0002\u00010",
+ "ealo": "//realo.com/search?q=\u0002\u00010",
+ "eactome": "http://reactome.org/content/query?q=\u0002\u00010",
+ "eactparts": "//react.parts/?search=\u0002\u00010",
+ "eaddc": "//www.readdc.com/search?search=\u0002&submit=SEARCH\u00010",
+ "eadthedocs": "//readthedocs.org/search/?q=\u0002\u000110",
+ "eadwriteweb": "http://readwrite.com/search?keyword=\u0002\u00010",
+ "eaktor": "//www.native-instruments.com/en/reaktor-community/reaktor-user-library/all/all/all/all/\u0002/latest/1/all/?q=\u0002&t=userlib\u00010",
+ "ealtor": "http://www.realtor.com/realestateandhomes-search/\u0002\u000112",
+ "eason": {
+ "*": "http://reason.com/search?q=\u0002\u00017",
+ "ator": "http://tools.wmflabs.org/reasonator/?find=\u0002\u00010"
+ },
+ "ebel": "//www.rebel.pl/e4u.php/1,ModProducts/Search?search[submit]=1&search[phrase]=\u0002\u00010",
+ "ebuy": "//www.rebuy.de/kaufen/suchen?q=\u0002\u00010",
+ "ebirth": "http://bindingofisaacrebirth.gamepedia.com/index.php?search=\u0002\u0001350",
+ "ebiun": "http://rebiun.baratz.es/rebiun/search?q=\u0002&start=0&rows=12&sort=score+desc&advanced_handler=advanced\u00010",
+ "eborn": "http://reborn.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "eck": {
+ "*": "http://reck.dk/?s=\u0002\u00015",
+ "less": "http://www.reckless.com/index.php?keywords=\u0002&format=&cond=&store=&is_search=true&srch=Search\u00010"
+ },
+ "ecap": "http://archive.recapthelaw.org/search/advanced/?q=\u0002&x=0&y=0&court=&docket_number=&case_name=&pacer_case_number=&date_filed=&date_filed_end=&date_terminated=&date_terminated_end=&date_last_filing=&date_last_filing_end=\u00010",
+ "econ": "http://www.watchrecon.com/?query=\u0002\u00017",
+ "ecent": "http://duckduckgo.com/?q=\u0002&df=w\u00010",
+ "ecetas": "//www.guiarecetas.com/?s=\u0002\u00010",
+ "ecettesqc": "//www.recettes.qc.ca/recettes/recherche?search[query]=\u0002&search[sort]=\u00010",
+ "ecfren": "//context.reverso.net/traduction/francais-anglais/\u0002\u000111",
+ "ecipe": {
+ "*": "http://allrecipes.com/search/default.aspx?qt=k&wt=\u0002\u00010",
+ "s": "http://allrecipes.com/search/default.aspx?qt=k&rt=r&pqt=k&ms=0&fo=0&wt=\u0002\u00014"
+ },
+ "eciva": "//www.reciva.com/stations/search?q=\u0002\u00010",
+ "eclame": "http://www.reclameaqui.com.br/busca/?q=\u0002\u00010",
+ "ecode": "//www.recode.net/search?q=\u0002\u00010",
+ "ecordclick": "http://recordclick.com/?s=\u0002&x=0&y=0\u00010",
+ "ecruit": "//australia.recruit.net/search.html?query=\u0002&location=&s=\u00010",
+ "ecycle": "http://search.earth911.com/?what=\u0002\u00010",
+ "edis": "http://redis.io/commands/\u0002 \u00014",
+ "edable": "//www.redable.nl/catalogsearch/result/?q=\u0002\u00010",
+ "edalyc": "http://www.redalyc.org/busquedaArticuloFiltros.oa?q=\u0002\u00010",
+ "edbot": "http://redbot.org/?uri=\u0002\u00013",
+ "edbox": "http://www.redbox.com/search/?q=\u0002\u00010",
+ "edbull": "//www.redbull.com/int-en/search/\u0002\u00010",
+ "edbubble": "http://www.redbubble.com/shop/\u0002\u000116",
+ "edcat": "//www.recreationhobbiescenter.com/pages/search-results-page?q=\u0002\u00010",
+ "eddit": {
+ "*": "//www.reddit.com/search?q=\u0002\u00016064",
+ "s": "//www.reddit.com/r/\u0002\u00011623",
+ "old": "//old.reddit.com/search?q=\u0002\u0001174"
+ },
+ "edeen": "//dictionary.reverso.net/german-english/\u0002\u00010",
+ "edensarten": "http://www.redensarten-index.de/suche.php?suchbegriff=\u0002&bool=relevanz&gawoe=an&suchspalte[]=rart_ou&suchspalte[]=rart_varianten_ou\u00010",
+ "edeye": "//www.redeye.com.au/answer.asp?reion=USA&atype=both&artist=\u0002\u00010",
+ "edfin": "http://www.redfin.com/homes-for-sale#!search_location=\u0002\u000121",
+ "edflagdeals": "http://www.redflagdeals.com/search/?=\u0002\u00010",
+ "edford": "http://www.relcdetroit.org/index.php?p_id=1\u0002\u00010",
+ "edmine": "//www.redmine.org/search?q=\u0002\u00010",
+ "edpanda": "//redpandazine.com/?s=\u0002\u00010",
+ "edtram": "//ru.redtram.com/search/?q=\u0002\u00010",
+ "eed": "http://www.reed.co.uk/job/searchresults.aspx?k=\u0002\u00010",
+ "een": {
+ "*": "http://dictionary.reverso.net/english-definition/\u0002\u00010",
+ "es": "http://dictionary.reverso.net/english-spanish/\u0002\u00010",
+ "fr": "http://dictionary.reverso.net/english-french/\u0002\u000111"
+ },
+ "ees": {
+ "*": "http://dictionary.reverso.net/spanish-definition/\u0002\u00010",
+ "en": "http://dictionary.reverso.net/spanish-english/\u0002\u00010",
+ "fr": "http://dictionary.reverso.net/spanish-french/\u0002\u00010",
+ "ge": "http://woerterbuch.reverso.net/spanisch-deutsch/\u0002\u00010",
+ "pt": "http://dictionary.reverso.net/spanish-portuguese/\u0002\u00010"
+ },
+ "eelgood": "//reelgood.com/search?q=\u0002\u000144",
+ "eelviews": "http://www.reelviews.net/search/\u0002\u00010",
+ "ege": {
+ "*": "http://dictionary.reverso.net/german-definition/\u0002\u00010",
+ "x": {
+ "*": "http://www.regexlib.com/Search.aspx?k=\u0002 \u00018",
+ "per": "//regexper.com/#\u0002\u00010"
+ },
+ "es": "http://woerterbuch.reverso.net/deutsch-spanisch/\u0002\u00010",
+ "fr": "http://dictionnaire.reverso.net/allemand-francais/\u0002\u00010"
+ },
+ "egister": "http://search.theregister.co.uk/?q=\u0002&advanced=1&author=&date=the+dawn+of+time&site=all+The+Register+sites&results_per_page=100\u00010",
+ "egrav": "http://regravity.com/?s=\u0002\u00010",
+ "eleases": "//www.releases.com/search?q=\u0002\u00010",
+ "elmbk": "//bendixkingradios.com/catalogsearch/result/?q=\u0002 \u00010",
+ "elword": "http://relatedwords.org/relatedto/\u0002\u00014",
+ "emo": "//releasemonitor.de/s?q=\u0002\u00010",
+ "emy": {
+ "*": "//remywiki.com/index.php?search=\u0002\u000127",
+ "wiki": "//remywiki.com/index.php?title=Special:Search&search=\u0002\u000156"
+ },
+ "esi": {
+ "*": "http://cekresi.com/?noresi=\u0002\u00010",
+ "dentadvisor": "http://www.residentadvisor.net/search.aspx?searchstr=\u0002\u000115"
+ },
+ "esp": {
+ "*": "http://www.respaper.com/s?q=\u0002\u00010",
+ "awners": "//www.respawners.net/search?query=\u0002\u00010"
+ },
+ "esearch": {
+ "*": "http://journals.plos.org/plosone/search?unformattedQuery=everything:\"\u0002\"\u00010",
+ "gate": "//www.researchgate.net/search/publications?q=\u0002\u000112"
+ },
+ "estobe": "http://en.resto.be/business/search?searchbox=true&businessTypeId=1&fullText=\u0002\u00010",
+ "estofr": "http://www.resto.fr/business/search?searchbox=true&businessTypeId=1&fullText=\u0002\u00010",
+ "estolu": "http://www.resto.lu/fr/Luxembourg/guide.cfm?searchmode=classic&RESTOTYPE=isresto&nom=\u0002&idcuisine_type=&ville=&region=&idprix=ddg@pivert.org\u00010",
+ "etro": "//retropie.org.uk/forum/search?term=\u0002&in=titlesposts&matchWords=all&sortBy=relevance&sortDirection=desc&showAs=posts\u00010",
+ "etty": "//retty.me/restaurant-search/search-result/?free_word_category=\u0002\u00010",
+ "etailmenot": "http://www.retailmenot.com/view/\u0002\u00015",
+ "eta-vortaro": "http://www.reta-vortaro.de/cgi-bin/sercxu.pl?sercxata=\u0002&kadroj=1\u00010",
+ "etskriv": "//dsn.dk/?retskriv=\u0002&ae=0\u00010",
+ "evd": {
+ "*": "http://www.onelook.com/reverse-dictionary.shtml?s=\u0002\u00010",
+ "roid": "//revdroid.com/?s=\u0002\u00010"
+ },
+ "evo": {
+ "*": "http://www.reta-vortaro.de/cgi-bin/sercxu.pl?sercxata=\u0002&x=on&kadroj=1\u00014",
+ "lico": "//www.revolico.com/search.html?q=\u0002\u00010",
+ "lve": "//www.revolve.com/r/Search.jsp?search=\u0002\u00010"
+ },
+ "evau": "http://www.reverseaustralia.com/search.php?search=\u0002\u00013",
+ "evef": "http://dictionary.reverso.net/english-french/\u0002\u000111",
+ "evgf": "//dictionary.reverso.net/german-french/\u0002\u00010",
+ "evamed": "//www.revamed.com/search?s=\u0002 \u00010",
+ "evenit": "http://context.reverso.net/translation/english-italian/\u0002\u000113",
+ "evengerists": "http://revengerists.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "everb": {
+ "*": "//reverb.com/marketplace?query=\u0002\u0001303",
+ "nation": "//www.reverbnation.com/main/search?q=\u0002\u00010"
+ },
+ "everso": {
+ "*": "http://dictionary.reverso.net/german-english/\u0002 \u000136",
+ "enfr": "http://dictionary.reverso.net/english-french/\u0002\u000111",
+ "fren": "http://dictionary.reverso.net/english-french/\u0002\u000111",
+ "iten": "http://dictionary.reverso.net/italian-english/\u0002\u00010"
+ },
+ "evesen": "http://context.reverso.net/translation/spanish-english/\u0002 \u00010",
+ "eviews": "//reviewscon.com/?s=\u0002&post_type=&catid=\u00010",
+ "eviewgeek": "//www.reviewgeek.com/?s=\u0002\u00010",
+ "eviewmeta": "//reviewmeta.com/search?q=\u0002\u00019",
+ "eviten": "http://context.reverso.net/translation/italian-english/\u0002\u000128",
+ "evzilla": "http://www.revzilla.com/search?query=\u0002&commit=Search\u00010",
+ "ewe": "//www.rewe.de/suche/?search=\u0002\u00010",
+ "-es": "//duckduckgo.com/?q=\u0002&kl=es-es\u000110",
+ "-nl": "//duckduckgo.com/?q=\u0002&kl=nl-nl\u000135",
+ "-uk": "//duckduckgo.com/?q=\u0002&kl=uk-en\u00010",
+ "-us": "//duckduckgo.com/?q=\u0002&kl=us-en\u00010",
+ "icardo": "//www.ricardo.ch/de/s/\u0002\u000120",
+ "idi": "//ridibooks.com/search/?q=\u0002\u000131",
+ "iddler": "//riddler.io/search?q=\u0002\u00010",
+ "ight": {
+ "*": "http://www.rightrelevance.com/search/articles?query=\u0002\u00010",
+ "now": "//www.rightnowmedia.org/Search?q=\u0002\u00010",
+ "scale": "//docs.rightscale.com/search.html?q=\u0002\u00010",
+ "sidenews": "//www.rightsidenews.com/?s=\u0002\u00010"
+ },
+ "igveda": {
+ "*": "//rigvedawiki.net/r1/wiki.php/\u0002\u00010",
+ "wiki": "//rigvedawiki.net/r1/wiki.php/\u0002\u00010"
+ },
+ "ijnmond": "http://www.rijnmond.nl/zoeken?query=\u0002\u00010",
+ "iksdagen": "//www.riksdagen.se/sv/global/sok/?q=\u0002&st=1\u00010",
+ "inf": "http://www.rinf.com/?q=\u0002 \u00010",
+ "ingtones": "//downloadringtones.mobi/?s=\u0002\u00010",
+ "iopac": "http://opac.regesta-imperii.de/lang_en/suche.php?qs=\u0002\u00010",
+ "iten": "http://context.reverso.net/translation/italian-english/\u0002\u000128",
+ "itru": "//context.reverso.net/translation/italian-russian/\u0002\u00010",
+ "itchiespecs": "//www.ritchiespecs.com/results/\u0002\u00010",
+ "itlib": "//rit.summon.serialssolutions.com/search?l=en&q=\u0002\u00010",
+ "/leb": "//www.reddit.com/r/lebanon/search?q=\u0002\u00010",
+ "yans": "//ryanscomputers.com/catalogsearch/result/?q=\u0002\u00010",
+ "year": "http://www.reddit.com/search?q=\u0002&t=year\u00010",
+ "yfma": "//ryfma.com/search/\u0002\u00010"
+ },
+ "s": {
+ "2": "//www.semanticscholar.org/search?q=\u0002\u000146",
+ "6": {
+ "*": "http://society6.com/search/?q=\u0002\u00010",
+ "all": "http://society6.com/search/?q=\u0002\u00010"
+ },
+ "9": "//sanctum9.wordpress.com/?s=\u0002\u00010",
+ "a": {
+ "b": {
+ "*": "//duckduckgo.com/?q=site%3Askepticsannotatedbible.com+\u0002&ia=web\u00010",
+ "ahlatan": "http://sabahlatan.com/?s=\u0002\u00010",
+ "ayonbugs": "//bugs.sabayon.org/buglist.cgi?bug_status=__all__&content=\u0002\u00010",
+ "ayonforums": "//forum.sabayon.org/search.php?keywords=\u0002\u00010",
+ "how": "//sabhow.blogspot.com/search/?q=\u0002\u00010"
+ },
+ "l": {
+ "*": "http://www.salidzini.lv/search.php?q=\u0002\u00018",
+ "t": {
+ "*": "//cse.google.com/cse?cx=011515552685726825874:ht0p8miksrm&q=\u0002\u00017",
+ "mod": "//docs.saltstack.com/en/latest/ref/modules/all/salt.modules.\u0002.html\u00010",
+ "stack": "//duckduckgo.com/?q=site%3Adocs.saltstack.com+\u0002\u00010",
+ "states": "//docs.saltstack.com/en/latest/ref/states/all/salt.states.\u0002.html\u00010",
+ "ystock": "http://www.saltystock.com/search.pp?keyword=\u0002\u00010"
+ },
+ "am": "//salamtm.blogspot.com/search/?term=\u0002\u00010",
+ "ix": {
+ "*": "http://www.salixos.org/wiki/index.php/Special:Search?search=\u0002\u00010",
+ "forums": "http://www.salixos.org/forum/search.php?keywords=\u0002\u00010"
+ },
+ "on": "//www.salon.com/search/\u0002\u00010",
+ "sa": "//salsa.debian.org/search?search=\u0002\u000117"
+ },
+ "m": {
+ "*": "http://www.samsung.com/au/search/?q=\u0002\u00019",
+ "ba": "//wiki.samba.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "de": "//smile.amazon.de/s/?url=search-alias%3Daps&field-keywords=\u0002\u000116",
+ "aritans": "http://www.samaritanspurse.org/?s=\u0002\u00010",
+ "pled": "http://www.whosampled.com/search/artists/?q=\u0002\u00016",
+ "sclub": "//www.samsclub.com/sams/search/searchResults.jsp?searchTerm=\u0002&searchCategoryId=all\u00018"
+ },
+ "o": {
+ "b": "//svenska.se/tre/?sok=\u0002&pz=1\u000120",
+ "l": "//svenska.se/tre/?sok=\u0002\u000118",
+ "*": "http://swordartonline.wikia.com/wiki/Special:Search?go&query=\u0002\u00010"
+ },
+ "p": {
+ "o": {
+ "*": "http://pesquisa.sapo.pt/?barra=&q=\u0002\u000118",
+ "rta": "//saportareport.com/?s=\u0002\u00010"
+ },
+ "*": "//launchpad.support.sap.com/#/solutions/notesv2/?q=\u0002\u00014",
+ "dl": "//launchpad.support.sap.com/#/softwarecenter/search/\u0002\u00010",
+ "na": "//sapnaonline.com/general-search?searchkey=\u0002\u00010",
+ "blogs": "//blogs.sap.com/?s=\u0002\u00010",
+ "help": "//help.sap.com/viewer/search?q=\u0002\u00010",
+ "note": {
+ "*": "//launchpad.support.sap.com/#/notes/\u0002/E\u00016",
+ "s": "//launchpad.support.sap.com/#/solutions/notes/?q=\u0002\u00018"
+ },
+ "phire": "http://forums.sapphirecommunity.com/search.php?keywords=\u0002&terms=all&author=&fid%5B%5D=4&fid%5B%5D=6&sc=1&sf=all&sr=posts&sk=t&sd=d&st=0&ch=800&t=0&submit=Search\u00010",
+ "table": {
+ "s": "http://www.tcodesearch.com/sap-tables/detail?id=\u0002\u00010",
+ "*": "http://www.tcodesearch.com/sap-tables/detail?id=\u0002\u00010"
+ }
+ },
+ "q": "//duckduckgo.com/?q=site%3Askepticsannotatedbible.com%2Fquran%2F+\u0002&t=ffsb&ia=web\u00010",
+ "*": "http://www.scientificamerican.com/search/?q=\u0002&x=-783&y=-180 \u000113",
+ "s": {
+ "k": "http://www.search.ask.com/web?q=\u0002\u00010",
+ "*": "//support.sas.com/en/search.html?q=\u0002&fq=siteArea%3A%22Documentation%22\u00010"
+ },
+ "y": {
+ "*": "//www.merriam-webster.com/dictionary/\u0002?pronunciation\u00017",
+ "ba": "http://www.sayba.com.br/pesquisar/?q=\u0002\u00010"
+ },
+ "ck": "//www.sackmuehle.de/?s=(\u0002)\u00010",
+ "cl": "//www.countrylife.co.za/?s=\u0002\u00010",
+ "de": "//smile.amazon.de/s/?field-keywords=\u0002\u000164",
+ "fe": {
+ "*": "/?q=\u0002&kp=1\u000124",
+ "on": "/?q=\u0002&kp=1\u000124",
+ "booru": "http://safebooru.org/index.php?page=post&s=list&tags=\u0002\u000175",
+ "off": "/?q=\u0002&kp=-2\u00014703",
+ "web": "//safeweb.norton.com/report/show?url=\u0002\u00010"
+ },
+ "ge": "//duckduckgo.com/?q=site%3Adoc.sagemath.org+\u0002\u00015",
+ "ki": "http://www.suomisanakirja.fi/\u0002\u00016",
+ "na": {
+ "*": "http://www.sanakirja.org/search.php?q=\u0002\u000181",
+ "kirja": "http://www.sanakirja.org/search.php?q=\u0002 \u000132",
+ "lpazar": "http://www.sanalpazar.com/urunara?criteria=\u0002\u00010"
+ },
+ "uk": "//smile.amazon.co.uk/s/?field-keywords=\u0002\u000125",
+ "ve": {
+ "*": "//web.archive.org/save/\u0002\u00015",
+ "back": "//web.archive.org/save/\u0002\u00015"
+ },
+ "xo": "//www.saxo.com/dk/products/search?query=\u0002\u00014",
+ "abforum": "http://www.saabforum.nl/search.php?keywords=\u0002\u00010",
+ "avn": "//www.jiosaavn.com/search/\u0002\u00010",
+ "fari": {
+ "*": "//www.safaribooksonline.com/search/?query=\u0002\u00010",
+ "ext": "//safari-extensions.apple.com/?q=\u0002\u00010"
+ },
+ "hibinden": "http://www.sahibinden.com/kelime-ile-arama?query_text=\u0002\u000124",
+ "idit": "//saidit.net/search?q=\u0002\u00010",
+ "ilguide": "http://www.sailguide.com/boats?boatname=\u0002\u00010",
+ "insburys": "//www.sainsburys.co.uk/webapp/wcs/stores/servlet/SearchDisplayView?storeId=10151&searchTerm=\u0002\u000113",
+ "iyasune": "//www.saiyasune.com/I1W\u0002.html\u00010",
+ "kuga": "//sakugabooru.com/post?tags=\u0002\u00015",
+ "ndiamesa": "//sandiamesa.com/?s=\u0002\u00010",
+ "ndiego": "//www.sandiego.org/search/site.aspx?q=\u0002\u000111",
+ "ndstorm": "//apps.sandstorm.io/search?term=\u0002\u00010",
+ "nskrit": "http://spokensanskrit.de/index.php?tinput=\u0002\u00015",
+ "raiva": "//busca.saraiva.com.br/?q=\u0002\u00010",
+ "rkariplace": "//www.sarkariplace.com/search?q=\u0002\u00010",
+ "rna": "http://www.sarna.net/wiki/index.php?search=\u0002\u000114",
+ "turn": {
+ "*": "//www.saturn.de/de/search.html?query=\u0002&searchProfile=onlineshop&channel=sedede\u00014",
+ "games": "http://www.saturngames.co.uk/?searchStr=\u0002&_a=viewCat&Submit=Go\u00010"
+ },
+ "ucenao": "http://saucenao.com/search.php?db=999&url=\u0002\u0001378",
+ "ugus": "//www.saugus.net/cgi-bin/htsearch?config=htdig&restrict=&exclude=&words=\u0002&method=and&format=long\u00010",
+ "vannah": "//savannah.gnu.org/search/?type_of_search=soft&words=\u0002\u00018",
+ "vido": "http://www.savido.cz/download.php?url=\u0002\u00010"
+ },
+ "b": {
+ "2": "//scratch.mit.edu/search/projects?q=\u0002\u00015",
+ "a": "//www.sba.gov/search/?q=\u0002\u00010",
+ "b": {
+ "b": "//dev.eoils.de/contents/b/index.php?station=\u0002\u00010",
+ "*": "//www.sbb.ch/de/kaufen/pages/fahrplan/fahrplan.xhtml?nach=\u0002&suche=false\u00017"
+ },
+ "g": "http://bibleforums.org/search.php?s=\u0002 \u00010",
+ "i": {
+ "*": "//www.google.com/searchbyimage?image_url=\u0002\u000173",
+ "t": "//spendabit.co/go?q=\u0002\u00010"
+ },
+ "m": {
+ "*": "//duckduckgo.com/?q=site%3Asciencebasedmedicine.org+\u0002\u00010",
+ "ania": "http://www.sbmania.net/advsearch.php?l=80&q=\u0002\u00010"
+ },
+ "n": "http://opac.sbn.it/opacsbn/opac/iccu/free.jsp=\u0002\u00010",
+ "o": {
+ "*": "//slackbuilds.org/result/?search=\u0002\u00010",
+ "pkg": "//slackbuilds.org/result/?search=\u0002\u00010"
+ },
+ "r": {
+ "m": "http://www.slounik.org/search?dict=&search=\u0002\u00010",
+ "*": "//www.reddit.com/r/\u0002\u00011623"
+ },
+ "s": "//www.sbs.com.au/ondemand/search/\u0002\u00010",
+ "*": "http://www.swagbucks.com/?t=w&p=1&b=0&f=0&sef=1&q=\u0002\u000113",
+ "t": "//socialblade.com/twitter/user/\u0002\u00010",
+ "w": {
+ "*": "//www.stopbadware.org/clearinghouse/search/?url=\u0002\u00010",
+ "iki": "http://spongebob.wikia.com/wiki/Special:Search?search=\u0002\u00010"
+ },
+ "yt": "http://socialblade.com/youtube/user/\u0002\u000137"
+ },
+ "c": {
+ "a": {
+ "n": {
+ "*": "http://www.scan.co.uk/search.aspx?q=\u0002\u000116",
+ "ia": "//www.scania.com/global/en/home/misc/searchresult.html?q=\u0002\u00010"
+ },
+ "*": "//www.reddit.com/r/skincareaddiction/search?q=\u0002&restrict_sr=on\u00010",
+ "la": {
+ "i": "//index.scala-lang.org/search?q=\u0002\u00010",
+ "*": "http://www.scala-lang.org/api/current/?search=\u0002\u00010",
+ "api": "http://www.scala-lang.org/api/current/index.html?search=\u0002\u00010",
+ "dex": "//index.scala-lang.org/search?q=\u0002 \u00010",
+ "doc": "http://www.scala-lang.org/api/current/?search=\u0002\u00010",
+ "lang": "http://www.scala-lang.org/api/current/?search=\u0002\u00010"
+ },
+ "recrow": "//www.scarecrow.com/45/search.html?keywords=\u0002\u00010",
+ "ruffi": "//duckduckgo.com/?q=site%3Ascaruffi.com+\u0002\u000111"
+ },
+ "b": {
+ "*": "http://www.sverigeisiffror.scb.se/hitta-statistik/sok/?query=\u0002\u00010",
+ "en": "http://www.sverigeisiffror.scb.se/hitta-statistik/sok/?query=\u0002\u00010"
+ },
+ "d": {
+ "*": "//www.sciencedaily.com/search/?keyword=\u0002\u00013",
+ "po": "http://scd.summon.serialssolutions.com/search?s.q=\u0002\u00010",
+ "irect": "//www.sciencedirect.com/search?qs=\u0002\u00010"
+ },
+ "f": "http://syncfile.co/\u0002\u00010",
+ "g": "http://sales.starcitygames.com/search.php?substring=\u0002\u000114",
+ "h": {
+ "p": "http://scholarpedia.org/w/index.php?search=\u0002\u00010",
+ "*": "//startpage.com/do/search?cmd=process_search&query=\u0002&language=deutsch&with_region=countryCH\u00019",
+ "uh": "http://www.schuh.co.uk/results.aspx#st=\u0002\u00010",
+ "eidung": "//www.scheidung.de/suche.html?tx_kesearch_pi1%5Bsword%5D=\u0002\u00010",
+ "ema": "//schema.org/docs/search_results.html?q=\u0002\u00010",
+ "nittberichte": "http://www.schnittberichte.com/svds.php?Page=Suche&String=\u0002\u00010",
+ "olar": "http://scholar.google.com/scholar?q=\u0002&btnG=Search&as_sdt=800000000001&as_sdtp=on\u00016144",
+ "olieren": "http://www.scholieren.com/zoek?q=\u0002\u00010",
+ "ottenland": "http://www.schottenland.de/suche/?searchstring=\u0002\u00010"
+ },
+ "k": "//api.sck.pm/shorten?\u0002\u00010",
+ "m": {
+ "p": "//www.scmp.com/content/search/\u0002\u00017",
+ "*": "http://www.smashcustommusic.com/index.php?song=\u0002\u00010"
+ },
+ "n": "http://search.sap.com/ui/scn#query=\u0002\u00010",
+ "o": {
+ "*": "//www.slant.co/search?query=\u0002\u00013",
+ "de": "//searchcode.com/?q=\u0002\u00010",
+ "nj": "http://www.spanishdict.com/conjugate/\u0002\u000111",
+ "op": "http://www.scoop.it/search?q=\u0002\u00014",
+ "re": "http://imslp.org/index.php?search=\u0002\u000114",
+ "ts": "http://www.dsl.ac.uk/results/\u0002\u00010",
+ "ut": {
+ "*": "http://www.scout.com/news?query=\u0002\u00010",
+ "s": "//scouts.org.uk/cse-search/?query=\u0002\u00010"
+ },
+ "pe.dk": "http://www.scope.dk/sogning?sog=\u0002 \u00010",
+ "tby": "//www.scotbycycles.co.uk/facetresults.aspx?Term=\u0002\u00010",
+ "ttsradiosite": "http://www.scottsradiosite.co.uk/?s=\u0002\u00010",
+ "ttwyden": "//scottwyden.com/?s=\u0002\u00010"
+ },
+ "p": {
+ "*": "http://www.scp-wiki.net/search:site/a/p/q/\u0002 \u000134",
+ "ru": "http://scpfoundation.net/search:site/q/\u0002\u00010",
+ "-es": "http://lafundacionscp.wikidot.com/search:site/a/pf/q/\u0002\u00010"
+ },
+ "q": "//www.senscritique.com/recherche?query=\u0002\u000134",
+ "*": "//soundcloud.com/search?q=\u0002\u00015",
+ "z": "http://slovnik-cizich-slov.abz.cz/web.php/hledat?typ_hledani=prefix&cizi_slovo=\u0002\u00010",
+ "cl": "//sccl.bibliocommons.com/search/?t=smart&searchOpt=catalogue&q= \u0002&search_category=keyword\u00010",
+ "id": {
+ "*": "//www.sciencedirect.com/search?qs=\u0002\u00010",
+ "ir": {
+ "*": "//www.sciencedirect.com/search?qs=\u0002\u00010",
+ "ect": "//www.sciencedirect.com/search?qs=\u0002\u00010"
+ },
+ "ict": "http://thesciencedictionary.org/search2/?q=\u0002\u00010"
+ },
+ "in": "//scinapse.io/search?query=\u0002\u000113",
+ "ri": {
+ "*": "//www.senscritique.com/recherche?query=\u0002\u000134",
+ "bd": "http://www.scribd.com/search?query=\u0002\u000145",
+ "tique": "http://www.senscritique.com/recherche/?gs_query=\u0002&submit2=\u00014"
+ },
+ "ry": {
+ "*": "//scryfall.com/search?q=\u0002\u00011411",
+ "fall": "//scryfall.com/search?q=\u0002\u00011411"
+ },
+ "code": "http://sccode.org/search?q=\u0002\u00010",
+ "eptr": "//sceptr.net/?s=\u0002\u00010",
+ "ielo": "http://search.scielo.org/?q=\u0002&where=ORG\u00010",
+ "ienceblog": {
+ "*": "//scienceblog.com/?s=\u0002\u00010",
+ "s": "http://www.google.com/cse?cx=017254414699180528062%3Auyrcvn__yd0&q=\u0002\u00010"
+ },
+ "iencedaily": "http://www.sciencedaily.com/search/?keyword=\u0002 \u00010",
+ "iencedirect": "//www.sciencedirect.com/search?qs=\u0002\u00010",
+ "ienze": "http://www.lescienze.it/?q=\u0002\u00010",
+ "ifi": "http://www.worldswithoutend.com/searchwwe.asp?st=\u0002 \u00010",
+ "ilab": "//help.scilab.org/docs/6.0.0/en_US/search/\u0002\u00010",
+ "ilit": "//www.scilit.net/articles/10/0?Search=\u0002\u00010",
+ "imago": "http://scimagojr.com/journalsearch.php?q=\u0002\u00010",
+ "ipy": "http://docs.scipy.org/doc/scipy/reference/search.html?q=\u0002&check_keywords=yes&area=default\u000125",
+ "iplus": "//www.sciplus.com/s/?q=\u0002\u00010",
+ "lang": "http://doc.sccode.org/Search.html#\u0002\u00010",
+ "loud": "//soundcloud.com/search?q=\u0002\u00015",
+ "rapy": "http://doc.scrapy.org/en/latest/search.html?q=\u0002\u00010",
+ "rabble": {
+ "*": "http://www.scrabblewordsolver.com/word-checker/\u0002\u00010",
+ "lookup": "http://www.scrabblelookup.com/word/portion/search/\u0002\u00010"
+ },
+ "ratch": {
+ "*": "//scratch.mit.edu/search/projects?q=\u0002\u00015",
+ "forums": "//scratchforums.asun.co/search?q=\u0002\u00010",
+ "wiki": "http://wiki.scratch.mit.edu/w/index.php?search=\u0002&fulltext=Search&title=Special%3ASearch\u00010"
+ },
+ "rewfix": "//www.screwfix.com/search?search=\u0002\u00014",
+ "rooge": "//www.scrooge.co.uk/search?keyphrase=\u0002\u00010",
+ "uba": "//www.scuba.com/resources/search1.aspx?Action=Search&Search=\u0002\u00010"
+ },
+ "d": {
+ "b": "//syntaxdb.com/reference/search?utf8=✓&search=\u0002\u00018",
+ "e": "//startpage.com/do/search?cmd=process_search&query=\u0002&language=deutsch\u000141",
+ "l": {
+ "2": "//wiki.libsdl.org/FrontPage?action=fullsearch&context=180&value=\u0002&titlesearch=Titles\u00010",
+ "*": "//wiki.libsdl.org/CategoryAPI?action=fullsearch&context=180&value=\u0002&titlesearch=Titles\u00016"
+ },
+ "*": "//slickdeals.net/newsearch.php?q=\u0002&searcharea=deals&searchin=first\u0001530",
+ "v": "http://stardewvalleywiki.com/mediawiki/index.php?search=\u0002\u0001116",
+ "cl": "http://encore.sdcl.org/iii/encore/search/C__S\u0002__Orightresult__U?lang=eng&suite=def\u00010",
+ "nf": "//forums.studentdoctor.net/search/86811885/?q=\u0002\u00010",
+ "ict": "http://www.spanishdict.com/translate/\u0002\u0001450",
+ "irect": "//www.sciencedirect.com/search?qs=\u0002\u00010"
+ },
+ "e": {
+ "a": {
+ "*": "//searchcode.com/?q=\u0002\u00010",
+ "rs": {
+ "*": "http://www.sears.com/shc/s/search_10153_12605?keyword=\u0002\u00010",
+ "ca": "http://www.sears.ca/en/search?q=\u0002&lang=default\u00010",
+ "outlet": "http://www.searsoutlet.com/d/products.jsp?md=srh_md&stxt=\u0002\u00010"
+ },
+ "rx": {
+ "*": "//searx.me/?q=\u0002\u000170",
+ ".me": "http://searx.me/?q=\u0002&pageno=1&category_general\u000118"
+ },
+ "mless": "//www.seamless.com/search?queryText=\u0002\u00010",
+ "monkey": "//addons.mozilla.org/en-US/seamonkey/search/?q=\u0002&cat=all&lver=any&pid=1&sort=&pp=20&lup=&advanced=\u00010",
+ "rch": {
+ "r": "//duckduckgo.com/?q=site:reddit.com+\u0002\u0001225",
+ "*": "http://www.search.com/search?q=\u0002\u000114",
+ "ch": "http://www.search.ch/?q=\u0002&search=Suchen\u00010",
+ "yc": "http://hn.algolia.com/#!/story/forever/0/\u0002\u00014",
+ "bug": "http://www.searchbug.com/tools/reverse-phone-lookup.aspx?TYPE=phonerev&TAG=tools&FULLPHONE=\u0002\u00010",
+ "code": "http://searchco.de/?q=\u0002\u00010",
+ "cpan": "http://search.cpan.org/search?query=\u0002&mode=all\u00010",
+ "enginewatch": "//searchenginewatch.com/?s=\u0002\u00010",
+ "tempest": "http://www.searchtempest.com/search?location=12345&search_string=\u0002&cityselect=zip\u00010",
+ "works": "http://searchworks.stanford.edu/?q=\u0002&search_field=search\u00010"
+ },
+ "talk": "http://www.seatalk.info/cgi-bin/nautical-marine-sailing-dictionary/db.cgi?db=db&view_records=1&uid=default&Term=\u0002\u00010",
+ "tgeek": "http://seatgeek.com/search/?search=\u0002\u00016"
+ },
+ "b": "http://sebsauvage.net/rhaa/index.php?q=\u0002\u000121",
+ "c": {
+ "h": {
+ "*": "//www.search.ch/?q=\u0002\u00010",
+ "at": "//chat.stackexchange.com/rooms/\u0002\u00010",
+ "enovclinic": "http://www.sechenovclinic.ru/search/index.php?q=\u0002\u00010"
+ },
+ "*": "//secsearch.sec.gov/search?utf8=%3F&affiliate=secsearch&query=\u0002\u00010",
+ "edgar": "//www.sec.gov/cgi-bin/browse-edgar?CIK=\u0002&owner=exclude&action=getcompany\u000112",
+ "jobs": "//infosec-jobs.com/?search_keywords=\u0002\u00013",
+ "lists": "http://insecure.org/search.html?cx=partner-pub-0078565546631069%3Abx60rb-fytx&cof=FORID%3A9&ie=ISO-8859-1&q=\u0002&sa=SecSearch\u00010",
+ "ondbike": "//www.secondbike.co.uk/search?q=\u0002\u00010",
+ "uredrop": "//securedrop.readthedocs.org/en/latest/search.html?q=\u0002\u00010",
+ "urityheaders": "//securityheaders.io/?q=\u0002&followRedirects=on\u00010",
+ "uritynl": "//www.security.nl/zoeken?search=\u0002 \u00010",
+ "urityshelf": "//securityshelf.com/index.php?s=\u0002\u00010"
+ },
+ "g": {
+ "a": "//segaretro.org/index.php?search=\u0002\u00010",
+ "*": "//library.seg.org/action/doSearch?AllField=\u0002&publication=\u00010",
+ "dl": "//library.seg.org/action/doSearch?AllField=\u0002\u00010"
+ },
+ "n": {
+ "c": "//www.searchencrypt.com/search?eq=\u0002\u00019",
+ "*": "//store.sonyentertainmentnetwork.com/#!/en-us/search/q=\u0002\u00013",
+ "ta": "http://sentireascoltare.com/?s=\u0002\u00010",
+ "ate": "http://senat.me/en/?s=\u0002\u00010",
+ "derbase": "http://www.senderbase.org/senderbase_queries/detailhost?search_string=\u0002\u00010",
+ "dict": "http://sentencedict.com/\u0002.html\u00016",
+ "scritique": "//www.senscritique.com/recherche?query=\u0002\u000134",
+ "sei": {
+ "*": "http://senseis.xmp.net/?search=\u0002&searchtype=title\u00010",
+ "s": {
+ "*": "http://senseis.xmp.net/?searchstring=\u0002&fullsearch.x=0&fullsearch.y=0&searchtype=either \u00015",
+ "library": "http://senseis.xmp.net/?searchstring=\u0002&fullsearch.x=0&fullsearch.y=0&searchtype=either\u00010"
+ }
+ },
+ "tence": "http://sentence.yourdictionary.com/\u0002\u00014",
+ "tireascoltare": "http://sentireascoltare.com/?s=\u0002\u00010",
+ "try": "//docs.sentry.io/search/?q=\u0002\u00010"
+ },
+ "p": {
+ "*": "http://plato.stanford.edu/search/searcher.py?query=\u0002\u000124",
+ "hora": {
+ "*": "//www.sephora.com/search?keyword=\u0002\u00010",
+ "au": "//www.sephora.com.au/search?q=\u0002\u00010"
+ }
+ },
+ "q": "http://oeis.org/search?q=\u0002\u00013",
+ "s": {
+ "*": "//www.suomienglantisanakirja.fi/\u0002\u00010",
+ "li": {
+ "*": "http://www.seslisozluk.net/?ssQBy=0&word=\u0002\u000158",
+ "sozluk": "http://www.seslisozluk.com/?word=\u0002\u00010"
+ },
+ "sion": "//thesession.org/search?where=&q=\u0002\u000115"
+ },
+ "*": "http://stackexchange.com/search?q=\u0002\u0001199",
+ "80": "//www.se80.co.uk/action/search_results.htm?q=\u0002\u00010",
+ "da": "//www.snapeda.com/search/?q=\u0002&search-type=parts\u00016",
+ "do": "//sedo.com/search/?keyword=\u0002\u00010",
+ "ek": {
+ "*": "http://www.seek.com.au/JobSearch?SearchFrom=quick&Keywords=\u0002\u00014",
+ "ingalpha": "http://seekingalpha.com/search/?q=\u0002\u000137"
+ },
+ "en": {
+ "*": "http://seenthis.net/spip.php?page=recherche&recherche=\u0002\u00016",
+ "glish": "//english.stackexchange.com/search?q=\u0002\u00010"
+ },
+ "lu": "http://search.selu.edu/search?q=\u0002\u00010",
+ "ur": "http://www.seur.com/seguimiento-online.do?segOnlineIdentificador=\u0002\u00010",
+ ".w": "//simple.wikipedia.org/wiki/\u0002\u00010",
+ "zs": "http://slovnik.seznam.cz/en-cz/word/?q=\u0002\u00015",
+ "efelder": "//www.seefelder.net/suche?id=&searchTerm=\u0002\u00010",
+ "faria": "http://www.sefaria.org/search?q=\u0002\u00013",
+ "land": "http://search.searchengineland.com/search?w=\u0002\u00010",
+ "lect": {
+ "*": "http://selectfashion.pk?term=\u0002\u00015",
+ "ome": "//selectome.unil.ch/cgi-bin/getResult.cgi?query=\u0002&res_type=auto\u00010"
+ },
+ "lfhtml": {
+ "*": "http://de.selfhtml.org/navigation/suche/index.htm?Suchanfrage=\u0002\u00010",
+ "wiki": "http://wiki.selfhtml.org/wiki/Spezial:Suche?search=\u0002\u00010"
+ },
+ "math": "//math.stackexchange.com/search?q=\u0002\u00014",
+ "mantic": "//www.semanticscholar.org/search?q=\u0002&sort=relevance&ae=false\u000117",
+ "meta": "//meta.stackexchange.com/search?q=\u0002\u00010",
+ "mrush": "//www.semrush.com/info/\u0002+(full+search)\u00010",
+ "rebii": "http://www.serebii.net/search.shtml?cx=018410473690156091934%3A6gahkiyodbi&cof=FORID%3A11&q=\u0002&sa=Search&siteurl=www.serebii.net%2Findex2.shtml\u0001176",
+ "renes": "//serenesforest.net/?s=\u0002\u00010",
+ "rialvilla.com": "http://serialvilla.com/search? keyword=\u0002\u00010",
+ "riebox": "http://www.seriebox.com/search.php?txt=\u0002 &submit=OK\u00010",
+ "riouseats": "http://www.seriouseats.com/search?term=\u0002&site=all\u000110",
+ "rjunk": "//duckduckgo.com/?q=site%3Awww.serienjunkies.de+\u0002\u00010",
+ "rver24": "//www.servershop24.de/?ActionCall=WebActionArticleSearch&BranchId=0&multishop_id=0&customer_class=9&lang=de&Params[SearchParam]=\u0002\u00010",
+ "rverfault": "http://serverfault.com/search?q=\u0002\u00010",
+ "rvice": {
+ "*": "//www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=\u0002\u000110",
+ "public": "//www.service-public.fr/particuliers/recherche?keyword=\u0002\u00010"
+ },
+ "tlist": "http://www.setlist.fm/search?query=\u0002\u000111",
+ "znam": "http://search.seznam.cz/?q=\u0002\u000132"
+ },
+ "f": {
+ "2": "http://symfony.com/search?q=\u0002\u00010",
+ "a": "//scryfall.com/search?q=\u0002\u00011411",
+ "e": "http://www.sparkfun.com/search/results?term=\u0002&what=products\u00010",
+ "i": "//scifiinterfaces.com/?s=\u0002&submit=Search\u00010",
+ "l": "//scryfall.com/search?q=\u0002\u00011411",
+ "*": "http://serverfault.com/search?q=\u0002\u00010",
+ "s": {
+ "e": "http://salesforce.stackexchange.com/search?q=\u0002\u00010",
+ "*": "http://www.stopforumspam.com/search?q=\u0002\u00010"
+ },
+ "x": {
+ "*": "http://thejadednetwork.com/sfx/search/?keyword=\u0002&submitSearch=\u00010",
+ "performance": "//sfxperformance.com/search/part-search.asp?search=\u0002\u00010",
+ "search": "http://soundeffectssearch.com/find-a-sound-library/?library=\u0002\u00010"
+ },
+ "pl": "//sfpl.bibliocommons.com/v2/search?searchType=smart&query=\u0002\u00010",
+ "bok": "//www.sfbok.se/search?keys=\u0002\u000111",
+ "gate": "http://www.sfgate.com/search/?action=search&query=\u0002\u000142",
+ "help": "//help.salesforce.com/search#q=\u0002\u00010",
+ "moma": "//www.sfmoma.org/search/?q=\u0002\u00013",
+ "orce": {
+ "l": "//na85.lightning.force.com/one/one.app#ey\u0002Jjb21wb25lbnREZWYiOiJmb3JjZVNlYXJjaDpzZWFyY2hQYWdlIiwiYXR0cmlidXRlcyI6eyJ0ZXJtIjoiQ3VydCIsInNjb3BlTWFwIjp7InR5cGUiOiJUT1BfUkVTVUxUUyJ9LCJjb250ZXh0Ijp7ImRpc2FibGVTcGVsbENvcnJlY3Rpb24iOmZhbHNlLCJkaXNhYmxlSW50ZW50UXVlcnkiOmZhbHNlLCJwZXJtc0FuZFByZWZzIjp7IlNlYXJjaFVpLnNlYXJjaFVJUGlsb3RGZWF0dXJlRW5hYmxlZCI6ZmFsc2UsIlNlYXJjaEV4cGVyaWVuY2UuTGVmdE5hdkVuaGFuY2VtZW50RW5hYmxlZCI6dHJ1ZSwiU2VhcmNoLmNyb3NzT2JqZWN0c0F1dG9TdWdnZXN0RW5hYmxlZCI6dHJ1ZSwiU2VhcmNoUmVzdWx0c0xWTS5sdm1FbmFibGVkRm9yU2VhcmNoUmVzdWx0c09uIjp0cnVlLCJNeVNlYXJjaC51c2VyQ2FuSGF2ZU15U2VhcmNoQmVzdFJlc3VsdCI6ZmFsc2UsIlNlYXJjaFJlc3VsdHNMVk0ubHZtRW5hYmxlZEZvclRvcFJlc3VsdHMiOmZhbHNlLCJPcmdQZXJtaXNzaW9ucy5VbmlvbkFwcE5hdlNtYXJ0U2NvcGUiOnRydWUsIlNlYXJjaFVpLmZlZWRiYWNrQ29tcG9uZW50RW5hYmxlZCI6ZmFsc2UsIlNlYXJjaEV4cGVyaWVuY2UuVG9wUmVzdWx0c1NpbmdsZVNPU0xFbmFibGVkIjpmYWxzZSwiT3JnUHJlZmVyZW5jZXMuQ2hhdHRlckVuYWJsZWQiOnRydWUsIlNlYXJjaC5tYXNrU2VhcmNoSW5mb0luTG9ncyI6ZmFsc2UsIlNlYXJjaFVpLm9yZ0hhc0FjY2Vzc1RvU2VhcmNoVGVybUhpc3RvcnkiOmZhbHNlLCJTZWFyY2hVaS5zZWFyY2hVSUludGVyYWN0aW9uTG9nZ2luZ0VuYWJsZWQiOmZhbHNlLCJNeVNlYXJjaC51c2VyQ2FuSGF2ZU15U2VhcmNoIjpmYWxzZX0sInNlYXJjaERpYWxvZ1Nlc3Npb25JZCI6IjM0NmY1YzI1LTIwNGEtYjMyMS1kYzM3LTM3Yzc5ZGQyNjA3ZCIsInNlYXJjaFNvdXJjZSI6IklOUFVUX0RFU0tUT1AifSwiZ3JvdXBJZCI6IkRFRkFVTFQifSwic3RhdGUiOnt9fQ%3D%3D\u00010",
+ "*": "//login.salesforce.com/_ui/search/ui/UnifiedSearchResults?str=\u0002\u00013"
+ },
+ "ulib": "http://search.lib.sfu.ca/?q=\u0002\u00010"
+ },
+ "g": {
+ "d": "//www.yeastgenome.org/search?q=\u0002&is_quick=true\u00014",
+ "*": "//sourcegraph.com/search?q=\u0002\u000124"
+ },
+ "h": {
+ "m": {
+ "f": "//forum.shmakerspace.org/search?q=\u0002\u00010",
+ "*": "//shikimori.org/animes?search=\u0002\u00010",
+ "oop": "http://www.shmoop.com/search?q=\u0002 \u00010"
+ },
+ "o": {
+ "p": {
+ "*": "http://shopping.yahoo.com/search?p=\u0002\u000115",
+ "ca": {
+ "*": "//www.shop.ca/webapp/wcs/stores/servlet/SearchDisplay?storeId=10201&catalogId=10301&langId=-1&pageSize=48&beginIndex=0&searchSource=Q&sType=SimpleSearch&resultCatEntryType=2&showResultsPage=true&pageView=imageOnly&searchTermScope=-1&searchTerm=\u0002\u00010",
+ "de": "//www.shopcade.com/search?query=\u0002\u00010"
+ },
+ "ee": {
+ "*": "//shopee.tw/search/?keyword=\u0002\u000117",
+ "ph": "//shopee.ph/search?keyword=\u0002\u0001136"
+ },
+ "to": "//www.shopto.net/search/newSearchPage?Filter_department=&newsearch=\u0002\u00010",
+ "athome": "//www.shopathome.com/search?query=\u0002\u00010",
+ "clues": "http://shopclues.com/?q=\u0002: \u00010",
+ "disciple": "//www.shopdisciple.com/search?q=\u0002\u00010",
+ "henco": "//shophenco.com/?q=\u0002\u00010",
+ "ify": {
+ "*": "//help.shopify.com/en/search?utf8=%E2%9C%93&q=\u0002\u00010",
+ "forum": "//ecommerce.shopify.com/ecommerce/\u0002\u00010"
+ },
+ "omo": "http://www.shopomo.com/search?q=\u0002 \u00010",
+ "ping": "//www.google.com/products?q=\u0002&sa=N&tab=pf\u0001130",
+ "yourway": "http://www.shopyourway.com/search/products?q=\u0002\u00010",
+ "zilla": "http://www.shopzilla.com/\u0002/search\u00010"
+ },
+ "*": "http://symbolhound.com/?q=\u0002\u00010",
+ "ut": {
+ "*": "//www.shoutmeloud.com/?s=\u0002\u00010",
+ "cast": "//directory.shoutcast.com/Search?query=\u0002\u000112"
+ },
+ "dan": "//www.shodan.io/search?query=\u0002\u000120",
+ "opde": "//www.shoop.de/suche?q=\u0002\u00010",
+ "rten": "http://cortas.elpais.com/encode.pl?u=http://\u0002\u00010",
+ "wdown": "http://dex.pokemonshowdown.com/?q=\u0002\u00014"
+ },
+ "*": "//www.shodan.io/search?query=\u0002\u000120",
+ "s": {
+ "h": "//stor.1conan.com/tsssaver/shsh/\u0002\u00010",
+ "*": "//secondhandsongs.com/search?search_text=\u0002\u00016"
+ },
+ "z": "http://www.shazam.com/de/search/\u0002\u00018",
+ "aw": "//www.shaw.ca/store/search/search.jsp?q=\u0002\u00010",
+ "bd": "http://www.shabdkosh.com/translate/\u0002/\u00010",
+ "bf": "http://shbf.se/bryggaren/search.php?keywords=\u0002&sid=7fb2bed909445b5497565d97ea00eb62\u00010",
+ "tm": "http://www.shoptimate.com/search?q=\u0002\u00010",
+ "ub": "//www.scribblehub.com/?s=\u0002\u00010",
+ "a256": "//cryptography.cc/convert?text=\u0002&algorithm=sha256\u00010",
+ "aarli": "//river.libox.fr/search.php?q=\u0002\u00010",
+ "abbat": "//www.hebcal.com/shabbat/?cfg=json&m=50&b=18&zip=\u0002&a=on\u00010",
+ "adertoy": "//www.shadertoy.com/results?query=\u0002 \u00010",
+ "ards": "//crystalshards.org/?filter=\u0002\u00010",
+ "arese": "//sharepoint.stackexchange.com/search?q=\u0002\u00010",
+ "aresnc": "//share.servicenow.com/app.do#/search-result?search_query=\u0002\u00010",
+ "areware": "http://download.cnet.com/1770-20_4-0.html?searchtype=downloads&query=\u0002&tg=dl-20&search.x=0&search.y=0&search=+Go%252521\u000111",
+ "ayari": "//www.shayarimerepyarki.com/search?q=\u0002\u00010",
+ "eetmusicdirect": "http://www.sheetmusicdirect.com/Search.aspx?query=\u0002\u00010",
+ "eetmusicplus": "http://www.sheetmusicplus.com/search?q=\u0002 \u00010",
+ "erdog": "http://www.sherdog.com/stats/fightfinder?SearchTxt=\u0002\u000119",
+ "erwin": "//www.sherwin-williams.com/SearchDisplay?categoryId=&storeId=10151&catalogId=11051&langId=-1&sType=SimpleSearch&resultCatEntryType=2&showResultsPage=true&searchSource=Q&pageView=list&beginIndex=0&searchType=1000&pageSize=6&globalSearch=true&searchTerm=\u0002#facet:&productBeginIndex:0&contentBeginIndex:0&orderBy:&orderByContent:&pageView:list&minPrice:&maxPrice:&pageSize:&\u00010",
+ "iatsu": "http://www.shiatsu-stijlen.nl/zoeken.php?cx=partner-pub-1276597034470244%3Aslojxr-8otw&cof=FORID%3A11&ie=ISO-8859-1&q=\u0002&sa=Zoeken\u00010",
+ "iki": {
+ "*": "//shikimori.org/animes?search=\u0002\u00010",
+ "mori": "//shikimori.org/animes?search=\u0002\u00010"
+ },
+ "inden": "http://shinden.pl/search?q=\u0002\u00013",
+ "ironet": "http://shironet.mako.co.il/search?q=\u0002\u00010",
+ "irtoid": "//shirtoid.com/search/\u0002\u00010",
+ "itcore": "http://shitcore.org/search.php?keywords=\u0002\u00010",
+ "kwiki": "http://help.strongholdkingdoms.com/index.php?search=\u0002&title=Special%3ASearch\u00010",
+ "pock": "//en.shpock.com/q/\u0002/\u00010",
+ "roomery": "//www.shroomery.org/search.php?terms=\u0002\u00010",
+ "ura": "http://shura.shu.ac.uk/cgi/facet/simple2?q=\u0002\u00010",
+ "utterstock": "http://www.shutterstock.com/cat.mhtml?searchterm=\u0002\u000120"
+ },
+ "i": {
+ "n": {
+ "*": "//www.sinonimos.com.br/\u0002\u00017",
+ "ga": "//singa.com/search/results/\u0002\u00010",
+ "donews": "//search.sindonews.com/search?type=artikel&q=\u0002\u00010",
+ "emalar": "http://www.sinemalar.com/ara/?type=all&page=1&q=\u0002\u00010",
+ "gcat": "//singcat.net/results/?q=\u0002\u00010",
+ "onimi": {
+ "*": "http://luirig.altervista.org/sinonimi/hypertext/ricerca.php?title=\u0002\u00010",
+ "t": "http://sinonimi.it/\u0002\u00018"
+ },
+ "onimo": {
+ "s": "//www.sinonimos.com.br/\u0002\u00017",
+ "*": "http://www.wordreference.com/sinonimos/\u0002\u00013"
+ },
+ "opak": "http://sinopak.net/search?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=Search\u00010"
+ },
+ "p": "//sipreadrepeat.com/?s=\u0002\u00010",
+ "*": "//www.si.com/search?q=\u0002\u00018",
+ "t": {
+ "e": {
+ "*": "//duckduckgo.com/?q=site%3A\u0002\u0001145",
+ "alytics": "http://www.sitealytics.com/\u0002/\u00010",
+ "point": "//www.sitepoint.com/?s=\u0002\u00010",
+ "slike": "http://www.siteslike.com/similar/\u0002 \u00010"
+ },
+ "*": "http://schoolido.lu/cards/?search=\u0002&name=&rarity=&attribute=&is_promo=&is_special=&is_event=&skill=&translated_collection=&collection=&main_unit=&sub_unit=&idol_school=&idol_year=&release_after=&release_before=&view=cards&albumbuilder_account=15585&account=&ordering=id&reverse_order=on\u00010",
+ "ag": "http://www.sitag.ch/suchen/?tx_indexedsearch%5Bsword%5D=\u0002\u00010",
+ "usali": "//situsali.com/?s=\u0002&submit=Search\u00010"
+ },
+ "w": "http://simpsonswiki.com/w/index.php?title=Special%3ASearch&search=\u0002 \u00010",
+ "ce": "http://www.staticice.com.au/cgi-bin/search.cgi?q=\u0002\u00019",
+ "ec": "//sinonims.iec.cat/sinonims_cerca_sin.asp?pclau2=\u0002&button=Cerca+arreu\u00010",
+ "ri": "http://www.shouldiremoveit.com/programs.aspx?q=\u0002\u00014",
+ "abr": "//br.shouldianswer.net/numero-de-telefone/?q=\u0002\u00010",
+ "emenssupport": "//support.industry.siemens.com/cs/search?search=\u0002\u00017",
+ "gfox": "//partners.sigfox.com/search/products?q=\u0002\u00010",
+ "gma": "http://www.sigmaaldrich.com/catalog/search?interface=All&term=\u0002\u000110",
+ "gningsavvy": "//www.signingsavvy.com/search/\u0002\u00010",
+ "kuli": "http://doc.sikuli.org/search.html?q=\u0002\u00010",
+ "lver": {
+ "*": "//www.providentmetals.com/catalogsearch/result/?q=\u0002\u00010",
+ "games": "//www.silvergames.com/en/s?q=\u0002\u00010"
+ },
+ "mages": "//startpage.com/do/metasearch.pl?cat=pics&query=\u0002\u000121",
+ "mania": "http://simania.co.il/searchBooks.php?searchType=tabAll&query=\u0002\u00010",
+ "mbad": "http://simbad.u-strasbg.fr/simbad/sim-basic?Ident=\u0002\u000120",
+ "milar": {
+ "*": "http://www.similarsites.com/site/\u0002\u00010",
+ "web": "http://www.similarweb.com/website/\u0002\u000116"
+ },
+ "mpl": {
+ "*": "//www.simplyrecipes.com/?s=\u0002\u00010",
+ "icite": "//www.simplicite.io/resources/search?q=\u0002\u00010",
+ "yhired": "http://www.simplyhired.com/a/jobs/list/q-\u0002\u00010",
+ "yscuba": "//www.simplyscuba.com/pages/search-results-page?q=\u0002\u00010"
+ },
+ "mpsons": "http://simpsons.wikia.com/wiki/Special:Search?search= \u0002\u00010",
+ "rogohan": "//www.sirogohan.com/recipe/index/keyword: \u0002\u00010",
+ "schmi": "//www.silberschmiede-online.de/advanced_search_result.php?keywords=\u0002\u00010",
+ "sku": "//la-lojban.github.io/sutysisku/en/#sisku/\u0002\u00010",
+ "xdegrees": "//sixdegreesofkanyewest.com/artist?q=\u0002\u00010"
+ },
+ "j": {
+ "p": "http://sjp.pwn.pl/szukaj/\u0002.html\u0001180",
+ "r": "http://www.scimagojr.com/journalsearch.php?q=\u0002\u00010",
+ "*": "//www.sitejabber.com/search?q=\u0002\u00014",
+ "mr": "//duckduckgo.com/?q=\u0002+site:socjobrumors.com\u00010",
+ "cpl": "http://stjos.sjcpl.lib.in.us/search/?searchtype=X&SORT=D&searcharg=\u0002 \u00017",
+ "iauto": "//sjiauto.wordpress.com/?s=\u0002\u00010"
+ },
+ "k": {
+ "1": "//sk1er.club/stats/\u0002\u00010",
+ "8": "//sk8park.de/?s=\u0002\u00010",
+ "b": "//kb.workfusion.com/dosearchsite.action?cql=siteSearch+~+%22\u0002%22&queryString=\u0002\u00010",
+ "d": "http://slovniky.korpus.sk/?w=\u0002\u00010",
+ "k": "http://shabdkosh.com/kn/translate/\u0002/\u00010",
+ "*": "http://www.songkick.com/search?query=\u0002\u00010",
+ "s": "//sks-keyservers.net/pks/lookup?op=vindex&search=\u0002\u00010",
+ "u": "//docs.skunity.com/syntax/search/\u0002\u00017",
+ "y": {
+ "*": "http://www.skysports.com/search?q=\u0002\u00015",
+ "pecommunity": "http://community.skype.com/t5/forums/searchpage/tab/message?filter=labels%2Clocation&location=category%3AEnglish&q=\u0002 \u00010",
+ "rock": "http://www.skyrock.com/search/people/?q=\u0002\u00010",
+ "scan": "http://duckduckgo.com/?q=\u0002+site:http://www.skyscanner.net\u00014",
+ "store": "//www.skystore.com/search?q=\u0002\u00010",
+ "vector": "//skyvector.com/search/site/\u0002\u00014"
+ },
+ "24": "//www.sportkopf24.de/?ActionCall=WebActionArticleSearch&Params%5BSearchParam%5D=\u0002\u00010",
+ "tr": "//www.sketchappsources.com/search_\u0002.html\u00010",
+ "98q": "http://wiki.sk89q.com/w/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u00010",
+ "alman": "//www.skal-man.se/sok/\u0002\u00010",
+ "apiec": "http://www.skapiec.pl/szukaj/w_calym_serwisie/\u0002\u00010",
+ "elbiu": "http://skelbiu.lt/skelbimai/?keywords=\u0002\u00010",
+ "elbimai": "//www.skelbimai.lt/paieska?q=\u0002\u00010",
+ "enfi": "http://www.sanakirja.org/search.php?l=3&l2=17&q=\u0002\u000152",
+ "epdic": "//duckduckgo.com/?q=\u0002+site:skepdic.com\u00010",
+ "epticsbible": "//duckduckgo.com/?q=site:skepticsannotatedbible.com \u0002\u00010",
+ "epticskoran": "//duckduckgo.com/?q=site%3Askepticsannotatedbible.com%2Fquran%2F+\u0002&ia=web\u00010",
+ "epticsquran": "//duckduckgo.com/?q=site%3Askepticsannotatedbible.com%2Fquran%2F+\u0002&t=ffsb&ia=web\u00010",
+ "eptoid": "//skeptoid.com/search.php?q=\u0002\u00010",
+ "etchfab": "//sketchfab.com/models?q=\u0002&sort_by=-likeCount\u00013",
+ "etchport": "//www.sketchport.com/search?q=\u0002\u00010",
+ "ill": {
+ "*": "//www.skillshare.com/search?query=\u0002\u00015",
+ "share": "//www.skillshare.com/search?query=\u0002\u00015"
+ },
+ "image": "http://scikit-image.org/docs/dev/search.html?q=\u0002&check_keywords=yes&area=default\u00010",
+ "inny": "//www.theskinnyconfidential.com/?s=\u0002\u00010",
+ "indeep": "http://www.ewg.org/skindeep/search.php?query=\u0002\u00010",
+ "inflint": "http://skinflint.co.uk/?fs=\u0002\u00010",
+ "ipthedrive": "http://www.skipthedrive.com/jobs/?search=\u0002 \u00010",
+ "learn": "//duckduckgo.com/?q=site%3Ahttp%3A%2F%2Fscikit-learn.org%2Fstable%2Fmodules%2Fgenerated%2F+\u0002&ia=web\u000111",
+ "routz": "//www.skroutz.gr/search?keyphrase=\u0002\u0001251"
+ },
+ "l": {
+ "k": "//www.searchlock.com/search?q=\u0002\u00013",
+ "o": {
+ "*": "//www.searchlotto.co.uk/yhs_search.php?q=\u0002\u00010",
+ "v": {
+ "*": "http://slovari.yandex.ru/search.xml?text=\u0002\u00010",
+ "ak": "http://slovniky.korpus.sk/?w=\u0002\u00010",
+ "nenya": "http://slovnenya.com/dictionary/\u0002\u00010",
+ "nik": {
+ "*": "//slovnik.seznam.cz/en/?q=\u0002\u000122",
+ "y": "http://slovniky.korpus.sk/?w=\u0002\u00010"
+ }
+ },
+ "ck": {
+ "i": "//www.searchlock.com/search?tbm=isch&q=\u0002\u00010",
+ "*": "//www.searchlock.com/search?q=\u0002\u00013"
+ },
+ "te": {
+ "*": "http://slote.me/?q=\u0002\u00010",
+ "ch": "//slo-tech.com/forum/isci/?q=\u0002\u00010"
+ }
+ },
+ "q": {
+ "a": "//www.sololearn.com/Discuss?ordering=Trending&query=\u0002\u00010",
+ "*": "//www.sololearn.com/Discuss?ordering=Trending&query=\u0002\u00010"
+ },
+ "*": "http://www.setlist.fm/search?query=\u0002\u000111",
+ "aw": "http://www.slaw.ca/?s=\u0002\u00010",
+ "cl": "//www.slcl.org/bento/search/\u0002\u00010",
+ "ds": "//www.lightningdesignsystem.com/components/\u0002\u00016",
+ "nl": "//strategischlui.nl/?s=\u0002\u00010",
+ "ub": "http://katalogbeta.slub-dresden.de/?tx_find_find[q][default]=\u0002 \u00017",
+ "ackbuild": {
+ "*": "//slackbuilds.org/result/?search=\u0002\u00010",
+ "s": "//slackbuilds.org/result/?search=\u0002\u00010"
+ },
+ "ackdoc": "http://docs.slackware.com/start?do=search&id=\u0002&fulltext=Search\u00010",
+ "ackpkg": "http://packages.slackware.com/?search=\u0002\u00010",
+ "ader": "http://www.slader.com/search/?search_query=\u0002\u00013",
+ "ang": {
+ "*": "http://onlineslangdictionary.com/definition+of/\u0002\u00015",
+ "gr": "http://www.slang.gr/lemmas?q=\u0002\u00010"
+ },
+ "ant": "http://www.slant.co/topics/?search=\u0002\u000146",
+ "ashdot": "http://slashdot.org/index2.pl?fhfilter=\u0002\u00010",
+ "ate": {
+ "*": "http://www.slate.com/search.html#search=\u0002\u00010",
+ "fr": "//www.slate.fr/search?mot-cle=\u0002\u00010"
+ },
+ "cpl": "http://catalog.slcpl.org/search/searchresults.aspx?term=\u0002\u00010",
+ "ibs": "http://searchlibs.com/?q=\u0002\u00010",
+ "ickdeals": "http://slickdeals.net/sdsearch.php?forumchoice%5B%5D=9&search=\u0002&mode=forum&showposts=0&sdsearch_archive=0&firstpost=1\u000172",
+ "idescarnival": "//www.slidescarnival.com/?s=\u0002\u00010",
+ "ideshare": "http://www.slideshare.net/search/slideshow?q=\u0002&submit=post&commit=Search\u00013",
+ "ink": "http://link.springer.com/search?query=\u0002\u00010",
+ "itazforums": "http://forum.slitaz.org/search.php?q=\u0002\u00010",
+ "udgefeed": "//sludgefeed.com/?s=\u0002\u00010",
+ "wiki": "http://wiki.secondlife.com/w/index.php?search=\u0002\u00010",
+ "yrics": "http://www.songlyrics.com/index.php?section=search&searchW=\u0002&submit=Search\u00010"
+ },
+ "m": {
+ "a": {
+ "g": "http://science.sciencemag.org/search/\u0002\u00010",
+ "m": {
+ "*": "http://smile.amazon.com/s/?field-keywords=\u0002\u000131",
+ "uk": "//smile.amazon.co.uk/s?field-keywords=\u0002\u000114"
+ },
+ "p": "http://streetmap.co.uk/postcode/\u0002\u000111",
+ "*": "//smile.amazon.com/s/&field-keywords=\u0002\u000164",
+ "rt": {
+ "*": "//www.smarticular.net/?s=\u0002\u00010",
+ "y": "http://www.smarty.net/search?q=\u0002&show=manual-en&x=0&y=0\u00010",
+ "os": "//smartos.org/man/\u0002\u00010",
+ "cat": "//rug.on.worldcat.org/search?databaseList=&queryString=\u0002\u00010",
+ "search": "http://smartsearch.altervista.org/?q=\u0002 \u00010"
+ },
+ "shbomb": "//smashbomb.com/search?keyword=\u0002\u00013",
+ "shingmagazine": "http://www.smashingmagazine.com/search-results/?q=\u0002&cx=partner-pub-6779860845561969%3A5884617103&cof=FORID%3A10&ie=UTF-8\u00010",
+ "shwords": "http://www.smashwords.com/books/search?query=\u0002\u00010"
+ },
+ "d": {
+ "b": "http://smdb.kb.se/catalog/search?q=\u0002\u00010",
+ "e": "http://smile.amazon.de/s?field-keywords=\u0002\u000140",
+ "*": "http://www.sheetmusicdirect.com/Search.aspx?query=\u0002\u00010"
+ },
+ "h": {
+ "i": "//www.smhi.se/sok?query=\u0002\u00010",
+ "*": "http://www.smh.com.au/search?text=\u0002\u00010"
+ },
+ "n": "http://songmeanings.com/query/?query=\u0002\u00013",
+ "s": {
+ "c": "//www.semanticscholar.org/search?q=\u0002\u000146",
+ "*": "http://songmeanings.com/query/?query=\u0002\u00013"
+ },
+ "*": "http://www.smashingmagazine.com/search-results/?q=\u0002&cx=partner-pub-6779860845561969%3A5884617103&cof=FORID%3A10&ie=UTF-8\u00010",
+ "v": "http://www.ohg-ka.de/smv/?s=\u0002\u00010",
+ "w": "http://www.mariowiki.com/index.php?title=Special%3ASearch&search=\u0002\u000164",
+ "og": {
+ "*": "http://www.smogon.com/search/?q=\u0002\u00010",
+ "on": {
+ "*": "//www.smogon.com/dex/sm/pokemon/\u0002\u0001123",
+ "bw": "http://www.smogon.com/dex/bw/pokemon/\u0002\u00010",
+ "dp": "http://www.smogon.com/dex/dp/pokemon/\u0002\u00010",
+ "gs": "http://www.smogon.com/dex/gs/pokemon/\u0002\u00010",
+ "rb": "http://www.smogon.com/dex/rb/pokemon/\u0002\u00010",
+ "sm": "http://www.smogon.com/dex/sm/pokemon/\u0002/\u00010",
+ "xy": "http://www.smogon.com/dex/xy/pokemon/\u0002\u00010"
+ },
+ "rs": "http://www.smogon.com/dex/rs/pokemon/\u0002/\u00010"
+ },
+ "pl": "//smpl.bibliocommons.com/search?t=smart&search_category=keyword&q=\u0002\u00010",
+ "re": "//www.swissmilk.ch/de/alle-rezepte/suche/?qt=\u0002&cat=Rezept+Suche&qd=1\u00010",
+ "ention": "http://socialmention.com/search?q=\u0002\u00019",
+ "gsm": "http://www.smogon.com/dex/sm/pokemon/\u0002\u00010",
+ "ile": {
+ "*": "//smile.amazon.com/s?field-keywords=\u0002\u0001671",
+ "uk": "//smile.amazon.co.uk/s?field-keywords=\u0002\u000114"
+ },
+ "ime": "//api.posteo.de/v1/public-keys/\u0002?type=smime\u00010",
+ "ite": "http://smite.gamepedia.com/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010",
+ "iths": {
+ "*": "//www.smithsfoodanddrug.com/search?query=\u0002&searchType=natural\u00010",
+ "onian": "//si.edu/sisearch?edan_q=\u0002\u00010"
+ },
+ "itten": "//smittenkitchen.com/?s=\u0002\u00010",
+ "ulweb": "http://www.smulweb.nl/recepten/\u0002\u00010",
+ "zdm": "//search.smzdm.com/?c=home&s=\u0002\u000114"
+ },
+ "n": {
+ "c": {
+ "r": "//snapcraft.io/search?q=\u0002\u00010",
+ "*": "//developer.servicenow.com/app.do#!/search?category=API&q=\u0002\u00010"
+ },
+ "d": {
+ "*": "http://www.snapdeal.com/search?noOfResults=20&keyword=\u0002\u00010",
+ "cld": "//soundcloud.com/search?q=\u0002\u00015",
+ "ocs": "//docs.servicenow.com/search?q=\u0002\u00017"
+ },
+ "f": "http://www.snf.ch/en/Search/Pages/default.aspx?k=\u0002\u00010",
+ "k": "//community.servicenow.com/community?id=community_search&q=\u0002\u00010",
+ "l": "http://snl.no/.search?e=snl&query=\u0002\u000151",
+ "m": "//www.nexusmods.com/skyrim/search/?gsearch=\u0002&gsearchtype=mods\u00010",
+ "n": "http://sonic.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "o": {
+ "*": "//www.startpage.com/do/search?cmd=process_search&query=\u0002&with_region=countryNO\u00010",
+ "rt": "//www.snort.org/search?query=\u0002\u00010",
+ "tr": "//www.snotr.com/search/?search=\u0002\u00010",
+ "gard": "//www.snogard.de/suche.html?suchwort=\u0002\u00010",
+ "opsnoo": "//www.snoopsnoo.com/u/\u0002\u00014",
+ "pes": "http://www.snopes.com/?s=\u0002\u000119"
+ },
+ "p": {
+ "*": "http://www.snopes.com/?s=\u0002\u000119",
+ "edia": "//www.snpedia.com/index.php?title=Special%3ASearch&search=\u0002&fulltext=Search\u00010"
+ },
+ "*": "http://soylentnews.org/search.pl?query=\u0002\u000122",
+ "s": "http://seaborn.pydata.org/search.html?q=\u0002&check_keywords=yes&area=default\u00014",
+ "w": "http://wiki.servicenow.com/search-results.php?cx=005409823165138974380%3Abltnnmgfoek&cof=FORID%3A10&ie=UTF-8&q=\u0002&sa=Search&siteurl=wiki.servicenow.com%2Fsearch-results.php&ref=&ss=\u00010",
+ "ap": {
+ "*": "http://snapzu.com/find/\u0002\u000112",
+ "s": "//snapcraft.io/search?q=\u0002\u00010",
+ "py": {
+ "*": "//snapcraft.io/search?q=\u0002\u00010",
+ "goat": "//snappygoat.com/s/?q=\u0002\u00013",
+ "words": "http://www.snappywords.com/?lookup=\u0002\u00010"
+ },
+ "craft": "//snapcraft.io/search?category=&q=\u0002\u000129",
+ "deal": "http://www.snapdeal.com/search?keyword=\u0002\u00010"
+ },
+ "ih": "//www.startpage.com/do/search?q=\u0002&l=nihongo\u00010",
+ "it": "http://www.sinonimi-contrari.it/\u0002/\u00010",
+ "rt": "//www.snort.org/search?query=\u0002&submit_search=\u00010",
+ "iff": "//websniffer.cc/?url=\u0002\u00016",
+ "uson": "http://www.snuson.com/forum/shop/search/?q=\u0002&submit.x=0&submit.y=0\u00010"
+ },
+ "o": {
+ "c": {
+ "p": "http://careers.stackoverflow.com/companies?searchTerm=\u0002\u00010",
+ "*": "http://careers.stackoverflow.com/jobs?searchTerm=\u0002\u00010",
+ "vi": "//stackoverflow.com/search?q=[labwindows]+\u0002\u00010",
+ "cerway": "http://int.soccerway.com/search/?q=\u0002&module=all\u00010",
+ "cerwiki": "http://soccerwiki.com/wiki.php?action=search&q=\u0002&searchType=players\u00010",
+ "ialblade": "//socialblade.com/search/\u0002\u000167",
+ "iete": "http://www.societe.com/cgi-bin/search?champs=\u0002\u000110",
+ "kandmore": "http://www.socksandmore.dk/catalogsearch/result/?q=\u0002\u00010",
+ "ompanies": "//stackoverflow.com/jobs/companies?q=\u0002\u00010",
+ "wall": "http://www.socwall.com/wallpapers/search:\u0002\u00010"
+ },
+ "d": "//duckduckgo.com/?q=site:stackoverflow.com+\u0002\u0001115",
+ "f": {
+ "f": "//duckduckgo.com/?kp=-2&q=\u0002\u000161",
+ "*": "//stackoverflow.com/search?q=\u0002\u000140",
+ "asc": "//www.sofascore.com/search?q=\u0002\u000114",
+ "ifa": "//sofifa.com/players?keyword=\u0002 \u000162",
+ "t32": "http://www.soft32.com/search/?k=\u0002&submit=\u00010",
+ "ticweb": "//www.billing.softicweb.com/cart.php?a=add&domain=register&query=\u0002\u00010",
+ "tpedia": "http://www.softpedia.com/dyn-search.php?search_term=\u0002&x=0&y=0\u00010",
+ "tware": "http://download.cnet.com/1770-20_4-0.html?searchtype=downloads&query=\u0002&tg=dl-20&search.x=0&search.y=0&search=+Go%252521\u000111",
+ "urry": "//www.sofurry.com/browse/search?search=\u0002\u00010"
+ },
+ "g": {
+ "*": "//www.google.com/search?q=site%3Astackoverflow.com+\u0002\u000113",
+ "ou": "//www.sogou.com/web?query=\u0002\u000110"
+ },
+ "m": {
+ "e": "http://www.someecards.com/search?q=\u0002 \u00010",
+ "*": "http://www.spirit-of-metal.com/find.php?nom=\u0002\u000113"
+ },
+ "r": {
+ "*": "http://stackoverflow.com/search?q=[r]+\u0002\u00010",
+ "abel": "//www.sorabel.com/products/search?query=\u0002\u00010",
+ "ocaba": "http://www.sorocaba.sp.gov.br/pesquisar/?q=\u0002\u00010",
+ "uso": "//soruso.com/?s=\u0002\u00010"
+ },
+ "s": {
+ "o": "http://www.soso.com/q?pid=s.idx&w=\u0002\u00010",
+ "*": "http://software.opensuse.org/search?q=\u0002&search_devel=false&search_unsupported=false\u000120",
+ "crapy": "http://stackoverflow.com/search?q=\u0002[scrapy]\u00010"
+ },
+ "*": "//stackoverflow.com/search?q=\u0002\u000140",
+ "js": "//stackoverflow.com/search?q=[javascript]+\u0002\u00013",
+ "kr": "http://sokr.ru/\u0002/\u00010",
+ "lo": {
+ "j": "http://solo.bodleian.ox.ac.uk/primo-explore/search?query=any,contains,\u0002&tab=local&search_scope=LSCOP_ALL&vid=SOLO&facet=rtype,include,journals&lang=en_US&offset=0\u00010",
+ "*": "http://solo.bodleian.ox.ac.uk/primo-explore/search?query=any,contains,\u0002&tab=local&search_scope=LSCOP_ALL&vid=SOLO&lang=en_US&offset=0\u000111",
+ "mid": "http://www.solomid.net/searchresults.php?q=\u0002\u00010",
+ "press": "//www.solopress.com/search?searchTerm=\u0002\u00010"
+ },
+ "ov": "http://soov-ee.postimees.ee/keyword-\u0002/listings.html\u00010",
+ "ph": {
+ "*": "//www.sophos.com/en-us/search-results.aspx?search=\u0002\u00010",
+ "oskb": "//community.sophos.com/search?q=\u0002\u00010",
+ "oscom": "//community.sophos.com/search?q=\u0002\u00010"
+ },
+ "pt": "//pt.stackoverflow.com/search?q=\u0002\u00010",
+ "py": "http://stackoverflow.com/search?q=[python]+\u0002\u00013",
+ "td": "//www.stateofthedapps.com/dapps?text=\u0002\u00010",
+ "uq": "//uae.souq.com/ae-en/\u0002/s/?as=1\u00010",
+ "xl": "http://stackoverflow.com/search?q=[excel]+\u0002\u00010",
+ "apbox": "//www.sp-bx.com/?s=\u0002\u00010",
+ "apnote": "//www.soapnote.org/?s=\u0002\u00010",
+ "bash": "http://stackoverflow.com/search?q=[bash]+\u0002\u00010",
+ "beys": "http://www.sobeys.com/en/search/?search=\u0002\u00010",
+ "job": "//stackoverflow.com/jobs?q=\u0002\u00010",
+ "le24": "//www.ricerca24.ilsole24ore.com/fc?cmd=static&chId=30&path=%2Fsearch%2Fsearch_engine.jsp&field=Titolo%7CTesto&orderBy=score+desc&chId=30&keyWords=\u0002&button=\u00010",
+ "lidaris": "http://solidaris.be/MonsWP/Pages/recherche.aspx?k=\u0002 \u00010",
+ "luce": "http://www.supersoluce.com/search/supersoluce/\u0002\u00010",
+ "n2teuf": "http://son2teuf.org/search/category_sort/Page-1?searchphrase=any&searchword=\u0002&view=search\u00010",
+ "narcloud": "//sonarcloud.io/explore/projects?search=\u0002\u00010",
+ "naveeb": "//sonaveeb.ee/search/est-est/detail/\u0002/\u00010",
+ "net": "//www.so-net.ne.jp/search/web/?query=\u0002\u00010",
+ "ngfacts": "http://www.songfacts.com/search-song-1.php?\u0002\u00013",
+ "ngkick": "//www.songkick.com/search?query=\u0002\u00015",
+ "nglink": "//odesli.co/embed?url=\u0002\u00010",
+ "ngmeaning": {
+ "*": "http://www.songmeanings.net/query/?q=\u0002&type=artists&page=1&start=0&mm=1&pp=20&b=Go\u00010",
+ "s": "http://songmeanings.com/query/?query=\u0002\u00013"
+ },
+ "ngsterr": "http://www.songsterr.com/a/wa/search?pattern=\u0002\u000171",
+ "ngtext": "http://www.songtexte.com/search?q=\u0002&c=all\u00010",
+ "nicretro": "http://info.sonicretro.org/Special:Search?search=\u0002&go=Go\u00010",
+ "nnentor": "//www.sonnentor.com/de-at/find?q=\u0002&c=Alle\u00010",
+ "nofmarketing": "http://www.sonofmarketing.it/?q=\u0002\u00010",
+ "ugou": "//www.sogou.com/web?query=\u0002\u000110",
+ "ulflower": "http://www.soul-flower.com/mm5/merchant.mvc?Screen=search&onlyone=1&sort=id.desc&x=0&y=0&Search=\u0002\u00010",
+ "und": {
+ "*": "//soundcloud.com/search?q=\u0002\u00015",
+ "y": "//www.soundy.top/sounds?q=\u0002\u00010",
+ "cloud": "//soundcloud.com/search?q=\u0002\u00015",
+ "dogs": "//www.sounddogs.com/search?keywords=\u0002\u00010",
+ "onsound": "//www.soundonsound.com/search/all/\u0002 \u00010",
+ "trackinfo": "http://www.soundtrackinfo.com/search/\u0002/\u00010"
+ },
+ "urceforge": "http://sourceforge.net/directory/?q=\u0002\u00018",
+ "urcegraph": "//sourcegraph.com/github.com/\u0002\u00010",
+ "urcewatch": "http://www.sourcewatch.org/index.php?search=\u0002&title=Special%3ASearch\u00010",
+ "uthpark": "http://www.southparkstudios.com/search?keywords=\u0002\u00010",
+ "yluna": "http://soyluna.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010",
+ "zluk": "http://www.eksisozluk.com/show.asp?t=\u0002\u00017"
+ },
+ "p": {
+ "b": "//speiderbasen.no/?searchWord=\u0002\u00010",
+ "d": "http://packages.speedeedelivery.com/packageDetail.php?barcode=\u0002\u00013",
+ "e": {
+ "n": "//startpage.com/do/dsearch?query=\u0002&cat=web&pl=opensearch&language=english\u00019",
+ "s": "//startpage.com/do/dsearch?query=\u0002&cat=web&pl=opensearch&language=espanol\u00015",
+ "*": "//startpage.com/do/dsearch?query=\u0002&cat=web&pl=opensearch&language=espanol\u00015",
+ "le": "http://spele.nl/zoeken/?q=\u0002\u00010",
+ "ur": "http://www.speurders.nl/overzicht/?query=\u0002\u00010",
+ "akers": "//www.speakersassociates.com/search?search_api_views_fulltext=\u0002\u00010",
+ "ccie": "http://www.spectator.co.uk/?s=\u0002\u00010",
+ "edrun": "http://speedrun.com/\u0002\u0001124",
+ "edsolving": {
+ "*": "//www.speedsolving.com/forum/searchresults.php?q=\u0002\u00010",
+ "wiki": "//www.speedsolving.com/wiki/index.php?title=Special%3ASearch&search=\u0002 &go=Go\u00010"
+ },
+ "edyhen": "//www.speedyhen.com/Search/Keyword?keyword=\u0002\u00010",
+ "kbio": "//www.spektrum.de/lexikon/biologie/?q=\u0002\u00010",
+ "kgeo": "//www.spektrum.de/lexikon/geographie/?q=\u0002\u00010"
+ },
+ "f": "http://mxtoolbox.com/SuperTool.aspx?action=spf%3a\u0002&run=toolpage\u00018",
+ "g": "//www.speedguide.net/search_rez.php?seek=\u0002&words=yes\u00013",
+ "i": {
+ "n": {
+ "*": "//www.spin.de/search?q=\u0002\u00010",
+ "oza": "http://www.spinoza.it/?s=\u0002\u00010",
+ "rilla": "//spinrilla.com/search?q=\u0002\u00010"
+ },
+ "p": "//duckduckgo.com/?q=\u0002+site:spip.net\u00010",
+ "*": "//startpage.com/do/search?cat=pics&cmd=process_search&query=\u0002\u0001246",
+ "t": "//startpage.com/do/search?cat=web&cmd=process_search&language=italiano&engine0=v1all&query=\u0002&abp=-1&prf=ab8a0a99ccae7d38fd1f9b31e845ce7e&SuggestOn=1\u00010",
+ "ce": "//community.spiceworks.com/search?query=\u0002\u00010",
+ "cs": "//site.pictures/search/images/?q=\u0002\u00014",
+ "on": "http://www.spi0n.com/?s=\u0002\u00010",
+ "egel": "http://www.spiegel.de/suche/index.html?suchbegriff= \u0002\u00010",
+ "eletipps": "http://www.spieletipps.de/suche/?keyword=\u0002\u00010",
+ "got": {
+ "*": "//www.spigotmc.org/search/14203285/?q=\u0002&o=relevance\u000125",
+ "mc": "//www.spigotmc.org/search/14487199/?q=\u0002&o=relevance\u00010"
+ }
+ },
+ "l": {
+ "c": "//www.splcenter.org/resources?keyword=\u0002\u00010",
+ "*": "//seattle.bibliocommons.com/search?utf8=%E2%9C%93&t=smart&search_category=keyword&commit=Search&q=\u0002\u00010",
+ "ash": "//unsplash.com/search/photos/\u0002\u00015",
+ "atoon": "http://splatoonwiki.org/w/index.php?search=\u0002\u00010",
+ "ice": "//splice.com/sounds/search?q=\u0002\u00010",
+ "unk": {
+ "*": "//www.splunk.com/en_us/search.html?query=\u0002\u00010",
+ "base": "//apps.splunk.com/apps/#/search/\u0002/page/1\u00014"
+ }
+ },
+ "m": "//startpage.com/do/m/mobilesearch?&q=\u0002\u00013",
+ "p": {
+ "l": "//www.startpage.com/do/dsearch?query=\u0002&cat=web&pl=opensearch&language=polski\u00010",
+ "*": "//startpage.com/do/search?prf=2cc506ab255c98e10570b7d50ef6b1c8&cat=web&query=\u0002\u000131",
+ "it": "//startpage.com/do/search?prf=77fe802d54508e9ee48b88624be6da56&cat=web&query=\u0002\u00010"
+ },
+ "r": {
+ "d": "//www.spreadshirt.com/\u0002\u00010",
+ "*": "http://search.sitepoint.com/?q=\u0002&refinements%5Breference%5D=1\u00010",
+ "kr": "//www.spreaker.com/search?query=\u0002\u00010",
+ "eadshirt": "http://spreadshirt.com/\u0002\u00010",
+ "inger": {
+ "*": "//link.springer.com/search?query=\u0002\u00010",
+ "free": "//link.springer.com/search?showAll=false&query=\u0002\u00010",
+ "link": "//link.springer.com/search?query=\u0002\u00010"
+ },
+ "ingsource": "http://www.springsource.org/search/google?query=\u0002\u00014",
+ "iters": {
+ "*": "//www.spriters-resource.com/search/?q=\u0002}\u00014",
+ "resource": "//www.spriters-resource.com/search/?q=\u0002\u00010"
+ },
+ "oget": "//sproget.dk/lookup?SearchableText=\u0002\u00015"
+ },
+ "*": "//startpage.com/do/metasearch.pl?query=\u0002\u000118216",
+ "t": {
+ "*": "//open.spotify.com/search/results/\u0002\u00010",
+ "v": "http://video.samaritanspurse.org/?s=\u0002\u00010",
+ "io": "//search.privacytools.io/?q=\u0002\u000112"
+ },
+ "v": "//www.startpage.com/do/search?cat=video&cmd=process_search&query=\u0002\u000111",
+ "x": "//www.surplex.com/de/maschinen.html?tx_surplex_pi1%5Bsword%5D=\u0002\u00010",
+ "y": "//open.spotify.com/search/\u0002\u0001833",
+ "nl": "//startpage.com/do/search?l=nederlands&q=\u0002\u00017",
+ "on": {
+ "*": "http://www.spiegel.de/suche/index.html?suchbegriff=\u0002\u00017",
+ "ge": {
+ "*": "//spongebob.fandom.com/wiki/Special:Search?search=\u0002\u00010",
+ "bob": "http://spongebob.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u000126"
+ }
+ },
+ "acedock": "http://spacedock.info/search?query=\u0002\u00010",
+ "amcheck": "http://mxtoolbox.com/SuperTool.aspx?action=blacklist%3a\u0002&run=toolpage\u000111",
+ "andict": "http://www.spanishdict.com/translate/\u0002\u0001450",
+ "anish": {
+ "d": {
+ "*": "//www.spanishdict.com/translate/\u0002\u0001210",
+ "ict": "//www.spanishdict.com/translate/\u0002\u0001210"
+ },
+ "*": "//www.spanishdict.com/translate/\u0002\u0001210"
+ },
+ "anslang": "http://www.speakinglatino.com/?s=\u0002&advanced=0&search_type=&posts_country=&posts_category=&words_country=&words_category=&words_letter=CHOOSE+A+STARTING+LETTER&all_country=&all_letter=CHOOSE+A+STARTING+LETTER\u00010",
+ "are": {
+ "*": "//www.spareroom.co.uk/flatshare/flatshare_detail.pl?flatshare_id=\u0002\u00010",
+ "-part": "//kfz-schlachter.de/Store?q=\u0002\u00010"
+ },
+ "arkfun": "//www.sparkfun.com/search/results?term=\u0002\u000111",
+ "arknotes": "http://www.sparknotes.com/search?q=\u0002\u00014",
+ "artan": "//www.spartan-donate.com/?s=\u0002\u00010",
+ "attern": "http://subtlepatterns.com/?q=\u0002\u00010",
+ "hereon": "//sphereon.com/?s=\u0002\u00010",
+ "oonacular": "//spoonacular.com/\u0002\u00010",
+ "ort1": "http://www.sport1.de/suche#\u0002\u00010",
+ "orum": "http://forum.spore.com/jforum/jforum.page?module=search&action=search&search_keywords=\u0002\u00010",
+ "orcle": "http://www.sporcle.com/games/tags/\u0002\u00013",
+ "otify": {
+ "*": "//open.spotify.com/search/\u0002\u0001833",
+ "search": "//open.spotify.com/search/results/\u0002\u00010"
+ },
+ "utnik": {
+ "*": "http://www.sputnik.ru/search?q=\u0002\u00010",
+ "music": "//www.sputnikmusic.com/search_results.php?search_in=Bands&search_text=\u0002\u000159"
+ }
+ },
+ "r": {
+ "a": "http://www.ncbi.nlm.nih.gov/sra/?term=\u0002\u00016",
+ "d": {
+ "5": "http://5e.d20srd.org/search.htm?q=\u0002\u00010",
+ "*": "http://www.d20srd.org/search.htm?q=\u0002\u00015"
+ },
+ "f": {
+ "i": "http://srfi.schemers.org/srfi-\u0002/srfi-\u0002.html\u00010",
+ "*": "http://www.srf.ch/suche?q=\u0002\u000127"
+ },
+ "i": "http://steamrep.com/id/\u0002\u00010",
+ "k": "http://shoryuken.com/?s=\u0002\u00010",
+ "o": {
+ "*": "//old.reddit.com/r/\u0002/\u0001891",
+ "ld": "//old.reddit.com/r/\u0002/\u0001891"
+ },
+ "*": "//reddit.com/r/\u0002\u00011380",
+ "s": "//www.reddit.com/search?q=subreddit:\u0002\u0001150",
+ "v": "http://stukroodvlees.nl/?s=\u0002\u00010",
+ "ch": "http://www.admin.ch/opc/search/?lang=de&language[]=de&product[]=fg&product[]=oc&product[]=cc&product[]=ba&product[]=jcd&date_range_min=&date_range_max=&d_compilation=both&d_is_in_force=yes&text=\u0002\u00010",
+ "ec": "http://softwarerecs.stackexchange.com/search?q=\u0002\u00010",
+ "hu": "//translate.google.com/#sr/hu/\u0002 \u00010",
+ "rl": "//www.reddit.com/r/RocketLeague/search?q=\u0002&restrict_sr=on\u00010",
+ "cforge": "http://sourceforge.net/directory/os:windows/freshness:recently-updated/?q=\u0002\u00010",
+ "eddit": "//reddit.com/r/\u0002\u00011380",
+ "etro": "http://info.sonicretro.org/index.php?search=\u0002\u00014",
+ "tblog": "//srthealing.com/?s=\u0002\u00010",
+ "top": "//www.reddit.com/r/\u0002/top/?sort=top&t=all\u00015"
+ },
+ "s": {
+ "b": {
+ "*": "http://www.ssbwiki.com/index.php?title=Special%3ASearch&search=\u0002&go=Go\u000178",
+ "no": "//www.ssb.no/sok?sok= \u0002\u00010"
+ },
+ "e": "//security.stackexchange.com/search?q=\u0002\u00015",
+ "g": "http://dictionnaire.sensagent.leparisien.fr/\u0002/fr-fr/\u00010",
+ "l": {
+ "*": "//www.ssllabs.com/ssltest/analyze.html?d=\u0002&latest=true\u000114",
+ "ang": "http://www.speakinglatino.com/?s=\u0002&advanced=0&search_type=&posts_country=&posts_category=&words_country=&words_category=&words_letter=CHOOSE+A+STARTING+LETTER&all_country=&all_letter=CHOOSE+A+STARTING+LETTER\u00010",
+ "labs": {
+ "*": "//www.ssllabs.com/ssltest/analyze.html?d=\u0002\u000123",
+ "dev": "//dev.ssllabs.com/ssltest/analyze.html?latest&d=\u0002\u00010"
+ }
+ },
+ "p": {
+ "*": "http://www.silverstripe.org/search/?q=\u0002\u00010",
+ "ai": "//sspai.com/search/article?q=\u0002\u00010",
+ "tv": "http://www.ssptv.com/?s=\u0002\u00010"
+ },
+ "r": "//shopsmartreviews.in/?s=\u0002\u00010",
+ "s": {
+ "*": "//www.similarsitesearch.com/alternatives-to/\u0002\u00010",
+ "es": "http://www.similarsitesearch.com/es/sitio/\u0002\u00010"
+ },
+ "*": "//surrey-primotc.hosted.exlibrisgroup.com/primo-explore/search?vl(freeText0)=\u0002&fn=search&vid=44SUR_VU1&tab=default_tab&query=any,contains,\u0002&search_scope=default_scope\u000113",
+ "t": "//csgostash.com/google-search?q=\u0002\u00010",
+ "v": "//www.shutterstock.com/search?searchterm=\u0002&image_type=vector\u00010",
+ "64": "http://duckduckgo.com/?q=\u0002+site:www.ss64.com\u00017",
+ "ch": "//www.semanticscholar.org/search?q=\u0002&sort=relevance&ae=false\u000117",
+ "jc": "http://ssjc.ujc.cas.cz/search.php?heslo=\u0002\u00010",
+ "kj": "http://bos.zrc-sazu.si/cgi/a03.exe?name=sskj_testa&expression=\u0002&hs=1\u000141",
+ "on": "//duckduckgo.com/?q=\u0002&kp=1\u00010",
+ "aft": "http://ssaft.com/Blog/dotclear/?q=\u0002\u00010",
+ "nap": "http://www.soundsnap.com/search/audio/\u0002/score\u00010",
+ "oar": "http://www.ssoar.info/ssoar/discover?query=\u0002\u00010",
+ "off": "//duckduckgo.com/?q=\u0002&kp=-2\u00010",
+ "wiki": "//www.speedsolving.com/wiki/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010"
+ },
+ "*": "//startpage.com/do/metasearch.pl?query=\u0002\u000118216",
+ "t": {
+ "e": {
+ "*": "//store.steampowered.com/search/?term=\u0002\u00010",
+ "x": "http://stackexchange.com/search?q=\u0002\u0001199",
+ "al": "//www.stealengine.com/?q=\u0002\u00010",
+ "am": {
+ "*": "http://store.steampowered.com/search/?term=\u0002\u00014299",
+ "db": "http://steamdb.info/search/?a=app&q=\u0002\u0001624",
+ "gl": "//steamcommunity.com/workshop/browse/?appid=765&searchtext=\u0002\u00010",
+ "id": "//store.steampowered.com/app/\u0002/\u00010",
+ "io": "//steamid.io/lookup/\u0002\u00015",
+ "sc": "//steamcommunity.com/search/users/#text=\u0002\u00014",
+ "2twitch": "http://tab-bot.net/botcheck?twitchname_botcheck=&steam_botcheck=\u0002\u00010",
+ "charts": "http://steamcharts.com/search/?q=\u0002\u000162",
+ "community": "http://steamcommunity.com/actions/Search?K=\u0002\u000133",
+ "gift": "//www.steamgifts.com/giveaways/search?q=\u0002\u00010",
+ "key": "//store.steampowered.com/account/registerkey?key=\u0002\u00017",
+ "market": "http://steamcommunity.com/market/search?q=\u0002\u000112",
+ "prices": "http://www.steamprices.com/us/search?\u0002\u00010",
+ "rep": "http://steamrep.com/?q=\u0002\u00016",
+ "spy": "http://steamspy.com/search.php?s=\u0002\u00010",
+ "trades": "http://www.steamtrades.com/forum/search/\u0002\u00010"
+ },
+ "em": {
+ "*": "//www.asksteem.com/search?q=\u0002\u00010",
+ "it": "//steemit.com/static/search.html?q=\u0002\u00010"
+ },
+ "me": "//store.steampowered.com/search/?term=\u0002\u00010",
+ "rn": "http://www.stern.de/action/3000116/search?query=\u0002\u00010",
+ "elcase": "//www.steelcase.com/?s=\u0002\u00010",
+ "igan": "//steigan.no/?s=\u0002\u00010",
+ "imatzky": "http://www.steimatzky.co.il/Steimatzky/Pages/SearchResult.aspx?SearchType=Simple&SearchSimpleText=\u0002\u00010",
+ "llar": {
+ "*": "//stellarfed.org/search?q=\u0002\u00010",
+ "is": "//stellaris.paradoxwikis.com/index.php?search=\u0002\u0001129"
+ }
+ },
+ "f": "http://portal.stf.jus.br/processos/listarProcessos.asp?classe=&numeroProcesso=\u0002\u00010",
+ "l": {
+ "*": "http://www.cplusplus.com/search.do?q=\u0002\u00010",
+ "f": "//www.stlfinder.com/?search=\u0002\u00017"
+ },
+ "m": {
+ "*": "http://stmblog.com/?s=\u0002\u00010",
+ "oritz": "//www.engadin.stmoritz.ch/suche/q.\u0002/\u00010"
+ },
+ "p": "http://www.sierratradingpost.com/s~\u0002\u00015",
+ "s": {
+ "*": "http://st-takla.org/Coptic-Search-St-Takla.org/site_search.php?q=\u0002&op=and\u00010",
+ "w": "//slay-the-spire.fandom.com/wiki/Special:Search?query=\u0002\u00017",
+ "de": "//www.spreadthesign.com/de.de/search/?q=\u0002\u00010",
+ "tock": "//www.shutterstock.com/search/\u0002\u00010"
+ },
+ "*": "http://stocktwits.com/search?q=\u0002\u0001157",
+ "w": {
+ "*": "//singletrackworld.com/forum/search/\u0002\u00010",
+ "s": "//www.superteacherworksheets.com/search-results.html?srch_words=\u0002\u00010"
+ },
+ "z": "http://www.stuttgarter-zeitung.de/suche?_charset_=UTF-8&searchText=\u0002\u00010",
+ "an": {
+ "*": "//play.stan.com.au/programs\u0002\u00010",
+ "daard": "http://www.standaard.be/zoeken?keyword=\u0002\u00010",
+ "dsfor": "http://www.abbreviations.com/\u0002\u000123"
+ },
+ "ax": "http://www.staxtradecentres.co.uk/search/?keys=\u0002\u00010",
+ "cm": "//steamcommunity.com/id/\u0002\u00010",
+ "ib": "http://www.stib-mivb.be/horaires-dienstregeling2.html?l=en&linecode=\u0002\u00010",
+ "rm": "//stream.org/?s=\u0002\u00010",
+ "abs": "http://www.songsterr.com/a/wa/search?pattern=\u0002\u000171",
+ "abihannover": "//bibliothek.hannover-stadt.de/alswww3.dll/APS_ZONES?fn=SEARCH?q=\u0002\u00013",
+ "ack": {
+ "*": "//stackoverflow.com/search?q=\u0002\u000140",
+ "age": "http://www.stackage.org/lts/hoogle?q=\u0002\u0001105",
+ "exchange": "http://stackexchange.com/search?q=\u0002 \u000117",
+ "overflow": "//stackoverflow.com/search?q=\u0002\u000140",
+ "share": "http://stackshare.io/search/q=\u0002\u00010",
+ "social": "//stacksocial.com/search?utf8=✓&query=\u0002\u00010",
+ "sproj": "//stacks.math.columbia.edu/search?query=\u0002\u00010"
+ },
+ "adium": "//www.stadium.se/search?SearchTerm=\u0002\u00010",
+ "ake": "//stakingreturns.com/coins/\u0002\u00017",
+ "aples": {
+ "*": "http://www.staples.com/office/supplies/StaplesSearch?searchkey=\u0002&storeId=10001&catalogId=10051&langId=-1&fromUrl=home\u000117",
+ "ca": "http://www.staples.ca/\u0002/directory_\u0002_20051_1_20001\u00013"
+ },
+ "art": {
+ "*": "//www.startpage.com/do/dsearch?query=\u0002\u0001937",
+ "up": {
+ "*": "//startupbuffer.com/search?s=\u0002\u00010",
+ "jobs": "//startup.jobs/?q=\u0002\u00010"
+ },
+ "icket": "//www.starticket.ch/de/suche?_csquery=\u0002\u00010",
+ "page": {
+ "*": "//www.startpage.com/do/dsearch?query=\u0002&cat=web&pl=opensearch\u0001969",
+ "images": "//startpage.com/do/search?cat=pics&cmd=process_search&query=\u0002\u0001246",
+ "videos": "//startpage.com/do/search?cat=video&cmd=process_search&query=\u0002\u00010"
+ },
+ "rek": "http://memory-alpha.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&resultsLang=en\u00010"
+ },
+ "arbound": {
+ "*": "http://starbounder.org/mediawiki/index.php?title=Special%3ASearch&search=\u0002\u00010",
+ "er": "http://starbounder.org/mediawiki/index.php?title=Special%3ASearch&search=\u0002\u00010"
+ },
+ "ardew": {
+ "*": "http://stardewvalleywiki.com/mediawiki/index.php?search=\u0002\u0001116",
+ "valley": "http://stardewvalleywiki.com/mediawiki/index.php?search=\u0002\u0001116"
+ },
+ "argate": "http://stargate.wikia.com/wiki/Special:Search?query=\u0002\u00013",
+ "armade": {
+ "*": "//starmadepedia.net/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "dock": "//starmadedock.net/search/1/?q=\u0002\u00010"
+ },
+ "arwars": "http://starwars.wikia.com/wiki/Special:Search?search=\u0002&go=&fulltext=Search \u000110",
+ "ats": {
+ "*": "//statisticsbyjim.com/?s=\u0002\u00010",
+ "biblioteket": "//www.statsbiblioteket.dk/au/?locale=en#/search?query=\u0002\u00010"
+ },
+ "aten": "//www.statenvertaling.net/zoek.php?q=\u0002\u00010",
+ "aticice": "http://staticice.com.au/cgi-bin/search.cgi?q=\u0002\u000131",
+ "ationsweb": "http://www.stationsweb.nl/stationlijst.asp?station=\u0002 \u00010",
+ "atista": "//www.statista.com/search/?q=\u0002\u00010",
+ "aygb": "//staygb.com/search?q=\u0002\u00010",
+ "debook": "//standardebooks.org/ebooks/?query=\u0002\u00010",
+ "doc": "http://www.stata.com/help.cgi?\u0002\u00010",
+ "dtplnlmn": "http://stadtplan-ilmenau.de/?query=\u0002\u00010",
+ "hlmbibbla": "//biblioteket.stockholm.se/sok?freetext=\u0002\u00010",
+ "ickpng": "http://www.stickpng.com/search?q=\u0002\u00010",
+ "illtasty": "//stilltasty.com/Search?q=\u0002\u00015",
+ "ixoi": "http://www.stixoi.info/stixoi.php?info=SS&keywords=\u0002&act=ss\u000152",
+ "ock": {
+ "*": "http://finance.google.com/?q=\u0002&sa=N&tab=fe\u00011441",
+ "x": "//stockx.com/search?s=\u0002\u000132",
+ "sy": "//www.stocksy.com/search/\u0002\u00010",
+ "charts": "http://stockcharts.com/h-sc/ui?s=\u0002&p=D&yr=0&mn=6&dy=0\u00017",
+ "photos": "http://www.istockphoto.com/file_search.php?action=file&text=\u0002\u00010",
+ "video": "http://www.dissolve.com/products?keywords=\u0002&media_type=video\u00010"
+ },
+ "orm": "//isc.sans.edu/ipinfo.html?ip=\u0002\u00010",
+ "ortinget": "//sok.stortinget.no/?querytext=\u0002\u00010",
+ "orybank": "//storybank.id/?s=\u0002\u00010",
+ "rain": "//www.wikileaf.com/strains/?search=\u0002\u00010",
+ "rans": "http://www.tritrans.net/cgibin/translate.cgi?spraak=Spansk&Fra=\u0002\u00010",
+ "rava": "//www.strava.com/athletes/search?utf8=✓&text=\u0002&gsf=1\u00014",
+ "raightdope": "http://www.straightdope.com/columns/search?query=\u0002&action=search\u00010",
+ "raitstimes": "//www.straitstimes.com/search?searchkey=\u0002\u00010",
+ "rategischlui": "//strategischlui.nl/?s=\u0002\u00010",
+ "rategywiki": "//strategywiki.org/w/index.php?search=\u0002\u00010",
+ "reg": "//store.steampowered.com/account/registerkey?key=\u0002\u00017",
+ "ream": "//www.stream.cz/vyhledavani?dotaz=\u0002\u000111",
+ "reet": "http://streeteasy.com/search?utf8=%E2%9C%93&search=\u0002\u00010",
+ "refasluchu": "http://www.strefasluchu.pl/?s=\u0002\u00010",
+ "rib": "http://www.startribune.com/search/?q=\u0002\u00010",
+ "rongs": "//www.biblestudytools.com/search/?q=\u0002&t=kjv&s=Bibles\u00010",
+ "rumenti": "//www.strumentimusicali.net/advanced_search_result.php?manufacturers_id=&keywords=\u0002&inc_subcat=1\u00010",
+ "texts": "http://www.sacred-texts.com/cat/srchtitl.htm?search_str=\u0002\u00010",
+ "ubhub": "http://www.stubhub.com/search/doSearch?searchStr=\u0002&pageNumber=1&resultsPerPage=50&searchMode=event&start=0&rows=50\u00015",
+ "udy": {
+ "*": "//study.com/search/text/academy.html?q=\u0002\u00010",
+ "bible": "http://studybible.info/YLT/\u0002\u00010"
+ },
+ "udentdoctor": "http://www.studentdoctor.net/search-sdn/?cx=\u0002\u00010",
+ "udiofutbol": "http://studiofutbol.com.ec/?submit=&s=\u0002\u00010",
+ "uffnz": "http://www.stuff.co.nz/searchresults?Search+Site=Search+Site&cof=FORID%3A9&cx=006730714154542492986%3Aoh6vl0ybuqy&ie=UTF-8&q=\u0002&siteurl=www.stuff.co.nz%2F&ref=\u00010",
+ "upi": "http://www.stupidedia.org/stupi?title=Spezial%3ASuche&search=\u0002 \u00010",
+ "ylish": "//userstyles.org/styles/browse?search_terms=\u0002\u00010"
+ },
+ "u": {
+ "m": {
+ "c": "//learn.sharedusemobilitycenter.org/search/?keyword=\u0002\u00010",
+ "*": "http://sum.in.ua/?swrd=\u0002 \u00013",
+ "mitpost": "http://www.summitpost.org/object_list.php?object_type=0&object_name_0=\u0002&page=1\u00010"
+ },
+ "n": {
+ "*": "//sunrise-sunset.org/search?location=\u0002\u00016",
+ "dell": "//www.swiftbysundell.com/search?query=\u0002\u00010",
+ "nah": "//sunnah.com/search/?q=\u0002\u00010",
+ "nysports": "http://www.sunnysports.com/search?searchinfo=\u0002\u00010",
+ "times": "//chicago.suntimes.com/?s=\u0002\u00010"
+ },
+ "s": {
+ "i": "http://susi.at/suche/\u0002/\u00010",
+ "*": "http://software.opensuse.org/search?utf8=✓&q=\u0002&search_devel=false&search_unsupported=false&baseproject=openSUSE:13.1\u0001120",
+ "y": "http://susydocs.oddbird.net/en/latest/?q=\u0002\u00010",
+ "ebug": "//bugzilla.novell.com/buglist.cgi?quicksearch=\u0002\u00010",
+ "epkg": "//software.opensuse.org/search?q=\u0002\u000148"
+ },
+ "*": "http://superuser.com/search?q=\u0002\u00013",
+ "br": {
+ "*": "//www.reddit.com/r/\u0002\u00011623",
+ "eddit": {
+ "*": "//www.reddit.com/r/\u0002\u00011623",
+ "search": "//www.reddit.com/search?q=subreddit:\u0002\u0001150"
+ }
+ },
+ "ed": "http://www.sueddeutsche.de/news?search=\u0002\u00010",
+ "ub": "//suche.suub.uni-bremen.de/cgi-bin/CiXbase/brewis/CiXbase_search?act=search&INDEXINFO=awCN&LAN=DE&ORDER=&IHITS=15&FHITS=15&PRECISION=220&RELEVANCE=40&NO_RBITS=&n_dtyp=1LZ&n_rtyp=ceEdX&index=L&XML_STYLE=%2Fstyles%2Fcns-DE.xml%3F20130610&dtyp=&mtyp=&section=&term=\u0002&CID=&x=0&y=0\u000112",
+ "been": "http://subeen.com/?s=\u0002\u00010",
+ "betashops": "//subeta.net/user_shops.php/search/shops/\u0002\u00010",
+ "bito": "http://www.subito.it/annunci-italia/vendita/usato/?q=\u0002\u000146",
+ "bldoc": "http://docs.sublimetext.info/en/latest/search.html?q=\u0002\u00010",
+ "blevel": "//sublevel.net/search/?q=\u0002\u00010",
+ "blforum": "//forum.sublimetext.com/search?q=\u0002\u00010",
+ "blime": "//sublime.wbond.net/search/\u0002\u00018",
+ "bmarino": "//www.submarino.com.br/busca?conteudo=\u0002\u00010",
+ "bnet": "http://www.tunnelsup.com/subnet-calculator?ip=\u0002 \u000120",
+ "bnautica": "http://subnautica.wikia.com/wiki/Special:Search?search=\u0002\u00018",
+ "btlepatterns": "http://subtlepatterns.com/?q=\u0002\u00010",
+ "bverse": "//searchvoat.co/subverses/?q=\u0002\u00010",
+ "conlavite": "http://www.suconlavite.it/?s=\u0002\u00010",
+ "curi": "//sitecheck.sucuri.net/results/\u0002\u00010",
+ "doc": "http://www.sudoc.abes.fr//DB=2.1/TTL=1/CMD?ACT=SRCHA&IKT=1016&SRT=RLV&TRM=\u0002\u00019",
+ "domod": "http://sudomod.com/?s=\u0002\u00010",
+ "ivicolissimo": "http://www.colissimo.fr/portail_colissimo/suivre.do?language=fr_FR&parcelnumber=\u0002\u00010",
+ "ivicourrier": "http://www.csuivi.courrier.laposte.fr/suivi/index?id=\u0002#\u00010",
+ "lekha": "http://search.sulekha.com/sulekhasearch.aspx?txtsearch=\u0002\u00010",
+ "lit": "http://www.sulit.com.ph/index.php/classifieds+directory/q/\u0002\u00010",
+ ".me": "//www.serialupdates.me/?s=\u0002\u00010",
+ "per": {
+ "*": "//supermarket.chef.io/cookbooks?utf8=%E2%9C%93&q=\u0002\u00010",
+ "d": {
+ "*": "http://busca.superdownloads.com.br/busca/\u0002.s1.html\u00010",
+ "ownloads": "http://busca.superdownloads.com.br/busca/\u0002.s1.html\u00010"
+ },
+ "coachtalk": "http://supercoachtalk.com/?s=\u0002\u00015",
+ "physique": "//www.google.fr/search?q=site:www.superphysique.org+\u0002\u00010",
+ "store": "//www.realcanadiansuperstore.ca/search/?search-bar=\u0002\u00010",
+ "stropdas": "http://superstropdas.nl/?s=\u0002\u00010",
+ "user": "http://superuser.com/search?q=\u0002\u00013"
+ },
+ "rplus": "//www.surplustraders.net/catalogsearch/advanced/result/?name=\u0002\u00010",
+ "rvey": {
+ "*": "//www.surveymonkey.com/dashboard/?term\u0002\u00010",
+ "gizmo": "//help.surveygizmo.com/help/search/?phrase=\u0002\u00010"
+ },
+ "ttac": "//suttacentral.net/search?query=\u0002\u00010",
+ "tysisku": "http://mw.lojban.org/extensions/ilmentufa/i/en/index.html#sisku/\u0002\u000160",
+ "who": "//stanford.rimeto.io/search/\u0002\u00010"
+ },
+ "v": {
+ "b": "http://www.svb.com/searchresults.aspx?term=\u0002\u00010",
+ "d": {
+ "e": "//translate.google.com/#sv/de/\u0002\u00017",
+ "*": "http://www.svd.se/search.do?q=\u0002\u00010"
+ },
+ "g": {
+ "*": "//developer.mozilla.org/en-US/search?q=\u0002&topic=svg\u00010",
+ "repo": "//www.svgrepo.com/vectors/\u0002/\u00010"
+ },
+ "r": "//sverigesradio.se/sida/sok.aspx?q=\u0002 \u00010",
+ "s": "//www.synonymer.se/sv-syn/\u0002\u00016",
+ "t": {
+ "n": "http://www.svt.se/search/?q=\u0002\u00010",
+ "p": "http://www.svtplay.se/sok?q=\u0002\u00010",
+ "*": "http://www.svtplay.se/sok?q=\u0002\u00010"
+ },
+ "*": "//voat.co/v/\u0002\u00010",
+ "w": {
+ "e": "//es.stardewvalleywiki.com/ \u0002\u00010",
+ "*": "http://stardewvalleywiki.com/mediawiki/index.php?search=\u0002\u0001116"
+ },
+ "ao": "//svenska.se/tre/?sok=\u0002\u000118",
+ "en": {
+ "*": "//translate.google.com/#sv/en/\u0002\u0001104",
+ "ska": "//svenska.se/tre/?sok=\u0002&pz=1\u000120"
+ },
+ "pt": "//translate.google.se/#sv/pt/\u0002\u00010",
+ "artling": "http://www.svartling.net/search?q=\u0002\u00010",
+ "help": "//help.sitevision.se/SiteVision_4_0/searchhelp.html?query=\u0002\u00010"
+ },
+ "w": {
+ "i": {
+ "*": "http://www.swi-prolog.org/search?for=\u0002\u00010",
+ "ft": "//developer.apple.com/search/?q=\u0002\u000134",
+ "pl": "http://www.swi-prolog.org/pldoc/search?for=\u0002&in=all&match=summary\u00010",
+ "ssbib": "//www.swissbib.ch/Search/Results?lookfor=\u0002&type=AllFields\u00010",
+ "sscows": "//swisscows.com/?query=\u0002\u000163",
+ "sspost": "//www.post.ch/EasyTrack/submitParcelData.do?formattedParcelCodes=\u0002\u00010"
+ },
+ "*": "//simple.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u000131",
+ "ag": {
+ "*": "//forum.shopware.com/search?Search=\u0002\u00010",
+ "bucks": "//swagbucks.com/?q=\u0002\u00013"
+ },
+ "ap": {
+ "*": "//swappa.com/search?q=\u0002\u000112",
+ "pa": "//swappa.com/search?q=\u0002\u000112"
+ },
+ "db": "http://www.spaghetti-western.net/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "tl": "http://swtl.pt/web/index.php?route=product/isearch&search=\u0002\u00010",
+ "tr": "//www.sweetwater.com/store/search.php?s=\u0002\u00016",
+ "alter": "http://www.swalter.com/catalogsearch/result/?q=\u0002\u00010",
+ "ars": "http://summonerswar.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "arajya": "//swarajyamag.com/search?q=\u0002\u00010",
+ "eetsearch": "http://sweetsearch.com/search?q=\u0002\u00013",
+ "eetwater": "http://www.sweetwater.com/store/search.php?s=\u0002\u000160",
+ "oop": {
+ "*": "//www.swoop.ge/search?query=\u0002\u00010",
+ "ge": "//www.swoop.ge/search?query=\u0002\u00010"
+ },
+ "orks": "http://searchworks.stanford.edu/?utf8=✓&search_field=search&q=\u0002\u00010",
+ "tsearch": "http://www.sweetsearch.com/search?q=\u0002\u00010",
+ "wiki": "http://starwars.wikia.com/wiki/Special:Search?search=\u0002\u000114"
+ },
+ "x": {
+ "*": "http://stackexchange.com/search?q=\u0002 \u000117",
+ "sw": "//schedule.sxsw.com/2019/search?q=\u0002\u00010"
+ },
+ "y": {
+ "*": "http://words.bighugelabs.com/\u0002\u00014",
+ "m": {
+ "b": {
+ "*": "//www.symbolab.com/solver/step-by-step/\u0002\u000127",
+ "olab": "//www.symbolab.com/solver/step-by-step/\u0002\u000127",
+ "olhound": "http://symbolhound.com/?q=\u0002\u00010"
+ },
+ "*": "http://symbolhound.com/?q=\u0002\u00010",
+ "py": "http://www.sympygamma.com/input/?i=\u0002\u00017",
+ "antec": "//www.symantec.com/search?hiddenq=Pedroerkul&q=\u0002&searchJson={%22filter%22:[],%22startPage%22:1,%22start%22:0,%22sort%22:%22score%22}\u00010",
+ "fony": "http://symfony.com/search?q=\u0002\u00010",
+ "olab": "//www.symbolab.com/solver/step-by-step/\u0002\u000127"
+ },
+ "n": {
+ "f": "http://www.crisco.unicaen.fr/des/synonymes/\u0002\u000142",
+ "o": {
+ "*": "http://www.synonymo.fr/syno/\u0002\u00010",
+ "niem": {
+ "*": "http://synoniemen.net/index.php?zoekterm=\u0002\u00015",
+ "en": "http://synoniemen.net/index.php?zoekterm=\u0002\u00015"
+ },
+ "nym": {
+ "a": "http://www.slovnik-synonym.cz/web.php/hledat?typ_hledani=prefix&cizi_slovo=\u0002\u00010",
+ "e": {
+ "*": "http://www.crisco.unicaen.fr/des/synonymes/\u0002\u000142",
+ "r": "//www.synonymer.se/sv-syn/\u0002\u00016",
+ "s": "http://synonymes.com/resultats.php?mot=\u0002\u00010"
+ },
+ "s": "http://thesaurus.com/browse/\u0002\u000164",
+ "*": "http://www.thesaurus.com/browse/\u0002 \u0001222"
+ }
+ },
+ "*": "http://thesaurus.com/browse/\u0002\u000164",
+ "de": "http://synonyme.de/\u0002/\u00013",
+ "pl": "//www.synonimy.pl/synonim/\u0002\u00010",
+ "apse": "//www.synapse.org/#!Search:\u0002 \u00010",
+ "cme": "//sync.me/search/?number=\u0002\u00010"
+ },
+ "s": {
+ "k": "//www.stuffyoushouldknow.com/search.php?terms=\u0002\u00010",
+ "*": "http://www.eki.ee/dict/sys/index.cgi?Q=\u0002&F=M&C06=en\u00010",
+ "ef": "http://www.systranet.com/fr/fr/dictionary/english-french/\u0002?\u00010",
+ "fe": "http://www.systranet.com/fr/fr/dictionary/french-english/\u0002?\u00010",
+ "ensw": "http://www.systranet.com/fr/fr/dictionary/english-swedish/\u0002?\u00010",
+ "swen": "http://www.systranet.com/fr/fr/dictionary/swedish-english/\u0002?\u00010",
+ "tembolaget": "http://www.systembolaget.se/?searchquery=\u0002\u00010",
+ "temet": "//www.systembolaget.se/Sok-dryck/?searchquery=\u0002\u00014",
+ "tranet": "http://www.systranet.com/translate?text=\u0002\u00010"
+ },
+ "w": "http://www.shopyourway.com/search/products?q=\u0002\u00010",
+ "fr": "http://www.synonymes.com/resultats.php?mot=\u0002\u00010",
+ "ear": "//startpage.com/do/metasearch.pl?query=\u0002&with_date=y\u00010"
+ },
+ "z": {
+ "n": {
+ "s": {
+ "*": "http://slovnik.seznam.cz/?q=\u0002\u000150",
+ "de": "http://slovnik.seznam.cz/de/?q=\u0002\u00019",
+ "fr": "//slovnik.seznam.cz/fr-cz/?q=\u0002\u00010"
+ },
+ "*": "http://search.seznam.cz/?q=\u0002\u000132"
+ },
+ "*": "http://suche.sueddeutsche.de/news?search=\u0002\u00014",
+ "otar": "//www.szotar.net/mind/\u0002/\u000125",
+ "pravy": "//www.seznam.cz/zpravy/hledani?q=\u0002&search--active=1\u00010",
+ "taki": "http://szotar.sztaki.hu/search?searchWord=\u0002\u000120"
+ },
+ "42": "//slice42.com/?s=\u0002\u00010",
+ "&m": "//st-sm.com/sante-et-minceur/en/search?s=\u0002\u00010",
+ "qa": "//www.sqa.org.uk/pastpapers/findpastpaper.htm?subject=\u0002\u00010",
+ "qf": {
+ "a": "http://squarefaction.ru/main/search/google?searchQuery=\u0002\u00010",
+ "*": "//community.bistudio.com/wiki?search=\u0002\u000137"
+ },
+ ".fyapp": "//apps.shopify.com/search?q=\u0002&st_source=\u000115",
+ "-on": "//duckduckgo.com/?q=\u0002&kp=1\u00010",
+ "-off": "//duckduckgo.com/?q=\u0002&kp=-2\u00010",
+ "qlsh": "http://sql.sh/?s=\u0002&submit=Rechercher\u00010",
+ "qlalchemy": "http://www.sqlalchemy.org/docs/search.html?q=\u0002&check_keywords=yes&area=default\u00019",
+ "qlite": "//www.sqlite.org/search?s=d&q=\u0002\u000110",
+ "qprofessional": "http://www.sqprofessional.com/?q=\u0002\u00010",
+ "quidmag": "//squidmag.ink/?s=\u0002\u00015",
+ "_user": "//scratch.mit.edu/users/\u0002\u00013"
+ },
+ "$": "//stockflare.com/#stocks/$\u0002 \u00010",
+ "t": {
+ "a": {
+ "b": {
+ "*": "http://www.911tabs.com/search.php?search=\u0002\u00017",
+ "s": {
+ "b": "http://www.ultimate-guitar.com/search.php?search_type=band&value=\u0002\u00010",
+ "*": "http://www.ultimate-guitar.com/search.php?search_type=title&value=\u0002\u000158",
+ "cout": "http://www.tabscout.com/?action=search&query=\u0002\u00010"
+ },
+ "4u": "http://www.tab4u.com/resultsSimple?tab=songs&type=song&q=\u0002\u00010",
+ "crawler": "http://tabcrawler.com/search/\u0002\u00010",
+ "leau": "//www.tableau.com/search#q=\u0002\u00010",
+ "room": "//www.tabroom.com/index/search.mhtml?search=\u0002\u00010"
+ },
+ "l": {
+ "g": "http://tiger-algebra.com/drill/\u0002/\u00010",
+ "*": "http://theanarchistlibrary.org/search?query=\u0002\u00015",
+ "ky": "//talky.io/\u0002\u00010",
+ "aios": "http://talaios.net/?s=\u0002\u00010",
+ "kgr": "http://www.talkgraphics.com/search.php?searchid=\u0002:\u00010"
+ },
+ "m": "//markets.theaustralian.com.au/shares/\u0002\u00010",
+ "n": {
+ "*": "//www.theaustralian.com.au/search-results?q=\u0002\u00010",
+ "ks": "http://www.tanks-encyclopedia.com/?s=\u0002\u00010",
+ "um": "http://www.tanum.no/tanum/search/search.action?query=\u0002\u00010",
+ "demtech": "//tandemtech.be/search?q=\u0002\u00010",
+ "gorin": "http://tangorin.com/examples/\u0002\u00013",
+ "ishq": "//www.tanishq.co.in/search-result/\u0002\u00010",
+ "uki": "http://tanuki.pl/szukaj/\u0002\u00010",
+ "zil": "http://tanzil.net/#search/quran/\u0002\u00010"
+ },
+ "p": {
+ "*": "http://tappedout.net/search/?q=\u0002\u00010",
+ "astic": "//tapastic.com/search/SERIES/list?query=\u0002\u00010",
+ "estry": "http://tapestry.apache.org/search.html?q=\u0002\u00010",
+ "ology": "//www.tapology.com/search?term=\u0002\u000119",
+ "wage": "//tapwage.com/search?q=\u0002\u00010"
+ },
+ "r": {
+ "*": "http://www.taringa.net/buscar/?q=\u0002\u000115",
+ "dis": "http://tardis.wikia.com/wiki/Special:Search?search=\u0002\u000148",
+ "geo": "http://mapa.targeo.pl/\u0002\u00017",
+ "get": {
+ "*": "http://www.target.com/s?searchTerm=\u0002\u0001429",
+ "au": "//www.target.com.au/search?text=\u0002\u00010"
+ },
+ "inga": "http://www.taringa.net/buscar/?q=\u0002&\u00010",
+ "kov": "//escapefromtarkov.gamepedia.com/index.php?search=\u0002\u00017"
+ },
+ "s": {
+ "*": "http://tasvideos.org/Search.html?key=\u0002 \u000114",
+ "te": {
+ "*": "http://www.taste.com.au/search-recipes/?q=\u0002\u00010",
+ "kid": "http://www.tastekid.com/like/\u0002\u00010",
+ "line": "http://www.tasteline.com/ReceptSok/\u0002\u00010"
+ }
+ },
+ "*": "http://www.tripadvisor.com/Search?q=\u0002 \u000134",
+ "w": {
+ "k": "//ta.wikipedia.org/w/index.php?search= \u0002&title=%E0%AE%9A%E0%AE%BF%E0%AE%B1%E0%AE%AA%E0%AF%8D%E0%AE%AA%E0%AF%81%3ASearch&go=%E0%AE%9A%E0%AF%86%E0%AE%B2%E0%AF%8D\u00010",
+ "*": "//www.tacklewarehouse.com/searchresults.html#search=products&searchtext=\u0002\u00010"
+ },
+ "x": {
+ "i": "//www.taxi.it/?s=\u0002\u00010",
+ "*": "http://isittaxed.ca/search.php?q=\u0002\u00010"
+ },
+ "z": "http://www.taz.de/!s=\u0002/\u00010",
+ "al": {
+ "*": "//taaladvies.net/taal/advies/zoek.php?q=\u0002\u000110",
+ "advies": "//taaladvies.net/taal/advies/zoek.php?q=\u0002\u000110"
+ },
+ "gi": {
+ "*": "//www.tagesanzeiger.ch/service/suche/suche.html?date=alle&order=date&key=\u0002\u00010",
+ "nfo": {
+ "*": "//taginfo.openstreetmap.org/search?q=\u0002\u000124",
+ "ch": "http://taginfo.openstreetmap.ch/search?q=\u0002\u00010"
+ }
+ },
+ "id": "//www.therapistaid.com/search?query=\u0002\u00010",
+ "in": "//www.tripadvisor.in/Search?q=\u0002\u00010",
+ "it": "//www.tripadvisor.it/Search?q=\u0002\u00010",
+ "ko": {
+ "*": "http://takoboto.jp/?q=\u0002\u00010",
+ "boto": "http://takoboto.jp/?q=\u0002\u00010"
+ },
+ "to": {
+ "*": "//tatoeba.org/sentences/search?query=\u0002\u00010",
+ "eba": "http://tatoeba.org/sentences/search?query=\u0002\u000116",
+ "ebla": "http://tatoeba.org/sentences/search?query=\u0002\u000116"
+ },
+ "uk": "//www.tripadvisor.co.uk/Search?q=\u0002\u00010",
+ "cmed": "//tactical-medicine.com/search?q=\u0002\u00010",
+ "cojohns": "//www.tacojohns.com/?s=\u0002\u00010",
+ "cticalguru": "//thetacticalguru.com/?s=\u0002\u00010",
+ "ddlr": "http://taddlr.com/de/?s=\u0002\u00010",
+ "fesa": "//www.tafesa.edu.au/search-results?indexCatalogue=all&searchQuery=\u0002\u00010",
+ "gesschau": "http://www.tagesschau.de/suche2.html?query=\u0002\u00019",
+ "geswoche": "//www.tageswoche.ch/search/?q=\u0002\u00010",
+ "gfinder": "//tagfinder.herokuapp.com/search?query=\u0002\u00010",
+ "ils": "//tails.boum.org/ikiwiki.cgi?P=\u0002\u00010",
+ "kealot": "http://www.takealot.com/all/?qsearch=\u0002\u000121",
+ "obao": "//s.taobao.com/search?q=\u0002\u000158",
+ "yda": "http://www.taydaelectronics.com/catalogsearch/result/?q=\u0002\u00010"
+ },
+ "b": {
+ "a": {
+ "*": "//www.thebluealliance.com/search?q=\u0002\u00019",
+ "ddons": "//addons.thunderbird.net/en-US/thunderbird/search/?q=\u0002\u00010"
+ },
+ "c": "http://www.tibia.com/community/?subtopic=characters&name=\u0002\u000112",
+ "d": {
+ "e": "http://www.testberichte.de/d/search.php?searchstr=\u0002\u00010",
+ "*": "//www.bookdepository.com/search?searchTerm=\u0002&search=Find+book\u000127"
+ },
+ "n": "//www.tbn.org/search?s=\u0002\u00010",
+ "*": "http://www.olx.co.id/halaman/mencari/\u0002/search\u00019",
+ "io": "http://www.treccani.it/biografie/?q=\u0002\u00010",
+ "btwiki": "http://bigbangtheory.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1#\u00010",
+ "ooks": "//www.thriftbooks.com/browse/?b.search=\u0002#b.oos\u00018",
+ "uff": "http://www.technobuffalo.com/search-results/?cx=partner-pub-2551798495402703%3Ad3m0wbhqu0s&cof=FORID%3A10&ie=ISO-8859-1&q=\u0002&sa=Search&siteurl=www.technobuffalo.com%2F&ref=&ss=975j318069j4\u00010"
+ },
+ "c": {
+ "e": "//www.thecanadianencyclopedia.ca/en/search?search=\u0002\u00010",
+ "h": {
+ "i": "//www.tchibo.de/search?query=\u0002\u00010",
+ "*": "//www.teachingchannel.org/search?q=\u0002\u00010"
+ },
+ "l": "http://wiki.tcl.tk/_/search?S=\u0002&_charset_=UTF-8\u00010",
+ "p": "http://conservativepapers.com/?s=\u0002\u00010",
+ "s": "http://www.statutes.legis.state.tx.us/SearchResults.aspx?CP=1&Code=ZZ&Phrase=\u0002\u00010",
+ "*": "http://techcrunch.com/search/\u0002\u000130",
+ "u": "http://thecubicle.us/advanced_search_result.php?search_in_description=0&keywords=\u0002\u00010",
+ "v": "//theconversation.com/global/search?utf8=✓&q=\u0002\u00014",
+ "db": "//www.tradingcarddb.com/Search.cfm?SearchCategory=Baseball&cx=partner-pub-2387250451295121%3Ahes0ib-44xp&cof=FORID%3A10&ie=ISO-8859-1&q=\u0002\u00014",
+ "gp": {
+ "*": "http://shop.tcgplayer.com/productcatalog/product/show?newSearch=false&ProductType=All&IsProductNameExact=false&ProductName=\u0002\u000171",
+ "layer": "http://store.tcgplayer.com/magic/product/show?cardname=\u0002\u000118"
+ },
+ "ol": "//www.todocoleccion.net/buscador?bu=\u0002\u00010",
+ "rf": "http://tcrf.net/index.php?search=\u0002\u000192",
+ "freview": "//www.thechristianfilmreview.com/?s=\u0002\u00010",
+ "net": "http://tedcurran.net/?s=\u0002\u00010",
+ "ode": "http://www.tcodesearch.com/tcodes/search?q=\u0002\u00010"
+ },
+ "d": {
+ "b": {
+ "*": "//thronesdb.com/find?q=\u0002\u00010",
+ "ank": "//www.tdbank.com/CustomerService/search-results.aspx?q=\u0002\u00010"
+ },
+ "g": "http://www.tdg.ch/services/recherche/?order=date&q=\u0002&submitSearch=Chercher&date=alle\u00010",
+ "k": "//sozluk.gov.tr/?kelime=\u0002\u0001219",
+ "*": "http://www.timeanddate.com/search/results.html?query=\u0002\u000164",
+ "t": "//tarotdetiziana.com/?s=\u0002\u00010",
+ "canada": "//www.tdcanadatrust.com/search/index.jsp?query=\u0002&language=en&site=td_tdct_tdcb_en\u00010",
+ "egr": "http://www.ulisses-regelwiki.de/index.php/search.html?keywords=\u0002\u00010",
+ "notes": "//www.tdstructurednotes.com/snp/searchByKeyword.action?criteria.keyword=\u0002\u00010"
+ },
+ "e": {
+ "c": {
+ "h": {
+ "*": "http://technxt.net/?s=\u0002\u00010",
+ "2days": "http://tech2days.com/?q=\u0002:\u00010",
+ "copp": "//techcopp.com/?s=\u0002\u00010",
+ "crunch": "http://techcrunch.com/search/\u0002\u000130",
+ "dai": "//techdai.info/?s=\u0002\u00010",
+ "dirt": "http://www.techdirt.com/search.php?site=&q=\u0002\u00010",
+ "geek": "//techgeek.com.au/?s=\u0002\u00010",
+ "ified": "http://techified-news.blogspot.co.uk/\u0002 uds-search-results\u00010",
+ "info": "//techinfoeasy.blogspot.com/search?q=\u0002\u00010",
+ "monk": "//code.kx.com/q/search?query=\u0002\u00010",
+ "net": {
+ "*": "http://social.technet.microsoft.com/search/en-us/?query=\u0002\u00014",
+ "lib": "http://social.technet.microsoft.com/search/en-us/?query=\u0002#refinementChanges=85\u00010"
+ },
+ "news": "//www.techiitalks.com/\u0002\u00010",
+ "nikdirekt": "http://www.technikdirekt.de/search?sSearch=\u0002\u00010",
+ "nobyte": "//www.technobyte.org/?s=\u0002\u00010",
+ "posts": "//techposts.org/?s=\u0002\u00010",
+ "radar": "//www.techradar.com/search?searchTerm=\u0002\u00010",
+ "rights": "http://techrights.org/wiki/index.php/Special:Search?search=\u0002&fulltext=Search\u00010",
+ "spot": "//www.techspot.com/search/?cx=partner-pub-7395890353660701%3Aj5claj-6kfy&cof=FORID%3A11&ie=UTF-8&q=\u0002\u00010",
+ "tips4u": "http://www.techtips4u.com/?s=\u0002\u00010",
+ "tudo": "http://www.techtudo.com.br/busca/?q=\u0002\u00010",
+ "vorm": "//techvorm.com/?s=\u0002\u00010",
+ "-wd": "http://www.tech-wd.com/wd/?s=\u0002\u00010"
+ },
+ "*": "//duckduckgo.com/?q=\u0002+site%3Ahttp%3A%2F%2Fwww.ecologicalcitizen.net%2F&ia=web\u00010",
+ "mint": "//www.tecmint.com/search/?cx=partner-pub-2601749019656699%3A2173448976&cof=FORID%3A10&ie=UTF-8&q=\u0002&sa=Search&siteurl=www.tecmint.com%2F&ref=duckduckgo.com%2F&ss=3875j2780811j15\u00010",
+ "mundo": "//www.tecmundo.com.br/busca?q=\u0002\u00010",
+ "noblog": "//tecnoblog.net/?s=\u0002\u000132"
+ },
+ "d": {
+ "i": "http://www.tedi-shop.com/catalogsearch/result/?q=\u0002\u00010",
+ "*": "//www.ted.com/search?q=\u0002\u000113",
+ "ed": "//ed.ted.com/search?utf8=✓&qs=\u0002\u00010"
+ },
+ "i": "http://www.tei-c.org/?s=\u0002\u00010",
+ "k": {
+ "n": {
+ "o": {
+ "*": "http://teknosains.com/search?q=\u0002:\u00010",
+ "fiyat": "http://www.teknofiyat.com/?search=\u0002\u00010",
+ "seyir": "//teknoseyir.com/?s=\u0002\u00010"
+ },
+ "*": "//www.teknologimasakini.com/search?q=\u0002&max-results=8\u00010"
+ },
+ "*": "//www.tek.com/search?keywords=\u0002\u00010",
+ "eten": "http://teketen.com/?s=\u0002&submit=Search\u00010",
+ "mag": "http://www.teknikmagasinet.se/sokresultat?CMS_SearchString=\u0002\u00010",
+ ".no": "//www.tek.no/sok?query= \u0002\u00010",
+ "stowo": "http://www.tekstowo.pl/szukaj,wykonawca,\u0002 ,tytul,\u0002.html\u00013"
+ },
+ "l": {
+ "*": "http://yellowpages.superpages.com/listings.jsp?C=\u0002&CS=L&MCBP=true&search=Find+It&SRC=&STYPE=S&SCS=&channelId=&sessionId=\u00017",
+ "ch": "http://tel.search.ch/?q=\u0002\u00010",
+ "su": "http://www.telsu.fi/\u0002\u00010",
+ "efang": "http://wiki.telefang.net/index.php?search=\u0002\u00010",
+ "efonbuch": "http://www.dastelefonbuch.de/?pid=OpenSearch&cmd=search&kw=\u0002\u00013",
+ "egram": "//www.telegram.hr/?s=\u0002\u000112",
+ "egraaf": "http://www.telegraaf.nl/zoeken/\u0002\u00010",
+ "egraph": "//www.telegraph.co.uk/search.html?q=\u0002\u00018",
+ "erama": "http://www.telerama.fr/recherche/recherche.php?query=\u0002\u00016",
+ "etekst": "http://teletekst-data.nos.nl/webplus?p=\u0002\u00010",
+ "kku": "http://www.telkku.com/search?searchText=\u0002\u00010",
+ "search": "http://tel.search.ch/\u0002\u00010",
+ "stra": "//www.telstra.com.au/search/simple-search?inpSearch=\u0002&requestSiteId=personal&searchFormSubmited=Yes\u00010"
+ },
+ "n": {
+ "a": "http://www.tennisabstract.com/cgi-bin/player.cgi?p=\u0002\u00013",
+ "c": "http://www.treccani.it/enciclopedia/tag/\u0002/\u00010",
+ "*": "//translate.google.com/?hl=en&tab=TT#auto/en/\u0002\u000151",
+ "or": "//tenor.com/search/\u0002\u0001337",
+ "kijp": "http://www.tenki.jp/search/zip/?keyword=\u0002\u00014",
+ "sorflow": "//www.tensorflow.org/s/results/?q=\u0002\u00010"
+ },
+ "o": "//teonanacatl.org/search/1/?q=\u0002\u00010",
+ "r": {
+ "a": {
+ "*": "http://tera.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "t": "//teratail.com/questions/search?q=\u0002&conditions=and\u00010",
+ "data": "//www.teradata.com/Search?SearchText=\u0002\u00010"
+ },
+ "p": "http://brettterpstra.com/search/?q=\u0002\u00010",
+ "*": "//extensions.typo3.org/?L=0&id=1&tx_solr[q]=\u0002\u00013",
+ "rg": "http://terraria.gamepedia.com/index.php?search=\u0002\u0001249",
+ "mania": "http://www.termania.net/iskanje?query=\u0002&SearchIn=All\u00010",
+ "mcat": "//www.termcat.cat/cercaterm/\u0002?type=basic\u00010",
+ "mium": "http://www.btb.termiumplus.gc.ca/tpv2alpha/alpha-eng.html?srchtxt=\u0002\u00010",
+ "raria": "//terraria.gamepedia.com/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u0001526"
+ },
+ "s": {
+ "*": "//translate.google.com/?hl=es&tab=TT#auto/es/\u0002\u000135",
+ "t": {
+ "*": "http://www.greek-language.gr/greekLang/modern_greek/tools/lexica/triantafyllides/search.html?lq=\u0002\u00010",
+ "i": "//testi.xyz/results/?q=\u0002\u00010",
+ "berichte": "http://www.testberichte.de/d/search.php?searchstr=\u0002&submit=Suchen\u00010"
+ },
+ "co": "http://www.tesco.com/groceries/product/search/default.aspx?searchBox=\u0002\u000151",
+ "larati": "//www.teslarati.com/?s=\u0002\u00010",
+ "oro": "//tesoro.pr/busqueda?q=\u0002\u00010",
+ "wiki": "http://elderscrolls.wikia.com/wiki/Special:Search?search=\u0002\u00010"
+ },
+ "*": "http://www.treccani.it/enciclopedia/tag/\u0002/\u00010",
+ "u": "http://eur-lex.europa.eu/search.html?wh0=DN%3D12012M*&lbStatus=ALL&qid=1459001887262&DTS_DOM=EU_LAW&ARTICLE_NUM=\u0002&treatyStatus=ARTICLE_NUMBER&type=advanced&lang=en&SUBDOM_INIT=TREATIES&legalCelex=TEU_2012&DTS_SUBDOM=TREATIES\u00010",
+ "x": {
+ "*": "http://tex.stackexchange.com/search?q=\u0002\u00010",
+ "se": "http://tex.stackexchange.com/search?q=\u0002\u00010",
+ "ty": "http://texty.krestys.lt/paieska.php?t=\u0002\u00010",
+ "doc": "http://texdoc.net/pkg/\u0002\u000137",
+ "tise": "//www.textise.net/showText.aspx?strURL=\u0002\u00019",
+ "tileschool": "//www.textileschool.com/?s=\u0002\u00010",
+ "ture": "//duckduckgo.com/?q=\u0002+texture&iax=images&ia=images\u00010"
+ },
+ "amliquid": "http://www.teamliquid.net/forum/search.php?q=\u0002\u00010",
+ "amsnap": "http://duckduckgo.com/?q=\u0002+site:teamsnap.com\u00010",
+ "arma": "http://www.tearma.ie/Search.aspx?term=\u0002\u00010",
+ "flo": "//www.tensorflow.org/s/results/?q=\u0002\u00010",
+ "ma18": "//tema18.blogspot.com/search?q=\u0002\u00010",
+ "matimi": "//www.tematimi.com/ara&search=\u0002\u00010",
+ "mplate": "//en.wikipedia.org/wiki/Template:\u0002\u00010",
+ "mpmail": "//temp-mail.org/\u0002/\u000123",
+ "-st": "//te-st.ru/?s=\u0002\u00010",
+ "wiki": "//te.wikipedia.org/w/index.php?search=\u0002\u00010",
+ "zaurs": "http://tezaurs.lv/#/sv/?\u0002\u00018"
+ },
+ "f": {
+ "2": {
+ "r": "//www.reddit.com/r/tf2/search?q=\u0002&restrict_sr=on\u00010",
+ "*": "http://wiki.teamfortress.com/w/index.php?title=Special%3ASearch&search=\u0002&go=Go\u0001140",
+ "bp": "http://backpack.tf/id/\u0002\u00010",
+ "wiki": "http://wiki.teamfortress.com/w/index.php?title=Special%3ASearch&search=\u0002&go=Go\u0001140"
+ },
+ "d": {
+ "*": "http://www.thefreedictionary.com/\u0002\u00011081",
+ "de": "http://de.thefreedictionary.com/\u0002\u000111",
+ "acronyms": "http://acronyms.thefreedictionary.com/\u0002\u00010",
+ "encyclopedia": "http://encyclopedia2.thefreedictionary.com/\u0002\u00010",
+ "financial": "http://financial-dictionary.thefreedictionary.com/\u0002\u00010",
+ "idioms": "http://idioms.thefreedictionary.com/\u0002\u000124",
+ "legal": "http://legal-dictionary.thefreedictionary.com/\u0002\u00010",
+ "medical": "http://medical-dictionary.thefreedictionary.com/\u0002\u00010"
+ },
+ "e": {
+ "s": "//forum.tfes.org/index.php?action=search2;search=\u0002\u00010",
+ "*": "//ticketforevent.com/events/?q=\u0002\u00010"
+ },
+ "l": {
+ "*": "http://www.tfl.gov.uk/tfl/search/?keywords=\u0002\u00010",
+ "ow": "//www.tensorflow.org/s/results/?q=\u0002 \u00010"
+ },
+ "s": "http://www.thermofisher.com/search/results?query=\u0002\u00010",
+ "*": "//www.tensorflow.org/s/results/?q=\u0002\u00010",
+ "t": {
+ "*": "//www.freethesaurus.com/\u0002\u00010",
+ "v": "http://www.teamfortress.tv/search?q=\u0002\u00010"
+ },
+ "3d": "//free3d.com/3d-models/\u0002\u00010",
+ "opr": "//www.terraform.io/docs/providers/openstack/r/\u0002.html\u00010",
+ "wiki": "http://tfwiki.net/wiki/Special:Search?search=\u0002&go=Go\u000135"
+ },
+ "i": {
+ "a": "//www.techinasia.com/search?query=\u0002\u00010",
+ "b": {
+ "*": "http://opac.tib.uni-hannover.de/DB=1/CHARSET=UTF-8/SRCH?IKT=1016&TRM=\u0002\u00013",
+ "ia": {
+ "*": "//secure.tibia.com/community/?subtopic=characters&name=\u0002\u00010",
+ "wiki": "http://tibia.wikia.com/wiki/Special:Search?query=\u0002\u00013"
+ },
+ "ub": "http://opac.tib.uni-hannover.de/DB=1/SET=1/TTL=1/CMD?ACT=SRCHA&IKT=1016&SRT=YOP&TRM=\u0002\u00010"
+ },
+ "g": {
+ "*": "http://www.tigsource.com/?s=\u0002\u00010",
+ "db": "http://db.tigsource.com/search?game[name]=\u0002\u00010",
+ "erdirect": "http://www.tigerdirect.com/applications/SearchTools/search.asp?keywords=\u0002\u00014",
+ "source": "http://www.tigsource.com/?s=\u0002\u00010",
+ "tag": "http://www.tigtagcarolina.com/search/?q=\u0002\u00010"
+ },
+ "m": {
+ "*": "http://duckduckgo.com/?q=timer+\u0002&ia=answer\u00014",
+ "e": {
+ "r": {
+ "*": "http://duckduckgo.com/?q=timer+\u0002&ia=answer\u00014",
+ "ep": {
+ "*": "//timerepublik.com/?q=\u0002\u00010",
+ "ublik": "//timerepublik.com/?q=\u0002\u00010"
+ }
+ },
+ "*": "http://www.unixtimestamp.org/?timestamp=\u0002\u000144",
+ "is": "//time.is/\u0002\u000151",
+ "killer": "//ideja.d2.si/results?q=\u0002\u00010",
+ "stamp": "http://unixtimestamp.com/?unixTimestampInput=\u0002\u000111",
+ "zone": "http://www.timeanddate.com/time/zones/\u0002\u00019"
+ },
+ "hortons": "http://www.timhortons.com/ca/en/search/search-results.php?q=\u0002\u00010"
+ },
+ "p": {
+ "*": "//www.tipeee.com/creators?search=\u0002\u00010",
+ "pie": "//tippie.uiowa.edu/google-search?search=\u0002\u00010",
+ "ranks": "//www.tipranks.com/stocks/\u0002\u000117"
+ },
+ "s": {
+ "s": "//tiss.tuwien.ac.at/adressbuch/adressbuch/suche?suchtext=\u0002\u000139",
+ "*": "//time.is/\u0002\u000151"
+ },
+ "t": "http://www.tradooit.com/info.php?q=\u0002 &btn-recherche.x=0&btn-recherche.y=0&langFrom=en&langTo=fr\u00010",
+ "*": "http://tunein.com/search/?query=\u0002\u00017",
+ "ho": "http://opac.tib.uni-hannover.de/DB=5/LNG=DU/SID=40343eab-1/CMD?ACT=SRCHA&IKT=1016&SRT=YOP&TRM=\u0002\u00010",
+ "ki": "//tiki.vn/search?q=\u0002\u00010",
+ "nk": "//www.tinkercad.com/search?q=\u0002\u00010",
+ "vi": "//www.tivi.fi/haku/?q=\u0002\u00010",
+ "vo": "http://www3.tivo.com/tivo-tco/search.do?dispatch=simplesearch&searchFor=\u0002\u00010",
+ "cker": "//stockflare.com/#stocks/$\u0002 \u00010",
+ "ckets": "http://www.stubhub.com/search/doSearch?searchStr=\u0002&pageNumber=1&resultsPerPage=50&searchMode=event&start=0&rows=50\u00015",
+ "cketmaster": {
+ "*": "//www.ticketmaster.com/search?q=\u0002\u00013",
+ "uk": "http://www.ticketmaster.co.uk/search?tm_link=tm_homeA_header_search&user_input=test&q=\u0002\u00010"
+ },
+ "cketnetwork": "//www.ticketnetwork.com/en/search/?text=\u0002\u00010",
+ "cmate": "//www.ticmate.com/search?freeText=\u0002\u00010",
+ "dal": "//listen.tidal.com/search/\u0002\u000123",
+ "eba": {
+ "*": "http://tieba.baidu.com/f?ie=utf-8&kw=\u0002\u000138",
+ "id": "//passport.baidu.com/v2/?regnamesugg&username=\u0002\u00010"
+ },
+ "ketti": {
+ "*": "http://www.tiketti.fi/tapahtumat#q=\u0002\u00010",
+ "en": "http://www.tiketti.fi/events#q=\u0002\u00010"
+ },
+ "lde": {
+ "*": "//llevatilde.es/palabra/\u0002\u00017",
+ "s": "//tildes.net/search?q=\u0002\u00010"
+ },
+ "ndie": "//www.tindie.com/search/?q=\u0002\u00014",
+ "neye": "http://www.tineye.com/search?url=\u0002\u0001435",
+ "nglesa": "//www.tiendainglesa.com.uy/busqueda?0,0,\u0002,0\u00010",
+ "nhouse": "http://www.tinhouse.com/blog/search_results?cx=011725669505340441470%3Ak2fqsblnr5c&cof=FORID%3A9&ie=UTF-8&q=\u0002&sa=Search\u00010",
+ "nycards": "//tinycards.duolingo.com/search?query=\u0002\u00010",
+ "nypic": "http://tinypic.com/search.php?tag=\u0002\u00013",
+ "nyurl": "http://tinyurl.com/create.php?url=\u0002\u000121",
+ "ragegagnant": "http://tirage-gagnant.com/?s=\u0002\u00010",
+ "wimb": "http://www.thisiswhyimbroke.com/\u0002\u00010"
+ },
+ "j": {
+ "p": "//tower.jp/search/item/\u0002\u00010",
+ "*": "//www.tacojohns.com/?s=\u0002\u00010",
+ "ournal": "//tjournal.ru/search/\u0002\u00010"
+ },
+ "l": {
+ "d": {
+ "*": "http://wiki.teamliquid.net/dota2/index.php?search=\u0002\u000146",
+ "p": "http://www.google.com/cse?cx=017644269519104757279%3Agm62gtzaoky&q=\u0002\u00010",
+ "r": {
+ "*": "//tldr.ostera.io/\u0002\u000178",
+ "legal": "//tldrlegal.com/search?q=\u0002 \u00010"
+ }
+ },
+ "f": {
+ "i": "http://www.cnrtl.fr/definition/\u0002\u0001238",
+ "*": "http://theladiesfinger.com/?s=\u0002\u00010"
+ },
+ "h": "//thelasthunt.com/search?type=product&q=\u0002\u00010",
+ "i": {
+ "b": "//toolslib.net/search/projects/?q=\u0002\u00013",
+ "*": "http://thelogicalindian.com/?s=\u0002\u00010"
+ },
+ "k": "//tlk.io/\u0002\u00010",
+ "s": "//www.thorlabs.com/search/thorsearch.cfm?search= \u0002\u000118",
+ "*": "http://www.teamliquid.net/forum/search.php?q=\u0002\u00010",
+ "w": "http://wiki.teamliquid.net/starcraft2/index.php?title=Special%3ASearch&search=\u0002\u000134",
+ "ld": "//www.thetrainline.com/live/departures/\u0002\u00010",
+ "enge": "//www.linguee.com/english-german/search?source=auto&query=\u0002\u000111",
+ "grm": "//web.telegram.org/#/im?p=\u0002 \u000149"
+ },
+ "m": {
+ "e": {
+ "n": "http://www.transfermarkt.com/schnellsuche/ergebnis/schnellsuche?query=\u0002\u000152",
+ "*": "//www.tme.eu/pl/katalog/?search=\u0002\u00010"
+ },
+ "g": "//registry.terraform.io/search?q=\u0002\u000117",
+ "k": "//www.tematika.com/buscar.do?txtencoded=\u0002&idSeccionPropia=0&optSeleccionada=DuckDuckGo.com&idSeccion=0&seccionDeBusqueda=DuckDuckGo.com&texto=\u0002\u00010",
+ "n": "http://www.travelmath.com/nearest-airport/\u0002\u00010",
+ "r": "http://www.rezeptwelt.de/search/?rec_all=0&search=\u0002\u00010",
+ "*": "http://www.trademe.co.nz/Browse/SearchResults.aspx?searchString=\u0002\u000132",
+ "t": "http://www.tinymixtapes.com/?search=\u0002\u00010",
+ "w": "//www.techmansworld.com/search?q=\u0002\u00010",
+ "z": "http://www.tmz.com/search/articles/\u0002/1/\u00013",
+ "an": "http://help.trello.com/search?query=\u0002\u00010",
+ "bw": "http://tmbw.net/wiki/Special:Search?search=\u0002&x=0&y=0\u000113",
+ "db": "//www.themoviedb.org/search?query=\u0002\u0001676",
+ "uk": "http://www.transfermarkt.co.uk/schnellsuche/ergebnis/schnellsuche?query=\u0002&x=0&y=0\u000113",
+ "all": "//list.tmall.com/search_product.htm?q=\u0002\u00016",
+ "ark": {
+ "*": "http://trademarks.justia.com/search.php?q=\u0002\u00010",
+ "et": "//www.torn.com/imarket.php#/p=shop&step=shop&type=&searchname=\u0002\u00010"
+ },
+ "blog": "//blog.trendmicro.com/?s=\u0002\u00010"
+ },
+ "n": {
+ "a": "http://discovery.nationalarchives.gov.uk/results/r?_q=\u0002\u00010",
+ "p": "//thenounproject.com/search/?q=\u0002\u000115",
+ "s": "//thenerdystudent.com/?s=\u0002\u00010",
+ "*": "//www.timesnownews.com/latest-news?search=\u0002\u00016",
+ "t": {
+ "*": "http://webtracker.tnt.com/webtracker/tracking.do?requestType=GEN&searchType=CON&respLang=en&respCountry=US&sourceID=1&sourceCountry=ww&cons=\u0002\u00017",
+ "news": "//www.tntnews.net/?s=\u0002\u00010"
+ },
+ "w": "//thenextweb.com/?q=\u0002\u00010",
+ "-annonces": "http://www.tunisie-annonce.com/search.asp?cx=partner-pub-4455074141785177%3Aabc2p7-5h3d&cof=FORID%3A10&ie=ISO-8859-1&q=\u0002&sa=Rechercher&siteurl=www.tunisie-annonce.com%2F&ref=&ss=1479j334475j10\u00010",
+ "bc1": "//tnbc1.com/?s=\u0002 \u00010",
+ "yims": "http://tny.im/yourls-api.php?action=shorturl&url=\u0002\u00010"
+ },
+ "p": {
+ "c": "http://thepeoplescube.com/searchGoogle.php?cx=partner-pub-8404716009789025%3A4p2aqaojris&cof=FORID%3A9&ie=ISO-8859-1&q=\u0002&sa=\u00010",
+ "h": "//paintedheirloom.com/search?q=\u0002\u00010",
+ "l": "http://www.torontopubliclibrary.ca/search.jsp?Ntt=\u0002\u00010",
+ "o": "http://tpo.nl/?s=\u0002\u00010",
+ "*": "//thesaurus.plus/search?q=\u0002\u000113",
+ "t": "//www.teacherspayteachers.com/Browse/Search:\u0002\u00010",
+ "w": "//tweakers.net/pricewatch/zoeken/?keyword=\u0002\u000129",
+ "erth": "//www.transperth.wa.gov.au/Search-Results?Search=\u0002\u00010",
+ "press": "//themeparkpress.com/?s=\u0002\u00010"
+ },
+ "r": {
+ "f": {
+ "*": "http://www.rolexforums.com/tags.php?tag=\u0002\u00010",
+ "de": "http://www.transfermarkt.de/de/undefined/suche/ergebnis.html?quicksearch=\u0002&x=0&y=0\u00013",
+ "uk": "http://www.transfermarkt.co.uk/schnellsuche/ergebnis/schnellsuche?query=\u0002\u00010"
+ },
+ "*": "//translate.google.com/#auto/en/\u0002\u00011136",
+ "l": "http://theringlord.com/cart/shopdisplayproducts.asp?Search=Yes&Keyword=\u0002\u00010",
+ "n": {
+ "l": "//translate.google.com/#auto/nl/\u0002\u00014",
+ "*": "//therealnews.com/?s=\u0002\u00010"
+ },
+ "w": "http://wiki.travellerrpg.com/index.php?title=Special%3ASearch&search=\u0002\u00010",
+ "ad": {
+ "*": "http://dictionary.reverso.net/french-english/\u0002\u00018",
+ "eme": "http://www.trademe.co.nz/Browse/SearchResults.aspx?searchString=\u0002\u000132",
+ "emachines": "//trademachines.com/search?phrase=\u0002 \u00010",
+ "emarks": "http://www.trademarkia.com/trademarks-search.aspx?tn=\u0002\u00010",
+ "era": "http://www.tradera.com/finding.mvc/itemlisting?header=true&search=\u0002\u000133",
+ "ingview": "//www.tradingview.com/chart/?symbol=\u0002\u000191"
+ },
+ "ap": {
+ "*": "//www.trappersreport.com/?q=\u0002\u00010",
+ "per": "http://www.trappersreport.com/?q=\u0002\u00010",
+ "ping": "//www.trappersreport.com/search/\u0002\u00010"
+ },
+ "ef": "http://www.thesaurus.com/browse/\u0002\u0001322",
+ "ep": "//timerepublik.com/?q=\u0002\u00010",
+ "ip": {
+ "*": "http://www.tripdatabase.com/search?criteria=\u0002\u00010",
+ "advisor": "http://www.tripadvisor.com/Search?q=\u0002&sub-search=Go\u000130",
+ "lea": "http://axisandallies.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1#\u00010",
+ "oto": "//www.tripoto.com/travel-guide/\u0002\u00010",
+ "sit": "//wiki.tripsit.me/index.php?search=\u0002\u00010",
+ "wire": "//www.tripwire.com/state-of-security?s=\u0002\u00010"
+ },
+ "pl": "http://translatica.pl/szukaj/\u0002\u00013",
+ "ue": {
+ "*": "//www.truecaller.com/search/in/\u0002\u000112",
+ "achievements": "//www.trueachievements.com/searchresults.aspx?search=\u0002\u00018",
+ "steam": "//truesteamachievements.com/searchresults.aspx?search=\u0002\u00018",
+ "trophies": "//www.truetrophies.com/searchresults.aspx?search=\u0002\u00013"
+ },
+ "ack": {
+ "*": "http://www.packagemapping.com/?action=track&tracknum=\u0002\u00015",
+ "r": "http://www.packagetrackr.com/track/?submit=&n=\u0002&c=\u00017",
+ "itdown": "http://www.trackitdown.net/search/keyword?q=\u0002\u00010"
+ },
+ "acemyip": "http://tools.tracemyip.org/lookup/\u0002\u00010",
+ "aceroute": "http://network-tools.com/default.asp?prog=trace&host=\u0002\u00010",
+ "actorhouse": "//www.tractorhouse.com/listings/farm-equipment/for-sale/list/?fulltext=\u0002\u00010",
+ "aeger": "//www.traegergrills.com/recipes?types=RecipeDetail&term=\u0002\u00010",
+ "ail": {
+ "*": "//www.trailandmountain.co.uk/search?q=\u0002\u00010",
+ "er": {
+ "*": "http://www.traileraddict.com/search.php?sitesearch=www.traileraddict.com&q=\u0002\u00010",
+ "addict": "http://www.traileraddict.com/search/\u0002\u00010"
+ }
+ },
+ "aining": "//trainingindustry.com/?s=\u0002\u00010",
+ "akt": "http://trakt.tv/search?utf8=%E2%9C%93&query=\u0002\u0001193",
+ "amper": "http://tramper.nz/?view=search&keywords=\u0002\u00010",
+ "ans": {
+ "*": "//translate.google.com/?source=osdd#auto/en/\u0002\u00012153",
+ "nl": "//translate.google.com/#auto/nl/\u0002\u00014",
+ "fermarkt": "http://www.transfermarkt.de/schnellsuche/ergebnis/schnellsuche?query=\u0002&x=0&y=0\u000173",
+ "late": {
+ "*": "//translate.google.com/#auto/en/\u0002\u00011136",
+ "de": "//translate.google.com/#auto/de/\u0002\u0001195",
+ "nl": "//translate.google.com/#auto/nl/\u0002\u00014",
+ "site": "http://www.microsofttranslator.com/bv.aspx?from=&to=en&a=\u0002\u000130"
+ }
+ },
+ "anz": "http://gizoogle.net/tranzizzle.php?search=\u0002&se=Go+Git+Dis+Shiznit\u00010",
+ "ash": {
+ "*": "http://www.trashmail.de/?search=\u0002\u00014",
+ "wiki": "http://trashwiki.org/w/index.php?search=\u0002&title=Special:Search\u00014"
+ },
+ "aumdeutung": "//traum-deutung.de/?s=\u0002\u00010",
+ "avel": {
+ "*": "//thewelltravelledfamily.com/?s=\u0002\u00010",
+ "gator": "//www.travelgator.com/en/search/?locationquery=\u0002\u00010"
+ },
+ "avis": "//travis-ci.org/search/\u0002\u00010",
+ "axsource": "//www.traxsource.com/search?term=\u0002\u00010",
+ "eccani": "http://www.treccani.it/vocabolario/tag/\u0002\u000174",
+ "ello": "//trello.com/search?q=\u0002\u000164",
+ "ends": {
+ "*": "//www.google.com/trends/explore#q=\u0002\u0001114",
+ "top": "http://trendstop.knack.be/nl/results.aspx?s1=\u0002\u00010"
+ },
+ "enth": "//translate.google.com/#en/th/\u0002\u00010",
+ "ending": "//trendingimages.in/search/images/?q=\u0002\u00010",
+ "endmicro": "//www.trendmicro.com/en_us/common/cse.html#?cludoquery=\u0002\u00010",
+ "endyscooter": "http://trendyscooter.com/?route=product/search&search=\u0002\u00010",
+ "ictrac": "http://www.trictrac.net/recherche?query=\u0002\u00013",
+ "isquel": "http://trisquel.info/en/search/node/\u0002 & https://trisquel.info/en/search/node/\u0002\u00010",
+ "ivago": "//www.trivago.com/?sQuery=\u0002\u00010",
+ "iviaowl": "//triviaowl.com/?s=\u0002 \u00010",
+ "oll": "//www.trollandtoad.com/products/search.php?searchmode=basic&search_words=\u0002\u00015",
+ "ome": "//trome.pe/buscar/?query=\u0002\u00010",
+ "ope": {
+ "s": "http://allthetropes.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "*": "//tvtropes.org/pmwiki/pmwiki.php/Main/\u0002\u00014"
+ },
+ "opicalprice": "//tropicalprice.com/?query=\u0002\u00010",
+ "ouva": "//www.trouva.com/shop/search/\u0002\u00010",
+ "ove": "http://trove.nla.gov.au/result?q=\u0002 \u00013",
+ "ovaprezzi": "http://www.trovaprezzi.it/categoria.aspx?libera=\u0002&id=-1&prezzomin=&prezzomax=\u000184",
+ "rust": "http://www.grnpedia.org/trrust/result.php?gene=\u0002&species=human&confirm=0\u00010",
+ "ulia": "http://www.trulia.com/validate.php?tst=h&display=for+sale&search=\u0002&type=&min_price=min&max_price=max&min_num_beds=0&min_num_baths=0&min_size=0&submit_btn=SEARCH\u00010",
+ "ulytexan": "http://www.trulytexan.com/?\u0002\u00010",
+ "ump": "//twitter.com/search?q=from%3Arealdonaldtrump%20\u0002&src=typd\u00014",
+ "ustpilot": "//www.trustpilot.com/search?query=\u0002\u000127",
+ "yggehandel": "//www.tryggehandel.se/?s=\u0002\u00010"
+ },
+ "s": {
+ "a": "http://www.techsupportalert.com/search/google?query=\u0002\u00013",
+ "c": {
+ "o": "//www.tractorsupply.com/tsc/search/\u0002\u00010",
+ "*": "//www.theshoppingchannel.com/search/\u0002\u00010"
+ },
+ "j": "http://www.thesinglesjukebox.com/?s=\u0002\u00010",
+ "r": "//www.thestudentroom.co.uk/search/?tsr-search-query=\u0002\u00010",
+ "*": "http://www.turbosquid.com/Search/Index.cfm?keyword=\u0002\u000116",
+ "x": "//web.tmxmoney.com/company.php?qm_symbol=\u0002&locale=en\u00013",
+ "21": "//teeshirt21.com/shop/\u0002\u00010",
+ "in": "http://www.treccani.it/sinonimi/?q=\u0002\u00010",
+ "hirt": {
+ "s": "//www.teeterritory.com/search?q=\u0002\u00010",
+ "*": "//www.tpop.fr/search?type=product&q=\u0002\u00010"
+ },
+ "types": "//www.npmjs.com/search?q=%40types%2F\u0002\u00010"
+ },
+ "t": {
+ "i": "http://www.tutti.ch/ticino?q=\u0002\u00010",
+ "r": {
+ "*": "http://toontownrewritten.wikia.com/wiki/Special:Search?search=\u0002\u00016",
+ "uyen": "http://truyendi.com/tim-kiem-truyen.html?q=\u0002\u00010"
+ },
+ "s": "//www.triestetrasporti.it//?s=\u0002&lang=it\u00010",
+ "*": "//www.texastribune.org/search/?q=\u0002\u000157",
+ "t": "//techterms.com/search?query=\u0002\u00010",
+ "v": "//www.twitch.tv/search?term=\u0002\u00013166",
+ "y": "//duckduckgo.com/tty/#q=\u0002\u00015",
+ "b-ita": "http://tatoeba.org/eng/sentences/search?query=\u0002&from=und&to=ita\u00010",
+ "books": "//books.google.com/talktobooks/query?q=\u0002\u00010"
+ },
+ "+": "http://www.btb.termiumplus.gc.ca/tpv2alpha/alpha-fra.html?lang=fra&i=&index=alt&__index=alt&srchtxt=\u0002&comencsrch.x=0&comencsrch.y=0\u00010",
+ "*": "http://www.thesaurus.com/browse/\u0002\u0001322",
+ "u": {
+ "b": {
+ "e": "//bit.tube/results?term=\u0002\u000110",
+ "*": "//katalog.tub.tuhh.de/Search/Results?lookfor=\u0002&type=AllFields&limit=20&sort=relevance\u00010",
+ "afm": "http://fm.tuba.pl/artysta/\u0002\u00010"
+ },
+ "c": "//duckduckgo.com/?q=\u0002+site%3Awww.tu-chemnitz.de\u00010",
+ "d": {
+ "a": "//www.tu-darmstadt.de/suche.de.jsp?q=\u0002\u00010",
+ "*": "//www.tudelft.nl/en/search/?q=\u0002\u00010",
+ "ou": "http://so.tudou.com/nisearch.do?kw=\u0002\u00010",
+ "ogostoso": "http://www.tudogostoso.com.br/busca?q=\u0002\u00010"
+ },
+ "g": "http://search.tugraz.at/search?q=\u0002&site=Alle&btnG=Suchen&client=tug_portal&output=xml_no_dtd&proxystylesheet=tug_portal&sitesearch=www.tugraz.at\u00010",
+ "j": "http://www.tujavortaro.net/?vorto=\u0002\u00014",
+ "m": {
+ "*": "//www.tum.de/en/spezialseiten/search/?q=\u0002&sites=all\u00016",
+ "blr": "//www.tumblr.com/search/\u0002\u0001599",
+ "bview": "http://tumbview.com/\u0002/grid/\u00013"
+ },
+ "r": {
+ "*": "http://tureng.com/tr/turkce-ingilizce/\u0002\u0001760",
+ "bo": "//www.theturboforums.com/search/153518/?q=\u0002\u00010",
+ "eng": "http://tureng.com/tr/turkce-ingilizce/\u0002\u0001760",
+ "nstone": "http://myturnstone.com/?s=\u0002&lang=en\u00010"
+ },
+ "t": {
+ "s": {
+ "*": "http://hub.tutsplus.com/search?utf8=✓&view=grid&search%5Bkeywords%5D=\u0002\u00010",
+ "plus": "http://tutsplus.com/tutorials/search?utf8=%E2%9C%93&search[topic]=&search[terms]=\u0002&button=\u00010"
+ },
+ "*": "http://search.tut.by/?status=1&ru=1&encoding=1&page=0&how=rlv&query=\u0002\u00010",
+ "ti": {
+ "*": "//www.tutti.ch/de/li/ganze-schweiz?q=\u0002\u000121",
+ "ch": "http://www.tutti.ch/ganze-schweiz?q=\u0002 \u00010"
+ },
+ "anota": "//mail.tutanota.com/search/mail/LSWThzP--3-1?query=\u0002\u0001253",
+ "news": "http://news.tut.by/search/?str=\u0002\u00010",
+ "orilio": "//www.tutorilio.com/?q=\u0002\u00010",
+ "tocitta": "//www.tuttocitta.it/mappe/\u0002\u00010"
+ },
+ "*": "//tu-dresden.de/@@search?SearchableText=\u0002\u000116",
+ "x": {
+ "*": "http://linuxinthebox.company/?product_cat=&post_type=product&s=\u0002\u00010",
+ "db": "//tuxdb.com/section/db&page=0&search=\u0002\u00010"
+ },
+ "hh": "//www.tuhh.de/tuhh/suche/suchergebnis.html?cx=013498366615220259019:ljc1ircsxvi&ie=utf8&hl=de&q=\u0002\u00015",
+ "po": "//duckduckgo.com/?q=\u0002+site%3Awww.tutorialspoint.com&ia=web\u00015",
+ "ffyproducts": "//www.tuffyproducts.com/search.aspx?searchterm=\u0002\u00010",
+ "ndra": "//www.tundra.com/search?q=\u0002\u00013",
+ "nef": {
+ "*": "//www.tunefind.com/search/site?q=\u0002\u00014",
+ "ind": "//www.tunefind.com/search/site?q=\u0002\u00014"
+ },
+ "nein": "http://tunein.com/search/?query=\u0002\u00017",
+ "nearch": "//tunearch.org/w/index.php?search=\u0002\u00010",
+ "nebat": "//tunebat.com/Search?q=\u0002\u000177",
+ "wlib": "//catalogplus.tuwien.ac.at/primo_library/libweb/action/dlSearch.do?queryfield=&x=0&y=0&institution=UTW&vid=UTW&tab=default_tab&search_scope=UTW&mode=Basic&indx=1&bulkSize=10&dum=true&highlight=true&pcAvailabiltyMode=false&prefLang=en_US&dummyChar=♥&query=any%2Ccontains%2C\u0002&displayField=title\u00010"
+ },
+ "v": {
+ "2": "//search.tv2.dk/?query=\u0002&sort=relevance&page=1\u00013",
+ "3": "http://www.ccma.cat/tv3/alacarta/cercador/?items_pagina=15&perfil=rellevancia&profile=videos&text=\u0002\u00010",
+ "5": "http://www.tv5monde.com/?q=\u0002\u00010",
+ "a": {
+ "*": "//tweakers.net/aanbod/zoeken/?keyword=\u0002\u000111",
+ "rt": "//bendodson.com/projects/itunes-artwork-finder/index.html?entity=tvSeason&country=us&query=\u0002\u00010"
+ },
+ "d": {
+ "b": {
+ "*": "//www.thetvdb.com/search?query=\u0002&l=en\u0001360",
+ "fr": "//www.thetvdb.com/search?q=\u0002&l=fr\u00010"
+ },
+ "*": "http://vampirediaries.wikia.com/wiki/Special:Search?query=\u0002\u00010"
+ },
+ "i": {
+ "*": "http://www.tvi24.iol.pt/pesquisa/\u0002 \u00010",
+ "ew": "//www.tradingview.com/chart/?symbol=\u0002\u000191"
+ },
+ "l": "http://tvlanguedoc.com/search_gcse/?q=\u0002\u00010",
+ "p": "//www.tvp.pl/szukaj?query=\u0002\u00010",
+ "t": {
+ "*": "http://tvtropes.org/pmwiki/search_result.php?q=\u0002\u00011441",
+ "hek": "http://tvthek.orf.at/search?q=\u0002\u00010",
+ "ropes": "http://tvtropes.org/pmwiki/search_result.php?cx=partner-pub-6610802604051523%3Aamzitfn8e7v&cof=FORID%3A10&ie=ISO-8859-1&q=\u0002&siteurl=tvtropes.org%2Fpmwiki%2Fpmwiki.php%2FMain%2FHomePage\u00011323"
+ },
+ "*": "http://www.tv.com/search?q= \u0002\u000139",
+ "nz": "//www.tvnz.co.nz/search?q=\u0002\u00010",
+ "oc": "http://www.treccani.it/vocabolario/tag/\u0002/\u000179",
+ "st": "http://www.tvshowtime.com/en/search?q=\u0002\u00019",
+ "4play": "//www.tv4play.se/s%C3%B6k/\u0002\u00010",
+ "com": "http://www.tv.com/search?q=\u0002\u00010",
+ "guide": "http://www.tvguide.com/search/index.aspx?keyword=\u0002\u00010",
+ "maze": "//www.tvmaze.com/search?q=\u0002\u000195",
+ "seriesfinale": "http://tvseriesfinale.com/?s=\u0002\u00010",
+ "spielfilm": "http://www.tvspielfilm.de/suche/?q=\u0002 \u00010"
+ },
+ "w": {
+ "c": "//thewirecutter.com/?s=\u0002\u0001223",
+ "f": {
+ "*": "//www.thewebflash.com/?s=\u0002\u00010",
+ "y": "http://www.theyworkforyou.com/search/?q=\u0002\u00010"
+ },
+ "g": "//www.twitch.tv/directory/game/\u0002\u000150",
+ "l": {
+ "b": "//tweaklibrary.com/?s=\u0002\u00010",
+ "*": "//twitter.com/search?f=tweets&vertical=news&q=\u0002\u0001339"
+ },
+ "n": "//www.theweathernetwork.com/search?q=\u0002\u00010",
+ "p": {
+ "*": "http://www.washingtonpost.com/newssearch/search.html?st=\u0002\u000158",
+ "w": "//tweakers.net/pricewatch/zoeken/?keyword=\u0002\u000129",
+ "ro": "//twpro.jp/search?word=\u0002\u00010"
+ },
+ "*": "//twitter.com/search?q=\u0002\u00018640",
+ "w": "http://witcher.gamepedia.com/index.php?search=\u0002\u00015",
+ "id": "//twitter.com/intent/user?user_id=\u0002\u00010",
+ "ig": "//twig.symfony.com/\u0002\u000114",
+ "it": {
+ "*": "//twitter.com/search?q=\u0002\u00018640",
+ "ch": {
+ "c": {
+ "*": "//twitch.tv/\u0002\u0001253",
+ "hat": "//www.twitch.tv/\u0002/chat?popout=\u000117"
+ },
+ "e": "//twitchemotes.com/search?query=\u0002\u00010",
+ "g": "//www.twitch.tv/directory/game/\u0002\u000150",
+ "*": "//twitch.tv/\u0002\u0001253",
+ "2steam": "http://tab-bot.net/botcheck?twitchname_botcheck=\u0002&submit_twitch=&steam_botcheck=\u00013",
+ "bots": "//twitchbots.info/check?username=\u0002\u00010",
+ "pop": "//player.twitch.tv/?volume=0.5&channel=\u0002\u00010"
+ },
+ "tv": "//twit.tv/search/\u0002\u00010",
+ "ter": {
+ "s": "//twitter.com/\u0002\u0001168",
+ "*": "//twitter.com/search?q=\u0002\u00018640",
+ "user": "//twitter.com/\u0002\u0001168"
+ }
+ },
+ "rv": "//www.thewanderingrv.com/search/\u0002\u00010",
+ "eak": {
+ "*": "//tweakers.net/zoeken/?keyword=\u0002\u000113",
+ "ers": "//tweakers.net/nieuws/zoeken/?keyword=\u0002\u0001105"
+ },
+ "eet": "//mobile.twitter.com/search?q=\u0002\u000188",
+ "ich": "http://www.twitch.tv/search?query=\u0002 \u0001134",
+ "iki": "http://trove.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "met": "//www.twitchmetrics.net/search?q=\u0002\u00014",
+ "user": "//twitter.com/search/users?q=\u0002\u000110"
+ },
+ "x": {
+ "i": "http://www.ti.com/sitesearch/docs/universalsearch.tsp?searchTerm=\u0002\u00010",
+ "*": "http://search2.tv-tokyo.co.jp/pc/?enc=UTF-8&q=\u0002\u00010"
+ },
+ "y": {
+ "d": {
+ "a": {
+ "*": "http://tyda.se/search?w=\u0002\u0001219",
+ "de": "http://tyda.se/search/\u0002?lang%5B0%5D=de&lang%5B1%5D=sv\u00010",
+ "la": "http://tyda.se/search/\u0002?lang%5B0%5D=la&lang%5B1%5D=sv\u00010"
+ },
+ "*": "http://tyda.se/search/\u0002?lang%5B0%5D=en&lang%5B1%5D=fr&lang%5B2%5D=de&lang%5B3%5D=es&lang%5B4%5D=la&lang%5B5%5D=nb&lang%5B6%5D=da&lang%5B7%5D=sv\u00010"
+ },
+ "*": "//www.youtube.com/results?search_query=\u0002\u00011646",
+ "ndale": "//www.tyndale.com/search?q=\u0002&f=\u00010",
+ "pescript": "http://duckduckgo.com/?q=\u0002+site:www.typescriptlang.org\u000120",
+ "po3": "//typo3.org/search/?tx_solr[q]=\u0002\u00010",
+ "url": "//tinyurl.com/create.php?source=indexpage&url=\u0002&submit=Make+TinyURL%21&alias= \u00010"
+ },
+ "z": "http://www.timeanddate.com/worldclock/results.html?query=\u0002\u000120",
+ "2g": "http://www.time2game.be/index.php?main_page=advanced_search_result&search_in_description=1&keyword=\u0002\u00010",
+ "2w": "//\u0002.tor2web.org/\u00010",
+ "3n": "http://t3n.de/search?q=\u0002\u00019",
+ "åg": "//www.trafikverket.se/trafikinformation/tag/?&TrainOrStation=\u0002\u00010",
+ "ga": {
+ "*": "//search.tga.gov.au/s/search.html?collection=tga-websites-web&query=\u0002&op=Search\u00010",
+ "te": "http://tolkiengateway.net/wiki/Special:Search?search=\u0002&go=Go\u00010"
+ },
+ "gc": "http://www.thegreatcourses.com/search/result/?q=\u0002\u00010",
+ "gd": {
+ "b": "http://thegamesdb.net/search/?string=\u0002&function=Search\u00010",
+ "*": "//tgd.kr/search?q=\u0002\u000126",
+ "ict": "//tangorin.com/words?search=\u0002\u00010"
+ },
+ "ge": "//translate.ge/word/\u0002\u00018",
+ "gr": "http://tangorin.com/general/\u0002\u000137",
+ "gs": "//tgstation13.org/wiki//index.php?search=\u0002&title=Special%3ASearch\u000123",
+ "gt": {
+ "*": "//www.target.com/s?searchTerm=\u0002\u000118",
+ "au": "//www.target.com.au/search?text=\u0002\u00010"
+ },
+ "hb": "//thwiki.cc/%E7%89%B9%E6%AE%8A:%E6%90%9C%E7%B4%A2?search=\u0002&go=%E5%89%8D%E5%BE%80&searchToken=d3hpaqueyzu0cl5im2izrofz8\u00010",
+ "hg": {
+ "*": "http://www.thingiverse.com/search?q=\u0002&sa=\u000138",
+ "w": "http://tonyhawkgames.wikia.com/wiki/Special:Search?search=\u0002\u00010"
+ },
+ "hj": "//suche.thulb.uni-jena.de/Search/Results?lookfor=\u0002\u00010",
+ "hm": {
+ "e": "//www.thomann.de/es/search_dir.html?sw=\u0002&smcs=80cfba\u00010",
+ "*": "http://www.thomann.de/de/search_dir.html?sw=\u0002\u000114",
+ "ods": "http://thmods.com/forum/search.php?keywords=\u0002\u00010"
+ },
+ "hp": "http://www.huffingtonpost.com/search.php/?q=\u0002\u00010",
+ "hr": {
+ "*": "//www.hollywoodreporter.com/search/\u0002\u00010",
+ "ee": "http://www.three.co.uk/Search/?q=\u0002\u00010",
+ "ead": "//threadreaderapp.com/search?q=\u0002\u000117",
+ "iftb": "//www.thriftbooks.com/browse/?b.search=\u0002\u00010",
+ "iftyfoods": "//www.thriftyfoods.com/search?k=\u0002\u00010",
+ "ive": "//thrivemarket.com/search/results?filter%5Bsearch%5D=\u0002\u00010",
+ "ustcurve": "http://www.thrustcurve.org/motorsearch.jsp?designation=\u0002\u00010"
+ },
+ "hw": {
+ "*": "http://en.touhouwiki.net/index.php?title=Special:Search&search=\u0002\u000113",
+ "ack": "//thwack.solarwinds.com/search.jspa?q=\u0002\u00010",
+ "iki": "http://en.touhouwiki.net/index.php?title=Special%3ASearch&search=\u0002\u000116"
+ },
+ "ki": "//trakt.tv/search/imdb?query=\u0002\u00010",
+ "kk": {
+ "*": "http://tradukka.com/translate/en/\u0002\u00010",
+ "2es": "http://tradukka.com/translate/es/\u0002\u00010",
+ "rlab": "http://tkkrlab.nl/wiki/Special:Search?search=\u0002&go=Go\u00010"
+ },
+ "km": "http://trakt.tv/search/movies?q=\u0002\u00014",
+ "ko": "//trovu.komun.org/?q=\u0002&categories=general&language=en-US\u00010",
+ "ks": "http://trakt.tv/search/shows?q=\u0002\u00014",
+ "kw": "//www.thomas-krenn.com/de/wiki/Spezial:Suchergebnisseite?type=mediawiki_page&q=\u0002\u00010",
+ "oa": "//theorangealliance.org/teams/\u0002\u000138",
+ "of": "http://www.tolweb.org/tree/\u0002\u00010",
+ "oi": {
+ "*": "http://timesofindia.indiatimes.com/topic/\u0002\u000136",
+ "con": "http://www.toicon.com/icons?query=\u0002\u00010"
+ },
+ "ok": {
+ "*": "http://tomeofknowledge.info/?q=\u0002\u00010",
+ "manni": "//www.tokmanni.fi/catalogsearch/result/?q=\u0002\u00010",
+ "obagus": "http://www.olx.co.id/halaman/mencari/\u0002/search\u00019",
+ "opedia": "//www.tokopedia.com/search?q=\u0002\u000176",
+ "yonoise": "http://www.tokyonoise.net/cerca.php?s=\u0002&p=1\u00010"
+ },
+ "ol": {
+ "*": "http://tolweb.org/tree/home.pages/search.html?q=\u0002&sa=Search\u00010",
+ "kien": {
+ "*": "http://tolkiengateway.net/wiki/Special:Search?search=\u0002\u00015",
+ "gateway": "http://tolkiengateway.net/wiki/Special:Search?search=\u0002\u00015"
+ }
+ },
+ "om": {
+ "e": "//te4.org/w/index.php?search=\u0002\u00010",
+ "*": "//tomwoods.com/search/\u0002/\u00015",
+ "shw": "http://www.tomshardware.com/s/\u0002/\u00010",
+ "shardware": "http://www.tomshardware.com/s/\u0002\u00010"
+ },
+ "on": {
+ "*": "//tontonroger.org/?q=\u0002\u00010",
+ "ton": "//tontonroger.org/?q=\u0002\u00010",
+ "ymacx86": "//www.tonymacx86.com/search/48223690/?q=\u0002&o=date\u00010"
+ },
+ "op": {
+ "l": "//pl.bab.la/slownik/angielski-polski/\u0002\u000131",
+ "*": "//www.techopedia.com/search?q=\u0002&section=all\u00018",
+ "ed": "//www.tokopedia.com/search?st=product&q=\u0002\u0001238",
+ "achat": "http://www.topachat.com/pages/recherche.php?mc=\u0002\u000110",
+ "geek": "http://www.topgeek.net/fr/recherche?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=Rechercher\u00010",
+ "hatter": "//tophatter.com/catalogs/search?utf8=%E2%9C%93&category=&query=\u0002\u00010",
+ "preise": "http://www.toppreise.ch/index.php?search=\u0002&res=OK\u000153",
+ "shop": "http://us.topshop.com/webapp/wcs/stores/servlet/CatalogNavigationSearchResultCmd?langId=-1&storeId=13052&catalogId=33060&beginIndex=1&viewAllFlag=false&pageSize=20&sort_field=Relevance&searchTerm=\u0002\u00010",
+ "tenrevs": "//www.toptenreviews.com/search/?q=\u0002\u00010"
+ },
+ "or": {
+ "i": "//www.tori.fi/koko_suomi?q=\u0002\u000181",
+ "*": "//\u0002.tor2web.org/\u00010",
+ "ob": "//torob.com/search/?query=\u0002\u00010",
+ "amp": "http://www.toramp.com/search.php?search=\u0002\u00014",
+ "atlas": "//atlas.torproject.org/#search/\u0002\u00010",
+ "rentfreak": "http://torrentfreak.com/search/\u0002\u000120",
+ "wiki": "//trac.torproject.org/projects/tor/search?q=\u0002 \u00014"
+ },
+ "oy": {
+ "*": "//protinkertoys.com/search?type=product&q=\u0002\u00010",
+ "s": "//kidultkingdom.com/?s=\u0002\u00010"
+ },
+ "-p": "http://www.telemark-pyrenees.com/en/search.php?keywords=\u0002\u00010",
+ "hai": {
+ "l": "//thailyrics.top/results/?q=\u0002\u00010",
+ "*": "http://www.thai-language.com/default.aspx?search=\u0002\u00010"
+ },
+ "halia": "//www.thalia.de/suche?sq=\u0002\u000150",
+ "hdb": "//thronesdb.com/find?q=\u0002\u00010",
+ "hen": {
+ "*": "//translate.google.com/#th/en/\u0002\u00010",
+ "oun": {
+ "*": "//thenounproject.com/search/?q=\u0002\u000115",
+ "project": "//thenounproject.com/search/?q=\u0002\u000115"
+ }
+ },
+ "hes": {
+ "*": "http://www.thesaurus.com/browse/\u0002\u0001322",
+ "es": {
+ "*": "http://www.theses.fr/?q=\u0002\u00010",
+ "sion": "//thesession.org/tunes/search?type=&mode=&q=\u0002\u00010"
+ },
+ "aurus": {
+ "*": "//www.thesaurus.com/browse/\u0002?s=t\u0001938",
+ "de": "//www.openthesaurus.de/synonyme/\u0002\u000133"
+ },
+ "etel": "//tel.archives-ouvertes.fr/search/index/?q=\u0002\u00010",
+ "ource": "http://www.thesource.ca/en-ca/search/?text=\u0002&search_submit=\u00010",
+ "tar": "//www.thestar.com/search.html?q=\u0002\u00010"
+ },
+ "heage": "//www.theage.com.au/search?text=\u0002\u000118",
+ "heatlantic": "http://www.theatlantic.com/search/?q=\u0002 \u00014",
+ "heatricalia": "//theatricalia.com/search?q=\u0002\u00010",
+ "heaustralian": "//www.theaustralian.com.au/search-results?q=\u0002\u00010",
+ "heblaze": "//www.theblaze.com/search/?q=\u0002\u00010",
+ "hebrick": "//www.thebrick.com/pages/search-results?limit=48&q=\u0002\u00010",
+ "hecheckeredflag": "http://www.thecheckeredflag.co.uk/?s=\u0002 \u00010",
+ "hecolumbian": "http://www.columbian.com/search/?q=\u0002\u00010",
+ "hecrag": "//www.thecrag.com/nodes/fuzzy-search/\u0002?S=\u0002&ST=w\u00013",
+ "hedonald": "//www.reddit.com/r/the_donald/search?q=\u0002&restrict_sr=on&sort=relevance&t=all\u00010",
+ "hefastmode": "http://www.thefastmode.com/site-search?q=\u0002\u00010",
+ "hefella": "//thefella.com/search?q=\u0002\u00010",
+ "hefreedictionary": "http://www.thefreedictionary.com/\u0002\u00011081",
+ "hefunny": "//www.thefunny.in/?s=\u0002\u00010",
+ "hefutoncritic": "http://www.thefutoncritic.com/search.aspx?q=\u0002&type=titles\u00010",
+ "hegloor": "//thegloor.com/?s=\u0002\u00010",
+ "hegreat": "//www.thegreat.uk/?s=\u0002\u00010",
+ "hehackernews": "//www.google.com/cse?q=test&cx=partner-pub-7983783048239650%3A3179771210#gsc.tab=0&gsc.q=\u0002&gsc.page=1\u00015",
+ "hehdroom": "//www.thehdroom.com/?s=\u0002\u00013",
+ "hehimalayantimes": "//thehimalayantimes.com/?s=\u0002\u00010",
+ "hehindu": "//www.thehindu.com/search/?q=\u0002\u00010",
+ "heitdepot": "//www.theitdepot.com/search.html?keywords=\u0002\u00010",
+ "hemeforest": "http://themeforest.net/search?utf8=%E2%9C%93&term=\u0002\u00010",
+ "hemighty": "//www.themighty.com/search/?search=\u0002\u00010",
+ "hemoviedb": "http://www.themoviedb.org/search?query=\u0002\u000130",
+ "heonion": "http://www.theonion.com/search/?q=\u0002&x=0&y=0\u00013",
+ "heorytab": "//www.hooktheory.com/theorytab/results?path=\u0002\u00010",
+ "heregister": "http://search.theregister.co.uk/?q=\u0002&advanced=1&author=&date=the+dawn+of+time&site=all+The+Register+sites&results_per_page=100\u00010",
+ "hermatru": "//www.thermatru.com/search/?q=\u0002\u00010",
+ "hetoptens": "http://www.thetoptens.com/search.asp?q=\u0002&cx=partner-pub-5900458016987292%3Agdkm434o44o&cof=FORID%3A9&ie=ISO-8859-1&siteurl=www.thetoptens.com%2F%3Fq%3Da&ref=&ss=421j55697j9\u00010",
+ "hetvdb": "//www.thetvdb.com/search?q=\u0002&l=en\u000113",
+ "heverge": "http://www.theverge.com/search?q=\u0002\u000122",
+ "heweek": "http://www.theweek.co.uk/search/site/\u0002\u00010",
+ "hewebflash": "//www.thewebflash.com/?s=\u0002\u00010",
+ "heyarddr": "http://theyarddr.com/?s=\u0002\u00010",
+ "heyworkforyou": "http://www.theyworkforyou.com/search/?q=\u0002\u00010",
+ "hing": {
+ "*": "//www.thingiverse.com/search?q=\u0002\u0001259",
+ "y": "//www.thingiverse.com/search?q=\u0002\u0001259",
+ "iverse": "http://www.thingiverse.com/search?cx=015525747728168968820%3Arqnsgx1xxcw&cof=FORID%3A9&q=\u0002\u0001272"
+ },
+ "hilina": "//thilina.piyasundara.org/search?q=\u0002\u00010",
+ "hinktutorial": "http://thinktutorial.com/index.php?s=\u0002\u00010",
+ "hinkwiki": {
+ "*": "http://www.thinkwiki.org/w/index.php?search=\u0002&go=Go&title=Special%3ASearch\u00010",
+ "de": "http://thinkwiki.de/index.php?search=\u0002\u00010"
+ },
+ "hislife": "//www.thisamericanlife.org/archive?keyword=\u0002\u00010",
+ "hnuernberg": "//www.th-nuernberg.de/suche/?id=1&L=0&q=\u0002\u00010",
+ "homann": "http://www.thomann.de/de/search_dir.html?sw=\u0002\u000114",
+ "honky": "//www.thonky.com/search.php?q=\u0002\u00010",
+ "horiummod": "//thoriummod.gamepedia.com/index.php?search=\u0002\u00010",
+ "horlabs": "http://www.thorlabs.de/search/thorsearch.cfm?search=\u0002\u000122",
+ "horne": "//www.thorne.com/search?q=\u0002\u00010",
+ "houghtco": "//www.thoughtco.com/search?q=\u0002\u00010",
+ "housand": "http://www.thousand-sunny.org/?s=\u0002\u00010",
+ "kpd": "//www.tokopedia.com/search?q=\u0002\u000176",
+ "ockdom": "http://wiki.tockdom.com/w/index.php?title=Special%3ASearch&search=\u0002&fulltext=Search\u00010",
+ "odoist": "//todoist.com/app?lang=en#agenda%2F\u0002 \u00016",
+ "odonoticias": "http://tn.com.ar/buscar/\u0002\u00010",
+ "oogit": "//www.toogit.com/find-freelance-jobs?JobSearch%5Bsearch_text%5D=\u0002\u00010",
+ "oogles": "http://toogl.es/#/search/\u0002\u00010",
+ "ookapic": "//stock.tookapic.com/search?q=\u0002\u00010",
+ "oolslib": "//toolslib.net/search/projects/?q=\u0002\u00013",
+ "ost": {
+ "*": "//toster.ru/search?q=\u0002\u00010",
+ "ar": "//www.thestar.com/search.html?q=\u0002\u00010"
+ },
+ "osdr": "//tosdr.org/#search=\u0002\u000131",
+ "oswikia": "http://towerofsaviors.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010",
+ "otalcmd": "http://www.totalcmd.net/search.php?s=\u0002\u00010",
+ "outs": "//www.touts.com.br/arts?search=\u0002\u00010",
+ "oucharcade": "http://toucharcade.com/?s=\u0002\u00010",
+ "ouhou": "http://en.touhouwiki.net/index.php?search=\u0002 \u0001122",
+ "ourindo": "//www.touristindonesia.tk/search?q=\u0002\u00010",
+ "ouslesprix": "//www.touslesprix.com/achat,\u0002.html\u00010",
+ "outvendre": "//www.toutvendre.fr/s?k=\u0002\u00010",
+ "oxif": "//www.toxif.com/tags/\u0002 \u00017",
+ "üren": "//tuerenmarkt24.de/suche?controller=search&orderby=position&orderway=desc&search_query=deur\u0002\u00010"
+ },
+ "u": {
+ "b": {
+ "*": "//gu-se-primo.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&tab=default_tab&search_scope=default_scope&vid=46GUB_VU1&lang=sv_SE&offset=0\u000139",
+ "h": {
+ "d": "http://www.ub.uni-heidelberg.de/suche/suche.html?cx=009778813800417314295%3Af3s5sfjqeck&cof=FORID%3A10&ie=UTF-8&q=\u0002&sa=Suche\u00010",
+ "h": "//beluga.sub.uni-hamburg.de/vufind/Search/Results?lookfor=\u0002&submitForm=Suchen&library=BELUGA_ALL\u00010",
+ "u": "//duckduckgo.com/?q=\u0002+site:ubuntu.hu\u00010",
+ "*": "//www.youbehero.com/gr/search/causes?loose_type=1&term=\u0002\u00010"
+ },
+ "l": "//katalog.ub.uni-leipzig.de/Search/Results?lookfor=\u0002\u00010",
+ "t": "//rds-tue.ibs-bw.de/opac/RDSIndex/Search?lookfor=\u0002\u00010",
+ "u": {
+ "*": "http://search.freefind.com/find.html?si=61902956&pid=r&n=0&_charset_=UTF-8&bcd=%C3%B7&query=\u0002\u00010",
+ "fr": "//duckduckgo.com/?q=site%3Aubuntu-fr.org+\u0002&ia=web\u00010",
+ "ntu": {
+ "f": {
+ "r": "//www.google.fr/search?q=\u0002+site%3Aubuntu-fr.org&gws_rd=ssl\u00010",
+ "*": "http://ubuntuforums.org/search.php?do=process&query=\u0002\u00013",
+ "orums": "http://ubuntuforums.org/search.php?do=process&query=\u0002\u00013"
+ },
+ "*": "//www.ubuntu.com/search?q=\u0002\u000133",
+ "tr": "http://forum.ubuntu-tr.net/index.php?action=search;q=\u0002\u00010",
+ "china": "//forum.ubuntu.org.cn/search.php?keywords=\u0002\u00010",
+ "pack": "http://packages.ubuntu.com/search?keywords=\u0002\u000174",
+ "users": "http://ubuntuusers.de/search/?query=\u0002&area=all\u00010",
+ "wikide": "http://duckduckgo.com/?q=site%3Awiki.ubuntuusers.de+\u0002\u00014"
+ }
+ },
+ "fr": "//katalog.ub.uni-freiburg.de/opac/RDSIndex/Search?lookfor=\u0002&source=homepage\u00010",
+ "ks": "//hds.hebis.de/ubks/Discover/EBSCO?lookfor=\u0002 \u00010",
+ "clib": "http://ubc.summon.serialssolutions.com/search?s.cmd=addFacetValueFilters%28ContentType%2CNewspaper+Article%3At%29&spellcheck=true&s.q=\u0002\u00010",
+ "ergizmo": "http://www.ubergizmo.com/search/?q=\u0002\u00010",
+ "erspace": "//wiki.uberspace.de/start?do=search&id=\u0002\u00010",
+ "iquiti": "//community.ubnt.com/t5/forums/searchpage/tab/message?q=\u0002\u00010",
+ "jgu": "//hds.hebis.de/ubmz/Search/Results?lookfor=\u0002&trackSearchEvent=Einfache+Suche&type=allfields&search=new&submit=Suchen\u00010",
+ "ottu": "http://ubottu.com/factoids.cgi?search=\u0002\u00010"
+ },
+ "c": {
+ "d": "//www.ucdavis.edu/search/google/\u0002\u00013",
+ "f": {
+ "l": "//search.ucf.edu/#?q=\u0002\u00010",
+ "*": "http://www.mclean.net.nz/ucf/?q=\u0002\u00010"
+ },
+ "i": "//www.uci.org/search?q=\u0002\u00010",
+ "l": {
+ "*": "//search2.ucl.ac.uk/s/search.html?query=\u0002&collection=website-meta&profile=_website&tab=websites&submit=Go\u00010",
+ "lib": "//ucl-new-primo.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&offset=0&tab=local&vid=UCL_VU2&search_scope=CSCOP_UCL\u00010"
+ },
+ "t": "http://unicode-table.com/search/?q=\u0002\u000115",
+ "*": "//catalog.lib.uchicago.edu/vufind/Search/Results?lookfor=\u0002&type=AllFields\u00010",
+ "v": "http://vancouverunitarians.ca/?s=\u0002\u00014",
+ "hi": "//catalog.lib.uchicago.edu/vufind/Search/Results?lookfor=\u0002 &type=AllFields\u00010",
+ "ern": "//search.ucern.com/search?cp=connect&q=\u0002\u00010",
+ "hamp": "//u.gg/lol/champions/\u0002\u00010",
+ "pjp": "http://ja.uncyc.org/index.php?search=\u0002\u00010",
+ "scgb": "http://www.genome.ucsc.edu/cgi-bin/hgTracks?hgsid=592541357_hq8TArn5c0CoLwcXM3n3eZOaR8ZC&org=Human&db=hg38&position=\u0002&pix=800\u00010"
+ },
+ "d": {
+ "*": "//www.urbandictionary.com/define.php?term=\u0002\u00015958",
+ "ev": "//developer.ubuntu.com/en/search/?q=\u0002\u00010",
+ "emy": "//www.udemy.com/courses/search/?q=\u0002\u0001204"
+ },
+ "g": {
+ "g": "//u.gg/opensearch/?query=\u0002\u0001513",
+ "o": "http://www.ugodecoracion.com/buscar?controller=search&orderby=position&orderway=desc&search-cat-select=0&search_query=\u0002&submit_search=\u00010",
+ "r": "http://www.ugr.es/pages/search?query=\u0002\u00010",
+ "*": "//www.ultimate-guitar.com/search.php?search_type=title&value=\u0002\u0001764"
+ },
+ "h": "//www.uhasselt.be/google-search?q=\u0002\u00016",
+ "l": {
+ "b": {
+ "*": "//cibleplus.ulb.ac.be/primo-explore/search?query=any,contains,\u0002&tab=default_tab&search_scope=default_scope&vid=32ULB_VU1&lang=fr_FR&offset=0\u00010",
+ "d": {
+ "a": "//hds.hebis.de/ulbda/Search/Results?lookfor= \u0002&service=catalog\u00010",
+ "*": "//katalog.ulb.hhu.de/Search/Results?lookfor=\u0002&type=AllFields\u00010"
+ },
+ "h": "//hds.hebis.de/ulbda/Search/Results?lookfor=\u0002&service=catalog\u00010"
+ },
+ "*": "//www.ulule.com/discover/?q=\u0002\u00010",
+ "ta": "http://www.ulta.com/ulta/a/_/Ntt-\u0002/Nty-1?Dy=1&ciSelector=searchResults\u00010",
+ "abox": "//www.ulabox.com/busca?q=\u0002\u00010",
+ "ine": "//www.uline.com/Product/AdvSearchResult?keywords=\u0002\u00010",
+ "timate-guitar": "//www.ultimate-guitar.com/search.php?search_type=title&value=\u0002\u0001764",
+ "timateguitar": "//www.ultimate-guitar.com/search.php?search_type=title&value=\u0002\u0001764",
+ "trastares": "http://ultrastar-es.org/en/canciones?busqueda=\u0002\u00010",
+ "udagsozluk": "http://www.uludagsozluk.com/?q=\u0002\u00010"
+ },
+ "n": {
+ "e": {
+ "*": "//www.une.edu.au/search?collection=une-meta&query=\u0002\u00010",
+ "scowhc": "http://whc.unesco.org/en/search/?criteria=\u0002\u00010"
+ },
+ "i": {
+ "c": {
+ "*": "//unicode-table.com/en/search/?q=\u0002\u000117",
+ "at": "http://unicat.be/uniCat?func=search&language=en&fromWeb=1&formQuery=\u0002\u00010",
+ "ef": "http://www.unicef.org/search/search.php?q_en=\u0002\u00010",
+ "ode": {
+ "*": "http://www.fileformat.info/info/unicode/char/search.htm?q=\u0002&preview=entity\u000170",
+ "party": "http://unicode.party/?query=\u0002\u00010",
+ "table": "http://unicode-table.com/en/search/?q=\u0002\u000113"
+ }
+ },
+ "*": "http://unicode-search.net/unicode-namesearch.pl?term=\u0002\u000116",
+ "x": {
+ "*": "http://minnie.tuhs.org/cgi-bin/utree.pl?filesearch=\u0002&submit=Go\u00010",
+ "how": "//unixhow.com/search?q=\u0002\u00010"
+ },
+ "gö": "http://www.uni-goettingen.de/de/suche.html?query=\u0002\u00010",
+ "ma": "//www.uni-mannheim.de/suche/?tx_solr%5Bq%5D=\u0002\u00010",
+ "mc": "http://www.unimc.it/@@search?SearchableText=\u0002\u00010",
+ "ty": {
+ "m": "http://docs.unity3d.com/Manual/30_search.html?q=\u0002\u00019",
+ "*": "http://unity3d.com/search?gq=\u0002 \u000114",
+ "sr": "http://docs.unity3d.com/ScriptReference/30_search.html?q=\u0002\u00015",
+ "ans": {
+ "*": "http://unity3d.com/search?refinement=answers&gq=\u0002 \u00010",
+ "wers": "http://answers.unity3d.com/search.html?q=\u0002\u00010"
+ },
+ "api": "http://docs.unity3d.com/ScriptReference/30_search.html?q=\u0002 \u000117",
+ "ast": "//www.assetstore.unity3d.com/en/#!/search/page=1/sortby=relevance/query=\u0002\u00010"
+ },
+ "lad": "//www.unilad.co.uk/search/\u0002\u00010",
+ "prot": "http://www.uniprot.org/uniprot/?query=\u0002\u000123",
+ "qlo": "//www.uniqlo.com/us/en/search/?q=\u0002&lang=default\u00013",
+ "salib": "http://search.library.unisa.edu.au/?query=any,contains,\u0002\u00010",
+ "versalis": "//www.universalis.fr/recherche/q/\u0002\u00013",
+ "vie": "http://ufind.univie.ac.at/en/search.html?query=\u0002\u00010",
+ "wiki": "//wiki.eveuniversity.org/index.php?title=Special%3ASearch&search=\u0002&button=\u00010",
+ "zar": "http://www.unizar.es/search/node/\u0002\u00010"
+ },
+ "m": "http://search.unm.edu/search?q=\u0002\u00010",
+ "p": {
+ "*": "http://www.unp.me/search/1/?q=\u0002\u00010",
+ "kg": "//unpkg.com/\u0002\u00017"
+ },
+ "s": {
+ "*": "//unsplash.com/search/photos/\u0002\u00015",
+ "pl": {
+ "s": "//unsplash.com/search/photos/\u0002\u00015",
+ "*": "//unsplash.com/search?utf8=✓&keyword=\u0002\u0001266",
+ "ash": "//unsplash.com/search?utf8=✓&keyword=\u0002\u0001266"
+ },
+ "een64": "http://www.unseen64.net/?s=\u0002\u00010",
+ "horten": "//unshorten.me/s/\u0002\u00018",
+ "pider": "http://www.un-spider.org/search/apachesolr_search/\u0002\u00010"
+ },
+ "*": "http://search.un.org/search?ie=utf8&site=un_org&output=xml_no_dtd&client=UN_Website_en&num=10&lr=lang_en&proxystylesheet=UN_Website_en&oe=utf8&q=\u0002&Submit=Go\u00019",
+ "v": "http://unvis.it/\u0002\u00010",
+ "cg": "http://search.uncg.edu/search?q=\u0002&site=default_collection&client=default_frontend&output=xml_no_dtd&proxystylesheet=default_frontend\u00010",
+ "ja": "http://ja.uncyclopedia.info/wiki/\u0002\u00010",
+ "bri": "http://repositorio.unb.br/simple-search?query=\u0002&submit=Ir\u00010",
+ "clib": "//library.unc.edu/find/combinedresults/?Ntt=\u0002&Ntk=Keyword\u00013",
+ "cyc": {
+ "*": "//en.uncyclopedia.co/w/index.php?search=\u0002\u000117",
+ "lopedia": "http://uncyclopedia.wikia.com/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010"
+ },
+ "dertale": "http://undertale.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u000125",
+ "derwear": "//www.calida.com/search/#/q/\u0002\u00010",
+ "fpa": "http://www.unfpa.org/search/node/\u0002 \u00010",
+ "hcr": "//duckduckgo.com/?q=\u0002+site:http://www.unhcr.org/\u00010",
+ "kompliziert": "//unkompliziert.eu/index.php?search=\u0002\u00010",
+ "limitedbr": "//www.amazon.com.br/s/ref=sr_nr_p_n_feature_nineteen_0?fst=as%3Aoff&rh=n%3A5308307011%2Ck%3Athoth+tarot%2Cp_n_feature_nineteen_browse-bin%3A9365943011&bbn=5308307011&keywords=\u0002&ie=UTF8&qid=1485791277&rnid=9365942011\u00010",
+ "notchslayer1yt": "//www.youtube.com/channel/UCBX3P-QmXmCgWmCU2Mqt9sg/search?query=\u0002\u00010",
+ "ogs": "http://unogs.com/search/?q=\u0002\u00013",
+ "omaha": "//www.unomaha.edu/search/?q=\u0002\u00010",
+ "realengine": "//docs.unrealengine.com/en-us/Search-Results?Search=\u0002\u00010",
+ "tappd": "//untappd.com/search?q=\u0002 \u000131",
+ "term": "http://untermportal.un.org/search/\u0002\u00010",
+ "tergang": "http://untergang.de/index.php?option=search&searchword=\u0002\u00010",
+ "wiki": "http://uncyclopedia.wikia.com/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "xprn": "//www.reddit.com/r/unixporn/search?q=\u0002&restrict_sr=1\u000179"
+ },
+ "p": {
+ "c": "http://www.upcdatabase.com/item/\u0002\u00010",
+ "s": {
+ "*": "//wwwapps.ups.com/WebTracking/processInputRequest?tracknum=\u0002&\u0001504",
+ "es": "//www.ups.com/track?loc=es_ES&tracknum=\u0002\u00010"
+ },
+ "*": "http://packages.ubuntu.com/search?keywords=\u0002&searchon=names\u000142",
+ "kg": "//launchpad.net/ubuntu/+source/\u0002\u000119",
+ "ng": "http://www.upng.ac.pg/site/component/search/?searchword=\u0002&searchphrase=all&Itemid=101\u00010",
+ "ackages": "http://packages.ubuntu.com/search?keywords=\u0002&searchon=names&suite=all&section=all\u000113",
+ "down": "//downforeveryoneorjustme.com/\u0002\u00015",
+ "labs": "http://www.uplabs.com/search?q=\u0002\u00010",
+ "todate": "http://www.uptodate.com/contents/search?search=\u0002\u000152",
+ "todown": "//en.uptodown.com/android/search/\u0002\u00010",
+ "work": "//www.upwork.com/o/jobs/browse/?q=\u0002\u000118"
+ },
+ "q": {
+ "l": "//search.library.uq.edu.au/primo-explore/search?query=any,contains,\u0002&tab=61uq_all&search_scope=61UQ_All&sortby=rank&vid=61UQ&offset=0\u00013",
+ "m": "http://wiki.uqm.stack.nl/index.php?search=\u0002\u00010",
+ "*": "http://wiki.uqm.stack.nl/script/index.php?search=\u0002&go=Go&title=Special%3ASearch\u00010"
+ },
+ "r": {
+ "*": "http://suche.uni-regensburg.de/index.php?q=\u0002\u00014",
+ "ban": {
+ "*": "//www.urbandictionary.com/define.php?term=\u0002\u00015958",
+ "fx": "http://urbaneffect.net/?s=\u0002\u00010",
+ "dictionary": "//www.urbandictionary.com/define.php?term=\u0002\u00015958"
+ },
+ "baani": "http://urbaanisanakirja.com/search/?q=\u0002\u00013",
+ "bout": "http://www.urbanoutfitters.com/fr/catalog/search.jsp?q=\u0002\u00010",
+ "ealms": {
+ "*": "//wiki.urealms.com/index.php?search=\u0002\u00010",
+ "forums": "//forums.urealms.com/search?Search=\u0002\u00010"
+ },
+ "eka": "//www.ureka.org/search?loader=1&q=\u0002\u00010",
+ "lquery": "http://urlquery.net/search.php?q=\u0002&type=string&max=50\u00010",
+ "lscan": "//urlscan.io/search/#\u0002\u00017",
+ "lvoid": "http://www.urlvoid.com/scan/\u0002\u00010"
+ },
+ "s": {
+ "a": {
+ "l": "http://www.usal.es/webusal/usal_buscador?query=\u0002\u00010",
+ "*": "//search.usa.gov/search?utf8=✓&affiliate=usagov&query=\u0002\u000117",
+ "spending": "http://www.usaspending.gov/search?form_fields=%7B%22search_term%22%3A%22\u0002%22%7D\u00010",
+ "today": "http://www.usatoday.com/search/\u0002/\u00013"
+ },
+ "c": {
+ "*": "//apps.ubuntu.com/cat/search/?q=\u0002 \u00010",
+ "hess": "http://www.uschess.org/datapage/player-search.php?name=\u0002&state=ANY&ratingmin=&ratingmax=&order=N&rating=R&mode=Find\u00010",
+ "lib": "//usc-primo.hosted.exlibrisgroup.com/primo-explore/search?institution=01USC_INST&vid=01USC&mode=Basic&facet=&displayMode=full&bulkSize=25&highlight=true&dum=true&query=any,contains,\u0002&displayField=all&pcAvailabiltyMode=true&sortby=rank&lang=en_US\u00010",
+ "ript": "http://docs.unity3d.com/Documentation/ScriptReference/30_search.html?q=\u0002\u000110"
+ },
+ "e": {
+ "d": {
+ "*": "//www.machineseeker.com/fy/inserat/inseratliste/index?stichwort=\u0002&submit=\u00014",
+ "victoria": "http://www.usedvictoria.com/classifieds/all?description=\u0002\u00010"
+ },
+ "*": "http://unix.stackexchange.com/search?q=\u0002 \u00014",
+ "galaxy": "//galaxyproject.org/search/?q=\u0002\u00010",
+ "rbench": "http://www.userbenchmark.com/Search?searchTerm=\u0002\u000114",
+ "rstyles": "http://userstyles.org/styles/browse/all/\u0002\u00010"
+ },
+ "q": "//usq.summon.serialssolutions.com/search?s.q=\u0002 \u00010",
+ "r": "//docs.unity3d.com/ScriptReference/30_search.html?q=\u0002\u000117",
+ "*": "//userstyles.org/styles/browse?search_terms=\u0002\u00010",
+ "da": "//ndb.nal.usda.gov/ndb/search/list?SYNCHRONIZER_TOKEN=f84a82f2-08ef-411f-a08f-2ae87edece78&SYNCHRONIZER_URI=%2Fndb%2Fsearch%2Flist&qt=&qlookup=\u0002&ds=&manu=\u00010",
+ "ps": "//tools.usps.com/go/TrackConfirmAction?qtc_tLabels1=\u0002\u0001954",
+ "yd": {
+ "l": {
+ "*": "//usyd.summon.serialssolutions.com/search?q=\u0002\u00010",
+ "ib": "http://opac.library.usyd.edu.au/search/?searchtype=X&SORT=D&searcharg=\u0002&searchscope=4&submit=Submit\u00010"
+ },
+ "*": "http://sydney.edu.au/s/search.html?collection=Usyd&query=\u0002\u00010"
+ },
+ "d2brl": "//www.xe.com/currencyconverter/convert/?Amount=\u0002&From=USD&To=BRL\u00010",
+ "d2cop": "http://www.xe.com/currencyconverter/convert/?From=USD&To=COP&Amount=\u0002\u00010",
+ "d2eur": "http://www.xe.com/currencyconverter/convert/?From=USD&To=EUR&Amount=\u0002\u00015",
+ "d2gbp": "http://www.xe.com/currencyconverter/convert/?Amount=\u0002&From=USD&To=GBP\u00010",
+ "ite": "http://usite.hu/\u0002\u00010",
+ "mint": "http://search.usmint.gov/search?affiliate=usmint.gov&formFocused=0&query=\u0002\u00010",
+ "open": "//www.usopen.org/en_US/search/results.html?query=\u0002\u00010",
+ "tyles": "//userstyles.org/styles/browse?search_terms=\u0002\u00010"
+ },
+ "t": {
+ "a": {
+ "*": "http://www.uta.edu/search/?q=\u0002\u00010",
+ "ite": "http://utaitedb.net/Search?filter=\u0002\u00010"
+ },
+ "k": "//utk-almaprimo.hosted.exlibrisgroup.com/primo-explore/search?vid=01UTK&institution=01UTK&facet=rtype,exclude,reviews&facet=rtype,exclude,reference_entrys&search_scope=OneSearch&tab=default_tab&onCampus=false&group=GUEST&query=any,contains,\u0002&lang=en_US\u00010",
+ "l": {
+ "*": "//onesearch.library.utoronto.ca/onesearch/\u0002\u00010",
+ "eg": "http://le.utah.gov/solrsearch.jsp?request=\u0002\u00010",
+ "ib": {
+ "*": "//onesearch.library.utoronto.ca/onesearch/\u0002/\u00010",
+ "rary": "//catalog.lib.utexas.edu/search/?searchtype=X&SORT=D&searcharg=\u0002&searchscope=29\u00010"
+ }
+ },
+ "*": "//www.utexas.edu/search/results?query=\u0002\u0001155",
+ "f8": "http://www.fileformat.info/info/unicode/char/search.htm?q=\u0002&preview=entity\u000170",
+ "no": "http://ut.no/finn?search=\u0002\u00010",
+ "os": "//open-store.io/?sort=relevance&search=\u0002\u00010",
+ "dol": "//www.uptodate.com/contents/search?search=\u0002\u00010",
+ "opia": "http://wiki.utopia-game.com/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "oronto": "http://find.utoronto.ca/search?proxystylesheet=default_frontend&q=\u0002\u00010"
+ },
+ "u": {
+ "*": "//duckduckgo.com/?q=site%3Aubuntuusers.de+\u0002\u00010",
+ "w": {
+ "*": "//duckduckgo.com/?q=site:wiki.ubuntuusers.de+\u0002\u00010",
+ "iki": "//duckduckgo.com/?q=site:wiki.ubuntuusers.de+\u0002\u00010"
+ },
+ "de": "//duckduckgo.com/?q=site%3Aubuntuusers.de+\u0002\u00010"
+ },
+ "*": "//www.urbandictionary.com/define.php?term=\u0002\u00015958",
+ "w": {
+ "d": "http://www.dailyuw.com/search/?t=article&nsa=eedition&q=&x=17&y=23\u0002: \u00010",
+ "o": "//www.ssjoy.org/dho/?vid=&mid=home&act=IS&is_target=all&is_keyword=\u0002\u00010",
+ "*": "//www.ssjoy.org/dho/?vid=&mid=home&act=IS&is_target=all&is_keyword=\u0002\u00010",
+ "mc": "//unlimitedworld.de/search/1786851/?q=\u0002\u00010",
+ "alib": "//onesearch.library.uwa.edu.au/discovery/search?query=any,contains,\u0002&tab=Everything&search_scope=MyInst_and_CI&sortby=rank&vid=61UWA_INST:UWA&offset=0\u00010",
+ "flow": "//uwflow.com/courses?keywords=\u0002\u00013",
+ "iki": "//wiki.ubuntu.com/Home?action=fullsearch&context=180&value=\u0002\u00010",
+ "lib": "//search.library.wisc.edu/search/catalog?q=\u0002\u00010"
+ },
+ "x": {
+ "*": "http://ux.stackexchange.com/search?q=\u0002\u00010",
+ "ul": "//uxul.de/find?search=\u0002\u00010"
+ },
+ "24": "http://www.urgente24.com/search/node/\u0002\u00010",
+ "ea": "//answers.unrealengine.com/search.html?q=\u0002\u00013",
+ "fc": "//ufc.com/search?search=\u0002&sort_by=created\u00014",
+ "ib": {
+ "a": "http://uiba.co/?s=\u0002\u00010",
+ "*": "//ordbok.uib.no/perl/ordbok.cgi?OPP=\u0002&ant_bokmaal=5&ant_nynorsk=5&begge=+&ordbok=begge\u000190"
+ },
+ "if": "http://www.ultralingua.com/onlinedictionary/dictionary#src_lang=Italian&dest_lang=French&query=\u0002\u00010",
+ "io": "//www.uio.no/studier/emner/?course-query=\u0002&vrtx=search&searchMode=emne\u000111",
+ "it": {
+ "m": "http://www.uitmuntend.de/woerterbuch/\u0002/\u000112",
+ "*": "http://www.uitmuntend.de/search.html?search=\u0002\u00010",
+ "inv": "http://www.uitinvlaanderen.be/agenda/search?query=\u0002\u00010"
+ },
+ "ja": "//www.ujaen.es/search?s=\u0002\u00010",
+ "jc": "http://prirucka.ujc.cas.cz/?slovo=\u0002&Hledej=Hledej\u000151",
+ "kn": "//www.uni-konstanz.de/suche/?q=\u0002\u00010",
+ "kp": {
+ "*": "http://www.parliament.uk/search/results/?q=\u0002\u00010",
+ "pp": "//uk.pcpartpicker.com/search/?cc=uk&q=\u0002\u00010",
+ "arl": "http://www.parliament.uk/search/results/?q=\u0002\u00010"
+ },
+ "ku": "//ukutabs.com/?s=\u0002\u00010",
+ "mb": "//www.umb.edu/search?cx=001225130692263366863%3Auxj4oosyzxy&cof=FORID%3A11&q=\u0002\u00010",
+ "md": "http://www.searchum.umd.edu/search?site=UMCP&client=UMCP&proxystylesheet=UMCP&output=xml_no_dtd&q=\u0002\u00010",
+ "mk": "http://opac.bu.umk.pl/webpac-bin/B_horizonPL/wgbroker.exe?new+-access+top+search+open+CI+\u0002\u00010",
+ "ml": "//primo-pmtna01.hosted.exlibrisgroup.com/primo-explore/search?institution=UMB&vid=UMB&tab=default_tab&search_scope=UManitoba&mode=basic&displayMode=full&bulkSize=10&highlight=true&dum=true&query=any,contains,\u0002&displayField=all&pcAvailabiltyMode=true&sortby=rank&lang=en_US\u00010",
+ "mn": "//search.umn.edu/tc/index.php?q=\u0002 \u00010",
+ "mo": "http://www.umart.com.au/newsite/search.php?type=0&keywords=\u0002\u00010",
+ "oa": {
+ "l": {
+ "*": "//search.library.ualberta.ca/symphony?q=\u0002\u00010",
+ "ib": "//www.library.auckland.ac.nz/search/\u0002\u00010"
+ },
+ "*": "//search.auckland.ac.nz/search?site=All_university_websites&client=uoa_frontend&proxystylesheet=uoa_frontend&proxyreload=0&output=xml_no_dtd&q=\u0002\u00010"
+ },
+ "od": "http://udallas.edu/searchresults.html?q=\u0002\u00010",
+ "ok": "//www.kent.ac.uk/search/?q=\u0002\u00010",
+ "om": "http://www.manchester.ac.uk/search/?q=\u0002\u00010",
+ "on": "http://www.nottingham.ac.uk/search.aspx?q=\u0002:\u00010",
+ "os": "//www.surrey.ac.uk/search?query=\u0002\u00010",
+ "va": {
+ "c": "http://search.lib.virginia.edu/catalog?q=\u0002\u00010",
+ "*": "http://www.virginia.edu/search/site/\u0002\u00010",
+ "faulk": "http://faulkner.lib.virginia.edu/results?type=transcription&q=\u0002 \u00010",
+ "lib": "http://search.lib.virginia.edu/catalog?q=\u0002\u00010"
+ },
+ "ym": "//www.unwrapyourmind.com/?s=\u0002&submit=Search\u00010",
+ "zg": "//www.npo.nl/zoeken?term=\u0002\u00010",
+ "zh": "http://www.uzh.ch/de/search.html?q=\u0002\u00010",
+ "aar": "http://www.uaar.it/news/?s=\u0002\u00010",
+ "apps": "//apps.ubuntu.com/cat/search/?q=\u0002\u00010",
+ "appex": "//uappexplorer.com/apps?q=\u0002&sort=relevance\u00010",
+ "e4docs": "//docs.unrealengine.com/en-us/Search-Results?Search=\u0002\u00010",
+ "embb": "//uem.blackboard.com/\u0002\u00010",
+ "esp": "http://en.uesp.net/w/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u0001216",
+ "find": "//ufind.univie.ac.at/de/search.html?filter=all&query=\u0002\u00010",
+ "frj": "http://www.ufrj.br/buscagoogle2.php?ie=utf-8&oe=utf-8&cx=001879131226118048161%3Ac12ayzh7sok&cof=FORID%3A11&q=\u0002\u00010",
+ "fret": "http://www.ufret.jp/search.php?key=\u0002\u00017",
+ ".gg": "//u.gg/opensearch/?query=\u0002\u0001513",
+ "kappstore": "//duckduckgo.com/?q=site%3Aapps.apple.com%2Fgb%2Fapp%2F+\u0002\u00010",
+ "kcsgo": "http://ukcsgo.com/forums/search/\u0002/\u00010",
+ "keys": "//keyserver.ubuntu.com/pks/lookup?search=\u0002&fingerprint=on&hash=on&op=vindex\u00010",
+ "ketabs": "//www.ukulele-tabs.com/search-uke-chords.html?find=\u0002\u00010",
+ "kgr": "//gridreferencefinder.com/bing.php?gr=\u0002\u00010",
+ "kgovpeti": "//petition.parliament.uk/petitions?q=\u0002\u00010",
+ "kiki": "//ukikipedia.net/mediawiki/index.php?search=\u0002\u00010",
+ "klaw": "http://www.legislation.gov.uk/all?title=\u0002\u00010",
+ "kwiki": "//uk.wikipedia.org/w/index.php?search=\u0002\u00010",
+ "m3bd": "http://um3bd.free.fr/?s=\u0002\u00010",
+ "man": "//manpages.ubuntu.com/cgi-bin/search.py?q=\u0002\u000125",
+ "mass": {
+ "d": "//www.umassd.edu/universitysearch/?q=\u0002\u00010",
+ "*": "//www.umass.edu/search/#stq=\u0002&stp=1\u00010"
+ },
+ "magine": "//www.youmagine.com/search/designs?utf8=%E2%9C%93&search=\u0002\u00010",
+ "melb": "//search.unimelb.edu.au/?q=\u0002\u00010",
+ "mich": "http://umich.edu/search/keywords/\u0002/\u00010",
+ "oft": {
+ "*": "//onesearch.library.utoronto.ca/onesearch/\u0002\u00010",
+ "lib": "//onesearch.library.utoronto.ca/onesearch/\u0002//\u00013"
+ },
+ "vic": "//www.uvic.ca/search/q/web.php?q=\u0002&t=4&p=1&g=true\u00010"
+ },
+ "v": {
+ "a": {
+ "g": {
+ "*": "http://db.vanillagaming.org/?search=\u0002\u00010",
+ "w": "http://www.vagonweb.cz/razeni/razeni.php?jmeno=\u0002&najit=Suchen\u00010",
+ "as": "//www.vagas.com.br/vagas-de-\u0002?\u00010",
+ "alume": "http://www.vagalume.com.br/search.php?q=\u0002\u00010",
+ "rant": "//app.vagrantup.com/boxes/search?q=\u0002\u00015",
+ "ssp": "//procarmanuals.com/?s=\u0002\u00010"
+ },
+ "n": {
+ "i": "//vanillawowdb.com/?search=\u0002\u00010",
+ "s": "//www.vans.com/webapp/wcs/stores/servlet/VFSearchDisplay?storeId=10153&catalogId=10703&langId=-1&beginIndex=0&searchSource=Q&sType=SimpleSearch&searchTerm=\u0002\u00013",
+ "*": "//vandal.elespanol.com/busqueda/\u0002\u00010",
+ "couver": "http://vancouver.ca/search.aspx?q=\u0002&searchEngine=GSA\u00010",
+ "dale": "http://www.vandale.nl/opzoeken?pattern=\u0002&lang=nn\u000149",
+ "guard": "//www.vanguardinvestments.com.au/retail/mvc/searchresults.htm?https%3A%2F%2Fwww.vanguardinvestments.com.au%2Fretail%2Fmvc%2Fsearchresults.htm=&searchtext=\u0002\u00014"
+ },
+ "*": "http://vimawesome.com/?q=\u0002\u00018",
+ "pe": {
+ "*": "http://www.vapeoildirect.co.uk/?s=\u0002\u00010",
+ "fiend": "//vapefiend.co.uk/search?q=\u0002&type=product\u00010",
+ "time": "//www.vapetime-ec.com/?s=\u0002\u00010"
+ },
+ "jeh": "//vajehyab.com/?q=\u0002 \u00014",
+ "jje": "http://www.vajje.com/vajje/search/index?query=\u0002\u00010",
+ "kblog": "http://rsnijders.info/vakblog/?s=\u0002 \u00010",
+ "ladoc": "//valadoc.org/?q=\u0002\u00010",
+ "lidate": {
+ "*": "http://validator.w3.org/check?uri=\u0002&charset=%28detect+automatically%29&doctype=Inline&group=0\u00010",
+ "css": "http://jigsaw.w3.org/css-validator/validator?uri=\u0002&profile=css3&usermedium=all&warning=1&vextwarning=&lang=en\u00010"
+ },
+ "lidatornu": "//validator.nu/?doc=\u0002\u00010",
+ "lve": {
+ "s": {
+ "*": "//www.valvesonline.co.uk/catalogsearch/result/?q=\u0002\u00010",
+ "online": "//www.valvesonline.co.uk/catalogsearch/result/?q=\u0002\u00010"
+ },
+ "*": "//developer.valvesoftware.com/w/index.php?title=Special%3ASearch&search=\u0002\u00010"
+ },
+ "riety": "//variety.com/results/#?q=\u0002 \u00010",
+ "rle": "//www.varle.lt/search/?q=\u0002\u00010",
+ "rsome": "//varsome.com/variant/search?query=\u0002\u00010",
+ "rtoslo": "//www.vartoslo.no/?s=\u0002 \u00010",
+ "ski": "//vaski.finna.fi/Search/Results?lookfor=\u0002\u00010",
+ "t19": "//www.vat19.com/products/search?q=\u0002\u00010",
+ "tera": "http://www.vatera.hu/listings/index.php?q=\u0002\u00014",
+ "tican": "http://gsearch.vatican.va/search?q=\u0002&btnG=Search+on&site=default_collection&client=default_frontend&output=xml_no_dtd&proxystylesheet=default_frontend&sort=date%3AD%3AL%3Ad1&entsp=a__policy_documenti&wc=200&wc_mc=1&oe=UTF-8&ie=UTF-8&ud=1&exclude_apps=1&filter=0\u00014",
+ "ult": "http://fallout.gamepedia.com/index.php?title=Special%3ASearch&search=\u0002&fulltext=Search\u00010"
+ },
+ "b": {
+ "a": "//duckduckgo.com/?q=\u0002+site%3Amsdn.microsoft.com%2Fen-us%2Fvba&t=ffab&ia=web\u00010",
+ "p": "http://www.vbprofiles.com/search?q=\u0002\u00010",
+ "*": "http://vedabase.com/en/search/site/\u0002\u00010",
+ "ot": "//volumebot.com/?s=\u0002\u00010",
+ "ox7": "//www.vbox7.com/search/?q=\u0002\u00010"
+ },
+ "c": {
+ "m": "//vision.org.au/site-search/?phrase=\u0002&cbi=1\u00010",
+ "p": "http://shop.vcp-san.at/index.php?main_page=advanced_search_result&search_in_description=1&keyword=\u0002\u00010",
+ "*": "//www.vouchercodes.co.uk/search/?q=\u0002\u00013",
+ "ru": "//vc.ru/search/\u0002\u00010"
+ },
+ "*": "//duckduckgo.com/?q=\u0002&ia=videos&iax=videos\u00011238",
+ "e": {
+ "f": "//www.venuefirst.com/all/venues?search_keyword=\u0002\u00010",
+ "m": {
+ "o": "http://www.vemo.it/cerca.php?prodotto=\u0002\u00010",
+ "*": "http://vemringde.se/?q=\u0002\u00010"
+ },
+ "*": "//videoeta.com/search?utf8=%E2%9C%93&keywords=\u0002\u00010",
+ "rb": {
+ "s": "http://www.verbs.cat/ca/conjugacio.html?infinitive=\u0002\u00010",
+ "*": "http://conjugator.reverso.net/conjugation-english-verb-\u0002.html\u00010",
+ "en": "http://www.verbformen.de/konjugation/?i=\u0002\u00010",
+ "es": "http://www.les-verbes.com/conjuguer.php?verbe=\u0002\u000110",
+ "fi": "http://www.dictionar-finlandez.net/online/verbs/conjugate_verb.php?verb=\u0002\u00010",
+ "ix": {
+ "*": "http://verbix.com/find-verb/?verb=\u0002\u00010",
+ "es": "http://www.verbix.com/webverbix/Spanish/\u0002.html\u00010",
+ "pt": "http://www.verbix.com/webverbix/Portuguese/\u0002.html\u00010",
+ "eng": "http://www.verbix.com/webverbix/English/\u0002r.html\u00010"
+ },
+ "cat": "http://www.verbs.cat/ca/conjugacio.html?infinitive=\u0002 \u00010",
+ "omatic": "http://conjugator.reverso.net/conjugation-english-verb-\u0002.html\u00010"
+ },
+ "rk": {
+ "*": "//www.verkkokauppa.com/fi/search/?query=\u0002\u000138",
+ "kis": "//www.verkkokauppa.com/fi/search/?query=\u0002\u000138",
+ "kokauppa": "//www.verkkokauppa.com/fi/search/?query=\u0002\u000138",
+ "oper": "//www.politie.nl/zoek?query=\u0002\u00010"
+ },
+ "vo": "//www.youtube.com/user/VEVO/search?query=\u0002\u00010",
+ "ctor": {
+ "*": "http://vector.me/search/\u0002 \u00015",
+ "space": "http://vectorspace.ai/recommend/app/crypto_discover?query=\u0002\u00010"
+ },
+ "cteezy": "http://www.vecteezy.com/free-vector/\u0002\u00010",
+ "dant": "//www.vedantcomputers.com/index.php?route=product/search&search=\u0002&description=true\u00010",
+ "ekun": "http://veekun.com/dex/lookup?lookup=\u0002\u00016",
+ "gas": "http://find.vegas.com/search?entqr=1&output=xml_no_dtd&sort=date%3AD%3AL%3Ad1&entsp=0&client=vegas&ud=1&oe=UTF-8&ie=UTF-8&proxystylesheet=vegas&site=vegas&q=\u0002&btnG=%E2%8C%95\u00010",
+ "ganistan": "http://veganistan.se/search/innehall/\u0002\u00010",
+ "gess": "//store.veganessentials.com/categories.aspx?Keyword=\u0002\u00010",
+ "gewel": "//vegewel.com/en/search?utf8=%E2%9C%93&q%5Bg%5D%5B1%5D%5Brestaurant_search%5D=\u0002&q%5Bg%5D%5B0%5D%5Bm%5D=or&commit=Search\u00010",
+ "loz": "http://www.diarioveloz.com/contenidos/resultado.html?text=\u0002\u00010",
+ "nturebeat": "http://venturebeat.com/?s=\u0002\u00010",
+ "rge": "http://www.theverge.com/search?q=\u0002\u000122",
+ "risure": "//www.verisure.se/hidden/search-results.html?query=\u0002\u00010",
+ "root": "http://veroot.com/search/\u0002\u00010",
+ "rse": "//www.bible.com/search/bible?q=\u0002\u00010",
+ "rsus": "//versus.com/en/\u0002\u00010",
+ "rtalen": {
+ "*": "http://www.vertalen.nu/vertaal?van=nl&naar=en&vertaal=\u0002\u00010",
+ "nu": "http://www.vertalen.nu/vertaal?vertaal=\u0002&van=en&naar=nl\u00010"
+ },
+ "rtigocomics": "http://vertigo.wikia.com/wiki/Special:Search?query=\u0002\u00010"
+ },
+ "f": {
+ "t": "//veriforcetactical.com/?s=\u0002\u00010",
+ "*": "http://www.verbformen.de/konjugation/?i=\u0002\u00010"
+ },
+ "g": {
+ "d": "http://v.gd/create.php?url=\u0002\u00010",
+ "g": {
+ "*": "http://www.viagogo.com/searchResults.aspx?SearchText=\u0002\u00010",
+ "de": "http://www.viagogo.de/searchResults.aspx?SearchText=\u0002\u00010",
+ "uk": "http://www.viagogo.co.uk/searchResults.aspx?SearchText=\u0002\u00010"
+ },
+ "*": "//google.com/search?hl=en&q=\u0002&tbs=li:1\u000121",
+ "n": "//www.vgn.de/verbindungen/?td=\u0002\u00010",
+ "pc": "http://videogames.pricecharting.com/search?q=\u0002&submit=Go\u00010",
+ "collect": "http://vgcollect.com/search/\u0002\u00010",
+ "mdb": "//vgmdb.net/search?q=\u0002\u000165"
+ },
+ "h": {
+ "*": "//www.vantagehunt.com/jobs?search=\u0002\u00010",
+ "ck": "//victorhckinthefreeworld.wordpress.com/?s=\u0002\u00010",
+ "unt": "//visualhunt.com/search/instant/?q=\u0002\u00010"
+ },
+ "j": "http://vjphotos.net/?s=\u0002\u00013",
+ "k": {
+ "*": "http://vk.com/search?c[q]=\u0002&c[section]=auto\u0001618",
+ "v": "//vk.com/video?q=\u0002\u00010",
+ "dia": "//fr.vikidia.org/w/index.php?search=\u0002&title=Sp%C3%A9cial:Recherche&go=Trouver\u00010"
+ },
+ "o": {
+ "*": "//eo.wikipedia.org/w/index.php?search=\u0002\u000121",
+ "l": {
+ "*": "http://www.vivaolinux.com.br/busca/?cx=partner-pub-3535276187000580%3A4725058203&cof=FORID%3A10&ie=UTF-8&q=\u0002&tipoBusca=0&siteurl=www.vivaolinux.com.br\u00010",
+ "cans": "http://www.librairielesvolcans.com/listeliv.php?RECHERCHE=simple&MOTS=\u0002&x=0&y=0\u00010",
+ "tron": "http://voltron.wikia.com/wiki/Special:Search?query=\u0002\u00010"
+ },
+ "x": "http://www.vox.com/search?q=\u0002\u000114",
+ "an": "//www.voanews.com/s?k=\u0002&tab=all&pi=1&r=any&pp=10\u00010",
+ "at": "//searchvoat.co/?all=\u0002\u00010",
+ "da": {
+ "*": "http://www.vodafone.it/area-utente/appmanager/fai-da-te/Common?_nfpb=true&_pageLabel=P5000626721379247340997&categoryId=&pageNumber=&slideNumber=&defaultView=true&searchQuery=\u0002\u00010",
+ "fone": "//www.vodafone.com/content/index/search.html?search-query=\u0002\u00010"
+ },
+ "id": {
+ "*": "//wiki.voidlinux.org/index.php?search=\u0002\u000121",
+ "docs": "//docs.voidlinux.org/?search=\u0002\u00017",
+ "wiki": "//wiki.voidlinux.org/index.php?search=\u0002\u000121"
+ },
+ "it": "//duckduckgo.com/?q=\u0002+site%3AKarl-Voit.at&ia=web\u00010",
+ "te": {
+ "*": "//vote.us.org/search/?q=\u0002\u00010",
+ "formost": "//voteformost.net/?s=\u0002\u00010",
+ "rly": "//voterly.com/search/politicians?q=\u0002\u00010"
+ },
+ "cab": {
+ "*": "//www.vocabulary.com/dictionary/\u0002\u000115",
+ "ulary": "//www.vocabulary.com/dictionary/\u0002\u000115"
+ },
+ "cadb": "http://vocadb.net/Search?filter=\u0002\u00013",
+ "caloid": "http://vocaloid.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "ced": "http://www.voced.edu.au/search/apachesolr_search/\u0002\u00010",
+ "edingswaarde": "http://www.voedingswaardetabel.nl/voedingswaarde/?q=\u0002\u00010",
+ "gue": {
+ "*": "//www.vogue.com/?s=\u0002\u00010",
+ "uk": "//www.vogue.co.uk/search?q=\u0002\u00010"
+ },
+ "ice": "//www.google.com/voice#search/\u0002\u00010",
+ "icy": "//www.voicy.network/clips/search?search=\u0002\u00010",
+ "rtaro": {
+ "*": "http://vortaro.net/#\u0002\u000143",
+ "nl": "//vortaro.nl/?v=\u0002\u00010"
+ },
+ "rtexcg": "//vortex.gg/games?title=\u0002\u00010",
+ "ssey": "http://www.vossey.com/recherche/index.php?ac=recherche&titre=\u0002\u00010",
+ "traro": "http://vortaro.net/?w=\u0002\u00010"
+ },
+ "p": {
+ "l": "//vpl.bibliocommons.com/search?q=\u0002&t=smart&search_category=keyword\u00014",
+ "n": "//www.vpncompare.co.uk/?s=\u0002\u000114",
+ "*": "http://videogames.pricecharting.com/search?q=\u0002&type=videogames&go=Go\u00010"
+ },
+ "s": {
+ "b": "http://www.vsb.bc.ca/search/node/\u0002\u00010",
+ "c": {
+ "*": "//sapere.virgilio.it/parole/sinonimi-e-contrari/\u0002\u00010",
+ "hart": "http://vschart.com/search?q=\u0002\u00010",
+ "ode": "//marketplace.visualstudio.com/search?term=\u0002&target=VSCode&sortBy=Relevance\u000137"
+ },
+ "e": "http://www.vintagesynth.com/google_results.php?cx=partner-pub-9231860735104128%3A7369484958&cof=FORID%3A10&ie=UTF-8&q=\u0002&sa=Search&siteurl=www.vintagesynth.com%2F&ref=&ss=572j143576j4\u00010",
+ "g": "http://valuestockguide.com/?s=\u0002\u00010",
+ "*": "http://www.vividseats.com/Search.action?searchTerm=\u0002\u00017",
+ "un": "http://www.vancouversun.com/search/search.html?q=\u0002\u00010",
+ "docs": "//code.visualstudio.com/Search?q=\u0002\u00010",
+ "t4free": "http://www.vst4free.com/index.php?s_keywords=\u0002&s_name=1&s_kind=1&s_sent2=1&Submit=Search\u00010"
+ },
+ "t": {
+ "f": {
+ "c": "//www.vatefaireconjuguer.com/search?verb=\u0002\u00010",
+ "*": "http://www.vatefaireconjuguer.com/conjugaison/verbe/\u0002\u00010"
+ },
+ "*": "http://www.vulgumtechus.com/index.php?title=Spécial:Recherche&search=\u0002\u000112",
+ "ip": "//www.virustotal.com/en/ip-address/\u0002/information/\u000188",
+ "mb": "http://vtmb.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "ech": "//search.vt.edu/search/pages.html;sa=Search&q=\u0002\u00010",
+ "kcd": "http://www.vtk.org/doc/nightly/html/class\u0002.html\u00010",
+ "luug": "//vtluug.org/w/index.php?title=Special%3ASearch&search=\u0002\u00010"
+ },
+ "w": {
+ "e": "http://www.vwe.nl/zoeken_resultaten.aspx?q=\u0002\u00010",
+ "r": "//us.vwr.com/store/product?keyword=\u0002\u00010",
+ "*": "//wiki.voidlinux.org/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00018"
+ },
+ "y": {
+ "*": "//www.vajehyab.com/?q=\u0002\u000111",
+ "avasthit": "//vyavasthit.com/?s=\u0002\u00010"
+ },
+ "z": "//www.vz.lt/section/?template=search&search=\u0002\u00010",
+ "db": "//www.vandenborre.be/zoekresultaat?query=\u0002&v2\u00010",
+ "dc": "//developer.valvesoftware.com/w/index.php?search=\u0002 \u000117",
+ "ik": {
+ "i": {
+ "*": "//et.wikipedia.org/w/index.php?search=\u0002 \u00010",
+ "pedi": {
+ "o": "//eo.wikipedia.org/w/index.php?search=\u0002\u000121",
+ "*": "//tr.wikipedia.org/wiki/Special:Search?search=\u0002\u00010"
+ }
+ },
+ "*": "//www.viki.com/search?q=\u0002\u00010",
+ "atan": "//www.vikatan.com/search.php?search=\u0002\u00010"
+ },
+ "im": {
+ "*": "//www.google.com/cse?cx=partner-pub-3005259998294962%3Abvyni59kjr1&q=\u0002\u000123",
+ "w": "http://vim.wikia.com/wiki/Special:Search?query=\u0002\u00015",
+ "aw": {
+ "*": "http://vimawesome.com/?q=\u0002\u00018",
+ "esome": "http://vimawesome.com/?q=\u0002\u00018"
+ },
+ "eo": "//vimeo.com/search?q=\u0002\u0001170",
+ "doc": "http://vimdoc.sourceforge.net/search.php?search=\u0002&docs=help\u000111",
+ "scripts": "http://www.vim.org/scripts/script_search_results.php?keywords=\u0002&script_type=&order_by=rating&direction=descending&search=search\u00013"
+ },
+ "in": {
+ "*": "http://www.decodethis.com/VINdecoder/65/vin/\u0002\u00013",
+ "g": "http://www.ving.no/searchresult?q=\u0002\u00010"
+ },
+ "ir": {
+ "*": "http://ricerca.virgilio.it/ricerca?qs=\u0002\u00010",
+ "giliomail": "http://mail.virgilio.it/login/?q=\u0002:\u00010",
+ "tus": "//duckduckgo.com/?q=site:virtus.com+\u0002\u00010",
+ "ustotal": {
+ "*": "//www.virustotal.com/url/submission/?force=1&url=\u0002\u0001101",
+ "filesearch": "//www.virustotal.com/en/search?query=\u0002\u00010"
+ }
+ },
+ "is": {
+ "o": "//vi.stackexchange.com/search?q=\u0002\u00010",
+ "*": "http://visuwords.com/?q=\u0002\u00010",
+ "iondirect": "//www.visiondirect.com.au/search?query=\u0002\u00010",
+ "itwarrington": "//visitwarrington.com/explore/?type=search-all&search_keywords=\u0002&sort=latest\u00010",
+ "ualh": "//visualhunt.com/search/instant/?q=\u0002\u00010",
+ "ual-youtube": "http://www.yasiv.com/youtube#?q=\u0002\u00014",
+ "uwords": "//visuwords.com/\u0002\u00010"
+ },
+ "la": {
+ "*": "http://vlasisku.lojban.org/vlasisku/\u0002\u000132",
+ "sisku": "http://vlasisku.lojban.org/vlasisku/\u0002\u000132"
+ },
+ "lh": "//www.vlh.de/suchergebnis.html?q=\u0002\u00010",
+ "ml": "//www.viamichelin.com/web/Maps?address=\u0002\u00010",
+ "rv": "//vrv.co/?q=\u0002\u000118",
+ "ub": "http://biblio.vub.ac.be/vubissmartweb/List.csp?SearchT1=\u0002&Index1=Vuballewoorden&Database=3_UB01&OpacLanguage=dut&NumberToRetrieve=20&SearchMethod=Find_1&SearchTerm1=test&Profile=Default&PreviousList=Start&PageType=Start&EncodedRequest=p*20W*20*0A*20*B5*86*DF*D6*7E*A7*15*FD*0F*5E&WebPageNr=1&WebAction=NewSearch&StartValue=1&RowRepeat=0&MyChannelCount=\u00010",
+ "ue": {
+ "*": "//vuejs.org/v2/search/?q=\u0002\u000115",
+ "tify": "//vuetifyjs.com/en/components/\u0002#\u0002\u000112"
+ },
+ "uo": "//vuo.org/search/site/\u0002\u00010",
+ "uw": "http://www.victoria.ac.nz/search?q=\u0002\u00010",
+ "2ex": "//www.duckduckgo.com/?q=site:v2ex.com/t+\u0002\u000113",
+ "2ve": "http://www.verb2verbe.com/EnglishConj.aspx?verb=\u0002&tail=&type=query\u00010",
+ "2vf": "http://www.verb2verbe.com/francais/FrenchConj.aspx?verb=\u0002&tail=&ref=0&type=query\u00010",
+ "dfn": "http://www.vandale.nl/opzoeken?pattern=\u0002&lang=fn\u00010",
+ "disk": "http://vdisk.weibo.com/search/?type=public&keyword=\u0002\u00010",
+ "dnf": "http://www.vandale.nl/opzoeken?pattern=\u0002&lang=nf\u00010",
+ "iaf": "http://viaf.org/viaf/search?query=local.names+all+%22\u0002%22&stylesheet=/viaf/xsl/results.xsl&sortKeys=holdingscount&maximumRecords=100\u000125",
+ "iaplay": "//viaplay.com/search?query=\u0002\u00010",
+ "iasona": "http://www.viasona.cat/cerca?que=\u0002&cerca=&sourceid=duckduckgo\u00010",
+ "ibed": "//vibed.org/api/search?q=\u0002\u00010",
+ "ic2": "//vic2.paradoxwikis.com/index.php?search=\u0002\u00010",
+ "ice": "//www.vice.com/en_us/search?q=\u0002\u00017",
+ "ici": "//la.wikipedia.org/w/index.php?search=\u0002 \u00010",
+ "icgov": {
+ "*": "//www.vic.gov.au/search?q=\u0002\u00010",
+ "au": "//www.vic.gov.au/search?q=\u0002\u00010"
+ },
+ "ids": "//duckduckgo.com/?q=\u0002&ia=videos&iax=videos\u00011238",
+ "idal": "//www.vidal.fr/recherche/index/q:\u0002/\u00010",
+ "idea": "//videa.seznam.cz/?q=\u0002\u00010",
+ "iden": "//videnskab.dk/s?query=\u0002\u00010",
+ "ideo": {
+ "*": "//duckduckgo.com/?q=\u0002&ia=videos&iax=videos\u00011238",
+ "s": {
+ "*": "//duckduckgo.com/?q=\u0002&ia=videos&iax=1\u000126",
+ "ift": "http://videosift.com/search?q=\u0002\u00010"
+ },
+ "culinary": "http://www.videoculinary.ru/search/?q=\u0002\u00010",
+ "detective": "http://www.videodetective.com/Search/Results?id=\u0002\u00010",
+ "gamegeek": "http://videogamegeek.com/geeksearch.php?action=search&objecttype=videogameunified&q=\u0002&B1=Go\u00010",
+ "hive": "http://videohive.net/search?utf8=%E2%9C%93&term=\u0002\u00010",
+ "news": "//www.videonews.com/?s=\u0002\u00010"
+ },
+ "idangel": "http://www.vidangel.com/?s=\u0002\u00013",
+ "idaxl": "//www.vidaxl.nl/catalogsearch/result/?q=\u0002\u00010",
+ "idlii": "//www.vidlii.com/results?q=\u0002\u00010",
+ "igcit": "http://vigilantcitizen.com/?s=\u0002 \u00013",
+ "ijesti": "http://www.vijesti.me/trazi/?q=\u0002\u00010",
+ "illain": "http://villains.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "ipon": "//www.vipon.com/promotion/index?search=\u0002\u00010",
+ "iquipedia": "//ca.wikipedia.org/w/index.php?search=\u0002&title=Especial%3ACerca&go=V%C3%A9s-hi\u00010",
+ "iul": "http://viu.summon.serialssolutions.com/search?s.q=\u0002\u00010",
+ "ivo": "http://www.kono.be/cgi-bin/vivo/ViVo.cgi?lingvo=eo&esprimo=\u0002\u00019",
+ "ivaldi": "//forum.vivaldi.net/search?term=\u0002\u00013",
+ "iveport": "//www.viveport.com/list/desktop?keyword=\u0002\u00010",
+ "ivino": "//www.vivino.com/search/wines?q=\u0002\u00015",
+ "live": "//www.vlive.tv/search/all?query=\u0002\u00014",
+ "mdocs": "//docs.vmware.com/en/search/#/\u0002\u00010",
+ "mkb": "//kb.vmware.com/s/global-search/%40uri#q=\u0002\u00010",
+ "ndb": "http://vndb.org/v/all?sq=\u0002\u0001317",
+ "nillo": "//vanillo.co/search?q=\u0002\u00010",
+ "nwiki": "//vi.wikipedia.org/w/index.php?search=\u0002 \u00010",
+ "rchat": "//vrchat.net/home/search/\u0002\u00010",
+ "rijuit": "//vrijuit.nl/algemeen/ListerPage.aspx?filter=search(\u0002)\u00010",
+ "rtnu": "//www.vrt.be/vrtnu/zoeken/#query=\u0002\u00010",
+ "udu": "//www.vudu.com/content/movies/search?searchString=\u0002\u00015",
+ "ukajlija": "http://vukajlija.com/pretraga/izraz?s=\u0002\u00010",
+ "ulners": "//vulners.com/search?query=\u0002\u00010",
+ "ulnhub": "//www.vulnhub.com/?q=\u0002&sort=date-asc&type=vm\u00010"
+ },
+ "w": {
+ "0": "//www.wikizero.com/search.php?s=\u0002&lang=en\u00010",
+ "2": {
+ "*": "//en.wiki2.org/w/index.php?search=\u0002\u00018",
+ "fr": "//fr.wiki2.org/w/index.php?search=\u0002\u00010"
+ },
+ "3": {
+ "c": "/?q=\u0002+site:w3.org\u00017",
+ "d": "//welovedevs.com/app/companies/search?query=\u0002&type=company\u00010",
+ "s": {
+ "*": "//duckduckgo.com/?q=\u0002+site:w3schools.com\u000141",
+ "cn": "http://www.google.com/search?q=\u0002+site:w3school.com.cn\u00010",
+ "att": "//www.w3schools.com/tags/att_\u0002.asp\u00014",
+ "chools": "http://duckduckgo.com/?q=\u0002+site:w3schools.com\u000114",
+ "tag": "http://www.w3schools.com/tags/tag_\u0002.asp\u00014"
+ },
+ "v": "//validator.w3.org/nu/?doc=\u0002\u00013",
+ "*": "/?q=\u0002+site:w3.org\u00017",
+ "w": "//map.what3words.com/\u0002\u000113",
+ "kaskus": "http://www.kaskus.co.id/search/forum?q=\u0002\u00010"
+ },
+ "a": {
+ "d": {
+ "*": "http://www.wad-archive.com/search?o=d&q=\u0002\u00010",
+ "oku": "http://www.wadoku.de/search/\u0002\u0001119"
+ },
+ "i": {
+ "*": "//www.w3.org/WAI/search/?q=\u0002\u00010",
+ "tbutwhy": "http://waitbutwhy.com/?s=\u0002\u00010",
+ "trose": "http://www.waitrose.com/shop/HeaderSearchCmd?searchTerm=\u0002\u00015"
+ },
+ "m": "http://m.wolframalpha.com/input/?i=\u0002\u00010",
+ "n": {
+ "*": "//an.wikipedia.org/w/index.php?search=\u0002&title=Especial%3AMirar\u00014",
+ "dsk": "//www.wikiwand.com/sk/\u0002\u00010",
+ "elo": "http://wanelo.com/search?query=\u0002\u00010"
+ },
+ "p": {
+ "f": "//www.westonaprice.org/?s=\u0002\u00010",
+ "p": "//api.whatsapp.com/send?phone=\u0002&text=\u0001124",
+ "*": "//www.wap.org/search?q=\u0002\u00010"
+ },
+ "r": {
+ "u": "http://www.world-art.ru/search.php?public_search=\u0002&global_sector=all\u00010",
+ "*": "//ar.wikipedia.org/w/index.php?search=\u0002\u000112",
+ "frame": "http://warframe.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1\u0001258",
+ "hammer": "//totalwarwarhammer.gamepedia.com/index.php?search=\u0002\u00010",
+ "wick": "//search.warwick.ac.uk/?q=\u0002\u00013"
+ },
+ "*": "//www.wolframalpha.com/input/?i=\u0002\u000120",
+ "z": "//az.wikipedia.org/wiki/\u0002\u00010",
+ "ls": "//als.wikipedia.org/w/index.php/search=\u0002\u00010",
+ "ve": "http://wave.webaim.org/report#/\u0002\u00010",
+ "apt": "//waapt.wiki.tropi.us/wiki/Special:Search/\u0002\u00010",
+ "cotrib": "http://www.wacotrib.com/search/?sd=desc&l=25&s=start_time&f=html&t=article%2Cvideo%2Cyoutube%2Ccollection&app=editorial&nsa=eedition&q=\u0002\u00010",
+ "fresh": "//www.wafresh.com.au/search.php?Search=&search_query=\u0002\u00010",
+ "koopa": "http://social.wakoopa.com/search?query=\u0002\u00010",
+ "lky": "http://walkypedia.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "lkscore": "http://www.walkscore.com/score/\u0002\u00010",
+ "lla": {
+ "*": "//wallhaven.cc/search?q=\u0002\u00016",
+ "pop": "//es.wallapop.com/search?keywords=\u0002\u00016"
+ },
+ "llh": {
+ "*": "//wallhaven.cc/search?q=\u0002\u00016",
+ "aven": "//wallhaven.cc/search?q=\u0002\u00016",
+ "eaven": "//wallhaven.cc/search?q=\u0002\u00016"
+ },
+ "llbase": "//wallhaven.cc/search?q=\u0002\u00016",
+ "llpaper": "http://google.com/search?tbm=isch&imgsz=xxlarge&gbv=2&safe=off&q=\u0002+wallpaper&btnG=Search+Images&tbs=imgo:1\u000116",
+ "lmart": {
+ "*": "//www.walmart.com/search/?query=\u0002\u0001570",
+ "ca": "http://www.walmart.ca/search/\u0002\u000135"
+ },
+ "lpha": "//www.wolframalpha.com/input/?i=\u0002\u000120",
+ "lrus": "//thewalrus.ca/?s=\u0002\u00010",
+ "schbaer": "//www.waschbaer.de/shop/frontend/search/result?q=\u0002\u00010",
+ "shingtonpost": "http://www.washingtonpost.com/ac2/wp-dyn/NewsSearch?sb=-1&st=\u0002\u000114",
+ "tch": {
+ "*": "//www.youtube.com/results?search_query=\u0002\u00011646",
+ "es": "//myrwatches.com/?s=\u0002 &post_type=product\u00010",
+ "count": "http://www.watchcount.com/completed.php?bkw=\u0002&bcat=0&bcts=&sfsb=Show+Me%21&csbin=all&cssrt=ts&bslr=&bnp=&bxp=\u00010",
+ "kin": "//watchkin.com/search.php?q=\u0002\u00010",
+ "tower": "http://wol.jw.org/en/wol/qt/r1/lp-e?q=\u0002\u00010"
+ },
+ "terstones": "//www.waterstones.com/books/search/term/\u0002\u000113",
+ "tertank": "//watercontainerstore.com/search?type=product&q=\u0002\u00010",
+ "tson": "http://www.watson.ch/u/search?#\u0002\u00010",
+ "ttpad": "http://www.wattpad.com/stories/search/\u0002\u000165",
+ "yback": {
+ "*": "//web.archive.org/web/*/\u0002\u000145",
+ "machine": "//web.archive.org/web/*/\u0002\u000145"
+ },
+ "yfair": {
+ "*": "http://www.wayfair.com/keyword.php?keyword=\u0002\u000130",
+ "ca": "//www.wayfair.ca/keyword.php?keyword=\u0002&command=dosearch&new_keyword_search=true\u00010"
+ },
+ "yne": "//wayne.edu/search/?type=all&q=\u0002\u00010"
+ },
+ "b": {
+ "3": "//wb3.io/\u0002\u00010",
+ "d": {
+ "e": "//de.wikibooks.org/w/index.php?search=\u0002\u00010",
+ "*": "//www.reddit.com/r/worldbuilding/?q=\u0002&restrict_sr=on&include_over_18=on&sort=relevance&t=all\u00010"
+ },
+ "g": {
+ "*": "//bg.wikipedia.org/wiki/Special:Search?search=\u0002\u00019",
+ "w": "//mywiki.wooledge.org/EnglishFrontPage?action=fullsearch&context=180&value=\u0002&titlesearch=Titles\u00010"
+ },
+ "i": "http://boilerinvasion.org/search?search=\u0002\u00010",
+ "j": "//ja.wikibooks.org/w/index.php?search=\u0002&title=特別%3A検索&go=表示\u00010",
+ "m": {
+ "l": "//ml.wikibooks.org/wiki/special:search/\u0002\u00010",
+ "p": "//webmasterparadies.de/?s=\u0002\u00010",
+ "*": "//web.archive.org/web/*/\u0002\u000145"
+ },
+ "r": "//br.wikipedia.org/w/index.php?search=\u0002\u00013",
+ "s": "//web.archive.org/save/*/\u0002\u00010",
+ "*": "http://en.wikibooks.org/wiki/Special:Search?search=\u0002\u000141",
+ "ur": "http://www.wbur.org/search?q=\u0002\u00010",
+ "afc": "//www.wba.co.uk/search/?q=\u0002\u00010"
+ },
+ "c": {
+ "a": {
+ "t": "//ca.wikipedia.org/w/index.php?search=\u0002\u000136",
+ "*": "//ca.wikipedia.org/wiki/Special:Search?search=\u0002\u0001119",
+ "ch": "//www.worldcubeassociation.org/competitions?utf8=%E2%9C%93&region=\u0002&search=&state=present&year=all+years&display=list\u00010",
+ "naan": "http://www.wikicanaan.org/wiki/bienvenue?do=search&id=\u0002&fulltext=Recherche\u00010"
+ },
+ "i": "http://www.worldcat.org/identities/find?fullName=\u0002\u000113",
+ "l": "//www.warcraftlogs.com/search/?term=\u0002\u00010",
+ "m": {
+ "e": "//spark.apache.org/docs/latest/api/python/search.html?q=\u0002\u00015",
+ "*": "http://whocallsme.com/nb/search.aspx?q=\u0002\u00010"
+ },
+ "s": "//cs.wikipedia.org/w/index.php?search=\u0002\u0001203",
+ "*": "http://www.weather.com/search/enhancedlocalsearch?where=\u0002&loctypes=1/5/9/11/13/19/\u000134",
+ "u": "http://whocalled.us/lookup/\u0002\u00010",
+ "y": "//cy.wikipedia.org/wiki/\u0002\u00010",
+ "z": "//cs.wikipedia.org/w/index.php?search=\u0002&title=Speci%C3%A1ln%C3%AD%3AHled%C3%A1n%C3%AD&go=J%C3%ADt+na\u000176",
+ "cls": "http://catalog.wccls.org/polaris/search/searchresults.aspx?term=\u0002\u00010",
+ "oulls": "//www.whitcoulls.co.nz/search?q=\u0002\u00010"
+ },
+ "d": {
+ "a": "http://da.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u000155",
+ "e": {
+ "*": "//de.wikipedia.org/w/index.php?search=\u0002\u000110203",
+ "x": "http://es.pokemon.wikia.com/wiki/Especial:Buscar?query=\u0002\u00010"
+ },
+ "g": "http://en.wikipedia.org/w/index.php?title=Special:Search&search=\u0002+discography&go=Go\u00010",
+ "k": "//da.wikipedia.org/w/index.php?search=\u0002\u000116",
+ "r": "http://www.wordreference.com/es/translation.asp?tranword=\u0002 \u000182",
+ "t": {
+ "k": "//www.whatdotheyknow.com/search/\u0002/all\u00010",
+ "*": "//www.wikidata.org/w/index.php?title=Special%3ASearch&search=\u0002&fulltext=Search\u00014",
+ "prs": "http://wdtprs.com/blog/?s=\u0002\u00010"
+ },
+ "*": "//www.wikidata.org/w/index.php?search=\u0002\u0001364",
+ "x": "http://es.pokemon.wikia.com/wiki/WikiDex=\u0002\u00010",
+ "ic": "//en.wiktionary.org/wiki/\u0002\u0001105"
+ },
+ "e": {
+ "b": {
+ "o": {
+ "*": "//www.webopedia.com/sgsearch/results?q=\u0002\u00010",
+ "ftrust": "//www.mywot.com/en/scorecard/\u0002\u00015"
+ },
+ "*": "//www.webopedia.com/sgsearch/results?q=\u0002\u00010",
+ "md": "http://www.webmd.com/search/search_results/default.aspx?query=\u0002\u000147",
+ "st": {
+ "a": {
+ "*": "http://websta.me/search/\u0002 \u00010",
+ "ts": "http://www.webstatsdomain.com/?q=\u0002 \u00010",
+ "gram": "http://web.stagram.com/search/\u0002\u00010"
+ },
+ "*": "//www.webstaurantstore.com/search/\u0002.html\u00010",
+ "ers": "http://www.webster-dictionary.org/definition/\u0002\u00010",
+ "ore": "http://www.webstore.com/search.php?option=basic_search&basic_search=\u0002&form_basic_search=Search\u00019"
+ },
+ "1913": "//www.websters1913.com/words/\u0002\u00013",
+ "2py": "http://web2py.com/books/default/search/29?search=\u0002\u00010",
+ "archive": "//web.archive.org/web/*/\u0002\u000145",
+ "bco": "http://webbco.us/search.php?q=\u0002\u00010",
+ "bkoll": "//webbkoll.dataskydd.net/en/results?url=\u0002\u00010",
+ "bspy": "//www.webbspy.com/?s=\u0002\u00013",
+ "cams": "http://www.webcams.travel/search/\u0002\u00013",
+ "comp": {
+ "*": "//www.webcomponents.org/search/\u0002\u00010",
+ "onents": "//www.webcomponents.org/search/\u0002\u00010"
+ },
+ "crawler": "http://www.webcrawler.com/search/web?fcoid=417&fcop=topnav&fpid=2&aid=3ebe8f19-0a9d-425b-a3ff-9d59e6c12c5e&ridx=2&q=\u0002&ql=&ss=t\u00010",
+ "designerdepot": "http://www.webdesignerdepot.com/?q=\u0002\u00010",
+ "ext": "//developer.mozilla.org/en-US/search?q=\u0002&topic=addons\u00010",
+ "hallen": "//www.webhallen.com/se/search?searchString=\u0002&sort=searchRating\u00010",
+ "lio": {
+ "e": "http://ejje.weblio.jp/content/\u0002\u0001276",
+ "j": "http://www.weblio.jp/content/\u0002\u00010",
+ "t": "http://thesaurus.weblio.jp/content/\u0002\u00010",
+ "*": "http://www.weblio.jp/content/\u0002\u00010"
+ },
+ "min": "http://webmineral.com/cgi-bin/search/search.pl?sitesearch=&Terms=\u0002&x=0&y=0\u00010",
+ "novel": "//www.webnovel.com/search?keywords=\u0002\u00010",
+ "ref": "//webref.ru/search/?s=\u0002&cx=partner-pub-0708135098984815%3A9970767379&cof=FORID%3A10&ie=UTF-8\u00010",
+ "tender": "http://duckduckgo.com/?q=site%3Awebtender.com+\u0002\u00010",
+ "toon": {
+ "*": "//www.webtoons.com/search?keyword=\u0002\u00017",
+ "s": "//www.webtoons.com/search?keyword=\u0002\u00017"
+ },
+ "utation": "http://www.webutations.org/go/review/\u0002\u00013",
+ "xicon": {
+ "*": "http://webxicon.org/search.php?q=\u0002\u00010",
+ "en": "http://webxicon.org/search.php?l=-1&l2=3&q=\u0002\u00010",
+ "fi": "http://webxicon.org/search.php?l=-1&l2=17&q=\u0002\u00010",
+ "se": "http://webxicon.org/search.php?l=-1&l2=15&q=\u0002\u00010",
+ "su": "http://webxicon.org/search.php?l=-1&l2=17&q=\u0002\u00010",
+ "sv": "http://webxicon.org/search.php?l=-1&l2=15&q=\u0002\u00010"
+ }
+ },
+ "l": {
+ "*": "//el.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00013",
+ "adee": "//job.weladee.com/?q=\u0002\u00010",
+ "klidwoord": "//www.welklidwoord.nl/\u0002\u00010",
+ "tbild": "//www.weltbild.de/suche?q=\u0002\u00010"
+ },
+ "n": {
+ "*": "http://en.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "fr": "http://www.wordreference.com/enfr/\u0002\u000144"
+ },
+ "o": "http://eo.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u000136",
+ "r": {
+ "*": "//www.werstreamt.es/filme-serien?q=\u0002&action_results=suchen\u000132",
+ "streamt": "//www.werstreamt.es/filme-serien?q=\u0002\u000124"
+ },
+ "s": {
+ "1": "http://wesleyan.summon.serialssolutions.com/search?utf8=✓&s.q=\u0002\u00010",
+ "u": "http://www.wesleyan.edu/search/search-results.html?cx=001254463385620737445%3Anbar83le1bc&cof=FORID%3A11&ie=UTF-8&q=\u0002\u00010",
+ "*": "http://es.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00011346",
+ "lib": "http://wesleyan.summon.serialssolutions.com/search?utf8=✓&s.q=\u0002\u00010",
+ "telm": "http://www.westelm.com/search/results.html?words=\u0002\u00010"
+ },
+ "u": {
+ "s": "//eu.wikipedia.org/wiki/Special:Search?search=\u0002\u00010",
+ "*": "//eu.wikipedia.org/wiki/\u0002\u00017"
+ },
+ "*": "http://en.wikipedia.org/wiki/\u0002\u0001839",
+ "ek": "//duckduckgo.com/?q=\u0002&df=w\u00010",
+ "ather": {
+ "*": "http://www.weather.com/search/enhancedlocalsearch?where=\u0002&loctypes=1/5/9/11/13/19/&from=hdr\u0001370",
+ "gc": "//weather.gc.ca/city/jump_e.html?city=\u0002\u00013",
+ "bug": "http://weather.weatherbug.com/Common/SearchResults.html?loc=\u0002&nav_section=1&zcode=z6169&lang_id=en-us&country=US&x=0&y=0&is_search=true\u00010",
+ "channel": "http://www.weather.com/search/enhancedlocalsearch?where=\u0002&loctypes=1/5/9/11/13/19/\u000134",
+ "spark": "http://weatherspark.com/#!dashboard;q=\u0002\u00010"
+ },
+ "athforyou": "//www.weatherforyou.com/reports/index.php?forecast=zandh&pands=\u0002&Submit=Get+Weather\u00010",
+ "eronline": "http://www.weeronline.nl/Go/Search/SearchResults?searchCriteria=\u0002&pageIndex=0&searchAction=WeatherInformation\u00010",
+ "ezer": "http://weezerpedia.com/wiki/index.php?search=\u0002\u00013",
+ "gmans": "//www.wegmans.com/search.html?searchKey=\u0002\u00018",
+ "heartit": "http://weheartit.com/search?query=\u0002\u00010",
+ "hkamp": "http://www.wehkamp.nl/Winkelen/SearchOverview.aspx?N=186&Nty=1&Ntk=ART&VIEW=Grid&Ntt=\u0002\u00010",
+ "ibo": "http://s.weibo.com/weibo/\u0002?frm=opensearch\u000163",
+ "ixin": "//weixin.sogou.com/weixin?type=2&query=\u0002\u00014",
+ "tten": "http://wetten.overheid.nl/zoeken/rs/2,3,4/titel/\u0002/\u00010",
+ "tter": {
+ "*": "http://www.wetter.com/suche/?q=\u0002\u0001224",
+ "de": "http://www.wetter.de/suche.html?search=\u0002\u000120",
+ "online": "//www.wetteronline.de/wetter/\u0002\u00016"
+ }
+ },
+ "f": {
+ "a": "//fa.wikipedia.org/w/index.php?search=\u0002\u000149",
+ "*": "//fr.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u0001694",
+ "i": "//fi.wikipedia.org/wiki/\u0002\u0001328",
+ "m": "http://www.wholefoodsmarket.com/site_search/\u0002 \u00010",
+ "o": {
+ "*": "http://fo.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "otball": "http://www.worldfootball.net/search/?q=\u0002&kind=1\u00010"
+ },
+ "r": {
+ "*": "//fr.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u0001694",
+ "en": "http://www.wordreference.com/fren/\u0002\u000129",
+ "ame": "http://warframe.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1\u0001258"
+ },
+ "t": "//warframe.market/items/\u0002\u00019",
+ "w": {
+ "*": "http://warframe.wikia.com/wiki/Special:WikiaSearch?search=\u0002&fulltext=Search\u0001170",
+ "iki": "http://warframe.wikia.com/wiki/Special:Search?search=\u0002\u00016"
+ },
+ "y": "//fy.wikipedia.org/w/index.php?search=\u0002\u00010",
+ "de": {
+ "p": "http://www.weltfussball.de/suche/?q=\u0002&kind=1\u00010",
+ "t": "http://www.weltfussball.de/suche/?q=\u0002&kind=2\u00010",
+ "*": "http://de.warframe.wikia.com/wiki/Spezial:Suche?search=\u0002\u00010",
+ "hu": "http://www.webforditas.hu/szotar.php?S=\u0002&l1=de&l2=hu\u00010"
+ },
+ "en": {
+ "*": "http://warframe.wikia.com/wiki/Special:Search?query=\u0002\u00010",
+ "hu": "http://www.webforditas.hu/szotar.php?S=\u0002&l1=en&l2=hu\u00010"
+ },
+ "eet": "http://www.wikifeet.com/search/?query=\u0002\u000116",
+ "hude": "http://www.webforditas.hu/szotar.php?S=\u0002&l1=hu&l2=de\u00010",
+ "huen": "http://www.webforditas.hu/szotar.php?S= \u0002&l1=hu&l2=en\u00010"
+ },
+ "g": {
+ "a": {
+ "*": "//ga.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "l": "//gl.wikipedia.org/w/index.php?search=\u0002\u00010"
+ },
+ "e": "//de.wikipedia.org/w/index.php?search=\u0002\u000110203",
+ "l": "//gl.wikipedia.org/w/index.php?search=\u0002\u00010",
+ "r": "//el.wikipedia.org/wiki/Special:Search?search=\u0002 &go=Go&go=Go&go=Go\u00010",
+ "s": "http://www.walgreens.com/search/results.jsp?Ntt=\u0002&x=0&y=0\u00010",
+ "*": "//www.wunderground.com/cgi-bin/findweather/getForecast?query=\u0002\u000111",
+ "w": "http://wiki.wargaming.net/en/index.php?search=\u0002\u00010",
+ "bh": "http://wgbhnews.org/search/google/\u0002 \u00010",
+ "ov": "http://forecast.weather.gov/zipcity.php?inputstring=\u0002 \u0001104"
+ },
+ "h": {
+ "c": "//classic.wowhead.com/search?q=\u0002\u00010",
+ "e": {
+ "s": "//es.wikihow.com/wikiHowTo?search=\u0002\u00010",
+ "*": "//he.wikipedia.org/w/index.php?search=\u0002\u000117"
+ },
+ "h": "//www.webhostinghub.com/help/search?searchword=\u0002\u00010",
+ "i": {
+ "p": "//www.wordhippo.com/what-is/another-word-for/\u0002.html\u000130",
+ "*": "http://hi.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "ch": {
+ "*": "//search.which.co.uk/search?w=\u0002\u00013",
+ "it": "//www.getwhichit.com/whichitapp.html#!/Search/\u0002\u00010"
+ },
+ "tl": "http://www.archives.nd.edu/cgi-bin/wordz.pl?keyword=\u0002\u00010",
+ "rlpool": "http://forums.whirlpool.net.au/forum/?action=search&q=\u0002\u00019",
+ "skyde": "//www.whisky.de/shop/index.php?&cl=search&searchparam=\u0002\u00010",
+ "sper": "http://whisper.sh/search?q=\u0002\u00016",
+ "takers": "http://www.archives.nd.edu/cgi-bin/wordz.pl?english=\u0002\u00010",
+ "tetailproperties": "//www.whitetailproperties.com/hunting-land/filtered-search?search_mode=all&keywords=\u0002\u00010"
+ },
+ "o": {
+ "w": {
+ "*": "http://www.wikihow.com/Special:LSearch?search=\u0002\u00014",
+ "es": "//es.wikihow.com/wikiHowTo?search=\u0002\u00010"
+ },
+ "*": "http://www.who.is/whois/\u0002 \u000118",
+ "is": {
+ "*": "//whois.domaintools.com/\u0002\u0001778",
+ "bg": "http://www.whoisbg.com/?domain=\u0002\u00010",
+ "br": "//registro.br/cgi-bin/whois/?qr=\u0002\u00010",
+ ".com": "http://www.whois.com/search.php?query=\u0002\u000119"
+ },
+ "pm": "//who.pm/\u0002\u00010",
+ "hosts": "http://www.whoishostingthis.com/?q=\u0002\u00010",
+ "int": "//www.who.int/search?query=\u0002\u00010",
+ "izh": "http://whoiz.herokuapp.com/lookup?url=\u0002\u000126",
+ "nix": "http://kkkkkkkkkk63ava6.onion/w/index.php?search=\u0002\u00010",
+ "sampled": "http://whosampled.com/search/?q=\u0002\u0001202",
+ "scalltw": "//whoscall.com/en-US/tw/\u0002\u00010",
+ "scored": "http://www.whoscored.com/Search/?t=\u0002\u000116"
+ },
+ "r": "http://hr.wikipedia.org/w/index.php?search=\u0002\u000111",
+ "t": "//www.who-hosts-this.com/?s=\u0002\u00014",
+ "u": "//hu.wikipedia.org/w/index.php?search=\u0002&button=&title=Speci%C3%A1lis%3AKeres%C3%A9s\u0001102",
+ "*": "http://www.wikihow.com/wikiHowTo?search=\u0002\u000151",
+ "w": "http://wikihow.com/wikiHowTo?search=\u0002\u00010",
+ "de": "//de.wikihow.com/wikiHowTo?search=\u0002:\u00010",
+ "fr": "//fr.wikihow.com/wikiHowTo?search=\u0002\u00010",
+ "lp": "//forums.whirlpool.net.au/forum/?action=search&q=\u0002\u000116",
+ "nl": "//nl.wikihow.com/wikiHowTo?search=\u0002\u00010",
+ "ale": "//store.whale.naver.com/search/\u0002\u00010",
+ "ats": "//www.vocabulary.com/dictionary/\u0002\u000115",
+ "atif": "http://duckduckgo.com/?q=\u0002+site:what-if.xkcd.com\u00010",
+ "atis": "http://whatis.techtarget.com/wsearchResults/1,290214,sid9,00.html?query=\u0002\u00010",
+ "atcms": "http://whatcms.org/?s=\u0002\u00014",
+ "atruns": "//www.whatruns.com/website/\u0002\u00010",
+ "atupintown": "//whatupintown.com/search/?q=\u0002\u00010",
+ "foods": "http://whfoods.org/sitesearch.php?sstr=\u0002&how=1\u00010"
+ },
+ "i": {
+ "a": "http://www.wiki-aventurica.de/index.php?title=Spezial:Suche&search=\u0002\u00010",
+ "d": "//id.wikipedia.org/w/index.php?search=\u0002\u000116",
+ "e": "//www.wie-sagt-man-noch.de/synonyme/\u0002.html\u00010",
+ "m": {
+ "p": "http://www.wimp.com/search/\u0002\u00010",
+ "*": "//commons.wikimedia.org/w/index.php?search=\u0002\u0001157"
+ },
+ "n": {
+ "c": "http://incubator.wikimedia.org/w/index.php?title=Special%3ASearch&search=\u0002\u00010",
+ "d": {
+ "*": "//www.wind.gr/search?_dyncharset=utf-8&Dy=1&Ntt=\u0002\u00010",
+ "ev": "//wpdev.uservoice.com/search?query=\u0002\u00010",
+ "owparts": "http://www.windowparts.co.uk/catalogsearch/result/?q=\u0002\u00010",
+ "owsphone": "//www.microsoft.com/en-us/search/result.aspx?q=\u0002&form=apps\u00016",
+ "owsreport": "http://windowsreport.com/?s=\u0002\u00010"
+ },
+ "e": {
+ "*": "http://winehq.org/search?cx=partner-pub-0971840239976722%3Aw9sqbcsxtyf&cof=FORID%3A10&q=\u0002\u000144",
+ "hq": "//www.winehq.org/search?q=\u0002\u000142"
+ },
+ "*": "http://windows.microsoft.com/en-US/windows/search#q=\u0002\u000111",
+ "fu": "http://winfuture.de/suche/?cx=001589123709424097799%3Asbdrzmcykc8&cof=FORID%3A11&ie=ISO-8859-1&q=\u0002\u00010",
+ "store": "http://windows.microsoft.com/en-us/windows/search#q=\u0002&s=Store\u00013"
+ },
+ "s": {
+ "h": "//www.wish.com/search/\u0002\u000110",
+ "*": "//is.wikipedia.org/w/index.php?search=\u0002\u00013",
+ "edir": "http://www.wisemarketplace.org/k:\u0002\u00010",
+ "epick": "//themindsjournal.com/?s=\u0002\u00010",
+ "sen": "http://www.wissen.de/wissensserver/search?keyword=\u0002\u00010"
+ },
+ "t": {
+ "*": "http://it.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00011031",
+ "gr": "//el.m.wiktionary.org/wiki/\u0002\u00010",
+ "pl": "//pl.wiktionary.org/wiki/\u0002\u00010"
+ },
+ "*": "//en.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "by": "//wiby.me/?q=\u0002\u00014",
+ "fr": "//fr.wiktionary.org/wiki/\u0002\u00010",
+ "ht": "http://www.whoishostingthis.com/?q=\u0002\u00010",
+ "ki": {
+ "a": {
+ "*": "//community-search.fandom.com/wiki/Special:Search?search=\u0002\u000115",
+ "rt": "http://wikiart.org/en/search/\u0002/1\u00017",
+ "nswers": "http://answers.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns112=1&ns500=1&ns502=1\u00010",
+ "rms": "http://www.wikiarms.com/guns?q=\u0002\u00010"
+ },
+ "c": {
+ "*": "//commons.wikimedia.org/w/index.php?search=\u0002\u0001157",
+ "hip": {
+ "s": "//en.wikichip.org/w/index.php?title=Special%3ASearch&search=\u0002\u00010",
+ "*": "//en.wikichip.org/w/index.php?search=\u0002\u00010"
+ },
+ "ook": "//en.wikibooks.org/wiki/Special:Search?search=\u0002&prefix=Cookbook%3A&fulltext=Search+Cookbook&fulltext=Search\u00010"
+ },
+ "t": {
+ "*": "http://wikitravel.org/en/Special:Search?search=\u0002&go=Go\u000124",
+ "ox": "http://curriculum.toxicology.wikispaces.net/search/view/\u0002\u00010",
+ "ravel": "http://wikitravel.org/en/Special:Search?search=\u0002&go=Go\u000124",
+ "roid": "http://metroid.wikia.com/wiki/Special:Search?search=\u0002\u00010"
+ },
+ "*": "//en.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "br": "//pt.wikipedia.org/wiki/\u0002\u00014",
+ "de": {
+ "*": "http://de.wikipedia.org/w/index.php?search=\u0002 \u0001808",
+ "x": "//www.wikidex.net/index.php?search=\u0002\u0001109",
+ "vi": "//wikidevi.com/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010"
+ },
+ "en": "//en.wikipedia.org/w/index.php?search=\u0002&title=Special:Search\u0001669",
+ "es": "//es.wikipedia.org/w/index.php?search=\u0002\u000182",
+ "fr": "//fr.wikipedia.org/wiki/Special:Search?search=\u0002\u0001236",
+ "id": "//id.wikipedia.org/w/index.php?search=\u0002 \u00014",
+ "ko": "//ko.wikipedia.org/wiki/\u0002\u00010",
+ "nl": "//nl.wikipedia.org/w/index.php?search=\u0002\u000116",
+ "pt": "//pt.wikipedia.org/wiki/\u0002\u00014",
+ "ru": "//ru.wikipedia.org/w/index.php?search=\u0002\u00017",
+ "vg": "http://wiki.vg/index.php?search=\u0002\u00010",
+ "books": "http://en.wikibooks.org/w/index.php?title=Special%3ASearch&search=\u0002\u00019",
+ "bound": "http://wikibound.info/index.php?title=Special%3ASearch&search=\u0002&fulltext=Search\u00010",
+ "data": "//www.wikidata.org/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u0001120",
+ ".de": "//de.wikipedia.org/w/index.php?search=\u0002\u000110203",
+ ".pl": "//pl.wikipedia.org/wiki/\u0002\u00010",
+ ".splunk": "http://wiki.splunk.com/Special:SplunkSearch/wiki?q=\u0002\u00010",
+ "feet": "//www.wikifeet.com/search/\u0002\u000115",
+ "fur": "//en.wikifur.com/wiki/Special:Search?search=\u0002&go=Go\u00013",
+ "how": "//www.wikihow.com/wikiHowTo?search=\u0002\u000191",
+ "hybris": "//wiki.hybris.com/dosearchsite.action?queryString=\u0002\u00010",
+ "index": "http://wikiindex.org/index.php?search=\u0002\u00010",
+ "leaks": "//search.wikileaks.org/?q=\u0002\u00014",
+ "lengua": "http://www.wikilengua.org/index.php/Especial:Buscar?search=\u0002&fulltext=Buscar\u00010",
+ "loc": "http://www.wikiloc.com/wikiloc/find.do?q=\u0002\u00010",
+ "mapia": "http://www.wikimapia.org/#search=\u0002\u00017",
+ "mini": "//fr.wikimini.org/w/index.php?search=\u0002&title=Sp%C3%A9cial%3ARecherche&fulltext=Rechercher\u00010",
+ "moon": "http://wikimoon.org/index.php?search=\u0002\u00010",
+ "news": "http://en.wikinews.org/w/index.php?title=Special%3ASearch&redirs=0&search=\u0002\u00010",
+ "painting": {
+ "s": "http://www.wikipaintings.org/en/search/\u0002/1\u00010",
+ "*": "http://www.wikipaintings.org/en/search/\u0002/1\u00010"
+ },
+ "pedia": {
+ "*": "//en.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "de": "//de.wikipedia.org/w/index.php?search=\u0002\u000110203",
+ "it": "//it.wikipedia.org/w/index.php?search=\u0002\u000124"
+ },
+ "pediocracy": "http://wikipediocracy.com/?s=\u0002\u00010",
+ "quote": "//en.wikiquote.org/w/index.php?search=\u0002\u000127",
+ "rby": "http://wikirby.com/w/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00015",
+ "rhymer": "http://wikirhymer.com/words/\u0002\u00010",
+ "sco": "//sco.wikipedia.org/w/index.php?search=\u0002\u00010",
+ "search": "http://www.wiki.com/results1.htm?cx=009420061493499222400%3Ae8sof1xaq-u&q=\u0002&btnG=Wiki+Search&cof=GIMP%3A009900%3BT%3A000000%3BALC%3AFF9900%3BGFNT%3AB0B0B0%3BLC%3A003F7D%3BBGC%3AFFFFFF%3BVLC%3A666666%3BGALT%3A36A200%3BFORID%3A9%3B&as_q=on\u00010",
+ "simple": "//simple.wikipedia.org/wiki/Special:Search?search=\u0002\u00014",
+ "source": "//en.wikisource.org/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u000115",
+ "species": "//en.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "sum": "http://www.wikisummaries.org/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "versity": "//en.wikiversity.org/w/index.php?search=\u0002\u00010",
+ "voyage": {
+ "*": "http://en.wikivoyage.org/w/index.php?search=\u0002\u000133",
+ "de": "//de.wikivoyage.org/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010",
+ "el": "//el.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "en": "//en.wikivoyage.org/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010",
+ "es": "//es.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "fr": "//fr.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "he": "//he.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "it": "//it.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "nl": "//nl.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "pl": "//pl.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "pt": "//pt.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "ro": "//ro.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "ru": "//ru.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "sv": "//sv.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "uk": "//uk.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "vi": "//vi.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "zh": "//zh.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010"
+ },
+ "-vn": "//vi.wikipedia.org/w/index.php?search=\u0002\u00010",
+ "wand": "http://www.wikiwand.com/en/\u0002\u000110",
+ "zimbra": "//wiki.zimbra.com/index.php?search=\u0002\u00010",
+ "zionario": "//it.wiktionary.org/wiki/\u0002\u00010"
+ },
+ "kt": {
+ "*": "http://en.wiktionary.org/wiki/Special:Search?search=\u0002&go=Define\u0001874",
+ "br": "//br.wiktionary.org/w/index.php?search=\u0002\u00010",
+ "de": "http://de.wiktionary.org/wiki/Special:Search?search=\u0002&go=Go\u000165",
+ "en": "http://en.wiktionary.org/wiki/Special:Search?search=\u0002&go=Define\u0001874",
+ "eo": "//eo.wiktionary.org/w/index.php?search=\u0002\u00010",
+ "es": "//es.wiktionary.org/w/index.php?search=\u0002\u00018",
+ "fr": "//fr.wiktionary.org/wiki/\u0002\u00010",
+ "gr": "//el.m.wiktionary.org/wiki\u0002\u00010",
+ "hu": "//hu.wiktionary.org/w/index.php?search=\u0002&title=Speci%C3%A1lis%3AKeres%C3%A9s\u00010",
+ "it": "http://it.wiktionary.org/w/index.php?search=\u0002&title=Speciale%3ARicerca\u00014",
+ "ja": "//ja.wiktionary.org/wiki/\u0002\u00010",
+ "ko": "//ko.wiktionary.org/wiki/\u0002\u00010",
+ "la": "//la.wiktionary.org/wiki/Special:Search?search=\u0002&go=Define\u00010",
+ "nl": "//nl.wiktionary.org/w/index.php?search=\u0002&title=Speciaal%3AZoeken\u000132",
+ "no": "//no.wiktionary.org/w/index.php?search=\u0002\u00010",
+ "pt": "//pt.wiktionary.org/wiki/\u0002\u00013",
+ "ru": "//ru.wiktionary.org/w/index.php?search=\u0002\u00018",
+ "sv": "//sv.wiktionary.org/w/index.php?search=\u0002&title=Special%3AS%C3%B6k\u000120",
+ "ionary": "http://en.wiktionary.org/wiki/Special:Search?search=\u0002&go=Define\u0001874"
+ },
+ "on": "http://www.wionews.com/search?q=\u0002\u00010",
+ "re": {
+ "d": "//www.wired.com/search/?q=\u0002&page=1&sort=score\u00014",
+ "*": "//www.thewire.co.uk/search/?q=\u0002\u00010",
+ "cutter": "http://thewirecutter.com/search/?s=\u0002\u0001196"
+ },
+ "zh": "//zh.wikipedia.org/w/index.php?search=\u0002\u000158",
+ "ckes": "//www.wickes.co.uk/search?text=\u0002\u00010",
+ "ctionary": "//en.wiktionary.org/wiki/\u0002\u0001105",
+ "-fi": "http://fi.wikipedia.org/w/index.php?search=\u0002 \u00010",
+ "ggle": "http://www.wiggle.co.uk/?s=\u0002\u000117",
+ "kru": "//ru.wiktionary.org/w/index.php?search=\u0002\u00018",
+ "ley": "//www.onlinelibrary.wiley.com/action/doSearch?AllField=\u0002\u00010",
+ "lko": "http://www.wilko.com/search?q=\u0002\u00010",
+ "llh": {
+ "*": "http://blog.miniasp.com/search.aspx?q=\u0002\u00010",
+ "aben": "http://www.willhaben.at/iad/kaufen-und-verkaufen/marktplatz?keyword=\u0002&x=0&y=0\u000163"
+ },
+ "lliamssonoma": "http://www.williams-sonoma.com/search/results.html?words=\u0002\u00010",
+ "ringa": "//wiringa.nl/search?q=\u0002\u00010",
+ "ringherlant": "http://www.wiringherlant.nl/?s=\u0002\u00010"
+ },
+ "j": {
+ "a": "http://ja.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u0001270",
+ "*": "//ja.wikipedia.org/wiki/\u0002\u0001140",
+ "ec": "http://www.wjec.co.uk/search/pf_search.php?q=\u0002\u00010",
+ "vf": "//wiki.jvflux.com/index.php?title=Spécial:Recherche&search=\u0002\u00010"
+ },
+ "k": {
+ "b": "//bugs.webkit.org/buglist.cgi?quicksearch=\u0002\u00010",
+ "d": {
+ "*": "//wikidevi.com/w/index.php?search=\u0002\u00010",
+ "x": "//www.wikidex.net/index.php?title=Especial:Buscar&search=\u0002\u00010"
+ },
+ "k": "//kk.wikipedia.org/w/index.php?search=\u0002\u00010",
+ "l": {
+ "t": "//lt.wiktionary.org/w/index.php?search=\u0002\u00010",
+ "*": "//www.wikiloc.com/wikiloc/find.do?q=\u0002\u00010"
+ },
+ "m": "//en.m.wikipedia.org/wiki/\u0002\u00018",
+ "n": "//kn.wikipedia.org/w/index.php?search=\u0002\u00010",
+ "o": "//ko.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u0001150",
+ "p": "http://www.wykop.pl/szukaj/\u0002/?\u00014",
+ "s": {
+ "p": "//species.wikimedia.org/w/index.php?search=\u0002\u00010",
+ "*": "//species.wikimedia.org/w/index.php?search=\u0002\u00010"
+ },
+ "u": "//en.wikiversity.org/w/index.php?search=\u0002\u00010",
+ "*": "//en.wikipedia.org/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00011621",
+ "an": "http://nl.wikisage.org/w/index.php?search=\u0002&title=Speciaal%3AZoeken&go=OK\u00010",
+ "it": "//it.wiktionary.org/w/index.php?search=\u0002\u00010",
+ "tde": "http://de.wiktionary.org/w/index.php?search= \u0002\u000113",
+ "ten": "//en.wiktionary.org/wiki/\u0002\u0001105"
+ },
+ "l": {
+ "a": "//la.wikipedia.org/w/index.php?search=\u0002 \u00010",
+ "n": "//a.next.westlaw.com/Search/Results.html?query=\u0002&jurisdiction=ALLCASES\u00016",
+ "r": "http://reference.wolfram.com/search/?q=\u0002\u00010",
+ "t": "//lt.wikipedia.org/w/?search=\u0002\u00013",
+ "v": "//lv.wikipedia.org/w/index.php?search=\u0002\u00010",
+ "*": "//search.wikileaks.org/?q=\u0002\u00014",
+ "w": "//www.wlw.de/search?suchbegriff=\u0002\u00010",
+ "95": "//www.youtube.com/user/WiiLord95/search?query=\u0002\u00010",
+ "de": "http://www.wunschliste.de/suche/\u0002\u00010",
+ "fr": "http://fr.wikiloc.com/wikiloc/find.do?q=\u0002\u00010",
+ "hb": "//www.willhaben.at/iad/kaufen-und-verkaufen/marktplatz?keyword=\u0002\u00010"
+ },
+ "m": {
+ "c": {
+ "c": "//commons.wikimedia.org/w/index.php?search=\u0002&ns14=1\u00010",
+ "*": "//commons.wikimedia.org/w/index.php?title=Special%3ASearch&search=\u0002\u0001217"
+ },
+ "e": {
+ "*": "http://wolnemedia.net/?s=\u0002\u00010",
+ "ta": "http://meta.wikimedia.org/w/index.php?title=Special%3ASearch&search=\u0002\u00010"
+ },
+ "l": "//ml.wikipedia.org/w/index.php?search=\u0002\u00010",
+ "o": "//public.wmo.int/en/search?search_api_views_fulltext=\u0002\u00010",
+ "t": "http://mt.wikipedia.org/w/index.php?search=\u0002\u00010",
+ "v": "http://www.meteovista.com/Go/Search/SearchResults?searchCriteria=\u0002&pageIndex=0&searchAction=WeatherInformation\u00010",
+ "*": "http://en.m.wikipedia.org/wiki?search=\u0002\u0001443",
+ "y": "//my.wikipedia.org/w/index.php?title=Special:Search&search=\u0002\u00010",
+ "de": "//de.m.wikipedia.org/w/index.php?search=\u0002\u000117",
+ "fr": "//fr.m.wikipedia.org/w/index.php?search=\u0002\u00010",
+ "id": "//passport.webmoney.ru/asp/CertView.asp?wmid=\u0002\u00010",
+ "se": "//mathematica.stackexchange.com/search?q=\u0002\u00010",
+ "sr": "//sr.m.wikipedia.org/wiki/\u0002\u00010",
+ "dns": "//www.whatsmydns.net/#A/\u0002\u00018",
+ "phab": "//phabricator.wikimedia.org/search/?query=\u0002\u00010"
+ },
+ "n": {
+ "d": "http://www.wandaloo.com/search-result.php?pg=1&q=\u0002&w=news&m=pertinence\u00010",
+ "g": "//world.wng.org/search/site/\u0002\u00010",
+ "k": "//www.wordnik.com/words/?myWord=\u0002\u000120",
+ "l": "//nl.wikipedia.org/w/index.php?search=\u0002\u000116",
+ "n": "//nn.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00015",
+ "o": "//no.wikipedia.org/w/index.php?search=\u0002\u0001210",
+ "p": "http://www.wnp.pl/wyszukiwanie.html?szukaj=\u0002\u00010",
+ "v": "http://wagingnonviolence.org/?s=\u0002\u00010",
+ "*": "//en.wikinews.org/wiki/Special:Search?search=\u0002\u0001157",
+ "yc": "http://www.wnyc.org/search/?q=\u0002\u00010",
+ "all": "//duckduckgo.com/?q=\u0002+site%3Awikinews.org\u00010",
+ "etwork": "//www.theweathernetwork.com/search?q=\u0002\u00010"
+ },
+ "o": {
+ "b": "http://www.worldofboardgames.com/webshop-sok.php?searchString=\u0002&search=S%F6k\u00010",
+ "l": {
+ "f": {
+ "*": "//www.wolframalpha.com/input/?i=\u0002\u000120",
+ "ram": {
+ "*": "//www.wolframalpha.com/input/?i=\u0002\u000120",
+ "alpha": "//www.wolframalpha.com/input/?i=\u0002\u000120"
+ }
+ },
+ "*": "http://wol.jw.org/wol/finder?q=\u0002\u000131",
+ "w": "//westofloathing.gamepedia.com/index.php?search=\u0002\u00010",
+ "sv": "//wol.jw.org/wol/finder?wtlocale=Z&q=\u0002\u00010"
+ },
+ "o": {
+ "d": {
+ "*": "http://www.wood-database.com/?s=\u0002\u00010",
+ "brass": "//www.woodbrass.com/advanced_search_result.php?keywords=\u0002\u00010",
+ "mac": "//www.woodmac.com/store/search/?q=\u0002\u00010"
+ },
+ "k": {
+ "*": "//www.wook.pt/pesquisa/\u0002\u00018",
+ "ie": {
+ "*": "http://starwars.wikia.com/wiki/Special:Search?search=\u0002&go=&fulltext=Search\u000168",
+ "epedia": "http://starwars.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search&ns0=1&ns14=1\u000152"
+ }
+ },
+ "*": "http://wooordhunt.ru/word/\u0002\u000157",
+ "rd": {
+ "*": "//www.woorden.org/woord/\u0002\u000112",
+ "enlijst": "http://woordenlijst.org/zoek/?q=\u0002&w=w\u000142"
+ },
+ "lies": "//www.woolworths.com.au/shop/search/products?searchTerm=\u0002\u000121",
+ "lworths": "//www.woolworths.com.au/shop/search/products?searchTerm=\u0002\u000121",
+ "roll": "http://www.wooroll.com/search.html?q=\u0002&ref=duckduckgo\u00010"
+ },
+ "s": {
+ "c": "//gateway.webofknowledge.com/gateway/Gateway.cgi?GWVersion=2&SrcApp=WEB&SrcAuth=ProQuest&DestApp=UA&DestLinkType=GeneralSearchSummary&topic=\u0002\u00017",
+ "m": "http://wiki.openstreetmap.org/w/index.php?search=\u0002\u0001207",
+ "*": "http://www.worldofspectrum.org/infoseek.cgi?regexp=\u0002&model=any&loadpics=3&fast=on\u00010",
+ "rs": "//oldschool.runescape.wiki/?search=\u0002&title=Special:Search&go=Go\u00010"
+ },
+ "t": {
+ "*": "//www.mywot.com/en/scorecard/\u0002\u00015",
+ "if": "http://www.wotif.com/search/TextSearch?searchTerms=\u0002\u00010",
+ "wiki": "http://wiki.wargaming.net/en/index.php?search=\u0002\u00010"
+ },
+ "w": {
+ "h": {
+ "c": "//classic.wowhead.com/search?q=\u0002\u00010",
+ "r": "http://ru.wowhead.com/search?q=\u0002\u00010",
+ "*": "http://www.wowhead.com/search?q=\u0002\u0001193",
+ "es": "//es.wowhead.com/search?q=\u0002\u00010",
+ "ead": {
+ "*": "http://www.wowhead.com/search?q=\u0002\u0001193",
+ "de": "http://de.wowhead.com/search?q=\u0002\u000116",
+ "fr": "//fr.wowhead.com/search?q=\u0002\u00010"
+ }
+ },
+ "*": "//worldofwarcraft.com/search?q=\u0002\u000129",
+ "ch": "//www.worldofwhisky.ch/suche?controller=search&orderby=position&orderway=desc&search_query=\u0002&submit_search=Search\u00010",
+ "db": "http://www.wowdb.com/search?search=\u0002\u00010",
+ "fr": "//fr.wowhead.com/search?q=\u0002\u00010",
+ "armory": {
+ "*": "http://us.battle.net/wow/en/search?q=\u0002\u00010",
+ "eu": "http://eu.battle.net/wow/en/search?q=\u0002\u00010",
+ "us": "http://us.battle.net/wow/en/search?q=\u0002\u00010"
+ },
+ "battlenet": "http://eu.battle.net/wow/en/search?q=\u0002\u00010",
+ "classic": "//classic.wowhead.com/search?q=\u0002\u00010",
+ "pedia": "http://www.wowpedia.org/index.php?title=Special:Search&search=\u0002\u000136",
+ "progress": "//www.wowprogress.com/search?q=\u0002\u00010",
+ "trk": "//www.wowtrk.com/offers/?keyword=\u0002\u00010",
+ "wiki": "http://www.wowwiki.com/Special:Search?search=\u0002\u00013"
+ },
+ "*": "//www.wetteronline.de/wetter/\u0002\u00016",
+ "x": {
+ "*": "http://www.woxikon.com/?q=\u0002 \u00010",
+ "ikon": "http://synonyme.woxikon.de/synonyme/\u0002.php\u00013"
+ },
+ "rd": {
+ "*": "//www.wordnik.com/words?myWord=\u0002\u000178",
+ "central": "http://wordcentral.com/cgi-bin/student?book=Student&va=\u0002\u00010",
+ "ery": "//wordery.com/search?term=\u0002\u00010",
+ "hippo": "//www.wordhippo.com/what-is/another-word-for/\u0002.html\u000130",
+ "info": "http://wordinfo.info/results?searchString=\u0002\u00010",
+ "lift": "//wordlift.io/blog/en/?s=\u0002\u00010",
+ "net": "http://wordnetweb.princeton.edu/perl/webwn?s=\u0002&sub=Search+WordNet&o2=&o0=1&o7=&o5=&o1=1&o6=&o4=&o3=&h=\u00018",
+ "nik": "http://www.wordnik.com/words/\u0002\u0001188",
+ "press": "http://wordpress.org/search/\u0002\u000129",
+ "reference": "http://www.wordreference.com/es/translation.asp?tranword=\u0002\u0001367",
+ "smyth": "http://www.wordsmyth.net/?level=3&ent=\u0002\u00010",
+ "web": "http://www.wordwebonline.com/search.pl?w=\u0002\u00010"
+ },
+ "rm": {
+ "s": "http://worms2d.info/?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "*": "http://www.wormbase.org/species/c_elegans/gene/\u0002\u000111"
+ },
+ "rt": {
+ "*": "//www.wort-suchen.de/kreuzwortraetsel-hilfe/loesungen/\u0002/\u00010",
+ "en": "//www.worten.es/?qs=\u0002\u00010",
+ "schatz": "http://corpora.uni-leipzig.de/de/res?corpusId=deu_newscrawl_2011&word=\u0002\u00010",
+ "vogel": "http://wortvogel.de/?s=\u0002\u00010"
+ },
+ "erterbuch": {
+ "*": "http://www.woerterbuch.info/?query=\u0002\u00018",
+ "netz": "http://woerterbuchnetz.de/cgi-bin/WBNetz/startGlobalSearch.tcl?stichwort=\u0002\u00010"
+ },
+ "gch": "http://www.wog.ch/index.cfm/search/type/Games/term/\u0002\u00010",
+ "nkette": "//www.wonkette.com/search/?q=\u0002\u00010",
+ "rkatremote": "//workatremote.com/remote-\u0002-jobs\u00010",
+ "rkcircle": "http://www.workcircle.com/jobs/?search=1&query=\u0002\u00010",
+ "rld": {
+ "*": "//world.wng.org/search/site/\u0002}\u00013",
+ "art": "http://www.world-art.ru/search.php?public_search=\u0002&global_sector=all\u00010",
+ "atlas": "//www.worldatlas.com/search?q=\u0002\u00010",
+ "building": "http://worldbuilding.stackexchange.com/search?q=\u0002\u00010",
+ "cat": {
+ "m": "http://worldcatmobile.org/?q=\u0002\u00010",
+ "*": "http://www.worldcat.org/search?qt=worldcat_org_all&q=\u0002\u000181"
+ },
+ "cubeassociation": "//www.worldcubeassociation.org/search?q=\u0002\u00010",
+ "music": "//duckduckgo.com/?q=\u0002+site%3Arootsworld.com%2Crootsworld.org&ia=web\u00010",
+ "ofspectrum": "http://www.worldofspectrum.org/infoseek.cgi?regexp=\u0002&model=any&loadpics=3&fast=on\u00010"
+ },
+ "rshiptogether": "http://worship-songs-resources.worshiptogether.com/search?w=\u0002\u00010",
+ "utick": "//www.woutick.es/?busqueda=\u0002\u00010"
+ },
+ "p": {
+ "d": {
+ "*": "http://wpplugindirectory.org/?s=\u0002\u00010",
+ "ev": "//developer.wordpress.org/?s=\u0002\u000141"
+ },
+ "l": "http://pl.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u0001819",
+ "p": {
+ "l": {
+ "*": "//szukaj.wp.pl/szukaj.html?q=\u0002\u00010",
+ "ugs": "//wordpress.org/plugins/search/\u0002/\u00010",
+ "ugins": "http://wordpress.org/extend/plugins/search.php?q=\u0002&sort=\u00010"
+ },
+ "*": "//wordpress.org/plugins/search/\u0002/\u00010"
+ },
+ "t": {
+ "*": "http://pt.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u0001272",
+ "hemes": "http://wordpress.org/extend/themes/search.php?q=\u0002\u00010"
+ },
+ "*": "http://wordpress.org/search/\u0002\u000129",
+ "fr": "//fr.wikipedia.org/wiki/\u0002\u000123",
+ "se": "http://wordpress.stackexchange.com/search?q=\u0002 \u000110",
+ "acf": "//support.advancedcustomfields.com/forums/search?bbp_search=\u0002\u00010",
+ "ackagist": "//wpackagist.org/search?q=\u0002&type=any&search=\u00010",
+ "beg": "http://www.wpbeginner.com/search/?q=\u0002\u00010",
+ "blog": "http://\u0002.wordpress.com\u00010",
+ "ost": "http://www.washingtonpost.com/newssearch/search.html?st=\u0002\u000158",
+ "vip": "//vip.wordpress.com/?s=\u0002\u00010",
+ "zen": "http://wpzen.pl/?s=\u0002\u00010"
+ },
+ "q": {
+ "*": "//en.wikiquote.org/w/index.php?search=\u0002&title=Special%3ASearch\u000183",
+ "de": "//de.wikiquote.org/w/index.php?search=\u0002&title=Spezial%3ASuche\u00010",
+ "es": "//es.wikiquote.org/w/?search=\u0002\u00010",
+ "it": "//it.wikiquote.org/?q=\u0002:\u00010",
+ "pl": "//pl.wikiquote.org/w/index.php?search=\u0002&title=Specjalna:Szukaj&go=Przejdź\u00010"
+ },
+ "r": {
+ "a": {
+ "*": "//www.wolframalpha.com/input/?i=\u0002\u000120",
+ "nd": "//en.wikipedia.org/wiki/Special:RandomInCategory/\u0002\u00010"
+ },
+ "c": {
+ "*": "http://www.wordreference.com/conj/FrVerbs.aspx?v=\u0002\u00010",
+ "fr": "http://www.wordreference.com/conj/FrVerbs.aspx?v=\u0002\u00010"
+ },
+ "d": {
+ "*": "//www.wiregrind.com/rhyming-dictionary/?word=\u0002\u00010",
+ "en": "http://www.wordreference.com/deen/\u0002\u000122",
+ "es": "http://www.wordreference.com/definicion/\u0002\u000121",
+ "een": "http://www.wordreference.com/deen/\u0002\u000122",
+ "efr": "http://www.wordreference.com/frde/\u0002\u00013"
+ },
+ "e": {
+ "f": "//www.wordreference.com/enfr/\u0002\u0001987",
+ "i": "http://www.wordreference.com/enit/\u0002\u000153",
+ "n": {
+ "*": "http://www.wordreference.com/definition/\u0002\u000140",
+ "de": "http://www.wordreference.com/ende/\u0002\u00016",
+ "es": "http://www.wordreference.com/redirect/translation.aspx?w=\u0002&dict=enes\u0001319",
+ "fr": "//www.wordreference.com/enfr/\u0002\u0001987",
+ "gr": "http://www.wordreference.com/engr/\u0002\u00014",
+ "it": "http://www.wordreference.com/enit/\u0002 \u0001425",
+ "nl": "http://www.wordreference.com/ennl/\u0002\u00010",
+ "pl": "http://www.wordreference.com/enpl/\u0002\u00013",
+ "pt": "http://www.wordreference.com/enpt/\u0002 \u00016",
+ "sp": "http://www.wordreference.com/es/translation.asp?tranword=\u0002\u0001367",
+ "sv": "//www.wordreference.com/ensv/\u0002\u00010",
+ "syn": "http://www.wordreference.com/thesaurus/\u0002\u00018"
+ },
+ "p": "http://www.wordreference.com/pten/\u0002\u00010",
+ "s": {
+ "*": "http://www.wordreference.com/definicion/\u0002\u000121",
+ "en": "http://www.wordreference.com/es/en/translation.asp?spen=\u0002\u0001263",
+ "fr": "http://www.wordreference.com/esfr/\u0002\u000113",
+ "it": "http://www.wordreference.com/esit/\u0002\u000110",
+ "pt": "http://www.wordreference.com/espt/\u0002\u00010",
+ "conj": "http://www.wordreference.com/conj/ESverbs.aspx?v=\u0002\u00010",
+ "sin": "http://www.wordreference.com/sinonimos/\u0002\u00013"
+ },
+ "*": "http://www.wordreference.com/definicion/\u0002\u000121"
+ },
+ "h": {
+ "*": "http://whatreallyhappened.com/search/node/\u0002\u00010",
+ "ymer": "http://wikirhymer.com/words/\u0002\u00010"
+ },
+ "n": {
+ "*": "http://www.wordreference.com/definition/\u0002\u000140",
+ "len": "http://www.wordreference.com/nlen/\u0002\u00010"
+ },
+ "o": "//ro.wikipedia.org/w/index.php?search=\u0002&title=Special%3AC%C4%83utare\u00019",
+ "s": {
+ "e": "http://www.wordreference.com/enes/\u0002\u000142",
+ "f": "http://www.wordreference.com/esfr/\u0002\u000113",
+ "s": "http://www.wordreference.com/sinonimos/\u0002\u00013",
+ "*": "http://www.wordreference.com/es/translation.asp?tranword=\u0002\u0001367",
+ "pconj": "http://www.wordreference.com/conj/ESverbs.aspx?v=\u0002\u00010",
+ "ven": "//www.wordreference.com/ensv/\u0002\u00010",
+ "yes": "//www.wordreference.com/sinonimos//\u0002\u00019"
+ },
+ "u": "//ru.wikipedia.org/wiki/\u0002\u0001387",
+ "*": "http://www.wordreference.com/definition/\u0002\u000140",
+ "fe": "http://www.wordreference.com/fren/\u0002\u000129",
+ "ie": "http://www.wordreference.com/iten/\u0002\u000124",
+ "it": {
+ "*": "http://www.wordreference.com/definizione/\u0002\u000110",
+ "en": "http://www.wordreference.com/iten/\u0002\u000124",
+ "es": "//www.wordreference.com/iten/\u0002\u00014",
+ "conj": "http://www.wordreference.com/conj/ItVerbs.aspx?v=\u0002\u00010"
+ },
+ "pe": "http://www.wordreference.com/enpt/\u0002\u00010",
+ "ro": "http://eprints.whiterose.ac.uk/cgi/search/simple?full=\u0002&_action_search=Search&_order=bytitle&basic_srchtype=ALL&_satisfyall=ALL\u00010",
+ "ze": "//www.wordreference.com/zhen/\u0002\u00010",
+ "frde": "http://www.wordreference.com/frde/\u0002\u00013",
+ "fren": "http://www.wordreference.com/fren/\u0002\u000129",
+ "fres": "http://www.wordreference.com/fres/\u0002\u000116",
+ "frconj": "http://www.wordreference.com/conj/FRverbs.aspx?v=\u0002\u00013",
+ "gren": "http://www.wordreference.com/gren/\u0002\u00013",
+ "ighttools": "http://wright.tools/en/stable/search.html?q=\u0002&check_keywords=yes&area=default\u00010",
+ "plen": "http://www.wordreference.com/plen/\u0002\u00010",
+ "pten": "http://www.wordreference.com/pten/\u0002 \u000115",
+ "ptes": "http://www.wordreference.com/ptes/\u0002\u00010"
+ },
+ "s": {
+ "c": {
+ "o": "//sco.wikipedia.org/w/index.php?search=\u0002\u00010",
+ "*": "http://sc.wikipedia.org/wiki/\u0002\u00010"
+ },
+ "e": {
+ "m": "//www.wesleyseminary.edu/?s=\u0002\u00010",
+ "*": "http://se.wikipedia.org/w/index.php?search=\u0002\u000113"
+ },
+ "g": {
+ "f": "http://www.wsgf.org/mgl?title_op=contains&game_name=\u0002\u00010",
+ "*": "//winningstrategy.games/search/\u0002\u00010"
+ },
+ "h": {
+ "*": "http://en.wikishia.net/view/?search=\u0002\u00010",
+ "fa": "http://fa.wikishia.net/index.php?search=\u0002\u00010"
+ },
+ "i": {
+ "*": "//sl.wikipedia.org/w/index.php?search=\u0002\u00010",
+ "mple": "//simple.wikipedia.org/w/index.php?search=\u0002\u00014"
+ },
+ "j": {
+ "p": "http://wsjp.pl/index.php?szukaj=\u0002&pwh=0\u000130",
+ "*": "//www.wsj.com/search/term.html?KEYWORDS=\u0002&isAdvanced=true&daysback=90d&andor=AND&sort=date-desc&source=wsjarticle,wsjblogs,wsjvideo,interactivemedia,sitesearch,wsjpro\u0001118",
+ "mw": "http://www.marketwatch.com/search?q=\u0002\u00010"
+ },
+ "k": "//sk.wikipedia.org/wiki/Special:Search?search=\u0002\u00013",
+ "l": "http://sl.wikipedia.org/w/index.php?title=Special%3ASearch&profile=default&search=\u0002\u00014",
+ "o": "http://www.wallstreetoasis.com/search/apachesolr_search/\u0002\u00010",
+ "r": "//sr.wikipedia.org/w/index.php?search=\u0002\u00018",
+ "u": "//wayne.edu/search/?q=\u0002&type=all\u00010",
+ "v": "http://sv.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u0001427",
+ "*": "//en.wikisource.org/wiki/Special:Search?search=\u0002&go=Go\u000186",
+ "de": "//de.wikisource.org/w/index.php?search=\u0002\u00010",
+ "fr": "//fr.wikisource.org/w/index.php?search=\u0002&title=Sp%C3%A9cial%3ARecherche&go=Lire\u00018",
+ "ws": "//www.wsws.org/en/search.html?sectionId=&maxResults=100&phrase=\u0002&submit=Search\u00010",
+ "yn": "http://words.bighugelabs.com/\u0002\u00014",
+ "zh": "//zh.wikisource.org/wiki/Special:Search?search=\u0002\u00010",
+ "pec": "//species.wikimedia.org/w/index.php?search=\u0002\u00010"
+ },
+ "t": {
+ "a": "http://www.wtatennis.com/search/query/\u0002\u00010",
+ "e": {
+ "l": "//el.wiktionary.org/wiki/\u0002\u000111",
+ "n": "http://en.wiktionary.org/w/index.php?search=\u0002&button=&title=Special%3ASearch\u00012060",
+ "o": "//eo.wiktionary.org/w/index.php?search=\u0002&title=Speciala%C4%B5o%3ASer%C4%89i&go=Ek!\u00010",
+ "s": {
+ "t": "//www.test.de/suche/?q=\u0002\u00013",
+ "*": "//es.wiktionary.org/w/index.php?search=\u0002&button=&title=Especial%3ABuscar\u00015"
+ },
+ "*": "//te.wikipedia.org/w/index.php?search=\u0002\u00010"
+ },
+ "f": {
+ "i": "//fi.wiktionary.org/w/index.php?search=\u0002&title=Toiminnot%3AHaku\u000172",
+ "*": "//www.mirbsd.org/wtf.cgi?q=\u0002\u00010",
+ "r": "//fr.wiktionary.org/wiki/\u0002 \u0001659"
+ },
+ "g": "//wtg.pt/?s=\u0002\u00010",
+ "h": "//hi.wiktionary.org/w/index.php?search=\u0002\u00010",
+ "l": {
+ "a": "//en.wiktionary.org/wiki/\u0002#Latin\u000113",
+ "*": "http://whatthefuckshouldilistentorightnow.com/artist.php?artist=\u0002\u000115"
+ },
+ "m": "//en.m.wiktionary.org/wiki/\u0002\u000122",
+ "r": {
+ "o": "//ro.wiktionary.org/wiki/\u0002\u00010",
+ "u": "http://ru.wiktionary.org/wiki/Special:Search?search=\u0002&go=Go\u000177",
+ "*": "//tr.wikipedia.org/wiki/Special:Search?search=\u0002\u00010"
+ },
+ "t": {
+ "a": "//ta.wiktionary.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "r": {
+ "*": "http://wttr.in/\u0002\u00010",
+ ".in": "http://wttr.in/\u0002\u00010"
+ },
+ "*": "//tt.wikipedia.org/wiki/\u0002\u00010"
+ },
+ "*": "//en.wiktionary.org/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u000173",
+ "w": "http://wiki.warthunder.com/index.php?search=\u0002 \u00010",
+ "bg": "//bg.wiktionary.org/wiki/\u0002\u00010",
+ "br": "//br.wiktionary.org/wiki/\u0002\u00010",
+ "ca": "//ca.wiktionary.org/wiki/\u0002\u000113",
+ "cz": "//cs.wiktionary.org/wiki/\u0002\u00010",
+ "de": "//de.wiktionary.org/w/index.php?search=\u0002\u0001190",
+ "it": "http://it.wiktionary.org/w/index.php?search=\u0002&title=Speciale%3ARicerca\u00014",
+ "ja": "//ja.wiktionary.org/wiki/\u0002\u00010",
+ "nl": "//nl.wiktionary.org/w/index.php?search=\u0002\u000146",
+ "no": "//no.wiktionary.org/wiki/index.php?title=Special:Search&search=\u0002\u00019",
+ "pl": "//pl.wiktionary.org/w/index.php?search=\u0002\u000135",
+ "pt": "//pt.wiktionary.org/wiki/\u0002\u00013",
+ "sv": "http://sv.wiktionary.org/w/index.php?search=\u0002&button=&title=Special%3AS%C3%B6k\u000166",
+ "vi": "//vi.wiktionary.org/w/index.php?search=\u0002\u00013",
+ "zh": "//zh.wiktionary.org/w/index.php?search=\u0002\u00010",
+ "ionary": "//en.wiktionary.org/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u000173",
+ "oon": "//www.webtoons.com/search?keyword=\u0002\u00017",
+ "sbooks": "//www.wtsbooks.com/index/page/search?FullText=\u0002\u00010"
+ },
+ "u": {
+ "k": "http://uk.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u000132",
+ "l": {
+ "*": "http://corpora.uni-leipzig.de/de/res?corpusId=deu_newscrawl_2011&word=\u0002\u00010",
+ "fila": "http://www.wulfila.be/gothic/browse/search/?find=\u0002&mode=1\u00010"
+ },
+ "s": "//www.walmart.com/search/?query=\u0002&country=US\u000111",
+ "*": "//www.wunderground.com/cgi-bin/findweather/getForecast?query=\u0002\u000111",
+ "rm": {
+ "*": "http://wurmpedia.com/index.php?search=\u0002&fulltext=Search&title=Special%3ASearch\u00010",
+ "web": "http://www.wurmweb.at/?s=\u0002\u00010"
+ },
+ "age": "//s.wuage.com/product/search?keywords= \u0002\u00010",
+ "ming": "http://www.wumingfoundation.com/giap/?s=\u0002\u00010",
+ "nderground": "//www.wunderground.com/cgi-bin/findweather/getForecast?query=\u0002\u000111",
+ "nderlist": "//www.wunderlist.com/#/search/\u0002\u00010",
+ "rthe": "//www.we-online.com/web/en/wuerth_elektronik/searchpage.php?search=\u0002\u00010"
+ },
+ "v": {
+ "l": "//worldvectorlogo.com/search/\u0002\u00010",
+ "o": "http://vo.wikipedia.org/w/index.php?search=\u0002\u00010",
+ "*": "//en.wikivoyage.org/w/index.php?search=\u0002\u0001143",
+ "de": "//de.wikivoyage.org/w/index.php?search=\u0002\u00013",
+ "en": "//en.wikivoyage.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "es": "//es.wikivoyage.org/w/index.php?search=\u0002\u00010",
+ "fr": "//fr.wikivoyage.org/w/index.php?search=\u0002\u00010",
+ "it": "//it.wikivoyage.org/w/index.php?search=\u0002\u00010",
+ "nl": "//nl.wikivoyage.org/w/index.php?search=\u0002\u00010",
+ "pt": "//pt.wikivoyage.org/w/index.php?search=\u0002\u00010",
+ "ru": "//ru.wikivoyage.org/w/index.php?search=\u0002\u00010",
+ "sv": "//sv.wikivoyage.org/w/index.php?search=\u0002\u00010",
+ "ers": "http://en.wikiversity.org/w/index.php?search=\u0002&title=Special%3ASearch\u00010"
+ },
+ "w": {
+ "e": {
+ "n": {
+ "d": "http://www.worldswithoutend.com/searchwwe.asp?st=\u0002\u00010",
+ "*": "http://www.wikiwand.com/en/\u0002\u000110"
+ },
+ "s": "http://www.wikiwand.com/es/\u0002\u00010",
+ "*": "//www.wwe.com/search/all/relevance/\u0002\u00013"
+ },
+ "f": {
+ "r": "//www.wikiwand.com/fr/\u0002\u00014",
+ "*": "//www.worldwildlife.org/search?cx=003443374396369277624%3Av3nraqhmeyk&ie=UTF-8&x=\u0002&sa=\u00010"
+ },
+ "p": {
+ "*": "//www.whatpeopleplay.com/search/all/\u0002\u00010",
+ "t": "//www.wikiwand.com/pt/\u0002\u00010"
+ },
+ "w": {
+ "*": "//publicwww.com/websites/\u0002/\u00016",
+ ".89porno.com": "http://www.89porno.com/?s=\u0002\u000167",
+ "jdic": "http://nihongo.monash.edu/cgi-bin/wwwjdic?1MUE\u0002\u000116"
+ },
+ "*": "//www.wikiwand.com/en/\u0002\u000184",
+ "bw": "http://www.wwbw.com/Search/Default.aspx?src=\u0002\u00010",
+ "dc": "http://asciiwwdc.com/search?q=\u0002\u00010",
+ "de": "//www.wikiwand.com/de/\u0002\u00018",
+ "nl": "http://www.wikiwand.com/nl/\u0002\u00010",
+ "tr": "http://www.wikiwand.com/tr/\u0002\u00010",
+ "zh": "//www.wikiwand.com/zh/\u0002\u00010",
+ "iki": "http://www.wegenwiki.nl/index.php?search=\u0002&title=Speciaal%3AZoeken\u00010",
+ "oof": "http://www.wwoof.net/?s=\u0002\u00010"
+ },
+ "*": "//en.wikipedia.org/wiki/Special:Search?search=\u0002\u0001213889",
+ "y": {
+ "*": "http://www.wykop.pl/szukaj/\u0002\u00016",
+ "nk": "//wynk.in/music/detailsearch/\u0002?q=\u0002\u000115",
+ "nn": "//wynncraft.gamepedia.com/index.php?search=\u0002\u00014",
+ "kop": "http://www.wykop.pl/szukaj/\u0002/\u00018"
+ },
+ "z": {
+ "h": "http://zh.wikipedia.org/w/wiki.phtml?search=\u0002&go=Go\u0001151",
+ "l": "//www.weasyl.com/search?q=\u0002\u00010",
+ "*": "//www.warpzone.ms/?s=\u0002 \u00013",
+ "w": "http://wiki.warpzone.ms/start?do=search&id=\u0002\u00010"
+ },
+ "xd": {
+ "*": "http://synonyme.woxikon.de/synonyme/\u0002.php\u00013",
+ "ev": "//duckduckgo.com/?q=\u0002+site:https://developers.weixin.qq.com/miniprogram/dev\u00010"
+ },
+ "xf": "//forum.wuxiaworld.com/search?Search=\u0002\u00010",
+ "xw": "http://docs.wxwidgets.org/trunk/search.php?query=\u0002\u00010",
+ ".br": "//pt.wikipedia.org/wiki/\u0002\u00014",
+ ".de": "//de.wikipedia.org/w/index.php?search=\u0002\u000110203",
+ ".en": "http://en.wikipedia.org/wiki/Special:Search?search=\u0002\u000169",
+ ".ru": "//ru.wikipedia.org/w/index.php?search=\u0002\u00017",
+ "-es": "//en.wikipedia.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "-hy": "//hy.wikipedia.org/w/index.php?search=\u0002\u00010",
+ "xmp": "//developers.weixin.qq.com/doc/search.html?query=\u0002\u00010"
+ },
+ "y": {
+ "8": "http://www.y8.com/search?utf8=%E2%9C%93&kind=game&q=\u0002\u00015",
+ "a": {
+ "d": {
+ "2": "//www.yad2.co.il/products/all?info=\u0002\u00010",
+ "*": "//slovari.yandex.ru/\u0002/\u00010"
+ },
+ "m": {
+ "a": {
+ "*": "//market.yandex.ru/search?text=\u0002\u000112",
+ "rket": "//ya-market.org/products?search=\u0002\u00010"
+ },
+ "u": {
+ "*": "//music.yandex.ru/search?text=\u0002\u000125",
+ "sic": "//music.yandex.ru/search?text=\u0002\u000125"
+ },
+ "*": "//www.yammer.com/search?search=\u0002\u00016",
+ "go": "http://yamgo.com/search?q=\u0002\u00010"
+ },
+ "n": {
+ "*": "//www.yandex.com/?q=\u0002\u0001234",
+ "dex": {
+ "m": {
+ "*": "http://market.yandex.ru/search.xml?text=\u0002\u000148",
+ "aps": "http://maps.yandex.ru/?text=\u0002 \u000131"
+ },
+ "w": "//yandex.ru/pogoda/\u0002\u00010",
+ "*": "//www.yandex.ru/yandsearch?text=\u0002\u00011351",
+ "en": "http://www.yandex.com/yandsearch?text=\u0002\u0001121"
+ },
+ "swers": "http://answers.yahoo.com/search/search_result;_ylt=AnPnri0ekBBFsWt64sNbHmvj1KIX;_ylv=3?p=\u0002&submit-go=Search+Y!+Answers\u00010"
+ },
+ "t": {
+ "r": "//www.yandex.com.tr/search/?text=\u0002\u000114",
+ "u": "//www.youtube.be/?q=\u0002: \u00010",
+ "*": "//translate.yandex.com/?text=\u0002\u0001228"
+ },
+ "v": "http://yandex.ru/video/search?text=\u0002\u000124",
+ "w": "//yandex.ru/pogoda/search?request=\u0002\u000111",
+ "*": "//yandex.ru/search/?text=\u0002\u00015904",
+ "y": {
+ "*": "//www.yay.bg/index.php?route=product/search&search=\u0002\u000117",
+ "img": "//yayimages.com/search?phrase=\u0002\u00010"
+ },
+ "cy": "//search.yacy.net/yacysearch/index.html?query=\u0002&Enter=&verify=false&nav=filetype%2Cprotocol%2Chosts%2Cauthors%2Ccollections%2Cnamespace%2Ctopics%2Cdate&startRecord=0&indexof=off&meanCount=5&resource=global&prefermaskfilter=&maximumRecords=10&timezoneOffset=0\u00010",
+ "en": "http://yandex.com/yandsearch?text=\u0002&lr=103421\u0001100",
+ "jp": "http://auctions.search.yahoo.co.jp/search?p=\u0002\u000190",
+ "rn": {
+ "*": "//yarnpkg.com/en/packages?q=\u0002\u00013",
+ "pkg": "//yarnpkg.com/en/packages?q=\u0002\u00013"
+ },
+ "bla": "//chinese.yabla.com/chinese-english-pinyin-dictionary.php?define=\u0002 \u00010",
+ "hoo": {
+ "*": "http://search.yahoo.com/search?p=\u0002\u0001159",
+ "finau": "//au.finance.yahoo.com/q?s=\u0002\u000116",
+ "jdic": "http://dic.search.yahoo.co.jp/search?p=\u0002\u00010"
+ },
+ "oota": "//www.yaoota.com/en/search/?q=\u0002\u00010",
+ "slovari": "//slovari.yandex.ru/\u0002\u00010"
+ },
+ "c": {
+ "*": "//hn.algolia.com/?query=\u0002\u000199",
+ "hiejp": "http://chiebukuro.search.yahoo.co.jp/search?p=\u0002\u00010"
+ },
+ "d": {
+ "d": "http://dict.youdao.com/search?q=\u0002\u00015",
+ "e": "//de.yahoo.com/?q=\u0002\u00013",
+ "*": "http://www.yourdictionary.com/search/?ydQ=\u0002\u000119",
+ "ic": "http://dic.search.yahoo.co.jp/search?ei=UTF-8&p=\u0002&stype=full&fr=dic\u00010"
+ },
+ "f": {
+ "c": "http://finance.yahoo.com/echarts?s=\u0002\u0001154",
+ "d": "http://yufid.com/result/?search=\u0002 \u00015",
+ "p": "http://finance.yahoo.com/q/pr?s=\u0002+Profile\u00014",
+ "*": "http://finance.yahoo.com/q?s=\u0002\u0001100",
+ "inance": "http://finance.yahoo.com/q?s=\u0002\u0001100"
+ },
+ "g": {
+ "o": "http://yugioh.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00017",
+ "*": "//www.yeastgenome.org/search?q=\u0002\u000148"
+ },
+ "h": "//yandex.com.tr/harita/?text=\u0002\u000114",
+ "i": {
+ "i": "http://www.yiiframework.com/search/?q=\u0002\u00010",
+ "m": {
+ "*": "http://images.search.yahoo.com/search/images?p=\u0002&fr=alltheweb&ei=utf-8&n=30&x=wrt&y=Search\u00015",
+ "ages": "http://images.search.yahoo.com/search/images;_ylt=A0WTefMw66dLrEoAACeLuLkF?p=\u0002&ei=utf-8&iscqry=&fr=sfp\u00010"
+ },
+ "*": "//images.search.yahoo.com/search/images?p=\u0002\u000182",
+ "dio": "http://www.yidio.com/search/entertainment/\u0002/1?find=\u0002\u00010",
+ "ppy": "//www.yippy.com/search/?v%3Aproject=clusty-new&query=\u0002\u00010"
+ },
+ "j": {
+ "m": "//map.yahoo.co.jp/mapsearch/search?p=\u0002\u00018",
+ "p": "http://search.yahoo.co.jp/search?p=\u0002\u0001134",
+ "r": "//search.yahoo.co.jp/realtime/search?p=\u0002\u0001205",
+ "*": "//search.yahoo.co.jp/search?p=\u0002\u0001878",
+ "tv": "//tv.yahoo.co.jp/search/?q=\u0002\u00010",
+ "isho": "http://dic.search.yahoo.co.jp/search?ei=UTF-8&p=\u0002&fr=dic&stype=prefix\u00010",
+ "wiki": "http://youngjustice.wikia.com/wiki/Special:Search?query=\u0002\u00010"
+ },
+ "n": {
+ "*": "http://yubnub.org/parser/parse?command=\u0002 \u000179",
+ "ab": "//www.youneedabudget.com/?s=\u0002\u000149",
+ "fr": "//fr.news.search.yahoo.com/search?p=\u0002\u00010",
+ "ews": "http://news.search.yahoo.com/news/search?ei=UTF-8&fr=news-us-ss&c=&p=\u0002\u000110"
+ },
+ "o": {
+ "u": {
+ "t": {
+ "v": "//www.youtv.de/suche?search[q]=\u0002\u00010",
+ "*": "//yout.com/search?terms=\u0002\u000151",
+ "ube": {
+ "*": "//www.youtube.com/results?search_query=\u0002\u00011646",
+ "onrepeat": "http://youtubeonrepeat.com/results/?search_query=\u0002\u000117"
+ }
+ },
+ "*": "//www.youtube.com/results?search_query=\u0002\u00011646",
+ "ku": "http://www.soku.com/search_video/q_\u0002\u00010",
+ "la": "//youla.ru/?q=\u0002\u00010",
+ "rs": "//www.yours.org/search?q=\u0002\u00014",
+ "dao": {
+ "d": "http://dict.youdao.com/search?q=\u0002\u00015",
+ "*": "http://www.youdao.com/search?q=\u0002&ue=utf8&keyfrom=web.index\u00010"
+ },
+ "glish": "http://youglish.com/search/\u0002/us\u000140",
+ "loop": "http://youloop.org/search.php?q=\u0002\u00010",
+ "magine": "//www.youmagine.com/search/designs?utf8=%E2%9C%93&search=\u0002\u00010",
+ "pak": "//www.youpak.com/search?q=\u0002\u00010",
+ "rei": "http://yourei.jp/\u0002\u000120",
+ "rglish": "//youglish.com/search/\u0002?\u00010",
+ "rtv": "http://www.yourtv.com.au/guide/search.aspx?q=\u0002\u00010",
+ "version": "//www.bible.com/search/bible?q=\u0002\u00010"
+ },
+ "*": "http://yochicago.com/?s=\u0002\u000134",
+ "pi": "http://www.yopi.de/search?search_str=\u0002\u00010",
+ "bi3d": "//www.yobi3d.com/#!/search?q=\u0002\u00010",
+ "dobashi": "http://www.yodobashi.com/ec/category/index.html?word=\u0002\u0001184",
+ "gscast": "http://yogscast.wikia.com/wiki/index.php?search=\u0002&fulltext=Search\u00010",
+ "mikata": "//yomikatawa.com/kanji/\u0002\u000111",
+ "p.email": "http://www.yopmail.com/en/?login=\u0002\u00010",
+ "pmail": "http://www.yopmail.com/en/index.php?login=\u0002\u000121"
+ },
+ "p": {
+ "p": "//yppedia.puzzlepirates.com/Special:Search?search=\u0002\u00010",
+ "w": "//wiki.yoctoproject.org/wiki/index.php?search=\u0002\u00010",
+ "*": "//www.yellowpages.com/search?search_terms=\u0002\u00018",
+ "y": "http://yippy.com/search/?v%3Aproject=clusty-new&query=\u0002\u00010"
+ },
+ "r": {
+ "i": "//yandex.com/images/search?source=collections&&url=\u0002&rpt=imageview\u000193",
+ "*": "http://www.yr.no/soek/soek.aspx?sted=\u0002\u0001485",
+ "tjp": "//search.yahoo.co.jp/realtime/search?p=\u0002\u0001205"
+ },
+ "s": {
+ "*": "//slovari.yandex.ru/\u0002\u00010",
+ "ports": "//search.yahoo.com/search?p=/\u0002\u00010",
+ "tream": "//ystream.tv/q/?s=\u0002\u00010"
+ },
+ "t": {
+ "b": "//www.youtube.com/results?search_query= \u0002\u00011981",
+ "c": {
+ "c": "//www.youtube.com/results?search_query=\u0002&sp=EgIwAQ%253D%253D\u000110",
+ "h": "//www.youtube.ch/results?search_query=\u0002\u00017",
+ "v": "//www.youtube.com/user/\u0002/videos\u00013",
+ "*": "//www.youtube.com/user/\u0002\u000199"
+ },
+ "d": {
+ "e": "//www.youtube.com/results?search_query=\u0002&gl=DE&hl=de\u000133",
+ "*": "//www.youtube.com/watch?v=\u0002\u000116",
+ "ay": "//www.youtube.com/results?search_query=\u0002&sp=EgIIAg%253D%253D\u00013",
+ "ate": "//www.youtube.com/results?search_query=\u0002&search_sort=video_date_uploaded\u000130"
+ },
+ "g": {
+ "*": "//gaming.youtube.com/results?search_query=\u0002\u00010",
+ "aming": "//gaming.youtube.com/results?search_query=\u0002\u00010"
+ },
+ "h": "//www.youtube.com/feed/history?query=\u0002\u00018",
+ "i": "//in.youtube.com/results?search_query=\u0002\u000186",
+ "j": "//travel.yahoo.co.jp/dhotel/search/?qry=\u0002\u00010",
+ "l": {
+ "*": "//www.youtube.com/results?search_type=videos&search_query=\u0002&search_duration=long&uni=3\u000123",
+ "ist": "//www.youtube.com/results?filters=playlist&lclk=playlist&search_query=\u0002\u00010"
+ },
+ "m": {
+ "u": {
+ "*": "//music.youtube.com/search?q=\u0002\u0001262",
+ "sic": "//music.youtube.com/search?q=\u0002\u0001262"
+ },
+ "x": "//www.youtube.com/results?search_query=\u0002&gl=MX\u00010",
+ "*": "//music.youtube.com/search?q=\u0002\u0001262",
+ "nd": "http://ytmnd.com/search?q=\u0002\u00010"
+ },
+ "n": "//youtubenews.de/?s=\u0002\u000115",
+ "p": "//www.youtube.com/results?q=\u0002&sp=EgIQAw%253D%253D\u000136",
+ "r": {
+ "*": "//translate.yandex.ru/?text=\u0002\u0001218",
+ "en": "//translate.yandex.com/?text=\u0002\u0001228",
+ "ack": "//youtrack.jetbrains.com/issues?q=\u0002\u00016"
+ },
+ "v": {
+ "*": "http://www.yourtv.com.au/guide/search.aspx?q=\u0002\u00010",
+ "ideo": "//www.youtube.com/watch?v=\u0002\u000116"
+ },
+ "w": {
+ "d": "//tw.dictionary.search.yahoo.com/search?p=\u0002\u000164",
+ "*": "http://tw.search.yahoo.com/search?p=\u0002\u000110"
+ },
+ "*": "//www.youtube.com/results?search_query=\u0002\u00011646",
+ "24": "//www.youtube.com/results?q=\u0002&sp=EgIIAg%253D%253D\u00010",
+ "es": "//www.youtube.com/results?search_query=\u0002&gl=ES&hl=es\u000115",
+ "fr": "http://www.youtube.fr/results?search_query=\u0002\u0001299",
+ "or": "http://youtubeonrepeat.com/results/?search_query=\u0002\u000117",
+ "tv": "//tv.youtube.com/search/\u0002\u00017",
+ "us": "//www.youtube.com/results?search_query=\u0002&gl=US\u0001175"
+ },
+ "u": {
+ "*": "//hooktube.com/results?search_query=\u0002\u00010",
+ "m": {
+ "*": "http://www.yummly.com/recipes?q=\u0002\u00016",
+ "e100": "http://yume100prince.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "mly": "http://www.yummly.com/recipes?q=\u0002\u00016"
+ },
+ "bnub": "http://yubnub.org/parser/parse?command=\u0002\u000115",
+ "gioh": {
+ "*": "//yugipedia.com/wiki/Special:Search?search=\u0002&button=Go\u000172",
+ "db": "http://www.db.yugioh-card.com/yugiohdb/card_search.action?ope=1&sess=1&keyword=\u0002&stype=1&ctype=&starfr=&starto=&atkfr=&atkto=&deffr=&defto=&othercon=1\u00014"
+ }
+ },
+ "v": {
+ "r": "http://www.yvr.ca/en/search#q=\u0002\u00010",
+ "*": "//video.search.yahoo.com/search/video?p=\u0002\u000118"
+ },
+ "w": "//duckduckgo.com/?q=site%3Aweather.yahoo.com+\u0002\u000120",
+ "*": "http://search.yahoo.com/search?p=\u0002\u0001159",
+ "z": "http://youzeek.com/?lng=RU#xPAGE_V3-Artist_%3Flng%3DRU%26Artist%3D\u0002%26page%3DGeneral\u000125",
+ "le": "http://haku.yle.fi/?language=fi&UILanguage=fi&q=\u0002\u00010",
+ "mg": {
+ "n": "//www.youmagine.com/search/designs?search=\u0002\u00010",
+ "*": "//yandex.com/images/search?text=\u0002\u0001323"
+ },
+ "yh": "http://yuyuhakusho.wikia.com/wiki/Special:Search?search=\u0002\u00013",
+ "east": "//www.yeastgenome.org/search?q=\u0002&is_quick=true\u00014",
+ "egg": {
+ "*": "//duckduckgo.com/?q=site%3Ahttp%3A%2F%2Fwww.gabrielweinberg.com%2Fblog+\u0002\u00010",
+ "i": "http://www.yeggi.com/q/\u0002/\u000142"
+ },
+ "elp": {
+ "*": "http://www.yelp.com/search?find_desc=\u0002&ns=1&rpp=10&find_loc=\u0001613",
+ "de": "http://www.yelp.de/search?find_desc=\u0002&ns=1&rpp=10&find_loc=\u00010",
+ "sd": "http://www.yelp.com/search?find_desc=\u0002&find_loc=san+diego&ns=1\u00014"
+ },
+ "ellowlu": "http://www.yellow.lu/en/yellow-pages/search?location=&query=\u0002&sort_by=relevance\u00010",
+ "ellownz": "http://yellow.co.nz/yellow+pages/\u0002/New+Zealand\u00010",
+ "entlendeboer": "http://www.yentlendeboer.nl/?s=\u0002\u00010",
+ "esasia": "http://www.yesasia.com/us/search/\u0002/0-0-0-q.\u0002_bpt.48-en/list.html\u00010",
+ "eti": "//yetigogo.com/?q=\u0002\u00010",
+ "lilauta": "//ylilauta.org/\u0002 \u00015",
+ "mail": "//mail.yahoo.com/d/search/keyword=\u0002\u000183",
+ "xmaps": "//maps.yandex.ru/?text=\u0002\u000126"
+ },
+ "z": {
+ "d": {
+ "f": "//www.zdf.de/suche?q=\u0002\u000164",
+ "s": "http://zestedesavoir.com/rechercher/?q=\u0002\u0001148",
+ "w": "//www.zeldadungeon.net/wiki/Special:Search/\u0002\u00010",
+ "*": "//www.zeldadungeon.net/?s=\u0002\u000112",
+ "ic": "http://www.zdic.net/search/?q=\u0002\u00013",
+ "net": "http://www.zdnet.com/search?q=\u0002\u00010",
+ "oom": "http://zdoom.org/w/index.php?search=\u0002\u000137"
+ },
+ "f": {
+ "f": "http://foundation.zurb.com/forum/posts?utf8=✓&search=\u0002&button=\u00010",
+ "*": "//duckduckgo.com/?q=\u0002+site:framework.zend.com\u00010"
+ },
+ "h": {
+ "i": {
+ "*": "http://www.zhihu.com/search?q= \u0002 &type=question\u000130",
+ "hu": "//www.zhihu.com/search?type=content&q=\u0002\u0001368"
+ },
+ "*": "//www.zerohedge.com/search-content?search_api_fulltext=\u0002\u0001228",
+ "en": "http://nciku.com/search/zh/\u0002\u00010"
+ },
+ "u": {
+ "m": {
+ "i": "//www.zumi.pl/\u0002,namapie.html\u00010",
+ "*": "http://search.zum.com/search.zum?query=\u0002\u00010"
+ },
+ "*": "http://www.zeldauniverse.net/?s=\u0002\u00010",
+ "ckerzauber": "http://shop.zuckerzauber.at/epages/es121414.sf/de_AT/?ObjectPath=/Shops/es121414_Caros_Zuckerzauber&ViewAction=DetailSearchProducts&Search=SF-AllStrings&SearchString=\u0002\u00010",
+ "lily": "http://www.zulily.com/\u0002?fromSearch=true&searchTerm=\u0002\u00013",
+ "rbf": {
+ "*": "http://foundation.zurb.com/docs//?q=\u0002: \u00010",
+ "oundation": "http://foundation.zurb.com/docs//?q=\u0002: \u00010"
+ }
+ },
+ "w": {
+ "j": "http://wiki.killuglyradio.com/index.php?title=Special%3ASearch&profile=default&search=\u0002\u00010",
+ "*": "//zelda.gamepedia.com/index.php?search=\u0002\u00014"
+ },
+ "*": "//www.zalando.de/katalog/?q=\u0002\u00015",
+ "z": {
+ "*": "http://www.zerozero.pt/search.php?op=all&inputString=\u0002\u00010",
+ "ounds": "http://www.zzounds.com/prodsearch?q=\u0002\u00010"
+ },
+ "3s": "//zaufanatrzeciastrona.pl/?s=\u0002\u00010",
+ "al": {
+ "*": "//www.zalando.de/katalog/?q=\u0002&qf=1\u00010",
+ "ando": {
+ "*": "//www.zalando.co.uk/catalog/?q=\u0002\u00018",
+ "de": "//www.zalando.de/katalog/?q=\u0002\u00015"
+ }
+ },
+ "ap": {
+ "*": "http://www.zap.co.il/search.aspx?keyword=\u0002\u000131",
+ "iks": "http://www.zapiks.fr/search.php?action=search&search=\u0002 \u00016",
+ "meta": "http://www.zapmeta.es/?vid=l791573315I1470912501&sess=a3a3a303a3a313&template=&asid=zapmeta_es&awc=&de=&nwc=&suggest=1&q=\u0002\u00010",
+ "pos": "//www.zappos.com/\u0002\u000113"
+ },
+ "en": {
+ "o": {
+ "*": "http://www.zeno.org/Zeno/0/Suche?q=\u0002&k=Bibliothek\u00010",
+ "do": "//zenodo.org/search?q=\u0002\u00010"
+ },
+ "*": "//arcade.zenzo.io/search?for=\u0002\u00010",
+ "trum": "//zentrum-online.at/?s=\u0002\u00010"
+ },
+ "ic": "http://www.zic.it/?s=\u0002\u00010",
+ "ip": "//www.zip-codes.com/search.asp?srch-type=fuzzy&q=\u0002\u00018",
+ "kb": "//zkillboard.com/search/\u0002/\u00010",
+ "li": "//www.zli.ch/service/suche/?q=\u0002\u00010",
+ "pl": "//www.zakonyprolidi.cz/hledani?text=\u0002\u00010",
+ "xr": "//elixir.bootlin.com/zephyr/latest/ident/\u0002\u00010",
+ "100": "http://www.z100.com/main.html/?q=\u0002\u00010",
+ "abasearch": "http://www.zabasearch.com/people/\u0002\u00013",
+ "akony": "http://www.zakonypreludi.sk/main/search.aspx?text=\u0002\u00010",
+ "ameq": {
+ "2": "http://eq2.zam.com/search.html?q=\u0002\u00010",
+ "*": "http://everquest.allakhazam.com/search.html?q=\u0002\u00010"
+ },
+ "anran": "http://www.zanran.com/q/?search=\u0002\u00010",
+ "ara": {
+ "*": "http://www.zara.com/webapp/wcs/stores/servlet/ItxSolrSearchingDataCmd?storeId=10701&langId=-5&searchTerm=\u0002\u00013",
+ "goza": "http://www.zaragoza.es/ciudad/servicios/buscar_Web?q=\u0002\u00010"
+ },
+ "argan": "http://www.zargan.com/tr/q/\u0002\u00019",
+ "avvi": "//www.zavvi.com/elysium.search?search=\u0002\u00010",
+ "aycev": "//zaycev.net/search.html?query_search=\u0002\u00010",
+ "bmath": "http://www.zentralblatt-math.org/zbmath/search/?q=\u0002\u00018",
+ "bozi": "http://www.zbozi.cz/hledani/?q=\u0002\u00018",
+ "bsamp": "http://www.zbsamp.com/index.php?action=search2;search=\u0002\u00010",
+ "edat": "//www.zedat.fu-berlin.de/FAQ?q=\u0002\u00010",
+ "eef": "//zeef.com/?query=\u0002&in=all\u00010",
+ "ehrs": "//www.zehrs.ca/search/?search-bar=\u0002\u00010",
+ "eit": "http://www.zeit.de/suche/index?q=\u0002\u000115",
+ "eldapedia": "http://zelda.wikia.com/wiki/Special:Search?search=\u0002\u00010",
+ "eldauniverse": "http://www.zeldauniverse.net/?s=\u0002\u00010",
+ "eldawiki": "//zelda.gamepedia.com/index.php?search=\u0002\u00014",
+ "emljevid": "http://zemljevid.najdi.si/search_maps.jsp?q=\u0002\u00010",
+ "ero": {
+ "*": "http://www.zero.eu/?s=\u0002\u00010",
+ "chan": "http://www.zerochan.net/search?q=\u0002\u000115",
+ "hedge": "http://www.zerohedge.com/search/apachesolr_search/\u0002\u00010"
+ },
+ "etax": "http://zetax.net/search/?q=\u0002\u00010",
+ "etawiki": "//zetawiki.com/w/index.php?search=\u0002\u00010",
+ "ikinf": "//www.zikinf.com/recherche/?query=\u0002\u00010",
+ "illow": "http://www.zillow.com/homes/\u0002_rb/\u0001556",
+ "ivefirmy": "http://www.zivefirmy.cz/?q=\u0002\u00010",
+ "kill": {
+ "*": "//zkillboard.com/search/\u0002 /\u00010",
+ "board": "//zkillboard.com/search/\u0002/\u00010"
+ },
+ "mp3": "http://mp3.zing.vn/tim-kiem/bai-hat.html?q=\u0002 \u00010",
+ "oho": "//search.zoho.com/searchresult?query=\u0002&search_type=all&index_key=-1&embed=false\u00010",
+ "omato": "http://zomato.com/restaurants?q=\u0002\u000113",
+ "oom": {
+ "*": "http://www.zoom.com.br/search?q=\u0002\u000118",
+ "br": "http://www.zoom.com.br/search?q=\u0002\u000118",
+ "thelist": "http://zoomthelist.com/?q=\u0002\u00010",
+ ".us": "//zoom.us/?q=\u0002\u00010"
+ },
+ "oopla": "http://www.zoopla.co.uk/search/?q=\u0002&geo_autocomplete_identifier=&country_code=&flatshare_q=&section=for-sale&search_source=nav&include_shared_ownership=true&include_retirement_homes=true&new_homes=include\u00018",
+ "vab": "http://www.zvab.com/basicSearch.do?anyWords=\u0002\u000113",
+ "von": "http://zvon.org/comp/m/\u0002.html\u00010",
+ "ythom": "//duckduckgo.com/?q=site%3Azythom.blogspot.com+\u0002\u00010"
+ },
+ "و": "//ar.wikipedia.org/wiki/Special:Search?search=\u0002\u00010",
+ "ג": "//www.google.co.il/\u0002\u00010",
+ "γ": "//www.google.gr/?gws_rd=ssl#q=\u0002\u00010",
+ "в": {
+ "*": "//uk.m.wikipedia.org/wiki/\u0002\u00010",
+ "н": "//ru.wikinews.org/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%9F%D0%BE%D0%B8%D1%81%D0%BA?search=\u0002\u00010",
+ "с": "//ru.wiktionary.org/w/index.php?search=\u0002&ns0=1\u00010",
+ "ики": "//ru.wikipedia.org/w/index.php?search=\u0002&\u00010"
+ },
+ "г": {
+ "*": "//google.com/search?hl=ru&q=\u0002\u00010",
+ "к": "//www.google.ru/search?q=\u0002&tbm=isch\u00010",
+ "бг": "//www.google.bg/search?source=hp&q=\u0002\u00010",
+ "ост": "http://docs.cntd.ru/search/intellectual?q=\u0002\u00010"
+ },
+ "л": "http://www.labirint.ru/search/\u0002\u00010",
+ "п": {
+ "*": "//www.google.com/search?q=\u0002\u00013015732",
+ "ш": "//www.google.ru/search?tbm=isch&q=\u0002\u00010"
+ },
+ "ц": "//ru.wikipedia.org/wiki/Special:Search?search=\u0002\u00010",
+ "ш": {
+ "*": "//ru.wikipedia.org/w/index.php?search=\u0002\u00017",
+ "ру": "//ru.wikipedia.org/w/index.php?search=\u0002\u00017"
+ },
+ "я": {
+ "*": "//yandex.ru/yandsearch?text=\u0002\u00010",
+ "к": "//yandex.ru/images/search?text=\u0002\u00010",
+ "м": {
+ "у": "//music.yandex.com/search?text=\u0002\u00010",
+ "*": "//yandex.ru/maps/?text=\u0002\u00010"
+ }
+ },
+ "14": {
+ "0": "//140journos.com/search?q=\u0002\u00010",
+ "*": "//14-tage-wettervorhersage.de/suche/?q=\u0002&lg=de\u000139",
+ "4": "http://b144.co.il/PrivateResults.aspx?&p_name=\u0002\u00010"
+ },
+ "1c": "//1cak.com/search-0-\u0002\u00010",
+ "3m": "http://www.trojmiasto.pl/s/\u0002/\u00010",
+ "3t": {
+ "*": "http://www.tritrans.net/cgibin/translate.cgi?spraak=Engelsk&Fra=\u0002&button=Translate%21\u00010",
+ "ailer": "//3tailer.com/search/?q=\u0002\u00010"
+ },
+ "8a": "//www.8a.nu/scorecard/Search.aspx?Mode=SIMPLE&AscentType=0&CragName=\u0002\u00010",
+ "äx": "//www.levykauppax.fi/search/?q=\u0002\u00010",
+ "'f": "//www.fransktlexikon.se/\u0002\u00010",
+ "/.": {
+ "j": "http://slashdot.jp/index2.pl?fhfilter=\u0002\u00010",
+ "*": "http://slashdot.org/index2.pl?fhfilter=\u0002\u00010"
+ },
+ "l1": {
+ "*": "//level-1.fr/?s=\u0002\u00010",
+ "sp": "http://l1sp.org/search?q=\u0002\u000110"
+ },
+ "la": {
+ "c": {
+ "*": "http://www.bac-lac.gc.ca/eng/collectionsearch/Pages/collectionsearch.aspx?q=\u0002\u00010",
+ "uerda": "http://acordes.lacuerda.net/busca.php?canc=0&exp=\u0002\u00013"
+ },
+ "d": "//glosbe.com/la/en/\u0002\u00010",
+ "f": {
+ "*": "http://www.lafeltrinelli.it/fcom/it/home/pages/catalogo/searchresults.html?srch=0&sort=1&page=1&prkw=\u0002&cat1=1\u00014",
+ "ourchette": "//www.lafourchette.com/search-refine/\u0002\u00010",
+ "tel": "//laftel.net/search?keyword=\u0002\u00010"
+ },
+ "*": "//de.langenscheidt.com/deutsch-englisch/search?term=\u0002\u00016",
+ "m": {
+ "*": "//www.lambdatest.com/blog/?s=\u0002\u00010",
+ "ps": "//www.lamps.com/catalogsearch/result?q=\u0002\u00010",
+ "etayel": "http://forum.lametayel.co.il/index.php?t=search&forum_limiter=0&field=all&search_logic=AND&type=msg&srch=\u0002&btn_submit=\u00010",
+ "hatech": "//www.lamhatech.com/search?q=\u0002\u00010",
+ "laminkings": "//lamlaminkings.com.ng/?s=\u0002&submit=Search\u00010",
+ "mps": "http://lammps.sandia.gov/doc/search.html?q=\u0002\u00010"
+ },
+ "r": {
+ "*": "http://www.larousse.fr/dictionnaires/francais/\u0002\u0001144",
+ "acasts": "//laracasts.com/search?q=\u0002\u00010",
+ "avel": "//laravel.com/docs/\u0002\u0001107",
+ "enfr": "http://www.larousse.fr/dictionnaires/anglais-francais/\u0002\u00010",
+ "esfr": "http://www.larousse.fr/dictionnaires/espagnol-francais/\u0002/\u00010",
+ "fren": "//www.larousse.fr/dictionnaires/rechercher?q=\u0002&l=francais-anglais&culture=\u00016",
+ "fres": "http://www.larousse.fr/dictionnaires/francais-espagnol/\u0002/\u00010",
+ "frit": "//www.larousse.fr/dictionnaires/francais-italien/\u0002/?q=\u0002\u00015",
+ "ousse": "http://www.larousse.fr/dictionnaires/francais/\u0002\u0001144"
+ },
+ "s": {
+ "*": "http://www.perseus.tufts.edu/hopper/morph?&la=la&l=\u0002&la=la\u000117",
+ "er": {
+ "*": "http://lasership.com/track/\u0002\u00010",
+ "ship": "http://lasership.com/track/\u0002\u00010"
+ },
+ "tampa": "http://www.lastampa.it/ricerca?search=\u0002\u00010",
+ "tfm": {
+ "*": "http://www.last.fm/search?q=\u0002\u0001189",
+ "music": "//www.last.fm/music/\u0002\u00013"
+ },
+ "t.fm": "http://www.last.fm/search?q=\u0002&from=ac\u00016"
+ },
+ "t": {
+ "*": "http://www.archives.nd.edu/cgi-bin/wordz.pl?keyword=\u0002\u00010",
+ "in": {
+ "*": "http://www.perseus.tufts.edu/hopper/morph?l=\u0002&la=la\u000132",
+ "o": "//www.dizionario-latino.com/dizionario-latino-italiano.php?parola=\u0002\u00010"
+ },
+ "dict": "http://latin-dictionary.net/search/latin/\u0002\u00010",
+ "einde": "//www.albertmartin.de/latein/?q=\u0002\u00010",
+ "emodelresto": {
+ "*": "http://www.latemodelrestoration.com/product/search?q=\u0002\u00010",
+ "ration": "http://www.latemodelrestoration.com/product/search?q=\u0002\u00010"
+ },
+ "ency": "//latency.apex.sh/?url=\u0002\u00010",
+ "exwb": "//en.wikibooks.org/wiki/Search?search=\u0002&prefix=LaTeX\u000112",
+ "imes": "http://search.latimes.com/search?q=\u0002\u00013",
+ "long": "http://www.latlong.net/search.php?keyword=\u0002\u00010"
+ },
+ "u": {
+ "*": "//www.lau.edu.lb/search/index.php?q=\u0002\u00010",
+ "t": "//www.laut.de/Suche?q=\u0002\u00010",
+ "nchpad": "//launchpad.net/+search?field.text=\u0002\u00013"
+ },
+ "w": {
+ "*": "//www.law.cornell.edu/search/site/\u0002\u00010",
+ "s": "//www.global-regulation.com/search.php?year&country&province&d=1&start&q=\u0002&advanced=false\u00010",
+ "tw": "//law.moj.gov.tw/Law/LawSearchResult.aspx?ty=ONEBAR&kw=\u0002\u00010",
+ "phil": "//cse.google.com/cse?cx=000327027907964447955:65fjwortx5c&q=\u0002&oq=\u0002&gs_l=partner-generic.3...6080.6409.0.9078.4.4.0.0.0.0.157.426.2j2.4.0.gsnos%2Cn%3D13...0.264j30168j4...1.34.partner-generic..2.2.173.cXIan67Quoc\u000112",
+ "yer": "//www.avvo.com/search?query=\u0002\u00010"
+ },
+ "z": {
+ "*": "//www.lazada.com.ph/catalog/?q=\u0002\u000117",
+ "th": "http://www.lazada.co.th/catalog/?scs=0&q=\u0002 \u00010",
+ "adaid": "http://www.lazada.co.id/catalog/?q=\u0002 \u00010",
+ "adaph": "//www.lazada.com.ph/catalog/?q=\u0002\u000117"
+ },
+ "ec": "//laec.fr/recherche?termes=\u0002\u00010",
+ "ng": {
+ "*": "//LanguageTool.org/?text=\u0002\u000115",
+ "en": "//en.langenscheidt.com/german-english/\u0002\u000134"
+ },
+ "pa": {
+ "*": "http://lapatilla.com/?s=\u0002\u00010",
+ "ck": "http://www.netlib.org/lapack/complex16/\u0002.f\u00010",
+ "tria": "http://lapatria.com/?q=\u0002\u00010"
+ },
+ "pl": "//ls2pac.lapl.org/?section=search&term=\u0002\u00010",
+ "bdoor": "//labdoor.com/review?q=\u0002\u00010",
+ "emmle": "//www.laemmle.com/search?q=\u0002\u00010",
+ "inwiki": "//lain.wiki/index.php?search=\u0002\u00010",
+ "nacion": "http://buscar.lanacion.com.ar/\u0002/sort-new\u00010",
+ "npor": "http://www.microsoft.com/Language/en-US/Search.aspx?sString=\u0002&langID=pl-pl\u00010",
+ "opinione": "//laopinione.com/?s=\u0002\u00010",
+ "poste": "http://www.csuivi.courrier.laposte.fr/suivi?id=\u0002\u000110",
+ "ptopdirect": "http://www.laptopdirect.co.za/search.php?SearchTerm=\u0002\u00010",
+ "voro": "http://www.motorelavoro.it/?q=\u0002\u00010"
+ },
+ "lb": {
+ "c": {
+ "*": "http://www.leboncoin.fr/recherche/?text=\u0002\u0001420",
+ "ra": "//www.leboncoin.fr/recherche/?text=\u0002&regions=22\u00010",
+ "idf": "//www.leboncoin.fr/recherche/?text=\u0002&regions=12\u00010"
+ },
+ "f": "//labonneformation.pole-emploi.fr/toutes-les-formations?motscles=\u0002\u00010",
+ "*": "//letterboxd.com/search/\u0002/\u0001554",
+ "p": "//lbp.me/search/v?q=\u0002\u00010",
+ "s": "//www.logos.com/products/search?q=\u0002\u00010",
+ "x": "//letterboxd.com/search/\u0002\u000152"
+ },
+ "lc": {
+ "c": {
+ "*": "http://eng.letscc.net/?t=all&k=\u0002\u00010",
+ "n": "//lccn.loc.gov/\u0002\u00010"
+ },
+ "*": "//laracasts.com/search?q=\u0002\u00010",
+ "r": "http://lxr.free-electrons.com/ident?i=\u0002\u00010",
+ "bs": "//www.luftfahrtclubbraunschweig.de/suchen.php?such=\u0002\u00010",
+ "id": "http://id.loc.gov/search/?q=\u0002&q=\u00010",
+ "sc": "//lcsc.com/search?q=\u0002\u000119",
+ "auth": "http://authorities.loc.gov/cgi-bin/Pwebrecon.cgi?Search_0Arg=\u0002&Search_Code=SHED_&PID=pyauyDhI6ZL9vR3exz9cx8t8BF&SEQ=20161101104025&CNT=100&HIST=1\u00010",
+ "harts": "//www.litcharts.com/search?query=\u0002\u00010",
+ "onj": "//www.larousse.fr/conjugaison/francais/\u0002\u00013",
+ "sgo": "http://wiki.teamliquid.net/counterstrike/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "uerdanet": "http://acordes.lacuerda.net/busca.php?exp=\u0002 \u00010"
+ },
+ "ld": {
+ "a": "http://de.langenscheidt.com/deutsch-arabisch/search?term=\u0002\u00013",
+ "e": "//en.langenscheidt.com/german-english/\u0002\u000134",
+ "*": "http://www.ldoceonline.com/search/?q=\u0002\u000189",
+ "s": {
+ "*": "//www.lds.org/search?lang=eng&query=\u0002 \u000157",
+ "s": "//www.lds.org/scriptures/search?lang=eng&query=\u0002\u00015",
+ "dk": "//www.lav-det-selv.dk/find?q=\u0002\u00010"
+ },
+ "db": "http://www.lddb.com/search.php?search=\u0002\u000110",
+ "lc": {
+ "*": "http://www.ldlc.com/navigation/\u0002/\u000146",
+ "be": "http://www.ldlc.be/navigation/\u0002/\u00010"
+ },
+ "ota": "http://wiki.teamliquid.net/dota2/index.php?search=\u0002\u000146"
+ },
+ "le": {
+ "b": {
+ "*": "http://lowendbox.com/?s=\u0002\u00010",
+ "oncoin": "//www.leboncoin.fr/recherche/?text=\u0002\u000160"
+ },
+ "f": "//www.linguee.com/english-french/search?source=french&query=\u0002\u000137",
+ "i": {
+ "*": "//leifinder.com/search/\u0002/0/15/results.html?\u00013",
+ "fi": "//www.leifiphysik.de/suche?search_api_fulltext=\u0002\u00010",
+ "denlib": "//www.bibliotheek.universiteitleiden.nl/zoeken?q=\u0002\u00010",
+ "surepro": "http://www.leisurepro.com/search?searchinfo=\u0002\u00010"
+ },
+ "n": {
+ "*": "//mothereff.in/byte-counter#\u0002\u00013",
+ "fr": "//www.linguee.fr/francais-anglais/search?source=anglais&query=\u0002\u00017",
+ "ovo": "http://shop.lenovo.com/SEUILibrary/controller/e/web/LenovoPortal/en_US/site.workflow:SimpleSiteSearch?q=\u0002&v=15&lang=en&cc=us&en=utf&Search.x=0&Search.y=0&Search=Search\u00013"
+ },
+ "o": {
+ "c": "http://dict.leo.org/chde?lp=chde&search=\u0002\u00013",
+ "*": "//dict.leo.org/englisch-deutsch/\u0002\u00018153",
+ "e": "http://dict.leo.org/ende?lp=ende&search=\u0002\u0001615",
+ "f": {
+ "*": "http://dict.leo.org/frde?lp=frde&search=\u0002\u0001114",
+ "r": "//dict.leo.org/französisch-deutsch/\u0002\u000190"
+ },
+ "i": "http://dict.leo.org/itde?lp=itde&search=\u0002\u000166",
+ "p": {
+ "*": "http://dict.leo.org/ptde/?lp=ende&lang=de&searchLoc=0&cmpType=relaxed&sectHdr=on&spellToler=&search=\u0002\u00015",
+ "l": "//dict.leo.org/plde/?search=\u0002\u00010",
+ "t": "//dict.leo.org/portugiesisch-deutsch/\u0002\u00010"
+ },
+ "r": {
+ "*": "http://dict.leo.org/rude?lp=rude&search=\u0002\u00010",
+ "u": "//dict.leo.org/russisch-deutsch/\u0002\u000123"
+ },
+ "s": "http://dict.leo.org/esde?lp=esde&search=\u0002\u0001130",
+ "ns": "//www.leons.ca/pages/search-results?limit=48&q=\u0002\u00010"
+ },
+ "s": {
+ "*": "http://www.linguee.es/espanol-ingles/search?source=auto&query=\u0002\u0001123",
+ "fr": "//www.linguee.fr/francais-espagnol/search?source=espagnol&query=\u0002\u00010",
+ "cris": "//duckduckgo.com/?q=site%3Ales-cris.com+\u0002\u00010",
+ "num": {
+ "*": "http://www.lesnumeriques.com/recherche?q=\u0002\u00016",
+ "eriques": "http://www.lesnumeriques.com/recherche.html?q=\u0002&cx=partner-pub-8349656358827352%3A8590362607&cof=FORID%3A10&ie=UTF-8&hl=fr\u00010"
+ },
+ "oir": "//www.lesoir.be/archives/recherche?word=\u0002&sort=date%20desc&datefilter=lastyear&form_build_id=form-OccakxlLTXnbavxnbgZGoqHzkT0bEeOrjy3PPlFais4&form_id=dpidamwidgets_damsimplesearch_content_type_search_form\u00010"
+ },
+ "t": {
+ "*": "http://www.lowendtalk.com/search?Search=\u0002\u00014",
+ "o": "http://letonika.lv/default.aspx?q=\u0002\u000112",
+ "ra": {
+ "*": "//letras.top/results/?q=\u0002\u00010",
+ "s": {
+ "*": "http://letras.mus.br/?q=\u0002 \u000124",
+ "br": "http://letras.mus.br/?q=\u0002\u00010"
+ }
+ },
+ "ssingit": "//search.letssingit.com/?s=\u0002&a=search&l=archive\u00010",
+ "terboxd": "http://letterboxd.com/search/films/\u0002/\u0001267"
+ },
+ "*": "//le.ac.uk/search?q=\u0002\u000112",
+ "el": "//www.clsfyd.com/search-results/?ad_title=\u0002\u00010",
+ "go": {
+ "*": "//search2.lego.com/en-GB/\u0002\u000126",
+ "ideas": "//ideas.lego.com/discover#search/q:\u0002\u00010",
+ "wiki": "//lego.fandom.com/search?query=\u0002\u00010"
+ },
+ "ka": "//www.varusteleka.fi/fi/bestsearch/\u0002?q=\u0002\u000113",
+ "mo": {
+ "*": "//www.hdg.de/lemo/search/?q=\u0002\u00010",
+ "nde": "http://www.lemonde.fr/recherche/?search_keywords=\u0002\u000141"
+ },
+ "vi": "//levidsmith.com/?s=\u0002\u00010",
+ "xp": "http://lexparency.org/eu/EN/search?deep=True&search_words=\u0002\u00010",
+ "xt": "http://www.greek-language.gr/greekLang/modern_greek/tools/lexica/triantafyllides/search.html?lq=\u0002\u00010",
+ "afly": "//www.leafly.com/search?q=\u0002\u000133",
+ "arn": {
+ "*": "//learningapps.org/index.php?s=\u0002\u00010",
+ "dev": "//php.learndev.info/?q=\u0002\u00010",
+ "ersdictionary": "http://www.learnersdictionary.com/definition/\u0002\u000110",
+ "gaelic": "http://www.learngaelic.net/dictionary/index.jsp?slang=both&wholeword=false&abairt=\u0002\u00010",
+ "-js": "http://learn.javascript.ru/search?query=\u0002\u00010",
+ "lol": "//www.reddit.com/r/summonerschool/search/?q=\u0002&restrict_sr=1\u00010",
+ "xiny": "//learnxinyminutes.com/docs/\u0002/\u000114",
+ "zone": "http://learnzone.org.uk/courses/?q=\u0002\u00010"
+ },
+ "cker": "http://www.lecker.de/suche-rezept/\u0002\u00010",
+ "clerc": "//www.culture.leclerc/pageRecherche?q=\u0002&univers=all\u00010",
+ "dict": "http://www.le-dictionnaire.com/resultats.php?mot=\u0002\u00010",
+ "dom": "//ledom.com.ua/search?controller=search&orderby=position&orderway=desc&search_category=all&s=\u0002\u00010",
+ "gal": "http://scholar.google.com/scholar?hl=en&q=\u0002&btnG=Search&as_sdt=2%2C5&as_ylo=&as_vis=0\u000120",
+ "gimi": "//www.legimi.pl/ebooki/?szukaj=\u0002\u00010",
+ "gisqc": "http://legisquebec.gouv.qc.ca/fr/result?command=search&length=10&search_type=all&title_search_type=any&corpus=all&corpusType=c&langCont=fr&fragment=\u0002&shorttitle=&stemmed=stemmed\u00010",
+ "long": "//www.lelong.com.my/catalog/all/list?TheKeyword=\u0002\u00010",
+ "rnabit": "//lernabit.com/search?q=\u0002\u00010",
+ "rnuen": "//lernu.net/en/vortaro/\u0002\u00010",
+ "rnues": "//lernu.net/es/vortaro/\u0002\u00010",
+ "roymerlinit": "//www.leroymerlin.it/ricerca?q=\u0002&page=1\u00010",
+ "wrockwell": "//duckduckgo.com/?q=site%3Alewrockwell.com+\u0002 \u00010",
+ "xin": "http://lexin.udir.no/?search=\u0002&dict=nbo-maxi&ui-lang=NBO&startingfrom=&count=10&checked-languages=E&checked-languages=N\u00010",
+ "xicanum": "http://wh40k.lexicanum.com/mediawiki/index.php?title=Special%3ASearch&search=\u0002\u000117",
+ "xisnexis": "//www.lexisnexis.com.au/en/global-pages/search?query=\u0002\u00010",
+ "xml": "//www.lexml.gov.br/busca/search?keyword=\u0002&f1-tipoDocumento=\u00010"
+ },
+ "lf": {
+ "c": "//old.reddit.com/r/LiverpoolFC/search?q=\u0002&restrict_sr=on\u00010",
+ "*": "http://www.lesfrontaliers.lu/search?text=\u0002\u00010",
+ "m": "http://www.last.fm/music/\u0002/\u0001135",
+ "pl": "http://pac.lfpl.org/polaris/search/searchresults.aspx?&type=Default&by=KW&sort=RELEVANCE&term=\u0002\u00010",
+ "twiki": "http://lapfoxtrax.wikia.com/wiki/Special:Search?search=\u0002&fulltext=Search\u00010"
+ },
+ "lh": {
+ "*": "http://lifehacker.com/search?q=\u0002\u000120",
+ "v": {
+ "*": "http://lehollandaisvolant.net/?q=\u0002\u00010",
+ "l": "http://lehollandaisvolant.net/?mode=links&q=\u0002\u00010"
+ }
+ },
+ "li": {
+ "c": {
+ "*": "//www.linkedin.com/search/results/companies/?keywords=\u0002\u00016",
+ "entium": "//licentium.net/w/index.php?search=\u0002\u00010"
+ },
+ "i": "//www.law.cornell.edu/search/site/\u0002\u00010",
+ "*": "//www.linkedin.com/search/results/all/?keywords=\u0002\u00012905",
+ "m": "//www.limundo.com/pretragaLimundo.php?bSearchBox=1&txtPretraga=\u0002&Submit=\u00010",
+ "n": {
+ "g": {
+ "e": {
+ "*": "http://www.linguee.com/deutsch-englisch/search?source=auto&query=\u0002\u000156",
+ "rka": "//lingerka.pl/catalogsearch/result/?q=\u0002\u00010"
+ },
+ "f": {
+ "e": "http://www.linguee.fr/francais-anglais/search?source=auto&query=\u0002\u000128",
+ "*": "//www.linguee.de/deutsch-franzoesisch/search?source=auto&query=\u0002\u00010",
+ "n": "http://www.linguee.fr/francais-neerlandais/search?source=auto&query=\u0002\u00010",
+ "p": "http://www.linguee.fr/francais-portugais/search?source=auto&query=\u0002\u00010",
+ "r": "http://www.linguee.fr/francais-anglais/search?source=auto&query=\u0002\u000128"
+ },
+ "*": "//ling.pl/slownik/angielsko-polski/\u0002\u000159",
+ "o": "http://www.netlingo.com/search.php?searchtxt=\u0002\u00010",
+ "p": {
+ "f": "http://www.linguee.fr/francais-portugais/search?source=portugais&query=\u0002\u00010",
+ "*": "http://www.linguee.de/deutsch-portugiesisch/search?source=auto&query=\u0002\u00010",
+ "l": "http://www.linguee.pl/angielski-polski/t%C5%82umaczenie/\u0002.html\u00010"
+ },
+ "vo": "//lingvolive.ru/translate/en-ru/\u0002\u000120",
+ "ualeo": "//lingualeo.com/ru/glossary/learn/dictionary#\u0002\u00010",
+ "uee": {
+ "*": "http://www.linguee.de/deutsch-englisch/search?source=auto&query=\u0002\u0001214",
+ "fe": "//www.linguee.de/francais-englisch/search?source=auto&query=\u0002 \u00010"
+ },
+ "ues": "//www.linguee.es/espanol-ingles/search?source=auto&query=\u0002\u000125"
+ },
+ "*": "http://www.linguee.com/english-french/search?source=auto&query=\u0002 \u0001124",
+ "br": "http://www.linguee.com.br/portugues-ingles/search?source=auto&query=\u0002\u000161",
+ "dp": "http://www.linguee.de/deutsch-portugiesisch/search?source=auto&query=\u0002\u00010",
+ "ef": "//www.linguee.com/english-french/search?source=auto&query=\u0002\u000155",
+ "eg": "http://www.linguee.com/english-german/search?source=german&query=\u0002\u00010",
+ "ei": "//www.linguee.it/italiano-inglese/search?query=\u0002\u00010",
+ "en": "http://www.linguee.com/english-dutch/search?source=auto&query=\u0002\u000141",
+ "ep": "http://www.linguee.com/english-portuguese/?query=\u0002\u00010",
+ "es": {
+ "*": "http://www.linguee.com/english-spanish/?query=\u0002\u000128",
+ "in": "http://www.linguee.es/espanol-ingles/search?source=auto&query=\u0002\u0001123"
+ },
+ "fd": "http://www.linguee.fr/francais-allemand/search?source=auto&query=\u0002 \u00010",
+ "fe": "//www.linguee.fr/francais-anglais/search?query= \u0002\u000115",
+ "kl": "//linklocker.co/search?query=\u0002\u00010",
+ "pe": "http://www.linguee.com/english-portuguese/search?source=portuguese&query=\u0002\u00010",
+ "se": "http://www.linguee.com/english-swedish/search?query=\u0002\u00010",
+ "sv": "http://www.linguee.com/english-swedish/search?source=auto&query=\u0002\u00010",
+ "ux": {
+ "*": "//explicativolinux.wordpress.com/?s=\u0002\u000112",
+ "q": "http://www.linuxquestions.org/questions/\u0002\u00010",
+ "fr": "//duckduckgo.com/?q=\u0002+site%3Alinuxfr.org&ia=web\u00013",
+ "mint": "http://forums.linuxmint.com/search.php?keywords=\u0002\u000111",
+ "tracker": "http://linuxtracker.org/index.php?page=torrents&search=\u0002\u00010"
+ },
+ "coder": "http://www.lincoder.com/?s=\u0002:\u00010",
+ "dit": "http://www.linguee.de/deutsch-italienisch/search?source=auto&query=\u0002\u00010",
+ "kedin": "//www.linkedin.com/search/results/all/?keywords=\u0002\u00012905",
+ "kiesta": "http://www.linkiesta.it/cerca/\u0002\u00010",
+ "kup": "http://www.linkup.com/results.php#q=\u0002\u00010",
+ "-nlen": "http://www.linguee.nl/nederlands-engels/search?source=auto&query=\u0002\u00010",
+ "ode": "//library.linode.com/search?query=\u0002\u00010",
+ "org": "//www.linux.org/search/?q=\u0002\u00010",
+ "snipp": "http://linuxsnippets.net/en/search/node/\u0002\u00010",
+ "ternaute": {
+ "*": "http://www.linternaute.com/encyclopedie/recherche/?f_libelle=\u0002\u00010",
+ "sy": "//www.linternaute.fr/dictionnaire/fr/synonyme/\u0002/\u00010"
+ }
+ },
+ "o": "//libraries.io/search?q=\u0002\u000115",
+ "t": {
+ "e": {
+ "*": "//duckduckgo.com/lite?q=\u0002\u0001142",
+ "r": {
+ "*": "//www.montygreylock.com/search/?q=\u0002\u00010",
+ "ana": "//literana.de/?s=\u0002\u00010"
+ },
+ "fx": "//www.litefx.to/search?q=\u0002\u00010"
+ },
+ "*": "//luvit.io/lit.html#\u0002\u00010",
+ "fl": "//litfl.com/?s=\u0002\u00010",
+ "blog": "//learneditonline.blog/?s=\u0002\u00010",
+ "dev": "//literarydevices.net/?s=\u0002\u00010",
+ "res": "//www.litres.ru/pages/rmd_search/?q=\u0002\u00014",
+ "tre": "http://www.littre.org/definition/\u0002\u00010"
+ },
+ "u": "http://search.liu.se/en/?query=\u0002\u00010",
+ "be": {
+ "*": "//www.liberation.fr/recherche/?q=\u0002\u00019",
+ "ria": "http://www.libreriauniversitaria.it/c_power_search.php?shelf=BIT&q=\u0002&submit=\u00010"
+ },
+ "de": "http://www.linguee.de/deutsch-englisch/search?source=auto&query=\u0002\u0001214",
+ "df": "//www.linguee.de/deutsch-franzoesisch/search?source=auto&query=\u0002\u00010",
+ "di": "http://www.linguee.de/deutsch-italienisch/search?query=\u0002\u00010",
+ "ed": "//www.linguee.de/deutsch-englisch/search?source=englisch&query=\u0002\u000162",
+ "es": "//www.linguee.es/espanol-ingles/search?query=\u0002\u00013",
+ "fd": "//www.linguee.fr/francais-allemand/search?source=auto&query=\u0002\u00010",
+ "fe": {
+ "*": "//www.lifesitenews.com/archives/search/?q=\u0002\u00010",
+ "hack": {
+ "*": "http://lifehacker.com/search?q=\u0002\u000120",
+ "er": "http://lifehacker.com/search?q=\u0002\u000120",
+ "ing": "http://lifehacking.nl/?s=\u0002\u00010"
+ },
+ "print": "http://www.google.com/cse?cx=partner-pub-2513564923850231%3Anzof3qz9abm&ie=ISO-8859-1&q=time&sa=Search#gsc.tab=0&gsc.q=\u0002&gsc.page=1\u00010",
+ "ray": "//dev.liferay.com/es/search?p_p_id=3&p_p_lifecycle=0&p_p_state=maximized&p_p_mode=view&_3_struts_action=%2Fsearch%2Fsearch&_3_redirect=%2Fes%2Fdevelop%2Ftutorials%2F-%2Fknowledge_base%2F7-1%2Fupgrading-a-liferay-mvc-portlet&_3_keywords=\u0002&_3_groupId=10184\u00010"
+ },
+ "fo": "//www.lifo.gr/search?q=\u0002\u00010",
+ "hu": "//www.linguee.com/english-hungarian/search?source=auto&query=\u0002\u00010",
+ "ke": "http://thesaurus.com/browse/\u0002\u000164",
+ "lo": "//search.lilo.org/searchweb.php?q=\u0002\u00010",
+ "bby": "//libbyapp.com/library/reads/search/query-\u0002/page-1\u00010",
+ "bcom": "//libcom.org/search/node/\u0002\u00010",
+ "bdems": "http://www.libdems.org.uk/search?q=\u0002\u00010",
+ "bgdx": "//duckduckgo.com/?q=site%3Alibgdx.badlogicgames.com+\u0002&t=h&ia=web\u00010",
+ "biiitd": "http://library.iiitd.edu.in/cgi-bin/koha/opac-search.pl?idx=&q=\u0002\u00010",
+ "bre": {
+ "*": "//librewiki.net/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "fm": "http://libre.fm/search.php?search_term=\u0002\u00010",
+ "flix": "//www.libreflix.org/busca/\u0002\u00010",
+ "stock": "http://librestock.com/search/?query=\u0002\u00010",
+ "ture": "//www.libreture.com/search/?q=\u0002\u00010",
+ "wiki": "//librewiki.net/index.php?title=%ED%8A%B9%EC%88%98%3A%EA%B2%80%EC%83%89&search=\u0002\u00010"
+ },
+ "brs": "//lib.rs/search?q=\u0002\u0001225",
+ "bris": "http://libris.kb.se/hitlist?d=libris&q=\u0002&f=simp&spell=true\u00014",
+ "braries": "//libraries.io/search?q=\u0002\u000115",
+ "brarything": "http://www.librarything.com/search_works.php?q=\u0002\u00017",
+ "brivox": "http://librivox.org/newcatalog/search.php?title=\u0002&author=&status=all&action=Search\u00016",
+ "bth": {
+ "*": "http://lib.thessaloniki.gr/ipac20/ipac.jsp?session=14048C549F1N5.44906&menu=search&aspect=subtab37&npp=10&ipp=20&spp=20&profile=central--1&ri=&term=\u0002&index=.GW&x=0&y=0&aspect=subtab37\u00010",
+ "ing": "//www.librarything.com/search.php?term=\u0002\u00010"
+ },
+ "buv": {
+ "a": "//lib.uva.nl/primo-explore/search?query=any,contains,\u0002&tab=all&search_scope=uva_all&vid=UVA\u00010",
+ "*": "http://docs.libuv.org/en/latest/search.html?q=\u0002&check_keywords=yes&area=default\u00010"
+ },
+ "buniversitaria": "http://www.libreriauniversitaria.it/c_power_search.php?shelf=BIT&q=\u0002&submit=\u00010",
+ "dwoord": "//www.welklidwoord.nl/\u0002\u00010",
+ "ende": "//www.linguee.com/english-german/search?source=auto&query=\u0002\u000111",
+ "enit": "http://www.linguee.com/english-italian/search?source=auto&query=\u0002\u00017",
+ "fpv": "//lifpv.com/?s=\u0002\u00010",
+ "ght": {
+ "*": "//www.light.gg/db/search/?q=\u0002 \u000114",
+ "fm": "//www.lightfm.com.au/?s=\u0002\u00010",
+ "gg": "//www.light.gg/db/search/?q=\u0002\u000123"
+ },
+ "gnux": "http://lignux.com/?s=\u0002\u00010",
+ "hkg": "//lihkg.com/search?q=\u0002\u00010",
+ "-ion": "//www.battdepot.com/nl/Search.aspx?keywords=\u0002\u00010",
+ "learning": "//www.linkedin.com/learning/search?keywords=\u0002\u00010",
+ "lypond": "http://lsr.di.unimi.it/LSR/Search?q=\u0002\u00010",
+ "pad": "//www.lipad.ca/search/?q=\u0002\u00010",
+ "psum": "http://www.lipsum.com/feed/html?amount=\u0002\u00015",
+ "quidation": "http://www.liquidation.com/auction/search?cmd=keyword&searchparam_words=\u0002&flag=new\u00010",
+ "quidpedia": "http://wiki.teamliquid.net/starcraft2/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "quipedia": "http://wiki.teamliquid.net/starcraft2/index.php?title=Special%3ASearch&go=Go&search=\u0002\u000145",
+ "quorland": "//www.liquorland.com.au/Search?q=\u0002\u00010",
+ "rik": "//lirik.web.id/results/?q=\u0002\u00010",
+ "stal": "http://www.listal.com/search/\u0002\u000111",
+ "stam": "http://www.list.am/category?q=\u0002\u00010",
+ "stadomangablog": "http://www.listadomanga.es/blog/?s=\u0002\u00010",
+ "stcorp": "//www.listcorp.com/search?q=\u0002\u00010",
+ "stennotes": "//www.listennotes.com/search?q=\u0002\u00018",
+ "stverse": "http://listverse.com/search/?q=\u0002&sa=Search\u00010",
+ "vec": "//www.livechart.me/search?q=\u0002\u000138",
+ "vely": "//shirts.ly/shop?search=\u0002\u00010",
+ "veatc": "//www.liveatc.net/search/?icao=\u0002\u00010",
+ "veleak": "http://www.liveleak.com/browse?q=\u0002 \u00010",
+ "vemint": "//www.livemint.com/Search/Link/Keyword/\u0002\u00010",
+ "veplasma": "http://www.liveplasma.com/#/artist/\u0002 \u00010",
+ "vestrong": "http://www.livestrong.com/search/?mode=standard&search=\u0002\u00010",
+ "zzart": "http://www.lizzart.fr/boutique/tout/recherche.html?keyword=\u0002&limitstart=0&option=com_virtuemart&view=category\u00010"
+ },
+ "lj": "http://duckduckgo.com/?q=site%3Alivejournal.com+\u0002 \u000110",
+ "lk": {
+ "*": "http://www.lolking.net/search?name=\u0002\u00010",
+ "n": "//lokan.jp/?s=\u0002\u00010"
+ },
+ "ll": {
+ "*": "http://www.liveleak.com/browse?q=\u0002\u00016",
+ "ib": "//leeds.summon.serialssolutions.com/?q=elonmsuck&fvf=ContentType%2CBook+Review%2Ct#!/search?ho=t&fvf=ContentType,Book%20Review,t&l=en&q=\u0002\u00010",
+ "uk": "http://capitadiscovery.co.uk/liverpool/items?query=\u0002\u00010",
+ "vm": "//duckduckgo.com/?q=site%3Allvm.org+\u0002\u00010",
+ "bean": "http://www.llbean.com/llb/search/?freeText=\u0002&init=1\u00013"
+ },
+ "lm": {
+ "a": "http://archive.org/search.php?query=\u0002%20AND%20collection%3Aetree\u00010",
+ "c": "//les-maitres-composeurs.fr/?s=\u0002&post_type=product\u00010",
+ "*": "http://www.livemixtapes.com/main.php?artist=\u0002\u00017",
+ "r": "http://www.latemodelrestoration.com/Product/Search?q=\u0002\u00010",
+ "s": "//lemmasoft.renai.us/forums/search.php?keywords=\u0002\u00010",
+ "u": "//opac.ub.uni-muenchen.de/TouchPoint/start.do?View=sunrise&Language=de&Query=-1=%22\u0002%22\u00013",
+ "w": {
+ "*": "//lostmediawiki.com/index.php?search=\u0002\u00010",
+ "iki": "http://luigi-mansion.wikia.com/wiki/Special:Search?search=\u0002\u00010"
+ },
+ "x": "//www.linio.com.mx/search?q=\u0002\u00010",
+ "ec": "//collections.leventhalmap.org/search?&q=\u0002\u00010",
+ "ms": "//lmms.io/wiki/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u00013",
+ "ddgtfy": "//lmddgtfy.net/?q=\u0002\u000114",
+ "gtfy": "http://www.lmgtfy.com/?s=d&q=\u0002\u000113"
+ },
+ "ln": {
+ "*": "http://lenewbie.com/?s=\u0002\u000119",
+ "p": "//logbuch-netzpolitik.de/?s=\u0002\u00010",
+ "u": "//lnu-se-primo.hosted.exlibrisgroup.com/primo-explore/search?query=any,contains,\u0002&search_scope=default_scope&sortby=rank&vid=primo-custom-lnu&pcAvailability=false&lang=sv_SE\u00010",
+ "db": "http://lndb.info/search?text=\u0002\u00013"
+ },
+ "lp": {
+ "h": "//www.leifiphysik.de/suche/\u0002\u00010",
+ "*": "//launchpad.net/+search?field.text=\u0002\u00013",
+ "m": "//www.die.net/search/?q=\u0002\u00015",
+ "o": "http://www.lapoliticaonline.com/0/buscar/index.vnc?id=\u0002\u00010",
+ "s": "http://www.laptopspirit.fr/search/\u0002\u00010",
+ "archive": "http://lparchive.org/search/\u0002 #results\u00019",
+ "bug": "//bugs.launchpad.net/bugs/+bugs?field.searchtext=\u0002\u00013"
+ },
+ "lq": {
+ "*": "//forum.linuxquimper.org/search?q=\u0002\u00010",
+ "w": "http://wiki.linuxquestions.org/index.php?search=\u0002\u00010",
+ "dn": "//www.laquadrature.net/fr/search/apachesolr_search/\u0002\u00010",
+ "pcs": "//liquipedia.net/counterstrike/index.php?search=\u0002\u00010"
+ },
+ "ls": {
+ "e": {
+ "*": "//linuxsecurity.expert/search/?q=\u0002\u00010",
+ "lib": "//librarysearch.lse.ac.uk/primo-explore/search?query=any,contains,\u0002&tab=default_tab&search_scope=CSCOP_ALL&sortby=rank&vid=44LSE_VU1\u00010"
+ },
+ "f": "http://www.lsf.com.ar/resulta.aspx?key=\u0002\u00010",
+ "g": "http://www.lazada.sg/catalog/?q=\u0002\u00010",
+ "i": "http://search.letssingit.com/cgi-exe/am.cgi?a=search&l=archive&typeid=2&s=\u0002\u00010",
+ "*": "http://littlesis.org/search?q=\u0002\u000116",
+ "r": "http://lsr.di.unimi.it/LSR/Search?q=\u0002\u00010",
+ "dh": "//lasombradelhelicoptero.com/?s=\u0002\u00010",
+ ".de-sv": "http://de.langenscheidt.com/deutsch-schwedisch/search?term=\u0002&q_cat=%2Fdeutsch-schwedisch%2F\u00010",
+ ".sv": "http://de.langenscheidt.com/schwedisch-deutsch/search?term=\u0002&q_cat=%2Fschwedisch-deutsch%2F\u00010",
+ "pace": "http://www.lspace.org/cgi-imps/perlfect/search/search.pl?q=\u0002\u00010",
+ "tarcraft": "//liquipedia.net/starcraft2/index.php?search=\u0002\u000128"
+ },
+ "lt": {
+ "a": "//www.lta.org.uk/search-results/?q=\u0002\u00010",
+ "b": "//www.letras.mus.br/?q=\u0002 \u00010",
+ "c": "//litecoin.holytransaction.com/address/\u0002\u00010",
+ "*": "//www.librarything.com/search.php?searchtype=work&search=\u0002\u000130",
+ "r": {
+ "*": "//letterboxd.com/search/\u0002\u000152",
+ "ans": "//www.linguee.es/espanol-ingles/search?&query=\u0002\u00010"
+ },
+ "s": "http://www.latoilescoute.net/spip.php?page=recherche&recherche=\u0002 \u00010",
+ "t": {
+ "*": "//linustechtips.com/main/search/?&q=\u0002\u000119",
+ "forum": "//duckduckgo.com/?q=\u0002+site%3Alinustechtips.com\u00010"
+ },
+ "u": {
+ "*": "http://lambda-the-ultimate.org/search/node/\u0002\u00010",
+ "lib": "http://search.lib.latrobe.edu.au/primo_library/libweb/action/dlSearch.do?vid=LATROBE&institution=LATROBE&search_scope=All&query=any,contains, \u0002 \u00010"
+ },
+ "fr": "//www.larousse.fr/dictionnaires/italien-francais/\u0002\u00010",
+ "wiki": "//lt.wikipedia.org/w/index.php?search=\u0002\u00010"
+ },
+ "lu": {
+ "*": "//www.liberty.edu/search/?q=\u0002\u00010",
+ "t": {
+ "*": "//www.bibleserver.com/text/LUT/\u0002\u00010",
+ "her": "//www.luther.edu/search/?q=\u0002\u00010",
+ "ris": "//lutris.net/games/?q=\u0002\u0001203"
+ },
+ "x": {
+ "*": "//lux.leuphana.de/vufind/Search/Results?lookfor=\u0002&submit=Suchen\u00010",
+ "or": "http://neoluxor.cz/vyhledavani/?query=\u0002\u00010",
+ "flair": "//www.luxflair.de/search?sSearch=\u0002 \u00010"
+ },
+ "ch": "//de.lush.com/search/site/\u0002\u00010",
+ "do": {
+ "*": "http://ludopedia.com.br/search?search=\u0002\u00010",
+ "pedia": "http://ludopedia.com.br/search?search=\u0002\u00010"
+ },
+ "lu": "//www.lulu.com/shop/search.ep?keyWords=\u0002\u00010",
+ "pa": "//duckduckgo.com/?q=\u0002+site%3Apiaui.folha.uol.com.br+inurl%3Alupa&ia=web\u00010",
+ "rk": {
+ "*": "http://lurkmore.to/index.php?search=\u0002\u000178",
+ "more": "http://lurkmore.to/index.php?search=\u0002\u000178"
+ },
+ "adoc51": "//www.lua.org/manual/5.1/manual.html#pdf-\u0002\u00010",
+ "adoc52": "//www.lua.org/manual/5.2/manual.html#pdf-\u0002\u00010",
+ "adoc53": "//www.lua.org/manual/5.3/manual.html#pdf-\u0002\u00010",
+ "aforge": "http://luaforge.net/search/?type_of_search=soft&words=\u0002&Search=Search\u00010",
+ "arocks": "//luarocks.org/search?q=\u0002\u000123",
+ "bimyczytac": "http://lubimyczytac.pl/szukaj/ksiazki?phrase=\u0002\u00014",
+ "buntu": "http://lubuntu.me/?s=\u0002\u00010",
+ "cire": "//duckduckgo.com/?q=\u0002+site%3Alucire.com\u00010",
+ "cky": "http://www.google.com/search?q=\u0002&btnI\u000192",
+ "dwig": "//ludwig.guru/s/\u0002 \u00018",
+ "gat": {
+ "*": "http://www.lugatim.com/s/\u0002\u000143",
+ "ım": "http://lugatim.com/s/\u0002\u00010"
+ },
+ "kol": "http://www.lukol.com/s.php?q=\u0002\u000116",
+ "mas": "//www.lumas.de/search/?q=\u0002\u00010",
+ "men": "http://lumendatabase.org/notices/search?utf8=✓&term=\u0002\u00010",
+ "naavr": "http://avr.myluna.de/doku.php?do=search&id=\u0002\u00010",
+ "zme": "http://luzme.com/search_all?keyword=\u0002\u00010"
+ },
+ "lv": {
+ "*": "http://www.livermore.lib.ca.us/search/a?searchtype=X&SORT=D&searchscope=7&searcharg=\u0002\u00010",
+ "l": "http://la-vache-libre.org/?s=\u0002\u00010",
+ "dl": "//www.lavocedellelotte.it/it/?s=\u0002\u00010",
+ "mag": "http://www.linuxvoice.com/?s=\u0002\u00010",
+ "oenru": "//www.lingvolive.com/en-us/translate/en-ru/\u0002\u00010"
+ },
+ "lw": {
+ "g": "//ludwig.guru/s/\u0002\u00010",
+ "*": "http://lesswrong.com/search/results?cx=015839050583929870010%3A-802ptn4igi&cof=FORID%3A11&ie=UTF-8&sa=Search&siteurl=lesswrong.com%2F&q=\u0002\u00018",
+ "n": "//lwn.net/Search/DoSearch?words=\u0002\u00013",
+ "jgl": "http://duckduckgo.com/?q=\u0002+site:http://lwjgl.org/javadoc/\u00010"
+ },
+ "lx": {
+ "*": "//www.lexico.com/definition/\u0002\u0001332",
+ "r": "http://elixir.bootlin.com/linux/latest/ident/\u0002\u000115",
+ "le": "http://lxle.net/forum/#/search?Search=\u0002\u00010",
+ "ml": "http://marc.info/?l=linux-kernel&w=2&r=1&s=\u0002&q=b\u00010",
+ "iny": "//learnxinyminutes.com/docs/\u0002\u00017"
+ },
+ "./": "http://slashdot.org/index2.pl?fhfilter=\u0002\u00010",
+ "xe": {
+ "*": "//xe.com/currency/\u0002\u000125",
+ "n": {
+ "*": "//en.xen.wiki/index.php?search=\u0002\u00013",
+ "de": "//de.xen.wiki/index.php?search=\u0002\u00010",
+ "oblade": "http://xenoblade.wikia.com/wiki/Special:Search?search=\u0002\u00010"
+ },
+ "p": "//xmpp.org/extensions/xep-\u0002.html\u00010"
+ },
+ "xf": {
+ "e": "//exchange.xforce.ibmcloud.com/search/\u0002\u00010",
+ "*": "//forum.xojo.com/conversations/all?search=\u0002\u00010",
+ "ce-look": "//www.xfce-look.org/search?projectSearchText=\u0002 \u00010"
+ },
+ "xl": {
+ "m": "//stellar.expert/explorer/public/account/\u0002\u00010",
+ "*": "http://www.xtend-life.com/search-results?cx=005442268687610389394%3a4wscy8mawc0&cof=FORID%3a10&q=\u0002\u00010"
+ },
+ "xt": "//xtupleuniversity.xtuple.com/search/node/\u0002\u000119",
+ "xu": "//www.xavier.edu/search/?q=\u0002\u00014",
+ "υτ": "//www.youtube.com/results?search_query=\u0002\u00011646",
+ "01net": "http://www.01net.com/recherche/recherche.php?searchstring=\u0002&chaine=home\u00016",
+ "02faq": "//www.bmw2002faq.com/search/?q=\u0002\u000110",
+ "0bo": "http://boxofficemojo.com/search/?q=\u0002\u000110",
+ "0to255": "http://0to255.com/\u0002\u00010",
+ "101": {
+ "*": "http://www.101domain.com/domain-availability-search.htm?q=\u0002&sa.x=0&sa.y=0\u00010",
+ "domain": "//www.101domain.com/domain-availability-search.htm?q=\u0002\u00010"
+ },
+ "1001": {
+ "*": "http://1001boom.com/?s=\u0002\u00010",
+ "fonts": "http://www.1001fonts.com/search.html?search=\u0002&x=0&y=0\u00010"
+ },
+ "118": {
+ "*": "http://118.dk/search/go?what=\u0002\u00010",
+ "70": "http://11870.com/konsulto?q=\u0002\u00010"
+ },
+ "1122": "//1122.com.uy/buscar/\u0002/todo-el-pais\u00010",
+ "1177": "http://www.1177.se/Sok/?q=\u0002\u00014",
+ "11st": "http://search.11st.co.kr/SearchPrdAction.tmall?method=getTotalSearchSeller&kwd=\u0002\u000112",
+ "11freunde": "http://www.11freunde.de/search/gss/\u0002\u00010",
+ "15min": "//www.15min.lt/paieska?q=\u0002\u00010",
+ "15mpedia": "//15mpedia.org/w/index.php?search=\u0002\u00010",
+ "17t": "http://www.17track.net/en/track?nums=\u0002\u000121",
+ "180": "//www.180.no/Search/All?w=\u0002\u00010",
+ "1881": "http://www.1881.no/?query=\u0002\u000126",
+ "1dr": "http://onedrive.live.com/?q=\u0002\u000116",
+ "1d4chan": "//1d4chan.org/index.php?search=\u0002\u000135",
+ "1gabba": "http://1gabba.net/frontpage?title=\u0002\u00010",
+ "1mg": "//www.1mg.com/search/all?name=\u0002\u000122",
+ "1p5": "//onepeterfive.com/?s=\u0002\u00010",
+ "1und1": "//www.1und1.de/suche?query=\u0002\u00010",
+ "20m": "http://www.20minutes.fr/search?q=\u0002\u00013",
+ "24au": "//krsk.au.ru/nextauction/?search=\u0002\u00010",
+ "24matins": "http://www.24matins.fr/?s=\u0002\u00010",
+ "24sessions": "http://24sessions.com/search/text:\u0002\u00010",
+ "27crags": "//27crags.com/site/search?qs=\u0002\u00010",
+ "2b2t": "//2b2t.miraheze.org/w/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00017",
+ "2channel": "http://find.5ch.net/search?q=\u0002\u00016",
+ "2dehands": "http://www.2dehands.be/markt?qq=\u0002\u00010",
+ "2eme": {
+ "*": "http://www.2ememain.be/marche/2/\u0002/\u00013",
+ "main": "http://www.2ememain.be/marche/?qq=\u0002\u00010"
+ },
+ "2gis": {
+ "*": "http://2gis.ru/moscow/search/\u0002\u000135",
+ "sbp": "//2gis.ru/spb/search/\u0002\u00010",
+ "ufa": "//2gis.ru/ufa/search/\u0002\u00010"
+ },
+ "2hu": "//touhoudb.com/Search?filter=\u0002\u00010",
+ "2nn": "//www.2nn.jp/word/\u0002\u00010",
+ "2pl": "http://2player.com/search/?search=\u0002\u00010",
+ "2xmc": "//www.2xmoinscher.com/r?q=\u0002\u00010",
+ "34travel": "//34travel.me/search?text=\u0002\u00010",
+ "35c3": "//events.ccc.de/congress/2018/wiki/index.php?search=\u0002\u00010",
+ "360": {
+ "*": "http://www.360skate.com/catalogsearch/result/?q=\u0002 \u00010",
+ "so": "//www.so.com/s?q=\u0002\u00010",
+ "app": "//www.360androidapp.com/\u0002\u00010",
+ "iso": "http://image.so.com/i?q=\u0002\u00010"
+ },
+ "3bm": "//www.3bmeteo.com/meteo/\u0002\u00019",
+ "3da": "//3dagogo.com/search?q=\u0002\u00010",
+ "3dj": "//www.3djuegos.com/?q=\u0002&zona=resultados-buscador&ni=1\u00013",
+ "3ds": "http://www.3ds.com/search/?q=\u0002\u00010",
+ "3dbrew": "http://3dbrew.org/wiki/Special:Search?search=\u0002&go=Go\u00010",
+ "3druck": "http://3druck.com/?s=\u0002\u00010",
+ "3dware": "//3dwarehouse.sketchup.com/search.html?q=\u0002\u00010",
+ "3gpp": "http://www.3gpp.org/DynaReport/\u0002.htm\u00019",
+ "6pm": "//www.6pm.com/search?term=\u0002\u00010",
+ "750g": "//www.750g.com/recherche.htm?search=\u0002\u00010",
+ "7digital": {
+ "*": "//www.7digital.com/search?q=\u0002\u00010",
+ "no": "//no.7digital.com/search?q=\u0002\u00010"
+ },
+ "7switch": "//www.7switch.com/fr/list/search/page/1?q=\u0002\u00013",
+ "7tv": "//www.7tv.de/suche?q=\u0002\u00013",
+ "800": "http://800notes.com/Phone.aspx/\u0002\u000132",
+ "80k": "//80000hours.org/search/?q=\u0002\u00010",
+ "8020": "//8020.net/freetextsearch/search/result/?keyword=\u0002\u00010",
+ "89.9": "//www.lightfm.com.au/?s=\u0002\u00010",
+ "8chb": "http://8ch.net/boards.php?title=\u0002\u00010",
+ "8chc": "http://8ch.net/\u0002/catalog.html\u00010",
+ "8tracks": "http://8tracks.com/explore/all?q=\u0002\u00010",
+ "àax": "http://www.albumartexchange.com/covers?fltr=ALL&sort=TITLE&q=\u0002\u00010",
+ "AUD2EUR": "http://www.xe.com/currencyconverter/convert/?Amount=\u0002&From=AUD&To=EUR\u00010",
+ "AUD2GDP": "http://www.xe.com/currencyconverter/convert/?Amount=\u0002&From=AUD&To=GBP\u00010",
+ "BangPeople": "//pipl.com/search/?q=\u0002\u00010",
+ "Binguk": "http://bing.co.uk/?q=\u0002\u00010",
+ "CajunLyrics": "//www.cajunlyrics.com/?page=search&word=\u0002\u00010",
+ "Cololib": "//colostate-primo.hosted.exlibrisgroup.com/primo-explore/search?vid=01COLSU&lang=en_US&primoQueryTemp=d&search_field=any&search_scope=Everything&query=any,contains,\u0002\u00010",
+ "Coolapk": "//www.coolapk.com/search?q=\u0002\u00010",
+ "다음사전": "http://dic.daum.net/search.do?q=\u0002\u000123",
+ "DscSrv": "//discordservers.com/?term=\u0002\u00010",
+ "/?s": "//activehi.com/?s=\u0002\u00010",
+ "KarmaPlace": "http://www.karmaplace.com/catalogsearch/result/?q=\u0002\u00010",
+ "l2d": "http://www.love2d.org/w/index.php?search=\u0002\u00010",
+ "l3u": "//duckduckgo.com/?q=\u0002+site:l3utterfish.blogspot.com\u00010",
+ "l365": "http://www.live365.com/cgi-bin/directory.cgi?searchdesc=\u0002\u00010",
+ "l4c": "//www.left4craft.org/search.php?keywords=\u0002\u00010",
+ "l-d": "//www.legends-decks.com/search.php?q=\u0002\u00010",
+ "lgp": "http://geekpauvre.com/?s=\u0002 \u00010",
+ "lgw": "//libregamewiki.org/index.php?search=\u0002\u00010",
+ "lg.go": "//libs.garden/go/search?q=\u0002\u00010",
+ "loc": {
+ "*": "//www.loc.gov/search/?q=\u0002 \u00016",
+ "al": {
+ "*": "http://local.google.com/maps?f=q&source=s_q&geocode=&q=\u0002\u00010",
+ "ch": "http://tel.local.ch/de/q?what=\u0002\u00010",
+ "ist": "//local-list.co.il?p=106&stag=\u0002\u00010",
+ "time": "http://www.timeanddate.com/time/zone/?query=\u0002\u00010"
+ },
+ "fr": "http://tel.local.ch/fr/q?what=\u0002\u00010",
+ "ast": "//locast.be/?s=\u0002\u00010"
+ },
+ "lof": "//learnomnifocus.com/?s=\u0002\u00010",
+ "log": {
+ "h": "//gineipaedia.com/w/index.php?title=Special:Search&search=\u0002&go=Go\u00010",
+ "*": "http://logeion.uchicago.edu/\u0002\u00019",
+ "o": {
+ "*": "http://logopond.com/search/?search=\u0002\u00015",
+ "s": "http://instantlogosearch.com/?q=\u0002\u00010"
+ },
+ "eion": "http://logeion.uchicago.edu/\u0002\u00019"
+ },
+ "loh": "//help.libreoffice.org/index.php?title=Special%3ASearch&profile=default&search=\u0002&fulltext=Search\u00010",
+ "lol": {
+ "*": "//www.locksonline.co.uk/index.php?route=product/search&search=\u0002\u00016",
+ "champ": "//lolalytics.com/ranked/worldwide/current/diamond/plus/champion/\u0002\u00014",
+ "com": "//www.locksonline.com/search/search.html?zoom_query=\u0002\u00010",
+ "counter": "http://www.lolcounter.com/champions/\u0002\u00010",
+ "king": "http://www.lolking.net/search?name=\u0002\u00010",
+ "names": "//lolnames.gg/en/na/\u0002/\u00010",
+ "olyrics": "http://www.lololyrics.com/search?q=\u0002 \u00016",
+ "pro": "http://www.lolpro.com/search?search=\u0002\u00010",
+ "skill": "http://www.lolskill.net/\u0002 \u00010",
+ "wiki": {
+ "a": "http://leagueoflegends.wikia.com/wiki/Special:Search?query=\u0002\u000119",
+ "*": "http://leagueoflegends.wikia.com/wiki/Special:Search?search=\u0002 \u0001132"
+ }
+ },
+ "lor": "//www.linux.org.ru/search.jsp?q=\u0002&range=ALL&interval=ALL&user=&_usertopic=on\u000148",
+ "loop": {
+ "*": "http://www.frontiersin.org/SearchData.aspx?sq=\u0002\u00010",
+ "backjs": "http://duckduckgo.com/?q=site:loopback.io/doc/en/lb3+\u0002\u00010"
+ },
+ "loot": "http://www.loot.co.za/search?cat=b&terms=\u0002\u00010",
+ "lost": "http://lostpedia.wikia.com/wiki/Special:Search?search=\u0002\u00013",
+ "lotr": {
+ "*": "http://lotr.wikia.com/wiki/Special:Search?query=\u0002\u00017",
+ "ow": "http://lotro-wiki.com/index.php?search=\u0002&button=&title=Special%3ASearch\u00010"
+ },
+ "love": {
+ "*": "http://love2d.org/w/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00013",
+ "2d": "http://www.love2d.org/w/index.php?search=\u0002\u00010",
+ "businessexpo": "//www.lovebusinessexpo.co.uk/search/?q=\u0002\u00010",
+ "live": "http://love-live.wikia.com/wiki/Special:Search?query=\u0002\u000110",
+ "seat": "//www.loveseat.com/search/?term=\u0002\u00010",
+ "wiki": "//love2d.org/w/index.php?search=\u0002\u00010"
+ },
+ "loask": "http://ask.libreoffice.org/en/questions/scope:all/sort:activity-desc/page:1/query:=\u0002/\u00010",
+ "loblaws": "//www.loblaws.ca/search/?search-bar=\u0002\u00010",
+ "lobsters": "//lobste.rs/search?q=\u0002\u000118",
+ "lobugs": "//bugs.documentfoundation.org/buglist.cgi?quicksearch=\u0002\u00010",
+ "lodash": "//lodash.com/docs#\u0002\u000198",
+ "lojban": "//mw.lojban.org/index.php?search=\u0002&title=Special%3ASearch&go=Go\u00010",
+ "lonelyplanet": "//www.lonelyplanet.com/search?q=\u0002\u00010",
+ "longdo": "//dict.longdo.com/search/\u0002\u00010",
+ "lookdocs": "//docs.looker.com/#stq=\u0002&stp=1\u00010",
+ "loolib": "//primo.tug-libraries.on.ca/primo_library/libweb/action/dlSearch.do?institution=WATERLOO&vid=WATERLOO&onCampus=false&lang=eng&indx=1&dym=true&highlight=true&displayField=title&bulkSize=10&query=any%2Ccontains%2C\u0002&search_scope=books_tab&tab=default_tab\u00010",
+ "loomis": "//www.loomisexpress.com/ca/wfTrackingStatus.aspx?PieceNumber=\u0002\u00010",
+ "loseit": "//www.loseit.com/search/?term=\u0002\u00010",
+ "loslog": "//www.lineageoslog.com/search?q=\u0002\u00010",
+ "losource": "http://opengrok.libreoffice.org/search?q=\u0002&project=core\u00010",
+ "louisville": "//louisvilleky.gov/search/site/\u0002\u00010",
+ "lovdata": "http://lovdata.no/sok?q=\u0002\u00010",
+ "lowcarb": "//recipegym.com/?s=\u0002\u00010",
+ "lowes": {
+ "*": "http://www.lowes.com/SearchCatalogDisplay?Ntt=\u0002#!\u0001251",
+ "ca": "//www.lowes.ca/search/\u0002.html\u00010"
+ },
+ "loweringthebar": "http://www.loweringthebar.net/?s=\u0002\u00010",
+ "lowongan": "//www.lowonganterpadu.com/search?q=\u0002\u00010",
+ "lrb": "http://www.lrb.co.uk/search?q=\u0002\u00010",
+ "lyle": "//duckduckgo.com/?q=\u0002+site:forums.lylemcdonald.com\u00010",
+ "lycos": "http://search.lycos.com/web?q=\u0002\u00018",
+ "lynda": "http://www.lynda.com/search?q=\u0002\u00010",
+ "lyrics": {
+ "*": "http://lyrics.wikia.com/Special:Search?search=\u0002&fulltext=Search\u000183",
+ "ing": "//lyricsing.com/search/\u0002\u00010",
+ "translate": "http://lyricstranslate.com/en/site-search?query=\u0002\u000115",
+ "tune": "//www.lyricstune.in/search?q=\u0002\u00010",
+ "wiki": "http://lyrics.wikia.com/Special:Search?search=\u0002&fulltext=Search\u000183"
+ },
+ "lyriki": "http://lyriki.com/index.php?title=Special%3ASearch&search=\u0002&go=Go\u00010",
+ "lyrical": "http://duckduckgo.com/?q=site%3Alyrical-nonsense.com+\u0002\u00010",
+ "lyricwiki": "http://lyrics.wikia.com/Special:Search?search=\u0002&fulltext=Search\u000183",
+ "lyrster": "http://www.lyrster.com/songs-lyrics/\u0002.html\u00010",
+ "lzd": {
+ "*": "//www.lazada.com.ph/catalog/?q=\u0002\u000117",
+ "ph": "//www.lazada.com.ph/catalog/?q=\u0002\u000117",
+ "sg": "http://www.lazada.sg/catalog/?q=\u0002\u00010",
+ "th": "http://www.lazada.co.th/catalog/?q=\u0002\u00010"
+ },
+ "LzdMy": "http://www.lazada.com.my/catalog/?q=\u0002\u00010",
+ ".net": "http://www.searchdotnet.com/results.aspx?cx=002213837942349435108:jki1okx03jq&q=\u0002&sa=Search+.NET+sites&cof=FORID:9&siteurl=www.searchdotnet.com/\u000122",
+ "Perlen": "//www.perlentaucher.de/nsuche?q=\u0002\u00010",
+ "x86": "http://ref.x86asm.net/geek.html#\u0002\u00014",
+ "xamarin": {
+ "*": "//developer.xamarin.com/search?q=\u0002\u00010",
+ "forums": "http://forums.xamarin.com/search?Search=\u0002\u00010"
+ },
+ "xbox": "http://www.xbox.com/en-GB/Search?q=\u0002#All\u00019",
+ "xbps": "//github.com/void-linux/void-packages/search?q[]=filename%3Atemplate+path%3A%2Fsrcpkgs&q[]=\u0002&s=indexed\u00018",
+ "xda": {
+ "f": "http://forum.xda-developers.com/sitesearch.php?q=\u0002\u00010",
+ "l": "//labs.xda-developers.com/?search=\u0002\u00010",
+ "*": "//forum.xda-developers.com/search/?query=\u0002\u000173",
+ "dev": "http://forum.xda-developers.com/sitesearch.php?q=\u0002\u00010"
+ },
+ "xgn": "//www.xgn.nl/zoeken/\u0002\u00010",
+ "xgau": "http://www.robertchristgau.com/get_artist.php?name=\u0002\u000111",
+ "xiv": {
+ "*": "http://xivdb.com/?search=\u0002\u00014",
+ "db": "http://xivdb.com/?search=\u0002\u00014"
+ },
+ "xing": "//www.xing.com/app/search?op=combined;keywords=\u0002 \u00019",
+ "xiny": "//learnxinyminutes.com/docs/\u0002\u00017",
+ "xiami": "http://www.xiami.com/search?key=\u0002\u00010",
+ "xinhua": "http://so.news.cn/#search/0/\u0002/1/\u00010",
+ "xkcd": {
+ "b": "http://www.xkcdb.com/?search=\u0002\u00016",
+ "n": "http://xkcd.com/\u0002/\u000126",
+ "*": "/?q=\u0002+site:xkcd.com\u0001159"
+ },
+ "xkom": "//www.x-kom.pl/szukaj?q=\u0002\u00014",
+ "xmc": "//xploremycity.com/\u0002\u00017",
+ "xmostrata": "http://xmostrata.com/?s=\u0002\u00010",
+ "xmpprooms": "//trafficpixel.tk/chatrooms/showRooms.php?search=\u0002&numberResults=10\u00010",
+ "xojo": "//forum.xojo.com/conversations/all?search=\u0002\u00010",
+ "xorp": "//blog.xorp.hu/?s=\u0002\u00010",
+ "xpresate": "http://xpresate.com.mx/busqueda.php?search=\u0002\u00010",
+ "xref": "http://search.crossref.org/?q=\u0002\u00014",
+ "xsh": "//explainshell.com/explain?cmd=\u0002\u00010",
+ "xvr": "//www.arxiv-vanity.com/convert/?query=\u0002\u00010",
+ "xwiki": "http://www.xwiki.org/xwiki/bin/view/Main/Search?text=\u0002\u00010",
+ "xxl": "//xxl.no/search?q=\u0002\u00010",
+ "الاخبار": "//www.sahifatv.com/category/\u0002\u00010",
+ "پخشستاره": "//setareh-co.com/?s=\u0002&submit=\u00010",
+ "تبسيط": "//tapseet.com/?s=\u0002\u00010",
+ "موبايل": "//mobilesacademy.com/?s=\u0002\u00010",
+ "ויקי": "//he.wikipedia.org/w/index.php?search=\u0002&title=מיוחד%3Aחיפוש&go=לערך\u00010",
+ "חוק": "//he.wikisource.org/w/index.php?search=חוק+\u0002\u00010",
+ "מורפיקס": "http://www.morfix.co.il/\u0002\u000116",
+ "פרוטוקול": "//www.protocol.co.il/?s=\u0002\u00010",
+ "Βικι": "//el.m.wikipedia.org/wiki/\u0002\u00010",
+ "Λεξικό": "//el.m.wiktionary.org/wiki/\u0002\u00010",
+ "ςγρ": "//el.wikipedia.org/wiki/?search=\u0002\u00010",
+ "англяз": "http://engramm.su/start?do=search&id=\u0002\u00010",
+ "карты": "//yandex.ru/maps/?text=\u0002\u00010",
+ "кгут": "//translate.google.com/#ru/en/\u0002\u00010",
+ "мапс": "//www.google.bg/maps/search/\u0002/\u00010",
+ "нпсд": "//npsd.party/?s=\u0002\u00010",
+ "уики": "//bg.wikipedia.org/wiki/\u0002\u00010",
+ "նայ": "http://nayiri.com/search?l=hy_LB&dt=HY_HY&r=0&query=\u0002\u00010",
+ "ასტრო": "http://astronet.ge/?s=\u0002\u00010"
+ }
+} \ No newline at end of file
diff --git a/searx/data/external_urls.json b/searx/data/external_urls.json
new file mode 100644
index 0000000..75b153a
--- /dev/null
+++ b/searx/data/external_urls.json
@@ -0,0 +1,156 @@
+{
+ "facebook_profile": {
+ "category_name": "Facebook",
+ "url_name": "Facebook profile",
+ "urls": {
+ "default": "https://facebook.com/$1"
+ }
+ },
+ "youtube_channel": {
+ "category_name": "YouTube",
+ "url_name": "YouTube channel",
+ "urls": {
+ "default": "https://www.youtube.com/channel/$1"
+ }
+ },
+ "youtube_video": {
+ "category_name": "YouTube",
+ "url_name": "YouTube video",
+ "urls": {
+ "default": "https://www.youtube.com/watch?v=$1"
+ }
+ },
+ "twitter_profile": {
+ "category_name": "Twitter",
+ "url_name": "Twitter profile",
+ "urls": {
+ "default": "https://twitter.com/$1"
+ }
+ },
+ "instagram_profile": {
+ "category_name": "Instagram",
+ "url_name": "Instagram profile",
+ "urls": {
+ "default": "https://www.instagram.com/$1"
+ }
+ },
+ "imdb_title": {
+ "category_name": "IMDB",
+ "url_name": "IMDB title",
+ "urls": {
+ "default": "https://www.imdb.com/title/$1"
+ }
+ },
+ "imdb_name": {
+ "category_name": "IMDB",
+ "url_name": "IMDB name",
+ "urls": {
+ "default": "https://www.imdb.com/name/$1"
+ }
+ },
+ "imdb_character": {
+ "category_name": "IMDB",
+ "url_name": "IMDB character",
+ "urls": {
+ "default": "https://www.imdb.com/character/$1"
+ }
+ },
+ "imdb_company": {
+ "category_name": "IMDB",
+ "url_name": "IMDB company",
+ "urls": {
+ "default": "https://www.imdb.com/company/$1"
+ }
+ },
+ "imdb_event": {
+ "category_name": "IMDB",
+ "url_name": "IMDB event",
+ "urls": {
+ "default": "https://www.imdb.com/event/$1"
+ }
+ },
+ "rotten_tomatoes": {
+ "category_name": "Rotten tomatoes",
+ "url_name": "Rotten tomatoes title",
+ "urls": {
+ "default": "https://www.rottentomatoes.com/$1"
+ }
+ },
+ "spotify_artist_id": {
+ "category_name": "Spotify",
+ "url_name": "Spotify artist",
+ "urls": {
+ "default": "https://open.spotify.com/artist/$1"
+ }
+ },
+ "itunes_artist_id": {
+ "category_name": "iTunes",
+ "url_name": "iTunes artist",
+ "urls": {
+ "default": "https://music.apple.com/us/artist/$1"
+ }
+ },
+ "soundcloud_id": {
+ "category_name": "Soundcloud",
+ "url_name": "Soundcloud artist",
+ "urls": {
+ "default": "https://soundcloud.com/$1"
+ }
+ },
+ "netflix_id": {
+ "category_name": "Netflix",
+ "url_name": "Netflix movie",
+ "urls": {
+ "default": "https://www.netflix.com/watch/$1"
+ }
+ },
+ "github_profile": {
+ "category_name": "Github",
+ "url_name": "Github profile",
+ "urls": {
+ "default": "https://wwww.github.com/$1"
+ }
+ },
+ "musicbrainz_artist": {
+ "category_name": "Musicbrainz",
+ "url_name": "Musicbrainz artist",
+ "urls": {
+ "default": "http://musicbrainz.org/artist/$1"
+ }
+ },
+ "musicbrainz_work": {
+ "category_name": "Musicbrainz",
+ "url_name": "Musicbrainz work",
+ "urls": {
+ "default": "http://musicbrainz.org/work/$1"
+ }
+ },
+ "musicbrainz_release_group": {
+ "category_name": "Musicbrainz",
+ "url_name": "Musicbrainz release group",
+ "urls": {
+ "default": "http://musicbrainz.org/release-group/$1"
+ }
+ },
+ "musicbrainz_label": {
+ "category_name": "Musicbrainz",
+ "url_name": "Musicbrainz label",
+ "urls": {
+ "default": "http://musicbrainz.org/label/$1"
+ }
+ },
+ "wikimedia_image": {
+ "category_name": "Wikipedia",
+ "url_name": "Wikipedia image",
+ "urls": {
+ "default": "https://commons.wikimedia.org/wiki/Special:FilePath/$1?width=500&height=400"
+ }
+ },
+ "map": {
+ "category_name": "Map",
+ "url_name": "geo map",
+ "urls": {
+ "default": "https://www.openstreetmap.org/?lat=${latitude}&lon=${longitude}&zoom=${zoom}&layers=M"
+ }
+ }
+} \ No newline at end of file
diff --git a/searx/data/osm_keys_tags.json b/searx/data/osm_keys_tags.json
new file mode 100644
index 0000000..e4c0c4d
--- /dev/null
+++ b/searx/data/osm_keys_tags.json
@@ -0,0 +1,15416 @@
+{
+ "keys": {
+ "wikidata": {
+ "*": {
+ "en": "Wikidata"
+ }
+ },
+ "wikipedia": {
+ "*": {
+ "en": "Wikipedia"
+ }
+ },
+ "email": {
+ "*": {
+ "en": "Email"
+ }
+ },
+ "facebook": {
+ "*": {
+ "en": "Facebook"
+ }
+ },
+ "fax": {
+ "*": {
+ "en": "Fax"
+ }
+ },
+ "internet_access": {
+ "ssid": {
+ "*": {
+ "en": "Wi-Fi"
+ }
+ }
+ },
+ "addr": {
+ "*": {
+ "de": "postanschrift",
+ "en": "address",
+ "es": "dirección postal",
+ "fr": "adresse postale",
+ "nl": "postadres",
+ "pt": "endereço postal",
+ "zh": "地址"
+ }
+ },
+ "bench": {
+ "*": {
+ "de": "bank",
+ "en": "bench",
+ "es": "banco",
+ "fr": "banc",
+ "nl": "bank",
+ "pt": "banco",
+ "zh": "長椅",
+ "zh-cn": "长椅"
+ }
+ },
+ "bin": {
+ "*": {
+ "de": "abfalleimer",
+ "en": "waste container",
+ "es": "cubo de basura",
+ "fr": "poubelle",
+ "nl": "vuilnisbak",
+ "pt": "caixote do lixo",
+ "pt-br": "lixeira",
+ "zh": "垃圾桶"
+ }
+ },
+ "brand": {
+ "wikidata": {
+ "*": {
+ "de": "marke",
+ "en": "brand",
+ "es": "marca",
+ "fr": "marque",
+ "nl": "merk",
+ "pt": "marca",
+ "zh": "品牌"
+ }
+ }
+ },
+ "building": {
+ "levels": {
+ "*": {
+ "de": "oberirdische stockwerke",
+ "en": "floors above ground",
+ "es": "pisos sobre el suelo",
+ "fr": "nombre de niveaux au-dessus du sol",
+ "nl": "verdiepingen boven de grond",
+ "pt": "andares sobre o solo",
+ "zh": "地上层数",
+ "zh-hk": "地上層數",
+ "zh-tw": "地上層數",
+ "de-at": "geschoß",
+ "de-ch": "geschoss",
+ "en-ca": "storey"
+ }
+ }
+ },
+ "contact": {
+ "email": {
+ "*": {
+ "en": "email"
+ }
+ },
+ "facebook": {
+ "*": {
+ "en": "facebook"
+ }
+ },
+ "fax": {
+ "*": {
+ "en": "fax"
+ }
+ },
+ "foursquare": {
+ "*": {
+ "en": "foursquare"
+ }
+ },
+ "google_plus": {
+ "*": {
+ "en": "google_plus"
+ }
+ },
+ "instagram": {
+ "*": {
+ "en": "instagram"
+ }
+ },
+ "linkedin": {
+ "*": {
+ "en": "linkedin"
+ }
+ },
+ "mastodon": {
+ "*": {
+ "en": "mastodon"
+ }
+ },
+ "phone": {
+ "*": {
+ "en": "phone"
+ }
+ },
+ "pinterest": {
+ "*": {
+ "en": "pinterest"
+ }
+ },
+ "telegram": {
+ "*": {
+ "en": "telegram"
+ }
+ },
+ "tripadvisor": {
+ "*": {
+ "en": "tripadvisor"
+ }
+ },
+ "twitter": {
+ "*": {
+ "en": "twitter"
+ }
+ },
+ "webcam": {
+ "*": {
+ "en": "webcam"
+ }
+ },
+ "website": {
+ "*": {
+ "en": "website"
+ }
+ },
+ "yelp": {
+ "*": {
+ "en": "yelp"
+ }
+ },
+ "youtube": {
+ "*": {
+ "en": "youtube"
+ }
+ }
+ },
+ "cuisine": {
+ "*": {
+ "de": "küche",
+ "en": "cuisine",
+ "es": "cocina",
+ "fr": "cuisine servie",
+ "nl": "keuken",
+ "pt": "cozinha",
+ "zh": "菜系"
+ }
+ },
+ "currency": {
+ "*": {
+ "de": "währung",
+ "en": "currency",
+ "es": "moneda",
+ "fr": "monnaie",
+ "nl": "valuta",
+ "pt": "moeda",
+ "zh": "通貨",
+ "zh-hk": "流通貨幣"
+ }
+ },
+ "delivery": {
+ "*": {
+ "en": "delivery",
+ "es": "reparto",
+ "fr": "livraison",
+ "nl": "levering",
+ "pt": "entrega ao cliente",
+ "zh": "宅配"
+ },
+ "covid19": {
+ "*": {
+ "en": "delivery (COVID19)",
+ "es": "reparto (COVID19)",
+ "fr": "livraison (COVID19)",
+ "nl": "levering (COVID19)",
+ "pt": "entrega ao cliente (COVID19)",
+ "zh": "宅配 (COVID19)"
+ }
+ }
+ },
+ "fee": {
+ "*": {
+ "de": "gebühr",
+ "en": "fee",
+ "es": "tarifa",
+ "fr": "prix d'accès",
+ "nl": "tarief",
+ "pt": "tarifa",
+ "pt-br": "taxa",
+ "zh": "費用"
+ }
+ },
+ "level": {
+ "*": {
+ "de": "stockwerk",
+ "en": "floor number",
+ "es": "número de piso",
+ "fr": "numéro d'étage",
+ "nl": "etagenummer",
+ "pt": "número do andar",
+ "zh-tw": "樓層號碼"
+ }
+ },
+ "opening_hours": {
+ "*": {
+ "de": "geöffnet an/am",
+ "en": "open days",
+ "es": "días abiertos",
+ "fr": "jours d'ouverture",
+ "nl": "geopend op",
+ "pt": "dias de abertura",
+ "pt-br": "hora de abertura"
+ },
+ "covid19": {
+ "*": {
+ "de": "geöffnet an/am (COVID19)",
+ "en": "open days (COVID19)",
+ "es": "días abiertos (COVID19)",
+ "fr": "jours d'ouverture (COVID19)",
+ "nl": "geopend op (COVID19)",
+ "pt": "dias de abertura (COVID19)",
+ "pt-br": "hora de abertura (COVID19)"
+ }
+ }
+ },
+ "organic": {
+ "*": {
+ "en": "organic product",
+ "pt-br": "produto natural",
+ "zh": "有機產品"
+ }
+ },
+ "outdoor_seating": {
+ "*": {
+ "de": "sitzplätze im freien",
+ "en": "outdoor seating",
+ "pt": "assentos ao ar livre"
+ }
+ },
+ "payment": {
+ "*": {
+ "de": "zahlung",
+ "en": "payment",
+ "es": "pago",
+ "fr": "paiement",
+ "nl": "betaling",
+ "pt": "pagamento",
+ "zh": "支付"
+ },
+ "LINE_Pay": {
+ "*": {
+ "en": "line pay"
+ }
+ },
+ "OV-Chipkaart": {
+ "*": {
+ "en": "ov-chipkaart",
+ "zh": "ov晶片卡"
+ }
+ },
+ "alipay": {
+ "*": {
+ "en": "alipay",
+ "zh": "支付宝",
+ "zh-hk": "支付寶",
+ "zh-tw": "支付寶"
+ }
+ },
+ "american_express": {
+ "*": {
+ "de": "american express",
+ "en": "american express credit card",
+ "es": "tarjeta de crédito american express",
+ "nl": "american express-creditcard"
+ }
+ },
+ "apple_pay": {
+ "*": {
+ "en": "apple pay"
+ }
+ },
+ "bancomat": {
+ "*": {
+ "en": "bancomat"
+ }
+ },
+ "bankaxept": {
+ "*": {
+ "en": "bankaxept"
+ }
+ },
+ "bitcoin": {
+ "*": {
+ "en": "bitcoin",
+ "zh": "比特幣"
+ }
+ },
+ "clipper": {
+ "*": {
+ "de": "clipper-card",
+ "en": "clipper card",
+ "es": "tarjeta clipper",
+ "zh": "路路通"
+ }
+ },
+ "contactless": {
+ "*": {
+ "de": "kontaktloses bezahlen",
+ "en": "contactless payment",
+ "es": "pago sin contacto",
+ "fr": "paiement sans contact",
+ "nl": "contactloos betalen",
+ "pt": "pagamento por aproximação",
+ "zh": "非接觸式支付"
+ }
+ },
+ "credit_cards": {
+ "*": {
+ "de": "kreditkarte",
+ "en": "credit card",
+ "es": "tarjeta de crédito",
+ "fr": "carte de crédit",
+ "nl": "creditcard",
+ "pt": "cartão de crédito",
+ "zh": "信用卡"
+ }
+ },
+ "cryptocurrencies": {
+ "*": {
+ "de": "kryptowährung",
+ "en": "cryptocurrency",
+ "es": "criptomoneda",
+ "fr": "cryptomonnaie",
+ "nl": "cryptogeld",
+ "pt": "criptomoeda",
+ "zh": "加密貨幣"
+ }
+ },
+ "debit_cards": {
+ "*": {
+ "de": "debitkarte",
+ "en": "debit card",
+ "es": "tarjeta de débito",
+ "fr": "carte de débit",
+ "nl": "betaalkaart",
+ "pt": "cartão de débito",
+ "zh": "借记卡"
+ }
+ },
+ "diners_club": {
+ "*": {
+ "de": "diners club",
+ "en": "diners club credit card",
+ "es": "tarjeta de crédito diners club"
+ }
+ },
+ "discover_card": {
+ "*": {
+ "en": "discover card",
+ "zh": "发现卡"
+ }
+ },
+ "dogecoin": {
+ "*": {
+ "en": "dogecoin",
+ "zh": "多吉币",
+ "zh-hk": "狗狗幣",
+ "zh-tw": "汪汪幣"
+ }
+ },
+ "e_zpass": {
+ "*": {
+ "en": "e-zpass",
+ "zh": "快易通"
+ }
+ },
+ "ebt": {
+ "*": {
+ "en": "electronic benefit transfer",
+ "zh": "电子福利转帐"
+ }
+ },
+ "ep_beep": {
+ "*": {
+ "en": "beep",
+ "zh": "嗶卡"
+ }
+ },
+ "ep_geldkarte": {
+ "*": {
+ "en": "geldkarte",
+ "nl": "chipknip"
+ }
+ },
+ "ep_monedero": {
+ "*": {
+ "en": "monedero",
+ "es": "tarjeta monedero"
+ }
+ },
+ "fastrak": {
+ "*": {
+ "en": "fastrak"
+ }
+ },
+ "gift_card": {
+ "*": {
+ "de": "geschenkkarte",
+ "en": "gift card",
+ "es": "tarjeta regalo",
+ "fr": "carte cadeau",
+ "nl": "cadeaubon",
+ "zh": "礼物卡"
+ }
+ },
+ "girocard": {
+ "*": {
+ "en": "girocard"
+ }
+ },
+ "good_to_go": {
+ "*": {
+ "en": "good to go!"
+ }
+ },
+ "google_pay": {
+ "*": {
+ "en": "google pay"
+ }
+ },
+ "i-pass": {
+ "*": {
+ "en": "i-pass"
+ }
+ },
+ "ipass": {
+ "*": {
+ "en": "ipass",
+ "zh": "ipass一卡通"
+ }
+ },
+ "jcb": {
+ "*": {
+ "de": "jcb",
+ "en": "jcb credit card"
+ }
+ },
+ "litecoin": {
+ "*": {
+ "en": "litecoin"
+ }
+ },
+ "maestro": {
+ "*": {
+ "de": "maestro-karte",
+ "en": "maestro",
+ "fr": "mastercard",
+ "nl": "maestrokaart",
+ "pt": "mastercard maestro",
+ "zh": "万事顺卡"
+ }
+ },
+ "mastercard": {
+ "*": {
+ "de": "mastercard",
+ "en": "mastercard credit card",
+ "es": "tarjeta de crédito mastercard",
+ "nl": "mastercard-creditcard"
+ }
+ },
+ "meal_voucher": {
+ "*": {
+ "de": "verpflegungsgutschein",
+ "en": "meal voucher",
+ "es": "vale de comida",
+ "fr": "titre restaurant",
+ "nl": "maaltijdcheque",
+ "pt": "vale refeição"
+ }
+ },
+ "mipay": {
+ "*": {
+ "en": "mi-pay",
+ "zh": "小米支付"
+ }
+ },
+ "nc_quick_pass": {
+ "*": {
+ "en": "nc quick pass"
+ }
+ },
+ "oyster": {
+ "*": {
+ "de": "oyster-card",
+ "en": "oyster card",
+ "zh": "蠔卡",
+ "zh-cn": "牡蛎卡",
+ "zh-tw": "牡蠣卡"
+ }
+ },
+ "paypal": {
+ "*": {
+ "en": "paypal"
+ }
+ },
+ "paypay": {
+ "*": {
+ "en": "paypay"
+ }
+ },
+ "peach_pass": {
+ "*": {
+ "en": "peach pass"
+ }
+ },
+ "pikepass": {
+ "*": {
+ "en": "pikepass"
+ }
+ },
+ "postfinance_card": {
+ "*": {
+ "de": "postfinance card direct"
+ }
+ },
+ "samsung_pay": {
+ "*": {
+ "en": "samsung pay",
+ "zh": "三星智付"
+ }
+ },
+ "service_voucher": {
+ "*": {
+ "en": "service voucher",
+ "fr": "titre-service",
+ "nl": "dienstencheque"
+ }
+ },
+ "sms": {
+ "*": {
+ "en": "short message service",
+ "es": "servicio de mensajes cortos",
+ "nl": "sms",
+ "pt": "serviço de mensagens curtas",
+ "zh": "簡訊"
+ }
+ },
+ "snap": {
+ "*": {
+ "en": "supplemental nutrition assistance program",
+ "es": "programa asistencial de nutrición suplementaria",
+ "zh": "美國補充營養協助計畫"
+ }
+ },
+ "sube": {
+ "*": {
+ "en": "sube card",
+ "es": "sistema único de boleto electrónico",
+ "zh": "sube卡"
+ }
+ },
+ "sunpass": {
+ "*": {
+ "en": "sunpass"
+ }
+ },
+ "szep": {
+ "*": {}
+ },
+ "telephone_cards": {
+ "*": {
+ "de": "telefonkarte",
+ "en": "telephone card",
+ "es": "tarjeta telefónica",
+ "fr": "télécarte",
+ "nl": "telefoonkaart",
+ "pt": "cartão telefônico",
+ "zh": "电话卡"
+ }
+ },
+ "token_coin": {
+ "*": {
+ "de": "jeton",
+ "en": "token coin",
+ "es": "monetiforme",
+ "fr": "jeton",
+ "nl": "betaalpenning",
+ "zh": "代用货币",
+ "zh-hk": "輔幣"
+ }
+ },
+ "troika": {
+ "*": {
+ "en": "troika card",
+ "zh": "三套车卡",
+ "zh-hk": "三套車卡",
+ "zh-tw": "三套車卡"
+ }
+ },
+ "u-key": {
+ "*": {
+ "en": "u-key"
+ }
+ },
+ "v_pay": {
+ "*": {
+ "en": "v pay"
+ }
+ },
+ "visa": {
+ "*": {
+ "de": "visa",
+ "en": "visa credit card",
+ "es": "tarjeta de crédito visa",
+ "fr": "carte visa",
+ "nl": "visa-creditcard"
+ }
+ },
+ "visa_debit": {
+ "*": {
+ "en": "visa debit",
+ "zh": "visa金融卡"
+ }
+ },
+ "visa_electron": {
+ "*": {
+ "en": "visa electron",
+ "fr": "visa",
+ "zh": "维萨电子卡"
+ }
+ },
+ "wechat": {
+ "*": {
+ "en": "wechat pay",
+ "zh": "微信支付"
+ }
+ },
+ "wic": {
+ "*": {
+ "en": "wic",
+ "es": "u.s. federal government program providing food assistance for low-income women and children [edit]"
+ }
+ },
+ "wire_transfer": {
+ "*": {
+ "de": "überweisung (zahlungsverkehr)",
+ "en": "wire transfer",
+ "es": "transferencia bancaria",
+ "fr": "virement bancaire",
+ "nl": "bankoverschrijving",
+ "pt": "transferência bancária",
+ "zh": "电汇"
+ }
+ }
+ },
+ "phone": {
+ "*": {
+ "de": "telefonnummer",
+ "en": "phone number",
+ "en-gb": "telephone number",
+ "es": "número de teléfono",
+ "fr": "numéro de téléphone",
+ "nl": "telefoonnummer",
+ "pt": "número de telefone",
+ "zh": "電話號碼",
+ "zh-cn": "电话号码"
+ }
+ },
+ "public_transport": {
+ "*": {
+ "de": "öffentlicher verkehr",
+ "en": "public transport",
+ "es": "transporte público",
+ "fr": "transport en commun",
+ "nl": "openbaar vervoer",
+ "pt": "transporte coletivo",
+ "pt-br": "transporte público",
+ "zh": "公共交通",
+ "zh-tw": "公共運輸"
+ }
+ },
+ "website": {
+ "*": {
+ "de": "offizielle website",
+ "de-at": "offizielle homepage",
+ "en": "official website",
+ "en-ca": "official homepage",
+ "es": "página web oficial",
+ "fr": "site officiel",
+ "nl": "officiële website",
+ "pt": "sítio oficial",
+ "pt-br": "página inicial oficial",
+ "zh": "官方网站",
+ "zh-hk": "官方網站",
+ "zh-tw": "官方網站"
+ }
+ },
+ "wheelchair": {
+ "*": {
+ "de": "rollstuhlzugänglichkeit",
+ "en": "wheelchair accessibility",
+ "es": "accesibilidad para silla de ruedas",
+ "fr": "accessibilité aux fauteuils roulants",
+ "nl": "rolstoeltoegankelijkheid",
+ "pt": "acessibilidade por cadeira de rodas",
+ "zh": "輪椅使用性"
+ }
+ }
+ },
+ "tags": {
+ "NHS": {
+ "STRAHNET": {
+ "en": "strategic highway network"
+ }
+ },
+ "access": {
+ "private": {
+ "de": "privatstraße",
+ "de-ch": "privatstrasse",
+ "en": "private road",
+ "fr": "route privée",
+ "nl": "eigen weg",
+ "zh": "私家路"
+ }
+ },
+ "activity": {
+ "": {
+ "en": "dating",
+ "es": "noviazgo",
+ "pt": "namoro",
+ "zh": "約會"
+ }
+ },
+ "addr": {
+ "city": {
+ "de": "stadt",
+ "en": "city",
+ "es": "ciudad",
+ "fr": "ville",
+ "nl": "stad",
+ "pt": "cidade",
+ "zh": "城市"
+ }
+ },
+ "admin_level": {
+ "2": {
+ "de": "land",
+ "en": "country",
+ "es": "país",
+ "fr": "pays",
+ "nl": "land",
+ "pt": "país",
+ "zh": "國家",
+ "zh-cn": "国家"
+ },
+ "6": {
+ "en": "non-metropolitan county",
+ "es": "condado no metropolitano",
+ "fr": "comté non métropolitain",
+ "pt": "condado não-metropolitano",
+ "zh": "非都市郡",
+ "nl": "tehsil",
+ "zh-cn": "次区 (南亚)",
+ "zh-hk": "鄉"
+ }
+ },
+ "advertising": {
+ "billboard": {
+ "de": "plakatwand",
+ "en": "billboard",
+ "es": "valla publicitaria",
+ "fr": "panneau publicitaire",
+ "nl": "reclamebord",
+ "pt": "outdoor",
+ "zh": "看板"
+ },
+ "column": {
+ "de": "litfaßsäule",
+ "de-ch": "litfasssäule",
+ "en": "advertising column",
+ "es": "columna publicitaria",
+ "fr": "colonne morris",
+ "nl": "aanplakzuil",
+ "zh": "广告柱"
+ },
+ "poster_box": {
+ "de": "city-light-poster",
+ "en": "poster box"
+ }
+ },
+ "aerialway": {
+ "cable_car": {
+ "de": "pendelbahn",
+ "en": "aerial tramway",
+ "es": "teleférico",
+ "fr": "téléphérique",
+ "nl": "cabinebaan",
+ "pt": "teleférico",
+ "zh": "往復式纜車",
+ "zh-hk": "吊車"
+ },
+ "chair_lift": {
+ "de": "sesselbahn",
+ "en": "chairlift",
+ "es": "telesilla",
+ "fr": "télésiège",
+ "nl": "stoeltjeslift"
+ },
+ "gondola": {
+ "de": "gondelbahn",
+ "en": "gondola lift",
+ "es": "telecabina",
+ "fr": "télécabine",
+ "nl": "gondel(baan)",
+ "zh": "吊厢索道"
+ },
+ "goods": {
+ "de": "materialseilbahn",
+ "en": "material ropeway"
+ },
+ "j-bar": {
+ "en": "j-bar lift"
+ },
+ "magic_carpet": {
+ "en": "magic carpet"
+ },
+ "mixed_lift": {
+ "de": "kombibahn",
+ "en": "hybrid lift",
+ "fr": "téléporté avec sièges et cabines"
+ },
+ "platter": {
+ "de": "schlepplift",
+ "en": "surface lift",
+ "es": "telesquí",
+ "fr": "téléski",
+ "nl": "sleeplift"
+ },
+ "rope_tow": {
+ "de": "seillift",
+ "en": "ski tow",
+ "fr": "téléski à câble bas"
+ },
+ "t-bar": {
+ "de": "schlepplift",
+ "en": "t-bar lift"
+ },
+ "zip_line": {
+ "de": "seilrutsche",
+ "de-ch": "seilbrücke",
+ "en": "zip-line",
+ "es": "tirolesa",
+ "fr": "tyrolienne",
+ "nl": "tokkelbaan",
+ "pt": "tirolesa",
+ "zh": "溜索"
+ }
+ },
+ "aeroway": {
+ "aerodrome": {
+ "de": "flugplatz",
+ "en": "aerodrome",
+ "es": "aeródromo",
+ "fr": "aérodrome",
+ "nl": "vliegveld",
+ "pt": "aeródromo",
+ "zh": "飛行場"
+ },
+ "apron": {
+ "de": "vorfeld",
+ "en": "apron",
+ "es": "plataforma",
+ "fr": "aire de stationnement",
+ "nl": "platform",
+ "pt": "plataforma de estacionamento",
+ "zh": "機坪"
+ },
+ "gate": {
+ "de": "flugsteig",
+ "en": "gate",
+ "fr": "porte d'embarquement",
+ "zh": "登機閘口",
+ "zh-cn": "登机口"
+ },
+ "hangar": {
+ "en": "hangar",
+ "zh": "飞机库"
+ },
+ "helipad": {
+ "de": "hubschrauberlandeplattform",
+ "en": "helipad",
+ "es": "helisuperficie",
+ "fr": "hélisurface",
+ "pt": "heliponto",
+ "zh": "直升机停机坪"
+ },
+ "heliport": {
+ "de": "hubschrauberlandeplatz",
+ "en": "heliport",
+ "es": "helipuerto",
+ "fr": "héliport",
+ "nl": "helikopterhaven",
+ "pt": "heliporto",
+ "zh": "直升飞机场"
+ },
+ "highway_strip": {
+ "de": "autobahn-behelfsflugplatz",
+ "en": "highway strip",
+ "fr": "autoroute à aéronefs",
+ "nl": "snelweg-noodvliegveld",
+ "zh": "戰備跑道"
+ },
+ "launchpad": {
+ "de": "startrampe",
+ "en": "launch pad",
+ "es": "plataforma de despegue",
+ "fr": "aire de lancement",
+ "nl": "lanceerplatform",
+ "pt": "plataforma de lançamento",
+ "zh": "发射台"
+ },
+ "navigationaid": {
+ "en": "approach lighting system",
+ "es": "sistema de luces de aproximación",
+ "pt": "sistema de luzes de aproximação",
+ "zh": "进近灯光系统"
+ },
+ "runway": {
+ "de": "start- und landebahn",
+ "en": "runway",
+ "es": "pista de aterrizaje",
+ "fr": "piste d'aérodrome",
+ "nl": "startbaan",
+ "pt": "pista de aterragem e descolagem",
+ "pt-br": "pista de pouso e decolagem",
+ "zh": "跑道"
+ },
+ "spaceport": {
+ "de": "weltraumbahnhof",
+ "en": "spaceport",
+ "es": "base espacial",
+ "fr": "base de lancement",
+ "nl": "ruimtehaven",
+ "pt": "base de lançamento espacial",
+ "zh": "航天发射中心"
+ },
+ "taxiway": {
+ "de": "rollbahn",
+ "en": "taxiway",
+ "es": "calle de rodaje",
+ "fr": "voie de circulation",
+ "nl": "taxibaan",
+ "zh": "滑行道"
+ },
+ "terminal": {
+ "de": "flughafenterminal",
+ "en": "airport terminal",
+ "es": "terminal aeroportuaria",
+ "fr": "terminal aéroportuaire",
+ "nl": "terminal",
+ "zh": "航站楼",
+ "zh-hk": "客運大樓",
+ "zh-tw": "航廈"
+ },
+ "windsock": {
+ "de": "windsack",
+ "en": "windsock",
+ "es": "manga de viento",
+ "fr": "manche à air",
+ "nl": "windzak",
+ "pt": "manga de vento",
+ "pt-br": "biruta",
+ "zh": "風向袋",
+ "zh-cn": "风向袋"
+ }
+ },
+ "amenity": {
+ "animal_boarding": {
+ "de": "tierpension",
+ "en": "animal boarding",
+ "nl": "dierenpension"
+ },
+ "animal_shelter": {
+ "de": "tierheim",
+ "en": "animal shelter",
+ "es": "refugio de animales",
+ "fr": "refuge animalier",
+ "nl": "dierenasiel",
+ "pt": "abrigo para animais",
+ "zh": "動物收容所"
+ },
+ "archive": {
+ "de": "archiv",
+ "en": "archives",
+ "en-ca": "archive",
+ "en-gb": "archive",
+ "es": "archivo",
+ "nl": "archiefinstelling",
+ "pt": "arquivo",
+ "zh": "檔案館",
+ "zh-cn": "档案馆",
+ "zh-hk": "檔案"
+ },
+ "arts_centre": {
+ "de": "kunstzentrum",
+ "en": "arts centre",
+ "es": "centro artístico",
+ "fr": "centre des arts",
+ "nl": "kunstencentrum",
+ "pt": "centro de artes",
+ "zh": "艺术中心"
+ },
+ "atm": {
+ "de": "geldautomat",
+ "de-at": "bankomat",
+ "de-ch": "bancomat",
+ "en": "automated teller machine",
+ "en-ca": "bancomat",
+ "en-gb": "cashpoint",
+ "es": "cajero automático",
+ "fr": "guichet automatique bancaire",
+ "nl": "geldautomaat",
+ "pt": "caixa eletrônico",
+ "pt-br": "bancomat",
+ "zh": "自動櫃員機"
+ },
+ "audiologist": {
+ "de": "audiologe",
+ "en": "audiologist",
+ "es": "audiólogo",
+ "fr": "audiologiste",
+ "nl": "audioloog",
+ "pt": "audiologista"
+ },
+ "baby_hatch": {
+ "de": "babyklappe",
+ "en": "baby hatch",
+ "fr": "tour d'abandon",
+ "nl": "vondelingenluik",
+ "pt": "roda dos expostos",
+ "zh": "棄嬰保護艙"
+ },
+ "baking_oven": {
+ "de": "backofen",
+ "en": "oven",
+ "es": "horno",
+ "fr": "four",
+ "pt": "forno",
+ "zh": "烤爐"
+ },
+ "bank": {
+ "de": "bankgebäude",
+ "en": "bank building",
+ "es": "edificio bancario",
+ "fr": "édifice bancaire",
+ "nl": "bankgebouw",
+ "pt": "edifício bancário",
+ "zh": "银行建筑物",
+ "zh-hk": "銀行建築物"
+ },
+ "bar": {
+ "en": "bar",
+ "nl": "café",
+ "zh": "酒吧"
+ },
+ "bbq": {
+ "de": "grillplatz",
+ "en": "barbecue",
+ "es": "parrilla",
+ "nl": "grill",
+ "pt": "churrasqueira",
+ "zh": "燒烤架"
+ },
+ "bench": {
+ "de": "bank",
+ "en": "bench",
+ "es": "banco",
+ "fr": "banc",
+ "nl": "bank",
+ "pt": "banco",
+ "zh": "長椅",
+ "zh-cn": "长椅"
+ },
+ "bicycle_parking": {
+ "de": "fahrradabstellplatz",
+ "en": "bicycle parking",
+ "es": "estacionamiento de bicicletas",
+ "fr": "stationnement cyclable",
+ "pt": "estacionamento de bicicletas",
+ "zh": "腳踏車停車場"
+ },
+ "bicycle_rental": {
+ "en": "bicycle-sharing station",
+ "fr": "station de vélopartage",
+ "nl": "station voor het delen van fietsen"
+ },
+ "bicycle_repair_station": {
+ "de": "fahrrad-reparaturstation",
+ "en": "bicycle repair station"
+ },
+ "biergarten": {
+ "de": "biergarten",
+ "en": "beer garden",
+ "es": "biergarten",
+ "fr": "biergarten",
+ "nl": "biergarten",
+ "pt": "biergarten",
+ "zh": "啤酒花園",
+ "zh-cn": "啤酒花园"
+ },
+ "boat_rental": {
+ "de": "bootsverleih",
+ "en": "boat rental"
+ },
+ "boat_sharing": {
+ "en": "boat sharing"
+ },
+ "brothel": {
+ "de": "bordell",
+ "en": "brothel",
+ "es": "burdel",
+ "fr": "lupanar",
+ "nl": "bordeel",
+ "pt": "prostíbulo",
+ "zh": "妓院"
+ },
+ "bts": {
+ "en": "base transceiver station",
+ "es": "estación base",
+ "nl": "gsm-mast",
+ "pt": "estação radio base",
+ "zh": "基地收发机站"
+ },
+ "bureau_de_change": {
+ "de": "wechselstube",
+ "en": "bureau de change",
+ "es": "casa de cambio",
+ "nl": "geldwisselkantoor",
+ "pt": "casa de câmbio",
+ "zh": "钱币兑换店"
+ },
+ "bus_garage": {
+ "de": "depot",
+ "en": "bus depot",
+ "es": "cocheras",
+ "fr": "dépôt d'autobus",
+ "nl": "remise",
+ "pt": "garagem de autocarros",
+ "pt-br": "garagem de ônibus"
+ },
+ "bus_station": {
+ "de": "busbahnhof",
+ "en": "bus station",
+ "es": "estación de autobús",
+ "fr": "gare routière",
+ "nl": "busstation",
+ "pt": "estação de ônibus",
+ "zh": "巴士车站",
+ "zh-hk": "巴士總站",
+ "zh-tw": "公車總站"
+ },
+ "cafe": {
+ "de": "café",
+ "en": "coffeehouse",
+ "en-ca": "café",
+ "en-gb": "café",
+ "es": "cafetería",
+ "fr": "café",
+ "nl": "koffiehuis",
+ "pt": "café",
+ "pt-br": "cafeteria",
+ "zh": "咖啡店"
+ },
+ "car_pooling": {
+ "en": "car pooling facility",
+ "fr": "aire de covoiturage"
+ },
+ "car_rental": {
+ "de": "autovermietung",
+ "en": "car rental company",
+ "es": "compañía de alquiler de vehículos",
+ "fr": "location de voiture",
+ "nl": "autoverhuur",
+ "pt": "aluguer de veículos",
+ "pt-br": "aluguel de veículos",
+ "zh": "汽車租賃"
+ },
+ "car_sharing": {
+ "en": "carsharing",
+ "es": "uso temporal de vehículos",
+ "fr": "système d'autopartage",
+ "nl": "autodelen",
+ "zh": "汽车共享",
+ "zh-hk": "汽車共享"
+ },
+ "car_wash": {
+ "de": "waschanlage",
+ "en": "car wash",
+ "es": "lavado autoservicio",
+ "fr": "station de lavage",
+ "nl": "wasstraat",
+ "pt": "lava-jato",
+ "zh": "洗車"
+ },
+ "casino": {
+ "de": "spielbank",
+ "en": "casino",
+ "zh": "賭場",
+ "zh-cn": "赌场"
+ },
+ "chair": {
+ "de": "stuhl",
+ "de-at": "sessel",
+ "en": "chair",
+ "es": "silla",
+ "fr": "chaise",
+ "nl": "stoel",
+ "pt": "cadeira",
+ "zh": "椅"
+ },
+ "charging_station": {
+ "de": "stromtankstelle",
+ "en": "electric vehicle charging station",
+ "es": "estación de carga",
+ "fr": "station de recharge",
+ "nl": "oplaadpunt",
+ "pt": "estação de carga",
+ "zh": "電動車充電站"
+ },
+ "childcare": {
+ "de": "kinderbetreuung",
+ "en": "child care",
+ "es": "cuidado infantil",
+ "fr": "mode de garde d'enfant",
+ "nl": "kinderopvang",
+ "zh": "兒童照顧"
+ },
+ "cinema": {
+ "de": "kino",
+ "en": "movie theater",
+ "en-gb": "cinema",
+ "es": "cine",
+ "fr": "salle de cinéma",
+ "nl": "bioscoop",
+ "pt": "sala de cinema",
+ "zh": "電影院"
+ },
+ "clinic": {
+ "de": "klinik",
+ "en": "clinic",
+ "es": "clínica",
+ "fr": "clinique",
+ "nl": "kliniek",
+ "pt": "centro de saúde",
+ "zh": "診所"
+ },
+ "clock": {
+ "de": "turmuhr",
+ "en": "turret clock",
+ "es": "reloj público",
+ "nl": "torenuurwerk",
+ "zh": "塔钟",
+ "fr": "tour horloge",
+ "pt": "torre do relógio",
+ "zh-hk": "鐘樓",
+ "en-ca": "clock",
+ "en-gb": "clock",
+ "pt-br": "relógio",
+ "zh-cn": "时钟",
+ "zh-tw": "時鐘"
+ },
+ "college": {
+ "en": "college",
+ "fr": "collège",
+ "pt": "colégio",
+ "zh": "學院",
+ "zh-cn": "学院"
+ },
+ "community_centre": {
+ "de": "gemeindehaus",
+ "en": "village hall",
+ "zh": "公會堂",
+ "en-gb": "community centre",
+ "es": "centro comunitario",
+ "fr": "centre communautaire",
+ "nl": "buurtcentrum",
+ "pt": "centro comunitário"
+ },
+ "compressed_air": {
+ "de": "druckluft",
+ "en": "compressed air",
+ "es": "aire comprimido",
+ "fr": "air comprimé",
+ "nl": "perslucht",
+ "pt": "ar comprimido",
+ "zh": "压缩空气"
+ },
+ "concert_hall": {
+ "de": "konzerthaus",
+ "en": "concert hall",
+ "es": "sala de conciertos",
+ "fr": "maison des concerts",
+ "nl": "concertgebouw",
+ "pt": "casa de concerto",
+ "pt-br": "sala de concerto",
+ "zh": "音樂廳"
+ },
+ "conference_centre": {
+ "de": "kongresszentrum",
+ "en": "convention center",
+ "en-gb": "conference centre",
+ "es": "centro de convenciones",
+ "fr": "palais des congrès",
+ "nl": "congrescentrum",
+ "pt": "centro de convenções",
+ "zh": "展覽館",
+ "zh-cn": "展览馆"
+ },
+ "courthouse": {
+ "de": "gerichtsgebäude",
+ "en": "courthouse",
+ "es": "palacio de justicia",
+ "fr": "palais de justice",
+ "nl": "gerechtsgebouw",
+ "pt": "tribunal",
+ "pt-br": "fórum",
+ "zh": "法院"
+ },
+ "coworking_space": {
+ "en": "coworking",
+ "es": "cotrabajo",
+ "nl": "deelkantoor",
+ "zh": "共用工作空間"
+ },
+ "crematorium": {
+ "de": "krematorium",
+ "en": "crematorium",
+ "es": "crematorio",
+ "fr": "crématorium",
+ "pt": "forno crematório",
+ "zh": "火葬場"
+ },
+ "crypt": {
+ "de": "krypta",
+ "en": "crypt",
+ "es": "cripta",
+ "fr": "crypte",
+ "nl": "crypte",
+ "pt": "cripta",
+ "zh": "地下墓室"
+ },
+ "dentist": {
+ "de": "zahnarztpraxis",
+ "en": "dental clinic",
+ "fr": "clinique dentaire",
+ "pt": "clínica dentária",
+ "de-ch": "zahnarzt",
+ "en-ca": "dentist",
+ "en-gb": "dentist",
+ "es": "odontólogo",
+ "nl": "tandarts",
+ "pt-br": "dentista",
+ "zh": "牙醫",
+ "zh-cn": "牙医"
+ },
+ "dive_centre": {
+ "de": "tauchbasis",
+ "en": "dive center",
+ "fr": "centre de plongée"
+ },
+ "doctors": {
+ "de": "arztpraxis",
+ "en": "doctor's office",
+ "en-gb": "doctor's surgery",
+ "es": "oficina del doctor",
+ "fr": "cabinet médical",
+ "pt": "consultório médico"
+ },
+ "dojo": {
+ "en": "dōjō",
+ "fr": "dojo",
+ "nl": "dojo",
+ "pt": "dojo",
+ "zh": "武館",
+ "zh-cn": "武馆"
+ },
+ "drinking_water": {
+ "de": "trinkbrunnen",
+ "en": "drinking fountain",
+ "es": "fuente de agua",
+ "fr": "point d'eau public",
+ "nl": "drinkfontein",
+ "pt": "fontanário",
+ "pt-br": "bebedouro",
+ "zh": "公共飲水機"
+ },
+ "driving_school": {
+ "de": "fahrschule",
+ "en": "driver's education",
+ "es": "autoescuela",
+ "fr": "auto-école",
+ "nl": "rijles",
+ "pt": "centro de formação de condutores",
+ "zh": "駕駛員教育"
+ },
+ "events_centre": {
+ "en": "arena",
+ "es": "estadio cubierto",
+ "fr": "aréna",
+ "zh": "競技場"
+ },
+ "events_venue": {
+ "de": "veranstaltungsort",
+ "en": "event venue",
+ "es": "sala de espectáculos",
+ "fr": "salle de spectacle",
+ "nl": "evenementenlocatie",
+ "pt": "casa de shows",
+ "zh": "活動場地"
+ },
+ "exhibition_centre": {
+ "de": "messe",
+ "en": "trade fair",
+ "es": "feria de muestras",
+ "fr": "salon",
+ "nl": "handelsbeurs",
+ "pt": "feira profissional",
+ "zh": "贸易展览会"
+ },
+ "fast_food": {
+ "de": "schnellrestaurant",
+ "en": "fast food restaurant",
+ "es": "restaurante de comida rápida",
+ "fr": "restaurant rapide",
+ "nl": "fastfoodrestaurant",
+ "pt": "restaurante de fast food",
+ "zh": "快餐店"
+ },
+ "feeding_place": {
+ "en": "feeder",
+ "de": "futtertrog",
+ "en-ca": "manger",
+ "es": "pesebre",
+ "fr": "mangeoire",
+ "nl": "kribbe",
+ "pt": "manjedoura",
+ "zh": "馬槽"
+ },
+ "ferry_terminal": {
+ "de": "fährhafen",
+ "en": "ferry port",
+ "fr": "port à ferry",
+ "nl": "veerhaven",
+ "pt": "porto de balsa",
+ "zh": "客運樓"
+ },
+ "financial_advice": {
+ "de": "vermögensverwaltung",
+ "en": "asset management",
+ "es": "gestión de activos",
+ "fr": "gestion d'actifs",
+ "nl": "vermogensbeheer",
+ "pt": "gestão de ativos",
+ "zh": "投資管理"
+ },
+ "fire_station": {
+ "de": "feuerwehrhaus",
+ "en": "fire station",
+ "es": "estación de bomberos",
+ "fr": "caserne de pompiers",
+ "nl": "brandweerkazerne",
+ "pt": "corpo de bombeiros",
+ "zh": "消防局"
+ },
+ "flowerpot": {
+ "de": "pflanzkübel",
+ "en": "flowerpot",
+ "es": "maceta",
+ "fr": "pot de fleurs",
+ "nl": "bloempot",
+ "pt": "vaso de plantas",
+ "zh": "花盆"
+ },
+ "food_court": {
+ "de": "food-court",
+ "en": "food court",
+ "fr": "aire de restauration",
+ "pt": "praça de alimentação",
+ "zh": "美食廣場"
+ },
+ "fountain": {
+ "de": "zierbrunnen",
+ "de-ch": "springbrunnen",
+ "en": "fountain",
+ "es": "fuente",
+ "fr": "fontaine",
+ "nl": "fontein",
+ "pt": "fontanário",
+ "pt-br": "chafariz",
+ "zh": "噴泉"
+ },
+ "fuel": {
+ "de": "tankstelle",
+ "en": "gas station",
+ "en-ca": "filling station",
+ "en-gb": "petrol station",
+ "es": "estación de servicio",
+ "fr": "station-service",
+ "nl": "tankstation",
+ "pt": "posto de abastecimento",
+ "zh": "加油站"
+ },
+ "funeral_hall": {
+ "de": "trauerhalle",
+ "en": "funeral hall",
+ "fr": "salle de recueillement",
+ "nl": "rouwaula"
+ },
+ "gambling": {
+ "de": "glücksspieleinrichtung",
+ "en": "gambling facility"
+ },
+ "give_box": {
+ "en": "free box",
+ "es": "caja libre",
+ "nl": "givebox"
+ },
+ "grit_bin": {
+ "de": "streugutbehälter",
+ "en": "grit bin",
+ "fr": "bac à sel",
+ "nl": "zoutbak"
+ },
+ "gym": {
+ "de": "fitnessstudio",
+ "en": "health club",
+ "fr": "centre de remise en forme",
+ "nl": "sportschool",
+ "pt": "academia desportiva",
+ "zh": "健身房"
+ },
+ "harbourmaster": {
+ "de": "hafenkapitän",
+ "en": "harbourmaster",
+ "es": "comandante de puerto",
+ "fr": "officier de port",
+ "nl": "havenmeester",
+ "pt": "capitania do porto"
+ },
+ "hospital": {
+ "de": "krankenhaus",
+ "de-ch": "spital",
+ "en": "hospital",
+ "fr": "hôpital",
+ "nl": "ziekenhuis",
+ "zh": "醫院",
+ "zh-cn": "医院"
+ },
+ "hunting_stand": {
+ "de": "ansitz",
+ "en": "shooting stand",
+ "fr": "mirador"
+ },
+ "ice_cream": {
+ "de": "eisdiele",
+ "en": "ice cream parlor",
+ "en-gb": "ice cream parlour",
+ "es": "heladería",
+ "fr": "glacier",
+ "nl": "ijssalon",
+ "pt": "sorveteria"
+ },
+ "internet_cafe": {
+ "de": "internetcafé",
+ "en": "internet café",
+ "es": "cibercafé",
+ "fr": "cybercafé",
+ "nl": "internetcafé",
+ "pt": "cyber café",
+ "zh": "网吧",
+ "zh-hk": "網吧",
+ "zh-tw": "網咖"
+ },
+ "jobcentre": {
+ "de": "arbeitsvermittler",
+ "en": "employment agency",
+ "es": "empresa de trabajo temporal",
+ "fr": "agence d’emploi",
+ "nl": "uitzendbureau",
+ "zh": "人力仲介"
+ },
+ "karaoke_box": {
+ "en": "karaoke box",
+ "pt": "bar de karaoke",
+ "zh": "卡拉ok店",
+ "zh-cn": "卡拉ok包厢"
+ },
+ "kindergarten": {
+ "en": "kindergarten",
+ "es": "jardín de infancia",
+ "fr": "école maternelle",
+ "nl": "kleuterschool",
+ "pt": "jardim de infância",
+ "zh": "幼稚園",
+ "zh-cn": "幼儿园"
+ },
+ "kitchen": {
+ "de": "öffentliche küche",
+ "en": "public kitchen"
+ },
+ "kneipp_water_cure": {
+ "de": "kneipp-medizin",
+ "en": "kneipp cure",
+ "fr": "cure kneipp",
+ "nl": "kneippkuur",
+ "pt": "terapia de kneipp"
+ },
+ "language_school": {
+ "de": "sprachschule",
+ "en": "language school",
+ "es": "escuela de idiomas",
+ "fr": "école de langue",
+ "pt": "escola de idiomas",
+ "zh": "语言学校",
+ "zh-cn": "英国剑桥语言学校",
+ "zh-hk": "語言學校"
+ },
+ "letter_box": {
+ "de": "hausbriefkasten",
+ "en": "letter box",
+ "nl": "brievenbus",
+ "zh": "信箱"
+ },
+ "library": {
+ "de": "bibliothek",
+ "en": "library",
+ "es": "biblioteca",
+ "fr": "bibliothèque",
+ "nl": "bibliotheek",
+ "pt": "biblioteca",
+ "zh": "圖書館",
+ "zh-cn": "图书馆"
+ },
+ "life_ring": {
+ "de": "rettungsring",
+ "en": "lifebuoy",
+ "es": "salvavidas",
+ "fr": "bouée de sauvetage",
+ "nl": "reddingsboei",
+ "zh": "救生圈"
+ },
+ "lifeboat_station": {
+ "de": "rettungsbootstation",
+ "en": "lifeboat station",
+ "fr": "station de sauvetage"
+ },
+ "loading_dock": {
+ "de": "laderampe",
+ "en": "loading dock",
+ "es": "muelle de carga",
+ "fr": "quai de chargement",
+ "nl": "laad- en losdock",
+ "zh": "装运平台"
+ },
+ "love_hotel": {
+ "de": "stundenhotel",
+ "en": "sex hotel",
+ "es": "albergue transitorio",
+ "pt": "motel"
+ },
+ "marae": {
+ "en": "marae",
+ "zh": "毛利集會場"
+ },
+ "marketplace": {
+ "de": "marktplatz",
+ "de-ch": "grossmarkthalle",
+ "en": "marketplace",
+ "es": "mercado",
+ "fr": "marché",
+ "nl": "marktplaats",
+ "pt": "mercado",
+ "zh": "傳統市場",
+ "zh-cn": "草市",
+ "zh-hk": "草市"
+ },
+ "mobile_library": {
+ "de": "fahrbibliothek",
+ "en": "bookmobile",
+ "es": "biblioteca móvil",
+ "fr": "bibliothèque mobile",
+ "nl": "bibliotheekbus",
+ "pt": "biblioteca móvel",
+ "zh": "流動圖書館"
+ },
+ "monastery": {
+ "de": "kloster",
+ "en": "monastery",
+ "es": "monasterio",
+ "fr": "monastère",
+ "nl": "kloostercomplex",
+ "pt": "mosteiro",
+ "zh": "僧院"
+ },
+ "mortuary": {
+ "de": "leichenhaus",
+ "en": "morgue",
+ "nl": "mortuarium",
+ "pt": "necrotério",
+ "zh": "殮房",
+ "zh-cn": "太平间",
+ "zh-tw": "太平間"
+ },
+ "motorcycle_parking": {
+ "de": "motorradparkplatz",
+ "en": "motorcycle parking"
+ },
+ "music_school": {
+ "de": "musikschule",
+ "en": "music school",
+ "en-gb": "music education organisation",
+ "es": "escuela de música",
+ "fr": "école de musique",
+ "nl": "muziekschool",
+ "pt": "escola de música",
+ "zh": "音乐学院"
+ },
+ "music_venue": {
+ "de": "veranstaltungsort für musikdarbietungen",
+ "en": "music venue",
+ "es": "sala de conciertos",
+ "fr": "salle de concert",
+ "nl": "concertzaal",
+ "pt": "casa de espetáculos",
+ "zh": "音乐演出场所"
+ },
+ "nightclub": {
+ "de": "nachtclub",
+ "en": "nightclub",
+ "es": "club nocturno",
+ "fr": "boîte de nuit",
+ "nl": "nachtclub",
+ "pt": "casa noturna",
+ "zh": "夜總會"
+ },
+ "nursing_home": {
+ "de": "pflegeheim",
+ "en": "nursing home",
+ "es": "residencia de personas mayores",
+ "fr": "unité de soins de longue durée",
+ "nl": "verpleeghuis",
+ "zh": "介護老人福祉設施"
+ },
+ "parking": {
+ "de": "parkplatz",
+ "en": "parking lot",
+ "en-gb": "car park",
+ "es": "estacionamiento",
+ "fr": "parc de stationnement",
+ "nl": "parkeerterrein",
+ "pt": "parque de estacionamento",
+ "zh": "停車場"
+ },
+ "parking_entrance": {
+ "de": "parkplatzeinfahrt",
+ "en": "parking entrance"
+ },
+ "parking_space": {
+ "de": "parklücke",
+ "en": "parking space",
+ "es": "espacio de estacionamiento",
+ "fr": "place de parking",
+ "nl": "parkeerplaats"
+ },
+ "parliament": {
+ "de": "parlamentsgebäude",
+ "en": "parliament building",
+ "es": "edificio parlamentario",
+ "fr": "bâtiment parlementaire",
+ "nl": "parlementsgebouw",
+ "pt": "edifício parlamentar",
+ "zh": "議會建築物",
+ "zh-cn": "议会建筑物"
+ },
+ "pharmacy": {
+ "de": "apotheke",
+ "en": "pharmacy",
+ "es": "farmacia",
+ "fr": "pharmacie",
+ "nl": "apotheek",
+ "pt": "farmácia",
+ "zh": "藥房",
+ "zh-cn": "药房"
+ },
+ "photo_booth": {
+ "de": "fotoautomat",
+ "en": "photo booth",
+ "es": "fotomatón",
+ "fr": "photomaton",
+ "nl": "fotoautomaat",
+ "zh": "照相亭"
+ },
+ "place_of_mourning": {
+ "de": "aufbahrungshalle",
+ "en": "funeral parlour",
+ "es": "tanatorio",
+ "fr": "funérarium"
+ },
+ "place_of_worship": {
+ "de": "kultstätte",
+ "en": "place of worship",
+ "es": "lugar de culto",
+ "fr": "lieu de culte",
+ "nl": "gebedshuis",
+ "pt": "lugar de prática religiosa",
+ "pt-br": "lugares de prática religiosa",
+ "zh": "宗教场所",
+ "zh-hk": "宗教場所",
+ "zh-tw": "宗教場所"
+ },
+ "planetarium": {
+ "en": "planetarium",
+ "es": "planetario",
+ "fr": "planétarium",
+ "pt": "planetário",
+ "zh": "天象儀",
+ "zh-cn": "天象仪"
+ },
+ "police": {
+ "de": "polizeidienststelle",
+ "en": "police station",
+ "es": "comisaría",
+ "fr": "commissariat de police",
+ "nl": "politiebureau",
+ "pt": "esquadra",
+ "pt-br": "delegacia de polícia",
+ "zh": "警察局"
+ },
+ "polling_station": {
+ "de": "wahllokal",
+ "en": "polling place",
+ "es": "lugar de votación",
+ "fr": "bureau de vote",
+ "nl": "stembureau",
+ "zh": "投票站"
+ },
+ "post_box": {
+ "de": "postbriefkasten",
+ "en": "post box",
+ "es": "buzón",
+ "fr": "boîte aux lettres",
+ "nl": "brievenbus",
+ "pt": "caixa de correio",
+ "zh": "郵箱"
+ },
+ "post_office": {
+ "de": "postfiliale",
+ "en": "post office",
+ "es": "oficina de correos",
+ "fr": "bureau de poste",
+ "nl": "postkantoor",
+ "pt": "posto de correio",
+ "pt-br": "agência de correio",
+ "zh": "郵政局"
+ },
+ "printer": {
+ "de": "drucker",
+ "en": "printer",
+ "es": "impresora",
+ "fr": "imprimante",
+ "pt": "impressora",
+ "zh": "打印機",
+ "zh-cn": "打印机"
+ },
+ "prison": {
+ "de": "gefängnis",
+ "en": "prison",
+ "es": "prisión",
+ "nl": "gevangenis",
+ "pt": "prisão",
+ "zh": "監獄",
+ "zh-cn": "监狱"
+ },
+ "pub": {
+ "en": "pub",
+ "en-gb": "public house",
+ "nl": "café",
+ "zh": "酒館",
+ "zh-cn": "英格兰风格的酒吧"
+ },
+ "public_bath": {
+ "de": "badehaus",
+ "en": "public bath",
+ "es": "baños públicos",
+ "fr": "bains publics",
+ "nl": "badhuis",
+ "pt": "banho público",
+ "zh": "公共浴場",
+ "zh-cn": "公共浴场"
+ },
+ "public_bookcase": {
+ "de": "öffentlicher bücherschrank",
+ "en": "public bookcase",
+ "es": "biblioteca libre",
+ "fr": "microbibliothèque",
+ "nl": "boekenruilkast"
+ },
+ "public_building": {
+ "de": "öffentliches gebäude",
+ "en": "public building",
+ "es": "edificio público",
+ "fr": "bâtiment public",
+ "nl": "openbaar gebouw",
+ "pt": "edifício público"
+ },
+ "ranger_station": {
+ "en": "ranger station",
+ "es": "puesto de guardabosques",
+ "fr": "station de rangers"
+ },
+ "recycling": {
+ "de": "recyclingeinrichtung",
+ "en": "recycling facility",
+ "fr": "centre de recyclage"
+ },
+ "rescue_station": {
+ "en": "rescue station"
+ },
+ "restaurant": {
+ "en": "restaurant",
+ "es": "restaurante",
+ "pt": "restaurante",
+ "zh": "餐馆",
+ "zh-hk": "餐館",
+ "zh-tw": "餐館"
+ },
+ "sanitary_dump_station": {
+ "de": "sanitäre entsorgungsstationen",
+ "en": "sanitary dump station"
+ },
+ "sauna": {
+ "en": "sauna",
+ "zh": "桑拿"
+ },
+ "school": {
+ "de": "schule",
+ "en": "school",
+ "es": "escuela",
+ "fr": "école",
+ "pt": "escola",
+ "zh": "学校",
+ "zh-hk": "學校",
+ "zh-tw": "學校"
+ },
+ "science_park": {
+ "de": "wissenschaftspark",
+ "en": "science park",
+ "es": "parque científico",
+ "fr": "parc scientifique",
+ "nl": "wetenschapspark",
+ "pt": "parque de ciência e tecnologia",
+ "zh": "科學園區"
+ },
+ "seat": {
+ "de": "sitzplatz",
+ "en": "seat",
+ "es": "asiento",
+ "fr": "siège",
+ "nl": "zitplaats",
+ "pt": "assento",
+ "zh": "座位",
+ "zh-hk": "廂座"
+ },
+ "shelter": {
+ "de": "unterstand",
+ "en": "shelter",
+ "es": "refugio",
+ "fr": "abri",
+ "nl": "schuilplaats",
+ "pt": "abrigo",
+ "zh": "簡易居所",
+ "zh-cn": "避难所"
+ },
+ "shower": {
+ "de": "dusche",
+ "en": "shower",
+ "es": "ducha",
+ "fr": "douche",
+ "nl": "douche",
+ "pt": "duche",
+ "pt-br": "chuveiro",
+ "zh": "花灑"
+ },
+ "showers": {
+ "de": "dusche",
+ "en": "shower",
+ "es": "ducha",
+ "fr": "douche",
+ "nl": "douche",
+ "pt": "duche",
+ "pt-br": "chuveiro",
+ "zh": "花灑"
+ },
+ "social_center": {
+ "de": "autonomes zentrum",
+ "en": "social center",
+ "en-gb": "social centre",
+ "es": "centro social",
+ "fr": "centre social autogéré",
+ "nl": "verenigingscentrum",
+ "pt": "centro social"
+ },
+ "social_centre": {
+ "de": "autonomes zentrum",
+ "en": "social center",
+ "en-gb": "social centre",
+ "es": "centro social",
+ "fr": "centre social autogéré",
+ "nl": "verenigingscentrum",
+ "pt": "centro social"
+ },
+ "social_facility": {
+ "de": "sozialeinrichtung",
+ "en": "social facility",
+ "es": "residencia de personas mayores",
+ "fr": "unité de soins de longue durée",
+ "nl": "verpleeghuis",
+ "zh": "介護老人福祉設施",
+ "de-ch": "altersheim",
+ "en-ca": "retirement home",
+ "en-gb": "retirement home",
+ "pt": "casa de retiro"
+ },
+ "sorting_office": {
+ "de": "briefzentrum",
+ "en": "sorting office",
+ "nl": "postsorteercentrum",
+ "zh": "郵件分類處"
+ },
+ "stables": {
+ "de": "pferdestall",
+ "en": "stable",
+ "es": "caballeriza",
+ "fr": "écurie",
+ "nl": "stal",
+ "pt": "cavalariça",
+ "zh": "馬棚"
+ },
+ "stock_exchange": {
+ "de": "wertpapierbörse",
+ "en": "stock exchange",
+ "es": "bolsa de valores",
+ "fr": "bourse des valeurs",
+ "nl": "effectenbeurs",
+ "pt": "bolsa de valores",
+ "zh": "证券交易所",
+ "zh-hk": "證券交易所",
+ "zh-tw": "證券交易所"
+ },
+ "stool": {
+ "de": "stuhl",
+ "de-at": "sessel",
+ "en": "chair",
+ "es": "silla",
+ "fr": "chaise",
+ "nl": "stoel",
+ "pt": "cadeira",
+ "zh": "椅"
+ },
+ "stripclub": {
+ "de": "stripclub",
+ "en": "strip club",
+ "es": "club de striptease",
+ "fr": "club de striptease",
+ "nl": "stripclub",
+ "zh": "脫衣舞俱樂部"
+ },
+ "stroller_parking": {
+ "de": "kinderwagenparkplatz",
+ "en": "stroller parking"
+ },
+ "student_accommodation": {
+ "de": "studentenwohnheim",
+ "en": "hall of residence",
+ "es": "residencia universitaria",
+ "fr": "résidence universitaire",
+ "nl": "studentenhuis",
+ "pt": "residência universitária",
+ "zh": "宿舍"
+ },
+ "studio": {
+ "de": "film- oder fernsehstudio",
+ "en": "media studio facility",
+ "nl": "film- of televisiestudio"
+ },
+ "swimming_pool": {
+ "de": "schwimmbecken",
+ "en": "swimming pool",
+ "es": "piscina",
+ "fr": "piscine",
+ "nl": "zwembad",
+ "pt": "piscina",
+ "zh": "游泳池"
+ },
+ "swingerclub": {
+ "de": "swingerclub",
+ "en": "sex club",
+ "es": "club de sexo",
+ "fr": "club échangiste",
+ "nl": "parenclub"
+ },
+ "table": {
+ "de": "tisch",
+ "en": "table",
+ "en-ca": "table (furniture)",
+ "es": "mesa",
+ "nl": "tafel",
+ "pt": "mesa",
+ "zh": "桌子"
+ },
+ "taxi": {
+ "de": "taxistand",
+ "en": "taxicab stand",
+ "en-gb": "taxi rank",
+ "fr": "station de taxis",
+ "nl": "taxistandplaats",
+ "zh": "的士站"
+ },
+ "telephone": {
+ "de": "münzfernsprecher",
+ "en": "payphone",
+ "es": "teléfono público",
+ "fr": "téléphone public",
+ "nl": "betaalde telefoon",
+ "pt": "telefone público",
+ "zh": "公共電話",
+ "pt-br": "telefone",
+ "zh-cn": "电话",
+ "zh-tw": "電話"
+ },
+ "theatre": {
+ "de": "theater",
+ "en": "theatre",
+ "es": "teatro",
+ "fr": "théâtre",
+ "nl": "theater",
+ "pt": "teatro",
+ "zh": "劇場",
+ "zh-cn": "剧场"
+ },
+ "ticket_validator": {
+ "de": "entwerter",
+ "en": "ticket validator",
+ "es": "validadora",
+ "fr": "validation des billets",
+ "nl": "stempelautomaat"
+ },
+ "toilets": {
+ "de": "bedürfnisanstalt",
+ "en": "public toilet",
+ "es": "baño público",
+ "fr": "toilettes publiques",
+ "nl": "openbaar toilet",
+ "pt": "casa de banho pública",
+ "pt-br": "banheiro público",
+ "zh": "公共廁所"
+ },
+ "townhall": {
+ "de": "rathaus",
+ "en": "city hall",
+ "en-gb": "town hall",
+ "es": "casa consistorial",
+ "fr": "mairie",
+ "nl": "stadhuis",
+ "pt": "câmara municipal",
+ "pt-br": "prefeitura",
+ "zh": "地方政府大樓"
+ },
+ "toy_library": {
+ "de": "ludothek",
+ "en": "toy library",
+ "es": "ludoteca",
+ "fr": "ludothèque",
+ "nl": "speel-o-theek",
+ "pt": "brinquedoteca",
+ "zh": "兒童玩具圖書館"
+ },
+ "trolley_bay": {
+ "en": "shopping cart shelter"
+ },
+ "university": {
+ "de": "college",
+ "en": "constituent college",
+ "de-ch": "universität",
+ "en-ca": "university",
+ "es": "universidad",
+ "fr": "université",
+ "nl": "universiteit",
+ "pt": "universidade",
+ "zh": "大學",
+ "zh-cn": "大学"
+ },
+ "vehicle_inspection": {
+ "de": "fahrzeuguntersuchung",
+ "en": "vehicle inspection",
+ "es": "inspección técnica de vehículos",
+ "fr": "contrôle technique des véhicules automobiles",
+ "nl": "autokeuring",
+ "pt": "inspeção veicular",
+ "zh": "車輛檢驗",
+ "zh-cn": "车辆年审"
+ },
+ "vending_machine": {
+ "de": "selbstbedienungsautomat",
+ "en": "vending machine",
+ "es": "máquina expendedora",
+ "fr": "distributeur automatique",
+ "nl": "verkoopautomaat",
+ "pt": "máquina de venda automática",
+ "zh": "自動販賣機",
+ "zh-cn": "自动售货机",
+ "zh-hk": "自動售賣機"
+ },
+ "veterinary": {
+ "de": "tierarzt",
+ "en": "veterinarian",
+ "en-ca": "veterinary physician",
+ "es": "veterinario",
+ "fr": "vétérinaire",
+ "nl": "dierenarts",
+ "pt": "veterinário",
+ "zh": "兽医",
+ "zh-hk": "獸醫",
+ "zh-tw": "獸醫"
+ },
+ "waste_basket": {
+ "de": "abfalleimer",
+ "en": "waste container",
+ "es": "cubo de basura",
+ "fr": "poubelle",
+ "nl": "vuilnisbak",
+ "pt": "caixote do lixo",
+ "pt-br": "lixeira",
+ "zh": "垃圾桶"
+ },
+ "waste_transfer_station": {
+ "de": "müllumladestation",
+ "en": "waste transfer station"
+ },
+ "water_point": {
+ "en": "water point"
+ },
+ "watering_place": {
+ "en": "stock tank",
+ "de": "tränke",
+ "en-ca": "abreuvoir",
+ "en-gb": "abreuvoir",
+ "es": "abrevadero",
+ "fr": "abreuvoir",
+ "nl": "drinkbak"
+ },
+ "weighbridge": {
+ "de": "brückenwaage",
+ "en": "truck scale",
+ "es": "báscula puente",
+ "nl": "weegbrug"
+ }
+ },
+ "animal_shelter": {
+ "": {
+ "en": "pet adoption",
+ "es": "adopción en animales",
+ "pt": "adoção de animais",
+ "zh": "寵物領養",
+ "de": "gnadenhof"
+ }
+ },
+ "animated": {
+ "trivision_blades": {
+ "en": "trivision"
+ }
+ },
+ "artwork": {
+ "": {
+ "de": "bronzeskulptur",
+ "en": "bronze sculpture",
+ "es": "escultura en bronce",
+ "fr": "sculpture en bronze",
+ "nl": "bronssculptuur",
+ "pt": "bronze (escultura)",
+ "zh": "青銅雕塑"
+ }
+ },
+ "artwork_type": {
+ "architecture": {
+ "de": "architektur",
+ "en": "architecture",
+ "es": "arquitectura",
+ "nl": "architectuur",
+ "pt": "arquitetura",
+ "zh": "建筑",
+ "zh-hk": "建築"
+ },
+ "azulejo": {
+ "en": "azulejo",
+ "zh": "瓷磚畫"
+ },
+ "bust": {
+ "de": "büste",
+ "en": "bust",
+ "es": "busto",
+ "fr": "buste",
+ "nl": "buste",
+ "pt": "busto",
+ "zh": "半身像"
+ },
+ "graffiti": {
+ "en": "graffiti",
+ "es": "grafiti",
+ "pt": "grafito",
+ "pt-br": "grafite",
+ "zh": "塗鴉",
+ "zh-cn": "涂鸦"
+ },
+ "installation": {
+ "en": "installation",
+ "es": "instalación artística",
+ "nl": "installatie",
+ "pt": "instalação",
+ "zh": "裝置藝術",
+ "zh-cn": "装置艺术"
+ },
+ "mural": {
+ "de": "wandmalerei",
+ "en": "mural",
+ "fr": "murale",
+ "nl": "muurschildering",
+ "zh": "壁畫",
+ "zh-cn": "壁画"
+ },
+ "painting": {
+ "de": "gemälde",
+ "en": "painting",
+ "es": "pintura",
+ "fr": "peinture",
+ "nl": "schilderij",
+ "pt": "pintura",
+ "zh": "畫作",
+ "zh-cn": "画作"
+ },
+ "relief": {
+ "de": "relief",
+ "en": "relief sculpture",
+ "en-ca": "relief",
+ "en-gb": "relief",
+ "es": "relieve",
+ "fr": "relief",
+ "nl": "reliëf",
+ "pt": "baixo-relevo",
+ "pt-br": "relevo",
+ "zh": "浮雕"
+ },
+ "sculpture": {
+ "de": "skulptur",
+ "en": "sculpture",
+ "es": "escultura",
+ "nl": "sculptuur",
+ "pt": "escultura",
+ "zh": "雕塑"
+ },
+ "statue": {
+ "en": "statue",
+ "es": "estatua",
+ "nl": "standbeeld",
+ "pt": "estátua",
+ "zh": "塑像"
+ },
+ "tilework": {
+ "de": "kachel",
+ "en": "tile",
+ "es": "baldosa",
+ "fr": "carreau",
+ "nl": "tegel",
+ "pt": "ladrilho",
+ "zh": "瓷砖",
+ "zh-hk": "瓷磚",
+ "zh-tw": "瓷磚"
+ }
+ },
+ "attraction": {
+ "animal": {
+ "en": "captivity",
+ "es": "zoocría",
+ "fr": "captivité",
+ "nl": "gevangenschap",
+ "pt": "cativeiro",
+ "zh": "圈養"
+ },
+ "dark_ride": {
+ "de": "themenfahrt",
+ "en": "dark ride",
+ "fr": "parcours scénique",
+ "nl": "darkride",
+ "pt": "trem-fantasma"
+ },
+ "roller_coaster": {
+ "de": "achterbahn",
+ "en": "roller coaster",
+ "es": "montaña rusa",
+ "fr": "montagnes russes",
+ "nl": "achtbaan",
+ "pt": "montanha-russa",
+ "zh": "雲霄飛車",
+ "zh-cn": "过山车",
+ "zh-hk": "過山車"
+ },
+ "summer_toboggan": {
+ "de": "wannen-rodelbahn",
+ "en": "alpine slide",
+ "fr": "luge d'été",
+ "nl": "rodelbaan"
+ }
+ },
+ "barrier": {
+ "bollard": {
+ "de": "poller",
+ "en": "bollard",
+ "es": "bolardo",
+ "nl": "poller"
+ },
+ "border_control": {
+ "de": "grenzkontrolle",
+ "en": "border control",
+ "es": "control de fronteras",
+ "fr": "contrôle frontalier",
+ "nl": "grensbewaking",
+ "pt": "controle de alfândega",
+ "zh": "邊境管制"
+ },
+ "bump_gate": {
+ "en": "bump gate"
+ },
+ "bus_trap": {
+ "de": "busschleuse",
+ "en": "bus trap",
+ "nl": "bussluis"
+ },
+ "cable_barrier": {
+ "en": "cable barrier",
+ "nl": "kabelbarrière"
+ },
+ "cattle_grid": {
+ "de": "viehgitter",
+ "en": "cattle grid",
+ "es": "paso canadiense",
+ "fr": "barrière canadienne",
+ "nl": "veerooster",
+ "pt": "mata-burro"
+ },
+ "city_wall": {
+ "de": "stadtmauer",
+ "en": "city walls",
+ "en-gb": "city wall",
+ "es": "muralla urbana",
+ "fr": "rempart de ville",
+ "nl": "stadsmuur",
+ "pt": "muralhas da cidade"
+ },
+ "cycle_barrier": {
+ "de": "umlaufgitter",
+ "en": "pedestrian chicane",
+ "fr": "barrière à vélos",
+ "nl": "slingerhek"
+ },
+ "fence": {
+ "de": "zaun",
+ "en": "fence",
+ "es": "valla",
+ "fr": "clôture",
+ "nl": "hek",
+ "pt": "cerca",
+ "zh": "圍欄"
+ },
+ "gate": {
+ "de": "tor",
+ "en": "gate",
+ "es": "puerta",
+ "fr": "porte",
+ "nl": "poort",
+ "pt": "portão",
+ "zh": "門"
+ },
+ "guard_rail": {
+ "de": "schutzplanke",
+ "en": "traffic barrier",
+ "es": "barrera de contención",
+ "fr": "glissière de sécurité",
+ "nl": "geleiderail",
+ "pt": "mureta",
+ "zh": "交通護欄"
+ },
+ "haha": {
+ "en": "ha-ha",
+ "zh": "哈哈牆"
+ },
+ "hedge": {
+ "de": "hecke",
+ "en": "hedge",
+ "es": "seto",
+ "fr": "haie",
+ "nl": "heg",
+ "pt": "sebe",
+ "zh": "樹籬"
+ },
+ "height_restrictor": {
+ "en": "height barrier"
+ },
+ "jersey_barrier": {
+ "de": "jersey-barriere",
+ "en": "jersey barrier",
+ "es": "barrera new jersey",
+ "fr": "mur jersey",
+ "pt": "barreira new jersey",
+ "zh": "紐澤西護欄",
+ "zh-cn": "新泽西护栏"
+ },
+ "kerb": {
+ "de": "bordstein",
+ "en": "curb",
+ "en-gb": "kerb",
+ "es": "bordillo",
+ "fr": "bordure",
+ "nl": "trottoirband",
+ "pt": "meio-fio",
+ "zh": "马路牙子"
+ },
+ "kissing_gate": {
+ "de": "doppelflügliches tor",
+ "en": "kissing gate"
+ },
+ "lift_gate": {
+ "de": "schranke",
+ "de-at": "schranken",
+ "de-ch": "barriere",
+ "en": "boom barrier",
+ "es": "barrera",
+ "nl": "slagboom",
+ "zh": "遮斷機"
+ },
+ "no": {
+ "de": "barrierefreies bauen",
+ "en": "barrier-free",
+ "pt": "sem barreiras"
+ },
+ "retaining_wall": {
+ "de": "stützwand",
+ "en": "retaining wall",
+ "es": "muro de contención",
+ "fr": "mur de soutènement",
+ "nl": "keermuur",
+ "pt": "muro de suporte",
+ "zh": "護土牆"
+ },
+ "sally_port": {
+ "de": "sally-port",
+ "en": "sally port",
+ "nl": "sortie",
+ "zh": "暗道"
+ },
+ "spikes": {
+ "de": "nagelsperre",
+ "en": "spike strip",
+ "fr": "herse",
+ "nl": "spijkermat"
+ },
+ "step": {
+ "de": "treppenstufe",
+ "en": "step",
+ "es": "escalón",
+ "fr": "escalier"
+ },
+ "stile": {
+ "de": "zauntritt",
+ "en": "stile",
+ "es": "montante (escalera)",
+ "fr": "échalier"
+ },
+ "sump_buster": {
+ "en": "sump buster",
+ "nl": "carterbreker"
+ },
+ "toll_booth": {
+ "de": "mautstelle",
+ "en": "toll booth",
+ "fr": "barrière d'octroi",
+ "zh": "公路收费站",
+ "zh-hk": "公路收費站"
+ },
+ "turnstile": {
+ "de": "vereinzelungsanlage",
+ "en": "turnstile",
+ "es": "molinete",
+ "fr": "portillon d'accès",
+ "nl": "tourniquet",
+ "pt": "torniquete",
+ "pt-br": "catraca",
+ "zh": "驗票閘門"
+ },
+ "wall": {
+ "de": "mauer",
+ "en": "wall",
+ "es": "pared",
+ "fr": "mur",
+ "nl": "muur",
+ "pt": "muro",
+ "zh": "墙",
+ "zh-hk": "牆",
+ "zh-tw": "牆"
+ }
+ },
+ "baseball": {
+ "softball": {
+ "en": "softball",
+ "es": "sóftbol",
+ "nl": "softbal",
+ "pt": "softbol",
+ "zh": "壘球",
+ "zh-cn": "垒球"
+ }
+ },
+ "basin": {
+ "detention": {
+ "de": "hochwasserrückhaltebecken",
+ "en": "detention basin",
+ "nl": "spaarbekken",
+ "zh": "滯洪池",
+ "zh-cn": "滞洪区"
+ },
+ "infiltration": {
+ "de": "regenwasserversickerung",
+ "en": "infiltration basin",
+ "fr": "bassin d'infiltration",
+ "zh": "入渗池"
+ },
+ "retention": {
+ "de": "regenrückhaltebecken",
+ "en": "retention basin",
+ "fr": "bassin de rétention",
+ "nl": "retentiebekken",
+ "zh": "調整池"
+ }
+ },
+ "bath": {
+ "": {
+ "de": "hammām",
+ "en": "hammam",
+ "nl": "hamam",
+ "pt": "banho turco",
+ "zh": "土耳其浴"
+ }
+ },
+ "bicycle": {
+ "no": {
+ "de": "fahrradverbot",
+ "en": "bikes not allowed",
+ "fr": "interdiction aux vélos",
+ "pt": "proibido bicicleta"
+ }
+ },
+ "bicycle_parking": {
+ "building": {
+ "de": "fahrradstation",
+ "en": "bicycle parking station",
+ "es": "estacionamiento de bicicletas cubierto",
+ "fr": "garage à vélo",
+ "nl": "fietsenstalling",
+ "pt": "bicicletário",
+ "zh": "單車停泊場",
+ "zh-cn": "自行车停车场"
+ },
+ "stands": {
+ "de": "fahrradabstellanlage",
+ "de-ch": "veloständer",
+ "en": "bicycle stand",
+ "es": "estacionamiento de bicicletas",
+ "fr": "arceau à vélo",
+ "nl": "fietsenrek",
+ "pt": "paraciclo",
+ "zh": "自行車停車架"
+ },
+ "wall_loops": {
+ "de": "fahrradbügelparker",
+ "en": "wheelbender"
+ }
+ },
+ "biotic_reef": {
+ "": {
+ "en": "atoll",
+ "es": "atolón",
+ "nl": "atol",
+ "pt": "atol",
+ "zh": "環礁",
+ "en-ca": "fringing reef",
+ "en-gb": "fringing reef"
+ }
+ },
+ "books": {
+ "": {
+ "de": "esperanto-literatur",
+ "en": "esperanto literature",
+ "es": "literatura en esperanto",
+ "fr": "littérature espérantophone",
+ "nl": "esperantoliteratuur",
+ "pt": "literatura em esperanto",
+ "zh": "世界語文學",
+ "zh-cn": "世界语文学"
+ }
+ },
+ "booth": {
+ "K2": {
+ "en": "k2 telephone box"
+ },
+ "K6": {
+ "en": "k6 telephone box"
+ }
+ },
+ "border_type": {
+ "county": {
+ "en": "county",
+ "es": "condado",
+ "fr": "comté",
+ "pt": "condado",
+ "zh": "县",
+ "zh-tw": "縣"
+ }
+ },
+ "boundary": {
+ "aboriginal_lands": {
+ "en": "lands inhabited by indigenous peoples",
+ "es": "territorios indígenas",
+ "fr": "territoire indigène",
+ "pt": "áreas habitadas por povos indígenas"
+ },
+ "administrative": {
+ "de": "administrativ-territoriale entität",
+ "en": "administrative territorial entity",
+ "es": "entidad territorial administrativa",
+ "fr": "entité territoriale administrative",
+ "nl": "bestuurlijk gebied",
+ "pt": "entidade territorial administrativa",
+ "zh": "行政領土實體",
+ "zh-cn": "行政领土实体"
+ },
+ "census": {
+ "en": "census-designated place",
+ "es": "lugar designado por el censo",
+ "pt": "região censitária",
+ "zh": "普查规定居民点",
+ "zh-hk": "普查規定居民點",
+ "zh-tw": "人口普查指定地區"
+ },
+ "ceremonial": {
+ "de": "zeremonielle grafschaften englands",
+ "en": "ceremonial county of england",
+ "en-ca": "ceremonial counties of england",
+ "es": "condado ceremonial de inglaterra",
+ "fr": "comté cérémonial",
+ "nl": "ceremoniële graafschappen van engeland",
+ "pt": "condados cerimoniais da inglaterra",
+ "zh": "英格蘭的名譽郡",
+ "zh-cn": "英格兰的名誉郡"
+ },
+ "civil_parish": {
+ "de": "parish",
+ "en": "civil parish",
+ "en-gb": "parish",
+ "es": "parroquia civil",
+ "fr": "paroisse civile",
+ "nl": "parochie",
+ "pt": "paróquia",
+ "zh": "堂区"
+ },
+ "disputed": {
+ "de": "umstrittenes territorium",
+ "en": "disputed territory",
+ "es": "territorio disputado",
+ "fr": "territoire disputé/contesté",
+ "nl": "betwist gebied",
+ "pt": "território disputado",
+ "zh": "争议领土",
+ "zh-tw": "爭議領土"
+ },
+ "maritime": {
+ "de": "seegrenze",
+ "en": "maritime boundary",
+ "es": "frontera marítima",
+ "fr": "frontière maritime",
+ "nl": "zeegrens",
+ "pt": "fronteira marítima",
+ "zh": "海上邊界"
+ },
+ "marker": {
+ "de": "grenzmarkierung",
+ "en": "boundary marker",
+ "es": "hito geográfico",
+ "fr": "borne frontière",
+ "nl": "grensmarkering",
+ "pt": "marco de fronteira",
+ "zh": "界碑"
+ },
+ "national_park": {
+ "de": "nationalpark",
+ "en": "national park",
+ "es": "parque nacional",
+ "fr": "parc national",
+ "nl": "nationaal park",
+ "pt": "parque nacional",
+ "zh": "國家公園"
+ },
+ "political": {
+ "de": "wahlkreis",
+ "en": "electoral district",
+ "en-ca": "riding",
+ "en-gb": "constituency",
+ "es": "circunscripción electoral",
+ "fr": "circonscription électorale",
+ "nl": "kieskring",
+ "pt": "círculo eleitoral",
+ "zh": "選區",
+ "zh-cn": "选区"
+ },
+ "protected_area": {
+ "de": "schutzgebiet in natur-, landschafts- oder kulturerbeschutz",
+ "en": "protected area",
+ "es": "área protegida",
+ "fr": "aire protégée",
+ "nl": "beschermd gebied",
+ "pt": "área protegida",
+ "zh": "保护区",
+ "zh-hk": "保護區",
+ "zh-tw": "保護區"
+ },
+ "special_economic_zone": {
+ "de": "sonderwirtschaftszone",
+ "en": "special economic zone",
+ "es": "zona económica especial",
+ "fr": "zone économique spéciale de chine",
+ "nl": "speciale economische zone",
+ "pt": "zona económica especial",
+ "zh": "经济特区",
+ "zh-hk": "經濟特區"
+ },
+ "vice_county": {
+ "en": "vice-county",
+ "fr": "vice-comté"
+ }
+ },
+ "brand": {
+ "SB_Tank": {
+ "en": "sb-tank"
+ }
+ },
+ "bridge": {
+ "": {
+ "de": "klappbrücke",
+ "en": "bascule bridge",
+ "es": "puente basculante",
+ "fr": "pont basculant",
+ "nl": "basculebrug",
+ "pt": "ponte basculante",
+ "zh": "上開橋",
+ "zh-hk": "運渡橋",
+ "zh-cn": "平转桥",
+ "de-ch": "bogenbrücke",
+ "en-ca": "arch bridge",
+ "pt-br": "ponte em arco",
+ "zh-tw": "拱橋"
+ },
+ "aqueduct": {
+ "de": "aquäduktbrücke",
+ "en": "aqueduct",
+ "fr": "pont aqueduc",
+ "nl": "aqueduct voor watertoevoer",
+ "zh": "引水道"
+ },
+ "boardwalk": {
+ "de": "bohlenweg",
+ "en": "boardwalk",
+ "es": "paseo marítimo",
+ "fr": "promenade en planches",
+ "nl": "vlonderpad",
+ "zh": "木板路"
+ },
+ "cantilever": {
+ "de": "gerberträger",
+ "en": "cantilever bridge",
+ "es": "puente en ménsula",
+ "fr": "pont à poutres en porte-à-faux",
+ "nl": "cantileverbrug",
+ "pt": "ponte cantilever",
+ "zh": "懸臂",
+ "zh-cn": "悬臂桥"
+ },
+ "covered": {
+ "de": "gedeckte brücke",
+ "en": "covered bridge",
+ "es": "puente cubierto",
+ "fr": "pont couvert",
+ "nl": "overdekte brug",
+ "pt": "ponte coberta",
+ "zh": "廊桥",
+ "zh-hk": "廊橋"
+ },
+ "movable": {
+ "de": "bewegliche brücke",
+ "en": "moveable bridge",
+ "es": "puente móvil",
+ "fr": "pont mobile",
+ "nl": "beweegbare brug",
+ "pt-br": "ponte móvel",
+ "zh": "开启桥",
+ "zh-hk": "開啟橋",
+ "zh-tw": "開啟橋"
+ },
+ "trestle": {
+ "de": "trestle-brücke",
+ "en": "trestle bridge",
+ "es": "puente de caballetes",
+ "fr": "pont à tréteaux",
+ "zh": "栈桥"
+ },
+ "viaduct": {
+ "de": "viadukt",
+ "en": "viaduct",
+ "es": "viaducto",
+ "fr": "viaduc",
+ "pt": "viaduto",
+ "zh": "高架橋",
+ "zh-cn": "高架桥"
+ },
+ "yes": {
+ "de": "fahrradbrücke",
+ "en": "bicycle bridge",
+ "es": "puente de bicicleta",
+ "fr": "pont cycliste",
+ "nl": "fietsbrug"
+ }
+ },
+ "building": {
+ "": {
+ "en": "art deco architecture",
+ "es": "arquitectura art déco",
+ "fr": "architecture art déco",
+ "nl": "art deco",
+ "zh": "装饰艺术建筑",
+ "de": "jugendstil",
+ "en-ca": "art nouveau",
+ "en-gb": "art nouveau",
+ "pt": "art nouveau",
+ "zh-cn": "艺术与工艺美术运动",
+ "zh-hk": "藝術與工藝美術運動",
+ "zh-tw": "藝術與工藝美術運動"
+ },
+ "allotment_house": {
+ "de": "schrebergartenlaube",
+ "en": "allotment house"
+ },
+ "apartments": {
+ "de": "geschosswohnungsbau",
+ "en": "apartment building",
+ "en-gb": "block of flats",
+ "es": "edificio de departamentos",
+ "fr": "immeuble d'habitation",
+ "nl": "appartementengebouw",
+ "pt": "edifício residencial"
+ },
+ "bakehouse": {
+ "de": "backhaus",
+ "en": "bakehouse",
+ "fr": "four à pain",
+ "nl": "bakhuis"
+ },
+ "barn": {
+ "de": "scheune",
+ "en": "barn",
+ "es": "galpón",
+ "fr": "grange",
+ "nl": "schuur",
+ "pt": "barracão",
+ "pt-br": "galpão",
+ "zh": "穀倉"
+ },
+ "bell_tower": {
+ "de": "glockenturm",
+ "en": "bell tower",
+ "es": "torre campanario",
+ "fr": "clocher-tour",
+ "nl": "klokkentoren",
+ "pt": "torre sineira",
+ "pt-br": "campanário",
+ "zh": "鐘樓",
+ "zh-cn": "钟楼"
+ },
+ "boathouse": {
+ "de": "bootshaus",
+ "en": "boathouse",
+ "fr": "hangar à bateaux",
+ "nl": "botenhuis"
+ },
+ "brewery": {
+ "de": "brauereigebäude",
+ "en": "brewery building",
+ "fr": "bâtiment de brasserie",
+ "nl": "brouwerijgebouw"
+ },
+ "bungalow": {
+ "en": "bungalow",
+ "es": "bungaló",
+ "pt": "bangalô",
+ "zh": "洋房"
+ },
+ "bunker": {
+ "en": "bunker",
+ "es": "búnker",
+ "pt": "búnquer",
+ "zh": "碉堡"
+ },
+ "cabin": {
+ "de": "log cabin",
+ "en": "joined-log structure",
+ "en-gb": "log cabin",
+ "es": "cabaña de troncos",
+ "fr": "cabane en rondins",
+ "nl": "blokhut",
+ "zh": "原木屋"
+ },
+ "carport": {
+ "en": "carport"
+ },
+ "cathedral": {
+ "de": "kathedrale",
+ "en": "cathedral",
+ "es": "catedral",
+ "fr": "cathédrale",
+ "nl": "kathedraal",
+ "pt": "catedral",
+ "zh": "主教座堂"
+ },
+ "chapel": {
+ "de": "kapelle",
+ "en": "chapel",
+ "es": "capilla",
+ "fr": "chapelle",
+ "nl": "kapel",
+ "pt": "capela",
+ "zh": "小圣堂",
+ "zh-hk": "小聖堂",
+ "zh-tw": "小聖堂"
+ },
+ "church": {
+ "de": "kirchengebäude",
+ "de-ch": "kirche",
+ "en": "church building",
+ "en-ca": "church",
+ "en-gb": "church",
+ "es": "iglesia",
+ "fr": "église",
+ "nl": "kerkgebouw",
+ "pt": "igreja",
+ "zh": "教堂"
+ },
+ "civic": {
+ "de": "bürgerhaus",
+ "en": "civic building",
+ "es": "edificio cívico",
+ "fr": "édifice civil",
+ "nl": "burgerlijk gebouw",
+ "pt": "construção cívica",
+ "zh": "民用建筑"
+ },
+ "college": {
+ "en": "college",
+ "fr": "collège",
+ "pt": "colégio",
+ "zh": "學院",
+ "zh-cn": "学院"
+ },
+ "commercial": {
+ "de": "geschäftshaus",
+ "en": "commercial building",
+ "es": "edificio comercial",
+ "fr": "bâtiment commercial",
+ "nl": "bedrijfsgebouw",
+ "pt": "edifício comercial",
+ "zh": "商業建築",
+ "zh-cn": "商业建筑"
+ },
+ "condominium": {
+ "de": "eigentumswohnung",
+ "en": "condominium",
+ "es": "condominio",
+ "fr": "copropriété",
+ "nl": "appartementsrecht",
+ "pt": "condomínio",
+ "zh": "公寓大廈"
+ },
+ "conservatory": {
+ "de": "wintergarten",
+ "en": "sunroom",
+ "es": "conservatorio de plantas",
+ "fr": "véranda",
+ "nl": "serre",
+ "pt": "jardim de inverno",
+ "zh": "日光室"
+ },
+ "construction": {
+ "de": "im bau",
+ "en": "building or structure under construction",
+ "es": "edificio en construcción",
+ "fr": "en construction",
+ "nl": "bouwen in aanbouw",
+ "pt": "edifício em construção",
+ "zh": "正在建设的建筑",
+ "zh-hk": "正在興建的建築",
+ "zh-tw": "正在興建的建築"
+ },
+ "container": {
+ "de": "containergebäude",
+ "en": "container building",
+ "es": "cargotectura",
+ "fr": "maison-conteneur",
+ "nl": "containergebouw",
+ "zh": "貨櫃屋"
+ },
+ "cowshed": {
+ "de": "kuhstall",
+ "en": "cowshed",
+ "nl": "koeienstal"
+ },
+ "data_center": {
+ "de": "rechenzentrum",
+ "en": "data center",
+ "es": "centro de procesamiento de datos",
+ "fr": "centre de données",
+ "nl": "datacenter",
+ "pt": "centro de processamento de dados",
+ "zh": "数据中心",
+ "zh-hk": "數據中心",
+ "zh-tw": "資料中心"
+ },
+ "detached": {
+ "de": "einfamilienwohnhaus",
+ "en": "single-family detached home",
+ "es": "vivienda unifamiliar",
+ "fr": "maison unifamiliale",
+ "nl": "eengezinswoning",
+ "pt": "casa unifamiliar",
+ "zh": "一戶建"
+ },
+ "digester": {
+ "de": "biogasanlage",
+ "en": "biogas plant"
+ },
+ "dormitory": {
+ "de": "wohnheim",
+ "de-ch": "schlafunterkunft",
+ "en": "dormitory",
+ "fr": "dortoir",
+ "pt": "dormitório",
+ "zh": "宿舍"
+ },
+ "entrance": {
+ "de": "eingang",
+ "en": "entrance",
+ "es": "entrada",
+ "fr": "entrée",
+ "nl": "entree",
+ "pt": "entrada",
+ "zh": "入口"
+ },
+ "farm": {
+ "de": "bauernhaus",
+ "en": "farmhouse",
+ "es": "casa de campo",
+ "fr": "corps de ferme",
+ "nl": "boerderij",
+ "pt": "casa de campo",
+ "zh": "農舍"
+ },
+ "farm_auxiliary": {
+ "de": "landwirtschaftsgebäude",
+ "en": "agricultural structure",
+ "en-gb": "agricultural building",
+ "es": "edificio agrícola",
+ "fr": "construction agricole",
+ "nl": "agrarische bouwconstructies",
+ "pt-br": "edifício agrícola",
+ "zh": "農業建築"
+ },
+ "font": {
+ "de": "baptisterium",
+ "en": "baptistery",
+ "es": "baptisterio",
+ "fr": "baptistère",
+ "nl": "baptisterium",
+ "pt": "batistério",
+ "zh": "洗禮堂"
+ },
+ "garage": {
+ "en": "garage",
+ "es": "garaje",
+ "pt": "garagem",
+ "zh": "车库"
+ },
+ "garages": {
+ "en": "garage",
+ "es": "garaje",
+ "pt": "garagem",
+ "zh": "车库"
+ },
+ "garbage_shed": {
+ "en": "garbage shed"
+ },
+ "gatehouse": {
+ "de": "stadttor",
+ "en": "city gate",
+ "es": "puerta de la ciudad",
+ "fr": "porte de ville",
+ "nl": "stadspoort",
+ "pt": "porta da cidade",
+ "pt-br": "portas da cidade",
+ "zh": "城門"
+ },
+ "grandstand": {
+ "de": "tribüne",
+ "en": "grandstand",
+ "es": "tribuna",
+ "fr": "gradin"
+ },
+ "greenhouse": {
+ "de": "gewächshaus",
+ "en": "greenhouse",
+ "es": "invernadero",
+ "fr": "serre",
+ "nl": "kas",
+ "pt": "estufa",
+ "zh": "溫室",
+ "zh-cn": "温室"
+ },
+ "ground_station": {
+ "de": "erdfunkstelle",
+ "en": "ground station",
+ "es": "estación de seguimiento de satélites",
+ "fr": "station terrienne",
+ "nl": "grondstation",
+ "pt": "estação terrestre",
+ "pt-br": "estação terrena",
+ "zh": "地面觀測站",
+ "zh-cn": "通信港"
+ },
+ "hangar": {
+ "en": "hangar",
+ "zh": "飞机库"
+ },
+ "hospital": {
+ "de": "krankenhausgebäude",
+ "en": "hospital building",
+ "es": "edificio de hospital",
+ "fr": "bâtiment d'hôpital",
+ "nl": "ziekenhuisgebouw",
+ "pt": "prédio do hospital"
+ },
+ "hotel": {
+ "de": "hotelgebäude",
+ "en": "hotel building",
+ "es": "edificio de hotel",
+ "fr": "hôtel",
+ "nl": "hotelgebouw",
+ "pt": "hotel"
+ },
+ "house": {
+ "de": "haus",
+ "en": "house",
+ "es": "casa",
+ "fr": "maison",
+ "nl": "woonhuis",
+ "pt": "casa",
+ "zh": "住宅"
+ },
+ "houseboat": {
+ "de": "wohnboot",
+ "en": "houseboat",
+ "es": "casa flotante",
+ "nl": "woonboot",
+ "zh": "住家艇"
+ },
+ "hut": {
+ "de": "hütte",
+ "en": "hut",
+ "es": "choza",
+ "fr": "hutte",
+ "pt": "cabana",
+ "pt-br": "mucambo",
+ "zh": "小屋"
+ },
+ "industrial": {
+ "de": "industriegebäude",
+ "en": "industrial building",
+ "es": "edificio industrial",
+ "fr": "bâtiment industriel",
+ "nl": "industrieel gebouw",
+ "pt": "edificação industrial",
+ "zh": "工业建筑",
+ "zh-tw": "工業建築"
+ },
+ "kindergarten": {
+ "en": "kindergarten",
+ "es": "jardín de infancia",
+ "fr": "école maternelle",
+ "nl": "kleuterschool",
+ "pt": "jardim de infância",
+ "zh": "幼稚園",
+ "zh-cn": "幼儿园"
+ },
+ "kiosk": {
+ "en": "kiosk",
+ "es": "quiosco",
+ "fr": "kiosque",
+ "pt": "quiosque",
+ "zh": "便亭",
+ "zh-cn": "自助機台"
+ },
+ "library": {
+ "de": "bibliotheksbau",
+ "en": "library building",
+ "es": "biblioteca",
+ "fr": "bibliothèque",
+ "nl": "bibliotheekgebouw",
+ "pt": "edifício de biblioteca"
+ },
+ "manufacture": {
+ "de": "manufaktur",
+ "en": "manufactory",
+ "es": "manufactura",
+ "fr": "manufacture",
+ "nl": "manufactuur",
+ "pt": "manufatura",
+ "zh": "手工作坊式生产模式"
+ },
+ "marquee": {
+ "de": "festzelt",
+ "en": "pole marquee",
+ "es": "entoldado"
+ },
+ "mosque": {
+ "de": "moschee",
+ "en": "mosque",
+ "es": "mezquita",
+ "fr": "mosquée",
+ "nl": "moskee",
+ "pt": "mesquita",
+ "zh": "清真寺"
+ },
+ "office": {
+ "de": "bürogebäude",
+ "en": "office building",
+ "es": "edificio de oficinas",
+ "fr": "immeuble de bureaux",
+ "nl": "kantoorgebouw",
+ "pt": "prédio de escritórios",
+ "zh": "办公大楼",
+ "zh-hk": "辦公大樓"
+ },
+ "pagoda": {
+ "de": "pagode",
+ "en": "pagoda",
+ "fr": "pagode",
+ "nl": "pagode",
+ "pt": "pagode",
+ "zh": "塔"
+ },
+ "palace": {
+ "de": "palast",
+ "en": "palace",
+ "es": "palacio",
+ "fr": "palais",
+ "nl": "paleis",
+ "pt": "palácio",
+ "zh": "宮殿",
+ "zh-cn": "宫殿"
+ },
+ "parking": {
+ "de": "parkhaus",
+ "en": "multistorey car park",
+ "en-ca": "multi-storey car park",
+ "en-gb": "multi-storey car park",
+ "fr": "stationnement étagé",
+ "nl": "parkeergarage",
+ "pt": "silo-auto",
+ "pt-br": "edifício-garagem",
+ "zh": "多層停車場",
+ "zh-tw": "立體停車場"
+ },
+ "parliament": {
+ "de": "parlamentsgebäude",
+ "en": "parliament building",
+ "es": "edificio parlamentario",
+ "fr": "bâtiment parlementaire",
+ "nl": "parlementsgebouw",
+ "pt": "edifício parlamentar",
+ "zh": "議會建築物",
+ "zh-cn": "议会建筑物"
+ },
+ "pavilion": {
+ "de": "sporthalle",
+ "en": "sports pavilion"
+ },
+ "public": {
+ "de": "öffentliches gebäude",
+ "en": "public building",
+ "es": "edificio público",
+ "fr": "bâtiment public",
+ "nl": "openbaar gebouw",
+ "pt": "edifício público"
+ },
+ "residential": {
+ "de": "wohngebäude",
+ "en": "residential building",
+ "es": "vivienda",
+ "fr": "bâtiment d'habitation",
+ "nl": "woongebouw",
+ "pt": "edifício residencial",
+ "zh": "居住建築物"
+ },
+ "retail": {
+ "de": "einzelhandelsgebäude",
+ "en": "retail building",
+ "nl": "winkelpand"
+ },
+ "riding_hall": {
+ "de": "reithalle",
+ "en": "riding hall",
+ "es": "picadero",
+ "fr": "manège",
+ "pt": "picadeiro",
+ "zh": "室内骑马场"
+ },
+ "roof": {
+ "de": "dach",
+ "en": "roof"
+ },
+ "ruins": {
+ "de": "ruine",
+ "en": "ruins",
+ "es": "ruina",
+ "fr": "ruine",
+ "nl": "ruïne",
+ "pt": "ruína",
+ "zh": "廢墟",
+ "zh-cn": "废墟"
+ },
+ "school": {
+ "de": "schulgebäude",
+ "en": "school building",
+ "es": "edificio escolar",
+ "fr": "bâtiment scolaire",
+ "nl": "schoolgebouw",
+ "pt": "edifício escolar",
+ "zh": "学校建筑"
+ },
+ "semi": {
+ "de": "doppelhaus",
+ "en": "semi-detached house",
+ "es": "casa adosada",
+ "fr": "maison jumelée",
+ "nl": "twee-onder-een-kapwoning",
+ "zh": "雙併屋",
+ "zh-cn": "半独立洋房"
+ },
+ "semidetached_house": {
+ "de": "doppelhaus",
+ "en": "semi-detached house",
+ "es": "casa adosada",
+ "fr": "maison jumelée",
+ "nl": "twee-onder-een-kapwoning",
+ "zh": "雙併屋",
+ "zh-cn": "半独立洋房"
+ },
+ "service": {
+ "en": "service building"
+ },
+ "shed": {
+ "de": "schuppen",
+ "de-ch": "schopf",
+ "en": "shed",
+ "es": "tinglado (cobertizo)",
+ "fr": "baraque",
+ "nl": "loods",
+ "pt": "edícula",
+ "zh": "木棚"
+ },
+ "shrine": {
+ "de": "schrein",
+ "en": "shrine",
+ "es": "santuario",
+ "fr": "sanctuaire",
+ "nl": "schrijn",
+ "pt": "santuário",
+ "zh": "聖祠",
+ "zh-cn": "圣物箱"
+ },
+ "slurry_tank": {
+ "de": "güllegrube",
+ "en": "slurry pit",
+ "fr": "fosse à lisier"
+ },
+ "stable": {
+ "de": "pferdestall",
+ "en": "stable",
+ "es": "caballeriza",
+ "fr": "écurie",
+ "nl": "stal",
+ "pt": "cavalariça",
+ "zh": "馬棚"
+ },
+ "stadium": {
+ "de": "stadion",
+ "en": "stadium",
+ "es": "estadio",
+ "fr": "stade",
+ "nl": "stadion",
+ "pt": "estádio",
+ "zh": "體育場"
+ },
+ "static_caravan": {
+ "de": "mobilheim",
+ "en": "mobile home",
+ "fr": "maison mobile",
+ "nl": "woonwagen",
+ "zh": "流動房屋"
+ },
+ "stilt_house": {
+ "de": "pfahlbau",
+ "en": "stilt house",
+ "es": "palafito",
+ "fr": "cité lacustre",
+ "nl": "paalwoning",
+ "pt": "palafita",
+ "zh": "干欄屋"
+ },
+ "sty": {
+ "de": "schweinestall",
+ "en": "pigsty",
+ "es": "pocilga",
+ "fr": "porcherie",
+ "nl": "beddenstal",
+ "zh": "豬圈"
+ },
+ "supermarket": {
+ "de": "supermarktgebäude",
+ "en": "supermarket building"
+ },
+ "synagogue": {
+ "de": "synagoge",
+ "en": "synagogue",
+ "es": "sinagoga",
+ "nl": "synagoge",
+ "pt": "sinagoga",
+ "zh": "猶太會堂"
+ },
+ "temple": {
+ "de": "hindutempel",
+ "en": "hindu temple",
+ "es": "mandir",
+ "fr": "mandir",
+ "nl": "hindoeïstische tempel",
+ "pt": "templo hindu",
+ "zh": "印度教神廟",
+ "en-ca": "temple",
+ "en-gb": "temple",
+ "pt-br": "templo",
+ "zh-cn": "神庙",
+ "zh-hk": "神廟",
+ "zh-tw": "神廟"
+ },
+ "terrace": {
+ "de": "reihenhausgruppe",
+ "en": "terrace of houses",
+ "fr": "ensemble de maisons en rangée",
+ "nl": "huizenrij",
+ "de-ch": "reihenhaus",
+ "en-ca": "terraced house",
+ "en-gb": "terraced house",
+ "es": "terraced house",
+ "pt": "terraced house",
+ "zh": "排屋",
+ "zh-cn": "联排房屋"
+ },
+ "tower": {
+ "de": "turm",
+ "en": "tower",
+ "es": "torre",
+ "fr": "tour",
+ "nl": "toren",
+ "pt": "torre",
+ "zh": "塔式建築",
+ "zh-cn": "塔式建筑"
+ },
+ "train_station": {
+ "de": "empfangsgebäude",
+ "de-at": "aufnahmsgebäude (bahnhof)",
+ "en": "station building",
+ "es": "edificio de la estación",
+ "fr": "bâtiment voyageurs",
+ "nl": "stationsgebouw",
+ "pt": "edifício da estação ferroviária",
+ "zh": "站房"
+ },
+ "transformer_tower": {
+ "de": "turmstation",
+ "en": "transformer tower"
+ },
+ "transportation": {
+ "en": "public transportation building"
+ },
+ "university": {
+ "de": "universitätsgebäude",
+ "en": "university building",
+ "es": "edificio universitario",
+ "fr": "bâtiment universitaire",
+ "nl": "universiteitsgebouw",
+ "pt": "edifício universitário"
+ },
+ "warehouse": {
+ "de": "speicher",
+ "en": "warehouse",
+ "es": "almacén",
+ "fr": "entrepôt",
+ "nl": "pakhuis",
+ "pt": "armazém"
+ },
+ "water_tower": {
+ "de": "wasserturm",
+ "en": "water tower",
+ "es": "torre de agua",
+ "fr": "château d'eau",
+ "nl": "watertoren",
+ "pt": "castelo d'água",
+ "pt-br": "caixa-d'água",
+ "zh": "水塔"
+ },
+ "yes": {
+ "de": "gebäude",
+ "en": "building",
+ "es": "edificio",
+ "fr": "bâtiment",
+ "nl": "gebouw",
+ "pt": "edifício",
+ "zh": "建筑物",
+ "zh-hk": "建築物",
+ "zh-tw": "建築物"
+ }
+ },
+ "bunker_type": {
+ "hardened_aircraft_shelter": {
+ "en": "hardened aircraft shelter",
+ "es": "refugio reforzado para aviones",
+ "nl": "shelter",
+ "zh": "加固飛機掩體"
+ },
+ "personnel_shelter": {
+ "de": "splitterschutzzelle",
+ "en": "single person bunker"
+ },
+ "pillbox": {
+ "en": "pillbox",
+ "es": "fortín",
+ "zh": "碉堡"
+ }
+ },
+ "capacity": {
+ "": {
+ "de": "behindertenparkplatz",
+ "en": "disabled parking permit",
+ "fr": "carte de stationnement pour personne handicapées",
+ "nl": "gehandicaptenparkeerkaart",
+ "zh": "身心障礙者專用停車位許可證"
+ }
+ },
+ "capital": {
+ "yes": {
+ "de": "hauptstadt",
+ "en": "capital",
+ "en-ca": "capital city",
+ "en-gb": "capital city",
+ "fr": "capitale",
+ "nl": "hoofdstad",
+ "zh": "首都"
+ }
+ },
+ "castle": {
+ "folly": {
+ "en": "folly",
+ "es": "capricho",
+ "fr": "fabrique de jardin",
+ "zh": "裝飾性建築"
+ }
+ },
+ "castle_type": {
+ "kremlin": {
+ "de": "kreml",
+ "en": "kremlin",
+ "zh": "克里姆林"
+ },
+ "shiro": {
+ "de": "japanische burg",
+ "en": "japanese castle",
+ "es": "castillo japonés",
+ "fr": "castel du japon",
+ "nl": "japans kasteel",
+ "pt": "castelo japonês",
+ "zh": "日式城堡"
+ },
+ "stately": {
+ "en": "stately home",
+ "fr": "maison seigneuriale"
+ }
+ },
+ "cemetery": {
+ "grave": {
+ "de": "grab",
+ "en": "grave",
+ "es": "sepultura",
+ "fr": "tombe",
+ "nl": "graf",
+ "pt": "túmulo",
+ "zh": "坟墓",
+ "zh-hk": "墳墓",
+ "zh-tw": "墳墓"
+ },
+ "war_cemetery": {
+ "de": "kriegsgräberstätte",
+ "en": "war cemetery",
+ "es": "cementerio de guerra",
+ "fr": "cimetière de guerre",
+ "nl": "oorlogsbegraafplaats",
+ "pt": "túmulo de guerra"
+ }
+ },
+ "china_class": {
+ "cun": {
+ "de": "dorf in china",
+ "en": "village-level division in china",
+ "es": "aldea de la república popular china",
+ "fr": "village de chine",
+ "nl": "dorp in china",
+ "pt-br": "vila chinesa",
+ "zh": "行政村"
+ },
+ "jiedao": {
+ "de": "straßenviertel",
+ "de-ch": "strassenviertel",
+ "en": "subdistrict of china",
+ "es": "subdistrito",
+ "fr": "sous-district",
+ "nl": "subdistricten van china",
+ "zh": "街道办事处",
+ "zh-hk": "街道",
+ "zh-tw": "街道辦事處"
+ },
+ "village": {
+ "de": "dorf in china",
+ "en": "village-level division in china",
+ "es": "aldea de la república popular china",
+ "fr": "village de chine",
+ "nl": "dorp in china",
+ "pt-br": "vila chinesa",
+ "zh": "行政村"
+ },
+ "xiang": {
+ "de": "gemeinde in china",
+ "en": "township of the people's republic of china",
+ "es": "pueblo de la república popular china",
+ "fr": "canton",
+ "nl": "gemeente in china",
+ "zh": "乡",
+ "zh-hk": "鄉",
+ "zh-tw": "鄉"
+ },
+ "zhen": {
+ "de": "großgemeinde in china",
+ "en": "town in china",
+ "es": "villa de la república popular china",
+ "fr": "bourg",
+ "nl": "grote gemeente van china",
+ "zh": "行政建制镇",
+ "zh-hk": "行政建制鎮"
+ }
+ },
+ "climbing": {
+ "": {
+ "de": "bouldern",
+ "en": "bouldering",
+ "es": "boulder",
+ "fr": "bloc",
+ "nl": "boulderen",
+ "pt": "boulder",
+ "zh": "抱石"
+ }
+ },
+ "clothes": {
+ "babies": {
+ "en": "infant clothing",
+ "nl": "babykleding",
+ "pt": "roupa para bebês",
+ "zh": "嬰兒服裝"
+ },
+ "children": {
+ "de": "kinderkleidung",
+ "en": "children's clothing",
+ "es": "indumentaria infantil",
+ "fr": "costume d'enfant",
+ "nl": "kinderkleding",
+ "pt": "roupa infantil",
+ "zh": "童裝"
+ },
+ "costumes": {
+ "de": "kostüm",
+ "en": "costume",
+ "en-gb": "dress",
+ "es": "traje",
+ "nl": "kostuum",
+ "pt": "traje",
+ "zh": "服飾"
+ },
+ "denim": {
+ "en": "denim",
+ "es": "mezclilla",
+ "zh": "牛仔布"
+ },
+ "fur": {
+ "de": "pelz",
+ "en": "fur",
+ "es": "pelaje",
+ "fr": "fourrure",
+ "nl": "vacht",
+ "pt": "pelo",
+ "zh": "毛皮"
+ },
+ "hats": {
+ "de": "hut",
+ "en": "hat",
+ "es": "sombrero",
+ "fr": "chapeau",
+ "nl": "hoed",
+ "pt": "chapéu",
+ "zh": "帽子"
+ },
+ "leather": {
+ "de": "leder",
+ "en": "leather",
+ "es": "cuero",
+ "fr": "cuir",
+ "nl": "leer",
+ "pt": "couro",
+ "zh": "皮革"
+ },
+ "men": {
+ "en": "men's clothing",
+ "fr": "vêtement masculin",
+ "nl": "herenkleding",
+ "pt": "roupa masculina"
+ },
+ "oversize": {
+ "en": "plus-size clothing"
+ },
+ "schoolwear": {
+ "de": "schuluniform",
+ "en": "school uniform",
+ "es": "uniforme escolar",
+ "fr": "uniforme scolaire",
+ "nl": "schooluniform",
+ "pt": "uniforme escolar",
+ "zh": "校服"
+ },
+ "swimwear": {
+ "de": "bade- und strandkleidung",
+ "en": "swimwear",
+ "es": "trajes de baño",
+ "fr": "maillot de bain",
+ "nl": "zwem- en strandkleding",
+ "pt": "fatos de banho e roupa de praia",
+ "zh": "泳裝"
+ },
+ "traditional": {
+ "de": "tracht",
+ "en": "traditional costume",
+ "es": "traje típico",
+ "fr": "costume traditionnel",
+ "nl": "traditionele klederdracht",
+ "pt": "traje típico",
+ "zh": "民族服饰"
+ },
+ "wedding": {
+ "de": "hochzeitsbekleidung",
+ "en": "wedding clothing",
+ "nl": "bruidskleding",
+ "pt": "traje de casamento"
+ },
+ "women": {
+ "de": "frauenkleidung",
+ "en": "women's clothing",
+ "es": "indumentaria femenina",
+ "fr": "vêtement féminin",
+ "nl": "vrouwenkleding"
+ }
+ },
+ "club": {
+ "social": {
+ "en": "social club",
+ "es": "club social",
+ "zh": "社交俱樂部"
+ },
+ "sport": {
+ "en": "parachute club",
+ "nl": "parachuteclub",
+ "de": "sportverein",
+ "en-gb": "sport club",
+ "es": "club deportivo",
+ "fr": "club sportif",
+ "pt": "clube desportivo",
+ "pt-br": "clube de esporte",
+ "zh": "體育俱樂部",
+ "zh-cn": "体育俱乐部",
+ "zh-hk": "體育會"
+ }
+ },
+ "comedy": {
+ "yes": {
+ "en": "comedy club",
+ "nl": "comedyclub"
+ }
+ },
+ "communication": {
+ "": {
+ "de": "fernsehturm",
+ "en": "tv tower",
+ "es": "torre de telecomunicaciones",
+ "fr": "tour de radiodiffusion",
+ "nl": "communicatietoren",
+ "pt": "torre de telecomunicações",
+ "zh": "电视塔"
+ }
+ },
+ "content": {
+ "water": {
+ "de": "wassertank",
+ "en": "water tank",
+ "es": "tanque de agua",
+ "fr": "réservoir d'eau",
+ "nl": "watertank",
+ "pt": "caixa-d'água",
+ "zh": "水缸"
+ }
+ },
+ "conveying": {
+ "yes": {
+ "de": "fahrsteig",
+ "en": "moving walkway",
+ "es": "pasillo rodante",
+ "fr": "tapis roulant",
+ "nl": "loopband",
+ "pt": "tapete rolante",
+ "pt-br": "esteira rolante",
+ "zh": "電動步道"
+ }
+ },
+ "covered": {
+ "booth": {
+ "de": "telefonzelle",
+ "en": "telephone booth",
+ "en-gb": "telephone box",
+ "es": "cabina telefónica",
+ "fr": "cabine téléphonique",
+ "nl": "telefooncel",
+ "pt": "cabine telefónica",
+ "zh": "电话亭",
+ "zh-hk": "電話亭"
+ }
+ },
+ "craft": {
+ "atelier": {
+ "en": "atelier",
+ "fr": "atelier d'artiste",
+ "zh": "私人畫室"
+ },
+ "bakery": {
+ "de": "bäcker",
+ "en": "baker",
+ "es": "panadero",
+ "fr": "boulanger",
+ "nl": "bakker",
+ "pt": "padeiro",
+ "zh": "面包师",
+ "zh-tw": "麵包師"
+ },
+ "basket_maker": {
+ "de": "korbmacher",
+ "en": "basket weaver",
+ "es": "cestero",
+ "fr": "vannier",
+ "nl": "mandenvlechter"
+ },
+ "beekeeper": {
+ "de": "imker",
+ "en": "beekeeper",
+ "es": "apicultor",
+ "fr": "apiculteur",
+ "nl": "imker",
+ "pt": "apicultor",
+ "zh": "蜂農"
+ },
+ "blacksmith": {
+ "de": "schmied",
+ "en": "blacksmith",
+ "es": "herrero",
+ "fr": "forgeron",
+ "nl": "ijzersmid",
+ "pt": "ferreiro",
+ "zh": "鐵匠"
+ },
+ "boatbuilder": {
+ "de": "bootsbauer(in)",
+ "en": "boat builder",
+ "es": "constructor de barco",
+ "nl": "bootbouwer"
+ },
+ "bookbinder": {
+ "de": "buchbinder",
+ "en": "bookbinder",
+ "es": "encuadernador",
+ "fr": "relieur",
+ "nl": "boekbinder",
+ "pt": "encadernador"
+ },
+ "brewery": {
+ "de": "brauerei",
+ "en": "brewery",
+ "es": "cervecería",
+ "fr": "brasserie",
+ "nl": "brouwerij",
+ "pt": "cervejaria",
+ "zh": "啤酒厂"
+ },
+ "builder": {
+ "de": "bauunternehmen",
+ "en": "construction business",
+ "es": "empresa de construcción",
+ "fr": "entreprise de construction",
+ "nl": "bouwbedrijf",
+ "pt": "construtora"
+ },
+ "carpenter": {
+ "de": "zimmerer",
+ "en": "carpenter",
+ "en-ca": "carpentry",
+ "es": "carpintero",
+ "fr": "charpentier",
+ "nl": "timmerman",
+ "pt": "carpinteiro",
+ "zh": "木匠"
+ },
+ "caterer": {
+ "en": "caterer",
+ "fr": "traiteur",
+ "nl": "cateraar"
+ },
+ "chimney_sweeper": {
+ "de": "schornsteinfeger",
+ "en": "chimney sweep",
+ "es": "deshollinador",
+ "fr": "ramoneur",
+ "nl": "schoorsteenveger"
+ },
+ "clockmaker": {
+ "de": "uhrmacher (größere uhren)",
+ "en": "clockmaker",
+ "es": "relojero",
+ "fr": "horloger",
+ "nl": "uurwerkmaker",
+ "zh": "鐘匠",
+ "zh-cn": "钟表匠"
+ },
+ "confectionery": {
+ "en": "konditorei",
+ "zh": "糕點師"
+ },
+ "distillery": {
+ "de": "brennerei",
+ "en": "distillery",
+ "es": "destilería",
+ "fr": "distillerie",
+ "nl": "destilleerderij",
+ "pt": "destilaria"
+ },
+ "dressmaker": {
+ "de": "schneider",
+ "en": "dressmaker",
+ "es": "modista",
+ "fr": "couturier",
+ "nl": "couturier",
+ "pt": "costureiro",
+ "zh": "女装裁缝"
+ },
+ "electrician": {
+ "de": "elektroinstallateur",
+ "en": "electrician",
+ "es": "electricista",
+ "fr": "électricien",
+ "nl": "elektricien",
+ "pt": "eletricista",
+ "zh": "電匠"
+ },
+ "floorer": {
+ "de": "bodenleger",
+ "en": "floorer"
+ },
+ "gardener": {
+ "de": "gärtner",
+ "en": "gardener",
+ "es": "jardinero",
+ "fr": "jardinier",
+ "nl": "hovenier",
+ "pt-br": "jardineiro",
+ "zh": "园艺工人"
+ },
+ "glaziery": {
+ "de": "glaserei",
+ "en": "glaziery",
+ "nl": "glashandel"
+ },
+ "handicraft": {
+ "de": "kunsthandwerker",
+ "en": "handicrafter",
+ "fr": "artisan manuel"
+ },
+ "jeweller": {
+ "de": "juwelier",
+ "en": "jeweler",
+ "en-ca": "jeweller",
+ "en-gb": "jeweller",
+ "es": "joyero",
+ "fr": "bijoutier",
+ "nl": "juwelier",
+ "pt": "joalheiro",
+ "zh": "珠宝商"
+ },
+ "locksmith": {
+ "de": "schlosser",
+ "en": "locksmith",
+ "es": "cerrajero",
+ "fr": "serrurier",
+ "nl": "slotenmaker",
+ "pt": "chaveiro",
+ "zh": "鎖匠"
+ },
+ "metal_construction": {
+ "de": "metallschmied",
+ "en": "metalsmith",
+ "fr": "forgeron",
+ "nl": "metaalsmid",
+ "zh": "金属工匠"
+ },
+ "optician": {
+ "de": "augenoptiker",
+ "en": "optician",
+ "es": "óptico",
+ "fr": "opticien-lunetier",
+ "nl": "opticien",
+ "zh": "配鏡師"
+ },
+ "painter": {
+ "de": "maler und lackierer",
+ "en": "painter and varnisher",
+ "en-gb": "decorator",
+ "es": "pintor",
+ "fr": "peintre en bâtiment",
+ "nl": "huisschilder",
+ "pt": "pintor",
+ "zh": "裝修"
+ },
+ "photographer": {
+ "de": "fotograf",
+ "en": "photographer",
+ "es": "fotógrafo",
+ "fr": "photographe",
+ "nl": "fotograaf",
+ "pt": "fotógrafo",
+ "zh": "攝影師",
+ "zh-cn": "摄影师"
+ },
+ "photographic_laboratory": {
+ "de": "fotolabor",
+ "en": "photographic laboratory",
+ "es": "laboratorio fotográfico"
+ },
+ "piano_tuner": {
+ "de": "klavierstimmer",
+ "en": "piano tuner",
+ "es": "afinador de pianos",
+ "fr": "accordeur",
+ "nl": "pianostemmer"
+ },
+ "plasterer": {
+ "de": "stuckateur",
+ "en": "plasterer",
+ "es": "yesero",
+ "fr": "plâtrier",
+ "nl": "stukadoor",
+ "zh": "泥水工"
+ },
+ "plumber": {
+ "de": "installateur",
+ "en": "plumber",
+ "es": "fontanero",
+ "fr": "plombier",
+ "nl": "installateur",
+ "pt": "encanador",
+ "zh": "水管工"
+ },
+ "pottery": {
+ "de": "töpfer",
+ "en": "potter",
+ "es": "alfarero",
+ "fr": "potier",
+ "nl": "pottenbakker",
+ "pt": "oleiro",
+ "pt-br": "ceramista"
+ },
+ "rigger": {
+ "de": "rigger (bühnentechnik)",
+ "en": "rigger"
+ },
+ "roofer": {
+ "de": "dachdecker",
+ "en": "roofer",
+ "en-ca": "dachdecker",
+ "es": "techador",
+ "fr": "couvreur",
+ "nl": "dakwerker",
+ "pt-br": "carpinteiro"
+ },
+ "saddler": {
+ "de": "sattler",
+ "en": "saddler",
+ "es": "talabartero",
+ "fr": "bourrelier",
+ "nl": "zadelmaker"
+ },
+ "sailmaker": {
+ "de": "segelmacher",
+ "en": "sailmaker",
+ "es": "velero",
+ "fr": "voilerie",
+ "nl": "zeilmaker"
+ },
+ "sawmill": {
+ "de": "sägewerk",
+ "en": "sawmill",
+ "es": "aserradero",
+ "fr": "scierie",
+ "nl": "houtzagerij",
+ "pt": "serração",
+ "pt-br": "serraria",
+ "zh": "鋸木廠"
+ },
+ "scaffolder": {
+ "de": "gerüstbauer",
+ "en": "scaffolder"
+ },
+ "sculptor": {
+ "de": "bildhauer",
+ "en": "sculptor",
+ "es": "escultor",
+ "fr": "sculpteur",
+ "nl": "beeldhouwer",
+ "pt": "escultor",
+ "zh": "雕塑家"
+ },
+ "shoemaker": {
+ "de": "schuhmacher",
+ "en": "cobbler",
+ "es": "zapatero",
+ "fr": "cordonnier",
+ "nl": "schoenmaker",
+ "pt": "sapateiro",
+ "zh": "鞋匠"
+ },
+ "stand_builder": {
+ "de": "messebau",
+ "en": "exhibition stand builder",
+ "nl": "standbouwer"
+ },
+ "stonemason": {
+ "de": "steinmetz",
+ "en": "stonemason",
+ "es": "cantero",
+ "fr": "tailleur de pierre",
+ "nl": "steenhouwer",
+ "pt": "canteiro",
+ "zh": "石匠",
+ "zh-tw": "石工"
+ },
+ "tailor": {
+ "de": "schneider",
+ "en": "tailor",
+ "es": "sastre",
+ "fr": "tailleur",
+ "nl": "kleermaker",
+ "pt": "alfaiate",
+ "zh": "裁缝",
+ "zh-hk": "裁縫",
+ "zh-tw": "裁縫"
+ },
+ "tiler": {
+ "de": "fliesenleger",
+ "en": "tiler",
+ "es": "tejero",
+ "fr": "carreleur",
+ "pt": "ladrilheiro"
+ },
+ "tinsmith": {
+ "de": "spengler",
+ "en": "whitesmith",
+ "es": "hojalatero",
+ "fr": "ferblantier",
+ "nl": "tingieter",
+ "pt": "latoeiro"
+ },
+ "turner": {
+ "de": "drechsler",
+ "en": "turner",
+ "es": "tornero",
+ "nl": "draaier"
+ },
+ "upholsterer": {
+ "en": "upholsterer",
+ "es": "tapicero",
+ "fr": "tapissier garnisseur",
+ "nl": "stoffeerder",
+ "pt": "tapeceiro"
+ },
+ "watchmaker": {
+ "de": "uhrmacher",
+ "en": "watchmaker",
+ "es": "relojero",
+ "fr": "horloger",
+ "nl": "horlogemaker",
+ "pt": "relojoeiro",
+ "zh": "製錶師"
+ },
+ "winery": {
+ "de": "weingut",
+ "en": "winery",
+ "es": "bodega",
+ "fr": "domaine viticole",
+ "nl": "wijngoed",
+ "pt": "lagar",
+ "zh": "酒廠廢水"
+ }
+ },
+ "crane": {
+ "": {
+ "de": "portalkran",
+ "en": "gantry crane",
+ "es": "grúa pórtico",
+ "fr": "portique de manutention",
+ "nl": "portaalkraan",
+ "zh": "門式移動吊車",
+ "zh-cn": "门式起重机"
+ }
+ },
+ "created_by": {
+ "gnome-maps_3.22.2": {
+ "de": "gnome karten",
+ "en": "gnome maps",
+ "es": "gnome mapas",
+ "fr": "gnome cartes"
+ },
+ "gnome-maps_3.33.3": {
+ "de": "gnome karten",
+ "en": "gnome maps",
+ "es": "gnome mapas",
+ "fr": "gnome cartes"
+ }
+ },
+ "crop": {
+ "coffee": {
+ "de": "kaffeebohne",
+ "en": "coffee bean",
+ "es": "grano de café",
+ "fr": "grain de café",
+ "nl": "koffieboon",
+ "pt": "café",
+ "zh": "咖啡豆",
+ "de-ch": "kaffee",
+ "en-ca": "coffea",
+ "en-gb": "coffea"
+ },
+ "flowers": {
+ "de": "blume",
+ "en": "flowering plant",
+ "fr": "fleurs",
+ "nl": "bloemen"
+ },
+ "strawberry": {
+ "de": "gartenerdbeere",
+ "en": "fragaria × ananassa",
+ "en-ca": "strawberry",
+ "en-gb": "strawberry plant",
+ "fr": "fraisier cultivé",
+ "nl": "fragaria ×ananassa",
+ "pt": "morango",
+ "zh": "草莓"
+ },
+ "tea": {
+ "de": "tee",
+ "en": "camellia sinensis",
+ "fr": "théier",
+ "nl": "theeplant",
+ "zh": "茶樹",
+ "zh-cn": "茶树"
+ },
+ "wheat": {
+ "de": "weizen",
+ "en": "wheat",
+ "es": "trigo",
+ "fr": "blé",
+ "nl": "tarwe",
+ "pt": "trigo",
+ "zh": "小麦",
+ "zh-hk": "小麥",
+ "zh-tw": "小麥"
+ }
+ },
+ "crossing": {
+ "": {
+ "de": "anrufschranke"
+ }
+ },
+ "crossing_ref": {
+ "pelican": {
+ "de": "druckknopfanlage",
+ "en": "pelican crossing",
+ "zh": "鵜鶘式人行橫道"
+ },
+ "puffin": {
+ "en": "puffin crossing",
+ "zh": "海雀式人行橫道"
+ },
+ "toucan": {
+ "en": "toucan crossing"
+ },
+ "zebra": {
+ "de": "zebrastreifen",
+ "en": "zebra crossing",
+ "es": "paso de cebra",
+ "fr": "bande de passage piéton",
+ "nl": "zebrapad"
+ }
+ },
+ "cuisine": {
+ "arab": {
+ "de": "arabische küche",
+ "en": "arab cuisine",
+ "es": "gastronomía árabe",
+ "fr": "cuisine arabe",
+ "nl": "arabische keuken",
+ "pt": "culinária árabe",
+ "zh": "阿拉伯飲食"
+ },
+ "argentinian": {
+ "de": "argentinische küche",
+ "en": "argentine cuisine",
+ "es": "gastronomía de argentina",
+ "fr": "cuisine argentine",
+ "pt": "culinária da argentina",
+ "zh": "阿根廷飲食"
+ },
+ "asian": {
+ "de": "asiatische küche",
+ "en": "asian cuisine",
+ "es": "gastronomía de asia",
+ "fr": "cuisine asiatique",
+ "nl": "aziatische keuken",
+ "pt": "culinária da ásia",
+ "zh": "亞洲式料理"
+ },
+ "australian": {
+ "de": "australische küche",
+ "en": "australian cuisine",
+ "es": "gastronomía de australia",
+ "fr": "cuisine australienne",
+ "nl": "australische keuken",
+ "pt": "culinária da austrália",
+ "zh": "澳大利亞飲食"
+ },
+ "bagel": {
+ "en": "bagel",
+ "zh": "貝果",
+ "zh-cn": "贝果"
+ },
+ "balkan": {
+ "de": "balkanküche",
+ "en": "balkan cuisine",
+ "es": "gastronomía de los balcanes",
+ "fr": "cuisine des balkans",
+ "pt": "culinária dos bálcãs",
+ "zh": "巴尔干饮食"
+ },
+ "barbecue": {
+ "de": "grillrestaurant",
+ "en": "barbecue restaurant"
+ },
+ "bolivian": {
+ "de": "bolivianische küche",
+ "en": "bolivian cuisine",
+ "es": "gastronomía de bolivia",
+ "fr": "cuisine bolivienne",
+ "nl": "boliviaanse keuken",
+ "pt": "culinária da bolívia"
+ },
+ "brazilian": {
+ "de": "brasilianische küche",
+ "en": "brazilian cuisine",
+ "es": "gastronomía de brasil",
+ "fr": "cuisine brésilienne",
+ "nl": "braziliaanse keuken",
+ "pt": "culinária do brasil",
+ "zh": "巴西飲食"
+ },
+ "bubble_tea": {
+ "en": "bubble tea",
+ "es": "té de burbujas",
+ "fr": "thé aux perles",
+ "nl": "bubbelthee",
+ "pt": "chá de bolhas",
+ "zh": "珍珠奶茶"
+ },
+ "burger": {
+ "en": "fast-food hamburger restaurant",
+ "de": "hamburger",
+ "en-ca": "hamburger",
+ "en-gb": "hamburger",
+ "es": "hamburguesa",
+ "fr": "hamburger",
+ "nl": "hamburger",
+ "pt": "hambúrguer",
+ "zh": "漢堡",
+ "zh-cn": "汉堡",
+ "zh-hk": "漢堡包"
+ },
+ "caribbean": {
+ "de": "karibische küche",
+ "en": "caribbean cuisine",
+ "es": "gastronomía del caribe",
+ "fr": "cuisine antillaise",
+ "nl": "caraïbische keuken",
+ "pt": "culinária do caribe",
+ "zh": "加勒比飲食"
+ },
+ "chinese": {
+ "de": "chinesische küche",
+ "en": "chinese cuisine",
+ "es": "gastronomía de china",
+ "fr": "cuisine chinoise",
+ "nl": "chinese keuken",
+ "pt": "culinária da china",
+ "zh": "中国菜"
+ },
+ "croatian": {
+ "de": "kroatische küche",
+ "en": "croatian cuisine",
+ "es": "gastronomía de croacia",
+ "fr": "cuisine croate",
+ "nl": "kroatische keuken",
+ "zh": "克羅埃西亞飲食"
+ },
+ "cupcake": {
+ "en": "cupcake bakery",
+ "de": "cupcake",
+ "es": "cupcake",
+ "fr": "cupcake",
+ "nl": "cupcake",
+ "pt": "cupcake",
+ "zh": "纸杯蛋糕",
+ "zh-hk": "紙杯蛋糕"
+ },
+ "czech": {
+ "de": "böhmische küche",
+ "en": "czech cuisine",
+ "es": "gastronomía de la república checa",
+ "fr": "cuisine tchèque",
+ "nl": "tsjechische keuken",
+ "pt": "culinária da chéquia",
+ "zh": "捷克飲食"
+ },
+ "danish": {
+ "de": "dänische küche",
+ "en": "danish cuisine",
+ "es": "gastronomía de dinamarca",
+ "fr": "cuisine danoise",
+ "nl": "deense keuken",
+ "pt": "culinária da dinamarca",
+ "zh": "丹麥飲食"
+ },
+ "fish_and_chips": {
+ "en": "fish and chip shop",
+ "de": "fish and chips",
+ "es": "pescado con papas fritas",
+ "fr": "fish and chips",
+ "nl": "fish and chips",
+ "pt": "fish and chips",
+ "zh": "炸鱼薯条",
+ "zh-hk": "炸魚薯條",
+ "zh-tw": "炸魚薯條"
+ },
+ "french": {
+ "de": "französische küche",
+ "en": "french cuisine",
+ "es": "gastronomía de francia",
+ "fr": "cuisine française",
+ "nl": "franse keuken",
+ "pt": "culinária da frança",
+ "zh": "法國飲食文化"
+ },
+ "friture": {
+ "de": "imbissstand",
+ "en": "friterie",
+ "nl": "frietkot"
+ },
+ "frozen_yogurt": {
+ "en": "frozen yogurt shop",
+ "es": "tienda de yogur helado"
+ },
+ "german": {
+ "de": "deutsche küche",
+ "de-ch": "dütschi chochi",
+ "en": "german cuisine",
+ "es": "gastronomía de alemania",
+ "fr": "cuisine allemande",
+ "nl": "duitse keuken",
+ "pt": "culinária da alemanha",
+ "zh": "德国飲食文化"
+ },
+ "greek": {
+ "de": "griechische küche",
+ "en": "greek cuisine",
+ "es": "gastronomía de grecia",
+ "fr": "cuisine grecque",
+ "nl": "griekse keuken",
+ "pt": "culinária da grécia",
+ "zh": "希臘飲食"
+ },
+ "hungarian": {
+ "de": "ungarische küche",
+ "en": "hungarian cuisine",
+ "es": "gastronomía de hungría",
+ "fr": "cuisine hongroise",
+ "nl": "hongaarse keuken",
+ "pt": "culinária da hungria",
+ "zh": "匈牙利飲食"
+ },
+ "indian": {
+ "de": "indische küche",
+ "en": "indian cuisine",
+ "es": "gastronomía de la india",
+ "fr": "cuisine indienne",
+ "nl": "indiase keuken",
+ "pt": "culinária da índia",
+ "zh": "印度菜"
+ },
+ "iranian": {
+ "de": "persische küche",
+ "en": "iranian cuisine",
+ "es": "gastronomía de irán",
+ "fr": "cuisine iranienne",
+ "nl": "perzische keuken",
+ "pt": "culinária do irã",
+ "zh": "伊朗飲食"
+ },
+ "italian": {
+ "de": "italienische küche",
+ "en": "italian cuisine",
+ "es": "gastronomía de italia",
+ "fr": "cuisine italienne",
+ "nl": "italiaanse keuken",
+ "pt": "culinária da itália",
+ "zh": "義大利菜",
+ "zh-cn": "意大利菜",
+ "zh-hk": "意大利菜"
+ },
+ "japanese": {
+ "de": "japanische küche",
+ "en": "japanese cuisine",
+ "es": "gastronomía de japón",
+ "fr": "cuisine japonaise",
+ "nl": "japanse keuken",
+ "pt": "culinária do japão",
+ "zh": "日本料理"
+ },
+ "jewish": {
+ "de": "jüdische küche",
+ "en": "jewish cuisine",
+ "es": "gastronomía judía",
+ "fr": "cuisine juive",
+ "nl": "joodse keuken",
+ "pt": "culinária judaica",
+ "zh": "猶太人飲食"
+ },
+ "korean": {
+ "de": "koreanische küche",
+ "en": "korean cuisine",
+ "es": "gastronomía de corea",
+ "fr": "cuisine coréenne",
+ "nl": "koreaanse keuken",
+ "pt": "cozinha coreana",
+ "zh": "韓國料理"
+ },
+ "kyo_ryouri": {
+ "en": "obanzai"
+ },
+ "lebanese": {
+ "de": "libanesische küche",
+ "en": "lebanese cuisine",
+ "es": "gastronomía del líbano",
+ "fr": "cuisine libanaise",
+ "nl": "libanese keuken",
+ "pt": "culinária do líbano",
+ "zh": "黎巴嫩飲食文化"
+ },
+ "mediterranean": {
+ "de": "mittelmeerküche",
+ "en": "mediterranean cuisine",
+ "es": "gastronomía mediterránea",
+ "fr": "cuisine méditerranéenne",
+ "nl": "mediterrane keuken",
+ "pt": "culinária do mediterrâneo",
+ "zh": "地中海飲食"
+ },
+ "mexican": {
+ "de": "mexikanische küche",
+ "en": "mexican cuisine",
+ "es": "gastronomía de méxico",
+ "fr": "cuisine mexicaine",
+ "nl": "mexicaanse keuken",
+ "pt": "culinária do méxico",
+ "zh": "墨西哥菜"
+ },
+ "mineira": {
+ "en": "cuisine of minas gerais",
+ "es": "gastronomía de minas gerais",
+ "pt": "culinária de minas gerais"
+ },
+ "new_mexican": {
+ "en": "new mexican cuisine",
+ "zh": "新墨西哥飲食"
+ },
+ "okinawa_ryori": {
+ "en": "okinawan cuisine",
+ "es": "gastronomía de okinawa",
+ "fr": "cuisine d'okinawa",
+ "pt": "culinária de okinawa",
+ "zh": "沖繩料理"
+ },
+ "peruvian": {
+ "de": "peruanische küche",
+ "en": "peruvian cuisine",
+ "es": "gastronomía del perú",
+ "fr": "cuisine péruvienne",
+ "nl": "peruviaanse keuken",
+ "pt": "culinária do peru"
+ },
+ "pizza": {
+ "en": "pizzeria",
+ "es": "pizzería",
+ "pt": "pizzaria"
+ },
+ "polish": {
+ "de": "polnische küche",
+ "en": "polish cuisine",
+ "es": "gastronomía de polonia",
+ "fr": "cuisine polonaise",
+ "nl": "poolse keuken",
+ "pt": "culinária da polónia",
+ "pt-br": "culinária da polônia",
+ "zh": "波蘭飲食"
+ },
+ "portuguese": {
+ "de": "portugiesische küche",
+ "en": "portuguese cuisine",
+ "es": "gastronomía de portugal",
+ "fr": "cuisine portugaise",
+ "nl": "portugese keuken",
+ "pt": "gastronomia de portugal",
+ "zh": "葡萄牙飲食"
+ },
+ "regional": {
+ "de": "regionale küche",
+ "en": "regional cuisine",
+ "es": "cocina regional",
+ "fr": "cuisine locale",
+ "nl": "regionale keuken",
+ "pt": "culinária regional",
+ "zh": "乡土料理"
+ },
+ "rhenish": {
+ "de": "rheinische küche",
+ "en": "rhenish cuisine"
+ },
+ "russian": {
+ "de": "russische küche",
+ "en": "russian cuisine",
+ "es": "gastronomía de rusia",
+ "fr": "cuisine russe",
+ "nl": "russische keuken",
+ "pt": "culinária da rússia",
+ "zh": "俄羅斯飲食"
+ },
+ "sandwich": {
+ "de": "sandwich-laden",
+ "en": "sandwich shop",
+ "de-ch": "sandwich",
+ "en-ca": "sandwich",
+ "en-gb": "sandwich",
+ "es": "bocadillo",
+ "fr": "sandwich",
+ "nl": "sandwich",
+ "pt": "sandes",
+ "pt-br": "sanduíche",
+ "zh": "三明治",
+ "zh-hk": "三文治"
+ },
+ "spanish": {
+ "de": "spanische küche",
+ "en": "spanish cuisine",
+ "es": "gastronomía de españa",
+ "fr": "cuisine espagnole",
+ "nl": "spaanse keuken",
+ "pt": "culinária de espanha",
+ "zh": "西班牙料理"
+ },
+ "steak_house": {
+ "de": "steakhaus",
+ "en": "steakhouse",
+ "fr": "restaurant à viande",
+ "pt": "restaurante de carne",
+ "zh": "牛排館"
+ },
+ "sushi": {
+ "en": "sushi",
+ "zh": "寿司",
+ "zh-hk": "壽司",
+ "zh-tw": "壽司"
+ },
+ "thai": {
+ "de": "thailändische küche",
+ "en": "thai cuisine",
+ "es": "gastronomía de tailandia",
+ "fr": "cuisine thaïlandaise",
+ "nl": "thaise keuken",
+ "pt": "culinária da tailândia",
+ "zh": "泰國菜"
+ },
+ "turkish": {
+ "de": "türkische küche",
+ "en": "turkish cuisine",
+ "es": "gastronomía de turquía",
+ "fr": "cuisine turque",
+ "nl": "turkse keuken",
+ "pt": "culinária da turquia",
+ "zh": "土耳其菜式"
+ },
+ "vietnamese": {
+ "de": "vietnamesische küche",
+ "en": "vietnamese cuisine",
+ "es": "gastronomía de vietnam",
+ "fr": "cuisine vietnamienne",
+ "nl": "vietnamese keuken",
+ "pt": "culinária do vietnã",
+ "zh": "越南菜"
+ },
+ "westphalian": {
+ "de": "westfälische küche",
+ "en": "westphalian cuisine",
+ "es": "gastronomía de westfalia"
+ }
+ },
+ "cycle_network": {
+ "EuroVelo": {
+ "en": "eurovelo",
+ "zh": "欧洲自行车路径网"
+ },
+ "US": {
+ "en": "georgia state bicycle routes",
+ "de": "national bicycle route network"
+ }
+ },
+ "cycleway": {
+ "asl": {
+ "de": "aufgeweiteter radfahreraufstellbereich",
+ "en": "advanced stop box",
+ "fr": "sas vélo",
+ "nl": "opgeblazen fietsopstelstrook"
+ },
+ "lane": {
+ "de": "radfahrstreifen",
+ "en": "bike lane",
+ "fr": "bande cyclable",
+ "nl": "fietsstrook",
+ "zh": "自行车道",
+ "zh-hk": "單車徑",
+ "zh-tw": "腳踏車道"
+ },
+ "opposite": {
+ "en": "bicycle contraflow lanes"
+ }
+ },
+ "dennert_fir_tree": {
+ "yes": {
+ "de": "dennert-tanne",
+ "en": "dennert fir tree"
+ }
+ },
+ "denomination": {
+ "adventist": {
+ "de": "siebenten-tags-adventisten",
+ "en": "seventh-day adventist church",
+ "es": "iglesia adventista del séptimo día",
+ "fr": "église adventiste du septième jour",
+ "nl": "zevendedagsadventisten",
+ "pt": "igreja adventista do sétimo dia",
+ "zh": "基督復臨安息日會",
+ "zh-cn": "基督复临安息日会"
+ },
+ "ahmadiyya": {
+ "en": "ahmadiyya",
+ "es": "comunidad ahmadía",
+ "fr": "ahmadisme",
+ "pt": "comunidade ahmadi",
+ "zh": "阿赫迈底亚",
+ "zh-hk": "阿赫邁底亞",
+ "zh-tw": "阿赫邁底亞"
+ },
+ "alevi": {
+ "de": "aleviten",
+ "en": "alevism",
+ "en-gb": "alevi",
+ "es": "alevís",
+ "fr": "alévisme",
+ "nl": "alevitisme",
+ "pt": "alevitas",
+ "zh": "阿列维派"
+ },
+ "alliance": {
+ "en": "alliance world fellowship",
+ "es": "alianza cristiana y misionera",
+ "fr": "communauté mondiale de l'alliance",
+ "nl": "christian and missionary alliance",
+ "pt": "comunidade mundial da aliança",
+ "zh": "基督教宣道會"
+ },
+ "anglican": {
+ "de": "anglikanische gemeinschaft",
+ "en": "anglican communion",
+ "es": "comunión anglicana",
+ "fr": "communion anglicane",
+ "nl": "anglicaanse gemeenschap",
+ "pt": "comunhão anglicana",
+ "zh": "普世聖公宗",
+ "de-ch": "anglikanismus",
+ "en-ca": "anglicanism",
+ "en-gb": "anglicanism",
+ "pt-br": "anglicanismo"
+ },
+ "apostolic_faith": {
+ "en": "apostolic faith church",
+ "zh": "使徒信心會"
+ },
+ "armenian_apostolic": {
+ "de": "armenische apostolische kirche",
+ "en": "armenian apostolic church",
+ "es": "iglesia apostólica armenia",
+ "fr": "église apostolique arménienne",
+ "nl": "armeens-apostolische kerk",
+ "pt": "igreja apostólica armena",
+ "pt-br": "igreja apostólica armênia",
+ "zh": "亚美尼亚使徒教会",
+ "zh-tw": "亞美尼亞使徒教會"
+ },
+ "armenian_catholic": {
+ "de": "armenisch-katholische kirche",
+ "en": "armenian catholic church",
+ "es": "iglesia católica armenia",
+ "fr": "église catholique arménienne",
+ "nl": "armeens-katholieke kerk",
+ "pt": "igreja católica arménia",
+ "zh": "亞美尼亞禮天主教會"
+ },
+ "asatru": {
+ "de": "germanisches neuheidentum",
+ "en": "heathenry",
+ "es": "neopaganismo germano",
+ "fr": "néo-paganisme germanique",
+ "pt": "tribalismo heathen",
+ "zh": "日耳曼新異教運動",
+ "zh-cn": "日耳曼新异教运动"
+ },
+ "assemblies_of_god": {
+ "de": "versammlungen gottes",
+ "en": "assemblies of god",
+ "es": "asambleas de dios",
+ "fr": "assemblées de dieu",
+ "pt": "associação mundial da assembleia de deus",
+ "zh": "神召会",
+ "zh-hk": "神召會"
+ },
+ "assyrian": {
+ "de": "assyrische kirche des ostens",
+ "en": "assyrian church of the east",
+ "es": "iglesia asiria del oriente",
+ "fr": "église apostolique assyrienne de l'orient",
+ "nl": "assyrische kerk van het oosten",
+ "pt": "igreja assíria do oriente",
+ "zh": "東方亞述教會",
+ "zh-cn": "东方亚述教会"
+ },
+ "baptist": {
+ "de": "baptisten",
+ "en": "baptists",
+ "es": "iglesias bautistas",
+ "fr": "baptisme",
+ "nl": "baptisme",
+ "pt": "igreja batista",
+ "zh": "浸信会",
+ "zh-hk": "浸信會",
+ "zh-tw": "浸信會"
+ },
+ "bektashi": {
+ "de": "bektaschi",
+ "en": "bektashi order",
+ "es": "bektashi",
+ "fr": "bektachi",
+ "nl": "bektasji",
+ "pt": "bektashis",
+ "zh": "拜克塔什教團"
+ },
+ "catholic": {
+ "de": "römisch-katholische kirche",
+ "en": "catholic church",
+ "es": "iglesia católica",
+ "fr": "église catholique",
+ "nl": "rooms-katholieke kerk",
+ "pt": "igreja católica",
+ "zh": "天主教會",
+ "zh-cn": "天主教会"
+ },
+ "catholic_apostolic": {
+ "de": "katholisch-apostolische gemeinden",
+ "en": "catholic apostolic church",
+ "fr": "église catholique apostolique",
+ "nl": "katholiek apostolische kerk",
+ "zh": "大公使徒教會"
+ },
+ "catholic_mariavite": {
+ "de": "katholische kirche der mariaviten",
+ "en": "catholic mariavite church"
+ },
+ "celtic": {
+ "de": "keltische religion",
+ "en": "celtic polytheism",
+ "es": "politeismo celta",
+ "fr": "religion des celtes",
+ "pt": "politeísmo celta",
+ "zh": "凱爾特人多神教",
+ "zh-cn": "凯尔特神"
+ },
+ "chaldean_catholic": {
+ "de": "chaldäisch-katholische kirche",
+ "en": "chaldean catholic church",
+ "es": "iglesia católica caldea",
+ "fr": "église catholique chaldéenne",
+ "nl": "chaldeeuws-katholieke kerk",
+ "pt": "igreja católica caldeia",
+ "zh": "加色丁禮天主教會"
+ },
+ "charismatic": {
+ "de": "charismatische bewegung",
+ "en": "charismatic movement",
+ "es": "movimiento carismático",
+ "fr": "mouvement charismatique",
+ "nl": "charismatische beweging",
+ "pt": "movimento carismático",
+ "zh": "靈恩派",
+ "zh-cn": "灵恩派"
+ },
+ "christ_scientist": {
+ "en": "church of christ, scientist",
+ "es": "iglesia de cristo, científico"
+ },
+ "christian_community": {
+ "de": "die christengemeinschaft",
+ "en": "the christian community",
+ "fr": "la communauté des chrétiens",
+ "nl": "de christengemeenschap"
+ },
+ "church_of_god_in_christ": {
+ "en": "church of god in christ",
+ "pt": "igreja de deus em cristo"
+ },
+ "church_of_scotland": {
+ "en": "church of scotland",
+ "es": "iglesia de escocia",
+ "fr": "église d'écosse",
+ "nl": "kerk van schotland",
+ "pt": "igreja da escócia",
+ "zh": "蘇格蘭教會",
+ "zh-cn": "苏格兰教会"
+ },
+ "church_of_sweden": {
+ "de": "schwedische kirche",
+ "en": "church of sweden",
+ "es": "iglesia de suecia",
+ "fr": "église de suède",
+ "nl": "zweedse kerk",
+ "pt": "igreja da suécia",
+ "zh": "瑞典教會"
+ },
+ "churches_of_christ": {
+ "de": "gemeinden christi",
+ "en": "churches of christ",
+ "es": "iglesias de cristo",
+ "fr": "églises du christ",
+ "pt": "igrejas de cristo",
+ "zh": "基督的教會"
+ },
+ "conservative": {
+ "de": "konservatives judentum",
+ "en": "conservative judaism",
+ "es": "judaísmo conservador",
+ "fr": "judaïsme massorti",
+ "nl": "conservatief jodendom",
+ "pt": "judaísmo conservador",
+ "zh": "猶太教保守派"
+ },
+ "coptic_catholic": {
+ "de": "koptisch-katholische kirche",
+ "en": "coptic catholic church",
+ "es": "iglesia católica copta",
+ "fr": "église catholique copte",
+ "nl": "koptisch-katholieke kerk",
+ "pt": "igreja católica copta",
+ "zh": "科普特禮天主教會"
+ },
+ "coptic_orthodox": {
+ "de": "koptische kirche",
+ "en": "coptic orthodox church of alexandria",
+ "es": "iglesia ortodoxa copta",
+ "fr": "église copte orthodoxe",
+ "nl": "koptisch-orthodoxe kerk",
+ "pt": "igreja ortodoxa copta",
+ "zh": "亞歷山大科普特正教會",
+ "zh-cn": "亚历山大科普特正教会"
+ },
+ "czechoslovak_hussite": {
+ "de": "tschechoslowakische hussitische kirche",
+ "en": "czechoslovak hussite church",
+ "es": "iglesia husita checoslovaca",
+ "fr": "église hussite tchécoslovaque",
+ "zh": "捷克斯洛伐克胡思教會"
+ },
+ "digambara": {
+ "en": "digambara",
+ "nl": "digambar",
+ "pt": "digambar",
+ "zh": "天衣派"
+ },
+ "disciples_of_christ": {
+ "de": "christian church",
+ "en": "christian church (disciples of christ)",
+ "es": "discípulos de cristo",
+ "fr": "église chrétienne des disciples du christ",
+ "pt": "discípulos de cristo",
+ "zh": "基督会",
+ "zh-hk": "基督會"
+ },
+ "episcopal": {
+ "de": "episkopalkirche",
+ "en": "episcopal church",
+ "es": "iglesia episcopal",
+ "fr": "église épiscopalienne",
+ "nl": "episcopaalse kerk",
+ "pt": "igreja episcopal"
+ },
+ "eritrean_catholic": {
+ "de": "eritreisch-katholische kirche",
+ "en": "eritrean catholic church",
+ "es": "iglesia católica eritrea",
+ "fr": "église catholique érythréenne",
+ "nl": "eritrees-katholieke kerk",
+ "pt": "igreja católica eritreia",
+ "zh": "厄立特里亞禮天主教會"
+ },
+ "eritrean_orthodox": {
+ "de": "eritreisch-orthodoxe tewahedo-kirche",
+ "en": "eritrean orthodox tewahedo church",
+ "es": "iglesia ortodoxa eritrea",
+ "fr": "église érythréenne orthodoxe",
+ "nl": "eritrees-orthodoxe kerk",
+ "pt": "igreja ortodoxa eritreia",
+ "zh": "厄立特里亚正教会",
+ "zh-cn": "厄立特里亚正统台瓦西多教会"
+ },
+ "ethiopian_catholic": {
+ "de": "äthiopisch-katholische kirche",
+ "en": "ethiopian catholic church",
+ "es": "iglesia católica etíope",
+ "fr": "église catholique éthiopienne",
+ "nl": "ethiopisch-katholieke kerk",
+ "pt": "igreja católica etíope",
+ "zh": "衣索比亞禮天主教會"
+ },
+ "ethiopian_orthodox": {
+ "de": "äthiopisch-orthodoxe tewahedo-kirche",
+ "en": "ethiopian orthodox tewahedo church",
+ "es": "iglesia ortodoxa etíope",
+ "fr": "église éthiopienne orthodoxe",
+ "nl": "ethiopisch-orthodoxe kerk",
+ "pt": "igreja ortodoxa etíope",
+ "zh": "埃塞俄比亞正教會",
+ "zh-cn": "埃塞俄比亚正教会",
+ "zh-tw": "衣索比亞正教會"
+ },
+ "evangelical": {
+ "de": "evangelikalismus",
+ "en": "evangelicalism",
+ "es": "cristianismo evangélico",
+ "fr": "évangélisme",
+ "nl": "evangelisch christendom",
+ "pt": "evangelicalismo",
+ "zh": "福音神學"
+ },
+ "evangelical_covenant": {
+ "en": "evangelical covenant church"
+ },
+ "evangelical_free_church_of_america": {
+ "en": "evangelical free church of america",
+ "es": "iglesia evangélica libre de américa",
+ "fr": "église évangélique libre d'amérique"
+ },
+ "exclusive_brethren": {
+ "de": "raven-brüder",
+ "en": "exclusive brethren",
+ "es": "hermanos exclusivistas",
+ "zh": "闭关弟兄会",
+ "zh-hk": "閉關弟兄會"
+ },
+ "foursquare": {
+ "de": "international church of the foursquare gospel",
+ "en": "the foursquare church",
+ "es": "iglesia internacional del evangelio cuadrangular",
+ "nl": "international church of the foursquare gospel",
+ "pt": "igreja do evangelho quadrangular",
+ "zh": "國際四方福音會"
+ },
+ "gelug": {
+ "en": "gelug",
+ "fr": "gelugpa",
+ "zh": "格鲁派",
+ "zh-hk": "格魯派",
+ "zh-tw": "格魯派"
+ },
+ "greek_orthodox": {
+ "de": "griechisch-orthodoxe kirche",
+ "en": "greek orthodox church",
+ "es": "iglesia ortodoxa griega",
+ "fr": "église grecque orthodoxe",
+ "nl": "grieks orthodoxe kerk",
+ "pt": "igreja ortodoxa grega",
+ "zh": "希臘正教會"
+ },
+ "hasidic": {
+ "de": "chassidismus",
+ "en": "hasidism",
+ "en-ca": "hasidic judaism",
+ "en-gb": "hasidic judaism",
+ "es": "judaísmo jasídico",
+ "fr": "hassidisme",
+ "nl": "chassidisch jodendom",
+ "pt": "judaísmo chassídico",
+ "zh": "哈西迪猶太教"
+ },
+ "huayan": {
+ "de": "huayan zong",
+ "en": "huayan school",
+ "es": "huayan",
+ "fr": "huayan",
+ "zh": "华严宗",
+ "zh-hk": "華嚴宗"
+ },
+ "hungarian_greek_catholic": {
+ "de": "ungarische griechisch-katholische kirche",
+ "en": "hungarian greek catholic church",
+ "es": "iglesia greco-católica húngara",
+ "fr": "église grecque-catholique hongroise",
+ "nl": "hongaarse grieks-katholieke kerk",
+ "pt": "igreja católica bizantina húngara",
+ "zh": "匈牙利希臘禮天主教會"
+ },
+ "ibadi": {
+ "de": "ibaditen",
+ "en": "ibadi",
+ "es": "ibadíes",
+ "fr": "ibadisme",
+ "nl": "ibadisme",
+ "pt": "ibadismo",
+ "zh": "艾巴德派"
+ },
+ "iglesia_ni_cristo": {
+ "en": "iglesia ni cristo",
+ "zh": "基督堂教會"
+ },
+ "ismaili": {
+ "de": "ismailiten",
+ "en": "isma'ilism",
+ "es": "ismailismo",
+ "fr": "ismaélisme",
+ "nl": "isma'ilisme",
+ "pt": "ismaelismo",
+ "zh": "伊斯玛仪派",
+ "zh-hk": "伊斯瑪儀派",
+ "zh-tw": "伊斯瑪儀派"
+ },
+ "jehovahs_witness": {
+ "de": "zeugen jehovas",
+ "en": "jehovah's witnesses",
+ "es": "testigos de jehová",
+ "fr": "témoins de jéhovah",
+ "nl": "jehovah's getuigen",
+ "pt": "testemunhas de jeová",
+ "zh": "耶和華見證人"
+ },
+ "jishu": {
+ "en": "ji-shū",
+ "fr": "ji shū"
+ },
+ "jodo_shinshu": {
+ "de": "jōdo-shinshū",
+ "en": "jōdo shinshū",
+ "pt": "budismo shin terra pura",
+ "zh": "淨土真宗"
+ },
+ "jodo_shu": {
+ "de": "jōdo-shū",
+ "en": "jodo shu",
+ "es": "jōdo-shū",
+ "fr": "jōdo shū",
+ "nl": "jōdo-shū",
+ "zh": "日本净土信仰"
+ },
+ "kimbanguist": {
+ "de": "kimbanguistenkirche",
+ "en": "kimbanguism",
+ "es": "iglesia kimbanguista",
+ "fr": "église kimbanguiste",
+ "nl": "kimbanguïstische kerk",
+ "pt": "igreja kimbanguista",
+ "zh": "金邦谷教"
+ },
+ "liberal_catholic": {
+ "de": "liberalkatholische kirche",
+ "en": "liberal catholic church",
+ "es": "iglesia católica liberal",
+ "fr": "église catholique libérale",
+ "nl": "vrij-katholieke kerk",
+ "pt": "igreja católica liberal"
+ },
+ "lutheran": {
+ "de": "lutherische kirche australiens",
+ "en": "lutheran church of australia",
+ "zh": "澳洲路德教會",
+ "en-gb": "lutheranism",
+ "es": "luteranismo",
+ "fr": "luthéranisme",
+ "nl": "lutheranisme",
+ "pt": "luteranismo"
+ },
+ "mariavite": {
+ "de": "mariavitismus",
+ "en": "mariavite church",
+ "fr": "église mariavite"
+ },
+ "maronite": {
+ "de": "syrisch-maronitische kirche",
+ "en": "maronite church",
+ "es": "iglesia católica maronita",
+ "fr": "église maronite",
+ "nl": "maronitische kerk",
+ "pt": "igreja maronita",
+ "zh": "马龙尼礼教会"
+ },
+ "mennonite": {
+ "de": "mennoniten",
+ "en": "mennonites",
+ "es": "menonita",
+ "fr": "mennonitisme",
+ "nl": "mennonieten",
+ "pt": "menonitas",
+ "zh": "門諾會",
+ "zh-cn": "门诺会"
+ },
+ "messianic_jewish": {
+ "de": "messianisches judentum",
+ "en": "messianic judaism",
+ "es": "judaísmo mesiánico",
+ "fr": "judaïsme messianique",
+ "nl": "messiasbelijdende joden",
+ "pt": "judaísmo messiânico",
+ "zh": "彌賽亞猶太教"
+ },
+ "methodist": {
+ "de": "methodistische und wesleyanische kirchen",
+ "en": "methodism",
+ "es": "metodismo",
+ "fr": "méthodisme",
+ "nl": "methodisme",
+ "pt": "igreja metodista",
+ "zh": "循道宗"
+ },
+ "mission_covenant_church_of_sweden": {
+ "de": "schwedische missionskirche",
+ "en": "mission covenant church of sweden",
+ "zh": "瑞典行道会",
+ "zh-hk": "瑞典行道會"
+ },
+ "mormon": {
+ "de": "mormonentum",
+ "en": "mormon theology",
+ "en-ca": "mormonism",
+ "en-gb": "mormonism",
+ "es": "la iglesia de jesucristo de los santos de los ultimos dias",
+ "fr": "mormonisme",
+ "nl": "mormonisme",
+ "pt": "mórmon",
+ "zh": "摩爾門教"
+ },
+ "nazarene": {
+ "de": "kirche des nazareners",
+ "en": "church of the nazarene",
+ "es": "iglesia del nazareno",
+ "fr": "église du nazaréen",
+ "nl": "kerk van de nazarener",
+ "pt": "igreja do nazareno",
+ "zh": "拿撒勒人會"
+ },
+ "new_apostolic": {
+ "de": "neuapostolische kirche",
+ "en": "new apostolic church",
+ "es": "iglesia nueva apostólica",
+ "fr": "église néo-apostolique",
+ "nl": "nieuw-apostolische kerk",
+ "pt": "igreja nova apostólica",
+ "zh": "新使徒教會"
+ },
+ "new_frontiers": {
+ "en": "newfrontiers"
+ },
+ "nichiren": {
+ "de": "nichiren-buddhismus",
+ "en": "nichiren buddhism",
+ "es": "budismo nichiren",
+ "fr": "bouddhisme de nichiren",
+ "nl": "nichiren-boeddhisme",
+ "pt": "budismo de nitiren",
+ "zh": "法華系佛教",
+ "zh-hk": "日蓮宗"
+ },
+ "nondenominational": {
+ "en": "international network of churches"
+ },
+ "nyingma": {
+ "en": "nyingma",
+ "fr": "nyingmapa",
+ "zh": "宁玛派",
+ "zh-hk": "寧瑪派"
+ },
+ "obaku": {
+ "de": "ōbaku-shū",
+ "en": "ōbaku",
+ "es": "obaku",
+ "pt": "obaku",
+ "zh": "黄檗宗"
+ },
+ "old_believers": {
+ "de": "altorthodoxe",
+ "en": "old believers",
+ "es": "viejos creyentes",
+ "fr": "orthodoxes vieux-croyants",
+ "nl": "oudgelovigen",
+ "pt": "velhos crentes",
+ "zh": "老信徒",
+ "zh-cn": "旧信徒"
+ },
+ "old_catholic": {
+ "de": "altkatholische kirche",
+ "en": "old catholic church",
+ "es": "iglesia veterocatólica",
+ "fr": "église vieille-catholique",
+ "nl": "oud-katholieke kerk",
+ "pt": "velha igreja católica",
+ "zh": "舊天主教會"
+ },
+ "orthodox": {
+ "de": "orthodoxes judentum",
+ "en": "orthodox judaism",
+ "es": "judaísmo ortodoxo",
+ "fr": "judaïsme orthodoxe",
+ "nl": "orthodox jodendom",
+ "pt": "judaísmo ortodoxo",
+ "zh": "猶太教正統派",
+ "en-ca": "eastern orthodox church",
+ "en-gb": "eastern orthodox church",
+ "pt-br": "igreja ortodoxa"
+ },
+ "orthodox_presbyterian_church": {
+ "en": "orthodox presbyterian church",
+ "es": "iglesia presbiteriana ortodoxa",
+ "fr": "église presbytérienne orthodoxe",
+ "pt": "igreja presbiteriana ortodoxa"
+ },
+ "pentecostal": {
+ "de": "charismatische bewegung",
+ "en": "charismatic movement",
+ "es": "movimiento carismático",
+ "fr": "mouvement charismatique",
+ "nl": "charismatische beweging",
+ "pt": "movimento carismático",
+ "zh": "靈恩派",
+ "zh-cn": "灵恩派"
+ },
+ "philippine_independent": {
+ "de": "unabhängige philippinische kirche",
+ "en": "philippine independent church",
+ "es": "iglesia filipina independiente",
+ "fr": "église indépendante des philippines",
+ "nl": "iglesia filipina independiente",
+ "zh": "菲律賓獨立教會",
+ "zh-cn": "菲律宾独立教会"
+ },
+ "pkn": {
+ "de": "protestantische kirche in den niederlanden",
+ "en": "protestant church in the netherlands",
+ "es": "iglesia protestante en los países bajos",
+ "fr": "église protestante dans les pays-bas",
+ "nl": "protestantse kerk in nederland",
+ "zh": "荷蘭新教教會",
+ "zh-cn": "荷兰新教会"
+ },
+ "polish_catholic": {
+ "de": "polnisch-katholische kirche",
+ "en": "polish catholic church",
+ "fr": "église polonaise-catholique"
+ },
+ "polish_national_catholic": {
+ "de": "polish national catholic church of america",
+ "en": "polish national catholic church",
+ "es": "iglesia católica nacional polaca",
+ "fr": "église catholique nationale polonaise",
+ "pt": "igreja católica nacional polonesa",
+ "zh": "波蘭國家天主教會"
+ },
+ "presbyterian": {
+ "de": "presbyterianismus",
+ "en": "presbyterianism",
+ "es": "presbiterianismo",
+ "fr": "presbytérianisme",
+ "nl": "presbyterianisme",
+ "pt": "presbiterianismo",
+ "zh": "長老宗",
+ "zh-cn": "长老宗"
+ },
+ "protestant": {
+ "de": "protestantismus",
+ "en": "protestantism",
+ "es": "protestantismo",
+ "fr": "protestantisme",
+ "nl": "protestantisme",
+ "pt": "protestantismo",
+ "zh": "新教"
+ },
+ "pure_land": {
+ "de": "amitabha-buddhismus",
+ "en": "pure land buddhism",
+ "es": "budismo de la tierra pura",
+ "fr": "terre pure",
+ "nl": "zuiver land-boeddhisme",
+ "pt": "terra pura",
+ "zh": "淨土宗"
+ },
+ "quaker": {
+ "de": "quäkertum",
+ "en": "religious society of friends",
+ "es": "sociedad religiosa de los amigos",
+ "fr": "société religieuse des amis",
+ "nl": "genootschap der vrienden",
+ "pt": "quaker",
+ "zh": "貴格會",
+ "zh-cn": "贵格会"
+ },
+ "reconstructionist": {
+ "de": "rekonstruktionismus",
+ "en": "reconstructionist judaism",
+ "es": "judaísmo reconstruccionista",
+ "fr": "judaïsme reconstructionniste",
+ "nl": "reconstructionistisch jodendom",
+ "pt": "judaísmo reconstrucionista",
+ "zh": "猶太教重建派"
+ },
+ "reformed": {
+ "de": "calvinismus",
+ "en": "calvinism",
+ "es": "calvinismo",
+ "fr": "calvinisme",
+ "nl": "calvinisme",
+ "pt": "calvinismo",
+ "zh": "加爾文主義",
+ "zh-cn": "加尔文主义",
+ "zh-hk": "喀爾文主義",
+ "zh-tw": "喀爾文主義"
+ },
+ "renewal": {
+ "en": "jewish renewal",
+ "es": "renovación judía"
+ },
+ "rinzai": {
+ "de": "rinzai-shū",
+ "en": "rinzai school",
+ "es": "rinzai",
+ "fr": "rinzai",
+ "nl": "rinzai",
+ "pt": "rinzai",
+ "zh": "日本临济宗",
+ "zh-hk": "臨濟宗"
+ },
+ "risshu": {
+ "en": "risshū",
+ "es": "escuela ritsu",
+ "fr": "lüzong",
+ "pt": "ritsu",
+ "zh": "律宗"
+ },
+ "roman_catholic": {
+ "de": "römisch-katholische kirche",
+ "en": "catholic church",
+ "es": "iglesia católica",
+ "fr": "église catholique",
+ "nl": "rooms-katholieke kerk",
+ "pt": "igreja católica",
+ "zh": "天主教會",
+ "zh-cn": "天主教会"
+ },
+ "romanian_catholic": {
+ "de": "rumänische griechisch-katholische kirche",
+ "en": "romanian greek catholic church",
+ "es": "iglesia greco-católica rumana",
+ "fr": "église grecque-catholique roumaine",
+ "nl": "roemeense grieks-katholieke kerk",
+ "pt": "igreja greco-católica romena unida com roma",
+ "zh": "羅馬尼亞東儀天主教"
+ },
+ "romanian_orthodox": {
+ "de": "rumänisch-orthodoxe kirche",
+ "en": "romanian orthodox church",
+ "es": "iglesia ortodoxa rumana",
+ "fr": "église orthodoxe roumaine",
+ "nl": "roemeens-orthodoxe kerk",
+ "pt": "igreja ortodoxa romena",
+ "zh": "罗马尼亚正教会"
+ },
+ "russian_orthodox": {
+ "de": "russisch-orthodoxe kirche",
+ "en": "russian orthodox church",
+ "es": "iglesia ortodoxa rusa",
+ "fr": "église orthodoxe russe",
+ "nl": "russisch-orthodoxe kerk",
+ "pt": "igreja ortodoxa russa",
+ "zh": "俄罗斯正教会"
+ },
+ "salvation_army": {
+ "de": "heilsarmee",
+ "en": "the salvation army",
+ "es": "ejército de salvación",
+ "fr": "armée du salut",
+ "nl": "leger des heils",
+ "pt": "exército de salvação",
+ "zh": "救世軍",
+ "zh-cn": "救世军"
+ },
+ "samaritan": {
+ "de": "samaritaner",
+ "en": "samaritan",
+ "es": "samaritanos",
+ "fr": "samaritains",
+ "nl": "samaritanen",
+ "pt": "samaritanos",
+ "zh": "撒馬利亞人",
+ "zh-cn": "撒马利亚人"
+ },
+ "santo_daime": {
+ "en": "santo daime"
+ },
+ "scottish_episcopal": {
+ "en": "scottish episcopal church",
+ "es": "iglesia episcopal escocesa",
+ "fr": "église épiscopalienne écossaise",
+ "pt": "igreja episcopal escocesa",
+ "zh": "蘇格蘭聖公會"
+ },
+ "serbian_orthodox": {
+ "de": "serbisch-orthodoxe kirche",
+ "en": "serbian orthodox church",
+ "es": "iglesia ortodoxa serbia",
+ "fr": "église orthodoxe serbe",
+ "nl": "servisch-orthodoxe kerk",
+ "pt": "igreja ortodoxa sérvia",
+ "zh": "塞爾維亞東正教會",
+ "zh-cn": "塞尔维亚东正教会"
+ },
+ "seventh_day_adventist": {
+ "de": "siebenten-tags-adventisten",
+ "en": "seventh-day adventist church",
+ "es": "iglesia adventista del séptimo día",
+ "fr": "église adventiste du septième jour",
+ "nl": "zevendedagsadventisten",
+ "pt": "igreja adventista do sétimo dia",
+ "zh": "基督復臨安息日會",
+ "zh-cn": "基督复临安息日会"
+ },
+ "shaivism": {
+ "de": "shivaismus",
+ "en": "shaivism",
+ "es": "shivaísmo",
+ "fr": "shivaïsme",
+ "nl": "shaivisme",
+ "pt": "xivaísmo",
+ "zh": "濕婆教",
+ "zh-cn": "湿婆教"
+ },
+ "shaktism": {
+ "de": "shaktismus",
+ "en": "shaktism",
+ "fr": "shaktisme",
+ "nl": "shaktisme",
+ "pt": "shaktismo",
+ "zh": "性力派"
+ },
+ "shia": {
+ "de": "schia",
+ "en": "shia islam",
+ "es": "chiismo",
+ "fr": "chiisme",
+ "nl": "sjiisme",
+ "pt": "xiismo",
+ "zh": "什叶派"
+ },
+ "shingon_shu": {
+ "de": "shingon-shū",
+ "en": "shingon buddhism",
+ "es": "budismo shingon",
+ "fr": "shingon",
+ "nl": "shingon",
+ "pt": "shingon",
+ "zh": "真言宗"
+ },
+ "slavic": {
+ "de": "slawische mythologie",
+ "en": "slavic mythology",
+ "es": "mitología eslava",
+ "fr": "mythologie slave",
+ "nl": "slavische mythologie",
+ "pt": "mitologia eslava",
+ "zh": "斯拉夫神話",
+ "zh-cn": "斯拉夫神话"
+ },
+ "smartism": {
+ "en": "smartha tradition",
+ "es": "smarta",
+ "fr": "tradition smarta",
+ "nl": "smartisme",
+ "zh": "师摩多派"
+ },
+ "soto": {
+ "de": "sōtō-shū",
+ "en": "sōtō",
+ "nl": "soto",
+ "pt": "soto",
+ "pt-br": "sōtō-shū",
+ "zh": "日本曹洞宗",
+ "zh-hk": "曹洞宗"
+ },
+ "spiritist": {
+ "de": "spiritismus",
+ "en": "spiritism",
+ "es": "espiritismo",
+ "fr": "spiritisme",
+ "nl": "spiritisme",
+ "pt": "espiritismo",
+ "zh": "通灵术",
+ "zh-hk": "通靈術",
+ "zh-tw": "通靈術"
+ },
+ "sufi": {
+ "de": "sufismus",
+ "en": "sufism",
+ "es": "sufismo",
+ "fr": "soufisme",
+ "nl": "soefisme",
+ "pt": "sufismo",
+ "zh": "蘇非主義"
+ },
+ "sunni": {
+ "de": "sunniten",
+ "en": "sunni islam",
+ "es": "sunismo",
+ "fr": "sunnisme",
+ "nl": "soennisme",
+ "pt": "sunismo",
+ "zh": "遜尼派"
+ },
+ "svetambara": {
+ "de": "shvetambaras",
+ "en": "śvētāmbara",
+ "en-ca": "svetambara",
+ "en-gb": "svetambara",
+ "es": "svetambara",
+ "fr": "svetambara",
+ "nl": "shvetambar",
+ "pt": "svetambara",
+ "zh": "白衣派"
+ },
+ "syro-malabar_catholic": {
+ "de": "syro-malabarische kirche",
+ "en": "syro-malabar church",
+ "es": "iglesia siro-malabar",
+ "fr": "église catholique syro-malabare",
+ "nl": "syro-malabar-katholieke kerk",
+ "pt": "igreja católica siro-malabar",
+ "zh": "敘利亞-瑪拉巴禮天主教會"
+ },
+ "tiantai": {
+ "de": "tiantai zong",
+ "en": "tiantai",
+ "es": "escuela budista del tiantai",
+ "zh": "天台宗"
+ },
+ "tibetan": {
+ "de": "buddhismus in tibet",
+ "en": "tibetan buddhism",
+ "es": "budismo tibetano",
+ "fr": "bouddhisme tibétain",
+ "nl": "tibetaans boeddhisme",
+ "pt": "budismo tibetano",
+ "zh": "藏傳佛教"
+ },
+ "ukrainian_greek_catholic": {
+ "de": "ukrainische griechisch-katholische kirche",
+ "en": "ukrainian greek catholic church",
+ "es": "iglesia greco-católica ucraniana",
+ "fr": "église grecque-catholique ukrainienne",
+ "nl": "oekraïense grieks-katholieke kerk",
+ "pt": "igreja greco-católica ucraniana",
+ "zh": "乌克兰希腊礼天主教会",
+ "zh-hk": "烏克蘭希臘禮天主教會",
+ "zh-tw": "烏克蘭希臘禮天主教會"
+ },
+ "ultra_orthodox": {
+ "de": "ultraorthodoxes judentum",
+ "en": "haredi judaism",
+ "es": "judaísmo ultraortodoxo",
+ "fr": "haredim",
+ "nl": "charedisch jodendom",
+ "pt": "haredi",
+ "zh": "哈瑞迪猶太教"
+ },
+ "united": {
+ "en": "united church of canada",
+ "es": "iglesia unida de canadá",
+ "fr": "église unie du canada",
+ "pt": "igreja unida do canadá",
+ "zh": "加拿大聯合教會",
+ "zh-cn": "加拿大联合教会"
+ },
+ "united_church_of_christ": {
+ "en": "united church of christ",
+ "es": "iglesia unida de cristo",
+ "fr": "église unie du christ",
+ "pt": "igreja unida de cristo",
+ "zh": "联合基督教会"
+ },
+ "united_free_church_of_scotland": {
+ "en": "united free church of scotland"
+ },
+ "united_methodist": {
+ "de": "evangelisch-methodistische kirche",
+ "en": "united methodist church",
+ "es": "iglesia metodista unida",
+ "fr": "église méthodiste unie",
+ "pt": "igreja metodista",
+ "zh": "聯合循道公會",
+ "zh-cn": "香港基督教循道卫理联合教会",
+ "zh-hk": "基督教循道衞理聯合教會",
+ "zh-tw": "基督教循道衛理聯合教會"
+ },
+ "united_reformed": {
+ "en": "united reformed church",
+ "pt": "igreja reformada unida",
+ "zh": "聯合歸正教會"
+ },
+ "uniting": {
+ "en": "uniting church in australia",
+ "fr": "église unifiée d'australie",
+ "pt": "igreja unida na austrália",
+ "zh": "澳大利亞聯合教會",
+ "zh-cn": "澳大利亚联合教会"
+ },
+ "vaishnavism": {
+ "de": "vishnuismus",
+ "en": "vaishnavism",
+ "es": "visnuismo",
+ "fr": "vaishnava",
+ "nl": "vaishnavisme",
+ "pt": "vixnuísmo",
+ "zh": "毘濕奴派"
+ },
+ "vajrayana": {
+ "en": "vajrayana",
+ "es": "vajrayāna",
+ "fr": "bouddhisme vajrayāna",
+ "zh": "密宗"
+ },
+ "wicca": {
+ "en": "wicca",
+ "zh": "威卡教"
+ },
+ "won": {
+ "de": "won-buddhismus",
+ "en": "won buddhism",
+ "es": "budismo won",
+ "fr": "bouddhisme won",
+ "zh": "圆佛教",
+ "zh-hk": "圓佛教"
+ },
+ "yogacara": {
+ "de": "schule der dharma-eigenschaften",
+ "en": "east asian yogācāra",
+ "en-ca": "hossō-shū",
+ "es": "yogacara de asia oriental",
+ "fr": "hossō-shū",
+ "zh": "法相宗"
+ },
+ "yuzu_nembutsu": {
+ "de": "yūzū nembutsu-shū",
+ "en": "yuzu nembutsu",
+ "fr": "yūzū nembutsu shū"
+ },
+ "zen": {
+ "en": "zen",
+ "es": "budismo zen",
+ "zh": "禅宗",
+ "zh-tw": "禪宗"
+ }
+ },
+ "departures_board": {
+ "realtime": {
+ "de": "dynamische fahrgastinformation",
+ "en": "dynamic passenger information",
+ "fr": "système d'information voyageurs",
+ "nl": "dynamisch reizigersinformatiesysteem"
+ }
+ },
+ "designation": {
+ "area_of_outstanding_natural_beauty": {
+ "en": "area of outstanding natural beauty",
+ "es": "área de destacada belleza natural",
+ "zh": "美麗風光保留區"
+ },
+ "civil_parish": {
+ "de": "parish",
+ "en": "civil parish",
+ "en-gb": "parish",
+ "es": "parroquia civil",
+ "fr": "paroisse civile",
+ "nl": "parochie",
+ "pt": "paróquia",
+ "zh": "堂区"
+ },
+ "common": {
+ "de": "allmende",
+ "en": "common land",
+ "es": "bien comunal",
+ "fr": "biens communaux",
+ "nl": "gemene grond",
+ "pt": "baldio",
+ "zh": "公地"
+ },
+ "community": {
+ "de": "community in wales",
+ "en": "community",
+ "es": "comunidad",
+ "fr": "communauté",
+ "pt": "comunidade",
+ "zh": "社區"
+ },
+ "metropolitan_district": {
+ "en": "metropolitan borough",
+ "es": "borough metropolitano",
+ "fr": "district métropolitain",
+ "pt": "distrito metropolitano",
+ "zh": "都市自治市"
+ },
+ "non_metropolitan_county": {
+ "en": "non-metropolitan county",
+ "es": "condado no metropolitano",
+ "fr": "comté non métropolitain",
+ "pt": "condado não-metropolitano",
+ "zh": "非都市郡"
+ },
+ "non_metropolitan_district": {
+ "en": "non-metropolitan district",
+ "es": "distrito no metropolitano",
+ "fr": "district non métropolitain",
+ "pt": "distrito não-metropolitano",
+ "pt-br": "distrito não metropolitano",
+ "zh": "非都市區"
+ },
+ "principal_area": {
+ "en": "principal area",
+ "fr": "zone principale",
+ "zh": "主要區域"
+ }
+ },
+ "diet": {
+ "": {
+ "de": "veganes restaurant",
+ "en": "vegan restaurant",
+ "es": "restaurante vegano",
+ "nl": "veganistische eetgelegenheid",
+ "pt": "restaurante vegano"
+ }
+ },
+ "diplomatic": {
+ "ambassadors_residence": {
+ "de": "amtssitz eines botschafters",
+ "en": "ambassador's residence",
+ "fr": "résidence d'ambassadeur",
+ "nl": "ambassadeurswoning"
+ },
+ "consulate": {
+ "de": "konsulat",
+ "en": "consulate",
+ "es": "consulado",
+ "fr": "consulat",
+ "nl": "consulaat",
+ "pt": "consulado",
+ "zh": "领事馆",
+ "zh-hk": "領事館",
+ "zh-tw": "領事館"
+ },
+ "consulate_general": {
+ "de": "generalkonsulat",
+ "en": "consulate general",
+ "es": "consulado general",
+ "fr": "consulat général",
+ "nl": "consulaat-generaal",
+ "pt": "consulado-geral",
+ "zh": "总领事馆",
+ "zh-tw": "總領事館"
+ },
+ "delegation": {
+ "en": "delegation"
+ },
+ "embassy": {
+ "de": "botschaft",
+ "en": "embassy",
+ "es": "embajada",
+ "fr": "ambassade",
+ "nl": "ambassade",
+ "pt": "embaixada",
+ "zh": "大使館",
+ "zh-cn": "大使馆"
+ },
+ "high_commission": {
+ "de": "hohe kommission",
+ "en": "high commission",
+ "es": "alto comisionado",
+ "fr": "haut-commissariat",
+ "pt": "alto comissariado",
+ "zh": "高級專員公署"
+ },
+ "honorary_consulate": {
+ "de": "honorarkonsulat",
+ "en": "honorary consulate",
+ "fr": "consulat honoraire",
+ "pt": "consulado honorário",
+ "zh": "名誉领事馆"
+ },
+ "liaison": {
+ "en": "liaison office",
+ "pt": "gabinete de ligação",
+ "zh": "联络办公室"
+ },
+ "permanent_mission": {
+ "de": "ständige vertretung",
+ "en": "permanent mission",
+ "es": "misión permanente",
+ "fr": "mission diplomatique permanente",
+ "nl": "permanente missie",
+ "pt": "missão permanente",
+ "zh": "常駐代表處",
+ "zh-cn": "常驻代表处"
+ }
+ },
+ "display": {
+ "sundial": {
+ "de": "sonnenuhr",
+ "en": "sundial",
+ "es": "reloj de sol",
+ "fr": "cadran solaire",
+ "nl": "zonnewijzer",
+ "pt": "relógio de sol",
+ "zh": "日晷"
+ }
+ },
+ "distillery": {
+ "whisky": {
+ "de": "whiskybrennerei",
+ "en": "whisky distillery",
+ "es": "destilería de whisky",
+ "fr": "distillerie de whisky",
+ "nl": "whisky-destilleerderij",
+ "pt": "destilaria de whisky"
+ }
+ },
+ "disused": {
+ "": {
+ "de": "ehemaliger bahnhof",
+ "en": "former railway station",
+ "en-gb": "disused railway station",
+ "fr": "ancienne gare ferroviaire",
+ "nl": "voormalig spoorwegstation",
+ "pt": "antiga estação ferroviária"
+ },
+ "station": {
+ "de": "ehemaliger bahnhof",
+ "en": "former railway station",
+ "en-gb": "disused railway station",
+ "fr": "ancienne gare ferroviaire",
+ "nl": "voormalig spoorwegstation",
+ "pt": "antiga estação ferroviária"
+ }
+ },
+ "dock": {
+ "drydock": {
+ "de": "trockendock",
+ "en": "dry dock",
+ "en-ca": "drydock",
+ "es": "dique seco",
+ "fr": "forme de radoub",
+ "nl": "droogdok",
+ "pt": "dique seco",
+ "zh": "旱塢"
+ }
+ },
+ "dog": {
+ "leashed": {
+ "en": "dogs on leash",
+ "fr": "autorisation des chiens tenus en laisse",
+ "pt": "uso de coleira em cães obrigatório"
+ }
+ },
+ "drive_in": {
+ "yes": {
+ "de": "autokino",
+ "en": "drive-in theater",
+ "es": "autocine",
+ "fr": "ciné-parc",
+ "nl": "drive-in bioscoop",
+ "pt": "cinema drive-in",
+ "zh": "汽車戲院"
+ }
+ },
+ "electrified": {
+ "contact_line": {
+ "de": "oberleitung",
+ "en": "overhead line",
+ "es": "catenaria",
+ "fr": "caténaire",
+ "nl": "bovenleiding",
+ "pt": "catenária",
+ "zh": "高架電纜",
+ "zh-cn": "架空接触网",
+ "zh-hk": "架空電纜",
+ "zh-tw": "高架電車線"
+ },
+ "ground-level_power_supply": {
+ "de": "alimentation par le sol",
+ "en": "ground-level power supply",
+ "es": "alimentación por el suelo",
+ "fr": "alimentation par le sol",
+ "nl": "alimentation par le sol",
+ "pt": "alimentação pelo solo",
+ "zh": "地面供电系统"
+ },
+ "rail": {
+ "de": "stromschiene",
+ "en": "third rail",
+ "es": "tercer riel",
+ "fr": "troisième rail",
+ "nl": "derde rail",
+ "pt": "terceiro carril",
+ "pt-br": "terceiro trilho",
+ "zh": "軌道供電",
+ "zh-cn": "第三轨供电",
+ "zh-tw": "第三軌供電"
+ }
+ },
+ "embankment": {
+ "yes": {
+ "de": "damm",
+ "en": "embankment",
+ "es": "terraplén",
+ "fr": "terre-plein",
+ "nl": "weglichaam",
+ "zh": "路堤"
+ }
+ },
+ "emergency": {
+ "access_point": {
+ "de": "rettungspunkt",
+ "en": "emergency access point"
+ },
+ "ambulance_station": {
+ "de": "rettungswache",
+ "en": "ambulance station",
+ "es": "estación de ambulancias",
+ "fr": "station d'ambulance"
+ },
+ "assembly_point": {
+ "de": "sammelplatz",
+ "en": "emergency assembly point"
+ },
+ "defibrillator": {
+ "en": "defibrillator",
+ "es": "desfibrilador",
+ "fr": "défibrillateur cardiaque",
+ "zh": "除顫器",
+ "pt": "desfibrilador automático externo"
+ },
+ "dry_riser_inlet": {
+ "en": "dry riser inlet",
+ "nl": "aanvoerpunt van droge blusleiding"
+ },
+ "emergency_ward_entrance": {
+ "de": "notaufnahme",
+ "en": "emergency department",
+ "es": "departamento de emergencia",
+ "fr": "accueil et traitement des urgences",
+ "nl": "spoedeisende hulp",
+ "pt": "departamento de emergência",
+ "zh": "急症室",
+ "zh-cn": "急诊室",
+ "zh-tw": "急診室"
+ },
+ "fire_extinguisher": {
+ "de": "feuerlöscher",
+ "en": "fire extinguisher",
+ "es": "extintor",
+ "fr": "extincteur",
+ "nl": "brandblusser",
+ "pt": "extintor",
+ "zh": "滅火器",
+ "zh-cn": "灭火器"
+ },
+ "fire_flapper": {
+ "de": "brandklatsche",
+ "en": "fire flapper",
+ "fr": "hosa",
+ "zh": "山火拍"
+ },
+ "fire_hose": {
+ "de": "feuerwehrschlauch",
+ "en": "fire hose",
+ "es": "manguera de incendios",
+ "fr": "tuyau d'incendie",
+ "nl": "brandslang",
+ "zh": "消防水龙"
+ },
+ "fire_hydrant": {
+ "de": "hydrant",
+ "en": "fire hydrant",
+ "es": "hidrante de incendio",
+ "fr": "hydrant",
+ "nl": "brandkraan",
+ "pt": "boca de incêndio",
+ "pt-br": "hidrante",
+ "zh": "消防栓"
+ },
+ "first_aid_kit": {
+ "de": "verbandkasten",
+ "en": "first aid kit",
+ "es": "botiquín",
+ "fr": "trousse de secours",
+ "nl": "ehbo-koffer",
+ "pt": "kit de primeiros socorros",
+ "zh": "急救包"
+ },
+ "life_ring": {
+ "de": "rettungsring",
+ "en": "lifebuoy",
+ "es": "salvavidas",
+ "fr": "bouée de sauvetage",
+ "nl": "reddingsboei",
+ "zh": "救生圈"
+ },
+ "lifeguard": {
+ "de": "rettungsschwimmer",
+ "en": "lifeguard",
+ "es": "socorrista",
+ "fr": "nageur sauveteur",
+ "nl": "badmeester",
+ "pt": "salva-vidas",
+ "zh": "救生員"
+ },
+ "marine_refuge": {
+ "de": "rettungsbake",
+ "en": "refuge beacon"
+ },
+ "mountain_rescue": {
+ "de": "bergrettungsdienst",
+ "en": "mountain rescue",
+ "es": "rescate en montaña",
+ "fr": "secours en montagne",
+ "zh": "山區搜救"
+ },
+ "phone": {
+ "de": "notrufsäule",
+ "en": "emergency telephone",
+ "fr": "borne d’appel",
+ "nl": "praatpaal"
+ },
+ "rescue_box": {
+ "de": "selbsthilfebox",
+ "en": "stretcher box"
+ },
+ "siren": {
+ "de": "sirene",
+ "en": "siren",
+ "es": "sirena",
+ "fr": "sirène",
+ "nl": "sirene",
+ "pt": "sirene",
+ "zh": "警笛"
+ },
+ "water_tank": {
+ "de": "wassertank",
+ "en": "water tank",
+ "es": "tanque de agua",
+ "fr": "réservoir d'eau",
+ "nl": "watertank",
+ "pt": "caixa-d'água",
+ "zh": "水缸"
+ }
+ },
+ "fee": {
+ "no": {
+ "en": "gratis",
+ "fr": "gratuité",
+ "pt": "grátis",
+ "zh": "免费",
+ "zh-tw": "免費"
+ },
+ "yes": {
+ "de": "kostenpflichtig",
+ "en": "paid",
+ "es": "de pago",
+ "fr": "payant",
+ "nl": "betaald",
+ "pt": "pago",
+ "zh": "需付費"
+ }
+ },
+ "flag": {
+ "": {
+ "de": "kommerzielle flagge",
+ "en": "commercial flag",
+ "es": "bandera municipal",
+ "fr": "drapeau municipal",
+ "nl": "gemeentevlag",
+ "pt": "bandeira municipal",
+ "zh": "城市旗",
+ "pt-br": "bandeira nacional",
+ "zh-cn": "国旗",
+ "zh-hk": "國旗",
+ "zh-tw": "國旗"
+ }
+ },
+ "floor": {
+ "": {
+ "en": "wood flooring",
+ "nl": "houten vloer",
+ "pt": "piso de madeira",
+ "zh": "木製地板"
+ }
+ },
+ "footway": {
+ "access_aisle": {
+ "en": "access aisle"
+ },
+ "sidewalk": {
+ "de": "gehweg",
+ "de-ch": "trottoir",
+ "en": "sidewalk",
+ "en-gb": "pavement",
+ "es": "acera",
+ "fr": "trottoir",
+ "nl": "trottoir",
+ "pt": "passeio",
+ "pt-br": "calçada",
+ "zh": "人行道"
+ }
+ },
+ "ford": {
+ "stepping_stones": {
+ "de": "trittstein",
+ "en": "stepping stones",
+ "fr": "pierres de gué",
+ "nl": "stapstenen brug",
+ "pt": "poldra"
+ },
+ "yes": {
+ "de": "furt",
+ "en": "ford",
+ "es": "vado",
+ "fr": "gué",
+ "nl": "voorde",
+ "pt": "vau",
+ "zh": "浅滩"
+ }
+ },
+ "fortification": {
+ "martello_tower": {
+ "de": "martello-turm",
+ "en": "martello tower",
+ "es": "martello",
+ "fr": "tour martello",
+ "nl": "martellotoren",
+ "zh": "馬泰羅塔"
+ }
+ },
+ "fortification_type": {
+ "hill_fort": {
+ "de": "wallburg",
+ "en": "hillfort",
+ "en-ca": "hill fort",
+ "es": "castro",
+ "fr": "colline fortifiée",
+ "nl": "walburcht",
+ "pt": "castro",
+ "zh": "丘陵要塞",
+ "zh-cn": "军事掩体"
+ }
+ },
+ "fountain": {
+ "bubbler": {
+ "de": "trinkbrunnen",
+ "en": "drinking fountain",
+ "es": "fuente de agua",
+ "fr": "point d'eau public",
+ "nl": "drinkfontein",
+ "pt": "fontanário",
+ "pt-br": "bebedouro",
+ "zh": "公共飲水機"
+ },
+ "nasone": {
+ "en": "nasone",
+ "fr": "nasoni"
+ },
+ "nozzle": {
+ "de": "düse",
+ "en": "nozzle",
+ "es": "tobera",
+ "fr": "tuyère",
+ "nl": "spuitmond",
+ "pt": "tubeira",
+ "zh": "喷嘴"
+ },
+ "splash_pad": {
+ "en": "splash pad"
+ },
+ "toret": {
+ "en": "torèt"
+ }
+ },
+ "frequency": {
+ "16.7": {
+ "de": "15 kv eisenbahn-stromsystem",
+ "en": "15 kv, 16.7 hz ac railway electrification",
+ "en-ca": "15 kv ac railway electrification",
+ "en-gb": "15 kv ac railway electrification",
+ "es": "electrificación ferroviaria de 15 kv de ca",
+ "fr": "électrification ferroviaire 15 kv 16,7 hz",
+ "nl": "15 kv bovenleidingssysteem",
+ "zh": "15千伏交流电气化铁路"
+ }
+ },
+ "gambling": {
+ "bingo": {
+ "en": "bingo hall"
+ },
+ "pachinko": {
+ "en": "pachinko",
+ "zh": "彈珠機",
+ "zh-tw": "柏青哥"
+ }
+ },
+ "garden": {
+ "": {
+ "de": "gartenkunst in china",
+ "en": "chinese garden",
+ "es": "jardín chino",
+ "fr": "jardin chinois",
+ "nl": "chinese tuin",
+ "zh": "中國園林",
+ "zh-cn": "中国园林",
+ "pt": "jardim inglês",
+ "en-ca": "japanese garden",
+ "en-gb": "japanese garden",
+ "pt-br": "horta urbana",
+ "de-ch": "rosarium"
+ }
+ },
+ "gauge": {
+ "1000": {
+ "de": "meterspur",
+ "en": "1000 mm track gauge",
+ "es": "vía métrica",
+ "fr": "voie métrique",
+ "nl": "meterspoor",
+ "pt": "bitola métrica",
+ "zh": "1000毫米窄轨",
+ "zh-hk": "1000毫米窄軌"
+ },
+ "1067": {
+ "de": "kapspur",
+ "en": "1067 mm track gauge",
+ "es": "ancho del cabo",
+ "fr": "voie sud-africaine",
+ "nl": "kaapspoor",
+ "pt": "bitola 1067 mm",
+ "zh": "1067毫米窄轨",
+ "zh-tw": "1067公釐窄轨"
+ },
+ "1093": {
+ "en": "1093 mm track gauge",
+ "pt-br": "bitola 1093 mm"
+ },
+ "1100": {
+ "de": "1100-mm-spur",
+ "en": "1100 mm track gauge",
+ "pt-br": "bitola 1100 mm"
+ },
+ "1432": {
+ "en": "1432 mm track gauge",
+ "pt-br": "bitola 1432 mm",
+ "zh": "1432毫米窄轨"
+ },
+ "1435": {
+ "de": "normalspur 1435 mm",
+ "en": "1435 mm track gauge",
+ "es": "ancho de vía estándar",
+ "fr": "voie normale",
+ "nl": "normaalspoor",
+ "pt": "bitola padrão",
+ "pt-br": "bitola internacional",
+ "zh": "標準軌",
+ "zh-cn": "标准轨"
+ },
+ "1445": {
+ "de": "1445-mm-spur",
+ "en": "1445 mm track gauge",
+ "fr": "voie large 1445 mm",
+ "nl": "normaalspoor"
+ },
+ "1450": {
+ "de": "1450-mm-spur",
+ "en": "1450 mm gauge"
+ },
+ "1458": {
+ "de": "1458-mm-spur",
+ "en": "1458 mm gauge"
+ },
+ "1520": {
+ "de": "russische breitspur (1520 mm)",
+ "en": "1520 mm track gauge",
+ "es": "ancho de vía ruso",
+ "fr": "voie russe",
+ "nl": "1520 mm spoorwijdte",
+ "pt": "bitola russa",
+ "zh": "1520毫米寬軌"
+ },
+ "1522": {
+ "de": "1522-mm-spur",
+ "en": "1522 mm track gauge"
+ },
+ "1524": {
+ "de": "spurweite 1524 mm",
+ "en": "1524 mm track gauge",
+ "fr": "voie large 1524 mm",
+ "nl": "1524 mm spoorwijdte"
+ },
+ "1600": {
+ "de": "spurweite 1600 mm",
+ "en": "5 ft 3 in gauge",
+ "es": "ancho irlandés",
+ "fr": "voie irlandaise",
+ "nl": "1600 mm spoorwijdte",
+ "pt": "bitola larga brasileira",
+ "pt-br": "bitola irlandesa",
+ "zh": "1600毫米宽轨"
+ },
+ "1668": {
+ "de": "iberische spurweite",
+ "en": "1668 mm track gauge",
+ "es": "ancho ibérico",
+ "fr": "voie ibérique",
+ "nl": "1688 mm spoorwijdte",
+ "pt": "bitola ibérica",
+ "zh": "1668毫米寬軌"
+ },
+ "1676": {
+ "de": "indische breitspur",
+ "en": "1676 mm track gauge",
+ "es": "ancho de vía indio",
+ "fr": "voie indienne",
+ "nl": "1676 mm spoorwijdte",
+ "pt": "bitola indiana",
+ "zh": "南亚宽轨"
+ },
+ "597": {
+ "en": "1-foot 11½-inch track gauge"
+ },
+ "600": {
+ "de": "600-mm-spur",
+ "en": "600 mm track gauge",
+ "fr": "écartement des rails de 600 mm",
+ "pt-br": "bitola 600 mm"
+ },
+ "750": {
+ "de": "spurweite 750 mm",
+ "en": "750 mm track gauge",
+ "fr": "voie étroite 750 mm",
+ "nl": "750 mm spoorwijdte",
+ "pt-br": "bitola 750 mm",
+ "zh": "750毫米铁轨"
+ },
+ "762": {
+ "de": "762-mm-spur",
+ "en": "762 mm track gauge",
+ "es": "ancho imperial",
+ "fr": "voie étroite 762 mm",
+ "pt-br": "bitola imperial",
+ "zh": "762毫米窄轨",
+ "zh-tw": "762毫米窄軌"
+ },
+ "900": {
+ "de": "900-mm-spur",
+ "en": "900 mm track gauge",
+ "pt-br": "bitola 900 mm"
+ }
+ },
+ "generator": {
+ "": {
+ "de": "photovoltaik-freiflächenanlage",
+ "en": "photovoltaic power station",
+ "es": "huerta solar",
+ "fr": "centrale solaire photovoltaïque",
+ "nl": "fotovoltaïsche krachtcentrale",
+ "pt": "central fotovoltaica",
+ "pt-br": "usina fotovoltaica",
+ "zh": "光伏电站",
+ "de-ch": "wärmekraftwerk",
+ "en-ca": "thermal power station",
+ "zh-hk": "熱力發電廠",
+ "zh-tw": "熱力發電廠",
+ "en-gb": "wind turbine"
+ }
+ },
+ "geological": {
+ "moraine": {
+ "de": "moräne",
+ "en": "moraine",
+ "es": "morrena",
+ "nl": "morene",
+ "pt": "morena",
+ "zh": "冰碛"
+ },
+ "outcrop": {
+ "de": "aufschluss",
+ "en": "outcrop",
+ "es": "afloramiento rocoso",
+ "fr": "affleurement",
+ "nl": "ontsluiting",
+ "pt": "afloramento",
+ "zh": "露頭"
+ },
+ "palaeontological_site": {
+ "de": "paläontologische stätte",
+ "en": "paleontological site",
+ "es": "yacimiento paleontológico",
+ "fr": "site paléontologique",
+ "nl": "paleontologische site",
+ "pt": "jazida paleontológica"
+ }
+ },
+ "government": {
+ "aerospace": {
+ "de": "weltraumorganisation",
+ "en": "space agency",
+ "es": "agencia espacial",
+ "fr": "agence spatiale",
+ "nl": "ruimtevaartagentschap",
+ "pt": "agência espacial",
+ "zh": "公共航天機構",
+ "zh-cn": "公共航天机构",
+ "zh-hk": "太空總署",
+ "zh-tw": "太空總署"
+ },
+ "archive": {
+ "de": "archivbau",
+ "en": "archives",
+ "es": "edificio de archivo",
+ "fr": "bâtiment d'archives",
+ "nl": "archief (gebouw)"
+ },
+ "audit": {
+ "de": "rechnungshof",
+ "en": "court of audit",
+ "es": "tribunal de cuentas",
+ "fr": "cour des comptes",
+ "nl": "rekenhof",
+ "pt": "tribunal de contas"
+ },
+ "border_control": {
+ "de": "grenzkontrolle",
+ "en": "border control",
+ "es": "control de fronteras",
+ "fr": "contrôle frontalier",
+ "nl": "grensbewaking",
+ "pt": "controle de alfândega",
+ "zh": "邊境管制"
+ },
+ "cadaster": {
+ "de": "vermessungsamt",
+ "en": "cadastral office"
+ },
+ "customs": {
+ "de": "zollverwaltung",
+ "de-ch": "zoll",
+ "en": "customs",
+ "es": "aduana",
+ "fr": "douane",
+ "nl": "douane",
+ "pt": "alfândega",
+ "zh": "海关",
+ "zh-hk": "海關",
+ "zh-tw": "海關"
+ },
+ "data_protection": {
+ "de": "datenschutzaufsichtsbehörde",
+ "en": "data protection authority",
+ "es": "autoridad nacional de protección de datos",
+ "fr": "autorité chargées de la protection des données",
+ "nl": "gegevensbeschermingsautoriteit"
+ },
+ "healthcare": {
+ "de": "gesundheitsamt",
+ "en": "health department",
+ "fr": "département de la santé",
+ "pt": "ministério da saúde",
+ "zh": "衛生部"
+ },
+ "intelligence": {
+ "de": "nachrichtendienst",
+ "en": "intelligence agency",
+ "es": "servicio de inteligencia",
+ "fr": "service de renseignement",
+ "nl": "inlichtingendienst",
+ "pt": "serviço de inteligência",
+ "zh": "情報機構",
+ "zh-cn": "情报机构"
+ },
+ "legislative": {
+ "de": "legislative",
+ "en": "legislative house",
+ "es": "cámara legislativa",
+ "fr": "assemblée législative",
+ "nl": "wetgevend orgaan",
+ "pt": "câmara legislativa"
+ },
+ "ministry": {
+ "de": "ministerium",
+ "en": "ministry",
+ "es": "ministerio",
+ "fr": "ministère",
+ "nl": "ministerie",
+ "pt": "ministério",
+ "zh": "部"
+ },
+ "ombudsperson": {
+ "de": "ombudsmann",
+ "en": "ombudsman",
+ "es": "defensor del pueblo",
+ "pt": "ouvidor",
+ "zh": "申訴專員",
+ "zh-cn": "申诉专员"
+ },
+ "parliament": {
+ "de": "parlament",
+ "en": "parliament",
+ "es": "parlamento",
+ "fr": "parlement",
+ "nl": "parlement",
+ "pt": "parlamento",
+ "zh": "議會",
+ "zh-cn": "议会"
+ },
+ "presidency": {
+ "de": "amtssitz",
+ "en": "official residence",
+ "es": "residencia oficial",
+ "fr": "résidence officielle",
+ "nl": "ambtswoning",
+ "pt": "residência oficial",
+ "zh": "官邸"
+ },
+ "prosecutor": {
+ "de": "staatsanwalt",
+ "de-ch": "generalstaatsanwaltschaft",
+ "en": "prosecutor",
+ "es": "fiscal",
+ "fr": "procureur",
+ "nl": "openbaar aanklager",
+ "pt": "promotor de justiça",
+ "pt-br": "ministério público",
+ "zh": "檢察官"
+ },
+ "register_office": {
+ "de": "standesamt",
+ "en": "register office",
+ "es": "oficina de registro",
+ "fr": "bureau de l'état civil",
+ "nl": "burgerlijke stand",
+ "pt": "cartório"
+ },
+ "social_services": {
+ "de": "sozialleistung",
+ "en": "social services",
+ "es": "servicios sociales",
+ "fr": "services sociaux",
+ "zh": "社會服務",
+ "zh-cn": "社会服务"
+ },
+ "social_welfare": {
+ "de": "notstandshilfe",
+ "en": "social welfare",
+ "fr": "service d'aide sociale",
+ "pt": "bem-estar social",
+ "zh": "社會福祉學"
+ },
+ "statistics": {
+ "de": "statistischer dienst",
+ "en": "statistical service",
+ "es": "instituto de estadística",
+ "fr": "institut officiel de statistique",
+ "nl": "bureau voor statistiek",
+ "pt": "instituto de estatística",
+ "zh": "统计部门",
+ "zh-hk": "統計部門",
+ "zh-tw": "統計部門"
+ },
+ "tax": {
+ "de": "finanzamt",
+ "en": "revenue service",
+ "es": "servicio de administración tributaria",
+ "fr": "administration fiscale",
+ "nl": "belastingdienst",
+ "zh": "税务服务"
+ },
+ "transportation": {
+ "de": "öpnv-aufgabenträger",
+ "en": "transportation authority",
+ "zh": "交通运输机构"
+ },
+ "treasury": {
+ "en": "treasury"
+ },
+ "youth_welfare_department": {
+ "de": "jugendamt",
+ "en": "youth welfare department"
+ }
+ },
+ "hazard": {
+ "animal_crossing": {
+ "en": "animal crossing"
+ }
+ },
+ "healthcare": {
+ "": {
+ "de": "akupunktur",
+ "en": "acupuncture",
+ "es": "acupuntura",
+ "nl": "acupunctuur",
+ "pt": "acupuntura",
+ "zh": "针灸",
+ "zh-hk": "針灸",
+ "zh-tw": "針灸",
+ "en-gb": "anaesthesia",
+ "en-ca": "anatomy",
+ "pt-br": "anatomia",
+ "de-ch": "anthroposophische medizin",
+ "de-at": "immunologie"
+ },
+ "alternative": {
+ "de": "alternativmedizin",
+ "en": "alternative medicine",
+ "es": "medicina alternativa",
+ "fr": "médecine non conventionnelle",
+ "nl": "alternatieve geneeswijze",
+ "pt": "medicina alternativa",
+ "zh": "替代医学",
+ "zh-hk": "替代醫學",
+ "zh-tw": "替代醫學"
+ },
+ "audiologist": {
+ "de": "audiologe",
+ "en": "audiologist",
+ "es": "audiólogo",
+ "fr": "audiologiste",
+ "nl": "audioloog",
+ "pt": "audiologista"
+ },
+ "birthing_center": {
+ "de": "geburtshaus",
+ "en": "birthing center",
+ "en-gb": "birthing centre",
+ "fr": "maison de naissance"
+ },
+ "blood_bank": {
+ "de": "blutbank",
+ "en": "blood bank",
+ "es": "banco de sangre",
+ "fr": "banque du sang",
+ "nl": "bloedbank",
+ "pt": "banco de sangue",
+ "zh": "臨床血庫學"
+ },
+ "blood_donation": {
+ "en": "blood collection centre",
+ "es": "centro de transfusiones",
+ "nl": "bloeddonorcentrum"
+ },
+ "clinic": {
+ "de": "klinik",
+ "en": "clinic",
+ "es": "clínica",
+ "fr": "clinique",
+ "nl": "kliniek",
+ "pt": "centro de saúde",
+ "zh": "診所"
+ },
+ "dentist": {
+ "de": "zahnarzt",
+ "en": "dentist",
+ "es": "odontólogo",
+ "fr": "chirurgien-dentiste",
+ "nl": "tandarts",
+ "pt": "dentista",
+ "zh": "牙醫",
+ "zh-cn": "牙医"
+ },
+ "doctor": {
+ "de": "arztpraxis",
+ "en": "doctor's office",
+ "en-gb": "doctor's surgery",
+ "es": "oficina del doctor",
+ "fr": "cabinet médical",
+ "pt": "consultório médico",
+ "de-at": "arzt",
+ "de-ch": "arzt",
+ "en-ca": "physician",
+ "nl": "arts",
+ "pt-br": "médico",
+ "zh": "医生",
+ "zh-hk": "醫生",
+ "zh-tw": "醫生"
+ },
+ "hospice": {
+ "de": "hospiz",
+ "en": "hospice",
+ "es": "hospicio",
+ "zh": "安寧病房"
+ },
+ "hospital": {
+ "de": "krankenhaus",
+ "de-ch": "spital",
+ "en": "hospital",
+ "fr": "hôpital",
+ "nl": "ziekenhuis",
+ "zh": "醫院",
+ "zh-cn": "医院"
+ },
+ "midwife": {
+ "de": "hebamme",
+ "en": "midwife",
+ "es": "matrona",
+ "fr": "sage-femme",
+ "nl": "verloskundige",
+ "pt": "obstetriz",
+ "zh": "接生員"
+ },
+ "occupational_therapist": {
+ "de": "ergotherapeut",
+ "en": "occupational therapist",
+ "es": "terapeuta ocupacional",
+ "fr": "ergothérapeute",
+ "nl": "ergotherapeut",
+ "pt": "terapeuta ocupacional",
+ "zh": "職能治療師"
+ },
+ "optometrist": {
+ "en": "optometrist",
+ "es": "optometrista",
+ "fr": "optométriste",
+ "zh": "視光師",
+ "zh-cn": "视光师"
+ },
+ "physiotherapist": {
+ "de": "physiotherapie",
+ "en": "physiotherapy",
+ "es": "fisioterapia",
+ "fr": "physiothérapie",
+ "nl": "fysiotherapie",
+ "pt": "fisioterapia",
+ "zh": "物理治療",
+ "zh-cn": "物理治疗",
+ "pt-br": "fisioterapeuta"
+ },
+ "podiatrist": {
+ "de": "podologe",
+ "en": "podiatrist",
+ "es": "podiatra",
+ "fr": "podiatre",
+ "nl": "podoloog",
+ "zh": "足科醫生"
+ },
+ "psychotherapist": {
+ "de": "psychotherapeut",
+ "en": "psychotherapist",
+ "es": "psicoterapeuta",
+ "fr": "psychothérapeute",
+ "nl": "psychotherapeut",
+ "pt": "psicoterapeuta"
+ },
+ "speech_therapist": {
+ "de": "logopäde",
+ "en": "speech and language therapist",
+ "es": "logopeda",
+ "fr": "orthophoniste",
+ "nl": "logopedist",
+ "pt": "fonoaudiólogo"
+ }
+ },
+ "heritage": {
+ "": {
+ "de": "denkmalgeschütztes objekt in österreich",
+ "de-ch": "denkmalgeschützte objekte in österreich",
+ "en": "denkmalgeschütztes objekt",
+ "nl": "beschermd monument in oostenrijk",
+ "pt-br": "lugar inscrito no registro nacional de lugares históricos",
+ "pt": "rijksmonument",
+ "zh": "rijksmonument",
+ "zh-cn": "世界遗产",
+ "zh-hk": "世界遺產",
+ "zh-tw": "世界遺產"
+ },
+ "2": {
+ "en": "rijksmonument"
+ }
+ },
+ "highway": {
+ "bridleway": {
+ "de": "saumpfad",
+ "en": "bridle path",
+ "fr": "sentier équestre",
+ "nl": "ruiterpad",
+ "pt": "trilha montada",
+ "zh": "骑马专用道"
+ },
+ "bus_guideway": {
+ "en": "guided busway"
+ },
+ "bus_stop": {
+ "de": "bushaltestelle",
+ "en": "bus stop",
+ "es": "parada de autobús",
+ "fr": "arrêt de bus",
+ "nl": "bushalte",
+ "pt": "paragem de autocarro",
+ "pt-br": "parada de ônibus",
+ "zh": "巴士站",
+ "zh-cn": "公交车站",
+ "zh-tw": "公車站"
+ },
+ "corridor": {
+ "de": "flur",
+ "en": "corridor",
+ "es": "pasillo",
+ "fr": "couloir",
+ "nl": "gang",
+ "pt": "corredor",
+ "zh": "廊"
+ },
+ "crossing": {
+ "de": "fußgängerübergang",
+ "de-ch": "fussgängerüberweg",
+ "en": "crosswalk",
+ "en-ca": "pedestrian crossing",
+ "en-gb": "pedestrian crossing",
+ "es": "paso de peatones",
+ "fr": "passage piéton",
+ "nl": "oversteekplaats",
+ "pt": "passadeira de peões",
+ "pt-br": "faixa de segurança",
+ "zh": "行人穿越道"
+ },
+ "cycleway": {
+ "de": "radverkehrsanlage",
+ "en": "bike path",
+ "en-gb": "cycle path",
+ "es": "ciclovía",
+ "fr": "piste cyclable",
+ "nl": "fietspad",
+ "pt": "ciclovia",
+ "zh": "單車徑",
+ "zh-cn": "自行车径",
+ "pt-br": "infraestrutura cicloviária"
+ },
+ "elevator": {
+ "de": "aufzugsanlage",
+ "en": "elevator",
+ "en-gb": "lift",
+ "es": "ascensor",
+ "fr": "ascenseur",
+ "nl": "lift",
+ "pt": "elevador",
+ "zh": "升降机",
+ "zh-hk": "升降機",
+ "zh-tw": "升降機"
+ },
+ "emergency_access_point": {
+ "de": "rettungspunkt",
+ "en": "emergency access point"
+ },
+ "escape": {
+ "de": "notfallspur",
+ "en": "runaway truck ramp",
+ "es": "zona de frenado de emergencia",
+ "fr": "voie de détresse",
+ "nl": "noodstopstrook",
+ "zh": "避险车道"
+ },
+ "footway": {
+ "de": "passage",
+ "en": "walkway",
+ "es": "pasaje",
+ "fr": "passage",
+ "nl": "passage",
+ "pt": "passadiço",
+ "zh": "步道"
+ },
+ "living_street": {
+ "de": "verkehrsberuhigter bereich",
+ "de-ch": "begegnungszone",
+ "en": "living street",
+ "fr": "zone de rencontre",
+ "nl": "erf (nl)",
+ "pt-br": "rua viva",
+ "zh": "生活化道路"
+ },
+ "milestone": {
+ "de": "kilometerstein",
+ "en": "highway location marker",
+ "es": "hito kilométrico",
+ "nl": "afstandspaal",
+ "zh": "距離標示"
+ },
+ "mini_roundabout": {
+ "de": "minikreisverkehr",
+ "en": "mini roundabout",
+ "nl": "minirotonde"
+ },
+ "motorway": {
+ "de": "autobahn",
+ "en": "controlled-access highway",
+ "en-gb": "motorway",
+ "es": "autopista",
+ "fr": "autoroute",
+ "nl": "autosnelweg",
+ "pt": "autoestrada",
+ "zh": "高速公路"
+ },
+ "motorway_junction": {
+ "de": "anschlussstelle",
+ "en": "junction",
+ "fr": "sortie",
+ "nl": "aansluiting",
+ "zh": "高速公路出入口",
+ "de-at": "knoten",
+ "de-ch": "verzweigung"
+ },
+ "motorway_link": {
+ "en": "ramp",
+ "fr": "bretelle"
+ },
+ "passing_place": {
+ "de": "ausweichstelle",
+ "en": "passing place",
+ "nl": "uitwijkplaats"
+ },
+ "path": {
+ "de": "weg",
+ "en": "path",
+ "es": "camino",
+ "fr": "chemin",
+ "nl": "voetpad",
+ "pt": "caminho"
+ },
+ "pedestrian": {
+ "de": "fußgängerzone",
+ "en": "pedestrian zone",
+ "es": "calle peatonal",
+ "fr": "zone piétonne",
+ "nl": "voetgangersgebied",
+ "pt": "pedonal",
+ "zh": "步行街",
+ "zh-hk": "行人專用區",
+ "zh-tw": "徒步區"
+ },
+ "primary_link": {
+ "en": "slip lane"
+ },
+ "raceway": {
+ "de": "rennstrecke",
+ "de-ch": "motorsport-rennstrecke",
+ "en": "race track",
+ "es": "circuito de carreras",
+ "fr": "circuit",
+ "nl": "circuit",
+ "pt": "autódromo",
+ "zh": "賽車場"
+ },
+ "residential": {
+ "en": "residential street",
+ "es": "calle residencial",
+ "fr": "rue résidentielle",
+ "pt": "rua residencial"
+ },
+ "rest_area": {
+ "de": "autobahnraststätte",
+ "en": "rest area",
+ "es": "área de servicio",
+ "fr": "aire de repos et de service",
+ "nl": "verzorgingsplaats",
+ "zh": "公路服務區"
+ },
+ "road": {
+ "de": "straße",
+ "de-ch": "strasse",
+ "en": "road",
+ "es": "carretera",
+ "fr": "route",
+ "nl": "weg",
+ "pt": "estrada",
+ "zh": "道路"
+ },
+ "secondary": {
+ "de-ch": "landesstrasse",
+ "en": "landesstraße"
+ },
+ "secondary_link": {
+ "en": "slip lane"
+ },
+ "services": {
+ "de": "autobahnraststätte",
+ "en": "rest area",
+ "es": "área de servicio",
+ "fr": "aire de repos et de service",
+ "nl": "verzorgingsplaats",
+ "zh": "公路服務區"
+ },
+ "speed_camera": {
+ "de": "geschwindigkeitsüberwachung",
+ "en": "traffic enforcement camera",
+ "es": "radar de tráfico",
+ "fr": "radar automatique",
+ "nl": "flitspaal",
+ "zh": "电子警察"
+ },
+ "steps": {
+ "de": "treppe",
+ "de-at": "stiege",
+ "en": "stairs",
+ "es": "escalera",
+ "fr": "escalier",
+ "nl": "trap",
+ "pt": "escada",
+ "zh": "楼梯",
+ "zh-tw": "樓梯"
+ },
+ "stop": {
+ "de": "stoppschild",
+ "en": "stop sign",
+ "es": "señal de detención obligatoria",
+ "fr": "panneau stop",
+ "nl": "stopbord",
+ "pt": "sinal de stop",
+ "zh": "停车让行"
+ },
+ "street_lamp": {
+ "de": "straßenlaterne",
+ "de-ch": "strassenbeleuchtung",
+ "en": "streetlight",
+ "es": "alumbrado público",
+ "fr": "réverbère",
+ "nl": "straatverlichting",
+ "pt": "iluminação pública",
+ "zh": "街燈"
+ },
+ "tertiary_link": {
+ "en": "slip lane"
+ },
+ "track": {
+ "de": "weg",
+ "en": "trail",
+ "es": "senda",
+ "fr": "sentier",
+ "nl": "pad",
+ "pt": "trilho",
+ "pt-br": "trilha",
+ "zh": "小径",
+ "en-ca": "dirt road",
+ "en-gb": "dirt road"
+ },
+ "traffic_mirror": {
+ "de": "verkehrsspiegel",
+ "en": "traffic mirror",
+ "pt": "espelho rodoviário"
+ },
+ "traffic_signals": {
+ "de": "ampel",
+ "en": "traffic light",
+ "es": "semáforo",
+ "fr": "feu de circulation",
+ "nl": "verkeerslicht",
+ "pt": "semáforo",
+ "zh": "交通號誌",
+ "zh-cn": "信號燈"
+ },
+ "trunk": {
+ "de": "fernstraße",
+ "de-ch": "fernstrasse",
+ "en": "trunk road",
+ "es": "carretera troncal",
+ "fr": "route nationale",
+ "nl": "provinciale weg",
+ "pt-br": "via troncal",
+ "zh": "主干道"
+ },
+ "trunk_link": {
+ "en": "ramp",
+ "fr": "bretelle"
+ },
+ "turning_circle": {
+ "de": "sackgasse",
+ "de-ch": "stichstrasse",
+ "en": "dead end street",
+ "en-ca": "cul-de-sac",
+ "en-gb": "cul-de-sac",
+ "es": "cul-de-sac",
+ "fr": "impasse",
+ "nl": "doodlopende weg",
+ "pt": "cul-de-sac",
+ "zh": "死路"
+ },
+ "turning_loop": {
+ "en": "turning circle"
+ },
+ "via_ferrata": {
+ "de": "klettersteig",
+ "en": "via ferrata",
+ "es": "vía ferrata"
+ }
+ },
+ "historic": {
+ "": {
+ "de": "chinesisches altertum",
+ "en": "ancient china",
+ "nl": "oud china",
+ "en-ca": "ancient egypt",
+ "en-gb": "ancient egypt",
+ "es": "antiguo egipto",
+ "fr": "égypte antique",
+ "pt": "antigo egito",
+ "zh": "古埃及",
+ "de-ch": "antikes griechenland"
+ },
+ "archaeological_site": {
+ "de": "archäologische stätte",
+ "en": "archaeological site",
+ "es": "yacimiento arqueológico",
+ "fr": "site archéologique",
+ "nl": "archeologische vindplaats",
+ "pt": "sítio arqueológico",
+ "zh": "遺跡"
+ },
+ "bailey": {
+ "en": "ward",
+ "es": "palenque"
+ },
+ "battlefield": {
+ "de": "kriegsschauplatz",
+ "en": "theater",
+ "en-gb": "theatre",
+ "es": "teatro de operaciones",
+ "fr": "théâtre militaire",
+ "nl": "oorlogstheater",
+ "pt": "teatro de operações",
+ "zh": "戰區"
+ },
+ "cannon": {
+ "de": "kanone",
+ "en": "cannon",
+ "es": "cañón",
+ "fr": "canon",
+ "nl": "kanon",
+ "pt": "canhão",
+ "zh": "加农炮"
+ },
+ "castle": {
+ "de": "schloss",
+ "en": "château",
+ "nl": "kasteel",
+ "zh": "法式城堡",
+ "de-ch": "burg",
+ "pt-br": "castelo",
+ "zh-cn": "城堡",
+ "zh-tw": "城堡"
+ },
+ "city_gate": {
+ "de": "stadttor",
+ "en": "city gate",
+ "es": "puerta de la ciudad",
+ "fr": "porte de ville",
+ "nl": "stadspoort",
+ "pt": "porta da cidade",
+ "pt-br": "portas da cidade",
+ "zh": "城門"
+ },
+ "citywalls": {
+ "de": "stadtmauer",
+ "en": "city walls",
+ "en-gb": "city wall",
+ "es": "muralla urbana",
+ "fr": "rempart de ville",
+ "nl": "stadsmuur",
+ "pt": "muralhas da cidade"
+ },
+ "fort": {
+ "en": "fort",
+ "es": "fuerte",
+ "pt": "forte",
+ "zh": "堡"
+ },
+ "heritage": {
+ "de": "kulturerbe",
+ "en": "cultural heritage",
+ "es": "patrimonio cultural",
+ "fr": "patrimoine culturel",
+ "nl": "cultureel erfgoed",
+ "pt": "património cultural",
+ "pt-br": "patrimônio cultural",
+ "zh": "文化遺產",
+ "zh-cn": "文化遗产"
+ },
+ "manor": {
+ "de": "herrenhaus",
+ "en": "manor house",
+ "es": "casa solariega",
+ "fr": "manoir",
+ "nl": "manoir",
+ "pt": "solar",
+ "zh": "莊園大屋"
+ },
+ "memorial": {
+ "de": "gedenkstätte",
+ "en": "memorial",
+ "es": "monumento conmemorativo",
+ "fr": "mémorial",
+ "nl": "gedenkteken",
+ "pt": "monumento comemorativo",
+ "zh": "紀念建築"
+ },
+ "milestone": {
+ "de": "königlich-sächsischer meilenstein",
+ "en": "royal saxon milestone",
+ "en-gb": "milestone",
+ "es": "miliario",
+ "fr": "borne routière",
+ "nl": "mijlpaal",
+ "pt": "marco quilométrico",
+ "zh": "里程碑"
+ },
+ "monument": {
+ "de": "denkmal",
+ "en": "monument",
+ "es": "monumento",
+ "nl": "gedenkmonument",
+ "pt": "monumento",
+ "zh": "紀念建築物"
+ },
+ "palace": {
+ "de": "palast",
+ "en": "palace",
+ "es": "palacio",
+ "fr": "palais",
+ "nl": "paleis",
+ "pt": "palácio",
+ "zh": "宮殿",
+ "zh-cn": "宫殿"
+ },
+ "pillory": {
+ "de": "pranger",
+ "en": "pillory",
+ "es": "picota",
+ "fr": "pilori",
+ "nl": "schandpaal",
+ "pt": "pelourinho",
+ "zh": "頸手枷"
+ },
+ "ruins": {
+ "de": "ruine",
+ "en": "ruins",
+ "es": "ruina",
+ "fr": "ruine",
+ "nl": "ruïne",
+ "pt": "ruína",
+ "zh": "廢墟",
+ "zh-cn": "废墟"
+ },
+ "rune_stone": {
+ "de": "nordischer runenstein",
+ "en": "norse runestone",
+ "fr": "pierre runique norse",
+ "nl": "noorse runensteen",
+ "es": "piedra rúnica",
+ "pt": "pedra rúnica",
+ "zh": "如尼石刻"
+ },
+ "ship": {
+ "de": "museumsschiff",
+ "en": "museum ship",
+ "es": "barco museo",
+ "fr": "navire musée",
+ "nl": "museumschip",
+ "pt": "navio-museu",
+ "zh": "博物館船"
+ },
+ "tomb": {
+ "de": "grabkammer",
+ "en": "tomb",
+ "es": "tumba",
+ "fr": "tombeau",
+ "nl": "graftombe",
+ "pt": "tumba",
+ "zh": "石墓"
+ },
+ "tree_shrine": {
+ "de": "bildbaum",
+ "en": "tree shrine"
+ },
+ "wayside_cross": {
+ "de": "flurkreuz",
+ "en": "wayside cross",
+ "es": "cruz de término",
+ "fr": "croix de chemin",
+ "nl": "wegkruis",
+ "pt": "cruzeiro",
+ "zh": "十字路碑"
+ },
+ "wayside_shrine": {
+ "de": "wegkapelle",
+ "en": "wayside shrine",
+ "es": "peto de ánimas",
+ "fr": "bildstock",
+ "nl": "wegkant-schrijn",
+ "pt": "alminhas"
+ },
+ "wreck": {
+ "de": "wrack",
+ "en": "shipwreck",
+ "es": "pecio",
+ "fr": "épave",
+ "nl": "scheepswrak",
+ "pt": "destroço marítimo",
+ "zh": "船舶残骸"
+ }
+ },
+ "industrial": {
+ "aluminium_smelting": {
+ "en": "aluminium smelter",
+ "fr": "aluminerie",
+ "nl": "aluminiumsmelter"
+ },
+ "bakery": {
+ "de": "bäckerei",
+ "en": "bakery",
+ "es": "panadería",
+ "fr": "boulangerie",
+ "nl": "bakkerij",
+ "pt": "padaria",
+ "zh": "西餅店",
+ "zh-cn": "西饼店"
+ },
+ "brickyard": {
+ "de": "ziegelei",
+ "en": "brickyard",
+ "es": "tejar",
+ "fr": "briqueterie",
+ "nl": "steenfabriek",
+ "pt": "fábrica de tijolos"
+ },
+ "depot": {
+ "de": "depot",
+ "en": "bus depot",
+ "es": "cocheras",
+ "fr": "dépôt d'autobus",
+ "nl": "remise",
+ "pt": "garagem de autocarros",
+ "pt-br": "garagem de ônibus"
+ },
+ "distributor": {
+ "en": "distributor",
+ "fr": "distributeur"
+ },
+ "factory": {
+ "de": "fabrik",
+ "en": "factory",
+ "es": "fábrica",
+ "fr": "usine",
+ "nl": "fabriek",
+ "pt": "fábrica",
+ "zh": "工廠"
+ },
+ "food_industry": {
+ "de": "lebensmittelindustrie",
+ "en": "food industry",
+ "es": "industria alimentaria",
+ "fr": "secteur agroalimentaire",
+ "nl": "levensmiddelenindustrie",
+ "pt": "indústria alimentícia",
+ "zh": "食品产业",
+ "zh-hk": "食品產業",
+ "zh-tw": "食品產業"
+ },
+ "furniture": {
+ "en": "furniture factory",
+ "fr": "usine de meuble",
+ "nl": "meubelfabriek",
+ "pt": "fábrica de móveis"
+ },
+ "grinding_mill": {
+ "de": "mühle",
+ "en": "mill",
+ "es": "molino",
+ "fr": "moulin",
+ "nl": "molen",
+ "pt": "moinho",
+ "zh": "研磨"
+ },
+ "heating_station": {
+ "de": "fernwärmewerk",
+ "en": "district heating station",
+ "es": "central de calefacción urbana"
+ },
+ "ice_factory": {
+ "en": "ice factory",
+ "nl": "ijsfabriek",
+ "pt": "fábrica de gelo"
+ },
+ "machine_shop": {
+ "de": "fertigungshalle",
+ "en": "machine shop",
+ "fr": "atelier d'usinage",
+ "zh": "機械工場"
+ },
+ "mine": {
+ "de": "bergwerk",
+ "en": "mine",
+ "es": "mina",
+ "nl": "mijn",
+ "pt": "mina",
+ "zh": "矿区"
+ },
+ "oil": {
+ "de": "ölindustrie",
+ "en": "petroleum industry",
+ "es": "industria petrolera",
+ "fr": "industrie pétrolière",
+ "nl": "olie-industrie",
+ "pt": "indústria do petróleo",
+ "zh": "石油产业",
+ "zh-cn": "石油工业"
+ },
+ "oil_mill": {
+ "de": "ölmühle",
+ "en": "oil mill",
+ "es": "almazara",
+ "fr": "moulin à huile",
+ "nl": "oliemolen",
+ "pt": "lagar de azeite"
+ },
+ "rice_mill": {
+ "en": "rice mill"
+ },
+ "salt_pond": {
+ "de": "meerwassersaline",
+ "en": "salt evaporation pond",
+ "es": "salina",
+ "fr": "marais salant",
+ "nl": "zoutpan",
+ "pt": "salina",
+ "zh": "鹽田",
+ "zh-cn": "盐田"
+ },
+ "sawmill": {
+ "de": "sägewerk",
+ "en": "sawmill",
+ "es": "aserradero",
+ "fr": "scierie",
+ "nl": "houtzagerij",
+ "pt": "serração",
+ "pt-br": "serraria",
+ "zh": "鋸木廠"
+ },
+ "scrap_yard": {
+ "de": "autoverwertungsbetrieb",
+ "en": "wrecking yard",
+ "es": "desguace",
+ "fr": "casse",
+ "nl": "autosloop",
+ "zh": "废车场"
+ },
+ "shipyard": {
+ "de": "werft",
+ "en": "shipyard",
+ "es": "astillero naval",
+ "fr": "chantier naval",
+ "nl": "scheepswerf",
+ "pt": "estaleiro",
+ "zh": "造船厂"
+ },
+ "slaughterhouse": {
+ "de": "schlachthof",
+ "en": "slaughterhouse",
+ "es": "matadero",
+ "fr": "abattoir",
+ "nl": "slachthuis",
+ "pt": "matadouro",
+ "zh": "屠房",
+ "zh-cn": "慕尼黑屠宰场"
+ },
+ "steelmaking": {
+ "en": "steelmaking factory",
+ "pt": "fábrica de aço"
+ },
+ "warehouse": {
+ "de": "lagerhaus",
+ "en": "warehouse",
+ "es": "almacén",
+ "fr": "entrepôt",
+ "nl": "magazijn",
+ "pt": "armazém",
+ "zh": "倉庫",
+ "zh-cn": "仓库"
+ }
+ },
+ "information": {
+ "audioguide": {
+ "de": "audioguide",
+ "en": "audio tour",
+ "es": "audioguía",
+ "fr": "audioguide",
+ "nl": "audiotour",
+ "pt": "áudio tour"
+ },
+ "board": {
+ "de": "infotafel",
+ "en": "information board",
+ "es": "tablón informativo",
+ "pt": "painel de informações"
+ },
+ "guidepost": {
+ "de": "wegweiser",
+ "en": "signpost",
+ "es": "señalizar",
+ "fr": "panneau de signalisation directionnelle",
+ "nl": "wegwijzer",
+ "pt": "poste de sinalização"
+ },
+ "map": {
+ "en": "tourist map",
+ "pt": "mapa turístico"
+ },
+ "tactile_map": {
+ "de": "blindenkarte",
+ "en": "tactile map",
+ "pt": "mapa táctil"
+ },
+ "tactile_model": {
+ "de": "tastmodell",
+ "en": "tactile model"
+ },
+ "visitor_centre": {
+ "de": "besucherzentrum",
+ "en": "visitor centre",
+ "es": "centro de visitantes",
+ "fr": "centre d'accueil des visiteurs",
+ "nl": "toerismebureau",
+ "zh": "遊客中心"
+ }
+ },
+ "internet_access": {
+ "terminal": {
+ "de": "computerterminal",
+ "en": "computer terminal",
+ "es": "terminal",
+ "fr": "terminal informatique",
+ "nl": "computerterminal",
+ "pt": "terminal",
+ "zh": "終端",
+ "zh-cn": "终端"
+ },
+ "wired": {
+ "en": "cable internet access",
+ "nl": "kabelinternet",
+ "pt": "rede por cabo"
+ }
+ },
+ "irrigation": {
+ "pivot": {
+ "de": "kreisbewässerung",
+ "en": "center pivot irrigation",
+ "es": "dispositivos móviles de riego por aspersión",
+ "fr": "irrigation à pivot central",
+ "nl": "cirkelirrigatie",
+ "pt": "pivô central de irrigação",
+ "zh": "中枢灌溉系统"
+ }
+ },
+ "isced": {
+ "": {
+ "de": "grundschule",
+ "en": "primary school",
+ "en-ca": "elementary school",
+ "es": "escuela primaria",
+ "fr": "école primaire",
+ "nl": "basisschool",
+ "pt": "escola primária",
+ "zh": "小学",
+ "zh-hk": "小學",
+ "zh-tw": "小學"
+ }
+ },
+ "iucn_level": {
+ "I": {
+ "de": "iucn-kategorie iii: naturmonument oder naturerscheinung",
+ "en": "iucn category iii: natural monument or feature",
+ "fr": "catégorie iii : monument ou élément naturel",
+ "nl": "iucn categorie iii: natuurlijk element of monument"
+ },
+ "II": {
+ "de": "iucn-kategorie ii: nationalpark",
+ "en": "iucn category ii: national park",
+ "es": "ucn categoría ii:parque nacional",
+ "fr": "catégorie ii : parc national",
+ "nl": "iucn categorie ii: nationaal park",
+ "zh": "iucn分类ii:国家公园",
+ "zh-hk": "iucn分類ii:國家公園"
+ },
+ "III": {
+ "de": "iucn-kategorie iii: naturmonument oder naturerscheinung",
+ "en": "iucn category iii: natural monument or feature",
+ "fr": "catégorie iii : monument ou élément naturel",
+ "nl": "iucn categorie iii: natuurlijk element of monument"
+ }
+ },
+ "junction": {
+ "ddi": {
+ "en": "diverging diamond interchange",
+ "nl": "divergerende diamantaansluiting",
+ "zh": "发散菱形路口",
+ "zh-cn": "分离式菱形立交"
+ },
+ "filter": {
+ "en": "uncontrolled intersection"
+ },
+ "jughandle": {
+ "en": "jughandle"
+ },
+ "roundabout": {
+ "de": "kreisverkehr",
+ "en": "roundabout",
+ "es": "rotonda",
+ "fr": "carrefour giratoire",
+ "nl": "rotonde",
+ "pt": "rotunda",
+ "pt-br": "rotatória",
+ "zh": "环岛",
+ "zh-hk": "迴旋處",
+ "zh-tw": "圓環"
+ },
+ "spui": {
+ "en": "single-point urban interchange",
+ "zh": "單點城市立交"
+ },
+ "yes": {
+ "de": "kreuzung",
+ "en": "road junction",
+ "es": "cruce",
+ "fr": "carrefour",
+ "nl": "kruising",
+ "pt": "cruzamento",
+ "zh": "交叉路口",
+ "zh-tw": "道路交叉"
+ }
+ },
+ "kerb": {
+ "flush": {
+ "de": "abgesenkter bordstein",
+ "en": "curb cut",
+ "fr": "bateau (trottoir)",
+ "zh": "路沿石切"
+ },
+ "lowered": {
+ "de": "abgesenkter bordstein",
+ "en": "curb cut",
+ "fr": "bateau (trottoir)",
+ "zh": "路沿石切"
+ }
+ },
+ "kiln": {
+ "lime": {
+ "de": "kalkofen",
+ "en": "lime kiln",
+ "en-ca": "kalkofen",
+ "es": "horno de cal",
+ "fr": "four à chaux",
+ "nl": "kalkoven",
+ "pt": "forno de cal",
+ "pt-br": "kalkofen",
+ "zh": "石灰窑"
+ }
+ },
+ "landform": {
+ "dune_system": {
+ "en": "dune system",
+ "nl": "duinensysteem",
+ "de": "düne",
+ "en-gb": "dune",
+ "es": "duna",
+ "fr": "dune",
+ "pt": "duna",
+ "zh": "沙丘"
+ },
+ "esker": {
+ "de": "os",
+ "en": "esker",
+ "zh": "蛇形丘"
+ },
+ "raised_beach": {
+ "en": "raised beach",
+ "es": "terraza costera",
+ "fr": "plage surélevée",
+ "zh": "海洋階地"
+ }
+ },
+ "landuse": {
+ "allotments": {
+ "de": "kleingarten",
+ "en": "allotment",
+ "es": "huerto familiar",
+ "fr": "jardins familiaux",
+ "nl": "volkstuin",
+ "pt": "schrebergärten",
+ "zh": "社区农圃"
+ },
+ "basin": {
+ "de": "becken",
+ "en": "basin",
+ "es": "cuenca (geomorfología)",
+ "nl": "bekken",
+ "zh": "盆地"
+ },
+ "brownfield": {
+ "de": "brachland",
+ "en": "brownfield land",
+ "fr": "friche industrielle",
+ "nl": "brownfield",
+ "pt": "brownfields",
+ "zh": "棕地"
+ },
+ "cemetery": {
+ "de": "friedhof",
+ "en": "cemetery",
+ "es": "cementerio",
+ "fr": "cimetière",
+ "nl": "begraafplaats",
+ "pt": "cemitério",
+ "zh": "墳場",
+ "zh-cn": "坟场"
+ },
+ "commercial": {
+ "en": "commercial district",
+ "fr": "quartier commerçant",
+ "nl": "winkelgebied",
+ "zh": "商圈",
+ "de": "gewerbegebiet",
+ "es": "parque empresarial",
+ "zh-cn": "商务园区"
+ },
+ "construction": {
+ "de": "baustelle",
+ "en": "construction site",
+ "es": "lugar de construcción",
+ "fr": "chantier de construction",
+ "nl": "constructieplaats"
+ },
+ "farmland": {
+ "de": "acker",
+ "en": "field",
+ "es": "campo",
+ "fr": "champ",
+ "nl": "akker",
+ "pt": "campo",
+ "zh": "旱田",
+ "en-gb": "agricultural land"
+ },
+ "farmyard": {
+ "de": "bauernhof",
+ "en": "farmyard"
+ },
+ "forest": {
+ "de": "wirtschaftswald",
+ "en": "commercial forest"
+ },
+ "grass": {
+ "de": "rasen",
+ "en": "lawn",
+ "es": "césped",
+ "fr": "gazon",
+ "nl": "gazon",
+ "pt": "grama",
+ "zh": "草地"
+ },
+ "greenfield": {
+ "de": "brachland",
+ "en": "greenfield land",
+ "nl": "braakliggend terrein",
+ "zh": "绿地区块",
+ "zh-cn": "绿色地块"
+ },
+ "greenhouse_horticulture": {
+ "de": "gartenbau",
+ "en": "horticulture",
+ "es": "horticultura",
+ "nl": "horticultuur",
+ "pt": "horticultura",
+ "zh": "園藝"
+ },
+ "industrial": {
+ "de": "industriedistrikt",
+ "en": "industrial district",
+ "es": "distrito industrial",
+ "fr": "secteur industriel",
+ "nl": "industriestad",
+ "pt": "distrito industrial",
+ "zh": "工業區",
+ "en-ca": "industrial park",
+ "en-gb": "industrial estate",
+ "pt-br": "parque industrial",
+ "zh-cn": "工业园区",
+ "zh-hk": "工業園區",
+ "zh-tw": "工業園區"
+ },
+ "landfill": {
+ "de": "deponie",
+ "en": "landfill",
+ "es": "vertedero",
+ "fr": "décharge",
+ "nl": "vuilstortplaats",
+ "pt": "aterro sanitário",
+ "zh": "堆填",
+ "zh-hk": "堆填區",
+ "zh-tw": "垃圾掩埋場"
+ },
+ "meadow": {
+ "de": "wiese",
+ "en": "meadow",
+ "es": "prado",
+ "fr": "prairie",
+ "nl": "made",
+ "pt": "prado",
+ "zh": "草甸"
+ },
+ "orchard": {
+ "de": "streuobstwiese",
+ "en": "orchard",
+ "es": "huerto frutal",
+ "fr": "verger",
+ "nl": "boomgaard",
+ "pt": "pomar",
+ "zh": "果園"
+ },
+ "plant_nursery": {
+ "de": "gärtnerei",
+ "en": "plant nursery",
+ "es": "vivero",
+ "fr": "pépinière",
+ "nl": "kwekerij",
+ "pt": "viveiro",
+ "zh": "苗圃"
+ },
+ "quarry": {
+ "de": "tagebau",
+ "en": "quarry",
+ "es": "cantera",
+ "fr": "carrière",
+ "nl": "groeve",
+ "pt": "pedreira",
+ "zh": "沙石场",
+ "zh-hk": "沙石場",
+ "zh-tw": "沙石場"
+ },
+ "railway": {
+ "de": "bahnanlage",
+ "en": "railway facility",
+ "es": "instalación ferroviaria",
+ "fr": "installation ferroviaire",
+ "nl": "spoorwegfaciliteit",
+ "pt": "instalação ferroviária",
+ "zh": "鐵路設施",
+ "de-ch": "güterbahnhof",
+ "en-ca": "goods station",
+ "en-gb": "goods station",
+ "zh-cn": "货运车站"
+ },
+ "recreation_ground": {
+ "de": "naherholungsgebiet",
+ "en": "recreation area",
+ "es": "base de loisirs",
+ "fr": "zone de loisirs",
+ "nl": "recreatiegebied"
+ },
+ "religious": {
+ "de": "baumkult",
+ "en": "sacred grove",
+ "es": "bosque sagrado",
+ "fr": "bois sacré",
+ "nl": "boomheiligdom",
+ "zh": "神聖樹林",
+ "zh-cn": "神圣橡树"
+ },
+ "reservoir": {
+ "de": "stausee",
+ "en": "reservoir",
+ "es": "embalse",
+ "fr": "lac de barrage",
+ "nl": "stuwmeer",
+ "pt": "reservatório",
+ "zh": "水庫",
+ "zh-cn": "水库"
+ },
+ "residential": {
+ "de": "großwohnsiedlung",
+ "en": "housing estate",
+ "es": "unidad habitacional",
+ "fr": "grand ensemble",
+ "nl": "wooncomplex",
+ "zh": "屋苑",
+ "pt": "área residencial",
+ "zh-cn": "住宅区",
+ "zh-hk": "住宅區",
+ "zh-tw": "住宅區"
+ },
+ "retail": {
+ "de": "einkaufsviertel",
+ "en": "shopping district",
+ "fr": "quartier commerçant",
+ "zh": "商业区",
+ "zh-tw": "商業區"
+ },
+ "salt_pond": {
+ "de": "meerwassersaline",
+ "en": "salt evaporation pond",
+ "es": "salina",
+ "fr": "marais salant",
+ "nl": "zoutpan",
+ "pt": "salina",
+ "zh": "鹽田",
+ "zh-cn": "盐田"
+ },
+ "village_green": {
+ "de": "anger",
+ "en": "village green",
+ "nl": "brink",
+ "zh": "村鎮公用綠地",
+ "zh-cn": "村庄广场"
+ },
+ "vineyard": {
+ "de": "weinberg",
+ "en": "vineyard",
+ "es": "viñedo",
+ "fr": "vignoble",
+ "nl": "wijngaard",
+ "pt": "vinha",
+ "zh": "葡萄园"
+ }
+ },
+ "leaf_cycle": {
+ "deciduous": {
+ "de": "laubbäume",
+ "en": "deciduous plant",
+ "es": "caducifolio",
+ "fr": "caduc",
+ "nl": "bladverliezend",
+ "pt": "caducifólia",
+ "zh": "落葉植物"
+ },
+ "evergreen": {
+ "de": "immergrüne pflanze",
+ "en": "evergreen plant",
+ "es": "perennifolio",
+ "fr": "sempervirent",
+ "nl": "groenblijvend",
+ "pt": "folha persistente",
+ "zh": "常绿植物",
+ "zh-hk": "常綠植物",
+ "zh-tw": "常綠植物"
+ },
+ "semi_deciduous": {
+ "en": "semi-deciduous",
+ "nl": "semi-groenblijvend",
+ "zh": "半常綠林"
+ }
+ },
+ "leaf_type": {
+ "broadleaved": {
+ "de": "laubwald",
+ "en": "deciduous forest",
+ "fr": "forêt de feuillus",
+ "nl": "loofbos"
+ },
+ "needleleaved": {
+ "de": "nadelwald",
+ "en": "coniferous forest",
+ "es": "bosque de coníferas",
+ "nl": "naaldbos"
+ }
+ },
+ "leisure": {
+ "adult_gaming_centre": {
+ "de": "spielautomatenhalle",
+ "en": "adult gaming centre"
+ },
+ "amusement_arcade": {
+ "de": "spielhalle",
+ "en": "amusement arcade",
+ "es": "salón recreativo",
+ "fr": "salle d'arcade",
+ "nl": "arcadehal",
+ "pt": "salão de jogos",
+ "pt-br": "fliperama",
+ "zh": "電子遊樂場"
+ },
+ "bandstand": {
+ "de": "musikpavillon",
+ "en": "bandstand",
+ "es": "quiosco de música",
+ "fr": "kiosque à musique",
+ "nl": "muziektent",
+ "pt": "coreto",
+ "zh": "演奏台"
+ },
+ "beach_resort": {
+ "de": "seebad",
+ "en": "seaside resort",
+ "fr": "station balnéaire",
+ "nl": "badplaats",
+ "pt": "estância balnear",
+ "zh": "海水浴場"
+ },
+ "bird_hide": {
+ "de": "vogelbeobachtungsturm",
+ "en": "bird hide",
+ "es": "observatorio de aves",
+ "fr": "observatoire ornithologique",
+ "nl": "vogelkijkwand"
+ },
+ "bowling_alley": {
+ "de": "bowlingbahn",
+ "en": "bowling alley",
+ "es": "bolera",
+ "fr": "salle de bowling",
+ "nl": "bowlingbaan",
+ "zh": "保龄球馆"
+ },
+ "common": {
+ "de": "allmende",
+ "en": "common land",
+ "es": "bien comunal",
+ "fr": "biens communaux",
+ "nl": "gemene grond",
+ "pt": "baldio",
+ "zh": "公地"
+ },
+ "dance": {
+ "de": "tanzsaal",
+ "en": "dance hall",
+ "fr": "salle de danse",
+ "zh": "舞廳",
+ "es": "escuela de danza",
+ "nl": "dansschool",
+ "pt": "escola de dança"
+ },
+ "disc_golf_course": {
+ "de": "discgolfanlage",
+ "en": "disc golf course",
+ "fr": "parcours de disque-golf"
+ },
+ "dog_park": {
+ "de": "hundezone",
+ "en": "dog park",
+ "es": "parque canino",
+ "fr": "parc canin",
+ "nl": "hondenpark",
+ "pt": "parque para cães",
+ "zh": "草地跑"
+ },
+ "escape_game": {
+ "de": "escape-room",
+ "en": "escape room",
+ "fr": "jeu d'évasion grandeur nature",
+ "zh": "密室"
+ },
+ "firepit": {
+ "de": "feuerstelle",
+ "en": "fire pit",
+ "fr": "foyer"
+ },
+ "fishing": {
+ "de": "angelplatz",
+ "en": "fishing spot",
+ "fr": "lieu de pêche",
+ "pt": "local de pesca"
+ },
+ "fitness_centre": {
+ "de": "fitnessstudio",
+ "en": "health club",
+ "fr": "centre de remise en forme",
+ "nl": "sportschool",
+ "pt": "academia desportiva",
+ "zh": "健身房"
+ },
+ "fitness_station": {
+ "de": "bewegungsparcours",
+ "en": "outdoor gym",
+ "fr": "équipement de fitness en extérieur",
+ "nl": "beweegtuin",
+ "pt": "academia ao ar livre"
+ },
+ "garden": {
+ "de": "garten",
+ "en": "garden",
+ "es": "jardín",
+ "fr": "jardin",
+ "nl": "tuin",
+ "pt": "jardim",
+ "zh": "庭園"
+ },
+ "golf_course": {
+ "de": "golfplatz",
+ "en": "golf course",
+ "es": "campo de golf",
+ "fr": "terrain de golf",
+ "nl": "golfbaan",
+ "pt": "campo de golfe",
+ "zh": "高爾夫球場"
+ },
+ "hackerspace": {
+ "en": "hackerspace",
+ "es": "hacklab",
+ "zh": "黑客空间"
+ },
+ "horse_riding": {
+ "de": "pferdesportanlage",
+ "en": "equestrian facility",
+ "es": "facilidades ecuestres",
+ "fr": "centre équestre",
+ "nl": "manege"
+ },
+ "ice_rink": {
+ "de": "eisbahn",
+ "en": "ice rink",
+ "es": "pista de hielo",
+ "fr": "patinoire",
+ "nl": "ijsbaan",
+ "pt": "ringue de patinagem",
+ "zh": "滑冰場"
+ },
+ "miniature_golf": {
+ "de": "minigolfplatz",
+ "en": "miniature golf course",
+ "nl": "minigolf"
+ },
+ "nature_reserve": {
+ "de": "naturschutzgebiet",
+ "en": "nature reserve",
+ "es": "reserva natural",
+ "fr": "réserve naturelle",
+ "nl": "natuurreservaat",
+ "pt": "reserva natural",
+ "pt-br": "reserva florestal",
+ "zh": "自然保护区",
+ "zh-hk": "自然保護區",
+ "zh-tw": "自然保護區"
+ },
+ "park": {
+ "en": "park",
+ "es": "parque",
+ "fr": "parc",
+ "pt": "parque",
+ "zh": "公園",
+ "zh-cn": "公园"
+ },
+ "picnic_table": {
+ "de": "picknicktisch",
+ "en": "picnic table",
+ "es": "merendero",
+ "fr": "table de pique-nique",
+ "nl": "picknicktafel",
+ "pt": "parque de merendas"
+ },
+ "pitch": {
+ "de": "spielfeld",
+ "en": "pitch",
+ "es": "pista de juego",
+ "fr": "terrain",
+ "nl": "sportveld",
+ "pt": "campo desportivo",
+ "pt-br": "quadra esportiva",
+ "zh": "網球場",
+ "de-ch": "fussballfeld",
+ "en-gb": "association football pitch"
+ },
+ "playground": {
+ "de": "spielplatz",
+ "en": "playground",
+ "es": "espacio de recreación",
+ "fr": "terrain de jeux",
+ "nl": "speelplaats",
+ "pt": "parque infantil",
+ "zh": "操場"
+ },
+ "recreation_ground": {
+ "de": "naherholungsgebiet",
+ "en": "recreation area",
+ "es": "base de loisirs",
+ "fr": "zone de loisirs",
+ "nl": "recreatiegebied"
+ },
+ "red_light_district": {
+ "de": "rotlichtviertel",
+ "en": "red-light district",
+ "es": "zona roja",
+ "fr": "quartier chaud",
+ "nl": "prostitutiegebied",
+ "pt": "zona de meretrício",
+ "zh": "紅燈區",
+ "zh-cn": "红灯区"
+ },
+ "resort": {
+ "en": "resort",
+ "en-gb": "holiday centre",
+ "es": "complejo turístico",
+ "fr": "station touristique",
+ "zh": "度假村"
+ },
+ "sauna": {
+ "en": "sauna",
+ "zh": "桑拿"
+ },
+ "schoolyard": {
+ "de": "schulhof",
+ "en": "schoolyard",
+ "es": "patio de recreo",
+ "fr": "cour de récréation",
+ "nl": "schoolplein",
+ "zh": "操場",
+ "zh-cn": "操场"
+ },
+ "shooting_ground": {
+ "de": "schießstand",
+ "en": "shooting range",
+ "es": "polígono de tiro",
+ "fr": "stand de tir",
+ "nl": "schietbaan",
+ "pt": "estande de tiro",
+ "zh": "射擊靶場"
+ },
+ "slipway": {
+ "de": "slipanlage",
+ "en": "slipway",
+ "es": "grada",
+ "fr": "cale",
+ "nl": "trailerhelling",
+ "zh": "滑道"
+ },
+ "sports_hall": {
+ "de": "turnhalle",
+ "en": "gymnasium",
+ "en-ca": "gym",
+ "en-gb": "gym",
+ "es": "gimnasio",
+ "fr": "gymnase",
+ "nl": "sportzaal",
+ "pt": "ginásio",
+ "zh": "体育馆"
+ },
+ "stadium": {
+ "de": "stadion",
+ "en": "stadium",
+ "es": "estadio",
+ "fr": "stade",
+ "nl": "stadion",
+ "pt": "estádio",
+ "zh": "體育場"
+ },
+ "summer_camp": {
+ "de": "ferienlager",
+ "en": "summer camp",
+ "es": "campamento educativo",
+ "fr": "centre de vacances ou de loisirs",
+ "nl": "zomerkamp",
+ "zh": "夏令營"
+ },
+ "swimming_area": {
+ "de": "schwimmbereich",
+ "en": "swimming area"
+ },
+ "swimming_pool": {
+ "de": "schwimmbecken",
+ "en": "swimming pool",
+ "es": "piscina",
+ "fr": "piscine",
+ "nl": "zwembad",
+ "pt": "piscina",
+ "zh": "游泳池"
+ },
+ "tanning_salon": {
+ "de": "solarium",
+ "en": "indoor tanning",
+ "es": "solárium",
+ "fr": "solarium",
+ "nl": "zonnebank",
+ "pt": "câmara de bronzeamento",
+ "zh": "美黑沙龙",
+ "zh-hk": "日晒床"
+ },
+ "track": {
+ "de": "leichtathletikanlage",
+ "en": "athletics track",
+ "es": "pista de atletismo",
+ "fr": "piste d'athlétisme",
+ "nl": "atletiekbaan",
+ "pt": "pista de atletismo",
+ "zh": "跑道 (体育)"
+ },
+ "turkish_bath": {
+ "de": "hammām",
+ "en": "hammam",
+ "nl": "hamam",
+ "pt": "banho turco",
+ "zh": "土耳其浴"
+ },
+ "water_park": {
+ "de": "freizeitbad",
+ "en": "water park",
+ "es": "parque acuático",
+ "fr": "parc aquatique",
+ "nl": "waterpark",
+ "pt": "parque aquático",
+ "zh": "水上遊樂園"
+ },
+ "wildlife_hide": {
+ "de": "wildtierbeobachtungsturm",
+ "en": "wildlife hide"
+ },
+ "yes": {
+ "de": "freizeiteinrichtung",
+ "en": "leisure facility"
+ }
+ },
+ "level": {
+ "0": {
+ "de": "erdgeschoss",
+ "de-at": "erdgeschoß",
+ "de-ch": "parterre",
+ "en": "ground floor",
+ "es": "planta baja",
+ "fr": "rez-de-chaussée",
+ "pt": "térreo"
+ }
+ },
+ "lgbtq": {
+ "primary": {
+ "en": "lgbt place",
+ "fr": "lieu lgbtqi+",
+ "nl": "lgbti-locatie"
+ }
+ },
+ "lifeguard": {
+ "tower": {
+ "de": "rettungsschwimmerturm",
+ "en": "lifeguard tower"
+ }
+ },
+ "line": {
+ "busbar": {
+ "de": "sammelschiene",
+ "en": "busbar",
+ "es": "barra colectora",
+ "fr": "jeu de barres",
+ "zh": "母线"
+ }
+ },
+ "listed_status": {
+ "Category_A": {
+ "de": "denkmalgeschützte gebäude der kategorie a",
+ "en": "category a listed building",
+ "es": "edificio categoría a",
+ "fr": "monument classé de catégorie a",
+ "nl": "categorie a-monument in schotland"
+ },
+ "Category_B": {
+ "de": "denkmalgeschützte gebäude der kategorie b",
+ "en": "category b listed building",
+ "es": "edificio categoría b",
+ "fr": "monument classé de catégorie b",
+ "nl": "categorie b schots erfgoed"
+ },
+ "Category_C": {
+ "en": "category c listed building",
+ "es": "edificio categoría c",
+ "fr": "monument classé de catégorie c",
+ "nl": "categorie c schots erfgoed"
+ },
+ "Grade_I": {
+ "de": "grade-i-bauwerk",
+ "en": "grade i listed building",
+ "es": "edificio listado como grado i",
+ "fr": "monument classé de grade i",
+ "nl": "grade i-bouwwerk",
+ "pt": "edifício listado como grade i",
+ "zh": "一級保護建築"
+ },
+ "Grade_II": {
+ "de": "grade-ii-bauwerk",
+ "en": "grade ii listed building",
+ "es": "edificio protegido de grado ii",
+ "fr": "monument classé de grade ii",
+ "nl": "grade ii-bouwwerk",
+ "pt": "edifício listado como grade ii",
+ "zh": "第二级登录建筑"
+ },
+ "Grade_II*": {
+ "de": "grade-ii*-bauwerk",
+ "en": "grade ii* listed building",
+ "es": "monumento clasificado grado ii*",
+ "fr": "monument classé de grade ii*",
+ "nl": "grade ii*-bouwwerk",
+ "pt": "edifício listado como grade ii"
+ }
+ },
+ "locality": {
+ "townland": {
+ "en": "townland",
+ "zh": "鎮區 (愛爾蘭)"
+ }
+ },
+ "location": {
+ "indoor": {
+ "en": "indoors",
+ "fr": "à l'intérieur",
+ "nl": "binnen"
+ },
+ "outdoor": {
+ "en": "outdoors",
+ "fr": "à l'extérieur",
+ "nl": "buiten"
+ },
+ "underground": {
+ "de": "unterirdische struktur",
+ "en": "subterranea",
+ "es": "estructura subterránea",
+ "fr": "souterrain",
+ "nl": "ondergrondse constructie",
+ "pt": "estrutura subterrânea"
+ }
+ },
+ "man_made": {
+ "adit": {
+ "de": "stollen",
+ "en": "adit",
+ "fr": "galerie de mine",
+ "nl": "horizontale schacht"
+ },
+ "beacon": {
+ "de": "betonnung",
+ "de-ch": "schifffahrtszeichen",
+ "en": "beacon",
+ "en-ca": "sea mark",
+ "es": "marca de navegación",
+ "fr": "balisage",
+ "nl": "baken",
+ "pt": "balizagem marítima",
+ "zh": "烽火臺"
+ },
+ "beehive": {
+ "de": "bienenstock",
+ "en": "beehive",
+ "es": "colmena",
+ "fr": "ruche",
+ "nl": "bijenkorf",
+ "pt": "colmeia",
+ "zh": "蜂巢"
+ },
+ "breakwater": {
+ "de": "wellenbrecher",
+ "en": "breakwater",
+ "es": "rompeolas",
+ "fr": "brise-lames",
+ "nl": "golfbreker",
+ "pt": "quebra-mar",
+ "zh": "防波堤"
+ },
+ "bridge": {
+ "de": "brücke",
+ "en": "bridge",
+ "es": "puente",
+ "fr": "pont",
+ "nl": "brug",
+ "pt": "ponte",
+ "zh": "桥",
+ "zh-hk": "橋",
+ "zh-tw": "橋"
+ },
+ "cairn": {
+ "de": "steinmännchen",
+ "en": "cairn",
+ "nl": "steenmannetje",
+ "pt": "moledros",
+ "zh": "石冢"
+ },
+ "campanile": {
+ "en": "campanile"
+ },
+ "chimney": {
+ "de": "schornstein",
+ "en": "chimney",
+ "es": "chimenea",
+ "fr": "cheminée",
+ "nl": "schoorsteen",
+ "pt": "chaminé",
+ "zh": "烟囱",
+ "zh-hk": "煙囪",
+ "zh-tw": "煙囪"
+ },
+ "clearcut": {
+ "de": "kahlschlag",
+ "en": "clearcutting",
+ "es": "tala rasa",
+ "fr": "coupe rase",
+ "nl": "kaalslag",
+ "zh": "皆伐",
+ "zh-cn": "清场型砍伐"
+ },
+ "cooling_tower": {
+ "de": "kühlturm",
+ "en": "cooling tower",
+ "es": "torre de refrigeración",
+ "fr": "tour aéroréfrigérante",
+ "nl": "koeltoren",
+ "pt": "torre de resfriamento",
+ "zh": "冷却塔",
+ "zh-hk": "冷卻塔",
+ "zh-tw": "冷卻塔"
+ },
+ "courtyard": {
+ "de": "hof",
+ "en": "courtyard",
+ "es": "cour",
+ "fr": "cour d'immeuble",
+ "nl": "binnenplaats",
+ "pt": "pátio",
+ "zh": "中庭"
+ },
+ "crane": {
+ "de": "kran",
+ "en": "crane",
+ "es": "grúa",
+ "fr": "grue",
+ "nl": "kraan",
+ "pt": "guindaste",
+ "zh": "起重机",
+ "zh-hk": "起重機",
+ "zh-tw": "起重機"
+ },
+ "cross": {
+ "de": "monumentalkreuz",
+ "en": "monumental cross",
+ "es": "cruz monumental",
+ "fr": "croix monumentale",
+ "nl": "monumentaal kruis",
+ "pt-br": "cruz monumental",
+ "pt": "cruz cristã",
+ "zh": "十字架"
+ },
+ "cutline": {
+ "de": "schneise",
+ "en": "cutline"
+ },
+ "dyke": {
+ "de": "deich",
+ "en": "levee",
+ "es": "dique",
+ "fr": "digue",
+ "nl": "dijk",
+ "pt": "dique",
+ "zh": "堤"
+ },
+ "flagpole": {
+ "de": "fahnenmast",
+ "en": "flagpole",
+ "es": "asta de bandera",
+ "fr": "mât de drapeau",
+ "nl": "vlaggenmast",
+ "pt": "porta-bandeira"
+ },
+ "gasometer": {
+ "de": "gasbehälter",
+ "en": "gas holder",
+ "es": "gasómetro",
+ "fr": "gazomètre",
+ "nl": "gashouder",
+ "pt": "gasómetro",
+ "pt-br": "gasômetro",
+ "zh": "煤氣鼓"
+ },
+ "geoglyph": {
+ "en": "geoglyph",
+ "es": "geoglifo",
+ "fr": "géoglyphe",
+ "nl": "geoglief",
+ "pt": "geoglifo",
+ "zh": "地畫"
+ },
+ "goods_conveyor": {
+ "de": "förderanlage",
+ "en": "conveyor system",
+ "es": "faja transportadora",
+ "fr": "système de convoyage",
+ "zh": "傳送系統"
+ },
+ "groyne": {
+ "de": "buhne - küstenschutz",
+ "en": "groyne",
+ "fr": "épi",
+ "nl": "krib",
+ "zh": "防波堤"
+ },
+ "guard_stone": {
+ "de": "radabweiser",
+ "en": "guard stone",
+ "es": "guardacantón",
+ "fr": "chasse-roue",
+ "nl": "schamppaal",
+ "pt": "frade de pedra"
+ },
+ "insect_hotel": {
+ "de": "insektenhotel",
+ "en": "insect hotel",
+ "es": "caja de insectos",
+ "fr": "hôtel à insectes",
+ "nl": "insectenhotel",
+ "pt": "hotel de insectos"
+ },
+ "kiln": {
+ "de": "brennofen",
+ "en": "kiln",
+ "fr": "touraille",
+ "nl": "veldoven",
+ "pt": "forno",
+ "zh": "窯",
+ "zh-cn": "窑"
+ },
+ "launch_pad": {
+ "de": "startrampe",
+ "en": "launch pad",
+ "es": "plataforma de despegue",
+ "fr": "aire de lancement",
+ "nl": "lanceerplatform",
+ "pt": "plataforma de lançamento",
+ "zh": "发射台"
+ },
+ "lighthouse": {
+ "de": "leuchtturm",
+ "en": "lighthouse",
+ "es": "faro",
+ "fr": "phare",
+ "nl": "vuurtoren",
+ "pt": "farol",
+ "zh": "灯塔",
+ "zh-hk": "燈塔",
+ "zh-tw": "燈塔"
+ },
+ "livestock_dip": {
+ "en": "plunge dip",
+ "pt": "banheiro de gado"
+ },
+ "mast": {
+ "de": "sendemast",
+ "en": "transmitter mast",
+ "es": "torres de telecomunicaciones",
+ "fr": "émetteur de télévision",
+ "nl": "zendmast",
+ "pt": "torres e antenas de rádio",
+ "zh": "廣播塔",
+ "zh-cn": "天线塔"
+ },
+ "mineshaft": {
+ "de": "schacht",
+ "en": "shaft",
+ "es": "pozo",
+ "fr": "puits de mine",
+ "nl": "gesloten mijn",
+ "zh": "豎井"
+ },
+ "monitoring_station": {
+ "de": "messstation",
+ "en": "monitoring station",
+ "es": "estación de monitoreo o control",
+ "fr": "station d'observation"
+ },
+ "nesting_site": {
+ "de": "nisthilfe",
+ "en": "nesting aids"
+ },
+ "observatory": {
+ "de": "observatorium",
+ "en": "observatory",
+ "es": "observatorio",
+ "fr": "observatoire",
+ "nl": "observatorium",
+ "pt": "observatório",
+ "zh": "观测台",
+ "zh-hk": "觀測台",
+ "zh-tw": "觀測台"
+ },
+ "offshore_platform": {
+ "de": "bohrplattform",
+ "en": "oil platform",
+ "es": "plataforma petrolífera",
+ "fr": "plate-forme pétrolière",
+ "nl": "productieplatform",
+ "pt": "plataforma petrolífera",
+ "zh": "石油平台"
+ },
+ "petroleum_well": {
+ "de": "ölquelle",
+ "en": "oil well",
+ "es": "pozo petrolífero",
+ "fr": "puits de pétrole",
+ "nl": "oliebron",
+ "pt": "poço de petróleo",
+ "zh": "油井"
+ },
+ "pier": {
+ "de": "seebrücke",
+ "en": "pier",
+ "es": "embarcadero",
+ "fr": "estacade",
+ "pt": "ponte-cais ou pontão",
+ "pt-br": "píer",
+ "zh": "栈桥",
+ "zh-hk": "碼頭"
+ },
+ "pipeline": {
+ "de": "rohrleitung",
+ "en": "piping",
+ "es": "tubería (industria)",
+ "fr": "canalisation",
+ "nl": "leidingwerk",
+ "zh": "管路"
+ },
+ "quay": {
+ "de": "kai",
+ "en": "wharf",
+ "es": "embarcadero",
+ "fr": "quai",
+ "nl": "kade",
+ "pt": "ancoradouro",
+ "zh": "碼頭"
+ },
+ "satellite_dish": {
+ "de": "parabolantenne",
+ "en": "satellite dish",
+ "es": "antena parabólica",
+ "nl": "schotelantenne",
+ "zh": "衛星碟"
+ },
+ "silo": {
+ "en": "silo",
+ "zh": "筒仓"
+ },
+ "snow_fence": {
+ "de": "schneezaun",
+ "en": "snow fence",
+ "fr": "paravalanche",
+ "nl": "sneeuwhek",
+ "zh": "防雪栅"
+ },
+ "storage_tank": {
+ "de": "tank",
+ "en": "storage tank",
+ "es": "tanque de almacenamiento",
+ "fr": "réservoir",
+ "nl": "tank",
+ "pt": "tanque",
+ "zh": "储油罐"
+ },
+ "street_cabinet": {
+ "de": "straßenschrank",
+ "en": "street cabinet"
+ },
+ "surveillance": {
+ "de": "überwachung",
+ "en": "surveillance",
+ "es": "vigilancia",
+ "pt": "vigilância",
+ "zh": "監視"
+ },
+ "survey_point": {
+ "de": "höhenfestpunkt",
+ "en": "benchmark",
+ "fr": "repère de nivellement",
+ "nl": "geodetisch meetpunt",
+ "zh": "水准点",
+ "zh-hk": "水準點",
+ "es": "vértice geodésico",
+ "pt": "vértice geodésico"
+ },
+ "telescope": {
+ "de": "teleskop",
+ "en": "telescope",
+ "es": "telescopio",
+ "fr": "télescope",
+ "nl": "telescoop",
+ "pt": "telescópio",
+ "zh": "望远镜"
+ },
+ "torii": {
+ "en": "torii",
+ "zh": "鳥居",
+ "zh-cn": "鸟居"
+ },
+ "tower": {
+ "de": "fernsehturm",
+ "en": "tv tower",
+ "es": "torre de telecomunicaciones",
+ "fr": "tour de radiodiffusion",
+ "nl": "communicatietoren",
+ "pt": "torre de telecomunicações",
+ "zh": "电视塔",
+ "en-ca": "tower",
+ "en-gb": "tower",
+ "pt-br": "torre",
+ "zh-cn": "塔式建筑",
+ "zh-hk": "塔式建築",
+ "zh-tw": "塔式建築"
+ },
+ "wastewater_plant": {
+ "de": "kläranlage",
+ "en": "wastewater treatment plant",
+ "es": "planta de tratamiento de aguas residuales",
+ "fr": "station de traitement des eaux usées",
+ "nl": "rioolzuiveringsinstallatie",
+ "pt": "estação de tratamento de águas residuais"
+ },
+ "water_tap": {
+ "en": "standpipe",
+ "fr": "borne-fontaine"
+ },
+ "water_tower": {
+ "de": "wasserturm",
+ "en": "water tower",
+ "es": "torre de agua",
+ "fr": "château d'eau",
+ "nl": "watertoren",
+ "pt": "castelo d'água",
+ "pt-br": "caixa-d'água",
+ "zh": "水塔"
+ },
+ "water_well": {
+ "de": "brunnen",
+ "en": "well",
+ "es": "pozo",
+ "fr": "puits à eau",
+ "nl": "waterput",
+ "pt": "poço",
+ "zh": "井"
+ },
+ "water_works": {
+ "de": "wasserwerk",
+ "en": "waterworks",
+ "fr": "réseau d'eau",
+ "nl": "waterwerk",
+ "zh": "水厂"
+ },
+ "watermill": {
+ "de": "wassermühle",
+ "en": "watermill",
+ "es": "molino hidráulico",
+ "fr": "moulin à eau",
+ "nl": "watermolen",
+ "pt": "moinho de água",
+ "zh": "水力磨坊"
+ },
+ "wildlife_crossing": {
+ "de": "grünbrücke",
+ "en": "wildlife crossing",
+ "es": "ecoducto",
+ "fr": "écoduc",
+ "nl": "ecoduct",
+ "pt": "viaduto vegetado",
+ "zh": "野生动物通道"
+ },
+ "windmill": {
+ "de": "windmühle",
+ "en": "windmill",
+ "es": "molino de viento",
+ "fr": "moulin à vent",
+ "nl": "windmolen",
+ "pt": "moinho de vento",
+ "zh": "风车"
+ },
+ "windpump": {
+ "de": "windpumpe",
+ "en": "windpump",
+ "es": "bombas de agua eólicas",
+ "fr": "pompe à vent",
+ "nl": "windpomp",
+ "zh": "風泵"
+ },
+ "works": {
+ "de": "fabrik",
+ "en": "factory",
+ "es": "fábrica",
+ "fr": "usine",
+ "nl": "fabriek",
+ "pt": "fábrica",
+ "zh": "工廠"
+ }
+ },
+ "map_source": {
+ "OpenStreetMap": {
+ "en": "openstreetmap",
+ "zh": "開放街圖",
+ "zh-cn": "开放街道地图"
+ }
+ },
+ "map_type": {
+ "topo": {
+ "de": "topografische karte",
+ "en": "topographic map",
+ "es": "mapa topográfico",
+ "fr": "carte topographique",
+ "nl": "topografische kaart",
+ "pt": "carta topográfica",
+ "zh": "地形图",
+ "zh-hk": "地形圖",
+ "zh-tw": "地形圖"
+ },
+ "toposcope": {
+ "de": "panoramatafel",
+ "en": "toposcope",
+ "fr": "table d'orientation",
+ "nl": "oriëntatietafel",
+ "pt": "toposcópio"
+ }
+ },
+ "maritime": {
+ "yes": {
+ "de": "seegrenze",
+ "en": "maritime boundary",
+ "es": "frontera marítima",
+ "fr": "frontière maritime",
+ "nl": "zeegrens",
+ "pt": "fronteira marítima",
+ "zh": "海上邊界"
+ }
+ },
+ "marker": {
+ "plate": {
+ "de": "hinweisschilder zu straßeneinbauten",
+ "en": "utility location"
+ }
+ },
+ "massage": {
+ "acupressure": {
+ "de": "akupressur",
+ "en": "acupressure",
+ "es": "acupresión",
+ "fr": "do in",
+ "nl": "acupressuur",
+ "pt": "do-in",
+ "zh": "穴位按壓"
+ },
+ "chinese": {
+ "de": "tuina",
+ "en": "tui na",
+ "fr": "an mo / tui na",
+ "pt": "tuiná",
+ "zh": "推拿"
+ },
+ "chiropractic": {
+ "de": "chiropraktik",
+ "en": "chiropractic",
+ "es": "quiropráctica",
+ "fr": "chiropratique",
+ "nl": "chiropraxie",
+ "pt": "quiropraxia",
+ "zh": "脊骨神經醫學"
+ },
+ "shiatsu": {
+ "en": "shiatsu",
+ "zh": "指壓"
+ },
+ "thai": {
+ "de": "thai-massage",
+ "en": "thai massage",
+ "es": "masaje thai",
+ "fr": "massage thaï",
+ "nl": "thaise massage",
+ "pt": "massagem tailandesa",
+ "pt-br": "thai massagem",
+ "zh": "泰式按摩"
+ }
+ },
+ "megalith_type": {
+ "alignment": {
+ "de": "steinreihe",
+ "en": "stone row",
+ "es": "alineamiento de piedras",
+ "fr": "alignement mégalithique",
+ "nl": "steenrij",
+ "pt": "alinhamento megalítico"
+ },
+ "chamber": {
+ "en": "chamber tumulus"
+ },
+ "cist": {
+ "de": "steinkiste",
+ "en": "cist",
+ "es": "cista",
+ "fr": "ciste",
+ "nl": "steenkist",
+ "pt": "cista",
+ "zh": "箱型"
+ },
+ "dolmen": {
+ "en": "dolmen",
+ "nl": "hunebed",
+ "pt": "dólmen",
+ "zh": "支石墓"
+ },
+ "long_barrow": {
+ "de": "hünenbett",
+ "en": "long barrow",
+ "es": "túmulo alargado",
+ "fr": "tumulus allongé",
+ "nl": "langgraf",
+ "zh": "长坟"
+ },
+ "menhir": {
+ "en": "menhir",
+ "pt": "menir",
+ "zh": "立石"
+ },
+ "nuraghe": {
+ "en": "nuraghe",
+ "es": "nuraga",
+ "fr": "nouraghe",
+ "pt": "nurago",
+ "zh": "努拉吉"
+ },
+ "passage_grave": {
+ "de": "ganggrab",
+ "en": "passage grave",
+ "es": "tumba de corredor",
+ "fr": "tombe à couloir",
+ "nl": "ganggraf",
+ "zh": "石隧墓"
+ },
+ "ring_cairn": {
+ "en": "ring cairn",
+ "es": "anillo de mojón"
+ },
+ "round_barrow": {
+ "en": "round barrow"
+ },
+ "stone_circle": {
+ "de": "steinkreis",
+ "en": "stone circle",
+ "fr": "cercle de pierres",
+ "nl": "steencirkel",
+ "pt": "círculo de pedras",
+ "zh": "石圈"
+ },
+ "stone_ship": {
+ "de": "schiffssetzung",
+ "en": "stone ship",
+ "es": "barco de piedra",
+ "fr": "bateau de pierre",
+ "nl": "stenen schip",
+ "pt": "barco de pedra"
+ },
+ "tholos": {
+ "de": "tholos",
+ "en": "beehive tomb",
+ "es": "tholos",
+ "fr": "tholos",
+ "nl": "tholos",
+ "pt": "tholos",
+ "zh": "巨冢"
+ },
+ "well": {
+ "de": "brunnenheiligtum",
+ "en": "nuragic holy well"
+ }
+ },
+ "memorial": {
+ "": {
+ "de": "stolperstein",
+ "en": "stumbling stone",
+ "es": "adoquín conmemorativo",
+ "fr": "stolperstein",
+ "nl": "stolperstein",
+ "pt": "stolperstein"
+ },
+ "bust": {
+ "de": "büste",
+ "en": "bust",
+ "es": "busto",
+ "fr": "buste",
+ "nl": "buste",
+ "pt": "busto",
+ "zh": "半身像"
+ },
+ "cross": {
+ "de": "gedenkkreuz",
+ "en": "memorial cross",
+ "es": "cruz conmemorativa",
+ "fr": "croix commémorative",
+ "zh": "紀念十字架"
+ },
+ "ghost_bike": {
+ "en": "ghost bike",
+ "es": "bicianimitas",
+ "nl": "witte fiets",
+ "pt": "bicicleta fantasma",
+ "zh": "幽靈單車",
+ "zh-cn": "幽灵自行车"
+ },
+ "obelisk": {
+ "en": "obelisk",
+ "es": "obelisco",
+ "fr": "obélisque",
+ "pt": "obelisco",
+ "zh": "方尖碑"
+ },
+ "plaque": {
+ "de": "gedenktafel",
+ "en": "commemorative plaque",
+ "es": "placa conmemorativa",
+ "fr": "plaque commémorative",
+ "nl": "gedenkplaat",
+ "pt": "placa comemorativa",
+ "zh": "紀念牌匾"
+ },
+ "statue": {
+ "en": "statue",
+ "es": "estatua",
+ "nl": "standbeeld",
+ "pt": "estátua",
+ "zh": "塑像"
+ },
+ "stele": {
+ "en": "stele",
+ "es": "estela",
+ "fr": "stèle",
+ "nl": "gedenksteen",
+ "pt": "estela",
+ "zh": "碑"
+ },
+ "stolperstein": {
+ "de": "stolperstein",
+ "en": "stumbling stone",
+ "es": "adoquín conmemorativo",
+ "fr": "stolperstein",
+ "nl": "stolperstein",
+ "pt": "stolperstein"
+ },
+ "stone": {
+ "de": "gedenkstein",
+ "en": "memorial stone",
+ "fr": "pierre mémorielle",
+ "nl": "gedenksteen",
+ "pt": "pedra comemorativa"
+ },
+ "war_memorial": {
+ "de": "kriegerdenkmal",
+ "en": "war memorial",
+ "es": "monumento de guerra",
+ "fr": "monument aux morts",
+ "nl": "oorlogsmonument",
+ "pt": "monumento de guerra",
+ "zh": "戰爭紀念建築"
+ }
+ },
+ "microbrewery": {
+ "yes": {
+ "de": "brauhaus",
+ "de-at": "gasthausbrauei",
+ "en": "brewpub",
+ "fr": "broue-pub",
+ "nl": "brouwerijpub",
+ "es": "microcervecería",
+ "pt": "micro-cervejaria",
+ "zh": "小釀造廠"
+ }
+ },
+ "military": {
+ "airfield": {
+ "de": "militärflugplatz",
+ "en": "airbase",
+ "es": "base aérea",
+ "fr": "base aérienne militaire",
+ "nl": "vliegbasis",
+ "pt": "base aérea",
+ "zh": "軍用機場"
+ },
+ "barracks": {
+ "de": "kaserne",
+ "en": "barracks",
+ "es": "cuartel",
+ "fr": "caserne",
+ "nl": "kazerne",
+ "zh": "軍營"
+ },
+ "base": {
+ "de": "militärbasis",
+ "en": "military base",
+ "es": "base militar",
+ "fr": "base militaire",
+ "nl": "militaire basis",
+ "pt": "base militar",
+ "zh": "军事基地",
+ "zh-hk": "軍事基地",
+ "zh-tw": "軍事基地"
+ },
+ "bunker": {
+ "en": "bunker",
+ "es": "búnker",
+ "pt": "búnquer",
+ "zh": "碉堡"
+ },
+ "naval_base": {
+ "de": "marinestützpunkt",
+ "en": "naval base",
+ "es": "base naval",
+ "fr": "base navale",
+ "nl": "marinehaven",
+ "pt": "base naval",
+ "zh": "海军基地",
+ "zh-hk": "海軍基地",
+ "zh-tw": "海軍基地"
+ },
+ "obstacle_course": {
+ "en": "military obstacle course",
+ "de": "hindernisbahn",
+ "es": "recorrido de obstáculos",
+ "fr": "course à obstacles",
+ "zh": "障碍训练",
+ "zh-cn": "障碍训练场"
+ },
+ "range": {
+ "de": "truppenübungsplatz",
+ "en": "proving ground",
+ "en-gb": "training area",
+ "es": "campo de maniobras",
+ "fr": "terrain d'essai",
+ "nl": "militair oefenterrein",
+ "zh": "演習場"
+ },
+ "training_area": {
+ "de": "truppenübungsplatz",
+ "en": "proving ground",
+ "en-gb": "training area",
+ "es": "campo de maniobras",
+ "fr": "terrain d'essai",
+ "nl": "militair oefenterrein",
+ "zh": "演習場"
+ },
+ "trench": {
+ "de": "schützengraben",
+ "en": "military trench",
+ "en-ca": "defensive fighting position",
+ "en-gb": "defensive fighting position",
+ "es": "trinchera",
+ "nl": "loopgraaf",
+ "pt": "trincheira",
+ "zh": "散兵坑"
+ }
+ },
+ "museum": {
+ "agriculture": {
+ "en": "agricultural museum",
+ "es": "museo agrícola",
+ "fr": "musée agricole",
+ "nl": "landbouwmuseum",
+ "pt": "museu de agricultura"
+ },
+ "archaeological": {
+ "de": "archäologisches museum",
+ "en": "archaeological museum",
+ "es": "museo arqueológico",
+ "fr": "musée archéologique",
+ "nl": "archeologiemuseum",
+ "pt": "museu de arqueologia",
+ "zh": "考古博物館",
+ "zh-cn": "考古博物馆"
+ },
+ "aviation": {
+ "de": "luftfahrtmuseum",
+ "en": "aviation museum",
+ "es": "museo de aviación",
+ "fr": "musée de l'aviation",
+ "nl": "luchtvaartmuseum",
+ "pt": "museu da aviação",
+ "zh": "航空博物館",
+ "zh-cn": "航空博物馆"
+ },
+ "children": {
+ "de": "kindermuseum",
+ "en": "children's museum",
+ "fr": "musée pour enfants",
+ "nl": "kindermuseum",
+ "pt": "museu para crianças",
+ "zh": "兒童博物館",
+ "zh-cn": "儿童博物馆"
+ },
+ "history": {
+ "de": "historisches museum",
+ "en": "history museum",
+ "es": "museo de historia",
+ "fr": "musée historique",
+ "nl": "historisch museum",
+ "pt": "museu histórico",
+ "zh": "歷史博物館",
+ "zh-cn": "历史博物馆"
+ },
+ "language": {
+ "en": "language museum",
+ "nl": "taalmuseum",
+ "pt": "museu de idiomas",
+ "zh": "语言博物馆"
+ },
+ "local": {
+ "de": "heimatmuseum",
+ "en": "local museum",
+ "fr": "musée d'histoire locale",
+ "nl": "streekmuseum",
+ "pt": "museu de história local",
+ "zh": "地方文化館"
+ },
+ "maritime": {
+ "de": "schifffahrtsmuseum",
+ "de-ch": "marinemuseen",
+ "en": "maritime museum",
+ "es": "museo marítimo",
+ "fr": "musée maritime",
+ "nl": "scheepvaartmuseum",
+ "pt": "museu marítimo",
+ "zh": "海事博物館"
+ },
+ "military": {
+ "de": "kriegsmuseum",
+ "en": "military museum",
+ "es": "museo militar",
+ "fr": "musée militaire",
+ "nl": "militair museum",
+ "pt": "museu militar",
+ "zh": "軍事博物館",
+ "zh-cn": "军事博物馆"
+ },
+ "open_air": {
+ "de": "freilandmuseum",
+ "en": "open-air museum",
+ "fr": "musée en plein air",
+ "nl": "openluchtmuseum",
+ "pt": "museu a céu aberto",
+ "zh": "戶外博物館",
+ "zh-hk": "生態博物館"
+ },
+ "person": {
+ "de": "personenmuseum",
+ "en": "biographical museum",
+ "fr": "musée biographique",
+ "nl": "biografisch museum",
+ "pt": "museu biográfico"
+ },
+ "railway": {
+ "de": "eisenbahnmuseum",
+ "en": "railway museum",
+ "es": "museo del ferrocarril",
+ "fr": "musée ferroviaire",
+ "nl": "spoorwegmuseum",
+ "pt": "museu dos caminhos de ferro",
+ "pt-br": "museu ferroviário"
+ },
+ "science": {
+ "de": "wissenschaftsmuseum",
+ "en": "science museum",
+ "es": "museo científico",
+ "fr": "musée scientifique",
+ "nl": "wetenschapsmuseum",
+ "pt": "museu de ciência",
+ "zh": "科学博物馆",
+ "zh-hk": "科學博物館",
+ "zh-tw": "科學博物館"
+ },
+ "technology": {
+ "de": "technikmuseum",
+ "en": "technology museum",
+ "es": "museo tecnológico",
+ "fr": "musée des technologies",
+ "nl": "techniekmuseum",
+ "pt": "museu de tecnologia",
+ "zh": "科技博物館",
+ "zh-cn": "科技博物馆"
+ },
+ "transport": {
+ "de": "verkehrsmuseum",
+ "en": "transport museum",
+ "es": "museo de los transportes",
+ "fr": "musée des transports",
+ "nl": "vervoermuseum",
+ "pt": "museu dos transportes",
+ "zh": "交通博物館",
+ "zh-cn": "交通博物馆"
+ }
+ },
+ "museum_type": {
+ "municipal": {
+ "de": "stadtmuseum",
+ "en": "city museum",
+ "es": "museo de la ciudad",
+ "fr": "musée municipal",
+ "nl": "stadsmuseum"
+ },
+ "national": {
+ "de": "staatliches museum",
+ "en": "national museum",
+ "es": "museo nacional",
+ "fr": "musée national",
+ "nl": "nationaal museum",
+ "pt": "museu nacional",
+ "zh": "國立博物館",
+ "zh-cn": "国立博物馆"
+ },
+ "private": {
+ "de": "privatmuseum",
+ "en": "private museum",
+ "es": "museo privado",
+ "fr": "musée privé",
+ "nl": "privémuseum",
+ "pt": "museu particular",
+ "zh": "私人博物館",
+ "zh-cn": "私人博物馆"
+ }
+ },
+ "name": {
+ "7-Eleven": {
+ "en": "7-eleven"
+ },
+ "BMO Bank of Montreal": {
+ "en": "bank of montreal",
+ "es": "banco de montreal",
+ "fr": "banque de montréal",
+ "pt": "banco de montreal",
+ "zh": "蒙特利尔银行"
+ }
+ },
+ "natural": {
+ "arete": {
+ "de": "gebirgsgrat",
+ "en": "arête",
+ "es": "arista",
+ "zh": "刃脊"
+ },
+ "bare_rock": {
+ "de": "anstehendes gestein",
+ "en": "bedrock",
+ "es": "roca madre",
+ "fr": "roche mère",
+ "pt": "rocha matriz",
+ "zh": "基岩",
+ "zh-cn": "岩床"
+ },
+ "bay": {
+ "de": "bucht",
+ "en": "bay",
+ "es": "bahía",
+ "fr": "baie",
+ "nl": "baai",
+ "pt": "baía",
+ "zh": "海湾",
+ "zh-hk": "海灣",
+ "zh-tw": "海灣"
+ },
+ "beach": {
+ "de": "strand",
+ "en": "beach",
+ "es": "playa",
+ "fr": "plage",
+ "nl": "strand",
+ "pt": "praia",
+ "zh": "灘"
+ },
+ "blowhole": {
+ "en": "blowhole",
+ "es": "géiser marítimo",
+ "fr": "geyser maritime",
+ "nl": "blaasgat",
+ "zh": "吹蝕穴"
+ },
+ "cape": {
+ "de": "kap",
+ "en": "cape",
+ "es": "cabo",
+ "fr": "cap",
+ "nl": "kaap",
+ "pt": "cabo",
+ "zh": "海岬"
+ },
+ "cave_entrance": {
+ "en": "cave entrance",
+ "fr": "entrée de grotte"
+ },
+ "cliff": {
+ "de": "klippe",
+ "de-ch": "kliff",
+ "en": "cliff",
+ "es": "acantilado",
+ "fr": "rempart montagneux",
+ "nl": "klip",
+ "pt": "falésia",
+ "zh": "悬崖",
+ "zh-hk": "懸崖",
+ "zh-tw": "懸崖"
+ },
+ "coastline": {
+ "de": "küstenlinie",
+ "en": "coastal line",
+ "es": "línea costera",
+ "fr": "ligne de côte",
+ "nl": "kustlijn",
+ "pt-br": "linha costeira",
+ "zh": "海岸線"
+ },
+ "desert": {
+ "de": "wüste",
+ "en": "desert",
+ "es": "desierto",
+ "fr": "désert",
+ "nl": "woestijn",
+ "pt": "deserto",
+ "zh": "荒漠"
+ },
+ "fell": {
+ "de": "fjell",
+ "en": "fell",
+ "es": "estiva",
+ "fr": "fjäll",
+ "nl": "fjell",
+ "zh": "高地"
+ },
+ "glacier": {
+ "de": "gletscher",
+ "en": "glacier",
+ "es": "glaciar",
+ "nl": "gletsjer",
+ "pt": "glaciar",
+ "pt-br": "geleira",
+ "zh": "冰川"
+ },
+ "grassland": {
+ "de": "grasland",
+ "en": "grassland",
+ "es": "herbazal",
+ "fr": "pelouse",
+ "nl": "grasland",
+ "pt": "pradaria",
+ "zh": "草原"
+ },
+ "heath": {
+ "de": "heide",
+ "en": "heath",
+ "es": "brezal",
+ "fr": "lande",
+ "nl": "heide",
+ "pt": "charneca",
+ "zh": "石楠荒原"
+ },
+ "isthmus": {
+ "en": "isthmus",
+ "es": "istmo",
+ "fr": "isthme",
+ "nl": "landengte",
+ "pt": "istmo",
+ "zh": "地峡",
+ "zh-hk": "地峽",
+ "zh-tw": "地峽"
+ },
+ "moor": {
+ "en": "moorland",
+ "es": "páramo",
+ "fr": "brande",
+ "nl": "veen"
+ },
+ "peak": {
+ "de": "berggipfel",
+ "en": "summit",
+ "es": "cima",
+ "fr": "sommet",
+ "nl": "top",
+ "pt": "cume",
+ "zh": "顶峰",
+ "zh-hk": "頂峰",
+ "zh-tw": "頂峰",
+ "de-at": "berg"
+ },
+ "peninsula": {
+ "de": "halbinsel",
+ "en": "peninsula",
+ "es": "península",
+ "fr": "péninsule",
+ "nl": "schiereiland",
+ "pt": "península",
+ "zh": "半岛",
+ "zh-hk": "半島",
+ "zh-tw": "半島"
+ },
+ "reef": {
+ "de": "riff",
+ "en": "reef",
+ "es": "arrecife",
+ "fr": "récif",
+ "nl": "rif",
+ "pt": "recife",
+ "zh": "暗礁"
+ },
+ "ridge": {
+ "de": "gebirgskamm",
+ "en": "ridge",
+ "es": "cresta",
+ "fr": "crête",
+ "nl": "bergkam",
+ "pt": "cumeada",
+ "pt-br": "tergo",
+ "zh": "山脊"
+ },
+ "riverbed": {
+ "de": "gewässerbett",
+ "en": "stream bed",
+ "es": "cauce",
+ "fr": "lit mineur",
+ "nl": "stroombed",
+ "pt": "leito aquático",
+ "zh": "河床"
+ },
+ "rock": {
+ "de": "gestein",
+ "en": "rock",
+ "es": "roca",
+ "fr": "roche",
+ "nl": "rots of gesteente",
+ "pt": "rocha",
+ "zh": "岩石"
+ },
+ "saddle": {
+ "de": "bergsattel",
+ "en": "saddle",
+ "es": "collado de montaña",
+ "fr": "col de montagne",
+ "nl": "zadel",
+ "zh": "鞍部"
+ },
+ "sand": {
+ "de": "ausgetrockneter see",
+ "en": "dry lake",
+ "fr": "lac asséché",
+ "zh": "旱湖",
+ "es": "salar",
+ "nl": "zoutvlakte",
+ "pt": "deserto de sal"
+ },
+ "scree": {
+ "de": "talus",
+ "en": "scree",
+ "es": "talud",
+ "fr": "éboulis",
+ "nl": "puinhelling",
+ "zh": "岩屑堆"
+ },
+ "scrub": {
+ "de": "buschland",
+ "en": "shrubland",
+ "es": "matorral",
+ "fr": "fruticée",
+ "nl": "struweel",
+ "pt": "matagal",
+ "zh": "灌叢群落",
+ "zh-cn": "灌丛"
+ },
+ "shingle": {
+ "de": "kiesstrand",
+ "en": "shingle beach",
+ "es": "playa de guijarros",
+ "fr": "plage de galets",
+ "nl": "kiezelstrand",
+ "zh": "碎石灘"
+ },
+ "shrub": {
+ "de": "strauch",
+ "en": "shrub",
+ "es": "arbusto",
+ "fr": "arbrisseau",
+ "nl": "struik",
+ "pt": "arbusto",
+ "zh": "灌木"
+ },
+ "sinkhole": {
+ "de": "erdfall",
+ "de-ch": "doline",
+ "en": "sinkhole",
+ "es": "dolina",
+ "fr": "doline",
+ "nl": "doline",
+ "pt": "dolina",
+ "zh": "滲穴",
+ "zh-cn": "落水洞",
+ "zh-hk": "沉洞"
+ },
+ "spring": {
+ "de": "quelle",
+ "en": "spring",
+ "es": "manantial",
+ "fr": "source",
+ "nl": "bron",
+ "pt": "nascente",
+ "zh": "泉"
+ },
+ "stone": {
+ "de": "felsblock",
+ "en": "boulder",
+ "es": "bloque",
+ "fr": "bloc",
+ "nl": "rotsblok",
+ "pt": "matacão",
+ "zh": "巨石"
+ },
+ "strait": {
+ "de": "meerenge",
+ "en": "strait",
+ "es": "estrecho",
+ "fr": "détroit",
+ "nl": "zeestraat",
+ "pt": "estreito",
+ "zh": "海峡",
+ "zh-tw": "海峽"
+ },
+ "termite_mound": {
+ "de": "termitenhügel",
+ "en": "termite mound",
+ "es": "termitero",
+ "fr": "termitière",
+ "nl": "termietenheuvel",
+ "pt": "cupinzeiro",
+ "zh": "蟻塚"
+ },
+ "tree": {
+ "de": "baum",
+ "en": "tree",
+ "es": "árbol",
+ "fr": "arbre",
+ "nl": "boom",
+ "pt": "árvore",
+ "zh": "树",
+ "zh-hk": "樹",
+ "zh-tw": "樹"
+ },
+ "tree_row": {
+ "de": "baumreihe",
+ "en": "tree row",
+ "de-ch": "strassenbaum",
+ "es": "árbol de alineación",
+ "fr": "arbre d'alignement",
+ "zh": "行道树",
+ "zh-hk": "行道樹"
+ },
+ "valley": {
+ "de": "tal",
+ "en": "valley",
+ "es": "valle",
+ "fr": "vallée",
+ "nl": "dal",
+ "pt": "vale",
+ "zh": "谷地"
+ },
+ "volcano": {
+ "de": "vulkan",
+ "en": "volcano",
+ "es": "volcán",
+ "fr": "volcan",
+ "nl": "vulkaan",
+ "pt": "vulcão",
+ "zh": "火山"
+ },
+ "water": {
+ "de": "gewässer",
+ "en": "body of water",
+ "es": "cuerpo de agua",
+ "fr": "étendue d'eau",
+ "nl": "waterlichaam",
+ "pt": "corpo de água",
+ "zh": "水體"
+ },
+ "wetland": {
+ "de": "feuchtgebiet",
+ "en": "wetland",
+ "es": "humedal",
+ "fr": "zone humide",
+ "nl": "drasland",
+ "pt": "zona húmida",
+ "pt-br": "zona úmida",
+ "zh": "湿地",
+ "zh-hk": "濕地",
+ "zh-tw": "濕地"
+ },
+ "wood": {
+ "de": "baumkult",
+ "en": "sacred grove",
+ "es": "bosque sagrado",
+ "fr": "bois sacré",
+ "nl": "boomheiligdom",
+ "zh": "神聖樹林",
+ "zh-cn": "神圣橡树",
+ "de-ch": "wald",
+ "en-ca": "forest",
+ "en-gb": "forest",
+ "pt": "floresta",
+ "zh-tw": "森林"
+ }
+ },
+ "network": {
+ "BR": {
+ "de": "bundesstraßen in brasilien",
+ "en": "federal roads in brazil",
+ "fr": "routes fédérales du brésil",
+ "pt": "rodovias federais do brasil"
+ },
+ "CN": {
+ "de": "liste der nationalstraßen in china",
+ "en": "china national highways",
+ "fr": "route nationale de chine",
+ "nl": "nationale wegen in china",
+ "zh": "中华人民共和国国道",
+ "zh-hk": "中華人民共和國國道"
+ },
+ "DLR": {
+ "en": "docklands light railway station",
+ "fr": "station du métro léger des docklands"
+ },
+ "Ford_Pass": {
+ "en": "fordpass bike"
+ },
+ "JP": {
+ "de": "nationalstraße in japan",
+ "en": "national highway of japan",
+ "fr": "route nationale du japon",
+ "nl": "nationale weg in japan",
+ "zh": "一般國道",
+ "de-ch": "präfekturstrasse",
+ "es": "camino prefectual"
+ },
+ "Königlich_sächsischer_Meilenstein": {
+ "de": "königlich-sächsischer meilenstein",
+ "en": "royal saxon milestone"
+ },
+ "US": {
+ "en": "appalachian development highway system",
+ "es": "carreteras estatales de alabama",
+ "de": "interstate highway",
+ "fr": "interstate highway",
+ "nl": "interstate highway",
+ "pt": "sistema interestadual de autoestradas dos estados unidos",
+ "zh": "州際公路系統"
+ },
+ "call-a-bike": {
+ "en": "call a bike"
+ },
+ "e-road": {
+ "de": "europastraße",
+ "de-ch": "europastrasse",
+ "en": "international e-road network",
+ "es": "carreteras europeas",
+ "fr": "route européenne",
+ "nl": "europese weg",
+ "pt": "estradas europeias",
+ "zh": "欧洲高速公路",
+ "zh-hk": "歐洲高速公路",
+ "zh-tw": "歐洲高速公路"
+ },
+ "nextbike": {
+ "en": "nextbike"
+ },
+ "stadtradhamburg": {
+ "en": "stadtrad hamburg"
+ }
+ },
+ "nohousenumber": {
+ "yes": {
+ "en": "without housenumber",
+ "pt": "sem número"
+ }
+ },
+ "noname": {
+ "yes": {
+ "en": "untitled entity",
+ "es": "entidad sin nombre"
+ }
+ },
+ "office": {
+ "association": {
+ "de": "digitale gesellschaft",
+ "en": "digital society",
+ "fr": "société numérique",
+ "de-ch": "freiwilligen-verein",
+ "en-ca": "verein",
+ "en-gb": "voluntary association",
+ "es": "asociación",
+ "nl": "vrijwilligersorganisatie",
+ "pt": "associação",
+ "zh": "协会",
+ "zh-hk": "協會",
+ "zh-tw": "協會"
+ },
+ "bail_bond_agent": {
+ "de": "kautionsagent",
+ "en": "bail bondsman",
+ "es": "fiador",
+ "nl": "borgtochtgeldschieter",
+ "zh": "保释代理人"
+ },
+ "coworking": {
+ "en": "coworking",
+ "es": "cotrabajo",
+ "nl": "deelkantoor",
+ "zh": "共用工作空間"
+ },
+ "diplomatic": {
+ "de": "auslandsvertretung",
+ "en": "diplomatic mission",
+ "es": "misión diplomática",
+ "fr": "mission diplomatique",
+ "nl": "diplomatieke missie",
+ "pt": "missão diplomática",
+ "zh": "外交代表機構",
+ "zh-cn": "外交代表机构"
+ },
+ "employment_agency": {
+ "de": "arbeitsvermittler",
+ "en": "employment agency",
+ "es": "empresa de trabajo temporal",
+ "fr": "agence d’emploi",
+ "nl": "uitzendbureau",
+ "zh": "人力仲介"
+ },
+ "engineer": {
+ "de": "ingenieur",
+ "en": "engineer",
+ "es": "ingeniero",
+ "fr": "ingénieur",
+ "nl": "ingenieur",
+ "pt": "engenheiro",
+ "zh": "工程师",
+ "zh-hk": "工程師",
+ "zh-tw": "工程師"
+ },
+ "estate_agent": {
+ "de": "immobilienmakler",
+ "en": "real estate broker",
+ "es": "agente inmobiliario",
+ "fr": "agent immobilier",
+ "nl": "vastgoedmakelaar",
+ "pt-br": "agente imobiliário",
+ "zh": "地產代理"
+ },
+ "financial_advisor": {
+ "de": "finanzberater",
+ "en": "financial adviser",
+ "es": "asesor financiero",
+ "fr": "conseiller en gestion de patrimoine",
+ "nl": "financieel adviseur",
+ "pt-br": "conselheiro financeiro",
+ "zh": "财务顾问",
+ "zh-cn": "金融咨询师"
+ },
+ "government": {
+ "de": "behörde",
+ "en": "government agency",
+ "es": "organismo público",
+ "fr": "agence publique",
+ "nl": "overheidsagentschap",
+ "pt": "agência governamental",
+ "zh": "政府機構",
+ "zh-cn": "政府机构"
+ },
+ "insurance": {
+ "en": "insurance agency"
+ },
+ "lawyer": {
+ "de": "rechtsanwalt",
+ "en": "lawyer",
+ "es": "abogado",
+ "fr": "avocat",
+ "nl": "advocaat",
+ "pt": "advogado",
+ "zh": "律師",
+ "zh-cn": "律师"
+ },
+ "logistics": {
+ "de": "spediteur",
+ "en": "consignor"
+ },
+ "tax_advisor": {
+ "de": "steuerberater",
+ "en": "tax advisor",
+ "es": "asesor fiscal",
+ "fr": "conseiller fiscal",
+ "nl": "belastingadviseur",
+ "pt": "assessor fiscal",
+ "zh": "稅理士"
+ },
+ "telecommunication": {
+ "de": "telekommunikationsunternehmen",
+ "en": "telecommunication company",
+ "es": "compañía de telecomunicaciones",
+ "fr": "société de télécommunications",
+ "nl": "telecommunicatiebedrijf",
+ "pt": "empresa de telecomunicações",
+ "zh": "通讯公司"
+ },
+ "therapist": {
+ "de": "physiotherapeut",
+ "en": "physiotherapist",
+ "es": "fisioterapeuta",
+ "fr": "physiothérapeute",
+ "nl": "fysiotherapeut",
+ "pt": "fisioterapeuta",
+ "zh": "物理治療師"
+ },
+ "travel_agent": {
+ "de": "reisevermittler",
+ "en": "travel agent",
+ "es": "agente de viajes",
+ "fr": "agent de voyages",
+ "nl": "reisagent",
+ "pt": "agente de viagens",
+ "en-gb": "agency",
+ "zh": "旅行社"
+ }
+ },
+ "oneway": {
+ "no": {
+ "en": "bidirectional traffic",
+ "es": "tránsito vehicular bidireccional",
+ "fr": "circulation à double sens",
+ "zh": "交通通行方向"
+ },
+ "yes": {
+ "de": "einbahnstraße",
+ "en": "one-way traffic",
+ "es": "tránsito vehicular unidireccional",
+ "fr": "circulation en sens unique",
+ "nl": "eenrichtingsverkeer",
+ "zh": "单行道"
+ }
+ },
+ "opening_hours": {
+ "": {
+ "de": "für die öffentlichkeit geschlossen",
+ "en": "closed to the public",
+ "es": "cerrado al público",
+ "fr": "fermé au public",
+ "pt": "fechado ao público"
+ },
+ "24/7": {
+ "en": "24/7"
+ },
+ "off": {
+ "de": "für die öffentlichkeit geschlossen",
+ "en": "closed to the public",
+ "es": "cerrado al público",
+ "fr": "fermé au public",
+ "pt": "fechado ao público"
+ }
+ },
+ "operator": {
+ "": {
+ "en": "organized community",
+ "fr": "communauté organisée",
+ "de": "konsortium",
+ "es": "consorcio",
+ "nl": "consortium",
+ "pt": "consórcio",
+ "zh": "聯盟",
+ "zh-cn": "联盟",
+ "de-ch": "genossenschaft",
+ "en-ca": "cooperative",
+ "en-gb": "cooperative",
+ "pt-br": "cooperativismo"
+ }
+ },
+ "ownership": {
+ "national": {
+ "en": "national wildlife refuge",
+ "es": "refugio nacional de vida silvestre",
+ "fr": "refuge faunique national",
+ "zh": "國家野生保護區",
+ "zh-cn": "国家野生动物保护区系统"
+ }
+ },
+ "park": {
+ "": {
+ "en": "state beach",
+ "fr": "plage d'état",
+ "de": "staatspark",
+ "es": "parque estatal",
+ "nl": "staatspark",
+ "pt": "parque estadual",
+ "zh": "州立公園"
+ }
+ },
+ "parking": {
+ "multi-storey": {
+ "de": "parkhaus",
+ "en": "multistorey car park",
+ "en-ca": "multi-storey car park",
+ "en-gb": "multi-storey car park",
+ "fr": "stationnement étagé",
+ "nl": "parkeergarage",
+ "pt": "silo-auto",
+ "pt-br": "edifício-garagem",
+ "zh": "多層停車場",
+ "zh-tw": "立體停車場"
+ },
+ "underground": {
+ "de": "tiefgarage",
+ "en": "underground parking space",
+ "fr": "parking souterrain",
+ "pt": "estacionamento subterrâneo",
+ "zh-cn": "地下停车场"
+ }
+ },
+ "pilgrimage": {
+ "yes": {
+ "de": "pilgerweg",
+ "en": "pilgrims' way",
+ "es": "ruta de peregrinación",
+ "fr": "chemin de pèlerinage",
+ "nl": "pelgrimsroute",
+ "pt": "caminho de peregrinos"
+ }
+ },
+ "place": {
+ "archipelago": {
+ "de": "archipel",
+ "en": "archipelago",
+ "es": "archipiélago",
+ "fr": "archipel",
+ "nl": "archipel",
+ "pt": "arquipélago",
+ "zh": "群島",
+ "zh-cn": "群岛"
+ },
+ "borough": {
+ "en": "borough",
+ "pt": "burgo",
+ "zh": "自治市"
+ },
+ "city": {
+ "de": "stadt",
+ "en": "city",
+ "es": "ciudad",
+ "fr": "ville",
+ "nl": "stad",
+ "pt": "cidade",
+ "zh": "城市"
+ },
+ "city_block": {
+ "de": "häuserblock",
+ "en": "city block",
+ "es": "manzana urbana",
+ "fr": "îlot urbain",
+ "nl": "huizenblok",
+ "pt": "quarteirão",
+ "zh": "街區"
+ },
+ "continent": {
+ "de": "kontinent",
+ "en": "continent",
+ "es": "continente",
+ "nl": "werelddeel",
+ "pt": "continente",
+ "zh": "大洲"
+ },
+ "country": {
+ "de": "land",
+ "en": "country",
+ "es": "país",
+ "fr": "pays",
+ "nl": "land",
+ "pt": "país",
+ "zh": "國家",
+ "zh-cn": "国家"
+ },
+ "county": {
+ "en": "county",
+ "es": "condado",
+ "fr": "comté",
+ "pt": "condado",
+ "zh": "县",
+ "zh-tw": "縣"
+ },
+ "district": {
+ "de": "distrikt",
+ "en": "district",
+ "es": "distrito",
+ "pt": "distrito",
+ "zh": "區域",
+ "zh-cn": "区",
+ "zh-hk": "區"
+ },
+ "farm": {
+ "de": "bauernhof",
+ "en": "farm",
+ "es": "granja",
+ "fr": "ferme",
+ "nl": "boerenbedrijf",
+ "pt": "quinta",
+ "pt-br": "fazenda",
+ "zh": "农场",
+ "zh-hk": "農場",
+ "zh-tw": "農場"
+ },
+ "hamlet": {
+ "de": "weiler",
+ "en": "hamlet",
+ "es": "aldea",
+ "fr": "hameau",
+ "nl": "gehucht",
+ "zh": "村镇",
+ "zh-hk": "村鎮"
+ },
+ "island": {
+ "de": "insel",
+ "en": "island",
+ "es": "isla",
+ "fr": "île",
+ "nl": "eiland",
+ "pt": "ilha",
+ "zh": "島嶼",
+ "zh-cn": "岛屿"
+ },
+ "islet": {
+ "de": "eiland",
+ "en": "islet",
+ "es": "islote",
+ "fr": "îlot",
+ "nl": "klein eiland",
+ "pt": "ilhéu",
+ "zh": "小島"
+ },
+ "locality": {
+ "de": "ortschaft",
+ "en": "locality",
+ "es": "localidad",
+ "fr": "localité",
+ "nl": "bevolkte plaats",
+ "pt": "localidade",
+ "zh": "聚居地"
+ },
+ "municipality": {
+ "de": "gemeinde",
+ "en": "municipality",
+ "es": "municipio",
+ "fr": "municipalité",
+ "nl": "gemeente",
+ "pt": "municipalidade",
+ "zh": "市镇"
+ },
+ "neighbourhood": {
+ "de": "stadtviertel oder ortsteil",
+ "en": "neighborhood",
+ "en-ca": "neighbourhood",
+ "en-gb": "neighbourhood",
+ "es": "barrio",
+ "fr": "quartier",
+ "nl": "buurt of wijk",
+ "pt": "bairro",
+ "zh": "近鄰社區",
+ "zh-cn": "近邻社区"
+ },
+ "plot": {
+ "de": "flurstück",
+ "de-at": "grundstück",
+ "de-ch": "grundstück",
+ "en": "land lot",
+ "es": "parcela",
+ "fr": "parcelle",
+ "nl": "perceel",
+ "pt": "lote",
+ "zh": "地號",
+ "zh-tw": "地段"
+ },
+ "quarter": {
+ "de": "stadtteil",
+ "en": "quarter",
+ "fr": "quartier",
+ "nl": "stadsdeel",
+ "pt": "zona de cidade",
+ "pt-br": "distrito municipal",
+ "zh": "市区"
+ },
+ "square": {
+ "de": "platz",
+ "en": "square",
+ "en-ca": "town square",
+ "es": "plaza",
+ "fr": "place",
+ "nl": "plein",
+ "pt": "praça",
+ "zh": "廣場",
+ "zh-cn": "广场"
+ },
+ "state": {
+ "de": "gliedstaat",
+ "en": "federated state",
+ "es": "estado federado",
+ "fr": "état fédéré",
+ "nl": "deelstaat",
+ "pt": "ente federativo",
+ "pt-br": "estado federado",
+ "zh": "联邦制下的州",
+ "zh-hk": "聯邦制國家成員",
+ "zh-tw": "聯邦制國家成員"
+ },
+ "suburb": {
+ "de": "vorort",
+ "en": "suburb",
+ "es": "suburbio",
+ "fr": "banlieue",
+ "nl": "buitenwijk",
+ "pt": "subúrbio",
+ "zh": "郊區",
+ "zh-cn": "郊区"
+ },
+ "town": {
+ "de": "kleinstadt",
+ "en": "town",
+ "es": "villa",
+ "fr": "bourgade",
+ "nl": "middelgrote plaats of stadje",
+ "pt": "vila",
+ "zh": "镇",
+ "zh-hk": "鎮"
+ },
+ "township": {
+ "en": "township",
+ "zh": "鎮區"
+ },
+ "village": {
+ "de": "dorf",
+ "en": "village",
+ "es": "pueblo",
+ "nl": "dorp",
+ "pt": "aldeia",
+ "zh": "村"
+ }
+ },
+ "plant": {
+ "": {
+ "de": "laufwasserkraftwerk",
+ "en": "run-of-the-river power station",
+ "es": "central hidroeléctrica de pasada",
+ "fr": "centrale hydroélectrique au fil de l'eau",
+ "pt": "central hidroelétrica a fio d'água",
+ "pt-br": "usina hidrelétrica a fio d'água",
+ "zh": "川流式",
+ "en-gb": "coal power station",
+ "nl": "kolencentrale",
+ "zh-cn": "煤炭发电厂",
+ "zh-hk": "煤炭發電廠",
+ "zh-tw": "煤炭發電廠",
+ "de-ch": "wasserkraftwerk",
+ "en-ca": "hydroelectric generating station"
+ }
+ },
+ "playground": {
+ "activitypanel": {
+ "en": "activity panel"
+ },
+ "aerialrotator": {
+ "en": "aerial rotator"
+ },
+ "balancebeam": {
+ "en": "balance beam",
+ "es": "viga de equilibrio"
+ },
+ "basketrotator": {
+ "en": "basket rotator"
+ },
+ "basketswing": {
+ "en": "basket swing"
+ },
+ "climbingframe": {
+ "de": "klettergerüst",
+ "en": "jungle gym",
+ "es": "barras de mono",
+ "fr": "cage à poules",
+ "nl": "klimrek",
+ "pt": "trepa-trepa",
+ "zh": "立體格子鐵架"
+ },
+ "climbingwall": {
+ "en": "climbing wall"
+ },
+ "cushion": {
+ "de": "hüpfkissen",
+ "en": "bouncy cushion"
+ },
+ "exercise": {
+ "de": "bewegungsparcours",
+ "en": "outdoor gym",
+ "fr": "équipement de fitness en extérieur",
+ "nl": "beweegtuin",
+ "pt": "academia ao ar livre"
+ },
+ "funnel_ball": {
+ "en": "funnel ball"
+ },
+ "hopscotch": {
+ "de": "hickelkasten",
+ "en": "hopscotch",
+ "es": "rayuela",
+ "fr": "marelle",
+ "nl": "hinkelen",
+ "pt": "jogo da macaca",
+ "pt-br": "amarelinha",
+ "zh": "跳房子"
+ },
+ "horizontal_bar": {
+ "de": "klimmzugstange",
+ "en": "chin-up bar",
+ "zh": "单杠",
+ "zh-hk": "單杠",
+ "es": "barra fija",
+ "fr": "barre fixe",
+ "nl": "rekstok",
+ "pt": "barra fixa"
+ },
+ "map": {
+ "en": "playground map"
+ },
+ "playhouse": {
+ "en": "wendy house",
+ "zh": "溫迪之家"
+ },
+ "roundabout": {
+ "de": "sitzkarussell",
+ "en": "roundabout",
+ "fr": "tourniquet",
+ "nl": "draaimolen",
+ "pt": "gira-gira (playground)",
+ "zh": "氹氹轉"
+ },
+ "sandpit": {
+ "de": "sandkasten",
+ "en": "sandpit",
+ "fr": "bac à sable",
+ "nl": "zandbak",
+ "pt": "caixa de areia",
+ "zh": "沙池"
+ },
+ "seesaw": {
+ "de": "wippe",
+ "en": "seesaw",
+ "es": "balancín",
+ "fr": "balançoire à bascule",
+ "nl": "wip",
+ "pt": "balancé",
+ "zh": "蹺蹺板"
+ },
+ "sledding": {
+ "de": "rodeln",
+ "en": "sledding",
+ "es": "descenso en trineo",
+ "fr": "luge",
+ "zh": "雪撬"
+ },
+ "slide": {
+ "de": "rutsche",
+ "en": "playground slide",
+ "es": "tobogán",
+ "fr": "toboggan",
+ "nl": "glijbaan",
+ "pt": "escorregador",
+ "zh": "滑梯"
+ },
+ "splash_pad": {
+ "en": "splash pad"
+ },
+ "springy": {
+ "en": "spring rider",
+ "es": "muelle balancín",
+ "fr": "jeu sur ressort",
+ "nl": "veertoestel",
+ "zh": "彈簧椅"
+ },
+ "swing": {
+ "de": "schaukel",
+ "en": "swing",
+ "es": "columpio",
+ "fr": "balançoire",
+ "nl": "schommel",
+ "pt": "balanço",
+ "zh": "秋千",
+ "zh-hk": "鞦韆",
+ "zh-tw": "鞦韆"
+ },
+ "teenshelter": {
+ "en": "teenshelter"
+ },
+ "tetherball": {
+ "en": "tetherball",
+ "fr": "spiroballe",
+ "pt": "espirobol",
+ "zh": "梨球"
+ },
+ "trampoline": {
+ "de": "trampolin",
+ "en": "trampoline",
+ "es": "cama elástica",
+ "pt": "trampolim",
+ "zh": "蹦床",
+ "zh-hk": "彈牀",
+ "zh-tw": "彈翻床"
+ },
+ "water": {
+ "en": "water play equipment"
+ },
+ "youth_bench": {
+ "en": "youth bench"
+ },
+ "zipwire": {
+ "en": "zipwire"
+ }
+ },
+ "political_division": {
+ "canton": {
+ "de": "kanton",
+ "en": "canton",
+ "es": "cantón",
+ "nl": "kanton",
+ "pt": "cantão"
+ },
+ "congressional_district": {
+ "de": "kongresswahlbezirk der vereinigten staaten",
+ "en": "united states congressional district",
+ "es": "distrito congresional de estados unidos",
+ "fr": "circonscription congressionnelle des états-unis",
+ "nl": "congresdistrict van de verenigde staten",
+ "pt": "distritos congressionais dos estados unidos"
+ },
+ "linguistic_community": {
+ "de": "föderale gemeinschaft in belgien",
+ "en": "community of belgium",
+ "es": "comunidad de bélgica",
+ "fr": "communauté de belgique",
+ "nl": "gemeenschap van belgië"
+ },
+ "ward": {
+ "en": "ward",
+ "fr": "bydel",
+ "pt": "ward (subdivisão eleitoral)",
+ "zh": "選區"
+ }
+ },
+ "power": {
+ "cable": {
+ "de": "kabel",
+ "en": "electrical cable",
+ "es": "cable",
+ "fr": "fil électrique",
+ "nl": "kabel",
+ "pt": "cabo elétrico condutor",
+ "zh": "电缆",
+ "zh-cn": "网线",
+ "zh-hk": "網線",
+ "zh-tw": "網線"
+ },
+ "cable_distribution_cabinet": {
+ "en": "power box"
+ },
+ "catenary_mast": {
+ "de": "oberleitungsmast",
+ "en": "catenary mast"
+ },
+ "compensator": {
+ "de": "statischer blindleistungskompensator",
+ "en": "static var compensator",
+ "fr": "compensateur statique d'énergie réactive",
+ "zh": "靜止無功補償裝置"
+ },
+ "converter": {
+ "de": "stromrichter",
+ "en": "electric power converter",
+ "es": "convertidor de potencia",
+ "nl": "omvormer",
+ "zh": "高壓直流轉換器"
+ },
+ "generator": {
+ "de": "elektrischer generator",
+ "en": "electric generator",
+ "es": "generador eléctrico",
+ "fr": "générateur électrique",
+ "nl": "generator",
+ "pt": "gerador elétrico",
+ "zh": "发电机",
+ "zh-hk": "發電機",
+ "zh-tw": "發電機"
+ },
+ "heliostat": {
+ "en": "heliostat",
+ "es": "heliostato",
+ "fr": "héliostat",
+ "zh": "定日鏡",
+ "zh-cn": "定日镜"
+ },
+ "insulator": {
+ "de": "isolator",
+ "en": "insulator",
+ "es": "aislante",
+ "fr": "isolateur",
+ "nl": "isolator",
+ "pt": "isolante elétrico",
+ "zh": "絕緣體",
+ "zh-cn": "绝缘体"
+ },
+ "line": {
+ "de": "elektrische leitung",
+ "en": "power cable",
+ "es": "cable eléctrico",
+ "fr": "câble électrique",
+ "nl": "elektriciteitsleiding",
+ "pt": "line-in",
+ "zh": "電纜"
+ },
+ "plant": {
+ "de": "kraftwerk",
+ "en": "power station",
+ "en-ca": "generating station",
+ "es": "central eléctrica",
+ "fr": "centrale électrique",
+ "nl": "elektriciteitscentrale",
+ "pt": "central eléctrica",
+ "pt-br": "usina",
+ "zh": "發電廠",
+ "zh-cn": "发电厂"
+ },
+ "pole": {
+ "de": "leitungsmast",
+ "en": "utility pole",
+ "es": "poste",
+ "fr": "poteau",
+ "nl": "paal",
+ "pt": "poste",
+ "zh": "电线杆",
+ "zh-hk": "電線杆"
+ },
+ "substation": {
+ "de": "umspann- oder schaltanlage",
+ "en": "electrical substation",
+ "es": "subestación eléctrica",
+ "fr": "poste électrique",
+ "nl": "onderstation",
+ "pt": "subestação",
+ "zh": "變電所"
+ },
+ "switch": {
+ "de": "schalter",
+ "en": "switch",
+ "es": "interruptor",
+ "fr": "interrupteur",
+ "nl": "schakelaar",
+ "pt": "interruptor",
+ "zh": "開關"
+ },
+ "switchgear": {
+ "de": "schaltanlage",
+ "en": "switchgear",
+ "fr": "appareillage électrique",
+ "pt": "dispositivo de manobra",
+ "zh": "高壓開關"
+ },
+ "terminal": {
+ "de": "klemme",
+ "en": "terminal",
+ "es": "borne",
+ "fr": "bornier",
+ "zh-cn": "quick disconnect terminal"
+ },
+ "tower": {
+ "de": "hochspannungsmast",
+ "en": "transmission tower",
+ "en-gb": "pylon",
+ "es": "torre de alta tensión",
+ "fr": "pylône électrique",
+ "nl": "hoogspanningsmast",
+ "pt": "torre de transmissão",
+ "zh": "輸電桿塔",
+ "zh-cn": "电塔"
+ }
+ },
+ "product": {
+ "pickles": {
+ "de": "sauergemüse",
+ "en": "pickle",
+ "es": "encurtido",
+ "fr": "aliments en saumure",
+ "nl": "ingelegde groente",
+ "pt": "picles",
+ "zh": "腌黄瓜"
+ }
+ },
+ "protected_area": {
+ "nature_reserve": {
+ "de": "naturschutzgebiet",
+ "en": "nature reserve",
+ "es": "reserva natural",
+ "fr": "réserve naturelle",
+ "nl": "natuurreservaat",
+ "pt": "reserva natural",
+ "pt-br": "reserva florestal",
+ "zh": "自然保护区",
+ "zh-hk": "自然保護區",
+ "zh-tw": "自然保護區"
+ }
+ },
+ "protection_title": {
+ "Bien de Interés Cultural": {
+ "en": "bien de interés cultural",
+ "fr": "bien d'intérêt culturel",
+ "pt": "bem de interesse cultural",
+ "zh": "西班牙文化財產"
+ },
+ "Gesamtanlage": {
+ "en": "gesamtanlage"
+ },
+ "National Wildlife Refuge": {
+ "en": "national wildlife refuge",
+ "es": "refugio nacional de vida silvestre",
+ "fr": "refuge faunique national",
+ "zh": "國家野生保護區",
+ "zh-cn": "国家野生动物保护区系统"
+ },
+ "National_Monument": {
+ "de": "national monuments in den vereinigten staaten",
+ "en": "national monument of the united states",
+ "en-ca": "national monument",
+ "en-gb": "national monument",
+ "es": "monumento nacional de los estados unidos de américa",
+ "fr": "monument national",
+ "nl": "nationaal monument in de verenigde staten",
+ "pt": "monumento nacional",
+ "zh": "國家紀念區"
+ },
+ "Naturschutzgebiet": {
+ "de": "naturschutzgebiet",
+ "en": "nature reserve",
+ "en-ca": "naturschutzgebiet",
+ "en-gb": "naturschutzgebiet",
+ "es": "naturschutzgebiet",
+ "fr": "réserve naturelle",
+ "nl": "naturschutzgebiet"
+ },
+ "Přírodní památka (PP)": {
+ "de": "naturmonument in der tschechischen republik",
+ "en": "natural monument in the czech republic",
+ "es": "monumento natural de la república checa",
+ "nl": "natuurmonument in tsjechië"
+ },
+ "State_Forest": {
+ "en": "state forest",
+ "fr": "forêt d'état"
+ },
+ "Wilderness Study Area": {
+ "en": "wilderness study area",
+ "es": "área de estudio de vida silvestre (estados unidos)"
+ },
+ "Wilderness_Area": {
+ "de": "totalreservat",
+ "en": "wilderness area",
+ "es": "área silvestre",
+ "fr": "réserve intégrale",
+ "nl": "wildernisgebied",
+ "zh": "公共莽原区"
+ },
+ "landskapsvernområde": {
+ "de": "landschaftsschutzgebiet",
+ "en": "protected landscape area",
+ "fr": "espace naturel protégé",
+ "nl": "beschermd landschap",
+ "pt": "paisagem protegida"
+ }
+ },
+ "public_transport": {
+ "platform": {
+ "en": "platform",
+ "pt": "plataforma"
+ },
+ "station": {
+ "en": "station",
+ "es": "estación",
+ "fr": "gare",
+ "nl": "stationsgebouw",
+ "pt": "estação",
+ "zh-cn": "站",
+ "zh-tw": "車站"
+ },
+ "stop_position": {
+ "de": "haltestelle",
+ "en": "transport stop",
+ "es": "parada de transporte",
+ "fr": "poteau d'arrêt",
+ "nl": "halte",
+ "zh": "車站",
+ "zh-cn": "车站",
+ "zh-tw": "公共運輸站"
+ }
+ },
+ "railway": {
+ "": {
+ "de": "gleisverschlingung",
+ "en": "gauntlet track",
+ "es": "interpenetración de las vías",
+ "fr": "voies enchevêtrées",
+ "nl": "strengelspoor",
+ "zh": "套轨",
+ "zh-cn": "联锁装置",
+ "de-ch": "elektronisches stellwerk"
+ },
+ "abandoned": {
+ "de": "bahnwanderweg",
+ "en": "rail trail",
+ "es": "vía verde",
+ "fr": "sentier ferroviaire",
+ "nl": "spoorwegpad",
+ "zh": "鐵路步道",
+ "en-ca": "abandoned railway",
+ "en-gb": "abandoned railway",
+ "zh-tw": "鐵路廢線"
+ },
+ "blockpost": {
+ "de": "blockstelle",
+ "en": "block post",
+ "zh": "闭塞站"
+ },
+ "buffer_stop": {
+ "de": "prellbock",
+ "en": "buffer stop",
+ "es": "topera",
+ "fr": "heurtoir",
+ "nl": "stootblok",
+ "pt": "para-choque de via",
+ "zh": "止衝擋",
+ "zh-cn": "车挡器"
+ },
+ "crossover": {
+ "de": "überleitstelle",
+ "en": "crossover",
+ "es": "puesto de banalización",
+ "nl": "overloopwissel",
+ "zh": "橫渡線",
+ "zh-cn": "渡线",
+ "zh-hk": "渡線"
+ },
+ "depot": {
+ "de": "bahnbetriebswerk",
+ "en": "motive power depot",
+ "fr": "dépôt de locomotives",
+ "nl": "depot",
+ "zh": "机务段",
+ "zh-tw": "機務段"
+ },
+ "derail": {
+ "de": "gleissperre",
+ "en": "derail",
+ "fr": "taquet dérailleur",
+ "nl": "stopontspoorblok",
+ "zh": "脫軌器",
+ "zh-cn": "脱轨器"
+ },
+ "disused": {
+ "de": "stillgelegte bahntrasse",
+ "en": "abandoned railway",
+ "fr": "ligne ferroviaire abandonnée",
+ "nl": "opgeheven spoorlijn",
+ "zh": "鐵路廢線"
+ },
+ "disused_station": {
+ "de": "ehemaliger bahnhof",
+ "en": "former railway station",
+ "en-gb": "disused railway station",
+ "fr": "ancienne gare ferroviaire",
+ "nl": "voormalig spoorwegstation",
+ "pt": "antiga estação ferroviária"
+ },
+ "ferry": {
+ "de": "eisenbahnfähre",
+ "en": "train ferry",
+ "es": "transbordador de trenes",
+ "fr": "traversier-rail",
+ "nl": "spoorpont",
+ "pt": "balsa ferroviária",
+ "zh": "火车渡轮"
+ },
+ "funicular": {
+ "de": "standseilbahn",
+ "en": "funicular",
+ "fr": "funiculaire",
+ "nl": "kabelspoorweg",
+ "zh": "纜索鐵路",
+ "zh-cn": "缆索铁路"
+ },
+ "halt": {
+ "de": "haltepunkt/haltestelle",
+ "de-at": "haltestelle",
+ "de-ch": "haltepunkt",
+ "en": "railway stop",
+ "es": "apeadero",
+ "fr": "halte ferroviaire",
+ "nl": "spoorweghalte",
+ "pt": "apeadeiro",
+ "zh": "招呼站",
+ "zh-hk": "無人站"
+ },
+ "hump_yard": {
+ "de": "ablaufberg",
+ "en": "hump",
+ "nl": "heuvelen",
+ "zh": "铁路驼峰"
+ },
+ "level_crossing": {
+ "de": "bahnübergang",
+ "en": "level crossing",
+ "es": "paso a nivel",
+ "fr": "passage à niveau",
+ "nl": "overweg",
+ "pt": "passagem de nível",
+ "zh": "平交道",
+ "zh-cn": "铁路道口",
+ "zh-hk": "鐵路道口"
+ },
+ "light_rail": {
+ "de": "stadtbahn",
+ "en": "light rail",
+ "es": "tren ligero",
+ "fr": "métro léger",
+ "nl": "lightrail",
+ "pt": "trem ligeiro",
+ "pt-br": "veículo leve sobre trilhos",
+ "zh": "輕軌運輸系統",
+ "zh-cn": "轻轨运输系统"
+ },
+ "milestone": {
+ "de": "streckenkilometer",
+ "en": "railway kilometre sign",
+ "es": "placa kilométrica"
+ },
+ "miniature": {
+ "de": "parkeisenbahn",
+ "en": "rideable miniature railway",
+ "es": "trenes miniatura",
+ "fr": "trains miniatures à passagers"
+ },
+ "monorail": {
+ "de": "einschienenbahn",
+ "en": "monorail",
+ "es": "monorraíl",
+ "pt": "monocarril",
+ "zh": "單軌鐵路",
+ "zh-cn": "单轨铁路"
+ },
+ "narrow_gauge": {
+ "de": "schmalspurbahn",
+ "en": "narrow-gauge railway",
+ "es": "ferrocarril de vía estrecha",
+ "fr": "voie étroite",
+ "nl": "smalspoorlijn",
+ "pt": "caminho de ferro de via estreita",
+ "pt-br": "ferrovia de bitola estreita",
+ "zh": "窄軌"
+ },
+ "phone": {
+ "de": "streckenfernsprecher"
+ },
+ "platform": {
+ "de": "bahnsteig",
+ "de-ch": "perron",
+ "en": "railway platform",
+ "es": "andén",
+ "fr": "quai",
+ "nl": "perron",
+ "pt": "plataforma ferroviária",
+ "zh": "車站月台",
+ "zh-cn": "车站月台",
+ "zh-hk": "月台"
+ },
+ "preserved": {
+ "de": "museumsbahn",
+ "en": "heritage railway",
+ "es": "tren histórico",
+ "fr": "chemin de fer touristique",
+ "nl": "toeristische spoorweg",
+ "zh": "观光铁路"
+ },
+ "proposed": {
+ "de": "geplante eisenbahnstrecke",
+ "en": "proposed railway line",
+ "fr": "ligne de chemin de fer en projet",
+ "pt": "linha ferroviária proposta",
+ "zh": "铁路线规划"
+ },
+ "rail": {
+ "de": "eisenbahnstrecke",
+ "en": "railway line",
+ "es": "línea férrea",
+ "fr": "ligne de chemin de fer",
+ "nl": "spoorlijn",
+ "pt": "linha ferroviária",
+ "zh": "鐵路線",
+ "zh-cn": "铁路线"
+ },
+ "railway_crossing": {
+ "de": "gleiskreuzung",
+ "en": "flat crossing"
+ },
+ "razed": {
+ "de": "stillgelegte bahntrasse",
+ "en": "abandoned railway",
+ "fr": "ligne ferroviaire abandonnée",
+ "nl": "opgeheven spoorlijn",
+ "zh": "鐵路廢線"
+ },
+ "rolling_highway": {
+ "de": "rollende landstraße",
+ "en": "rolling highway",
+ "es": "autopista ferroviaria",
+ "fr": "route roulante",
+ "nl": "rollende landstraße",
+ "pt": "rola",
+ "zh": "滚动公路"
+ },
+ "roundhouse": {
+ "de": "lokschuppen",
+ "en": "railway roundhouse",
+ "en-gb": "roundhouse",
+ "es": "rotonda",
+ "fr": "rotonde ferroviaire",
+ "nl": "locomotiefloods",
+ "pt": "rotunda",
+ "zh": "扇形車庫"
+ },
+ "service_station": {
+ "de": "betriebsbahnhof",
+ "en": "staff halt",
+ "nl": "personeelshalte",
+ "zh": "线路所"
+ },
+ "signal": {
+ "de": "eisenbahnsignal",
+ "en": "railway signal",
+ "es": "señales de ferrocarril",
+ "fr": "signalisation ferroviaire",
+ "nl": "spoorwegsein",
+ "pt": "sinal ferroviário",
+ "zh": "铁路信号机",
+ "zh-hk": "鐵路信號機",
+ "zh-tw": "鐵路號誌機"
+ },
+ "signal_box": {
+ "de": "stellwerk",
+ "en": "signal box",
+ "nl": "seinhuis",
+ "en-ca": "signalling control",
+ "en-gb": "signalling control",
+ "es": "enclavamiento",
+ "fr": "poste d'aiguillage",
+ "zh": "信号楼",
+ "zh-cn": "信号控制"
+ },
+ "station": {
+ "de": "bahnhof",
+ "en": "railway station",
+ "en-ca": "train station",
+ "es": "estación de ferrocarril",
+ "fr": "gare ferroviaire",
+ "nl": "spoorwegstation",
+ "pt": "estação ferroviária",
+ "zh": "鐵路車站",
+ "zh-cn": "铁路车站",
+ "zh-hk": "鐵路站"
+ },
+ "stop": {
+ "de": "haltepunkt/haltestelle",
+ "de-at": "haltestelle",
+ "de-ch": "haltepunkt",
+ "en": "railway stop",
+ "es": "apeadero",
+ "fr": "halte ferroviaire",
+ "nl": "spoorweghalte",
+ "pt": "apeadeiro",
+ "zh": "招呼站",
+ "zh-hk": "無人站"
+ },
+ "subway": {
+ "de": "u-bahn",
+ "en": "rapid transit",
+ "es": "metro",
+ "fr": "métro",
+ "nl": "metrosysteem",
+ "pt": "metropolitano",
+ "pt-br": "metrô",
+ "zh": "地鐵",
+ "zh-cn": "地铁"
+ },
+ "switch": {
+ "de": "weiche",
+ "en": "railroad switch",
+ "en-gb": "railway switch",
+ "es": "desvío",
+ "fr": "aiguillage",
+ "nl": "wissel",
+ "pt": "aparelho de mudança de via",
+ "pt-br": "aparelhos de mudança de via",
+ "zh": "轉轍器"
+ },
+ "tram": {
+ "de": "straßenbahnsystem",
+ "en": "tram system",
+ "es": "red de tranvías",
+ "fr": "réseau de tramway",
+ "nl": "tramsysteem",
+ "pt": "rede de eléctricos",
+ "pt-br": "rede de bondes"
+ },
+ "tram_stop": {
+ "de": "straßenbahnhaltestelle",
+ "en": "tram stop",
+ "en-ca": "streetcar stop",
+ "es": "parada de tranvía",
+ "fr": "station de tramway",
+ "nl": "tramhalte",
+ "pt": "parada de bonde",
+ "zh": "電車站"
+ },
+ "traverser": {
+ "de": "schiebebühne",
+ "en": "railway traverser",
+ "es": "mesa de transferencia",
+ "fr": "pont transbordeur",
+ "zh": "移车台"
+ },
+ "turntable": {
+ "de": "drehscheibe",
+ "en": "railway turntable",
+ "es": "mesa giratoria",
+ "fr": "plaque tournante",
+ "nl": "draaischijf",
+ "pt": "girador ferroviário",
+ "zh": "轉車台",
+ "zh-cn": "調度場",
+ "zh-tw": "調車轉盤"
+ },
+ "vacancy_detection": {
+ "de": "gleisfreimeldeanlage",
+ "en": "railway vacancy detection",
+ "nl": "treindetectie",
+ "zh": "免检轨道装置",
+ "zh-cn": "列车位置检测装置"
+ },
+ "yard": {
+ "de": "güterbahnhof",
+ "en": "goods station",
+ "es": "estación de mercancías",
+ "fr": "gare de marchandise",
+ "nl": "goederenstation",
+ "pt": "pátio de manobras",
+ "pt-br": "pátio ferroviário",
+ "zh": "貨運車站",
+ "zh-cn": "货运车站"
+ }
+ },
+ "ramp": {
+ "": {
+ "de": "rollstuhlrampe",
+ "en": "wheelchair ramp",
+ "es": "rampa para silla de ruedas",
+ "zh": "輪椅斜道"
+ }
+ },
+ "reclaimed": {
+ "yes": {
+ "de": "landgewinnung",
+ "en": "land reclamation",
+ "es": "tierras ganadas al mar",
+ "fr": "terre-plein",
+ "nl": "landaanwinning",
+ "pt": "aterramento marítimo",
+ "zh": "填海"
+ }
+ },
+ "recycling_type": {
+ "centre": {
+ "en": "recycling center",
+ "en-gb": "recycling centre",
+ "zh": "回收站"
+ },
+ "container": {
+ "en": "recycling bin",
+ "zh": "分類回收桶"
+ }
+ },
+ "reef": {
+ "coral": {
+ "de": "korallenriff",
+ "en": "coral reef",
+ "es": "arrecife de coral",
+ "fr": "récif corallien",
+ "nl": "koraalrif",
+ "pt": "recife de coral",
+ "zh": "珊瑚礁"
+ }
+ },
+ "religion": {
+ "Gonabadi_Dervish": {
+ "en": "gonabadi dervish"
+ },
+ "animist": {
+ "de": "animismus",
+ "en": "animism",
+ "es": "animismo",
+ "fr": "animisme",
+ "nl": "animisme",
+ "pt": "animismo",
+ "zh": "泛靈論"
+ },
+ "bahai": {
+ "de": "bahaitum",
+ "en": "bahá'í faith",
+ "es": "fe bahá'í",
+ "fr": "bahaïsme",
+ "nl": "bahai",
+ "pt": "fé bahá'í",
+ "zh": "巴哈伊信仰"
+ },
+ "buddhist": {
+ "de": "buddhismus",
+ "en": "buddhism",
+ "es": "budismo",
+ "fr": "bouddhisme",
+ "nl": "boeddhisme",
+ "pt": "budismo",
+ "zh": "佛教"
+ },
+ "caodaism": {
+ "de": "caodaismus",
+ "en": "caodaism",
+ "es": "caodaísmo",
+ "fr": "caodaïsme",
+ "nl": "cao dai",
+ "pt": "cao dai",
+ "zh": "高台教"
+ },
+ "christian": {
+ "de": "christentum",
+ "en": "christianity",
+ "es": "cristianismo",
+ "fr": "christianisme",
+ "nl": "christendom",
+ "pt": "cristianismo",
+ "zh": "基督教"
+ },
+ "confucian": {
+ "de": "konfuzianismus",
+ "en": "confucianism",
+ "es": "confucianismo",
+ "fr": "confucianisme",
+ "nl": "confucianisme",
+ "pt": "confucionismo",
+ "zh": "儒家"
+ },
+ "fujiko": {
+ "en": "fujikō"
+ },
+ "hindy": {
+ "de": "hinduismus",
+ "en": "hinduism",
+ "es": "hinduismo",
+ "fr": "hindouisme",
+ "nl": "hindoeïsme",
+ "pt": "hinduísmo",
+ "zh": "印度教"
+ },
+ "jain": {
+ "de": "jainismus",
+ "en": "jainism",
+ "es": "jainismo",
+ "fr": "jaïnisme",
+ "nl": "jaïnisme",
+ "pt": "jainismo",
+ "zh": "耆那教"
+ },
+ "jewish": {
+ "de": "judentum",
+ "en": "judaism",
+ "es": "judaísmo",
+ "fr": "judaïsme",
+ "nl": "jodendom",
+ "pt": "judaísmo",
+ "zh": "猶太教",
+ "zh-cn": "犹太教"
+ },
+ "multifaith": {
+ "de": "raum der stille",
+ "en": "multifaith space",
+ "zh": "多信仰祷告室"
+ },
+ "muslim": {
+ "en": "islam",
+ "pt": "islamismo",
+ "pt-br": "islã",
+ "zh": "伊斯兰教",
+ "zh-hk": "伊斯蘭教",
+ "zh-tw": "伊斯蘭教"
+ },
+ "pagan": {
+ "de": "neopaganismus",
+ "en": "modern paganism",
+ "es": "neopaganismo",
+ "fr": "néopaganisme",
+ "nl": "neopaganisme",
+ "pt": "neopaganismo",
+ "zh": "新異教主義",
+ "zh-cn": "新异教主义"
+ },
+ "pastafarian": {
+ "de": "pastafarianismus",
+ "en": "pastafarianism",
+ "es": "pastafarismo",
+ "fr": "pastafarisme",
+ "pt": "pastafarianismo",
+ "zh": "飞面神教"
+ },
+ "scientologist": {
+ "en": "scientology",
+ "es": "cienciología",
+ "fr": "scientologie",
+ "pt": "cientologia",
+ "zh": "山達基",
+ "zh-cn": "山达基"
+ },
+ "shinto": {
+ "de": "shintō",
+ "en": "shinto",
+ "es": "sintoísmo",
+ "fr": "shintoïsme",
+ "nl": "shintoïsme",
+ "pt": "xintoísmo",
+ "zh": "神道"
+ },
+ "sikh": {
+ "de": "sikhismus",
+ "en": "sikhism",
+ "es": "sijismo",
+ "fr": "sikhisme",
+ "nl": "sikhisme",
+ "pt": "sikhismo",
+ "zh": "锡克教"
+ },
+ "spiritualist": {
+ "de": "spiritualismus (19. jahrhundert)",
+ "de-at": "spiritualismi",
+ "de-ch": "spiritualismi",
+ "en": "spiritualism",
+ "en-ca": "spiritualismi",
+ "es": "espiritualismo",
+ "fr": "spiritualisme moderne anglo-saxon",
+ "nl": "spiritualisme",
+ "pt": "espiritualismo",
+ "pt-br": "spiritualismi",
+ "zh": "心靈論"
+ },
+ "taoist": {
+ "de": "daoismus",
+ "en": "taoism",
+ "es": "taoísmo",
+ "fr": "taoïsme",
+ "nl": "taoïsme",
+ "pt": "taoismo",
+ "zh": "道教"
+ },
+ "unitarian_universalist": {
+ "en": "unitarian universalism",
+ "es": "unitarismo universalista",
+ "fr": "universalisme unitarien",
+ "nl": "unitaristisch universalisme",
+ "pt": "unitário-universalismo",
+ "zh": "普救一位神教",
+ "zh-hk": "一神普救派"
+ },
+ "voodoo": {
+ "en": "haitian vodou",
+ "es": "vudú haitiano",
+ "fr": "vaudou haïtien",
+ "nl": "vodou",
+ "pt": "vodu haitiano",
+ "zh": "巫毒娃娃"
+ },
+ "yazidi": {
+ "de": "jesiden",
+ "en": "yazidis",
+ "es": "yazidíes",
+ "fr": "yézidis",
+ "nl": "jezidi's",
+ "pt": "iazidis",
+ "zh": "雅兹迪",
+ "zh-hk": "雅茲迪",
+ "zh-tw": "雅茲迪"
+ },
+ "zoroastrian": {
+ "de": "zoroastrismus",
+ "en": "zoroastrianism",
+ "es": "zoroastrismo",
+ "fr": "zoroastrisme",
+ "nl": "zoroastrisme",
+ "pt": "zoroastrismo",
+ "zh": "琐罗亚斯德教"
+ }
+ },
+ "resource": {
+ "aggregate": {
+ "en": "construction aggregate",
+ "fr": "granulat de construction",
+ "nl": "toeslagmateriaal",
+ "pt": "agregado de construção civil",
+ "zh": "骨料"
+ },
+ "bauxite": {
+ "de": "bauxit",
+ "en": "bauxite",
+ "es": "bauxita",
+ "nl": "bauxiet",
+ "pt": "bauxita",
+ "zh": "铝土矿",
+ "zh-hk": "鋁土礦",
+ "zh-tw": "鋁土礦"
+ },
+ "clay": {
+ "de": "ton",
+ "de-ch": "ton (bodenart)",
+ "en": "clay",
+ "es": "arcilla",
+ "fr": "argile",
+ "nl": "klei",
+ "pt": "argila",
+ "zh": "黏土"
+ },
+ "coal": {
+ "de": "kohle",
+ "en": "coal",
+ "es": "carbón",
+ "fr": "charbon",
+ "nl": "steenkool",
+ "pt": "carvão mineral",
+ "zh": "煤"
+ },
+ "copper": {
+ "de": "kupfer",
+ "en": "copper",
+ "es": "cobre",
+ "fr": "cuivre",
+ "nl": "koper",
+ "pt": "cobre",
+ "zh": "銅",
+ "zh-cn": "铜"
+ },
+ "gas": {
+ "de": "erdgas",
+ "en": "natural gas",
+ "es": "gas natural",
+ "fr": "gaz naturel",
+ "nl": "aardgas",
+ "pt": "gás natural",
+ "zh": "天然气"
+ },
+ "gold": {
+ "en": "gold",
+ "es": "oro",
+ "fr": "or",
+ "nl": "goud",
+ "pt": "ouro",
+ "zh": "金"
+ },
+ "gravel": {
+ "de": "kiesel",
+ "en": "gravel",
+ "es": "grava",
+ "fr": "grave",
+ "nl": "gruis",
+ "pt": "cascalho",
+ "zh": "砾石",
+ "zh-hk": "礫石",
+ "zh-tw": "礫石"
+ },
+ "iron_ore": {
+ "de": "eisenerz",
+ "en": "iron ore",
+ "fr": "minerai de fer",
+ "nl": "ijzererts",
+ "pt": "minério de ferro",
+ "zh": "铁矿",
+ "zh-hk": "鐵礦",
+ "zh-tw": "鐵礦"
+ },
+ "limestone": {
+ "de": "kalkstein",
+ "en": "limestone",
+ "es": "caliza",
+ "fr": "calcaire",
+ "nl": "kalksteen",
+ "pt": "calcário",
+ "zh": "石灰岩"
+ },
+ "oil": {
+ "de": "erdöl",
+ "en": "petroleum",
+ "es": "petróleo",
+ "fr": "pétrole",
+ "nl": "aardolie",
+ "pt": "petróleo",
+ "zh": "石油"
+ },
+ "peat": {
+ "de": "torf",
+ "en": "peat",
+ "es": "turba",
+ "fr": "tourbe",
+ "nl": "turf",
+ "pt": "turfa",
+ "zh": "泥炭"
+ },
+ "sand": {
+ "en": "sand",
+ "es": "arena",
+ "fr": "sable",
+ "nl": "zand",
+ "pt": "areia",
+ "zh": "沙"
+ },
+ "water": {
+ "de": "flüssiges wasser",
+ "en": "liquid water",
+ "es": "agua líquida",
+ "fr": "eau liquide",
+ "nl": "vloeibaar water",
+ "pt": "água líquida",
+ "zh": "液态水",
+ "zh-tw": "液態水",
+ "de-ch": "wasser",
+ "en-ca": "water",
+ "en-gb": "water",
+ "pt-br": "água",
+ "zh-cn": "水",
+ "zh-hk": "水"
+ }
+ },
+ "road_marking": {
+ "solid_stop_line": {
+ "de": "haltlinie",
+ "en": "stop line"
+ }
+ },
+ "robot": {
+ "": {
+ "de": "unbemanntes luftfahrzeug",
+ "en": "unmanned aerial vehicle",
+ "es": "vehículo aéreo no tripulado",
+ "fr": "drone",
+ "nl": "onbemand luchtvaartuig",
+ "pt": "veículo aéreo não tripulado",
+ "zh": "無人航空載具",
+ "zh-cn": "机器人吸尘器",
+ "zh-tw": "機器人吸塵器"
+ }
+ },
+ "roof": {
+ "": {
+ "de": "kuppel",
+ "en": "dome",
+ "es": "cúpula",
+ "fr": "dôme",
+ "nl": "koepel",
+ "pt": "cúpula",
+ "zh": "圓頂"
+ }
+ },
+ "room": {
+ "waiting": {
+ "de": "wartehalle",
+ "en": "waiting room",
+ "es": "sala de espera",
+ "fr": "salle d'attente",
+ "nl": "wachtkamer",
+ "zh": "等待室",
+ "zh-cn": "候车室"
+ }
+ },
+ "route": {
+ "detour": {
+ "de": "umleitung",
+ "en": "detour",
+ "nl": "uitwijkroute",
+ "zh": "便道"
+ },
+ "evacuation": {
+ "de": "evakuierung",
+ "en": "emergency evacuation",
+ "es": "evacuación",
+ "fr": "évacuation d'urgence",
+ "nl": "evacuatie",
+ "pt": "evacuação",
+ "zh": "紧急撤离"
+ },
+ "hiking": {
+ "de": "wanderweg",
+ "en": "hiking trail",
+ "es": "sendero",
+ "fr": "sentier de randonnée",
+ "nl": "wandelpad",
+ "pt": "percurso pedestre",
+ "zh": "步道"
+ },
+ "piste": {
+ "de": "skipiste",
+ "en": "piste",
+ "es": "pista de esquí",
+ "fr": "piste de ski",
+ "nl": "skipiste",
+ "pt": "pista de esqui",
+ "zh": "雪道"
+ },
+ "railway": {
+ "de": "eisenbahn",
+ "en": "railway",
+ "es": "ferrocarril",
+ "fr": "chemin de fer",
+ "nl": "spoorwegsysteem",
+ "pt": "ferrovia",
+ "zh": "鐵路系統",
+ "zh-cn": "铁路系统"
+ },
+ "road": {
+ "de": "straße",
+ "de-ch": "strasse",
+ "en": "road",
+ "es": "carretera",
+ "fr": "route",
+ "nl": "weg",
+ "pt": "estrada",
+ "zh": "道路"
+ },
+ "snowmobile": {
+ "de": "schneemobil",
+ "en": "snowmobile",
+ "es": "motonieve",
+ "fr": "motoneige",
+ "nl": "sneeuwscooter",
+ "pt": "moto de neve",
+ "zh": "雪上摩托車"
+ },
+ "subway": {
+ "de": "u-bahn-linie",
+ "en": "rapid transit railway line",
+ "en-gb": "metro line",
+ "es": "línea de metro",
+ "fr": "ligne de métro",
+ "nl": "metrolijn",
+ "pt": "linha de metropolitano",
+ "pt-br": "linha de metrô",
+ "zh": "地鐵路線",
+ "zh-cn": "地铁线路",
+ "zh-tw": "捷運路線"
+ },
+ "train": {
+ "de": "hauptbahn",
+ "en": "main line",
+ "fr": "ligne de chemin de fer principale",
+ "nl": "hoofdspoorweg",
+ "zh": "正线",
+ "zh-hk": "正線"
+ },
+ "transhumance": {
+ "de": "transhumanz",
+ "en": "transhumance",
+ "es": "trashumancia",
+ "pt": "transumância",
+ "zh": "移牧"
+ }
+ },
+ "safety": {
+ "": {
+ "de": "gesichtsmaske vorgeschrieben",
+ "en": "face mask mandatory",
+ "fr": "port du masque obligatoire",
+ "pt": "uso de máscara obrigatório"
+ }
+ },
+ "sauna": {
+ "hanjeungmak": {
+ "en": "hanjeungmak"
+ },
+ "infrared": {
+ "de": "infrarotwärmekabine",
+ "en": "infrared sauna"
+ },
+ "smoke": {
+ "de": "rauchsauna",
+ "en": "smoke sauna",
+ "nl": "rooksauna",
+ "pt": "sauna de fumo"
+ }
+ },
+ "school": {
+ "": {
+ "de": "förderschule",
+ "en": "special education school",
+ "es": "escuela de educación especial",
+ "fr": "école spécialisée",
+ "pt": "necessidades educativas especiais",
+ "zh": "特殊學校",
+ "de-ch": "gesamtschule",
+ "en-ca": "comprehensive school",
+ "en-gb": "comprehensive school",
+ "nl": "scholengemeenschap",
+ "zh-cn": "综合学校"
+ }
+ },
+ "seamark": {
+ "": {
+ "de": "offshore-windpark",
+ "en": "offshore wind farm",
+ "fr": "parc éolien en mer",
+ "pt": "proibido pescar",
+ "es": "grada",
+ "nl": "trailerhelling",
+ "zh": "滑道",
+ "pt-br": "ponte",
+ "zh-cn": "桥",
+ "zh-hk": "橋",
+ "zh-tw": "橋"
+ }
+ },
+ "service": {
+ "": {
+ "en": "cycle repair shop",
+ "fr": "atelier de réparation de cycles"
+ },
+ "aircraft_control": {
+ "de": "tower",
+ "en": "control tower",
+ "es": "torre de control",
+ "fr": "tour de contrôle",
+ "nl": "verkeerstoren",
+ "pt": "torre de controle",
+ "zh": "塔台"
+ },
+ "alley": {
+ "de": "gasse",
+ "en": "alleyway",
+ "es": "callejón",
+ "fr": "ruelle",
+ "nl": "steeg",
+ "pt-br": "beco",
+ "zh": "巷道"
+ },
+ "driveway": {
+ "de": "zufahrt",
+ "en": "driveway",
+ "nl": "oprijlaan",
+ "zh": "私家車道"
+ },
+ "siding": {
+ "de": "nebengleis",
+ "en": "siding",
+ "fr": "voie d’évitement",
+ "nl": "nevenspoor",
+ "pt": "desvio",
+ "zh": "侧线",
+ "zh-hk": "側線",
+ "zh-cn": "置留线"
+ },
+ "spur": {
+ "de": "gleisanschluss",
+ "en": "industrial spur",
+ "fr": "embranchement particulier",
+ "nl": "spooraansluiting",
+ "zh": "侧线"
+ },
+ "yard": {
+ "de": "rangierbahnhof",
+ "en": "rail yard",
+ "es": "depósito de trenes",
+ "fr": "dépôt de trains",
+ "nl": "opstelterrein",
+ "pt": "pátio de trens",
+ "zh": "车辆段",
+ "zh-hk": "鐵路車廠",
+ "zh-tw": "機廠"
+ }
+ },
+ "shelter_type": {
+ "lean_to": {
+ "en": "lean-to",
+ "es": "alpendre",
+ "fr": "appentis",
+ "pt": "puxadinho"
+ },
+ "picnic_shelter": {
+ "en": "picnic shelter",
+ "fr": "abri de pique-nique"
+ }
+ },
+ "shop": {
+ "agrarian": {
+ "de": "agrargeschäft",
+ "en": "agrarian shop"
+ },
+ "alcohol": {
+ "de": "spirituosengeschäft",
+ "en": "liquor store",
+ "es": "licorería",
+ "nl": "slijterij",
+ "pt": "botillería",
+ "zh": "酒品店",
+ "fr": "cave à vin"
+ },
+ "anime": {
+ "de": "animeladen",
+ "en": "anime shop",
+ "nl": "animewinkel",
+ "zh": "動畫商店"
+ },
+ "antiques": {
+ "de": "antiquitätengeschäft",
+ "en": "antique shop",
+ "es": "tienda de antigüedades",
+ "fr": "antiquaire",
+ "pt": "antiquário",
+ "zh": "藝術與古董購物"
+ },
+ "appliance": {
+ "de": "haushaltsgerätladen",
+ "en": "appliance store"
+ },
+ "art": {
+ "en": "commercial art gallery",
+ "es": "galería de arte comercial",
+ "nl": "kunstgalerie"
+ },
+ "atv": {
+ "de": "quadladen",
+ "en": "quad shop"
+ },
+ "baby_goods": {
+ "de": "babywarenladen",
+ "en": "baby goods shop",
+ "nl": "babywinkel"
+ },
+ "bag": {
+ "de": "taschengeschäft",
+ "en": "bag shop",
+ "nl": "tassenwinkel"
+ },
+ "bakery": {
+ "de": "bäckerei",
+ "en": "bakery",
+ "es": "panadería",
+ "fr": "boulangerie",
+ "nl": "bakkerij",
+ "pt": "padaria",
+ "zh": "西餅店",
+ "zh-cn": "西饼店"
+ },
+ "bathroom_furnishing": {
+ "de": "badezimmermöbelgeschäft",
+ "en": "bathroom furnishing store"
+ },
+ "beauty": {
+ "de": "schönheitssalon",
+ "en": "beauty salon",
+ "es": "salón de belleza",
+ "fr": "salon de beauté",
+ "nl": "schoonheidssalon",
+ "pt": "salão de beleza",
+ "zh": "美容院"
+ },
+ "bed": {
+ "de": "bettengeschäft",
+ "en": "bed shop",
+ "fr": "magasin de literie"
+ },
+ "beverages": {
+ "de": "getränkemarkt",
+ "en": "beverage shop",
+ "nl": "drankwinkel"
+ },
+ "bicycle": {
+ "de": "fahrradladen",
+ "en": "bike shop",
+ "nl": "fietsenwinkel"
+ },
+ "boat": {
+ "de": "bootsladen",
+ "en": "boat shop"
+ },
+ "bookmaker": {
+ "de": "buchmacher",
+ "en": "bookmaker",
+ "es": "corredor de apuestas",
+ "zh": "博彩公司"
+ },
+ "books": {
+ "de": "buchhandlung",
+ "en": "bookstore",
+ "en-gb": "bookshop",
+ "es": "librería",
+ "fr": "librairie",
+ "nl": "boekhandel",
+ "pt": "livraria",
+ "zh": "書店",
+ "zh-cn": "书店"
+ },
+ "boutique": {
+ "en": "boutique",
+ "nl": "boetiek",
+ "zh": "時裝店"
+ },
+ "brewing_supplies": {
+ "de": "brauzubehör",
+ "en": "brewing supply"
+ },
+ "butcher": {
+ "de": "fleischerei",
+ "en": "butcher shop",
+ "es": "carnicería",
+ "fr": "boucherie",
+ "nl": "slagerij"
+ },
+ "camera": {
+ "de": "kameraladen",
+ "en": "camera shop"
+ },
+ "candles": {
+ "de": "kerzenladen",
+ "en": "candle shop",
+ "nl": "kaarsenwinkel"
+ },
+ "cannabis": {
+ "de": "coffeeshop",
+ "en": "cannabis coffee shop",
+ "es": "coffee shop",
+ "fr": "coffee shop",
+ "nl": "coffeeshop",
+ "pt": "coffeeshop",
+ "zh": "大麻咖啡店"
+ },
+ "car": {
+ "de": "autohaus",
+ "en": "car dealership",
+ "es": "concesionaria de autos",
+ "fr": "distribution automobile",
+ "nl": "autohandel",
+ "pt": "concessionária de carros",
+ "zh": "汽車經銷商"
+ },
+ "car_parts": {
+ "de": "autoteileladen",
+ "en": "car parts shop"
+ },
+ "car_repair": {
+ "de": "autowerkstatt",
+ "en": "automobile repair shop",
+ "en-gb": "garage",
+ "es": "taller mecánico",
+ "fr": "atelier de réparation automobile",
+ "nl": "garage",
+ "pt": "oficina mecânica",
+ "zh": "汽車維修廠"
+ },
+ "carpet": {
+ "de": "teppichladen",
+ "en": "carpet shop"
+ },
+ "chandler": {
+ "de": "schiffsausrüster",
+ "en": "ship chandler",
+ "fr": "shipchandler",
+ "nl": "scheepsbevoorrader",
+ "zh": "船用杂货商"
+ },
+ "charity": {
+ "de": "secondhandladen",
+ "en": "charity shop",
+ "es": "tienda de segunda mano",
+ "fr": "boutique de charité",
+ "nl": "kringloopwinkel",
+ "pt": "brechó",
+ "zh": "义卖商店",
+ "zh-cn": "古着",
+ "zh-hk": "古着",
+ "zh-tw": "古著"
+ },
+ "cheese": {
+ "de": "käserei",
+ "en": "cheesery",
+ "es": "quesería",
+ "fr": "fromagerie",
+ "nl": "kaasmakerij"
+ },
+ "chemist": {
+ "de": "drogerie",
+ "en": "drugstore",
+ "es": "droguería",
+ "fr": "droguerie",
+ "nl": "drogist",
+ "zh": "藥妝店"
+ },
+ "chocolate": {
+ "de": "schokoladenladen",
+ "en": "chocolate shop"
+ },
+ "clothes": {
+ "de": "bekleidungsgeschäft",
+ "en": "clothing store",
+ "es": "tienda de ropa",
+ "fr": "magasin de vêtements",
+ "nl": "kledingwinkel",
+ "pt": "loja de roupas",
+ "zh": "服裝店"
+ },
+ "collector": {
+ "de": "sammlerartikelladen",
+ "en": "collector's items store"
+ },
+ "computer": {
+ "de": "computerladen",
+ "en": "computer shop",
+ "fr": "magasin d'informatique",
+ "nl": "computerwinkel"
+ },
+ "confectionery": {
+ "de": "süßwarenladen",
+ "en": "confectionery store",
+ "en-gb": "sweet shop",
+ "es": "tienda de confitería",
+ "fr": "confiserie",
+ "nl": "snoepwinkel",
+ "pt": "confeitaria"
+ },
+ "convenience": {
+ "en": "alfamart",
+ "zh": "阿爾法零售集團",
+ "de": "convenience shop",
+ "en-ca": "convenience store",
+ "en-gb": "convenience store",
+ "es": "tienda de conveniencia",
+ "fr": "épicerie",
+ "nl": "gemakswinkel",
+ "pt": "loja de conveniência"
+ },
+ "copyshop": {
+ "de": "copyshop",
+ "en": "copy shop",
+ "fr": "magasin de photocopies",
+ "nl": "copyshop",
+ "zh": "影印店"
+ },
+ "cosmetics": {
+ "de": "kosmetikladen",
+ "en": "cosmetic shop",
+ "fr": "magasin de cosmétique",
+ "nl": "cosmeticawinkel"
+ },
+ "country_store": {
+ "de": "dorfladen",
+ "en": "general store",
+ "fr": "magasin général",
+ "zh": "常規市集"
+ },
+ "craft": {
+ "de": "kunstbedarfladen",
+ "en": "art and crafts shop"
+ },
+ "curtain": {
+ "de": "gardinengeschäft",
+ "en": "curtain shop"
+ },
+ "dairy": {
+ "de": "milchladen",
+ "en": "dairy store"
+ },
+ "deli": {
+ "de": "feinkostladen",
+ "en": "delicatessen",
+ "nl": "delicatessenwinkel",
+ "pt": "delicatesse",
+ "zh": "熟食店"
+ },
+ "department_store": {
+ "de": "warenhaus",
+ "de-ch": "kaufhaus",
+ "en": "department store",
+ "es": "grandes almacenes",
+ "fr": "grand magasin",
+ "nl": "warenhuis",
+ "pt": "grande armazém",
+ "pt-br": "loja de departamento",
+ "zh": "百貨公司",
+ "zh-cn": "百货公司"
+ },
+ "doityourself": {
+ "de": "baumarkt",
+ "en": "hardware store",
+ "es": "ferretería",
+ "fr": "quincaillerie",
+ "nl": "bouwmarkt",
+ "pt": "loja de ferragens",
+ "zh": "五金店"
+ },
+ "doors": {
+ "de": "türladen",
+ "en": "door shop",
+ "nl": "deurenwinkel"
+ },
+ "dry_cleaning": {
+ "de": "chemische reinigung",
+ "en": "dry cleaner",
+ "nl": "stomerij"
+ },
+ "e-cigarette": {
+ "de": "e-zigarettenladen",
+ "en": "vape shop"
+ },
+ "electrical": {
+ "de": "elektrofachgeschäft",
+ "en": "electrical supply store",
+ "fr": "magasin de matériel électrique"
+ },
+ "electronics": {
+ "de": "elektronikladen",
+ "en": "electronics store",
+ "es": "tienda de electrónicos",
+ "fr": "magasin d'électronique",
+ "nl": "elektronicawinkel"
+ },
+ "energy": {
+ "de": "energieanbieter",
+ "en": "energy provider"
+ },
+ "equestrian": {
+ "en": "tack shop"
+ },
+ "erotic": {
+ "de": "sexshop",
+ "en": "sex shop",
+ "nl": "seksshop",
+ "zh": "成人用品店"
+ },
+ "estate_agent": {
+ "de": "immobilienmakler",
+ "en": "real estate broker",
+ "es": "agente inmobiliario",
+ "fr": "agent immobilier",
+ "nl": "vastgoedmakelaar",
+ "pt-br": "agente imobiliário",
+ "zh": "地產代理"
+ },
+ "fabric": {
+ "de": "stoffladen",
+ "en": "fabric shop",
+ "nl": "stoffenwinkel"
+ },
+ "farm": {
+ "de": "hofladen",
+ "en": "farm shop"
+ },
+ "fashion": {
+ "de": "bekleidungsgeschäft",
+ "en": "clothing store",
+ "es": "tienda de ropa",
+ "fr": "magasin de vêtements",
+ "nl": "kledingwinkel",
+ "pt": "loja de roupas",
+ "zh": "服裝店"
+ },
+ "fireplace": {
+ "de": "kaminofenladen",
+ "en": "fireplace shop",
+ "nl": "haardwinkel"
+ },
+ "fishing": {
+ "de": "angelzubehörladen",
+ "en": "fishing equipment store"
+ },
+ "fishmonger": {
+ "de": "fischhändler",
+ "en": "fishmonger",
+ "es": "pescadero",
+ "fr": "poissonnier",
+ "nl": "visboer"
+ },
+ "flooring": {
+ "de": "fußbodengeschäft",
+ "en": "flooring shop"
+ },
+ "florist": {
+ "de": "blumenladen",
+ "en": "flower shop",
+ "es": "florería",
+ "fr": "fleuriste",
+ "nl": "bloemisterij",
+ "pt": "loja de flores",
+ "zh": "花店"
+ },
+ "frame": {
+ "de": "rahmenladen",
+ "en": "frame shop",
+ "nl": "lijstenwinkel"
+ },
+ "free_flying": {
+ "de": "gleitsegelfachgeschäft",
+ "en": "free flying equipment store"
+ },
+ "frozen_food": {
+ "de": "tiefkühlkostladen",
+ "en": "frozen food shop"
+ },
+ "fuel": {
+ "de": "treibstofffachgeschäft",
+ "en": "fuel shop"
+ },
+ "funeral_directors": {
+ "de": "bestattungsinstitut",
+ "en": "funeral home",
+ "es": "funeraria",
+ "fr": "funérarium",
+ "nl": "uitvaartcentrum",
+ "pt": "funerária",
+ "zh": "殯儀館"
+ },
+ "funerals_directors": {
+ "de": "bestatter",
+ "en": "funeral director",
+ "es": "director funerario",
+ "fr": "pompes funèbres",
+ "nl": "begrafenisondernemer",
+ "zh": "禮儀師"
+ },
+ "furniture": {
+ "de": "möbelhaus",
+ "en": "furniture shop",
+ "es": "tienda de muebles",
+ "fr": "magasin de meubles",
+ "nl": "meubelwinkel",
+ "pt": "loja de móveis"
+ },
+ "games": {
+ "de": "brettspieleladen",
+ "en": "board games shop",
+ "nl": "bordspellenwinkel"
+ },
+ "garden_centre": {
+ "de": "gartencenter",
+ "en": "garden centre",
+ "es": "centro de jardinería",
+ "fr": "jardinerie",
+ "nl": "tuincentrum"
+ },
+ "garden_furniture": {
+ "de": "gartenmöbelladen",
+ "en": "garden furniture shop"
+ },
+ "gas": {
+ "de": "gasflaschenladen",
+ "en": "bottled gas shop",
+ "nl": "gasfleswinkel"
+ },
+ "general": {
+ "de": "dorfladen",
+ "en": "general store",
+ "fr": "magasin général",
+ "zh": "常規市集"
+ },
+ "gift": {
+ "de": "andenkenladen",
+ "en": "gift shop",
+ "fr": "boutique de cadeaux",
+ "nl": "souvenirwinkel",
+ "zh": "礼品店",
+ "zh-hk": "禮品店"
+ },
+ "glaziery": {
+ "de": "glaserei",
+ "en": "glaziery",
+ "nl": "glashandel"
+ },
+ "golf": {
+ "de": "pro-shop",
+ "en": "pro shop",
+ "fr": "magasin de golf",
+ "nl": "golfshop"
+ },
+ "greengrocer": {
+ "de": "obst- und gemüsehändler",
+ "en": "greengrocer",
+ "es": "frutería",
+ "fr": "magasin de fruits et légumes",
+ "nl": "groenteboer",
+ "pt": "quitanda",
+ "zh": "八百屋"
+ },
+ "grocery": {
+ "de": "lebensmittelgeschäft",
+ "en": "grocery store",
+ "es": "tienda de ultramarinos",
+ "fr": "épicerie",
+ "nl": "winkel voor levensmiddelen",
+ "pt": "mercearia",
+ "zh": "雜貨店"
+ },
+ "haberdashery": {
+ "de": "kurzwaren",
+ "en": "mercery",
+ "en-gb": "haberdashery",
+ "es": "mercería",
+ "fr": "mercerie",
+ "nl": "fournituren"
+ },
+ "hairdresser": {
+ "de": "friseurladen",
+ "en": "hair dressing shop",
+ "de-ch": "coiffeur",
+ "en-ca": "hairdresser",
+ "en-gb": "hairdresser",
+ "es": "peluquero",
+ "fr": "coiffeur",
+ "nl": "kapper",
+ "pt": "cabeleireiro",
+ "zh": "髮型師"
+ },
+ "hairdresser_supply": {
+ "de": "friseurbedarfladen",
+ "en": "hairdresser supply shop",
+ "fr": "magasin de matériels et produits pour coiffeurs"
+ },
+ "hardware": {
+ "de": "baumarkt",
+ "en": "hardware store",
+ "es": "ferretería",
+ "fr": "quincaillerie",
+ "nl": "bouwmarkt",
+ "pt": "loja de ferragens",
+ "zh": "五金店"
+ },
+ "health_food": {
+ "de": "bioladen",
+ "en": "health food store",
+ "nl": "biologische winkel",
+ "zh": "健康食品店"
+ },
+ "hearing_aids": {
+ "de": "audiologe",
+ "en": "audiologist",
+ "es": "audiólogo",
+ "fr": "audiologiste",
+ "nl": "audioloog",
+ "pt": "audiologista"
+ },
+ "herbalist": {
+ "de": "phytotherapeut",
+ "en": "herbalist",
+ "es": "herborista",
+ "fr": "herboriste",
+ "nl": "herborist"
+ },
+ "hifi": {
+ "de": "hifi-laden",
+ "en": "hifi store"
+ },
+ "hobby": {
+ "en": "hobby shop"
+ },
+ "houseware": {
+ "de": "haushaltswarenladen",
+ "en": "houseware shop",
+ "fr": "magasin d'articles ménagers"
+ },
+ "hunting": {
+ "de": "jagdausrüstungsgeschäft",
+ "en": "hunting shop"
+ },
+ "ice_cream": {
+ "de": "eisdiele",
+ "en": "ice cream parlor",
+ "en-gb": "ice cream parlour",
+ "es": "heladería",
+ "fr": "glacier",
+ "nl": "ijssalon",
+ "pt": "sorveteria"
+ },
+ "interior_decoration": {
+ "de": "inneneinrichtungsladen",
+ "en": "interior decorations shop"
+ },
+ "jetski": {
+ "de": "jetskiladen",
+ "en": "jetski store"
+ },
+ "jewelry": {
+ "de": "juwelierladen",
+ "en": "jewellery shop",
+ "fr": "bijouterie",
+ "nl": "juwelierszaak"
+ },
+ "kiosk": {
+ "en": "kiosk",
+ "es": "quiosco",
+ "fr": "kiosque",
+ "pt": "quiosque",
+ "zh": "便亭",
+ "zh-cn": "自助機台"
+ },
+ "kitchen": {
+ "de": "küchenstudio",
+ "en": "kitchen shop"
+ },
+ "lamps": {
+ "de": "lampengeschäft",
+ "en": "lamp store"
+ },
+ "laundry": {
+ "de": "waschsalon",
+ "en": "self-service laundry",
+ "es": "lavandería",
+ "fr": "blanchisserie",
+ "nl": "wasserette",
+ "pt": "lavandaria",
+ "pt-br": "lavanderia",
+ "zh": "自助洗衣店"
+ },
+ "leather": {
+ "de": "lederladen",
+ "en": "leather shop",
+ "fr": "magasin de maroquinerie",
+ "pt": "loja de couro"
+ },
+ "lighting": {
+ "de": "lampengeschäft",
+ "en": "lamp store"
+ },
+ "locksmith": {
+ "de": "schlosser",
+ "en": "locksmith",
+ "es": "cerrajero",
+ "fr": "serrurier",
+ "nl": "slotenmaker",
+ "pt": "chaveiro",
+ "zh": "鎖匠"
+ },
+ "lottery": {
+ "de": "lotterieladen",
+ "en": "lottery store"
+ },
+ "mall": {
+ "en": "shopping mall",
+ "zh": "购物中心"
+ },
+ "massage": {
+ "de": "massagesalon",
+ "en": "massage shop",
+ "en-gb": "massage parlour",
+ "es": "salón de masajes",
+ "zh": "按摩院"
+ },
+ "medical_supply": {
+ "de": "sanitätshaus",
+ "en": "medical equipment shop"
+ },
+ "military_surplus": {
+ "de": "surplus",
+ "en": "military surplus",
+ "fr": "surplus militaire",
+ "zh": "軍需用品"
+ },
+ "mobile_phone": {
+ "de": "mobiltelefonladen",
+ "en": "mobile phone shop"
+ },
+ "money_lender": {
+ "de": "geldverleiher",
+ "en": "moneylender",
+ "nl": "geldschieter",
+ "zh": "財務公司"
+ },
+ "motorcycle": {
+ "en": "motorcycle rental",
+ "de": "motorradladen"
+ },
+ "music": {
+ "de": "plattenladen",
+ "en": "record shop",
+ "es": "tienda de discos",
+ "fr": "disquaire",
+ "nl": "platenwinkel",
+ "zh": "唱片店"
+ },
+ "musical_instrument": {
+ "de": "musikinstrumentengeschäft",
+ "en": "musical instrument store",
+ "nl": "muziekinstrumentenwinkel"
+ },
+ "newsagent": {
+ "de": "zeitungshändler",
+ "en": "newsagent",
+ "es": "quiosco de periódicos",
+ "fr": "maison de la presse",
+ "pt": "banca de jornal",
+ "zh": "報攤"
+ },
+ "nutrition_supplements": {
+ "de": "nahrungsergänzungsmittelladen",
+ "en": "nutrition supplements store"
+ },
+ "optician": {
+ "de": "augenoptiker",
+ "en": "optician",
+ "es": "óptico",
+ "fr": "opticien-lunetier",
+ "nl": "opticien",
+ "zh": "配鏡師"
+ },
+ "outdoor": {
+ "de": "ausrüstungsladen für freiluftaktivitäten",
+ "en": "pitch and putt golf course"
+ },
+ "paint": {
+ "de": "farbengeschäft",
+ "en": "paint store",
+ "nl": "verfwinkel"
+ },
+ "party": {
+ "de": "partyzubehörladen",
+ "en": "party shop",
+ "pt": "loja de festas"
+ },
+ "pasta": {
+ "de": "nudelladen",
+ "en": "pasta store"
+ },
+ "pastry": {
+ "en": "konditorei",
+ "zh": "糕點師"
+ },
+ "pawnbroker": {
+ "de": "pfandhaus",
+ "en": "pawnbroker",
+ "es": "casa de empeños",
+ "fr": "prêt sur gage",
+ "nl": "pandmakelaar",
+ "pt": "penhor",
+ "pt-br": "casa de penhor",
+ "zh": "典當業"
+ },
+ "perfumery": {
+ "de": "parfümerie",
+ "en": "perfumery",
+ "es": "perfumería",
+ "fr": "parfumerie",
+ "nl": "parfumerie",
+ "pt": "perfumaria"
+ },
+ "pet": {
+ "de": "zoofachgeschäft",
+ "en": "pet store",
+ "es": "tienda de animales",
+ "fr": "animalerie",
+ "nl": "dierenwinkel",
+ "pt": "pet shop",
+ "zh": "寵物店"
+ },
+ "photo": {
+ "de": "fotoladen",
+ "en": "photo shop",
+ "nl": "fotozaak"
+ },
+ "pottery": {
+ "de": "töpferei",
+ "en": "pottery",
+ "es": "alfarería (oficio)",
+ "fr": "poterie",
+ "nl": "pottenbakken",
+ "pt": "olaria",
+ "zh": "陶器"
+ },
+ "pyrotechnics": {
+ "de": "feuerwerkszubehörladen",
+ "en": "firework supply store"
+ },
+ "radiotechnics": {
+ "de": "funktechnisches fachgeschäft",
+ "en": "radiotechnic store"
+ },
+ "religion": {
+ "en": "religious merchandising store"
+ },
+ "robot": {
+ "de": "roboterladen",
+ "en": "robot shop"
+ },
+ "scuba_diving": {
+ "de": "tauchausrüstungszubehörgeschäft",
+ "en": "scuba diving equipment store"
+ },
+ "seafood": {
+ "de": "fischhandlung",
+ "en": "seafood market",
+ "es": "pescadería",
+ "fr": "poissonnerie",
+ "nl": "viswinkel"
+ },
+ "second_hand": {
+ "de": "gebrauchtwarenläden",
+ "en": "second-hand shop",
+ "es": "tienda de segunda mano",
+ "fr": "magasin de seconde main",
+ "nl": "brocante",
+ "pt": "brechó"
+ },
+ "security": {
+ "de": "sicherheitstechnikfachgeschäft",
+ "en": "security shop"
+ },
+ "sewing": {
+ "de": "nähzubehörgeschäft",
+ "en": "sewing shop"
+ },
+ "ship_chandler": {
+ "de": "schiffsausrüster",
+ "en": "ship chandler",
+ "fr": "shipchandler",
+ "nl": "scheepsbevoorrader",
+ "zh": "船用杂货商"
+ },
+ "shoes": {
+ "de": "schuhladen",
+ "en": "shoe store",
+ "es": "zapatería",
+ "fr": "magasin de chaussures",
+ "nl": "schoenwinkel",
+ "pt": "loja de sapatos"
+ },
+ "shopping_centre": {
+ "de": "einkaufszentrum",
+ "en": "shopping center",
+ "en-gb": "shopping centre",
+ "es": "centro comercial",
+ "fr": "centre commercial",
+ "nl": "winkelcentrum",
+ "pt": "centro comercial",
+ "zh": "商場",
+ "zh-cn": "商场"
+ },
+ "ski": {
+ "de": "skiladen",
+ "en": "ski store"
+ },
+ "snowmobile": {
+ "de": "schneemobilladen",
+ "en": "snowmobile store"
+ },
+ "spices": {
+ "de": "gewürzladen",
+ "en": "spice store",
+ "nl": "specerijenwinkel"
+ },
+ "sports": {
+ "de": "sportladen",
+ "en": "sport shop"
+ },
+ "stationery": {
+ "de": "schreibwarenhandlung",
+ "en": "stationer's",
+ "en-gb": "stationers",
+ "es": "papelería",
+ "fr": "papeterie",
+ "nl": "kantoorboekhandel",
+ "pt": "papelaria",
+ "zh": "文具店"
+ },
+ "storage_rental": {
+ "de": "mietlager",
+ "en": "self storage",
+ "fr": "garde-meuble",
+ "zh": "迷你自存倉",
+ "zh-cn": "迷你自存仓"
+ },
+ "supermarket": {
+ "de": "supermarkt",
+ "en": "supermarket",
+ "es": "supermercado",
+ "fr": "supermarché",
+ "nl": "supermarkt",
+ "pt": "supermercado",
+ "zh": "超級市場",
+ "zh-cn": "超级市场"
+ },
+ "swimming_pool": {
+ "de": "schwimmbadzubehörladen",
+ "en": "swimming pool equipment shop"
+ },
+ "tailor": {
+ "de": "schneiderei",
+ "en": "tailor shop"
+ },
+ "tattoo": {
+ "de": "tattoostudio",
+ "en": "tattoo parlor",
+ "en-gb": "tattoo parlour",
+ "nl": "tatoeagezaak"
+ },
+ "tea": {
+ "de": "teeladen",
+ "en": "tea shop",
+ "fr": "magasin de thé",
+ "nl": "theewinkel"
+ },
+ "ticket": {
+ "de": "vorverkaufsstelle",
+ "en": "ticket shop"
+ },
+ "tiles": {
+ "de": "fliesenladen",
+ "en": "tile store"
+ },
+ "tobacco": {
+ "de": "tabakladen",
+ "de-at": "tabaktrafik",
+ "en": "smoke shop",
+ "es": "estanco",
+ "fr": "débit de tabac",
+ "nl": "sigarenwinkel",
+ "pt": "tabacaria",
+ "zh": "煙草商"
+ },
+ "toys": {
+ "de": "spielzeugladen",
+ "en": "toy store",
+ "es": "juguetería",
+ "fr": "magasin de jouets",
+ "nl": "speelgoedwinkel",
+ "pt": "loja de brinquedos"
+ },
+ "trade": {
+ "de": "baustoffhandel",
+ "en": "building materials trade",
+ "fr": "commerce de matériaux de construction"
+ },
+ "travel_agency": {
+ "de": "reisebüro",
+ "en": "travel agency",
+ "en-gb": "agency",
+ "es": "agencia de viajes",
+ "fr": "agence de voyages",
+ "nl": "reisbureau",
+ "pt": "agência de viagens",
+ "zh": "旅行社"
+ },
+ "trophy": {
+ "de": "trophäenladen",
+ "en": "trophy store"
+ },
+ "tyres": {
+ "de": "reifenhändler",
+ "en": "tire shop"
+ },
+ "vacant": {
+ "de": "leerstehendes geschäft",
+ "en": "vacant shop"
+ },
+ "vacuum_cleaner": {
+ "de": "staubsaugerladen",
+ "en": "vacuum cleaner store"
+ },
+ "variety_store": {
+ "de": "sonderpostenmarkt",
+ "en": "variety store",
+ "es": "tienda de todo a 100",
+ "fr": "magasin à prix unique",
+ "pt": "lojas 1,99",
+ "zh": "雜貨商店",
+ "zh-cn": "多样化商店"
+ },
+ "video": {
+ "de": "videothek",
+ "en": "video rental shop",
+ "es": "videoclub",
+ "fr": "vidéo-club",
+ "nl": "videotheek",
+ "pt": "locadora de vídeo",
+ "zh": "影碟出租店"
+ },
+ "video_games": {
+ "de": "videospielladen",
+ "en": "video game store",
+ "nl": "videogamewinkel"
+ },
+ "watches": {
+ "de": "uhrengeschäft",
+ "en": "watch shop",
+ "fr": "boutique de montres",
+ "nl": "horlogewinkel"
+ },
+ "weapons": {
+ "de": "waffenladen",
+ "en": "gun shop"
+ },
+ "wholesale": {
+ "de": "abholgroßmarkt",
+ "en": "cash and carry",
+ "fr": "cash & carry",
+ "nl": "zelfbedieningsgroothandel",
+ "pt": "atacado-varejista",
+ "zh": "现购自运"
+ },
+ "window_blind": {
+ "de": "rollladenverkauf",
+ "en": "window blind shop",
+ "fr": "magasin de stores"
+ },
+ "wine": {
+ "de": "weinladen",
+ "en": "wine shop",
+ "fr": "caviste",
+ "nl": "wijnwinkel"
+ },
+ "yes": {
+ "de": "laden",
+ "en": "shop",
+ "es": "tienda",
+ "fr": "magasin",
+ "nl": "winkel",
+ "pt": "loja",
+ "zh": "商店"
+ }
+ },
+ "site_type": {
+ "megalith": {
+ "en": "megalith",
+ "es": "megalito",
+ "fr": "mégalithe",
+ "nl": "megaliet",
+ "pt": "megalíto",
+ "zh": "巨石文化"
+ },
+ "minilith": {
+ "en": "minilith",
+ "pt": "minilito"
+ },
+ "rock_shelter": {
+ "de": "abri",
+ "en": "rock shelter",
+ "es": "abrigo rocoso",
+ "fr": "abri sous roche",
+ "nl": "abri",
+ "zh": "岩棚"
+ }
+ },
+ "smoking": {
+ "no": {
+ "de": "rauchverbot",
+ "en": "smoking ban",
+ "es": "prohibido fumar",
+ "fr": "interdiction de fumer",
+ "nl": "rookverbod",
+ "pt": "proibição de fumar",
+ "zh": "禁煙",
+ "zh-tw": "禁菸"
+ },
+ "separated": {
+ "de": "raucherraum",
+ "en": "smoking room",
+ "fr": "fumoir",
+ "nl": "fumoir",
+ "pt": "fumódromo",
+ "zh": "吸烟室"
+ },
+ "yes": {
+ "en": "smoking allowed",
+ "es": "permitido fumar",
+ "fr": "autorisation de fumer",
+ "pt": "permitido fumar"
+ }
+ },
+ "social_facility": {
+ "assisted_living": {
+ "de": "altenheim",
+ "de-ch": "altersheim",
+ "en": "retirement home",
+ "es": "hogar de retiro",
+ "fr": "maison de retraite",
+ "nl": "verzorgingstehuis",
+ "pt": "casa de retiro",
+ "zh": "老人院"
+ },
+ "food_bank": {
+ "de": "tafel",
+ "en": "food bank",
+ "es": "banco de alimentos",
+ "fr": "banque alimentaire",
+ "nl": "voedselbank",
+ "pt": "banco alimentar",
+ "zh": "食物銀行",
+ "zh-cn": "食物银行"
+ },
+ "nursing_home": {
+ "de": "pflegeheim",
+ "en": "nursing home",
+ "es": "residencia de personas mayores",
+ "fr": "unité de soins de longue durée",
+ "nl": "verpleeghuis",
+ "zh": "介護老人福祉設施"
+ }
+ },
+ "source": {
+ "BAG": {
+ "de": "basisregister adressen und gebäude",
+ "en": "basic register addresses and buildings",
+ "nl": "basisregistraties adressen en gebouwen"
+ },
+ "Bing": {
+ "en": "bing maps",
+ "fr": "bing cartes"
+ },
+ "CBERS": {
+ "de": "china-brazil earth resources satellite program",
+ "en": "china–brazil earth resources satellite program",
+ "es": "el programa de satélite de recursos terrestres china-brasil",
+ "fr": "china-brazil earth resources satellite program",
+ "pt": "programa do satélite sino-brasileiro de recursos terrestres",
+ "zh": "资源一号卫星"
+ },
+ "DNIT": {
+ "de": "nationales ministerium für verkehrsinfrastruktur",
+ "en": "national department of transport infrastructure",
+ "es": "departamento nacional de infraestructura de transportes",
+ "pt": "departamento nacional de infraestrutura de transportes"
+ },
+ "Funai": {
+ "en": "fundação nacional do índio",
+ "fr": "fondation nationale de l'indien",
+ "zh": "国家印第安人基金会"
+ },
+ "GPS": {
+ "en": "global positioning system",
+ "es": "sistema de posicionamiento global",
+ "pt": "sistema de posicionamento global",
+ "zh": "全球定位系统"
+ },
+ "IBGE": {
+ "en": "instituto brasileiro de geografia e estatística",
+ "es": "instituto brasileño de geografía y estadística",
+ "fr": "institut brésilien de géographie et de statistiques",
+ "zh": "巴西國家地理及統計局",
+ "zh-cn": "巴西国家地理与统计局"
+ },
+ "ICMBio": {
+ "de": "instituto chico mendes de conservação da biodiversidade",
+ "en": "chico mendes institute for biodiversity conservation",
+ "es": "instituto chico mendes para la conservación de la biodiversidad",
+ "fr": "institut chico mendes",
+ "nl": "instituto chico mendes de conservação da biodiversidade",
+ "pt": "instituto chico mendes de conservação da biodiversidade",
+ "zh": "奇科·門德斯生物多樣性保護協會"
+ },
+ "IGVSB": {
+ "es": "instituto geográfico de venezuela simón bolívar",
+ "pt": "instituto geográfico da venezuela simón bolívar"
+ },
+ "NHD": {
+ "en": "national hydrography dataset"
+ },
+ "PMLP": {
+ "en": "town hall of laranjal paulista",
+ "pt": "prefeitura municipal de laranjal paulista"
+ },
+ "aerial_imagery": {
+ "de": "luftbildfotografie",
+ "en": "aerial photography",
+ "es": "fotografía aérea",
+ "fr": "photographie aérienne",
+ "nl": "luchtfotografie",
+ "pt": "aerofotografia",
+ "zh": "航拍"
+ },
+ "common_knowledge": {
+ "en": "common knowledge",
+ "es": "conocimiento público",
+ "pt": "conhecimento geral",
+ "zh": "常識"
+ },
+ "digitalglobe": {
+ "en": "digitalglobe",
+ "zh-cn": "数字地球公司"
+ },
+ "extrapolation": {
+ "en": "extrapolation",
+ "es": "extrapolación",
+ "nl": "extrapolatie",
+ "pt": "extrapolação",
+ "zh": "外推"
+ },
+ "local_knowledge": {
+ "en": "local knowledge",
+ "pt": "conhecimento local"
+ },
+ "pmsp": {
+ "de": "militärische staatspolizei von são paulo",
+ "en": "military police of são paulo state",
+ "es": "policía militar del estado de sao paulo",
+ "pt": "polícia militar do estado de são paulo",
+ "zh": "聖保羅州軍事警察"
+ },
+ "survey": {
+ "en": "ground truth",
+ "es": "verdad terreno",
+ "pt": "verdade no solo"
+ }
+ },
+ "species": {
+ "": {
+ "de": "englische ulme",
+ "en": "ulmus procera",
+ "nl": "engelse veldiep"
+ },
+ "Ulmus_procera": {
+ "de": "englische ulme",
+ "en": "ulmus procera",
+ "nl": "engelse veldiep"
+ }
+ },
+ "sport": {
+ "10pin": {
+ "de": "bowling",
+ "en": "ten-pin bowling",
+ "es": "bowling",
+ "fr": "bowling",
+ "nl": "bowlen",
+ "pt": "bowling",
+ "pt-br": "boliche",
+ "zh": "10瓶制保齡球",
+ "zh-cn": "保龄球",
+ "zh-hk": "保齡球",
+ "zh-tw": "保齡球"
+ },
+ "8pin": {
+ "en": "eight-pin bowling",
+ "fr": "quilles de huit"
+ },
+ "9pin": {
+ "de": "kegeln",
+ "en": "nine-pin bowling",
+ "en-ca": "skittles",
+ "en-gb": "skittles",
+ "es": "bolos",
+ "fr": "ninepin bowling classic",
+ "nl": "kegelen",
+ "pt": "bolão",
+ "zh": "9瓶制保齡球",
+ "zh-cn": "九柱戏"
+ },
+ "aikido": {
+ "de": "aikidō",
+ "en": "aikido",
+ "es": "aikidō",
+ "fr": "aïkido",
+ "zh": "合氣道"
+ },
+ "american_football": {
+ "en": "american football",
+ "es": "fútbol americano",
+ "fr": "football américain",
+ "pt": "futebol americano",
+ "zh": "美式足球"
+ },
+ "archery": {
+ "de": "bogenschießen",
+ "de-ch": "bogenschiessen",
+ "en": "archery",
+ "es": "tiro con arco",
+ "fr": "tir à l'arc",
+ "nl": "boogschieten",
+ "pt": "tiro com arco",
+ "zh": "射箭"
+ },
+ "athletics": {
+ "de": "leichtathletik",
+ "en": "athletics",
+ "es": "atletismo",
+ "fr": "athlétisme",
+ "nl": "atletiek",
+ "pt": "atletismo",
+ "zh": "田径",
+ "zh-hk": "田徑",
+ "zh-tw": "田徑"
+ },
+ "australian_football": {
+ "de": "australian football",
+ "en": "australian rules football",
+ "es": "fútbol australiano",
+ "fr": "football australien",
+ "nl": "australian football",
+ "pt": "futebol australiano",
+ "zh": "澳式足球"
+ },
+ "badminton": {
+ "en": "badminton",
+ "es": "bádminton",
+ "zh": "羽毛球",
+ "zh-tw": "羽球"
+ },
+ "bandy": {
+ "en": "bandy",
+ "zh": "班迪球"
+ },
+ "base": {
+ "de": "base-jumping",
+ "en": "base jumping",
+ "es": "salto base",
+ "fr": "base jump",
+ "nl": "base-jumpen",
+ "zh": "定点跳伞"
+ },
+ "baseball": {
+ "en": "baseball",
+ "es": "béisbol",
+ "nl": "honkbal",
+ "pt": "basebol",
+ "pt-br": "beisebol",
+ "zh": "棒球"
+ },
+ "basketball": {
+ "en": "basketball",
+ "es": "baloncesto",
+ "fr": "basket-ball",
+ "nl": "basketbal",
+ "pt": "basquetebol",
+ "zh": "篮球",
+ "zh-hk": "籃球",
+ "zh-tw": "籃球"
+ },
+ "beachvolleyball": {
+ "de": "beachvolleyball",
+ "en": "beach volleyball",
+ "es": "voleibol de playa",
+ "fr": "beach-volley",
+ "nl": "beachvolleybal",
+ "pt": "voleibol de praia",
+ "zh": "沙滩排球",
+ "zh-hk": "沙灘排球",
+ "zh-tw": "沙灘排球"
+ },
+ "billiards": {
+ "de": "billard",
+ "en": "cue sports",
+ "es": "billar",
+ "fr": "billard",
+ "nl": "biljart",
+ "pt": "bilhar",
+ "zh": "撞球",
+ "zh-cn": "台球",
+ "zh-hk": "桌球"
+ },
+ "bmx": {
+ "en": "bmx",
+ "zh": "小轮车",
+ "zh-hk": "小輪車",
+ "zh-tw": "小輪車"
+ },
+ "bobsleigh": {
+ "de": "bobsport",
+ "en": "bobsleigh",
+ "nl": "bobsleeën",
+ "zh": "有舵雪橇"
+ },
+ "boules": {
+ "de": "boule-spiel",
+ "en": "boules",
+ "es": "deporte de bolas",
+ "fr": "jeu de boules",
+ "zh": "地擲球",
+ "zh-cn": "滚木球"
+ },
+ "bowls": {
+ "en": "bowls",
+ "fr": "boulingrin",
+ "pt": "lawn bowls",
+ "zh": "草地滾球"
+ },
+ "boxing": {
+ "de": "boxen",
+ "en": "boxing",
+ "es": "boxeo",
+ "fr": "boxe",
+ "nl": "boksen",
+ "pt": "boxe",
+ "zh": "拳击"
+ },
+ "canadian_football": {
+ "en": "canadian football",
+ "es": "fútbol canadiense",
+ "fr": "football canadien",
+ "pt": "futebol canadiano",
+ "pt-br": "futebol canadense",
+ "zh": "加拿大式足球"
+ },
+ "canoe": {
+ "de": "kanusport",
+ "en": "canoeing",
+ "es": "canotaje",
+ "fr": "canoë",
+ "nl": "kanovaren",
+ "pt": "canoagem",
+ "zh": "皮划艇"
+ },
+ "car_racing": {
+ "de": "automobilsport",
+ "en": "auto racing",
+ "es": "automovilismo",
+ "fr": "compétition automobile",
+ "nl": "autosport",
+ "pt": "automobilismo",
+ "zh": "賽車"
+ },
+ "chess": {
+ "de": "schach",
+ "en": "chess",
+ "es": "ajedrez",
+ "fr": "échecs",
+ "nl": "schaken",
+ "pt": "xadrez",
+ "zh": "國際象棋",
+ "zh-cn": "国际象棋",
+ "zh-tw": "西洋棋"
+ },
+ "cliff_diving": {
+ "de": "klippenspringen",
+ "en": "cliff jumping",
+ "es": "clavado de gran altura",
+ "fr": "plongeon de haut vol",
+ "zh": "高空跳水"
+ },
+ "climbing": {
+ "de": "sportklettern",
+ "en": "sport climbing",
+ "es": "escalada deportiva",
+ "fr": "escalade sportive",
+ "nl": "klimsport",
+ "zh": "攀石",
+ "pt": "boulder",
+ "zh-hk": "抱石"
+ },
+ "climbing_adventure": {
+ "de": "seilgarten",
+ "en": "adventure park",
+ "fr": "parcours aventure en forêt",
+ "nl": "klimbos",
+ "pt": "arborismo"
+ },
+ "cockfighting": {
+ "de": "hahnenkampf",
+ "en": "cockfight",
+ "es": "pelea de gallos",
+ "fr": "combat de coqs",
+ "nl": "hanengevecht",
+ "pt": "rinha de galo",
+ "zh": "斗鸡",
+ "zh-hk": "鬥雞",
+ "zh-tw": "鬥雞"
+ },
+ "cricket": {
+ "de": "cricketfeld",
+ "en": "cricket field",
+ "es": "campo de críquet",
+ "fr": "terrain de cricket",
+ "nl": "cricketveld",
+ "zh": "板球場",
+ "pt": "críquete"
+ },
+ "croquet": {
+ "de": "krocket",
+ "en": "croquet",
+ "zh": "槌球"
+ },
+ "crossfit": {
+ "en": "crossfit"
+ },
+ "curling": {
+ "en": "curling",
+ "zh": "冰壺"
+ },
+ "cycling": {
+ "de": "radsport",
+ "en": "cycle sport",
+ "en-ca": "bicycle racing",
+ "en-gb": "bicycle racing",
+ "es": "ciclismo de competición",
+ "fr": "sport cycliste",
+ "nl": "wielersport",
+ "pt": "ciclismo de competição",
+ "zh": "自行車運動",
+ "zh-cn": "自行车运动",
+ "zh-hk": "單車運動",
+ "zh-tw": "自由車運動"
+ },
+ "darts": {
+ "en": "darts",
+ "es": "dardos",
+ "fr": "fléchettes",
+ "pt": "dardos",
+ "zh": "飛鏢",
+ "zh-cn": "飞镖"
+ },
+ "disc_golf": {
+ "de": "discgolf",
+ "en": "disc golf",
+ "fr": "disque-golf",
+ "nl": "diskgolf",
+ "pt": "frisbee golf",
+ "zh": "飞盘高尔夫",
+ "zh-hk": "飛盤高爾夫"
+ },
+ "dog_racing": {
+ "de": "windhundrennen",
+ "en": "greyhound racing",
+ "es": "carrera de galgos",
+ "fr": "course de lévriers",
+ "nl": "windhondenrennen",
+ "zh": "賽狗",
+ "zh-cn": "灰狗赛跑"
+ },
+ "dog_training": {
+ "de": "hundeerziehung",
+ "en": "dog training",
+ "es": "adiestramiento de perros",
+ "nl": "hondentraining",
+ "pt": "adestramento de cães",
+ "zh": "訓狗"
+ },
+ "equestrian": {
+ "de": "pferdesport",
+ "en": "equestrian sport",
+ "es": "deporte ecuestre",
+ "fr": "sport équestre",
+ "nl": "paardensport",
+ "pt": "desporto equestre"
+ },
+ "exercise": {
+ "de": "körperliche bewegung",
+ "en": "physical exercise",
+ "es": "ejercicio físico",
+ "fr": "fitness",
+ "nl": "lichaamsbeweging",
+ "pt": "exercício físico",
+ "zh": "體能鍛煉"
+ },
+ "field_hockey": {
+ "de": "hockey",
+ "de-ch": "landhockey",
+ "en": "field hockey",
+ "es": "hockey sobre hierba",
+ "fr": "hockey sur gazon",
+ "nl": "veldhockey",
+ "pt": "hóquei em campo",
+ "pt-br": "hóquei sobre grama",
+ "zh": "曲棍球"
+ },
+ "fishing": {
+ "de": "fischen",
+ "de-ch": "fischerei",
+ "en": "fishing",
+ "es": "pesca",
+ "fr": "pêche",
+ "nl": "visserij",
+ "pt": "pesca",
+ "zh": "捕鱼"
+ },
+ "fitness": {
+ "de": "fitnessstudio",
+ "en": "health club",
+ "fr": "centre de remise en forme",
+ "nl": "sportschool",
+ "pt": "academia desportiva",
+ "zh": "健身房",
+ "en-ca": "physical exercise",
+ "en-gb": "physical exercise",
+ "es": "ejercicio físico",
+ "pt-br": "exercício físico"
+ },
+ "four_square": {
+ "en": "four square",
+ "es": "cuatro cuadras"
+ },
+ "free_flying": {
+ "en": "freeflying",
+ "pt": "freefly"
+ },
+ "futsal": {
+ "en": "futsal",
+ "es": "fútbol sala",
+ "nl": "zaalvoetbal",
+ "pt": "futebol de salão",
+ "zh": "室内五人足球",
+ "zh-hk": "五人制足球",
+ "zh-tw": "室內五人制足球"
+ },
+ "gaelic_games": {
+ "en": "gaelic games",
+ "fr": "sport gaélique",
+ "zh": "蓋爾式運動"
+ },
+ "golf": {
+ "en": "golf",
+ "pt": "golfe",
+ "zh": "高爾夫球"
+ },
+ "gymnastics": {
+ "de": "turnen",
+ "en": "gymnastics",
+ "es": "gimnasia",
+ "fr": "gymnastique",
+ "nl": "gymnastiek",
+ "pt": "ginástica",
+ "zh": "体操",
+ "zh-hk": "體操",
+ "zh-tw": "體操"
+ },
+ "handball": {
+ "en": "handball",
+ "es": "balonmano",
+ "nl": "handbal",
+ "pt": "andebol",
+ "pt-br": "handebol",
+ "zh": "手球"
+ },
+ "hapkido": {
+ "en": "hapkido",
+ "pt": "hapkidô",
+ "zh": "合氣道",
+ "zh-cn": "合气道"
+ },
+ "horse_racing": {
+ "de": "pferderennen",
+ "en": "horse racing",
+ "es": "turf",
+ "fr": "sport hippique",
+ "nl": "rensport",
+ "pt": "turfe",
+ "zh": "賽馬",
+ "zh-cn": "赛马"
+ },
+ "horse_riding": {
+ "de": "reiten",
+ "en": "equestrianism",
+ "es": "equitación",
+ "fr": "équitation",
+ "nl": "paardrijden",
+ "pt": "hipismo",
+ "zh": "马术",
+ "zh-hk": "馬術",
+ "zh-tw": "馬術"
+ },
+ "horseshoes": {
+ "de": "hufeisenwerfen",
+ "en": "horseshoes",
+ "es": "herradura",
+ "fr": "fer à cheval"
+ },
+ "ice_hockey": {
+ "de": "eishockey",
+ "en": "ice hockey",
+ "en-ca": "hockey",
+ "es": "hockey sobre hielo",
+ "fr": "hockey sur glace",
+ "nl": "ijshockey",
+ "pt": "hóquei no gelo",
+ "zh": "冰球"
+ },
+ "ice_skating": {
+ "de": "schlittschuhlaufen",
+ "en": "ice skating",
+ "es": "patinaje sobre hielo",
+ "fr": "patinage sur glace",
+ "nl": "schaatsen",
+ "pt": "patinagem no gelo",
+ "zh": "滑冰"
+ },
+ "ice_stock": {
+ "de": "stockschießen",
+ "de-ch": "stockschiessen",
+ "en": "ice stock sport",
+ "fr": "eisstock",
+ "nl": "ijsstokschieten",
+ "zh": "冰上滑盤"
+ },
+ "judo": {
+ "en": "judo",
+ "es": "yudo",
+ "pt-br": "judô",
+ "zh": "柔道"
+ },
+ "karate": {
+ "en": "karate",
+ "fr": "karaté",
+ "pt": "caraté",
+ "pt-br": "caratê",
+ "zh": "空手道"
+ },
+ "karting": {
+ "de": "kartbahn",
+ "en": "kart circuit",
+ "fr": "circuit de karting",
+ "nl": "kartcircuit",
+ "pt": "kartódromo",
+ "es": "karting",
+ "zh": "卡丁車",
+ "zh-cn": "卡丁车"
+ },
+ "kitesurfing": {
+ "de": "kitesurfen",
+ "en": "kite surfing",
+ "es": "kitesurf",
+ "fr": "kitesurf",
+ "nl": "kitesurfen",
+ "pt": "kitesurf",
+ "zh": "風箏衝浪",
+ "zh-cn": "风筝冲浪"
+ },
+ "korfball": {
+ "en": "korfball",
+ "es": "korfbal",
+ "fr": "korfbal",
+ "nl": "korfbal",
+ "pt": "corfebol",
+ "zh": "合球"
+ },
+ "krachtbal": {
+ "en": "krachtbal"
+ },
+ "lacrosse": {
+ "en": "lacrosse",
+ "fr": "crosse",
+ "zh": "袋棍球"
+ },
+ "laser_tag": {
+ "en": "laser tag",
+ "fr": "jeu laser",
+ "nl": "lasergame"
+ },
+ "long_jump": {
+ "de": "weitsprung",
+ "en": "long jump",
+ "es": "salto de longitud",
+ "fr": "saut en longueur",
+ "nl": "verspringen",
+ "pt": "salto em comprimento",
+ "zh": "跳遠",
+ "zh-cn": "跳远"
+ },
+ "martial_arts": {
+ "de": "kampfkunst",
+ "en": "martial arts",
+ "es": "arte marcial",
+ "fr": "art martial",
+ "nl": "vechtkunst",
+ "pt": "artes marciais",
+ "zh": "武術",
+ "zh-cn": "武术"
+ },
+ "miniature_golf": {
+ "de": "minigolf",
+ "en": "miniature golf",
+ "es": "minigolf",
+ "fr": "minigolf",
+ "nl": "minigolf",
+ "pt": "minigolfe",
+ "zh": "小型高爾夫球"
+ },
+ "model_aerodrome": {
+ "de": "flugmodell",
+ "en": "radio-controlled aircraft",
+ "es": "avión de radiocontrol",
+ "fr": "avion radiocommandé",
+ "nl": "radiobestuurd vliegtuig",
+ "zh": "遙控飛機"
+ },
+ "motocross": {
+ "en": "motocross",
+ "fr": "moto-cross",
+ "nl": "motorcross",
+ "zh": "越野摩托車"
+ },
+ "motor": {
+ "en": "motorsport",
+ "es": "deporte de motor",
+ "fr": "sport mécanique",
+ "pt": "desporto motorizado",
+ "pt-br": "esporte a motor",
+ "zh": "動力運動"
+ },
+ "mtb": {
+ "de": "mountainbike",
+ "en": "mountain bike",
+ "es": "bicicleta de montaña",
+ "fr": "vélo tout terrain",
+ "nl": "mountainbike",
+ "pt": "bicicleta de montanha",
+ "zh": "登山車",
+ "zh-cn": "登山车"
+ },
+ "multi": {
+ "en": "sport",
+ "es": "deporte",
+ "pt": "desporto",
+ "pt-br": "esporte",
+ "zh": "体育",
+ "zh-hk": "體育",
+ "zh-tw": "體育"
+ },
+ "netball": {
+ "en": "netball",
+ "zh": "籃網球",
+ "zh-cn": "篮网球"
+ },
+ "obstacle_course": {
+ "de": "hindernisbahn",
+ "en": "obstacle course",
+ "es": "recorrido de obstáculos",
+ "fr": "course à obstacles",
+ "zh": "障碍训练",
+ "zh-cn": "障碍训练场"
+ },
+ "orienteering": {
+ "de": "orientierungslauf",
+ "en": "orienteering",
+ "es": "orientación",
+ "fr": "course d'orientation",
+ "nl": "oriëntatieloop",
+ "pt": "orientação",
+ "zh": "定向运动"
+ },
+ "paddle_tennis": {
+ "en": "paddle tennis",
+ "fr": "paddle-tennis",
+ "zh": "板網球"
+ },
+ "padle": {
+ "de": "padel-tennis",
+ "en": "padel",
+ "es": "pádel",
+ "pt": "pádel",
+ "zh": "笼式网球"
+ },
+ "paintball": {
+ "en": "paintball",
+ "zh": "迷彩漆彈運動",
+ "zh-cn": "迷彩漆弹运动"
+ },
+ "parachuting": {
+ "de": "fallschirmspringen",
+ "en": "skydiving",
+ "es": "paracaidismo",
+ "fr": "parachutisme",
+ "nl": "parachutespringen",
+ "pt": "paraquedismo",
+ "zh": "跳伞",
+ "zh-hk": "跳傘",
+ "zh-tw": "跳傘"
+ },
+ "paragliding": {
+ "de": "gleitschirmfliegen",
+ "en": "paragliding",
+ "es": "parapente",
+ "fr": "parapente",
+ "nl": "parapente",
+ "pt": "parapente",
+ "zh": "滑翔伞",
+ "zh-hk": "滑翔傘",
+ "zh-tw": "滑翔傘"
+ },
+ "pelota": {
+ "en": "pelota",
+ "es": "juego de pelota",
+ "fr": "pelote basque",
+ "pt": "pelota basca",
+ "zh": "壁網球",
+ "zh-cn": "回力球",
+ "zh-hk": "回力球",
+ "zh-tw": "回力球"
+ },
+ "petanque": {
+ "de": "pétanque",
+ "en": "petanque",
+ "en-ca": "pétanque",
+ "en-gb": "pétanque",
+ "es": "petanca",
+ "fr": "pétanque",
+ "pt": "petanca",
+ "zh": "地擲球",
+ "zh-cn": "地掷球",
+ "zh-tw": "滾球"
+ },
+ "pickleball": {
+ "en": "pickleball",
+ "zh": "匹克球"
+ },
+ "pilates": {
+ "en": "pilates",
+ "zh": "彼拉提斯"
+ },
+ "racquet": {
+ "en": "racquetball",
+ "es": "raquetbol",
+ "pt": "raquetebol",
+ "zh": "短柄牆球"
+ },
+ "rc_car": {
+ "de": "funkferngesteuertes modellauto",
+ "en": "radio-controlled car",
+ "es": "automóvil teledirigido",
+ "fr": "voiture radiocommandée",
+ "nl": "radiografisch bestuurde auto",
+ "pt": "carrinho de controle remoto",
+ "zh": "遙控車"
+ },
+ "rock_climbing": {
+ "de": "felsklettern",
+ "en": "rock climbing",
+ "es": "escalada en roca",
+ "fr": "escalade rocher",
+ "nl": "rotsklimmen",
+ "zh": "攀岩"
+ },
+ "roller_skating": {
+ "de": "rollsport",
+ "en": "roller skating",
+ "es": "patín sobre ruedas tradicional",
+ "fr": "patinage à roulettes",
+ "nl": "rolschaatsen",
+ "pt": "patinagem sobre rodas",
+ "pt-br": "patinação sobre rodas",
+ "zh": "轮滑",
+ "zh-tw": "輪滑"
+ },
+ "rowing": {
+ "de": "rudersport",
+ "en": "rowing",
+ "es": "remo",
+ "fr": "aviron",
+ "nl": "roeien",
+ "pt": "remo",
+ "zh": "赛艇",
+ "zh-hk": "賽艇",
+ "zh-tw": "划船"
+ },
+ "rugby": {
+ "en": "rugby league",
+ "fr": "rugby à xiii",
+ "pt": "râguebi de treze",
+ "zh": "聯盟式橄欖球",
+ "zh-hk": "欖球聯盟",
+ "de-ch": "rugby",
+ "en-ca": "rugby football",
+ "pt-br": "rúgbi",
+ "zh-cn": "橄欖球類運動",
+ "zh-tw": "橄欖球類運動"
+ },
+ "rugby_league": {
+ "en": "rugby league",
+ "fr": "rugby à xiii",
+ "pt": "râguebi de treze",
+ "zh": "聯盟式橄欖球",
+ "zh-hk": "欖球聯盟"
+ },
+ "rugby_union": {
+ "en": "rugby union",
+ "es": "rugby a 15",
+ "fr": "rugby à xv",
+ "pt": "râguebi de quinze",
+ "zh": "聯合式橄欖球",
+ "zh-cn": "联合式橄榄球",
+ "zh-hk": "聯合式欖球"
+ },
+ "running": {
+ "de": "laufen",
+ "en": "running"
+ },
+ "sailing": {
+ "de": "regattasegeln",
+ "en": "sailing",
+ "es": "vela",
+ "fr": "voile",
+ "nl": "zeilen",
+ "pt": "vela",
+ "zh": "帆船運動"
+ },
+ "scuba_diving": {
+ "de": "gerätetauchen",
+ "en": "scuba diving",
+ "es": "submarinismo",
+ "fr": "plongée en scaphandre autonome",
+ "pt": "mergulho autônomo",
+ "zh": "水肺潛水",
+ "nl": "duiksport"
+ },
+ "shooting": {
+ "de": "sportschießen",
+ "de-ch": "sportschiessen",
+ "en": "shooting sport",
+ "es": "tiro deportivo",
+ "fr": "tir sportif",
+ "nl": "schietsport",
+ "pt": "esportes de tiro",
+ "pt-br": "tiro desportivo",
+ "zh": "射擊運動",
+ "zh-cn": "射击运动"
+ },
+ "shooting_range": {
+ "de": "schießstand",
+ "en": "shooting range",
+ "es": "polígono de tiro",
+ "fr": "stand de tir",
+ "nl": "schietbaan",
+ "pt": "estande de tiro",
+ "zh": "射擊靶場"
+ },
+ "shuffleboard": {
+ "en": "shuffleboard",
+ "zh": "沙狐球"
+ },
+ "skateboard": {
+ "de": "skateboardfahren",
+ "en": "skateboarding",
+ "es": "monopatinaje",
+ "fr": "skateboard",
+ "nl": "skateboarden",
+ "pt": "skate",
+ "zh": "滑板活动"
+ },
+ "skating": {
+ "en": "skating",
+ "es": "patinaje",
+ "fr": "patinage",
+ "nl": "schaatsen",
+ "zh": "溜冰"
+ },
+ "ski_jumping": {
+ "de": "skisprungschanze",
+ "en": "ski jumping hill",
+ "fr": "tremplin de saut à ski",
+ "nl": "skischans",
+ "en-ca": "ski jumping",
+ "en-gb": "ski jumping",
+ "es": "salto de esquí",
+ "pt": "salto de esqui",
+ "zh": "跳台滑雪"
+ },
+ "skiing": {
+ "de": "skifahren",
+ "en": "skiing",
+ "es": "esquí",
+ "fr": "ski",
+ "nl": "skiën",
+ "pt": "esqui",
+ "zh": "滑雪"
+ },
+ "soccer": {
+ "de": "bolzplatz",
+ "de-at": "fußball",
+ "de-ch": "fussball",
+ "en": "association football",
+ "en-ca": "soccer",
+ "es": "fútbol",
+ "fr": "football",
+ "nl": "voetbal",
+ "pt": "futebol",
+ "zh": "足球"
+ },
+ "softball": {
+ "en": "softball",
+ "es": "sóftbol",
+ "nl": "softbal",
+ "pt": "softbol",
+ "zh": "壘球",
+ "zh-cn": "垒球"
+ },
+ "squash": {
+ "en": "squash",
+ "zh": "壁球"
+ },
+ "sumo": {
+ "de": "sumō",
+ "en": "sumo",
+ "pt": "sumô",
+ "zh": "相撲"
+ },
+ "surfing": {
+ "de": "wellenreiten",
+ "en": "surfing",
+ "es": "surf",
+ "fr": "surf",
+ "nl": "surfen",
+ "pt": "surfe",
+ "zh": "衝浪",
+ "zh-cn": "冲浪"
+ },
+ "swimming": {
+ "de": "schwimmsport",
+ "en": "swimming",
+ "es": "natación",
+ "fr": "natation sportive",
+ "nl": "zwemsport",
+ "pt": "natação pura",
+ "pt-br": "natação",
+ "zh": "游泳运动",
+ "zh-cn": "競賽游泳"
+ },
+ "table_soccer": {
+ "de": "tischfußball",
+ "de-ch": "tischfussball",
+ "en": "table football",
+ "es": "fútbol de mesa",
+ "fr": "baby-foot",
+ "nl": "tafelvoetbal",
+ "pt": "futebol de mesa",
+ "zh": "桌上足球"
+ },
+ "table_tennis": {
+ "de": "tischtennis",
+ "en": "table tennis",
+ "es": "tenis de mesa",
+ "fr": "tennis de table",
+ "nl": "tafeltennis",
+ "pt": "tênis de mesa",
+ "zh": "乒乓球",
+ "zh-tw": "桌球"
+ },
+ "taekwondo": {
+ "en": "taekwondo",
+ "zh": "跆拳道"
+ },
+ "team_handball": {
+ "en": "handball",
+ "es": "balonmano",
+ "nl": "handbal",
+ "pt": "andebol",
+ "pt-br": "handebol",
+ "zh": "手球"
+ },
+ "tennis": {
+ "en": "tennis",
+ "es": "tenis",
+ "pt": "ténis",
+ "pt-br": "tênis",
+ "zh": "网球",
+ "zh-hk": "網球",
+ "zh-tw": "網球"
+ },
+ "toboggan": {
+ "de": "rennrodeln",
+ "en": "luge",
+ "fr": "luge de course",
+ "nl": "rodelen",
+ "zh": "無舵雪橇",
+ "zh-cn": "无舵雪橇"
+ },
+ "trampoline": {
+ "de": "trampolinturnen",
+ "en": "trampolining",
+ "es": "gimnasia en trampolín",
+ "fr": "trampoline",
+ "nl": "trampolinespringen",
+ "pt": "trampolim acrobático",
+ "zh": "弹床",
+ "zh-hk": "彈牀"
+ },
+ "ultimate": {
+ "en": "ultimate",
+ "nl": "ultimate frisbee",
+ "zh": "終極飛盤"
+ },
+ "ultralight_aviation": {
+ "de": "ultraleichtflugzeug",
+ "en": "ultralight aviation",
+ "es": "aviación ultraligera",
+ "fr": "planeur ultra-léger motorisé",
+ "nl": "ultralicht motorluchtvaartuig",
+ "pt": "ultraleve",
+ "zh": "輕型航空器"
+ },
+ "volleyball": {
+ "en": "volleyball",
+ "es": "voleibol",
+ "fr": "volley-ball",
+ "nl": "volleybal",
+ "pt": "voleibol",
+ "zh": "排球"
+ },
+ "water_polo": {
+ "de": "wasserball",
+ "en": "water polo",
+ "es": "waterpolo",
+ "fr": "water-polo",
+ "nl": "waterpolo",
+ "pt": "polo aquático",
+ "zh": "水球"
+ },
+ "water_ski": {
+ "de": "wasserski",
+ "en": "water skiing",
+ "es": "esquí acuático",
+ "fr": "ski nautique",
+ "nl": "waterskiën",
+ "pt": "esqui aquático",
+ "zh": "滑水"
+ },
+ "weightlifting": {
+ "de": "gewichtheben",
+ "en": "weightlifting",
+ "es": "halterofilia",
+ "fr": "haltérophilie",
+ "nl": "gewichtheffen",
+ "pt": "halterofilismo",
+ "zh": "举重",
+ "zh-hk": "舉重",
+ "zh-tw": "舉重"
+ },
+ "wrestling": {
+ "de": "ringen",
+ "en": "wrestling",
+ "es": "lucha",
+ "fr": "lutte",
+ "nl": "worstelen",
+ "pt": "luta",
+ "zh": "摔角"
+ },
+ "yoga": {
+ "en": "yoga studio",
+ "de": "yoga",
+ "en-ca": "yoga",
+ "en-gb": "yoga",
+ "es": "yoga",
+ "fr": "yoga",
+ "nl": "yoga",
+ "pt": "ioga",
+ "zh": "瑜伽"
+ }
+ },
+ "station": {
+ "subway": {
+ "de": "u-bahnhof",
+ "de-at": "u-bahn-station",
+ "en": "metro station",
+ "es": "estación de metro",
+ "fr": "station de métro",
+ "nl": "metrostation",
+ "pt": "estação de metropolitano",
+ "pt-br": "estação de metrô",
+ "zh": "地铁車站",
+ "zh-cn": "地铁站",
+ "zh-hk": "地鐵站",
+ "zh-tw": "捷運站"
+ }
+ },
+ "street_cabinet": {
+ "telecom": {
+ "de": "kabelverzweiger",
+ "en": "serving area interface"
+ }
+ },
+ "studio": {
+ "audio": {
+ "de": "tonstudio",
+ "en": "recording studio",
+ "es": "estudio de grabación",
+ "fr": "studio d'enregistrement",
+ "nl": "geluidsstudio",
+ "pt": "estúdio de gravação",
+ "zh": "錄音室",
+ "zh-cn": "录音室"
+ },
+ "television": {
+ "de": "fernsehstudio",
+ "en": "television studio",
+ "es": "estudio de televisión",
+ "fr": "studio de télévision",
+ "nl": "televisiestudio",
+ "zh": "電視製片廠"
+ }
+ },
+ "substation": {
+ "traction": {
+ "de": "unterwerk",
+ "en": "rail transport electrical substation",
+ "es": "subestación de tracción",
+ "fr": "sous-station de traction",
+ "nl": "tractieonderstation",
+ "zh": "牵引变电站"
+ }
+ },
+ "summit": {
+ "": {
+ "de": "gipfelkreuz",
+ "en": "summit cross",
+ "es": "cruz de la cumbre",
+ "fr": "croix sommitale",
+ "nl": "gipfelkreuz"
+ }
+ },
+ "support": {
+ "ceiling": {
+ "de": "decke",
+ "en": "ceiling",
+ "es": "techo",
+ "fr": "plafond",
+ "nl": "plafond",
+ "pt": "teto",
+ "zh": "天花板"
+ },
+ "fence": {
+ "de": "zaun",
+ "en": "fence",
+ "es": "valla",
+ "fr": "clôture",
+ "nl": "hek",
+ "pt": "cerca",
+ "zh": "圍欄"
+ },
+ "pole": {
+ "de": "mast",
+ "en": "pole",
+ "fr": "poteau",
+ "nl": "mast"
+ },
+ "scaffold": {
+ "de": "gerüst",
+ "en": "scaffold",
+ "es": "andamio",
+ "fr": "échafaudage",
+ "nl": "bouwsteiger",
+ "pt": "andaime",
+ "zh": "腳手架",
+ "zh-cn": "脚手架"
+ },
+ "street_furniture": {
+ "de": "stadtmöbel",
+ "en": "street furniture",
+ "es": "mobiliario urbano",
+ "fr": "mobilier urbain",
+ "nl": "straatmeubilair",
+ "pt": "mobiliário urbano",
+ "zh": "街道傢具"
+ },
+ "wall": {
+ "de": "mauer",
+ "en": "wall",
+ "es": "pared",
+ "fr": "mur",
+ "nl": "muur",
+ "pt": "muro",
+ "zh": "墙",
+ "zh-hk": "牆",
+ "zh-tw": "牆"
+ }
+ },
+ "surface": {
+ "asphalt": {
+ "de": "asphalt",
+ "en": "asphalt concrete",
+ "es": "hormigón asfáltico",
+ "fr": "enrobé",
+ "nl": "asfaltbeton",
+ "zh": "玛𤧛脂"
+ },
+ "concrete": {
+ "en": "concrete surface",
+ "fr": "revêtement en béton",
+ "nl": "betonverharding"
+ },
+ "mud": {
+ "de": "schlamm",
+ "en": "mud",
+ "es": "barro",
+ "fr": "terre",
+ "nl": "modder",
+ "pt": "lama",
+ "zh": "泥"
+ },
+ "paved": {
+ "de": "pflaster",
+ "en": "pavement",
+ "es": "pavimento",
+ "nl": "elementenverharding",
+ "pt": "piso",
+ "zh": "镶嵌路面"
+ },
+ "sett": {
+ "de": "pflaster",
+ "en": "sett",
+ "es": "adoquín",
+ "fr": "pavé",
+ "nl": "kassei",
+ "zh": "比利時石塊"
+ },
+ "tarmac": {
+ "en": "tarmac",
+ "zh": "柏油路"
+ }
+ },
+ "surveillance": {
+ "": {
+ "en": "closed-circuit television camera"
+ },
+ "webcam": {
+ "de": "url der webcam",
+ "en": "webcam page url",
+ "fr": "webcam",
+ "nl": "url voor webcampagina",
+ "pt": "página da webcam"
+ }
+ },
+ "takeaway": {
+ "only": {
+ "en": "take and bake pizzeria",
+ "es": "pizzerías take and bake"
+ }
+ },
+ "telecom": {
+ "exchange": {
+ "de": "vermittlungsstelle",
+ "en": "telephone exchange",
+ "es": "central telefónica",
+ "fr": "commutateur téléphonique",
+ "nl": "telefooncentrale",
+ "pt": "central telefónica",
+ "pt-br": "central telefônica",
+ "zh": "电信交换"
+ }
+ },
+ "theatre": {
+ "": {
+ "de": "amphitheater",
+ "en": "amphitheatre",
+ "es": "anfiteatro",
+ "fr": "amphithéâtre",
+ "nl": "amfitheater",
+ "pt": "anfiteatro",
+ "zh": "圓形競技場"
+ }
+ },
+ "tomb": {
+ "columbarium": {
+ "de": "kolumbarium",
+ "en": "columbarium",
+ "es": "columbario",
+ "pt": "columbário",
+ "zh": "納骨塔"
+ },
+ "crypt": {
+ "de": "krypta",
+ "en": "crypt",
+ "es": "cripta",
+ "fr": "crypte",
+ "nl": "crypte",
+ "pt": "cripta",
+ "zh": "地下墓室"
+ },
+ "hypogeum": {
+ "de": "hypogäum",
+ "en": "hypogeum",
+ "es": "hipogeo",
+ "fr": "hypogée",
+ "pt": "hipogeu"
+ },
+ "mausoleum": {
+ "en": "mausoleum",
+ "es": "mausoleo",
+ "fr": "mausolée",
+ "pt": "mausoléu",
+ "zh": "陵墓"
+ },
+ "pyramid": {
+ "de": "pyramide",
+ "en": "pyramid",
+ "es": "pirámide",
+ "fr": "pyramide",
+ "nl": "piramide",
+ "pt": "pirâmide",
+ "zh": "金字塔"
+ },
+ "rock-cut": {
+ "de": "felsengrab",
+ "en": "rock-cut tomb",
+ "es": "tumba excavada en la roca",
+ "fr": "tombe rupestre",
+ "nl": "rotsgraf"
+ },
+ "sarcophagus": {
+ "de": "sarkophag",
+ "en": "sarcophagus",
+ "es": "sarcófago",
+ "fr": "sarcophage",
+ "nl": "sarcofaag",
+ "pt": "sarcófago",
+ "zh": "石棺"
+ },
+ "table": {
+ "de": "tumba",
+ "en": "table tomb",
+ "es": "tumba de mesa"
+ },
+ "tumulus": {
+ "de": "hügelgrab",
+ "en": "tumulus",
+ "es": "túmulo",
+ "nl": "grafheuvel",
+ "pt": "mamoa",
+ "pt-br": "túmulo",
+ "zh": "墳丘墓"
+ },
+ "vault": {
+ "en": "burial vault",
+ "es": "sepultura"
+ },
+ "war_grave": {
+ "de": "soldatenfriedhof",
+ "en": "military cemetery",
+ "es": "cementerio militar",
+ "fr": "cimetière militaire",
+ "nl": "militaire begraafplaats",
+ "pt": "cemitério militar",
+ "zh": "军人公墓",
+ "zh-tw": "軍人公墓"
+ }
+ },
+ "tourism": {
+ "alpine_hut": {
+ "de": "schutzhütte",
+ "en": "mountain hut",
+ "es": "refugio de montaña",
+ "fr": "refuge de montagne",
+ "nl": "berghut",
+ "pt": "refúgio de montanha",
+ "zh": "山小屋"
+ },
+ "apartment": {
+ "de": "ferienwohnung",
+ "en": "vacation rental",
+ "es": "casa de alquiler vacacional",
+ "fr": "meublé de tourisme",
+ "nl": "vakantiewoning"
+ },
+ "aquarium": {
+ "de": "öffentliches aquarium",
+ "en": "public aquarium",
+ "es": "acuario público",
+ "fr": "aquarium public",
+ "nl": "publiek aquarium",
+ "pt": "aquário público",
+ "zh": "水族館"
+ },
+ "artwork": {
+ "de": "kunstwerk",
+ "en": "work of art",
+ "es": "obra de arte",
+ "fr": "œuvre d’art",
+ "nl": "kunstwerk",
+ "pt": "obra de arte",
+ "zh": "艺术作品",
+ "zh-hk": "藝術作品",
+ "zh-tw": "藝術作品"
+ },
+ "attraction": {
+ "de": "sehenswürdigkeit",
+ "en": "tourist attraction",
+ "es": "atracción turística",
+ "fr": "attraction touristique",
+ "nl": "toeristische attractie",
+ "pt": "atração turística",
+ "zh": "旅游胜地",
+ "zh-cn": "旅游景点"
+ },
+ "camp_pitch": {
+ "en": "campsite"
+ },
+ "camp_site": {
+ "de": "campingplatz",
+ "en": "campsite",
+ "es": "área de camping",
+ "fr": "emplacement de camping",
+ "nl": "camping",
+ "pt": "parque de campismo",
+ "zh": "露營場"
+ },
+ "caravan_site": {
+ "de": "reisemobil-stellplatz",
+ "en": "motorhome stopover",
+ "nl": "camperplaats",
+ "zh": "rv公園"
+ },
+ "chalet": {
+ "de": "ferienhaus",
+ "en": "holiday home",
+ "es": "casa de verano",
+ "nl": "vakantiehuis",
+ "pt": "casa de verão",
+ "zh": "度假屋"
+ },
+ "gallery": {
+ "de": "kunstmuseum",
+ "en": "art museum",
+ "en-gb": "art gallery",
+ "es": "museo de arte",
+ "fr": "musée d'art",
+ "nl": "kunstmuseum",
+ "pt": "museu de arte",
+ "zh": "藝術博物館",
+ "zh-cn": "艺术博物馆"
+ },
+ "guest_house": {
+ "de": "gästehaus",
+ "en": "guest house",
+ "es": "casa de huéspedes",
+ "fr": "maison d'hôtes",
+ "zh": "招待所"
+ },
+ "hostel": {
+ "de": "herberge",
+ "en": "hostel",
+ "es": "albergue",
+ "fr": "auberge",
+ "zh": "宾馆",
+ "zh-tw": "青年旅社"
+ },
+ "hotel": {
+ "en": "hotel",
+ "fr": "établissement hôtelier",
+ "zh": "酒店",
+ "zh-tw": "飯店"
+ },
+ "information": {
+ "de": "fremdenverkehrsamt",
+ "en": "tourism office",
+ "es": "oficina de turismo",
+ "fr": "office de tourisme",
+ "nl": "bezoekerscentrum",
+ "pt": "posto de turismo",
+ "zh": "游客中心"
+ },
+ "motel": {
+ "en": "motel",
+ "zh": "汽車旅館",
+ "zh-cn": "汽车旅馆"
+ },
+ "museum": {
+ "en": "museum",
+ "es": "museo",
+ "fr": "musée",
+ "pt": "museu",
+ "zh": "博物館",
+ "zh-cn": "博物馆"
+ },
+ "picnic_site": {
+ "de": "picknickplatz",
+ "en": "picnic site",
+ "fr": "aire de pique-nique"
+ },
+ "theme_park": {
+ "de": "freizeitpark",
+ "en": "amusement park",
+ "es": "parque de atracciones",
+ "fr": "parc d'attractions",
+ "nl": "attractiepark",
+ "pt": "parque de diversão",
+ "zh": "游乐园",
+ "zh-cn": "主题公园",
+ "zh-hk": "主題公園",
+ "zh-tw": "主題樂園"
+ },
+ "viewpoint": {
+ "de": "aussichtspunkt",
+ "en": "scenic viewpoint",
+ "en-gb": "viewpoint",
+ "es": "mirador",
+ "fr": "point de vue panoramique",
+ "nl": "uitzichtpunt",
+ "pt": "miradouro",
+ "pt-br": "mirante"
+ },
+ "wilderness_hut": {
+ "de-ch": "biwakschachtel",
+ "en": "bothy",
+ "es": "chozo",
+ "fr": "refuge",
+ "zh": "博希"
+ },
+ "wine_cellar": {
+ "de": "weinkeller",
+ "en": "wine cellar",
+ "es": "bodega subterránea",
+ "fr": "cave à vin",
+ "nl": "wijnkelder",
+ "pt": "adega",
+ "zh": "酒窖"
+ },
+ "yes": {
+ "de": "tourismus",
+ "en": "tourism",
+ "es": "turismo",
+ "fr": "tourisme",
+ "nl": "toerisme",
+ "pt": "turismo",
+ "zh": "旅游"
+ },
+ "zoo": {
+ "en": "zoo",
+ "es": "zoológico",
+ "fr": "parc zoologique",
+ "nl": "dierentuin",
+ "pt": "jardim zoológico",
+ "zh": "動物園",
+ "zh-cn": "动物园"
+ }
+ },
+ "tower": {
+ "": {
+ "de": "parabolspiegel",
+ "en": "parabolic reflector",
+ "es": "espejo parabólico",
+ "fr": "réflecteur parabolique",
+ "nl": "paraboolreflector",
+ "pt": "reflector parabólico",
+ "zh": "拋物面反射器",
+ "de-ch": "stahlfachwerkturm",
+ "en-ca": "lattice tower",
+ "en-gb": "lattice tower",
+ "zh-cn": "镂空塔",
+ "pt-br": "campanário",
+ "zh-tw": "鐘樓"
+ }
+ },
+ "traffic_calming": {
+ "bump": {
+ "de": "bremsschwelle",
+ "en": "speed bump",
+ "es": "resalte",
+ "fr": "ralentisseur",
+ "nl": "verkeersdrempel",
+ "pt": "lombada",
+ "zh": "减速带"
+ },
+ "chicane": {
+ "de": "schikane",
+ "en": "chicane",
+ "es": "chicana",
+ "zh": "s形彎道"
+ },
+ "choker": {
+ "en": "choker"
+ }
+ },
+ "traffic_sign": {
+ "DE": {
+ "de": "touristisches hinweisschild",
+ "en": "tourist sign",
+ "pt": "sinalização turística"
+ }
+ },
+ "transformer": {
+ "distribution": {
+ "de": "verteilungstransformator",
+ "en": "distribution transformer",
+ "es": "transformador de distribución",
+ "fr": "transformateur de distribution",
+ "nl": "distributietransformator"
+ }
+ },
+ "trench": {
+ "dugout": {
+ "de": "wohnhöhle",
+ "en": "dugout",
+ "es": "arquitectura subterránea",
+ "nl": "dug-out",
+ "zh": "地下掩體"
+ }
+ },
+ "trolley_wire": {
+ "yes": {
+ "de": "oberleitung",
+ "en": "overhead line",
+ "es": "catenaria",
+ "fr": "caténaire",
+ "nl": "bovenleiding",
+ "pt": "catenária",
+ "zh": "高架電纜",
+ "zh-cn": "架空接触网",
+ "zh-hk": "架空電纜",
+ "zh-tw": "高架電車線"
+ }
+ },
+ "tunnel": {
+ "culvert": {
+ "de": "durchlass",
+ "en": "culvert",
+ "es": "obra de drenaje",
+ "fr": "buse",
+ "nl": "duiker",
+ "zh": "涵洞"
+ }
+ },
+ "type": {
+ "public_transport": {
+ "de": "öffentlicher verkehr",
+ "en": "public transport",
+ "es": "transporte público",
+ "fr": "transport en commun",
+ "nl": "openbaar vervoer",
+ "pt": "transporte coletivo",
+ "pt-br": "transporte público",
+ "zh": "公共交通",
+ "zh-tw": "公共運輸"
+ },
+ "restriction": {
+ "en": "turn restriction routing"
+ },
+ "waterway": {
+ "de": "wasserstraße",
+ "de-ch": "wasserstrasse",
+ "en": "waterway",
+ "es": "vía de agua",
+ "fr": "voie navigable",
+ "nl": "vaarweg",
+ "pt": "hidrovia",
+ "zh": "水道",
+ "de-at": "fluss"
+ }
+ },
+ "usage": {
+ "spillway": {
+ "de": "hochwasserentlastung",
+ "en": "spillway",
+ "es": "aliviadero",
+ "fr": "déversoir",
+ "nl": "noodoverlaat",
+ "pt": "vertedouro",
+ "zh": "溢洪道"
+ }
+ },
+ "vegetarian": {
+ "only": {
+ "de": "vegetarisches restaurant",
+ "en": "vegetarian restaurant",
+ "es": "restaurante vegetariano",
+ "fr": "restaurant végétarien",
+ "nl": "vegetarische eetgelegenheid",
+ "pt": "restaurante vegetariano"
+ }
+ },
+ "vending": {
+ "books": {
+ "de": "buchautomat",
+ "en": "book vending machine"
+ },
+ "bottle_return": {
+ "de": "leergutautomat",
+ "en": "reverse vending machine",
+ "es": "máquina expendedora inversa"
+ },
+ "cigarettes": {
+ "de": "zigarettenautomat",
+ "en": "cigarette machine"
+ },
+ "condoms": {
+ "de": "kondomautomat",
+ "en": "condom machine",
+ "zh": "避孕套自動販賣機"
+ },
+ "drinks": {
+ "de": "getränkeautomat",
+ "en": "drink vending machine",
+ "fr": "distributeur automatique de boissons"
+ },
+ "fishing_bait": {
+ "de": "wurmautomat",
+ "en": "bait machine",
+ "fr": "distributeur d'asticots"
+ },
+ "milk": {
+ "de": "milchautomat",
+ "en": "milk vending machine",
+ "fr": "distributeur de lait frais"
+ },
+ "newspapers": {
+ "de": "zeitungsautomat",
+ "en": "newspaper vending machine",
+ "zh": "報箱"
+ },
+ "parcel_mail_in": {
+ "de": "paketautomat",
+ "en": "parcel locker"
+ },
+ "parcel_mail_in;parcel_pickup": {
+ "de": "paketautomat",
+ "en": "parcel locker"
+ },
+ "parcel_pickup": {
+ "de": "paketautomat",
+ "en": "parcel locker"
+ },
+ "parcel_pickup;parcel_mail_in": {
+ "de": "paketautomat",
+ "en": "parcel locker"
+ },
+ "parking_tickets": {
+ "de": "parkscheinautomat",
+ "en": "pay and display",
+ "fr": "horodateur",
+ "nl": "parkeerautomaat",
+ "zh": "憑票"
+ },
+ "public_transport_tickets": {
+ "de": "fahrkartenautomat",
+ "de-ch": "billetautomat",
+ "en": "ticket machine",
+ "fr": "distributeur automatique de titres de transport",
+ "nl": "kaartautomaat",
+ "zh": "自动售票机",
+ "zh-hk": "自動售票機"
+ },
+ "stamps": {
+ "de": "briefmarkenautomat",
+ "en": "stamp vending machine"
+ },
+ "sweets": {
+ "de": "snackautomat",
+ "en": "snack machine",
+ "fr": "distributeur automatique de snacks"
+ },
+ "toll": {
+ "de": "mautstellen-terminal",
+ "en": "toll automat"
+ }
+ },
+ "volcano": {
+ "": {
+ "en": "dormant volcano",
+ "fr": "volcan endormi",
+ "nl": "slapende vulkaan",
+ "zh": "休眠火山",
+ "zh-hk": "睡火山",
+ "de": "schichtvulkan",
+ "es": "estratovolcán",
+ "pt": "estratovulcão",
+ "zh-cn": "复式火山",
+ "zh-tw": "複式火山"
+ }
+ },
+ "voltage": {
+ "15000": {
+ "de": "15 kv eisenbahn-stromsystem",
+ "en": "15 kv, 16.7 hz ac railway electrification",
+ "en-ca": "15 kv ac railway electrification",
+ "en-gb": "15 kv ac railway electrification",
+ "es": "electrificación ferroviaria de 15 kv de ca",
+ "fr": "électrification ferroviaire 15 kv 16,7 hz",
+ "nl": "15 kv bovenleidingssysteem",
+ "zh": "15千伏交流电气化铁路"
+ }
+ },
+ "wall": {
+ "noise_barrier": {
+ "de": "lärmschutzwand",
+ "en": "noise barrier",
+ "es": "barrera acústica",
+ "fr": "mur anti-bruit",
+ "nl": "geluidsscherm",
+ "pt": "barreira sonora",
+ "zh": "隔音屏障"
+ }
+ },
+ "water": {
+ "lake": {
+ "de": "see",
+ "en": "lake",
+ "es": "lago",
+ "fr": "lac",
+ "nl": "meer",
+ "pt": "lago",
+ "zh": "湖泊"
+ },
+ "pond": {
+ "de": "weiher",
+ "de-ch": "teich",
+ "en": "pond",
+ "es": "estanque",
+ "fr": "étang",
+ "nl": "vijver",
+ "pt": "lagoa",
+ "zh": "池塘"
+ },
+ "reservoir": {
+ "de": "stausee",
+ "en": "reservoir",
+ "es": "embalse",
+ "fr": "lac de barrage",
+ "nl": "stuwmeer",
+ "pt": "reservatório",
+ "zh": "水庫",
+ "zh-cn": "水库"
+ }
+ },
+ "waterway": {
+ "boatyard": {
+ "de": "werft",
+ "en": "shipyard",
+ "es": "astillero naval",
+ "fr": "chantier naval",
+ "nl": "scheepswerf",
+ "pt": "estaleiro",
+ "zh": "造船厂"
+ },
+ "canal": {
+ "de": "kanal",
+ "en": "canal",
+ "nl": "kanaal",
+ "zh": "運河"
+ },
+ "dam": {
+ "de": "talsperre",
+ "en": "dam",
+ "es": "represa",
+ "fr": "barrage",
+ "pt": "barragem",
+ "zh": "水坝",
+ "zh-tw": "水壩"
+ },
+ "ditch": {
+ "de": "wassergraben",
+ "en": "ditch",
+ "es": "canal",
+ "fr": "fossé",
+ "nl": "sloot",
+ "zh": "溝渠"
+ },
+ "dock": {
+ "en": "dock",
+ "es": "muelle",
+ "fr": "darse",
+ "nl": "dok",
+ "pt": "doca",
+ "zh": "船塢"
+ },
+ "fish_pass": {
+ "de": "fischtreppe",
+ "en": "fish ladder",
+ "es": "escalera de peces",
+ "fr": "échelle à poissons",
+ "nl": "vistrap",
+ "pt": "escada de peixes",
+ "zh": "魚道"
+ },
+ "lock_gate": {
+ "en": "lock gate"
+ },
+ "milestone": {
+ "de": "flusskilometer",
+ "en": "river mile",
+ "es": "milla de río",
+ "nl": "kilometerraai",
+ "zh": "河英里"
+ },
+ "river": {
+ "de": "fluss",
+ "en": "river",
+ "es": "río",
+ "fr": "rivière",
+ "nl": "rivier",
+ "pt": "rio",
+ "zh": "河流"
+ },
+ "stream": {
+ "de": "bach",
+ "en": "brook",
+ "es": "arroyo",
+ "fr": "ruisseau",
+ "nl": "beek",
+ "pt": "córrego",
+ "zh": "溪",
+ "en-gb": "stream"
+ },
+ "wadi": {
+ "en": "wadi",
+ "es": "uadi",
+ "fr": "oued",
+ "pt": "uádi",
+ "zh": "乾谷",
+ "zh-cn": "干谷"
+ },
+ "waterfall": {
+ "de": "wasserfall",
+ "en": "waterfall",
+ "es": "cascada",
+ "fr": "chute d'eau",
+ "nl": "waterval",
+ "pt": "cascata",
+ "pt-br": "cachoeira",
+ "zh": "瀑布"
+ },
+ "weir": {
+ "de": "wehr",
+ "en": "weir",
+ "es": "vertedero hidráulico",
+ "fr": "seuil",
+ "nl": "stuw",
+ "zh": "堰"
+ }
+ },
+ "wetland": {
+ "marsh": {
+ "de": "sumpf",
+ "en": "marsh",
+ "es": "marisma",
+ "fr": "marais",
+ "nl": "moeras",
+ "pt": "marisma",
+ "zh": "草沼"
+ },
+ "swamp": {
+ "de": "bruchwald",
+ "de-ch": "sumpf",
+ "en": "swamp",
+ "es": "pantano",
+ "fr": "marécage",
+ "nl": "zwamp",
+ "pt": "pântano",
+ "zh": "树沼"
+ },
+ "tidalflat": {
+ "en": "tidal flat"
+ }
+ },
+ "wheelchair": {
+ "no": {
+ "de": "nicht rollstuhlzugänglich",
+ "en": "wheelchair inaccessible",
+ "fr": "inaccessible aux personnes à mobilité réduite",
+ "nl": "niet-rolstoeltoegankelijk",
+ "pt": "inacessível por cadeira de rodas"
+ },
+ "yes": {
+ "de": "rollstuhlzugänglich",
+ "en": "wheelchair accessible",
+ "es": "accesible con silla de ruedas",
+ "fr": "accessible, sans aide, aux personnes à mobilité réduite",
+ "nl": "rolstoeltoegankelijk",
+ "pt": "acessível por cadeira de rodas",
+ "zh": "可使用輪椅"
+ }
+ },
+ "wholesale": {
+ "supermarket": {
+ "de": "großmarkt",
+ "en": "wholesale market",
+ "es": "mercado de abastos",
+ "fr": "marché de gros",
+ "nl": "groothandelsmarkt",
+ "pt": "mercado atacadista",
+ "zh": "量販市場"
+ }
+ },
+ "zoo": {
+ "aviary": {
+ "de": "voliere",
+ "en": "aviary",
+ "es": "aviario",
+ "fr": "volière",
+ "nl": "volière",
+ "pt": "aviário",
+ "zh": "大鸟笼"
+ },
+ "birds": {
+ "de": "vogelpark",
+ "en": "bird park",
+ "fr": "parc ornithologique",
+ "nl": "vogelpark"
+ },
+ "butterfly": {
+ "de": "tagfalter",
+ "en": "butterfly",
+ "es": "rhopalocera",
+ "fr": "rhopalocères",
+ "nl": "vlinder",
+ "pt": "borboleta",
+ "zh": "蝴蝶"
+ },
+ "enclosure": {
+ "de": "käfig",
+ "en": "cage",
+ "es": "jaula",
+ "nl": "kooi",
+ "pt": "jaula",
+ "zh": "籠",
+ "zh-cn": "笼"
+ },
+ "falconry": {
+ "de": "greifvogelschau",
+ "en": "falconry display"
+ },
+ "petting_zoo": {
+ "de": "streichelzoo",
+ "en": "petting zoo",
+ "nl": "kinderboerderij",
+ "zh": "爱畜动物园"
+ },
+ "reptile": {
+ "de": "reptilien",
+ "en": "reptilia",
+ "en-ca": "reptile",
+ "en-gb": "reptile",
+ "es": "reptil",
+ "nl": "reptielen",
+ "pt": "réptil",
+ "pt-br": "répteis",
+ "zh": "爬行动物",
+ "zh-hk": "爬蟲類"
+ },
+ "safari_park": {
+ "de": "safaripark",
+ "en": "safari park",
+ "fr": "parc safari",
+ "nl": "safaripark",
+ "zh": "野生动物园",
+ "zh-hk": "上海"
+ },
+ "wildlife_park": {
+ "de": "wildpark",
+ "en": "wildlife park",
+ "fr": "parc de vision",
+ "nl": "wildpark"
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/searx/data/useragents.json b/searx/data/useragents.json
index abb8100..47cbd37 100644
--- a/searx/data/useragents.json
+++ b/searx/data/useragents.json
@@ -1,14 +1,11 @@
{
"versions": [
- "70.0.1",
- "70.0",
- "69.0.3",
- "69.0.2",
- "69.0.1",
- "69.0"
+ "102.0",
+ "101.0.1",
+ "101.0"
],
"os": [
- "Windows NT 10; WOW64",
+ "Windows NT 10.0; WOW64",
"X11; Linux x86_64"
],
"ua": "Mozilla/5.0 ({os}; rv:{version}) Gecko/20100101 Firefox/{version}"
diff --git a/searx/data/wikidata_units.json b/searx/data/wikidata_units.json
new file mode 100644
index 0000000..83d3fa3
--- /dev/null
+++ b/searx/data/wikidata_units.json
@@ -0,0 +1,1230 @@
+{
+ "Q199": "1",
+ "Q100036106": "int nmi",
+ "Q100149279": "°We",
+ "Q100995": "lb",
+ "Q101194838": "GHz/V",
+ "Q101427873": "pk (US)",
+ "Q101427917": "pk (UK)",
+ "Q101463141": "ym²",
+ "Q101463237": "zm²",
+ "Q101463321": "am²",
+ "Q101463409": "fm²",
+ "Q101463496": "pm²",
+ "Q101463679": "hm²",
+ "Q101464050": "Mm²",
+ "Q101464215": "Gm²",
+ "Q101464369": "Tm²",
+ "Q101464499": "Pm²",
+ "Q101464624": "Em²",
+ "Q101464753": "Zm²",
+ "Q101464875": "Ym²",
+ "Q101515060": "g/J",
+ "Q101875087": "cd/cm²",
+ "Q101879174": "dm/s",
+ "Q102068844": "cm⁻³",
+ "Q102130673": "ym/s",
+ "Q102130674": "zm/s",
+ "Q102130677": "am/s",
+ "Q102130679": "fm/s",
+ "Q102130681": "pm/s",
+ "Q102130684": "nm/s",
+ "Q102130686": "μm/s",
+ "Q102130688": "mm/s",
+ "Q102130690": "dam/s",
+ "Q102130692": "hm/s",
+ "Q102130694": "Mm/s",
+ "Q102130696": "Gm/s",
+ "Q102130698": "Tm/s",
+ "Q102130700": "Pm/s",
+ "Q102130702": "Em/s",
+ "Q102130704": "Zm/s",
+ "Q102130706": "Ym/s",
+ "Q102130743": "ym/s²",
+ "Q102130745": "zm/s²",
+ "Q102130747": "am/s²",
+ "Q102130748": "fm/s²",
+ "Q102130751": "pm/s²",
+ "Q102130753": "nm/s²",
+ "Q102130755": "μm/s²",
+ "Q102130756": "mm/s²",
+ "Q102130758": "dm/s²",
+ "Q102130759": "dam/s²",
+ "Q102130761": "hm/s²",
+ "Q102130762": "km/s²",
+ "Q102130765": "Mm/s²",
+ "Q102130767": "Gm/s²",
+ "Q102130769": "Tm/s²",
+ "Q102130771": "Pm/s²",
+ "Q102130773": "Em/s²",
+ "Q102130775": "Zm/s²",
+ "Q102130777": "Ym/s²",
+ "Q1022113": "cm³",
+ "Q102573": "Bq",
+ "Q103246": "Sv",
+ "Q103510": "bar",
+ "Q10380431": "TJ",
+ "Q1040401": "das",
+ "Q1040427": "hs",
+ "Q104117265": "Bi",
+ "Q1042866": "Zib",
+ "Q104628312": "vars",
+ "Q104629193": "m/Es²",
+ "Q104816263": "kg/dm³",
+ "Q104907398": "μN m",
+ "Q104907399": "mN m",
+ "Q1050958": "inHg",
+ "Q1051665": "m/s²",
+ "Q1052397": "rad",
+ "Q1054140": "Mm",
+ "Q10543042": "Ym",
+ "Q105519288": "B SPL",
+ "Q1057069": "hg",
+ "Q105761866": "mV/K",
+ "Q105816142": "tsp",
+ "Q105816269": "cup (US)",
+ "Q105840138": "BU",
+ "Q1063756": "rad/s",
+ "Q1063786": "in²",
+ "Q1065153": "mrad",
+ "Q106589841": "MHz/T",
+ "Q106611785": "g/dm³",
+ "Q106611903": "J/g",
+ "Q1066138": "Ps",
+ "Q106617289": "GBq/kg",
+ "Q106617513": "mGy/s",
+ "Q106617558": "mSv/s",
+ "Q106617559": "μSv/s",
+ "Q106617560": "nSv/s",
+ "Q106617579": "kBq/kg",
+ "Q106617585": "MBq/kg",
+ "Q106623539": "Mg/m³",
+ "Q106623548": "μg/m³",
+ "Q106623562": "kg/cm³",
+ "Q106623580": "kg/kmol",
+ "Q106623615": "kg cm²",
+ "Q106623620": "kg mm²",
+ "Q106639792": "dm³/kg",
+ "Q106645176": "dz",
+ "Q106645210": "mg/g",
+ "Q106645232": "g/mm",
+ "Q106645237": "kg/mm",
+ "Q106645241": "mg/m",
+ "Q106645245": "kg/km",
+ "Q106645257": "MN m",
+ "Q106645261": "kN m",
+ "Q106645290": "dN m",
+ "Q1067722": "Fg",
+ "Q106777906": "μS/m",
+ "Q106777917": "S/cm",
+ "Q106777923": "mS/cm",
+ "Q106777925": "MS/m",
+ "Q106777933": "kS/m",
+ "Q106777943": "nS/m",
+ "Q106777952": "nS/cm",
+ "Q106777957": "pS/m",
+ "Q106808096": "kJ/g",
+ "Q106808114": "GC/m³",
+ "Q106808120": "C/mm³",
+ "Q106808129": "MC/m³",
+ "Q106808138": "C/cm³",
+ "Q106808144": "kC/m³",
+ "Q106808151": "mC/m³",
+ "Q106808156": "μC/m³",
+ "Q106808167": "MC/m²",
+ "Q106808174": "C/mm²",
+ "Q106808180": "C/cm²",
+ "Q106808187": "kC/m²",
+ "Q106808194": "mC/m²",
+ "Q106808200": "μC/m²",
+ "Q106808221": "mC/kg",
+ "Q106885926": "N/mm",
+ "Q106886632": "hbar",
+ "Q106886776": "N/mm²",
+ "Q1069725": "p.",
+ "Q106998070": "cm³/m³",
+ "Q106998079": "dm³/m³",
+ "Q107028522": "μg/hg",
+ "Q107028836": "MK⁻¹",
+ "Q107133620": "mg/m²",
+ "Q107133637": "g/cm²",
+ "Q107133667": "mg/cm²",
+ "Q107133676": "g/m²",
+ "Q107164998": "cd mm²/m²",
+ "Q107210119": "g/s",
+ "Q107210344": "mg/s",
+ "Q107213614": "kJ/100g",
+ "Q107226391": "cm⁻¹",
+ "Q1072404": "K",
+ "Q107244316": "mm⁻¹",
+ "Q107244475": "dm⁻¹",
+ "Q107244557": "km⁻¹",
+ "Q107256474": "l.",
+ "Q107299747": "kvar",
+ "Q107299751": "Mvar",
+ "Q107313731": "μg/kg",
+ "Q107313738": "ng/kg",
+ "Q107313800": "cm³/s",
+ "Q107325155": "kWb/m",
+ "Q107325173": "Wb/mm",
+ "Q107361007": "kJ/s",
+ "Q107361082": "MJ/m³",
+ "Q107361092": "J/cm²",
+ "Q107361171": "mW/m²",
+ "Q107361180": "μW/m²",
+ "Q107361187": "pW/m²",
+ "Q107378499": "kN/m²",
+ "Q107410680": "cN m",
+ "Q107410689": "N cm",
+ "Q107410785": "g/mm²",
+ "Q107410801": "g/(cm s)",
+ "Q107410895": "kJ/hg",
+ "Q107440604": "W/cm²",
+ "Q107440662": "mmol/kg",
+ "Q107440685": "mmol/g",
+ "Q107440698": "kmol/kg",
+ "Q107440839": "g/g",
+ "Q107440910": "g/hg",
+ "Q107441004": "mg/hg",
+ "Q107460729": "mm³/mm³",
+ "Q107460790": "kg/GJ",
+ "Q107460866": "g/m",
+ "Q107460882": "mg/km",
+ "Q107461064": "MJ/m²",
+ "Q107461092": "g/(m² s)",
+ "Q107461119": "μg/(m² s)",
+ "Q107461139": "μg/J",
+ "Q107461146": "g/MJ",
+ "Q107538710": "μH/m",
+ "Q107538724": "nH/m",
+ "Q107970291": "mol/dm³",
+ "Q1084321": "Tb/s",
+ "Q1086691": "fg",
+ "Q108730765": "kW a",
+ "Q108888186": "eV/c²",
+ "Q108888198": "keV/c²",
+ "Q108888206": "MeV/c²",
+ "Q108888224": "GeV/c²",
+ "Q1091257": "tex",
+ "Q1092296": "a",
+ "Q110143852": "Ω cm",
+ "Q1104069": "$",
+ "Q11061003": "μm²",
+ "Q11061005": "nm²",
+ "Q110742003": "dppx",
+ "Q1131660": "st",
+ "Q1137675": "cr",
+ "Q1140444": "Zb",
+ "Q1140577": "Yb",
+ "Q1152074": "Pb",
+ "Q1152323": "Tb",
+ "Q1165799": "mil",
+ "Q11776930": "Mg",
+ "Q11830636": "psf",
+ "Q11929860": "kpc",
+ "Q1194225": "lbf",
+ "Q1194580": "Mib",
+ "Q1195111": "Eb",
+ "Q1196837": "ω_P",
+ "Q1197459": "Ms",
+ "Q11982285": "Em³",
+ "Q11982288": "Zm³",
+ "Q11982289": "Tm³",
+ "Q12011178": "Zs",
+ "Q12034595": "oz (ap.)",
+ "Q1204894": "Gib",
+ "Q12257695": "Eb/s",
+ "Q12257696": "EB/s",
+ "Q12261466": "kB/s",
+ "Q12265780": "Pb/s",
+ "Q12265783": "PB/s",
+ "Q12269121": "Yb/s",
+ "Q12269122": "YB/s",
+ "Q12269308": "Zb/s",
+ "Q12269309": "ZB/s",
+ "Q1247300": "cm H₂O",
+ "Q12714022": "cwt",
+ "Q12789864": "GeV",
+ "Q12874593": "W h",
+ "Q128822": "kn",
+ "Q13035094": "J/mol",
+ "Q130964": "cal",
+ "Q131255": "F",
+ "Q13147228": "g/cm³",
+ "Q131723": "₿",
+ "Q1322380": "Ts",
+ "Q1323615": "oz t",
+ "Q132643": "kr",
+ "Q13400897": "g",
+ "Q13479685": "mm H2O",
+ "Q1351253": "Eib",
+ "Q1351334": "Pib",
+ "Q13542672": "Ry",
+ "Q13548586": "THz",
+ "Q13582667": "kgf/cm²",
+ "Q1361854": "dwt",
+ "Q1363007": "slug",
+ "Q1374438": "ks",
+ "Q13753469": "MB/s",
+ "Q1377051": "Gs",
+ "Q1394540": "bm",
+ "Q1396128": "F",
+ "Q1413142": "Gb",
+ "Q14158377": "A_P",
+ "Q1427899": "U",
+ "Q14623803": "MDa",
+ "Q14623804": "kDa",
+ "Q1472674": "S",
+ "Q14754979": "Zg",
+ "Q14786969": "MJ",
+ "Q14850704": "℧",
+ "Q14913554": "Ys",
+ "Q14914907": "th",
+ "Q14916719": "Gpc",
+ "Q14923662": "Pm³",
+ "Q1511773": "LSd",
+ "Q15120301": "l atm",
+ "Q1542309": "xu",
+ "Q1545979": "ft³",
+ "Q1550511": "yd²",
+ "Q15551713": "Sh",
+ "Q1569733": "St",
+ "Q15784325": "apc",
+ "Q160857": "hp",
+ "Q162525": "°E",
+ "Q1628990": "hph",
+ "Q163343": "T",
+ "Q163354": "H",
+ "Q1640501": "hyl",
+ "Q1645498": "μg",
+ "Q16859309": "lb ft",
+ "Q169893": "S",
+ "Q170804": "Wb",
+ "Q17093295": "m/h",
+ "Q17255465": "v_P",
+ "Q173117": "R$",
+ "Q1741429": "kpm",
+ "Q174467": "Lm",
+ "Q174728": "cm",
+ "Q174789": "mm",
+ "Q175821": "μm",
+ "Q1768929": "p",
+ "Q1770733": "Tg",
+ "Q1772386": "dg",
+ "Q177493": "Gs",
+ "Q177612": "sr",
+ "Q1777507": "fs",
+ "Q177974": "atm",
+ "Q178506": "bbl",
+ "Q178674": "nm",
+ "Q1790908": "mi3",
+ "Q1793863": "sn",
+ "Q179836": "lx",
+ "Q180154": "km/h",
+ "Q180892": "M☉",
+ "Q1815100": "cl",
+ "Q182098": "kWh",
+ "Q1823150": "μW",
+ "Q182429": "m/s",
+ "Q1826195": "dl",
+ "Q18413919": "cm/s",
+ "Q184172": "F",
+ "Q185078": "a",
+ "Q185153": "erg",
+ "Q185648": "Torr",
+ "Q185759": "span",
+ "Q1872619": "zs",
+ "Q189097": "₧",
+ "Q190095": "Gy",
+ "Q19017495": "mm²",
+ "Q190951": "S$",
+ "Q191118": "t",
+ "Q1913097": "fg",
+ "Q1916026": "μV",
+ "Q192027": "Bd",
+ "Q192274": "pm",
+ "Q193098": "KD",
+ "Q1935515": "mA s",
+ "Q19392152": "TL",
+ "Q193933": "dpt",
+ "Q194339": "B$",
+ "Q1970718": "mam",
+ "Q1972579": "pdl",
+ "Q199462": "LE",
+ "Q199471": "Afs",
+ "Q200323": "dm",
+ "Q200337": "Kz",
+ "Q201880": "LL",
+ "Q201933": "dyn",
+ "Q2029156": "quad",
+ "Q2029519": "hl",
+ "Q203567": "₦",
+ "Q2042279": "m H₂O",
+ "Q204992": "L.",
+ "Q2051195": "GWh",
+ "Q2055118": "ppb",
+ "Q2064166": "fc",
+ "Q206600": "MRF",
+ "Q20706220": "cmm",
+ "Q20706221": "dmm",
+ "Q2080811": "vol%",
+ "Q208526": "NT$",
+ "Q208528": "gon",
+ "Q208634": "kat",
+ "Q208788": "fm",
+ "Q2090348": "Kib/s",
+ "Q209351": "b",
+ "Q209426": "′",
+ "Q21006887": "ppm",
+ "Q2100949": "P",
+ "Q21014455": "m/min",
+ "Q210472": "B/.",
+ "Q21061369": "g/kg",
+ "Q21062777": "MPa",
+ "Q21064807": "kPa",
+ "Q21075844": "ml/l",
+ "Q21077820": "mg/m³",
+ "Q21091747": "mg/kg",
+ "Q211256": "mi/h",
+ "Q21154419": "PD",
+ "Q211580": "BTU (th)",
+ "Q212120": "A h",
+ "Q213005": "G$",
+ "Q2140397": "in³",
+ "Q214377": "ell",
+ "Q2143992": "kHz",
+ "Q21489891": "nm³",
+ "Q21489892": "Gm³",
+ "Q21489893": "Mm³",
+ "Q21489894": "μm³",
+ "Q21500224": "mas",
+ "Q2151240": "mag",
+ "Q215571": "N m",
+ "Q21604951": "g/m³",
+ "Q2165290": "yd³",
+ "Q216880": "kgf",
+ "Q217208": "a",
+ "Q2175964": "dm³",
+ "Q218593": "in",
+ "Q2199357": "dec",
+ "Q22137107": "mas/y",
+ "Q2215478": "ppt",
+ "Q2221356": "mW h",
+ "Q22350885": "da",
+ "Q2243141": "Gb/s",
+ "Q2254856": "ca",
+ "Q22673229": "ft/min",
+ "Q2269250": "kb/s",
+ "Q2282891": "μl",
+ "Q2282906": "ng",
+ "Q22934083": "nC",
+ "Q229354": "Ci",
+ "Q232291": "mi²",
+ "Q2332346": "ml",
+ "Q235729": "y (365 days)",
+ "Q23823681": "TW",
+ "Q23925410": "gal (UK)",
+ "Q23925413": "gal (US)",
+ "Q23931040": "dam²",
+ "Q23931103": "nmi²",
+ "Q240468": "syr£",
+ "Q2414435": "$b.",
+ "Q242988": "Lib$",
+ "Q2438073": "ag",
+ "Q2448803": "mV",
+ "Q2451296": "μF",
+ "Q246868": "lot",
+ "Q2474258": "mSv",
+ "Q2483628": "as",
+ "Q2489298": "cm²",
+ "Q249439": "q_P",
+ "Q2518569": "nSv",
+ "Q253276": "mi",
+ "Q254532": "deg²",
+ "Q25472681": "GB/s",
+ "Q25472693": "TB/s",
+ "Q25499149": "oct",
+ "Q25511288": "mb",
+ "Q2553708": "MV",
+ "Q2554092": "kV",
+ "Q259502": "A$",
+ "Q260126": "rem",
+ "Q2612219": "Pg",
+ "Q261247": "ct",
+ "Q26162546": "mm²/s",
+ "Q2619500": "foe",
+ "Q2636421": "nH",
+ "Q2637946": "dal",
+ "Q2642547": "ha",
+ "Q2652700": "Osm",
+ "Q2655272": "Eg",
+ "Q2659078": "TW h",
+ "Q2670039": "₶",
+ "Q26708069": "kcal",
+ "Q267391": "K",
+ "Q2679083": "μH",
+ "Q2682463": "nF",
+ "Q2691798": "cg",
+ "Q271206": "sud£",
+ "Q2737347": "mm²",
+ "Q2739114": "μSv",
+ "Q275112": "Bz$",
+ "Q2756030": "pF",
+ "Q2757753": "PW h",
+ "Q2762458": "ys",
+ "Q2784622": "T",
+ "Q27864215": "μW h",
+ "Q2793566": "GV",
+ "Q27949241": "R",
+ "Q2799294": "Gg",
+ "Q281096": "cd/m²",
+ "Q28719934": "keV",
+ "Q28924752": "g/mol",
+ "Q28924753": "kg/mol",
+ "Q2924137": "mH",
+ "Q296936": "toe",
+ "Q29924639": "kVA",
+ "Q30001811": "aBq",
+ "Q30001813": "aC",
+ "Q30001814": "aHz",
+ "Q30001815": "aJ",
+ "Q30001816": "akat",
+ "Q30001818": "aL",
+ "Q30001819": "alm",
+ "Q30001820": "alx",
+ "Q30001822": "aN",
+ "Q30001823": "aΩ",
+ "Q30001825": "aPa",
+ "Q30001826": "arad",
+ "Q30001827": "aS",
+ "Q30001828": "aSv",
+ "Q30001829": "asr",
+ "Q30001830": "aT",
+ "Q30001831": "aV",
+ "Q30001832": "aW",
+ "Q30001833": "aWb",
+ "Q3013059": "ka",
+ "Q304479": "tr",
+ "Q305896": "DPI",
+ "Q3095010": "γ",
+ "Q31889818": "ppq",
+ "Q3194304": "kb",
+ "Q3207456": "mW",
+ "Q321017": "R",
+ "Q3221356": "ym",
+ "Q3239557": "pg",
+ "Q3241121": "mg",
+ "Q324923": "Hart",
+ "Q3249364": "cs",
+ "Q3251645": "ds",
+ "Q3267417": "Tm",
+ "Q3270676": "zm",
+ "Q32750621": "liq pt (US)",
+ "Q32750759": "fl oz (US)",
+ "Q32750816": "bu (US)",
+ "Q32751272": "dry pt (US)",
+ "Q32751296": "bbl (US)",
+ "Q3276763": "GHz",
+ "Q3277907": "Em",
+ "Q3277915": "Zm",
+ "Q3277919": "Pm",
+ "Q3312063": "fL",
+ "Q3320608": "kW",
+ "Q3331719": "dm²",
+ "Q3332689": "RT",
+ "Q3332814": "Mb",
+ "Q3396758": "daa",
+ "Q3414243": "qps",
+ "Q3421309": "R_J",
+ "Q3495543": "mbar",
+ "Q355198": "px",
+ "Q3674704": "km/s",
+ "Q3675550": "mm³",
+ "Q3712659": "$",
+ "Q376660": "nat",
+ "Q37732658": "°R",
+ "Q3773454": "Mpc",
+ "Q3815076": "Kib",
+ "Q3833309": "£",
+ "Q3858002": "mA h",
+ "Q3867152": "ft/s²",
+ "Q389062": "Tib",
+ "Q3902688": "pl",
+ "Q3902709": "ps",
+ "Q39360235": "US lea",
+ "Q39360471": "nl",
+ "Q39362962": "µin",
+ "Q39363132": "UK lg",
+ "Q39363209": "UK nl",
+ "Q39380159": "US nmi",
+ "Q39462789": "µin²",
+ "Q39467934": "kgf/m²",
+ "Q39469927": "N/m²",
+ "Q39617688": "cwt",
+ "Q39617818": "t lb",
+ "Q39628023": "y",
+ "Q39699418": "cm/s²",
+ "Q39708248": "S",
+ "Q39709980": "bd",
+ "Q39710113": "bhp EDR",
+ "Q3972226": "kL",
+ "Q4041686": "in H20",
+ "Q4068266": "Ʒ",
+ "Q4176683": "aC",
+ "Q42319606": "people/m²",
+ "Q4243638": "km³",
+ "Q4456994": "mF",
+ "Q469356": "T",
+ "Q476572": "Ha",
+ "Q482798": "yd",
+ "Q483261": "Da",
+ "Q483725": "A.M.",
+ "Q484092": "lm",
+ "Q4861171": "H",
+ "Q494083": "fur",
+ "Q4989854": "kJ",
+ "Q4992853": "kt",
+ "Q500515": "Gal",
+ "Q5042194": "£",
+ "Q50808017": "kg m²",
+ "Q5139563": "hPa",
+ "Q514845": "pz",
+ "Q5195628": "hm³",
+ "Q5198770": "dam³",
+ "Q524410": "Ga",
+ "Q5299480": "DPCm",
+ "Q53393488": "PHz",
+ "Q53393490": "EHz",
+ "Q53393494": "ZHz",
+ "Q53393498": "YHz",
+ "Q53393659": "ML",
+ "Q53393664": "GL",
+ "Q53393669": "El",
+ "Q53393674": "ZL",
+ "Q53393678": "YL",
+ "Q53393768": "zl",
+ "Q53393771": "yL",
+ "Q53393868": "GJ",
+ "Q53393886": "PJ",
+ "Q53393890": "EJ",
+ "Q53448786": "yHz",
+ "Q53448790": "zHz",
+ "Q53448794": "fHz",
+ "Q53448797": "pHz",
+ "Q53448801": "nHz",
+ "Q53448806": "μHz",
+ "Q53448808": "mHz",
+ "Q53448813": "cHz",
+ "Q53448817": "dHz",
+ "Q53448820": "daHz",
+ "Q53448826": "hHz",
+ "Q53448828": "yJ",
+ "Q53448832": "zJ",
+ "Q53448842": "pJ",
+ "Q53448844": "nJ",
+ "Q53448847": "μJ",
+ "Q53448851": "mJ",
+ "Q53448856": "cJ",
+ "Q53448860": "dJ",
+ "Q53448864": "daJ",
+ "Q53448875": "hJ",
+ "Q53448879": "yPa",
+ "Q53448883": "zPa",
+ "Q53448886": "fPa",
+ "Q53448892": "pPa",
+ "Q53448897": "nPa",
+ "Q53448900": "μPa",
+ "Q53448906": "mPa",
+ "Q53448909": "cPa",
+ "Q53448914": "dPa",
+ "Q53448918": "daPa",
+ "Q53448922": "GPa",
+ "Q53448927": "TPa",
+ "Q53448931": "PPa",
+ "Q53448936": "EPa",
+ "Q53448939": "ZPa",
+ "Q53448943": "YPa",
+ "Q53448949": "yV",
+ "Q53448952": "zV",
+ "Q53448957": "fV",
+ "Q53448960": "pV",
+ "Q53448965": "nV",
+ "Q53448969": "cV",
+ "Q53448973": "dV",
+ "Q53448977": "daV",
+ "Q53448981": "hV",
+ "Q53448985": "TV",
+ "Q53448990": "PV",
+ "Q53448994": "EV",
+ "Q53448996": "ZV",
+ "Q53449001": "YV",
+ "Q53449006": "yW",
+ "Q53449008": "zW",
+ "Q53449013": "fW",
+ "Q53449018": "pW",
+ "Q53449021": "nW",
+ "Q53449025": "cW",
+ "Q53449029": "dW",
+ "Q53449033": "daW",
+ "Q53449036": "hW",
+ "Q53449040": "PW",
+ "Q53449045": "EW",
+ "Q53449049": "ZW",
+ "Q53449054": "YW",
+ "Q53561461": "wf",
+ "Q53561822": "wf",
+ "Q53651160": "zm³",
+ "Q53651201": "Ym³",
+ "Q53651356": "ym³",
+ "Q53651512": "pm³",
+ "Q53651713": "fm³",
+ "Q536785": "ρ_P",
+ "Q53951982": "Mt",
+ "Q53952048": "kt",
+ "Q54006645": "ZWb",
+ "Q54081925": "ZSv",
+ "Q54082468": "ZS",
+ "Q54083144": "ZΩ",
+ "Q54083318": "ZN",
+ "Q54083566": "Zlm",
+ "Q54083579": "Zlx",
+ "Q54083712": "ZBq",
+ "Q54083746": "ZC",
+ "Q54083766": "ZF",
+ "Q54083779": "ZGy",
+ "Q54083795": "ZH",
+ "Q54083813": "Zkat",
+ "Q5409016": "MVA",
+ "Q5465723": "ft-pdl",
+ "Q549389": "b/s",
+ "Q550341": "V A",
+ "Q552299": "ch",
+ "Q55442349": "U/L",
+ "Q55726194": "mg/L",
+ "Q56156859": "mmol",
+ "Q56156949": "μmol",
+ "Q56157046": "nmol",
+ "Q56157048": "pmol",
+ "Q56160603": "fmol",
+ "Q56302633": "UM",
+ "Q56317116": "mgal",
+ "Q56317622": "Q_P",
+ "Q56318907": "kbar",
+ "Q56349362": "Bs.S",
+ "Q56402798": "kN",
+ "Q5711261": "am³",
+ "Q581432": "‴",
+ "Q5879479": "GW",
+ "Q6003257": "am",
+ "Q6009164": "MW h",
+ "Q6014364": "in/s",
+ "Q603071": "E°",
+ "Q605704": "doz",
+ "Q60742631": "AU/yr",
+ "Q608697": "Mx",
+ "Q610135": "G",
+ "Q613726": "Yg",
+ "Q6170164": "yg",
+ "Q6171168": "zg",
+ "Q61756607": "yd",
+ "Q61771602": "ft",
+ "Q61771670": "in",
+ "Q61793198": "rd",
+ "Q61794766": "ch (US survey)",
+ "Q61994988": "Wth",
+ "Q61995006": "KWth",
+ "Q626299": "psi",
+ "Q630369": "var",
+ "Q636200": "U",
+ "Q640907": "sb",
+ "Q6414556": "kip",
+ "Q648908": "bya",
+ "Q64996135": "gal (US)/min",
+ "Q65028392": "mm/a",
+ "Q651336": "M_J",
+ "Q6517513": "dag",
+ "Q667419": "UK t",
+ "Q681996": "M🜨",
+ "Q685662": "p_P",
+ "Q686163": "$",
+ "Q68725821": "°Rø",
+ "Q68726230": "°De",
+ "Q68726625": "°N",
+ "Q69362731": "°C",
+ "Q69363953": "K",
+ "Q693944": "gr",
+ "Q6982035": "MW",
+ "Q69878540": "fl oz (UK)",
+ "Q70378044": "dmol",
+ "Q70378549": "dK",
+ "Q70393458": "kmol",
+ "Q70395375": "Tmol",
+ "Q70395643": "Mmol",
+ "Q70395830": "kK",
+ "Q70396179": "mK",
+ "Q70397275": "μK",
+ "Q70397725": "cmol",
+ "Q70397932": "cK",
+ "Q70398457": "nK",
+ "Q70398619": "MK",
+ "Q70398813": "Gmol",
+ "Q70398991": "GK",
+ "Q70440025": "daK",
+ "Q70440438": "hK",
+ "Q70440620": "damol",
+ "Q70440823": "hmol",
+ "Q70443020": "EK",
+ "Q70443154": "yK",
+ "Q70443282": "zK",
+ "Q70443367": "fK",
+ "Q70443453": "TK",
+ "Q70443757": "pK",
+ "Q70443901": "YK",
+ "Q70444029": "PK",
+ "Q70444141": "Emol",
+ "Q70444284": "ymol",
+ "Q70444386": "zmol",
+ "Q70444514": "Ymol",
+ "Q70444609": "Pmol",
+ "Q712226": "km²",
+ "Q72081071": "MeV",
+ "Q723733": "ms",
+ "Q730251": "ft·lbf",
+ "Q732707": "MHz",
+ "Q73408": "K",
+ "Q7350781": "Mb/s",
+ "Q7398951": "PPI",
+ "Q743895": "bpm",
+ "Q748716": "fps",
+ "Q752079": "RT",
+ "Q752197": "kJ/mol",
+ "Q7574000": "sp",
+ "Q7672057": "TU",
+ "Q777017": "dBm",
+ "Q780456": "Td",
+ "Q78754556": "rot",
+ "Q78756901": "r",
+ "Q78757683": "windings",
+ "Q79726": "kB",
+ "Q79735": "MB",
+ "Q79738": "GB",
+ "Q79741": "TB",
+ "Q79744": "PB",
+ "Q79745": "EB",
+ "Q79747": "ZB",
+ "Q7974920": "W s",
+ "Q79752": "YB",
+ "Q79756": "KiB",
+ "Q79758": "MiB",
+ "Q79765": "GiB",
+ "Q79769": "TiB",
+ "Q79774": "PiB",
+ "Q79777": "EiB",
+ "Q79779": "ZiB",
+ "Q79781": "YiB",
+ "Q80237579": "J/nm",
+ "Q809678": "Ba",
+ "Q81062869": "W/nm",
+ "Q81073100": "W/(sr nm)",
+ "Q81292": "acre",
+ "Q81454": "Å",
+ "Q8229770": "B/s",
+ "Q828224": "km",
+ "Q829073": "\"",
+ "Q83216": "cd",
+ "Q83327": "eV",
+ "Q834105": "g/L",
+ "Q835916": "IU",
+ "Q838801": "ns",
+ "Q842015": "μs",
+ "Q842981": "thm (US)",
+ "Q844211": "kg/m³",
+ "Q844338": "hm",
+ "Q844976": "Oe",
+ "Q845958": "¥",
+ "Q848856": "dam",
+ "Q851872": "o",
+ "Q854546": "Gm",
+ "Q855161": "Yib",
+ "Q856240": "ft³/min",
+ "Q857027": "ft²",
+ "Q85854198": "MN",
+ "Q87262709": "kΩ",
+ "Q87416053": "MΩ",
+ "Q88296091": "tsp",
+ "Q89187604": "bbl (US)",
+ "Q89473028": "bu (UK)",
+ "Q89662131": "pt (UK)",
+ "Q901492": "ph",
+ "Q902274": "cp",
+ "Q9026416": "MWth",
+ "Q9048643": "nl",
+ "Q905912": "L",
+ "Q906223": "Es",
+ "Q909066": "at",
+ "Q911730": "nx",
+ "Q914151": "P_P",
+ "Q915169": "F_P",
+ "Q93318": "M",
+ "Q933427": "B",
+ "Q93678895": "gill (US)",
+ "Q93679498": "gill (UK)",
+ "Q94076025": "dalm",
+ "Q94076717": "dakat",
+ "Q942092": "BWI$",
+ "Q94414053": "Prad",
+ "Q94414499": "PC",
+ "Q94415026": "Grad",
+ "Q94415255": "GC",
+ "Q94415438": "Yrad",
+ "Q94415526": "YC",
+ "Q94415561": "krad",
+ "Q94415782": "Mrad",
+ "Q94416260": "GN",
+ "Q94416535": "cN",
+ "Q94416879": "YN",
+ "Q94417138": "PN",
+ "Q94417481": "μGy",
+ "Q94417583": "μS",
+ "Q94417598": "μT",
+ "Q94417933": "μlm",
+ "Q94418102": "μN",
+ "Q94418220": "μsr",
+ "Q94418481": "μBq",
+ "Q94479580": "GΩ",
+ "Q94480021": "PΩ",
+ "Q94480081": "YΩ",
+ "Q94480128": "cΩ",
+ "Q94480131": "TΩ",
+ "Q94480136": "pΩ",
+ "Q94480254": "nΩ",
+ "Q94480476": "dΩ",
+ "Q94480633": "EΩ",
+ "Q94480967": "daΩ",
+ "Q94481176": "hΩ",
+ "Q94481339": "fΩ",
+ "Q94481646": "yΩ",
+ "Q94487174": "zΩ",
+ "Q94487366": "mΩ",
+ "Q94487561": "μΩ",
+ "Q94487750": "kGy",
+ "Q94488007": "klx",
+ "Q94488361": "MF",
+ "Q94488759": "GBq",
+ "Q94489041": "PBq",
+ "Q94489223": "YBq",
+ "Q94489429": "MBq",
+ "Q94489465": "kBq",
+ "Q94489476": "TBq",
+ "Q94489494": "kWb",
+ "Q94489520": "kS",
+ "Q94490951": "klm",
+ "Q94491129": "kkat",
+ "Q94634634": "cC",
+ "Q94634655": "MC",
+ "Q94634666": "kC",
+ "Q94634677": "TC",
+ "Q94634684": "μC",
+ "Q94634699": "mC",
+ "Q94693759": "csr",
+ "Q94693773": "msr",
+ "Q94693786": "mWb",
+ "Q94693805": "μWb",
+ "Q94693819": "GS",
+ "Q94693849": "cS",
+ "Q94693918": "MS",
+ "Q94694019": "TS",
+ "Q94694096": "pS",
+ "Q94694154": "nS",
+ "Q94694206": "mS",
+ "Q94731530": "mlm",
+ "Q94731808": "mkat",
+ "Q94731887": "μkat",
+ "Q94732218": "nkat",
+ "Q94732627": "pkat",
+ "Q94733432": "fkat",
+ "Q94733760": "cGy",
+ "Q94734107": "dGy",
+ "Q94734232": "mGy",
+ "Q94734359": "daGy",
+ "Q94734468": "aGy",
+ "Q94734527": "pGy",
+ "Q94734593": "nGy",
+ "Q94734689": "kT",
+ "Q94734788": "mT",
+ "Q94939947": "Gkat",
+ "Q94940018": "Pkat",
+ "Q94940081": "ykat",
+ "Q94940160": "dkat",
+ "Q94940232": "Ekat",
+ "Q94940295": "Ykat",
+ "Q94940582": "Tkat",
+ "Q94940892": "hkat",
+ "Q94941461": "zkat",
+ "Q94942602": "MGy",
+ "Q94942863": "GGy",
+ "Q94986863": "YWb",
+ "Q94986889": "PWb",
+ "Q94986906": "cWb",
+ "Q94986920": "GWb",
+ "Q94986942": "MWb",
+ "Q94986962": "TWb",
+ "Q95178536": "Mlm",
+ "Q95178777": "Tlm",
+ "Q95178881": "clm",
+ "Q95179024": "plm",
+ "Q95179137": "nlm",
+ "Q95179382": "hlm",
+ "Q95179467": "flm",
+ "Q95179608": "zlm",
+ "Q95179695": "Mkat",
+ "Q95179788": "ckat",
+ "Q95179882": "PGy",
+ "Q95377836": "PF",
+ "Q95377853": "YF",
+ "Q95378017": "kF",
+ "Q95378296": "TF",
+ "Q95379145": "cF",
+ "Q95379382": "GF",
+ "Q95379491": "daC",
+ "Q95379580": "hC",
+ "Q95379588": "dC",
+ "Q95379596": "EC",
+ "Q95446327": "pC",
+ "Q95446670": "fC",
+ "Q95447079": "zC",
+ "Q95447237": "yC",
+ "Q95447253": "fF",
+ "Q95447263": "zF",
+ "Q95447276": "aF",
+ "Q95447555": "dF",
+ "Q95447863": "EF",
+ "Q95448262": "yF",
+ "Q95448479": "hF",
+ "Q95448689": "daF",
+ "Q95448950": "kSv",
+ "Q95559229": "GSv",
+ "Q95559368": "YSv",
+ "Q95559441": "MSv",
+ "Q95559576": "TSv",
+ "Q95559603": "PSv",
+ "Q95609154": "nWb",
+ "Q95609210": "fWb",
+ "Q95609261": "zWb",
+ "Q95609291": "dWb",
+ "Q95609317": "EWb",
+ "Q95676212": "pWb",
+ "Q95676232": "yWb",
+ "Q95676243": "hWb",
+ "Q95676250": "daWb",
+ "Q95676257": "PS",
+ "Q95676260": "YS",
+ "Q95676273": "zS",
+ "Q95676275": "fS",
+ "Q95676279": "yS",
+ "Q95676287": "hS",
+ "Q95676291": "daS",
+ "Q95676297": "dS",
+ "Q95676298": "ES",
+ "Q95720731": "YGy",
+ "Q95720734": "TGy",
+ "Q95720736": "fGy",
+ "Q95720739": "yGy",
+ "Q95720741": "zGy",
+ "Q95720742": "EGy",
+ "Q95720746": "hGy",
+ "Q95720749": "mlx",
+ "Q95720758": "μlx",
+ "Q95720773": "dalx",
+ "Q95720777": "hlx",
+ "Q95720781": "dlx",
+ "Q95720786": "clx",
+ "Q95857671": "zSv",
+ "Q95859071": "fSv",
+ "Q95860960": "daSv",
+ "Q95861107": "hSv",
+ "Q95861296": "dSv",
+ "Q95862182": "ESv",
+ "Q95863358": "cSv",
+ "Q95863591": "ySv",
+ "Q95863894": "pSv",
+ "Q95864194": "zBq",
+ "Q95864378": "fBq",
+ "Q95864695": "daBq",
+ "Q95864940": "hBq",
+ "Q95865286": "dBq",
+ "Q95865530": "EBq",
+ "Q95865716": "cBq",
+ "Q95865877": "yBq",
+ "Q95866173": "pBq",
+ "Q95866344": "nBq",
+ "Q95866767": "mBq",
+ "Q95867993": "mN",
+ "Q95948345": "crad",
+ "Q95948364": "drad",
+ "Q95948734": "daN",
+ "Q95948739": "hN",
+ "Q95948747": "dN",
+ "Q95976839": "Plm",
+ "Q95976853": "Glm",
+ "Q95976869": "Ylm",
+ "Q95976889": "ylm",
+ "Q95976917": "dlm",
+ "Q95976919": "Elm",
+ "Q95976921": "nT",
+ "Q95993516": "TN",
+ "Q95993522": "nN",
+ "Q95993524": "fN",
+ "Q95993526": "yN",
+ "Q95993528": "zN",
+ "Q95993530": "EN",
+ "Q95993532": "pN",
+ "Q95993537": "μrad",
+ "Q95993542": "nrad",
+ "Q95993547": "frad",
+ "Q95993553": "prad",
+ "Q95993554": "darad",
+ "Q95993557": "hrad",
+ "Q95993619": "pT",
+ "Q96025401": "daT",
+ "Q96025405": "Trad",
+ "Q96025407": "Zrad",
+ "Q96025409": "zrad",
+ "Q96025413": "yrad",
+ "Q96025414": "Erad",
+ "Q96025419": "Ylx",
+ "Q96025422": "Glx",
+ "Q96025427": "Plx",
+ "Q96025431": "Mlx",
+ "Q96025433": "Tlx",
+ "Q96025435": "nlx",
+ "Q96025441": "flx",
+ "Q96050953": "GH",
+ "Q96051010": "PH",
+ "Q96051029": "YH",
+ "Q96051052": "cH",
+ "Q96051074": "TH",
+ "Q96051106": "MH",
+ "Q96051123": "kH",
+ "Q96051126": "fH",
+ "Q96051133": "yH",
+ "Q96051139": "hH",
+ "Q96051142": "dH",
+ "Q96051144": "EH",
+ "Q96051150": "pH",
+ "Q96051160": "daH",
+ "Q96051186": "zH",
+ "Q96051199": "aH",
+ "Q96051245": "ylx",
+ "Q96051267": "Elx",
+ "Q96051282": "plx",
+ "Q96051312": "zlx",
+ "Q96070067": "PT",
+ "Q96070074": "YT",
+ "Q96070076": "GT",
+ "Q96070087": "cT",
+ "Q96070103": "MT",
+ "Q96070125": "hT",
+ "Q96070145": "fT",
+ "Q96070174": "TT",
+ "Q96070195": "zT",
+ "Q96070247": "yT",
+ "Q96070254": "dT",
+ "Q96070264": "ET",
+ "Q96070276": "m°C",
+ "Q96070318": "dsr",
+ "Q96070329": "nsr",
+ "Q96070341": "psr",
+ "Q96095866": "fsr",
+ "Q96095897": "zsr",
+ "Q96095917": "ysr",
+ "Q96095927": "dasr",
+ "Q96095928": "hsr",
+ "Q96095931": "ksr",
+ "Q96095933": "Msr",
+ "Q96095939": "Gsr",
+ "Q96095941": "μ°C",
+ "Q96095955": "n°C",
+ "Q96095960": "k°C",
+ "Q96106290": "Tsr",
+ "Q96106298": "Psr",
+ "Q96106311": "Esr",
+ "Q96106319": "Zsr",
+ "Q96106332": "Ysr",
+ "Q96106346": "c°C",
+ "Q96106360": "d°C",
+ "Q96106368": "da°C",
+ "Q96106385": "h°C",
+ "Q96106393": "M°C",
+ "Q96236286": "G°C",
+ "Q96312779": "μas",
+ "Q97059641": "p°C",
+ "Q97059652": "T°C",
+ "Q97143826": "P°C",
+ "Q97143831": "y°C",
+ "Q97143835": "f°C",
+ "Q97143838": "Z°C",
+ "Q97143842": "E°C",
+ "Q97143843": "z°C",
+ "Q97143849": "Y°C",
+ "Q97143851": "a°C",
+ "Q98492214": "den",
+ "Q98793302": "qt (UK)",
+ "Q98793408": "liq qt (US)",
+ "Q98793687": "dry qt (US)",
+ "Q99476928": "gf",
+ "Q99487704": "ppt",
+ "Q99490009": "BTU (IT)",
+ "Q99490479": "BTU (39 °F)",
+ "Q99490986": "BTU (59 °F)",
+ "Q99491193": "BTU (60 °F)",
+ "Q99491447": "BTU (mean)",
+ "Q99492167": "m Hg",
+ "Q11229": "%",
+ "Q11570": "kg",
+ "Q11573": "m",
+ "Q11574": "s",
+ "Q11582": "L",
+ "Q12129": "pc",
+ "Q12438": "N",
+ "Q16068": "DM",
+ "Q1811": "AU",
+ "Q20764": "Ma",
+ "Q2101": "e",
+ "Q25235": "h",
+ "Q25236": "W",
+ "Q25250": "V",
+ "Q25267": "°C",
+ "Q25269": "J",
+ "Q25272": "A",
+ "Q25343": "m²",
+ "Q25406": "C",
+ "Q25517": "m³",
+ "Q33680": "rad",
+ "Q35852": "ha",
+ "Q36384": "Eq",
+ "Q3710": "ft",
+ "Q39274": "Sv",
+ "Q39369": "Hz",
+ "Q41509": "mol",
+ "Q41803": "g",
+ "Q42289": "°F",
+ "Q4406": "$T",
+ "Q44395": "Pa",
+ "Q4588": "WS$",
+ "Q4592": "F$",
+ "Q4596": "Rs",
+ "Q4597": "$",
+ "Q47083": "Ω",
+ "Q48013": "oz",
+ "Q4917": "US$",
+ "Q50094": "Np",
+ "Q50098": "B",
+ "Q531": "l.y.",
+ "Q5329": "dB",
+ "Q573": "d",
+ "Q577": "a",
+ "Q7727": "min",
+ "Q8799": "B",
+ "Q8805": "bit"
+} \ No newline at end of file
diff --git a/searx/engines/1337x.py b/searx/engines/1337x.py
index 0de04bd..9cc7c1b 100644
--- a/searx/engines/1337x.py
+++ b/searx/engines/1337x.py
@@ -1,7 +1,21 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ 1337x
+"""
+
+from urllib.parse import quote, urljoin
from lxml import html
-from searx.engines.xpath import extract_text
-from searx.utils import get_torrent_size
-from searx.url_utils import quote, urljoin
+from searx.utils import extract_text, get_torrent_size, eval_xpath, eval_xpath_list, eval_xpath_getindex
+
+# about
+about = {
+ "website": 'https://1337x.to/',
+ "wikidata_id": 'Q28134166',
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
url = 'https://1337x.to/'
search_url = url + 'search/{search_term}/{pageno}/'
@@ -20,12 +34,12 @@ def response(resp):
dom = html.fromstring(resp.text)
- for result in dom.xpath('//table[contains(@class, "table-list")]/tbody//tr'):
- href = urljoin(url, result.xpath('./td[contains(@class, "name")]/a[2]/@href')[0])
- title = extract_text(result.xpath('./td[contains(@class, "name")]/a[2]'))
- seed = extract_text(result.xpath('.//td[contains(@class, "seeds")]'))
- leech = extract_text(result.xpath('.//td[contains(@class, "leeches")]'))
- filesize_info = extract_text(result.xpath('.//td[contains(@class, "size")]/text()'))
+ for result in eval_xpath_list(dom, '//table[contains(@class, "table-list")]/tbody//tr'):
+ href = urljoin(url, eval_xpath_getindex(result, './td[contains(@class, "name")]/a[2]/@href', 0))
+ title = extract_text(eval_xpath(result, './td[contains(@class, "name")]/a[2]'))
+ seed = extract_text(eval_xpath(result, './/td[contains(@class, "seeds")]'))
+ leech = extract_text(eval_xpath(result, './/td[contains(@class, "leeches")]'))
+ filesize_info = extract_text(eval_xpath(result, './/td[contains(@class, "size")]/text()'))
filesize, filesize_multiplier = filesize_info.split()
filesize = get_torrent_size(filesize, filesize_multiplier)
diff --git a/searx/engines/__init__.py b/searx/engines/__init__.py
index 2393f52..79bdfbc 100644
--- a/searx/engines/__init__.py
+++ b/searx/engines/__init__.py
@@ -19,15 +19,16 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
import sys
import threading
from os.path import realpath, dirname
-from io import open
from babel.localedata import locale_identifiers
+from urllib.parse import urlparse
from flask_babel import gettext
from operator import itemgetter
-from json import loads
-from requests import get
from searx import settings
from searx import logger
-from searx.utils import load_module, match_language, get_engine_from_settings
+from searx.data import ENGINES_LANGUAGES
+from searx.exceptions import SearxEngineResponseException
+from searx.poolrequests import get, get_proxy_cycles
+from searx.utils import load_module, match_language, get_engine_from_settings, gen_useragent
logger = logger.getChild('engines')
@@ -38,23 +39,24 @@ engines = {}
categories = {'general': []}
-languages = loads(open(engine_dir + '/../data/engines_languages.json', 'r', encoding='utf-8').read())
babel_langs = [lang_parts[0] + '-' + lang_parts[-1] if len(lang_parts) > 1 else lang_parts[0]
for lang_parts in (lang_code.split('_') for lang_code in locale_identifiers())]
engine_shortcuts = {}
engine_default_args = {'paging': False,
'categories': ['general'],
- 'language_support': True,
'supported_languages': [],
'safesearch': False,
'timeout': settings['outgoing']['request_timeout'],
'shortcut': '-',
'disabled': False,
+ 'enable_http': False,
'suspend_end_time': 0,
'continuous_errors': 0,
'time_range_support': False,
- 'offline': False}
+ 'engine_type': 'online',
+ 'display_error_messages': True,
+ 'tokens': []}
def load_engine(engine_data):
@@ -72,20 +74,25 @@ def load_engine(engine_data):
try:
engine = load_module(engine_module + '.py', engine_dir)
+ except (SyntaxError, KeyboardInterrupt, SystemExit, SystemError, ImportError, RuntimeError):
+ logger.exception('Fatal exception in engine "{}"'.format(engine_module))
+ sys.exit(1)
except:
logger.exception('Cannot load engine "{}"'.format(engine_module))
return None
- for param_name in engine_data:
+ for param_name, param_value in engine_data.items():
if param_name == 'engine':
- continue
- if param_name == 'categories':
- if engine_data['categories'] == 'none':
+ pass
+ elif param_name == 'categories':
+ if param_value == 'none':
engine.categories = []
else:
- engine.categories = list(map(str.strip, engine_data['categories'].split(',')))
- continue
- setattr(engine, param_name, engine_data[param_name])
+ engine.categories = list(map(str.strip, param_value.split(',')))
+ elif param_name == 'proxies':
+ engine.proxies = get_proxy_cycles(param_value)
+ else:
+ setattr(engine, param_name, param_value)
for arg_name, arg_value in engine_default_args.items():
if not hasattr(engine, arg_name):
@@ -103,8 +110,8 @@ def load_engine(engine_data):
sys.exit(1)
# assign supported languages from json file
- if engine_data['name'] in languages:
- setattr(engine, 'supported_languages', languages[engine_data['name']])
+ if engine_data['engine'] in ENGINES_LANGUAGES:
+ setattr(engine, 'supported_languages', ENGINES_LANGUAGES[engine_data['engine']])
# find custom aliases for non standard language codes
if hasattr(engine, 'supported_languages'):
@@ -121,24 +128,45 @@ def load_engine(engine_data):
setattr(engine, 'language_aliases', language_aliases)
+ # language_support
+ setattr(engine, 'language_support', len(getattr(engine, 'supported_languages', [])) > 0)
+
# assign language fetching method if auxiliary method exists
if hasattr(engine, '_fetch_supported_languages'):
+ headers = {
+ 'User-Agent': gen_useragent(),
+ 'Accept-Language': 'ja-JP,ja;q=0.8,en-US;q=0.5,en;q=0.3', # bing needs a non-English language
+ }
setattr(engine, 'fetch_supported_languages',
- lambda: engine._fetch_supported_languages(get(engine.supported_languages_url)))
+ lambda: engine._fetch_supported_languages(get(engine.supported_languages_url, headers=headers)))
engine.stats = {
+ 'sent_search_count': 0, # sent search
+ 'search_count': 0, # succesful search
'result_count': 0,
- 'search_count': 0,
'engine_time': 0,
'engine_time_count': 0,
'score_count': 0,
'errors': 0
}
- if not engine.offline:
+ engine_type = getattr(engine, 'engine_type', 'online')
+
+ if engine_type != 'offline':
engine.stats['page_load_time'] = 0
engine.stats['page_load_count'] = 0
+ # tor related settings
+ if settings['outgoing'].get('using_tor_proxy'):
+ # use onion url if using tor.
+ if hasattr(engine, 'onion_url'):
+ engine.search_url = engine.onion_url + getattr(engine, 'search_path', '')
+ elif 'onions' in engine.categories:
+ # exclude onion engines if not using tor.
+ return None
+
+ engine.timeout += settings['outgoing'].get('extra_proxy_timeout', 0)
+
for category_name in engine.categories:
categories.setdefault(category_name, []).append(engine)
@@ -160,7 +188,7 @@ def to_percentage(stats, maxvalue):
return stats
-def get_engines_stats():
+def get_engines_stats(preferences):
# TODO refactor
pageloads = []
engine_times = []
@@ -171,8 +199,12 @@ def get_engines_stats():
max_pageload = max_engine_times = max_results = max_score = max_errors = max_score_per_result = 0 # noqa
for engine in engines.values():
+ if not preferences.validate_token(engine):
+ continue
+
if engine.stats['search_count'] == 0:
continue
+
results_num = \
engine.stats['result_count'] / float(engine.stats['search_count'])
@@ -187,7 +219,7 @@ def get_engines_stats():
else:
score = score_per_result = 0.0
- if not engine.offline:
+ if engine.engine_type != 'offline':
load_times = 0
if engine.stats['page_load_count'] != 0:
load_times = engine.stats['page_load_time'] / float(engine.stats['page_load_count']) # noqa
@@ -214,7 +246,7 @@ def get_engines_stats():
results = to_percentage(results, max_results)
scores = to_percentage(scores, max_score)
scores_per_result = to_percentage(scores_per_result, max_score_per_result)
- erros = to_percentage(errors, max_errors)
+ errors = to_percentage(errors, max_errors)
return [
(
@@ -245,8 +277,9 @@ def get_engines_stats():
def load_engines(engine_list):
- global engines
+ global engines, engine_shortcuts # pylint: disable=global-variable-not-assigned
engines.clear()
+ engine_shortcuts.clear()
for engine_data in engine_list:
engine = load_engine(engine_data)
if engine is not None:
@@ -258,8 +291,14 @@ def initialize_engines(engine_list):
load_engines(engine_list)
def engine_init(engine_name, init_fn):
- init_fn(get_engine_from_settings(engine_name))
- logger.debug('%s engine: Initialized', engine_name)
+ try:
+ init_fn(get_engine_from_settings(engine_name))
+ except SearxEngineResponseException as exc:
+ logger.warn('%s engine: Fail to initialize // %s', engine_name, exc)
+ except Exception:
+ logger.exception('%s engine: Fail to initialize', engine_name)
+ else:
+ logger.debug('%s engine: Initialized', engine_name)
for engine_name, engine in engines.items():
if hasattr(engine, 'init'):
diff --git a/searx/engines/acgsou.py b/searx/engines/acgsou.py
deleted file mode 100644
index cca28f0..0000000
--- a/searx/engines/acgsou.py
+++ /dev/null
@@ -1,75 +0,0 @@
-"""
- Acgsou (Japanese Animation/Music/Comics Bittorrent tracker)
-
- @website https://www.acgsou.com/
- @provide-api no
- @using-api no
- @results HTML
- @stable no (HTML can change)
- @parse url, title, content, seed, leech, torrentfile
-"""
-
-from lxml import html
-from searx.engines.xpath import extract_text
-from searx.url_utils import urlencode
-from searx.utils import get_torrent_size, int_or_zero
-
-# engine dependent config
-categories = ['files', 'images', 'videos', 'music']
-paging = True
-
-# search-url
-base_url = 'http://www.acgsou.com/'
-search_url = base_url + 'search.php?{query}&page={offset}'
-# xpath queries
-xpath_results = '//table[contains(@class, "list_style table_fixed")]//tr[not(th)]'
-xpath_category = './/td[2]/a[1]'
-xpath_title = './/td[3]/a[last()]'
-xpath_torrent_links = './/td[3]/a'
-xpath_filesize = './/td[4]/text()'
-
-
-def request(query, params):
- query = urlencode({'keyword': query})
- params['url'] = search_url.format(query=query, offset=params['pageno'])
- return params
-
-
-def response(resp):
- results = []
- dom = html.fromstring(resp.text)
- for result in dom.xpath(xpath_results):
- # defaults
- filesize = 0
- magnet_link = "magnet:?xt=urn:btih:{}&tr=http://tracker.acgsou.com:2710/announce"
- torrent_link = ""
-
- try:
- category = extract_text(result.xpath(xpath_category)[0])
- except:
- pass
-
- page_a = result.xpath(xpath_title)[0]
- title = extract_text(page_a)
- href = base_url + page_a.attrib.get('href')
-
- magnet_link = magnet_link.format(page_a.attrib.get('href')[5:-5])
-
- try:
- filesize_info = result.xpath(xpath_filesize)[0]
- filesize = filesize_info[:-2]
- filesize_multiplier = filesize_info[-2:]
- filesize = get_torrent_size(filesize, filesize_multiplier)
- except:
- pass
- # I didn't add download/seed/leech count since as I figured out they are generated randomly everytime
- content = u'Category: "{category}".'
- content = content.format(category=category)
-
- results.append({'url': href,
- 'title': title,
- 'content': content,
- 'filesize': filesize,
- 'magnetlink': magnet_link,
- 'template': 'torrent.html'})
- return results
diff --git a/searx/engines/ahmia.py b/searx/engines/ahmia.py
new file mode 100644
index 0000000..b9a0086
--- /dev/null
+++ b/searx/engines/ahmia.py
@@ -0,0 +1,85 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Ahmia (Onions)
+"""
+
+from urllib.parse import urlencode, urlparse, parse_qs
+from lxml.html import fromstring
+from searx.engines.xpath import extract_url, extract_text, eval_xpath_list, eval_xpath
+
+# about
+about = {
+ "website": 'http://juhanurmihxlp77nkq76byazcldy2hlmovfu2epvl5ankdibsot4csyd.onion',
+ "wikidata_id": 'Q18693938',
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+
+# engine config
+categories = ['onions']
+paging = True
+page_size = 10
+
+# search url
+search_url = 'http://juhanurmihxlp77nkq76byazcldy2hlmovfu2epvl5ankdibsot4csyd.onion/search/?{query}'
+time_range_support = True
+time_range_dict = {'day': 1,
+ 'week': 7,
+ 'month': 30}
+
+# xpaths
+results_xpath = '//li[@class="result"]'
+url_xpath = './h4/a/@href'
+title_xpath = './h4/a[1]'
+content_xpath = './/p[1]'
+correction_xpath = '//*[@id="didYouMean"]//a'
+number_of_results_xpath = '//*[@id="totalResults"]'
+
+
+def request(query, params):
+ params['url'] = search_url.format(query=urlencode({'q': query}))
+
+ if params['time_range'] in time_range_dict:
+ params['url'] += '&' + urlencode({'d': time_range_dict[params['time_range']]})
+
+ return params
+
+
+def response(resp):
+ results = []
+ dom = fromstring(resp.text)
+
+ # trim results so there's not way too many at once
+ first_result_index = page_size * (resp.search_params.get('pageno', 1) - 1)
+ all_results = eval_xpath_list(dom, results_xpath)
+ trimmed_results = all_results[first_result_index:first_result_index + page_size]
+
+ # get results
+ for result in trimmed_results:
+ # remove ahmia url and extract the actual url for the result
+ raw_url = extract_url(eval_xpath_list(result, url_xpath, min_len=1), search_url)
+ cleaned_url = parse_qs(urlparse(raw_url).query).get('redirect_url', [''])[0]
+
+ title = extract_text(eval_xpath(result, title_xpath))
+ content = extract_text(eval_xpath(result, content_xpath))
+
+ results.append({'url': cleaned_url,
+ 'title': title,
+ 'content': content,
+ 'is_onion': True})
+
+ # get spelling corrections
+ for correction in eval_xpath_list(dom, correction_xpath):
+ results.append({'correction': extract_text(correction)})
+
+ # get number of results
+ number_of_results = eval_xpath(dom, number_of_results_xpath)
+ if number_of_results:
+ try:
+ results.append({'number_of_results': int(extract_text(number_of_results))})
+ except:
+ pass
+
+ return results
diff --git a/searx/engines/apkmirror.py b/searx/engines/apkmirror.py
index f2ee12b..05a6358 100644
--- a/searx/engines/apkmirror.py
+++ b/searx/engines/apkmirror.py
@@ -1,24 +1,33 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""APKMirror
"""
- APK Mirror
- @website https://www.apkmirror.com
-
- @using-api no
- @results HTML
- @stable no (HTML can change)
- @parse url, title, thumbnail_src
-"""
+# pylint: disable=invalid-name, missing-function-docstring
+from urllib.parse import urlencode
from lxml import html
-from searx.engines.xpath import extract_text
-from searx.url_utils import urlencode
+
+from searx import logger
+from searx.utils import (
+ eval_xpath_list,
+ eval_xpath_getindex,
+ extract_text,
+)
+
+logger = logger.getChild('APKMirror engine')
+
+about = {
+ "website": 'https://www.apkmirror.com',
+ "wikidata_id": None,
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
-categories = ['it']
+categories = ['files']
paging = True
-
-# I am not 100% certain about this, as apkmirror appears to be a wordpress site,
-# which might support time_range searching. If you want to implement it, go ahead.
time_range_support = False
# search-url
@@ -26,36 +35,34 @@ base_url = 'https://www.apkmirror.com'
search_url = base_url + '/?post_type=app_release&searchtype=apk&page={pageno}&{query}'
-# do search-request
def request(query, params):
-
- params['url'] = search_url.format(pageno=params['pageno'],
- query=urlencode({'s': query}))
+ params['url'] = search_url.format(
+ pageno = params['pageno'],
+ query = urlencode({'s': query}),
+ )
+ logger.debug("query_url --> %s", params['url'])
return params
-# get response from search-request
def response(resp):
results = []
dom = html.fromstring(resp.text)
# parse results
- for result in dom.xpath('.//div[@id="content"]/div[@class="listWidget"]/div[@class="appRow"]'):
+ for result in eval_xpath_list(dom, "//div[@id='content']//div[@class='listWidget']/div/div[@class='appRow']"):
+
+ link = eval_xpath_getindex(result, './/h5/a', 0)
- link = result.xpath('.//h5/a')[0]
url = base_url + link.attrib.get('href') + '#downloads'
title = extract_text(link)
- thumbnail_src = base_url + result.xpath('.//img')[0].attrib.get('src').replace('&w=32&h=32', '&w=64&h=64')
-
+ img_src = base_url + eval_xpath_getindex(result, './/img/@src', 0)
res = {
'url': url,
'title': title,
- 'thumbnail_src': thumbnail_src
+ 'img_src': img_src
}
- # append result
results.append(res)
- # return results
return results
diff --git a/searx/engines/archlinux.py b/searx/engines/archlinux.py
index dce862f..aeac145 100644
--- a/searx/engines/archlinux.py
+++ b/searx/engines/archlinux.py
@@ -1,23 +1,26 @@
-# -*- coding: utf-8 -*-
-
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Arch Linux Wiki
- @website https://wiki.archlinux.org
- @provide-api no (Mediawiki provides API, but Arch Wiki blocks access to it
- @using-api no
- @results HTML
- @stable no (HTML can change)
- @parse url, title
+ API: Mediawiki provides API, but Arch Wiki blocks access to it
"""
+from urllib.parse import urlencode, urljoin
from lxml import html
-from searx.engines.xpath import extract_text
-from searx.url_utils import urlencode, urljoin
+from searx.utils import extract_text, eval_xpath_list, eval_xpath_getindex
+
+# about
+about = {
+ "website": 'https://wiki.archlinux.org/',
+ "wikidata_id": 'Q101445877',
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['it']
-language_support = True
paging = True
base_url = 'https://wiki.archlinux.org'
@@ -105,7 +108,7 @@ def request(query, params):
# if our language is hosted on the main site, we need to add its name
# to the query in order to narrow the results to that language
if language in main_langs:
- query += b' (' + main_langs[language] + b')'
+ query += ' (' + main_langs[language] + ')'
# prepare the request parameters
query = urlencode({'search': query})
@@ -131,8 +134,8 @@ def response(resp):
dom = html.fromstring(resp.text)
# parse results
- for result in dom.xpath(xpath_results):
- link = result.xpath(xpath_link)[0]
+ for result in eval_xpath_list(dom, xpath_results):
+ link = eval_xpath_getindex(result, xpath_link, 0)
href = urljoin(base_url, link.attrib.get('href'))
title = extract_text(link)
diff --git a/searx/engines/arxiv.py b/searx/engines/arxiv.py
index e3c871d..09ea07e 100644
--- a/searx/engines/arxiv.py
+++ b/searx/engines/arxiv.py
@@ -1,25 +1,26 @@
-#!/usr/bin/env python
-
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
ArXiV (Scientific preprints)
- @website https://arxiv.org
- @provide-api yes (export.arxiv.org/api/query)
- @using-api yes
- @results XML-RSS
- @stable yes
- @parse url, title, publishedDate, content
- More info on api: https://arxiv.org/help/api/user-manual
"""
from lxml import html
from datetime import datetime
-from searx.url_utils import urlencode
-
+from searx.utils import eval_xpath_list, eval_xpath_getindex
+
+# about
+about = {
+ "website": 'https://arxiv.org',
+ "wikidata_id": 'Q118398',
+ "official_api_documentation": 'https://arxiv.org/help/api',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'XML-RSS',
+}
categories = ['science']
paging = True
-base_url = 'http://export.arxiv.org/api/query?search_query=all:'\
+base_url = 'https://export.arxiv.org/api/query?search_query=all:'\
+ '{query}&start={offset}&max_results={number_of_results}'
# engine dependent config
@@ -30,7 +31,7 @@ def request(query, params):
# basic search
offset = (params['pageno'] - 1) * number_of_results
- string_args = dict(query=query.decode('utf-8'),
+ string_args = dict(query=query,
offset=offset,
number_of_results=number_of_results)
@@ -43,29 +44,26 @@ def response(resp):
results = []
dom = html.fromstring(resp.content)
- search_results = dom.xpath('//entry')
- for entry in search_results:
- title = entry.xpath('.//title')[0].text
+ for entry in eval_xpath_list(dom, '//entry'):
+ title = eval_xpath_getindex(entry, './/title', 0).text
- url = entry.xpath('.//id')[0].text
+ url = eval_xpath_getindex(entry, './/id', 0).text
content_string = '{doi_content}{abstract_content}'
- abstract = entry.xpath('.//summary')[0].text
+ abstract = eval_xpath_getindex(entry, './/summary', 0).text
# If a doi is available, add it to the snipppet
- try:
- doi_content = entry.xpath('.//link[@title="doi"]')[0].text
- content = content_string.format(doi_content=doi_content, abstract_content=abstract)
- except:
- content = content_string.format(doi_content="", abstract_content=abstract)
+ doi_element = eval_xpath_getindex(entry, './/link[@title="doi"]', 0, default=None)
+ doi_content = doi_element.text if doi_element is not None else ''
+ content = content_string.format(doi_content=doi_content, abstract_content=abstract)
if len(content) > 300:
- content = content[0:300] + "..."
+ content = content[0:300] + "..."
# TODO: center snippet on query term
- publishedDate = datetime.strptime(entry.xpath('.//published')[0].text, '%Y-%m-%dT%H:%M:%SZ')
+ publishedDate = datetime.strptime(eval_xpath_getindex(entry, './/published', 0).text, '%Y-%m-%dT%H:%M:%SZ')
res_dict = {'url': url,
'title': title,
diff --git a/searx/engines/bandcamp.py b/searx/engines/bandcamp.py
new file mode 100644
index 0000000..dafb3ee
--- /dev/null
+++ b/searx/engines/bandcamp.py
@@ -0,0 +1,73 @@
+"""
+Bandcamp (Music)
+
+@website https://bandcamp.com/
+@provide-api no
+@results HTML
+@parse url, title, content, publishedDate, embedded, thumbnail
+"""
+
+from urllib.parse import urlencode, urlparse, parse_qs
+from dateutil.parser import parse as dateparse
+from lxml import html
+from searx.utils import extract_text
+
+categories = ['music']
+paging = True
+
+base_url = "https://bandcamp.com/"
+search_string = search_string = 'search?{query}&page={page}'
+embedded_url = '''<iframe width="100%" height="166"
+ scrolling="no" frameborder="no"
+ data-src="https://bandcamp.com/EmbeddedPlayer/{type}={result_id}/size=large/bgcol=ffffff/linkcol=0687f5/tracklist=false/artwork=small/transparent=true/"
+></iframe>'''
+
+
+def request(query, params):
+ '''pre-request callback
+ params<dict>:
+ method : POST/GET
+ headers : {}
+ data : {} # if method == POST
+ url : ''
+ category: 'search category'
+ pageno : 1 # number of the requested page
+ '''
+
+ search_path = search_string.format(
+ query=urlencode({'q': query}),
+ page=params['pageno'])
+
+ params['url'] = base_url + search_path
+
+ return params
+
+
+def response(resp):
+ '''post-response callback
+ resp: requests response object
+ '''
+ results = []
+ tree = html.fromstring(resp.text)
+ search_results = tree.xpath('//li[contains(@class, "searchresult")]')
+ for result in search_results:
+ link = result.xpath('.//div[@class="itemurl"]/a')[0]
+ result_id = parse_qs(urlparse(link.get('href')).query)["search_item_id"][0]
+ title = result.xpath('.//div[@class="heading"]/a/text()')
+ date = dateparse(result.xpath('//div[@class="released"]/text()')[0].replace("released ", ""))
+ content = result.xpath('.//div[@class="subhead"]/text()')
+ new_result = {
+ "url": extract_text(link),
+ "title": extract_text(title),
+ "content": extract_text(content),
+ "publishedDate": date,
+ }
+ thumbnail = result.xpath('.//div[@class="art"]/img/@src')
+ if thumbnail:
+ new_result['thumbnail'] = thumbnail[0]
+ if "album" in result.classes:
+ new_result["embedded"] = embedded_url.format(type='album', result_id=result_id)
+ elif "track" in result.classes:
+ new_result["embedded"] = embedded_url.format(type='track', result_id=result_id)
+ results.append(new_result)
+ return results
diff --git a/searx/engines/base.py b/searx/engines/base.py
index f1b1cf6..4632746 100755
--- a/searx/engines/base.py
+++ b/searx/engines/base.py
@@ -1,24 +1,23 @@
-#!/usr/bin/env python
-
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
BASE (Scholar publications)
-
- @website https://base-search.net
- @provide-api yes with authorization (https://api.base-search.net/)
-
- @using-api yes
- @results XML
- @stable ?
- @parse url, title, publishedDate, content
- More info on api: http://base-search.net/about/download/base_interface.pdf
"""
+from urllib.parse import urlencode
from lxml import etree
from datetime import datetime
import re
-from searx.url_utils import urlencode
from searx.utils import searx_useragent
+# about
+about = {
+ "website": 'https://base-search.net',
+ "wikidata_id": 'Q448335',
+ "official_api_documentation": 'https://api.base-search.net/',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'XML',
+}
categories = ['science']
@@ -55,7 +54,7 @@ shorcut_dict = {
def request(query, params):
# replace shortcuts with API advanced search keywords
for key in shorcut_dict.keys():
- query = re.sub(key, shorcut_dict[key], str(query))
+ query = re.sub(key, shorcut_dict[key], query)
# basic search
offset = (params['pageno'] - 1) * number_of_results
@@ -80,10 +79,7 @@ def response(resp):
date = datetime.now() # needed in case no dcdate is available for an item
for item in entry:
- if item.attrib["name"] == "dchdate":
- harvestDate = item.text
-
- elif item.attrib["name"] == "dcdate":
+ if item.attrib["name"] == "dcdate":
date = item.text
elif item.attrib["name"] == "dctitle":
diff --git a/searx/engines/bing.py b/searx/engines/bing.py
index b193f7c..61abd46 100644
--- a/searx/engines/bing.py
+++ b/searx/engines/bing.py
@@ -1,31 +1,29 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Bing (Web)
-
- @website https://www.bing.com
- @provide-api yes (http://datamarket.azure.com/dataset/bing/search),
- max. 5000 query/month
-
- @using-api no (because of query limit)
- @results HTML (using search portal)
- @stable no (HTML can change)
- @parse url, title, content
-
- @todo publishedDate
"""
import re
+from urllib.parse import urlencode
from lxml import html
-from searx import logger, utils
-from searx.engines.xpath import extract_text
-from searx.url_utils import urlencode
-from searx.utils import match_language, gen_useragent, eval_xpath
+from searx import logger
+from searx.utils import eval_xpath, extract_text, match_language
logger = logger.getChild('bing engine')
+# about
+about = {
+ "website": 'https://www.bing.com',
+ "wikidata_id": 'Q182496',
+ "official_api_documentation": 'https://www.microsoft.com/en-us/bing/apis/bing-web-search-api',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+
# engine dependent config
categories = ['general']
paging = True
-language_support = True
supported_languages_url = 'https://www.bing.com/account/general'
language_aliases = {'zh-CN': 'zh-CHS', 'zh-TW': 'zh-CHT', 'zh-HK': 'zh-CHT'}
@@ -47,13 +45,15 @@ def request(query, params):
else:
lang = match_language(params['language'], supported_languages, language_aliases)
- query = u'language:{} {}'.format(lang.split('-')[0].upper(), query.decode('utf-8')).encode('utf-8')
+ query = 'language:{} {}'.format(lang.split('-')[0].upper(), query)
search_path = search_string.format(
query=urlencode({'q': query}),
offset=offset)
params['url'] = base_url + search_path
+ params['headers']['User-Agent'] = ('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 '
+ '(KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36')
return params
@@ -99,7 +99,6 @@ def response(resp):
result_len = int(result_len_container)
except Exception as e:
logger.debug('result error :\n%s', e)
- pass
if result_len and _get_offset_from_pageno(resp.search_params.get("pageno", 0)) > result_len:
return []
@@ -110,13 +109,18 @@ def response(resp):
# get supported languages from their site
def _fetch_supported_languages(resp):
- supported_languages = []
+ lang_tags = set()
+
+ setmkt = re.compile('setmkt=([^&]*)')
dom = html.fromstring(resp.text)
- options = eval_xpath(dom, '//div[@id="limit-languages"]//input')
- for option in options:
- code = eval_xpath(option, './@id')[0].replace('_', '-')
- if code == 'nb':
- code = 'no'
- supported_languages.append(code)
-
- return supported_languages
+ lang_links = eval_xpath(dom, "//li/a[contains(@href, 'setmkt')]")
+
+ for a in lang_links:
+ href = eval_xpath(a, './@href')[0]
+ match = setmkt.search(href)
+ l_tag = match.groups()[0]
+ _lang, _nation = l_tag.split('-', 1)
+ l_tag = _lang.lower() + '-' + _nation.upper()
+ lang_tags.add(l_tag)
+
+ return list(lang_tags)
diff --git a/searx/engines/bing_images.py b/searx/engines/bing_images.py
index 44e2c3b..4bee9bc 100644
--- a/searx/engines/bing_images.py
+++ b/searx/engines/bing_images.py
@@ -1,29 +1,31 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Bing (Images)
-
- @website https://www.bing.com/images
- @provide-api yes (http://datamarket.azure.com/dataset/bing/search),
- max. 5000 query/month
-
- @using-api no (because of query limit)
- @results HTML (using search portal)
- @stable no (HTML can change)
- @parse url, title, img_src
-
"""
+from urllib.parse import urlencode
from lxml import html
from json import loads
-import re
-from searx.url_utils import urlencode
from searx.utils import match_language
+from searx.engines.bing import language_aliases
+from searx.engines.bing import _fetch_supported_languages, supported_languages_url # NOQA # pylint: disable=unused-import
+
+# about
+about = {
+ "website": 'https://www.bing.com/images',
+ "wikidata_id": 'Q182496',
+ "official_api_documentation": 'https://www.microsoft.com/en-us/bing/apis/bing-image-search-api',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+
# engine dependent config
categories = ['images']
paging = True
safesearch = True
time_range_support = True
-language_support = True
supported_languages_url = 'https://www.bing.com/account/general'
number_of_results = 28
@@ -33,7 +35,7 @@ search_string = 'images/search'\
'?{query}'\
'&count={count}'\
'&first={first}'\
- '&FORM=IBASEP'
+ '&tsc=ImageHoverTitle'
time_range_string = '&qft=+filterui:age-lt{interval}'
time_range_dict = {'day': '1440',
'week': '10080',
@@ -78,19 +80,18 @@ def response(resp):
# parse results
for result in dom.xpath('//div[@class="imgpt"]'):
-
- img_format = result.xpath('./div[contains(@class, "img_info")]/span/text()')[0]
- # Microsoft seems to experiment with this code so don't make the path too specific,
- # just catch the text section for the first anchor in img_info assuming this to be
- # the originating site.
- source = result.xpath('./div[contains(@class, "img_info")]//a/text()')[0]
-
try:
+ img_format = result.xpath('./div[contains(@class, "img_info")]/span/text()')[0]
+ # Microsoft seems to experiment with this code so don't make the path too specific,
+ # just catch the text section for the first anchor in img_info assuming this to be
+ # the originating site.
+ source = result.xpath('./div[contains(@class, "img_info")]//a/text()')[0]
+
m = loads(result.xpath('./a/@m')[0])
# strip 'Unicode private use area' highlighting, they render to Tux
# the Linux penguin and a standing diamond on my machine...
- title = m.get('t', '').replace(u'\ue000', '').replace(u'\ue001', '')
+ title = m.get('t', '').replace('\ue000', '').replace('\ue001', '')
results.append({'template': 'images.html',
'url': m['purl'],
'thumbnail_src': m['turl'],
@@ -103,22 +104,3 @@ def response(resp):
continue
return results
-
-
-# get supported languages from their site
-def _fetch_supported_languages(resp):
- supported_languages = []
- dom = html.fromstring(resp.text)
-
- regions_xpath = '//div[@id="region-section-content"]' \
- + '//ul[@class="b_vList"]/li/a/@href'
-
- regions = dom.xpath(regions_xpath)
- for region in regions:
- code = re.search('setmkt=[^\&]+', region).group()[7:]
- if code == 'nb-NO':
- code = 'no-NO'
-
- supported_languages.append(code)
-
- return supported_languages
diff --git a/searx/engines/bing_news.py b/searx/engines/bing_news.py
index 669130c..738c642 100644
--- a/searx/engines/bing_news.py
+++ b/searx/engines/bing_news.py
@@ -1,27 +1,30 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Bing (News)
-
- @website https://www.bing.com/news
- @provide-api yes (http://datamarket.azure.com/dataset/bing/search),
- max. 5000 query/month
-
- @using-api no (because of query limit)
- @results RSS (using search portal)
- @stable yes (except perhaps for the images)
- @parse url, title, content, publishedDate, thumbnail
"""
from datetime import datetime
from dateutil import parser
+from urllib.parse import urlencode, urlparse, parse_qsl
from lxml import etree
-from searx.utils import list_get, match_language
-from searx.engines.bing import _fetch_supported_languages, supported_languages_url, language_aliases
-from searx.url_utils import urlencode, urlparse, parse_qsl
+from lxml.etree import XPath
+from searx.utils import match_language, eval_xpath_getindex
+from searx.engines.bing import language_aliases
+from searx.engines.bing import _fetch_supported_languages, supported_languages_url # NOQA # pylint: disable=unused-import
+
+# about
+about = {
+ "website": 'https://www.bing.com/news',
+ "wikidata_id": 'Q2878637',
+ "official_api_documentation": 'https://www.microsoft.com/en-us/bing/apis/bing-news-search-api',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'RSS',
+}
# engine dependent config
categories = ['news']
paging = True
-language_support = True
time_range_support = True
# search-url
@@ -58,6 +61,7 @@ def _get_url(query, language, offset, time_range):
offset=offset,
interval=time_range_dict[time_range])
else:
+ # e.g. setmkt=de-de&setlang=de
search_path = search_string.format(
query=urlencode({'q': query, 'setmkt': language}),
offset=offset)
@@ -92,12 +96,12 @@ def response(resp):
# parse results
for item in rss.xpath('./channel/item'):
# url / title / content
- url = url_cleanup(item.xpath('./link/text()')[0])
- title = list_get(item.xpath('./title/text()'), 0, url)
- content = list_get(item.xpath('./description/text()'), 0, '')
+ url = url_cleanup(eval_xpath_getindex(item, './link/text()', 0, default=None))
+ title = eval_xpath_getindex(item, './title/text()', 0, default=url)
+ content = eval_xpath_getindex(item, './description/text()', 0, default='')
# publishedDate
- publishedDate = list_get(item.xpath('./pubDate/text()'), 0)
+ publishedDate = eval_xpath_getindex(item, './pubDate/text()', 0, default=None)
try:
publishedDate = parser.parse(publishedDate, dayfirst=False)
except TypeError:
@@ -106,7 +110,7 @@ def response(resp):
publishedDate = datetime.now()
# thumbnail
- thumbnail = list_get(item.xpath('./News:Image/text()', namespaces=ns), 0)
+ thumbnail = eval_xpath_getindex(item, XPath('./News:Image/text()', namespaces=ns), 0, default=None)
if thumbnail is not None:
thumbnail = image_url_cleanup(thumbnail)
diff --git a/searx/engines/bing_videos.py b/searx/engines/bing_videos.py
index f1e6368..2e1f13d 100644
--- a/searx/engines/bing_videos.py
+++ b/searx/engines/bing_videos.py
@@ -1,28 +1,31 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Bing (Videos)
-
- @website https://www.bing.com/videos
- @provide-api yes (http://datamarket.azure.com/dataset/bing/search)
-
- @using-api no
- @results HTML
- @stable no
- @parse url, title, content, thumbnail
"""
from json import loads
from lxml import html
-from searx.engines.bing_images import _fetch_supported_languages, supported_languages_url
-from searx.url_utils import urlencode
+from urllib.parse import urlencode
from searx.utils import match_language
+from searx.engines.bing import language_aliases
+from searx.engines.bing import _fetch_supported_languages, supported_languages_url # NOQA # pylint: disable=unused-import
+
+# about
+about = {
+ "website": 'https://www.bing.com/videos',
+ "wikidata_id": 'Q4914152',
+ "official_api_documentation": 'https://www.microsoft.com/en-us/bing/apis/bing-video-search-api',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
categories = ['videos']
paging = True
safesearch = True
time_range_support = True
number_of_results = 28
-language_support = True
base_url = 'https://www.bing.com/'
search_string = 'videos/search'\
@@ -67,6 +70,10 @@ def request(query, params):
if params['time_range'] in time_range_dict:
params['url'] += time_range_string.format(interval=time_range_dict[params['time_range']])
+ # bing videos did not like "older" versions < 70.0.1 when selectin other
+ # languages then 'en' .. very strange ?!?!
+ params['headers']['User-Agent'] = 'Mozilla/5.0 (X11; Linux x86_64; rv:73.0.1) Gecko/20100101 Firefox/73.0.1'
+
return params
diff --git a/searx/engines/btdigg.py b/searx/engines/btdigg.py
index 82eedc2..863396f 100644
--- a/searx/engines/btdigg.py
+++ b/searx/engines/btdigg.py
@@ -1,20 +1,24 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
BTDigg (Videos, Music, Files)
-
- @website https://btdig.com
- @provide-api yes (on demand)
-
- @using-api no
- @results HTML (using search portal)
- @stable no (HTML can change)
- @parse url, title, content, seed, leech, magnetlink
"""
from lxml import html
-from operator import itemgetter
-from searx.engines.xpath import extract_text
-from searx.url_utils import quote, urljoin
-from searx.utils import get_torrent_size
+from urllib.parse import quote, urljoin
+from searx.utils import extract_text, get_torrent_size
+
+# about
+about = {
+ "website": 'https://btdig.com',
+ "wikidata_id": 'Q4836698',
+ "official_api_documentation": {
+ 'url': 'https://btdig.com/contacts',
+ 'comment': 'on demand'
+ },
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['videos', 'music', 'files']
diff --git a/searx/engines/command.py b/searx/engines/command.py
new file mode 100644
index 0000000..aca379c
--- /dev/null
+++ b/searx/engines/command.py
@@ -0,0 +1,172 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Command (offline)
+"""
+
+import re
+from os.path import expanduser, isabs, realpath, commonprefix
+from shlex import split as shlex_split
+from subprocess import Popen, PIPE
+from threading import Thread
+
+from searx import logger
+
+
+engine_type = 'offline'
+paging = True
+command = []
+delimiter = {}
+parse_regex = {}
+query_type = ''
+query_enum = []
+environment_variables = {}
+working_dir = realpath('.')
+result_separator = '\n'
+result_template = 'key-value.html'
+timeout = 4.0
+
+_command_logger = logger.getChild('command')
+_compiled_parse_regex = {}
+
+
+def init(engine_settings):
+ check_parsing_options(engine_settings)
+
+ if 'command' not in engine_settings:
+ raise ValueError('engine command : missing configuration key: command')
+
+ global command, working_dir, delimiter, parse_regex, environment_variables
+
+ command = engine_settings['command']
+
+ if 'working_dir' in engine_settings:
+ working_dir = engine_settings['working_dir']
+ if not isabs(engine_settings['working_dir']):
+ working_dir = realpath(working_dir)
+
+ if 'parse_regex' in engine_settings:
+ parse_regex = engine_settings['parse_regex']
+ for result_key, regex in parse_regex.items():
+ _compiled_parse_regex[result_key] = re.compile(regex, flags=re.MULTILINE)
+ if 'delimiter' in engine_settings:
+ delimiter = engine_settings['delimiter']
+
+ if 'environment_variables' in engine_settings:
+ environment_variables = engine_settings['environment_variables']
+
+
+def search(query, params):
+ cmd = _get_command_to_run(query)
+ if not cmd:
+ return []
+
+ results = []
+ reader_thread = Thread(target=_get_results_from_process, args=(results, cmd, params['pageno']))
+ reader_thread.start()
+ reader_thread.join(timeout=timeout)
+
+ return results
+
+
+def _get_command_to_run(query):
+ params = shlex_split(query)
+ __check_query_params(params)
+
+ cmd = []
+ for c in command:
+ if c == '{{QUERY}}':
+ cmd.extend(params)
+ else:
+ cmd.append(c)
+
+ return cmd
+
+
+def _get_results_from_process(results, cmd, pageno):
+ leftover = ''
+ count = 0
+ start, end = __get_results_limits(pageno)
+ with Popen(cmd, stdout=PIPE, stderr=PIPE, env=environment_variables) as process:
+ line = process.stdout.readline()
+ while line:
+ buf = leftover + line.decode('utf-8')
+ raw_results = buf.split(result_separator)
+ if raw_results[-1]:
+ leftover = raw_results[-1]
+ raw_results = raw_results[:-1]
+
+ for raw_result in raw_results:
+ result = __parse_single_result(raw_result)
+ if result is None:
+ _command_logger.debug('skipped result:', raw_result)
+ continue
+
+ if start <= count and count <= end:
+ result['template'] = result_template
+ results.append(result)
+
+ count += 1
+ if end < count:
+ return results
+
+ line = process.stdout.readline()
+
+ return_code = process.wait(timeout=timeout)
+ if return_code != 0:
+ raise RuntimeError('non-zero return code when running command', cmd, return_code)
+
+
+def __get_results_limits(pageno):
+ start = (pageno - 1) * 10
+ end = start + 9
+ return start, end
+
+
+def __check_query_params(params):
+ if not query_type:
+ return
+
+ if query_type == 'path':
+ query_path = params[-1]
+ query_path = expanduser(query_path)
+ if commonprefix([realpath(query_path), working_dir]) != working_dir:
+ raise ValueError('requested path is outside of configured working directory')
+ elif query_type == 'enum' and len(query_enum) > 0:
+ for param in params:
+ if param not in query_enum:
+ raise ValueError('submitted query params is not allowed', param, 'allowed params:', query_enum)
+
+
+def check_parsing_options(engine_settings):
+ """ Checks if delimiter based parsing or regex parsing is configured correctly """
+
+ if 'delimiter' not in engine_settings and 'parse_regex' not in engine_settings:
+ raise ValueError('failed to init settings for parsing lines: missing delimiter or parse_regex')
+ if 'delimiter' in engine_settings and 'parse_regex' in engine_settings:
+ raise ValueError('failed to init settings for parsing lines: too many settings')
+
+ if 'delimiter' in engine_settings:
+ if 'chars' not in engine_settings['delimiter'] or 'keys' not in engine_settings['delimiter']:
+ raise ValueError
+
+
+def __parse_single_result(raw_result):
+ """ Parses command line output based on configuration """
+
+ result = {}
+
+ if delimiter:
+ elements = raw_result.split(delimiter['chars'], maxsplit=len(delimiter['keys']) - 1)
+ if len(elements) != len(delimiter['keys']):
+ return {}
+ for i in range(len(elements)):
+ result[delimiter['keys'][i]] = elements[i]
+
+ if parse_regex:
+ for result_key, regex in _compiled_parse_regex.items():
+ found = regex.search(raw_result)
+ if not found:
+ return {}
+ result[result_key] = raw_result[found.start():found.end()]
+
+ return result
diff --git a/searx/engines/core.py b/searx/engines/core.py
new file mode 100644
index 0000000..ee2443b
--- /dev/null
+++ b/searx/engines/core.py
@@ -0,0 +1,82 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""CORE (science)
+
+"""
+# pylint: disable=missing-function-docstring
+
+from json import loads
+from datetime import datetime
+from urllib.parse import urlencode
+
+from searx import logger
+from searx.exceptions import SearxEngineAPIException
+
+logger = logger.getChild('CORE engine')
+
+about = {
+ "website": 'https://core.ac.uk',
+ "wikidata_id": None,
+ "official_api_documentation": 'https://core.ac.uk/documentation/api/',
+ "use_official_api": True,
+ "require_api_key": True,
+ "results": 'JSON',
+}
+
+categories = ['science']
+paging = True
+nb_per_page = 10
+
+api_key = 'unset'
+
+logger = logger.getChild('CORE engine')
+
+base_url = 'https://core.ac.uk:443/api-v2/search/'
+search_string = '{query}?page={page}&pageSize={nb_per_page}&apiKey={apikey}'
+
+def request(query, params):
+
+ if api_key == 'unset':
+ raise SearxEngineAPIException('missing CORE API key')
+
+ search_path = search_string.format(
+ query = urlencode({'q': query}),
+ nb_per_page = nb_per_page,
+ page = params['pageno'],
+ apikey = api_key,
+ )
+ params['url'] = base_url + search_path
+
+ logger.debug("query_url --> %s", params['url'])
+ return params
+
+def response(resp):
+ results = []
+ json_data = loads(resp.text)
+
+ for result in json_data['data']:
+
+ source = result['_source']
+ time = source['publishedDate'] or source['depositedDate']
+ if time :
+ date = datetime.fromtimestamp(time / 1000)
+ else:
+ date = None
+
+ metadata = []
+ if source['publisher'] and len(source['publisher']) > 3:
+ metadata.append(source['publisher'])
+ if source['topics']:
+ metadata.append(source['topics'][0])
+ if source['doi']:
+ metadata.append(source['doi'])
+ metadata = ' / '.join(metadata)
+
+ results.append({
+ 'url': source['urls'][0].replace('http://', 'https://', 1),
+ 'title': source['title'],
+ 'content': source['description'],
+ 'publishedDate': date,
+ 'metadata' : metadata,
+ })
+
+ return results
diff --git a/searx/engines/currency_convert.py b/searx/engines/currency_convert.py
index 8eab8f6..d4c3b5f 100644
--- a/searx/engines/currency_convert.py
+++ b/searx/engines/currency_convert.py
@@ -1,63 +1,30 @@
-import json
-import re
-import os
-import sys
-import unicodedata
-
-from io import open
-from datetime import datetime
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ currency convert (DuckDuckGo)
+"""
-if sys.version_info[0] == 3:
- unicode = str
+import json
+# about
+about = {
+ "website": 'https://duckduckgo.com/',
+ "wikidata_id": 'Q12805',
+ "official_api_documentation": 'https://duckduckgo.com/api',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'JSONP',
+}
+
+engine_type = 'online_currency'
categories = []
url = 'https://duckduckgo.com/js/spice/currency/1/{0}/{1}'
weight = 100
-parser_re = re.compile(b'.*?(\\d+(?:\\.\\d+)?) ([^.0-9]+) (?:in|to) ([^.0-9]+)', re.I)
-
-db = 1
-
-
-def normalize_name(name):
- name = name.decode('utf-8').lower().replace('-', ' ').rstrip('s')
- name = re.sub(' +', ' ', name)
- return unicodedata.normalize('NFKD', name).lower()
-
-
-def name_to_iso4217(name):
- global db
-
- name = normalize_name(name)
- currencies = db['names'].get(name, [name])
- return currencies[0]
-
-
-def iso4217_to_name(iso4217, language):
- global db
-
- return db['iso4217'].get(iso4217, {}).get(language, iso4217)
+https_support = True
def request(query, params):
- m = parser_re.match(query)
- if not m:
- # wrong query
- return params
- amount, from_currency, to_currency = m.groups()
- amount = float(amount)
- from_currency = name_to_iso4217(from_currency.strip())
- to_currency = name_to_iso4217(to_currency.strip())
-
- q = (from_currency + to_currency).upper()
-
- params['url'] = url.format(from_currency, to_currency)
- params['amount'] = amount
- params['from'] = from_currency
- params['to'] = to_currency
- params['from_name'] = iso4217_to_name(from_currency, 'en')
- params['to_name'] = iso4217_to_name(to_currency, 'en')
-
+ params['url'] = url.format(params['from'], params['to'])
return params
@@ -85,15 +52,3 @@ def response(resp):
results.append({'answer': answer, 'url': url})
return results
-
-
-def load():
- global db
-
- current_dir = os.path.dirname(os.path.realpath(__file__))
- json_data = open(current_dir + "/../data/currencies.json", 'r', encoding='utf-8').read()
-
- db = json.loads(json_data)
-
-
-load()
diff --git a/searx/engines/dailymotion.py b/searx/engines/dailymotion.py
index 1038e64..92d368c 100644
--- a/searx/engines/dailymotion.py
+++ b/searx/engines/dailymotion.py
@@ -1,26 +1,26 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Dailymotion (Videos)
-
- @website https://www.dailymotion.com
- @provide-api yes (http://www.dailymotion.com/developer)
-
- @using-api yes
- @results JSON
- @stable yes
- @parse url, title, thumbnail, publishedDate, embedded
-
- @todo set content-parameter with correct data
"""
from json import loads
from datetime import datetime
-from searx.url_utils import urlencode
+from urllib.parse import urlencode
from searx.utils import match_language, html_to_text
+# about
+about = {
+ "website": 'https://www.dailymotion.com',
+ "wikidata_id": 'Q769222',
+ "official_api_documentation": 'https://www.dailymotion.com/developer',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
# engine dependent config
categories = ['videos']
paging = True
-language_support = True
# search-url
# see http://www.dailymotion.com/doc/api/obj-video.html
diff --git a/searx/engines/deezer.py b/searx/engines/deezer.py
index af63478..946bd3e 100644
--- a/searx/engines/deezer.py
+++ b/searx/engines/deezer.py
@@ -1,17 +1,20 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Deezer (Music)
-
- @website https://deezer.com
- @provide-api yes (http://developers.deezer.com/api/)
-
- @using-api yes
- @results JSON
- @stable yes
- @parse url, title, content, embedded
"""
from json import loads
-from searx.url_utils import urlencode
+from urllib.parse import urlencode
+
+# about
+about = {
+ "website": 'https://deezer.com',
+ "wikidata_id": 'Q602243',
+ "official_api_documentation": 'https://developers.deezer.com/',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
# engine dependent config
categories = ['music']
@@ -50,7 +53,7 @@ def response(resp):
if url.startswith('http://'):
url = 'https' + url[4:]
- content = u'{} - {} - {}'.format(
+ content = '{} - {} - {}'.format(
result['artist']['name'],
result['album']['title'],
result['title'])
diff --git a/searx/engines/deviantart.py b/searx/engines/deviantart.py
index a0e27e6..7840495 100644
--- a/searx/engines/deviantart.py
+++ b/searx/engines/deviantart.py
@@ -1,81 +1,77 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Deviantart (Images)
-
- @website https://www.deviantart.com/
- @provide-api yes (https://www.deviantart.com/developers/) (RSS)
-
- @using-api no (TODO, rewrite to api)
- @results HTML
- @stable no (HTML can change)
- @parse url, title, thumbnail_src, img_src
-
- @todo rewrite to api
"""
+# pylint: disable=missing-function-docstring
+from urllib.parse import urlencode
from lxml import html
-import re
-from searx.engines.xpath import extract_text
-from searx.url_utils import urlencode
+
+# about
+about = {
+ "website": 'https://www.deviantart.com/',
+ "wikidata_id": 'Q46523',
+ "official_api_documentation": 'https://www.deviantart.com/developers/',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['images']
paging = True
time_range_support = True
-# search-url
-base_url = 'https://www.deviantart.com/'
-search_url = base_url + 'search?page={page}&{query}'
-time_range_url = '&order={range}'
-
-time_range_dict = {'day': 11,
- 'week': 14,
- 'month': 15}
+time_range_dict = {
+ 'day': 'popular-24-hours',
+ 'week': 'popular-1-week',
+ 'month': 'popular-1-month',
+ 'year': 'most-recent',
+}
+# search-url
+base_url = 'https://www.deviantart.com'
-# do search-request
def request(query, params):
- if params['time_range'] and params['time_range'] not in time_range_dict:
- return params
- params['url'] = search_url.format(page=params['pageno'],
- query=urlencode({'q': query}))
+ # https://www.deviantart.com/search/deviations?page=5&q=foo
+
+ query = {
+ 'page' : params['pageno'],
+ 'q' : query,
+ }
if params['time_range'] in time_range_dict:
- params['url'] += time_range_url.format(range=time_range_dict[params['time_range']])
+ query['order'] = time_range_dict[params['time_range']]
- return params
+ params['url'] = base_url + '/search/deviations?' + urlencode(query)
+ return params
-# get response from search-request
def response(resp):
- results = []
- # return empty array if a redirection code is returned
- if resp.status_code == 302:
- return []
+ results = []
dom = html.fromstring(resp.text)
- # parse results
for row in dom.xpath('//div[contains(@data-hook, "content_row")]'):
for result in row.xpath('./div'):
- link = result.xpath('.//a[@data-hook="deviation_link"]')[0]
- url = link.attrib.get('href')
- title = link.attrib.get('title')
- thumbnail_src = result.xpath('.//img')[0].attrib.get('src')
- img_src = thumbnail_src
-
- # http to https, remove domain sharding
- thumbnail_src = re.sub(r"https?://(th|fc)\d+.", "https://th01.", thumbnail_src)
- thumbnail_src = re.sub(r"http://", "https://", thumbnail_src)
-
- url = re.sub(r"http://(.*)\.deviantart\.com/", "https://\\1.deviantart.com/", url)
-
- # append result
- results.append({'url': url,
- 'title': title,
- 'img_src': img_src,
- 'thumbnail_src': thumbnail_src,
- 'template': 'images.html'})
-
- # return results
+
+ a_tag = result.xpath('.//a[@data-hook="deviation_link"]')[0]
+ noscript_tag = a_tag.xpath('.//noscript')
+
+ if noscript_tag:
+ img_tag = noscript_tag[0].xpath('.//img')
+ else:
+ img_tag = a_tag.xpath('.//img')
+ if not img_tag:
+ continue
+ img_tag = img_tag[0]
+
+ results.append({
+ 'template': 'images.html',
+ 'url': a_tag.attrib.get('href'),
+ 'img_src': img_tag.attrib.get('src'),
+ 'title': img_tag.attrib.get('alt'),
+ })
+
return results
diff --git a/searx/engines/dictzone.py b/searx/engines/dictzone.py
index 423af09..126e753 100644
--- a/searx/engines/dictzone.py
+++ b/searx/engines/dictzone.py
@@ -1,43 +1,33 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Dictzone
-
- @website https://dictzone.com/
- @provide-api no
- @using-api no
- @results HTML (using search portal)
- @stable no (HTML can change)
- @parse url, title, content
"""
-import re
+from urllib.parse import urljoin
from lxml import html
-from searx.utils import is_valid_lang, eval_xpath
-from searx.url_utils import urljoin
-
+from searx.utils import eval_xpath
+
+# about
+about = {
+ "website": 'https://dictzone.com/',
+ "wikidata_id": None,
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+
+engine_type = 'online_dictionary'
categories = ['general']
-url = u'https://dictzone.com/{from_lang}-{to_lang}-dictionary/{query}'
+url = 'https://dictzone.com/{from_lang}-{to_lang}-dictionary/{query}'
weight = 100
-parser_re = re.compile(b'.*?([a-z]+)-([a-z]+) ([^ ]+)$', re.I)
results_xpath = './/table[@id="r"]/tr'
+https_support = True
def request(query, params):
- m = parser_re.match(query)
- if not m:
- return params
-
- from_lang, to_lang, query = m.groups()
-
- from_lang = is_valid_lang(from_lang)
- to_lang = is_valid_lang(to_lang)
-
- if not from_lang or not to_lang:
- return params
-
- params['url'] = url.format(from_lang=from_lang[2],
- to_lang=to_lang[2],
- query=query.decode('utf-8'))
+ params['url'] = url.format(from_lang=params['from_lang'][2], to_lang=params['to_lang'][2], query=params['query'])
return params
@@ -59,10 +49,12 @@ def response(resp):
if t.strip():
to_results.append(to_result.text_content())
- results.append({
- 'url': urljoin(resp.url, '?%d' % k),
- 'title': from_result.text_content(),
- 'content': '; '.join(to_results)
- })
+ results.append(
+ {
+ 'url': urljoin(str(resp.url), '?%d' % k),
+ 'title': from_result.text_content(),
+ 'content': '; '.join(to_results),
+ }
+ )
return results
diff --git a/searx/engines/digbt.py b/searx/engines/digbt.py
index ff2f945..109662a 100644
--- a/searx/engines/digbt.py
+++ b/searx/engines/digbt.py
@@ -1,23 +1,21 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
DigBT (Videos, Music, Files)
-
- @website https://digbt.org
- @provide-api no
-
- @using-api no
- @results HTML (using search portal)
- @stable no (HTML can change)
- @parse url, title, content, magnetlink
"""
-from sys import version_info
+from urllib.parse import urljoin
from lxml import html
-from searx.engines.xpath import extract_text
-from searx.utils import get_torrent_size
-from searx.url_utils import urljoin
-
-if version_info[0] == 3:
- unicode = str
+from searx.utils import extract_text, get_torrent_size
+
+# about
+about = {
+ "website": 'https://digbt.org',
+ "wikidata_id": None,
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
categories = ['videos', 'music', 'files']
paging = True
diff --git a/searx/engines/digg.py b/searx/engines/digg.py
index 073410e..4fde491 100644
--- a/searx/engines/digg.py
+++ b/searx/engines/digg.py
@@ -1,69 +1,68 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Digg (News, Social media)
-
- @website https://digg.com/
- @provide-api no
-
- @using-api no
- @results HTML (using search portal)
- @stable no (HTML can change)
- @parse url, title, content, publishedDate, thumbnail
"""
+# pylint: disable=missing-function-docstring
-import random
-import string
-from dateutil import parser
-from json import loads
-from lxml import html
-from searx.url_utils import urlencode
+from urllib.parse import urlencode
from datetime import datetime
+from lxml import html
+from searx.utils import eval_xpath, extract_text
+
+# about
+about = {
+ "website": 'https://digg.com',
+ "wikidata_id": 'Q270478',
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+
# engine dependent config
categories = ['news', 'social media']
paging = True
+base_url = 'https://digg.com'
+results_per_page = 10
# search-url
-base_url = 'https://digg.com/'
-search_url = base_url + 'api/search/?{query}&from={position}&size=20&format=html'
+search_url = base_url + (
+ '/search'
+ '?{query}'
+ '&size={size}'
+ '&offset={offset}'
+)
-# specific xpath variables
-results_xpath = '//article'
-link_xpath = './/small[@class="time"]//a'
-title_xpath = './/h2//a//text()'
-content_xpath = './/p//text()'
-pubdate_xpath = './/time'
-
-digg_cookie_chars = string.ascii_uppercase + string.ascii_lowercase +\
- string.digits + "+_"
-
-
-# do search-request
def request(query, params):
- offset = (params['pageno'] - 1) * 20
- params['url'] = search_url.format(position=offset,
- query=urlencode({'q': query}))
- params['cookies']['frontend.auid'] = ''.join(random.choice(
- digg_cookie_chars) for _ in range(22))
+ offset = (params['pageno'] - 1) * results_per_page + 1
+ params['url'] = search_url.format(
+ query = urlencode({'q': query}),
+ size = results_per_page,
+ offset = offset,
+ )
return params
-
-# get response from search-request
def response(resp):
results = []
- search_result = loads(resp.text)
+ dom = html.fromstring(resp.text)
+
+ results_list = eval_xpath(dom, '//section[contains(@class, "search-results")]')
+
+ for result in results_list:
- # parse results
- for result in search_result['mapped']:
+ titles = eval_xpath(result, '//article//header//h2')
+ contents = eval_xpath(result, '//article//p')
+ urls = eval_xpath(result, '//header/a/@href')
+ published_dates = eval_xpath(result, '//article/div/div/time/@datetime')
- published = datetime.strptime(result['created']['ISO'], "%Y-%m-%d %H:%M:%S")
- # append result
- results.append({'url': result['url'],
- 'title': result['title'],
- 'content': result['excerpt'],
- 'template': 'videos.html',
- 'publishedDate': published,
- 'thumbnail': result['images']['thumbImage']})
+ for (title, content, url, published_date) in zip(titles, contents, urls, published_dates):
+ results.append({
+ 'url': url,
+ 'publishedDate': datetime.strptime(published_date, '%Y-%m-%dT%H:%M:%SZ'),
+ 'title': extract_text(title),
+ 'content' : extract_text(content),
+ })
- # return results
return results
diff --git a/searx/engines/doku.py b/searx/engines/doku.py
index d20e660..cf38b3b 100644
--- a/searx/engines/doku.py
+++ b/searx/engines/doku.py
@@ -1,23 +1,25 @@
-# Doku Wiki
-#
-# @website https://www.dokuwiki.org/
-# @provide-api yes
-# (https://www.dokuwiki.org/devel:xmlrpc)
-#
-# @using-api no
-# @results HTML
-# @stable yes
-# @parse (general) url, title, content
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Doku Wiki
+"""
+from urllib.parse import urlencode
from lxml.html import fromstring
-from searx.engines.xpath import extract_text
-from searx.utils import eval_xpath
-from searx.url_utils import urlencode
+from searx.utils import extract_text, eval_xpath
+
+# about
+about = {
+ "website": 'https://www.dokuwiki.org/',
+ "wikidata_id": 'Q851864',
+ "official_api_documentation": 'https://www.dokuwiki.org/devel:xmlrpc',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['general'] # TODO , 'images', 'music', 'videos', 'files'
paging = False
-language_support = False
number_of_results = 5
# search-url
diff --git a/searx/engines/duckduckgo.py b/searx/engines/duckduckgo.py
index 0d2c0af..883d315 100644
--- a/searx/engines/duckduckgo.py
+++ b/searx/engines/duckduckgo.py
@@ -1,30 +1,35 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""DuckDuckGo Lite
"""
- DuckDuckGo (Web)
- @website https://duckduckgo.com/
- @provide-api yes (https://duckduckgo.com/api),
- but not all results from search-site
-
- @using-api no
- @results HTML (using search portal)
- @stable no (HTML can change)
- @parse url, title, content
-
- @todo rewrite to api
-"""
+from json import loads
from lxml.html import fromstring
-from json import loads
-from searx.engines.xpath import extract_text
+
+from searx.utils import (
+ dict_subset,
+ eval_xpath,
+ eval_xpath_getindex,
+ extract_text,
+ match_language,
+)
from searx.poolrequests import get
-from searx.url_utils import urlencode
-from searx.utils import match_language, eval_xpath
+
+# about
+about = {
+ "website": 'https://lite.duckduckgo.com/lite',
+ "wikidata_id": 'Q12805',
+ "official_api_documentation": 'https://duckduckgo.com/api',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
-categories = ['general']
+categories = ['general', 'web']
paging = True
-language_support = True
-supported_languages_url = 'https://duckduckgo.com/util/u172.js'
+supported_languages_url = 'https://duckduckgo.com/util/u588.js'
time_range_support = True
language_aliases = {
@@ -34,30 +39,22 @@ language_aliases = {
'ko': 'kr-KR',
'sl-SI': 'sl-SL',
'zh-TW': 'tzh-TW',
- 'zh-HK': 'tzh-HK'
+ 'zh-HK': 'tzh-HK',
}
-# search-url
-url = 'https://duckduckgo.com/html?{query}&s={offset}&dc={dc_param}'
-time_range_url = '&df={range}'
-
-time_range_dict = {'day': 'd',
- 'week': 'w',
- 'month': 'm'}
+time_range_dict = {'day': 'd', 'week': 'w', 'month': 'm', 'year': 'y'}
-# specific xpath variables
-result_xpath = '//div[@class="result results_links results_links_deep web-result "]' # noqa
-url_xpath = './/a[@class="result__a"]/@href'
-title_xpath = './/a[@class="result__a"]'
-content_xpath = './/a[@class="result__snippet"]'
+# search-url
+url = 'https://lite.duckduckgo.com/lite'
+url_ping = 'https://duckduckgo.com/t/sl_l'
# match query's language to a region code that duckduckgo will accept
-def get_region_code(lang, lang_list=[]):
+def get_region_code(lang, lang_list=None):
if lang == 'all':
return None
- lang_code = match_language(lang, lang_list, language_aliases, 'wt-WT')
+ lang_code = match_language(lang, lang_list or [], language_aliases, 'wt-WT')
lang_parts = lang_code.split('-')
# country code goes first
@@ -65,67 +62,110 @@ def get_region_code(lang, lang_list=[]):
def request(query, params):
- if params['time_range'] not in (None, 'None', '') and params['time_range'] not in time_range_dict:
- return params
- offset = (params['pageno'] - 1) * 30
+ params['url'] = url
+ params['method'] = 'POST'
- region_code = get_region_code(params['language'], supported_languages)
- params['url'] = 'https://duckduckgo.com/html/'
- if params['pageno'] > 1:
- params['method'] = 'POST'
- params['data']['q'] = query
+ params['data']['q'] = query
+
+ # The API is not documented, so we do some reverse engineering and emulate
+ # what https://lite.duckduckgo.com/lite/ does when you press "next Page"
+ # link again and again ..
+
+ params['headers']['Content-Type'] = 'application/x-www-form-urlencoded'
+
+ # initial page does not have an offset
+ if params['pageno'] == 2:
+ # second page does have an offset of 30
+ offset = (params['pageno'] - 1) * 30
params['data']['s'] = offset
- params['data']['dc'] = 30
- params['data']['nextParams'] = ''
- params['data']['v'] = 'l'
+ params['data']['dc'] = offset + 1
+
+ elif params['pageno'] > 2:
+ # third and following pages do have an offset of 30 + n*50
+ offset = 30 + (params['pageno'] - 2) * 50
+ params['data']['s'] = offset
+ params['data']['dc'] = offset + 1
+
+ # initial page does not have additional data in the input form
+ if params['pageno'] > 1:
+ # request the second page (and more pages) needs 'o' and 'api' arguments
params['data']['o'] = 'json'
- params['data']['api'] = '/d.js'
- if params['time_range'] in time_range_dict:
- params['data']['df'] = time_range_dict[params['time_range']]
- if region_code:
- params['data']['kl'] = region_code
- else:
- if region_code:
- params['url'] = url.format(
- query=urlencode({'q': query, 'kl': region_code}), offset=offset, dc_param=offset)
- else:
- params['url'] = url.format(
- query=urlencode({'q': query}), offset=offset, dc_param=offset)
-
- if params['time_range'] in time_range_dict:
- params['url'] += time_range_url.format(range=time_range_dict[params['time_range']])
+ params['data']['api'] = 'd.js'
+
+ # initial page does not have additional data in the input form
+ if params['pageno'] > 2:
+ # request the third page (and more pages) some more arguments
+ params['data']['nextParams'] = ''
+ params['data']['v'] = ''
+ params['data']['vqd'] = ''
+
+ region_code = get_region_code(params['language'], supported_languages)
+ if region_code:
+ params['data']['kl'] = region_code
+ params['cookies']['kl'] = region_code
+
+ params['data']['df'] = ''
+ if params['time_range'] in time_range_dict:
+ params['data']['df'] = time_range_dict[params['time_range']]
+ params['cookies']['df'] = time_range_dict[params['time_range']]
return params
# get response from search-request
def response(resp):
- results = []
+ headers_ping = dict_subset(resp.request.headers, ['User-Agent', 'Accept-Encoding', 'Accept', 'Cookie'])
+ get(url_ping, headers=headers_ping)
+
+ if resp.status_code == 303:
+ return []
+
+ results = []
doc = fromstring(resp.text)
- # parse results
- for i, r in enumerate(eval_xpath(doc, result_xpath)):
- if i >= 30:
- break
- try:
- res_url = eval_xpath(r, url_xpath)[-1]
- except:
+ result_table = eval_xpath(doc, '//html/body/form/div[@class="filters"]/table')
+ if not len(result_table) >= 3:
+ # no more results
+ return []
+ result_table = result_table[2]
+
+ tr_rows = eval_xpath(result_table, './/tr')
+
+ # In the last <tr> is the form of the 'previous/next page' links
+ tr_rows = tr_rows[:-1]
+
+ len_tr_rows = len(tr_rows)
+ offset = 0
+
+ while len_tr_rows >= offset + 4:
+
+ # assemble table rows we need to scrap
+ tr_title = tr_rows[offset]
+ tr_content = tr_rows[offset + 1]
+ offset += 4
+
+ # ignore sponsored Adds <tr class="result-sponsored">
+ if tr_content.get('class') == 'result-sponsored':
continue
- if not res_url:
+ a_tag = eval_xpath_getindex(tr_title, './/td//a[@class="result-link"]', 0, None)
+ if a_tag is None:
continue
- title = extract_text(eval_xpath(r, title_xpath))
- content = extract_text(eval_xpath(r, content_xpath))
+ td_content = eval_xpath_getindex(tr_content, './/td[@class="result-snippet"]', 0, None)
+ if td_content is None:
+ continue
- # append result
- results.append({'title': title,
- 'content': content,
- 'url': res_url})
+ results.append(
+ {
+ 'title': a_tag.text_content(),
+ 'content': extract_text(td_content),
+ 'url': a_tag.get('href'),
+ }
+ )
- # return results
return results
@@ -135,7 +175,7 @@ def _fetch_supported_languages(resp):
# response is a js file with regions as an embedded object
response_page = resp.text
response_page = response_page[response_page.find('regions:{') + 8:]
- response_page = response_page[:response_page.find('}') + 1]
+ response_page = response_page[: response_page.find('}') + 1]
regions_json = loads(response_page)
supported_languages = map((lambda x: x[3:] + '-' + x[:2].upper()), regions_json.keys())
diff --git a/searx/engines/duckduckgo_definitions.py b/searx/engines/duckduckgo_definitions.py
index 79d10c3..0473b0a 100644
--- a/searx/engines/duckduckgo_definitions.py
+++ b/searx/engines/duckduckgo_definitions.py
@@ -1,40 +1,68 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
-DuckDuckGo (definitions)
-
-- `Instant Answer API`_
-- `DuckDuckGo query`_
-
-.. _Instant Answer API: https://duckduckgo.com/api
-.. _DuckDuckGo query: https://api.duckduckgo.com/?q=DuckDuckGo&format=json&pretty=1
-
+ DuckDuckGo (Instant Answer API)
"""
import json
+from urllib.parse import urlencode, urlparse, urljoin
from lxml import html
-from re import compile
-from searx.engines.xpath import extract_text
-from searx.engines.duckduckgo import _fetch_supported_languages, supported_languages_url, language_aliases
-from searx.url_utils import urlencode
-from searx.utils import html_to_text, match_language
-url = 'https://api.duckduckgo.com/'\
+from searx import logger
+from searx.data import WIKIDATA_UNITS
+from searx.engines.duckduckgo import language_aliases
+from searx.engines.duckduckgo import _fetch_supported_languages, supported_languages_url # NOQA # pylint: disable=unused-import
+from searx.utils import extract_text, html_to_text, match_language, get_string_replaces_function
+from searx.external_urls import get_external_url, get_earth_coordinates_url, area_to_osm_zoom
+
+logger = logger.getChild('duckduckgo_definitions')
+
+# about
+about = {
+ "website": 'https://duckduckgo.com/',
+ "wikidata_id": 'Q12805',
+ "official_api_documentation": 'https://duckduckgo.com/api',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
+URL = 'https://api.duckduckgo.com/'\
+ '?{query}&format=json&pretty=0&no_redirect=1&d=1'
-http_regex = compile(r'^http:')
+WIKIDATA_PREFIX = [
+ 'http://www.wikidata.org/entity/',
+ 'https://www.wikidata.org/entity/'
+]
+
+replace_http_by_https = get_string_replaces_function({'http:': 'https:'})
+
+def is_broken_text(text):
+ """ duckduckgo may return something like "<a href="xxxx">http://somewhere Related website<a/>"
-def result_to_text(url, text, htmlResult):
+ The href URL is broken, the "Related website" may contains some HTML.
+
+ The best solution seems to ignore these results.
+ """
+ return text.startswith('http') and ' ' in text
+
+
+def result_to_text(text, htmlResult):
# TODO : remove result ending with "Meaning" or "Category"
+ result = None
dom = html.fromstring(htmlResult)
a = dom.xpath('//a')
if len(a) >= 1:
- return extract_text(a[0])
+ result = extract_text(a[0])
else:
- return text
+ result = text
+ if not is_broken_text(result):
+ return result
+ return None
def request(query, params):
- params['url'] = url.format(query=urlencode({'q': query}))
+ params['url'] = URL.format(query=urlencode({'q': query}))
language = match_language(params['language'], supported_languages, language_aliases)
language = language.split('-')[0]
params['headers']['Accept-Language'] = language
@@ -46,6 +74,14 @@ def response(resp):
search_res = json.loads(resp.text)
+ # search_res.get('Entity') possible values (not exhaustive) :
+ # * continent / country / department / location / waterfall
+ # * actor / musician / artist
+ # * book / performing art / film / television / media franchise / concert tour / playwright
+ # * prepared food
+ # * website / software / os / programming language / file format / software engineer
+ # * compagny
+
content = ''
heading = search_res.get('Heading', '')
attributes = []
@@ -56,7 +92,8 @@ def response(resp):
# add answer if there is one
answer = search_res.get('Answer', '')
if answer:
- if search_res.get('AnswerType', '') not in ['calc']:
+ logger.debug('AnswerType="%s" Answer="%s"', search_res.get('AnswerType'), answer)
+ if search_res.get('AnswerType') not in ['calc', 'ip']:
results.append({'answer': html_to_text(answer)})
# add infobox
@@ -67,42 +104,38 @@ def response(resp):
content = content + search_res.get('Abstract', '')
# image
- image = search_res.get('Image', '')
+ image = search_res.get('Image')
image = None if image == '' else image
-
- # attributes
- if 'Infobox' in search_res:
- infobox = search_res.get('Infobox', None)
- if 'content' in infobox:
- for info in infobox.get('content'):
- attributes.append({'label': info.get('label'),
- 'value': info.get('value')})
+ if image is not None and urlparse(image).netloc == '':
+ image = urljoin('https://duckduckgo.com', image)
# urls
+ # Official website, Wikipedia page
for ddg_result in search_res.get('Results', []):
- if 'FirstURL' in ddg_result:
- firstURL = ddg_result.get('FirstURL', '')
- text = ddg_result.get('Text', '')
+ firstURL = ddg_result.get('FirstURL')
+ text = ddg_result.get('Text')
+ if firstURL is not None and text is not None:
urls.append({'title': text, 'url': firstURL})
results.append({'title': heading, 'url': firstURL})
# related topics
for ddg_result in search_res.get('RelatedTopics', []):
if 'FirstURL' in ddg_result:
- suggestion = result_to_text(ddg_result.get('FirstURL', None),
- ddg_result.get('Text', None),
- ddg_result.get('Result', None))
- if suggestion != heading:
- results.append({'suggestion': suggestion})
+ firstURL = ddg_result.get('FirstURL')
+ text = ddg_result.get('Text')
+ if not is_broken_text(text):
+ suggestion = result_to_text(text,
+ ddg_result.get('Result'))
+ if suggestion != heading and suggestion is not None:
+ results.append({'suggestion': suggestion})
elif 'Topics' in ddg_result:
suggestions = []
relatedTopics.append({'name': ddg_result.get('Name', ''),
- 'suggestions': suggestions})
+ 'suggestions': suggestions})
for topic_result in ddg_result.get('Topics', []):
- suggestion = result_to_text(topic_result.get('FirstURL', None),
- topic_result.get('Text', None),
- topic_result.get('Result', None))
- if suggestion != heading:
+ suggestion = result_to_text(topic_result.get('Text'),
+ topic_result.get('Result'))
+ if suggestion != heading and suggestion is not None:
suggestions.append(suggestion)
# abstract
@@ -111,7 +144,10 @@ def response(resp):
# add as result ? problem always in english
infobox_id = abstractURL
urls.append({'title': search_res.get('AbstractSource'),
- 'url': abstractURL})
+ 'url': abstractURL,
+ 'official': True})
+ results.append({'url': abstractURL,
+ 'title': heading})
# definition
definitionURL = search_res.get('DefinitionURL', '')
@@ -119,53 +155,107 @@ def response(resp):
# add as result ? as answer ? problem always in english
infobox_id = definitionURL
urls.append({'title': search_res.get('DefinitionSource'),
- 'url': definitionURL})
+ 'url': definitionURL})
# to merge with wikidata's infobox
if infobox_id:
- infobox_id = http_regex.sub('https:', infobox_id)
-
- # entity
- entity = search_res.get('Entity', None)
- # TODO continent / country / department / location / waterfall /
- # mountain range :
- # link to map search, get weather, near by locations
- # TODO musician : link to music search
- # TODO concert tour : ??
- # TODO film / actor / television / media franchise :
- # links to IMDB / rottentomatoes (or scrap result)
- # TODO music : link tu musicbrainz / last.fm
- # TODO book : ??
- # TODO artist / playwright : ??
- # TODO compagny : ??
- # TODO software / os : ??
- # TODO software engineer : ??
- # TODO prepared food : ??
- # TODO website : ??
- # TODO performing art : ??
- # TODO prepared food : ??
- # TODO programming language : ??
- # TODO file format : ??
+ infobox_id = replace_http_by_https(infobox_id)
+
+ # attributes
+ # some will be converted to urls
+ if 'Infobox' in search_res:
+ infobox = search_res.get('Infobox')
+ if 'content' in infobox:
+ osm_zoom = 17
+ coordinates = None
+ for info in infobox.get('content'):
+ data_type = info.get('data_type')
+ data_label = info.get('label')
+ data_value = info.get('value')
+
+ # Workaround: ddg may return a double quote
+ if data_value == '""':
+ continue
+
+ # Is it an external URL ?
+ # * imdb_id / facebook_profile / youtube_channel / youtube_video / twitter_profile
+ # * instagram_profile / rotten_tomatoes / spotify_artist_id / itunes_artist_id / soundcloud_id
+ # * netflix_id
+ external_url = get_external_url(data_type, data_value)
+ if external_url is not None:
+ urls.append({'title': data_label,
+ 'url': external_url})
+ elif data_type in ['instance', 'wiki_maps_trigger', 'google_play_artist_id']:
+ # ignore instance: Wikidata value from "Instance Of" (Qxxxx)
+ # ignore wiki_maps_trigger: reference to a javascript
+ # ignore google_play_artist_id: service shutdown
+ pass
+ elif data_type == 'string' and data_label == 'Website':
+ # There is already an URL for the website
+ pass
+ elif data_type == 'area':
+ attributes.append({'label': data_label,
+ 'value': area_to_str(data_value),
+ 'entity': 'P2046'})
+ osm_zoom = area_to_osm_zoom(data_value.get('amount'))
+ elif data_type == 'coordinates':
+ if data_value.get('globe') == 'http://www.wikidata.org/entity/Q2':
+ # coordinate on Earth
+ # get the zoom information from the area
+ coordinates = info
+ else:
+ # coordinate NOT on Earth
+ attributes.append({'label': data_label,
+ 'value': data_value,
+ 'entity': 'P625'})
+ elif data_type == 'string':
+ attributes.append({'label': data_label,
+ 'value': data_value})
+
+ if coordinates:
+ data_label = coordinates.get('label')
+ data_value = coordinates.get('value')
+ latitude = data_value.get('latitude')
+ longitude = data_value.get('longitude')
+ url = get_earth_coordinates_url(latitude, longitude, osm_zoom)
+ urls.append({'title': 'OpenStreetMap',
+ 'url': url,
+ 'entity': 'P625'})
if len(heading) > 0:
# TODO get infobox.meta.value where .label='article_title'
if image is None and len(attributes) == 0 and len(urls) == 1 and\
len(relatedTopics) == 0 and len(content) == 0:
- results.append({
- 'url': urls[0]['url'],
- 'title': heading,
- 'content': content
- })
+ results.append({'url': urls[0]['url'],
+ 'title': heading,
+ 'content': content})
else:
- results.append({
- 'infobox': heading,
- 'id': infobox_id,
- 'entity': entity,
- 'content': content,
- 'img_src': image,
- 'attributes': attributes,
- 'urls': urls,
- 'relatedTopics': relatedTopics
- })
+ results.append({'infobox': heading,
+ 'id': infobox_id,
+ 'content': content,
+ 'img_src': image,
+ 'attributes': attributes,
+ 'urls': urls,
+ 'relatedTopics': relatedTopics})
return results
+
+
+def unit_to_str(unit):
+ for prefix in WIKIDATA_PREFIX:
+ if unit.startswith(prefix):
+ wikidata_entity = unit[len(prefix):]
+ return WIKIDATA_UNITS.get(wikidata_entity, unit)
+ return unit
+
+
+def area_to_str(area):
+ """parse {'unit': 'http://www.wikidata.org/entity/Q712226', 'amount': '+20.99'}"""
+ unit = unit_to_str(area.get('unit'))
+ if unit is not None:
+ try:
+ amount = float(area.get('amount'))
+ return '{} {}'.format(amount, unit)
+ except ValueError:
+ pass
+ return '{} {}'.format(area.get('amount', ''), area.get('unit', ''))
diff --git a/searx/engines/duckduckgo_images.py b/searx/engines/duckduckgo_images.py
index 89924b7..305eb1c 100644
--- a/searx/engines/duckduckgo_images.py
+++ b/searx/engines/duckduckgo_images.py
@@ -1,31 +1,31 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
DuckDuckGo (Images)
-
- @website https://duckduckgo.com/
- @provide-api yes (https://duckduckgo.com/api),
- but images are not supported
-
- @using-api no
- @results JSON (site requires js to get images)
- @stable no (JSON can change)
- @parse url, title, img_src
-
- @todo avoid extra request
"""
from json import loads
-from searx.engines.xpath import extract_text
-from searx.engines.duckduckgo import (
- _fetch_supported_languages, supported_languages_url,
- get_region_code, language_aliases
-)
+from urllib.parse import urlencode
+from searx.exceptions import SearxEngineAPIException
+from searx.engines.duckduckgo import get_region_code
+from searx.engines.duckduckgo import _fetch_supported_languages, supported_languages_url # NOQA # pylint: disable=unused-import
from searx.poolrequests import get
-from searx.url_utils import urlencode
+
+# about
+about = {
+ "website": 'https://duckduckgo.com/',
+ "wikidata_id": 'Q12805',
+ "official_api_documentation": {
+ 'url': 'https://duckduckgo.com/api',
+ 'comment': 'but images are not supported',
+ },
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'JSON (site requires js to get images)',
+}
# engine dependent config
categories = ['images']
paging = True
-language_support = True
safesearch = True
# search-url
@@ -40,7 +40,7 @@ def get_vqd(query, headers):
res = get(query_url, headers=headers)
content = res.text
if content.find('vqd=\'') == -1:
- raise Exception('Request failed')
+ raise SearxEngineAPIException('Request failed')
vqd = content[content.find('vqd=\'') + 5:]
vqd = vqd[:vqd.find('\'')]
return vqd
@@ -74,10 +74,7 @@ def response(resp):
results = []
content = resp.text
- try:
- res_json = loads(content)
- except:
- raise Exception('Cannot parse results')
+ res_json = loads(content)
# parse results
for result in res_json['results']:
diff --git a/searx/engines/duden.py b/searx/engines/duden.py
index cf2f1a2..57c76e9 100644
--- a/searx/engines/duden.py
+++ b/searx/engines/duden.py
@@ -1,23 +1,25 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Duden
- @website https://www.duden.de
- @provide-api no
- @using-api no
- @results HTML (using search portal)
- @stable no (HTML can change)
- @parse url, title, content
"""
-from lxml import html, etree
import re
-from searx.engines.xpath import extract_text
-from searx.utils import eval_xpath
-from searx.url_utils import quote, urljoin
-from searx import logger
+from urllib.parse import quote, urljoin
+from lxml import html
+from searx.utils import extract_text, eval_xpath, eval_xpath_list, eval_xpath_getindex
+
+# about
+about = {
+ "website": 'https://www.duden.de',
+ "wikidata_id": 'Q73624591',
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
categories = ['general']
paging = True
-language_support = False
# search-url
base_url = 'https://www.duden.de/'
@@ -41,6 +43,9 @@ def request(query, params):
params['url'] = search_url_fmt.format(query=quote(query))
else:
params['url'] = search_url.format(offset=offset, query=quote(query))
+ # after the last page of results, spelling corrections are returned after a HTTP redirect
+ # whatever the page number is
+ params['soft_max_redirects'] = 1
return params
@@ -52,29 +57,21 @@ def response(resp):
dom = html.fromstring(resp.text)
- try:
- number_of_results_string =\
- re.sub('[^0-9]', '',
- eval_xpath(dom, '//a[@class="active" and contains(@href,"/suchen/dudenonline")]/span/text()')[0])
-
+ number_of_results_element =\
+ eval_xpath_getindex(dom, '//a[@class="active" and contains(@href,"/suchen/dudenonline")]/span/text()',
+ 0, default=None)
+ if number_of_results_element is not None:
+ number_of_results_string = re.sub('[^0-9]', '', number_of_results_element)
results.append({'number_of_results': int(number_of_results_string)})
- except:
- logger.debug("Couldn't read number of results.")
- pass
-
- for result in eval_xpath(dom, '//section[not(contains(@class, "essay"))]'):
- try:
- url = eval_xpath(result, './/h2/a')[0].get('href')
- url = urljoin(base_url, url)
- title = eval_xpath(result, 'string(.//h2/a)').strip()
- content = extract_text(eval_xpath(result, './/p'))
- # append result
- results.append({'url': url,
- 'title': title,
- 'content': content})
- except:
- logger.debug('result parse error in:\n%s', etree.tostring(result, pretty_print=True))
- continue
+ for result in eval_xpath_list(dom, '//section[not(contains(@class, "essay"))]'):
+ url = eval_xpath_getindex(result, './/h2/a', 0).get('href')
+ url = urljoin(base_url, url)
+ title = eval_xpath(result, 'string(.//h2/a)').strip()
+ content = extract_text(eval_xpath(result, './/p'))
+ # append result
+ results.append({'url': url,
+ 'title': title,
+ 'content': content})
return results
diff --git a/searx/engines/dummy-offline.py b/searx/engines/dummy-offline.py
new file mode 100644
index 0000000..cf2f753
--- /dev/null
+++ b/searx/engines/dummy-offline.py
@@ -0,0 +1,20 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Dummy Offline
+"""
+
+
+# about
+about = {
+ "wikidata_id": None,
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+
+
+def search(query, request_params):
+ return [{
+ 'result': 'this is what you get',
+ }]
diff --git a/searx/engines/dummy.py b/searx/engines/dummy.py
index 50b56ef..1a1b57d 100644
--- a/searx/engines/dummy.py
+++ b/searx/engines/dummy.py
@@ -1,10 +1,18 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Dummy
-
- @results empty array
- @stable yes
"""
+# about
+about = {
+ "website": None,
+ "wikidata_id": None,
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'empty array',
+}
+
# do search-request
def request(query, params):
diff --git a/searx/engines/ebay.py b/searx/engines/ebay.py
new file mode 100644
index 0000000..45c633b
--- /dev/null
+++ b/searx/engines/ebay.py
@@ -0,0 +1,73 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Ebay (Videos, Music, Files)
+"""
+
+from lxml import html
+from searx.engines.xpath import extract_text
+from urllib.parse import quote
+
+# about
+about = {
+ "website": 'https://www.ebay.com',
+ "wikidata_id": 'Q58024',
+ "official_api_documentation": 'https://developer.ebay.com/',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+
+categories = ['shopping']
+paging = True
+
+url = 'https://www.ebay.com'
+search_url = url + '/sch/i.html?_nkw={query}&_sacat={pageno}'
+
+results_xpath = '//li[contains(@class, "s-item")]'
+url_xpath = './/a[@class="s-item__link"]/@href'
+title_xpath = './/h3[@class="s-item__title"]'
+content_xpath = './/div[@span="SECONDARY_INFO"]'
+price_xpath = './/div[contains(@class, "s-item__detail")]/span[@class="s-item__price"][1]/text()'
+shipping_xpath = './/span[contains(@class, "s-item__shipping")]/text()'
+source_country_xpath = './/span[contains(@class, "s-item__location")]/text()'
+thumbnail_xpath = './/img[@class="s-item__image-img"]/@src'
+
+
+def request(query, params):
+ params['url'] = search_url.format(query=quote(query), pageno=params['pageno'])
+ return params
+
+
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+ results_dom = dom.xpath(results_xpath)
+ if not results_dom:
+ return []
+
+ for result_dom in results_dom:
+ url = extract_text(result_dom.xpath(url_xpath))
+ title = extract_text(result_dom.xpath(title_xpath))
+ content = extract_text(result_dom.xpath(content_xpath))
+ price = extract_text(result_dom.xpath(price_xpath))
+ shipping = extract_text(result_dom.xpath(shipping_xpath))
+ source_country = extract_text(result_dom.xpath(source_country_xpath))
+ thumbnail = extract_text(result_dom.xpath(thumbnail_xpath))
+
+ if title == "":
+ continue
+
+ results.append({
+ 'url': url,
+ 'title': title,
+ 'content': content,
+ 'price': price,
+ 'shipping': shipping,
+ 'source_country': source_country,
+ 'thumbnail': thumbnail,
+ 'template': 'products.html',
+
+ })
+
+ return results
diff --git a/searx/engines/elasticsearch.py b/searx/engines/elasticsearch.py
new file mode 100644
index 0000000..da7f980
--- /dev/null
+++ b/searx/engines/elasticsearch.py
@@ -0,0 +1,145 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Elasticsearch
+"""
+
+from json import loads, dumps
+from requests.auth import HTTPBasicAuth
+from searx.exceptions import SearxEngineAPIException
+
+
+base_url = 'http://localhost:9200'
+username = ''
+password = ''
+index = ''
+search_url = base_url + '/' + index + '/_search'
+query_type = 'match'
+custom_query_json = {}
+show_metadata = False
+categories = ['general']
+
+
+def init(engine_settings):
+ if 'query_type' in engine_settings and engine_settings['query_type'] not in _available_query_types:
+ raise ValueError('unsupported query type', engine_settings['query_type'])
+
+ if index == '':
+ raise ValueError('index cannot be empty')
+
+
+def request(query, params):
+ if query_type not in _available_query_types:
+ return params
+
+ if username and password:
+ params['auth'] = HTTPBasicAuth(username, password)
+
+ params['url'] = search_url
+ params['method'] = 'GET'
+ params['data'] = dumps(_available_query_types[query_type](query))
+ params['headers']['Content-Type'] = 'application/json'
+
+ return params
+
+
+def _match_query(query):
+ """
+ The standard for full text queries.
+ searx format: "key:value" e.g. city:berlin
+ REF: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html
+ """
+
+ try:
+ key, value = query.split(':')
+ except Exception as e:
+ raise ValueError('query format must be "key:value"') from e
+
+ return {"query": {"match": {key: {'query': value}}}}
+
+
+def _simple_query_string_query(query):
+ """
+ Accepts query strings, but it is less strict than query_string
+ The field used can be specified in index.query.default_field in Elasticsearch.
+ REF: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html
+ """
+
+ return {'query': {'simple_query_string': {'query': query}}}
+
+
+def _term_query(query):
+ """
+ Accepts one term and the name of the field.
+ searx format: "key:value" e.g. city:berlin
+ REF: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html
+ """
+
+ try:
+ key, value = query.split(':')
+ except Exception as e:
+ raise ValueError('query format must be key:value') from e
+
+ return {'query': {'term': {key: value}}}
+
+
+def _terms_query(query):
+ """
+ Accepts multiple terms and the name of the field.
+ searx format: "key:value1,value2" e.g. city:berlin,paris
+ REF: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-terms-query.html
+ """
+
+ try:
+ key, values = query.split(':')
+ except Exception as e:
+ raise ValueError('query format must be key:value1,value2') from e
+
+ return {'query': {'terms': {key: values.split(',')}}}
+
+
+def _custom_query(query):
+ key, value = query.split(':')
+ custom_query = custom_query_json
+ for query_key, query_value in custom_query.items():
+ if query_key == '{{KEY}}':
+ custom_query[key] = custom_query.pop(query_key)
+ if query_value == '{{VALUE}}':
+ custom_query[query_key] = value
+ return custom_query
+
+
+def response(resp):
+ results = []
+
+ resp_json = loads(resp.text)
+ if 'error' in resp_json:
+ raise SearxEngineAPIException(resp_json['error'])
+
+ for result in resp_json['hits']['hits']:
+ r = {key: str(value) if not key.startswith('_') else value for key, value in result['_source'].items()}
+ r['template'] = 'key-value.html'
+
+ if show_metadata:
+ r['metadata'] = {'index': result['_index'],
+ 'id': result['_id'],
+ 'score': result['_score']}
+
+ results.append(r)
+
+ return results
+
+
+_available_query_types = {
+ # Full text queries
+ # https://www.elastic.co/guide/en/elasticsearch/reference/current/full-text-queries.html
+ 'match': _match_query,
+ 'simple_query_string': _simple_query_string_query,
+
+ # Term-level queries
+ # https://www.elastic.co/guide/en/elasticsearch/reference/current/term-level-queries.html
+ 'term': _term_query,
+ 'terms': _terms_query,
+
+ # Query JSON defined by the instance administrator.
+ 'custom': _custom_query,
+}
diff --git a/searx/engines/emojipedia.py b/searx/engines/emojipedia.py
new file mode 100644
index 0000000..5a26ca2
--- /dev/null
+++ b/searx/engines/emojipedia.py
@@ -0,0 +1,68 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Emojipedia
+"""
+
+from urllib.parse import urlencode
+from lxml import html
+
+from searx import logger
+from searx.utils import (
+ eval_xpath_list,
+ eval_xpath_getindex,
+ extract_text,
+)
+
+logger = logger.getChild('Emojipedia engine')
+
+about = {
+ "website": 'https://emojipedia.org',
+ "wikidata_id": None,
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+
+categories = []
+paging = False
+time_range_support = False
+
+base_url = 'https://emojipedia.org'
+search_url = base_url + '/search/?{query}'
+
+
+def request(query, params):
+ params['url'] = search_url.format(
+ query=urlencode({'q': query}),
+ )
+ return params
+
+
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ for result in eval_xpath_list(dom, "//ol[@class='search-results']/li"):
+
+ extracted_desc = extract_text(eval_xpath_getindex(result, './/p', 0))
+
+ if 'No results found.' in extracted_desc:
+ break
+
+ link = eval_xpath_getindex(result, './/h2/a', 0)
+
+ url = base_url + link.attrib.get('href')
+ title = extract_text(link)
+ content = extracted_desc
+
+ res = {
+ 'url': url,
+ 'title': title,
+ 'content': content
+ }
+
+ results.append(res)
+
+ return results
diff --git a/searx/engines/etools.py b/searx/engines/etools.py
new file mode 100644
index 0000000..bf4f4ea
--- /dev/null
+++ b/searx/engines/etools.py
@@ -0,0 +1,56 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ eTools (Web)
+"""
+
+from lxml import html
+from urllib.parse import quote
+from searx.utils import extract_text, eval_xpath
+
+# about
+about = {
+ "website": 'https://www.etools.ch',
+ "wikidata_id": None,
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+
+categories = ['general']
+paging = False
+safesearch = True
+
+base_url = 'https://www.etools.ch'
+search_path = '/searchAdvancedSubmit.do'\
+ '?query={search_term}'\
+ '&pageResults=20'\
+ '&safeSearch={safesearch}'
+
+
+def request(query, params):
+ if params['safesearch']:
+ safesearch = 'true'
+ else:
+ safesearch = 'false'
+
+ params['url'] = base_url + search_path.format(search_term=quote(query), safesearch=safesearch)
+
+ return params
+
+
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ for result in eval_xpath(dom, '//table[@class="result"]//td[@class="record"]'):
+ url = eval_xpath(result, './a/@href')[0]
+ title = extract_text(eval_xpath(result, './a//text()'))
+ content = extract_text(eval_xpath(result, './/div[@class="text"]//text()'))
+
+ results.append({'url': url,
+ 'title': title,
+ 'content': content})
+
+ return results
diff --git a/searx/engines/faroo.py b/searx/engines/faroo.py
deleted file mode 100644
index a36ecf7..0000000
--- a/searx/engines/faroo.py
+++ /dev/null
@@ -1,96 +0,0 @@
-"""
- Faroo (Web, News)
-
- @website http://www.faroo.com
- @provide-api yes (http://www.faroo.com/hp/api/api.html), require API-key
-
- @using-api no
- @results JSON
- @stable yes
- @parse url, title, content, publishedDate, img_src
-"""
-
-from json import loads
-import datetime
-from searx.utils import searx_useragent
-from searx.url_utils import urlencode
-
-# engine dependent config
-categories = ['general', 'news']
-paging = True
-language_support = True
-number_of_results = 10
-
-# search-url
-url = 'http://www.faroo.com/'
-search_url = url + 'instant.json?{query}'\
- '&start={offset}'\
- '&length={number_of_results}'\
- '&l={language}'\
- '&src={categorie}'\
- '&i=false'\
- '&c=false'
-
-search_category = {'general': 'web',
- 'news': 'news'}
-
-
-# do search-request
-def request(query, params):
- offset = (params['pageno'] - 1) * number_of_results + 1
- categorie = search_category.get(params['category'], 'web')
-
- if params['language'] == 'all':
- language = 'en'
- else:
- language = params['language'].split('-')[0]
-
- # if language is not supported, put it in english
- if language != 'en' and\
- language != 'de' and\
- language != 'zh':
- language = 'en'
-
- params['url'] = search_url.format(offset=offset,
- number_of_results=number_of_results,
- query=urlencode({'q': query}),
- language=language,
- categorie=categorie)
-
- params['headers']['Referer'] = url
-
- return params
-
-
-# get response from search-request
-def response(resp):
- # HTTP-Code 429: rate limit exceeded
- if resp.status_code == 429:
- raise Exception("rate limit has been exceeded!")
-
- results = []
-
- search_res = loads(resp.text)
-
- # return empty array if there are no results
- if not search_res.get('results', {}):
- return []
-
- # parse results
- for result in search_res['results']:
- publishedDate = None
- result_json = {'url': result['url'], 'title': result['title'],
- 'content': result['kwic']}
- if result['news']:
- result_json['publishedDate'] = \
- datetime.datetime.fromtimestamp(result['date'] / 1000.0)
-
- # append image result if image url is set
- if result['iurl']:
- result_json['template'] = 'videos.html'
- result_json['thumbnail'] = result['iurl']
-
- results.append(result_json)
-
- # return results
- return results
diff --git a/searx/engines/fdroid.py b/searx/engines/fdroid.py
index 4066dc7..8fff2e3 100644
--- a/searx/engines/fdroid.py
+++ b/searx/engines/fdroid.py
@@ -1,17 +1,21 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
F-Droid (a repository of FOSS applications for Android)
-
- @website https://f-droid.org/
- @provide-api no
- @using-api no
- @results HTML
- @stable no (HTML can change)
- @parse url, title, content
"""
+from urllib.parse import urlencode
from lxml import html
-from searx.engines.xpath import extract_text
-from searx.url_utils import urlencode
+from searx.utils import extract_text
+
+# about
+about = {
+ "website": 'https://f-droid.org/',
+ "wikidata_id": 'Q1386210',
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['files']
diff --git a/searx/engines/filecrop.py b/searx/engines/filecrop.py
deleted file mode 100644
index ed57a6b..0000000
--- a/searx/engines/filecrop.py
+++ /dev/null
@@ -1,88 +0,0 @@
-from searx.url_utils import urlencode
-
-try:
- from HTMLParser import HTMLParser
-except:
- from html.parser import HTMLParser
-
-url = 'http://www.filecrop.com/'
-search_url = url + '/search.php?{query}&size_i=0&size_f=100000000&engine_r=1&engine_d=1&engine_e=1&engine_4=1&engine_m=1&pos={index}' # noqa
-
-paging = True
-
-
-class FilecropResultParser(HTMLParser):
-
- def __init__(self):
- HTMLParser.__init__(self)
- self.__start_processing = False
-
- self.results = []
- self.result = {}
-
- self.tr_counter = 0
- self.data_counter = 0
-
- def handle_starttag(self, tag, attrs):
-
- if tag == 'tr':
- if ('bgcolor', '#edeff5') in attrs or\
- ('bgcolor', '#ffffff') in attrs:
- self.__start_processing = True
-
- if not self.__start_processing:
- return
-
- if tag == 'label':
- self.result['title'] = [attr[1] for attr in attrs
- if attr[0] == 'title'][0]
- elif tag == 'a' and ('rel', 'nofollow') in attrs\
- and ('class', 'sourcelink') in attrs:
- if 'content' in self.result:
- self.result['content'] += [attr[1] for attr in attrs
- if attr[0] == 'title'][0]
- else:
- self.result['content'] = [attr[1] for attr in attrs
- if attr[0] == 'title'][0]
- self.result['content'] += ' '
- elif tag == 'a':
- self.result['url'] = url + [attr[1] for attr in attrs
- if attr[0] == 'href'][0]
-
- def handle_endtag(self, tag):
- if self.__start_processing is False:
- return
-
- if tag == 'tr':
- self.tr_counter += 1
-
- if self.tr_counter == 2:
- self.__start_processing = False
- self.tr_counter = 0
- self.data_counter = 0
- self.results.append(self.result)
- self.result = {}
-
- def handle_data(self, data):
- if not self.__start_processing:
- return
-
- if 'content' in self.result:
- self.result['content'] += data + ' '
- else:
- self.result['content'] = data + ' '
-
- self.data_counter += 1
-
-
-def request(query, params):
- index = 1 + (params['pageno'] - 1) * 30
- params['url'] = search_url.format(query=urlencode({'w': query}), index=index)
- return params
-
-
-def response(resp):
- parser = FilecropResultParser()
- parser.feed(resp.text)
-
- return parser.results
diff --git a/searx/engines/flickr.py b/searx/engines/flickr.py
index de17693..b0ddf62 100644
--- a/searx/engines/flickr.py
+++ b/searx/engines/flickr.py
@@ -1,20 +1,22 @@
-#!/usr/bin/env python
-
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Flickr (Images)
- @website https://www.flickr.com
- @provide-api yes (https://secure.flickr.com/services/api/flickr.photos.search.html)
-
- @using-api yes
- @results JSON
- @stable yes
- @parse url, title, thumbnail, img_src
More info on api-key : https://www.flickr.com/services/apps/create/
"""
from json import loads
-from searx.url_utils import urlencode
+from urllib.parse import urlencode
+
+# about
+about = {
+ "website": 'https://www.flickr.com',
+ "wikidata_id": 'Q103204',
+ "official_api_documentation": 'https://secure.flickr.com/services/api/flickr.photos.search.html',
+ "use_official_api": True,
+ "require_api_key": True,
+ "results": 'JSON',
+}
categories = ['images']
diff --git a/searx/engines/flickr_noapi.py b/searx/engines/flickr_noapi.py
index c8ee34f..a07aad5 100644
--- a/searx/engines/flickr_noapi.py
+++ b/searx/engines/flickr_noapi.py
@@ -1,26 +1,27 @@
-#!/usr/bin/env python
-
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
- Flickr (Images)
-
- @website https://www.flickr.com
- @provide-api yes (https://secure.flickr.com/services/api/flickr.photos.search.html)
-
- @using-api no
- @results HTML
- @stable no
- @parse url, title, thumbnail, img_src
+ Flickr (Images)
"""
from json import loads
from time import time
import re
+from urllib.parse import urlencode
from searx.engines import logger
-from searx.url_utils import urlencode
from searx.utils import ecma_unescape, html_to_text
logger = logger.getChild('flickr-noapi')
+# about
+about = {
+ "website": 'https://www.flickr.com',
+ "wikidata_id": 'Q103204',
+ "official_api_documentation": 'https://secure.flickr.com/services/api/flickr.photos.search.html',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+
categories = ['images']
url = 'https://www.flickr.com/'
@@ -117,14 +118,10 @@ def response(resp):
'img_format': img_format,
'template': 'images.html'
}
- try:
- result['author'] = author
- result['title'] = title
- result['content'] = content
- except:
- result['author'] = ''
- result['title'] = ''
- result['content'] = ''
+ result['author'] = author.encode(errors='ignore').decode()
+ result['source'] = source.encode(errors='ignore').decode()
+ result['title'] = title.encode(errors='ignore').decode()
+ result['content'] = content.encode(errors='ignore').decode()
results.append(result)
return results
diff --git a/searx/engines/framalibre.py b/searx/engines/framalibre.py
index f3441fa..42c08cf 100644
--- a/searx/engines/framalibre.py
+++ b/searx/engines/framalibre.py
@@ -1,22 +1,22 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
FramaLibre (It)
-
- @website https://framalibre.org/
- @provide-api no
-
- @using-api no
- @results HTML
- @stable no (HTML can change)
- @parse url, title, content, thumbnail, img_src
"""
-try:
- from cgi import escape
-except:
- from html import escape
+from html import escape
+from urllib.parse import urljoin, urlencode
from lxml import html
-from searx.engines.xpath import extract_text
-from searx.url_utils import urljoin, urlencode
+from searx.utils import extract_text
+
+# about
+about = {
+ "website": 'https://framalibre.org/',
+ "wikidata_id": 'Q30213882',
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['it']
diff --git a/searx/engines/freesound.py b/searx/engines/freesound.py
new file mode 100644
index 0000000..d256494
--- /dev/null
+++ b/searx/engines/freesound.py
@@ -0,0 +1,69 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+Freesound (Sound)
+"""
+
+from json import loads
+from urllib.parse import urlencode
+from datetime import datetime
+
+disabled = True
+api_key = ""
+
+# about
+about = {
+ "website": "https://freesound.org",
+ "wikidata_id": "Q835703",
+ "official_api_documentation": "https://freesound.org/docs/api",
+ "use_official_api": True,
+ "require_api_key": True,
+ "results": "JSON",
+}
+
+# engine dependent config
+paging = True
+
+# search url
+url = "https://freesound.org/apiv2/"
+search_url = (
+ url
+ + "search/text/?query={query}&page={page}&fields=name,url,download,created,description,type&token={api_key}"
+)
+
+embedded_url = '<audio controls><source src="{uri}" type="audio/{ftype}"></audio>'
+
+
+# search request
+def request(query, params):
+ params["url"] = search_url.format(
+ query=urlencode({"q": query}),
+ page=params["pageno"],
+ api_key=api_key,
+ )
+ return params
+
+
+# get response from search request
+def response(resp):
+ results = []
+ search_res = loads(resp.text)
+ # parse results
+ for result in search_res.get("results", []):
+ title = result["name"]
+ content = result["description"][:128]
+ publishedDate = datetime.fromisoformat(result["created"])
+ uri = result["download"]
+ embedded = embedded_url.format(uri=uri, ftype=result["type"])
+
+ # append result
+ results.append(
+ {
+ "url": result["url"],
+ "title": title,
+ "publishedDate": publishedDate,
+ "embedded": embedded,
+ "content": content,
+ }
+ )
+
+ return results
diff --git a/searx/engines/frinkiac.py b/searx/engines/frinkiac.py
index a67b42d..f43bb6e 100644
--- a/searx/engines/frinkiac.py
+++ b/searx/engines/frinkiac.py
@@ -1,16 +1,23 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
-Frinkiac (Images)
-
-@website https://www.frinkiac.com
-@provide-api no
-@using-api no
-@results JSON
-@stable no
-@parse url, title, img_src
+ Frinkiac (Images)
"""
from json import loads
-from searx.url_utils import urlencode
+from urllib.parse import urlencode
+
+# about
+about = {
+ "website": 'https://frinkiac.com',
+ "wikidata_id": 'Q24882614',
+ "official_api_documentation": {
+ 'url': None,
+ 'comment': 'see https://github.com/MitchellAW/CompuGlobal'
+ },
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'JSON',
+}
categories = ['images']
diff --git a/searx/engines/genius.py b/searx/engines/genius.py
index b265e9d..9f6a8cd 100644
--- a/searx/engines/genius.py
+++ b/searx/engines/genius.py
@@ -1,23 +1,25 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
-Genius
-
- @website https://www.genius.com/
- @provide-api yes (https://docs.genius.com/)
-
- @using-api yes
- @results JSON
- @stable yes
- @parse url, title, content, thumbnail, publishedDate
+ Genius
"""
from json import loads
-from searx.url_utils import urlencode
+from urllib.parse import urlencode
from datetime import datetime
+# about
+about = {
+ "website": 'https://genius.com/',
+ "wikidata_id": 'Q3419343',
+ "official_api_documentation": 'https://docs.genius.com/',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
# engine dependent config
categories = ['music']
paging = True
-language_support = False
page_size = 5
url = 'https://genius.com/api/'
@@ -36,7 +38,7 @@ def parse_lyric(hit):
try:
content = hit['highlights'][0]['value']
except:
- content = None
+ content = ''
timestamp = hit['result']['lyrics_updated_at']
result = {'url': hit['result']['url'],
'title': hit['result']['full_title'],
@@ -51,7 +53,7 @@ def parse_lyric(hit):
def parse_artist(hit):
result = {'url': hit['result']['url'],
'title': hit['result']['name'],
- 'content': None,
+ 'content': '',
'thumbnail': hit['result']['image_url'],
'template': 'videos.html'}
return result
@@ -61,6 +63,7 @@ def parse_album(hit):
result = {'url': hit['result']['url'],
'title': hit['result']['full_title'],
'thumbnail': hit['result']['cover_art_url'],
+ 'content': '',
# 'thumbnail': hit['result']['cover_art_thumbnail_url'],
'template': 'videos.html'}
try:
@@ -72,6 +75,7 @@ def parse_album(hit):
result.update({'content': 'Released: {}'.format(year)})
return result
+
parse = {'lyric': parse_lyric, 'song': parse_lyric, 'artist': parse_artist, 'album': parse_album}
@@ -80,9 +84,7 @@ def response(resp):
json = loads(resp.text)
hits = [hit for section in json['response']['sections'] for hit in section['hits']]
for hit in hits:
- try:
- func = parse[hit['type']]
- except KeyError:
- continue
- results.append(func(hit))
+ func = parse.get(hit['type'])
+ if func:
+ results.append(func(hit))
return results
diff --git a/searx/engines/gentoo.py b/searx/engines/gentoo.py
index a7a966c..325e132 100644
--- a/searx/engines/gentoo.py
+++ b/searx/engines/gentoo.py
@@ -1,23 +1,24 @@
-# -*- coding: utf-8 -*-
-
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Gentoo Wiki
-
- @website https://wiki.gentoo.org
- @provide-api yes
- @using-api no
- @results HTML
- @stable no (HTML can change)
- @parse url, title
"""
+from urllib.parse import urlencode, urljoin
from lxml import html
-from searx.engines.xpath import extract_text
-from searx.url_utils import urlencode, urljoin
+from searx.utils import extract_text
+
+# about
+about = {
+ "website": 'https://wiki.gentoo.org/',
+ "wikidata_id": 'Q1050637',
+ "official_api_documentation": 'https://wiki.gentoo.org/api.php',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['it']
-language_support = True
paging = True
base_url = 'https://wiki.gentoo.org'
@@ -90,7 +91,7 @@ def request(query, params):
# if our language is hosted on the main site, we need to add its name
# to the query in order to narrow the results to that language
if language in main_langs:
- query += b' (' + (main_langs[language]).encode('utf-8') + b')'
+ query += ' (' + main_langs[language] + ')'
# prepare the request parameters
query = urlencode({'search': query})
diff --git a/searx/engines/gigablast.py b/searx/engines/gigablast.py
index 2bb29a9..11d3ba7 100644
--- a/searx/engines/gigablast.py
+++ b/searx/engines/gigablast.py
@@ -1,129 +1,138 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Gigablast (Web)
-
- @website https://gigablast.com
- @provide-api yes (https://gigablast.com/api.html)
-
- @using-api yes
- @results XML
- @stable yes
- @parse url, title, content
"""
+# pylint: disable=missing-function-docstring, invalid-name
-import random
-from json import loads
-from time import time
-from lxml.html import fromstring
+import re
+from json import loads, JSONDecodeError
+from urllib.parse import urlencode
+from searx.exceptions import SearxEngineResponseException
from searx.poolrequests import get
-from searx.url_utils import urlencode
-from searx.utils import eval_xpath
+
+# about
+about = {
+ "website": 'https://www.gigablast.com',
+ "wikidata_id": 'Q3105449',
+ "official_api_documentation": 'https://gigablast.com/api.html',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
# engine dependent config
categories = ['general']
-paging = True
-number_of_results = 10
-language_support = True
+collections = 'main'
+search_type = ''
+fast = 0
+# gigablast's pagination is totally damaged, don't use it
+paging = False
safesearch = True
# search-url
-base_url = 'https://gigablast.com/'
-search_string = 'search?{query}'\
- '&n={number_of_results}'\
- '&c=main'\
- '&s={offset}'\
- '&format=json'\
- '&langcountry={lang}'\
- '&ff={safesearch}'\
- '&rand={rxikd}'
-# specific xpath variables
-results_xpath = '//response//result'
-url_xpath = './/url'
-title_xpath = './/title'
-content_xpath = './/sum'
-
-supported_languages_url = 'https://gigablast.com/search?&rxikd=1'
-
-extra_param = '' # gigablast requires a random extra parameter
-# which can be extracted from the source code of the search page
+base_url = 'https://gigablast.com'
+# ugly hack: gigablast requires a random extra parameter which can be extracted
+# from the source code of the gigablast HTTP client
+extra_param = ''
+extra_param_path='/search?c=main&qlangcountry=en-us&q=south&s=10'
-def parse_extra_param(text):
- global extra_param
- param_lines = [x for x in text.splitlines() if x.startswith('var url=') or x.startswith('url=url+')]
- extra_param = ''
- for l in param_lines:
- extra_param += l.split("'")[1]
- extra_param = extra_param.split('&')[-1]
+_wait_for_results_msg = 'Loading results takes too long. Please enable fast option in gigablast engine.'
+def parse_extra_param(text):
-def init(engine_settings=None):
- parse_extra_param(get('http://gigablast.com/search?c=main&qlangcountry=en-us&q=south&s=10').text)
+ # example:
+ #
+ # var uxrl='/search?c=main&qlangcountry=en-us&q=south&s=10&rand=1590740241635&n';
+ # uxrl=uxrl+'sab=730863287';
+ #
+ # extra_param --> "rand=1590740241635&nsab=730863287"
+
+ global extra_param # pylint: disable=global-statement
+ re_var= None
+ for line in text.splitlines():
+ if re_var is None and extra_param_path in line:
+ var = line.split("=")[0].split()[1] # e.g. var --> 'uxrl'
+ re_var = re.compile(var + "\\s*=\\s*" + var + "\\s*\\+\\s*'" + "(.*)" + "'(.*)")
+ extra_param = line.split("'")[1][len(extra_param_path):]
+ continue
+ if re_var is not None and re_var.search(line):
+ extra_param += re_var.search(line).group(1)
+ break
+
+def init(engine_settings=None): # pylint: disable=unused-argument
+ parse_extra_param(get(base_url + extra_param_path).text)
# do search-request
-def request(query, params):
- print("EXTRAPARAM:", extra_param)
- offset = (params['pageno'] - 1) * number_of_results
-
- if params['language'] == 'all':
- language = 'xx'
- else:
- language = params['language'].replace('-', '_').lower()
- if language.split('-')[0] != 'zh':
- language = language.split('-')[0]
+def request(query, params): # pylint: disable=unused-argument
+
+ # see API http://www.gigablast.com/api.html#/search
+ # Take into account, that the API has some quirks ..
+ query_args = {
+ 'c': collections,
+ 'format': 'json',
+ 'q': query,
+ 'dr': 1 ,
+ 'showgoodimages': 0,
+ 'fast': fast,
+ }
+
+ if search_type != '':
+ query_args['searchtype'] = search_type
+
+ if params['language'] and params['language'] != 'all':
+ query_args['qlangcountry'] = params['language']
+ query_args['qlang'] = params['language'].split('-')[0]
if params['safesearch'] >= 1:
- safesearch = 1
- else:
- safesearch = 0
+ query_args['ff'] = 1
- # rxieu is some kind of hash from the search query, but accepts random atm
- search_path = search_string.format(query=urlencode({'q': query}),
- offset=offset,
- number_of_results=number_of_results,
- lang=language,
- rxikd=int(time() * 1000),
- safesearch=safesearch)
-
- params['url'] = base_url + search_path + '&' + extra_param
+ search_url = '/search?' + urlencode(query_args)
+ params['url'] = base_url + search_url + extra_param
return params
-
# get response from search-request
def response(resp):
results = []
- # parse results
try:
response_json = loads(resp.text)
- except:
- parse_extra_param(resp.text)
- raise Exception('extra param expired, please reload')
+ except JSONDecodeError as e:
+ if 'Waiting for results' in resp.text:
+ raise SearxEngineResponseException(message=_wait_for_results_msg) # pylint: disable=raise-missing-from
+ raise e
+
for result in response_json['results']:
- # append result
- results.append({'url': result['url'],
- 'title': result['title'],
- 'content': result['sum']})
+ # see "Example JSON Output (&format=json)"
+ # at http://www.gigablast.com/api.html#/search
- # return results
- return results
+ # sort out meaningless result
+
+ title = result.get('title')
+ if len(title) < 2:
+ continue
+
+ url = result.get('url')
+ if len(url) < 9:
+ continue
+ content = result.get('sum')
+ if len(content) < 5:
+ continue
-# get supported languages from their site
-def _fetch_supported_languages(resp):
- supported_languages = []
- dom = fromstring(resp.text)
- links = eval_xpath(dom, '//span[@id="menu2"]/a')
- for link in links:
- href = eval_xpath(link, './@href')[0].split('lang%3A')
- if len(href) == 2:
- code = href[1].split('_')
- if len(code) == 2:
- code = code[0] + '-' + code[1].upper()
- else:
- code = code[0]
- supported_languages.append(code)
-
- return supported_languages
+ # extend fields
+
+ subtitle = result.get('title')
+ if len(subtitle) > 3 and subtitle != title:
+ title += " - " + subtitle
+
+ results.append(dict(
+ url = url
+ , title = title
+ , content = content
+ ))
+
+ return results
diff --git a/searx/engines/github.py b/searx/engines/github.py
index eaa00da..b68caa3 100644
--- a/searx/engines/github.py
+++ b/searx/engines/github.py
@@ -1,17 +1,20 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
- Github (It)
-
- @website https://github.com/
- @provide-api yes (https://developer.github.com/v3/)
-
- @using-api yes
- @results JSON
- @stable yes (using api)
- @parse url, title, content
+ Github (IT)
"""
from json import loads
-from searx.url_utils import urlencode
+from urllib.parse import urlencode
+
+# about
+about = {
+ "website": 'https://github.com/',
+ "wikidata_id": 'Q364',
+ "official_api_documentation": 'https://developer.github.com/v3/',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
# engine dependent config
categories = ['it']
diff --git a/searx/engines/google.py b/searx/engines/google.py
index eed3a04..1388550 100644
--- a/searx/engines/google.py
+++ b/searx/engines/google.py
@@ -1,391 +1,345 @@
-# Google (Web)
-#
-# @website https://www.google.com
-# @provide-api yes (https://developers.google.com/custom-search/)
-#
-# @using-api no
-# @results HTML
-# @stable no (HTML can change)
-# @parse url, title, content, suggestion
-
-import re
-from flask_babel import gettext
-from lxml import html, etree
-from searx.engines.xpath import extract_text, extract_url
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""Google (Web)
+
+For detailed description of the *REST-full* API see: `Query Parameter
+Definitions`_.
+
+.. _Query Parameter Definitions:
+ https://developers.google.com/custom-search/docs/xml_results#WebSearch_Query_Parameter_Definitions
+"""
+
+# pylint: disable=invalid-name, missing-function-docstring, too-many-branches
+
+from urllib.parse import urlencode, urlparse
+from random import random
+from lxml import html
from searx import logger
-from searx.url_utils import urlencode, urlparse, parse_qsl
-from searx.utils import match_language, eval_xpath
+from searx.utils import match_language, extract_text, eval_xpath, eval_xpath_list, eval_xpath_getindex
+from searx.exceptions import SearxEngineCaptchaException
logger = logger.getChild('google engine')
+# about
+about = {
+ "website": 'https://www.google.com',
+ "wikidata_id": 'Q9366',
+ "official_api_documentation": 'https://developers.google.com/custom-search/',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['general']
paging = True
-language_support = True
-use_locale_domain = True
time_range_support = True
+safesearch = True
+use_mobile_ui = False
+supported_languages_url = 'https://www.google.com/preferences?#languages'
# based on https://en.wikipedia.org/wiki/List_of_Google_domains and tests
-default_hostname = 'www.google.com'
-
-country_to_hostname = {
- 'BG': 'www.google.bg', # Bulgaria
- 'CZ': 'www.google.cz', # Czech Republic
- 'DE': 'www.google.de', # Germany
- 'DK': 'www.google.dk', # Denmark
- 'AT': 'www.google.at', # Austria
- 'CH': 'www.google.ch', # Switzerland
- 'GR': 'www.google.gr', # Greece
- 'AU': 'www.google.com.au', # Australia
- 'CA': 'www.google.ca', # Canada
- 'GB': 'www.google.co.uk', # United Kingdom
- 'ID': 'www.google.co.id', # Indonesia
- 'IE': 'www.google.ie', # Ireland
- 'IN': 'www.google.co.in', # India
- 'MY': 'www.google.com.my', # Malaysia
- 'NZ': 'www.google.co.nz', # New Zealand
- 'PH': 'www.google.com.ph', # Philippines
- 'SG': 'www.google.com.sg', # Singapore
- # 'US': 'www.google.us', # United States, redirect to .com
- 'ZA': 'www.google.co.za', # South Africa
- 'AR': 'www.google.com.ar', # Argentina
- 'CL': 'www.google.cl', # Chile
- 'ES': 'www.google.es', # Spain
- 'MX': 'www.google.com.mx', # Mexico
- 'EE': 'www.google.ee', # Estonia
- 'FI': 'www.google.fi', # Finland
- 'BE': 'www.google.be', # Belgium
- 'FR': 'www.google.fr', # France
- 'IL': 'www.google.co.il', # Israel
- 'HR': 'www.google.hr', # Croatia
- 'HU': 'www.google.hu', # Hungary
- 'IT': 'www.google.it', # Italy
- 'JP': 'www.google.co.jp', # Japan
- 'KR': 'www.google.co.kr', # South Korea
- 'LT': 'www.google.lt', # Lithuania
- 'LV': 'www.google.lv', # Latvia
- 'NO': 'www.google.no', # Norway
- 'NL': 'www.google.nl', # Netherlands
- 'PL': 'www.google.pl', # Poland
- 'BR': 'www.google.com.br', # Brazil
- 'PT': 'www.google.pt', # Portugal
- 'RO': 'www.google.ro', # Romania
- 'RU': 'www.google.ru', # Russia
- 'SK': 'www.google.sk', # Slovakia
- 'SI': 'www.google.si', # Slovenia
- 'SE': 'www.google.se', # Sweden
- 'TH': 'www.google.co.th', # Thailand
- 'TR': 'www.google.com.tr', # Turkey
- 'UA': 'www.google.com.ua', # Ukraine
- # 'CN': 'www.google.cn', # China, only from China ?
- 'HK': 'www.google.com.hk', # Hong Kong
- 'TW': 'www.google.com.tw' # Taiwan
+google_domains = {
+ 'BG': 'google.bg', # Bulgaria
+ 'CZ': 'google.cz', # Czech Republic
+ 'DE': 'google.de', # Germany
+ 'DK': 'google.dk', # Denmark
+ 'AT': 'google.at', # Austria
+ 'CH': 'google.ch', # Switzerland
+ 'GR': 'google.gr', # Greece
+ 'AU': 'google.com.au', # Australia
+ 'CA': 'google.ca', # Canada
+ 'GB': 'google.co.uk', # United Kingdom
+ 'ID': 'google.co.id', # Indonesia
+ 'IE': 'google.ie', # Ireland
+ 'IN': 'google.co.in', # India
+ 'MY': 'google.com.my', # Malaysia
+ 'NZ': 'google.co.nz', # New Zealand
+ 'PH': 'google.com.ph', # Philippines
+ 'SG': 'google.com.sg', # Singapore
+ 'US': 'google.com', # United States (google.us) redirects to .com
+ 'ZA': 'google.co.za', # South Africa
+ 'AR': 'google.com.ar', # Argentina
+ 'CL': 'google.cl', # Chile
+ 'ES': 'google.es', # Spain
+ 'MX': 'google.com.mx', # Mexico
+ 'EE': 'google.ee', # Estonia
+ 'FI': 'google.fi', # Finland
+ 'BE': 'google.be', # Belgium
+ 'FR': 'google.fr', # France
+ 'IL': 'google.co.il', # Israel
+ 'HR': 'google.hr', # Croatia
+ 'HU': 'google.hu', # Hungary
+ 'IT': 'google.it', # Italy
+ 'JP': 'google.co.jp', # Japan
+ 'KR': 'google.co.kr', # South Korea
+ 'LT': 'google.lt', # Lithuania
+ 'LV': 'google.lv', # Latvia
+ 'NO': 'google.no', # Norway
+ 'NL': 'google.nl', # Netherlands
+ 'PL': 'google.pl', # Poland
+ 'BR': 'google.com.br', # Brazil
+ 'PT': 'google.pt', # Portugal
+ 'RO': 'google.ro', # Romania
+ 'RU': 'google.ru', # Russia
+ 'SK': 'google.sk', # Slovakia
+ 'SI': 'google.si', # Slovenia
+ 'SE': 'google.se', # Sweden
+ 'TH': 'google.co.th', # Thailand
+ 'TR': 'google.com.tr', # Turkey
+ 'UA': 'google.com.ua', # Ukraine
+ 'CN': 'google.com.hk', # There is no google.cn, we use .com.hk for zh-CN
+ 'HK': 'google.com.hk', # Hong Kong
+ 'TW': 'google.com.tw' # Taiwan
}
-# osm
-url_map = 'https://www.openstreetmap.org/'\
- + '?lat={latitude}&lon={longitude}&zoom={zoom}&layers=M'
-
-# search-url
-search_path = '/search'
-search_url = ('https://{hostname}' +
- search_path +
- '?{query}&start={offset}&gws_rd=cr&gbv=1&lr={lang}&hl={lang_short}&ei=x')
-
-time_range_search = "&tbs=qdr:{range}"
-time_range_dict = {'day': 'd',
- 'week': 'w',
- 'month': 'm',
- 'year': 'y'}
-
-# other URLs
-map_hostname_start = 'maps.google.'
-maps_path = '/maps'
-redirect_path = '/url'
-images_path = '/images'
-supported_languages_url = 'https://www.google.com/preferences?#languages'
+time_range_dict = {
+ 'day': 'd',
+ 'week': 'w',
+ 'month': 'm',
+ 'year': 'y'
+}
+
+# Filter results. 0: None, 1: Moderate, 2: Strict
+filter_mapping = {
+ 0: 'off',
+ 1: 'medium',
+ 2: 'high'
+}
# specific xpath variables
-results_xpath = '//div[contains(@class, "ZINbbc")]'
-url_xpath = './/div[@class="kCrYT"][1]/a/@href'
-title_xpath = './/div[@class="kCrYT"][1]/a/div[1]'
-content_xpath = './/div[@class="kCrYT"][2]//div[contains(@class, "BNeawe")]//div[contains(@class, "BNeawe")]'
-suggestion_xpath = '//div[contains(@class, "ZINbbc")][last()]//div[@class="rVLSBd"]/a//div[contains(@class, "BNeawe")]'
-spelling_suggestion_xpath = '//div[@id="scc"]//a'
-
-# map : detail location
-map_address_xpath = './/div[@class="s"]//table//td[2]/span/text()'
-map_phone_xpath = './/div[@class="s"]//table//td[2]/span/span'
-map_website_url_xpath = 'h3[2]/a/@href'
-map_website_title_xpath = 'h3[2]'
-
-# map : near the location
-map_near = 'table[@class="ts"]//tr'
-map_near_title = './/h4'
-map_near_url = './/h4/a/@href'
-map_near_phone = './/span[@class="nobr"]'
-
-# images
-images_xpath = './/div/a'
-image_url_xpath = './@href'
-image_img_src_xpath = './img/@src'
-
-# property names
-# FIXME : no translation
-property_address = "Address"
-property_phone = "Phone number"
-
-
-# remove google-specific tracking-url
-def parse_url(url_string, google_hostname):
- # sanity check
- if url_string is None:
- return url_string
-
- # normal case
- parsed_url = urlparse(url_string)
- if (parsed_url.netloc in [google_hostname, '']
- and parsed_url.path == redirect_path):
- query = dict(parse_qsl(parsed_url.query))
- return query['q']
- else:
- return url_string
+# ------------------------
+# google results are grouped into <div class="jtfYYd ..." ../>
+results_xpath = '//div[contains(@class, "jtfYYd")]'
+results_xpath_mobile_ui = '//div[contains(@class, "g ")]'
-# returns extract_text on the first result selected by the xpath or None
-def extract_text_from_dom(result, xpath):
- r = eval_xpath(result, xpath)
- if len(r) > 0:
- return extract_text(r[0])
- return None
+# google *sections* are no usual *results*, we ignore them
+g_section_with_header = './g-section-with-header'
+# the title is a h3 tag relative to the result group
+title_xpath = './/h3[1]'
-# do search-request
-def request(query, params):
- offset = (params['pageno'] - 1) * 10
+# in the result group there is <div class="yuRUbf" ../> it's first child is a <a
+# href=...>
+href_xpath = './/div[@class="yuRUbf"]//a/@href'
- if params['language'] == 'all' or params['language'] == 'en-US':
- language = 'en-GB'
- else:
- language = match_language(params['language'], supported_languages, language_aliases)
+# in the result group there is <div class="VwiC3b ..." ../> containing the *content*
+content_xpath = './/div[contains(@class, "VwiC3b")]'
- language_array = language.split('-')
- if params['language'].find('-') > 0:
- country = params['language'].split('-')[1]
- elif len(language_array) == 2:
- country = language_array[1]
- else:
- country = 'US'
+# Suggestions are links placed in a *card-section*, we extract only the text
+# from the links not the links itself.
+suggestion_xpath = '//div[contains(@class, "card-section")]//a'
- url_lang = 'lang_' + language
+# Since google does *auto-correction* on the first query these are not really
+# *spelling suggestions*, we use them anyway.
+spelling_suggestion_xpath = '//div[@class="med"]/p/a'
- if use_locale_domain:
- google_hostname = country_to_hostname.get(country.upper(), default_hostname)
- else:
- google_hostname = default_hostname
-
- # original format: ID=3e2b6616cee08557:TM=5556667580:C=r:IP=4.1.12.5-:S=23ASdf0soFgF2d34dfgf-_22JJOmHdfgg
- params['cookies']['GOOGLE_ABUSE_EXEMPTION'] = 'x'
- params['url'] = search_url.format(offset=offset,
- query=urlencode({'q': query}),
- hostname=google_hostname,
- lang=url_lang,
- lang_short=language)
- if params['time_range'] in time_range_dict:
- params['url'] += time_range_search.format(range=time_range_dict[params['time_range']])
- params['headers']['Accept-Language'] = language + ',' + language + '-' + country
- params['headers']['Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
+def get_lang_info(params, lang_list, custom_aliases, supported_any_language):
+ ret_val = {}
- params['google_hostname'] = google_hostname
+ _lang = params['language']
+ _any_language = _lang.lower() == 'all'
+ if _any_language:
+ _lang = 'en-US'
- return params
+ language = match_language(_lang, lang_list, custom_aliases)
+ ret_val['language'] = language
+ # the requested language from params (en, en-US, de, de-AT, fr, fr-CA, ...)
+ _l = _lang.split('-')
-# get response from search-request
-def response(resp):
- results = []
+ # the country code (US, AT, CA)
+ if len(_l) == 2:
+ country = _l[1]
+ else:
+ country = _l[0].upper()
+ if country == 'EN':
+ country = 'US'
- # detect google sorry
- resp_url = urlparse(resp.url)
- if resp_url.netloc == 'sorry.google.com' or resp_url.path == '/sorry/IndexRedirect':
- raise RuntimeWarning('sorry.google.com')
+ ret_val['country'] = country
- if resp_url.path.startswith('/sorry'):
- raise RuntimeWarning(gettext('CAPTCHA required'))
+ # the combination (en-US, en-EN, de-DE, de-AU, fr-FR, fr-FR)
+ lang_country = '%s-%s' % (language, country)
- # which hostname ?
- google_hostname = resp.search_params.get('google_hostname')
- google_url = "https://" + google_hostname
+ # subdomain
+ ret_val['subdomain'] = 'www.' + google_domains.get(country.upper(), 'google.com')
- # convert the text to dom
- dom = html.fromstring(resp.text)
+ ret_val['params'] = {}
+ ret_val['headers'] = {}
- instant_answer = eval_xpath(dom, '//div[@id="_vBb"]//text()')
- if instant_answer:
- results.append({'answer': u' '.join(instant_answer)})
- try:
- results_num = int(eval_xpath(dom, '//div[@id="resultStats"]//text()')[0]
- .split()[1].replace(',', ''))
- results.append({'number_of_results': results_num})
- except:
- pass
+ if _any_language and supported_any_language:
+ # based on whoogle
+ ret_val['params']['source'] = 'lnt'
+ else:
+ # Accept-Language: fr-CH, fr;q=0.8, en;q=0.6, *;q=0.5
+ ret_val['headers']['Accept-Language'] = ','.join([
+ lang_country,
+ language + ';q=0.8,',
+ 'en;q=0.6',
+ '*;q=0.5',
+ ])
+
+ # lr parameter:
+ # https://developers.google.com/custom-search/docs/xml_results#lrsp
+ # Language Collection Values:
+ # https://developers.google.com/custom-search/docs/xml_results_appendices#languageCollections
+ ret_val['params']['lr'] = "lang_" + lang_country if lang_country in lang_list else language
+
+ ret_val['params']['hl'] = lang_country if lang_country in lang_list else language
+
+ # hl parameter:
+ # https://developers.google.com/custom-search/docs/xml_results#hlsp The
+ # Interface Language:
+ # https://developers.google.com/custom-search/docs/xml_results_appendices#interfaceLanguages
+ return ret_val
+
+def detect_google_sorry(resp):
+ resp_url = urlparse(resp.url)
+ if resp_url.netloc == 'sorry.google.com' or resp_url.path.startswith('/sorry'):
+ raise SearxEngineCaptchaException()
- # parse results
- for result in eval_xpath(dom, results_xpath):
- try:
- title = extract_text(eval_xpath(result, title_xpath)[0])
- url = parse_url(extract_url(eval_xpath(result, url_xpath), google_url), google_hostname)
- parsed_url = urlparse(url, google_hostname)
- # map result
- if parsed_url.netloc == google_hostname:
- # TODO fix inside links
- continue
- # if parsed_url.path.startswith(maps_path) or parsed_url.netloc.startswith(map_hostname_start):
- # print "yooooo"*30
- # x = eval_xpath(result, map_near)
- # if len(x) > 0:
- # # map : near the location
- # results = results + parse_map_near(parsed_url, x, google_hostname)
- # else:
- # # map : detail about a location
- # results = results + parse_map_detail(parsed_url, result, google_hostname)
- # # google news
- # elif parsed_url.path == search_path:
- # # skipping news results
- # pass
-
- # # images result
- # elif parsed_url.path == images_path:
- # # only thumbnail image provided,
- # # so skipping image results
- # # results = results + parse_images(result, google_hostname)
- # pass
-
- else:
- # normal result
- content = extract_text_from_dom(result, content_xpath)
- if content is None:
- continue
-
- # append result
- results.append({'url': url,
- 'title': title,
- 'content': content
- })
- except:
- logger.debug('result parse error in:\n%s', etree.tostring(result, pretty_print=True))
- continue
+def request(query, params):
+ """Google search request"""
- # parse suggestion
- for suggestion in eval_xpath(dom, suggestion_xpath):
- # append suggestion
- results.append({'suggestion': extract_text(suggestion)})
+ offset = (params['pageno'] - 1) * 10
- for correction in eval_xpath(dom, spelling_suggestion_xpath):
- results.append({'correction': extract_text(correction)})
+ lang_info = get_lang_info(
+ # pylint: disable=undefined-variable
+ params, supported_languages, language_aliases, True
+ )
+
+ additional_parameters = {}
+ if use_mobile_ui:
+ additional_parameters = {
+ 'async': 'use_ac:true,_fmt:pc',
+ }
+
+ # https://www.google.de/search?q=corona&hl=de&lr=lang_de&start=0&tbs=qdr%3Ad&safe=medium
+ query_url = 'https://' + lang_info['subdomain'] + '/search' + "?" + urlencode({
+ 'q': query,
+ **lang_info['params'],
+ 'ie': "utf8",
+ 'oe': "utf8",
+ 'start': offset,
+ 'filter': '0',
+ 'ucbcb': 1,
+ **additional_parameters,
+ })
- # return results
- return results
+ if params['time_range'] in time_range_dict:
+ query_url += '&' + urlencode({'tbs': 'qdr:' + time_range_dict[params['time_range']]})
+ if params['safesearch']:
+ query_url += '&' + urlencode({'safe': filter_mapping[params['safesearch']]})
+
+ logger.debug("query_url --> %s", query_url)
+ params['url'] = query_url
+
+ logger.debug("HTTP header Accept-Language --> %s", lang_info.get('Accept-Language'))
+ params['cookies']['CONSENT'] = "PENDING+" + str(random()*100)
+ params['headers'].update(lang_info['headers'])
+ if use_mobile_ui:
+ params['headers']['Accept'] = '*/*'
+ else:
+ params['headers']['Accept'] = (
+ 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
+ )
+ return params
-def parse_images(result, google_hostname):
- results = []
- for image in eval_xpath(result, images_xpath):
- url = parse_url(extract_text(eval_xpath(image, image_url_xpath)[0]), google_hostname)
- img_src = extract_text(eval_xpath(image, image_img_src_xpath)[0])
-
- # append result
- results.append({'url': url,
- 'title': '',
- 'content': '',
- 'img_src': img_src,
- 'template': 'images.html'
- })
- return results
+def response(resp):
+ """Get response from google's search request"""
+ detect_google_sorry(resp)
-def parse_map_near(parsed_url, x, google_hostname):
results = []
- for result in x:
- title = extract_text_from_dom(result, map_near_title)
- url = parse_url(extract_text_from_dom(result, map_near_url), google_hostname)
- attributes = []
- phone = extract_text_from_dom(result, map_near_phone)
- add_attributes(attributes, property_phone, phone, 'tel:' + phone)
- results.append({'title': title,
- 'url': url,
- 'content': attributes_to_html(attributes)
- })
+ # convert the text to dom
+ dom = html.fromstring(resp.text)
- return results
+ # results --> answer
+ answer_list = eval_xpath(dom, '//div[contains(@class, "LGOjhe")]')
+ if answer_list:
+ answer_list = [_.xpath("normalize-space()") for _ in answer_list]
+ results.append({'answer': ' '.join(answer_list)})
+ else:
+ logger.debug("did not find 'answer'")
+
+ # results --> number_of_results
+ if not use_mobile_ui:
+ try:
+ _txt = eval_xpath_getindex(dom, '//div[@id="result-stats"]//text()', 0)
+ _digit = ''.join([n for n in _txt if n.isdigit()])
+ number_of_results = int(_digit)
+ results.append({'number_of_results': number_of_results})
+ except Exception as e: # pylint: disable=broad-except
+ logger.debug("did not 'number_of_results'")
+ logger.error(e, exc_info=True)
+ # parse results
-def parse_map_detail(parsed_url, result, google_hostname):
- results = []
+ _results_xpath = results_xpath
+ if use_mobile_ui:
+ _results_xpath = results_xpath_mobile_ui
- # try to parse the geoloc
- m = re.search(r'@([0-9\.]+),([0-9\.]+),([0-9]+)', parsed_url.path)
- if m is None:
- m = re.search(r'll\=([0-9\.]+),([0-9\.]+)\&z\=([0-9]+)', parsed_url.query)
-
- if m is not None:
- # geoloc found (ignored)
- lon = float(m.group(2)) # noqa
- lat = float(m.group(1)) # noqa
- zoom = int(m.group(3)) # noqa
-
- # attributes
- attributes = []
- address = extract_text_from_dom(result, map_address_xpath)
- phone = extract_text_from_dom(result, map_phone_xpath)
- add_attributes(attributes, property_address, address, 'geo:' + str(lat) + ',' + str(lon))
- add_attributes(attributes, property_phone, phone, 'tel:' + phone)
-
- # title / content / url
- website_title = extract_text_from_dom(result, map_website_title_xpath)
- content = extract_text_from_dom(result, content_xpath)
- website_url = parse_url(extract_text_from_dom(result, map_website_url_xpath), google_hostname)
-
- # add a result if there is a website
- if website_url is not None:
- results.append({'title': website_title,
- 'content': (content + '<br />' if content is not None else '')
- + attributes_to_html(attributes),
- 'url': website_url
- })
+ for result in eval_xpath_list(dom, _results_xpath):
- return results
+ # google *sections*
+ if extract_text(eval_xpath(result, g_section_with_header)):
+ logger.debug("ingoring <g-section-with-header>")
+ continue
+ try:
+ title_tag = eval_xpath_getindex(result, title_xpath, 0, default=None)
+ if title_tag is None:
+ # this not one of the common google results *section*
+ logger.debug('ingoring item from the result_xpath list: missing title')
+ continue
+ title = extract_text(title_tag)
+ url = eval_xpath_getindex(result, href_xpath, 0, None)
+ if url is None:
+ continue
+ content = extract_text(eval_xpath_getindex(result, content_xpath, 0, default=None), allow_none=True)
+ if content is None:
+ logger.debug('ingoring item from the result_xpath list: missing content of title "%s"', title)
+ continue
-def add_attributes(attributes, name, value, url):
- if value is not None and len(value) > 0:
- attributes.append({'label': name, 'value': value, 'url': url})
+ logger.debug('add link to results: %s', title)
+ results.append({
+ 'url': url,
+ 'title': title,
+ 'content': content
+ })
-def attributes_to_html(attributes):
- retval = '<table class="table table-striped">'
- for a in attributes:
- value = a.get('value')
- if 'url' in a:
- value = '<a href="' + a.get('url') + '">' + value + '</a>'
- retval = retval + '<tr><th>' + a.get('label') + '</th><td>' + value + '</td></tr>'
- retval = retval + '</table>'
- return retval
+ except Exception as e: # pylint: disable=broad-except
+ logger.error(e, exc_info=True)
+ continue
+
+ # parse suggestion
+ for suggestion in eval_xpath_list(dom, suggestion_xpath):
+ # append suggestion
+ results.append({'suggestion': extract_text(suggestion)})
+
+ for correction in eval_xpath_list(dom, spelling_suggestion_xpath):
+ results.append({'correction': extract_text(correction)})
+
+ # return results
+ return results
# get supported languages from their site
def _fetch_supported_languages(resp):
- supported_languages = {}
+ ret_val = {}
dom = html.fromstring(resp.text)
- options = eval_xpath(dom, '//*[@id="langSec"]//input[@name="lr"]')
- for option in options:
- code = eval_xpath(option, './@value')[0].split('_')[-1]
- name = eval_xpath(option, './@data-name')[0].title()
- supported_languages[code] = {"name": name}
- return supported_languages
+ radio_buttons = eval_xpath_list(dom, '//*[@id="langSec"]//input[@name="lr"]')
+
+ for x in radio_buttons:
+ name = x.get("data-name")
+ code = x.get("value").split('_')[-1]
+ ret_val[code] = {"name": name}
+
+ return ret_val
diff --git a/searx/engines/google_images.py b/searx/engines/google_images.py
index 6369131..d9ff3f8 100644
--- a/searx/engines/google_images.py
+++ b/searx/engines/google_images.py
@@ -1,97 +1,211 @@
-"""
- Google (Images)
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""Google (Images)
+
+For detailed description of the *REST-full* API see: `Query Parameter
+Definitions`_.
+
+.. _admonition:: Content-Security-Policy (CSP)
- @website https://www.google.com
- @provide-api yes (https://developers.google.com/custom-search/)
+ This engine needs to allow images from the `data URLs`_ (prefixed with the
+ ``data:` scheme).::
- @using-api no
- @results HTML chunks with JSON inside
- @stable no
- @parse url, title, img_src
+ Header set Content-Security-Policy "img-src 'self' data: ;"
+
+.. _Query Parameter Definitions:
+ https://developers.google.com/custom-search/docs/xml_results#WebSearch_Query_Parameter_Definitions
+.. _data URLs:
+ https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
"""
-from datetime import date, timedelta
-from json import loads
+from urllib.parse import urlencode, unquote
from lxml import html
-from searx.url_utils import urlencode
+
+from searx import logger
+from searx.utils import (
+ eval_xpath,
+ eval_xpath_list,
+ eval_xpath_getindex,
+ extract_text,
+)
+
+from searx.engines.google import (
+ get_lang_info,
+ time_range_dict,
+ detect_google_sorry,
+)
+
+# pylint: disable=unused-import
+from searx.engines.google import (
+ supported_languages_url
+ , _fetch_supported_languages
+)
+# pylint: enable=unused-import
+
+logger = logger.getChild('google images')
+
+# about
+about = {
+ "website": 'https://images.google.com',
+ "wikidata_id": 'Q521550',
+ "official_api_documentation": 'https://developers.google.com/custom-search',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['images']
-paging = True
-safesearch = True
+paging = False
+use_locale_domain = True
time_range_support = True
-number_of_results = 100
+safesearch = True
-search_url = 'https://www.google.com/search'\
- '?{query}'\
- '&tbm=isch'\
- '&yv=2'\
- '&{search_options}'
-time_range_attr = "qdr:{range}"
-time_range_custom_attr = "cdr:1,cd_min:{start},cd_max{end}"
-time_range_dict = {'day': 'd',
- 'week': 'w',
- 'month': 'm'}
+filter_mapping = {
+ 0: 'images',
+ 1: 'active',
+ 2: 'active'
+}
+
+
+def scrap_out_thumbs(dom):
+ """Scrap out thumbnail data from <script> tags.
+ """
+ ret_val = {}
+ for script in eval_xpath(dom, '//script[contains(., "_setImgSrc(")]'):
+ _script = script.text
+ # _setImgSrc('0','data:image\/jpeg;base64,\/9j\/4AAQSkZJR ....');
+ _thumb_no, _img_data = _script[len("_setImgSrc("):-2].split(",", 1)
+ _thumb_no = _thumb_no.replace("'", "")
+ _img_data = _img_data.replace("'", "")
+ _img_data = _img_data.replace(r"\/", r"/")
+ ret_val[_thumb_no] = _img_data.replace(r"\x3d", "=")
+ return ret_val
+
+
+def scrap_img_by_id(script, data_id):
+ """Get full image URL by data-id in parent element
+ """
+ img_url = ''
+ _script = script.split('\n')
+ for i, line in enumerate(_script):
+ if 'gstatic.com/images' in line and data_id in line and i + 1 < len(_script):
+ url_line = _script[i + 1]
+ img_url = url_line.split('"')[1]
+ img_url = unquote(img_url.replace(r'\u00', r'%'))
+ return img_url
-# do search-request
def request(query, params):
- search_options = {
- 'ijn': params['pageno'] - 1,
- 'start': (params['pageno'] - 1) * number_of_results
- }
+ """Google-Video search request"""
+
+ lang_info = get_lang_info(
+ # pylint: disable=undefined-variable
+ params, supported_languages, language_aliases, False
+ )
+
+ query_url = 'https://' + lang_info['subdomain'] + '/search' + "?" + urlencode({
+ 'q': query,
+ 'tbm': "isch",
+ **lang_info['params'],
+ 'ie': "utf8",
+ 'oe': "utf8",
+ 'ucbcd': 1,
+ 'num': 30,
+ })
if params['time_range'] in time_range_dict:
- search_options['tbs'] = time_range_attr.format(range=time_range_dict[params['time_range']])
- elif params['time_range'] == 'year':
- now = date.today()
- then = now - timedelta(days=365)
- start = then.strftime('%m/%d/%Y')
- end = now.strftime('%m/%d/%Y')
- search_options['tbs'] = time_range_custom_attr.format(start=start, end=end)
-
- if safesearch and params['safesearch']:
- search_options['safe'] = 'on'
-
- params['url'] = search_url.format(query=urlencode({'q': query}),
- search_options=urlencode(search_options))
-
+ query_url += '&' + urlencode({'tbs': 'qdr:' + time_range_dict[params['time_range']]})
+ if params['safesearch']:
+ query_url += '&' + urlencode({'safe': filter_mapping[params['safesearch']]})
+
+ logger.debug("query_url --> %s", query_url)
+ params['url'] = query_url
+
+ logger.debug("HTTP header Accept-Language --> %s", lang_info.get('Accept-Language'))
+ params['cookies']['CONSENT'] = "YES+"
+ params['headers'].update(lang_info['headers'])
+ params['headers']['Accept'] = (
+ 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
+ )
return params
-# get response from search-request
def response(resp):
+ """Get response from google's search request"""
results = []
+ detect_google_sorry(resp)
+
+ # convert the text to dom
dom = html.fromstring(resp.text)
+ img_bas64_map = scrap_out_thumbs(dom)
+ img_src_script = eval_xpath_getindex(
+ dom, '//script[contains(., "AF_initDataCallback({key: ")]', 1).text
# parse results
- for result in dom.xpath('//div[contains(@class, "rg_meta")]/text()'):
-
- try:
- metadata = loads(result)
-
- img_format = metadata.get('ity', '')
- img_width = metadata.get('ow', '')
- img_height = metadata.get('oh', '')
- if img_width and img_height:
- img_format += " {0}x{1}".format(img_width, img_height)
-
- source = metadata.get('st', '')
- source_url = metadata.get('isu', '')
- if source_url:
- source += " ({0})".format(source_url)
-
- results.append({'url': metadata['ru'],
- 'title': metadata['pt'],
- 'content': metadata.get('s', ''),
- 'source': source,
- 'img_format': img_format,
- 'thumbnail_src': metadata['tu'],
- 'img_src': metadata['ou'],
- 'template': 'images.html'})
-
- except:
- continue
+ #
+ # root element::
+ # <div id="islmp" ..>
+ # result div per image::
+ # <div jsmodel="tTXmib"> / <div jsaction="..." data-id="..."
+ # The data-id matches to a item in a json-data structure in::
+ # <script nonce="I+vqelcy/01CKiBJi5Z1Ow">AF_initDataCallback({key: 'ds:1', ... data:function(){return [ ...
+ # In this structure the link to the origin PNG, JPG or whatever is given
+ # first link per image-div contains a <img> with the data-iid for bas64 encoded image data::
+ # <img class="rg_i Q4LuWd" data-iid="0"
+ # second link per image-div is the target link::
+ # <a class="VFACy kGQAp" href="https://en.wikipedia.org/wiki/The_Sacrament_of_the_Last_Supper">
+ # the second link also contains two div tags with the *description* and *publisher*::
+ # <div class="WGvvNb">The Sacrament of the Last Supper ...</div>
+ # <div class="fxgdke">en.wikipedia.org</div>
+
+ root = eval_xpath(dom, '//div[@id="islmp"]')
+ if not root:
+ logger.error("did not find root element id='islmp'")
+ return results
+
+ root = root[0]
+ for img_node in eval_xpath_list(root, './/img[contains(@class, "rg_i")]'):
+
+ img_alt = eval_xpath_getindex(img_node, '@alt', 0)
+
+ img_base64_id = eval_xpath(img_node, '@data-iid')
+ if img_base64_id:
+ img_base64_id = img_base64_id[0]
+ thumbnail_src = img_bas64_map[img_base64_id]
+ else:
+ thumbnail_src = eval_xpath(img_node, '@src')
+ if not thumbnail_src:
+ thumbnail_src = eval_xpath(img_node, '@data-src')
+ if thumbnail_src:
+ thumbnail_src = thumbnail_src[0]
+ else:
+ thumbnail_src = ''
+
+ link_node = eval_xpath_getindex(img_node, '../../../a[2]', 0)
+ url = eval_xpath_getindex(link_node, '@href', 0)
+
+ pub_nodes = eval_xpath(link_node, './div/div')
+ pub_descr = img_alt
+ pub_source = ''
+ if pub_nodes:
+ pub_descr = extract_text(pub_nodes[0])
+ pub_source = extract_text(pub_nodes[1])
+
+ img_src_id = eval_xpath_getindex(img_node, '../../../@data-id', 0)
+ src_url = scrap_img_by_id(img_src_script, img_src_id)
+ if not src_url:
+ src_url = thumbnail_src
+
+ results.append({
+ 'url': url,
+ 'title': img_alt,
+ 'content': pub_descr,
+ 'source': pub_source,
+ 'img_src': src_url,
+ # 'img_format': img_format,
+ 'thumbnail_src': thumbnail_src,
+ 'template': 'images.html'
+ })
return results
diff --git a/searx/engines/google_news.py b/searx/engines/google_news.py
index 9c837b4..ff39543 100644
--- a/searx/engines/google_news.py
+++ b/searx/engines/google_news.py
@@ -1,86 +1,200 @@
-"""
- Google (News)
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""Google (News)
+
+For detailed description of the *REST-full* API see: `Query Parameter
+Definitions`_. Not all parameters can be appied:
+
+- num_ : the number of search results is ignored
+- save_ : is ignored / Google-News results are always *SafeSearch*
- @website https://news.google.com
- @provide-api no
+.. _Query Parameter Definitions:
+ https://developers.google.com/custom-search/docs/xml_results#WebSearch_Query_Parameter_Definitions
+
+.. _num: https://developers.google.com/custom-search/docs/xml_results#numsp
+.. _save: https://developers.google.com/custom-search/docs/xml_results#safesp
- @using-api no
- @results HTML
- @stable no
- @parse url, title, content, publishedDate
"""
+# pylint: disable=invalid-name, missing-function-docstring
+
+import binascii
+import re
+from urllib.parse import urlencode
+from base64 import b64decode
+from random import random
from lxml import html
-from searx.engines.google import _fetch_supported_languages, supported_languages_url
-from searx.url_utils import urlencode
-from searx.utils import match_language
-# search-url
+from searx import logger
+from searx.utils import (
+ eval_xpath,
+ eval_xpath_list,
+ eval_xpath_getindex,
+ extract_text,
+)
+
+# pylint: disable=unused-import
+from searx.engines.google import (
+ supported_languages_url,
+ _fetch_supported_languages,
+)
+# pylint: enable=unused-import
+
+from searx.engines.google import (
+ get_lang_info,
+ detect_google_sorry,
+)
+
+# about
+about = {
+ "website": 'https://news.google.com',
+ "wikidata_id": 'Q12020',
+ "official_api_documentation": 'https://developers.google.com/custom-search',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+
+logger = logger.getChild('google news')
+
+# compared to other google engines google-news has a different time range
+# support. The time range is included in the search term.
+time_range_dict = {
+ 'day': 'when:1d',
+ 'week': 'when:7d',
+ 'month': 'when:1m',
+ 'year': 'when:1y',
+}
+
+# engine dependent config
+
categories = ['news']
-paging = True
-language_support = True
-safesearch = True
+paging = False
+use_locale_domain = True
time_range_support = True
-number_of_results = 10
-search_url = 'https://www.google.com/search'\
- '?{query}'\
- '&tbm=nws'\
- '&gws_rd=cr'\
- '&{search_options}'
-time_range_attr = "qdr:{range}"
-time_range_dict = {'day': 'd',
- 'week': 'w',
- 'month': 'm',
- 'year': 'y'}
+# Google-News results are always *SafeSearch*. Option 'safesearch' is set to
+# False here, otherwise checker will report safesearch-errors::
+#
+# safesearch : results are identitical for safesearch=0 and safesearch=2
+safesearch = False
-
-# do search-request
def request(query, params):
+ """Google-News search request"""
+
+ lang_info = get_lang_info(
+ # pylint: disable=undefined-variable
+ params, supported_languages, language_aliases, False
+ )
+
+ # google news has only one domain
+ lang_info['subdomain'] = 'news.google.com'
- search_options = {
- 'start': (params['pageno'] - 1) * number_of_results
- }
+ ceid = "%s:%s" % (lang_info['country'], lang_info['language'])
- if params['time_range'] in time_range_dict:
- search_options['tbs'] = time_range_attr.format(range=time_range_dict[params['time_range']])
+ # google news redirects en to en-US
+ if lang_info['params']['hl'] == 'en':
+ lang_info['params']['hl'] = 'en-US'
- if safesearch and params['safesearch']:
- search_options['safe'] = 'on'
+ # Very special to google-news compared to other google engines, the time
+ # range is included in the search term.
+ if params['time_range']:
+ query += ' ' + time_range_dict[params['time_range']]
- params['url'] = search_url.format(query=urlencode({'q': query}),
- search_options=urlencode(search_options))
+ query_url = 'https://' + lang_info['subdomain'] + '/search' + "?" + urlencode({
+ 'q': query,
+ **lang_info['params'],
+ 'ie': "utf8",
+ 'oe': "utf8",
+ 'ucbcb': 1,
+ 'gl': lang_info['country'],
+ }) + ('&ceid=%s' % ceid) # ceid includes a ':' character which must not be urlencoded
- if params['language'] != 'all':
- language = match_language(params['language'], supported_languages, language_aliases).split('-')[0]
- if language:
- params['url'] += '&lr=lang_' + language
+ logger.debug("query_url --> %s", query_url)
+ params['url'] = query_url
+
+ logger.debug("HTTP header Accept-Language --> %s", lang_info.get('Accept-Language'))
+
+ params['cookies']['CONSENT'] = "PENDING+" + str(random()*100)
+ params['headers'].update(lang_info['headers'])
+ params['headers']['Accept'] = (
+ 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
+ )
return params
-# get response from search-request
def response(resp):
+ """Get response from google's search request"""
results = []
+ detect_google_sorry(resp)
+
+ # convert the text to dom
dom = html.fromstring(resp.text)
- # parse results
- for result in dom.xpath('//div[@class="g"]|//div[@class="g _cy"]'):
- try:
- r = {
- 'url': result.xpath('.//a[@class="l lLrAF"]')[0].attrib.get("href"),
- 'title': ''.join(result.xpath('.//a[@class="l lLrAF"]//text()')),
- 'content': ''.join(result.xpath('.//div[@class="st"]//text()')),
- }
- except:
- continue
-
- imgs = result.xpath('.//img/@src')
- if len(imgs) and not imgs[0].startswith('data'):
- r['img_src'] = imgs[0]
-
- results.append(r)
+ for result in eval_xpath_list(dom, '//div[@class="xrnccd"]'):
+
+ # The first <a> tag in the <article> contains the link to the
+ # article The href attribute of the <a> is a google internal link,
+ # we can't use. The real link is hidden in the jslog attribute:
+ #
+ # <a ...
+ # jslog="95014; 4:https://www.cnn.com/.../index.html; track:click"
+ # href="./articles/CAIiENu3nGS...?hl=en-US&amp;gl=US&amp;ceid=US%3Aen"
+ # ... />
+
+ jslog = eval_xpath_getindex(result, './article/a/@jslog', 0)
+ url = re.findall('http[^;]*', jslog)
+ if url:
+ url = url[0]
+ else:
+ # The real URL is base64 encoded in the json attribute:
+ # jslog="95014; 5:W251bGwsbnVsbCxudW...giXQ==; track:click"
+ jslog = jslog.split(";")[1].split(':')[1].strip()
+ try:
+ padding = (4 -(len(jslog) % 4)) * "="
+ jslog = b64decode(jslog + padding)
+ except binascii.Error:
+ # URL cant be read, skip this result
+ continue
+
+ # now we have : b'[null, ... null,"https://www.cnn.com/.../index.html"]'
+ url = re.findall('http[^;"]*', str(jslog))[0]
+
+ # the first <h3> tag in the <article> contains the title of the link
+ title = extract_text(eval_xpath(result, './article/h3[1]'))
+
+ # the first <div> tag in the <article> contains the content of the link
+ content = extract_text(eval_xpath(result, './article/div[1]'))
+
+ # the second <div> tag contains origin publisher and the publishing date
+
+ pub_date = extract_text(eval_xpath(result, './article/div[2]//time'))
+ pub_origin = extract_text(eval_xpath(result, './article/div[2]//a'))
+
+ pub_info = []
+ if pub_origin:
+ pub_info.append(pub_origin)
+ if pub_date:
+ # The pub_date is mostly a string like 'yesertday', not a real
+ # timezone date or time. Therefore we can't use publishedDate.
+ pub_info.append(pub_date)
+ pub_info = ', '.join(pub_info)
+ if pub_info:
+ content = pub_info + ': ' + content
+
+ # The image URL is located in a preceding sibling <img> tag, e.g.:
+ # "https://lh3.googleusercontent.com/DjhQh7DMszk.....z=-p-h100-w100"
+ # These URL are long but not personalized (double checked via tor).
+
+ img_src = extract_text(result.xpath('preceding-sibling::a/figure/img/@src'))
+
+ results.append({
+ 'url': url,
+ 'title': title,
+ 'content': content,
+ 'img_src': img_src,
+ })
# return results
return results
diff --git a/searx/engines/google_play_apps.py b/searx/engines/google_play_apps.py
new file mode 100644
index 0000000..304ff60
--- /dev/null
+++ b/searx/engines/google_play_apps.py
@@ -0,0 +1,69 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Google Play Apps
+"""
+
+from urllib.parse import urlencode
+from lxml import html
+from searx.utils import (
+ eval_xpath,
+ extract_url,
+ extract_text,
+ eval_xpath_list,
+ eval_xpath_getindex,
+)
+
+about = {
+ "website": "https://play.google.com/",
+ "wikidata_id": "Q79576",
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": "HTML",
+}
+
+categories = ["files", "apps"]
+search_url = "https://play.google.com/store/search?{query}&c=apps&ucbcb=1"
+
+
+def request(query, params):
+ params["url"] = search_url.format(query=urlencode({"q": query}))
+ params['cookies']['CONSENT'] = "YES+"
+
+ return params
+
+
+def response(resp):
+ results = []
+
+ dom = html.fromstring(resp.text)
+
+ if eval_xpath(dom, '//div[@class="v6DsQb"]'):
+ return []
+
+ spot = eval_xpath_getindex(dom, '//div[@class="ipRz4"]', 0, None)
+ if spot is not None:
+ url = extract_url(eval_xpath(spot, './a[@class="Qfxief"]/@href'), search_url)
+ title = extract_text(eval_xpath(spot, './/div[@class="vWM94c"]'))
+ content = extract_text(eval_xpath(spot, './/div[@class="LbQbAe"]'))
+ img = extract_text(eval_xpath(spot, './/img[@class="T75of bzqKMd"]/@src'))
+
+ results.append({"url": url, "title": title, "content": content, "img_src": img})
+
+ more = eval_xpath_list(dom, '//c-wiz[@jsrenderer="RBsfwb"]//div[@role="listitem"]', min_len=1)
+ for result in more:
+ url = extract_url(eval_xpath(result, ".//a/@href"), search_url)
+ title = extract_text(eval_xpath(result, './/span[@class="DdYX5"]'))
+ content = extract_text(eval_xpath(result, './/span[@class="wMUdtb"]'))
+ img = extract_text(
+ eval_xpath(
+ result,
+ './/img[@class="T75of stzEZd" or @class="T75of etjhNc Q8CSx "]/@src',
+ )
+ )
+
+ results.append({"url": url, "title": title, "content": content, "img_src": img})
+
+ for suggestion in eval_xpath_list(dom, '//c-wiz[@jsrenderer="qyd4Kb"]//div[@class="ULeU3b neq64b"]'):
+ results.append({"suggestion": extract_text(eval_xpath(suggestion, './/div[@class="Epkrse "]'))})
+
+ return results
diff --git a/searx/engines/google_scholar.py b/searx/engines/google_scholar.py
new file mode 100644
index 0000000..2978d40
--- /dev/null
+++ b/searx/engines/google_scholar.py
@@ -0,0 +1,158 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""Google (Scholar)
+
+For detailed description of the *REST-full* API see: `Query Parameter
+Definitions`_.
+
+.. _Query Parameter Definitions:
+ https://developers.google.com/custom-search/docs/xml_results#WebSearch_Query_Parameter_Definitions
+"""
+
+# pylint: disable=invalid-name, missing-function-docstring
+
+from urllib.parse import urlencode
+from datetime import datetime
+from random import random
+from lxml import html
+from searx import logger
+
+from searx.utils import (
+ eval_xpath,
+ eval_xpath_list,
+ extract_text,
+)
+
+from searx.engines.google import (
+ get_lang_info,
+ time_range_dict,
+ detect_google_sorry,
+)
+
+# pylint: disable=unused-import
+from searx.engines.google import (
+ supported_languages_url,
+ _fetch_supported_languages,
+)
+# pylint: enable=unused-import
+
+# about
+about = {
+ "website": 'https://scholar.google.com',
+ "wikidata_id": 'Q494817',
+ "official_api_documentation": 'https://developers.google.com/custom-search',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+
+# engine dependent config
+categories = ['science']
+paging = True
+language_support = True
+use_locale_domain = True
+time_range_support = True
+safesearch = False
+
+logger = logger.getChild('google scholar')
+
+def time_range_url(params):
+ """Returns a URL query component for a google-Scholar time range based on
+ ``params['time_range']``. Google-Scholar does only support ranges in years.
+ To have any effect, all the Searx ranges (*day*, *week*, *month*, *year*)
+ are mapped to *year*. If no range is set, an empty string is returned.
+ Example::
+
+ &as_ylo=2019
+ """
+ # as_ylo=2016&as_yhi=2019
+ ret_val = ''
+ if params['time_range'] in time_range_dict:
+ ret_val= urlencode({'as_ylo': datetime.now().year -1 })
+ return '&' + ret_val
+
+
+def request(query, params):
+ """Google-Scholar search request"""
+
+ offset = (params['pageno'] - 1) * 10
+ lang_info = get_lang_info(
+ # pylint: disable=undefined-variable
+
+
+ # params, {}, language_aliases
+
+ params, supported_languages, language_aliases, False
+ )
+ # subdomain is: scholar.google.xy
+ lang_info['subdomain'] = lang_info['subdomain'].replace("www.", "scholar.")
+
+ query_url = (
+ 'https://'
+ + lang_info['subdomain']
+ + '/scholar'
+ + "?"
+ + urlencode({'q': query, **lang_info['params'], 'ie': "utf8", 'oe': "utf8", 'start': offset, 'ucbcb': 1})
+ )
+
+ query_url += time_range_url(params)
+
+ logger.debug("query_url --> %s", query_url)
+ params['url'] = query_url
+
+ logger.debug("HTTP header Accept-Language --> %s", lang_info.get('Accept-Language'))
+ params['cookies']['CONSENT'] = "PENDING+" + str(random()*100)
+ params['headers'].update(lang_info['headers'])
+ params['headers']['Accept'] = (
+ 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
+ )
+
+ #params['google_subdomain'] = subdomain
+ return params
+
+def response(resp):
+ """Get response from google's search request"""
+ results = []
+
+ detect_google_sorry(resp)
+
+ # which subdomain ?
+ # subdomain = resp.search_params.get('google_subdomain')
+
+ # convert the text to dom
+ dom = html.fromstring(resp.text)
+
+ # parse results
+ for result in eval_xpath_list(dom, '//div[@class="gs_ri"]'):
+
+ title = extract_text(eval_xpath(result, './h3[1]//a'))
+
+ if not title:
+ # this is a [ZITATION] block
+ continue
+
+ url = eval_xpath(result, './h3[1]//a/@href')[0]
+ content = extract_text(eval_xpath(result, './div[@class="gs_rs"]')) or ''
+
+ pub_info = extract_text(eval_xpath(result, './div[@class="gs_a"]'))
+ if pub_info:
+ content += "[%s]" % pub_info
+
+ pub_type = extract_text(eval_xpath(result, './/span[@class="gs_ct1"]'))
+ if pub_type:
+ title = title + " " + pub_type
+
+ results.append({
+ 'url': url,
+ 'title': title,
+ 'content': content,
+ })
+
+ # parse suggestion
+ for suggestion in eval_xpath(dom, '//div[contains(@class, "gs_qsuggest_wrap")]//li//a'):
+ # append suggestion
+ results.append({'suggestion': extract_text(suggestion)})
+
+ for correction in eval_xpath(dom, '//div[@class="gs_r gs_pda"]/a'):
+ results.append({'correction': extract_text(correction)})
+
+ return results
diff --git a/searx/engines/google_videos.py b/searx/engines/google_videos.py
index fd6b2e3..8665181 100644
--- a/searx/engines/google_videos.py
+++ b/searx/engines/google_videos.py
@@ -1,97 +1,204 @@
-"""
- Google (Videos)
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""Google (Video)
+
+For detailed description of the *REST-full* API see: `Query Parameter
+Definitions`_. Not all parameters can be appied.
+
+.. _admonition:: Content-Security-Policy (CSP)
- @website https://www.google.com
- @provide-api yes (https://developers.google.com/custom-search/)
+ This engine needs to allow images from the `data URLs`_ (prefixed with the
+ ``data:` scheme).::
+
+ Header set Content-Security-Policy "img-src 'self' data: ;"
+
+.. _Query Parameter Definitions:
+ https://developers.google.com/custom-search/docs/xml_results#WebSearch_Query_Parameter_Definitions
+.. _data URLs:
+ https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
- @using-api no
- @results HTML
- @stable no
- @parse url, title, content, thumbnail
"""
-from datetime import date, timedelta
-from json import loads
-from lxml import html
-from searx.engines.xpath import extract_text
-from searx.url_utils import urlencode
+# pylint: disable=invalid-name, missing-function-docstring
+
import re
+from urllib.parse import urlencode
+from random import random
+from lxml import html
+
+from searx import logger
+from searx.utils import (
+ eval_xpath,
+ eval_xpath_list,
+ eval_xpath_getindex,
+ extract_text,
+)
+
+from searx.engines.google import (
+ get_lang_info,
+ time_range_dict,
+ filter_mapping,
+ results_xpath,
+ g_section_with_header,
+ title_xpath,
+ href_xpath,
+ content_xpath,
+ suggestion_xpath,
+ spelling_suggestion_xpath,
+ detect_google_sorry,
+)
+
+# pylint: disable=unused-import
+from searx.engines.google import (
+ supported_languages_url
+ , _fetch_supported_languages
+)
+# pylint: enable=unused-import
+
+# about
+about = {
+ "website": 'https://www.google.com',
+ "wikidata_id": 'Q219885',
+ "official_api_documentation": 'https://developers.google.com/custom-search',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+
+logger = logger.getChild('google video')
# engine dependent config
+
categories = ['videos']
-paging = True
-safesearch = True
+paging = False
+language_support = True
+use_locale_domain = True
time_range_support = True
-number_of_results = 10
+safesearch = True
-search_url = 'https://www.google.com/search'\
- '?q={query}'\
- '&tbm=vid'\
- '&{search_options}'
-time_range_attr = "qdr:{range}"
-time_range_custom_attr = "cdr:1,cd_min:{start},cd_max{end}"
-time_range_dict = {'day': 'd',
- 'week': 'w',
- 'month': 'm'}
+RE_CACHE = {}
+def _re(regexpr):
+ """returns compiled regular expression"""
+ RE_CACHE[regexpr] = RE_CACHE.get(regexpr, re.compile(regexpr))
+ return RE_CACHE[regexpr]
-# do search-request
-def request(query, params):
- search_options = {
- 'ijn': params['pageno'] - 1,
- 'start': (params['pageno'] - 1) * number_of_results
- }
+def scrap_out_thumbs(dom):
+ """Scrap out thumbnail data from <script> tags.
+ """
+ ret_val = {}
+ thumb_name = 'vidthumb'
- if params['time_range'] in time_range_dict:
- search_options['tbs'] = time_range_attr.format(range=time_range_dict[params['time_range']])
- elif params['time_range'] == 'year':
- now = date.today()
- then = now - timedelta(days=365)
- start = then.strftime('%m/%d/%Y')
- end = now.strftime('%m/%d/%Y')
- search_options['tbs'] = time_range_custom_attr.format(start=start, end=end)
+ for script in eval_xpath_list(dom, '//script[contains(., "_setImagesSrc")]'):
+ _script = script.text
+
+ # var s='data:image/jpeg;base64, ...'
+ _imgdata = _re("s='([^']*)").findall( _script)
+ if not _imgdata:
+ continue
+
+ # var ii=['vidthumb4','vidthumb7']
+ for _vidthumb in _re(r"(%s\d+)" % thumb_name).findall(_script):
+ # At least the equal sign in the URL needs to be decoded
+ ret_val[_vidthumb] = _imgdata[0].replace(r"\x3d", "=")
- if safesearch and params['safesearch']:
- search_options['safe'] = 'on'
+ # {google.ldidly=-1;google.ldi={"vidthumb8":"https://...
+ for script in eval_xpath_list(dom, '//script[contains(., "google.ldi={")]'):
+ _script = script.text
+ for key_val in _re(r'"%s\d+\":\"[^\"]*"' % thumb_name).findall( _script) :
+ match = _re(r'"(%s\d+)":"(.*)"' % thumb_name).search(key_val)
+ if match:
+ # At least the equal sign in the URL needs to be decoded
+ ret_val[match.group(1)] = match.group(2).replace(r"\u003d", "=")
- params['url'] = search_url.format(query=urlencode({'q': query}),
- search_options=urlencode(search_options))
+ logger.debug("found %s imgdata for: %s", thumb_name, ret_val.keys())
+ return ret_val
+
+def request(query, params):
+ """Google-Video search request"""
+
+ lang_info = get_lang_info(
+ # pylint: disable=undefined-variable
+ params, supported_languages, language_aliases, False
+ )
+
+ query_url = 'https://' + lang_info['subdomain'] + '/search' + "?" + urlencode({
+ 'q': query,
+ 'tbm': "vid",
+ **lang_info['params'],
+ 'ucbcb': 1,
+ 'ie': "utf8",
+ 'oe': "utf8",
+ })
+
+ if params['time_range'] in time_range_dict:
+ query_url += '&' + urlencode({'tbs': 'qdr:' + time_range_dict[params['time_range']]})
+ if params['safesearch']:
+ query_url += '&' + urlencode({'safe': filter_mapping[params['safesearch']]})
+
+ logger.debug("query_url --> %s", query_url)
+ params['url'] = query_url
+
+ logger.debug("HTTP header Accept-Language --> %s", lang_info.get('Accept-Language'))
+ params['cookies']['CONSENT'] = "PENDING+" + str(random()*100)
+ params['headers'].update(lang_info['headers'])
+ params['headers']['Accept'] = (
+ 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
+ )
return params
-# get response from search-request
def response(resp):
+ """Get response from google's search request"""
results = []
+ detect_google_sorry(resp)
+
+ # convert the text to dom
dom = html.fromstring(resp.text)
+ vidthumb_imgdata = scrap_out_thumbs(dom)
# parse results
- for result in dom.xpath('//div[@class="g"]'):
-
- title = extract_text(result.xpath('.//h3'))
- url = result.xpath('.//div[@class="r"]/a/@href')[0]
- content = extract_text(result.xpath('.//span[@class="st"]'))
-
- # get thumbnails
- script = str(dom.xpath('//script[contains(., "_setImagesSrc")]')[0].text)
- ids = result.xpath('.//div[@class="s"]//img/@id')
- if len(ids) > 0:
- thumbnails_data = \
- re.findall('s=\'(.*?)(?:\\\\[a-z,1-9,\\\\]+\'|\')\;var ii=\[(?:|[\'vidthumb\d+\',]+)\'' + ids[0],
- script)
- tmp = []
- if len(thumbnails_data) != 0:
- tmp = re.findall('(data:image/jpeg;base64,[a-z,A-Z,0-9,/,\+]+)', thumbnails_data[0])
- thumbnail = ''
- if len(tmp) != 0:
- thumbnail = tmp[-1]
-
- # append result
- results.append({'url': url,
- 'title': title,
- 'content': content,
- 'thumbnail': thumbnail,
- 'template': 'videos.html'})
+ for result in eval_xpath_list(dom, results_xpath):
+
+ # google *sections*
+ if extract_text(eval_xpath(result, g_section_with_header)):
+ logger.debug("ingoring <g-section-with-header>")
+ continue
+
+ title = extract_text(eval_xpath_getindex(result, title_xpath, 0))
+ url = eval_xpath_getindex(result, href_xpath, 0)
+ c_node = eval_xpath_getindex(result, content_xpath, 0)
+
+ # <img id="vidthumb1" ...>
+ img_id = eval_xpath_getindex(c_node, './div[1]//a/g-img/img/@id', 0, default=None)
+ if img_id is None:
+ continue
+ img_src = vidthumb_imgdata.get(img_id, None)
+ if not img_src:
+ logger.error("no vidthumb imgdata for: %s" % img_id)
+ img_src = eval_xpath_getindex(c_node, './div[1]//a/g-img/img/@src', 0)
+
+ length = extract_text(eval_xpath(c_node, './/div[1]//a/div[3]'))
+ content = extract_text(eval_xpath(c_node, './/div[2]/span'))
+ pub_info = extract_text(eval_xpath(c_node, './/div[2]/div'))
+
+ results.append({
+ 'url': url,
+ 'title': title,
+ 'content': content,
+ 'length': length,
+ 'author': pub_info,
+ 'thumbnail': img_src,
+ 'template': 'videos.html',
+ })
+
+ # parse suggestion
+ for suggestion in eval_xpath_list(dom, suggestion_xpath):
+ # append suggestion
+ results.append({'suggestion': extract_text(suggestion)})
+
+ for correction in eval_xpath_list(dom, spelling_suggestion_xpath):
+ results.append({'correction': extract_text(correction)})
return results
diff --git a/searx/engines/imdb.py b/searx/engines/imdb.py
new file mode 100644
index 0000000..e1e2201
--- /dev/null
+++ b/searx/engines/imdb.py
@@ -0,0 +1,55 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+"""
+IMDB - Internet Movie Database
+Retrieves results from a basic search
+Advanced search options are not supported
+"""
+
+import json
+
+about = {
+ "website": 'https://imdb.com/',
+ "wikidata_id": 'Q37312',
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+
+categories = ['general']
+paging = False
+base_url = 'https://imdb.com/{category}/{id}'
+suggestion_url = "https://v2.sg.media-imdb.com/suggestion/{letter}/{query}.json"
+search_categories = {
+ "nm": "name",
+ "tt": "title",
+ "kw": "keyword",
+ "co": "company",
+ "ep": "episode"
+}
+
+
+def request(query, params):
+ query = query.replace(" ", "_").lower()
+ params['url'] = suggestion_url.format(letter=query[0], query=query)
+ return params
+
+
+def response(resp):
+ suggestions = json.loads(resp.text)
+ results = []
+ for entry in suggestions['d']:
+ content = ""
+ if entry['id'][:2] in search_categories:
+ href = base_url.format(category=search_categories[entry['id'][:2]], id=entry['id'])
+ if 'y' in entry:
+ content += str(entry['y']) + " - "
+ if 's' in entry:
+ content += entry['s']
+ results.append({
+ "title": entry['l'],
+ "url": href,
+ "content": content
+ })
+ return results
diff --git a/searx/engines/ina.py b/searx/engines/ina.py
index ea50964..efcc03e 100644
--- a/searx/engines/ina.py
+++ b/searx/engines/ina.py
@@ -1,26 +1,24 @@
-# INA (Videos)
-#
-# @website https://www.ina.fr/
-# @provide-api no
-#
-# @using-api no
-# @results HTML (using search portal)
-# @stable no (HTML can change)
-# @parse url, title, content, publishedDate, thumbnail
-#
-# @todo set content-parameter with correct data
-# @todo embedded (needs some md5 from video page)
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ INA (Videos)
+"""
from json import loads
+from html import unescape
+from urllib.parse import urlencode
from lxml import html
from dateutil import parser
-from searx.engines.xpath import extract_text
-from searx.url_utils import urlencode
+from searx.utils import extract_text
-try:
- from HTMLParser import HTMLParser
-except:
- from html.parser import HTMLParser
+# about
+about = {
+ "website": 'https://www.ina.fr/',
+ "wikidata_id": 'Q1665109',
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['videos']
@@ -55,16 +53,13 @@ def response(resp):
# we get html in a JSON container...
response = loads(resp.text)
- if "content" not in response:
- return []
- dom = html.fromstring(response["content"])
- p = HTMLParser()
+ dom = html.fromstring(response)
# parse results
for result in dom.xpath(results_xpath):
videoid = result.xpath(url_xpath)[0]
url = base_url + videoid
- title = p.unescape(extract_text(result.xpath(title_xpath)))
+ title = unescape(extract_text(result.xpath(title_xpath)))
try:
thumbnail = extract_text(result.xpath(thumbnail_xpath)[0])
except:
diff --git a/searx/engines/invidious.py b/searx/engines/invidious.py
index 8d81691..5d0b00e 100644
--- a/searx/engines/invidious.py
+++ b/searx/engines/invidious.py
@@ -1,36 +1,51 @@
-# Invidious (Videos)
-#
-# @website https://invidio.us/
-# @provide-api yes (https://github.com/omarroth/invidious/wiki/API)
-#
-# @using-api yes
-# @results JSON
-# @stable yes
-# @parse url, title, content, publishedDate, thumbnail, embedded
-
-from searx.url_utils import quote_plus
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Invidious (Videos)
+"""
+
+from urllib.parse import quote_plus
from dateutil import parser
import time
+import random
+
+# about
+about = {
+ "website": 'https://api.invidious.io/',
+ "wikidata_id": 'Q79343316',
+ "official_api_documentation": 'https://github.com/iv-org/documentation/blob/master/API.md',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
# engine dependent config
categories = ["videos", "music"]
paging = True
-language_support = True
time_range_support = True
+
# search-url
-base_url = "https://invidio.us/"
+
+base_url = ''
+base_url_rand = ''
# do search-request
def request(query, params):
+ global base_url_rand
time_range_dict = {
"day": "today",
"week": "week",
"month": "month",
"year": "year",
}
- search_url = base_url + "api/v1/search?q={query}"
+
+ if isinstance(base_url, list):
+ base_url_rand = random.choice(base_url)
+ else:
+ base_url_rand = base_url
+
+ search_url = base_url_rand + "api/v1/search?q={query}"
params["url"] = search_url.format(
query=quote_plus(query)
) + "&page={pageno}".format(pageno=params["pageno"])
@@ -56,12 +71,12 @@ def response(resp):
embedded_url = (
'<iframe width="540" height="304" '
+ 'data-src="'
- + base_url
+ + base_url_rand
+ 'embed/{videoid}" '
+ 'frameborder="0" allowfullscreen></iframe>'
)
- base_invidious_url = base_url + "watch?v="
+ base_invidious_url = base_url_rand + "watch?v="
for result in search_results:
rtype = result.get("type", None)
@@ -84,13 +99,20 @@ def response(resp):
publishedDate = parser.parse(
time.ctime(result.get("published", 0))
)
+ length = time.gmtime(result.get("lengthSeconds"))
+ if length.tm_hour:
+ length = time.strftime("%H:%M:%S", length)
+ else:
+ length = time.strftime("%M:%S", length)
results.append(
{
"url": url,
"title": result.get("title", ""),
"content": result.get("description", ""),
+ 'length': length,
"template": "videos.html",
+ "author": result.get("author"),
"publishedDate": publishedDate,
"embedded": embedded,
"thumbnail": thumbnail,
diff --git a/searx/engines/json_engine.py b/searx/engines/json_engine.py
index 785b0c4..8a04d34 100644
--- a/searx/engines/json_engine.py
+++ b/searx/engines/json_engine.py
@@ -1,16 +1,17 @@
-from collections import Iterable
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+from collections.abc import Iterable
from json import loads
-from sys import version_info
-from searx.url_utils import urlencode
-from searx.utils import to_string
+from urllib.parse import urlencode
+from searx.utils import to_string, html_to_text
-if version_info[0] == 3:
- unicode = str
search_url = None
url_query = None
content_query = None
title_query = None
+content_html_to_text = False
+title_html_to_text = False
paging = False
suggestion_query = ''
results_query = ''
@@ -37,8 +38,6 @@ def iterate(iterable):
def is_iterable(obj):
if type(obj) == str:
return False
- if type(obj) == unicode:
- return False
return isinstance(obj, Iterable)
@@ -95,9 +94,17 @@ def request(query, params):
return params
+def identity(arg):
+ return arg
+
+
def response(resp):
results = []
json = loads(resp.text)
+
+ title_filter = html_to_text if title_html_to_text else identity
+ content_filter = html_to_text if content_html_to_text else identity
+
if results_query:
rs = query(json, results_query)
if not len(rs):
@@ -114,8 +121,8 @@ def response(resp):
content = ""
results.append({
'url': to_string(url),
- 'title': to_string(title),
- 'content': to_string(content),
+ 'title': title_filter(to_string(title)),
+ 'content': content_filter(to_string(content)),
})
else:
for url, title, content in zip(
@@ -125,8 +132,8 @@ def response(resp):
):
results.append({
'url': to_string(url),
- 'title': to_string(title),
- 'content': to_string(content),
+ 'title': title_filter(to_string(title)),
+ 'content': content_filter(to_string(content)),
})
if not suggestion_query:
diff --git a/searx/engines/kickass.py b/searx/engines/kickass.py
index 5e897c9..6a44e2f 100644
--- a/searx/engines/kickass.py
+++ b/searx/engines/kickass.py
@@ -1,20 +1,22 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Kickass Torrent (Videos, Music, Files)
-
- @website https://kickass.so
- @provide-api no (nothing found)
-
- @using-api no
- @results HTML (using search portal)
- @stable yes (HTML can change)
- @parse url, title, content, seed, leech, magnetlink
"""
from lxml import html
from operator import itemgetter
-from searx.engines.xpath import extract_text
-from searx.utils import get_torrent_size, convert_str_to_int
-from searx.url_utils import quote, urljoin
+from urllib.parse import quote, urljoin
+from searx.utils import extract_text, get_torrent_size, convert_str_to_int
+
+# about
+about = {
+ "website": 'https://kickass.so',
+ "wikidata_id": 'Q17062285',
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['videos', 'music', 'files']
diff --git a/searx/engines/lingva.py b/searx/engines/lingva.py
new file mode 100644
index 0000000..bf51b70
--- /dev/null
+++ b/searx/engines/lingva.py
@@ -0,0 +1,68 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Lingva (alternative Google Translate frontend)"""
+
+from json import loads
+
+about = {
+ "website": 'https://lingva.ml',
+ "wikidata_id": None,
+ "official_api_documentation": 'https://github.com/thedaviddelta/lingva-translate#public-apis',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
+engine_type = 'online_dictionary'
+categories = ['general']
+
+url = "https://lingva.ml"
+search_url = "{url}/api/v1/{from_lang}/{to_lang}/{query}"
+
+
+def request(_query, params):
+ params['url'] = search_url.format(
+ url=url, from_lang=params['from_lang'][1], to_lang=params['to_lang'][1], query=params['query']
+ )
+ return params
+
+
+def response(resp):
+ results = []
+
+ result = loads(resp.text)
+ info = result["info"]
+ from_to_prefix = "%s-%s " % (resp.search_params['from_lang'][1], resp.search_params['to_lang'][1])
+
+ if "typo" in info:
+ results.append({"suggestion": from_to_prefix + info["typo"]})
+
+ if 'definitions' in info: # pylint: disable=too-many-nested-blocks
+ for definition in info['definitions']:
+ if 'list' in definition:
+ for item in definition['list']:
+ if 'synonyms' in item:
+ for synonym in item['synonyms']:
+ results.append({"suggestion": from_to_prefix + synonym})
+
+ infobox = ""
+
+ for translation in info["extraTranslations"]:
+ infobox += f"<b>{translation['type']}</b>"
+
+ for word in translation["list"]:
+ infobox += f"<dl><dt>{word['word']}</dt>"
+
+ for meaning in word["meanings"]:
+ infobox += f"<dd>{meaning}</dd>"
+
+ infobox += "</dl>"
+
+ results.append(
+ {
+ 'infobox': result["translation"],
+ 'content': infobox,
+ }
+ )
+
+ return results
diff --git a/searx/engines/loc.py b/searx/engines/loc.py
new file mode 100644
index 0000000..5c09cef
--- /dev/null
+++ b/searx/engines/loc.py
@@ -0,0 +1,68 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+
+ Library of Congress : images from Prints and Photographs Online Catalog
+
+"""
+
+from json import loads
+from urllib.parse import urlencode
+
+
+about = {
+ "website": 'https://www.loc.gov/pictures/',
+ "wikidata_id": 'Q131454',
+ "official_api_documentation": 'https://www.loc.gov/pictures/api',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
+categories = ['images']
+
+paging = True
+
+base_url = 'https://loc.gov/pictures/search/?'
+search_string = "&sp={page}&{query}&fo=json"
+
+IMG_SRC_FIXES = {
+ 'https://tile.loc.gov/storage-services/': 'https://tile.loc.gov/storage-services/',
+ 'https://loc.gov/pictures/static/images/': 'https://tile.loc.gov/storage-services/',
+ 'https://www.loc.gov/pictures/cdn/': 'https://tile.loc.gov/storage-services/',
+}
+
+
+def request(query, params):
+
+ search_path = search_string.format(
+ query=urlencode({'q': query}),
+ page=params['pageno'])
+
+ params['url'] = base_url + search_path
+
+ return params
+
+
+def response(resp):
+ results = []
+
+ json_data = loads(resp.text)
+
+ for result in json_data['results']:
+ img_src = result['image']['full']
+ for url_prefix, url_replace in IMG_SRC_FIXES.items():
+ if img_src.startswith(url_prefix):
+ img_src = img_src.replace(url_prefix, url_replace)
+ break
+ else:
+ img_src = result['image']['thumb']
+ results.append({
+ 'url': result['links']['item'],
+ 'title': result['title'],
+ 'img_src': img_src,
+ 'thumbnail_src': result['image']['thumb'],
+ 'author': result['creator'],
+ 'template': 'images.html'
+ })
+
+ return results
diff --git a/searx/engines/mediathekviewweb.py b/searx/engines/mediathekviewweb.py
new file mode 100644
index 0000000..fa442c9
--- /dev/null
+++ b/searx/engines/mediathekviewweb.py
@@ -0,0 +1,68 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""MediathekViewWeb (API)
+
+"""
+
+# pylint: disable=missing-function-docstring
+
+import datetime
+from json import loads, dumps
+
+about = {
+ "website": 'https://mediathekviewweb.de/',
+ "wikidata_id": 'Q27877380',
+ "official_api_documentation": 'https://gist.github.com/bagbag/a2888478d27de0e989cf777f81fb33de',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
+categories = ['videos']
+paging = True
+time_range_support = False
+safesearch = False
+
+def request(query, params):
+
+ params['url'] = 'https://mediathekviewweb.de/api/query'
+ params['method'] = 'POST'
+ params['headers']['Content-type'] = 'text/plain'
+ params['data'] = dumps({
+ 'queries' : [
+ {
+ 'fields' : [
+ 'title',
+ 'topic',
+ ],
+ 'query' : query
+ },
+ ],
+ 'sortBy' : 'timestamp',
+ 'sortOrder' : 'desc',
+ 'future' : True,
+ 'offset' : (params['pageno'] - 1 )* 10,
+ 'size' : 10
+ })
+ return params
+
+def response(resp):
+
+ resp = loads(resp.text)
+
+ mwv_result = resp['result']
+ mwv_result_list = mwv_result['results']
+
+ results = []
+
+ for item in mwv_result_list:
+
+ item['hms'] = str(datetime.timedelta(seconds=item['duration']))
+
+ results.append({
+ 'url' : item['url_video_hd'],
+ 'title' : "%(channel)s: %(title)s (%(hms)s)" % item,
+ 'length' : item['hms'],
+ 'content' : "%(description)s" % item,
+ })
+
+ return results
diff --git a/searx/engines/mediawiki.py b/searx/engines/mediawiki.py
index 0607ac9..da43212 100644
--- a/searx/engines/mediawiki.py
+++ b/searx/engines/mediawiki.py
@@ -1,24 +1,24 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
- general mediawiki-engine (Web)
-
- @website websites built on mediawiki (https://www.mediawiki.org)
- @provide-api yes (http://www.mediawiki.org/wiki/API:Search)
-
- @using-api yes
- @results JSON
- @stable yes
- @parse url, title
-
- @todo content
+ General mediawiki-engine (Web)
"""
from json import loads
from string import Formatter
-from searx.url_utils import urlencode, quote
+from urllib.parse import urlencode, quote
+
+# about
+about = {
+ "website": None,
+ "wikidata_id": None,
+ "official_api_documentation": 'http://www.mediawiki.org/wiki/API:Search',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
# engine dependent config
categories = ['general']
-language_support = True
paging = True
number_of_results = 1
search_type = 'nearmatch' # possible values: title, text, nearmatch
@@ -79,7 +79,7 @@ def response(resp):
if result.get('snippet', '').startswith('#REDIRECT'):
continue
url = base_url.format(language=resp.search_params['language']) +\
- 'wiki/' + quote(result['title'].replace(' ', '_').encode('utf-8'))
+ 'wiki/' + quote(result['title'].replace(' ', '_').encode())
# append result
results.append({'url': url,
diff --git a/searx/engines/meilisearch.py b/searx/engines/meilisearch.py
new file mode 100644
index 0000000..59e7fbf
--- /dev/null
+++ b/searx/engines/meilisearch.py
@@ -0,0 +1,59 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Meilisearch
+"""
+
+# pylint: disable=global-statement, missing-function-docstring
+
+from json import loads, dumps
+
+
+base_url = 'http://localhost:7700'
+index = ''
+auth_key = ''
+facet_filters = []
+_search_url = ''
+result_template = 'key-value.html'
+categories = ['general']
+paging = True
+
+
+def init(_):
+ if index == '':
+ raise ValueError('index cannot be empty')
+
+ global _search_url
+ _search_url = base_url + '/indexes/' + index + '/search'
+
+
+def request(query, params):
+ if auth_key != '':
+ params['headers']['X-Meili-API-Key'] = auth_key
+
+ params['headers']['Content-Type'] = 'application/json'
+ params['url'] = _search_url
+ params['method'] = 'POST'
+
+ data = {
+ 'q': query,
+ 'offset': 10 * (params['pageno'] - 1),
+ 'limit': 10,
+ }
+ if len(facet_filters) > 0:
+ data['facetFilters'] = facet_filters
+
+ params['data'] = dumps(data)
+
+ return params
+
+
+def response(resp):
+ results = []
+
+ resp_json = loads(resp.text)
+ for result in resp_json['hits']:
+ r = {key: str(value) for key, value in result.items()}
+ r['template'] = result_template
+ results.append(r)
+
+ return results
diff --git a/searx/engines/microsoft_academic.py b/searx/engines/microsoft_academic.py
index 9bac006..82a5d35 100644
--- a/searx/engines/microsoft_academic.py
+++ b/searx/engines/microsoft_academic.py
@@ -1,43 +1,42 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
-Microsoft Academic (Science)
-
-@website https://academic.microsoft.com
-@provide-api yes
-@using-api no
-@results JSON
-@stable no
-@parse url, title, content
+ Microsoft Academic (Science)
"""
-from datetime import datetime
-from json import loads
-from uuid import uuid4
-
-from searx.url_utils import urlencode
+from json import dumps, loads
from searx.utils import html_to_text
+# about
+about = {
+ "website": 'https://academic.microsoft.com',
+ "wikidata_id": 'Q28136779',
+ "official_api_documentation": 'http://ma-graph.org/',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
categories = ['images']
paging = True
-result_url = 'https://academic.microsoft.com/api/search/GetEntityResults?{query}'
+search_url = 'https://academic.microsoft.com/api/search'
+_paper_url = 'https://academic.microsoft.com/paper/{id}/reference'
def request(query, params):
- correlation_id = uuid4()
- msacademic = uuid4()
- time_now = datetime.now()
-
- params['url'] = result_url.format(query=urlencode({'correlationId': correlation_id}))
- params['cookies']['msacademic'] = str(msacademic)
- params['cookies']['ai_user'] = 'vhd0H|{now}'.format(now=str(time_now))
+ params['url'] = search_url
params['method'] = 'POST'
- params['data'] = {
- 'Query': '@{query}@'.format(query=query),
- 'Limit': 10,
- 'Offset': params['pageno'] - 1,
- 'Filters': '',
- 'OrderBy': '',
- 'SortAscending': False,
- }
+ params['headers']['content-type'] = 'application/json; charset=utf-8'
+ params['data'] = dumps({
+ 'query': query,
+ 'queryExpression': '',
+ 'filters': [],
+ 'orderBy': 0,
+ 'skip': (params['pageno'] - 1) * 10,
+ 'sortAscending': True,
+ 'take': 10,
+ 'includeCitationContexts': False,
+ 'profileId': '',
+ })
return params
@@ -48,10 +47,13 @@ def response(resp):
if not response_data:
return results
- for result in response_data['results']:
- url = _get_url(result)
- title = result['e']['dn']
- content = _get_content(result)
+ for result in response_data['pr']:
+ if 'dn' not in result['paper']:
+ continue
+
+ title = result['paper']['dn']
+ content = _get_content(result['paper'])
+ url = _paper_url.format(id=result['paper']['id'])
results.append({
'url': url,
'title': html_to_text(title),
@@ -61,15 +63,9 @@ def response(resp):
return results
-def _get_url(result):
- if 's' in result['e']:
- return result['e']['s'][0]['u']
- return 'https://academic.microsoft.com/#/detail/{pid}'.format(pid=result['id'])
-
-
def _get_content(result):
- if 'd' in result['e']:
- content = result['e']['d']
+ if 'd' in result:
+ content = result['d']
if len(content) > 300:
return content[:300] + '...'
return content
diff --git a/searx/engines/mixcloud.py b/searx/engines/mixcloud.py
index 470c007..a6fd1c0 100644
--- a/searx/engines/mixcloud.py
+++ b/searx/engines/mixcloud.py
@@ -1,18 +1,21 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Mixcloud (Music)
-
- @website https://http://www.mixcloud.com/
- @provide-api yes (http://www.mixcloud.com/developers/
-
- @using-api yes
- @results JSON
- @stable yes
- @parse url, title, content, embedded, publishedDate
"""
from json import loads
from dateutil import parser
-from searx.url_utils import urlencode
+from urllib.parse import urlencode
+
+# about
+about = {
+ "website": 'https://www.mixcloud.com/',
+ "wikidata_id": 'Q6883832',
+ "official_api_documentation": 'http://www.mixcloud.com/developers/',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
# engine dependent config
categories = ['music']
diff --git a/searx/engines/mongodb.py b/searx/engines/mongodb.py
new file mode 100644
index 0000000..9d1fdc3
--- /dev/null
+++ b/searx/engines/mongodb.py
@@ -0,0 +1,61 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ MongoDB engine (Offline)
+"""
+
+# pylint: disable=missing-function-docstring
+# pylint: disable=import-error
+
+import re
+from pymongo import MongoClient
+
+engine_type = 'offline'
+paging = True
+# mongodb connection variables
+host = '127.0.0.1'
+port = 27017
+username = ''
+password = ''
+database = None
+collection = None
+key = None
+# engine specific variables
+results_per_page = 20
+exact_match_only = False
+result_template = 'key-value.html'
+
+_client = None
+
+
+def init(_):
+ connect()
+
+
+def connect():
+ global _client
+ kwargs = {
+ 'port': port,
+ }
+ if username:
+ kwargs['username'] = username
+ if password:
+ kwargs['password'] = password
+ _client = MongoClient(host, **kwargs)[database][collection]
+
+
+def search(query, params):
+ ret = []
+ if exact_match_only:
+ q = {'$eq': query}
+ else:
+ q = {'$regex': re.compile('.*{0}.*'.format(re.escape(query)), re.I | re.M)}
+ results = _client.find({key: q})\
+ .skip((params['pageno'] - 1) * results_per_page)\
+ .limit(results_per_page)
+ ret.append({'number_of_results': results.count()})
+ for r in results:
+ del r['_id']
+ r = {str(k): str(v) for k, v in r.items()}
+ r['template'] = result_template
+ ret.append(r)
+ return ret
diff --git a/searx/engines/mysql_server.py b/searx/engines/mysql_server.py
new file mode 100644
index 0000000..ce36759
--- /dev/null
+++ b/searx/engines/mysql_server.py
@@ -0,0 +1,62 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ MySQL database (Offline)
+"""
+
+# error is ignored because the admin has to
+# install it manually to use the engine
+# pylint: disable=import-error
+
+import mysql.connector
+
+
+engine_type = 'offline'
+auth_plugin = 'caching_sha2_password'
+host = "127.0.0.1"
+port = 3306
+database = ""
+username = ""
+password = ""
+query_str = ""
+limit = 10
+paging = True
+result_template = 'key-value.html'
+_connection = None
+
+
+def init(engine_settings):
+ if 'query_str' not in engine_settings:
+ raise ValueError('query_str cannot be empty')
+
+ if not engine_settings['query_str'].lower().startswith('select '):
+ raise ValueError('only SELECT query is supported')
+
+ global _connection
+ _connection = mysql.connector.connect(
+ database=database,
+ user=username,
+ password=password,
+ host=host,
+ port=port,
+ auth_plugin=auth_plugin,
+ )
+
+
+def search(query, params):
+ query_params = {'query': query}
+ query_to_run = query_str + ' LIMIT {0} OFFSET {1}'.format(limit, (params['pageno'] - 1) * limit)
+
+ with _connection.cursor() as cur:
+ cur.execute(query_to_run, query_params)
+
+ return _fetch_results(cur)
+
+
+def _fetch_results(cur):
+ results = []
+ for res in cur:
+ result = dict(zip(cur.column_names, map(str, res)))
+ result['template'] = result_template
+ results.append(result)
+
+ return results
diff --git a/searx/engines/nyaa.py b/searx/engines/nyaa.py
index c57979a..f8178d6 100644
--- a/searx/engines/nyaa.py
+++ b/searx/engines/nyaa.py
@@ -1,18 +1,21 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Nyaa.si (Anime Bittorrent tracker)
-
- @website https://nyaa.si/
- @provide-api no
- @using-api no
- @results HTML
- @stable no (HTML can change)
- @parse url, title, content, seed, leech, torrentfile
"""
from lxml import html
-from searx.engines.xpath import extract_text
-from searx.url_utils import urlencode
-from searx.utils import get_torrent_size, int_or_zero
+from urllib.parse import urlencode
+from searx.utils import extract_text, get_torrent_size, int_or_zero
+
+# about
+about = {
+ "website": 'https://nyaa.si/',
+ "wikidata_id": None,
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['files', 'images', 'videos', 'music']
diff --git a/searx/engines/onesearch.py b/searx/engines/onesearch.py
new file mode 100644
index 0000000..dc3cc1a
--- /dev/null
+++ b/searx/engines/onesearch.py
@@ -0,0 +1,57 @@
+
+"""Onesearch
+"""
+
+from lxml.html import fromstring
+
+import re
+
+from searx.utils import (
+ eval_xpath,
+ extract_text,
+)
+
+from urllib.parse import unquote
+
+# about
+about = {
+ "website": 'https://www.onesearch.com/',
+ "wikidata_id": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+
+# engine dependent config
+categories = ['general']
+paging = True
+
+# search-url
+URL = 'https://www.onesearch.com/yhs/search;?p=%s&b=%d'
+
+
+def request(query, params):
+ starting_from = (params['pageno'] * 10) - 9
+ params['url'] = URL % (query, starting_from)
+ return params
+
+
+# get response from search-request
+def response(resp):
+
+ results = []
+ doc = fromstring(resp.text)
+
+ titles_tags = eval_xpath(doc, '//div[contains(@class, "algo")]//h3[contains(@class, "title")]')
+ contents = eval_xpath(doc, '//div[contains(@class, "algo")]/div[contains(@class, "compText")]/p')
+ onesearch_urls = eval_xpath(doc, '//div[contains(@class, "algo")]//h3[contains(@class, "title")]/a/@href')
+
+ for title_tag, content, onesearch_url in zip(titles_tags, contents, onesearch_urls):
+ matches = re.search(r'RU=(.*?)\/', onesearch_url)
+ results.append({
+ 'title': title_tag.text_content(),
+ 'content': extract_text(content),
+ 'url': unquote(matches.group(1)),
+ })
+
+ return results
diff --git a/searx/engines/opensemantic.py b/searx/engines/opensemantic.py
new file mode 100644
index 0000000..64bc321
--- /dev/null
+++ b/searx/engines/opensemantic.py
@@ -0,0 +1,46 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Open Semantic Search
+"""
+
+from dateutil import parser
+from json import loads
+from urllib.parse import quote
+
+# about
+about = {
+ "website": 'https://www.opensemanticsearch.org/',
+ "wikidata_id": None,
+ "official_api_documentation": 'https://www.opensemanticsearch.org/dev',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
+base_url = 'http://localhost:8983/solr/opensemanticsearch/'
+search_string = 'query?q={query}'
+
+
+def request(query, params):
+ search_path = search_string.format(
+ query=quote(query),
+ )
+ params['url'] = base_url + search_path
+ return params
+
+
+def response(resp):
+ results = []
+ data = loads(resp.text)
+ docs = data.get('response', {}).get('docs', [])
+
+ for current in docs:
+ item = {}
+ item['url'] = current['id']
+ item['title'] = current['title_txt_txt_en']
+ if current.get('content_txt'):
+ item['content'] = current['content_txt'][0]
+ item['publishedDate'] = parser.parse(current['file_modified_dt'])
+ results.append(item)
+
+ return results
diff --git a/searx/engines/openstreetmap.py b/searx/engines/openstreetmap.py
index cec10a3..49165e0 100644
--- a/searx/engines/openstreetmap.py
+++ b/searx/engines/openstreetmap.py
@@ -1,95 +1,446 @@
-"""
- OpenStreetMap (Map)
-
- @website https://openstreetmap.org/
- @provide-api yes (http://wiki.openstreetmap.org/wiki/Nominatim)
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""OpenStreetMap (Map)
- @using-api yes
- @results JSON
- @stable yes
- @parse url, title
"""
+# pylint: disable=missing-function-docstring
+import re
from json import loads
+from urllib.parse import urlencode
+from functools import partial
+
+from flask_babel import gettext
+
+from searx.data import OSM_KEYS_TAGS, CURRENCIES
+from searx.utils import searx_useragent
+from searx.external_urls import get_external_url
+from searx.engines.wikidata import send_wikidata_query, sparql_string_escape
+
+# about
+about = {
+ "website": 'https://www.openstreetmap.org/',
+ "wikidata_id": 'Q936',
+ "official_api_documentation": 'http://wiki.openstreetmap.org/wiki/Nominatim',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
# engine dependent config
categories = ['map']
paging = False
+language_support = True
# search-url
base_url = 'https://nominatim.openstreetmap.org/'
-search_string = 'search/{query}?format=json&polygon_geojson=1&addressdetails=1'
-result_base_url = 'https://openstreetmap.org/{osm_type}/{osm_id}'
+search_string = 'search?{query}&polygon_geojson=1&format=jsonv2&addressdetails=1&extratags=1&dedupe=1'
+result_id_url = 'https://openstreetmap.org/{osm_type}/{osm_id}'
+result_lat_lon_url = 'https://www.openstreetmap.org/?mlat={lat}&mlon={lon}&zoom={zoom}&layers=M'
+
+route_url = 'https://graphhopper.com/maps/?point={}&point={}&locale=en-US&vehicle=car&weighting=fastest&turn_costs=true&use_miles=false&layer=Omniscale' # NOQA
+route_re = re.compile('(?:from )?(.+) to (.+)')
+
+wikidata_image_sparql = """
+select ?item ?itemLabel ?image ?sign ?symbol ?website ?wikipediaName
+where {
+ values ?item { %WIKIDATA_IDS% }
+ OPTIONAL { ?item wdt:P18|wdt:P8517|wdt:P4291|wdt:P5252|wdt:P3451|wdt:P4640|wdt:P5775|wdt:P2716|wdt:P1801|wdt:P4896 ?image }
+ OPTIONAL { ?item wdt:P1766|wdt:P8505|wdt:P8667 ?sign }
+ OPTIONAL { ?item wdt:P41|wdt:P94|wdt:P154|wdt:P158|wdt:P2910|wdt:P4004|wdt:P5962|wdt:P8972 ?symbol }
+ OPTIONAL { ?item wdt:P856 ?website }
+ SERVICE wikibase:label {
+ bd:serviceParam wikibase:language "%LANGUAGE%,en".
+ ?item rdfs:label ?itemLabel .
+ }
+ OPTIONAL {
+ ?wikipediaUrl schema:about ?item;
+ schema:isPartOf/wikibase:wikiGroup "wikipedia";
+ schema:name ?wikipediaName;
+ schema:inLanguage "%LANGUAGE%" .
+ }
+}
+ORDER by ?item
+""" # NOQA
+
+
+# key value that are link: mapping functions
+# 'mapillary': P1947
+# but https://github.com/kartaview/openstreetcam.org/issues/60
+# but https://taginfo.openstreetmap.org/keys/kartaview ...
+def value_to_https_link(value):
+ http = 'http://'
+ if value.startswith(http):
+ value = 'https://' + value[len(http):]
+ return (value, value)
+
+
+def value_to_website_link(value):
+ value = value.split(';')[0]
+ return (value, value)
+
+
+def value_wikipedia_link(value):
+ value = value.split(':', 1)
+ return ('https://{0}.wikipedia.org/wiki/{1}'.format(*value), '{1} ({0})'.format(*value))
+
+
+def value_with_prefix(prefix, value):
+ return (prefix + value, value)
+
+
+VALUE_TO_LINK = {
+ 'website': value_to_website_link,
+ 'contact:website': value_to_website_link,
+ 'email': partial(value_with_prefix, 'mailto:'),
+ 'contact:email': partial(value_with_prefix, 'mailto:'),
+ 'contact:phone': partial(value_with_prefix, 'tel:'),
+ 'phone': partial(value_with_prefix, 'tel:'),
+ 'fax': partial(value_with_prefix, 'fax:'),
+ 'contact:fax': partial(value_with_prefix, 'fax:'),
+ 'contact:mastodon': value_to_https_link,
+ 'facebook': value_to_https_link,
+ 'contact:facebook': value_to_https_link,
+ 'contact:foursquare': value_to_https_link,
+ 'contact:instagram': value_to_https_link,
+ 'contact:linkedin': value_to_https_link,
+ 'contact:pinterest': value_to_https_link,
+ 'contact:telegram': value_to_https_link,
+ 'contact:tripadvisor': value_to_https_link,
+ 'contact:twitter': value_to_https_link,
+ 'contact:yelp': value_to_https_link,
+ 'contact:youtube': value_to_https_link,
+ 'contact:webcam': value_to_website_link,
+ 'wikipedia': value_wikipedia_link,
+ 'wikidata': partial(value_with_prefix, 'https://wikidata.org/wiki/'),
+ 'brand:wikidata': partial(value_with_prefix, 'https://wikidata.org/wiki/'),
+}
+KEY_ORDER = [
+ 'cuisine',
+ 'organic',
+ 'delivery',
+ 'delivery:covid19',
+ 'opening_hours',
+ 'opening_hours:covid19',
+ 'fee',
+ 'payment:*',
+ 'currency:*',
+ 'outdoor_seating',
+ 'bench',
+ 'wheelchair',
+ 'level',
+ 'building:levels',
+ 'bin',
+ 'public_transport',
+ 'internet_access:ssid',
+]
+KEY_RANKS = {k: i for i, k in enumerate(KEY_ORDER)}
-# do search-request
def request(query, params):
- params['url'] = base_url + search_string.format(query=query.decode('utf-8'))
+ """do search-request"""
+ params['url'] = base_url + search_string.format(query=urlencode({'q': query}))
+ params['route'] = route_re.match(query)
+ params['headers']['User-Agent'] = searx_useragent()
+ accept_language = 'en' if params['language'] == 'all' else params['language']
+ params['headers']['Accept-Language'] = accept_language
return params
-# get response from search-request
def response(resp):
+ """get response from search-request"""
results = []
- json = loads(resp.text)
+ nominatim_json = loads(resp.text)
+ user_language = resp.search_params['language']
+
+ if resp.search_params['route']:
+ results.append({
+ 'answer': gettext('Get directions'),
+ 'url': route_url.format(*resp.search_params['route'].groups()),
+ })
+
+ fetch_wikidata(nominatim_json, user_language)
+
+ for result in nominatim_json:
+ title, address = get_title_address(result)
- # parse results
- for r in json:
- if 'display_name' not in r:
+ # ignore result without title
+ if not title:
continue
- title = r['display_name'] or u''
- osm_type = r.get('osm_type', r.get('type'))
- url = result_base_url.format(osm_type=osm_type,
- osm_id=r['osm_id'])
-
- osm = {'type': osm_type,
- 'id': r['osm_id']}
-
- geojson = r.get('geojson')
-
- # if no geojson is found and osm_type is a node, add geojson Point
- if not geojson and osm_type == 'node':
- geojson = {u'type': u'Point', u'coordinates': [r['lon'], r['lat']]}
-
- address_raw = r.get('address')
- address = {}
-
- # get name
- if r['class'] == 'amenity' or\
- r['class'] == 'shop' or\
- r['class'] == 'tourism' or\
- r['class'] == 'leisure':
- if address_raw.get('address29'):
- address = {'name': address_raw.get('address29')}
- else:
- address = {'name': address_raw.get(r['type'])}
-
- # add rest of adressdata, if something is already found
- if address.get('name'):
- address.update({'house_number': address_raw.get('house_number'),
- 'road': address_raw.get('road'),
- 'locality': address_raw.get('city',
- address_raw.get('town', # noqa
- address_raw.get('village'))), # noqa
- 'postcode': address_raw.get('postcode'),
- 'country': address_raw.get('country'),
- 'country_code': address_raw.get('country_code')})
- else:
- address = None
-
- # append result
- results.append({'template': 'map.html',
- 'title': title,
- 'content': '',
- 'longitude': r['lon'],
- 'latitude': r['lat'],
- 'boundingbox': r['boundingbox'],
- 'geojson': geojson,
- 'address': address,
- 'osm': osm,
- 'url': url})
-
- # return results
+ url, osm, geojson = get_url_osm_geojson(result)
+ img_src = get_img_src(result)
+ links, link_keys = get_links(result, user_language)
+ data = get_data(result, user_language, link_keys)
+
+ results.append({
+ 'template': 'map.html',
+ 'title': title,
+ 'address': address,
+ 'address_label': get_key_label('addr', user_language),
+ 'url': url,
+ 'osm': osm,
+ 'geojson': geojson,
+ 'img_src': img_src,
+ 'links': links,
+ 'data': data,
+ 'type': get_tag_label(
+ result.get('category'), result.get('type', ''), user_language
+ ),
+ 'type_icon': result.get('icon'),
+ 'content': '',
+ 'longitude': result['lon'],
+ 'latitude': result['lat'],
+ 'boundingbox': result['boundingbox'],
+ })
+
return results
+
+
+def get_wikipedia_image(raw_value):
+ if not raw_value:
+ return None
+ return get_external_url('wikimedia_image', raw_value)
+
+
+def fetch_wikidata(nominatim_json, user_language):
+ """Update nominatim_json using the result of an unique to wikidata
+
+ For result in nominatim_json:
+ If result['extratags']['wikidata'] or r['extratags']['wikidata link']:
+ Set result['wikidata'] to { 'image': ..., 'image_sign':..., 'image_symbal':... }
+ Set result['extratags']['wikipedia'] if not defined
+ Set result['extratags']['contact:website'] if not defined
+ """
+ wikidata_ids = []
+ wd_to_results = {}
+ for result in nominatim_json:
+ e = result.get("extratags")
+ if e:
+ # ignore brand:wikidata
+ wd_id = e.get("wikidata", e.get("wikidata link"))
+ if wd_id and wd_id not in wikidata_ids:
+ wikidata_ids.append("wd:" + wd_id)
+ wd_to_results.setdefault(wd_id, []).append(result)
+
+ if wikidata_ids:
+ user_language = 'en' if user_language == 'all' else user_language.split('-')[0]
+ wikidata_ids_str = " ".join(wikidata_ids)
+ query = wikidata_image_sparql.replace('%WIKIDATA_IDS%', sparql_string_escape(wikidata_ids_str)).replace(
+ '%LANGUAGE%', sparql_string_escape(user_language)
+ )
+ wikidata_json = send_wikidata_query(query)
+ for wd_result in wikidata_json.get('results', {}).get('bindings', {}):
+ wd_id = wd_result['item']['value'].replace('http://www.wikidata.org/entity/', '')
+ for result in wd_to_results.get(wd_id, []):
+ result['wikidata'] = {
+ 'itemLabel': wd_result['itemLabel']['value'],
+ 'image': get_wikipedia_image(wd_result.get('image', {}).get('value')),
+ 'image_sign': get_wikipedia_image(wd_result.get('sign', {}).get('value')),
+ 'image_symbol': get_wikipedia_image(wd_result.get('symbol', {}).get('value')),
+ }
+ # overwrite wikipedia link
+ wikipedia_name = wd_result.get('wikipediaName', {}).get('value')
+ if wikipedia_name:
+ result['extratags']['wikipedia'] = user_language + ':' + wikipedia_name
+ # get website if not already defined
+ website = wd_result.get('website', {}).get('value')
+ if (
+ website
+ and not result['extratags'].get('contact:website')
+ and not result['extratags'].get('website')
+ ):
+ result['extratags']['contact:website'] = website
+
+
+def get_title_address(result):
+ """Return title and address
+
+ title may be None
+ """
+ address_raw = result.get('address')
+ address_name = None
+ address = {}
+
+ # get name
+ if (
+ result['category'] == 'amenity'
+ or result['category'] == 'shop'
+ or result['category'] == 'tourism'
+ or result['category'] == 'leisure'
+ ):
+ if address_raw.get('address29'):
+ # https://github.com/osm-search/Nominatim/issues/1662
+ address_name = address_raw.get('address29')
+ else:
+ address_name = address_raw.get(result['category'])
+ elif result['type'] in address_raw:
+ address_name = address_raw.get(result['type'])
+
+ # add rest of adressdata, if something is already found
+ if address_name:
+ title = address_name
+ address.update(
+ {
+ 'name': address_name,
+ 'house_number': address_raw.get('house_number'),
+ 'road': address_raw.get('road'),
+ 'locality': address_raw.get(
+ 'city', address_raw.get('town', address_raw.get('village')) # noqa
+ ), # noqa
+ 'postcode': address_raw.get('postcode'),
+ 'country': address_raw.get('country'),
+ 'country_code': address_raw.get('country_code'),
+ }
+ )
+ else:
+ title = result.get('display_name')
+
+ return title, address
+
+
+def get_url_osm_geojson(result):
+ """Get url, osm and geojson
+ """
+ osm_type = result.get('osm_type', result.get('type'))
+ if 'osm_id' not in result:
+ # see https://github.com/osm-search/Nominatim/issues/1521
+ # query example: "EC1M 5RF London"
+ url = result_lat_lon_url.format(lat=result['lat'], lon=result['lon'], zoom=12)
+ osm = {}
+ else:
+ url = result_id_url.format(osm_type=osm_type, osm_id=result['osm_id'])
+ osm = {'type': osm_type, 'id': result['osm_id']}
+
+ geojson = result.get('geojson')
+ # if no geojson is found and osm_type is a node, add geojson Point
+ if not geojson and osm_type == 'node':
+ geojson = {'type': 'Point', 'coordinates': [result['lon'], result['lat']]}
+
+ return url, osm, geojson
+
+
+def get_img_src(result):
+ """Get image URL from either wikidata or r['extratags']"""
+ # wikidata
+ img_src = None
+ if 'wikidata' in result:
+ img_src = result['wikidata']['image']
+ if not img_src:
+ img_src = result['wikidata']['image_symbol']
+ if not img_src:
+ img_src = result['wikidata']['image_sign']
+
+ # img_src
+ if not img_src and result.get('extratags', {}).get('image'):
+ img_src = result['extratags']['image']
+ del result['extratags']['image']
+ if not img_src and result.get('extratags', {}).get('wikimedia_commons'):
+ img_src = get_external_url('wikimedia_image', result['extratags']['wikimedia_commons'])
+ del result['extratags']['wikimedia_commons']
+
+ return img_src
+
+
+def get_links(result, user_language):
+ """Return links from result['extratags']"""
+ links = []
+ link_keys = set()
+ for k, mapping_function in VALUE_TO_LINK.items():
+ raw_value = result['extratags'].get(k)
+ if raw_value:
+ url, url_label = mapping_function(raw_value)
+ if url.startswith('https://wikidata.org'):
+ url_label = result.get('wikidata', {}).get('itemLabel') or url_label
+ links.append({
+ 'label': get_key_label(k, user_language),
+ 'url': url,
+ 'url_label': url_label,
+ })
+ link_keys.add(k)
+ return links, link_keys
+
+
+def get_data(result, user_language, ignore_keys):
+ """Return key, value of result['extratags']
+
+ Must be call after get_links
+
+ Note: the values are not translated
+ """
+ data = []
+ for k, v in result['extratags'].items():
+ if k in ignore_keys:
+ continue
+ if get_key_rank(k) is None:
+ continue
+ k_label = get_key_label(k, user_language)
+ if k_label:
+ data.append({
+ 'label': k_label,
+ 'key': k,
+ 'value': v,
+ })
+ data.sort(key=lambda entry: (get_key_rank(entry['key']), entry['label']))
+ return data
+
+
+def get_key_rank(k):
+ """Get OSM key rank
+
+ The rank defines in which order the key are displayed in the HTML result
+ """
+ key_rank = KEY_RANKS.get(k)
+ if key_rank is None:
+ # "payment:*" in KEY_ORDER matches "payment:cash", "payment:debit card", etc...
+ key_rank = KEY_RANKS.get(k.split(':')[0] + ':*')
+ return key_rank
+
+
+def get_label(labels, lang):
+ """Get label from labels in OSM_KEYS_TAGS
+
+ in OSM_KEYS_TAGS, labels have key == '*'
+ """
+ tag_label = labels.get(lang.lower())
+ if tag_label is None:
+ # example: if 'zh-hk' is not found, check 'zh'
+ tag_label = labels.get(lang.split('-')[0])
+ if tag_label is None and lang != 'en':
+ # example: if 'zh' is not found, check 'en'
+ tag_label = labels.get('en')
+ if tag_label is None and len(labels.values()) > 0:
+ # example: if still not found, use the first entry
+ tag_label = labels.values()[0]
+ return tag_label
+
+
+def get_tag_label(tag_category, tag_name, lang):
+ """Get tag label from OSM_KEYS_TAGS"""
+ tag_name = '' if tag_name is None else tag_name
+ tag_labels = OSM_KEYS_TAGS['tags'].get(tag_category, {}).get(tag_name, {})
+ return get_label(tag_labels, lang)
+
+
+def get_key_label(key_name, lang):
+ """Get key label from OSM_KEYS_TAGS"""
+ if key_name.startswith('currency:'):
+ # currency:EUR --> get the name from the CURRENCIES variable
+ # see https://wiki.openstreetmap.org/wiki/Key%3Acurrency
+ # and for exampe https://taginfo.openstreetmap.org/keys/currency:EUR#values
+ # but there is also currency=EUR (currently not handled)
+ # https://taginfo.openstreetmap.org/keys/currency#values
+ currency = key_name.split(':')
+ if len(currency) > 1:
+ o = CURRENCIES['iso4217'].get(currency)
+ if o:
+ return get_label(o, lang).lower()
+ return currency
+
+ labels = OSM_KEYS_TAGS['keys']
+ for k in key_name.split(':') + ['*']:
+ labels = labels.get(k)
+ if labels is None:
+ return None
+ return get_label(labels, lang)
diff --git a/searx/engines/openverse.py b/searx/engines/openverse.py
new file mode 100644
index 0000000..e3fc082
--- /dev/null
+++ b/searx/engines/openverse.py
@@ -0,0 +1,53 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+
+ Openverse (formerly known as: Creative Commons search engine) [Images]
+
+"""
+
+from json import loads
+from urllib.parse import urlencode
+
+
+about = {
+ "website": 'https://search.creativecommons.org/',
+ "wikidata_id": None,
+ "official_api_documentation": 'https://api.creativecommons.engineering/v1/',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
+categories = ['images']
+
+paging = True
+nb_per_page = 20
+
+base_url = 'https://api.openverse.engineering/v1/images/'
+search_string = '?page={page}&page_size={nb_per_page}&format=json&{query}'
+
+
+def request(query, params):
+
+ search_path = search_string.format(
+ query=urlencode({'q': query}),
+ nb_per_page=nb_per_page,
+ page=params['pageno'])
+
+ params['url'] = base_url + search_path
+
+ return params
+
+
+def response(resp):
+ results = []
+
+ json_data = loads(resp.text)
+
+ for result in json_data['results']:
+ results.append({'url': result['foreign_landing_url'],
+ 'title': result['title'],
+ 'img_src': result['url'],
+ 'template': 'images.html'})
+
+ return results
diff --git a/searx/engines/pdbe.py b/searx/engines/pdbe.py
index 2db9286..b9bbfaf 100644
--- a/searx/engines/pdbe.py
+++ b/searx/engines/pdbe.py
@@ -1,18 +1,21 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
PDBe (Protein Data Bank in Europe)
-
- @website https://www.ebi.ac.uk/pdbe
- @provide-api yes (https://www.ebi.ac.uk/pdbe/api/doc/search.html),
- unlimited
- @using-api yes
- @results python dictionary (from json)
- @stable yes
- @parse url, title, content, img_src
"""
from json import loads
from flask_babel import gettext
+# about
+about = {
+ "website": 'https://www.ebi.ac.uk/pdbe',
+ "wikidata_id": 'Q55823905',
+ "official_api_documentation": 'https://www.ebi.ac.uk/pdbe/api/doc/search.html',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
categories = ['science']
hide_obsolete = False
diff --git a/searx/engines/peertube.py b/searx/engines/peertube.py
new file mode 100644
index 0000000..31b4b81
--- /dev/null
+++ b/searx/engines/peertube.py
@@ -0,0 +1,96 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ peertube (Videos)
+"""
+
+from json import loads
+from datetime import datetime
+from urllib.parse import urlencode
+from searx.utils import html_to_text
+
+# about
+about = {
+ "website": 'https://joinpeertube.org',
+ "wikidata_id": 'Q50938515',
+ "official_api_documentation": 'https://docs.joinpeertube.org/api-rest-reference.html',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
+# engine dependent config
+categories = ["videos"]
+paging = True
+base_url = "https://peer.tube"
+supported_languages_url = base_url + "/api/v1/videos/languages"
+
+
+# do search-request
+def request(query, params):
+ sanitized_url = base_url.rstrip("/")
+ pageno = (params["pageno"] - 1) * 15
+ search_url = sanitized_url + "/api/v1/search/videos/?pageno={pageno}&{query}"
+ query_dict = {"search": query}
+ language = params["language"].split("-")[0]
+ # pylint: disable=undefined-variable
+ if "all" != language and language in supported_languages:
+ query_dict["languageOneOf"] = language
+ params["url"] = search_url.format(
+ query=urlencode(query_dict), pageno=pageno
+ )
+ return params
+
+
+def _get_offset_from_pageno(pageno):
+ return (pageno - 1) * 15 + 1
+
+
+# get response from search-request
+def response(resp):
+ sanitized_url = base_url.rstrip("/")
+ results = []
+
+ search_res = loads(resp.text)
+
+ embedded_url = (
+ '<iframe width="560" height="315" sandbox="allow-same-origin allow-scripts allow-popups" '
+ + 'src="'
+ + sanitized_url
+ + '{embed_path}" frameborder="0" allowfullscreen></iframe>'
+ )
+ # return empty array if there are no results
+ if "data" not in search_res:
+ return []
+
+ # parse results
+ for res in search_res["data"]:
+ title = res["name"]
+ url = sanitized_url + "/videos/watch/" + res["uuid"]
+ description = res["description"]
+ if description:
+ content = html_to_text(res["description"])
+ else:
+ content = ""
+ thumbnail = sanitized_url + res["thumbnailPath"]
+ publishedDate = datetime.strptime(res["publishedAt"], "%Y-%m-%dT%H:%M:%S.%fZ")
+ embedded = embedded_url.format(embed_path=res["embedPath"])
+
+ results.append(
+ {
+ "template": "videos.html",
+ "url": url,
+ "title": title,
+ "content": content,
+ "publishedDate": publishedDate,
+ "embedded": embedded,
+ "thumbnail": thumbnail,
+ }
+ )
+
+ # return results
+ return results
+
+
+def _fetch_supported_languages(resp):
+ peertube_languages = list(loads(resp.text).keys())
+ return peertube_languages
diff --git a/searx/engines/photon.py b/searx/engines/photon.py
index 15236f6..8c11c8f 100644
--- a/searx/engines/photon.py
+++ b/searx/engines/photon.py
@@ -1,27 +1,29 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Photon (Map)
-
- @website https://photon.komoot.de
- @provide-api yes (https://photon.komoot.de/)
-
- @using-api yes
- @results JSON
- @stable yes
- @parse url, title
"""
from json import loads
+from urllib.parse import urlencode
from searx.utils import searx_useragent
-from searx.url_utils import urlencode
+
+# about
+about = {
+ "website": 'https://photon.komoot.de',
+ "wikidata_id": None,
+ "official_api_documentation": 'https://photon.komoot.de/',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
# engine dependent config
categories = ['map']
paging = False
-language_support = True
number_of_results = 10
# search-url
-base_url = 'https://photon.komoot.de/'
+base_url = 'https://photon.komoot.io/'
search_string = 'api/?{query}&limit={limit}'
result_base_url = 'https://openstreetmap.org/{osm_type}/{osm_id}'
diff --git a/searx/engines/piratebay.py b/searx/engines/piratebay.py
index 2f3f22a..98a2dd9 100644
--- a/searx/engines/piratebay.py
+++ b/searx/engines/piratebay.py
@@ -1,44 +1,56 @@
-# Piratebay (Videos, Music, Files)
-#
-# @website https://thepiratebay.se
-# @provide-api no (nothing found)
-#
-# @using-api no
-# @results HTML (using search portal)
-# @stable yes (HTML can change)
-# @parse url, title, content, seed, leech, magnetlink
-
-from lxml import html
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Piratebay (Videos, Music, Files)
+"""
+
+from json import loads
+from datetime import datetime
from operator import itemgetter
-from searx.engines.xpath import extract_text
-from searx.url_utils import quote, urljoin
+
+from urllib.parse import quote
+from searx.utils import get_torrent_size
+
+# about
+about = {
+ "website": 'https://thepiratebay.org',
+ "wikidata_id": 'Q22663',
+ "official_api_documentation": 'https://apibay.org/',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
# engine dependent config
-categories = ['videos', 'music', 'files']
-paging = True
+categories = ["videos", "music", "files"]
# search-url
-url = 'https://thepiratebay.org/'
-search_url = url + 'search/{search_term}/{pageno}/99/{search_type}'
+url = "https://thepiratebay.org/"
+search_url = "https://apibay.org/q.php?q={search_term}&cat={search_type}"
+
+# default trackers provided by thepiratebay
+trackers = [
+ "udp://tracker.coppersurfer.tk:6969/announce",
+ "udp://9.rarbg.to:2920/announce",
+ "udp://tracker.opentrackr.org:1337",
+ "udp://tracker.internetwarriors.net:1337/announce",
+ "udp://tracker.leechers-paradise.org:6969/announce",
+ "udp://tracker.coppersurfer.tk:6969/announce",
+ "udp://tracker.pirateparty.gr:6969/announce",
+ "udp://tracker.cyberia.is:6969/announce",
+]
# piratebay specific type-definitions
-search_types = {'files': '0',
- 'music': '100',
- 'videos': '200'}
-
-# specific xpath variables
-magnet_xpath = './/a[@title="Download this torrent using magnet"]'
-torrent_xpath = './/a[@title="Download this torrent"]'
-content_xpath = './/font[@class="detDesc"]'
+search_types = {"files": "0",
+ "music": "100",
+ "videos": "200"}
# do search-request
def request(query, params):
- search_type = search_types.get(params['category'], '0')
+ search_type = search_types.get(params["category"], "0")
- params['url'] = search_url.format(search_term=quote(query),
- search_type=search_type,
- pageno=params['pageno'] - 1)
+ params["url"] = search_url.format(search_term=quote(query),
+ search_type=search_type)
return params
@@ -47,50 +59,43 @@ def request(query, params):
def response(resp):
results = []
- dom = html.fromstring(resp.text)
-
- search_res = dom.xpath('//table[@id="searchResult"]//tr')
+ search_res = loads(resp.text)
# return empty array if nothing is found
- if not search_res:
+ if search_res[0]["name"] == "No results returned":
return []
# parse results
- for result in search_res[1:]:
- link = result.xpath('.//div[@class="detName"]//a')[0]
- href = urljoin(url, link.attrib.get('href'))
- title = extract_text(link)
- content = extract_text(result.xpath(content_xpath))
- seed, leech = result.xpath('.//td[@align="right"]/text()')[:2]
-
- # convert seed to int if possible
- if seed.isdigit():
- seed = int(seed)
- else:
- seed = 0
-
- # convert leech to int if possible
- if leech.isdigit():
- leech = int(leech)
- else:
- leech = 0
-
- magnetlink = result.xpath(magnet_xpath)[0]
- torrentfile_links = result.xpath(torrent_xpath)
- if torrentfile_links:
- torrentfile_link = torrentfile_links[0].attrib.get('href')
- else:
- torrentfile_link = None
+ for result in search_res:
+ link = url + "description.php?id=" + result["id"]
+ magnetlink = "magnet:?xt=urn:btih:" + result["info_hash"] + "&dn=" + result["name"]\
+ + "&tr=" + "&tr=".join(trackers)
+
+ params = {
+ "url": link,
+ "title": result["name"],
+ "seed": result["seeders"],
+ "leech": result["leechers"],
+ "magnetlink": magnetlink,
+ "template": "torrent.html"
+ }
+
+ # extract and convert creation date
+ try:
+ date = datetime.fromtimestamp(float(result["added"]))
+ params['publishedDate'] = date
+ except:
+ pass
+
+ # let's try to calculate the torrent size
+ try:
+ filesize = get_torrent_size(result["size"], "B")
+ params['filesize'] = filesize
+ except:
+ pass
# append result
- results.append({'url': href,
- 'title': title,
- 'content': content,
- 'seed': seed,
- 'leech': leech,
- 'magnetlink': magnetlink.attrib.get('href'),
- 'torrentfile': torrentfile_link,
- 'template': 'torrent.html'})
+ results.append(params)
# return results sorted by seeder
- return sorted(results, key=itemgetter('seed'), reverse=True)
+ return sorted(results, key=itemgetter("seed"), reverse=True)
diff --git a/searx/engines/postgresql.py b/searx/engines/postgresql.py
new file mode 100644
index 0000000..2c95f41
--- /dev/null
+++ b/searx/engines/postgresql.py
@@ -0,0 +1,69 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ PostgreSQL database (Offline)
+"""
+
+# error is ignored because the admin has to
+# install it manually to use the engine
+# pylint: disable=import-error
+
+import psycopg2
+
+engine_type = 'offline'
+host = "127.0.0.1"
+port = "5432"
+database = ""
+username = ""
+password = ""
+query_str = ""
+limit = 10
+paging = True
+result_template = 'key-value.html'
+_connection = None
+
+
+def init(engine_settings):
+ if 'query_str' not in engine_settings:
+ raise ValueError('query_str cannot be empty')
+
+ if not engine_settings['query_str'].lower().startswith('select '):
+ raise ValueError('only SELECT query is supported')
+
+ global _connection
+ _connection = psycopg2.connect(
+ database=database,
+ user=username,
+ password=password,
+ host=host,
+ port=port,
+ )
+
+
+def search(query, params):
+ query_params = {'query': query}
+ query_to_run = query_str + ' LIMIT {0} OFFSET {1}'.format(limit, (params['pageno'] - 1) * limit)
+
+ with _connection:
+ with _connection.cursor() as cur:
+ cur.execute(query_to_run, query_params)
+
+ return _fetch_results(cur)
+
+
+def _fetch_results(cur):
+ results = []
+ titles = []
+
+ try:
+ titles = [column_desc.name for column_desc in cur.description]
+
+ for res in cur:
+ result = dict(zip(titles, map(str, res)))
+ result['template'] = result_template
+ results.append(result)
+
+ # no results to fetch
+ except psycopg2.ProgrammingError:
+ pass
+
+ return results
diff --git a/searx/engines/prowlarr.py b/searx/engines/prowlarr.py
new file mode 100644
index 0000000..24ad618
--- /dev/null
+++ b/searx/engines/prowlarr.py
@@ -0,0 +1,80 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+
+ Prowlarr search (Files)
+
+"""
+
+from json import loads
+from urllib.parse import urlencode
+from searx.exceptions import SearxEngineAPIException
+
+categories = ''
+
+paging = False
+api_key = ''
+indexer_ids = ''
+search_type = 'search'
+search_categories = ''
+base_url = ''
+
+
+def request(query, params):
+ if not base_url:
+ raise SearxEngineAPIException('missing prowlarr base url')
+
+ if not api_key:
+ raise SearxEngineAPIException('missing prowlarr API key')
+
+ query_args = {
+ 'query': query,
+ 'apikey': api_key,
+ 'type': search_type
+ }
+
+ if indexer_ids:
+ query_args['indexerIds'] = indexer_ids
+
+ if search_categories:
+ query_args['categories'] = search_categories
+
+ params['url'] = base_url + urlencode(query_args)
+
+ return params
+
+
+def response(resp):
+ results = []
+
+ json_data = loads(resp.text)
+
+ for result in json_data:
+
+ new_result = {
+ 'title': result['title'],
+ 'url': result['infoUrl'],
+ 'template': 'torrent.html'
+ }
+
+ if 'files' in result:
+ new_result['files'] = result['files']
+
+ if 'size' in result:
+ new_result['filesize'] = result['size']
+
+ if 'seeders' in result:
+ new_result['seed'] = result['seeders']
+
+ if 'leechers' in result:
+ new_result['leech'] = result['leechers']
+
+ if 'downloadUrl' in result:
+ new_result['torrentfile'] = result['downloadUrl']
+
+ # magnet link *may* be in guid, but it may be also idential to infoUrl
+ if 'guid' in result and isinstance(result['guid'], str) and result['guid'].startswith('magnet'):
+ new_result['magnetlink'] = result['guid']
+
+ results.append(new_result)
+
+ return results
diff --git a/searx/engines/pubmed.py b/searx/engines/pubmed.py
index 055f092..da02f91 100644
--- a/searx/engines/pubmed.py
+++ b/searx/engines/pubmed.py
@@ -1,22 +1,26 @@
-#!/usr/bin/env python
-
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
PubMed (Scholar publications)
- @website https://www.ncbi.nlm.nih.gov/pubmed/
- @provide-api yes (https://www.ncbi.nlm.nih.gov/home/develop/api/)
- @using-api yes
- @results XML
- @stable yes
- @parse url, title, publishedDate, content
- More info on api: https://www.ncbi.nlm.nih.gov/books/NBK25501/
"""
from flask_babel import gettext
from lxml import etree
from datetime import datetime
-from searx.url_utils import urlencode
+from urllib.parse import urlencode
from searx.poolrequests import get
+# about
+about = {
+ "website": 'https://www.ncbi.nlm.nih.gov/pubmed/',
+ "wikidata_id": 'Q1540899',
+ "official_api_documentation": {
+ 'url': 'https://www.ncbi.nlm.nih.gov/home/develop/api/',
+ 'comment': 'More info on api: https://www.ncbi.nlm.nih.gov/books/NBK25501/'
+ },
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'XML',
+}
categories = ['science']
@@ -81,7 +85,7 @@ def response(resp):
pass
if len(content) > 300:
- content = content[0:300] + "..."
+ content = content[0:300] + "..."
# TODO: center snippet on query term
res_dict = {'url': url,
diff --git a/searx/engines/qwant.py b/searx/engines/qwant.py
index 54e9daf..cee2dfa 100644
--- a/searx/engines/qwant.py
+++ b/searx/engines/qwant.py
@@ -1,116 +1,239 @@
-"""
- Qwant (Web, Images, News, Social)
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Qwant (Web, News, Images, Videos)
+
+This engine uses the Qwant API (https://api.qwant.com/v3). The API is
+undocumented but can be reverse engineered by reading the network log of
+https://www.qwant.com/ queries.
+
+This implementation is used by different qwant engines in the settings.yml::
- @website https://qwant.com/
- @provide-api not officially (https://api.qwant.com/api/search/)
+ - name: qwant
+ categories: general
+ ...
+ - name: qwant news
+ categories: news
+ ...
+ - name: qwant images
+ categories: images
+ ...
+ - name: qwant videos
+ categories: videos
+ ...
- @using-api yes
- @results JSON
- @stable yes
- @parse url, title, content
"""
-from datetime import datetime
+from datetime import (
+ datetime,
+ timedelta,
+)
from json import loads
-from searx.utils import html_to_text
-from searx.url_utils import urlencode
+from urllib.parse import urlencode
+from flask_babel import gettext
+
from searx.utils import match_language
+from searx.exceptions import SearxEngineAPIException
+from searx.raise_for_httperror import raise_for_httperror
+
+
+# about
+about = {
+ "website": 'https://www.qwant.com/',
+ "wikidata_id": 'Q14657870',
+ "official_api_documentation": None,
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
# engine dependent config
-categories = None
+categories = []
paging = True
-language_support = True
-supported_languages_url = 'https://qwant.com/region'
+supported_languages_url = about['website']
-category_to_keyword = {'general': 'web',
- 'images': 'images',
- 'news': 'news',
- 'social media': 'social'}
+category_to_keyword = {
+ 'general': 'web',
+ 'news': 'news',
+ 'images': 'images',
+ 'videos': 'videos',
+}
# search-url
-url = 'https://api.qwant.com/api/search/{keyword}?count=10&offset={offset}&f=&{query}&t={keyword}&uiv=4'
+url = 'https://api.qwant.com/v3/search/{keyword}?{query}&count={count}&offset={offset}'
-# do search-request
def request(query, params):
- offset = (params['pageno'] - 1) * 10
+ """Qwant search request"""
+ keyword = category_to_keyword[categories[0]]
+ count = 10 # web: count must be equal to 10
- if categories[0] and categories[0] in category_to_keyword:
-
- params['url'] = url.format(keyword=category_to_keyword[categories[0]],
- query=urlencode({'q': query}),
- offset=offset)
+ if keyword == 'images':
+ count = 50
+ offset = (params['pageno'] - 1) * count
+ # count + offset must be lower than 250
+ offset = min(offset, 199)
else:
- params['url'] = url.format(keyword='web',
- query=urlencode({'q': query}),
- offset=offset)
+ offset = (params['pageno'] - 1) * count
+ # count + offset must be lower than 50
+ offset = min(offset, 40)
+
+ params['url'] = url.format(
+ keyword=keyword,
+ query=urlencode({'q': query}),
+ offset=offset,
+ count=count,
+ )
# add language tag
- if params['language'] != 'all':
- language = match_language(params['language'], supported_languages, language_aliases)
- params['url'] += '&locale=' + language.replace('-', '_').lower()
+ if params['language'] == 'all':
+ params['url'] += '&locale=en_US'
+ else:
+ language = match_language(
+ params['language'],
+ supported_languages,
+ language_aliases,
+ )
+ params['url'] += '&locale=' + language.replace('-', '_')
- params['headers']['User-Agent'] = 'Mozilla/5.0 (X11; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0'
+ params['raise_for_httperror'] = False
return params
-# get response from search-request
def response(resp):
+ """Get response from Qwant's search request"""
+ # pylint: disable=too-many-locals, too-many-branches, too-many-statements
+
+ keyword = category_to_keyword[categories[0]]
results = []
+ # load JSON result
search_results = loads(resp.text)
+ data = search_results.get('data', {})
+
+ # check for an API error
+ if search_results.get('status') != 'success':
+ msg = ",".join(
+ data.get(
+ 'message',
+ [
+ 'unknown',
+ ],
+ )
+ )
+ raise SearxEngineAPIException('API error::' + msg)
+
+ # raise for other errors
+ raise_for_httperror(resp)
+
+ if keyword == 'web':
+ # The WEB query contains a list named 'mainline'. This list can contain
+ # different result types (e.g. mainline[0]['type'] returns type of the
+ # result items in mainline[0]['items']
+ mainline = data.get('result', {}).get('items', {}).get('mainline', {})
+ else:
+ # Queries on News, Images and Videos do not have a list named 'mainline'
+ # in the response. The result items are directly in the list
+ # result['items'].
+ mainline = data.get('result', {}).get('items', [])
+ mainline = [
+ {'type': keyword, 'items': mainline},
+ ]
# return empty array if there are no results
- if 'data' not in search_results:
+ if not mainline:
return []
- data = search_results.get('data', {})
+ for row in mainline:
+
+ mainline_type = row.get('type', 'web')
+ if mainline_type != keyword:
+ continue
+
+ if mainline_type == 'ads':
+ # ignore adds
+ continue
- res = data.get('result', {})
-
- # parse results
- for result in res.get('items', {}):
-
- title = html_to_text(result['title'])
- res_url = result['url']
- content = html_to_text(result['desc'])
-
- if category_to_keyword.get(categories[0], '') == 'web':
- results.append({'title': title,
- 'content': content,
- 'url': res_url})
-
- elif category_to_keyword.get(categories[0], '') == 'images':
- thumbnail_src = result['thumbnail']
- img_src = result['media']
- results.append({'template': 'images.html',
- 'url': res_url,
- 'title': title,
- 'content': '',
- 'thumbnail_src': thumbnail_src,
- 'img_src': img_src})
-
- elif category_to_keyword.get(categories[0], '') == 'social':
- published_date = datetime.fromtimestamp(result['date'], None)
- img_src = result.get('img', None)
- results.append({'url': res_url,
- 'title': title,
- 'publishedDate': published_date,
- 'content': content,
- 'img_src': img_src})
-
- elif category_to_keyword.get(categories[0], '') == 'news':
- published_date = datetime.fromtimestamp(result['date'], None)
- media = result.get('media', [])
- if len(media) > 0:
- img_src = media[0].get('pict', {}).get('url', None)
- else:
+ mainline_items = row.get('items', [])
+ for item in mainline_items:
+
+ title = item.get('title', None)
+ res_url = item.get('url', None)
+
+ if mainline_type == 'web':
+ content = item['desc']
+ results.append(
+ {
+ 'title': title,
+ 'url': res_url,
+ 'content': content,
+ }
+ )
+
+ elif mainline_type == 'news':
+
+ pub_date = item['date']
+ if pub_date is not None:
+ pub_date = datetime.fromtimestamp(pub_date)
+ news_media = item.get('media', [])
img_src = None
- results.append({'url': res_url,
- 'title': title,
- 'publishedDate': published_date,
- 'content': content,
- 'img_src': img_src})
+ if news_media:
+ img_src = news_media[0].get('pict', {}).get('url', None)
+ results.append(
+ {
+ 'title': title,
+ 'url': res_url,
+ 'publishedDate': pub_date,
+ 'img_src': img_src,
+ }
+ )
+
+ elif mainline_type == 'images':
+ thumbnail = item['thumbnail']
+ img_src = item['media']
+ results.append(
+ {
+ 'title': title,
+ 'url': res_url,
+ 'template': 'images.html',
+ 'thumbnail_src': thumbnail,
+ 'img_src': img_src,
+ }
+ )
+
+ elif mainline_type == 'videos':
+ # some videos do not have a description: while qwant-video
+ # returns an empty string, such video from a qwant-web query
+ # miss the 'desc' key.
+ d, s, c = item.get('desc'), item.get('source'), item.get('channel')
+ content_parts = []
+ if d:
+ content_parts.append(d)
+ if s:
+ content_parts.append("%s: %s " % (gettext("Source"), s))
+ if c:
+ content_parts.append("%s: %s " % (gettext("Channel"), c))
+ content = ' // '.join(content_parts)
+ length = item['duration']
+ if length is not None:
+ length = timedelta(milliseconds=length)
+ pub_date = item['date']
+ if pub_date is not None:
+ pub_date = datetime.fromtimestamp(pub_date)
+ thumbnail = item['thumbnail']
+ # from some locations (DE and others?) the s2 link do
+ # response a 'Please wait ..' but does not deliver the thumbnail
+ thumbnail = thumbnail.replace('https://s2.qwant.com', 'https://s1.qwant.com', 1)
+ results.append(
+ {
+ 'title': title,
+ 'url': res_url,
+ 'content': content,
+ 'publishedDate': pub_date,
+ 'thumbnail': thumbnail,
+ 'template': 'videos.html',
+ 'length': length,
+ }
+ )
return results
@@ -119,16 +242,15 @@ def response(resp):
def _fetch_supported_languages(resp):
# list of regions is embedded in page as a js object
response_text = resp.text
- response_text = response_text[response_text.find('regionalisation'):]
- response_text = response_text[response_text.find('{'):response_text.find(');')]
+ response_text = response_text[response_text.find('INITIAL_PROPS'):]
+ response_text = response_text[response_text.find('{'): response_text.find('</script>')]
regions_json = loads(response_text)
supported_languages = []
- for lang in regions_json['languages'].values():
- if lang['code'] == 'nb':
- lang['code'] = 'no'
- for country in lang['countries']:
- supported_languages.append(lang['code'] + '-' + country)
+ for country, langs in regions_json['locales'].items():
+ for lang in langs['langs']:
+ lang_code = "{lang}-{country}".format(lang=lang, country=country)
+ supported_languages.append(lang_code)
return supported_languages
diff --git a/searx/engines/recoll.py b/searx/engines/recoll.py
new file mode 100644
index 0000000..42f2858
--- /dev/null
+++ b/searx/engines/recoll.py
@@ -0,0 +1,111 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Recoll (local search engine)
+"""
+
+from datetime import date, timedelta
+from json import loads
+from urllib.parse import urlencode, quote
+
+# about
+about = {
+ "website": None,
+ "wikidata_id": 'Q15735774',
+ "official_api_documentation": 'https://www.lesbonscomptes.com/recoll/',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
+# engine dependent config
+paging = True
+time_range_support = True
+
+# parameters from settings.yml
+base_url = None
+search_dir = ''
+mount_prefix = None
+dl_prefix = None
+
+# embedded
+embedded_url = '<{ttype} controls height="166px" ' +\
+ 'src="{url}" type="{mtype}"></{ttype}>'
+
+
+# helper functions
+def get_time_range(time_range):
+ sw = {
+ 'day': 1,
+ 'week': 7,
+ 'month': 30,
+ 'year': 365
+ }
+
+ offset = sw.get(time_range, 0)
+ if not offset:
+ return ''
+
+ return (date.today() - timedelta(days=offset)).isoformat()
+
+
+# do search-request
+def request(query, params):
+ search_after = get_time_range(params['time_range'])
+ search_url = base_url + 'json?{query}&highlight=0'
+ params['url'] = search_url.format(query=urlencode({
+ 'query': query,
+ 'page': params['pageno'],
+ 'after': search_after,
+ 'dir': search_dir}))
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+
+ response_json = loads(resp.text)
+
+ if not response_json:
+ return []
+
+ for result in response_json.get('results', []):
+ title = result['label']
+ url = result['url'].replace('file://' + mount_prefix, dl_prefix)
+ content = '{}'.format(result['snippet'])
+
+ # append result
+ item = {'url': url,
+ 'title': title,
+ 'content': content,
+ 'template': 'files.html'}
+
+ if result['size']:
+ item['size'] = int(result['size'])
+
+ for parameter in ['filename', 'abstract', 'author', 'mtype', 'time']:
+ if result[parameter]:
+ item[parameter] = result[parameter]
+
+ # facilitate preview support for known mime types
+ if 'mtype' in result and '/' in result['mtype']:
+ (mtype, subtype) = result['mtype'].split('/')
+ item['mtype'] = mtype
+ item['subtype'] = subtype
+
+ if mtype in ['audio', 'video']:
+ item['embedded'] = embedded_url.format(
+ ttype=mtype,
+ url=quote(url.encode('utf8'), '/:'),
+ mtype=result['mtype'])
+
+ if mtype in ['image'] and subtype in ['bmp', 'gif', 'jpeg', 'png']:
+ item['img_src'] = url
+
+ results.append(item)
+
+ if 'nres' in response_json:
+ results.append({'number_of_results': response_json['nres']})
+
+ return results
diff --git a/searx/engines/reddit.py b/searx/engines/reddit.py
index d197249..ee734ac 100644
--- a/searx/engines/reddit.py
+++ b/searx/engines/reddit.py
@@ -1,18 +1,21 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Reddit
-
- @website https://www.reddit.com/
- @provide-api yes (https://www.reddit.com/dev/api)
-
- @using-api yes
- @results JSON
- @stable yes
- @parse url, title, content, thumbnail, publishedDate
"""
import json
from datetime import datetime
-from searx.url_utils import urlencode, urljoin, urlparse
+from urllib.parse import urlencode, urljoin, urlparse
+
+# about
+about = {
+ "website": 'https://www.reddit.com/',
+ "wikidata_id": 'Q1136',
+ "official_api_documentation": 'https://www.reddit.com/dev/api',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
# engine dependent config
categories = ['general', 'images', 'news', 'social media']
diff --git a/searx/engines/redis_server.py b/searx/engines/redis_server.py
new file mode 100644
index 0000000..51c064b
--- /dev/null
+++ b/searx/engines/redis_server.py
@@ -0,0 +1,69 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Redis engine (Offline)
+"""
+
+# pylint: disable=missing-function-docstring
+# pylint: disable=import-error
+
+import redis
+
+engine_type = 'offline'
+# redis connection variables
+host = '127.0.0.1'
+port = 6379
+password = ''
+db = 0
+# engine specific variables
+paging = False
+result_template = 'key-value.html'
+exact_match_only = True
+
+_redis_client = None
+
+
+def init(_):
+ connect()
+
+
+def connect():
+ global _redis_client
+ _redis_client = redis.StrictRedis(
+ host=host,
+ port=port,
+ db=db,
+ password=password or None,
+ decode_responses=True,
+ )
+
+
+def search(query, params):
+ if not exact_match_only:
+ return search_keys(query)
+ ret = _redis_client.hgetall(query)
+ if ret:
+ ret['template'] = result_template
+ return [ret]
+ if ' ' in query:
+ qset, rest = query.split(' ', 1)
+ ret = []
+ for res in _redis_client.hscan_iter(qset, match='*{}*'.format(rest)):
+ ret.append({res[0]: res[1], 'template': result_template})
+ return ret
+ return []
+
+
+def search_keys(query):
+ ret = []
+ for key in _redis_client.scan_iter(match='*{}*'.format(query)):
+ key_type = _redis_client.type(key)
+ res = None
+ if key_type == 'hash':
+ res = _redis_client.hgetall(key)
+ elif key_type == 'list':
+ res = dict(enumerate(_redis_client.lrange(key, 0, -1)))
+ if res:
+ res['template'] = result_template
+ res['redis_key'] = key
+ ret.append(res)
+ return ret
diff --git a/searx/engines/rumble.py b/searx/engines/rumble.py
new file mode 100644
index 0000000..4071424
--- /dev/null
+++ b/searx/engines/rumble.py
@@ -0,0 +1,81 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Rumble (Videos)
+"""
+from urllib.parse import urlencode
+from lxml import html
+from datetime import datetime
+
+# about
+from searx.utils import extract_text
+
+about = {
+ "website": 'https://rumble.com/',
+ "wikidata_id": 'Q104765127',
+ "official_api_documentation": 'https://help.rumble.com/',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+
+# engine dependent config
+categories = ['videos']
+paging = True
+
+# search-url
+base_url = 'https://rumble.com'
+# https://rumble.com/search/video?q=searx&page=3
+search_url = base_url + '/search/video?{query}&page={pageno}'
+
+url_xpath = './/a[@class="video-item--a"]/@href'
+thumbnail_xpath = './/img[@class="video-item--img"]/@src'
+title_xpath = './/h3[@class="video-item--title"]'
+published_date = './/time[@class="video-item--meta video-item--time"]/@datetime'
+earned_xpath = './/span[@class="video-item--meta video-item--earned"]/@data-value'
+views_xpath = './/span[@class="video-item--meta video-item--views"]/@data-value'
+rumbles_xpath = './/span[@class="video-item--meta video-item--rumbles"]/@data-value'
+author_xpath = './/div[@class="ellipsis-1"]'
+length_xpath = './/span[@class="video-item--duration"]/@data-value'
+
+
+def request(query, params):
+ params['url'] = search_url.format(pageno=params['pageno'], query=urlencode({'q': query}))
+ return params
+
+
+def response(resp):
+ results = []
+ dom = html.fromstring(resp.text)
+ results_dom = dom.xpath('//li[contains(@class, "video-listing-entry")]')
+
+ if not results_dom:
+ return []
+
+ for result_dom in results_dom:
+ url = base_url + extract_text(result_dom.xpath(url_xpath))
+ thumbnail = extract_text(result_dom.xpath(thumbnail_xpath))
+ title = extract_text(result_dom.xpath(title_xpath))
+ p_date = extract_text(result_dom.xpath(published_date))
+ # fix offset date for line 644 webapp.py check
+ fixed_date = datetime.strptime(p_date, '%Y-%m-%dT%H:%M:%S%z')
+ earned = extract_text(result_dom.xpath(earned_xpath))
+ views = extract_text(result_dom.xpath(views_xpath))
+ rumbles = extract_text(result_dom.xpath(rumbles_xpath))
+ author = extract_text(result_dom.xpath(author_xpath))
+ length = extract_text(result_dom.xpath(length_xpath))
+ if earned:
+ content = f"{views} views - {rumbles} rumbles - ${earned}"
+ else:
+ content = f"{views} views - {rumbles} rumbles"
+
+ results.append({
+ 'url': url,
+ 'title': title,
+ 'content': content,
+ 'author': author,
+ 'length': length,
+ 'template': 'videos.html',
+ 'publishedDate': fixed_date,
+ 'thumbnail': thumbnail,
+ })
+ return results
diff --git a/searx/engines/scanr_structures.py b/searx/engines/scanr_structures.py
index 7208dcb..51c9252 100644
--- a/searx/engines/scanr_structures.py
+++ b/searx/engines/scanr_structures.py
@@ -1,18 +1,21 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
ScanR Structures (Science)
-
- @website https://scanr.enseignementsup-recherche.gouv.fr
- @provide-api yes (https://scanr.enseignementsup-recherche.gouv.fr/api/swagger-ui.html)
-
- @using-api yes
- @results JSON
- @stable yes
- @parse url, title, content, img_src
"""
from json import loads, dumps
from searx.utils import html_to_text
+# about
+about = {
+ "website": 'https://scanr.enseignementsup-recherche.gouv.fr',
+ "wikidata_id": 'Q44105684',
+ "official_api_documentation": 'https://scanr.enseignementsup-recherche.gouv.fr/opendata',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
# engine dependent config
categories = ['science']
paging = True
@@ -29,7 +32,7 @@ def request(query, params):
params['url'] = search_url
params['method'] = 'POST'
params['headers']['Content-type'] = "application/json"
- params['data'] = dumps({"query": query.decode('utf-8'),
+ params['data'] = dumps({"query": query,
"searchField": "ALL",
"sortDirection": "ASC",
"sortOrder": "RELEVANCY",
diff --git a/searx/engines/searchcode_code.py b/searx/engines/searchcode_code.py
index 789e8e7..8c1330d 100644
--- a/searx/engines/searchcode_code.py
+++ b/searx/engines/searchcode_code.py
@@ -1,18 +1,20 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
- Searchcode (It)
-
- @website https://searchcode.com/
- @provide-api yes (https://searchcode.com/api/)
-
- @using-api yes
- @results JSON
- @stable yes
- @parse url, title, content
+ Searchcode (IT)
"""
from json import loads
-from searx.url_utils import urlencode
-
+from urllib.parse import urlencode
+
+# about
+about = {
+ "website": 'https://searchcode.com/',
+ "wikidata_id": None,
+ "official_api_documentation": 'https://searchcode.com/api/',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
# engine dependent config
categories = ['it']
diff --git a/searx/engines/searchcode_doc.py b/searx/engines/searchcode_doc.py
deleted file mode 100644
index 4b8e9a8..0000000
--- a/searx/engines/searchcode_doc.py
+++ /dev/null
@@ -1,49 +0,0 @@
-"""
- Searchcode (It)
-
- @website https://searchcode.com/
- @provide-api yes (https://searchcode.com/api/)
-
- @using-api yes
- @results JSON
- @stable yes
- @parse url, title, content
-"""
-
-from json import loads
-from searx.url_utils import urlencode
-
-# engine dependent config
-categories = ['it']
-paging = True
-
-# search-url
-url = 'https://searchcode.com/'
-search_url = url + 'api/search_IV/?{query}&p={pageno}'
-
-
-# do search-request
-def request(query, params):
- params['url'] = search_url.format(query=urlencode({'q': query}), pageno=params['pageno'] - 1)
-
- return params
-
-
-# get response from search-request
-def response(resp):
- results = []
-
- search_results = loads(resp.text)
-
- # parse results
- for result in search_results.get('results', []):
- href = result['url']
- title = "[{}] {} {}".format(result['type'], result['namespace'], result['name'])
-
- # append result
- results.append({'url': href,
- 'title': title,
- 'content': result['description']})
-
- # return results
- return results
diff --git a/searx/engines/searx_engine.py b/searx/engines/searx_engine.py
index d4c85bd..c4f016a 100644
--- a/searx/engines/searx_engine.py
+++ b/searx/engines/searx_engine.py
@@ -1,18 +1,20 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Searx (all)
-
- @website https://github.com/asciimoo/searx
- @provide-api yes (https://asciimoo.github.io/searx/dev/search_api.html)
-
- @using-api yes
- @results JSON
- @stable yes (using api)
- @parse url, title, content
"""
from json import loads
from searx.engines import categories as searx_categories
+# about
+about = {
+ "website": 'https://github.com/searx/searx',
+ "wikidata_id": 'Q17639196',
+ "official_api_documentation": 'https://searx.github.io/searx/dev/search_api.html',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
categories = searx_categories.keys()
diff --git a/searx/engines/seedpeer.py b/searx/engines/seedpeer.py
deleted file mode 100644
index f9b1f99..0000000
--- a/searx/engines/seedpeer.py
+++ /dev/null
@@ -1,78 +0,0 @@
-# Seedpeer (Videos, Music, Files)
-#
-# @website https://seedpeer.me
-# @provide-api no (nothing found)
-#
-# @using-api no
-# @results HTML (using search portal)
-# @stable yes (HTML can change)
-# @parse url, title, content, seed, leech, magnetlink
-
-from lxml import html
-from json import loads
-from operator import itemgetter
-from searx.url_utils import quote, urljoin
-from searx.engines.xpath import extract_text
-
-
-url = 'https://seedpeer.me/'
-search_url = url + 'search/{search_term}?page={page_no}'
-torrent_file_url = url + 'torrent/{torrent_hash}'
-
-# specific xpath variables
-script_xpath = '//script[@type="text/javascript"][not(@src)]'
-torrent_xpath = '(//table)[2]/tbody/tr'
-link_xpath = '(./td)[1]/a/@href'
-age_xpath = '(./td)[2]'
-size_xpath = '(./td)[3]'
-
-
-# do search-request
-def request(query, params):
- params['url'] = search_url.format(search_term=quote(query),
- page_no=params['pageno'])
- return params
-
-
-# get response from search-request
-def response(resp):
- results = []
- dom = html.fromstring(resp.text)
- result_rows = dom.xpath(torrent_xpath)
-
- try:
- script_element = dom.xpath(script_xpath)[0]
- json_string = script_element.text[script_element.text.find('{'):]
- torrents_json = loads(json_string)
- except:
- return []
-
- # parse results
- for torrent_row, torrent_json in zip(result_rows, torrents_json['data']['list']):
- title = torrent_json['name']
- seed = int(torrent_json['seeds'])
- leech = int(torrent_json['peers'])
- size = int(torrent_json['size'])
- torrent_hash = torrent_json['hash']
-
- torrentfile = torrent_file_url.format(torrent_hash=torrent_hash)
- magnetlink = 'magnet:?xt=urn:btih:{}'.format(torrent_hash)
-
- age = extract_text(torrent_row.xpath(age_xpath))
- link = torrent_row.xpath(link_xpath)[0]
-
- href = urljoin(url, link)
-
- # append result
- results.append({'url': href,
- 'title': title,
- 'content': age,
- 'seed': seed,
- 'leech': leech,
- 'filesize': size,
- 'torrentfile': torrentfile,
- 'magnetlink': magnetlink,
- 'template': 'torrent.html'})
-
- # return results sorted by seeder
- return sorted(results, key=itemgetter('seed'), reverse=True)
diff --git a/searx/engines/semantic_scholar.py b/searx/engines/semantic_scholar.py
new file mode 100644
index 0000000..aa750ec
--- /dev/null
+++ b/searx/engines/semantic_scholar.py
@@ -0,0 +1,79 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Semantic Scholar (Science)
+"""
+
+from json import dumps, loads
+from datetime import datetime
+
+
+about = {
+ "website": 'https://www.semanticscholar.org/',
+ "wikidata_id": 'Q22908627',
+ "official_api_documentation": 'https://api.semanticscholar.org/',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+paging = True
+search_url = 'https://www.semanticscholar.org/api/1/search'
+paper_url = 'https://www.semanticscholar.org/paper'
+
+
+def request(query, params):
+ params['url'] = search_url
+ params['method'] = 'POST'
+ params['headers']['content-type'] = 'application/json'
+ params['data'] = dumps({
+ "queryString": query,
+ "page": params['pageno'],
+ "pageSize": 10,
+ "sort": "relevance",
+ "useFallbackRankerService": False,
+ "useFallbackSearchCluster": False,
+ "getQuerySuggestions": False,
+ "authors": [],
+ "coAuthors": [],
+ "venues": [],
+ "performTitleMatch": True,
+ })
+ return params
+
+
+def response(resp):
+ res = loads(resp.text)
+ results = []
+
+ for result in res['results']:
+ item = {}
+ metadata = []
+
+ url = result.get('primaryPaperLink', {}).get('url')
+ if not url and result.get('links'):
+ url = result.get('links')[0]
+ if not url:
+ alternatePaperLinks = result.get('alternatePaperLinks')
+ if alternatePaperLinks:
+ url = alternatePaperLinks[0].get('url')
+ if not url:
+ url = paper_url + '/%s' % result['id']
+
+ item['url'] = url
+
+ item['title'] = result['title']['text']
+ item['content'] = result['paperAbstract']['text']
+
+ metadata = result.get('fieldsOfStudy') or []
+ venue = result.get('venue', {}).get('text')
+ if venue:
+ metadata.append(venue)
+ if metadata:
+ item['metadata'] = ', '.join(metadata)
+
+ pubDate = result.get('pubDate')
+ if pubDate:
+ item['publishedDate'] = datetime.strptime(pubDate, "%Y-%m-%d")
+
+ results.append(item)
+
+ return results
diff --git a/searx/engines/sepiasearch.py b/searx/engines/sepiasearch.py
new file mode 100644
index 0000000..8ccde40
--- /dev/null
+++ b/searx/engines/sepiasearch.py
@@ -0,0 +1,102 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ SepiaSearch (Videos)
+"""
+
+from json import loads
+from dateutil import parser, relativedelta
+from urllib.parse import urlencode
+from datetime import datetime
+
+# about
+about = {
+ "website": 'https://sepiasearch.org',
+ "wikidata_id": None,
+ "official_api_documentation": "https://framagit.org/framasoft/peertube/search-index/-/tree/master/server/controllers/api", # NOQA
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
+categories = ['videos']
+paging = True
+time_range_support = True
+safesearch = True
+supported_languages = [
+ 'en', 'fr', 'ja', 'eu', 'ca', 'cs', 'eo', 'el',
+ 'de', 'it', 'nl', 'es', 'oc', 'gd', 'zh', 'pt',
+ 'sv', 'pl', 'fi', 'ru'
+]
+base_url = 'https://sepiasearch.org/api/v1/search/videos'
+
+safesearch_table = {
+ 0: 'both',
+ 1: 'false',
+ 2: 'false'
+}
+
+time_range_table = {
+ 'day': relativedelta.relativedelta(),
+ 'week': relativedelta.relativedelta(weeks=-1),
+ 'month': relativedelta.relativedelta(months=-1),
+ 'year': relativedelta.relativedelta(years=-1)
+}
+
+
+embedded_url = '<iframe width="540" height="304" src="{url}" frameborder="0" allowfullscreen></iframe>'
+
+
+def minute_to_hm(minute):
+ if isinstance(minute, int):
+ return "%d:%02d" % (divmod(minute, 60))
+ return None
+
+
+def request(query, params):
+ params['url'] = base_url + '?' + urlencode({
+ 'search': query,
+ 'start': (params['pageno'] - 1) * 10,
+ 'count': 10,
+ 'sort': '-match',
+ 'nsfw': safesearch_table[params['safesearch']]
+ })
+
+ language = params['language'].split('-')[0]
+ if language in supported_languages:
+ params['url'] += '&languageOneOf[]=' + language
+ if params['time_range'] in time_range_table:
+ time = datetime.now().date() + time_range_table[params['time_range']]
+ params['url'] += '&startDate=' + time.isoformat()
+
+ return params
+
+
+def response(resp):
+ results = []
+
+ search_results = loads(resp.text)
+
+ if 'data' not in search_results:
+ return []
+
+ for result in search_results['data']:
+ title = result['name']
+ content = result['description']
+ thumbnail = result['thumbnailUrl']
+ publishedDate = parser.parse(result['publishedAt'])
+ embedded = embedded_url.format(url=result.get('embedUrl'))
+ author = result.get('account', {}).get('displayName')
+ length = minute_to_hm(result.get('duration'))
+ url = result['url']
+
+ results.append({'url': url,
+ 'title': title,
+ 'content': content,
+ 'author': author,
+ 'length': length,
+ 'template': 'videos.html',
+ 'publishedDate': publishedDate,
+ 'embedded': embedded,
+ 'thumbnail': thumbnail})
+
+ return results
diff --git a/searx/engines/seznam.py b/searx/engines/seznam.py
new file mode 100644
index 0000000..776281f
--- /dev/null
+++ b/searx/engines/seznam.py
@@ -0,0 +1,67 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Seznam
+"""
+
+from urllib.parse import urlencode, urlparse
+from lxml import html
+from searx.poolrequests import get
+from searx.exceptions import SearxEngineAccessDeniedException
+from searx.utils import (
+ extract_text,
+ eval_xpath_list,
+ eval_xpath_getindex,
+ eval_xpath,
+)
+
+# about
+about = {
+ "website": "https://www.seznam.cz/",
+ "wikidata_id": "Q3490485",
+ "official_api_documentation": "https://api.sklik.cz/",
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": "HTML",
+}
+
+base_url = 'https://search.seznam.cz/'
+
+
+def request(query, params):
+ response_index = get(base_url, headers=params['headers'], raise_for_httperror=True)
+ dom = html.fromstring(response_index.text)
+
+ url_params = {
+ 'q': query,
+ 'oq': query,
+ }
+ for e in eval_xpath_list(dom, '//input[@type="hidden"]'):
+ name = e.get('name')
+ value = e.get('value')
+ url_params[name] = value
+
+ params['url'] = base_url + '?' + urlencode(url_params)
+ params['cookies'] = response_index.cookies
+ return params
+
+
+def response(resp):
+ resp_url = urlparse(resp.url)
+ if resp_url.path.startswith('/verify'):
+ raise SearxEngineAccessDeniedException()
+
+ results = []
+
+ dom = html.fromstring(resp.content.decode())
+ for result_element in eval_xpath_list(dom, '//div[@data-dot="results"]/div'):
+ result_data = eval_xpath_getindex(result_element, './/div[contains(@class, "bec586")]', 0, default=None)
+ if result_data is None:
+ continue
+ title_element = eval_xpath_getindex(result_element, './/h3/a', 0)
+ results.append({
+ 'url': title_element.get('href'),
+ 'title': extract_text(title_element),
+ 'content': extract_text(eval_xpath(result_data, './/div[@class="_3eded7"]')),
+ })
+
+ return results
diff --git a/searx/engines/sjp.py b/searx/engines/sjp.py
new file mode 100644
index 0000000..99793dd
--- /dev/null
+++ b/searx/engines/sjp.py
@@ -0,0 +1,94 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Słownik Języka Polskiego
+
+Dictionary of the polish language from PWN (sjp.pwn)
+"""
+
+from lxml.html import fromstring
+from searx import logger
+from searx.utils import extract_text
+from searx.raise_for_httperror import raise_for_httperror
+
+logger = logger.getChild('sjp engine')
+
+# about
+about = {
+ "website": 'https://sjp.pwn.pl',
+ "wikidata_id": 'Q55117369',
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+
+categories = ['general']
+paging = False
+
+URL = 'https://sjp.pwn.pl'
+SEARCH_URL = URL + '/szukaj/{query}.html'
+
+word_xpath = '//div[@class="query"]'
+dict_xpath = ['//div[@class="wyniki sjp-so-wyniki sjp-so-anchor"]',
+ '//div[@class="wyniki sjp-wyniki sjp-anchor"]',
+ '//div[@class="wyniki sjp-doroszewski-wyniki sjp-doroszewski-anchor"]']
+
+
+def request(query, params):
+ params['url'] = SEARCH_URL.format(query=query)
+ logger.debug(f"query_url --> {params['url']}")
+ return params
+
+
+def response(resp):
+ results = []
+
+ raise_for_httperror(resp)
+ dom = fromstring(resp.text)
+ word = extract_text(dom.xpath(word_xpath))
+
+ definitions = []
+
+ for dict_src in dict_xpath:
+ for src in dom.xpath(dict_src):
+ src_text = extract_text(src.xpath('.//span[@class="entry-head-title"]/text()')).strip()
+
+ src_defs = []
+ for def_item in src.xpath('.//div[contains(@class, "ribbon-element")]'):
+ if def_item.xpath('./div[@class="znacz"]'):
+ sub_defs = []
+ for def_sub_item in def_item.xpath('./div[@class="znacz"]'):
+ def_sub_text = extract_text(def_sub_item).lstrip('0123456789. ')
+ sub_defs.append(def_sub_text)
+ src_defs.append((word, sub_defs))
+ else:
+ def_text = extract_text(def_item).strip()
+ def_link = def_item.xpath('./span/a/@href')
+ if 'doroszewski' in def_link[0]:
+ def_text = f"<a href='{def_link[0]}'>{def_text}</a>"
+ src_defs.append((def_text, ''))
+
+ definitions.append((src_text, src_defs))
+
+ if not definitions:
+ return results
+
+ infobox = ''
+ for src in definitions:
+ infobox += f"<div><small>{src[0]}</small>"
+ infobox += "<ul>"
+ for (def_text, sub_def) in src[1]:
+ infobox += f"<li>{def_text}</li>"
+ if sub_def:
+ infobox += "<ol>"
+ for sub_def_text in sub_def:
+ infobox += f"<li>{sub_def_text}</li>"
+ infobox += "</ol>"
+ infobox += "</ul></div>"
+
+ results.append({
+ 'infobox': word,
+ 'content': infobox,
+ })
+
+ return results
diff --git a/searx/engines/solidtorrents.py b/searx/engines/solidtorrents.py
new file mode 100644
index 0000000..dad36cc
--- /dev/null
+++ b/searx/engines/solidtorrents.py
@@ -0,0 +1,53 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""Solid Torrents
+
+"""
+
+# pylint: disable=missing-function-docstring
+
+from json import loads
+from urllib.parse import urlencode
+from searx import logger
+
+logger = logger.getChild('solidtor engine')
+
+about = {
+ "website": 'https://www.solidtorrents.net/',
+ "wikidata_id": None,
+ "official_api_documentation": None,
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
+categories = ['files']
+paging = True
+
+base_url = 'https://www.solidtorrents.net/'
+search_url = base_url + 'api/v1/search?{query}'
+
+
+def request(query, params):
+ skip = (params['pageno'] - 1) * 20
+ query = urlencode({'q': query, 'skip': skip})
+ params['url'] = search_url.format(query=query)
+ logger.debug("query_url --> %s", params['url'])
+ return params
+
+
+def response(resp):
+ results = []
+ search_results = loads(resp.text)
+
+ for result in search_results["results"]:
+ results.append({
+ 'infohash': result["infohash"],
+ 'seed': result["swarm"]["seeders"],
+ 'leech': result["swarm"]["leechers"],
+ 'title': result["title"],
+ 'url': "https://solidtorrents.net/view/" + result["_id"],
+ 'filesize': result["size"],
+ 'magnetlink': result["magnet"],
+ 'template': "torrent.html",
+ })
+ return results
diff --git a/searx/engines/solr.py b/searx/engines/solr.py
new file mode 100644
index 0000000..0bfcbab
--- /dev/null
+++ b/searx/engines/solr.py
@@ -0,0 +1,74 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Solr
+"""
+
+# pylint: disable=global-statement, missing-function-docstring
+
+from json import loads
+from urllib.parse import urlencode
+from searx.exceptions import SearxEngineAPIException
+
+
+base_url = 'http://localhost:8983'
+collection = ''
+rows = 10
+sort = '' # sorting: asc or desc
+field_list = 'name' # list of field names to display on the UI
+default_fields = '' # default field to query
+query_fields = '' # query fields
+_search_url = ''
+paging = True
+
+
+def init(_):
+ if collection == '':
+ raise ValueError('collection cannot be empty')
+
+ global _search_url
+ _search_url = base_url + '/solr/' + collection + '/select?{params}'
+
+
+def request(query, params):
+ query_params = {'q': query, 'rows': rows}
+ if field_list != '':
+ query_params['fl'] = field_list
+ if query_fields != '':
+ query_params['qf'] = query_fields
+ if default_fields != '':
+ query_params['df'] = default_fields
+ if sort != '':
+ query_params['sort'] = sort
+
+ if 'pageno' in params:
+ query_params['start'] = rows * (params['pageno'] - 1)
+
+ params['url'] = _search_url.format(params=urlencode(query_params))
+
+ return params
+
+
+def response(resp):
+ resp_json = __get_response(resp)
+
+ results = []
+ for result in resp_json['response']['docs']:
+ r = {key: str(value) for key, value in result.items()}
+ if len(r) == 0:
+ continue
+ r['template'] = 'key-value.html'
+ results.append(r)
+
+ return results
+
+
+def __get_response(resp):
+ try:
+ resp_json = loads(resp.text)
+ except Exception as e:
+ raise SearxEngineAPIException("failed to parse response") from e
+
+ if 'error' in resp_json:
+ raise SearxEngineAPIException(resp_json['error']['msg'])
+
+ return resp_json
diff --git a/searx/engines/soundcloud.py b/searx/engines/soundcloud.py
index 284689b..b3e3383 100644
--- a/searx/engines/soundcloud.py
+++ b/searx/engines/soundcloud.py
@@ -1,27 +1,25 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Soundcloud (Music)
-
- @website https://soundcloud.com
- @provide-api yes (https://developers.soundcloud.com/)
-
- @using-api yes
- @results JSON
- @stable yes
- @parse url, title, content, publishedDate, embedded
"""
import re
from json import loads
from lxml import html
from dateutil import parser
+from urllib.parse import quote_plus, urlencode
from searx import logger
from searx.poolrequests import get as http_get
-from searx.url_utils import quote_plus, urlencode
-try:
- from cStringIO import StringIO
-except:
- from io import StringIO
+# about
+about = {
+ "website": 'https://soundcloud.com',
+ "wikidata_id": 'Q568769',
+ "official_api_documentation": 'https://developers.soundcloud.com/',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
# engine dependent config
categories = ['music']
@@ -57,11 +55,11 @@ def get_client_id():
app_js_urls = [script_tag.get('src') for script_tag in script_tags if script_tag is not None]
# extracts valid app_js urls from soundcloud.com content
- for app_js_url in app_js_urls:
+ for app_js_url in app_js_urls[::-1]:
# gets app_js and searches for the clientid
response = http_get(app_js_url)
if response.ok:
- cids = cid_re.search(response.content.decode("utf-8"))
+ cids = cid_re.search(response.content.decode())
if cids is not None and len(cids.groups()):
return cids.groups()[0]
logger.warning("Unable to fetch guest client_id from SoundCloud, check parser!")
@@ -95,7 +93,7 @@ def response(resp):
for result in search_res.get('collection', []):
if result['kind'] in ('track', 'playlist'):
title = result['title']
- content = result['description']
+ content = result['description'] or ''
publishedDate = parser.parse(result['last_modified'])
uri = quote_plus(result['uri'])
embedded = embedded_url.format(uri=uri)
diff --git a/searx/engines/spotify.py b/searx/engines/spotify.py
index 00c3957..0ad8bfe 100644
--- a/searx/engines/spotify.py
+++ b/searx/engines/spotify.py
@@ -1,20 +1,23 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Spotify (Music)
-
- @website https://spotify.com
- @provide-api yes (https://developer.spotify.com/web-api/search-item/)
-
- @using-api yes
- @results JSON
- @stable yes
- @parse url, title, content, embedded
"""
from json import loads
-from searx.url_utils import urlencode
+from urllib.parse import urlencode
import requests
import base64
+# about
+about = {
+ "website": 'https://www.spotify.com',
+ "wikidata_id": 'Q689141',
+ "official_api_documentation": 'https://developer.spotify.com/web-api/search-item/',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
# engine dependent config
categories = ['music']
paging = True
@@ -39,8 +42,8 @@ def request(query, params):
'https://accounts.spotify.com/api/token',
data={'grant_type': 'client_credentials'},
headers={'Authorization': 'Basic ' + base64.b64encode(
- "{}:{}".format(api_client_id, api_client_secret).encode('utf-8')
- ).decode('utf-8')}
+ "{}:{}".format(api_client_id, api_client_secret).encode()
+ ).decode()}
)
j = loads(r.text)
params['headers'] = {'Authorization': 'Bearer {}'.format(j.get('access_token'))}
@@ -59,7 +62,7 @@ def response(resp):
if result['type'] == 'track':
title = result['name']
url = result['external_urls']['spotify']
- content = u'{} - {} - {}'.format(
+ content = '{} - {} - {}'.format(
result['artists'][0]['name'],
result['album']['name'],
result['name'])
diff --git a/searx/engines/springer.py b/searx/engines/springer.py
new file mode 100644
index 0000000..a9c32d8
--- /dev/null
+++ b/searx/engines/springer.py
@@ -0,0 +1,74 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""Springer Nature (science)
+
+"""
+
+# pylint: disable=missing-function-docstring
+
+from datetime import datetime
+from json import loads
+from urllib.parse import urlencode
+
+from searx import logger
+from searx.exceptions import SearxEngineAPIException
+
+logger = logger.getChild('Springer Nature engine')
+
+about = {
+ "website": 'https://www.springernature.com/',
+ "wikidata_id": 'Q21096327',
+ "official_api_documentation": 'https://dev.springernature.com/',
+ "use_official_api": True,
+ "require_api_key": True,
+ "results": 'JSON',
+}
+
+categories = ['science']
+paging = True
+nb_per_page = 10
+api_key = 'unset'
+
+base_url = 'https://api.springernature.com/metadata/json?'
+
+def request(query, params):
+ if api_key == 'unset':
+ raise SearxEngineAPIException('missing Springer-Nature API key')
+ args = urlencode({
+ 'q' : query,
+ 's' : nb_per_page * (params['pageno'] - 1),
+ 'p' : nb_per_page,
+ 'api_key' : api_key
+ })
+ params['url'] = base_url + args
+ logger.debug("query_url --> %s", params['url'])
+ return params
+
+
+def response(resp):
+ results = []
+ json_data = loads(resp.text)
+
+ for record in json_data['records']:
+ content = record['abstract'][0:500]
+ if len(record['abstract']) > len(content):
+ content += "..."
+ published = datetime.strptime(record['publicationDate'], '%Y-%m-%d')
+
+ metadata = [record[x] for x in [
+ 'publicationName',
+ 'identifier',
+ 'contentType',
+ ] if record.get(x) is not None]
+
+ metadata = ' / '.join(metadata)
+ if record.get('startingPage') and record.get('endingPage') is not None:
+ metadata += " (%(startingPage)s-%(endingPage)s)" % record
+
+ results.append({
+ 'title': record['title'],
+ 'url': record['url'][0]['value'].replace('http://', 'https://', 1),
+ 'content' : content,
+ 'publishedDate' : published,
+ 'metadata' : metadata
+ })
+ return results
diff --git a/searx/engines/sqlite.py b/searx/engines/sqlite.py
new file mode 100644
index 0000000..596f722
--- /dev/null
+++ b/searx/engines/sqlite.py
@@ -0,0 +1,51 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ SQLite database (Offline)
+"""
+
+# pylint: disable=missing-function-docstring
+
+import sqlite3
+
+engine_type = 'offline'
+database = ""
+query_str = ""
+limit = 10
+paging = True
+result_template = 'key-value.html'
+
+
+def init(engine_settings):
+ if 'query_str' not in engine_settings:
+ raise ValueError('query_str cannot be empty')
+
+ if not engine_settings['query_str'].lower().startswith('select '):
+ raise ValueError('only SELECT query is supported')
+
+
+def search(query, params):
+ query_params = {'query': query}
+ query_to_run = query_str + ' LIMIT {0} OFFSET {1}'.format(limit, (params['pageno'] - 1) * limit)
+
+ connection = sqlite3.connect(database)
+ cur = connection.cursor()
+ cur.execute(query_to_run, query_params)
+ results = _fetch_results(cur)
+ cur.close()
+ connection.close()
+
+ return results
+
+
+def _fetch_results(cur):
+ results = []
+ titles = [name for (name, _, _, _, _, _, _) in cur.description]
+
+ res = cur.fetchone()
+ while res:
+ result = dict(zip(titles, map(str, res)))
+ result['template'] = result_template
+ results.append(result)
+ res = cur.fetchone()
+
+ return results
diff --git a/searx/engines/stackexchange.py b/searx/engines/stackexchange.py
new file mode 100644
index 0000000..23eb3d7
--- /dev/null
+++ b/searx/engines/stackexchange.py
@@ -0,0 +1,67 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Stack Exchange API v2.3
+
+* https://api.stackexchange.com/
+
+"""
+
+import html
+from json import loads
+from urllib.parse import urlencode
+
+about = {
+ "website": 'https://stackexchange.com',
+ "wikidata_id": 'Q3495447',
+ "official_api_documentation": 'https://api.stackexchange.com/docs',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
+paging = True
+pagesize = 10
+
+api_site = 'stackoverflow'
+api_sort = 'activity'
+api_order = 'desc'
+
+# https://api.stackexchange.com/docs/advanced-search
+search_api = 'https://api.stackexchange.com/2.3/search/advanced?'
+
+
+def request(query, params):
+
+ args = urlencode({
+ 'q': query,
+ 'page': params['pageno'],
+ 'pagesize': pagesize,
+ 'site': api_site,
+ 'sort': api_sort,
+ 'order': api_order,
+ })
+ params['url'] = search_api + args
+
+ return params
+
+
+def response(resp):
+
+ results = []
+ json_data = loads(resp.text)
+
+ for result in json_data['items']:
+
+ content = "[%s]" % ", ".join(result['tags'])
+ content += " %s" % result['owner']['display_name']
+ if result['is_answered']:
+ content += ' // is answered'
+ content += " // score: %s" % result['score']
+
+ results.append({
+ 'url': "https://%s.com/q/%s" % (api_site, result['question_id']),
+ 'title': html.unescape(result['title']),
+ 'content': html.unescape(content),
+ })
+
+ return results
diff --git a/searx/engines/stackoverflow.py b/searx/engines/stackoverflow.py
index 25875aa..91eaa68 100644
--- a/searx/engines/stackoverflow.py
+++ b/searx/engines/stackoverflow.py
@@ -1,18 +1,22 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
- Stackoverflow (It)
-
- @website https://stackoverflow.com/
- @provide-api not clear (https://api.stackexchange.com/docs/advanced-search)
-
- @using-api no
- @results HTML
- @stable no (HTML can change)
- @parse url, title, content
+ Stackoverflow (IT)
"""
+from urllib.parse import urlencode, urljoin, urlparse
from lxml import html
-from searx.engines.xpath import extract_text
-from searx.url_utils import urlencode, urljoin
+from searx.utils import extract_text
+from searx.exceptions import SearxEngineCaptchaException
+
+# about
+about = {
+ "website": 'https://stackoverflow.com/',
+ "wikidata_id": 'Q549037',
+ "official_api_documentation": 'https://api.stackexchange.com/docs',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['it']
@@ -37,6 +41,10 @@ def request(query, params):
# get response from search-request
def response(resp):
+ resp_url = urlparse(resp.url)
+ if resp_url.path.startswith('/nocaptcha'):
+ raise SearxEngineCaptchaException()
+
results = []
dom = html.fromstring(resp.text)
diff --git a/searx/engines/startpage.py b/searx/engines/startpage.py
index 7656739..513f508 100644
--- a/searx/engines/startpage.py
+++ b/searx/engines/startpage.py
@@ -1,22 +1,40 @@
-# Startpage (Web)
-#
-# @website https://startpage.com
-# @provide-api no (nothing found)
-#
-# @using-api no
-# @results HTML
-# @stable no (HTML can change)
-# @parse url, title, content
-#
-# @todo paging
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# lint: pylint
+"""Startpage (Web)
+
+"""
-from lxml import html
-from dateutil import parser
-from datetime import datetime, timedelta
import re
-from searx.engines.xpath import extract_text
-from searx.languages import language_codes
-from searx.utils import eval_xpath
+from time import time
+
+from urllib.parse import urlencode
+from unicodedata import normalize, combining
+from datetime import datetime, timedelta
+
+from dateutil import parser
+from lxml import html
+from babel import Locale
+from babel.localedata import locale_identifiers
+
+from searx import logger
+from searx.poolrequests import get
+from searx.utils import extract_text, eval_xpath, match_language
+from searx.exceptions import (
+ SearxEngineResponseException,
+ SearxEngineCaptchaException,
+)
+
+logger = logger.getChild('startpage')
+
+# about
+about = {
+ "website": 'https://startpage.com',
+ "wikidata_id": 'Q2333295',
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['general']
@@ -25,42 +43,98 @@ categories = ['general']
# storing of qid's between mulitble search-calls
paging = True
-language_support = True
+supported_languages_url = 'https://www.startpage.com/do/settings'
# search-url
base_url = 'https://startpage.com/'
-search_url = base_url + 'do/search'
+search_url = base_url + 'sp/search?'
# specific xpath variables
# ads xpath //div[@id="results"]/div[@id="sponsored"]//div[@class="result"]
# not ads: div[@class="result"] are the direct childs of div[@id="results"]
-results_xpath = '//div[@class="w-gl__result"]'
-link_xpath = './/a[@class="w-gl__result-title"]'
+results_xpath = '//div[@class="w-gl__result__main"]'
+link_xpath = './/a[@class="w-gl__result-title result-link"]'
content_xpath = './/p[@class="w-gl__description"]'
+# timestamp of the last fetch of 'sc' code
+sc_code_ts = 0
+sc_code = ''
+
+
+def raise_captcha(resp):
+
+ if str(resp.url).startswith('https://www.startpage.com/sp/captcha'):
+ # suspend CAPTCHA for 7 days
+ raise SearxEngineCaptchaException(suspended_time=7 * 24 * 3600)
+
+
+def get_sc_code(headers):
+ """Get an actual `sc` argument from startpage's home page.
+
+ Startpage puts a `sc` argument on every link. Without this argument
+ startpage considers the request is from a bot. We do not know what is
+ encoded in the value of the `sc` argument, but it seems to be a kind of a
+ *time-stamp*. This *time-stamp* is valid for a few hours.
+
+ This function scrap a new *time-stamp* from startpage's home page every hour
+ (3000 sec).
+
+ """
+
+ global sc_code_ts, sc_code # pylint: disable=global-statement
+
+ if time() > (sc_code_ts + 3000):
+ logger.debug("query new sc time-stamp ...")
+
+ resp = get(base_url, headers=headers)
+ raise_captcha(resp)
+ dom = html.fromstring(resp.text)
+
+ try:
+ # href --> '/?sc=adrKJMgF8xwp20'
+ href = eval_xpath(dom, '//a[@class="footer-home__logo"]')[0].get('href')
+ except IndexError as exc:
+ # suspend startpage API --> https://github.com/searxng/searxng/pull/695
+ raise SearxEngineResponseException(
+ suspended_time=7 * 24 * 3600, message="PR-695: query new sc time-stamp failed!"
+ ) from exc
+
+ sc_code = href[5:]
+ sc_code_ts = time()
+ logger.debug("new value is: %s", sc_code)
+
+ return sc_code
+
# do search-request
def request(query, params):
- params['url'] = search_url
- params['method'] = 'POST'
- params['data'] = {
+ # pylint: disable=line-too-long
+ # The format string from Startpage's FFox add-on [1]::
+ #
+ # https://www.startpage.com/do/dsearch?query={searchTerms}&cat=web&pl=ext-ff&language=__MSG_extensionUrlLanguage__&extVersion=1.3.0
+ #
+ # [1] https://addons.mozilla.org/en-US/firefox/addon/startpage-private-search/
+
+ args = {
'query': query,
'page': params['pageno'],
'cat': 'web',
- 'cmd': 'process_search',
- 'engine0': 'v1all',
+ # 'pl': 'ext-ff',
+ # 'extVersion': '1.3.0',
+ # 'abp': "-1",
+ 'sc': get_sc_code(params['headers']),
}
# set language if specified
if params['language'] != 'all':
- language = 'english'
- for lc, _, _, lang in language_codes:
- if lc == params['language']:
- language = lang
- params['data']['language'] = language
- params['data']['lui'] = language
+ lang_code = match_language(params['language'], supported_languages, fallback=None)
+ if lang_code:
+ language_name = supported_languages[lang_code]['alias']
+ args['language'] = language_name
+ args['lui'] = language_name
+ params['url'] = search_url + urlencode(args)
return params
@@ -99,11 +173,14 @@ def response(resp):
if re.match(r"^([1-9]|[1-2][0-9]|3[0-1]) [A-Z][a-z]{2} [0-9]{4} \.\.\. ", content):
date_pos = content.find('...') + 4
date_string = content[0:date_pos - 5]
- published_date = parser.parse(date_string, dayfirst=True)
-
# fix content string
content = content[date_pos:]
+ try:
+ published_date = parser.parse(date_string, dayfirst=True)
+ except ValueError:
+ pass
+
# check if search result starts with something like: "5 days ago ... "
elif re.match(r"^[0-9]+ days? ago \.\.\. ", content):
date_pos = content.find('...') + 4
@@ -129,3 +206,64 @@ def response(resp):
# return results
return results
+
+
+# get supported languages from their site
+def _fetch_supported_languages(resp):
+ # startpage's language selector is a mess each option has a displayed name
+ # and a value, either of which may represent the language name in the native
+ # script, the language name in English, an English transliteration of the
+ # native name, the English name of the writing script used by the language,
+ # or occasionally something else entirely.
+
+ # this cases are so special they need to be hardcoded, a couple of them are mispellings
+ language_names = {
+ 'english_uk': 'en-GB',
+ 'fantizhengwen': ['zh-TW', 'zh-HK'],
+ 'hangul': 'ko',
+ 'malayam': 'ml',
+ 'norsk': 'nb',
+ 'sinhalese': 'si',
+ 'sudanese': 'su'
+ }
+
+ # get the English name of every language known by babel
+ language_names.update(
+ {
+ # fmt: off
+ name.lower(): lang_code
+ # pylint: disable=protected-access
+ for lang_code, name in Locale('en')._data['languages'].items()
+ # fmt: on
+ }
+ )
+
+ # get the native name of every language known by babel
+ for lang_code in filter(lambda lang_code: lang_code.find('_') == -1, locale_identifiers()):
+ native_name = Locale(lang_code).get_language_name().lower()
+ # add native name exactly as it is
+ language_names[native_name] = lang_code
+
+ # add "normalized" language name (i.e. français becomes francais and español becomes espanol)
+ unaccented_name = ''.join(filter(lambda c: not combining(c), normalize('NFKD', native_name)))
+ if len(unaccented_name) == len(unaccented_name.encode()):
+ # add only if result is ascii (otherwise "normalization" didn't work)
+ language_names[unaccented_name] = lang_code
+
+ dom = html.fromstring(resp.text)
+ sp_lang_names = []
+ for option in dom.xpath('//form[@id="settings-form"]//select[@name="language"]/option'):
+ sp_lang_names.append((option.get('value'), extract_text(option).lower()))
+
+ supported_languages = {}
+ for sp_option_value, sp_option_text in sp_lang_names:
+ lang_code = language_names.get(sp_option_value) or language_names.get(sp_option_text)
+ if isinstance(lang_code, str):
+ supported_languages[lang_code] = {'alias': sp_option_value}
+ elif isinstance(lang_code, list):
+ for _lc in lang_code:
+ supported_languages[_lc] = {'alias': sp_option_value}
+ else:
+ print('Unknown language option in Startpage: {} ({})'.format(sp_option_value, sp_option_text))
+
+ return supported_languages
diff --git a/searx/engines/tineye.py b/searx/engines/tineye.py
new file mode 100644
index 0000000..d7b0d52
--- /dev/null
+++ b/searx/engines/tineye.py
@@ -0,0 +1,204 @@
+"""
+Tineye - Reverse search images
+"""
+
+from urllib.parse import urlencode
+
+from datetime import datetime
+from flask_babel import gettext
+
+from searx import logger
+
+about = {
+ "website": "https://tineye.com",
+ "wikidata_id": "Q2382535",
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": "JSON",
+}
+
+
+categories = ['images']
+paging = True
+safesearch = False
+
+
+base_url = 'https://tineye.com'
+search_string = '/result_json/?page={page}&{query}'
+
+logger = logger.getChild('tineye')
+
+FORMAT_NOT_SUPPORTED = gettext(
+ "Could not read that image url. This may be due to an unsupported file"
+ " format. TinEye only supports images that are JPEG, PNG, GIF, BMP, TIFF or WebP."
+)
+"""TinEye error message"""
+
+NO_SIGNATURE_ERROR = gettext(
+ "The image is too simple to find matches. TinEye requires a basic level of"
+ " visual detail to successfully identify matches."
+)
+"""TinEye error message"""
+
+DOWNLOAD_ERROR = gettext("The image could not be downloaded.")
+"""TinEye error message"""
+
+
+def request(query, params):
+ params['url'] = base_url +\
+ search_string.format(
+ query=urlencode({'url': query}),
+ page=params['pageno'])
+
+ params['headers'].update({
+ 'Connection': 'keep-alive',
+ 'Accept-Encoding': 'gzip, defalte, br',
+ 'Host': 'tineye.com',
+ 'DNT': '1',
+ 'TE': 'trailers',
+ })
+
+ query = urlencode({'url': query})
+
+ # see https://github.com/TinEye/pytineye/blob/main/pytineye/api.py
+ params['url'] = base_url + search_string.format(query=query, page=params['pageno'])
+
+ return params
+
+
+def parse_tineye_match(match_json):
+ """Takes parsed JSON from the API server and turns it into a :py:obj:`dict`
+ object.
+
+ Attributes `(class Match) <https://github.com/TinEye/pytineye/blob/main/pytineye/api.py>`__
+
+ - `image_url`, link to the result image.
+ - `domain`, domain this result was found on.
+ - `score`, a number (0 to 100) that indicates how closely the images match.
+ - `width`, image width in pixels.
+ - `height`, image height in pixels.
+ - `size`, image area in pixels.
+ - `format`, image format.
+ - `filesize`, image size in bytes.
+ - `overlay`, overlay URL.
+ - `tags`, whether this match belongs to a collection or stock domain.
+
+ - `backlinks`, a list of Backlink objects pointing to the original websites
+ and image URLs. List items are instances of :py:obj:`dict`, (`Backlink
+ <https://github.com/TinEye/pytineye/blob/main/pytineye/api.py>`__):
+
+ - `url`, the image URL to the image.
+ - `backlink`, the original website URL.
+ - `crawl_date`, the date the image was crawled.
+
+ """
+
+ # HINT: there exists an alternative backlink dict in the domains list / e.g.::
+ #
+ # match_json['domains'][0]['backlinks']
+
+ backlinks = []
+ if "backlinks" in match_json:
+
+ for backlink_json in match_json["backlinks"]:
+ if not isinstance(backlink_json, dict):
+ continue
+
+ crawl_date = backlink_json.get("crawl_date")
+ if crawl_date:
+ crawl_date = datetime.fromisoformat(crawl_date[:-3])
+ else:
+ crawl_date = datetime.min
+
+ backlinks.append({
+ 'url': backlink_json.get("url"),
+ 'backlink': backlink_json.get("backlink"),
+ 'crawl_date': crawl_date,
+ 'image_name': backlink_json.get("image_name")}
+ )
+
+ return {
+ 'image_url': match_json.get("image_url"),
+ 'domain': match_json.get("domain"),
+ 'score': match_json.get("score"),
+ 'width': match_json.get("width"),
+ 'height': match_json.get("height"),
+ 'size': match_json.get("size"),
+ 'image_format': match_json.get("format"),
+ 'filesize': match_json.get("filesize"),
+ 'overlay': match_json.get("overlay"),
+ 'tags': match_json.get("tags"),
+ 'backlinks': backlinks,
+ }
+
+
+def response(resp):
+ """Parse HTTP response from TinEye."""
+ results = []
+
+ try:
+ json_data = resp.json()
+ except Exception as exc: # pylint: disable=broad-except
+ msg = "can't parse JSON response // %s" % exc
+ logger.error(msg)
+ json_data = {'error': msg}
+
+ # handle error codes from Tineye
+
+ if resp.is_error:
+ if resp.status_code in (400, 422):
+
+ message = 'HTTP status: %s' % resp.status_code
+ error = json_data.get('error')
+ s_key = json_data.get('suggestions', {}).get('key', '')
+
+ if error and s_key:
+ message = "%s (%s)" % (error, s_key)
+ elif error:
+ message = error
+
+ if s_key == "Invalid image URL":
+ # test https://docs.searxng.org/_static/searxng-wordmark.svg
+ message = FORMAT_NOT_SUPPORTED
+ elif s_key == 'NO_SIGNATURE_ERROR':
+ # test https://pngimg.com/uploads/dot/dot_PNG4.png
+ message = NO_SIGNATURE_ERROR
+ elif s_key == 'Download Error':
+ # test https://notexists
+ message = DOWNLOAD_ERROR
+
+ logger.error(message)
+
+ return results
+
+ resp.raise_for_status()
+
+ # append results from matches
+ for match_json in json_data['matches']:
+
+ tineye_match = parse_tineye_match(match_json)
+ if not tineye_match['backlinks']:
+ continue
+
+ backlink = tineye_match['backlinks'][0]
+ results.append(
+ {
+ 'template': 'images.html',
+ 'url': backlink['backlink'],
+ 'thumbnail_src': tineye_match['image_url'],
+ 'source': backlink['url'],
+ 'title': backlink['image_name'],
+ 'img_src': backlink['url'],
+ 'format': tineye_match['image_format'],
+ 'widht': tineye_match['width'],
+ 'height': tineye_match['height'],
+ 'publishedDate': backlink['crawl_date'],
+ }
+ )
+
+ # append number of results
+ number_of_results = json_data.get('num_matches')
+ if number_of_results:
+ results.append({'number_of_results': number_of_results})
+
+ return results
diff --git a/searx/engines/tokyotoshokan.py b/searx/engines/tokyotoshokan.py
index 7732120..91d1f01 100644
--- a/searx/engines/tokyotoshokan.py
+++ b/searx/engines/tokyotoshokan.py
@@ -1,21 +1,23 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Tokyo Toshokan (A BitTorrent Library for Japanese Media)
-
- @website https://www.tokyotosho.info/
- @provide-api no
- @using-api no
- @results HTML
- @stable no (HTML can change)
- @parse url, title, publishedDate, seed, leech,
- filesize, magnetlink, content
"""
import re
+from urllib.parse import urlencode
from lxml import html
-from searx.engines.xpath import extract_text
from datetime import datetime
-from searx.url_utils import urlencode
-from searx.utils import get_torrent_size, int_or_zero
+from searx.utils import extract_text, get_torrent_size, int_or_zero
+
+# about
+about = {
+ "website": 'https://www.tokyotosho.info/',
+ "wikidata_id": None,
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['files', 'videos', 'music']
diff --git a/searx/engines/torrentz.py b/searx/engines/torrentz.py
index fd4164a..94a7a53 100644
--- a/searx/engines/torrentz.py
+++ b/searx/engines/torrentz.py
@@ -1,30 +1,31 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
- Torrentz2.eu (BitTorrent meta-search engine)
-
- @website https://torrentz2.eu/
- @provide-api no
-
- @using-api no
- @results HTML
- @stable no (HTML can change, although unlikely,
- see https://torrentz.eu/torrentz.btsearch)
- @parse url, title, publishedDate, seed, leech, filesize, magnetlink
+ Torrentz2.is (BitTorrent meta-search engine)
"""
import re
+from urllib.parse import urlencode
from lxml import html
from datetime import datetime
-from searx.engines.xpath import extract_text
-from searx.url_utils import urlencode
-from searx.utils import get_torrent_size
+from searx.utils import extract_text, get_torrent_size
+
+# about
+about = {
+ "website": 'https://torrentz2.is/',
+ "wikidata_id": 'Q1156687',
+ "official_api_documentation": 'https://torrentz.is/torrentz.btsearch',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['files', 'videos', 'music']
paging = True
# search-url
-# https://torrentz2.eu/search?f=EXAMPLE&p=6
-base_url = 'https://torrentz2.eu/'
+# https://torrentz2.is/search?f=EXAMPLE&p=6
+base_url = 'https://torrentz2.is/'
search_url = base_url + 'search?{query}'
diff --git a/searx/engines/translated.py b/searx/engines/translated.py
index 5c7b170..8d67ca0 100644
--- a/searx/engines/translated.py
+++ b/searx/engines/translated.py
@@ -1,54 +1,37 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
MyMemory Translated
-
- @website https://mymemory.translated.net/
- @provide-api yes (https://mymemory.translated.net/doc/spec.php)
- @using-api yes
- @results JSON
- @stable yes
- @parse url, title, content
"""
-import re
-from sys import version_info
-from searx.utils import is_valid_lang
-
-if version_info[0] == 3:
- unicode = str
+# about
+about = {
+ "website": 'https://mymemory.translated.net/',
+ "wikidata_id": None,
+ "official_api_documentation": 'https://mymemory.translated.net/doc/spec.php',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
+engine_type = 'online_dictionary'
categories = ['general']
-url = u'http://api.mymemory.translated.net/get?q={query}&langpair={from_lang}|{to_lang}{key}'
-web_url = u'http://mymemory.translated.net/en/{from_lang}/{to_lang}/{query}'
+url = 'https://api.mymemory.translated.net/get?q={query}&langpair={from_lang}|{to_lang}{key}'
+web_url = 'https://mymemory.translated.net/en/{from_lang}/{to_lang}/{query}'
weight = 100
+https_support = True
-parser_re = re.compile(u'.*?([a-z]+)-([a-z]+) (.{2,})$', re.I)
api_key = ''
def request(query, params):
- m = parser_re.match(unicode(query, 'utf8'))
- if not m:
- return params
-
- from_lang, to_lang, query = m.groups()
-
- from_lang = is_valid_lang(from_lang)
- to_lang = is_valid_lang(to_lang)
-
- if not from_lang or not to_lang:
- return params
-
if api_key:
key_form = '&key=' + api_key
else:
key_form = ''
- params['url'] = url.format(from_lang=from_lang[1],
- to_lang=to_lang[1],
- query=query,
+ params['url'] = url.format(from_lang=params['from_lang'][1],
+ to_lang=params['to_lang'][1],
+ query=params['query'],
key=key_form)
- params['query'] = query
- params['from_lang'] = from_lang
- params['to_lang'] = to_lang
-
return params
diff --git a/searx/engines/tvmaze.py b/searx/engines/tvmaze.py
new file mode 100644
index 0000000..4a3904b
--- /dev/null
+++ b/searx/engines/tvmaze.py
@@ -0,0 +1,50 @@
+"""
+ TVmaze
+ Show Search
+"""
+
+from urllib.parse import urlencode
+from json import loads
+from searx.utils import html_to_text
+
+# about
+about = {
+ "website": 'https://www.tvmaze.com/',
+ "wikidata_id": 'Q84863617',
+ "official_api_documentation": 'https://www.tvmaze.com/api',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
+categories = ['general']
+paging = False
+
+# search-url
+base_url = 'https://api.tvmaze.com/search/'
+search_string = 'shows?{query}'
+
+
+def request(query, params):
+ search = search_string.format(query=urlencode({'q': query}))
+
+ params['url'] = base_url + search
+
+ return params
+
+
+def response(resp):
+ results = []
+
+ search_res = loads(resp.text)
+
+ for result in search_res:
+ res = result['show']
+
+ results.append({
+ 'url': res['url'],
+ 'title': res['name'],
+ 'content': html_to_text(res['summary'] or "")
+ })
+
+ return results
diff --git a/searx/engines/twitter.py b/searx/engines/twitter.py
deleted file mode 100644
index d2a8d20..0000000
--- a/searx/engines/twitter.py
+++ /dev/null
@@ -1,87 +0,0 @@
-"""
- Twitter (Social media)
-
- @website https://twitter.com/
- @provide-api yes (https://dev.twitter.com/docs/using-search)
-
- @using-api no
- @results HTML (using search portal)
- @stable no (HTML can change)
- @parse url, title, content
-
- @todo publishedDate
-"""
-
-from lxml import html
-from datetime import datetime
-from searx.engines.xpath import extract_text
-from searx.url_utils import urlencode, urljoin
-
-# engine dependent config
-categories = ['social media']
-language_support = True
-
-# search-url
-base_url = 'https://twitter.com/'
-search_url = base_url + 'search?'
-
-# specific xpath variables
-results_xpath = '//li[@data-item-type="tweet"]'
-avatar_xpath = './/img[contains(@class, "avatar")]/@src'
-link_xpath = './/small[@class="time"]//a'
-title_xpath = './/span[contains(@class, "username")]'
-content_xpath = './/p[contains(@class, "tweet-text")]'
-timestamp_xpath = './/span[contains(@class,"_timestamp")]'
-
-
-# do search-request
-def request(query, params):
- params['url'] = search_url + urlencode({'q': query})
-
- # set language if specified
- if params['language'] != 'all':
- params['cookies']['lang'] = params['language'].split('-')[0]
- else:
- params['cookies']['lang'] = 'en'
-
- return params
-
-
-# get response from search-request
-def response(resp):
- results = []
-
- dom = html.fromstring(resp.text)
-
- # parse results
- for tweet in dom.xpath(results_xpath):
- try:
- link = tweet.xpath(link_xpath)[0]
- content = extract_text(tweet.xpath(content_xpath)[0])
- img_src = tweet.xpath(avatar_xpath)[0]
- img_src = img_src.replace('_bigger', '_normal')
- except Exception:
- continue
-
- url = urljoin(base_url, link.attrib.get('href'))
- title = extract_text(tweet.xpath(title_xpath))
-
- pubdate = tweet.xpath(timestamp_xpath)
- if len(pubdate) > 0:
- timestamp = float(pubdate[0].attrib.get('data-time'))
- publishedDate = datetime.fromtimestamp(timestamp, None)
- # append result
- results.append({'url': url,
- 'title': title,
- 'content': content,
- 'img_src': img_src,
- 'publishedDate': publishedDate})
- else:
- # append result
- results.append({'url': url,
- 'title': title,
- 'content': content,
- 'img_src': img_src})
-
- # return results
- return results
diff --git a/searx/engines/unsplash.py b/searx/engines/unsplash.py
index 2e8d6fd..3bbdf63 100644
--- a/searx/engines/unsplash.py
+++ b/searx/engines/unsplash.py
@@ -1,18 +1,21 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Unsplash
-
- @website https://unsplash.com
- @provide-api yes (https://unsplash.com/developers)
-
- @using-api no
- @results JSON (using search portal's infiniscroll API)
- @stable no (JSON format could change any time)
- @parse url, title, img_src, thumbnail_src
"""
-from searx.url_utils import urlencode, urlparse, urlunparse, parse_qsl
+from urllib.parse import urlencode, urlparse, urlunparse, parse_qsl
from json import loads
+# about
+about = {
+ "website": 'https://unsplash.com',
+ "wikidata_id": 'Q28233552',
+ "official_api_documentation": 'https://unsplash.com/developers',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
url = 'https://unsplash.com/'
search_url = url + 'napi/search/photos?'
categories = ['images']
diff --git a/searx/engines/vimeo.py b/searx/engines/vimeo.py
index a922710..8245792 100644
--- a/searx/engines/vimeo.py
+++ b/searx/engines/vimeo.py
@@ -1,20 +1,21 @@
-# Vimeo (Videos)
-#
-# @website https://vimeo.com/
-# @provide-api yes (http://developer.vimeo.com/api),
-# they have a maximum count of queries/hour
-#
-# @using-api no (TODO, rewrite to api)
-# @results HTML (using search portal)
-# @stable no (HTML can change)
-# @parse url, title, publishedDate, thumbnail, embedded
-#
-# @todo rewrite to api
-# @todo set content-parameter with correct data
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Wikipedia (Web
+"""
+from urllib.parse import urlencode
from json import loads
from dateutil import parser
-from searx.url_utils import urlencode
+
+# about
+about = {
+ "website": 'https://vimeo.com/',
+ "wikidata_id": 'Q156376',
+ "official_api_documentation": 'http://developer.vimeo.com/api',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['videos']
diff --git a/searx/engines/wikidata.py b/searx/engines/wikidata.py
index e913b39..60adb41 100644
--- a/searx/engines/wikidata.py
+++ b/searx/engines/wikidata.py
@@ -1,500 +1,701 @@
-# -*- coding: utf-8 -*-
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Wikidata
-
- @website https://wikidata.org
- @provide-api yes (https://wikidata.org/w/api.php)
-
- @using-api partially (most things require scraping)
- @results JSON, HTML
- @stable no (html can change)
- @parse url, infobox
"""
-from searx import logger
-from searx.poolrequests import get
-from searx.engines.xpath import extract_text
-from searx.engines.wikipedia import _fetch_supported_languages, supported_languages_url
-from searx.url_utils import urlencode
-from searx.utils import match_language, eval_xpath
+from urllib.parse import urlencode
from json import loads
-from lxml.html import fromstring
-from lxml import etree
+
+from dateutil.parser import isoparse
+from babel.dates import format_datetime, format_date, format_time, get_datetime_format
+
+from searx import logger
+from searx.data import WIKIDATA_UNITS
+from searx.poolrequests import post, get
+from searx.utils import match_language, searx_useragent, get_string_replaces_function
+from searx.external_urls import get_external_url, get_earth_coordinates_url, area_to_osm_zoom
+from searx.engines.wikipedia import _fetch_supported_languages, supported_languages_url # NOQA # pylint: disable=unused-import
logger = logger.getChild('wikidata')
-result_count = 1
-
-# urls
-wikidata_host = 'https://www.wikidata.org'
-url_search = wikidata_host \
- + '/w/index.php?{query}&ns0=1'
-
-wikidata_api = wikidata_host + '/w/api.php'
-url_detail = wikidata_api\
- + '?action=parse&format=json&{query}'\
- + '&redirects=1&prop=text%7Cdisplaytitle%7Cparsewarnings'\
- + '&disableeditsection=1&preview=1&sectionpreview=1&disabletoc=1&utf8=1&formatversion=2'
-
-url_map = 'https://www.openstreetmap.org/'\
- + '?lat={latitude}&lon={longitude}&zoom={zoom}&layers=M'
-url_image = 'https://commons.wikimedia.org/wiki/Special:FilePath/{filename}?width=500&height=400'
-
-# xpaths
-div_ids_xpath = '//div[@id]'
-wikidata_ids_xpath = '//ul[@class="mw-search-results"]/li//a/@href'
-title_xpath = '//*[contains(@class,"wikibase-title-label")]'
-description_xpath = '//div[contains(@class,"wikibase-entitytermsview-heading-description")]'
-label_xpath = './/div[contains(@class,"wikibase-statementgroupview-property-label")]/a'
-url_xpath = './/a[contains(@class,"external free") or contains(@class, "wb-external-id")]'
-wikilink_xpath = './/ul[contains(@class,"wikibase-sitelinklistview-listview")]'\
- + '/li[contains(@data-wb-siteid,"{wikiid}")]//a/@href'
-property_row_xpath = './/div[contains(@class,"wikibase-statementview")]'
-preferred_rank_xpath = './/span[contains(@class,"wikibase-rankselector-preferred")]'
-value_xpath = './/div[contains(@class,"wikibase-statementview-mainsnak")]'\
- + '/*/div[contains(@class,"wikibase-snakview-value")]'
-language_fallback_xpath = '//sup[contains(@class,"wb-language-fallback-indicator")]'
-calendar_name_xpath = './/sup[contains(@class,"wb-calendar-name")]'
-media_xpath = value_xpath + '//div[contains(@class,"commons-media-caption")]//a'
-
-
-def get_id_cache(result):
- id_cache = {}
- for e in eval_xpath(result, div_ids_xpath):
- id = e.get('id')
- if id.startswith('P'):
- id_cache[id] = e
- return id_cache
+
+# about
+about = {
+ "website": 'https://wikidata.org/',
+ "wikidata_id": 'Q2013',
+ "official_api_documentation": 'https://query.wikidata.org/',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
+# SPARQL
+SPARQL_ENDPOINT_URL = 'https://query.wikidata.org/sparql'
+SPARQL_EXPLAIN_URL = 'https://query.wikidata.org/bigdata/namespace/wdq/sparql?explain'
+WIKIDATA_PROPERTIES = {
+ 'P434': 'MusicBrainz',
+ 'P435': 'MusicBrainz',
+ 'P436': 'MusicBrainz',
+ 'P966': 'MusicBrainz',
+ 'P345': 'IMDb',
+ 'P2397': 'YouTube',
+ 'P1651': 'YouTube',
+ 'P2002': 'Twitter',
+ 'P2013': 'Facebook',
+ 'P2003': 'Instagram',
+}
+
+# SERVICE wikibase:mwapi : https://www.mediawiki.org/wiki/Wikidata_Query_Service/User_Manual/MWAPI
+# SERVICE wikibase:label: https://en.wikibooks.org/wiki/SPARQL/SERVICE_-_Label#Manual_Label_SERVICE
+# https://en.wikibooks.org/wiki/SPARQL/WIKIDATA_Precision,_Units_and_Coordinates
+# https://www.mediawiki.org/wiki/Wikibase/Indexing/RDF_Dump_Format#Data_model
+# optmization:
+# * https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/query_optimization
+# * https://github.com/blazegraph/database/wiki/QueryHints
+QUERY_TEMPLATE = """
+SELECT ?item ?itemLabel ?itemDescription ?lat ?long %SELECT%
+WHERE
+{
+ SERVICE wikibase:mwapi {
+ bd:serviceParam wikibase:endpoint "www.wikidata.org";
+ wikibase:api "EntitySearch";
+ wikibase:limit 1;
+ mwapi:search "%QUERY%";
+ mwapi:language "%LANGUAGE%".
+ ?item wikibase:apiOutputItem mwapi:item.
+ }
+ hint:Prior hint:runFirst "true".
+
+ %WHERE%
+
+ SERVICE wikibase:label {
+ bd:serviceParam wikibase:language "%LANGUAGE%,en".
+ ?item rdfs:label ?itemLabel .
+ ?item schema:description ?itemDescription .
+ %WIKIBASE_LABELS%
+ }
+
+}
+GROUP BY ?item ?itemLabel ?itemDescription ?lat ?long %GROUP_BY%
+"""
+
+# Get the calendar names and the property names
+QUERY_PROPERTY_NAMES = """
+SELECT ?item ?name
+WHERE {
+ {
+ SELECT ?item
+ WHERE { ?item wdt:P279* wd:Q12132 }
+ } UNION {
+ VALUES ?item { %ATTRIBUTES% }
+ }
+ OPTIONAL { ?item rdfs:label ?name. }
+}
+"""
+
+# see the property "dummy value" of https://www.wikidata.org/wiki/Q2013 (Wikidata)
+# hard coded here to avoid to an additional SPARQL request when the server starts
+DUMMY_ENTITY_URLS = set(
+ "http://www.wikidata.org/entity/" + wid for wid in ("Q4115189", "Q13406268", "Q15397819", "Q17339402")
+)
+
+
+# https://www.w3.org/TR/sparql11-query/#rSTRING_LITERAL1
+# https://lists.w3.org/Archives/Public/public-rdf-dawg/2011OctDec/0175.html
+sparql_string_escape = get_string_replaces_function({'\t': '\\\t',
+ '\n': '\\\n',
+ '\r': '\\\r',
+ '\b': '\\\b',
+ '\f': '\\\f',
+ '\"': '\\\"',
+ '\'': '\\\'',
+ '\\': '\\\\'})
+
+replace_http_by_https = get_string_replaces_function({'http:': 'https:'})
+
+
+def get_headers():
+ # user agent: https://www.mediawiki.org/wiki/Wikidata_Query_Service/User_Manual#Query_limits
+ return {
+ 'Accept': 'application/sparql-results+json',
+ 'User-Agent': searx_useragent()
+ }
+
+
+def get_label_for_entity(entity_id, language):
+ name = WIKIDATA_PROPERTIES.get(entity_id)
+ if name is None:
+ name = WIKIDATA_PROPERTIES.get((entity_id, language))
+ if name is None:
+ name = WIKIDATA_PROPERTIES.get((entity_id, language.split('-')[0]))
+ if name is None:
+ name = WIKIDATA_PROPERTIES.get((entity_id, 'en'))
+ if name is None:
+ name = entity_id
+ return name
+
+
+def send_wikidata_query(query, method='GET'):
+ if method == 'GET':
+ # query will be cached by wikidata
+ http_response = get(SPARQL_ENDPOINT_URL + '?' + urlencode({'query': query}), headers=get_headers())
+ else:
+ # query won't be cached by wikidata
+ http_response = post(SPARQL_ENDPOINT_URL, data={'query': query}, headers=get_headers())
+ if http_response.status_code != 200:
+ logger.debug('SPARQL endpoint error %s', http_response.content.decode())
+ logger.debug('request time %s', str(http_response.elapsed))
+ http_response.raise_for_status()
+ return loads(http_response.content.decode())
def request(query, params):
- params['url'] = url_search.format(
- query=urlencode({'search': query}))
+ language = params['language'].split('-')[0]
+ if language == 'all':
+ language = 'en'
+ else:
+ language = match_language(params['language'], supported_languages, language_aliases).split('-')[0]
+
+ query, attributes = get_query(query, language)
+
+ params['method'] = 'POST'
+ params['url'] = SPARQL_ENDPOINT_URL
+ params['data'] = {'query': query}
+ params['headers'] = get_headers()
+
+ params['language'] = language
+ params['attributes'] = attributes
return params
def response(resp):
results = []
- htmlparser = etree.HTMLParser()
- html = fromstring(resp.content.decode("utf-8"), parser=htmlparser)
- search_results = eval_xpath(html, wikidata_ids_xpath)
+ jsonresponse = loads(resp.content.decode())
- if resp.search_params['language'].split('-')[0] == 'all':
- language = 'en'
- else:
- language = match_language(resp.search_params['language'], supported_languages, language_aliases).split('-')[0]
+ language = resp.search_params['language'].lower()
+ attributes = resp.search_params['attributes']
+
+ seen_entities = set()
- # TODO: make requests asynchronous to avoid timeout when result_count > 1
- for search_result in search_results[:result_count]:
- wikidata_id = search_result.split('/')[-1]
- url = url_detail.format(query=urlencode({'page': wikidata_id, 'uselang': language}))
- htmlresponse = get(url)
- jsonresponse = loads(htmlresponse.content.decode("utf-8"))
- results += getDetail(jsonresponse, wikidata_id, language, resp.search_params['language'], htmlparser)
+ for result in jsonresponse.get('results', {}).get('bindings', []):
+ attribute_result = {key: value['value'] for key, value in result.items()}
+ entity_url = attribute_result['item']
+ if entity_url not in seen_entities and entity_url not in DUMMY_ENTITY_URLS:
+ seen_entities.add(entity_url)
+ results += get_results(attribute_result, attributes, language)
+ else:
+ logger.debug('The SPARQL request returns duplicate entities: %s', str(attribute_result))
return results
-def getDetail(jsonresponse, wikidata_id, language, locale, htmlparser):
+def get_results(attribute_result, attributes, language):
results = []
- urls = []
- attributes = []
+ infobox_title = attribute_result.get('itemLabel')
+ infobox_id = attribute_result['item']
+ infobox_id_lang = None
+ infobox_urls = []
+ infobox_attributes = []
+ infobox_content = attribute_result.get('itemDescription', [])
+ img_src = None
+ img_src_priority = 100
+
+ for attribute in attributes:
+ value = attribute.get_str(attribute_result, language)
+ if value is not None and value != '':
+ attribute_type = type(attribute)
+
+ if attribute_type in (WDURLAttribute, WDArticle):
+ # get_select() method : there is group_concat(distinct ...;separator=", ")
+ # split the value here
+ for url in value.split(', '):
+ infobox_urls.append({'title': attribute.get_label(language), 'url': url, **attribute.kwargs})
+ # "normal" results (not infobox) include official website and Wikipedia links.
+ if attribute.kwargs.get('official') or attribute_type == WDArticle:
+ results.append({'title': infobox_title, 'url': url})
+ # update the infobox_id with the wikipedia URL
+ # first the local wikipedia URL, and as fallback the english wikipedia URL
+ if attribute_type == WDArticle\
+ and ((attribute.language == 'en' and infobox_id_lang is None)
+ or attribute.language != 'en'):
+ infobox_id_lang = attribute.language
+ infobox_id = url
+ elif attribute_type == WDImageAttribute:
+ # this attribute is an image.
+ # replace the current image only the priority is lower
+ # (the infobox contain only one image).
+ if attribute.priority < img_src_priority:
+ img_src = value
+ img_src_priority = attribute.priority
+ elif attribute_type == WDGeoAttribute:
+ # geocoordinate link
+ # use the area to get the OSM zoom
+ # Note: ignre the unit (must be km² otherwise the calculation is wrong)
+ # Should use normalized value p:P2046/psn:P2046/wikibase:quantityAmount
+ area = attribute_result.get('P2046')
+ osm_zoom = area_to_osm_zoom(area) if area else 19
+ url = attribute.get_geo_url(attribute_result, osm_zoom=osm_zoom)
+ if url:
+ infobox_urls.append({'title': attribute.get_label(language),
+ 'url': url,
+ 'entity': attribute.name})
+ else:
+ infobox_attributes.append({'label': attribute.get_label(language),
+ 'value': value,
+ 'entity': attribute.name})
+
+ if infobox_id:
+ infobox_id = replace_http_by_https(infobox_id)
- title = jsonresponse.get('parse', {}).get('displaytitle', {})
- result = jsonresponse.get('parse', {}).get('text', {})
-
- if not title or not result:
- return results
-
- title = fromstring(title, parser=htmlparser)
- for elem in eval_xpath(title, language_fallback_xpath):
- elem.getparent().remove(elem)
- title = extract_text(eval_xpath(title, title_xpath))
-
- result = fromstring(result, parser=htmlparser)
- for elem in eval_xpath(result, language_fallback_xpath):
- elem.getparent().remove(elem)
-
- description = extract_text(eval_xpath(result, description_xpath))
-
- id_cache = get_id_cache(result)
-
- # URLS
-
- # official website
- add_url(urls, result, id_cache, 'P856', results=results)
-
- # wikipedia
- wikipedia_link_count = 0
- wikipedia_link = get_wikilink(result, language + 'wiki')
- if wikipedia_link:
- wikipedia_link_count += 1
- urls.append({'title': 'Wikipedia (' + language + ')',
- 'url': wikipedia_link})
-
- if language != 'en':
- wikipedia_en_link = get_wikilink(result, 'enwiki')
- if wikipedia_en_link:
- wikipedia_link_count += 1
- urls.append({'title': 'Wikipedia (en)',
- 'url': wikipedia_en_link})
-
- # TODO: get_wiki_firstlanguage
- # if wikipedia_link_count == 0:
-
- # more wikis
- add_url(urls, result, id_cache, default_label='Wikivoyage (' + language + ')', link_type=language + 'wikivoyage')
- add_url(urls, result, id_cache, default_label='Wikiquote (' + language + ')', link_type=language + 'wikiquote')
- add_url(urls, result, id_cache, default_label='Wikimedia Commons', link_type='commonswiki')
-
- add_url(urls, result, id_cache, 'P625', 'OpenStreetMap', link_type='geo')
-
- # musicbrainz
- add_url(urls, result, id_cache, 'P434', 'MusicBrainz', 'http://musicbrainz.org/artist/')
- add_url(urls, result, id_cache, 'P435', 'MusicBrainz', 'http://musicbrainz.org/work/')
- add_url(urls, result, id_cache, 'P436', 'MusicBrainz', 'http://musicbrainz.org/release-group/')
- add_url(urls, result, id_cache, 'P966', 'MusicBrainz', 'http://musicbrainz.org/label/')
-
- # IMDb
- add_url(urls, result, id_cache, 'P345', 'IMDb', 'https://www.imdb.com/', link_type='imdb')
- # source code repository
- add_url(urls, result, id_cache, 'P1324')
- # blog
- add_url(urls, result, id_cache, 'P1581')
- # social media links
- add_url(urls, result, id_cache, 'P2397', 'YouTube', 'https://www.youtube.com/channel/')
- add_url(urls, result, id_cache, 'P1651', 'YouTube', 'https://www.youtube.com/watch?v=')
- add_url(urls, result, id_cache, 'P2002', 'Twitter', 'https://twitter.com/')
- add_url(urls, result, id_cache, 'P2013', 'Facebook', 'https://facebook.com/')
- add_url(urls, result, id_cache, 'P2003', 'Instagram', 'https://instagram.com/')
-
- urls.append({'title': 'Wikidata',
- 'url': 'https://www.wikidata.org/wiki/'
- + wikidata_id + '?uselang=' + language})
-
- # INFOBOX ATTRIBUTES (ROWS)
-
- # DATES
- # inception date
- add_attribute(attributes, id_cache, 'P571', date=True)
- # dissolution date
- add_attribute(attributes, id_cache, 'P576', date=True)
- # start date
- add_attribute(attributes, id_cache, 'P580', date=True)
- # end date
- add_attribute(attributes, id_cache, 'P582', date=True)
- # date of birth
- add_attribute(attributes, id_cache, 'P569', date=True)
- # date of death
- add_attribute(attributes, id_cache, 'P570', date=True)
- # date of spacecraft launch
- add_attribute(attributes, id_cache, 'P619', date=True)
- # date of spacecraft landing
- add_attribute(attributes, id_cache, 'P620', date=True)
-
- # nationality
- add_attribute(attributes, id_cache, 'P27')
- # country of origin
- add_attribute(attributes, id_cache, 'P495')
- # country
- add_attribute(attributes, id_cache, 'P17')
- # headquarters
- add_attribute(attributes, id_cache, 'Q180')
-
- # PLACES
- # capital
- add_attribute(attributes, id_cache, 'P36', trim=True)
- # head of state
- add_attribute(attributes, id_cache, 'P35', trim=True)
- # head of government
- add_attribute(attributes, id_cache, 'P6', trim=True)
- # type of government
- add_attribute(attributes, id_cache, 'P122')
- # official language
- add_attribute(attributes, id_cache, 'P37')
- # population
- add_attribute(attributes, id_cache, 'P1082', trim=True)
- # area
- add_attribute(attributes, id_cache, 'P2046')
- # currency
- add_attribute(attributes, id_cache, 'P38', trim=True)
- # heigth (building)
- add_attribute(attributes, id_cache, 'P2048')
-
- # MEDIA
- # platform (videogames)
- add_attribute(attributes, id_cache, 'P400')
- # author
- add_attribute(attributes, id_cache, 'P50')
- # creator
- add_attribute(attributes, id_cache, 'P170')
- # director
- add_attribute(attributes, id_cache, 'P57')
- # performer
- add_attribute(attributes, id_cache, 'P175')
- # developer
- add_attribute(attributes, id_cache, 'P178')
- # producer
- add_attribute(attributes, id_cache, 'P162')
- # manufacturer
- add_attribute(attributes, id_cache, 'P176')
- # screenwriter
- add_attribute(attributes, id_cache, 'P58')
- # production company
- add_attribute(attributes, id_cache, 'P272')
- # record label
- add_attribute(attributes, id_cache, 'P264')
- # publisher
- add_attribute(attributes, id_cache, 'P123')
- # original network
- add_attribute(attributes, id_cache, 'P449')
- # distributor
- add_attribute(attributes, id_cache, 'P750')
- # composer
- add_attribute(attributes, id_cache, 'P86')
- # publication date
- add_attribute(attributes, id_cache, 'P577', date=True)
- # genre
- add_attribute(attributes, id_cache, 'P136')
- # original language
- add_attribute(attributes, id_cache, 'P364')
- # isbn
- add_attribute(attributes, id_cache, 'Q33057')
- # software license
- add_attribute(attributes, id_cache, 'P275')
- # programming language
- add_attribute(attributes, id_cache, 'P277')
- # version
- add_attribute(attributes, id_cache, 'P348', trim=True)
- # narrative location
- add_attribute(attributes, id_cache, 'P840')
-
- # LANGUAGES
- # number of speakers
- add_attribute(attributes, id_cache, 'P1098')
- # writing system
- add_attribute(attributes, id_cache, 'P282')
- # regulatory body
- add_attribute(attributes, id_cache, 'P1018')
- # language code
- add_attribute(attributes, id_cache, 'P218')
-
- # OTHER
- # ceo
- add_attribute(attributes, id_cache, 'P169', trim=True)
- # founder
- add_attribute(attributes, id_cache, 'P112')
- # legal form (company/organization)
- add_attribute(attributes, id_cache, 'P1454')
- # operator
- add_attribute(attributes, id_cache, 'P137')
- # crew members (tripulation)
- add_attribute(attributes, id_cache, 'P1029')
- # taxon
- add_attribute(attributes, id_cache, 'P225')
- # chemical formula
- add_attribute(attributes, id_cache, 'P274')
- # winner (sports/contests)
- add_attribute(attributes, id_cache, 'P1346')
- # number of deaths
- add_attribute(attributes, id_cache, 'P1120')
- # currency code
- add_attribute(attributes, id_cache, 'P498')
-
- image = add_image(id_cache)
-
- if len(attributes) == 0 and len(urls) == 2 and len(description) == 0:
+ # add the wikidata URL at the end
+ infobox_urls.append({'title': 'Wikidata', 'url': attribute_result['item']})
+
+ if img_src is None and len(infobox_attributes) == 0 and len(infobox_urls) == 1 and\
+ len(infobox_content) == 0:
results.append({
- 'url': urls[0]['url'],
- 'title': title,
- 'content': description
- })
+ 'url': infobox_urls[0]['url'],
+ 'title': infobox_title,
+ 'content': infobox_content
+ })
else:
results.append({
- 'infobox': title,
- 'id': wikipedia_link,
- 'content': description,
- 'img_src': image,
- 'attributes': attributes,
- 'urls': urls
- })
-
+ 'infobox': infobox_title,
+ 'id': infobox_id,
+ 'content': infobox_content,
+ 'img_src': img_src,
+ 'urls': infobox_urls,
+ 'attributes': infobox_attributes
+ })
return results
-# only returns first match
-def add_image(id_cache):
- # P15: route map, P242: locator map, P154: logo, P18: image, P242: map, P41: flag, P2716: collage, P2910: icon
- property_ids = ['P15', 'P242', 'P154', 'P18', 'P242', 'P41', 'P2716', 'P2910']
+def get_query(query, language):
+ attributes = get_attributes(language)
+ select = [a.get_select() for a in attributes]
+ where = list(filter(lambda s: len(s) > 0, [a.get_where() for a in attributes]))
+ wikibase_label = list(filter(lambda s: len(s) > 0, [a.get_wikibase_label() for a in attributes]))
+ group_by = list(filter(lambda s: len(s) > 0, [a.get_group_by() for a in attributes]))
+ query = QUERY_TEMPLATE\
+ .replace('%QUERY%', sparql_string_escape(query))\
+ .replace('%SELECT%', ' '.join(select))\
+ .replace('%WHERE%', '\n '.join(where))\
+ .replace('%WIKIBASE_LABELS%', '\n '.join(wikibase_label))\
+ .replace('%GROUP_BY%', ' '.join(group_by))\
+ .replace('%LANGUAGE%', language)
+ return query, attributes
- for property_id in property_ids:
- image = id_cache.get(property_id, None)
- if image is not None:
- image_name = eval_xpath(image, media_xpath)
- image_src = url_image.replace('{filename}', extract_text(image_name[0]))
- return image_src
+def get_attributes(language):
+ attributes = []
-# setting trim will only returned high ranked rows OR the first row
-def add_attribute(attributes, id_cache, property_id, default_label=None, date=False, trim=False):
- attribute = id_cache.get(property_id, None)
- if attribute is not None:
+ def add_value(name):
+ attributes.append(WDAttribute(name))
+
+ def add_amount(name):
+ attributes.append(WDAmountAttribute(name))
+
+ def add_label(name):
+ attributes.append(WDLabelAttribute(name))
+
+ def add_url(name, url_id=None, **kwargs):
+ attributes.append(WDURLAttribute(name, url_id, kwargs))
+
+ def add_image(name, url_id=None, priority=1):
+ attributes.append(WDImageAttribute(name, url_id, priority))
+
+ def add_date(name):
+ attributes.append(WDDateAttribute(name))
+
+ # Dates
+ for p in ['P571', # inception date
+ 'P576', # dissolution date
+ 'P580', # start date
+ 'P582', # end date
+ 'P569', # date of birth
+ 'P570', # date of death
+ 'P619', # date of spacecraft launch
+ 'P620']: # date of spacecraft landing
+ add_date(p)
+
+ for p in ['P27', # country of citizenship
+ 'P495', # country of origin
+ 'P17', # country
+ 'P159']: # headquarters location
+ add_label(p)
+
+ # Places
+ for p in ['P36', # capital
+ 'P35', # head of state
+ 'P6', # head of government
+ 'P122', # basic form of government
+ 'P37']: # official language
+ add_label(p)
+
+ add_value('P1082') # population
+ add_amount('P2046') # area
+ add_amount('P281') # postal code
+ add_label('P38') # currency
+ add_amount('P2048') # heigth (building)
+
+ # Media
+ for p in ['P400', # platform (videogames, computing)
+ 'P50', # author
+ 'P170', # creator
+ 'P57', # director
+ 'P175', # performer
+ 'P178', # developer
+ 'P162', # producer
+ 'P176', # manufacturer
+ 'P58', # screenwriter
+ 'P272', # production company
+ 'P264', # record label
+ 'P123', # publisher
+ 'P449', # original network
+ 'P750', # distributed by
+ 'P86']: # composer
+ add_label(p)
+
+ add_date('P577') # publication date
+ add_label('P136') # genre (music, film, artistic...)
+ add_label('P364') # original language
+ add_value('P212') # ISBN-13
+ add_value('P957') # ISBN-10
+ add_label('P275') # copyright license
+ add_label('P277') # programming language
+ add_value('P348') # version
+ add_label('P840') # narrative location
+
+ # Languages
+ add_value('P1098') # number of speakers
+ add_label('P282') # writing system
+ add_label('P1018') # language regulatory body
+ add_value('P218') # language code (ISO 639-1)
+
+ # Other
+ add_label('P169') # ceo
+ add_label('P112') # founded by
+ add_label('P1454') # legal form (company, organization)
+ add_label('P137') # operator (service, facility, ...)
+ add_label('P1029') # crew members (tripulation)
+ add_label('P225') # taxon name
+ add_value('P274') # chemical formula
+ add_label('P1346') # winner (sports, contests, ...)
+ add_value('P1120') # number of deaths
+ add_value('P498') # currency code (ISO 4217)
+
+ # URL
+ add_url('P856', official=True) # official website
+ attributes.append(WDArticle(language)) # wikipedia (user language)
+ if not language.startswith('en'):
+ attributes.append(WDArticle('en')) # wikipedia (english)
+
+ add_url('P1324') # source code repository
+ add_url('P1581') # blog
+ add_url('P434', url_id='musicbrainz_artist')
+ add_url('P435', url_id='musicbrainz_work')
+ add_url('P436', url_id='musicbrainz_release_group')
+ add_url('P966', url_id='musicbrainz_label')
+ add_url('P345', url_id='imdb_id')
+ add_url('P2397', url_id='youtube_channel')
+ add_url('P1651', url_id='youtube_video')
+ add_url('P2002', url_id='twitter_profile')
+ add_url('P2013', url_id='facebook_profile')
+ add_url('P2003', url_id='instagram_profile')
+
+ # Map
+ attributes.append(WDGeoAttribute('P625'))
+
+ # Image
+ add_image('P15', priority=1, url_id='wikimedia_image') # route map
+ add_image('P242', priority=2, url_id='wikimedia_image') # locator map
+ add_image('P154', priority=3, url_id='wikimedia_image') # logo
+ add_image('P18', priority=4, url_id='wikimedia_image') # image
+ add_image('P41', priority=5, url_id='wikimedia_image') # flag
+ add_image('P2716', priority=6, url_id='wikimedia_image') # collage
+ add_image('P2910', priority=7, url_id='wikimedia_image') # icon
+
+ return attributes
+
+
+class WDAttribute:
+
+ __slots__ = 'name',
+
+ def __init__(self, name):
+ self.name = name
+
+ def get_select(self):
+ return '(group_concat(distinct ?{name};separator=", ") as ?{name}s)'.replace('{name}', self.name)
+
+ def get_label(self, language):
+ return get_label_for_entity(self.name, language)
+
+ def get_where(self):
+ return "OPTIONAL { ?item wdt:{name} ?{name} . }".replace('{name}', self.name)
+
+ def get_wikibase_label(self):
+ return ""
+
+ def get_group_by(self):
+ return ""
+
+ def get_str(self, result, language):
+ return result.get(self.name + 's')
- if default_label:
- label = default_label
- else:
- label = extract_text(eval_xpath(attribute, label_xpath))
- label = label[0].upper() + label[1:]
-
- if date:
- trim = True
- # remove calendar name
- calendar_name = eval_xpath(attribute, calendar_name_xpath)
- for calendar in calendar_name:
- calendar.getparent().remove(calendar)
-
- concat_values = ""
- values = []
- first_value = None
- for row in eval_xpath(attribute, property_row_xpath):
- if not first_value or not trim or eval_xpath(row, preferred_rank_xpath):
- value = eval_xpath(row, value_xpath)
- if not value:
- continue
- value = extract_text(value)
-
- # save first value in case no ranked row is found
- if trim and not first_value:
- first_value = value
- else:
- # to avoid duplicate values
- if value not in values:
- concat_values += value + ", "
- values.append(value)
-
- if trim and not values:
- attributes.append({'label': label,
- 'value': first_value})
- else:
- attributes.append({'label': label,
- 'value': concat_values[:-2]})
+ def __repr__(self):
+ return '<' + str(type(self).__name__) + ':' + self.name + '>'
-# requires property_id unless it's a wiki link (defined in link_type)
-def add_url(urls, result, id_cache, property_id=None, default_label=None, url_prefix=None, results=None,
- link_type=None):
- links = []
+class WDAmountAttribute(WDAttribute):
- # wiki links don't have property in wikidata page
- if link_type and 'wiki' in link_type:
- links.append(get_wikilink(result, link_type))
- else:
- dom_element = id_cache.get(property_id, None)
- if dom_element is not None:
- if not default_label:
- label = extract_text(eval_xpath(dom_element, label_xpath))
- label = label[0].upper() + label[1:]
+ def get_select(self):
+ return '?{name} ?{name}Unit'.replace('{name}', self.name)
- if link_type == 'geo':
- links.append(get_geolink(dom_element))
+ def get_where(self):
+ return """ OPTIONAL { ?item p:{name} ?{name}Node .
+ ?{name}Node rdf:type wikibase:BestRank ; ps:{name} ?{name} .
+ OPTIONAL { ?{name}Node psv:{name}/wikibase:quantityUnit ?{name}Unit. } }""".replace('{name}', self.name)
- elif link_type == 'imdb':
- links.append(get_imdblink(dom_element, url_prefix))
+ def get_group_by(self):
+ return self.get_select()
- else:
- url_results = eval_xpath(dom_element, url_xpath)
- for link in url_results:
- if link is not None:
- if url_prefix:
- link = url_prefix + extract_text(link)
- else:
- link = extract_text(link)
- links.append(link)
-
- # append urls
- for url in links:
- if url is not None:
- urls.append({'title': default_label or label,
- 'url': url})
- if results is not None:
- results.append({'title': default_label or label,
- 'url': url})
-
-
-def get_imdblink(result, url_prefix):
- imdb_id = eval_xpath(result, value_xpath)
- if imdb_id:
- imdb_id = extract_text(imdb_id)
- id_prefix = imdb_id[:2]
- if id_prefix == 'tt':
- url = url_prefix + 'title/' + imdb_id
- elif id_prefix == 'nm':
- url = url_prefix + 'name/' + imdb_id
- elif id_prefix == 'ch':
- url = url_prefix + 'character/' + imdb_id
- elif id_prefix == 'co':
- url = url_prefix + 'company/' + imdb_id
- elif id_prefix == 'ev':
- url = url_prefix + 'event/' + imdb_id
- else:
- url = None
- return url
+ def get_str(self, result, language):
+ value = result.get(self.name)
+ unit = result.get(self.name + "Unit")
+ if unit is not None:
+ unit = unit.replace('http://www.wikidata.org/entity/', '')
+ return value + " " + get_label_for_entity(unit, language)
+ return value
-def get_geolink(result):
- coordinates = eval_xpath(result, value_xpath)
- if not coordinates:
- return None
- coordinates = extract_text(coordinates[0])
- latitude, longitude = coordinates.split(',')
-
- # convert to decimal
- lat = int(latitude[:latitude.find(u'°')])
- if latitude.find('\'') >= 0:
- lat += int(latitude[latitude.find(u'°') + 1:latitude.find('\'')] or 0) / 60.0
- if latitude.find('"') >= 0:
- lat += float(latitude[latitude.find('\'') + 1:latitude.find('"')] or 0) / 3600.0
- if latitude.find('S') >= 0:
- lat *= -1
- lon = int(longitude[:longitude.find(u'°')])
- if longitude.find('\'') >= 0:
- lon += int(longitude[longitude.find(u'°') + 1:longitude.find('\'')] or 0) / 60.0
- if longitude.find('"') >= 0:
- lon += float(longitude[longitude.find('\'') + 1:longitude.find('"')] or 0) / 3600.0
- if longitude.find('W') >= 0:
- lon *= -1
-
- # TODO: get precision
- precision = 0.0002
- # there is no zoom information, deduce from precision (error prone)
- # samples :
- # 13 --> 5
- # 1 --> 6
- # 0.016666666666667 --> 9
- # 0.00027777777777778 --> 19
- # wolframalpha :
- # quadratic fit { {13, 5}, {1, 6}, {0.0166666, 9}, {0.0002777777,19}}
- # 14.1186-8.8322 x+0.625447 x^2
- if precision < 0.0003:
- zoom = 19
- else:
- zoom = int(15 - precision * 8.8322 + precision * precision * 0.625447)
+class WDArticle(WDAttribute):
+
+ __slots__ = 'language', 'kwargs'
+
+ def __init__(self, language, kwargs=None):
+ super().__init__('wikipedia')
+ self.language = language
+ self.kwargs = kwargs or {}
+
+ def get_label(self, language):
+ # language parameter is ignored
+ return "Wikipedia ({language})".replace('{language}', self.language)
+
+ def get_select(self):
+ return "?article{language} ?articleName{language}".replace('{language}', self.language)
+
+ def get_where(self):
+ return """OPTIONAL { ?article{language} schema:about ?item ;
+ schema:inLanguage "{language}" ;
+ schema:isPartOf <https://{language}.wikipedia.org/> ;
+ schema:name ?articleName{language} . }""".replace('{language}', self.language)
+
+ def get_group_by(self):
+ return self.get_select()
+
+ def get_str(self, result, language):
+ key = 'article{language}'.replace('{language}', self.language)
+ return result.get(key)
+
+
+class WDLabelAttribute(WDAttribute):
+
+ def get_select(self):
+ return '(group_concat(distinct ?{name}Label;separator=", ") as ?{name}Labels)'.replace('{name}', self.name)
+
+ def get_where(self):
+ return "OPTIONAL { ?item wdt:{name} ?{name} . }".replace('{name}', self.name)
+
+ def get_wikibase_label(self):
+ return "?{name} rdfs:label ?{name}Label .".replace('{name}', self.name)
- url = url_map\
- .replace('{latitude}', str(lat))\
- .replace('{longitude}', str(lon))\
- .replace('{zoom}', str(zoom))
+ def get_str(self, result, language):
+ return result.get(self.name + 'Labels')
- return url
+class WDURLAttribute(WDAttribute):
-def get_wikilink(result, wikiid):
- url = eval_xpath(result, wikilink_xpath.replace('{wikiid}', wikiid))
- if not url:
+ HTTP_WIKIMEDIA_IMAGE = 'http://commons.wikimedia.org/wiki/Special:FilePath/'
+
+ __slots__ = 'url_id', 'kwargs'
+
+ def __init__(self, name, url_id=None, kwargs=None):
+ super().__init__(name)
+ self.url_id = url_id
+ self.kwargs = kwargs
+
+ def get_str(self, result, language):
+ value = result.get(self.name + 's')
+ if self.url_id and value is not None and value != '':
+ value = value.split(',')[0]
+ url_id = self.url_id
+ if value.startswith(WDURLAttribute.HTTP_WIKIMEDIA_IMAGE):
+ value = value[len(WDURLAttribute.HTTP_WIKIMEDIA_IMAGE):]
+ url_id = 'wikimedia_image'
+ return get_external_url(url_id, value)
+ return value
+
+
+class WDGeoAttribute(WDAttribute):
+
+ def get_label(self, language):
+ return "OpenStreetMap"
+
+ def get_select(self):
+ return "?{name}Lat ?{name}Long".replace('{name}', self.name)
+
+ def get_where(self):
+ return """OPTIONAL { ?item p:{name}/psv:{name} [
+ wikibase:geoLatitude ?{name}Lat ;
+ wikibase:geoLongitude ?{name}Long ] }""".replace('{name}', self.name)
+
+ def get_group_by(self):
+ return self.get_select()
+
+ def get_str(self, result, language):
+ latitude = result.get(self.name + 'Lat')
+ longitude = result.get(self.name + 'Long')
+ if latitude and longitude:
+ return latitude + ' ' + longitude
+ return None
+
+ def get_geo_url(self, result, osm_zoom=19):
+ latitude = result.get(self.name + 'Lat')
+ longitude = result.get(self.name + 'Long')
+ if latitude and longitude:
+ return get_earth_coordinates_url(latitude, longitude, osm_zoom)
return None
- url = url[0]
- if url.startswith('http://'):
- url = url.replace('http://', 'https://')
- elif url.startswith('//'):
- url = 'https:' + url
- return url
+
+
+class WDImageAttribute(WDURLAttribute):
+
+ __slots__ = 'priority',
+
+ def __init__(self, name, url_id=None, priority=100):
+ super().__init__(name, url_id)
+ self.priority = priority
+
+
+class WDDateAttribute(WDAttribute):
+
+ def get_select(self):
+ return '?{name} ?{name}timePrecision ?{name}timeZone ?{name}timeCalendar'.replace('{name}', self.name)
+
+ def get_where(self):
+ # To remove duplicate, add
+ # FILTER NOT EXISTS { ?item p:{name}/psv:{name}/wikibase:timeValue ?{name}bis FILTER (?{name}bis < ?{name}) }
+ # this filter is too slow, so the response function ignore duplicate results
+ # (see the seen_entities variable)
+ return """OPTIONAL { ?item p:{name}/psv:{name} [
+ wikibase:timeValue ?{name} ;
+ wikibase:timePrecision ?{name}timePrecision ;
+ wikibase:timeTimezone ?{name}timeZone ;
+ wikibase:timeCalendarModel ?{name}timeCalendar ] . }
+ hint:Prior hint:rangeSafe true;""".replace('{name}', self.name)
+
+ def get_group_by(self):
+ return self.get_select()
+
+ def format_8(self, value, locale):
+ # precision: less than a year
+ return value
+
+ def format_9(self, value, locale):
+ year = int(value)
+ # precision: year
+ if year < 1584:
+ if year < 0:
+ return str(year - 1)
+ return str(year)
+ timestamp = isoparse(value)
+ return format_date(timestamp, format='yyyy', locale=locale)
+
+ def format_10(self, value, locale):
+ # precision: month
+ timestamp = isoparse(value)
+ return format_date(timestamp, format='MMMM y', locale=locale)
+
+ def format_11(self, value, locale):
+ # precision: day
+ timestamp = isoparse(value)
+ return format_date(timestamp, format='full', locale=locale)
+
+ def format_13(self, value, locale):
+ timestamp = isoparse(value)
+ # precision: minute
+ return get_datetime_format(format, locale=locale) \
+ .replace("'", "") \
+ .replace('{0}', format_time(timestamp, 'full', tzinfo=None,
+ locale=locale)) \
+ .replace('{1}', format_date(timestamp, 'short', locale=locale))
+
+ def format_14(self, value, locale):
+ # precision: second.
+ return format_datetime(isoparse(value), format='full', locale=locale)
+
+ DATE_FORMAT = {
+ '0': ('format_8', 1000000000),
+ '1': ('format_8', 100000000),
+ '2': ('format_8', 10000000),
+ '3': ('format_8', 1000000),
+ '4': ('format_8', 100000),
+ '5': ('format_8', 10000),
+ '6': ('format_8', 1000),
+ '7': ('format_8', 100),
+ '8': ('format_8', 10),
+ '9': ('format_9', 1), # year
+ '10': ('format_10', 1), # month
+ '11': ('format_11', 0), # day
+ '12': ('format_13', 0), # hour (not supported by babel, display minute)
+ '13': ('format_13', 0), # minute
+ '14': ('format_14', 0) # second
+ }
+
+ def get_str(self, result, language):
+ value = result.get(self.name)
+ if value == '' or value is None:
+ return None
+ precision = result.get(self.name + 'timePrecision')
+ date_format = WDDateAttribute.DATE_FORMAT.get(precision)
+ if date_format is not None:
+ format_method = getattr(self, date_format[0])
+ precision = date_format[1]
+ try:
+ if precision >= 1:
+ t = value.split('-')
+ if value.startswith('-'):
+ value = '-' + t[1]
+ else:
+ value = t[0]
+ return format_method(value, language)
+ except Exception:
+ return value
+ return value
+
+
+def debug_explain_wikidata_query(query, method='GET'):
+ if method == 'GET':
+ http_response = get(SPARQL_EXPLAIN_URL + '&' + urlencode({'query': query}), headers=get_headers())
+ else:
+ http_response = post(SPARQL_EXPLAIN_URL, data={'query': query}, headers=get_headers())
+ http_response.raise_for_status()
+ return http_response.content
+
+
+def init(engine_settings=None):
+ # WIKIDATA_PROPERTIES : add unit symbols
+ WIKIDATA_PROPERTIES.update(WIKIDATA_UNITS)
+
+ # WIKIDATA_PROPERTIES : add property labels
+ wikidata_property_names = []
+ for attribute in get_attributes('en'):
+ if type(attribute) in (WDAttribute, WDAmountAttribute, WDURLAttribute, WDDateAttribute, WDLabelAttribute):
+ if attribute.name not in WIKIDATA_PROPERTIES:
+ wikidata_property_names.append("wd:" + attribute.name)
+ query = QUERY_PROPERTY_NAMES.replace('%ATTRIBUTES%', " ".join(wikidata_property_names))
+ jsonresponse = send_wikidata_query(query)
+ for result in jsonresponse.get('results', {}).get('bindings', {}):
+ name = result['name']['value']
+ lang = result['name']['xml:lang']
+ entity_id = result['item']['value'].replace('http://www.wikidata.org/entity/', '')
+ WIKIDATA_PROPERTIES[(entity_id, lang)] = name.capitalize()
diff --git a/searx/engines/wikipedia.py b/searx/engines/wikipedia.py
index a216ba8..3ad8748 100644
--- a/searx/engines/wikipedia.py
+++ b/searx/engines/wikipedia.py
@@ -1,33 +1,28 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Wikipedia (Web)
-
- @website https://{language}.wikipedia.org
- @provide-api yes
-
- @using-api yes
- @results JSON
- @stable yes
- @parse url, infobox
"""
+from urllib.parse import quote
from json import loads
from lxml.html import fromstring
-from searx.url_utils import quote, urlencode
-from searx.utils import match_language
+from searx.utils import match_language, searx_useragent
+from searx.raise_for_httperror import raise_for_httperror
+
+# about
+about = {
+ "website": 'https://www.wikipedia.org/',
+ "wikidata_id": 'Q52',
+ "official_api_documentation": 'https://en.wikipedia.org/api/',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
# search-url
-base_url = u'https://{language}.wikipedia.org/'
-search_url = base_url + u'w/api.php?'\
- 'action=query'\
- '&format=json'\
- '&{query}'\
- '&prop=extracts|pageimages|pageprops'\
- '&ppprop=disambiguation'\
- '&exintro'\
- '&explaintext'\
- '&pithumbsize=300'\
- '&redirects'
+search_url = 'https://{language}.wikipedia.org/api/rest_v1/page/summary/{title}'
supported_languages_url = 'https://meta.wikimedia.org/wiki/List_of_Wikipedias'
+language_variants = {"zh": ("zh-cn", "zh-hk", "zh-mo", "zh-my", "zh-sg", "zh-tw")}
# set language in base_url
@@ -41,77 +36,55 @@ def url_lang(lang):
# do search-request
def request(query, params):
if query.islower():
- query = u'{0}|{1}'.format(query.decode('utf-8'), query.decode('utf-8').title()).encode('utf-8')
-
- params['url'] = search_url.format(query=urlencode({'titles': query}),
- language=url_lang(params['language']))
-
- return params
-
-
-# get first meaningful paragraph
-# this should filter out disambiguation pages and notes above first paragraph
-# "magic numbers" were obtained by fine tuning
-def extract_first_paragraph(content, title, image):
- first_paragraph = None
-
- failed_attempts = 0
- for paragraph in content.split('\n'):
+ query = query.title()
- starts_with_title = paragraph.lower().find(title.lower(), 0, len(title) + 35)
- length = len(paragraph)
+ language = url_lang(params['language'])
+ params['url'] = search_url.format(title=quote(query),
+ language=language)
- if length >= 200 or (starts_with_title >= 0 and (image or length >= 150)):
- first_paragraph = paragraph
- break
+ if params['language'].lower() in language_variants.get(language, []):
+ params['headers']['Accept-Language'] = params['language'].lower()
- failed_attempts += 1
- if failed_attempts > 3:
- return None
+ params['headers']['User-Agent'] = searx_useragent()
+ params['raise_for_httperror'] = False
+ params['soft_max_redirects'] = 2
- return first_paragraph
+ return params
# get response from search-request
def response(resp):
- results = []
-
- search_result = loads(resp.text)
-
- # wikipedia article's unique id
- # first valid id is assumed to be the requested article
- if 'pages' not in search_result['query']:
- return results
-
- for article_id in search_result['query']['pages']:
- page = search_result['query']['pages'][article_id]
- if int(article_id) > 0:
- break
-
- if int(article_id) < 0 or 'disambiguation' in page.get('pageprops', {}):
+ if resp.status_code == 404:
return []
- title = page.get('title')
+ if resp.status_code == 400:
+ try:
+ api_result = loads(resp.text)
+ except:
+ pass
+ else:
+ if api_result['type'] == 'https://mediawiki.org/wiki/HyperSwitch/errors/bad_request' \
+ and api_result['detail'] == 'title-invalid-characters':
+ return []
- image = page.get('thumbnail')
- if image:
- image = image.get('source')
+ raise_for_httperror(resp)
- extract = page.get('extract')
+ results = []
+ api_result = loads(resp.text)
- summary = extract_first_paragraph(extract, title, image)
- summary = summary.replace('() ', '')
+ # skip disambiguation pages
+ if api_result.get('type') != 'standard':
+ return []
- # link to wikipedia article
- wikipedia_link = base_url.format(language=url_lang(resp.search_params['language'])) \
- + 'wiki/' + quote(title.replace(' ', '_').encode('utf8'))
+ title = api_result['title']
+ wikipedia_link = api_result['content_urls']['desktop']['page']
results.append({'url': wikipedia_link, 'title': title})
results.append({'infobox': title,
'id': wikipedia_link,
- 'content': summary,
- 'img_src': image,
+ 'content': api_result.get('extract', ''),
+ 'img_src': api_result.get('thumbnail', {}).get('source'),
'urls': [{'title': 'Wikipedia', 'url': wikipedia_link}]})
return results
@@ -133,6 +106,6 @@ def _fetch_supported_languages(resp):
articles = int(td[4].xpath('./a/b')[0].text.replace(',', ''))
# exclude languages with too few articles
if articles >= 100:
- supported_languages[code] = {"name": name, "english_name": english_name, "articles": articles}
+ supported_languages[code] = {"name": name, "english_name": english_name}
return supported_languages
diff --git a/searx/engines/wolframalpha_api.py b/searx/engines/wolframalpha_api.py
index 1c58c4a..9c84e28 100644
--- a/searx/engines/wolframalpha_api.py
+++ b/searx/engines/wolframalpha_api.py
@@ -1,15 +1,20 @@
-# Wolfram Alpha (Science)
-#
-# @website https://www.wolframalpha.com
-# @provide-api yes (https://api.wolframalpha.com/v2/)
-#
-# @using-api yes
-# @results XML
-# @stable yes
-# @parse url, infobox
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Wolfram|Alpha (Science)
+"""
from lxml import etree
-from searx.url_utils import urlencode
+from urllib.parse import urlencode
+
+# about
+about = {
+ "website": 'https://www.wolframalpha.com',
+ "wikidata_id": 'Q207006',
+ "official_api_documentation": 'https://products.wolframalpha.com/api/',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'XML',
+}
# search-url
search_url = 'https://api.wolframalpha.com/v2/query?appid={api_key}&{query}'
@@ -45,15 +50,15 @@ def request(query, params):
# replace private user area characters to make text legible
def replace_pua_chars(text):
- pua_chars = {u'\uf522': u'\u2192', # rigth arrow
- u'\uf7b1': u'\u2115', # set of natural numbers
- u'\uf7b4': u'\u211a', # set of rational numbers
- u'\uf7b5': u'\u211d', # set of real numbers
- u'\uf7bd': u'\u2124', # set of integer numbers
- u'\uf74c': 'd', # differential
- u'\uf74d': u'\u212f', # euler's number
- u'\uf74e': 'i', # imaginary number
- u'\uf7d9': '='} # equals sign
+ pua_chars = {'\uf522': '\u2192', # rigth arrow
+ '\uf7b1': '\u2115', # set of natural numbers
+ '\uf7b4': '\u211a', # set of rational numbers
+ '\uf7b5': '\u211d', # set of real numbers
+ '\uf7bd': '\u2124', # set of integer numbers
+ '\uf74c': 'd', # differential
+ '\uf74d': '\u212f', # euler's number
+ '\uf74e': 'i', # imaginary number
+ '\uf7d9': '='} # equals sign
for k, v in pua_chars.items():
text = text.replace(k, v)
diff --git a/searx/engines/wolframalpha_noapi.py b/searx/engines/wolframalpha_noapi.py
index 387c9fa..8e427d5 100644
--- a/searx/engines/wolframalpha_noapi.py
+++ b/searx/engines/wolframalpha_noapi.py
@@ -1,18 +1,23 @@
-# Wolfram|Alpha (Science)
-#
-# @website https://www.wolframalpha.com/
-# @provide-api yes (https://api.wolframalpha.com/v2/)
-#
-# @using-api no
-# @results JSON
-# @stable no
-# @parse url, infobox
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Wolfram|Alpha (Science)
+"""
from json import loads
from time import time
+from urllib.parse import urlencode
from searx.poolrequests import get as http_get
-from searx.url_utils import urlencode
+
+# about
+about = {
+ "website": 'https://www.wolframalpha.com/',
+ "wikidata_id": 'Q207006',
+ "official_api_documentation": 'https://products.wolframalpha.com/api/',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'JSON',
+}
# search-url
url = 'https://www.wolframalpha.com/'
diff --git a/searx/engines/wordnik.py b/searx/engines/wordnik.py
new file mode 100644
index 0000000..3abe9ef
--- /dev/null
+++ b/searx/engines/wordnik.py
@@ -0,0 +1,77 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""Wordnik (general)
+
+"""
+
+from lxml.html import fromstring
+from searx import logger
+from searx.utils import extract_text
+from searx.raise_for_httperror import raise_for_httperror
+
+logger = logger.getChild('Wordnik engine')
+
+# about
+about = {
+ "website": 'https://www.wordnik.com',
+ "wikidata_id": 'Q8034401',
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+
+categories = ['general']
+paging = False
+
+URL = 'https://www.wordnik.com'
+SEARCH_URL = URL + '/words/{query}'
+
+
+def request(query, params):
+ params['url'] = SEARCH_URL.format(query=query)
+ logger.debug(f"query_url --> {params['url']}")
+ return params
+
+
+def response(resp):
+ results = []
+
+ raise_for_httperror(resp)
+ dom = fromstring(resp.text)
+ word = extract_text(dom.xpath('//*[@id="headword"]/text()'))
+
+ definitions = []
+ for src in dom.xpath('//*[@id="define"]//h3[@class="source"]'):
+ src_text = extract_text(src).strip()
+ if src_text.startswith('from '):
+ src_text = src_text[5:]
+
+ src_defs = []
+ for def_item in src.xpath('following-sibling::ul[1]/li'):
+ def_abbr = extract_text(def_item.xpath('.//abbr')).strip()
+ def_text = extract_text(def_item).strip()
+ if def_abbr:
+ def_text = def_text[len(def_abbr):].strip()
+ src_defs.append((def_abbr, def_text))
+
+ definitions.append((src_text, src_defs))
+
+ if not definitions:
+ return results
+
+ infobox = ''
+ for src_text, src_defs in definitions:
+ infobox += f"<small>{src_text}</small>"
+ infobox += "<ul>"
+ for def_abbr, def_text in src_defs:
+ if def_abbr:
+ def_abbr += ": "
+ infobox += f"<li><i>{def_abbr}</i> {def_text}</li>"
+ infobox += "</ul>"
+
+ results.append({
+ 'infobox': word,
+ 'content': infobox,
+ })
+
+ return results
diff --git a/searx/engines/www1x.py b/searx/engines/www1x.py
index f1154b1..96b8d68 100644
--- a/searx/engines/www1x.py
+++ b/searx/engines/www1x.py
@@ -1,18 +1,21 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
1x (Images)
-
- @website http://1x.com/
- @provide-api no
-
- @using-api no
- @results HTML
- @stable no (HTML can change)
- @parse url, title, thumbnail, img_src, content
"""
-from lxml import html
-from searx.url_utils import urlencode, urljoin
-from searx.engines.xpath import extract_text
+from lxml import html, etree
+from urllib.parse import urlencode, urljoin
+from searx.utils import extract_text, eval_xpath_list, eval_xpath_getindex
+
+# about
+about = {
+ "website": 'https://1x.com/',
+ "wikidata_id": None,
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['images']
@@ -21,6 +24,7 @@ paging = False
# search-url
base_url = 'https://1x.com'
search_url = base_url + '/backend/search.php?{query}'
+gallery_url = 'https://gallery.1x.com/'
# do search-request
@@ -33,23 +37,18 @@ def request(query, params):
# get response from search-request
def response(resp):
results = []
-
- dom = html.fromstring(resp.text)
- for res in dom.xpath('//div[@class="List-item MainListing"]'):
- # processed start and end of link
- link = res.xpath('//a')[0]
-
+ xmldom = etree.fromstring(resp.content)
+ xmlsearchresult = eval_xpath_getindex(xmldom, '//searchresult', 0)
+ dom = html.fragment_fromstring(xmlsearchresult.text, create_parent='div')
+ for link in eval_xpath_list(dom, '/div/table/tr/td/div[2]//a'):
url = urljoin(base_url, link.attrib.get('href'))
title = extract_text(link)
-
- thumbnail_src = urljoin(base_url, res.xpath('.//img')[0].attrib['src'])
- # TODO: get image with higher resolution
- img_src = thumbnail_src
+ thumbnail_src = urljoin(gallery_url, eval_xpath_getindex(link, './/img', 0).attrib['src'])
# append result
results.append({'url': url,
'title': title,
- 'img_src': img_src,
+ 'img_src': thumbnail_src,
'content': '',
'thumbnail_src': thumbnail_src,
'template': 'images.html'})
diff --git a/searx/engines/xpath.py b/searx/engines/xpath.py
index b75896c..9242330 100644
--- a/searx/engines/xpath.py
+++ b/searx/engines/xpath.py
@@ -1,9 +1,11 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
from lxml import html
-from lxml.etree import _ElementStringResult, _ElementUnicodeResult
-from searx.utils import html_to_text, eval_xpath
-from searx.url_utils import unquote, urlencode, urljoin, urlparse
+from urllib.parse import urlencode
+from searx.utils import extract_text, extract_url, eval_xpath, eval_xpath_list
search_url = None
+lang_all = 'en'
url_xpath = None
content_xpath = None
title_xpath = None
@@ -11,80 +13,73 @@ thumbnail_xpath = False
paging = False
suggestion_xpath = ''
results_xpath = ''
+cached_xpath = ''
+cached_url = ''
+soft_max_redirects = 0
+
+cookies = {}
+headers = {}
+'''Some engines might offer different result based on cookies or headers.
+Possible use-case: To set safesearch cookie or header to moderate.'''
+
+paging = False
+'''Engine supports paging [True or False].'''
-# parameters for engines with paging support
-#
-# number of results on each page
-# (only needed if the site requires not a page number, but an offset)
page_size = 1
# number of the first page (usually 0 or 1)
first_page_num = 1
-'''
-if xpath_results is list, extract the text from each result and concat the list
-if xpath_results is a xml element, extract all the text node from it
- ( text_content() method from lxml )
-if xpath_results is a string element, then it's already done
-'''
+time_range_support = False
+'''Engine supports search time range.'''
+time_range_url = '&hours={time_range_val}'
+'''Time range URL parameter in the in :py:obj:`search_url`. If no time range is
+requested by the user, the URL paramter is an empty string. The
+``{time_range_val}`` replacement is taken from the :py:obj:`time_range_map`.
-def extract_text(xpath_results):
- if type(xpath_results) == list:
- # it's list of result : concat everything using recursive call
- result = ''
- for e in xpath_results:
- result = result + extract_text(e)
- return result.strip()
- elif type(xpath_results) in [_ElementStringResult, _ElementUnicodeResult]:
- # it's a string
- return ''.join(xpath_results)
- else:
- # it's a element
- text = html.tostring(
- xpath_results, encoding='unicode', method='text', with_tail=False
- )
- text = text.strip().replace('\n', ' ')
- return ' '.join(text.split())
-
-
-def extract_url(xpath_results, search_url):
- if xpath_results == []:
- raise Exception('Empty url resultset')
- url = extract_text(xpath_results)
+.. code:: yaml
- if url.startswith('//'):
- # add http or https to this kind of url //example.com/
- parsed_search_url = urlparse(search_url)
- url = u'{0}:{1}'.format(parsed_search_url.scheme or 'http', url)
- elif url.startswith('/'):
- # fix relative url to the search engine
- url = urljoin(search_url, url)
-
- # normalize url
- url = normalize_url(url)
+ time_range_url : '&days={time_range_val}'
+'''
- return url
+time_range_map = {
+ 'day': 24,
+ 'week': 24 * 7,
+ 'month': 24 * 30,
+ 'year': 24 * 365,
+}
+'''Maps time range value from user to ``{time_range_val}`` in
+:py:obj:`time_range_url`.
+
+.. code:: yaml
+
+ time_range_map:
+ day: 1
+ week: 7
+ month: 30
+ year: 365
+'''
+safe_search_support = False
+'''Engine supports safe-search.'''
-def normalize_url(url):
- parsed_url = urlparse(url)
+safe_search_map = {
+ 0: '&filter=none',
+ 1: '&filter=moderate',
+ 2: '&filter=strict'
+}
+'''Maps safe-search value to ``{safe_search}`` in :py:obj:`search_url`.
- # add a / at this end of the url if there is no path
- if not parsed_url.netloc:
- raise Exception('Cannot parse url')
- if not parsed_url.path:
- url += '/'
+.. code:: yaml
- # FIXME : hack for yahoo
- if parsed_url.hostname == 'search.yahoo.com'\
- and parsed_url.path.startswith('/r'):
- p = parsed_url.path
- mark = p.find('/**')
- if mark != -1:
- return unquote(p[mark + 3:]).decode('utf-8')
+ safesearch: true
+ safes_search_map:
+ 0: '&filter=none'
+ 1: '&filter=moderate'
+ 2: '&filter=strict'
- return url
+'''
def request(query, params):
@@ -94,8 +89,36 @@ def request(query, params):
if paging and search_url.find('{pageno}') >= 0:
fp['pageno'] = (params['pageno'] - 1) * page_size + first_page_num
- params['url'] = search_url.format(**fp)
- params['query'] = query
+ safe_search = ''
+ if params['safesearch']:
+ safe_search = safe_search_map[params['safesearch']]
+
+ lang = lang_all
+ if params['language'] != 'all':
+ lang = params['language'][:2]
+
+ time_range = ''
+ if params.get('time_range'):
+ time_range_val = time_range_map.get(params.get('time_range'))
+ time_range = time_range_url.format(time_range_val=time_range_val)
+
+ safe_search = ''
+ if params['safesearch']:
+ safe_search = safe_search_map[params['safesearch']]
+
+ fargs = {
+ 'query': urlencode({'q': query})[2:],
+ 'lang': lang,
+ 'pageno': (params['pageno'] - 1) * page_size + first_page_num,
+ 'time_range': time_range,
+ 'safe_search': safe_search,
+ }
+
+ params['cookies'].update(cookies)
+ params['headers'].update(headers)
+
+ params['url'] = search_url.format(**fargs)
+ params['soft_max_redirects'] = soft_max_redirects
return params
@@ -103,28 +126,49 @@ def request(query, params):
def response(resp):
results = []
dom = html.fromstring(resp.text)
+ is_onion = True if 'onions' in categories else False # pylint: disable=undefined-variable
+
if results_xpath:
- for result in eval_xpath(dom, results_xpath):
- url = extract_url(eval_xpath(result, url_xpath), search_url)
- title = extract_text(eval_xpath(result, title_xpath))
- content = extract_text(eval_xpath(result, content_xpath))
+ for result in eval_xpath_list(dom, results_xpath):
+ url = extract_url(eval_xpath_list(result, url_xpath, min_len=1), search_url)
+ title = extract_text(eval_xpath_list(result, title_xpath, min_len=1))
+ content = extract_text(eval_xpath_list(result, content_xpath))
tmp_result = {'url': url, 'title': title, 'content': content}
# add thumbnail if available
if thumbnail_xpath:
- thumbnail_xpath_result = eval_xpath(result, thumbnail_xpath)
+ thumbnail_xpath_result = eval_xpath_list(result, thumbnail_xpath)
if len(thumbnail_xpath_result) > 0:
tmp_result['img_src'] = extract_url(thumbnail_xpath_result, search_url)
+ # add alternative cached url if available
+ if cached_xpath:
+ tmp_result['cached_url'] = cached_url\
+ + extract_text(eval_xpath_list(result, cached_xpath, min_len=1))
+
+ if is_onion:
+ tmp_result['is_onion'] = True
+
results.append(tmp_result)
else:
- for url, title, content in zip(
- (extract_url(x, search_url) for
- x in eval_xpath(dom, url_xpath)),
- map(extract_text, eval_xpath(dom, title_xpath)),
- map(extract_text, eval_xpath(dom, content_xpath))
- ):
- results.append({'url': url, 'title': title, 'content': content})
+ if cached_xpath:
+ for url, title, content, cached in zip(
+ (extract_url(x, search_url) for
+ x in eval_xpath_list(dom, url_xpath)),
+ map(extract_text, eval_xpath_list(dom, title_xpath)),
+ map(extract_text, eval_xpath_list(dom, content_xpath)),
+ map(extract_text, eval_xpath_list(dom, cached_xpath))
+ ):
+ results.append({'url': url, 'title': title, 'content': content,
+ 'cached_url': cached_url + cached, 'is_onion': is_onion})
+ else:
+ for url, title, content in zip(
+ (extract_url(x, search_url) for
+ x in eval_xpath_list(dom, url_xpath)),
+ map(extract_text, eval_xpath_list(dom, title_xpath)),
+ map(extract_text, eval_xpath_list(dom, content_xpath))
+ ):
+ results.append({'url': url, 'title': title, 'content': content, 'is_onion': is_onion})
if not suggestion_xpath:
return results
diff --git a/searx/engines/xpath_flex.py b/searx/engines/xpath_flex.py
new file mode 100644
index 0000000..bf19c03
--- /dev/null
+++ b/searx/engines/xpath_flex.py
@@ -0,0 +1,121 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+"""
+ xPath Flex Engine (xpath_flex)
+
+ Aims to be a more flexible engine that covers xpath use cases for all categories
+ (as it allows to override the result template).
+ The engine configuration expects you to specify a 'field_definition' dictionary with the following properties:
+ * field_name: the template field that should be set by this entry.
+ * xpath: a xpath expression to apply
+ * (optional) single_element: if True, will execute the xpath expression to expect a single node, not a list
+ * (optional) extract: a string specifying an extraction/conversion of the value, the following is supported:
+ "url": extracts an url using base search url
+ "boolean": will convert the value passed to the template to True if the xpath matches any node
+ "boolean_negate": will convert the value passed to the template to True if the xpath does NOT match a node
+ by default, text will be extracted from the found node(s)
+
+ an example would look like this (for an example shopping site with paging):
+
+ - name : xpath-flex-example
+ engine : xpath_flex
+ paging : True
+ search_url : https://myl-shopping.site/search?q={query}&p={pageno}
+ template : products.html
+ results_xpath : //div[@class="listing--container"]/div[@class="listing"]/div[contains(@class,"product--box")]
+ field_definition:
+ - field_name: url
+ xpath: (.//a[contains(@class,"product--image")])/@href
+ extract: url
+ - field_name: title
+ xpath: (.//a[contains(@class,"product--image")])/@title
+ - field_name: content
+ xpath: .//div[@class="product--description"]/text()
+ - field_name: price
+ xpath: .//div[@class="product--price"]/span/text()
+ - field_name: thumbnail
+ xpath: substring-before( (.//span[@class="image--media"]/img)/@srcset, ", ")
+ extract: url
+ single_element: True
+ - field_name: has_stock
+ xpath: .//a[contains(@class,"buynow")][not(contains(@class,"is--disabled"))]
+ extract: boolean
+ single_element: True
+
+"""
+
+from lxml import html
+from urllib.parse import urlencode
+from searx import logger
+from searx.utils import extract_text, extract_url, eval_xpath, eval_xpath_list
+
+logger = logger.getChild('xpath_general engine')
+
+search_url = None
+paging = False
+results_xpath = ''
+soft_max_redirects = 0
+template = 'default.html'
+unresolvable_value = '' # will be set if expression cannot be resolved
+default_field_settings = {'single_element': False}
+
+field_definition = {}
+
+# parameters for engines with paging support
+#
+# number of results on each page
+# (only needed if the site requires not a page number, but an offset)
+page_size = 1
+# number of the first page (usually 0 or 1)
+first_page_num = 1
+
+
+def request(query, params):
+ query = urlencode({'q': query})[2:]
+
+ fp = {'query': query}
+ if paging and search_url.find('{pageno}') >= 0:
+ fp['pageno'] = (params['pageno'] - 1) * page_size + first_page_num
+
+ params['url'] = search_url.format(**fp)
+ params['query'] = query
+ params['soft_max_redirects'] = soft_max_redirects
+
+ return params
+
+
+def response(resp):
+ results = []
+ dom = html.fromstring(resp.text)
+
+ for result in eval_xpath_list(dom, results_xpath):
+
+ single_result = {
+ 'template': template
+ }
+
+ for single_field in field_definition:
+ single_field = {**default_field_settings, **single_field}
+ try:
+ if single_field['single_element']:
+ node = eval_xpath(result, single_field['xpath'])
+ else:
+ node = eval_xpath_list(result, single_field['xpath'])
+
+ if 'extract' in single_field and single_field['extract'] == 'url':
+ value = extract_url(node, search_url)
+ elif 'extract' in single_field and single_field['extract'] == 'boolean':
+ value = (isinstance(node, list) and len(node) > 0)
+ elif 'extract' in single_field and single_field['extract'] == 'boolean_negate':
+ value = (isinstance(node, list) and len(node) < 1)
+ else:
+ value = extract_text(node)
+
+ single_result[single_field['field_name']] = value
+ except Exception as e:
+ logger.warning('error in resolving field %s:\n%s', single_field['field_name'], e)
+ single_result[single_field['field_name']] = unresolvable_value
+
+ results.append(single_result)
+
+ return results
diff --git a/searx/engines/yacy.py b/searx/engines/yacy.py
index 25bc836..c194ca4 100644
--- a/searx/engines/yacy.py
+++ b/searx/engines/yacy.py
@@ -1,28 +1,32 @@
-# Yacy (Web, Images, Videos, Music, Files)
-#
-# @website http://yacy.net
-# @provide-api yes
-# (http://www.yacy-websuche.de/wiki/index.php/Dev:APIyacysearch)
-#
-# @using-api yes
-# @results JSON
-# @stable yes
-# @parse (general) url, title, content, publishedDate
-# @parse (images) url, title, img_src
-#
-# @todo parse video, audio and file results
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Yacy (Web, Images, Videos, Music, Files)
+"""
from json import loads
from dateutil import parser
-from searx.url_utils import urlencode
+from urllib.parse import urlencode
+
+from requests.auth import HTTPDigestAuth
from searx.utils import html_to_text
+# about
+about = {
+ "website": 'https://yacy.net/',
+ "wikidata_id": 'Q1759675',
+ "official_api_documentation": 'https://wiki.yacy.net/index.php/Dev:API',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
+
# engine dependent config
categories = ['general', 'images'] # TODO , 'music', 'videos', 'files'
paging = True
-language_support = True
number_of_results = 5
+http_digest_auth_user = ""
+http_digest_auth_pass = ""
# search-url
base_url = 'http://localhost:8090'
@@ -51,6 +55,9 @@ def request(query, params):
limit=number_of_results,
search_type=search_type)
+ if http_digest_auth_user and http_digest_auth_pass:
+ params['auth'] = HTTPDigestAuth(http_digest_auth_user, http_digest_auth_pass)
+
# add language tag if specified
if params['language'] != 'all':
params['url'] += '&lr=lang_' + params['language'].split('-')[0]
@@ -75,7 +82,7 @@ def response(resp):
for result in search_results[0].get('items', []):
# parse image results
- if result.get('image'):
+ if resp.search_params.get('category') == 'images':
result_url = ''
if 'url' in result:
@@ -104,5 +111,4 @@ def response(resp):
# TODO parse video, audio and file results
- # return results
return results
diff --git a/searx/engines/yahoo.py b/searx/engines/yahoo.py
index 36c1a11..a6b7790 100644
--- a/searx/engines/yahoo.py
+++ b/searx/engines/yahoo.py
@@ -1,49 +1,104 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Yahoo (Web)
-
- @website https://search.yahoo.com/web
- @provide-api yes (https://developer.yahoo.com/boss/search/),
- $0.80/1000 queries
-
- @using-api no (because pricing)
- @results HTML (using search portal)
- @stable no (HTML can change)
- @parse url, title, content, suggestion
"""
+from urllib.parse import (
+ unquote,
+ urlencode,
+)
from lxml import html
-from searx.engines.xpath import extract_text, extract_url
-from searx.url_utils import unquote, urlencode
-from searx.utils import match_language, eval_xpath
+
+from searx.utils import (
+ eval_xpath_getindex,
+ eval_xpath_list,
+ extract_text,
+ match_language,
+)
+
+# about
+about = {
+ "website": 'https://search.yahoo.com/',
+ "wikidata_id": None,
+ "official_api_documentation": 'https://developer.yahoo.com/api/',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['general']
paging = True
-language_support = True
time_range_support = True
+supported_languages_url = 'https://search.yahoo.com/preferences/languages'
+"""Supported languages are read from Yahoo preference page."""
+
+time_range_dict = {
+ 'day': ('1d', 'd'),
+ 'week': ('1w', 'w'),
+ 'month': ('1m', 'm'),
+}
+
+language_aliases = {
+ 'zh-HK': 'zh_chs',
+ 'zh-CN': 'zh_chs', # dead since 2015 / routed to hk.search.yahoo.com
+ 'zh-TW': 'zh_cht',
+}
+
+lang2domain = {
+ 'zh_chs': 'hk.search.yahoo.com',
+ 'zh_cht': 'tw.search.yahoo.com',
+ 'en': 'search.yahoo.com',
+
+ 'bg': 'search.yahoo.com',
+ 'cs': 'search.yahoo.com',
+ 'da': 'search.yahoo.com',
+ 'el': 'search.yahoo.com',
+ 'et': 'search.yahoo.com',
+ 'he': 'search.yahoo.com',
+ 'hr': 'search.yahoo.com',
+ 'ja': 'search.yahoo.com',
+ 'ko': 'search.yahoo.com',
+ 'sk': 'search.yahoo.com',
+ 'sl': 'search.yahoo.com',
+
+}
-# search-url
-base_url = 'https://search.yahoo.com/'
-search_url = 'search?{query}&b={offset}&fl=1&vl=lang_{lang}'
-search_url_with_time = 'search?{query}&b={offset}&fl=1&vl=lang_{lang}&age={age}&btf={btf}&fr2=time'
-supported_languages_url = 'https://search.yahoo.com/web/advanced'
+def _get_language(params):
-# specific xpath variables
-results_xpath = "//div[contains(concat(' ', normalize-space(@class), ' '), ' Sr ')]"
-url_xpath = './/h3/a/@href'
-title_xpath = './/h3/a'
-content_xpath = './/div[@class="compText aAbs"]'
-suggestion_xpath = "//div[contains(concat(' ', normalize-space(@class), ' '), ' AlsoTry ')]//a"
+ lang = language_aliases.get(params['language'])
+ if lang is None:
+ lang = match_language(
+ params['language'], supported_languages, language_aliases
+ )
+ lang = lang.split('-')[0]
+ return lang
-time_range_dict = {'day': ['1d', 'd'],
- 'week': ['1w', 'w'],
- 'month': ['1m', 'm']}
-language_aliases = {'zh-CN': 'zh-CHS', 'zh-TW': 'zh-CHT', 'zh-HK': 'zh-CHT'}
+def request(query, params):
+ """build request"""
+ offset = (params['pageno'] - 1) * 7 + 1
+ lang = _get_language(params)
+ age, btf = time_range_dict.get(params['time_range'], ('', ''))
+
+ args = urlencode({
+ 'p': query,
+ 'ei': 'UTF-8',
+ 'fl': 1,
+ 'vl': 'lang_' + lang,
+ 'btf': btf,
+ 'fr2': 'time',
+ 'age': age,
+ 'b': offset,
+ 'xargs': 0,
+ })
+
+ domain = lang2domain.get(lang, '%s.search.yahoo.com' % lang)
+ params['url'] = 'https://%s/search?%s' % (domain, args)
+ return params
-# remove yahoo-specific tracking-url
def parse_url(url_string):
endings = ['/RS', '/RK']
endpositions = []
@@ -61,86 +116,36 @@ def parse_url(url_string):
return unquote(url_string[start:end])
-def _get_url(query, offset, language, time_range):
- if time_range in time_range_dict:
- return base_url + search_url_with_time.format(offset=offset,
- query=urlencode({'p': query}),
- lang=language,
- age=time_range_dict[time_range][0],
- btf=time_range_dict[time_range][1])
- return base_url + search_url.format(offset=offset,
- query=urlencode({'p': query}),
- lang=language)
-
-
-def _get_language(params):
- if params['language'] == 'all':
- return 'en'
-
- language = match_language(params['language'], supported_languages, language_aliases)
- if language not in language_aliases.values():
- language = language.split('-')[0]
- language = language.replace('-', '_').lower()
-
- return language
-
-
-# do search-request
-def request(query, params):
- if params['time_range'] and params['time_range'] not in time_range_dict:
- return params
-
- offset = (params['pageno'] - 1) * 10 + 1
- language = _get_language(params)
-
- params['url'] = _get_url(query, offset, language, params['time_range'])
-
- # TODO required?
- params['cookies']['sB'] = 'fl=1&vl=lang_{lang}&sh=1&rw=new&v=1'\
- .format(lang=language)
-
- return params
-
-
-# get response from search-request
def response(resp):
results = []
-
dom = html.fromstring(resp.text)
- try:
- results_num = int(eval_xpath(dom, '//div[@class="compPagination"]/span[last()]/text()')[0]
- .split()[0].replace(',', ''))
- results.append({'number_of_results': results_num})
- except:
- pass
-
- # parse results
- for result in eval_xpath(dom, results_xpath):
- try:
- url = parse_url(extract_url(eval_xpath(result, url_xpath), search_url))
- title = extract_text(eval_xpath(result, title_xpath)[0])
- except:
+ for result in eval_xpath_list(dom, '//div[contains(@class,"algo-sr")]'):
+ url = eval_xpath_getindex(result, './/h3/a/@href', 0, default=None)
+ if url is None:
+ continue
+ url = parse_url(url)
+
+ title = eval_xpath_getindex(result, './/h3/a', 0, default=None)
+ if title is None:
continue
+ offset = len(extract_text(title.xpath('span')))
+ title = extract_text(title)[offset:]
- content = extract_text(eval_xpath(result, content_xpath)[0])
+ content = eval_xpath_getindex(
+ result, './/div[contains(@class, "compText")]', 0, default=''
+ )
+ content = extract_text(content, allow_none=True)
# append result
results.append({'url': url,
'title': title,
'content': content})
- # if no suggestion found, return results
- suggestions = eval_xpath(dom, suggestion_xpath)
- if not suggestions:
- return results
-
- # parse suggestion
- for suggestion in suggestions:
+ for suggestion in eval_xpath_list(dom, '//div[contains(@class, "AlsoTry")]//table//a'):
# append suggestion
results.append({'suggestion': extract_text(suggestion)})
- # return results
return results
@@ -148,13 +153,9 @@ def response(resp):
def _fetch_supported_languages(resp):
supported_languages = []
dom = html.fromstring(resp.text)
- options = eval_xpath(dom, '//div[@id="yschlang"]/span/label/input')
- for option in options:
- code_parts = eval_xpath(option, './@value')[0][5:].split('_')
- if len(code_parts) == 2:
- code = code_parts[0] + '-' + code_parts[1].upper()
- else:
- code = code_parts[0]
- supported_languages.append(code)
+ offset = len('lang_')
+
+ for val in eval_xpath_list(dom, '//div[contains(@class, "lang-item")]/input/@value'):
+ supported_languages.append(val[offset:])
return supported_languages
diff --git a/searx/engines/yahoo_news.py b/searx/engines/yahoo_news.py
index 9f6a415..49b3d1b 100644
--- a/searx/engines/yahoo_news.py
+++ b/searx/engines/yahoo_news.py
@@ -1,110 +1,111 @@
-# Yahoo (News)
-#
-# @website https://news.yahoo.com
-# @provide-api yes (https://developer.yahoo.com/boss/search/)
-# $0.80/1000 queries
-#
-# @using-api no (because pricing)
-# @results HTML (using search portal)
-# @stable no (HTML can change)
-# @parse url, title, content, publishedDate
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""Yahoo (News)
+
+Yahoo News is "English only" and do not offer localized nor language queries.
+
+"""
+
+# pylint: disable=invalid-name, missing-function-docstring
import re
+from urllib.parse import urlencode
from datetime import datetime, timedelta
+from dateutil import parser
from lxml import html
-from searx.engines.xpath import extract_text, extract_url
-from searx.engines.yahoo import (
- parse_url, _fetch_supported_languages, supported_languages_url, language_aliases
+
+from searx import logger
+from searx.utils import (
+ eval_xpath_list,
+ eval_xpath_getindex,
+ extract_text,
)
-from dateutil import parser
-from searx.url_utils import urlencode
-from searx.utils import match_language
-# engine dependent config
-categories = ['news']
-paging = True
-language_support = True
+from searx.engines.yahoo import parse_url
-# search-url
-search_url = 'https://news.search.yahoo.com/search?{query}&b={offset}&{lang}=uh3_news_web_gs_1&pz=10&xargs=0&vl=lang_{lang}' # noqa
+logger = logger.getChild('yahoo_news engine')
-# specific xpath variables
-results_xpath = '//ol[contains(@class,"searchCenterMiddle")]//li'
-url_xpath = './/h3/a/@href'
-title_xpath = './/h3/a'
-content_xpath = './/div[@class="compText"]'
-publishedDate_xpath = './/span[contains(@class,"tri")]'
-suggestion_xpath = '//div[contains(@class,"VerALSOTRY")]//a'
+# about
+about = {
+ "website": 'https://news.yahoo.com',
+ "wikidata_id": 'Q3044717',
+ "official_api_documentation": 'https://developer.yahoo.com/api/',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+language_support = False
+time_range_support = False
+safesearch = False
+paging = True
+categories = ['news']
+
+# search-url
+search_url = (
+ 'https://news.search.yahoo.com/search'
+ '?{query}&b={offset}'
+ )
+
+AGO_RE = re.compile(r'([0-9]+)\s*(year|month|week|day|minute|hour)')
+AGO_TIMEDELTA = {
+ 'minute': timedelta(minutes=1),
+ 'hour': timedelta(hours=1),
+ 'day': timedelta(days=1),
+ 'week': timedelta(days=7),
+ 'month': timedelta(days=30),
+ 'year': timedelta(days=365),
+}
-# do search-request
def request(query, params):
offset = (params['pageno'] - 1) * 10 + 1
- if params['language'] == 'all':
- language = 'en'
- else:
- language = match_language(params['language'], supported_languages, language_aliases).split('-')[0]
-
- params['url'] = search_url.format(offset=offset,
- query=urlencode({'p': query}),
- lang=language)
-
- # TODO required?
- params['cookies']['sB'] = '"v=1&vm=p&fl=1&vl=lang_{lang}&sh=1&pn=10&rw=new'\
- .format(lang=language)
+ params['url'] = search_url.format(
+ offset = offset,
+ query = urlencode({'p': query})
+ )
+ logger.debug("query_url --> %s", params['url'])
return params
-
-def sanitize_url(url):
- if ".yahoo.com/" in url:
- return re.sub(u"\\;\\_ylt\\=.+$", "", url)
- else:
- return url
-
-
-# get response from search-request
def response(resp):
results = []
-
dom = html.fromstring(resp.text)
+
# parse results
- for result in dom.xpath(results_xpath):
- urls = result.xpath(url_xpath)
- if len(urls) != 1:
+ for result in eval_xpath_list(dom, '//ol[contains(@class,"searchCenterMiddle")]//li'):
+
+ url = eval_xpath_getindex(result, './/h4/a/@href', 0, None)
+ if url is None:
continue
- url = sanitize_url(parse_url(extract_url(urls, search_url)))
- title = extract_text(result.xpath(title_xpath)[0])
- content = extract_text(result.xpath(content_xpath)[0])
-
- # parse publishedDate
- publishedDate = extract_text(result.xpath(publishedDate_xpath)[0])
-
- # still useful ?
- if re.match("^[0-9]+ minute(s|) ago$", publishedDate):
- publishedDate = datetime.now() - timedelta(minutes=int(re.match(r'\d+', publishedDate).group()))
- elif re.match("^[0-9]+ days? ago$", publishedDate):
- publishedDate = datetime.now() - timedelta(days=int(re.match(r'\d+', publishedDate).group()))
- elif re.match("^[0-9]+ hour(s|), [0-9]+ minute(s|) ago$", publishedDate):
- timeNumbers = re.findall(r'\d+', publishedDate)
- publishedDate = datetime.now()\
- - timedelta(hours=int(timeNumbers[0]))\
- - timedelta(minutes=int(timeNumbers[1]))
+ url = parse_url(url)
+ title = extract_text(result.xpath('.//h4/a'))
+ content = extract_text(result.xpath('.//p'))
+ img_src = eval_xpath_getindex(result, './/img/@data-src', 0, None)
+
+ item = {
+ 'url': url,
+ 'title': title,
+ 'content': content,
+ 'img_src' : img_src
+ }
+
+ pub_date = extract_text(result.xpath('.//span[contains(@class,"s-time")]'))
+ ago = AGO_RE.search(pub_date)
+ if ago:
+ number = int(ago.group(1))
+ delta = AGO_TIMEDELTA[ago.group(2)]
+ pub_date = datetime.now() - delta * number
else:
try:
- publishedDate = parser.parse(publishedDate)
- except:
- publishedDate = datetime.now()
+ pub_date = parser.parse(pub_date)
+ except parser.ParserError:
+ pub_date = None
- if publishedDate.year == 1900:
- publishedDate = publishedDate.replace(year=datetime.now().year)
+ if pub_date is not None:
+ item['publishedDate'] = pub_date
+ results.append(item)
- # append result
- results.append({'url': url,
- 'title': title,
- 'content': content,
- 'publishedDate': publishedDate})
+ for suggestion in eval_xpath_list(dom, '//div[contains(@class,"AlsoTry")]//td'):
+ results.append({'suggestion': extract_text(suggestion)})
- # return results
return results
diff --git a/searx/engines/yandex.py b/searx/engines/yandex.py
deleted file mode 100644
index 1c789f6..0000000
--- a/searx/engines/yandex.py
+++ /dev/null
@@ -1,64 +0,0 @@
-"""
- Yahoo (Web)
-
- @website https://yandex.ru/
- @provide-api ?
- @using-api no
- @results HTML (using search portal)
- @stable no (HTML can change)
- @parse url, title, content
-"""
-
-from lxml import html
-from searx import logger
-from searx.url_utils import urlencode
-
-logger = logger.getChild('yandex engine')
-
-# engine dependent config
-categories = ['general']
-paging = True
-language_support = True # TODO
-
-default_tld = 'com'
-language_map = {'ru': 'ru',
- 'ua': 'ua',
- 'be': 'by',
- 'kk': 'kz',
- 'tr': 'com.tr'}
-
-# search-url
-base_url = 'https://yandex.{tld}/'
-search_url = 'search/?{query}&p={page}'
-
-results_xpath = '//li[@class="serp-item"]'
-url_xpath = './/h2/a/@href'
-title_xpath = './/h2/a//text()'
-content_xpath = './/div[@class="text-container typo typo_text_m typo_line_m organic__text"]//text()'
-
-
-def request(query, params):
- lang = params['language'].split('-')[0]
- host = base_url.format(tld=language_map.get(lang) or default_tld)
- params['url'] = host + search_url.format(page=params['pageno'] - 1,
- query=urlencode({'text': query}))
- return params
-
-
-# get response from search-request
-def response(resp):
- dom = html.fromstring(resp.text)
- results = []
-
- for result in dom.xpath(results_xpath):
- try:
- res = {'url': result.xpath(url_xpath)[0],
- 'title': ''.join(result.xpath(title_xpath)),
- 'content': ''.join(result.xpath(content_xpath))}
- except:
- logger.exception('yandex parse crash')
- continue
-
- results.append(res)
-
- return results
diff --git a/searx/engines/yggtorrent.py b/searx/engines/yggtorrent.py
new file mode 100644
index 0000000..d59b66c
--- /dev/null
+++ b/searx/engines/yggtorrent.py
@@ -0,0 +1,128 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Yggtorrent (Videos, Music, Files)
+"""
+
+from lxml import html
+from operator import itemgetter
+from datetime import datetime
+from urllib.parse import quote
+from searx.utils import extract_text, get_torrent_size
+from searx.poolrequests import get as http_get
+
+# about
+about = {
+ "website": 'https://www4.yggtorrent.li/',
+ "wikidata_id": None,
+ "official_api_documentation": None,
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
+
+# engine dependent config
+categories = ['videos', 'music', 'files']
+paging = True
+
+# search-url
+url = 'https://www4.yggtorrent.li/'
+search_url = url + 'engine/search?name={search_term}&do=search&page={pageno}&category={search_type}'
+
+# yggtorrent specific type-definitions
+search_types = {'files': 'all',
+ 'music': '2139',
+ 'videos': '2145'}
+
+cookies = dict()
+
+
+def init(engine_settings=None):
+ global cookies # pylint: disable=global-variable-not-assigned
+ # initial cookies
+ resp = http_get(url)
+ if resp.ok:
+ for r in resp.history:
+ cookies.update(r.cookies)
+ cookies.update(resp.cookies)
+
+
+# do search-request
+def request(query, params):
+ search_type = search_types.get(params['category'], 'all')
+ pageno = (params['pageno'] - 1) * 50
+
+ params['url'] = search_url.format(search_term=quote(query),
+ search_type=search_type,
+ pageno=pageno)
+
+ params['cookies'] = cookies
+
+ return params
+
+
+# get response from search-request
+def response(resp):
+ results = []
+ dom = html.fromstring(resp.text)
+
+ search_res = dom.xpath('//section[@id="#torrents"]/div/table/tbody/tr')
+
+ # return empty array if nothing is found
+ if not search_res:
+ return []
+
+ # parse results
+ for result in search_res:
+ link = result.xpath('.//a[@id="torrent_name"]')[0]
+ href = link.attrib.get('href')
+ title = extract_text(link)
+ seed = result.xpath('.//td[8]/text()')[0]
+ leech = result.xpath('.//td[9]/text()')[0]
+
+ # convert seed to int if possible
+ if seed.isdigit():
+ seed = int(seed)
+ else:
+ seed = 0
+
+ # convert leech to int if possible
+ if leech.isdigit():
+ leech = int(leech)
+ else:
+ leech = 0
+
+ params = {'url': href,
+ 'title': title,
+ 'seed': seed,
+ 'leech': leech,
+ 'template': 'torrent.html'}
+
+ # let's try to calculate the torrent size
+ try:
+ filesize_info = result.xpath('.//td[6]/text()')[0]
+ filesize = filesize_info[:-2]
+ filesize_multiplier = filesize_info[-2:].lower()
+ multiplier_french_to_english = {
+ 'to': 'TiB',
+ 'go': 'GiB',
+ 'mo': 'MiB',
+ 'ko': 'KiB'
+ }
+ filesize = get_torrent_size(filesize, multiplier_french_to_english[filesize_multiplier])
+ params['filesize'] = filesize
+ except:
+ pass
+
+ # extract and convert creation date
+ try:
+ date_ts = result.xpath('.//td[5]/div/text()')[0]
+ date = datetime.fromtimestamp(float(date_ts))
+ params['publishedDate'] = date
+ except:
+ pass
+
+ # append result
+ results.append(params)
+
+ # return results sorted by seeder
+ return sorted(results, key=itemgetter('seed'), reverse=True)
diff --git a/searx/engines/youtube_api.py b/searx/engines/youtube_api.py
index bc4c0d5..ed27db0 100644
--- a/searx/engines/youtube_api.py
+++ b/searx/engines/youtube_api.py
@@ -1,21 +1,26 @@
-# Youtube (Videos)
-#
-# @website https://www.youtube.com/
-# @provide-api yes (https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.search.list)
-#
-# @using-api yes
-# @results JSON
-# @stable yes
-# @parse url, title, content, publishedDate, thumbnail, embedded
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Youtube (Videos)
+"""
from json import loads
from dateutil import parser
-from searx.url_utils import urlencode
+from urllib.parse import urlencode
+from searx.exceptions import SearxEngineAPIException
+
+# about
+about = {
+ "website": 'https://www.youtube.com/',
+ "wikidata_id": 'Q866',
+ "official_api_documentation": 'https://developers.google.com/youtube/v3/docs/search/list?apix=true',
+ "use_official_api": True,
+ "require_api_key": False,
+ "results": 'JSON',
+}
# engine dependent config
categories = ['videos', 'music']
paging = False
-language_support = True
api_key = None
# search-url
@@ -47,6 +52,9 @@ def response(resp):
search_results = loads(resp.text)
+ if 'error' in search_results and 'message' in search_results['error']:
+ raise SearxEngineAPIException(search_results['error']['message'])
+
# return empty array if there are no results
if 'items' not in search_results:
return []
diff --git a/searx/engines/youtube_noapi.py b/searx/engines/youtube_noapi.py
index 49d0ae6..e043b74 100644
--- a/searx/engines/youtube_noapi.py
+++ b/searx/engines/youtube_noapi.py
@@ -1,18 +1,22 @@
-# Youtube (Videos)
-#
-# @website https://www.youtube.com/
-# @provide-api yes (https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.search.list)
-#
-# @using-api no
-# @results HTML
-# @stable no
-# @parse url, title, content, publishedDate, thumbnail, embedded
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+ Youtube (Videos)
+"""
from functools import reduce
-from json import loads
-from searx.engines.xpath import extract_text
-from searx.utils import list_get
-from searx.url_utils import quote_plus
+from json import loads, dumps
+from urllib.parse import quote_plus
+from random import random
+
+# about
+about = {
+ "website": 'https://www.youtube.com/',
+ "wikidata_id": 'Q866',
+ "official_api_documentation": 'https://developers.google.com/youtube/v3/docs/search/list?apix=true',
+ "use_official_api": False,
+ "require_api_key": False,
+ "results": 'HTML',
+}
# engine dependent config
categories = ['videos', 'music']
@@ -22,8 +26,10 @@ time_range_support = True
# search-url
base_url = 'https://www.youtube.com/results'
-search_url = base_url + '?search_query={query}&page={page}'
+search_url = base_url + '?search_query={query}&page={page}&ucbcb=1'
time_range_url = '&sp=EgII{time_range}%253D%253D'
+# the key seems to be constant
+next_page_url = 'https://www.youtube.com/youtubei/v1/search?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8'
time_range_dict = {'day': 'Ag',
'week': 'Aw',
'month': 'BA',
@@ -38,21 +44,71 @@ base_youtube_url = 'https://www.youtube.com/watch?v='
# do search-request
def request(query, params):
- params['url'] = search_url.format(query=quote_plus(query),
- page=params['pageno'])
- if params['time_range'] in time_range_dict:
- params['url'] += time_range_url.format(time_range=time_range_dict[params['time_range']])
+ params['cookies']['CONSENT'] = "PENDING+" + str(random() * 100)
+ if not params['engine_data'].get('next_page_token'):
+ params['url'] = search_url.format(query=quote_plus(query), page=params['pageno'])
+ if params['time_range'] in time_range_dict:
+ params['url'] += time_range_url.format(time_range=time_range_dict[params['time_range']])
+ else:
+ params['url'] = next_page_url
+ params['method'] = 'POST'
+ params['data'] = dumps({
+ 'context': {"client": {"clientName": "WEB", "clientVersion": "2.20210310.12.01"}},
+ 'continuation': params['engine_data']['next_page_token'],
+ })
+ params['headers']['Content-Type'] = 'application/json'
return params
# get response from search-request
def response(resp):
+ if resp.search_params.get('engine_data'):
+ return parse_next_page_response(resp.text)
+ return parse_first_page_response(resp.text)
+
+
+def parse_next_page_response(response_text):
results = []
+ result_json = loads(response_text)
+ for section in (result_json['onResponseReceivedCommands'][0]
+ .get('appendContinuationItemsAction')['continuationItems'][0]
+ .get('itemSectionRenderer')['contents']):
+ if 'videoRenderer' not in section:
+ continue
+ section = section['videoRenderer']
+ content = "-"
+ if 'descriptionSnippet' in section:
+ content = ' '.join(x['text'] for x in section['descriptionSnippet']['runs'])
+ results.append({
+ 'url': base_youtube_url + section['videoId'],
+ 'title': ' '.join(x['text'] for x in section['title']['runs']),
+ 'content': content,
+ 'author': section['ownerText']['runs'][0]['text'],
+ 'length': section['lengthText']['simpleText'],
+ 'template': 'videos.html',
+ 'embedded': embedded_url.format(videoid=section['videoId']),
+ 'thumbnail': section['thumbnail']['thumbnails'][-1]['url'],
+ })
+ try:
+ token = result_json['onResponseReceivedCommands'][0]\
+ .get('appendContinuationItemsAction')['continuationItems'][1]\
+ .get('continuationItemRenderer')['continuationEndpoint']\
+ .get('continuationCommand')['token']
+ results.append({
+ "engine_data": token,
+ "key": "next_page_token",
+ })
+ except:
+ pass
+
+ return results
- results_data = resp.text[resp.text.find('ytInitialData'):]
- results_data = results_data[results_data.find('{'):results_data.find(';\n')]
+def parse_first_page_response(response_text):
+ results = []
+ results_data = response_text[response_text.find('ytInitialData'):]
+ results_data = results_data[results_data.find('{'):results_data.find(';</script>')]
results_json = loads(results_data) if results_data else {}
sections = results_json.get('contents', {})\
.get('twoColumnSearchResultsRenderer', {})\
@@ -61,6 +117,16 @@ def response(resp):
.get('contents', [])
for section in sections:
+ if "continuationItemRenderer" in section:
+ next_page_token = section["continuationItemRenderer"]\
+ .get("continuationEndpoint", {})\
+ .get("continuationCommand", {})\
+ .get("token", "")
+ if next_page_token:
+ results.append({
+ "engine_data": next_page_token,
+ "key": "next_page_token",
+ })
for video_container in section.get('itemSectionRenderer', {}).get('contents', []):
video = video_container.get('videoRenderer', {})
videoid = video.get('videoId')
@@ -70,11 +136,15 @@ def response(resp):
title = get_text_from_json(video.get('title', {}))
content = get_text_from_json(video.get('descriptionSnippet', {}))
embedded = embedded_url.format(videoid=videoid)
+ author = get_text_from_json(video.get('ownerText', {}))
+ length = get_text_from_json(video.get('lengthText', {}))
# append result
results.append({'url': url,
'title': title,
'content': content,
+ 'author': author,
+ 'length': length,
'template': 'videos.html',
'embedded': embedded,
'thumbnail': thumbnail})
diff --git a/searx/exceptions.py b/searx/exceptions.py
index 0175acf..67a282d 100644
--- a/searx/exceptions.py
+++ b/searx/exceptions.py
@@ -27,7 +27,77 @@ class SearxParameterException(SearxException):
message = 'Empty ' + name + ' parameter'
else:
message = 'Invalid value "' + value + '" for parameter ' + name
- super(SearxParameterException, self).__init__(message)
+ super().__init__(message)
self.message = message
self.parameter_name = name
self.parameter_value = value
+
+
+class SearxSettingsException(SearxException):
+ """Error while loading the settings"""
+
+ def __init__(self, message, filename):
+ super().__init__(message)
+ self.message = message
+ self.filename = filename
+
+
+class SearxEngineException(SearxException):
+ """Error inside an engine"""
+
+
+class SearxXPathSyntaxException(SearxEngineException):
+ """Syntax error in a XPATH"""
+
+ def __init__(self, xpath_spec, message):
+ super().__init__(str(xpath_spec) + " " + message)
+ self.message = message
+ # str(xpath_spec) to deal with str and XPath instance
+ self.xpath_str = str(xpath_spec)
+
+
+class SearxEngineResponseException(SearxEngineException):
+ """Impossible to parse the result of an engine"""
+
+
+class SearxEngineAPIException(SearxEngineResponseException):
+ """The website has returned an application error"""
+
+
+class SearxEngineAccessDeniedException(SearxEngineResponseException):
+ """The website is blocking the access"""
+
+ def __init__(self, suspended_time=24 * 3600, message='Access denied'):
+ super().__init__(message + ', suspended_time=' + str(suspended_time))
+ self.suspended_time = suspended_time
+ self.message = message
+
+
+class SearxEngineCaptchaException(SearxEngineAccessDeniedException):
+ """The website has returned a CAPTCHA
+
+ By default, searx stops sending requests to this engine for 1 day.
+ """
+
+ def __init__(self, suspended_time=24 * 3600, message='CAPTCHA'):
+ super().__init__(message=message, suspended_time=suspended_time)
+
+
+class SearxEngineTooManyRequestsException(SearxEngineAccessDeniedException):
+ """The website has returned a Too Many Request status code
+
+ By default, searx stops sending requests to this engine for 1 hour.
+ """
+
+ def __init__(self, suspended_time=3600, message='Too many request'):
+ super().__init__(message=message, suspended_time=suspended_time)
+
+
+class SearxEngineXPathException(SearxEngineResponseException):
+ """Error while getting the result of an XPath expression"""
+
+ def __init__(self, xpath_spec, message):
+ super().__init__(str(xpath_spec) + " " + message)
+ self.message = message
+ # str(xpath_spec) to deal with str and XPath instance
+ self.xpath_str = str(xpath_spec)
diff --git a/searx/external_bang.py b/searx/external_bang.py
new file mode 100644
index 0000000..8798a0a
--- /dev/null
+++ b/searx/external_bang.py
@@ -0,0 +1,89 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+from searx.data import EXTERNAL_BANGS
+
+
+def get_node(external_bangs_db, bang):
+ node = external_bangs_db['trie']
+ after = ''
+ before = ''
+ for bang_letter in bang:
+ after += bang_letter
+ if after in node and isinstance(node, dict):
+ node = node[after]
+ before += after
+ after = ''
+ return node, before, after
+
+
+def get_bang_definition_and_ac(external_bangs_db, bang):
+ node, before, after = get_node(external_bangs_db, bang)
+
+ bang_definition = None
+ bang_ac_list = []
+ if after != '':
+ for k in node:
+ if k.startswith(after):
+ bang_ac_list.append(before + k)
+ elif isinstance(node, dict):
+ bang_definition = node.get('*')
+ bang_ac_list = [before + k for k in node.keys() if k != '*']
+ elif isinstance(node, str):
+ bang_definition = node
+ bang_ac_list = []
+
+ return bang_definition, bang_ac_list
+
+
+def resolve_bang_definition(bang_definition, query):
+ url, rank = bang_definition.split(chr(1))
+ url = url.replace(chr(2), query)
+ if url.startswith('//'):
+ url = 'https:' + url
+ rank = int(rank) if len(rank) > 0 else 0
+ return (url, rank)
+
+
+def get_bang_definition_and_autocomplete(bang, external_bangs_db=None):
+ global EXTERNAL_BANGS
+ if external_bangs_db is None:
+ external_bangs_db = EXTERNAL_BANGS
+
+ bang_definition, bang_ac_list = get_bang_definition_and_ac(external_bangs_db, bang)
+
+ new_autocomplete = []
+ current = [*bang_ac_list]
+ done = set()
+ while len(current) > 0:
+ bang_ac = current.pop(0)
+ done.add(bang_ac)
+
+ current_bang_definition, current_bang_ac_list = get_bang_definition_and_ac(external_bangs_db, bang_ac)
+ if current_bang_definition:
+ _, order = resolve_bang_definition(current_bang_definition, '')
+ new_autocomplete.append((bang_ac, order))
+ for new_bang in current_bang_ac_list:
+ if new_bang not in done and new_bang not in current:
+ current.append(new_bang)
+
+ new_autocomplete.sort(key=lambda t: (-t[1], t[0]))
+ new_autocomplete = list(map(lambda t: t[0], new_autocomplete))
+
+ return bang_definition, new_autocomplete
+
+
+def get_bang_url(search_query, external_bangs_db=None):
+ """
+ Redirects if the user supplied a correct bang search.
+ :param search_query: This is a search_query object which contains preferences and the submitted queries.
+ :return: None if the bang was invalid, else a string of the redirect url.
+ """
+ global EXTERNAL_BANGS
+ if external_bangs_db is None:
+ external_bangs_db = EXTERNAL_BANGS
+
+ if search_query.external_bang:
+ bang_definition, _ = get_bang_definition_and_ac(external_bangs_db, search_query.external_bang)
+ return resolve_bang_definition(bang_definition, search_query.query)[0] if bang_definition else None
+
+ return None
diff --git a/searx/external_urls.py b/searx/external_urls.py
new file mode 100644
index 0000000..11c6a32
--- /dev/null
+++ b/searx/external_urls.py
@@ -0,0 +1,89 @@
+import math
+
+from searx.data import EXTERNAL_URLS
+
+
+IMDB_PREFIX_TO_URL_ID = {
+ 'tt': 'imdb_title',
+ 'mn': 'imdb_name',
+ 'ch': 'imdb_character',
+ 'co': 'imdb_company',
+ 'ev': 'imdb_event'
+}
+HTTP_WIKIMEDIA_IMAGE = 'http://commons.wikimedia.org/wiki/Special:FilePath/'
+
+
+def get_imdb_url_id(imdb_item_id):
+ id_prefix = imdb_item_id[:2]
+ return IMDB_PREFIX_TO_URL_ID.get(id_prefix)
+
+
+def get_wikimedia_image_id(url):
+ if url.startswith(HTTP_WIKIMEDIA_IMAGE):
+ return url[len(HTTP_WIKIMEDIA_IMAGE):]
+ if url.startswith('File:'):
+ return url[len('File:'):]
+ return url
+
+
+def get_external_url(url_id, item_id, alternative="default"):
+ """Return an external URL or None if url_id is not found.
+
+ url_id can take value from data/external_urls.json
+ The "imdb_id" value is automaticaly converted according to the item_id value.
+
+ If item_id is None, the raw URL with the $1 is returned.
+ """
+ if item_id is not None:
+ if url_id == 'imdb_id':
+ url_id = get_imdb_url_id(item_id)
+ elif url_id == 'wikimedia_image':
+ item_id = get_wikimedia_image_id(item_id)
+
+ url_description = EXTERNAL_URLS.get(url_id)
+ if url_description:
+ url_template = url_description["urls"].get(alternative)
+ if url_template is not None:
+ if item_id is not None:
+ return url_template.replace('$1', item_id)
+ else:
+ return url_template
+ return None
+
+
+def get_earth_coordinates_url(latitude, longitude, osm_zoom, alternative='default'):
+ url = get_external_url('map', None, alternative)\
+ .replace('${latitude}', str(latitude))\
+ .replace('${longitude}', str(longitude))\
+ .replace('${zoom}', str(osm_zoom))
+ return url
+
+
+def area_to_osm_zoom(area):
+ """Convert an area in km² into an OSM zoom. Less reliable if the shape is not round.
+
+ logarithm regression using these data:
+ * 9596961 -> 4 (China)
+ * 3287263 -> 5 (India)
+ * 643801 -> 6 (France)
+ * 6028 -> 9
+ * 1214 -> 10
+ * 891 -> 12
+ * 12 -> 13
+
+ In WolframAlpha:
+ >>> log fit {9596961,15},{3287263, 14},{643801,13},{6028,10},{1214,9},{891,7},{12,6}
+
+ with 15 = 19-4 (China); 14 = 19-5 (India) and so on
+
+ Args:
+ area (int,float,str): area in km²
+
+ Returns:
+ int: OSM zoom or 19 in area is not a number
+ """
+ try:
+ amount = float(area)
+ return max(0, min(19, round(19 - 0.688297 * math.log(226.878 * amount))))
+ except ValueError:
+ return 19
diff --git a/searx/languages.py b/searx/languages.py
index cab1245..f9c9f65 100644
--- a/searx/languages.py
+++ b/searx/languages.py
@@ -1,67 +1,71 @@
# -*- coding: utf-8 -*-
# list of language codes
-# this file is generated automatically by utils/update_search_languages.py
-
-language_codes = (
- (u"ar-SA", u"العربية", u"", u"Arabic"),
- (u"bg-BG", u"Български", u"", u"Bulgarian"),
- (u"ca-ES", u"Català", u"", u"Catalan"),
- (u"cs-CZ", u"Čeština", u"", u"Czech"),
- (u"da-DK", u"Dansk", u"", u"Danish"),
- (u"de", u"Deutsch", u"", u"German"),
- (u"de-AT", u"Deutsch", u"Österreich", u"German"),
- (u"de-CH", u"Deutsch", u"Schweiz", u"German"),
- (u"de-DE", u"Deutsch", u"Deutschland", u"German"),
- (u"el-GR", u"Ελληνικά", u"", u"Greek"),
- (u"en", u"English", u"", u"English"),
- (u"en-AU", u"English", u"Australia", u"English"),
- (u"en-CA", u"English", u"Canada", u"English"),
- (u"en-GB", u"English", u"United Kingdom", u"English"),
- (u"en-IN", u"English", u"India", u"English"),
- (u"en-MY", u"English", u"Malaysia", u"English"),
- (u"en-US", u"English", u"United States", u"English"),
- (u"es", u"Español", u"", u"Spanish"),
- (u"es-AR", u"Español", u"Argentina", u"Spanish"),
- (u"es-ES", u"Español", u"España", u"Spanish"),
- (u"es-MX", u"Español", u"México", u"Spanish"),
- (u"et-EE", u"Eesti", u"", u"Estonian"),
- (u"fa-IR", u"فارسی", u"", u"Persian"),
- (u"fi-FI", u"Suomi", u"", u"Finnish"),
- (u"fr", u"Français", u"", u"French"),
- (u"fr-BE", u"Français", u"Belgique", u"French"),
- (u"fr-CA", u"Français", u"Canada", u"French"),
- (u"fr-CH", u"Français", u"Suisse", u"French"),
- (u"fr-FR", u"Français", u"France", u"French"),
- (u"he-IL", u"עברית", u"", u"Hebrew"),
- (u"hr-HR", u"Hrvatski", u"", u"Croatian"),
- (u"hu-HU", u"Magyar", u"", u"Hungarian"),
- (u"id-ID", u"Indonesia", u"", u"Indonesian"),
- (u"is-IS", u"Íslenska", u"", u"Icelandic"),
- (u"it-IT", u"Italiano", u"", u"Italian"),
- (u"ja-JP", u"日本語", u"", u"Japanese"),
- (u"ko-KR", u"한국어", u"", u"Korean"),
- (u"lt-LT", u"Lietuvių", u"", u"Lithuanian"),
- (u"lv-LV", u"Latviešu", u"", u"Latvian"),
- (u"ms-MY", u"Bahasa Melayu", u"", u"Malay"),
- (u"nb-NO", u"Norsk Bokmål", u"", u"Norwegian Bokmål"),
- (u"nl", u"Nederlands", u"", u"Dutch"),
- (u"nl-BE", u"Nederlands", u"België", u"Dutch"),
- (u"nl-NL", u"Nederlands", u"Nederland", u"Dutch"),
- (u"pl-PL", u"Polski", u"", u"Polish"),
- (u"pt", u"Português", u"", u"Portuguese"),
- (u"pt-BR", u"Português", u"Brasil", u"Portuguese"),
- (u"pt-PT", u"Português", u"Portugal", u"Portuguese"),
- (u"ro-RO", u"Română", u"", u"Romanian"),
- (u"ru-RU", u"Русский", u"", u"Russian"),
- (u"sk-SK", u"Slovenčina", u"", u"Slovak"),
- (u"sl-SI", u"Slovenščina", u"", u"Slovenian"),
- (u"sr-RS", u"Српски", u"", u"Serbian"),
- (u"sv-SE", u"Svenska", u"", u"Swedish"),
- (u"th-TH", u"ไทย", u"", u"Thai"),
- (u"tr-TR", u"Türkçe", u"", u"Turkish"),
- (u"uk-UA", u"Українська", u"", u"Ukrainian"),
- (u"vi-VN", u"Tiếng Việt", u"", u"Vietnamese"),
- (u"zh", u"中文", u"", u"Chinese"),
- (u"zh-CN", u"中文", u"中国", u"Chinese"),
- (u"zh-TW", u"中文", u"台灣", u"Chinese")
-)
+# this file is generated automatically by utils/fetch_languages.py
+language_codes = \
+( ('af-ZA', 'Afrikaans', '', 'Afrikaans'),
+ ('ar-EG', 'العربية', '', 'Arabic'),
+ ('be-BY', 'Беларуская', '', 'Belarusian'),
+ ('bg-BG', 'Български', '', 'Bulgarian'),
+ ('ca-ES', 'Català', '', 'Catalan'),
+ ('cs-CZ', 'Čeština', '', 'Czech'),
+ ('da-DK', 'Dansk', '', 'Danish'),
+ ('de', 'Deutsch', '', 'German'),
+ ('de-AT', 'Deutsch', 'Österreich', 'German'),
+ ('de-CH', 'Deutsch', 'Schweiz', 'German'),
+ ('de-DE', 'Deutsch', 'Deutschland', 'German'),
+ ('el-GR', 'Ελληνικά', '', 'Greek'),
+ ('en', 'English', '', 'English'),
+ ('en-AU', 'English', 'Australia', 'English'),
+ ('en-CA', 'English', 'Canada', 'English'),
+ ('en-GB', 'English', 'United Kingdom', 'English'),
+ ('en-IE', 'English', 'Ireland', 'English'),
+ ('en-IN', 'English', 'India', 'English'),
+ ('en-NZ', 'English', 'New Zealand', 'English'),
+ ('en-US', 'English', 'United States', 'English'),
+ ('es', 'Español', '', 'Spanish'),
+ ('es-AR', 'Español', 'Argentina', 'Spanish'),
+ ('es-CL', 'Español', 'Chile', 'Spanish'),
+ ('es-ES', 'Español', 'España', 'Spanish'),
+ ('es-MX', 'Español', 'México', 'Spanish'),
+ ('et-EE', 'Eesti', '', 'Estonian'),
+ ('fa-IR', 'فارسی', '', 'Persian'),
+ ('fi-FI', 'Suomi', '', 'Finnish'),
+ ('fr', 'Français', '', 'French'),
+ ('fr-BE', 'Français', 'Belgique', 'French'),
+ ('fr-CA', 'Français', 'Canada', 'French'),
+ ('fr-CH', 'Français', 'Suisse', 'French'),
+ ('fr-FR', 'Français', 'France', 'French'),
+ ('he-IL', 'עברית', '', 'Hebrew'),
+ ('hr-HR', 'Hrvatski', '', 'Croatian'),
+ ('hu-HU', 'Magyar', '', 'Hungarian'),
+ ('hy-AM', 'Հայերեն', '', 'Armenian'),
+ ('id-ID', 'Indonesia', '', 'Indonesian'),
+ ('is-IS', 'Íslenska', '', 'Icelandic'),
+ ('it-IT', 'Italiano', '', 'Italian'),
+ ('ja-JP', '日本語', '', 'Japanese'),
+ ('ko-KR', '한국어', '', 'Korean'),
+ ('lt-LT', 'Lietuvių', '', 'Lithuanian'),
+ ('lv-LV', 'Latviešu', '', 'Latvian'),
+ ('nb-NO', 'Norsk Bokmål', '', 'Norwegian Bokmål'),
+ ('nl', 'Nederlands', '', 'Dutch'),
+ ('nl-BE', 'Nederlands', 'België', 'Dutch'),
+ ('nl-NL', 'Nederlands', 'Nederland', 'Dutch'),
+ ('pl-PL', 'Polski', '', 'Polish'),
+ ('pt', 'Português', '', 'Portuguese'),
+ ('pt-BR', 'Português', 'Brasil', 'Portuguese'),
+ ('pt-PT', 'Português', 'Portugal', 'Portuguese'),
+ ('ro-RO', 'Română', '', 'Romanian'),
+ ('ru-RU', 'Русский', '', 'Russian'),
+ ('sk-SK', 'Slovenčina', '', 'Slovak'),
+ ('sl-SI', 'Slovenščina', '', 'Slovenian'),
+ ('sr-RS', 'Srpski', '', 'Serbian'),
+ ('sv-SE', 'Svenska', '', 'Swedish'),
+ ('sw-TZ', 'Kiswahili', '', 'Swahili'),
+ ('th-TH', 'ไทย', '', 'Thai'),
+ ('tr-TR', 'Türkçe', '', 'Turkish'),
+ ('uk-UA', 'Українська', '', 'Ukrainian'),
+ ('vi-VN', 'Tiếng Việt', '', 'Vietnamese'),
+ ('zh', '中文', '', 'Chinese'),
+ ('zh-CN', '中文', '中国', 'Chinese'),
+ ('zh-HK', '中文', '中國香港特別行政區', 'Chinese'),
+ ('zh-TW', '中文', '台灣', 'Chinese')) \ No newline at end of file
diff --git a/searx/metrology/__init__.py b/searx/metrology/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/searx/metrology/__init__.py
diff --git a/searx/metrology/error_recorder.py b/searx/metrology/error_recorder.py
new file mode 100644
index 0000000..f533e4e
--- /dev/null
+++ b/searx/metrology/error_recorder.py
@@ -0,0 +1,144 @@
+import typing
+import inspect
+import logging
+from json import JSONDecodeError
+from urllib.parse import urlparse
+from requests.exceptions import RequestException
+from searx.exceptions import (SearxXPathSyntaxException, SearxEngineXPathException, SearxEngineAPIException,
+ SearxEngineAccessDeniedException)
+from searx import logger
+
+
+logging.basicConfig(level=logging.INFO)
+
+errors_per_engines = {}
+
+
+class ErrorContext:
+
+ __slots__ = 'filename', 'function', 'line_no', 'code', 'exception_classname', 'log_message', 'log_parameters'
+
+ def __init__(self, filename, function, line_no, code, exception_classname, log_message, log_parameters):
+ self.filename = filename
+ self.function = function
+ self.line_no = line_no
+ self.code = code
+ self.exception_classname = exception_classname
+ self.log_message = log_message
+ self.log_parameters = log_parameters
+
+ def __eq__(self, o) -> bool:
+ if not isinstance(o, ErrorContext):
+ return False
+ return self.filename == o.filename and self.function == o.function and self.line_no == o.line_no\
+ and self.code == o.code and self.exception_classname == o.exception_classname\
+ and self.log_message == o.log_message and self.log_parameters == o.log_parameters
+
+ def __hash__(self):
+ return hash((self.filename, self.function, self.line_no, self.code, self.exception_classname, self.log_message,
+ self.log_parameters))
+
+ def __repr__(self):
+ return "ErrorContext({!r}, {!r}, {!r}, {!r}, {!r}, {!r})".\
+ format(self.filename, self.line_no, self.code, self.exception_classname, self.log_message,
+ self.log_parameters)
+
+
+def add_error_context(engine_name: str, error_context: ErrorContext) -> None:
+ errors_for_engine = errors_per_engines.setdefault(engine_name, {})
+ errors_for_engine[error_context] = errors_for_engine.get(error_context, 0) + 1
+ logger.debug('%s: %s', engine_name, str(error_context))
+
+
+def get_trace(traces):
+ for trace in reversed(traces):
+ split_filename = trace.filename.split('/')
+ if '/'.join(split_filename[-3:-1]) == 'searx/engines':
+ return trace
+ if '/'.join(split_filename[-4:-1]) == 'searx/search/processors':
+ return trace
+ return traces[-1]
+
+
+def get_hostname(exc: RequestException) -> typing.Optional[None]:
+ url = exc.request.url
+ if url is None and exc.response is not None:
+ url = exc.response.url
+ return urlparse(url).netloc
+
+
+def get_request_exception_messages(exc: RequestException)\
+ -> typing.Tuple[typing.Optional[str], typing.Optional[str], typing.Optional[str]]:
+ url = None
+ status_code = None
+ reason = None
+ hostname = None
+ if exc.request is not None:
+ url = exc.request.url
+ if url is None and exc.response is not None:
+ url = exc.response.url
+ if url is not None:
+ hostname = str(urlparse(url).netloc)
+ if exc.response is not None:
+ status_code = str(exc.response.status_code)
+ reason = exc.response.reason
+ return (status_code, reason, hostname)
+
+
+def get_messages(exc, filename) -> typing.Tuple:
+ if isinstance(exc, JSONDecodeError):
+ return (exc.msg, )
+ if isinstance(exc, TypeError):
+ return (str(exc), )
+ if isinstance(exc, ValueError) and 'lxml' in filename:
+ return (str(exc), )
+ if isinstance(exc, RequestException):
+ return get_request_exception_messages(exc)
+ if isinstance(exc, SearxXPathSyntaxException):
+ return (exc.xpath_str, exc.message)
+ if isinstance(exc, SearxEngineXPathException):
+ return (exc.xpath_str, exc.message)
+ if isinstance(exc, SearxEngineAPIException):
+ return (str(exc.args[0]), )
+ if isinstance(exc, SearxEngineAccessDeniedException):
+ return (exc.message, )
+ return ()
+
+
+def get_exception_classname(exc: Exception) -> str:
+ exc_class = exc.__class__
+ exc_name = exc_class.__qualname__
+ exc_module = exc_class.__module__
+ if exc_module is None or exc_module == str.__class__.__module__:
+ return exc_name
+ return exc_module + '.' + exc_name
+
+
+def get_error_context(framerecords, exception_classname, log_message, log_parameters) -> ErrorContext:
+ searx_frame = get_trace(framerecords)
+ filename = searx_frame.filename
+ function = searx_frame.function
+ line_no = searx_frame.lineno
+ code = searx_frame.code_context[0].strip()
+ del framerecords
+ return ErrorContext(filename, function, line_no, code, exception_classname, log_message, log_parameters)
+
+
+def record_exception(engine_name: str, exc: Exception) -> None:
+ framerecords = inspect.trace()
+ try:
+ exception_classname = get_exception_classname(exc)
+ log_parameters = get_messages(exc, framerecords[-1][1])
+ error_context = get_error_context(framerecords, exception_classname, None, log_parameters)
+ add_error_context(engine_name, error_context)
+ finally:
+ del framerecords
+
+
+def record_error(engine_name: str, log_message: str, log_parameters: typing.Optional[typing.Tuple] = None) -> None:
+ framerecords = list(reversed(inspect.stack()[1:]))
+ try:
+ error_context = get_error_context(framerecords, None, log_message, log_parameters or ())
+ add_error_context(engine_name, error_context)
+ finally:
+ del framerecords
diff --git a/searx/plugins/__init__.py b/searx/plugins/__init__.py
index 4dbcbbd..60cf3e8 100644
--- a/searx/plugins/__init__.py
+++ b/searx/plugins/__init__.py
@@ -14,25 +14,32 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
(C) 2015 by Adam Tauber, <asciimoo@gmail.com>
'''
-from sys import exit, version_info
-from searx import logger
-if version_info[0] == 3:
- unicode = str
+from hashlib import sha256
+from importlib import import_module
+from os import listdir, makedirs, remove, stat, utime
+from os.path import abspath, basename, dirname, exists, join
+from shutil import copyfile
+
+from searx import logger, settings, static_path
+
logger = logger.getChild('plugins')
from searx.plugins import (oa_doi_rewrite,
+ ahmia_filter,
+ hash_plugin,
https_rewrite,
infinite_scroll,
- open_results_on_new_tab,
self_info,
+ hostname_replace,
search_on_category_select,
+ search_operators,
tracker_url_remover,
vim_hotkeys)
-required_attrs = (('name', (str, unicode)),
- ('description', (str, unicode)),
+required_attrs = (('name', str),
+ ('description', str),
('default_on', bool))
optional_attrs = (('js_dependencies', tuple),
@@ -54,7 +61,9 @@ class PluginStore():
for plugin in self.plugins:
yield plugin
- def register(self, *plugins):
+ def register(self, *plugins, external=False):
+ if external:
+ plugins = load_external_plugins(plugins)
for plugin in plugins:
for plugin_attr, plugin_attr_type in required_attrs:
if not hasattr(plugin, plugin_attr) or not isinstance(getattr(plugin, plugin_attr), plugin_attr_type):
@@ -77,12 +86,107 @@ class PluginStore():
return ret
+def load_external_plugins(plugin_names):
+ plugins = []
+ for name in plugin_names:
+ logger.debug('loading plugin: {0}'.format(name))
+ try:
+ pkg = import_module(name)
+ except Exception as e:
+ logger.critical('failed to load plugin module {0}: {1}'.format(name, e))
+ exit(3)
+
+ pkg.__base_path = dirname(abspath(pkg.__file__))
+
+ prepare_package_resources(pkg, name)
+
+ plugins.append(pkg)
+ logger.debug('plugin "{0}" loaded'.format(name))
+ return plugins
+
+
+def sync_resource(base_path, resource_path, name, target_dir, plugin_dir):
+ dep_path = join(base_path, resource_path)
+ file_name = basename(dep_path)
+ resource_path = join(target_dir, file_name)
+ if not exists(resource_path) or sha_sum(dep_path) != sha_sum(resource_path):
+ try:
+ copyfile(dep_path, resource_path)
+ # copy atime_ns and mtime_ns, so the weak ETags (generated by
+ # the HTTP server) do not change
+ dep_stat = stat(dep_path)
+ utime(resource_path, ns=(dep_stat.st_atime_ns, dep_stat.st_mtime_ns))
+ except:
+ logger.critical('failed to copy plugin resource {0} for plugin {1}'.format(file_name, name))
+ exit(3)
+
+ # returning with the web path of the resource
+ return join('plugins/external_plugins', plugin_dir, file_name)
+
+
+def prepare_package_resources(pkg, name):
+ plugin_dir = 'plugin_' + name
+ target_dir = join(static_path, 'plugins/external_plugins', plugin_dir)
+ try:
+ makedirs(target_dir, exist_ok=True)
+ except:
+ logger.critical('failed to create resource directory {0} for plugin {1}'.format(target_dir, name))
+ exit(3)
+
+ resources = []
+
+ if hasattr(pkg, 'js_dependencies'):
+ resources.extend(map(basename, pkg.js_dependencies))
+ pkg.js_dependencies = tuple([
+ sync_resource(pkg.__base_path, x, name, target_dir, plugin_dir)
+ for x in pkg.js_dependencies
+ ])
+ if hasattr(pkg, 'css_dependencies'):
+ resources.extend(map(basename, pkg.css_dependencies))
+ pkg.css_dependencies = tuple([
+ sync_resource(pkg.__base_path, x, name, target_dir, plugin_dir)
+ for x in pkg.css_dependencies
+ ])
+
+ for f in listdir(target_dir):
+ if basename(f) not in resources:
+ resource_path = join(target_dir, basename(f))
+ try:
+ remove(resource_path)
+ except:
+ logger.critical('failed to remove unused resource file {0} for plugin {1}'.format(resource_path, name))
+ exit(3)
+
+
+def sha_sum(filename):
+ with open(filename, "rb") as f:
+ file_content_bytes = f.read()
+ return sha256(file_content_bytes).hexdigest()
+
+
plugins = PluginStore()
plugins.register(oa_doi_rewrite)
+plugins.register(hash_plugin)
plugins.register(https_rewrite)
plugins.register(infinite_scroll)
-plugins.register(open_results_on_new_tab)
plugins.register(self_info)
+plugins.register(hostname_replace)
plugins.register(search_on_category_select)
+plugins.register(search_operators)
plugins.register(tracker_url_remover)
plugins.register(vim_hotkeys)
+
+# load external plugins
+if 'plugins' in settings:
+ plugins.register(*settings['plugins'], external=True)
+
+if 'enabled_plugins' in settings:
+ for plugin in plugins:
+ if plugin.name in settings['enabled_plugins']:
+ plugin.default_on = True
+ else:
+ plugin.default_on = False
+
+# load tor specific plugins
+if settings['outgoing'].get('using_tor_proxy'):
+ plugins.register(ahmia_filter)
diff --git a/searx/plugins/ahmia_filter.py b/searx/plugins/ahmia_filter.py
new file mode 100644
index 0000000..83b05e4
--- /dev/null
+++ b/searx/plugins/ahmia_filter.py
@@ -0,0 +1,33 @@
+'''
+ SPDX-License-Identifier: AGPL-3.0-or-later
+'''
+
+from hashlib import md5
+from searx.data import ahmia_blacklist_loader
+
+name = "Ahmia blacklist"
+description = "Filter out onion results that appear in Ahmia's blacklist. (See https://ahmia.fi/blacklist)"
+default_on = True
+preference_section = 'onions'
+
+ahmia_blacklist = None
+
+
+def get_ahmia_blacklist():
+ global ahmia_blacklist
+ if not ahmia_blacklist:
+ ahmia_blacklist = ahmia_blacklist_loader()
+ return ahmia_blacklist
+
+
+def not_blacklisted(result):
+ if not result.get('is_onion') or not result.get('parsed_url'):
+ return True
+ result_hash = md5(result['parsed_url'].hostname.encode()).hexdigest()
+ return result_hash not in get_ahmia_blacklist()
+
+
+def post_search(request, search):
+ filtered_results = list(filter(not_blacklisted, search.result_container._merged_results))
+ search.result_container._merged_results = filtered_results
+ return True
diff --git a/searx/plugins/hash_plugin.py b/searx/plugins/hash_plugin.py
new file mode 100644
index 0000000..1d3baae
--- /dev/null
+++ b/searx/plugins/hash_plugin.py
@@ -0,0 +1,54 @@
+'''
+searx is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+searx is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with searx. If not, see < http://www.gnu.org/licenses/ >.
+
+(C) 2015 by Adam Tauber, <asciimoo@gmail.com>
+(C) 2018, 2020 by Vaclav Zouzalik
+'''
+
+from flask_babel import gettext
+import hashlib
+import re
+
+name = "Hash plugin"
+description = gettext("Converts strings to different hash digests.")
+default_on = True
+
+parser_re = re.compile('(md5|sha1|sha224|sha256|sha384|sha512) (.*)', re.I)
+
+
+def post_search(request, search):
+ # process only on first page
+ if search.search_query.pageno > 1:
+ return True
+ m = parser_re.match(search.search_query.query)
+ if not m:
+ # wrong query
+ return True
+
+ function, string = m.groups()
+ if string.strip().__len__() == 0:
+ # end if the string is empty
+ return True
+
+ # select hash function
+ f = hashlib.new(function.lower())
+
+ # make digest from the given string
+ f.update(string.encode('utf-8').strip())
+ answer = function + " " + gettext('hash digest') + ": " + f.hexdigest()
+
+ # print result
+ search.result_container.answers.clear()
+ search.result_container.answers['hash'] = {'answer': answer}
+ return True
diff --git a/searx/plugins/hostname_replace.py b/searx/plugins/hostname_replace.py
new file mode 100644
index 0000000..8468977
--- /dev/null
+++ b/searx/plugins/hostname_replace.py
@@ -0,0 +1,28 @@
+import re
+from urllib.parse import urlunparse
+from searx import settings
+from searx.plugins import logger
+from flask_babel import gettext
+
+name = gettext('Hostname replace')
+description = gettext('Rewrite result hostnames')
+default_on = False
+preference_section = 'general'
+
+plugin_id = 'hostname_replace'
+parsed = 'parsed_url'
+
+replacements = {re.compile(p): r for (p, r) in settings[plugin_id].items()} if plugin_id in settings else {}
+
+logger = logger.getChild(plugin_id)
+
+
+def on_result(request, search, result):
+ if parsed not in result:
+ return True
+ for (pattern, replacement) in replacements.items():
+ if pattern.search(result[parsed].netloc):
+ result[parsed] = result[parsed]._replace(netloc=pattern.sub(replacement, result[parsed].netloc))
+ result['url'] = urlunparse(result[parsed])
+
+ return True
diff --git a/searx/plugins/https_rewrite.py b/searx/plugins/https_rewrite.py
index 8255601..aeb4249 100644
--- a/searx/plugins/https_rewrite.py
+++ b/searx/plugins/https_rewrite.py
@@ -16,17 +16,14 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
'''
import re
-import sys
+from urllib.parse import urlparse
from lxml import etree
from os import listdir, environ
from os.path import isfile, isdir, join
from searx.plugins import logger
from flask_babel import gettext
from searx import searx_dir
-from searx.url_utils import urlparse
-if sys.version_info[0] == 3:
- unicode = str
name = "HTTPS rewrite"
description = gettext('Rewrite HTTP links to HTTPS if possible')
diff --git a/searx/plugins/oa_doi_rewrite.py b/searx/plugins/oa_doi_rewrite.py
index be80beb..02a7129 100644
--- a/searx/plugins/oa_doi_rewrite.py
+++ b/searx/plugins/oa_doi_rewrite.py
@@ -1,6 +1,6 @@
+from urllib.parse import urlparse, parse_qsl
from flask_babel import gettext
import re
-from searx.url_utils import urlparse, parse_qsl
from searx import settings
@@ -29,7 +29,7 @@ def get_doi_resolver(args, preference_doi_resolver):
doi_resolvers = settings['doi_resolvers']
doi_resolver = args.get('doi_resolver', preference_doi_resolver)[0]
if doi_resolver not in doi_resolvers:
- doi_resolvers = settings['default_doi_resolver']
+ doi_resolver = settings['default_doi_resolver']
doi_resolver_url = doi_resolvers[doi_resolver]
return doi_resolver_url
@@ -40,7 +40,7 @@ def on_result(request, search, result):
doi = extract_doi(result['parsed_url'])
if doi and len(doi) < 50:
- for suffix in ('/', '.pdf', '/full', '/meta', '/abstract'):
+ for suffix in ('/', '.pdf', '.xml', '/full', '/meta', '/abstract'):
if doi.endswith(suffix):
doi = doi[:-len(suffix)]
result['url'] = get_doi_resolver(request.args, request.preferences.get_value('doi_resolver')) + doi
diff --git a/searx/plugins/open_results_on_new_tab.py b/searx/plugins/open_results_on_new_tab.py
deleted file mode 100644
index 0f06f5a..0000000
--- a/searx/plugins/open_results_on_new_tab.py
+++ /dev/null
@@ -1,25 +0,0 @@
-'''
-searx is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-searx is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with searx. If not, see < http://www.gnu.org/licenses/ >.
-
-(C) 2016 by Adam Tauber, <asciimoo@gmail.com>
-'''
-from flask_babel import gettext
-name = gettext('Open result links on new browser tabs')
-description = gettext('Results are opened in the same window by default. '
- 'This plugin overwrites the default behaviour to open links on new tabs/windows. '
- '(JavaScript required)')
-default_on = False
-preference_section = 'ui'
-
-js_dependencies = ('plugins/js/open_results_on_new_tab.js',)
diff --git a/searx/plugins/search_operators.py b/searx/plugins/search_operators.py
new file mode 100644
index 0000000..59125da
--- /dev/null
+++ b/searx/plugins/search_operators.py
@@ -0,0 +1,32 @@
+import shlex
+import string
+
+from flask_babel import gettext
+
+name = gettext("Search operators")
+description = gettext("""Filter results using hyphen, site: and -site:.
+Please note that you might get less results with the additional filtering.""")
+default_on = False
+
+
+def on_result(request, search, result):
+ q = search.search_query.query
+ qs = shlex.split(q)
+ spitems = [x.lower() for x in qs if ' ' in x]
+ mitems = [x.lower() for x in qs if x.startswith('-')]
+ siteitems = [x.lower() for x in qs if x.startswith('site:')]
+ msiteitems = [x.lower() for x in qs if x.startswith('-site:')]
+ url, title, content = (
+ result["url"].lower(),
+ result["title"].lower(),
+ (result.get("content").lower() if result.get("content") else '')
+ )
+ if all((x not in title or x not in content) for x in spitems):
+ return False
+ if all((x in title or x in content) for x in mitems):
+ return False
+ if all(x not in url for x in siteitems):
+ return False
+ if all(x in url for x in msiteitems):
+ return False
+ return True
diff --git a/searx/plugins/self_info.py b/searx/plugins/self_info.py
index 8d6c661..74505c5 100644
--- a/searx/plugins/self_info.py
+++ b/searx/plugins/self_info.py
@@ -16,13 +16,13 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
'''
from flask_babel import gettext
import re
-name = "Self Informations"
+name = gettext('Self Informations')
description = gettext('Displays your IP if the query is "ip" and your user agent if the query contains "user agent".')
default_on = True
# Self User Agent regex
-p = re.compile(b'.*user[ -]agent.*', re.IGNORECASE)
+p = re.compile('.*user[ -]agent.*', re.IGNORECASE)
# attach callback to the post search hook
@@ -31,16 +31,14 @@ p = re.compile(b'.*user[ -]agent.*', re.IGNORECASE)
def post_search(request, search):
if search.search_query.pageno > 1:
return True
- if search.search_query.query == b'ip':
+ if search.search_query.query.lower() == 'ip':
x_forwarded_for = request.headers.getlist("X-Forwarded-For")
if x_forwarded_for:
ip = x_forwarded_for[0]
else:
ip = request.remote_addr
- search.result_container.answers.clear()
- search.result_container.answers.add(ip)
+ search.result_container.answers['ip'] = {'answer': ip}
elif p.match(search.search_query.query):
ua = request.user_agent
- search.result_container.answers.clear()
- search.result_container.answers.add(ua)
+ search.result_container.answers['user-agent'] = {'answer': ua}
return True
diff --git a/searx/plugins/tracker_url_remover.py b/searx/plugins/tracker_url_remover.py
index 33dd621..e8735a2 100644
--- a/searx/plugins/tracker_url_remover.py
+++ b/searx/plugins/tracker_url_remover.py
@@ -17,10 +17,11 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
from flask_babel import gettext
import re
-from searx.url_utils import urlunparse, parse_qsl, urlencode
+from urllib.parse import urlunparse, parse_qsl, urlencode
regexes = {re.compile(r'utm_[^&]+'),
re.compile(r'(wkey|wemail)[^&]*'),
+ re.compile(r'(_hsenc|_hsmi|hsCtaTracking|__hssc|__hstc|__hsfp|search_value)[^&]*'),
re.compile(r'&$')}
name = gettext('Tracker URL remover')
diff --git a/searx/poolrequests.py b/searx/poolrequests.py
index f9a9d77..ab32725 100644
--- a/searx/poolrequests.py
+++ b/searx/poolrequests.py
@@ -1,9 +1,34 @@
+import sys
+from time import time
+from itertools import cycle
+from threading import local
+
import requests
-from itertools import cycle
-from threading import RLock, local
from searx import settings
-from time import time
+from searx import logger
+from searx.raise_for_httperror import raise_for_httperror
+
+
+logger = logger.getChild('poolrequests')
+
+
+try:
+ import ssl
+ if ssl.OPENSSL_VERSION_INFO[0:3] < (1, 0, 2):
+ # https://github.com/certifi/python-certifi#1024-bit-root-certificates
+ logger.critical('You are using an old openssl version({0}), please upgrade above 1.0.2!'
+ .format(ssl.OPENSSL_VERSION))
+ sys.exit(1)
+except ImportError:
+ ssl = None
+if not getattr(ssl, "HAS_SNI", False):
+ try:
+ import OpenSSL # pylint: disable=unused-import
+ except ImportError:
+ logger.critical("ssl doesn't support SNI and the pyopenssl module is not installed.\n"
+ "Some HTTPS connections will fail")
+ sys.exit(1)
class HTTPAdapterWithConnParams(requests.adapters.HTTPAdapter):
@@ -20,7 +45,7 @@ class HTTPAdapterWithConnParams(requests.adapters.HTTPAdapter):
self.config = {}
self.proxy_manager = {}
- super(requests.adapters.HTTPAdapter, self).__init__()
+ super().__init__()
self._pool_connections = pool_connections
self._pool_maxsize = pool_maxsize
@@ -60,18 +85,21 @@ else:
class SessionSinglePool(requests.Session):
def __init__(self):
- super(SessionSinglePool, self).__init__()
+ super().__init__()
# reuse the same adapters
- with RLock():
- self.adapters.clear()
- self.mount('https://', next(https_adapters))
- self.mount('http://', next(http_adapters))
+ self.adapters.clear()
+
+ https_adapter = threadLocal.__dict__.setdefault('https_adapter', next(https_adapters))
+ self.mount('https://', https_adapter)
+ if get_enable_http_protocol():
+ http_adapter = threadLocal.__dict__.setdefault('http_adapter', next(http_adapters))
+ self.mount('http://', http_adapter)
def close(self):
"""Call super, but clear adapters since there are managed globaly"""
self.adapters.clear()
- super(SessionSinglePool, self).close()
+ super().close()
def set_timeout_for_thread(timeout, start_time=None):
@@ -79,6 +107,17 @@ def set_timeout_for_thread(timeout, start_time=None):
threadLocal.start_time = start_time
+def set_enable_http_protocol(enable_http):
+ threadLocal.enable_http = enable_http
+
+
+def get_enable_http_protocol():
+ try:
+ return threadLocal.enable_http
+ except AttributeError:
+ return False
+
+
def reset_time_for_thread():
threadLocal.total_time = 0
@@ -87,6 +126,32 @@ def get_time_for_thread():
return threadLocal.total_time
+def get_proxy_cycles(proxy_settings):
+ if not proxy_settings:
+ return None
+ # Backwards compatibility for single proxy in settings.yml
+ for protocol, proxy in proxy_settings.items():
+ if isinstance(proxy, str):
+ proxy_settings[protocol] = [proxy]
+
+ for protocol in proxy_settings:
+ proxy_settings[protocol] = cycle(proxy_settings[protocol])
+ return proxy_settings
+
+
+GLOBAL_PROXY_CYCLES = get_proxy_cycles(settings['outgoing'].get('proxies'))
+
+
+def get_proxies(proxy_cycles):
+ if proxy_cycles:
+ return {protocol: next(proxy_cycle) for protocol, proxy_cycle in proxy_cycles.items()}
+ return None
+
+
+def get_global_proxies():
+ return get_proxies(GLOBAL_PROXY_CYCLES)
+
+
def request(method, url, **kwargs):
"""same as requests/requests/api.py request(...)"""
time_before_request = time()
@@ -95,7 +160,8 @@ def request(method, url, **kwargs):
session = SessionSinglePool()
# proxies
- kwargs['proxies'] = settings['outgoing'].get('proxies') or None
+ if not kwargs.get('proxies'):
+ kwargs['proxies'] = get_global_proxies()
# timeout
if 'timeout' in kwargs:
@@ -105,6 +171,12 @@ def request(method, url, **kwargs):
if timeout is not None:
kwargs['timeout'] = timeout
+ # raise_for_error
+ check_for_httperror = True
+ if 'raise_for_httperror' in kwargs:
+ check_for_httperror = kwargs['raise_for_httperror']
+ del kwargs['raise_for_httperror']
+
# do request
response = session.request(method=method, url=url, **kwargs)
@@ -125,6 +197,10 @@ def request(method, url, **kwargs):
if hasattr(threadLocal, 'total_time'):
threadLocal.total_time += time_after_request - time_before_request
+ # raise an exception
+ if check_for_httperror:
+ raise_for_httperror(response)
+
return response
diff --git a/searx/preferences.py b/searx/preferences.py
index 30a4252..5c9c293 100644
--- a/searx/preferences.py
+++ b/searx/preferences.py
@@ -1,13 +1,16 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""Searx preferences implementation.
+"""
+
+# pylint: disable=useless-object-inheritance
+
from base64 import urlsafe_b64encode, urlsafe_b64decode
from zlib import compress, decompress
-from sys import version
+from urllib.parse import parse_qs, urlencode
from searx import settings, autocomplete
from searx.languages import language_codes as languages
-from searx.url_utils import parse_qs, urlencode
-
-if version[0] == '3':
- unicode = str
+from searx.webutils import VALID_LANGUAGE_CODE
COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5 # 5 years
@@ -19,19 +22,23 @@ DOI_RESOLVERS = list(settings['doi_resolvers'])
class MissingArgumentException(Exception):
- pass
+ """Exption from ``cls._post_init`` when a argument is missed.
+ """
class ValidationException(Exception):
- pass
+ """Exption from ``cls._post_init`` when configuration value is invalid.
+ """
-class Setting(object):
+
+class Setting:
"""Base class of user settings"""
- def __init__(self, default_value, **kwargs):
- super(Setting, self).__init__()
+ def __init__(self, default_value, locked=False, **kwargs):
+ super().__init__()
self.value = default_value
+ self.locked = locked
for key, value in kwargs.items():
setattr(self, key, value)
@@ -41,33 +48,45 @@ class Setting(object):
pass
def parse(self, data):
+ """Parse ``data`` and store the result at ``self.value``
+
+ If needed, its overwritten in the inheritance.
+ """
self.value = data
def get_value(self):
+ """Returns the value of the setting
+
+ If needed, its overwritten in the inheritance.
+ """
return self.value
def save(self, name, resp):
+ """Save cookie ``name`` in the HTTP reponse obect
+
+ If needed, its overwritten in the inheritance."""
resp.set_cookie(name, self.value, max_age=COOKIE_MAX_AGE)
class StringSetting(Setting):
"""Setting of plain string values"""
- pass
class EnumStringSetting(Setting):
"""Setting of a value which can only come from the given choices"""
- def _validate_selection(self, selection):
- if selection not in self.choices:
- raise ValidationException('Invalid value: "{0}"'.format(selection))
-
def _post_init(self):
if not hasattr(self, 'choices'):
raise MissingArgumentException('Missing argument: choices')
self._validate_selection(self.value)
+ def _validate_selection(self, selection):
+ if selection not in self.choices: # pylint: disable=no-member
+ raise ValidationException('Invalid value: "{0}"'.format(selection))
+
def parse(self, data):
+ """Parse and validate ``data`` and store the result at ``self.value``
+ """
self._validate_selection(data)
self.value = data
@@ -77,7 +96,7 @@ class MultipleChoiceSetting(EnumStringSetting):
def _validate_selections(self, selections):
for item in selections:
- if item not in self.choices:
+ if item not in self.choices: # pylint: disable=no-member
raise ValidationException('Invalid value: "{0}"'.format(selections))
def _post_init(self):
@@ -86,6 +105,8 @@ class MultipleChoiceSetting(EnumStringSetting):
self._validate_selections(self.value)
def parse(self, data):
+ """Parse and validate ``data`` and store the result at ``self.value``
+ """
if data == '':
self.value = []
return
@@ -94,30 +115,78 @@ class MultipleChoiceSetting(EnumStringSetting):
self._validate_selections(elements)
self.value = elements
- def parse_form(self, data):
+ def parse_form(self, data): # pylint: disable=missing-function-docstring
+ if self.locked:
+ return
+
self.value = []
for choice in data:
- if choice in self.choices and choice not in self.value:
+ if choice in self.choices and choice not in self.value: # pylint: disable=no-member
self.value.append(choice)
def save(self, name, resp):
+ """Save cookie ``name`` in the HTTP reponse obect
+ """
resp.set_cookie(name, ','.join(self.value), max_age=COOKIE_MAX_AGE)
+class SetSetting(Setting):
+ """Setting of values of type ``set`` (comma separated string) """
+ def _post_init(self):
+ if not hasattr(self, 'values'):
+ self.values = set()
+
+ def get_value(self):
+ """Returns a string with comma separated values.
+ """
+ return ','.join(self.values)
+
+ def parse(self, data):
+ """Parse and validate ``data`` and store the result at ``self.value``
+ """
+ if data == '':
+ self.values = set() # pylint: disable=attribute-defined-outside-init
+ return
+
+ elements = data.split(',')
+ for element in elements:
+ self.values.add(element)
+
+ def parse_form(self, data): # pylint: disable=missing-function-docstring
+ if self.locked:
+ return
+
+ elements = data.split(',')
+ self.values = set(elements) # pylint: disable=attribute-defined-outside-init
+
+ def save(self, name, resp):
+ """Save cookie ``name`` in the HTTP reponse obect
+ """
+ resp.set_cookie(name, ','.join(self.values), max_age=COOKIE_MAX_AGE)
+
+
class SearchLanguageSetting(EnumStringSetting):
"""Available choices may change, so user's value may not be in choices anymore"""
+ def _validate_selection(self, selection):
+ if selection != '' and not VALID_LANGUAGE_CODE.match(selection):
+ raise ValidationException('Invalid language code: "{0}"'.format(selection))
+
def parse(self, data):
- if data not in self.choices and data != self.value:
+ """Parse and validate ``data`` and store the result at ``self.value``
+ """
+ if data not in self.choices and data != self.value: # pylint: disable=no-member
# hack to give some backwards compatibility with old language cookies
data = str(data).replace('_', '-')
- lang = data.split('-')[0]
+ lang = data.split('-', maxsplit=1)[0]
+ # pylint: disable=no-member
if data in self.choices:
pass
elif lang in self.choices:
data = lang
else:
data = self.value
+ self._validate_selection(data)
self.value = data
@@ -127,16 +196,21 @@ class MapSetting(Setting):
def _post_init(self):
if not hasattr(self, 'map'):
raise MissingArgumentException('missing argument: map')
- if self.value not in self.map.values():
+ if self.value not in self.map.values(): # pylint: disable=no-member
raise ValidationException('Invalid default value')
def parse(self, data):
+ """Parse and validate ``data`` and store the result at ``self.value``
+ """
+ # pylint: disable=no-member
if data not in self.map:
raise ValidationException('Invalid choice: {0}'.format(data))
self.value = self.map[data]
- self.key = data
+ self.key = data # pylint: disable=attribute-defined-outside-init
def save(self, name, resp):
+ """Save cookie ``name`` in the HTTP reponse obect
+ """
if hasattr(self, 'key'):
resp.set_cookie(name, self.key, max_age=COOKIE_MAX_AGE)
@@ -150,24 +224,27 @@ class SwitchableSetting(Setting):
if not hasattr(self, 'choices'):
raise MissingArgumentException('missing argument: choices')
- def transform_form_items(self, items):
+ def transform_form_items(self, items): # pylint: disable=missing-function-docstring
return items
- def transform_values(self, values):
+ def transform_values(self, values): # pylint: disable=missing-function-docstring
return values
- def parse_cookie(self, data):
+ def parse_cookie(self, data): # pylint: disable=missing-function-docstring
+ # pylint: disable=attribute-defined-outside-init
if data[DISABLED] != '':
self.disabled = set(data[DISABLED].split(','))
if data[ENABLED] != '':
self.enabled = set(data[ENABLED].split(','))
- def parse_form(self, items):
- items = self.transform_form_items(items)
+ def parse_form(self, items): # pylint: disable=missing-function-docstring
+ if self.locked:
+ return
- self.disabled = set()
- self.enabled = set()
- for choice in self.choices:
+ items = self.transform_form_items(items)
+ self.disabled = set() # pylint: disable=attribute-defined-outside-init
+ self.enabled = set() # pylint: disable=attribute-defined-outside-init
+ for choice in self.choices: # pylint: disable=no-member
if choice['default_on']:
if choice['id'] in items:
self.disabled.add(choice['id'])
@@ -175,33 +252,36 @@ class SwitchableSetting(Setting):
if choice['id'] not in items:
self.enabled.add(choice['id'])
- def save(self, resp):
+ def save(self, resp): # pylint: disable=arguments-differ
+ """Save cookie in the HTTP reponse obect
+ """
resp.set_cookie('disabled_{0}'.format(self.value), ','.join(self.disabled), max_age=COOKIE_MAX_AGE)
resp.set_cookie('enabled_{0}'.format(self.value), ','.join(self.enabled), max_age=COOKIE_MAX_AGE)
- def get_disabled(self):
+ def get_disabled(self): # pylint: disable=missing-function-docstring
disabled = self.disabled
- for choice in self.choices:
+ for choice in self.choices: # pylint: disable=no-member
if not choice['default_on'] and choice['id'] not in self.enabled:
disabled.add(choice['id'])
return self.transform_values(disabled)
- def get_enabled(self):
+ def get_enabled(self): # pylint: disable=missing-function-docstring
enabled = self.enabled
- for choice in self.choices:
+ for choice in self.choices: # pylint: disable=no-member
if choice['default_on'] and choice['id'] not in self.disabled:
enabled.add(choice['id'])
return self.transform_values(enabled)
class EnginesSetting(SwitchableSetting):
+ """Engine settings"""
def _post_init(self):
- super(EnginesSetting, self)._post_init()
+ super()._post_init()
transformed_choices = []
- for engine_name, engine in self.choices.items():
+ for engine_name, engine in self.choices.items(): # pylint: disable=no-member,access-member-before-definition
for category in engine.categories:
- transformed_choice = dict()
+ transformed_choice = {}
transformed_choice['default_on'] = not engine.disabled
transformed_choice['id'] = '{}__{}'.format(engine_name, category)
transformed_choices.append(transformed_choice)
@@ -212,7 +292,7 @@ class EnginesSetting(SwitchableSetting):
def transform_values(self, values):
if len(values) == 1 and next(iter(values)) == '':
- return list()
+ return []
transformed_values = []
for value in values:
engine, category = value.split('__')
@@ -221,12 +301,13 @@ class EnginesSetting(SwitchableSetting):
class PluginsSetting(SwitchableSetting):
+ """Plugin settings"""
def _post_init(self):
- super(PluginsSetting, self)._post_init()
+ super()._post_init()
transformed_choices = []
- for plugin in self.choices:
- transformed_choice = dict()
+ for plugin in self.choices: # pylint: disable=access-member-before-definition
+ transformed_choice = {}
transformed_choice['default_on'] = plugin.default_on
transformed_choice['id'] = plugin.id
transformed_choices.append(transformed_choice)
@@ -236,47 +317,126 @@ class PluginsSetting(SwitchableSetting):
return [item[len('plugin_'):] for item in items]
-class Preferences(object):
+class Preferences:
"""Validates and saves preferences to cookies"""
def __init__(self, themes, categories, engines, plugins):
- super(Preferences, self).__init__()
-
- self.key_value_settings = {'categories': MultipleChoiceSetting(['general'], choices=categories + ['none']),
- 'language': SearchLanguageSetting(settings['search']['language'],
- choices=LANGUAGE_CODES),
- 'locale': EnumStringSetting(settings['ui']['default_locale'],
- choices=list(settings['locales'].keys()) + ['']),
- 'autocomplete': EnumStringSetting(settings['search']['autocomplete'],
- choices=list(autocomplete.backends.keys()) + ['']),
- 'image_proxy': MapSetting(settings['server']['image_proxy'],
- map={'': settings['server']['image_proxy'],
- '0': False,
- '1': True,
- 'True': True,
- 'False': False}),
- 'method': EnumStringSetting('POST', choices=('GET', 'POST')),
- 'safesearch': MapSetting(settings['search']['safe_search'], map={'0': 0,
- '1': 1,
- '2': 2}),
- 'theme': EnumStringSetting(settings['ui']['default_theme'], choices=themes),
- 'results_on_new_tab': MapSetting(False, map={'0': False,
- '1': True,
- 'False': False,
- 'True': True}),
- 'doi_resolver': MultipleChoiceSetting(['oadoi.org'], choices=DOI_RESOLVERS),
- 'oscar-style': EnumStringSetting(
- settings['ui'].get('theme_args', {}).get('oscar_style', 'logicodev'),
- choices=['', 'logicodev', 'logicodev-dark', 'pointhi']),
- }
+ super().__init__()
+
+ self.key_value_settings = {
+ 'categories': MultipleChoiceSetting(
+ ['general'],
+ is_locked('categories'),
+ choices=categories + ['none']
+ ),
+ 'language': SearchLanguageSetting(
+ settings['search'].get('default_lang', ''),
+ is_locked('language'),
+ choices=list(LANGUAGE_CODES) + ['']
+ ),
+ 'locale': EnumStringSetting(
+ settings['ui'].get('default_locale', ''),
+ is_locked('locale'),
+ choices=list(settings['locales'].keys()) + ['']
+ ),
+ 'autocomplete': EnumStringSetting(
+ settings['search'].get('autocomplete', ''),
+ is_locked('autocomplete'),
+ choices=list(autocomplete.backends.keys()) + ['']
+ ),
+ 'autofocus': MapSetting(
+ settings['ui'].get('autofocus', True),
+ is_locked('autofocus'),
+ map={
+ '0': False,
+ '1': True,
+ 'False': False,
+ 'True': True
+ }
+ ),
+ 'archive_today': MapSetting(
+ settings['ui'].get('archive_today', True),
+ is_locked('archive_today'),
+ map={
+ '0': False,
+ '1': True,
+ 'False': False,
+ 'True': True
+ }
+ ),
+ 'image_proxy': MapSetting(
+ settings['server'].get('image_proxy', False),
+ is_locked('image_proxy'),
+ map={
+ '': settings['server'].get('image_proxy', 0),
+ '0': False,
+ '1': True,
+ 'True': True,
+ 'False': False
+ }
+ ),
+ 'method': EnumStringSetting(
+ settings['server'].get('method', 'POST'),
+ is_locked('method'),
+ choices=('GET', 'POST')
+ ),
+ 'safesearch': MapSetting(
+ settings['search'].get('safe_search', 0),
+ is_locked('safesearch'),
+ map={
+ '0': 0,
+ '1': 1,
+ '2': 2
+ }
+ ),
+ 'theme': EnumStringSetting(
+ settings['ui'].get('default_theme', 'oscar'),
+ is_locked('theme'),
+ choices=themes
+ ),
+ 'results_on_new_tab': MapSetting(
+ settings['ui'].get('results_on_new_tab', False),
+ is_locked('results_on_new_tab'),
+ map={
+ '0': False,
+ '1': True,
+ 'False': False,
+ 'True': True
+ }
+ ),
+ 'doi_resolver': MultipleChoiceSetting(
+ [settings['default_doi_resolver'], ],
+ is_locked('doi_resolver'),
+ choices=DOI_RESOLVERS
+ ),
+ 'oscar-style': EnumStringSetting(
+ settings['ui'].get('theme_args', {}).get('oscar_style', 'logicodev'),
+ is_locked('oscar-style'),
+ choices=['', 'logicodev', 'logicodev-dark', 'pointhi']),
+ 'advanced_search': MapSetting(
+ settings['ui'].get('advanced_search', False),
+ is_locked('advanced_search'),
+ map={
+ '0': False,
+ '1': True,
+ 'False': False,
+ 'True': True,
+ 'on': True,
+ }
+ ),
+ }
self.engines = EnginesSetting('engines', choices=engines)
self.plugins = PluginsSetting('plugins', choices=plugins)
+ self.tokens = SetSetting('tokens')
self.unknown_params = {}
def get_as_url_params(self):
+ """Return preferences as URL parameters"""
settings_kv = {}
for k, v in self.key_value_settings.items():
+ if v.locked:
+ continue
if isinstance(v, MultipleChoiceSetting):
settings_kv[k] = ','.join(v.get_value())
else:
@@ -288,18 +448,24 @@ class Preferences(object):
settings_kv['disabled_plugins'] = ','.join(self.plugins.disabled)
settings_kv['enabled_plugins'] = ','.join(self.plugins.enabled)
- return urlsafe_b64encode(compress(urlencode(settings_kv).encode('utf-8'))).decode('utf-8')
+ settings_kv['tokens'] = ','.join(self.tokens.values)
+
+ return urlsafe_b64encode(compress(urlencode(settings_kv).encode())).decode()
def parse_encoded_data(self, input_data):
- decoded_data = decompress(urlsafe_b64decode(input_data.encode('utf-8')))
+ """parse (base64) preferences from request (``flask.request.form['preferences']``)"""
+ decoded_data = decompress(urlsafe_b64decode(input_data.encode()))
dict_data = {}
- for x, y in parse_qs(decoded_data).items():
- dict_data[x.decode('utf8')] = y[0].decode('utf8')
+ for x, y in parse_qs(decoded_data.decode()).items():
+ dict_data[x] = y[0]
self.parse_dict(dict_data)
def parse_dict(self, input_data):
+ """parse preferences from request (``flask.request.form``)"""
for user_setting_name, user_setting in input_data.items():
if user_setting_name in self.key_value_settings:
+ if self.key_value_settings[user_setting_name].locked:
+ continue
self.key_value_settings[user_setting_name].parse(user_setting)
elif user_setting_name == 'disabled_engines':
self.engines.parse_cookie((input_data.get('disabled_engines', ''),
@@ -307,6 +473,8 @@ class Preferences(object):
elif user_setting_name == 'disabled_plugins':
self.plugins.parse_cookie((input_data.get('disabled_plugins', ''),
input_data.get('enabled_plugins', '')))
+ elif user_setting_name == 'tokens':
+ self.tokens.parse(user_setting)
elif not any(user_setting_name.startswith(x) for x in [
'enabled_',
'disabled_',
@@ -316,6 +484,7 @@ class Preferences(object):
self.unknown_params[user_setting_name] = user_setting
def parse_form(self, input_data):
+ """Parse formular (``<input>``) data from a ``flask.request.form``"""
disabled_engines = []
enabled_categories = []
disabled_plugins = []
@@ -328,6 +497,8 @@ class Preferences(object):
enabled_categories.append(user_setting_name[len('category_'):])
elif user_setting_name.startswith('plugin_'):
disabled_plugins.append(user_setting_name)
+ elif user_setting_name == 'tokens':
+ self.tokens.parse_form(user_setting)
else:
self.unknown_params[user_setting_name] = user_setting
self.key_value_settings['categories'].parse_form(enabled_categories)
@@ -336,16 +507,46 @@ class Preferences(object):
# cannot be used in case of engines or plugins
def get_value(self, user_setting_name):
+ """Returns the value for ``user_setting_name``
+ """
+ ret_val = None
if user_setting_name in self.key_value_settings:
- return self.key_value_settings[user_setting_name].get_value()
+ ret_val = self.key_value_settings[user_setting_name].get_value()
if user_setting_name in self.unknown_params:
- return self.unknown_params[user_setting_name]
+ ret_val = self.unknown_params[user_setting_name]
+ return ret_val
def save(self, resp):
+ """Save cookie in the HTTP reponse obect
+ """
for user_setting_name, user_setting in self.key_value_settings.items():
+ if user_setting.locked:
+ continue
user_setting.save(user_setting_name, resp)
self.engines.save(resp)
self.plugins.save(resp)
+ self.tokens.save('tokens', resp)
for k, v in self.unknown_params.items():
resp.set_cookie(k, v, max_age=COOKIE_MAX_AGE)
return resp
+
+ def validate_token(self, engine): # pylint: disable=missing-function-docstring
+ valid = True
+ if hasattr(engine, 'tokens') and engine.tokens:
+ valid = False
+ for token in self.tokens.values:
+ if token in engine.tokens:
+ valid = True
+ break
+
+ return valid
+
+
+def is_locked(setting_name):
+ """Checks if a given setting name is locked by settings.yml
+ """
+ if 'preferences' not in settings:
+ return False
+ if 'lock' not in settings['preferences']:
+ return False
+ return setting_name in settings['preferences']['lock']
diff --git a/searx/query.py b/searx/query.py
index c4002bd..2e6a2aa 100644
--- a/searx/query.py
+++ b/searx/query.py
@@ -1,191 +1,330 @@
-#!/usr/bin/env python
+# SPDX-License-Identifier: AGPL-3.0-or-later
-'''
-searx is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
+from abc import abstractmethod, ABC
+import re
-searx is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
+from searx.languages import language_codes
+from searx.engines import categories, engines, engine_shortcuts
+from searx.external_bang import get_bang_definition_and_autocomplete
+from searx.search import EngineRef
+from searx.webutils import VALID_LANGUAGE_CODE
-You should have received a copy of the GNU Affero General Public License
-along with searx. If not, see < http://www.gnu.org/licenses/ >.
-(C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at>
-'''
+class QueryPartParser(ABC):
-from searx.languages import language_codes
-from searx.engines import (
- categories, engines, engine_shortcuts
-)
-import re
-import sys
+ __slots__ = "raw_text_query", "enable_autocomplete"
+
+ @staticmethod
+ @abstractmethod
+ def check(raw_value):
+ """Check if raw_value can be parsed"""
+
+ def __init__(self, raw_text_query, enable_autocomplete):
+ self.raw_text_query = raw_text_query
+ self.enable_autocomplete = enable_autocomplete
+
+ @abstractmethod
+ def __call__(self, raw_value):
+ """Try to parse raw_value: set the self.raw_text_query properties
-if sys.version_info[0] == 3:
- unicode = str
+ return True if raw_value has been parsed
-VALID_LANGUAGE_CODE = re.compile(r'^[a-z]{2,3}(-[a-zA-Z]{2})?$')
+ self.raw_text_query.autocomplete_list is also modified
+ if self.enable_autocomplete is True
+ """
+ def _add_autocomplete(self, value):
+ if value not in self.raw_text_query.autocomplete_list:
+ self.raw_text_query.autocomplete_list.append(value)
-class RawTextQuery(object):
+
+class TimeoutParser(QueryPartParser):
+
+ @staticmethod
+ def check(raw_value):
+ return raw_value[0] == '<'
+
+ def __call__(self, raw_value):
+ value = raw_value[1:]
+ found = self._parse(value) if len(value) > 0 else False
+ if self.enable_autocomplete and not value:
+ self._autocomplete()
+ return found
+
+ def _parse(self, value):
+ if not value.isdigit():
+ return False
+ raw_timeout_limit = int(value)
+ if raw_timeout_limit < 100:
+ # below 100, the unit is the second ( <3 = 3 seconds timeout )
+ self.raw_text_query.timeout_limit = float(raw_timeout_limit)
+ else:
+ # 100 or above, the unit is the millisecond ( <850 = 850 milliseconds timeout )
+ self.raw_text_query.timeout_limit = raw_timeout_limit / 1000.0
+ return True
+
+ def _autocomplete(self):
+ for suggestion in ['<3', '<850']:
+ self._add_autocomplete(suggestion)
+
+
+class LanguageParser(QueryPartParser):
+
+ @staticmethod
+ def check(raw_value):
+ return raw_value[0] == ':'
+
+ def __call__(self, raw_value):
+ value = raw_value[1:].lower().replace('_', '-')
+ found = self._parse(value) if len(value) > 0 else False
+ if self.enable_autocomplete and not found:
+ self._autocomplete(value)
+ return found
+
+ def _parse(self, value):
+ found = False
+ # check if any language-code is equal with
+ # declared language-codes
+ for lc in language_codes:
+ lang_id, lang_name, country, english_name = map(str.lower, lc)
+
+ # if correct language-code is found
+ # set it as new search-language
+
+ if (value == lang_id
+ or value == lang_name
+ or value == english_name
+ or value.replace('-', ' ') == country)\
+ and value not in self.raw_text_query.languages:
+ found = True
+ lang_parts = lang_id.split('-')
+ if len(lang_parts) == 2:
+ self.raw_text_query.languages.append(lang_parts[0] + '-' + lang_parts[1].upper())
+ else:
+ self.raw_text_query.languages.append(lang_id)
+ # to ensure best match (first match is not necessarily the best one)
+ if value == lang_id:
+ break
+
+ # user may set a valid, yet not selectable language
+ if VALID_LANGUAGE_CODE.match(value):
+ lang_parts = value.split('-')
+ if len(lang_parts) > 1:
+ value = lang_parts[0].lower() + '-' + lang_parts[1].upper()
+ if value not in self.raw_text_query.languages:
+ self.raw_text_query.languages.append(value)
+ found = True
+
+ return found
+
+ def _autocomplete(self, value):
+ if not value:
+ # show some example queries
+ for lang in [":en", ":en_us", ":english", ":united_kingdom"]:
+ self.raw_text_query.autocomplete_list.append(lang)
+ return
+
+ for lc in language_codes:
+ lang_id, lang_name, country, english_name = map(str.lower, lc)
+
+ # check if query starts with language-id
+ if lang_id.startswith(value):
+ if len(value) <= 2:
+ self._add_autocomplete(':' + lang_id.split('-')[0])
+ else:
+ self._add_autocomplete(':' + lang_id)
+
+ # check if query starts with language name
+ if lang_name.startswith(value) or english_name.startswith(value):
+ self._add_autocomplete(':' + lang_name)
+
+ # check if query starts with country
+ # here "new_zealand" is "new-zealand" (see __call__)
+ if country.startswith(value.replace('-', ' ')):
+ self._add_autocomplete(':' + country.replace(' ', '_'))
+
+
+class ExternalBangParser(QueryPartParser):
+
+ @staticmethod
+ def check(raw_value):
+ return raw_value.startswith('!!')
+
+ def __call__(self, raw_value):
+ value = raw_value[2:]
+ found, bang_ac_list = self._parse(value) if len(value) > 0 else (False, [])
+ if self.enable_autocomplete:
+ self._autocomplete(bang_ac_list)
+ return found
+
+ def _parse(self, value):
+ found = False
+ bang_definition, bang_ac_list = get_bang_definition_and_autocomplete(value)
+ if bang_definition is not None:
+ self.raw_text_query.external_bang = value
+ found = True
+ return found, bang_ac_list
+
+ def _autocomplete(self, bang_ac_list):
+ if not bang_ac_list:
+ bang_ac_list = ['g', 'ddg', 'bing']
+ for external_bang in bang_ac_list:
+ self._add_autocomplete('!!' + external_bang)
+
+
+class BangParser(QueryPartParser):
+
+ @staticmethod
+ def check(raw_value):
+ return raw_value[0] == '!' or raw_value[0] == '?'
+
+ def __call__(self, raw_value):
+ value = raw_value[1:].replace('-', ' ').replace('_', ' ')
+ found = self._parse(value) if len(value) > 0 else False
+ if found and raw_value[0] == '!':
+ self.raw_text_query.specific = True
+ if self.enable_autocomplete:
+ self._autocomplete(raw_value[0], value)
+ return found
+
+ def _parse(self, value):
+ # check if prefix is equal with engine shortcut
+ if value in engine_shortcuts:
+ value = engine_shortcuts[value]
+
+ # check if prefix is equal with engine name
+ if value in engines:
+ self.raw_text_query.enginerefs.append(EngineRef(value, 'none'))
+ return True
+
+ # check if prefix is equal with categorie name
+ if value in categories:
+ # using all engines for that search, which
+ # are declared under that categorie name
+ self.raw_text_query.enginerefs.extend(EngineRef(engine.name, value)
+ for engine in categories[value]
+ if (engine.name, value) not in self.raw_text_query.disabled_engines)
+ return True
+
+ return False
+
+ def _autocomplete(self, first_char, value):
+ if not value:
+ # show some example queries
+ for suggestion in ['images', 'wikipedia', 'osm']:
+ if suggestion not in self.raw_text_query.disabled_engines or suggestion in categories:
+ self._add_autocomplete(first_char + suggestion)
+ return
+
+ # check if query starts with categorie name
+ for category in categories:
+ if category.startswith(value):
+ self._add_autocomplete(first_char + category)
+
+ # check if query starts with engine name
+ for engine in engines:
+ if engine.startswith(value):
+ self._add_autocomplete(first_char + engine.replace(' ', '_'))
+
+ # check if query starts with engine shortcut
+ for engine_shortcut in engine_shortcuts:
+ if engine_shortcut.startswith(value):
+ self._add_autocomplete(first_char + engine_shortcut)
+
+
+class RawTextQuery:
"""parse raw text query (the value from the html input)"""
+ PARSER_CLASSES = [
+ TimeoutParser, # this force the timeout
+ LanguageParser, # this force a language
+ ExternalBangParser, # external bang (must be before BangParser)
+ BangParser # this force a engine or category
+ ]
+
def __init__(self, query, disabled_engines):
+ assert isinstance(query, str)
+ # input parameters
self.query = query
- self.disabled_engines = []
-
- if disabled_engines:
- self.disabled_engines = disabled_engines
-
- self.query_parts = []
- self.engines = []
+ self.disabled_engines = disabled_engines if disabled_engines else []
+ # parsed values
+ self.enginerefs = []
self.languages = []
self.timeout_limit = None
+ self.external_bang = None
self.specific = False
-
- # parse query, if tags are set, which
- # change the serch engine or search-language
- def parse_query(self):
- self.query_parts = []
+ self.autocomplete_list = []
+ # internal properties
+ self.query_parts = [] # use self.getFullQuery()
+ self.user_query_parts = [] # use self.getQuery()
+ self.autocomplete_location = None
+ self._parse_query()
+
+ def _parse_query(self):
+ """
+ parse self.query, if tags are set, which
+ change the search engine or search-language
+ """
# split query, including whitespaces
- raw_query_parts = re.split(r'(\s+)' if isinstance(self.query, str) else b'(\s+)', self.query)
-
- parse_next = True
-
- for query_part in raw_query_parts:
- if not parse_next:
- self.query_parts[-1] += query_part
- continue
+ raw_query_parts = re.split(r'(\s+)', self.query)
- parse_next = False
+ last_index_location = None
+ autocomplete_index = len(raw_query_parts) - 1
+ for i, query_part in enumerate(raw_query_parts):
# part does only contain spaces, skip
if query_part.isspace()\
or query_part == '':
- parse_next = True
- self.query_parts.append(query_part)
continue
- # this force the timeout
- if query_part[0] == '<':
- try:
- raw_timeout_limit = int(query_part[1:])
- if raw_timeout_limit < 100:
- # below 100, the unit is the second ( <3 = 3 seconds timeout )
- self.timeout_limit = float(raw_timeout_limit)
- else:
- # 100 or above, the unit is the millisecond ( <850 = 850 milliseconds timeout )
- self.timeout_limit = raw_timeout_limit / 1000.0
- parse_next = True
- except ValueError:
- # error not reported to the user
- pass
-
- # this force a language
- if query_part[0] == ':':
- lang = query_part[1:].lower().replace('_', '-')
-
- # check if any language-code is equal with
- # declared language-codes
- for lc in language_codes:
- lang_id, lang_name, country, english_name = map(unicode.lower, lc)
-
- # if correct language-code is found
- # set it as new search-language
- if (lang == lang_id
- or lang == lang_name
- or lang == english_name
- or lang.replace('-', ' ') == country)\
- and lang not in self.languages:
- parse_next = True
- lang_parts = lang_id.split('-')
- if len(lang_parts) == 2:
- self.languages.append(lang_parts[0] + '-' + lang_parts[1].upper())
- else:
- self.languages.append(lang_id)
- # to ensure best match (first match is not necessarily the best one)
- if lang == lang_id:
- break
-
- # user may set a valid, yet not selectable language
- if VALID_LANGUAGE_CODE.match(lang):
- lang_parts = lang.split('-')
- if len(lang_parts) > 1:
- lang = lang_parts[0].lower() + '-' + lang_parts[1].upper()
- if lang not in self.languages:
- self.languages.append(lang)
- parse_next = True
-
- # this force a engine or category
- if query_part[0] == '!' or query_part[0] == '?':
- prefix = query_part[1:].replace('-', ' ').replace('_', ' ')
-
- # check if prefix is equal with engine shortcut
- if prefix in engine_shortcuts:
- parse_next = True
- engine_name = engine_shortcuts[prefix]
- if engine_name in engines:
- self.engines.append({'category': 'none',
- 'name': engine_name,
- 'from_bang': True})
-
- # check if prefix is equal with engine name
- elif prefix in engines:
- parse_next = True
- self.engines.append({'category': 'none',
- 'name': prefix,
- 'from_bang': True})
-
- # check if prefix is equal with categorie name
- elif prefix in categories:
- # using all engines for that search, which
- # are declared under that categorie name
- parse_next = True
- self.engines.extend({'category': prefix,
- 'name': engine.name}
- for engine in categories[prefix]
- if (engine.name, prefix) not in self.disabled_engines)
-
- if query_part[0] == '!':
- self.specific = True
+ # parse special commands
+ special_part = False
+ for parser_class in RawTextQuery.PARSER_CLASSES:
+ if parser_class.check(query_part):
+ special_part = parser_class(self, i == autocomplete_index)(query_part)
+ break
# append query part to query_part list
- self.query_parts.append(query_part)
-
- def changeSearchQuery(self, search_query):
- if len(self.query_parts):
- self.query_parts[-1] = search_query
- else:
- self.query_parts.append(search_query)
+ qlist = self.query_parts if special_part else self.user_query_parts
+ qlist.append(query_part)
+ last_index_location = (qlist, len(qlist) - 1)
+
+ self.autocomplete_location = last_index_location
+
+ def get_autocomplete_full_query(self, text):
+ qlist, position = self.autocomplete_location
+ qlist[position] = text
+ return self.getFullQuery()
+
+ def changeQuery(self, query):
+ self.user_query_parts = query.strip().split()
+ self.query = self.getFullQuery()
+ self.autocomplete_location = (self.user_query_parts, len(self.user_query_parts) - 1)
+ self.autocomplete_list = []
return self
- def getSearchQuery(self):
- if len(self.query_parts):
- return self.query_parts[-1]
- else:
- return ''
+ def getQuery(self):
+ return ' '.join(self.user_query_parts)
def getFullQuery(self):
- # get full querry including whitespaces
- return u''.join(self.query_parts)
-
-
-class SearchQuery(object):
- """container for all the search parameters (query, language, etc...)"""
-
- def __init__(self, query, engines, categories, lang, safesearch, pageno, time_range, timeout_limit=None):
- self.query = query.encode('utf-8')
- self.engines = engines
- self.categories = categories
- self.lang = lang
- self.safesearch = safesearch
- self.pageno = pageno
- self.time_range = None if time_range in ('', 'None', None) else time_range
- self.timeout_limit = timeout_limit
+ """
+ get full querry including whitespaces
+ """
+ return '{0} {1}'.format(' '.join(self.query_parts), self.getQuery()).strip()
def __str__(self):
- return str(self.query) + ";" + str(self.engines)
+ return self.getFullQuery()
+
+ def __repr__(self):
+ return f"<{self.__class__.__name__} " \
+ + f"query={self.query!r} " \
+ + f"disabled_engines={self.disabled_engines!r}\n " \
+ + f"languages={self.languages!r} " \
+ + f"timeout_limit={self.timeout_limit!r} "\
+ + f"external_bang={self.external_bang!r} " \
+ + f"specific={self.specific!r} " \
+ + f"enginerefs={self.enginerefs!r}\n " \
+ + f"autocomplete_list={self.autocomplete_list!r}\n " \
+ + f"query_parts={self.query_parts!r}\n " \
+ + f"user_query_parts={self.user_query_parts!r} >"
diff --git a/searx/raise_for_httperror.py b/searx/raise_for_httperror.py
new file mode 100644
index 0000000..bd12df9
--- /dev/null
+++ b/searx/raise_for_httperror.py
@@ -0,0 +1,66 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""
+Raise exception for an HTTP response is an error.
+"""
+from searx.exceptions import (SearxEngineCaptchaException, SearxEngineTooManyRequestsException,
+ SearxEngineAccessDeniedException)
+
+
+def is_cloudflare_challenge(resp):
+ if resp.status_code in [429, 503]:
+ if ('__cf_chl_jschl_tk__=' in resp.text)\
+ or ('/cdn-cgi/challenge-platform/' in resp.text
+ and 'orchestrate/jsch/v1' in resp.text
+ and 'window._cf_chl_enter(' in resp.text):
+ return True
+ if resp.status_code == 403 and '__cf_chl_captcha_tk__=' in resp.text:
+ return True
+ return False
+
+
+def is_cloudflare_firewall(resp):
+ return resp.status_code == 403 and '<span class="cf-error-code">1020</span>' in resp.text
+
+
+def raise_for_cloudflare_captcha(resp):
+ if resp.headers.get('Server', '').startswith('cloudflare'):
+ if is_cloudflare_challenge(resp):
+ # https://support.cloudflare.com/hc/en-us/articles/200170136-Understanding-Cloudflare-Challenge-Passage-Captcha-
+ # suspend for 2 weeks
+ raise SearxEngineCaptchaException(message='Cloudflare CAPTCHA', suspended_time=3600 * 24 * 15)
+
+ if is_cloudflare_firewall(resp):
+ raise SearxEngineAccessDeniedException(message='Cloudflare Firewall', suspended_time=3600 * 24)
+
+
+def raise_for_recaptcha(resp):
+ if resp.status_code == 503 \
+ and '"https://www.google.com/recaptcha/' in resp.text:
+ raise SearxEngineCaptchaException(message='ReCAPTCHA', suspended_time=3600 * 24 * 7)
+
+
+def raise_for_captcha(resp):
+ raise_for_cloudflare_captcha(resp)
+ raise_for_recaptcha(resp)
+
+
+def raise_for_httperror(resp):
+ """Raise exception for an HTTP response is an error.
+
+ Args:
+ resp (requests.Response): Response to check
+
+ Raises:
+ requests.HTTPError: raise by resp.raise_for_status()
+ searx.exceptions.SearxEngineAccessDeniedException: raise when the HTTP status code is 402 or 403.
+ searx.exceptions.SearxEngineTooManyRequestsException: raise when the HTTP status code is 429.
+ searx.exceptions.SearxEngineCaptchaException: raise when if CATPCHA challenge is detected.
+ """
+ if resp.status_code and resp.status_code >= 400:
+ raise_for_captcha(resp)
+ if resp.status_code in (402, 403):
+ raise SearxEngineAccessDeniedException(message='HTTP error ' + str(resp.status_code),
+ suspended_time=3600 * 24)
+ if resp.status_code == 429:
+ raise SearxEngineTooManyRequestsException()
+ resp.raise_for_status()
diff --git a/searx/results.py b/searx/results.py
index 3b1e4bd..1b1eccb 100644
--- a/searx/results.py
+++ b/searx/results.py
@@ -1,13 +1,14 @@
import re
-import sys
from collections import defaultdict
from operator import itemgetter
from threading import RLock
+from urllib.parse import urlparse, unquote
+from searx import logger
from searx.engines import engines
-from searx.url_utils import urlparse, unquote
+from searx.metrology.error_recorder import record_error
+from searx.utils import add_scheme_to_url
+from searx import settings
-if sys.version_info[0] == 3:
- basestring = str
CONTENT_LEN_IGNORED_CHARS_REGEX = re.compile(r'[,;:!?\./\\\\ ()-_]', re.M | re.U)
WHITESPACE_REGEX = re.compile('( |\t|\n)+', re.M | re.U)
@@ -15,13 +16,25 @@ WHITESPACE_REGEX = re.compile('( |\t|\n)+', re.M | re.U)
# return the meaningful length of the content for a result
def result_content_len(content):
- if isinstance(content, basestring):
+ if isinstance(content, str):
return len(CONTENT_LEN_IGNORED_CHARS_REGEX.sub('', content))
else:
return 0
def compare_urls(url_a, url_b):
+ """Lazy compare between two URL.
+ "www.example.com" and "example.com" are equals.
+ "www.example.com/path/" and "www.example.com/path" are equals.
+ "https://www.example.com/" and "http://www.example.com/" are equals.
+
+ Args:
+ url_a (ParseResult): first URL
+ url_b (ParseResult): second URL
+
+ Returns:
+ bool: True if url_a and url_b are equals
+ """
# ignore www. in comparison
if url_a.netloc.startswith('www.'):
host_a = url_a.netloc.replace('www.', '', 1)
@@ -60,6 +73,8 @@ def merge_two_infoboxes(infobox1, infobox2):
if weight2 > weight1:
infobox1['engine'] = infobox2['engine']
+ infobox1['engines'] |= infobox2['engines']
+
if 'urls' in infobox2:
urls1 = infobox1.get('urls', None)
if urls1 is None:
@@ -68,8 +83,10 @@ def merge_two_infoboxes(infobox1, infobox2):
for url2 in infobox2.get('urls', []):
unique_url = True
parsed_url2 = urlparse(url2.get('url', ''))
+ entity_url2 = url2.get('entity')
for url1 in urls1:
- if compare_urls(urlparse(url1.get('url', '')), parsed_url2):
+ if (entity_url2 is not None and url1.get('entity') == entity_url2)\
+ or compare_urls(urlparse(url1.get('url', '')), parsed_url2):
unique_url = False
break
if unique_url:
@@ -86,18 +103,22 @@ def merge_two_infoboxes(infobox1, infobox2):
infobox1['img_src'] = img2
if 'attributes' in infobox2:
- attributes1 = infobox1.get('attributes', None)
+ attributes1 = infobox1.get('attributes')
if attributes1 is None:
- attributes1 = []
- infobox1['attributes'] = attributes1
+ infobox1['attributes'] = attributes1 = []
attributeSet = set()
- for attribute in infobox1.get('attributes', []):
- if attribute.get('label', None) not in attributeSet:
- attributeSet.add(attribute.get('label', None))
+ for attribute in attributes1:
+ label = attribute.get('label')
+ if label not in attributeSet:
+ attributeSet.add(label)
+ entity = attribute.get('entity')
+ if entity not in attributeSet:
+ attributeSet.add(entity)
for attribute in infobox2.get('attributes', []):
- if attribute.get('label', None) not in attributeSet:
+ if attribute.get('label') not in attributeSet\
+ and attribute.get('entity') not in attributeSet:
attributes1.append(attribute)
if 'content' in infobox2:
@@ -110,84 +131,95 @@ def merge_two_infoboxes(infobox1, infobox2):
infobox1['content'] = content2
-def result_score(result):
+def result_score(result, language):
weight = 1.0
for result_engine in result['engines']:
if hasattr(engines[result_engine], 'weight'):
weight *= float(engines[result_engine].weight)
+ if settings['search'].get('prefer_configured_language', False):
+ domain_parts = result['parsed_url'].netloc.split('.')
+ if language in domain_parts:
+ weight *= 1.1
+
occurences = len(result['positions'])
return sum((occurences * weight) / position for position in result['positions'])
-class ResultContainer(object):
+class ResultContainer:
"""docstring for ResultContainer"""
- def __init__(self):
- super(ResultContainer, self).__init__()
- self.results = defaultdict(list)
+ __slots__ = '_merged_results', 'infoboxes', 'suggestions', 'answers', 'corrections', '_number_of_results',\
+ '_ordered', 'paging', 'unresponsive_engines', 'timings', 'redirect_url', 'engine_data',\
+ '_language'
+
+ def __init__(self, language):
+ super().__init__()
self._merged_results = []
self.infoboxes = []
self.suggestions = set()
- self.answers = set()
+ self.answers = {}
self.corrections = set()
self._number_of_results = []
+ self.engine_data = defaultdict(dict)
self._ordered = False
self.paging = False
self.unresponsive_engines = set()
self.timings = []
+ self.redirect_url = None
+ self._language = language.lower().split('-')[0]
def extend(self, engine_name, results):
+ standard_result_count = 0
+ error_msgs = set()
for result in list(results):
result['engine'] = engine_name
if 'suggestion' in result:
self.suggestions.add(result['suggestion'])
- results.remove(result)
elif 'answer' in result:
- self.answers.add(result['answer'])
- results.remove(result)
+ self.answers[result['answer']] = result
elif 'correction' in result:
self.corrections.add(result['correction'])
- results.remove(result)
elif 'infobox' in result:
self._merge_infobox(result)
- results.remove(result)
elif 'number_of_results' in result:
self._number_of_results.append(result['number_of_results'])
- results.remove(result)
+ elif 'engine_data' in result:
+ self.engine_data[engine_name][result['key']] = result['engine_data']
+ else:
+ # standard result (url, title, content)
+ if 'url' in result and not isinstance(result['url'], str):
+ logger.debug('result: invalid URL: %s', str(result))
+ error_msgs.add('invalid URL')
+ elif 'title' in result and not isinstance(result['title'], str):
+ logger.debug('result: invalid title: %s', str(result))
+ error_msgs.add('invalid title')
+ elif 'content' in result and not isinstance(result['content'], str):
+ logger.debug('result: invalid content: %s', str(result))
+ error_msgs.add('invalid content')
+ else:
+ self._merge_result(result, standard_result_count + 1)
+ standard_result_count += 1
+
+ if len(error_msgs) > 0:
+ for msg in error_msgs:
+ record_error(engine_name, 'some results are invalids: ' + msg)
if engine_name in engines:
with RLock():
engines[engine_name].stats['search_count'] += 1
- engines[engine_name].stats['result_count'] += len(results)
-
- if not results:
- return
-
- self.results[engine_name].extend(results)
+ engines[engine_name].stats['result_count'] += standard_result_count
- if not self.paging and engine_name in engines and engines[engine_name].paging:
+ if not self.paging and standard_result_count > 0 and engine_name in engines\
+ and engines[engine_name].paging:
self.paging = True
- for i, result in enumerate(results):
- if 'url' in result and not isinstance(result['url'], basestring):
- continue
- try:
- result['url'] = result['url'].decode('utf-8')
- except:
- pass
- if 'title' in result and not isinstance(result['title'], basestring):
- continue
- if 'content' in result and not isinstance(result['content'], basestring):
- continue
- position = i + 1
- self._merge_result(result, position)
-
def _merge_infobox(self, infobox):
add_infobox = True
infobox_id = infobox.get('id', None)
+ infobox['engines'] = set([infobox['engine']])
if infobox_id is not None:
parsed_url_infobox_id = urlparse(infobox_id)
for existingIndex in self.infoboxes:
@@ -209,10 +241,15 @@ class ResultContainer(object):
result['parsed_url'] = urlparse(result['url'])
# if the result has no scheme, use http as default
- if not result['parsed_url'].scheme:
- result['parsed_url'] = result['parsed_url']._replace(scheme="http")
+ if not result['parsed_url'].scheme or result['parsed_url'].scheme == '':
+ result['parsed_url'] = result['parsed_url']._replace(scheme='http')
result['url'] = result['parsed_url'].geturl()
+ if 'thumbnail_src' in result:
+ result['thumbnail_src'] = add_scheme_to_url(result['thumbnail_src'])
+ if 'img_src' in result:
+ result['img_src'] = add_scheme_to_url(result['img_src'])
+
result['engines'] = set([result['engine']])
# strip multiple spaces and cariage returns from content
@@ -276,7 +313,7 @@ class ResultContainer(object):
def order_results(self):
for result in self._merged_results:
- score = result_score(result)
+ score = result_score(result, self._language)
result['score'] = score
with RLock():
for result_engine in result['engines']:
@@ -288,12 +325,13 @@ class ResultContainer(object):
gresults = []
categoryPositions = {}
- for i, res in enumerate(results):
+ for res in results:
# FIXME : handle more than one category per engine
- res['category'] = engines[res['engine']].categories[0]
+ engine = engines[res['engine']]
+ res['category'] = engine.categories[0] if len(engine.categories) > 0 else ''
# FIXME : handle more than one category per engine
- category = engines[res['engine']].categories[0]\
+ category = res['category']\
+ ':' + res.get('template', '')\
+ ':' + ('img_src' if 'img_src' in res or 'thumbnail' in res else '')
@@ -345,8 +383,9 @@ class ResultContainer(object):
return 0
return resultnum_sum / len(self._number_of_results)
- def add_unresponsive_engine(self, engine_error):
- self.unresponsive_engines.add(engine_error)
+ def add_unresponsive_engine(self, engine_name, error_type, error_message=None):
+ if engines[engine_name].display_error_messages:
+ self.unresponsive_engines.add((engine_name, error_type, error_message))
def add_timing(self, engine_name, engine_time, page_load_time):
self.timings.append({
diff --git a/searx/search.py b/searx/search.py
deleted file mode 100644
index 5c268cc..0000000
--- a/searx/search.py
+++ /dev/null
@@ -1,547 +0,0 @@
-'''
-searx is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-searx is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with searx. If not, see < http://www.gnu.org/licenses/ >.
-
-(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
-'''
-
-import gc
-import sys
-import threading
-from time import time
-from uuid import uuid4
-from flask_babel import gettext
-import requests.exceptions
-import searx.poolrequests as requests_lib
-from searx.engines import (
- categories, engines, settings
-)
-from searx.answerers import ask
-from searx.utils import gen_useragent
-from searx.query import RawTextQuery, SearchQuery, VALID_LANGUAGE_CODE
-from searx.results import ResultContainer
-from searx import logger
-from searx.plugins import plugins
-from searx.exceptions import SearxParameterException
-
-try:
- from thread import start_new_thread
-except:
- from _thread import start_new_thread
-
-if sys.version_info[0] == 3:
- unicode = str
-
-logger = logger.getChild('search')
-
-number_of_searches = 0
-max_request_timeout = settings.get('outgoing', {}).get('max_request_timeout' or None)
-if max_request_timeout is None:
- logger.info('max_request_timeout={0}'.format(max_request_timeout))
-else:
- if isinstance(max_request_timeout, float):
- logger.info('max_request_timeout={0} second(s)'.format(max_request_timeout))
- else:
- logger.critical('outgoing.max_request_timeout if defined has to be float')
- from sys import exit
- exit(1)
-
-
-def send_http_request(engine, request_params):
- # create dictionary which contain all
- # informations about the request
- request_args = dict(
- headers=request_params['headers'],
- cookies=request_params['cookies'],
- verify=request_params['verify']
- )
-
- # specific type of request (GET or POST)
- if request_params['method'] == 'GET':
- req = requests_lib.get
- else:
- req = requests_lib.post
- request_args['data'] = request_params['data']
-
- # send the request
- return req(request_params['url'], **request_args)
-
-
-def search_one_http_request(engine, query, request_params):
- # update request parameters dependent on
- # search-engine (contained in engines folder)
- engine.request(query, request_params)
-
- # ignoring empty urls
- if request_params['url'] is None:
- return None
-
- if not request_params['url']:
- return None
-
- # send request
- response = send_http_request(engine, request_params)
-
- # parse the response
- response.search_params = request_params
- return engine.response(response)
-
-
-def search_one_offline_request(engine, query, request_params):
- return engine.search(query, request_params)
-
-
-def search_one_request_safe(engine_name, query, request_params, result_container, start_time, timeout_limit):
- if engines[engine_name].offline:
- return search_one_offline_request_safe(engine_name, query, request_params, result_container, start_time, timeout_limit) # noqa
- return search_one_http_request_safe(engine_name, query, request_params, result_container, start_time, timeout_limit)
-
-
-def search_one_offline_request_safe(engine_name, query, request_params, result_container, start_time, timeout_limit):
- engine = engines[engine_name]
-
- try:
- search_results = search_one_offline_request(engine, query, request_params)
-
- if search_results:
- result_container.extend(engine_name, search_results)
-
- engine_time = time() - start_time
- result_container.add_timing(engine_name, engine_time, engine_time)
- with threading.RLock():
- engine.stats['engine_time'] += engine_time
- engine.stats['engine_time_count'] += 1
-
- except ValueError as e:
- record_offline_engine_stats_on_error(engine, result_container, start_time)
- logger.exception('engine {0} : invalid input : {1}'.format(engine_name, e))
- except Exception as e:
- record_offline_engine_stats_on_error(engine, result_container, start_time)
-
- result_container.add_unresponsive_engine((
- engine_name,
- u'{0}: {1}'.format(gettext('unexpected crash'), e),
- ))
- logger.exception('engine {0} : exception : {1}'.format(engine_name, e))
-
-
-def record_offline_engine_stats_on_error(engine, result_container, start_time):
- engine_time = time() - start_time
- result_container.add_timing(engine.name, engine_time, engine_time)
-
- with threading.RLock():
- engine.stats['errors'] += 1
-
-
-def search_one_http_request_safe(engine_name, query, request_params, result_container, start_time, timeout_limit):
- # set timeout for all HTTP requests
- requests_lib.set_timeout_for_thread(timeout_limit, start_time=start_time)
- # reset the HTTP total time
- requests_lib.reset_time_for_thread()
-
- #
- engine = engines[engine_name]
-
- # suppose everything will be alright
- requests_exception = False
-
- try:
- # send requests and parse the results
- search_results = search_one_http_request(engine, query, request_params)
-
- # check if the engine accepted the request
- if search_results is not None:
- # yes, so add results
- result_container.extend(engine_name, search_results)
-
- # update engine time when there is no exception
- engine_time = time() - start_time
- page_load_time = requests_lib.get_time_for_thread()
- result_container.add_timing(engine_name, engine_time, page_load_time)
- with threading.RLock():
- engine.stats['engine_time'] += engine_time
- engine.stats['engine_time_count'] += 1
- # update stats with the total HTTP time
- engine.stats['page_load_time'] += page_load_time
- engine.stats['page_load_count'] += 1
-
- except Exception as e:
- # Timing
- engine_time = time() - start_time
- page_load_time = requests_lib.get_time_for_thread()
- result_container.add_timing(engine_name, engine_time, page_load_time)
-
- # Record the errors
- with threading.RLock():
- engine.stats['errors'] += 1
-
- if (issubclass(e.__class__, requests.exceptions.Timeout)):
- result_container.add_unresponsive_engine((engine_name, gettext('timeout')))
- # requests timeout (connect or read)
- logger.error("engine {0} : HTTP requests timeout"
- "(search duration : {1} s, timeout: {2} s) : {3}"
- .format(engine_name, engine_time, timeout_limit, e.__class__.__name__))
- requests_exception = True
- elif (issubclass(e.__class__, requests.exceptions.RequestException)):
- result_container.add_unresponsive_engine((engine_name, gettext('request exception')))
- # other requests exception
- logger.exception("engine {0} : requests exception"
- "(search duration : {1} s, timeout: {2} s) : {3}"
- .format(engine_name, engine_time, timeout_limit, e))
- requests_exception = True
- else:
- result_container.add_unresponsive_engine((
- engine_name,
- u'{0}: {1}'.format(gettext('unexpected crash'), e),
- ))
- # others errors
- logger.exception('engine {0} : exception : {1}'.format(engine_name, e))
-
- # suspend or not the engine if there are HTTP errors
- with threading.RLock():
- if requests_exception:
- # update continuous_errors / suspend_end_time
- engine.continuous_errors += 1
- engine.suspend_end_time = time() + min(settings['search']['max_ban_time_on_fail'],
- engine.continuous_errors * settings['search']['ban_time_on_fail'])
- else:
- # no HTTP error (perhaps an engine error)
- # anyway, reset the suspend variables
- engine.continuous_errors = 0
- engine.suspend_end_time = 0
-
-
-def search_multiple_requests(requests, result_container, start_time, timeout_limit):
- search_id = uuid4().__str__()
-
- for engine_name, query, request_params in requests:
- th = threading.Thread(
- target=search_one_request_safe,
- args=(engine_name, query, request_params, result_container, start_time, timeout_limit),
- name=search_id,
- )
- th._engine_name = engine_name
- th.start()
-
- for th in threading.enumerate():
- if th.name == search_id:
- remaining_time = max(0.0, timeout_limit - (time() - start_time))
- th.join(remaining_time)
- if th.isAlive():
- result_container.add_unresponsive_engine((th._engine_name, gettext('timeout')))
- logger.warning('engine timeout: {0}'.format(th._engine_name))
-
-
-# get default reqest parameter
-def default_request_params():
- return {
- 'method': 'GET',
- 'headers': {},
- 'data': {},
- 'url': '',
- 'cookies': {},
- 'verify': True
- }
-
-
-# remove duplicate queries.
-# FIXME: does not fix "!music !soundcloud", because the categories are 'none' and 'music'
-def deduplicate_query_engines(query_engines):
- uniq_query_engines = {q["category"] + '|' + q["name"]: q for q in query_engines}
- return uniq_query_engines.values()
-
-
-def get_search_query_from_webapp(preferences, form):
- # no text for the query ?
- if not form.get('q'):
- raise SearxParameterException('q', '')
-
- # set blocked engines
- disabled_engines = preferences.engines.get_disabled()
-
- # parse query, if tags are set, which change
- # the serch engine or search-language
- raw_text_query = RawTextQuery(form['q'], disabled_engines)
- raw_text_query.parse_query()
-
- # set query
- query = raw_text_query.getSearchQuery()
-
- # get and check page number
- pageno_param = form.get('pageno', '1')
- if not pageno_param.isdigit() or int(pageno_param) < 1:
- raise SearxParameterException('pageno', pageno_param)
- query_pageno = int(pageno_param)
-
- # get language
- # set specific language if set on request, query or preferences
- # TODO support search with multible languages
- if len(raw_text_query.languages):
- query_lang = raw_text_query.languages[-1]
- elif 'language' in form:
- query_lang = form.get('language')
- else:
- query_lang = preferences.get_value('language')
-
- # check language
- if not VALID_LANGUAGE_CODE.match(query_lang):
- raise SearxParameterException('language', query_lang)
-
- # get safesearch
- if 'safesearch' in form:
- query_safesearch = form.get('safesearch')
- # first check safesearch
- if not query_safesearch.isdigit():
- raise SearxParameterException('safesearch', query_safesearch)
- query_safesearch = int(query_safesearch)
- else:
- query_safesearch = preferences.get_value('safesearch')
-
- # safesearch : second check
- if query_safesearch < 0 or query_safesearch > 2:
- raise SearxParameterException('safesearch', query_safesearch)
-
- # get time_range
- query_time_range = form.get('time_range')
-
- # check time_range
- if query_time_range not in ('None', None, '', 'day', 'week', 'month', 'year'):
- raise SearxParameterException('time_range', query_time_range)
-
- # query_engines
- query_engines = raw_text_query.engines
-
- # timeout_limit
- query_timeout = raw_text_query.timeout_limit
- if query_timeout is None and 'timeout_limit' in form:
- raw_time_limit = form.get('timeout_limit')
- if raw_time_limit in ['None', '']:
- raw_time_limit = None
- else:
- try:
- query_timeout = float(raw_time_limit)
- except ValueError:
- raise SearxParameterException('timeout_limit', raw_time_limit)
-
- # query_categories
- query_categories = []
-
- # if engines are calculated from query,
- # set categories by using that informations
- if query_engines and raw_text_query.specific:
- additional_categories = set()
- for engine in query_engines:
- if 'from_bang' in engine and engine['from_bang']:
- additional_categories.add('none')
- else:
- additional_categories.add(engine['category'])
- query_categories = list(additional_categories)
-
- # otherwise, using defined categories to
- # calculate which engines should be used
- else:
- # set categories/engines
- load_default_categories = True
- for pd_name, pd in form.items():
- if pd_name == 'categories':
- query_categories.extend(categ for categ in map(unicode.strip, pd.split(',')) if categ in categories)
- elif pd_name == 'engines':
- pd_engines = [{'category': engines[engine].categories[0],
- 'name': engine}
- for engine in map(unicode.strip, pd.split(',')) if engine in engines]
- if pd_engines:
- query_engines.extend(pd_engines)
- load_default_categories = False
- elif pd_name.startswith('category_'):
- category = pd_name[9:]
-
- # if category is not found in list, skip
- if category not in categories:
- continue
-
- if pd != 'off':
- # add category to list
- query_categories.append(category)
- elif category in query_categories:
- # remove category from list if property is set to 'off'
- query_categories.remove(category)
-
- if not load_default_categories:
- if not query_categories:
- query_categories = list(set(engine['category']
- for engine in query_engines))
- else:
- # if no category is specified for this search,
- # using user-defined default-configuration which
- # (is stored in cookie)
- if not query_categories:
- cookie_categories = preferences.get_value('categories')
- for ccateg in cookie_categories:
- if ccateg in categories:
- query_categories.append(ccateg)
-
- # if still no category is specified, using general
- # as default-category
- if not query_categories:
- query_categories = ['general']
-
- # using all engines for that search, which are
- # declared under the specific categories
- for categ in query_categories:
- query_engines.extend({'category': categ,
- 'name': engine.name}
- for engine in categories[categ]
- if (engine.name, categ) not in disabled_engines)
-
- query_engines = deduplicate_query_engines(query_engines)
-
- return (SearchQuery(query, query_engines, query_categories,
- query_lang, query_safesearch, query_pageno,
- query_time_range, query_timeout),
- raw_text_query)
-
-
-class Search(object):
-
- """Search information container"""
-
- def __init__(self, search_query):
- # init vars
- super(Search, self).__init__()
- self.search_query = search_query
- self.result_container = ResultContainer()
- self.actual_timeout = None
-
- # do search-request
- def search(self):
- global number_of_searches
-
- # start time
- start_time = time()
-
- # answeres ?
- answerers_results = ask(self.search_query)
-
- if answerers_results:
- for results in answerers_results:
- self.result_container.extend('answer', results)
- return self.result_container
-
- # init vars
- requests = []
-
- # increase number of searches
- number_of_searches += 1
-
- # set default useragent
- # user_agent = request.headers.get('User-Agent', '')
- user_agent = gen_useragent()
-
- search_query = self.search_query
-
- # max of all selected engine timeout
- default_timeout = 0
-
- # start search-reqest for all selected engines
- for selected_engine in search_query.engines:
- if selected_engine['name'] not in engines:
- continue
-
- engine = engines[selected_engine['name']]
-
- # skip suspended engines
- if engine.suspend_end_time >= time():
- logger.debug('Engine currently suspended: %s', selected_engine['name'])
- continue
-
- # if paging is not supported, skip
- if search_query.pageno > 1 and not engine.paging:
- continue
-
- # if time_range is not supported, skip
- if search_query.time_range and not engine.time_range_support:
- continue
-
- # set default request parameters
- request_params = {}
- if not engine.offline:
- request_params = default_request_params()
- request_params['headers']['User-Agent'] = user_agent
-
- if hasattr(engine, 'language') and engine.language:
- request_params['language'] = engine.language
- else:
- request_params['language'] = search_query.lang
-
- request_params['safesearch'] = search_query.safesearch
- request_params['time_range'] = search_query.time_range
-
- request_params['category'] = selected_engine['category']
- request_params['pageno'] = search_query.pageno
-
- # append request to list
- requests.append((selected_engine['name'], search_query.query, request_params))
-
- # update default_timeout
- default_timeout = max(default_timeout, engine.timeout)
-
- # adjust timeout
- self.actual_timeout = default_timeout
- query_timeout = self.search_query.timeout_limit
-
- if max_request_timeout is None and query_timeout is None:
- # No max, no user query: default_timeout
- pass
- elif max_request_timeout is None and query_timeout is not None:
- # No max, but user query: From user query except if above default
- self.actual_timeout = min(default_timeout, query_timeout)
- elif max_request_timeout is not None and query_timeout is None:
- # Max, no user query: Default except if above max
- self.actual_timeout = min(default_timeout, max_request_timeout)
- elif max_request_timeout is not None and query_timeout is not None:
- # Max & user query: From user query except if above max
- self.actual_timeout = min(query_timeout, max_request_timeout)
-
- logger.debug("actual_timeout={0} (default_timeout={1}, ?timeout_limit={2}, max_request_timeout={3})"
- .format(self.actual_timeout, default_timeout, query_timeout, max_request_timeout))
-
- # send all search-request
- if requests:
- search_multiple_requests(requests, self.result_container, start_time, self.actual_timeout)
- start_new_thread(gc.collect, tuple())
-
- # return results, suggestions, answers and infoboxes
- return self.result_container
-
-
-class SearchWithPlugins(Search):
-
- """Similar to the Search class but call the plugins."""
-
- def __init__(self, search_query, ordered_plugin_list, request):
- super(SearchWithPlugins, self).__init__(search_query)
- self.ordered_plugin_list = ordered_plugin_list
- self.request = request
-
- def search(self):
- if plugins.call(self.ordered_plugin_list, 'pre_search', self.request, self):
- super(SearchWithPlugins, self).search()
-
- plugins.call(self.ordered_plugin_list, 'post_search', self.request, self)
-
- results = self.result_container.get_ordered_results()
-
- for result in results:
- plugins.call(self.ordered_plugin_list, 'on_result', self.request, self, result)
-
- return self.result_container
diff --git a/searx/search/__init__.py b/searx/search/__init__.py
new file mode 100644
index 0000000..45d1cb1
--- /dev/null
+++ b/searx/search/__init__.py
@@ -0,0 +1,213 @@
+'''
+searx is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+searx is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with searx. If not, see < http://www.gnu.org/licenses/ >.
+
+(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
+'''
+
+import typing
+import gc
+import threading
+from time import time
+from uuid import uuid4
+from _thread import start_new_thread
+
+from searx import settings
+from searx.answerers import ask
+from searx.external_bang import get_bang_url
+from searx.results import ResultContainer
+from searx import logger
+from searx.plugins import plugins
+from searx.search.models import EngineRef, SearchQuery
+from searx.search.processors import processors, initialize as initialize_processors
+from searx.search.checker import initialize as initialize_checker
+
+
+logger = logger.getChild('search')
+
+max_request_timeout = settings.get('outgoing', {}).get('max_request_timeout' or None)
+if max_request_timeout is None:
+ logger.info('max_request_timeout={0}'.format(max_request_timeout))
+else:
+ if isinstance(max_request_timeout, float):
+ logger.info('max_request_timeout={0} second(s)'.format(max_request_timeout))
+ else:
+ logger.critical('outgoing.max_request_timeout if defined has to be float')
+ import sys
+ sys.exit(1)
+
+
+def initialize(settings_engines=None, enable_checker=False):
+ settings_engines = settings_engines or settings['engines']
+ initialize_processors(settings_engines)
+ if enable_checker:
+ initialize_checker()
+
+
+class Search:
+ """Search information container"""
+
+ __slots__ = "search_query", "result_container", "start_time", "actual_timeout"
+
+ def __init__(self, search_query):
+ # init vars
+ super().__init__()
+ self.search_query = search_query
+ self.result_container = ResultContainer(search_query.lang)
+ self.start_time = None
+ self.actual_timeout = None
+
+ def search_external_bang(self):
+ """
+ Check if there is a external bang.
+ If yes, update self.result_container and return True
+ """
+ if self.search_query.external_bang:
+ self.result_container.redirect_url = get_bang_url(self.search_query)
+
+ # This means there was a valid bang and the
+ # rest of the search does not need to be continued
+ if isinstance(self.result_container.redirect_url, str):
+ return True
+ return False
+
+ def search_answerers(self):
+ """
+ Check if an answer return a result.
+ If yes, update self.result_container and return True
+ """
+ answerers_results = ask(self.search_query)
+
+ if answerers_results:
+ for results in answerers_results:
+ self.result_container.extend('answer', results)
+ return True
+ return False
+
+ # do search-request
+ def _get_requests(self):
+ # init vars
+ requests = []
+
+ # max of all selected engine timeout
+ default_timeout = 0
+
+ # start search-reqest for all selected engines
+ for engineref in self.search_query.engineref_list:
+ processor = processors[engineref.name]
+
+ # set default request parameters
+ request_params = processor.get_params(self.search_query, engineref.category)
+ if request_params is None:
+ continue
+
+ with threading.RLock():
+ processor.engine.stats['sent_search_count'] += 1
+
+ # append request to list
+ requests.append((engineref.name, self.search_query.query, request_params))
+
+ # update default_timeout
+ default_timeout = max(default_timeout, processor.engine.timeout)
+
+ # adjust timeout
+ actual_timeout = default_timeout
+ query_timeout = self.search_query.timeout_limit
+
+ if max_request_timeout is None and query_timeout is None:
+ # No max, no user query: default_timeout
+ pass
+ elif max_request_timeout is None and query_timeout is not None:
+ # No max, but user query: From user query except if above default
+ actual_timeout = min(default_timeout, query_timeout)
+ elif max_request_timeout is not None and query_timeout is None:
+ # Max, no user query: Default except if above max
+ actual_timeout = min(default_timeout, max_request_timeout)
+ elif max_request_timeout is not None and query_timeout is not None:
+ # Max & user query: From user query except if above max
+ actual_timeout = min(query_timeout, max_request_timeout)
+
+ logger.debug("actual_timeout={0} (default_timeout={1}, ?timeout_limit={2}, max_request_timeout={3})"
+ .format(actual_timeout, default_timeout, query_timeout, max_request_timeout))
+
+ return requests, actual_timeout
+
+ def search_multiple_requests(self, requests):
+ search_id = uuid4().__str__()
+
+ for engine_name, query, request_params in requests:
+ th = threading.Thread(
+ target=processors[engine_name].search,
+ args=(query, request_params, self.result_container, self.start_time, self.actual_timeout),
+ name=search_id,
+ )
+ th._timeout = False
+ th._engine_name = engine_name
+ th.start()
+
+ for th in threading.enumerate():
+ if th.name == search_id:
+ remaining_time = max(0.0, self.actual_timeout - (time() - self.start_time))
+ th.join(remaining_time)
+ if th.is_alive():
+ th._timeout = True
+ self.result_container.add_unresponsive_engine(th._engine_name, 'timeout')
+ logger.warning('engine timeout: {0}'.format(th._engine_name))
+
+ def search_standard(self):
+ """
+ Update self.result_container, self.actual_timeout
+ """
+ requests, self.actual_timeout = self._get_requests()
+
+ # send all search-request
+ if requests:
+ self.search_multiple_requests(requests)
+ start_new_thread(gc.collect, tuple())
+
+ # return results, suggestions, answers and infoboxes
+ return True
+
+ # do search-request
+ def search(self):
+ self.start_time = time()
+
+ if not self.search_external_bang():
+ if not self.search_answerers():
+ self.search_standard()
+
+ return self.result_container
+
+
+class SearchWithPlugins(Search):
+ """Similar to the Search class but call the plugins."""
+
+ __slots__ = 'ordered_plugin_list', 'request'
+
+ def __init__(self, search_query, ordered_plugin_list, request):
+ super().__init__(search_query)
+ self.ordered_plugin_list = ordered_plugin_list
+ self.request = request
+
+ def search(self):
+ if plugins.call(self.ordered_plugin_list, 'pre_search', self.request, self):
+ super().search()
+
+ plugins.call(self.ordered_plugin_list, 'post_search', self.request, self)
+
+ results = self.result_container.get_ordered_results()
+
+ for result in results:
+ plugins.call(self.ordered_plugin_list, 'on_result', self.request, self, result)
+
+ return self.result_container
diff --git a/searx/search/checker/__init__.py b/searx/search/checker/__init__.py
new file mode 100644
index 0000000..85b9178
--- /dev/null
+++ b/searx/search/checker/__init__.py
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+from .impl import Checker
+from .background import initialize, get_result
diff --git a/searx/search/checker/__main__.py b/searx/search/checker/__main__.py
new file mode 100644
index 0000000..0d7d1b8
--- /dev/null
+++ b/searx/search/checker/__main__.py
@@ -0,0 +1,95 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+import sys
+import io
+import os
+import argparse
+import logging
+
+import searx.search
+import searx.search.checker
+from searx.search import processors
+from searx.engines import engine_shortcuts
+
+
+# configure logging
+root = logging.getLogger()
+handler = logging.StreamHandler(sys.stdout)
+for h in root.handlers:
+ root.removeHandler(h)
+root.addHandler(handler)
+
+# color only for a valid terminal
+if sys.stdout.isatty() and os.environ.get('TERM') not in ['dumb', 'unknown']:
+ RESET_SEQ = "\033[0m"
+ COLOR_SEQ = "\033[1;%dm"
+ BOLD_SEQ = "\033[1m"
+ BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = map(lambda i: COLOR_SEQ % (30 + i), range(8))
+else:
+ RESET_SEQ = ""
+ COLOR_SEQ = ""
+ BOLD_SEQ = ""
+ BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = "", "", "", "", "", "", "", ""
+
+# equivalent of 'python -u' (unbuffered stdout, stderr)
+stdout = io.TextIOWrapper(open(sys.stdout.fileno(), 'wb', 0), write_through=True)
+stderr = io.TextIOWrapper(open(sys.stderr.fileno(), 'wb', 0), write_through=True)
+
+
+# iterator of processors
+def iter_processor(engine_name_list):
+ if len(engine_name_list) > 0:
+ for name in engine_name_list:
+ name = engine_shortcuts.get(name, name)
+ processor = processors.get(name)
+ if processor is not None:
+ yield name, processor
+ else:
+ stdout.write(f'{BOLD_SEQ}Engine {name:30}{RESET_SEQ}{RED}Engine does not exist{RESET_SEQ}')
+ else:
+ for name, processor in searx.search.processors.items():
+ yield name, processor
+
+
+# actual check & display
+def run(engine_name_list, verbose):
+ searx.search.initialize()
+ for name, processor in iter_processor(engine_name_list):
+ stdout.write(f'{BOLD_SEQ}Engine {name:30}{RESET_SEQ}Checking\n')
+ if not sys.stdout.isatty():
+ stderr.write(f'{BOLD_SEQ}Engine {name:30}{RESET_SEQ}Checking\n')
+ checker = searx.search.checker.Checker(processor)
+ checker.run()
+ if checker.test_results.succesfull:
+ stdout.write(f'{BOLD_SEQ}Engine {name:30}{RESET_SEQ}{GREEN}OK{RESET_SEQ}\n')
+ if verbose:
+ stdout.write(f' {"found languages":15}: {" ".join(sorted(list(checker.test_results.languages)))}\n')
+ else:
+ stdout.write(f'{BOLD_SEQ}Engine {name:30}{RESET_SEQ}{RESET_SEQ}{RED}Error{RESET_SEQ}')
+ if not verbose:
+ errors = [test_name + ': ' + error for test_name, error in checker.test_results]
+ stdout.write(f'{RED}Error {str(errors)}{RESET_SEQ}\n')
+ else:
+ stdout.write('\n')
+ stdout.write(f' {"found languages":15}: {" ".join(sorted(list(checker.test_results.languages)))}\n')
+ for test_name, logs in checker.test_results.logs.items():
+ for log in logs:
+ log = map(lambda l: l if isinstance(l, str) else repr(l), log)
+ stdout.write(f' {test_name:15}: {RED}{" ".join(log)}{RESET_SEQ}\n')
+
+
+# call by setup.py
+def main():
+ parser = argparse.ArgumentParser(description='Check searx engines.')
+ parser.add_argument('engine_name_list', metavar='engine name', type=str, nargs='*',
+ help='engines name or shortcut list. Empty for all engines.')
+ parser.add_argument('--verbose', '-v',
+ action='store_true', dest='verbose',
+ help='Display details about the test results',
+ default=False)
+ args = parser.parse_args()
+ run(args.engine_name_list, args.verbose)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/searx/search/checker/background.py b/searx/search/checker/background.py
new file mode 100644
index 0000000..c3292d9
--- /dev/null
+++ b/searx/search/checker/background.py
@@ -0,0 +1,125 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+import json
+import random
+import time
+import threading
+import os
+import signal
+
+from searx import logger, settings, searx_debug
+from searx.exceptions import SearxSettingsException
+from searx.search.processors import processors
+from searx.search.checker import Checker
+from searx.shared import schedule, storage
+
+
+CHECKER_RESULT = 'CHECKER_RESULT'
+running = threading.Lock()
+
+
+def _get_interval(every, error_msg):
+ if isinstance(every, int):
+ every = (every, every)
+ if not isinstance(every, (tuple, list))\
+ or len(every) != 2\
+ or not isinstance(every[0], int)\
+ or not isinstance(every[1], int):
+ raise SearxSettingsException(error_msg, None)
+ return every
+
+
+def _get_every():
+ every = settings.get('checker', {}).get('scheduling', {}).get('every', (300, 1800))
+ return _get_interval(every, 'checker.scheduling.every is not a int or list')
+
+
+def get_result():
+ serialized_result = storage.get_str(CHECKER_RESULT)
+ if serialized_result is not None:
+ return json.loads(serialized_result)
+
+
+def _set_result(result, include_timestamp=True):
+ if include_timestamp:
+ result['timestamp'] = int(time.time() / 3600) * 3600
+ storage.set_str(CHECKER_RESULT, json.dumps(result))
+
+
+def run():
+ if not running.acquire(blocking=False):
+ return
+ try:
+ logger.info('Starting checker')
+ result = {
+ 'status': 'ok',
+ 'engines': {}
+ }
+ for name, processor in processors.items():
+ logger.debug('Checking %s engine', name)
+ checker = Checker(processor)
+ checker.run()
+ if checker.test_results.succesfull:
+ result['engines'][name] = {'success': True}
+ else:
+ result['engines'][name] = {'success': False, 'errors': checker.test_results.errors}
+
+ _set_result(result)
+ logger.info('Check done')
+ except Exception:
+ _set_result({'status': 'error'})
+ logger.exception('Error while running the checker')
+ finally:
+ running.release()
+
+
+def _run_with_delay():
+ every = _get_every()
+ delay = random.randint(0, every[1] - every[0])
+ logger.debug('Start checker in %i seconds', delay)
+ time.sleep(delay)
+ run()
+
+
+def _start_scheduling():
+ every = _get_every()
+ if schedule(every[0], _run_with_delay):
+ run()
+
+
+def _signal_handler(signum, frame):
+ t = threading.Thread(target=run)
+ t.daemon = True
+ t.start()
+
+
+def initialize():
+ if hasattr(signal, 'SIGUSR1'):
+ # Windows doesn't support SIGUSR1
+ logger.info('Send SIGUSR1 signal to pid %i to start the checker', os.getpid())
+ signal.signal(signal.SIGUSR1, _signal_handler)
+
+ # disabled by default
+ _set_result({'status': 'disabled'}, include_timestamp=False)
+
+ # special case when debug is activate
+ if searx_debug and settings.get('checker', {}).get('off_when_debug', True):
+ logger.info('debug mode: checker is disabled')
+ return
+
+ # check value of checker.scheduling.every now
+ scheduling = settings.get('checker', {}).get('scheduling', None)
+ if scheduling is None or not scheduling:
+ logger.info('Checker scheduler is disabled')
+ return
+
+ #
+ _set_result({'status': 'unknown'}, include_timestamp=False)
+
+ start_after = scheduling.get('start_after', (300, 1800))
+ start_after = _get_interval(start_after, 'checker.scheduling.start_after is not a int or list')
+ delay = random.randint(start_after[0], start_after[1])
+ logger.info('Start checker in %i seconds', delay)
+ t = threading.Timer(delay, _start_scheduling)
+ t.daemon = True
+ t.start()
diff --git a/searx/search/checker/impl.py b/searx/search/checker/impl.py
new file mode 100644
index 0000000..ad45440
--- /dev/null
+++ b/searx/search/checker/impl.py
@@ -0,0 +1,416 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+import typing
+import types
+import functools
+import itertools
+import threading
+from time import time
+from urllib.parse import urlparse
+
+import re
+from langdetect import detect_langs
+from langdetect.lang_detect_exception import LangDetectException
+import requests.exceptions
+
+from searx import poolrequests, logger
+from searx.results import ResultContainer
+from searx.search.models import SearchQuery, EngineRef
+from searx.search.processors import EngineProcessor
+
+
+logger = logger.getChild('searx.search.checker')
+
+HTML_TAGS = [
+ 'embed', 'iframe', 'object', 'param', 'picture', 'source', 'svg', 'math', 'canvas', 'noscript', 'script',
+ 'del', 'ins', 'area', 'audio', 'img', 'map', 'track', 'video', 'a', 'abbr', 'b', 'bdi', 'bdo', 'br', 'cite',
+ 'code', 'data', 'dfn', 'em', 'i', 'kdb', 'mark', 'q', 'rb', 'rp', 'rt', 'rtc', 'ruby', 's', 'samp', 'small',
+ 'span', 'strong', 'sub', 'sup', 'time', 'u', 'var', 'wbr', 'style', 'blockquote', 'dd', 'div', 'dl', 'dt',
+ 'figcaption', 'figure', 'hr', 'li', 'ol', 'p', 'pre', 'ul', 'button', 'datalist', 'fieldset', 'form', 'input',
+ 'label', 'legend', 'meter', 'optgroup', 'option', 'output', 'progress', 'select', 'textarea', 'applet',
+ 'frame', 'frameset'
+]
+
+
+def get_check_no_html():
+ rep = ['<' + tag + '[^\>]*>' for tag in HTML_TAGS]
+ rep += ['</' + tag + '>' for tag in HTML_TAGS]
+ pattern = re.compile('|'.join(rep))
+
+ def f(text):
+ return pattern.search(text.lower()) is None
+
+ return f
+
+
+_check_no_html = get_check_no_html()
+
+
+def _is_url(url):
+ try:
+ result = urlparse(url)
+ except ValueError:
+ return False
+ if result.scheme not in ('http', 'https'):
+ return False
+ return True
+
+
+@functools.lru_cache(maxsize=8192)
+def _is_url_image(image_url):
+ if not isinstance(image_url, str):
+ return False
+
+ if image_url.startswith('//'):
+ image_url = 'https:' + image_url
+
+ if image_url.startswith('data:'):
+ return image_url.startswith('data:image/')
+
+ if not _is_url(image_url):
+ return False
+
+ retry = 2
+
+ while retry > 0:
+ a = time()
+ try:
+ poolrequests.set_timeout_for_thread(10.0, time())
+ r = poolrequests.get(image_url, timeout=10.0, allow_redirects=True, headers={
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0',
+ 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
+ 'Accept-Language': 'en-US;q=0.5,en;q=0.3',
+ 'Accept-Encoding': 'gzip, deflate, br',
+ 'DNT': '1',
+ 'Connection': 'keep-alive',
+ 'Upgrade-Insecure-Requests': '1',
+ 'Sec-GPC': '1',
+ 'Cache-Control': 'max-age=0'
+ })
+ if r.headers["content-type"].startswith('image/'):
+ return True
+ return False
+ except requests.exceptions.Timeout:
+ logger.error('Timeout for %s: %i', image_url, int(time() - a))
+ retry -= 1
+ except requests.exceptions.RequestException:
+ logger.exception('Exception for %s', image_url)
+ return False
+
+
+def _search_query_to_dict(search_query: SearchQuery) -> typing.Dict[str, typing.Any]:
+ return {
+ 'query': search_query.query,
+ 'lang': search_query.lang,
+ 'pageno': search_query.pageno,
+ 'safesearch': search_query.safesearch,
+ 'time_range': search_query.time_range,
+ }
+
+
+def _search_query_diff(sq1: SearchQuery, sq2: SearchQuery)\
+ -> typing.Tuple[typing.Dict[str, typing.Any], typing.Dict[str, typing.Any]]:
+ param1 = _search_query_to_dict(sq1)
+ param2 = _search_query_to_dict(sq2)
+ common = {}
+ diff = {}
+ for k, value1 in param1.items():
+ value2 = param2[k]
+ if value1 == value2:
+ common[k] = value1
+ else:
+ diff[k] = (value1, value2)
+ return (common, diff)
+
+
+class TestResults:
+
+ __slots__ = 'errors', 'logs', 'languages'
+
+ def __init__(self):
+ self.errors: typing.Dict[str, typing.List[str]] = {}
+ self.logs: typing.Dict[str, typing.List[typing.Any]] = {}
+ self.languages: typing.Set[str] = set()
+
+ def add_error(self, test, message, *args):
+ # message to self.errors
+ errors_for_test = self.errors.setdefault(test, [])
+ if message not in errors_for_test:
+ errors_for_test.append(message)
+ # (message, *args) to self.logs
+ logs_for_test = self.logs.setdefault(test, [])
+ if (message, *args) not in logs_for_test:
+ logs_for_test.append((message, *args))
+
+ def add_language(self, language):
+ self.languages.add(language)
+
+ @property
+ def succesfull(self):
+ return len(self.errors) == 0
+
+ def __iter__(self):
+ for test_name, errors in self.errors.items():
+ for error in sorted(errors):
+ yield (test_name, error)
+
+
+class ResultContainerTests:
+
+ __slots__ = 'test_name', 'search_query', 'result_container', 'languages', 'stop_test', 'test_results'
+
+ def __init__(self,
+ test_results: TestResults,
+ test_name: str,
+ search_query: SearchQuery,
+ result_container: ResultContainer):
+ self.test_name = test_name
+ self.search_query = search_query
+ self.result_container = result_container
+ self.languages: typing.Set[str] = set()
+ self.test_results = test_results
+ self.stop_test = False
+
+ @property
+ def result_urls(self):
+ results = self.result_container.get_ordered_results()
+ return [result['url'] for result in results if 'url' in result]
+
+ def _record_error(self, message: str, *args) -> None:
+ sq = _search_query_to_dict(self.search_query)
+ sqstr = ' '.join(['{}={!r}'.format(k, v) for k, v in sq.items()])
+ self.test_results.add_error(self.test_name, message, *args, '(' + sqstr + ')')
+
+ def _add_language(self, text: str) -> typing.Optional[str]:
+ try:
+ r = detect_langs(str(text)) # pylint: disable=E1101
+ except LangDetectException:
+ return None
+
+ if len(r) > 0 and r[0].prob > 0.95:
+ self.languages.add(r[0].lang)
+ self.test_results.add_language(r[0].lang)
+ return None
+
+ def _check_result(self, result):
+ if not _check_no_html(result.get('title', '')):
+ self._record_error('HTML in title', repr(result.get('title', '')))
+ if not _check_no_html(result.get('content', '')):
+ self._record_error('HTML in content', repr(result.get('content', '')))
+ if result.get('url') is None:
+ self._record_error('url is None')
+
+ self._add_language(result.get('title', ''))
+ self._add_language(result.get('content', ''))
+
+ template = result.get('template', 'default.html')
+ if template == 'default.html':
+ return
+ if template == 'code.html':
+ return
+ if template == 'torrent.html':
+ return
+ if template == 'map.html':
+ return
+ if template == 'images.html':
+ thumbnail_src = result.get('thumbnail_src')
+ if thumbnail_src is not None:
+ if not _is_url_image(thumbnail_src):
+ self._record_error('thumbnail_src URL is invalid', thumbnail_src)
+ elif not _is_url_image(result.get('img_src')):
+ self._record_error('img_src URL is invalid', result.get('img_src'))
+ if template == 'videos.html' and not _is_url_image(result.get('thumbnail')):
+ self._record_error('thumbnail URL is invalid', result.get('img_src'))
+
+ def _check_results(self, results: list):
+ for result in results:
+ self._check_result(result)
+
+ def _check_answers(self, answers):
+ for answer in answers:
+ if not _check_no_html(answer):
+ self._record_error('HTML in answer', answer)
+
+ def _check_infoboxes(self, infoboxes):
+ for infobox in infoboxes:
+ if not _check_no_html(infobox.get('content', '')):
+ self._record_error('HTML in infobox content', infobox.get('content', ''))
+ self._add_language(infobox.get('content', ''))
+ for attribute in infobox.get('attributes', {}):
+ if not _check_no_html(attribute.get('value', '')):
+ self._record_error('HTML in infobox attribute value', attribute.get('value', ''))
+
+ def check_basic(self):
+ if len(self.result_container.unresponsive_engines) > 0:
+ for message in self.result_container.unresponsive_engines:
+ self._record_error(message[1] + ' ' + (message[2] or ''))
+ self.stop_test = True
+ return
+
+ results = self.result_container.get_ordered_results()
+ if len(results) > 0:
+ self._check_results(results)
+
+ if len(self.result_container.answers) > 0:
+ self._check_answers(self.result_container.answers)
+
+ if len(self.result_container.infoboxes) > 0:
+ self._check_infoboxes(self.result_container.infoboxes)
+
+ def has_infobox(self):
+ """Check the ResultContainer has at least one infobox"""
+ if len(self.result_container.infoboxes) == 0:
+ self._record_error('No infobox')
+
+ def has_answer(self):
+ """Check the ResultContainer has at least one answer"""
+ if len(self.result_container.answers) == 0:
+ self._record_error('No answer')
+
+ def has_language(self, lang):
+ """Check at least one title or content of the results is written in the `lang`.
+
+ Detected using pycld3, may be not accurate"""
+ if lang not in self.languages:
+ self._record_error(lang + ' not found')
+
+ def not_empty(self):
+ """Check the ResultContainer has at least one answer or infobox or result"""
+ result_types = set()
+ results = self.result_container.get_ordered_results()
+ if len(results) > 0:
+ result_types.add('results')
+
+ if len(self.result_container.answers) > 0:
+ result_types.add('answers')
+
+ if len(self.result_container.infoboxes) > 0:
+ result_types.add('infoboxes')
+
+ if len(result_types) == 0:
+ self._record_error('No result')
+
+ def one_title_contains(self, title: str):
+ """Check one of the title contains `title` (case insensitive comparaison)"""
+ title = title.lower()
+ for result in self.result_container.get_ordered_results():
+ if title in result['title'].lower():
+ return
+ self._record_error(('{!r} not found in the title'.format(title)))
+
+
+class CheckerTests:
+
+ __slots__ = 'test_results', 'test_name', 'result_container_tests_list'
+
+ def __init__(self,
+ test_results: TestResults,
+ test_name: str,
+ result_container_tests_list: typing.List[ResultContainerTests]):
+ self.test_results = test_results
+ self.test_name = test_name
+ self.result_container_tests_list = result_container_tests_list
+
+ def unique_results(self):
+ """Check the results of each ResultContainer is unique"""
+ urls_list = [rct.result_urls for rct in self.result_container_tests_list]
+ if len(urls_list[0]) > 0:
+ # results on the first page
+ for i, urls_i in enumerate(urls_list):
+ for j, urls_j in enumerate(urls_list):
+ if i < j and urls_i == urls_j:
+ common, diff = _search_query_diff(self.result_container_tests_list[i].search_query,
+ self.result_container_tests_list[j].search_query)
+ common_str = ' '.join(['{}={!r}'.format(k, v) for k, v in common.items()])
+ diff1_str = ', ' .join(['{}={!r}'.format(k, v1) for (k, (v1, v2)) in diff.items()])
+ diff2_str = ', ' .join(['{}={!r}'.format(k, v2) for (k, (v1, v2)) in diff.items()])
+ self.test_results.add_error(self.test_name,
+ 'results are identitical for {} and {} ({})'
+ .format(diff1_str, diff2_str, common_str))
+
+
+class Checker:
+
+ __slots__ = 'processor', 'tests', 'test_results'
+
+ def __init__(self, processor: EngineProcessor):
+ self.processor = processor
+ self.tests = self.processor.get_tests()
+ self.test_results = TestResults()
+
+ @property
+ def engineref_list(self):
+ engine_name = self.processor.engine_name
+ engine_category = self.processor.engine.categories[0]
+ return [EngineRef(engine_name, engine_category)]
+
+ @staticmethod
+ def search_query_matrix_iterator(engineref_list, matrix):
+ p = []
+ for name, values in matrix.items():
+ if isinstance(values, (tuple, list)):
+ l = [(name, value) for value in values]
+ else:
+ l = [(name, values)]
+ p.append(l)
+
+ for kwargs in itertools.product(*p):
+ kwargs = {k: v for k, v in kwargs}
+ query = kwargs['query']
+ params = dict(kwargs)
+ del params['query']
+ yield SearchQuery(query, engineref_list, **params)
+
+ def call_test(self, obj, test_description):
+ if isinstance(test_description, (tuple, list)):
+ method, args = test_description[0], test_description[1:]
+ else:
+ method = test_description
+ args = ()
+ if isinstance(method, str) and hasattr(obj, method):
+ getattr(obj, method)(*args)
+ elif isinstance(method, types.FunctionType):
+ method(*args)
+ else:
+ self.test_results.add_error(obj.test_name,
+ 'method {!r} ({}) not found for {}'
+ .format(method, method.__class__.__name__, obj.__class__.__name__))
+
+ def call_tests(self, obj, test_descriptions):
+ for test_description in test_descriptions:
+ self.call_test(obj, test_description)
+
+ def search(self, search_query: SearchQuery) -> ResultContainer:
+ result_container = ResultContainer()
+ engineref_category = search_query.engineref_list[0].category
+ params = self.processor.get_params(search_query, engineref_category)
+ if params is not None:
+ with threading.RLock():
+ self.processor.engine.stats['sent_search_count'] += 1
+ self.processor.search(search_query.query, params, result_container, time(), 5)
+ return result_container
+
+ def get_result_container_tests(self, test_name: str, search_query: SearchQuery) -> ResultContainerTests:
+ result_container = self.search(search_query)
+ result_container_check = ResultContainerTests(self.test_results, test_name, search_query, result_container)
+ result_container_check.check_basic()
+ return result_container_check
+
+ def run_test(self, test_name):
+ test_parameters = self.tests[test_name]
+ search_query_list = list(Checker.search_query_matrix_iterator(self.engineref_list, test_parameters['matrix']))
+ rct_list = [self.get_result_container_tests(test_name, search_query) for search_query in search_query_list]
+ stop_test = False
+ if 'result_container' in test_parameters:
+ for rct in rct_list:
+ stop_test = stop_test or rct.stop_test
+ if not rct.stop_test:
+ self.call_tests(rct, test_parameters['result_container'])
+ if not stop_test:
+ if 'test' in test_parameters:
+ checker_tests = CheckerTests(self.test_results, test_name, rct_list)
+ self.call_tests(checker_tests, test_parameters['test'])
+
+ def run(self):
+ for test_name in self.tests:
+ self.run_test(test_name)
diff --git a/searx/search/models.py b/searx/search/models.py
new file mode 100644
index 0000000..7233fac
--- /dev/null
+++ b/searx/search/models.py
@@ -0,0 +1,71 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+import typing
+
+
+class EngineRef:
+
+ __slots__ = 'name', 'category'
+
+ def __init__(self, name: str, category: str):
+ self.name = name
+ self.category = category
+
+ def __repr__(self):
+ return "EngineRef({!r}, {!r})".format(self.name, self.category)
+
+ def __eq__(self, other):
+ return self.name == other.name and self.category == other.category
+
+ def __hash__(self):
+ return hash((self.name, self.category))
+
+
+class SearchQuery:
+ """container for all the search parameters (query, language, etc...)"""
+
+ __slots__ = 'query', 'engineref_list', 'lang', 'safesearch', 'pageno', 'time_range',\
+ 'timeout_limit', 'external_bang', 'engine_data'
+
+ def __init__(self,
+ query: str,
+ engineref_list: typing.List[EngineRef],
+ lang: str='all',
+ safesearch: int=0,
+ pageno: int=1,
+ time_range: typing.Optional[str]=None,
+ timeout_limit: typing.Optional[float]=None,
+ external_bang: typing.Optional[str]=None,
+ engine_data: typing.Optional[typing.Dict[str, str]]=None):
+ self.query = query
+ self.engineref_list = engineref_list
+ self.lang = lang
+ self.safesearch = safesearch
+ self.pageno = pageno
+ self.time_range = time_range
+ self.timeout_limit = timeout_limit
+ self.external_bang = external_bang
+ self.engine_data = engine_data or {}
+
+ @property
+ def categories(self):
+ return list(set(map(lambda engineref: engineref.category, self.engineref_list)))
+
+ def __repr__(self):
+ return "SearchQuery({!r}, {!r}, {!r}, {!r}, {!r}, {!r}, {!r}, {!r})".\
+ format(self.query, self.engineref_list, self.lang, self.safesearch,
+ self.pageno, self.time_range, self.timeout_limit, self.external_bang)
+
+ def __eq__(self, other):
+ return self.query == other.query\
+ and self.engineref_list == other.engineref_list\
+ and self.lang == other.lang\
+ and self.safesearch == other.safesearch\
+ and self.pageno == other.pageno\
+ and self.time_range == other.time_range\
+ and self.timeout_limit == other.timeout_limit\
+ and self.external_bang == other.external_bang
+
+ def __hash__(self):
+ return hash((self.query, tuple(self.engineref_list), self.lang, self.safesearch, self.pageno, self.time_range,
+ self.timeout_limit, self.external_bang))
diff --git a/searx/search/processors/__init__.py b/searx/search/processors/__init__.py
new file mode 100644
index 0000000..4cae3cd
--- /dev/null
+++ b/searx/search/processors/__init__.py
@@ -0,0 +1,41 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+from .online import OnlineProcessor
+from .offline import OfflineProcessor
+from .online_dictionary import OnlineDictionaryProcessor
+from .online_currency import OnlineCurrencyProcessor
+from .abstract import EngineProcessor
+from searx import logger
+import searx.engines as engines
+
+
+__all__ = ['EngineProcessor', 'OfflineProcessor', 'OnlineProcessor',
+ 'OnlineDictionaryProcessor', 'OnlineCurrencyProcessor', 'processors']
+logger = logger.getChild('search.processors')
+processors = {}
+
+
+def get_processor_class(engine_type):
+ for c in [OnlineProcessor, OfflineProcessor, OnlineDictionaryProcessor, OnlineCurrencyProcessor]:
+ if c.engine_type == engine_type:
+ return c
+ return None
+
+
+def get_processor(engine, engine_name):
+ engine_type = getattr(engine, 'engine_type', 'online')
+ processor_class = get_processor_class(engine_type)
+ if processor_class:
+ return processor_class(engine, engine_name)
+ else:
+ return None
+
+
+def initialize(engine_list):
+ engines.initialize_engines(engine_list)
+ for engine_name, engine in engines.engines.items():
+ processor = get_processor(engine, engine_name)
+ if processor is None:
+ logger.error('Error get processor for engine %s', engine_name)
+ else:
+ processors[engine_name] = processor
diff --git a/searx/search/processors/abstract.py b/searx/search/processors/abstract.py
new file mode 100644
index 0000000..26dab06
--- /dev/null
+++ b/searx/search/processors/abstract.py
@@ -0,0 +1,52 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+from abc import abstractmethod, ABC
+from searx import logger
+
+
+logger = logger.getChild('searx.search.processor')
+
+
+class EngineProcessor(ABC):
+
+ def __init__(self, engine, engine_name):
+ self.engine = engine
+ self.engine_name = engine_name
+
+ def get_params(self, search_query, engine_category):
+ # if paging is not supported, skip
+ if search_query.pageno > 1 and not self.engine.paging:
+ return None
+
+ # if time_range is not supported, skip
+ if search_query.time_range and not self.engine.time_range_support:
+ return None
+
+ params = {}
+ params['category'] = engine_category
+ params['pageno'] = search_query.pageno
+ params['safesearch'] = search_query.safesearch
+ params['time_range'] = search_query.time_range
+ params['engine_data'] = search_query.engine_data.get(self.engine_name, {})
+
+ if hasattr(self.engine, 'language') and self.engine.language:
+ params['language'] = self.engine.language
+ else:
+ params['language'] = search_query.lang
+ return params
+
+ @abstractmethod
+ def search(self, query, params, result_container, start_time, timeout_limit):
+ pass
+
+ def get_tests(self):
+ tests = getattr(self.engine, 'tests', None)
+ if tests is None:
+ tests = getattr(self.engine, 'additional_tests', {})
+ tests.update(self.get_default_tests())
+ return tests
+ else:
+ return tests
+
+ def get_default_tests(self):
+ return {}
diff --git a/searx/search/processors/offline.py b/searx/search/processors/offline.py
new file mode 100644
index 0000000..ede8eb5
--- /dev/null
+++ b/searx/search/processors/offline.py
@@ -0,0 +1,51 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+import threading
+from time import time
+from searx import logger
+from searx.metrology.error_recorder import record_exception, record_error
+from searx.search.processors.abstract import EngineProcessor
+
+
+logger = logger.getChild('search.processor.offline')
+
+
+class OfflineProcessor(EngineProcessor):
+
+ engine_type = 'offline'
+
+ def _record_stats_on_error(self, result_container, start_time):
+ engine_time = time() - start_time
+ result_container.add_timing(self.engine_name, engine_time, engine_time)
+
+ with threading.RLock():
+ self.engine.stats['errors'] += 1
+
+ def _search_basic(self, query, params):
+ return self.engine.search(query, params)
+
+ def search(self, query, params, result_container, start_time, timeout_limit):
+ try:
+ search_results = self._search_basic(query, params)
+
+ if search_results:
+ result_container.extend(self.engine_name, search_results)
+
+ engine_time = time() - start_time
+ result_container.add_timing(self.engine_name, engine_time, engine_time)
+ with threading.RLock():
+ self.engine.stats['engine_time'] += engine_time
+ self.engine.stats['engine_time_count'] += 1
+
+ except ValueError as e:
+ record_exception(self.engine_name, e)
+ self._record_stats_on_error(result_container, start_time)
+ logger.exception('engine {0} : invalid input : {1}'.format(self.engine_name, e))
+ except Exception as e:
+ record_exception(self.engine_name, e)
+ self._record_stats_on_error(result_container, start_time)
+ result_container.add_unresponsive_engine(self.engine_name, 'unexpected crash', str(e))
+ logger.exception('engine {0} : exception : {1}'.format(self.engine_name, e))
+ else:
+ if getattr(threading.current_thread(), '_timeout', False):
+ record_error(self.engine_name, 'Timeout')
diff --git a/searx/search/processors/online.py b/searx/search/processors/online.py
new file mode 100644
index 0000000..dde3478
--- /dev/null
+++ b/searx/search/processors/online.py
@@ -0,0 +1,266 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+from urllib.parse import urlparse
+from time import time
+import threading
+
+import requests.exceptions
+
+import searx.poolrequests as poolrequests
+from searx.engines import settings
+from searx import logger
+from searx.utils import gen_useragent
+from searx.exceptions import (SearxEngineAccessDeniedException, SearxEngineCaptchaException,
+ SearxEngineTooManyRequestsException,)
+from searx.metrology.error_recorder import record_exception, record_error
+
+from searx.search.processors.abstract import EngineProcessor
+
+
+logger = logger.getChild('search.processor.online')
+
+
+def default_request_params():
+ return {
+ 'method': 'GET',
+ 'headers': {},
+ 'data': {},
+ 'url': '',
+ 'cookies': {},
+ 'verify': True,
+ 'auth': None
+ }
+
+
+class OnlineProcessor(EngineProcessor):
+
+ engine_type = 'online'
+
+ def get_params(self, search_query, engine_category):
+ params = super().get_params(search_query, engine_category)
+ if params is None:
+ return None
+
+ # skip suspended engines
+ if self.engine.suspend_end_time >= time():
+ logger.debug('Engine currently suspended: %s', self.engine_name)
+ return None
+
+ # add default params
+ params.update(default_request_params())
+
+ # add an user agent
+ params['headers']['User-Agent'] = gen_useragent()
+
+ return params
+
+ def _send_http_request(self, params):
+ # create dictionary which contain all
+ # informations about the request
+ request_args = dict(
+ headers=params['headers'],
+ cookies=params['cookies'],
+ verify=params['verify'],
+ auth=params['auth']
+ )
+
+ # setting engine based proxies
+ if hasattr(self.engine, 'proxies'):
+ request_args['proxies'] = poolrequests.get_proxies(self.engine.proxies)
+
+ # max_redirects
+ max_redirects = params.get('max_redirects')
+ if max_redirects:
+ request_args['max_redirects'] = max_redirects
+
+ # follow_redirects
+ if 'follow_redirects' in params:
+ # httpx has renamed this parameter to 'follow_redirects'
+ request_args['follow_redirects'] = params['follow_redirects']
+
+ # soft_max_redirects
+ soft_max_redirects = params.get('soft_max_redirects', max_redirects or 0)
+
+ # raise_for_status
+ request_args['raise_for_httperror'] = params.get('raise_for_httperror', True)
+
+ # specific type of request (GET or POST)
+ if params['method'] == 'GET':
+ req = poolrequests.get
+ else:
+ req = poolrequests.post
+
+ request_args['data'] = params['data']
+
+ # send the request
+ response = req(params['url'], **request_args)
+
+ # check soft limit of the redirect count
+ if len(response.history) > soft_max_redirects:
+ # unexpected redirect : record an error
+ # but the engine might still return valid results.
+ status_code = str(response.status_code or '')
+ reason = response.reason or ''
+ hostname = str(urlparse(response.url or '').netloc)
+ record_error(self.engine_name,
+ '{} redirects, maximum: {}'.format(len(response.history), soft_max_redirects),
+ (status_code, reason, hostname))
+
+ return response
+
+ def _search_basic(self, query, params):
+ # update request parameters dependent on
+ # search-engine (contained in engines folder)
+ self.engine.request(query, params)
+
+ # ignoring empty urls
+ if params['url'] is None:
+ return None
+
+ if not params['url']:
+ return None
+
+ # send request
+ response = self._send_http_request(params)
+
+ # parse the response
+ response.search_params = params
+ return self.engine.response(response)
+
+ def search(self, query, params, result_container, start_time, timeout_limit):
+ # set timeout for all HTTP requests
+ poolrequests.set_timeout_for_thread(timeout_limit, start_time=start_time)
+ # reset the HTTP total time
+ poolrequests.reset_time_for_thread()
+ # enable HTTP only if explicitly enabled
+ poolrequests.set_enable_http_protocol(self.engine.enable_http)
+
+ # suppose everything will be alright
+ requests_exception = False
+ suspended_time = None
+
+ try:
+ # send requests and parse the results
+ search_results = self._search_basic(query, params)
+
+ # check if the engine accepted the request
+ if search_results is not None:
+ # yes, so add results
+ result_container.extend(self.engine_name, search_results)
+
+ # update engine time when there is no exception
+ engine_time = time() - start_time
+ page_load_time = poolrequests.get_time_for_thread()
+ result_container.add_timing(self.engine_name, engine_time, page_load_time)
+ with threading.RLock():
+ self.engine.stats['engine_time'] += engine_time
+ self.engine.stats['engine_time_count'] += 1
+ # update stats with the total HTTP time
+ self.engine.stats['page_load_time'] += page_load_time
+ self.engine.stats['page_load_count'] += 1
+ except Exception as e:
+ record_exception(self.engine_name, e)
+
+ # Timing
+ engine_time = time() - start_time
+ page_load_time = poolrequests.get_time_for_thread()
+ result_container.add_timing(self.engine_name, engine_time, page_load_time)
+
+ # Record the errors
+ with threading.RLock():
+ self.engine.stats['errors'] += 1
+
+ if (issubclass(e.__class__, requests.exceptions.Timeout)):
+ result_container.add_unresponsive_engine(self.engine_name, 'HTTP timeout')
+ # requests timeout (connect or read)
+ logger.error("engine {0} : HTTP requests timeout"
+ "(search duration : {1} s, timeout: {2} s) : {3}"
+ .format(self.engine_name, engine_time, timeout_limit, e.__class__.__name__))
+ requests_exception = True
+ elif (issubclass(e.__class__, requests.exceptions.RequestException)):
+ result_container.add_unresponsive_engine(self.engine_name, 'HTTP error')
+ # other requests exception
+ logger.exception("engine {0} : requests exception"
+ "(search duration : {1} s, timeout: {2} s) : {3}"
+ .format(self.engine_name, engine_time, timeout_limit, e))
+ requests_exception = True
+ elif (issubclass(e.__class__, SearxEngineCaptchaException)):
+ result_container.add_unresponsive_engine(self.engine_name, 'CAPTCHA required')
+ logger.exception('engine {0} : CAPTCHA'.format(self.engine_name))
+ suspended_time = e.suspended_time # pylint: disable=no-member
+ elif (issubclass(e.__class__, SearxEngineTooManyRequestsException)):
+ result_container.add_unresponsive_engine(self.engine_name, 'too many requests')
+ logger.exception('engine {0} : Too many requests'.format(self.engine_name))
+ suspended_time = e.suspended_time # pylint: disable=no-member
+ elif (issubclass(e.__class__, SearxEngineAccessDeniedException)):
+ result_container.add_unresponsive_engine(self.engine_name, 'blocked')
+ logger.exception('engine {0} : Searx is blocked'.format(self.engine_name))
+ suspended_time = e.suspended_time # pylint: disable=no-member
+ else:
+ result_container.add_unresponsive_engine(self.engine_name, 'unexpected crash')
+ # others errors
+ logger.exception('engine {0} : exception : {1}'.format(self.engine_name, e))
+ else:
+ if getattr(threading.current_thread(), '_timeout', False):
+ record_error(self.engine_name, 'Timeout')
+
+ # suspend the engine if there is an HTTP error
+ # or suspended_time is defined
+ with threading.RLock():
+ if requests_exception or suspended_time:
+ # update continuous_errors / suspend_end_time
+ self.engine.continuous_errors += 1
+ if suspended_time is None:
+ suspended_time = min(settings['search']['max_ban_time_on_fail'],
+ self.engine.continuous_errors * settings['search']['ban_time_on_fail'])
+ self.engine.suspend_end_time = time() + suspended_time
+ else:
+ # reset the suspend variables
+ self.engine.continuous_errors = 0
+ self.engine.suspend_end_time = 0
+
+ def get_default_tests(self):
+ tests = {}
+
+ tests['simple'] = {
+ 'matrix': {'query': ('life', 'computer')},
+ 'result_container': ['not_empty'],
+ }
+
+ if getattr(self.engine, 'paging', False):
+ tests['paging'] = {
+ 'matrix': {'query': 'time',
+ 'pageno': (1, 2, 3)},
+ 'result_container': ['not_empty'],
+ 'test': ['unique_results']
+ }
+ if 'general' in self.engine.categories:
+ # avoid documentation about HTML tags (<time> and <input type="time">)
+ tests['paging']['matrix']['query'] = 'news'
+
+ if getattr(self.engine, 'time_range', False):
+ tests['time_range'] = {
+ 'matrix': {'query': 'news',
+ 'time_range': (None, 'day')},
+ 'result_container': ['not_empty'],
+ 'test': ['unique_results']
+ }
+
+ if getattr(self.engine, 'supported_languages', []):
+ tests['lang_fr'] = {
+ 'matrix': {'query': 'paris', 'lang': 'fr'},
+ 'result_container': ['not_empty', ('has_language', 'fr')],
+ }
+ tests['lang_en'] = {
+ 'matrix': {'query': 'paris', 'lang': 'en'},
+ 'result_container': ['not_empty', ('has_language', 'en')],
+ }
+
+ if getattr(self.engine, 'safesearch', False):
+ tests['safesearch'] = {
+ 'matrix': {'query': 'porn',
+ 'safesearch': (0, 2)},
+ 'test': ['unique_results']
+ }
+
+ return tests
diff --git a/searx/search/processors/online_currency.py b/searx/search/processors/online_currency.py
new file mode 100644
index 0000000..0dc3f3b
--- /dev/null
+++ b/searx/search/processors/online_currency.py
@@ -0,0 +1,69 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+import unicodedata
+import re
+
+from searx.data import CURRENCIES
+from .online import OnlineProcessor
+
+
+parser_re = re.compile('.*?(\\d+(?:\\.\\d+)?) ([^.0-9]+) (?:in|to) ([^.0-9]+)', re.I)
+
+
+def normalize_name(name):
+ name = name.lower().replace('-', ' ').rstrip('s')
+ name = re.sub(' +', ' ', name)
+ return unicodedata.normalize('NFKD', name).lower()
+
+
+def name_to_iso4217(name):
+ global CURRENCIES
+ name = normalize_name(name)
+ currency = CURRENCIES['names'].get(name, [name])
+ if isinstance(currency, str):
+ return currency
+ return currency[0]
+
+
+def iso4217_to_name(iso4217, language):
+ global CURRENCIES
+ return CURRENCIES['iso4217'].get(iso4217, {}).get(language, iso4217)
+
+
+class OnlineCurrencyProcessor(OnlineProcessor):
+
+ engine_type = 'online_currency'
+
+ def get_params(self, search_query, engine_category):
+ params = super().get_params(search_query, engine_category)
+ if params is None:
+ return None
+
+ m = parser_re.match(search_query.query)
+ if not m:
+ return None
+
+ amount_str, from_currency, to_currency = m.groups()
+ try:
+ amount = float(amount_str)
+ except ValueError:
+ return None
+ from_currency = name_to_iso4217(from_currency.strip())
+ to_currency = name_to_iso4217(to_currency.strip())
+
+ params['amount'] = amount
+ params['from'] = from_currency
+ params['to'] = to_currency
+ params['from_name'] = iso4217_to_name(from_currency, 'en')
+ params['to_name'] = iso4217_to_name(to_currency, 'en')
+ return params
+
+ def get_default_tests(self):
+ tests = {}
+
+ tests['currency'] = {
+ 'matrix': {'query': '1337 usd in rmb'},
+ 'result_container': ['has_answer'],
+ }
+
+ return tests
diff --git a/searx/search/processors/online_dictionary.py b/searx/search/processors/online_dictionary.py
new file mode 100644
index 0000000..c9c37b6
--- /dev/null
+++ b/searx/search/processors/online_dictionary.py
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+import re
+
+from searx.utils import is_valid_lang
+from .online import OnlineProcessor
+
+parser_re = re.compile('.*?([a-z]+)-([a-z]+) (.+)$', re.I)
+
+
+class OnlineDictionaryProcessor(OnlineProcessor):
+
+ engine_type = 'online_dictionary'
+
+ def get_params(self, search_query, engine_category):
+ params = super().get_params(search_query, engine_category)
+ if params is None:
+ return None
+
+ m = parser_re.match(search_query.query)
+ if not m:
+ return None
+
+ from_lang, to_lang, query = m.groups()
+
+ from_lang = is_valid_lang(from_lang)
+ to_lang = is_valid_lang(to_lang)
+
+ if not from_lang or not to_lang:
+ return None
+
+ params['from_lang'] = from_lang
+ params['to_lang'] = to_lang
+ params['query'] = query
+
+ return params
+
+ def get_default_tests(self):
+ tests = {}
+
+ if getattr(self.engine, 'paging', False):
+ tests['translation_paging'] = {
+ 'matrix': {'query': 'en-es house',
+ 'pageno': (1, 2, 3)},
+ 'result_container': ['not_empty', ('one_title_contains', 'house')],
+ 'test': ['unique_results']
+ }
+ else:
+ tests['translation'] = {
+ 'matrix': {'query': 'en-es house'},
+ 'result_container': ['not_empty', ('one_title_contains', 'house')],
+ }
+
+ return tests
diff --git a/searx/settings.yml b/searx/settings.yml
index 8614233..d160bcb 100644
--- a/searx/settings.yml
+++ b/searx/settings.yml
@@ -1,13 +1,25 @@
general:
debug : False # Debug mode, only for development
instance_name : "searx" # displayed name
+ contact_url: False # mailto:contact@example.com
+ enable_stats: False # activate /stats page - note: it may leak usage data
+
+brand:
+ git_url: https://github.com/searx/searx
+ git_branch: master
+ issue_url: https://github.com/searx/searx/issues
+ docs_url: https://searx.github.io/searx
+ public_instances: https://searx.space
+ wiki_url: https://github.com/searx/searx/wiki
+ twitter_url: https://twitter.com/Searx_engine
search:
safe_search : 0 # Filter results. 0: None, 1: Moderate, 2: Strict
- autocomplete : "" # Existing autocomplete backends: "dbpedia", "duckduckgo", "google", "startpage", "wikipedia" - leave blank to turn it off by default
- language : "en-US"
+ autocomplete : "" # Existing autocomplete backends: "dbpedia", "duckduckgo", "google", "startpage", "swisscows", "qwant", "wikipedia" - leave blank to turn it off by default
+ default_lang : "" # Default search language - leave blank to detect from browser information or use codes from 'languages.py'
ban_time_on_fail : 5 # ban time in seconds after engine errors
max_ban_time_on_fail : 120 # max ban time in seconds after engine errors
+ prefer_configured_language: False # increase weight of results in confiugred language in ranking
server:
port : 8888
@@ -16,14 +28,39 @@ server:
base_url : False # Set custom base_url. Possible values: False or "https://your.custom.host/location/"
image_proxy : False # Proxying image results through searx
http_protocol_version : "1.0" # 1.0 and 1.1 are supported
+ method: "POST" # POST queries are more secure as they don't show up in history but may cause problems when using Firefox containers
+ default_http_headers:
+ X-Content-Type-Options : nosniff
+ X-XSS-Protection : 1; mode=block
+ X-Download-Options : noopen
+ X-Robots-Tag : noindex, nofollow
+ Referrer-Policy : no-referrer
ui:
+ autofocus : True # Autofocus search input
+ archive_today : False # show archive.today links
static_path : "/usr/share/python3-searx/static" # Custom static path - leave it blank if you didn't change
templates_path : "/usr/share/python3-searx/templates" # Custom templates path - leave it blank if you didn't change
default_theme : oscar # ui theme
default_locale : "" # Default interface locale - leave blank to detect from browser information or use codes from the 'locales' config section
theme_args :
oscar_style : logicodev # default style of oscar
+# results_on_new_tab: False # Open result links in a new tab by default
+# categories_order :
+# - general
+# - files
+# - map
+# - it
+# - science
+
+# Lock arbitrary settings on the preferences page.
+# To find the ID of the user setting you want to lock, check
+# the ID of the form on the page "preferences".
+#preferences:
+# lock:
+# - language
+# - autocomplete
+# - method
# searx supports result proxification using an external service: https://github.com/asciimoo/morty
# uncomment below section if you have running morty proxy
@@ -40,17 +77,95 @@ outgoing: # communication with search engines
pool_connections : 100 # Number of different hosts
pool_maxsize : 10 # Number of simultaneous requests by host
# uncomment below section if you want to use a proxy
-# see http://docs.python-requests.org/en/latest/user/advanced/#proxies
-# SOCKS proxies are also supported: see http://docs.python-requests.org/en/master/user/advanced/#socks
-# proxies :
-# http : http://127.0.0.1:8080
-# https: http://127.0.0.1:8080
+# see https://2.python-requests.org/en/latest/user/advanced/#proxies
+# SOCKS proxies are also supported: see https://2.python-requests.org/en/latest/user/advanced/#socks
+# proxies:
+# http:
+# - http://proxy1:8080
+# - http://proxy2:8080
+# https:
+# - http://proxy1:8080
+# - http://proxy2:8080
+# using_tor_proxy : True
+# extra_proxy_timeout : 10.0 # Extra seconds to add in order to account for the time taken by the proxy
# uncomment below section only if you have more than one network interface
# which can be the source of outgoing search requests
# source_ips:
# - 1.1.1.1
# - 1.1.1.2
+# External plugin configuration
+# See https://searx.github.io/searx/dev/plugins.html for more details
+#
+# plugins:
+# - plugin1
+# - plugin2
+# - ...
+
+# uncomment below section if you want to configure which plugin is enabled by default
+#
+# enabled_plugins:
+# - "HTTPS rewrite"
+# - ...
+
+# Example to rewrite hostnames in external links
+#
+# enabled_plugins:
+# - 'Hostname replace'
+# hostname_replace:
+# '(.*\.)?youtube\.com$': 'invidious.example.com'
+# '(.*\.)?youtu\.be$': 'invidious.example.com'
+# '(.*\.)?youtube-noocookie\.com$': 'yotter.example.com'
+# '(.*\.)?reddit\.com$': 'teddit.example.com'
+# '(.*\.)?redd\.it$': 'teddit.example.com'
+# '(www\.)?twitter\.com$': 'nitter.example.com'
+
+checker:
+ # disable checker when in debug mode
+ off_when_debug: True
+
+ # scheduling: interval or int
+ # use "scheduling: False" to disable scheduling
+ # to activate the scheduler:
+ # * uncomment "scheduling" section
+ # * add "cache2 = name=searxcache,items=2000,blocks=2000,blocksize=4096,bitmap=1" to your uwsgi.ini
+
+ # scheduling:
+ # start_after: [300, 1800] # delay to start the first run of the checker
+ # every: [86400, 90000] # how often the checker runs
+
+ # additional tests: only for the YAML anchors (see the engines section)
+
+ additional_tests:
+ rosebud: &test_rosebud
+ matrix:
+ query: rosebud
+ lang: en
+ result_container:
+ - not_empty
+ - ['one_title_contains', 'citizen kane']
+ test:
+ - unique_results
+
+ android: &test_android
+ matrix:
+ query: ['android']
+ lang: ['en', 'de', 'fr', 'zh-CN']
+ result_container:
+ - not_empty
+ - ['one_title_contains', 'google']
+ test:
+ - unique_results
+
+ # tests: only for the YAML anchors (see the engines section)
+ tests:
+ infobox: &tests_infobox
+ infobox:
+ matrix:
+ query: ["linux", "new york", "bbc"]
+ result_container:
+ - has_infobox
+
engines:
- name: apk mirror
engine: apkmirror
@@ -58,13 +173,20 @@ engines:
shortcut: apkm
disabled: True
+# Requires Tor
+ - name : ahmia
+ engine : ahmia
+ categories : onions
+ enable_http : True
+ shortcut : ah
+
- name : arch linux wiki
engine : archlinux
shortcut : al
- name : archive is
engine : xpath
- search_url : https://archive.is/{query}
+ search_url : https://archive.is/search/?q={query}
url_xpath : (//div[@class="TEXT-BLOCK"]/a)/@href
title_xpath : (//div[@class="TEXT-BLOCK"]/a)
content_xpath : //div[@class="TEXT-BLOCK"]/ul/li
@@ -72,6 +194,14 @@ engines:
timeout : 7.0
disabled : True
shortcut : ai
+ soft_max_redirects: 1
+ about:
+ website: https://archive.is/
+ wikidata_id: Q13515725
+ official_api_documentation: https://mementoweb.org/depot/native/archiveis/
+ use_official_api: false
+ require_api_key: false
+ results: HTML
- name : arxiv
engine : arxiv
@@ -84,11 +214,33 @@ engines:
# engine : base
# shortcut : bs
+ - name: bandcamp
+ engine: bandcamp
+ shortcut: bc
+ categories: music
+
- name : wikipedia
engine : wikipedia
shortcut : wp
base_url : 'https://{language}.wikipedia.org/'
+ #The fulltext and title parameter is necessary for Wikimini because sometimes it will not show the results and redirect instead
+ - name: wikimini
+ engine: xpath
+ shortcut: wkmn
+ search_url : https://fr.wikimini.org/w/index.php?search={query}&title=Sp%C3%A9cial%3ASearch&fulltext=Search
+ url_xpath : //li/div[@class="mw-search-result-heading"]/a/@href
+ title_xpath : //li//div[@class="mw-search-result-heading"]/a
+ content_xpath : //li/div[@class="searchresult"]
+ categories : general
+ disabled : True
+ about:
+ website: https://wikimini.org/
+ wikidata_id: Q3568032
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
- name : bing
engine : bing
shortcut : bi
@@ -116,6 +268,13 @@ engines:
timeout : 4.0
disabled : True
shortcut : bb
+ about:
+ website: https://bitbucket.org/
+ wikidata_id: Q2493781
+ official_api_documentation: https://developer.atlassian.com/bitbucket
+ use_official_api: false
+ require_api_key: false
+ results: HTML
- name : btdigg
engine : btdigg
@@ -131,6 +290,25 @@ engines:
categories : videos
disabled : True
shortcut : c3tv
+ about:
+ website: https://media.ccc.de/
+ wikidata_id: Q80729951
+ official_api_documentation: https://github.com/voc/voctoweb
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name: openverse
+ engine: openverse
+ categories: images
+ shortcut: opv
+
+# - name : core.ac.uk
+# engine : core
+# categories : science
+# shortcut : cor
+# # get your API key from: https://core.ac.uk/api-keys/register/
+# api_key : 'unset'
- name : crossref
engine : json_engine
@@ -138,9 +316,18 @@ engines:
search_url : https://search.crossref.org/dois?q={query}&page={pageno}
url_query : doi
title_query : title
+ title_html_to_text: True
content_query : fullCitation
+ content_html_to_text: True
categories : science
shortcut : cr
+ about:
+ website: https://www.crossref.org/
+ wikidata_id: Q5188229
+ official_api_documentation: https://github.com/CrossRef/rest-api-doc
+ use_official_api: false
+ require_api_key: false
+ results: JSON
- name : currency
engine : currency_convert
@@ -154,13 +341,14 @@ engines:
- name : deviantart
engine : deviantart
shortcut : da
- timeout: 3.0
+ timeout : 3.0
- name : ddg definitions
engine : duckduckgo_definitions
shortcut : ddd
weight : 2
disabled : True
+ tests: *tests_infobox
# cloudflare protected
# - name : digbt
@@ -185,12 +373,40 @@ engines:
categories : general
shortcut : ew
disabled : True
+ about:
+ website: https://www.erowid.org/
+ wikidata_id: Q1430691
+ official_api_documentation:
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name: emojipedia
+ engine: emojipedia
+ timeout: 4.0
+ shortcut: em
+ disabled: True
+
+# - name : elasticsearch
+# shortcut : es
+# engine : elasticsearch
+# base_url : http://localhost:9200
+# username : elastic
+# password : changeme
+# index : my-index
+# # available options: match, simple_query_string, term, terms, custom
+# query_type : match
+# # if query_type is set to custom, provide your query here
+# #custom_query_json: {"query":{"match_all": {}}}
+# #show_metadata: False
+# disabled : True
- name : wikidata
engine : wikidata
shortcut : wd
timeout : 3.0
weight : 2
+ tests: *tests_infobox
- name : duckduckgo
engine : duckduckgo
@@ -203,6 +419,20 @@ engines:
timeout: 3.0
disabled : True
+ - name : tineye
+ engine : tineye
+ shortcut : tin
+ paging : True
+ timeout : 9.0
+ disabled : True
+
+ - name : etools
+ engine : etools
+ shortcut : eto
+ disabled : True
+ additional_tests:
+ rosebud: *test_rosebud
+
- name : etymonline
engine : xpath
paging : True
@@ -213,15 +443,24 @@ engines:
first_page_num : 1
shortcut : et
disabled : True
-
- - name : faroo
- engine : faroo
- shortcut : fa
+ about:
+ website: https://www.etymonline.com/
+ wikidata_id: Q1188617
+ official_api_documentation:
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name : ebay
+ engine : ebay
+ shortcut : eb
disabled : True
+ timeout: 5
- name : 1x
engine : www1x
shortcut : 1x
+ timeout : 3.0
disabled : True
- name : fdroid
@@ -250,6 +489,17 @@ engines:
search_type : title
timeout : 5.0
disabled : True
+ about:
+ website: https://directory.fsf.org/
+ wikidata_id: Q2470288
+
+ # - name : freesound
+ # engine : freesound
+ # shortcut : fnd
+ # disabled : True
+ # timeout : 15.0
+ # api_key : MyAPIkey
+ # API key required, see : https://freesound.org/docs/api/overview.html
- name : frinkiac
engine : frinkiac
@@ -264,7 +514,16 @@ engines:
engine : gigablast
shortcut : gb
timeout : 3.0
+ # Collection names to search in, separated by whitespaces.
+ # By default searx, queries the main collection.
+ #collections: main
+ # Search types, not required. possible values: images, news
+ #search_type: images
+ # Enable fast to get results quicker.
+ #fast : 1
disabled: True
+ additional_tests:
+ rosebud: *test_rosebud
- name : gentoo
engine : gentoo
@@ -282,81 +541,135 @@ engines:
shortcut : gl
timeout : 10.0
disabled : True
+ about:
+ website: https://about.gitlab.com/
+ wikidata_id: Q16639197
+ official_api_documentation: https://docs.gitlab.com/ee/api/
+ use_official_api: false
+ require_api_key: false
+ results: JSON
- name : github
engine : github
shortcut : gh
+ # This a Gitea service. If you would like to use a different instance,
+ # change codeberg.org to URL of the desired Gitea host. Or you can create
+ # a new engine by copying this and changing the name, shortcut and search_url.
+ - name : codeberg
+ engine : json_engine
+ search_url : https://codeberg.org/api/v1/repos/search?q={query}&limit=10
+ url_query : html_url
+ title_query : name
+ content_query : description
+ categories : it
+ shortcut : cb
+ disabled : True
+ about:
+ website: https://codeberg.org/
+ wikidata_id:
+ official_api_documentation: https://try.gitea.io/api/swagger
+ use_official_api: false
+ require_api_key: false
+ results: JSON
+
- name : google
engine : google
shortcut : go
+ use_mobile_ui: false
+ # additional_tests:
+ # android: *test_android
- name : google images
engine : google_images
shortcut : goi
+ # additional_tests:
+ # android: *test_android
+ # dali:
+ # matrix:
+ # query: ['Dali Christ']
+ # lang: ['en', 'de', 'fr', 'zh-CN']
+ # result_container:
+ # - ['one_title_contains', 'Salvador']
- name : google news
engine : google_news
shortcut : gon
+ # additional_tests:
+ # android: *test_android
- name : google videos
engine : google_videos
shortcut : gov
+ # additional_tests:
+ # android: *test_android
- name : google scholar
- engine : xpath
- paging : True
- search_url : https://scholar.google.com/scholar?start={pageno}&q={query}&hl=en&as_sdt=0,5&as_vis=1
- results_xpath : //div[contains(@class, "gs_r")]/div[@class="gs_ri"]
- url_xpath : .//h3/a/@href
- title_xpath : .//h3/a
- content_xpath : .//div[@class="gs_rs"]
- suggestion_xpath : //div[@id="gs_res_ccl_top"]//a/b
- page_size : 10
- first_page_num : 0
- categories : science
+ engine : google_scholar
shortcut : gos
- name : google play apps
engine : xpath
search_url : https://play.google.com/store/search?q={query}&c=apps
- results_xpath : '//div[@class="WHE7ib mpg5gc"]'
- title_xpath : './/div[@class="RZEgze"]//div[@title and not(@title="")]/a'
- url_xpath : './/div[@class="RZEgze"]//div[@title and not(@title="")]/a/@href'
+ results_xpath : '//div[@class="ImZGtf mpg5gc"]'
+ title_xpath : './/div[@class="RZEgze"]//div[@class="kCSSQe"]//a'
+ url_xpath : './/div[@class="RZEgze"]//div[@class="kCSSQe"]//a/@href'
content_xpath : './/div[@class="RZEgze"]//a[@class="mnKHRc"]'
thumbnail_xpath : './/div[@class="uzcko"]/div/span[1]//img/@data-src'
categories : files
shortcut : gpa
disabled : True
+ about:
+ website: https://play.google.com/
+ wikidata_id: Q79576
+ official_api_documentation:
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name : gpodder
+ engine : json_engine
+ shortcut : gpod
+ timeout : 4.0
+ paging : False
+ search_url : https://gpodder.net/search.json?q={query}
+ url_query : url
+ title_query : title
+ content_query : description
+ page_size : 19
+ categories : social media, files, general
+ disabled: True
+ about:
+ website: https://gpodder.net
+ wikidata_id: Q3093354
+ official_api_documentation: https://gpoddernet.readthedocs.io/en/latest/api/
+ use_official_api: false
+ requires_api_key: false
+ results: JSON
- name : google play movies
engine : xpath
search_url : https://play.google.com/store/search?q={query}&c=movies
- results_xpath : '//div[@class="WHE7ib mpg5gc"]'
- title_xpath : './/div[@class="RZEgze"]//div[@title and not(@title="")]/a'
- url_xpath : './/div[@class="RZEgze"]//div[@title and not(@title="")]/a/@href'
- content_xpath : './/div[@class="RZEgze"]//a[@class="mnKHRc"]'
+ results_xpath : '//div[@class="ImZGtf mpg5gc"]'
+ title_xpath : './/div[@class="RZEgze"]//div[@class="kCSSQe"]//a'
+ url_xpath : './/div[@class="RZEgze"]//div[@class="kCSSQe"]//a/@href'
+ content_xpath : './/div[@class="kCSSQe"]'
thumbnail_xpath : './/div[@class="uzcko"]/div/span[1]//img/@data-src'
categories : videos
shortcut : gpm
disabled : True
-
- - name : google play music
- engine : xpath
- search_url : https://play.google.com/store/search?q={query}&c=music
- results_xpath : '//div[@class="WHE7ib mpg5gc"]'
- title_xpath : './/div[@class="RZEgze"]//div[@title and not(@title="")]/a'
- url_xpath : './/div[@class="RZEgze"]//div[@title and not(@title="")]/a/@href'
- content_xpath : './/div[@class="RZEgze"]//a[@class="mnKHRc"]'
- thumbnail_xpath : './/div[@class="uzcko"]/div/span[1]//img/@data-src'
- categories : music
- shortcut : gps
- disabled : True
+ about:
+ website: https://play.google.com/
+ wikidata_id: Q79576
+ official_api_documentation:
+ use_official_api: false
+ require_api_key: false
+ results: HTML
- name : geektimes
engine : xpath
paging : True
- search_url : https://geektimes.ru/search/page{pageno}/?q={query}
+ search_url : https://habr.com/en/search/page{pageno}/?q={query}
url_xpath : //article[contains(@class, "post")]//a[@class="post__title_link"]/@href
title_xpath : //article[contains(@class, "post")]//a[@class="post__title_link"]
content_xpath : //article[contains(@class, "post")]//div[contains(@class, "post__text")]
@@ -364,6 +677,13 @@ engines:
timeout : 4.0
disabled : True
shortcut : gt
+ about:
+ website: https://geektimes.ru/
+ wikidata_id: Q50572423
+ official_api_documentation:
+ use_official_api: false
+ require_api_key: false
+ results: HTML
- name : habrahabr
engine : xpath
@@ -376,18 +696,35 @@ engines:
timeout : 4.0
disabled : True
shortcut : habr
+ about:
+ website: https://habr.com/
+ wikidata_id: Q4494434
+ official_api_documentation: https://habr.com/en/docs/help/api/
+ use_official_api: false
+ require_api_key: false
+ results: HTML
- name : hoogle
- engine : json_engine
- paging : True
- search_url : https://www.haskell.org/hoogle/?mode=json&hoogle={query}&start={pageno}
- results_query : results
- url_query : location
- title_query : self
- content_query : docs
- page_size : 20
+ engine : xpath
+ search_url : https://hoogle.haskell.org/?hoogle={query}&start={pageno}
+ results_xpath : '//div[@class="result"]'
+ title_xpath : './div[@class="ans"]'
+ url_xpath : './div[@class="ans"]//a/@href'
+ content_xpath : './div[contains(@class, "doc")]'
categories : it
shortcut : ho
+ about:
+ website: https://hoogle.haskell.org/
+ wikidata_id: Q34010
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name : imdb
+ engine : imdb
+ shortcut : imdb
+ timeout : 6.0
+ disabled : True
- name : ina
engine : ina
@@ -397,9 +734,12 @@ engines:
- name : invidious
engine : invidious
- base_url : 'https://invidio.us/'
+ base_url :
+ - https://invidious.tube/
+ - https://invidious.snopyta.org/
shortcut: iv
timeout : 5.0
+ disabled : True
- name: kickass
engine : kickass
@@ -409,24 +749,77 @@ engines:
- name : library genesis
engine : xpath
- search_url : https://libgen.is/search.php?req={query}
- url_xpath : //a[contains(@href,"bookfi.net")]/@href
+ paging : True
+ page_size : 25
+ search_url : https://libgen.rs/search.php?req={query}&page={pageno}
+ url_xpath : //a[contains(@href,"library.lol/main")]/@href
title_xpath : //a[contains(@href,"book/")]/text()[1]
content_xpath : //td/a[1][contains(@href,"=author")]/text()
- categories : general
+ categories : general, files
timeout : 7.0
disabled : True
shortcut : lg
-
- - name : lobste.rs
+ about:
+ website: https://libgen.rs/
+ wikidata_id: Q22017206
+ official_api_documentation:
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name : azlyrics
+ shortcut : azl
engine : xpath
- search_url : https://lobste.rs/search?utf8=%E2%9C%93&q={query}&what=stories&order=relevance
- results_xpath : //li[contains(@class, "story")]
- url_xpath : .//span[@class="link"]/a/@href
- title_xpath : .//span[@class="link"]/a
- content_xpath : .//a[@class="domain"]
- categories : it
- shortcut : lo
+ timeout : 4.0
+ disabled : True
+ categories : general
+ paging : True
+ search_url : https://search.azlyrics.com/search.php?q={query}&w=lyrics&p={pageno}
+ url_xpath : //td[@class="text-left visitedlyr"]/a/@href
+ title_xpath : //span/b/text()
+ content_xpath : //td[@class="text-left visitedlyr"]/a/small
+ about:
+ website: https://azlyrics.com
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name : library of congress
+ engine : loc
+ shortcut : loc
+ categories : images
+
+ - name: lingva
+ engine: lingva
+ shortcut: lv
+ # set lingva instance in url, by default it will use the official instance
+ # url: https://lingva.ml
+
+ - name: lobste.rs
+ engine: xpath
+ search_url: https://lobste.rs/search?utf8=%E2%9C%93&q={query}&what=stories&order=relevance
+ results_xpath: //li[contains(@class, "story")]
+ url_xpath: .//a[@class="u-url"]/@href
+ title_xpath: .//a[@class="u-url"]
+ content_xpath: .//a[@class="domain"]
+ categories: it
+ shortcut: lo
+ timeout: 5.0
+ disabled: true
+ about:
+ website: https://lobste.rs/
+ wikidata_id: Q60762874
+ official_api_documentation:
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+# - name : meilisearch
+# engine : meilisearch
+# shortcut: mes
+# enable_http: True
+# base_url : http://localhost:7700
+# index : my-index
- name : microsoft academic
engine : microsoft_academic
@@ -437,6 +830,19 @@ engines:
engine : mixcloud
shortcut : mc
+# MongoDB engine
+# Required dependency: pymongo
+# - name : mymongo
+# engine : mongodb
+# shortcut : md
+# exact_match_only : False
+# host : '127.0.0.1'
+# port : 27017
+# results_per_page : 20
+# database : 'business'
+# collection : 'reviews' # name of the db collection
+# key : 'name' # key in the collection to search for
+
- name : npm
engine : json_engine
paging : True
@@ -450,17 +856,34 @@ engines:
disabled: True
timeout: 5.0
shortcut : npm
+ about:
+ website: https://npms.io/
+ wikidata_id: Q7067518
+ official_api_documentation: https://api-docs.npms.io/
+ use_official_api: false
+ require_api_key: false
+ results: JSON
- name : nyaa
engine : nyaa
shortcut : nt
disabled : True
- - name : acgsou
- engine : acgsou
- shortcut : acg
- disabled : True
- timeout: 5.0
+ - name : mankier
+ engine : json_engine
+ search_url : https://www.mankier.com/api/v2/mans/?q={query}
+ results_query : results
+ url_query : url
+ title_query : name
+ content_query : description
+ categories : it
+ shortcut : man
+ about:
+ website: https://www.mankier.com/
+ official_api_documentation: https://www.mankier.com/api
+ use_official_api: true
+ require_api_key: false
+ results: JSON
- name : openairedatasets
engine : json_engine
@@ -470,9 +893,17 @@ engines:
url_query : metadata/oaf:entity/oaf:result/children/instance/webresource/url/$
title_query : metadata/oaf:entity/oaf:result/title/$
content_query : metadata/oaf:entity/oaf:result/description/$
+ content_html_to_text: True
categories : science
shortcut : oad
timeout: 5.0
+ about:
+ website: https://www.openaire.eu/
+ wikidata_id: Q25106053
+ official_api_documentation: https://api.openaire.eu/
+ use_official_api: false
+ require_api_key: false
+ results: JSON
- name : openairepublications
engine : json_engine
@@ -482,14 +913,47 @@ engines:
url_query : metadata/oaf:entity/oaf:result/children/instance/webresource/url/$
title_query : metadata/oaf:entity/oaf:result/title/$
content_query : metadata/oaf:entity/oaf:result/description/$
+ content_html_to_text: True
categories : science
shortcut : oap
timeout: 5.0
+ about:
+ website: https://www.openaire.eu/
+ wikidata_id: Q25106053
+ official_api_documentation: https://api.openaire.eu/
+ use_official_api: false
+ require_api_key: false
+ results: JSON
+
+# - name : opensemanticsearch
+# engine : opensemantic
+# shortcut : oss
+# base_url : 'http://localhost:8983/solr/opensemanticsearch/'
- name : openstreetmap
engine : openstreetmap
shortcut : osm
+# - name : prowlarr
+# engine : prowlarr
+# shortcut : prow
+# categories : files
+# enable_http : True
+# api_key : ''
+# indexer_ids : 5 # comma separated list of indexer ids
+# search_categories : '' # comma separated list of categories
+# search_type : search
+# base_url: http://localhost:9696/api/v1/search?
+# timeout : 50.0
+# disabled : True,
+# about :
+# website : https://wiki.servarr.com/prowlarr
+# wikidata_id : None
+# official_api_documentation : https://wiki.servarr.com/prowlarr/search
+# use_official_api : true
+# require_api_key : true
+# results : JSON
+
- name : openrepos
engine : xpath
paging : True
@@ -501,6 +965,13 @@ engines:
timeout : 4.0
disabled : True
shortcut : or
+ about:
+ website: https://openrepos.net/
+ wikidata_id:
+ official_api_documentation:
+ use_official_api: false
+ require_api_key: false
+ results: HTML
- name : pdbe
engine : pdbe
@@ -516,24 +987,58 @@ engines:
- name : piratebay
engine : piratebay
shortcut : tpb
- url: https://pirateproxy.red/
+ # You may need to change this URL to a proxy if piratebay is blocked in your country
+ url: https://thepiratebay.org/
timeout : 3.0
+# Required dependency: psychopg2
+# - name : postgresql
+# engine : postgresql
+# database : postgres
+# username : postgres
+# password : postgres
+# limit : 10
+# query_str : 'SELECT * from my_table WHERE my_column = %(query)s'
+# shortcut : psql
+
- name : pubmed
engine : pubmed
shortcut : pub
categories: science
timeout : 3.0
+ - name : pypi
+ shortcut: pypi
+ engine: xpath
+ paging : True
+ search_url : https://pypi.org/search?q={query}&page={pageno}
+ results_xpath: /html/body/main/div/div/div/form/div/ul/li/a[@class="package-snippet"]
+ url_xpath : ./@href
+ title_xpath : ./h3/span[@class="package-snippet__name"]
+ content_xpath : ./p
+ suggestion_xpath : /html/body/main/div/div/div/form/div/div[@class="callout-block"]/p/span/a[@class="link"]
+ first_page_num : 1
+ categories: it
+ about:
+ website: https://pypi.org
+ wikidata_id: Q2984686
+ official_api_documentation: https://warehouse.readthedocs.io/api-reference/index.html
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
- name : qwant
engine : qwant
shortcut : qw
categories : general
disabled : True
+ additional_tests:
+ rosebud: *test_rosebud
- name : qwant images
engine : qwant
shortcut : qwi
+ disabled: True
categories : images
- name : qwant news
@@ -541,10 +1046,34 @@ engines:
shortcut : qwn
categories : news
- - name : qwant social
- engine : qwant
- shortcut : qws
- categories : social media
+ - name: qwant videos
+ engine: qwant
+ shortcut: qwv
+ categories: videos
+ disabled: True
+ network: qwant
+
+# - name: library
+# engine: recoll
+# shortcut: lib
+# base_url: 'https://recoll.example.org/'
+# search_dir: ''
+# mount_prefix: /export
+# dl_prefix: 'https://download.example.org'
+# timeout: 30.0
+# categories: files
+# disabled: True
+
+# - name: recoll library reference
+# engine: recoll
+# base_url: 'https://recoll.example.org/'
+# search_dir: reference
+# mount_prefix: /export
+# dl_prefix: 'https://download.example.org'
+# shortcut: libr
+# timeout: 30.0
+# categories: files
+# disabled: True
- name : reddit
engine : reddit
@@ -553,23 +1082,46 @@ engines:
timeout : 10.0
disabled : True
+# Required dependency: redis
+# - name : myredis
+# engine : redis_server
+# exact_match_only : False
+# host : '127.0.0.1'
+# port : 6379
+# password : ''
+# db : 0
+
# tmp suspended: bad certificate
# - name : scanr structures
# shortcut: scs
# engine : scanr_structures
# disabled : True
+ - name: sepiasearch
+ engine: sepiasearch
+ shortcut: sep
+
- name : soundcloud
engine : soundcloud
shortcut : sc
- - name : stackoverflow
- engine : stackoverflow
- shortcut : st
+ - name: stackoverflow
+ engine: stackexchange
+ shortcut: st
+ api_site: 'stackoverflow'
+ categories: it
+
+ - name: askubuntu
+ engine: stackexchange
+ shortcut: ubuntu
+ api_site: 'askubuntu'
+ categories: it
- - name : searchcode doc
- engine : searchcode_doc
- shortcut : scd
+ - name: superuser
+ engine: stackexchange
+ shortcut: su
+ api_site: 'superuser'
+ categories: it
- name : searchcode code
engine : searchcode_code
@@ -590,13 +1142,8 @@ engines:
# disabled : True
- name : semantic scholar
- engine : xpath
- paging : True
- search_url : https://www.semanticscholar.org/search?q={query}&sort=relevance&page={pageno}&ae=false
- results_xpath : //article
- url_xpath : .//div[@class="search-result-title"]/a/@href
- title_xpath : .//div[@class="search-result-title"]/a
- content_xpath : .//div[@class="search-result-abstract"]
+ engine : semantic_scholar
+ disabled : True
shortcut : se
categories : science
@@ -607,11 +1154,33 @@ engines:
# api_client_id : *******
# api_client_secret : *******
+# - name : solr
+# engine : solr
+# shortcut : slr
+# base_url : http://localhost:8983
+# collection : collection_name
+# sort : '' # sorting: asc or desc
+# field_list : '' # comma separated list of field names to display on the UI
+# default_fields : '' # default field to query
+# query_fields : '' # query fields
+# enable_http : True
+
+# - name : springer nature
+# engine : springer
+# # get your API key from: https://dev.springernature.com/signup
+# api_key : 'unset' # working API key, for test & debug: "a69685087d07eca9f13db62f65b8f601"
+# disabled: True
+# shortcut : springer
+# categories : science
+# timeout : 6.0
+
- name : startpage
engine : startpage
shortcut : sp
timeout : 6.0
disabled : True
+ additional_tests:
+ rosebud: *test_rosebud
- name : tokyotoshokan
engine : tokyotoshokan
@@ -619,15 +1188,43 @@ engines:
timeout : 6.0
disabled : True
+ - name : solidtorrents
+ engine : solidtorrents
+ shortcut : solid
+ timeout : 3.0
+ disabled : True
+
+# - name : sqlite
+# engine : sqlite
+# shortcut: sq
+# database : mydb
+# query_str : 'SELECT * FROM mytable WHERE fieldname=:query'
+# disabled : True
+
- name : torrentz
engine : torrentz
shortcut : tor
url: https://torrentz2.eu/
timeout : 3.0
- - name : twitter
- engine : twitter
- shortcut : tw
+# Requires Tor
+ - name : torch
+ engine : xpath
+ paging : True
+ search_url : http://xmh57jrknzkhv6y3ls3ubitzfqnkrwxhopf5aygthi7d6rplyvk3noyd.onion/cgi-bin/omega/omega?P={query}&DEFAULTOP=and
+ results_xpath : //table//tr
+ url_xpath : ./td[2]/a
+ title_xpath : ./td[2]/b
+ content_xpath : ./td[2]/small
+ categories : onions
+ enable_http : True
+ shortcut : tch
+
+ - name : tvmaze
+ engine : tvmaze
+ timeout : 5.0
+ shortcut : tm
+ disabled : true
# maybe in a fun category
# - name : uncyclopedia
@@ -636,14 +1233,15 @@ engines:
# base_url : https://uncyclopedia.wikia.com/
# number_of_results : 5
-# tmp suspended - too slow, too many errors
-# - name : urbandictionary
-# engine : xpath
-# search_url : http://www.urbandictionary.com/define.php?term={query}
-# url_xpath : //*[@class="word"]/@href
-# title_xpath : //*[@class="def-header"]
-# content_xpath : //*[@class="meaning"]
-# shortcut : ud
+
+ - name : urbandictionary
+ engine : xpath
+ search_url : https://www.urbandictionary.com/define.php?term={query}
+ url_xpath : //*[@class="word"]/@href
+ title_xpath : //*[@class="def-header"]
+ content_xpath : //*[@class="meaning"]
+ shortcut : ud
+ disabled : True
- name : unsplash
engine : unsplash
@@ -655,11 +1253,6 @@ engines:
shortcut : yh
disabled : True
- - name : yandex
- engine : yandex
- shortcut : yn
- disabled : True
-
- name : yahoo news
engine : yahoo_news
shortcut : yhn
@@ -673,6 +1266,13 @@ engines:
# Or you can use the html non-stable engine, activated by default
engine : youtube_noapi
+ - name : yggtorrent
+ engine : yggtorrent
+ shortcut : ygg
+ url: https://www4.yggtorrent.li/
+ disabled : True
+ timeout : 4.0
+
- name : dailymotion
engine : dailymotion
shortcut : dm
@@ -681,10 +1281,107 @@ engines:
engine : vimeo
shortcut : vm
+ - name : wiby
+ engine : json_engine
+ paging : True
+ search_url : https://wiby.me/json/?q={query}&o={pageno}0
+ url_query : URL
+ title_query : Title
+ content_query : Snippet
+ categories : general
+ shortcut : wib
+ disabled : True
+
+ - name : wikibooks
+ engine : mediawiki
+ shortcut : wb
+ categories : general
+ base_url : "https://{language}.wikibooks.org/"
+ number_of_results : 5
+ search_type : text
+ disabled : True
+ about:
+ website: https://www.wikibooks.org/
+ wikidata_id: Q367
+
+ - name : wikinews
+ engine : mediawiki
+ shortcut : wn
+ categories : news
+ base_url : "https://{language}.wikinews.org/"
+ number_of_results : 5
+ search_type : text
+ disabled : True
+ about:
+ website: https://www.wikinews.org/
+ wikidata_id: Q964
+
+ - name : wikiquote
+ engine : mediawiki
+ shortcut : wq
+ categories : general
+ base_url : "https://{language}.wikiquote.org/"
+ number_of_results : 5
+ search_type : text
+ disabled : True
+ additional_tests:
+ rosebud: *test_rosebud
+ about:
+ website: https://www.wikiquote.org/
+ wikidata_id: Q369
+
+ - name : wikisource
+ engine : mediawiki
+ shortcut : ws
+ categories : general
+ base_url : "https://{language}.wikisource.org/"
+ number_of_results : 5
+ search_type : text
+ disabled : True
+ about:
+ website: https://www.wikisource.org/
+ wikidata_id: Q263
+
+ - name : wiktionary
+ engine : mediawiki
+ shortcut : wt
+ categories : general
+ base_url : "https://{language}.wiktionary.org/"
+ number_of_results : 5
+ search_type : text
+ disabled : True
+ about:
+ website: https://www.wiktionary.org/
+ wikidata_id: Q151
+
+ - name : wikiversity
+ engine : mediawiki
+ shortcut : wv
+ categories : general
+ base_url : "https://{language}.wikiversity.org/"
+ number_of_results : 5
+ search_type : text
+ disabled : True
+ about:
+ website: https://www.wikiversity.org/
+ wikidata_id: Q370
+
+ - name : wikivoyage
+ engine : mediawiki
+ shortcut : wy
+ categories : general
+ base_url : "https://{language}.wikivoyage.org/"
+ number_of_results : 5
+ search_type : text
+ disabled : True
+ about:
+ website: https://www.wikivoyage.org/
+ wikidata_id: Q373
+
- name : wolframalpha
shortcut : wa
# You can use the engine using the official stable API, but you need an API key
- # See : http://products.wolframalpha.com/api/
+ # See : https://products.wolframalpha.com/api/
# engine : wolframalpha_api
# api_key: '' # required!
engine : wolframalpha_noapi
@@ -701,19 +1398,18 @@ engines:
timeout : 5.0
disabled : True
# You can use without an API key, but you are limited to 1000 words/day
- # See : http://mymemory.translated.net/doc/usagelimits.php
+ # See : https://mymemory.translated.net/doc/usagelimits.php
# api_key : ''
- - name : voat
- engine: xpath
- shortcut: vo
- categories: social media
- search_url : https://searchvoat.co/?t={query}
- url_xpath : //div[@class="entry"]//p[@class="title"]/a/@href
- title_xpath : //div[@class="entry"]//p[@class="title"]/a/text()
- content_xpath : //div[@class="entry"]//span[@class="domain"]/a/text()
- timeout : 10.0
- disabled : True
+# Required dependency: mysql-connector-python
+# - name : mysql
+# engine : mysql_server
+# database : mydatabase
+# username : user
+# password : pass
+# limit : 10
+# query_str : 'SELECT * from mytable WHERE fieldname=%(query)s'
+# shortcut : mysql
- name : 1337x
engine : 1337x
@@ -727,16 +1423,7 @@ engines:
- name : seznam
shortcut: szn
- engine: xpath
- paging : True
- search_url : https://search.seznam.cz/?q={query}&count=10&from={pageno}
- results_xpath: //div[@class="Page-content"]//div[contains(@class, "Result ")]
- url_xpath : ./h3/a/@href
- title_xpath : ./h3
- content_xpath : .//p[@class="Result-description"]
- suggestion_xpath: //div[@class="Related-container"]//div[@class="RelatedItem"]/div/span/a
- first_page_num : 0
- page_size : 10
+ engine: seznam
disabled : True
- name : mojeek
@@ -752,25 +1439,321 @@ engines:
first_page_num : 0
page_size : 10
disabled : True
+ about:
+ website: https://www.mojeek.com/
+ wikidata_id: Q60747299
+ official_api_documentation: https://www.mojeek.com/services/api.html/
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name : dogpile
+ shortcut : dp
+ engine : xpath
+ paging : True
+ # Doesn't work without the 'sc' parameter
+ search_url : https://www.dogpile.com/serp?q={query}&page={pageno}&sc=Gp0GqqlRVflv20
+ url_xpath : //span[@class="web-bing__url"]
+ title_xpath : //a[@class="web-bing__title"]
+ content_xpath : //span[@class="web-bing__description"]
+ page_size : 9
+ categories : general
+ timeout : 7.0
+ disabled : True
+ about:
+ website: https://www.dogpile.com
+ wikidata_id: Q3595363
+ use_official_api: false
+ require_api_key: false
+ results: html
+
+ - name : whaleslide
+ shortcut : whale
+ engine : json_engine
+ paging : True
+ # This API Token is needed to work
+ search_url : https://search.whaleslide.com/api/v1/search_v2/web/{pageno}?q={query}&api_token=f8OhUDEYKUICHDnIxEgI7Cb4uYyTBqT4nO8iueNbfTO3devS24yElGqM7nCm
+ url_query : url
+ title_query : title
+ title_html_to_text : True
+ content_query : abstract
+ content_html_to_text : True
+ categories : general
+ disabled : True
+ about:
+ website: https://whaleslide.com/
+ wikidata_id: # No Wikidata page
+ official_api_documentation: false
+ use_official_api: false
+ require_api_key: false
+ results: JSON
+
+ - name : petal
+ shortcut : petal
+ engine : xpath
+ paging : True
+ search_url : https://petalsearch.com/search?query={query}&pn={pageno}
+ title_xpath : //span[@class="title-name"]
+ url_xpath : //div[@class="card-source"]/text()
+ content_xpath : //span[@class="desc-cont"]
+ suggestion_xpath : //*[@class="rs-text"]/*[contains(class, rs-text)]
+ page_size : 12
+ categories : general
+ timeout : 4.0
+ disabled : True
+ about:
+ website: https://petalsearch.com
+ wikidata_id: #
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name : ask
+ shortcut : ask
+ engine : xpath
+ timeout : 3.0
+ disabled : True
+ categories : general
+ paging : True
+ page_size : 10
+ search_url : https://www.ask.com/web?q={query}&qo=pagination&page={pageno}
+ title_xpath : //a[@class="PartialSearchResults-item-title-link result-link"]
+ url_xpath : //a[@class="PartialSearchResults-item-title-link result-link"]/@href
+ content_xpath : //p[@class="PartialSearchResults-item-abstract"]
+ suggestion_xpath : //span[@class="PartialRelatedSearch-item-link-text"]
+ about:
+ website: https://ask.com
+ wikidata_id : Q847564
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name : naver
+ shortcut: nvr
+ engine: xpath
+ paging : True
+ search_url : https://search.naver.com/search.naver?where=webkr&sm=osp_hty&ie=UTF-8&query={query}&start={pageno}
+ url_xpath : //a[@class="link_tit"]/@href
+ title_xpath : //a[@class="link_tit"]
+ content_xpath : //a[@class="total_dsc"]/div
+ first_page_num : 1
+ page_size : 10
+ disabled : True
+ about:
+ website: https://www.naver.com/
+ wikidata_id: Q485639
+ official_api_documentation: https://developers.naver.com/docs/nmt/examples/
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name : rubygems
+ shortcut: rbg
+ engine: xpath
+ paging : True
+ search_url : https://rubygems.org/search?page={pageno}&query={query}
+ results_xpath: /html/body/main/div/a[@class="gems__gem"]
+ url_xpath : ./@href
+ title_xpath : ./span/h2
+ content_xpath : ./span/p
+ suggestion_xpath : /html/body/main/div/div[@class="search__suggestions"]/p/a
+ first_page_num : 1
+ categories: it
+ disabled : True
+ about:
+ website: https://rubygems.org/
+ wikidata_id: Q1853420
+ official_api_documentation: https://guides.rubygems.org/rubygems-org-api/
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name : peertube
+ engine: peertube
+ shortcut: ptb
+ paging : True
+ base_url : https://peer.tube/
+ categories: videos
+ disabled : True
- - name : seedpeer
- shortcut : speu
- engine : seedpeer
- categories: files, music, videos
+ - name : mediathekviewweb
+ engine : mediathekviewweb
+ shortcut : mvw
+
+ - name : kaufland
+ shortcut : kauf
+ engine : xpath
+ timeout : 3.0
+ paging : True
+ search_url : https://www.kaufland.de/item/search/?search_value={query}&page={pageno}
+ title_xpath : //div[@class="product__title"]/text()
+ url_xpath : //article[@class="product"]//a/@href
+ content_xpath : //div[@class="price"]
+ #thumbnail_xpath : '//div[@class="product__image-container"]//img/@data-src'
+ categories : general
+ disabled : True
+ about:
+ website: https://kaufland.de
+ wikidata_id: Q685967
+ use_official_api: false
+ require_api_key: false
+ results: HTML
# - name : yacy
# engine : yacy
# shortcut : ya
# base_url : 'http://localhost:8090'
+# enable_http: True # required if you aren't using HTTPS for your local yacy instance
# number_of_results : 5
# timeout : 3.0
+ - name : rumble
+ engine : rumble
+ shortcut : ru
+ base_url : https://rumble.com/
+ paging : True
+ categories: videos
+ disabled : True
+
+ - name: wordnik
+ engine: wordnik
+ shortcut: def
+ base_url: https://www.wordnik.com/
+ categories: general
+ timeout: 5.0
+ disabled: True
+
+ - name : woxikon.de synonyme
+ engine : xpath
+ shortcut : woxi
+ categories : general
+ timeout : 5.0
+ disabled : True
+ search_url : https://synonyme.woxikon.de/synonyme/{query}.php
+ url_xpath : //div[@class="upper-synonyms"]/a/@href
+ content_xpath : //div[@class="synonyms-list-group"]
+ title_xpath : //div[@class="upper-synonyms"]/a
+ about:
+ website: https://www.woxikon.de/
+ wikidata_id: # No Wikidata ID
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name: sjp.pwn
+ engine: sjp
+ shortcut: sjp
+ base_url: https://sjp.pwn.pl/
+ categories: general
+ timeout: 5.0
+ disabled: True
+
+ - name: brave
+ shortcut: brave
+ engine: xpath
+ paging: true
+ first_page_num: 0
+ search_url: https://search.brave.com/search?q={query}&offset={pageno}&spellcheck=1
+ url_xpath: //div[@class="snippet fdb"]/a/@href
+ title_xpath: //span[@class="snippet-title"]
+ content_xpath: //p[1][@class="snippet-description"]
+ suggestion_xpath: //div[@class="text-gray h6"]/a
+ categories: general
+ about:
+ website: https://brave.com/search/
+ wikidata_id: Q22906900
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
+ - name: onesearch
+ shortcut: onesearch
+ engine: onesearch
+ disabled: True
+ about:
+ website: https://www.onesearch.com/
+ wikidata_id: None
+ use_official_api: false
+ require_api_key: false
+ results: HTML
+
# Doku engine lets you access to any Doku wiki instance:
-# A public one or a privete/corporate one.
+# A public one or a private/corporate one.
# - name : ubuntuwiki
# engine : doku
# shortcut : uw
-# base_url : 'http://doc.ubuntu-fr.org'
+# base_url : 'https://doc.ubuntu-fr.org'
+
+# Be careful when enabling this engine if you are
+# running a public instance. Do not expose any sensitive
+# information. You can restrict access by configuring a list
+# of access tokens under tokens.
+# - name: git grep
+# engine: command
+# command: ['git', 'grep', '{{QUERY}}']
+# shortcut: gg
+# tokens: []
+# disabled: True
+# delimiter:
+# chars: ':'
+# keys: ['filepath', 'code']
+
+# Be careful when enabling this engine if you are
+# running a public instance. Do not expose any sensitive
+# information. You can restrict access by configuring a list
+# of access tokens under tokens.
+# - name: locate
+# engine: command
+# command: ['locate', '{{QUERY}}']
+# shortcut: loc
+# tokens: []
+# disabled: True
+# delimiter:
+# chars: ' '
+# keys: ['line']
+
+# Be careful when enabling this engine if you are
+# running a public instance. Do not expose any sensitive
+# information. You can restrict access by configuring a list
+# of access tokens under tokens.
+# - name: find
+# engine: command
+# command: ['find', '.', '-name', '{{QUERY}}']
+# query_type: path
+# shortcut: fnd
+# tokens: []
+# disabled: True
+# delimiter:
+# chars: ' '
+# keys: ['line']
+
+# Be careful when enabling this engine if you are
+# running a public instance. Do not expose any sensitive
+# information. You can restrict access by configuring a list
+# of access tokens under tokens.
+# - name: pattern search in files
+# engine: command
+# command: ['fgrep', '{{QUERY}}']
+# shortcut: fgr
+# tokens: []
+# disabled: True
+# delimiter:
+# chars: ' '
+# keys: ['line']
+
+# Be careful when enabling this engine if you are
+# running a public instance. Do not expose any sensitive
+# information. You can restrict access by configuring a list
+# of access tokens under tokens.
+# - name: regex search in files
+# engine: command
+# command: ['grep', '{{QUERY}}']
+# shortcut: gr
+# tokens: []
+# disabled: True
+# delimiter:
+# chars: ' '
+# keys: ['line']
locales:
en : English
@@ -822,7 +1805,12 @@ locales:
doi_resolvers :
oadoi.org : 'https://oadoi.org/'
doi.org : 'https://doi.org/'
- doai.io : 'https://doai.io/'
- sci-hub.tw : 'https://sci-hub.tw/'
+ doai.io : 'https://dissem.in/'
+ sci-hub.se : 'https://sci-hub.se/'
+ sci-hub.do : 'https://sci-hub.do/'
+ scihubtw.tw : 'https://scihubtw.tw/'
+ sci-hub.st : 'https://sci-hub.st/'
+ sci-hub.bar : 'https://sci-hub.bar/'
+ sci-hub.it.nf : 'https://sci-hub.it.nf/'
default_doi_resolver : 'oadoi.org'
diff --git a/searx/settings_loader.py b/searx/settings_loader.py
new file mode 100644
index 0000000..1146cae
--- /dev/null
+++ b/searx/settings_loader.py
@@ -0,0 +1,140 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+from os import environ
+from os.path import dirname, join, abspath, isfile
+from collections.abc import Mapping
+from itertools import filterfalse
+
+import yaml
+
+from searx.exceptions import SearxSettingsException
+
+
+searx_dir = abspath(dirname(__file__))
+
+
+def check_settings_yml(file_name):
+ if isfile(file_name):
+ return file_name
+ return None
+
+
+def load_yaml(file_name):
+ try:
+ with open(file_name, 'r', encoding='utf-8') as settings_yaml:
+ return yaml.safe_load(settings_yaml)
+ except IOError as e:
+ raise SearxSettingsException(e, file_name) from e
+ except yaml.YAMLError as e:
+ raise SearxSettingsException(e, file_name) from e
+
+
+def get_default_settings_path():
+ return check_settings_yml(join(searx_dir, 'settings.yml'))
+
+
+def get_user_settings_path():
+ # find location of settings.yml
+ if 'SEARX_SETTINGS_PATH' in environ:
+ # if possible set path to settings using the
+ # enviroment variable SEARX_SETTINGS_PATH
+ return check_settings_yml(environ['SEARX_SETTINGS_PATH'])
+
+ # if not, get it from /etc/searx, or last resort the codebase
+ return check_settings_yml('/etc/searx/settings.yml') or check_settings_yml('settings.yml')
+
+
+def update_dict(default_dict, user_dict):
+ for k, v in user_dict.items():
+ if isinstance(v, Mapping):
+ default_dict[k] = update_dict(default_dict.get(k, {}), v)
+ else:
+ default_dict[k] = v
+ return default_dict
+
+
+def update_settings(default_settings, user_settings):
+ # merge everything except the engines
+ for k, v in user_settings.items():
+ if k not in ('use_default_settings', 'engines'):
+ if k in default_settings and isinstance(v, Mapping):
+ update_dict(default_settings[k], v)
+ else:
+ default_settings[k] = v
+
+ # parse the engines
+ remove_engines = None
+ keep_only_engines = None
+ use_default_settings = user_settings.get('use_default_settings')
+ if isinstance(use_default_settings, dict):
+ remove_engines = use_default_settings.get('engines', {}).get('remove')
+ keep_only_engines = use_default_settings.get('engines', {}).get('keep_only')
+
+ if 'engines' in user_settings or remove_engines is not None or keep_only_engines is not None:
+ engines = default_settings['engines']
+
+ # parse "use_default_settings.engines.remove"
+ if remove_engines is not None:
+ engines = list(filterfalse(lambda engine: (engine.get('name')) in remove_engines, engines))
+
+ # parse "use_default_settings.engines.keep_only"
+ if keep_only_engines is not None:
+ engines = list(filter(lambda engine: (engine.get('name')) in keep_only_engines, engines))
+
+ # parse "engines"
+ user_engines = user_settings.get('engines')
+ if user_engines:
+ engines_dict = dict((definition['name'], definition) for definition in engines)
+ for user_engine in user_engines:
+ default_engine = engines_dict.get(user_engine['name'])
+ if default_engine:
+ update_dict(default_engine, user_engine)
+ else:
+ engines.append(user_engine)
+
+ # store the result
+ default_settings['engines'] = engines
+
+ return default_settings
+
+
+def is_use_default_settings(user_settings):
+ use_default_settings = user_settings.get('use_default_settings')
+ if use_default_settings is True:
+ return True
+ if isinstance(use_default_settings, dict):
+ return True
+ if use_default_settings is False or use_default_settings is None:
+ return False
+ raise ValueError('Invalid value for use_default_settings')
+
+
+def load_settings(load_user_setttings=True):
+ default_settings_path = get_default_settings_path()
+ user_settings_path = get_user_settings_path()
+
+ # no user settings
+ if user_settings_path is None or not load_user_setttings:
+ if default_settings_path is None:
+ raise SearxSettingsException(
+ 'missing default settings.yml file and there is no user configured file.\n'
+ 'Please create a configuration file and put it under the root of searx or in /etc/searx or'
+ 'configure the path in SEARX_SETTINGS_PATH.',
+ None,
+ )
+ return (load_yaml(default_settings_path),
+ 'load the default settings from {}'.format(default_settings_path))
+
+ # user settings
+ user_settings = load_yaml(user_settings_path)
+ if is_use_default_settings(user_settings):
+ # the user settings are merged with the default configuration
+ default_settings = load_yaml(default_settings_path)
+ update_settings(default_settings, user_settings)
+ return (default_settings,
+ 'merge the default settings ( {} ) and the user setttings ( {} )'
+ .format(default_settings_path, user_settings_path))
+
+ # the user settings, fully replace the default configuration
+ return (user_settings,
+ 'load the user settings from {}'.format(user_settings_path))
diff --git a/searx/settings_robot.yml b/searx/settings_robot.yml
index 25f229e..976a8f5 100644
--- a/searx/settings_robot.yml
+++ b/searx/settings_robot.yml
@@ -3,23 +3,22 @@ general:
instance_name : "searx_test"
search:
- safe_search : 0
- autocomplete : ""
language: "all"
server:
port : 11111
bind_address : 127.0.0.1
- secret_key : "ultrasecretkey" # change this!
+ secret_key : "changedultrasecretkey"
base_url : False
- image_proxy : False
http_protocol_version : "1.0"
ui:
static_path : ""
templates_path : ""
default_theme : oscar
- default_locale : ""
+
+preferences:
+ lock: []
outgoing:
request_timeout : 1.0 # seconds
@@ -43,7 +42,13 @@ locales:
doi_resolvers :
oadoi.org : 'https://oadoi.org/'
doi.org : 'https://doi.org/'
- doai.io : 'https://doai.io/'
- sci-hub.tw : 'https://sci-hub.tw/'
+ doai.io : 'https://dissem.in/'
+ sci-hub.se : 'https://sci-hub.se/'
+ sci-hub.do : 'https://sci-hub.do/'
+ scihubtw.tw : 'https://scihubtw.tw/'
+ sci-hub.st : 'https://sci-hub.st/'
+ sci-hub.bar : 'https://sci-hub.bar/'
+ sci-hub.it.nf : 'https://sci-hub.it.nf/'
+
default_doi_resolver : 'oadoi.org'
diff --git a/searx/shared/__init__.py b/searx/shared/__init__.py
new file mode 100644
index 0000000..cbe24d2
--- /dev/null
+++ b/searx/shared/__init__.py
@@ -0,0 +1,31 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+import logging
+
+logger = logging.getLogger('searx.shared')
+
+try:
+ import uwsgi
+except:
+ # no uwsgi
+ from .shared_simple import SimpleSharedDict as SharedDict, schedule
+ logger.info('Use shared_simple implementation')
+else:
+ try:
+ uwsgi.cache_update('dummy', b'dummy')
+ if uwsgi.cache_get('dummy') != b'dummy':
+ raise Exception()
+ except:
+ # uwsgi.ini configuration problem: disable all scheduling
+ logger.error('uwsgi.ini configuration error, add this line to your uwsgi.ini\n'
+ 'cache2 = name=searxcache,items=2000,blocks=2000,blocksize=4096,bitmap=1')
+ from .shared_simple import SimpleSharedDict as SharedDict
+
+ def schedule(delay, func, *args):
+ return False
+ else:
+ # uwsgi
+ from .shared_uwsgi import UwsgiCacheSharedDict as SharedDict, schedule
+ logger.info('Use shared_uwsgi implementation')
+
+storage = SharedDict()
diff --git a/searx/shared/shared_abstract.py b/searx/shared/shared_abstract.py
new file mode 100644
index 0000000..b1c72aa
--- /dev/null
+++ b/searx/shared/shared_abstract.py
@@ -0,0 +1,21 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+from abc import ABC, abstractmethod
+
+
+class SharedDict(ABC):
+
+ @abstractmethod
+ def get_int(self, key):
+ pass
+
+ @abstractmethod
+ def set_int(self, key, value):
+ pass
+
+ @abstractmethod
+ def get_str(self, key):
+ pass
+
+ @abstractmethod
+ def set_str(self, key, value):
+ pass
diff --git a/searx/shared/shared_simple.py b/searx/shared/shared_simple.py
new file mode 100644
index 0000000..48d8cb8
--- /dev/null
+++ b/searx/shared/shared_simple.py
@@ -0,0 +1,39 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+import threading
+
+from . import shared_abstract
+
+
+class SimpleSharedDict(shared_abstract.SharedDict):
+
+ __slots__ = 'd',
+
+ def __init__(self):
+ self.d = {}
+
+ def get_int(self, key):
+ return self.d.get(key, None)
+
+ def set_int(self, key, value):
+ self.d[key] = value
+
+ def get_str(self, key):
+ return self.d.get(key, None)
+
+ def set_str(self, key, value):
+ self.d[key] = value
+
+
+def schedule(delay, func, *args):
+ def call_later():
+ t = threading.Timer(delay, wrapper)
+ t.daemon = True
+ t.start()
+
+ def wrapper():
+ call_later()
+ func(*args)
+
+ call_later()
+ return True
diff --git a/searx/shared/shared_uwsgi.py b/searx/shared/shared_uwsgi.py
new file mode 100644
index 0000000..a6dba9f
--- /dev/null
+++ b/searx/shared/shared_uwsgi.py
@@ -0,0 +1,64 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+import time
+import uwsgi # pylint: disable=E0401
+from . import shared_abstract
+
+
+_last_signal = 10
+
+
+class UwsgiCacheSharedDict(shared_abstract.SharedDict):
+
+ def get_int(self, key):
+ value = uwsgi.cache_get(key)
+ if value is None:
+ return value
+ else:
+ return int.from_bytes(value, 'big')
+
+ def set_int(self, key, value):
+ b = value.to_bytes(4, 'big')
+ uwsgi.cache_update(key, b)
+
+ def get_str(self, key):
+ value = uwsgi.cache_get(key)
+ if value is None:
+ return value
+ else:
+ return value.decode('utf-8')
+
+ def set_str(self, key, value):
+ b = value.encode('utf-8')
+ uwsgi.cache_update(key, b)
+
+
+def schedule(delay, func, *args):
+ """
+ Can be implemented using a spooler.
+ https://uwsgi-docs.readthedocs.io/en/latest/PythonDecorators.html
+
+ To make the uwsgi configuration simple, use the alternative implementation.
+ """
+ global _last_signal
+
+ def sighandler(signum):
+ now = int(time.time())
+ key = 'scheduler_call_time_signal_' + str(signum)
+ uwsgi.lock()
+ try:
+ updating = uwsgi.cache_get(key)
+ if updating is not None:
+ updating = int.from_bytes(updating, 'big')
+ if now - updating < delay:
+ return
+ uwsgi.cache_update(key, now.to_bytes(4, 'big'))
+ finally:
+ uwsgi.unlock()
+ func(*args)
+
+ signal_num = _last_signal
+ _last_signal += 1
+ uwsgi.register_signal(signal_num, 'worker', sighandler)
+ uwsgi.add_timer(signal_num, delay)
+ return True
diff --git a/searx/static/plugins/external_plugins/.gitignore b/searx/static/plugins/external_plugins/.gitignore
new file mode 100644
index 0000000..94548af
--- /dev/null
+++ b/searx/static/plugins/external_plugins/.gitignore
@@ -0,0 +1,3 @@
+*
+*/
+!.gitignore
diff --git a/searx/static/plugins/js/infinite_scroll.js b/searx/static/plugins/js/infinite_scroll.js
index db84a69..cd80965 100644
--- a/searx/static/plugins/js/infinite_scroll.js
+++ b/searx/static/plugins/js/infinite_scroll.js
@@ -1,24 +1,40 @@
+function hasScrollbar() {
+ var root = document.compatMode=='BackCompat'? document.body : document.documentElement;
+ return root.scrollHeight>root.clientHeight;
+}
+
+function loadNextPage() {
+ var formData = $('#pagination form:last').serialize();
+ if (formData) {
+ $('#pagination').html('<div class="loading-spinner"></div>');
+ $.ajax({
+ type: "POST",
+ url: $('#search_form').prop('action'),
+ data: formData,
+ dataType: 'html',
+ success: function(data) {
+ var body = $(data);
+ $('#pagination').remove();
+ $('#main_results').append('<hr/>');
+ $('#main_results').append(body.find('.result'));
+ $('#main_results').append(body.find('#pagination'));
+ if(!hasScrollbar()) {
+ loadNextPage();
+ }
+ }
+ });
+ }
+}
+
$(document).ready(function() {
var win = $(window);
+ if(!hasScrollbar()) {
+ loadNextPage();
+ }
win.scroll(function() {
+ $("#pagination button").css("visibility", "hidden");
if ($(document).height() - win.height() - win.scrollTop() < 150) {
- var formData = $('#pagination form:last').serialize();
- if (formData) {
- $('#pagination').html('<div class="loading-spinner"></div>');
- $.ajax({
- type: "POST",
- url: './',
- data: formData,
- dataType: 'html',
- success: function(data) {
- var body = $(data);
- $('#pagination').remove();
- $('#main_results').append('<hr/>');
- $('#main_results').append(body.find('.result'));
- $('#main_results').append(body.find('#pagination'));
- }
- });
- }
+ loadNextPage();
}
});
});
diff --git a/searx/static/plugins/js/open_results_on_new_tab.js b/searx/static/plugins/js/open_results_on_new_tab.js
deleted file mode 100644
index 99ef382..0000000
--- a/searx/static/plugins/js/open_results_on_new_tab.js
+++ /dev/null
@@ -1,3 +0,0 @@
-$(document).ready(function() {
- $('.result_header > a').attr('target', '_blank');
-});
diff --git a/searx/static/plugins/js/search_on_category_select.js b/searx/static/plugins/js/search_on_category_select.js
index 1c42d9e..d590ed1 100644
--- a/searx/static/plugins/js/search_on_category_select.js
+++ b/searx/static/plugins/js/search_on_category_select.js
@@ -6,19 +6,37 @@ $(document).ready(function() {
});
$(document.getElementById($(this).attr("for"))).prop('checked', true);
if($('#q').val()) {
+ if (getHttpRequest() == "GET") {
+ $('#search_form').attr('action', $('#search_form').serialize());
+ }
$('#search_form').submit();
}
return false;
});
$('#time-range').change(function(e) {
if($('#q').val()) {
+ if (getHttpRequest() == "GET") {
+ $('#search_form').attr('action', $('#search_form').serialize());
+ }
$('#search_form').submit();
}
});
$('#language').change(function(e) {
if($('#q').val()) {
+ if (getHttpRequest() == "GET") {
+ $('#search_form').attr('action', $('#search_form').serialize());
+ }
$('#search_form').submit();
}
});
}
});
+
+function getHttpRequest() {
+ httpRequest = "POST";
+ urlParams = new URLSearchParams(window.location.search);
+ if (urlParams.has('method')) {
+ httpRequest = urlParams.get('method');
+ }
+ return httpRequest;
+}
diff --git a/searx/static/themes/simple/js/searx_src/searx_imageresult.js b/searx/static/themes/__common__/js/image_layout.js
index 7bbfc14..ea54cf5 100644
--- a/searx/static/themes/simple/js/searx_src/searx_imageresult.js
+++ b/searx/static/themes/__common__/js/image_layout.js
@@ -3,21 +3,21 @@
* Google Image Layout v0.0.1
* Description, by Anh Trinh.
* Heavily modified for searx
-* http://trinhtrunganh.com
+* https://ptgamr.github.io/2014-09-12-google-image-layout/
+* https://ptgamr.github.io/google-image-layout/src/google-image-layout.js
*
* @license Free to use under the MIT License.
*
*/
-(function(w, d) {
- 'use strict';
-
- function ImageLayout(container_selector, results_selector, img_selector, maxHeight) {
+
+(function (w, d) {
+ function ImageLayout(container_selector, results_selector, img_selector, margin, maxHeight) {
this.container_selector = container_selector;
this.results_selector = results_selector;
this.img_selector = img_selector;
- this.margin = 10;
+ this.margin = margin;
this.maxHeight = maxHeight;
- this._alignAllDone = true;
+ this.isAlignDone = true;
}
/**
@@ -31,12 +31,11 @@
*
* @return {[type]} the height
*/
- ImageLayout.prototype._getHeigth = function(images, width) {
- var r = 0,
- img;
+ ImageLayout.prototype._getHeigth = function (images, width) {
+ var i, img;
+ var r = 0;
- width -= images.length * this.margin;
- for (var i = 0; i < images.length; i++) {
+ for (i = 0; i < images.length; i++) {
img = images[i];
if ((img.naturalWidth > 0) && (img.naturalHeight > 0)) {
r += img.naturalWidth / img.naturalHeight;
@@ -46,12 +45,14 @@
}
}
- return width / r; //have to round down because Firefox will automatically roundup value with number of decimals > 3
+ return (width - images.length * this.margin) / r; //have to round down because Firefox will automatically roundup value with number of decimals > 3
};
- ImageLayout.prototype._setSize = function(images, height) {
- var img, imgWidth, imagesLength = images.length;
- for (var i = 0; i < imagesLength; i++) {
+ ImageLayout.prototype._setSize = function (images, height) {
+ var i, img, imgWidth;
+ var imagesLength = images.length, resultNode;
+
+ for (i = 0; i < imagesLength; i++) {
img = images[i];
if ((img.naturalWidth > 0) && (img.naturalHeight > 0)) {
imgWidth = height * img.naturalWidth / img.naturalHeight;
@@ -65,38 +66,52 @@
img.style.marginTop = '3px';
img.style.marginRight = this.margin - 7 + 'px'; // -4 is the negative margin of the inline element
img.style.marginBottom = this.margin - 7 + 'px';
+ resultNode = img.parentNode.parentNode;
+ if (!resultNode.classList.contains('js')) {
+ resultNode.classList.add('js');
+ }
}
};
- ImageLayout.prototype._alignImgs = function(imgGroup) {
- var slice, h,
- containerWidth = d.querySelector(this.container_selector).clientWidth;
+ ImageLayout.prototype._alignImgs = function (imgGroup) {
+ var isSearching, slice, i, h;
+ var containerElement = d.querySelector(this.container_selector);
+ var containerCompStyles = window.getComputedStyle(containerElement);
+ var containerPaddingLeft = parseInt(containerCompStyles.getPropertyValue('padding-left'), 10);
+ var containerPaddingRight = parseInt(containerCompStyles.getPropertyValue('padding-right'), 10);
+ var containerWidth = containerElement.clientWidth - containerPaddingLeft - containerPaddingRight;
- w: while (imgGroup.length > 0) {
- for (var i = 1; i <= imgGroup.length; i++) {
+ while (imgGroup.length > 0) {
+ isSearching = true;
+ for (i = 1; i <= imgGroup.length && isSearching; i++) {
slice = imgGroup.slice(0, i);
h = this._getHeigth(slice, containerWidth);
if (h < this.maxHeight) {
this._setSize(slice, h);
+ // continue with the remaining images
imgGroup = imgGroup.slice(i);
- continue w;
+ isSearching = false;
}
}
- this._setSize(slice, Math.min(this.maxHeight, h));
- break;
+ if (isSearching) {
+ this._setSize(slice, Math.min(this.maxHeight, h));
+ break;
+ }
}
};
- ImageLayout.prototype.align = function(results_selector) {
- var results_selectorNode = d.querySelectorAll(this.results_selector),
- results_length = results_selectorNode.length,
- previous = null,
- current = null,
- imgGroup = [];
- for (var i = 0; i < results_length; i++) {
+ ImageLayout.prototype.align = function () {
+ var i;
+ var results_selectorNode = d.querySelectorAll(this.results_selector);
+ var results_length = results_selectorNode.length;
+ var previous = null;
+ var current = null;
+ var imgGroup = [];
+
+ for (i = 0; i < results_length; i++) {
current = results_selectorNode[i];
if (current.previousElementSibling !== previous && imgGroup.length > 0) {
- // the current image is not conected to previous one
+ // the current image is not connected to previous one
// so the current image is the start of a new group of images.
// so call _alignImgs to align the current group
this._alignImgs(imgGroup);
@@ -114,32 +129,29 @@
}
};
- ImageLayout.prototype.watch = function() {
- var i, img, imgGroup, imgNodeLength,
- obj = this,
- results_nodes = d.querySelectorAll(this.results_selector),
- results_length = results_nodes.length;
-
- function align(e) {
- obj.align();
- }
+ ImageLayout.prototype.watch = function () {
+ var i, img;
+ var obj = this;
+ var results_nodes = d.querySelectorAll(this.results_selector);
+ var results_length = results_nodes.length;
- function throttleAlign(e) {
- if (obj._alignAllDone) {
- obj._alignAllDone = false;
- setTimeout(function() {
+ function throttleAlign() {
+ if (obj.isAlignDone) {
+ obj.isAlignDone = false;
+ setTimeout(function () {
obj.align();
- obj._alignAllDone = true;
+ obj.isAlignDone = true;
}, 100);
}
}
+ w.addEventListener('pageshow', throttleAlign);
+ w.addEventListener('load', throttleAlign);
w.addEventListener('resize', throttleAlign);
- w.addEventListener('pageshow', align);
for (i = 0; i < results_length; i++) {
img = results_nodes[i].querySelector(this.img_selector);
- if (typeof img !== 'undefined') {
+ if (img !== null && img !== undefined) {
img.addEventListener('load', throttleAlign);
img.addEventListener('error', throttleAlign);
}
@@ -148,4 +160,4 @@
w.searx.ImageLayout = ImageLayout;
-})(window, document);
+}(window, document));
diff --git a/searx/static/themes/courgette/img/favicon.png b/searx/static/themes/courgette/img/favicon.png
deleted file mode 100644
index 3818d3d..0000000
--- a/searx/static/themes/courgette/img/favicon.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/courgette/img/preference-icon.png b/searx/static/themes/courgette/img/preference-icon.png
deleted file mode 100644
index 57e991c..0000000
--- a/searx/static/themes/courgette/img/preference-icon.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/courgette/img/search-icon.png b/searx/static/themes/courgette/img/search-icon.png
deleted file mode 100644
index 9bc7a22..0000000
--- a/searx/static/themes/courgette/img/search-icon.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/courgette/img/searx-mobile.png b/searx/static/themes/courgette/img/searx-mobile.png
deleted file mode 100644
index 31dd7d1..0000000
--- a/searx/static/themes/courgette/img/searx-mobile.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/courgette/img/searx.png b/searx/static/themes/courgette/img/searx.png
deleted file mode 100644
index 68c2e4f..0000000
--- a/searx/static/themes/courgette/img/searx.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/courgette/img/searx_logo.svg b/searx/static/themes/courgette/img/searx_logo.svg
deleted file mode 100644
index 67a2d45..0000000
--- a/searx/static/themes/courgette/img/searx_logo.svg
+++ /dev/null
@@ -1,203 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="744.09448819"
- height="1052.3622047"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="searx_logo.svg"
- inkscape:export-filename="/home/a/magnif.png"
- inkscape:export-xdpi="203.1774"
- inkscape:export-ydpi="203.1774">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3857">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3859" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3861" />
- </linearGradient>
- <linearGradient
- id="linearGradient3790">
- <stop
- style="stop-color:#a9a9a9;stop-opacity:1;"
- offset="0"
- id="stop3792" />
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="1"
- id="stop3794" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3790"
- id="radialGradient3798"
- cx="294.45947"
- cy="208.37973"
- fx="294.45947"
- fy="208.37973"
- r="107.58125"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3857"
- id="linearGradient3865"
- x1="120.68947"
- y1="239.61774"
- x2="120.68947"
- y2="602.17517"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3790"
- id="linearGradient3912"
- x1="186.74416"
- y1="354.42426"
- x2="255.84358"
- y2="254.35953"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.2227304,0,0,0.89945099,-289.31433,113.40259)" />
- <filter
- inkscape:collect="always"
- id="filter4024"
- x="-0.12996517"
- width="1.2599303"
- y="-0.14709377"
- height="1.2941875">
- <feGaussianBlur
- inkscape:collect="always"
- stdDeviation="6.4759344"
- id="feGaussianBlur4026" />
- </filter>
- <filter
- inkscape:collect="always"
- id="filter3983"
- x="-1.0608404"
- width="3.1216809"
- y="-0.31017202"
- height="1.620344">
- <feGaussianBlur
- inkscape:collect="always"
- stdDeviation="9.392858"
- id="feGaussianBlur3985" />
- </filter>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.979899"
- inkscape:cx="30.708726"
- inkscape:cy="948.08556"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="1364"
- inkscape:window-height="663"
- inkscape:window-x="0"
- inkscape:window-y="30"
- inkscape:window-maximized="0"
- showguides="true"
- inkscape:guide-bbox="true" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 70.523181,34.870671 c -7.11959,15.242893 -10.17798,31.779192 -8.22563,48.814566 5.01677,43.774133 41.675309,79.324503 91.536109,95.162893 -6.62576,-22.40752 -5.34093,-44.9362 2.6395,-65.84431 C 108.73618,98.821131 74.828141,70.195435 70.523181,34.870671 z"
- id="path3814-0-7"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 303.77876,36.21406 c 7.11959,15.242893 10.17798,31.779192 8.22563,48.814566 -5.01677,43.774134 -41.67531,79.324504 -91.53611,95.162894 6.62576,-22.40752 5.34093,-44.9362 -2.6395,-65.84431 47.73698,-14.18269 81.64502,-42.808386 85.94998,-78.13315 z"
- id="path3814-0"
- inkscape:connector-curvature="0" />
- <path
- transform="matrix(0.6556593,-0.75505688,0.75505688,0.6556593,0,0)"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m -5.0905523,259.06055 18.4167573,0 c 6.220455,0 11.228257,16.68196 11.228257,37.40349 l 0,172.83701 c 0,20.72153 -5.007802,37.40349 -11.228257,37.40349 l -18.4167573,0 c -6.2204547,0 -11.2282577,-16.68196 -11.2282577,-37.40349 l 0,-172.83701 c 0,-20.72153 5.007803,-37.40349 11.2282577,-37.40349 z"
- id="rect3804" />
- <path
- sodipodi:type="arc"
- style="fill:url(#radialGradient3798);fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path2987"
- sodipodi:cx="294.45947"
- sodipodi:cy="208.37973"
- sodipodi:rx="107.58125"
- sodipodi:ry="107.58125"
- d="m 402.04073,208.37973 a 107.58125,107.58125 0 1 1 -215.16251,0 107.58125,107.58125 0 1 1 215.16251,0 z"
- transform="translate(-107.07617,-60.609153)" />
- <path
- sodipodi:type="arc"
- style="fill:url(#linearGradient3865);fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path3757"
- sodipodi:cx="131.82491"
- sodipodi:cy="299.29346"
- sodipodi:rx="101.52033"
- sodipodi:ry="101.52033"
- d="m 233.34524,299.29346 a 101.52033,101.52033 0 1 1 -203.040667,0 101.52033,101.52033 0 1 1 203.040667,0 z"
- transform="matrix(0.76865672,0,0,0.76865672,85.80266,-82.535889)" />
- <path
- sodipodi:type="arc"
- style="fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path3800"
- sodipodi:cx="183.34268"
- sodipodi:cy="156.35687"
- sodipodi:rx="27.274118"
- sodipodi:ry="27.274118"
- d="m 210.6168,156.35687 a 27.274118,27.274118 0 1 1 -54.54824,0 27.274118,27.274118 0 1 1 54.54824,0 z"
- transform="translate(5,-7.1428572)" />
- <path
- sodipodi:type="arc"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path3802"
- sodipodi:cx="197.9899"
- sodipodi:cy="203.32896"
- sodipodi:rx="5.5558391"
- sodipodi:ry="5.5558391"
- d="m 203.54574,203.32896 a 5.5558391,5.5558391 0 1 1 -11.11168,0 5.5558391,5.5558391 0 1 1 11.11168,0 z"
- transform="translate(1.4847712,-63.564549)" />
- <rect
- style="fill:#ffffff;fill-opacity:0.82211531000000004;fill-rule:nonzero;stroke:none;filter:url(#filter4024)"
- id="rect3916"
- width="2.2392972"
- height="159.43797"
- x="19.525793"
- y="337.8396"
- rx="2.8666623"
- ry="9.0007057"
- transform="matrix(0.74466525,-0.84318084,0.84318084,0.74466525,-35.543204,-26.349917)" />
- </g>
-</svg>
diff --git a/searx/static/themes/courgette/js/searx.js b/searx/static/themes/courgette/js/searx.js
deleted file mode 100644
index 92a25e3..0000000
--- a/searx/static/themes/courgette/js/searx.js
+++ /dev/null
@@ -1,45 +0,0 @@
-if(searx.autocompleter) {
- window.addEvent('domready', function() {
- new Autocompleter.Request.JSON('q', './autocompleter', {
- postVar:'q',
- postData:{
- 'format': 'json'
- },
- ajaxOptions:{
- timeout: 5 // Correct option?
- },
- 'minLength': 4,
- // 'selectMode': 'type-ahead',
- cache: true,
- delay: 300
- });
- });
-}
-
-(function (w, d) {
- 'use strict';
- function addListener(el, type, fn) {
- if (el.addEventListener) {
- el.addEventListener(type, fn, false);
- } else {
- el.attachEvent('on' + type, fn);
- }
- }
-
- function placeCursorAtEnd() {
- if (this.setSelectionRange) {
- var len = this.value.length * 2;
- this.setSelectionRange(len, len);
- }
- }
-
- addListener(w, 'load', function () {
- var qinput = d.getElementById('q');
- if (qinput !== null && qinput.value === "") {
- addListener(qinput, 'focus', placeCursorAtEnd);
- qinput.focus();
- }
- });
-
-})(window, document);
-
diff --git a/searx/static/themes/courgette/less/style-rtl.less b/searx/static/themes/courgette/less/style-rtl.less
deleted file mode 100644
index 3e357d3..0000000
--- a/searx/static/themes/courgette/less/style-rtl.less
+++ /dev/null
@@ -1,42 +0,0 @@
-.q {
- padding: 0.5em 1em 0.5em 3em;
-}
-
-#search_submit {
- left: 0;
- right:auto;
-}
-
-.result .favicon {
- float: right;
- margin-left: 0.5em;
- margin-right: 0;
-}
-
-#sidebar {
- right: auto;
- left: 0;
-}
-
-#results {
- padding: 0px 32px 0px 272px;
-}
-
-.search.center {
- padding-right: 0;
- padding-left: 17em;
-}
-
-.right {
- right: auto;
- left: 0;
-}
-
-#pagination form + form {
- float: left;
- margin-top: -2em;
-}
-
-.engine-table {
- text-align:right;
-} \ No newline at end of file
diff --git a/searx/static/themes/courgette/less/style.less b/searx/static/themes/courgette/less/style.less
deleted file mode 100644
index 26da728..0000000
--- a/searx/static/themes/courgette/less/style.less
+++ /dev/null
@@ -1,695 +0,0 @@
-
-@color-main: #3498DB;
-@color-focus: #0665A2;
-@color-other-links: #666;
-@color-fonts: #333;
-@center-width: 70em;
-
-
-
-
-* {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-
-input[type="search"] {
- -webkit-appearance: textfield;
-}
-
-h2 {
- color: @color-other-links;
- text-transform: uppercase;
-}
-
-body {
- font-family: sans-serif;
- line-height: 1.5;
- margin: 0;
- background: #EEE;
-}
-
-html {
- position: relative;
- min-height: 100%;
-}
-
-a {
- color: @color-other-links;
-}
-
-.title h1 {
- font-size:7em;
- color:@color-main;
- margin:0 auto;
- line-height:100px;
- margin-top:-20px;
- padding-bottom:20px;
-}
-
-.center {
- max-width: @center-width;
- text-align: center;
- background: rgba(255,255,255,0.6);
- padding: 2em;
- margin: 7% auto 0;
- position: relative;
-}
-
-.center.search {
- position: static;
- width: auto;
- background: none;
- margin: auto;
- padding-top: 1.8em;
-}
-
-@media screen and (min-width: 1001px) {
- .center:after {
- content: "";
- z-index: -1;
- background: url(../img/bg-body-index.jpg) no-repeat;
- background-size: cover;
- width: 100%;
- height: 100%;
- top: 0;
- left: 0;
- position: fixed;
- }
- .center.search:after {
- content: none;
- }
-}
-
-.autocompleter-choices {
- position: absolute;
- margin: 0;
- padding: 0;
- background: #FFF;
-}
-
-.autocompleter-choices li {
- padding: 0.5em 1em;
-}
-
-.autocompleter-choices li:hover {
- background: @color-main;
- color: #FFF;
- cursor: pointer;
-}
-
-#categories {
- text-align: center;
-}
-
-.top_margin {
- position: absolute;
- bottom: -3.5em;
- width: 100%;
- left: 0;
-}
-
-.top_margin a {
- display: inline-block;
- margin-right: 1em;
- color: #FFF;
- text-decoration: none;
-}
-
-.top_margin a:hover,
-.top_margin a:focus {
- text-decoration: underline;
-}
-
-@media screen and (max-width: 1000px) {
- .center { background: none; }
- .top_margin a {
- color: @color-fonts;
- }
-}
-
-.checkbox_container { margin-top: 1.5em; }
-.checkbox_container label {
- padding: 0.5em 1em;
- color: @color-fonts;
- cursor: pointer;
- font-size: 0.9em;
-}
-
-.checkbox_container label:hover {
- background: @color-main;
- color: #FFF;
-}
-
-.checkbox_container input[type="checkbox"] {
- position: absolute;
- top: -9999px;
-}
-
-.checkbox_container input[type="checkbox"]:checked + label {
- background: @color-main;
- color: #FFF;
-}
-
-#categories_container > div {
- display: inline-block;
-}
-
-#categories .hidden {
- display: none;
- position: absolute;
- bottom: 1em;
- left: 0;
- text-align: center;
- width: 100%;
- font-size: 0.9em;
- font-style: italic;
- color: @color-fonts;
-}
-
-#categories:hover .hidden {
- display: block;
-}
-
-@media screen and (max-width: 900px) {
- #categories_container { letter-spacing: -5px; }
- #categories_container > div {
- letter-spacing: normal;
- margin-top: 1em;
- }
- .checkbox_container {
- margin: 0;
- }
- .checkbox_container label {
- display: block;
- background: #CCC;
- padding: 1em;
- border: 1px solid #FFF;
- }
- .top_margin { position: static; }
- #categories .hidden {
- position: static;
- display: block;
- }
-}
-
-@media screen and (max-width: 900px) and (min-width: 501px) {
- #categories_container > div {
- width: 31%;
- margin-left: 2.333%;
- }
- #categories_container > div:nth-child(3n+1) { margin-left: 0; }
-}
-
-@media screen and (max-width: 500px) {
- #categories_container > div {
- width: 48%;
- margin-left: 2%;
- font-size: 0.9em;
- }
- #categories_container > div:nth-child(2n+1) { margin-left: 0; }
- .title h1 {
- background: url(../img/searx-mobile.png) no-repeat;
- width: 200px;
- height: 39px;
- }
-}
-
-#search_wrapper {
- position: relative;
-}
-
-.q {
- padding: 0.5em 3em 0.5em 1em;
- width: 100%;
- font-size: 1.5em;
- border: 0;
- color: #666;
-}
-
-#search_submit {
- position: absolute;
- top: 0;
- right: 0;
- border: 0;
- background:url("../img/search-icon.png") no-repeat scroll center center / 65% auto @color-main;
- text-indent: -9999px;
- width: 5em;
- height: 100%;
- cursor: pointer;
-}
-
-#search_submit:hover,
-#search_submit:focus {
- background-color: @color-focus;
-}
-
-#sidebar {
- background: @color-main;
- position: fixed;
- top: 0;
- right: 0;
- width: 15em;
- height: 100%;
- padding: 1.5em;
- text-align: right;
-}
-
-.right {
- position: fixed;
- bottom: 1.5em;
- width: 15em;
- right: 0;
- z-index: 1;
- padding: 0 1.5em;
- text-align: right;
-}
-
-.right a {
- color: #FFF;
- display: block;
- text-decoration: none;
-}
-
-.right a:hover,
-.right a:focus {
- text-decoration: underline;
-}
-
-#preferences {
- background: url("../img/preference-icon.png") no-repeat right center / 12% auto;
- padding-right: 1.8em;
-}
-
-#preferences:hover,
-#preferences:focus {
-
-}
-
-#search_url input {
- border: 0;
- padding: 0.5em;
-}
-
-#sidebar > div {
- margin-bottom: 1em;
- color: #FFF;
-}
-
-#sidebar form {
- display: inline-block;
-}
-
-#sidebar input[type="submit"] {
- background: #CCC;
- border: 0;
- padding: 0.5em 1em;
- cursor: pointer;
- margin-top: 0.5em;
-}
-
-#sidebar input[type="submit"]:hover,
-#sidebar input[type="submit"]:focus {
- color: #FFF;
- background-color: @color-focus;
-}
-
-#results {
- padding-right: 17em;
- padding-left: 2em;
- padding: 0 17em 0 2em;
-}
-
-.result p {
- font-size: 0.9em;
-}
-
-.result .engines {
- text-align: right;
-}
-
-.result .content {
- margin: 0;
- color: #666;
-}
-
-.result .url {
- margin-top: 0;
- color: #FF6530;
-}
-
-.result .favicon {
- float: left;
- position: relative;
- top: 0.5em;
- margin-right: 0.5em;
-}
-
-.definition_result {
- background: #CCC;
- padding: 1em;
-}
-
-.definition_result .result_title,
-.definition_result p {
- margin: 0;
-}
-
-.result_title {
- margin-bottom: 0;
- font-weight: normal;
-}
-
-.highlight {
- font-weight: bold;
-}
-
-.result_title a {
- color: @color-main;
- text-decoration: none;
-}
-
-.result_title a:hover,
-.result_title a:focus {
- text-decoration: underline;
-}
-
-.cache_link {
- color: #666;
- font-size: 0.9em;
- font-style: italic;
-}
-
-.search.center {
- padding-right: 17em;
-}
-
-#answers {
- border: 2px solid @color-main;
- padding: 20px;
- color:#666;
- text-align: center;
- max-width:@center-width;
- margin:0 auto 20px;
-}
-
-#suggestions { margin-bottom: 1em; }
-
-#suggestions span { color: #666; }
-
-#suggestions form {
- display: inline-block;
- vertical-align: top;
- margin-bottom: 0.5em;
-}
-
-#suggestions input[type="submit"] {
- color: @color-fonts;
- padding: 0.5em 1em;
- border: 0;
- background: #CCC;
- cursor:pointer;
-}
-
-#suggestions input[type="submit"]:hover,
-#suggestions input[type="submit"]:focus {
- background: @color-main;
- color: #FFF;
-}
-
-#pagination {
- margin: 1.5em 0 2em;
-}
-
-#pagination form + form {
- float: right;
- margin-top: -2em;
-}
-
-input[type="submit"] {
- display: inline-block;
- background: @color-main;
- color: #FFF;
- border: 0;
- padding: 0.6em 1em;
- cursor: pointer;
-}
-
-input[type="submit"]:hover,
-input[type="submit"]:focus {
- background: @color-focus;
-}
-
-.row {
- max-width: 60em;
- margin: auto;
-}
-
-.row a {
- color: @color-main;
-}
-
-.row form {
- letter-spacing: -5px;
-}
-
-.row form > * { letter-spacing: normal; }
-
-.row p { margin: 0; }
-
-.row fieldset {
- display: inline-block;
- width: 48%;
- vertical-align: top;
-}
-
-.row fieldset:last-of-type {
- display: block;
- width: auto;
- background: none;
- padding: 0;
-}
-
-.row fieldset:nth-child(odd) {
- margin-right: 2%;
-}
-
-.row fieldset:nth-child(2) {
- min-height: 10.5em;
-}
-
-@media screen and (max-width: 900px) {
- .row {
- margin: 0 1em;
- }
-
- .row fieldset { width: 49%; }
- .row fieldset,
- .row fieldset:nth-child(odd) {
- margin-right: 0;
- }
-
- .row fieldset:first-child {
- width: 100%;
- margin-right: 0;
- }
-
- .row fieldset:nth-child(even) {
- margin-right: 2%;
- }
-}
-
-@media screen and (max-width: 800px) {
- .row fieldset { width: 100%; }
-
- select { width: 100%; }
-
- table { font-size: 0.8em; }
- .right {display: none;}
- #sidebar { display: none; }
- #results { padding: 0 2em; }
- .search.center {
- padding-right: 2em;
- }
-}
-
-@media screen and (max-width: 400px) {
- .row #categories_container > div {
- width: 100%;
- margin-left: 0;
- }
-}
-
-fieldset {
- border: 0;
- margin: 1em 0;
- background: #CCC;
- padding: 1.5em;
-}
-
-table {
- width: 100%;
- text-align: left;
- border: 1px solid #CCC;
- border-collapse: collapse;
-}
-
-table th {
- background: #999;
- color: #FFF;
-}
-
-table tr:nth-child(odd) {
- background: #CCC;
-}
-
-table th,
-table td {
- padding: 0.5em 1em;
- border: 1px solid #FFF;
-}
-
-.engine_checkbox label {
- padding: 0.5em;
- background: @color-main;
- color: #FFF;
- cursor: pointer;
-}
-
-.engine_checkbox .deny {
- background: @color-main;
-}
-
-.engine_checkbox .allow {
- display: none;
- background: #666;
-}
-
-.engine_checkbox input {
- display: none;
-}
-
-.engine_checkbox input:checked + .allow {
- display: inline;
-}
-
-.engine_checkbox input:checked + .allow + .deny{
- display: none;
-}
-
-.row input[type="submit"] {
- font-size: 1em;
- margin: 1em 0 2em;
-}
-
-.row .right {
- position: static;
- display: inline-block;
-
-}
-
-.row .right a {
- color: @color-fonts;
- width: auto;
- text-align: left;
- padding: 0;
-}
-
-.small_font {
- font-size: 0.8em;
-}
-
-table th {
- padding: 1em;
-}
-
-legend {
- background: #EEE;
- padding: 0 1em;
- position: relative;
-}
-
-select {
- border: 1px solid #DDD;
- padding: 0.5em 0.8em;
- font-size: 1em;
-}
-
-.highlight .hll { background-color: #ffffcc }
-.highlight { background: #f8f8f8; }
-.highlight .c { color: #408080; font-style: italic } /* Comment */
-.highlight .err { border: 1px solid #FF0000 } /* Error */
-.highlight .k { color: #008000; font-weight: bold } /* Keyword */
-.highlight .o { color: #666666 } /* Operator */
-.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
-.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
-.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
-.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
-.highlight .gd { color: #A00000 } /* Generic.Deleted */
-.highlight .ge { font-style: italic } /* Generic.Emph */
-.highlight .gr { color: #FF0000 } /* Generic.Error */
-.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.highlight .gi { color: #00A000 } /* Generic.Inserted */
-.highlight .go { color: #888888 } /* Generic.Output */
-.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
-.highlight .gs { font-weight: bold } /* Generic.Strong */
-.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.highlight .gt { color: #0044DD } /* Generic.Traceback */
-.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
-.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
-.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
-.highlight .kp { color: #008000 } /* Keyword.Pseudo */
-.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
-.highlight .kt { color: #B00040 } /* Keyword.Type */
-.highlight .m { color: #666666 } /* Literal.Number */
-.highlight .s { color: #BA2121 } /* Literal.String */
-.highlight .na { color: #7D9029 } /* Name.Attribute */
-.highlight .nb { color: #008000 } /* Name.Builtin */
-.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
-.highlight .no { color: #880000 } /* Name.Constant */
-.highlight .nd { color: #AA22FF } /* Name.Decorator */
-.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
-.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
-.highlight .nf { color: #0000FF } /* Name.Function */
-.highlight .nl { color: #A0A000 } /* Name.Label */
-.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
-.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
-.highlight .nv { color: #19177C } /* Name.Variable */
-.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
-.highlight .w { color: #bbbbbb } /* Text.Whitespace */
-.highlight .mf { color: #666666 } /* Literal.Number.Float */
-.highlight .mh { color: #666666 } /* Literal.Number.Hex */
-.highlight .mi { color: #666666 } /* Literal.Number.Integer */
-.highlight .mo { color: #666666 } /* Literal.Number.Oct */
-.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
-.highlight .sc { color: #BA2121 } /* Literal.String.Char */
-.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
-.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
-.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
-.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
-.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
-.highlight .sx { color: #008000 } /* Literal.String.Other */
-.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
-.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
-.highlight .ss { color: #19177C } /* Literal.String.Symbol */
-.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
-.highlight .vc { color: #19177C } /* Name.Variable.Class */
-.highlight .vg { color: #19177C } /* Name.Variable.Global */
-.highlight .vi { color: #19177C } /* Name.Variable.Instance */
-.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
-
-.highlight pre { overflow: auto; }
-
-.highlight .lineno {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- cursor: default;
-}
-
-.highlight .lineno::selection { background: transparent; } /* WebKit/Blink Browsers */
-.highlight .lineno::-moz-selection { background: transparent; } /* Gecko Browsers */
diff --git a/searx/static/themes/legacy/img/favicon.png b/searx/static/themes/legacy/img/favicon.png
deleted file mode 100644
index 3818d3d..0000000
--- a/searx/static/themes/legacy/img/favicon.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/legacy/img/preference-icon.png b/searx/static/themes/legacy/img/preference-icon.png
deleted file mode 100644
index 8bdee64..0000000
--- a/searx/static/themes/legacy/img/preference-icon.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/legacy/img/search-icon.png b/searx/static/themes/legacy/img/search-icon.png
deleted file mode 100644
index d70310b..0000000
--- a/searx/static/themes/legacy/img/search-icon.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/legacy/img/searx.png b/searx/static/themes/legacy/img/searx.png
deleted file mode 100644
index a98f12a..0000000
--- a/searx/static/themes/legacy/img/searx.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/legacy/img/searx_logo.svg b/searx/static/themes/legacy/img/searx_logo.svg
deleted file mode 100644
index 67a2d45..0000000
--- a/searx/static/themes/legacy/img/searx_logo.svg
+++ /dev/null
@@ -1,203 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="744.09448819"
- height="1052.3622047"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="searx_logo.svg"
- inkscape:export-filename="/home/a/magnif.png"
- inkscape:export-xdpi="203.1774"
- inkscape:export-ydpi="203.1774">
- <defs
- id="defs4">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient3857">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop3859" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop3861" />
- </linearGradient>
- <linearGradient
- id="linearGradient3790">
- <stop
- style="stop-color:#a9a9a9;stop-opacity:1;"
- offset="0"
- id="stop3792" />
- <stop
- style="stop-color:#000000;stop-opacity:1;"
- offset="1"
- id="stop3794" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3790"
- id="radialGradient3798"
- cx="294.45947"
- cy="208.37973"
- fx="294.45947"
- fy="208.37973"
- r="107.58125"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3857"
- id="linearGradient3865"
- x1="120.68947"
- y1="239.61774"
- x2="120.68947"
- y2="602.17517"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient3790"
- id="linearGradient3912"
- x1="186.74416"
- y1="354.42426"
- x2="255.84358"
- y2="254.35953"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.2227304,0,0,0.89945099,-289.31433,113.40259)" />
- <filter
- inkscape:collect="always"
- id="filter4024"
- x="-0.12996517"
- width="1.2599303"
- y="-0.14709377"
- height="1.2941875">
- <feGaussianBlur
- inkscape:collect="always"
- stdDeviation="6.4759344"
- id="feGaussianBlur4026" />
- </filter>
- <filter
- inkscape:collect="always"
- id="filter3983"
- x="-1.0608404"
- width="3.1216809"
- y="-0.31017202"
- height="1.620344">
- <feGaussianBlur
- inkscape:collect="always"
- stdDeviation="9.392858"
- id="feGaussianBlur3985" />
- </filter>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.979899"
- inkscape:cx="30.708726"
- inkscape:cy="948.08556"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="1364"
- inkscape:window-height="663"
- inkscape:window-x="0"
- inkscape:window-y="30"
- inkscape:window-maximized="0"
- showguides="true"
- inkscape:guide-bbox="true" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1">
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 70.523181,34.870671 c -7.11959,15.242893 -10.17798,31.779192 -8.22563,48.814566 5.01677,43.774133 41.675309,79.324503 91.536109,95.162893 -6.62576,-22.40752 -5.34093,-44.9362 2.6395,-65.84431 C 108.73618,98.821131 74.828141,70.195435 70.523181,34.870671 z"
- id="path3814-0-7"
- inkscape:connector-curvature="0" />
- <path
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 303.77876,36.21406 c 7.11959,15.242893 10.17798,31.779192 8.22563,48.814566 -5.01677,43.774134 -41.67531,79.324504 -91.53611,95.162894 6.62576,-22.40752 5.34093,-44.9362 -2.6395,-65.84431 47.73698,-14.18269 81.64502,-42.808386 85.94998,-78.13315 z"
- id="path3814-0"
- inkscape:connector-curvature="0" />
- <path
- transform="matrix(0.6556593,-0.75505688,0.75505688,0.6556593,0,0)"
- style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m -5.0905523,259.06055 18.4167573,0 c 6.220455,0 11.228257,16.68196 11.228257,37.40349 l 0,172.83701 c 0,20.72153 -5.007802,37.40349 -11.228257,37.40349 l -18.4167573,0 c -6.2204547,0 -11.2282577,-16.68196 -11.2282577,-37.40349 l 0,-172.83701 c 0,-20.72153 5.007803,-37.40349 11.2282577,-37.40349 z"
- id="rect3804" />
- <path
- sodipodi:type="arc"
- style="fill:url(#radialGradient3798);fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path2987"
- sodipodi:cx="294.45947"
- sodipodi:cy="208.37973"
- sodipodi:rx="107.58125"
- sodipodi:ry="107.58125"
- d="m 402.04073,208.37973 a 107.58125,107.58125 0 1 1 -215.16251,0 107.58125,107.58125 0 1 1 215.16251,0 z"
- transform="translate(-107.07617,-60.609153)" />
- <path
- sodipodi:type="arc"
- style="fill:url(#linearGradient3865);fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path3757"
- sodipodi:cx="131.82491"
- sodipodi:cy="299.29346"
- sodipodi:rx="101.52033"
- sodipodi:ry="101.52033"
- d="m 233.34524,299.29346 a 101.52033,101.52033 0 1 1 -203.040667,0 101.52033,101.52033 0 1 1 203.040667,0 z"
- transform="matrix(0.76865672,0,0,0.76865672,85.80266,-82.535889)" />
- <path
- sodipodi:type="arc"
- style="fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path3800"
- sodipodi:cx="183.34268"
- sodipodi:cy="156.35687"
- sodipodi:rx="27.274118"
- sodipodi:ry="27.274118"
- d="m 210.6168,156.35687 a 27.274118,27.274118 0 1 1 -54.54824,0 27.274118,27.274118 0 1 1 54.54824,0 z"
- transform="translate(5,-7.1428572)" />
- <path
- sodipodi:type="arc"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
- id="path3802"
- sodipodi:cx="197.9899"
- sodipodi:cy="203.32896"
- sodipodi:rx="5.5558391"
- sodipodi:ry="5.5558391"
- d="m 203.54574,203.32896 a 5.5558391,5.5558391 0 1 1 -11.11168,0 5.5558391,5.5558391 0 1 1 11.11168,0 z"
- transform="translate(1.4847712,-63.564549)" />
- <rect
- style="fill:#ffffff;fill-opacity:0.82211531000000004;fill-rule:nonzero;stroke:none;filter:url(#filter4024)"
- id="rect3916"
- width="2.2392972"
- height="159.43797"
- x="19.525793"
- y="337.8396"
- rx="2.8666623"
- ry="9.0007057"
- transform="matrix(0.74466525,-0.84318084,0.84318084,0.74466525,-35.543204,-26.349917)" />
- </g>
-</svg>
diff --git a/searx/static/themes/legacy/js/searx.js b/searx/static/themes/legacy/js/searx.js
deleted file mode 100644
index d6d5b74..0000000
--- a/searx/static/themes/legacy/js/searx.js
+++ /dev/null
@@ -1,49 +0,0 @@
-if(searx.autocompleter) {
- window.addEvent('domready', function() {
- new Autocompleter.Request.JSON('q', './autocompleter', {
- postVar:'q',
- postData:{
- 'format': 'json'
- },
- ajaxOptions:{
- timeout: 5 // Correct option?
- },
- 'minLength': 4,
- 'selectMode': false,
- cache: true,
- delay: 300
- });
- });
-}
-
-(function (w, d) {
- 'use strict';
- function addListener(el, type, fn) {
- if (el.addEventListener) {
- el.addEventListener(type, fn, false);
- } else {
- el.attachEvent('on' + type, fn);
- }
- }
-
- function placeCursorAtEnd() {
- if (this.setSelectionRange) {
- var len = this.value.length * 2;
- this.setSelectionRange(len, len);
- }
- }
-
- addListener(w, 'load', function () {
- var qinput = d.getElementById('q');
- if (qinput !== null && qinput.value === "") {
- addListener(qinput, 'focus', placeCursorAtEnd);
- qinput.focus();
- }
- });
-
- if (!!('ontouchstart' in window)) {
- document.getElementsByTagName("html")[0].className += " touch";
- }
-
-})(window, document);
-
diff --git a/searx/static/themes/legacy/less/autocompleter.less b/searx/static/themes/legacy/less/autocompleter.less
deleted file mode 100644
index 4ab2508..0000000
--- a/searx/static/themes/legacy/less/autocompleter.less
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * searx, A privacy-respecting, hackable metasearch engine
- */
-
-ul {
- &.autocompleter-choices {
- position: absolute;
- margin: 0;
- padding: 0;
- list-style: none;
- border: 1px solid @color-autocompleter-choices-border;
- border-left-color: @color-autocompleter-choices-border-left-right;
- border-right-color: @color-autocompleter-choices-border-left-right;
- border-bottom-color: @color-autocompleter-choices-border-bottom;
- text-align: left;
- font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
- z-index: 50;
- background-color: @color-autocompleter-choices-background;
- color: @color-autocompleter-choices-font;
-
- li {
- position: relative;
- margin: -2px 0 0 0;
- padding: 0.2em 1.5em 0.2em 1em;
- display: block;
- float: none !important;
- cursor: pointer;
- font-weight: normal;
- white-space: nowrap;
- font-size: 1em;
- line-height: 1.5em;
-
- &.autocompleter-selected {
- background-color: @color-autocompleter-selected-background;
- color: @color-autocompleter-selected-font;
-
- span.autocompleter-queried {
- color: @color-autocompleter-selected-queried-font;
- }
- }
- }
-
- span.autocompleter-queried {
- display: inline;
- float: none;
- font-weight: bold;
- margin: 0;
- padding: 0;
- }
- }
-}
-
-/*.autocompleter-loading {
- //background-image: url(images/spinner.gif);
- background-repeat: no-repeat;
- background-position: right 50%;
-}*/
-
-/*textarea.autocompleter-loading {
- background-position: right bottom;
-}*/
diff --git a/searx/static/themes/legacy/less/code.less b/searx/static/themes/legacy/less/code.less
deleted file mode 100644
index a688dd9..0000000
--- a/searx/static/themes/legacy/less/code.less
+++ /dev/null
@@ -1,83 +0,0 @@
-.highlight .hll { background-color: #ffffcc }
-.highlight { background: #f8f8f8; }
-.highlight .c { color: #408080; font-style: italic } /* Comment */
-.highlight .err { border: 1px solid #FF0000 } /* Error */
-.highlight .k { color: #008000; font-weight: bold } /* Keyword */
-.highlight .o { color: #666666 } /* Operator */
-.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
-.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
-.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
-.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
-.highlight .gd { color: #A00000 } /* Generic.Deleted */
-.highlight .ge { font-style: italic } /* Generic.Emph */
-.highlight .gr { color: #FF0000 } /* Generic.Error */
-.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.highlight .gi { color: #00A000 } /* Generic.Inserted */
-.highlight .go { color: #888888 } /* Generic.Output */
-.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
-.highlight .gs { font-weight: bold } /* Generic.Strong */
-.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.highlight .gt { color: #0044DD } /* Generic.Traceback */
-.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
-.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
-.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
-.highlight .kp { color: #008000 } /* Keyword.Pseudo */
-.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
-.highlight .kt { color: #B00040 } /* Keyword.Type */
-.highlight .m { color: #666666 } /* Literal.Number */
-.highlight .s { color: #BA2121 } /* Literal.String */
-.highlight .na { color: #7D9029 } /* Name.Attribute */
-.highlight .nb { color: #008000 } /* Name.Builtin */
-.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
-.highlight .no { color: #880000 } /* Name.Constant */
-.highlight .nd { color: #AA22FF } /* Name.Decorator */
-.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
-.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
-.highlight .nf { color: #0000FF } /* Name.Function */
-.highlight .nl { color: #A0A000 } /* Name.Label */
-.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
-.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
-.highlight .nv { color: #19177C } /* Name.Variable */
-.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
-.highlight .w { color: #bbbbbb } /* Text.Whitespace */
-.highlight .mf { color: #666666 } /* Literal.Number.Float */
-.highlight .mh { color: #666666 } /* Literal.Number.Hex */
-.highlight .mi { color: #666666 } /* Literal.Number.Integer */
-.highlight .mo { color: #666666 } /* Literal.Number.Oct */
-.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
-.highlight .sc { color: #BA2121 } /* Literal.String.Char */
-.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
-.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
-.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
-.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
-.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
-.highlight .sx { color: #008000 } /* Literal.String.Other */
-.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
-.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
-.highlight .ss { color: #19177C } /* Literal.String.Symbol */
-.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
-.highlight .vc { color: #19177C } /* Name.Variable.Class */
-.highlight .vg { color: #19177C } /* Name.Variable.Global */
-.highlight .vi { color: #19177C } /* Name.Variable.Instance */
-.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
-
-.highlight pre {
- overflow: auto;
-}
-
-.highlight .lineno {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- cursor: default;
-
- &::selection {
- background: transparent; /* WebKit/Blink Browsers */
- }
- &::-moz-selection {
- background: transparent; /* Gecko Browsers */
- }
-}
diff --git a/searx/static/themes/legacy/less/definitions.less b/searx/static/themes/legacy/less/definitions.less
deleted file mode 100644
index 0ac0cc9..0000000
--- a/searx/static/themes/legacy/less/definitions.less
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * searx, A privacy-respecting, hackable metasearch engine
- *
- * To change the colors of the site, simple edit this variables
- */
-
-/// Basic Colors
-
-@color-base: #3498DB;
-@color-base-dark: #2980B9;
-@color-base-light: #ECF0F1;
-@color-highlight: #094089;
-@color-black: #000000;
-
-/// General
-
-@color-font: #444;
-@color-font-light: #888;
-
-@color-red: #C0392B;
-
-@color-url-font: #1a11be;
-@color-url-visited-font: #8E44AD;
-@results-width: 50em;
-
-
-/// Start-Screen
-
-// hmarg
-@color-hmarg-border: @color-base;
-@color-hmarg-font: @color-base;
-@color-hmarg-font-hover: @color-base;
-
-
-/// Search-Input
-
-@color-search-border: @color-base;
-@color-search-background: #FFF;
-@color-search-font: #222;
-
-/// Autocompleter
-
-@color-autocompleter-choices-background: #FFF;
-@color-autocompleter-choices-border: @color-base;
-@color-autocompleter-choices-border-left-right: @color-base;
-@color-autocompleter-choices-border-bottom: @color-base;
-
-@color-autocompleter-choices-font: #444;
-
-/// Answers
-@color-answers-border: @color-base-dark;
-
-// Selected
-@color-autocompleter-selected-background: #444;
-@color-autocompleter-selected-font: #FFF;
-@color-autocompleter-selected-queried-font: #9FCFFF;
-
-/// Categories
-
-@color-categories-item-selected: @color-base;
-@color-categories-item-selected-font: #FFF;
-
-@color-categories-item-border-selected: @color-base-dark;
-@color-categories-item-border-unselected: #E8E7E6;
-@color-categories-item-border-unselected-hover: @color-base;
-
-
-/// Results
-
-@color-suggestions-button-background: @color-base;
-@color-suggestions-button-font: #FFF;
-
-@color-download-button-background: @color-base;
-@color-download-button-font: #FFF;
-
-@color-result-search-background: @color-base-light;
-
-@color-result-definition-border: gray;
-@color-result-torrent-border: lightgray;
-@color-result-top-border: #E8E7E6;
-
-// Link to result
-@color-result-link-font: @color-base-dark;
-@color-result-link-visited-font: @color-url-visited-font;
-
-// Url to result
-@color-result-url-font: @color-red;
-
-// Publish Date
-@color-result-publishdate-font: @color-font-light;
-
-// Images
-@color-result-image-span-background-hover: rgba(0, 0, 0, 0.6);
-@color-result-image-span-font: #FFF;
-
-// Search-URL
-@color-result-search-url-border: #888;
-@color-result-search-url-font: #444;
-
-
-/// Settings
-
-@color-settings-fieldset: @color-base;
-@color-settings-tr-hover: #DDD;
-
-// Labels
-@color-settings-label-allowed-background: #E74C3C;
-@color-settings-label-allowed-font: #FFF;
-
-@color-settings-label-deny-background: #2ECC71;
-@color-settings-label-deny-font: @color-font;
-
-@color-settings-return-background: @color-base;
-@color-settings-return-font: #FFF;
-
-/// Other
-
-@color-engines-font: @color-font-light;
-@color-percentage-div-background: #444;
diff --git a/searx/static/themes/legacy/less/mixins.less b/searx/static/themes/legacy/less/mixins.less
deleted file mode 100644
index dbccce6..0000000
--- a/searx/static/themes/legacy/less/mixins.less
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * searx, A privacy-respecting, hackable metasearch engine
- */
-
-// Mixins
-
-.text-size-adjust (@property: 100%) {
- -webkit-text-size-adjust: @property;
- -ms-text-size-adjust: @property;
- -moz-text-size-adjust: @property;
- text-size-adjust: @property;
-}
-
-.rounded-corners (@radius: 4px) {
- -webkit-border-radius: @radius;
- -moz-border-radius: @radius;
- border-radius: @radius;
-}
-
-.user-select () {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
diff --git a/searx/static/themes/legacy/less/search.less b/searx/static/themes/legacy/less/search.less
deleted file mode 100644
index d285ca7..0000000
--- a/searx/static/themes/legacy/less/search.less
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * searx, A privacy-respecting, hackable metasearch engine
- */
-
-.search {
- padding: 0;
- margin: 0;
- .checkbox_container label {
- font-size: 0.9em;
- border-bottom: 2px solid @color-categories-item-border-unselected;
- }
-
- .checkbox_container label:hover {
- border-bottom: 2px solid @color-categories-item-border-unselected-hover;
- }
-
- .checkbox_container input[type="checkbox"]:checked + label {
- border-bottom: 2px solid @color-categories-item-border-selected;
- }
-}
-
-#search_wrapper {
- position: relative;
- width: @results-width;
- padding: 10px;
-}
-
-.center #search_wrapper {
- margin-left: auto;
- margin-right: auto;
-}
-
-.q {
- background: none repeat scroll 0 0 @color-search-background;
- border: 1px solid @color-search-border;
- color: @color-search-font;
- font-size: 16px;
- height: 28px;
- margin: 0;
- outline: medium none;
- padding: 2px;
- padding-left: 8px;
- padding-right: 0px !important;
- width: 100%;
- z-index: 2;
-}
-
-#search_submit {
- position: absolute;
- top: 13px;
- right: 1px;
- padding: 0;
- border: 0;
- background: url('../img/search-icon.png') no-repeat;
- background-size: 24px 24px;
- opacity: 0.8;
- width: 24px;
- height: 30px;
- font-size: 0;
-}
-
-@media screen and (max-width: @results-width) {
- #search_wrapper {
- width: 90%;
- clear:both;
- overflow: hidden
- }
-}
diff --git a/searx/static/themes/legacy/less/style-rtl.less b/searx/static/themes/legacy/less/style-rtl.less
deleted file mode 100644
index eac53c1..0000000
--- a/searx/static/themes/legacy/less/style-rtl.less
+++ /dev/null
@@ -1,11 +0,0 @@
-#search_submit {
- left: 1px;
- right:auto;
-}
-
-.result .favicon {
- float: right;
- margin-left: 0.5em;
- margin-right: 0;
-}
-
diff --git a/searx/static/themes/legacy/less/style.less b/searx/static/themes/legacy/less/style.less
deleted file mode 100644
index bbeaf10..0000000
--- a/searx/static/themes/legacy/less/style.less
+++ /dev/null
@@ -1,743 +0,0 @@
-/*
- * searx, A privacy-respecting, hackable metasearch engine
- *
- * To convert "style.less" to "style.css" run: $make styles
- */
-
-@import "definitions.less";
-
-@import "mixins.less";
-
-@import "code.less";
-
-// Main LESS-Code
-
-html {
- font-family: sans-serif;
- font-size: 0.9em;
- .text-size-adjust;
- color: @color-font;
- padding: 0;
- margin: 0;
-}
-
-body, #container {
- padding: 0;
- margin: 0;
-}
-
-#container {
- width: 100%;
- position: absolute;
- top: 0;
-}
-
-// Search-Field
-
-@import "search.less";
-
-// Autocompleter
-
-@import "autocompleter.less";
-
-.row {
- max-width: 800px;
- margin: 20px auto;
- text-align: justify;
-
- h1 {
- font-size: 3em;
- margin-top: 50px;
- }
-
- p {
- padding: 0 10px;
- max-width: 700px;
- }
-
- h3,ul {
- margin: 4px 8px;
- }
-}
-
-.hmarg {
- margin: 0 20px;
- border: 1px solid @color-hmarg-border;
- padding: 4px 10px;
-}
-
-a {
- &:link.hmarg {
- color: @color-hmarg-font;
- }
-
- &:visited.hmarg {
- color: @color-hmarg-font;
- }
-
- &:active.hmarg {
- color: @color-hmarg-font-hover;
- }
-
- &:hover.hmarg {
- color: @color-hmarg-font-hover;
- }
-}
-
-.top_margin {
- margin-top: 60px;
-}
-
-.center {
- text-align: center;
-}
-
-h1 {
- font-size: 5em;
-}
-
-div.title {
- background: url('../img/searx.png') no-repeat;
- width: 100%;
- min-height: 80px;
- background-position: center;
-
- h1 {
- visibility: hidden;
- }
-}
-
-input[type="submit"] {
- padding: 2px 6px;
- margin: 2px 4px;
- display: inline-block;
- background: @color-download-button-background;
- color: @color-download-button-font;
- .rounded-corners;
- border: 0;
- cursor: pointer;
-}
-
-input[type="checkbox"] {
- visibility: hidden;
-}
-
-fieldset {
- margin: 8px;
- border: 1px solid @color-settings-fieldset;
-}
-
-#categories {
- margin: 0 10px;
- .user-select;
-}
-
-.checkbox_container {
- display: inline-block;
- position: relative;
- margin: 0 3px;
- padding: 0px;
-
- input {
- display: none;
- }
-}
-
-.checkbox_container label, .engine_checkbox label {
- cursor: pointer;
- padding: 4px 10px;
- margin: 0;
- display: block;
- text-transform: capitalize;
- .user-select;
-}
-
-.checkbox_container input[type="checkbox"]:checked + label {
- background: @color-categories-item-selected;
- color: @color-categories-item-selected-font;
-}
-
-.engine_checkbox {
- padding: 4px;
-}
-
-label {
- &.allow {
- background: @color-settings-label-allowed-background;
- padding: 4px 8px;
- color: @color-settings-label-allowed-font;
- display: none;
- }
-
- &.deny {
- background: @color-settings-label-deny-background;
- padding: 4px 8px;
- color: @color-settings-label-deny-font;
- display: inline;
- }
-}
-
-.engine_checkbox input[type="checkbox"]:checked + label {
- &:nth-child(2) + label {
- display: none;
- }
-
- &.allow {
- display: inline;
- }
-}
-
-a {
- text-decoration: none;
- color: @color-url-font;
-
- &:visited {
- color: @color-url-visited-font;
- }
-}
-
-.result {
- margin: 19px 0 18px 0;
- padding: 0;
- clear: both;
-}
-
-.result_title {
- margin-bottom: 0;
-
- a {
- color: @color-result-link-font;
- font-weight: normal;
- font-size: 1.1em;
-
- &:hover {
- text-decoration: underline;
- }
-
- &:visited {
- color: @color-result-link-visited-font;
- }
- }
-}
-
-.cache_link {
- font-size: 10px !important;
-}
-
-.result {
- h3 {
- font-size: 1em;
- word-wrap:break-word;
- margin: 5px 0 1px 0;
- padding: 0
- }
-
- .content {
- font-size: 0.8em;
- margin: 0;
- padding: 0;
- max-width: 54em;
- word-wrap:break-word;
- line-height: 1.24;
-
- img {
- float: left;
- margin-right: 5px;
- max-width: 200px;
- max-height: 100px;
- }
-
- br.last {
- clear: both;
- }
- }
-
- .url {
- font-size: 0.8em;
- margin: 0 0 3px 0;
- padding: 0;
- max-width: 54em;
- word-wrap:break-word;
- color: @color-result-url-font;
- }
-
- .published_date {
- font-size: 0.8em;
- color: @color-result-publishdate-font;
- Margin: 5px 20px;
- }
-
- .thumbnail {
- width: 400px;
- }
-}
-
-.engines {
- color: @color-engines-font;
-}
-
-.small_font {
- font-size: 0.8em;
-}
-
-.small p {
- margin: 2px 0;
-}
-
-.right {
- float: right;
-}
-
-.invisible {
- display: none;
-}
-
-.left {
- float: left;
-}
-
-.highlight {
- color: @color-highlight;
-}
-
-.content .highlight {
- color: @color-black;
-}
-
-.image_result {
- display: inline-block;
- margin: 10px 10px;
- position: relative;
- max-height: 160px;
-
- img {
- border: 0;
- max-height: 160px;
- }
-
- p {
- margin: 0;
- padding: 0;
-
- span a {
- display: none;
- color: @color-result-image-span-font;
- }
-
- &:hover span a {
- display: block;
- position: absolute;
- bottom: 0;
- right: 0;
- padding: 4px;
- background-color: @color-result-image-span-background-hover;
- font-size: 0.7em;
- }
- }
-}
-
-.torrent_result {
- border-left: 10px solid @color-result-torrent-border;
- padding-left: 3px;
-
- p {
- margin: 3px;
- font-size: 0.8em;
- }
-
- a {
- color: @color-result-link-font;
-
- &:hover {
- text-decoration: underline;
- }
-
- &:visited {
- color: @color-result-link-visited-font;
- }
- }
-}
-
-.definition_result {
- border-left: 10px solid @color-result-definition-border;
- padding-left: 3px;
-}
-
-.percentage {
- position: relative;
- width: 300px;
-
- div {
- background: @color-percentage-div-background;
- }
-}
-
-table {
- width: 100%;
-}
-
-.result-table {
- margin-bottom: 10px;
-}
-
-td {
- padding: 0 4px;
-}
-
-tr {
- &:hover {
- background: @color-settings-tr-hover;
- }
-}
-
-#results {
- margin: auto;
- padding: 0;
- width: @results-width;
- margin-bottom: 20px;
-}
-
-#sidebar {
- position: fixed;
- bottom: 10px;
- left: 10px;
- margin: 0 2px 5px 5px;
- padding: 0 2px 2px 2px;
- width: 14em;
-
- input {
- padding: 0;
- margin: 3px;
- font-size: 0.8em;
- display: inline-block;
- background: transparent;
- color: @color-result-search-url-font;
- cursor: pointer;
- }
- input[type="submit"] {
- text-decoration: underline;
- }
-}
-
-#suggestions {
-
- form {
- display: inline;
- }
-
-}
-
-#suggestions, #answers {
-
- margin-top: 20px;
- max-width: 45em;
-
-}
-
-#suggestions, #answers, #infoboxes {
-
- input {
- padding: 0;
- margin: 3px;
- font-size: 0.8em;
- display: inline-block;
- background: transparent;
- color: @color-result-search-url-font;
- cursor: pointer;
- }
-
- input[type="submit"] {
- text-decoration: underline;
- }
-
-}
-
-#suggestions-title {
-
-color: @color-font-light;
-
-
-}
-
-#answers {
-
- border: 2px solid @color-answers-border;
- padding: 20px;
-
-}
-
-#answers, #infoboxes {
- form {
- min-width: 210px;
- }
-}
-
-
-#infoboxes {
- position: absolute;
- top: 100px;
- right: 20px;
- margin: 0px 2px 5px 5px;
- padding: 0px 2px 2px;
- max-width: 21em;
- word-wrap: break-word;
-
- .infobox {
- margin: 10px 0 10px;
- border: 1px solid #ddd;
- padding: 5px;
- font-size: 0.8em;
- /* box-shadow: 0px 0px 5px #CCC; */
-
- img {
- max-width: 90%;
- max-heigt: 12em;
- display: block;
- margin: 5px;
- padding: 5px;
- }
-
- h2 {
- margin: 0;
- }
-
- table {
- table-layout: fixed;
-
- td {
- vertical-align: top;
- }
-
- }
-
- input {
- font-size: 1em;
- }
-
- br {
- clear: both;
- }
-
- }
-}
-
-#search_url {
- margin-top: 8px;
-
- input {
- border: 1px solid @color-result-search-url-border;
- padding: 4px;
- color: @color-result-search-url-font;
- width: 14em;
- display: block;
- margin: 4px;
- font-size: 0.8em;
- }
-}
-
-#preferences {
- top: 10px;
- padding: 0;
- border: 0;
- background: url('../img/preference-icon.png') no-repeat;
- background-size: 28px 28px;
- opacity: 0.8;
- width: 28px;
- height: 30px;
- display: block;
-
- * {
- display: none;
- }
-}
-
-#pagination {
- clear: both;
-
- br {
- clear: both;
- }
-}
-
-#apis {
- margin-top: 8px;
- clear: both;
-}
-
-#categories_container {
- position: relative;
-}
-
-@media screen and (max-width: @results-width) {
-
- #results {
- margin: auto;
- padding: 0;
- width: 90%;
- }
-
- .github {
- display: none;
- }
-
- .checkbox_container {
- display: block;
- width: 90%;
- //float: left;
-
- label {
- border-bottom: 0;
- }
- }
-
- .preferences_container {
- display: none;
- postion: fixed !important;
- top: 100px;
- right: 0px;
- }
-
-}
-
-@media screen and (max-width: 75em) {
-
- div.title {
-
- h1 {
- font-size: 1em;
- }
- }
-
- html.touch #categories {
- width: 95%;
- height: 30px;
- text-align: left;
- overflow-x: scroll;
- overflow-y: hidden;
- -webkit-overflow-scrolling: touch;
-
- #categories_container {
- width: 1000px;
- width: -moz-max-content;
- width: -webkit-max-content;
- width: max-content;
-
- .checkbox_container {
- display: inline-block;
- width: auto;
- }
- }
- }
-
- #categories {
- font-size: 90%;
- clear: both;
-
- .checkbox_container {
- margin-top: 2px;
- margin: auto;
- }
- }
-
- #suggestions, #answers {
- margin-top: 5px;
- }
-
- #infoboxes {
- position: inherit;
- max-width: inherit;
-
- .infobox {
- clear:both;
-
- img {
- float: left;
- max-width: 10em;
- }
- }
- }
-
- #categories {
- font-size: 90%;
- clear: both;
-
- .checkbox_container {
- margin-top: 2px;
- margin: auto;
- }
- }
-
- #sidebar {
- position: static;
- max-width: @results-width;
- margin: 0 0 2px 0;
- padding: 0;
- float: none;
- border: none;
- width: auto;
- input {
- border: 0;
- }
- }
-
- #apis {
- display: none;
- }
-
- #search_url {
- display: none;
- }
-
- .result {
- border-top: 1px solid @color-result-top-border;
- margin: 8px 0 8px 0;
-
- .thumbnail {
- max-width: 98%;
- }
- }
-
- .image_result {
- max-width: 98%;
- img {
- max-width: 98%;
- }
- }
-}
-
-.favicon {
- float: left;
- margin-right: 4px;
- margin-top: 2px;
-}
-
-.preferences_back {
- background: none repeat scroll 0 0 @color-settings-return-background;
- border: 0 none;
- .rounded-corners;
- cursor: pointer;
- display: inline-block;
- margin: 2px 4px;
- padding: 4px 6px;
-
- a {
- color: @color-settings-return-font;
- }
-}
-
-.hidden {
- opacity: 0;
- overflow: hidden;
- font-size: 0.8em;
- position: absolute;
- bottom: -20px;
- width: 100%;
- text-position: center;
- background: white;
- transition: opacity 1s ease;
-}
-
-#categories_container:hover .hidden {
- transition: opacity 1s ease;
- opacity: 0.8;
-}
diff --git a/searx/static/themes/oscar/.gitignore b/searx/static/themes/oscar/.gitignore
index c2658d7..07e6e47 100644
--- a/searx/static/themes/oscar/.gitignore
+++ b/searx/static/themes/oscar/.gitignore
@@ -1 +1 @@
-node_modules/
+/node_modules
diff --git a/searx/static/themes/oscar/README.rst b/searx/static/themes/oscar/README.rst
index e7daa87..1a226bc 100644
--- a/searx/static/themes/oscar/README.rst
+++ b/searx/static/themes/oscar/README.rst
@@ -15,3 +15,42 @@ run this command in the directory ``searx/static/themes/oscar``
or in the root directory:
``make grunt``
+
+directory structure
+~~~~~~~~~~~~~~~~~~~
+
+see:
+
+- gruntfile.js
+- package.json
+
+*************
+css directory
+*************
+
+- ``bootstrap*``: bootstrap NPM package,
+- ``leaflet.*``: leaflet NPM package
+- ``leaflet.min.css``: minimized version of ``leaflet.css`` (see gruntfile.js)
+- ``logicodev.*``: compiled from ``src/less/logicodev``
+- ``logicodev-dark*``: compiled from ``src/less/logicodev-dark``
+- ``pointhi*``: compiled from ``src/less/pointhi``
+- ``images``: leaflet NPM package
+
+**************
+font directory
+**************
+
+- from bootstrap NPM package
+
+************
+js directory
+************
+
+- ``searx.*``: compiled from ``src/js``
+- other files are from NPM packages
+
+*************
+img directory
+*************
+
+- images for the oscar theme
diff --git a/searx/static/themes/oscar/css/images/layers-2x.png b/searx/static/themes/oscar/css/images/layers-2x.png
new file mode 100644
index 0000000..200c333
--- /dev/null
+++ b/searx/static/themes/oscar/css/images/layers-2x.png
Binary files differ
diff --git a/searx/static/themes/oscar/css/images/layers.png b/searx/static/themes/oscar/css/images/layers.png
new file mode 100644
index 0000000..1a72e57
--- /dev/null
+++ b/searx/static/themes/oscar/css/images/layers.png
Binary files differ
diff --git a/searx/static/themes/oscar/css/images/marker-icon-2x.png b/searx/static/themes/oscar/css/images/marker-icon-2x.png
new file mode 100644
index 0000000..88f9e50
--- /dev/null
+++ b/searx/static/themes/oscar/css/images/marker-icon-2x.png
Binary files differ
diff --git a/searx/static/themes/oscar/css/images/marker-icon.png b/searx/static/themes/oscar/css/images/marker-icon.png
new file mode 100644
index 0000000..950edf2
--- /dev/null
+++ b/searx/static/themes/oscar/css/images/marker-icon.png
Binary files differ
diff --git a/searx/static/themes/oscar/css/images/marker-shadow.png b/searx/static/themes/oscar/css/images/marker-shadow.png
new file mode 100644
index 0000000..9fd2979
--- /dev/null
+++ b/searx/static/themes/oscar/css/images/marker-shadow.png
Binary files differ
diff --git a/searx/static/themes/oscar/css/pointhi.css b/searx/static/themes/oscar/css/pointhi.css
new file mode 100644
index 0000000..b810a2d
--- /dev/null
+++ b/searx/static/themes/oscar/css/pointhi.css
@@ -0,0 +1,706 @@
+html {
+ position: relative;
+ min-height: 100%;
+}
+body {
+ /* Margin bottom by footer height */
+ margin-bottom: 80px;
+}
+.footer {
+ position: absolute;
+ bottom: 0;
+ width: 100%;
+ /* Set the fixed height of the footer here */
+ height: 60px;
+}
+input[type=checkbox]:checked + .label_hide_if_checked,
+input[type=checkbox]:checked + .label_hide_if_not_checked + .label_hide_if_checked {
+ display: none;
+}
+input[type=checkbox]:not(:checked) + .label_hide_if_not_checked,
+input[type=checkbox]:not(:checked) + .label_hide_if_checked + .label_hide_if_not_checked {
+ display: none;
+}
+.onoff-checkbox {
+ width: 15%;
+}
+.onoffswitch {
+ position: relative;
+ width: 110px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+}
+.onoffswitch-checkbox {
+ display: none;
+}
+.onoffswitch-label {
+ display: block;
+ overflow: hidden;
+ cursor: pointer;
+ border: 2px solid #FFFFFF !important;
+ border-radius: 50px !important;
+}
+.onoffswitch-inner {
+ display: block;
+ transition: margin 0.3s ease-in 0s;
+}
+.onoffswitch-inner:before,
+.onoffswitch-inner:after {
+ display: block;
+ float: left;
+ width: 50%;
+ height: 30px;
+ padding: 0;
+ line-height: 40px;
+ font-size: 20px;
+ box-sizing: border-box;
+ content: "";
+ background-color: #EEEEEE;
+}
+.onoffswitch-switch {
+ display: block;
+ width: 37px;
+ background-color: #00CC00;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ right: 0px;
+ border: 2px solid #FFFFFF !important;
+ border-radius: 50px !important;
+ transition: all 0.3s ease-in 0s;
+}
+.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner {
+ margin-right: 0;
+}
+.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch {
+ right: 71px;
+ background-color: #A1A1A1;
+}
+.result_header {
+ margin-bottom: 5px;
+ margin-top: 20px;
+}
+.result_header .favicon {
+ margin-bottom: -3px;
+}
+.result_header a {
+ vertical-align: bottom;
+}
+.result_header a .highlight {
+ font-weight: bold;
+}
+.result-content {
+ margin-top: 5px;
+ word-wrap: break-word;
+}
+.result-content .highlight {
+ font-weight: bold;
+}
+.result-default {
+ clear: both;
+}
+.result-images {
+ float: left !important;
+ height: 138px;
+}
+.img-thumbnail {
+ margin: 5px;
+ max-height: 128px;
+}
+.result-videos {
+ clear: both;
+}
+.result-torrents {
+ clear: both;
+}
+.result-map {
+ clear: both;
+}
+.result-code {
+ clear: both;
+}
+.suggestion_item {
+ margin: 2px 5px;
+ max-width: 100%;
+}
+.suggestion_item .btn {
+ max-width: 100%;
+ white-space: normal;
+ word-wrap: break-word;
+ text-align: left;
+}
+.result_download {
+ margin-right: 5px;
+}
+#pagination {
+ margin-top: 30px;
+ padding-bottom: 50px;
+}
+.label-default {
+ color: #AAA;
+ background: #FFF;
+}
+.result .text-muted small {
+ word-wrap: break-word;
+}
+.modal-wrapper {
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+}
+.modal-wrapper {
+ background-clip: padding-box;
+ background-color: #fff;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 6px;
+ box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+ outline: 0 none;
+ position: relative;
+}
+.highlight {
+ font-weight: 700;
+}
+.infobox img {
+ max-height: 250px;
+}
+.infobox .infobox_part {
+ margin-bottom: 20px;
+ word-wrap: break-word;
+ table-layout: fixed;
+}
+.infobox .infobox_part:last-child {
+ margin-bottom: 0;
+}
+.infobox .header_url {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: block;
+}
+.infobox .infobox_toggle {
+ width: 100%;
+ text-align: center;
+ margin-bottom: 0px;
+}
+.infobox .infobox_checkbox ~ .infobox_body {
+ max-height: 300px;
+ overflow: hidden;
+}
+.infobox .infobox_checkbox:checked ~ .infobox_body {
+ max-height: none;
+}
+.infobox .infobox_checkbox ~ .infobox_toggle .infobox_label_down {
+ display: block;
+}
+.infobox .infobox_checkbox ~ .infobox_toggle .infobox_label_up {
+ display: none;
+}
+.infobox .infobox_checkbox:checked ~ .infobox_toggle .infobox_label_up {
+ display: block;
+}
+.infobox .infobox_checkbox:checked ~ .infobox_toggle .infobox_label_down {
+ display: none;
+}
+.infobox .infobox_checkbox ~ .infobox_body img.infobox_part {
+ display: none;
+}
+.infobox .infobox_checkbox:checked ~ .infobox_body img.infobox_part {
+ display: block;
+}
+.search_categories,
+#categories {
+ text-transform: capitalize;
+ margin-bottom: 1.5rem;
+ margin-top: 1.5rem;
+ display: flex;
+ flex-wrap: wrap;
+ align-content: stretch;
+}
+.search_categories a,
+#categories a {
+ flex-grow: 1;
+ flex-basis: auto;
+ border: #DDD 1px solid;
+ border-right: none;
+ color: #666;
+ padding-bottom: 0.4rem;
+ padding-top: 0.4rem;
+ text-align: center;
+ min-width: 50px;
+}
+.search_categories label,
+#categories label,
+.search_categories .input-group-addon,
+#categories .input-group-addon {
+ flex-grow: 1;
+ flex-basis: auto;
+ font-size: 1.3rem;
+ font-weight: normal;
+ background-color: white;
+ border: #DDD 1px solid;
+ border-right: none;
+ color: #333;
+ padding-bottom: 0.8rem;
+ padding-top: 0.8rem;
+ text-align: center;
+ width: 100%;
+ height: 100%;
+}
+.search_categories a:last-child,
+#categories a:last-child,
+.search_categories .input-group-addon:last-child,
+#categories .input-group-addon:last-child {
+ border-right: #DDD 1px solid;
+}
+.search_categories input[type="checkbox"]:checked + label,
+#categories input[type="checkbox"]:checked + label {
+ color: black;
+ font-weight: bold;
+ background-color: #EEE;
+}
+.visually-hidden {
+ position: absolute !important;
+ height: 1px;
+ width: 1px;
+ overflow: hidden;
+ clip: rect(1px 1px 1px 1px);
+ /* IE6, IE7 */
+ clip: rect(1px, 1px, 1px, 1px);
+ white-space: nowrap;
+ /* added line */
+}
+#advanced-search-container {
+ display: none;
+ text-align: center;
+ margin-bottom: 1rem;
+ clear: both;
+}
+#advanced-search-container label,
+#advanced-search-container .input-group-addon {
+ font-size: 1.3rem;
+ font-weight: normal;
+ background-color: white;
+ border: #DDD 1px solid;
+ border-right: none;
+ color: #333;
+ padding-bottom: 0.8rem;
+ padding-left: 1.2rem;
+ padding-right: 1.2rem;
+}
+#advanced-search-container label:last-child,
+#advanced-search-container .input-group-addon:last-child {
+ border-right: #DDD 1px solid;
+}
+#advanced-search-container input[type="radio"] {
+ display: none;
+}
+#advanced-search-container input[type="radio"]:checked + label {
+ color: black;
+ font-weight: bold;
+ background-color: #EEE;
+}
+#check-advanced {
+ display: none;
+}
+#check-advanced:checked ~ #advanced-search-container {
+ display: block;
+}
+.advanced {
+ padding: 0;
+ margin-top: 0.3rem;
+ text-align: right;
+}
+.advanced label,
+.advanced select {
+ cursor: pointer;
+}
+.cursor-text {
+ cursor: text !important;
+}
+.cursor-pointer {
+ cursor: pointer !important;
+}
+/*
+ this file is generated automatically by searx_extra/update/update_pygments.py
+ using pygments version 2.8.0
+*/
+.code-highlight .linenos {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: default;
+ margin-right: 8px;
+ text-align: right;
+}
+.code-highlight .linenos::selection {
+ background: transparent;
+ /* WebKit/Blink Browsers */
+}
+.code-highlight .linenos::-moz-selection {
+ background: transparent;
+ /* Gecko Browsers */
+}
+.code-highlight pre {
+ line-height: 125%;
+}
+.code-highlight td.linenos .normal {
+ color: inherit;
+ background-color: transparent;
+ padding-left: 5px;
+ padding-right: 5px;
+}
+.code-highlight span.linenos {
+ color: inherit;
+ background-color: transparent;
+ padding-left: 5px;
+ padding-right: 5px;
+}
+.code-highlight td.linenos .special {
+ color: #000000;
+ background-color: #ffffc0;
+ padding-left: 5px;
+ padding-right: 5px;
+}
+.code-highlight span.linenos.special {
+ color: #000000;
+ background-color: #ffffc0;
+ padding-left: 5px;
+ padding-right: 5px;
+}
+.code-highlight .hll {
+ background-color: #ffffcc;
+}
+.code-highlight {
+ background: #f8f8f8;
+}
+.code-highlight .c {
+ color: #408080;
+ font-style: italic;
+}
+/* Comment */
+.code-highlight .err {
+ border: 1px solid #FF0000;
+}
+/* Error */
+.code-highlight .k {
+ color: #008000;
+ font-weight: bold;
+}
+/* Keyword */
+.code-highlight .o {
+ color: #666666;
+}
+/* Operator */
+.code-highlight .ch {
+ color: #408080;
+ font-style: italic;
+}
+/* Comment.Hashbang */
+.code-highlight .cm {
+ color: #408080;
+ font-style: italic;
+}
+/* Comment.Multiline */
+.code-highlight .cp {
+ color: #BC7A00;
+}
+/* Comment.Preproc */
+.code-highlight .cpf {
+ color: #408080;
+ font-style: italic;
+}
+/* Comment.PreprocFile */
+.code-highlight .c1 {
+ color: #408080;
+ font-style: italic;
+}
+/* Comment.Single */
+.code-highlight .cs {
+ color: #408080;
+ font-style: italic;
+}
+/* Comment.Special */
+.code-highlight .gd {
+ color: #A00000;
+}
+/* Generic.Deleted */
+.code-highlight .ge {
+ font-style: italic;
+}
+/* Generic.Emph */
+.code-highlight .gr {
+ color: #FF0000;
+}
+/* Generic.Error */
+.code-highlight .gh {
+ color: #000080;
+ font-weight: bold;
+}
+/* Generic.Heading */
+.code-highlight .gi {
+ color: #00A000;
+}
+/* Generic.Inserted */
+.code-highlight .go {
+ color: #888888;
+}
+/* Generic.Output */
+.code-highlight .gp {
+ color: #000080;
+ font-weight: bold;
+}
+/* Generic.Prompt */
+.code-highlight .gs {
+ font-weight: bold;
+}
+/* Generic.Strong */
+.code-highlight .gu {
+ color: #800080;
+ font-weight: bold;
+}
+/* Generic.Subheading */
+.code-highlight .gt {
+ color: #0044DD;
+}
+/* Generic.Traceback */
+.code-highlight .kc {
+ color: #008000;
+ font-weight: bold;
+}
+/* Keyword.Constant */
+.code-highlight .kd {
+ color: #008000;
+ font-weight: bold;
+}
+/* Keyword.Declaration */
+.code-highlight .kn {
+ color: #008000;
+ font-weight: bold;
+}
+/* Keyword.Namespace */
+.code-highlight .kp {
+ color: #008000;
+}
+/* Keyword.Pseudo */
+.code-highlight .kr {
+ color: #008000;
+ font-weight: bold;
+}
+/* Keyword.Reserved */
+.code-highlight .kt {
+ color: #B00040;
+}
+/* Keyword.Type */
+.code-highlight .m {
+ color: #666666;
+}
+/* Literal.Number */
+.code-highlight .s {
+ color: #BA2121;
+}
+/* Literal.String */
+.code-highlight .na {
+ color: #7D9029;
+}
+/* Name.Attribute */
+.code-highlight .nb {
+ color: #008000;
+}
+/* Name.Builtin */
+.code-highlight .nc {
+ color: #0000FF;
+ font-weight: bold;
+}
+/* Name.Class */
+.code-highlight .no {
+ color: #880000;
+}
+/* Name.Constant */
+.code-highlight .nd {
+ color: #AA22FF;
+}
+/* Name.Decorator */
+.code-highlight .ni {
+ color: #999999;
+ font-weight: bold;
+}
+/* Name.Entity */
+.code-highlight .ne {
+ color: #D2413A;
+ font-weight: bold;
+}
+/* Name.Exception */
+.code-highlight .nf {
+ color: #0000FF;
+}
+/* Name.Function */
+.code-highlight .nl {
+ color: #A0A000;
+}
+/* Name.Label */
+.code-highlight .nn {
+ color: #0000FF;
+ font-weight: bold;
+}
+/* Name.Namespace */
+.code-highlight .nt {
+ color: #008000;
+ font-weight: bold;
+}
+/* Name.Tag */
+.code-highlight .nv {
+ color: #19177C;
+}
+/* Name.Variable */
+.code-highlight .ow {
+ color: #AA22FF;
+ font-weight: bold;
+}
+/* Operator.Word */
+.code-highlight .w {
+ color: #bbbbbb;
+}
+/* Text.Whitespace */
+.code-highlight .mb {
+ color: #666666;
+}
+/* Literal.Number.Bin */
+.code-highlight .mf {
+ color: #666666;
+}
+/* Literal.Number.Float */
+.code-highlight .mh {
+ color: #666666;
+}
+/* Literal.Number.Hex */
+.code-highlight .mi {
+ color: #666666;
+}
+/* Literal.Number.Integer */
+.code-highlight .mo {
+ color: #666666;
+}
+/* Literal.Number.Oct */
+.code-highlight .sa {
+ color: #BA2121;
+}
+/* Literal.String.Affix */
+.code-highlight .sb {
+ color: #BA2121;
+}
+/* Literal.String.Backtick */
+.code-highlight .sc {
+ color: #BA2121;
+}
+/* Literal.String.Char */
+.code-highlight .dl {
+ color: #BA2121;
+}
+/* Literal.String.Delimiter */
+.code-highlight .sd {
+ color: #BA2121;
+ font-style: italic;
+}
+/* Literal.String.Doc */
+.code-highlight .s2 {
+ color: #BA2121;
+}
+/* Literal.String.Double */
+.code-highlight .se {
+ color: #BB6622;
+ font-weight: bold;
+}
+/* Literal.String.Escape */
+.code-highlight .sh {
+ color: #BA2121;
+}
+/* Literal.String.Heredoc */
+.code-highlight .si {
+ color: #BB6688;
+ font-weight: bold;
+}
+/* Literal.String.Interpol */
+.code-highlight .sx {
+ color: #008000;
+}
+/* Literal.String.Other */
+.code-highlight .sr {
+ color: #BB6688;
+}
+/* Literal.String.Regex */
+.code-highlight .s1 {
+ color: #BA2121;
+}
+/* Literal.String.Single */
+.code-highlight .ss {
+ color: #19177C;
+}
+/* Literal.String.Symbol */
+.code-highlight .bp {
+ color: #008000;
+}
+/* Name.Builtin.Pseudo */
+.code-highlight .fm {
+ color: #0000FF;
+}
+/* Name.Function.Magic */
+.code-highlight .vc {
+ color: #19177C;
+}
+/* Name.Variable.Class */
+.code-highlight .vg {
+ color: #19177C;
+}
+/* Name.Variable.Global */
+.code-highlight .vi {
+ color: #19177C;
+}
+/* Name.Variable.Instance */
+.code-highlight .vm {
+ color: #19177C;
+}
+/* Name.Variable.Magic */
+.code-highlight .il {
+ color: #666666;
+}
+/* Literal.Number.Integer.Long */
+.searx-navbar {
+ background: #eee;
+ color: #aaa;
+ height: 2.3rem;
+ font-size: 1.3rem;
+ line-height: 1.3rem;
+ padding: 0.5rem;
+ font-weight: bold;
+ margin-bottom: 1.3rem;
+}
+.searx-navbar a,
+.searx-navbar a:hover {
+ margin-right: 2rem;
+ text-decoration: none;
+}
+.searx-navbar .instance a {
+ color: #444;
+ margin-left: 2rem;
+}
+.table > tbody > tr > td,
+.table > tbody > tr > th {
+ vertical-align: middle !important;
+}
+.engine-tooltip {
+ display: none;
+ position: absolute;
+ padding: 0.5rem 1rem;
+ margin: 0rem 0 0 2rem;
+ border: 1px solid #ddd;
+ background: white;
+ font-size: 14px;
+ font-weight: normal;
+ z-index: 1000000;
+}
+th:hover .engine-tooltip,
+.engine-tooltip:hover {
+ display: inline-block;
+}
diff --git a/searx/static/themes/oscar/gruntfile.js b/searx/static/themes/oscar/gruntfile.js
index 935572d..b7c7202 100644
--- a/searx/static/themes/oscar/gruntfile.js
+++ b/searx/static/themes/oscar/gruntfile.js
@@ -1,19 +1,73 @@
+/*jshint esversion: 6 */
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
+ copy: {
+ js: {
+ expand: true,
+ cwd: './node_modules',
+ dest: './js/',
+ flatten: true,
+ filter: 'isFile',
+ timestamp: true,
+ src: [
+ './bootstrap/dist/js/bootstrap.min.js',
+ './corejs-typeahead/dist/typeahead.bundle.min.js',
+ './jquery/dist/jquery.min.js',
+ './leaflet/dist/leaflet.js',
+ ]
+ },
+ css: {
+ expand: true,
+ cwd: './node_modules',
+ dest: './css/',
+ flatten: true,
+ filter: 'isFile',
+ timestamp: true,
+ src: [
+ './bootstrap/dist/css/bootstrap-theme.css',
+ './bootstrap/dist/css/bootstrap-theme.min.css',
+ './bootstrap/dist/css/bootstrap-theme.min.css.map',
+ './leaflet/dist/leaflet.css',
+ ]
+ },
+ fonts: {
+ expand: true,
+ cwd: './node_modules',
+ dest: './fonts/',
+ flatten: true,
+ filter: 'isFile',
+ timestamp: true,
+ src: [
+ './bootstrap/dist/fonts/glyphicons-*.*',
+ ]
+ },
+ leaflet_images: {
+ expand: true,
+ cwd: './node_modules',
+ dest: './css/images/',
+ flatten: true,
+ filter: 'isFile',
+ timestamp: true,
+ src: [
+ './leaflet/dist/images/*.png',
+ ]
+ }
+ },
concat: {
options: {
separator: ';'
},
dist: {
- src: ['js/searx_src/*.js'],
+ src: ['src/js/*.js', '../__common__/js/image_layout.js'],
dest: 'js/searx.js'
}
},
uglify: {
options: {
- banner: '/*! oscar/searx.min.js | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n'
+ sourceMap: true,
+ banner: '/*! oscar/searx.min.js | <%= grunt.template.today("dd-mm-yyyy") %> | <%= process.env.GIT_URL %> */\n'
},
dist: {
files: {
@@ -22,7 +76,7 @@ module.exports = function(grunt) {
}
},
jshint: {
- files: ['gruntfile.js', 'js/searx_src/*.js'],
+ files: ['gruntfile.js', 'js/searx_src/*.js', '../__common__/js/image_layout.js'],
options: {
reporterOutput: "",
// options here to override JSHint defaults
@@ -35,35 +89,33 @@ module.exports = function(grunt) {
}
},
less: {
- development: {
- options: {
- paths: ["less/pointhi", "less/logicodev", "less/logicodev-dark"]
- //banner: '/*! less/oscar/oscar.css | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n'
- },
- files: {"css/pointhi.css": "less/pointhi/oscar.less",
- "css/logicodev.css": "less/logicodev-dark/oscar.less",
- "css/logicodev-dark.css": "less/logicodev/oscar.less"}
- },
- production: {
- options: {
- paths: ["less/pointhi", "less/logicodev", "less/logicodev-dark"],
- //banner: '/*! less/oscar/oscar.css | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n',
- cleancss: true
- },
- files: {"css/pointhi.min.css": "less/pointhi/oscar.less",
- "css/logicodev.min.css": "less/logicodev/oscar.less",
- "css/logicodev-dark.min.css": "less/logicodev-dark/oscar.less"}
+ development: {
+ options: {
+ paths: ["src/less/pointhi", "src/less/logicodev", "src/less/logicodev-dark", "src/less/bootstrap"]
},
- /*
- // built with ./manage.sh styles
- bootstrap: {
- options: {
- paths: ["less/bootstrap"],
- cleancss: true
- },
- files: {"css/bootstrap.min.css": "less/bootstrap/bootstrap.less"}
+ files: {
+ "css/bootstrap.css": "src/less/bootstrap/bootstrap.less",
+ "css/pointhi.css": "src/less/pointhi/oscar.less",
+ "css/logicodev.css": "src/less/logicodev-dark/oscar.less",
+ "css/logicodev-dark.css": "src/less/logicodev/oscar.less"
+ }
+ },
+ production: {
+ options: {
+ paths: ["src/less/pointhi", "src/less/logicodev", "src/less/logicodev-dark", "src/less/bootstrap"],
+ sourceMap: true,
+ sourceMapURL: (name) => { const s = name.split('/'); return s[s.length - 1] + '.map';},
+ outputSourceFiles: false,
+ sourceMapRootpath: '../'
},
- */
+ files: {
+ "css/bootstrap.min.css": "css/bootstrap.css",
+ "css/leaflet.min.css": "css/leaflet.css",
+ "css/pointhi.min.css": "src/less/pointhi/oscar.less",
+ "css/logicodev.min.css": "src/less/logicodev/oscar.less",
+ "css/logicodev-dark.min.css": "src/less/logicodev-dark/oscar.less"
+ }
+ },
},
watch: {
scripts: {
@@ -71,7 +123,7 @@ module.exports = function(grunt) {
tasks: ['jshint', 'concat', 'uglify']
},
oscar_styles: {
- files: ['less/pointhi/**/*.less'],
+ files: ['src/less/pointhi/**/*.less'],
tasks: ['less:development', 'less:production']
},
bootstrap_styles: {
@@ -81,9 +133,13 @@ module.exports = function(grunt) {
}
});
- grunt.loadNpmTasks('grunt-contrib-uglify', '/usr/lib/nodejs');
- grunt.loadNpmTasks('grunt-contrib-concat', '/usr/lib/nodejs');
+ grunt.loadNpmTasks('grunt-contrib-uglify');
+ grunt.loadNpmTasks('grunt-contrib-concat');
+
+ grunt.registerTask('test', ['jshint']);
grunt.registerTask('default', ['concat', 'uglify']);
+ grunt.registerTask('styles', ['less']);
+
};
diff --git a/searx/static/themes/oscar/img/map/layers-2x.png b/searx/static/themes/oscar/img/map/layers-2x.png
deleted file mode 100644
index 0b30da6..0000000
--- a/searx/static/themes/oscar/img/map/layers-2x.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/layers.png b/searx/static/themes/oscar/img/map/layers.png
deleted file mode 100644
index 4297fd9..0000000
--- a/searx/static/themes/oscar/img/map/layers.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/marker-icon-2x-green.png b/searx/static/themes/oscar/img/map/marker-icon-2x-green.png
deleted file mode 100644
index 7446bb0..0000000
--- a/searx/static/themes/oscar/img/map/marker-icon-2x-green.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/marker-icon-2x-orange.png b/searx/static/themes/oscar/img/map/marker-icon-2x-orange.png
deleted file mode 100644
index ecd6773..0000000
--- a/searx/static/themes/oscar/img/map/marker-icon-2x-orange.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/marker-icon-2x-red.png b/searx/static/themes/oscar/img/map/marker-icon-2x-red.png
deleted file mode 100644
index 1d2e197..0000000
--- a/searx/static/themes/oscar/img/map/marker-icon-2x-red.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/marker-icon-2x.png b/searx/static/themes/oscar/img/map/marker-icon-2x.png
deleted file mode 100644
index 0015b64..0000000
--- a/searx/static/themes/oscar/img/map/marker-icon-2x.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/marker-icon-green.png b/searx/static/themes/oscar/img/map/marker-icon-green.png
deleted file mode 100644
index f48ef41..0000000
--- a/searx/static/themes/oscar/img/map/marker-icon-green.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/marker-icon-orange.png b/searx/static/themes/oscar/img/map/marker-icon-orange.png
deleted file mode 100644
index d0d2220..0000000
--- a/searx/static/themes/oscar/img/map/marker-icon-orange.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/marker-icon-red.png b/searx/static/themes/oscar/img/map/marker-icon-red.png
deleted file mode 100644
index 7a92b9e..0000000
--- a/searx/static/themes/oscar/img/map/marker-icon-red.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/marker-icon.png b/searx/static/themes/oscar/img/map/marker-icon.png
deleted file mode 100644
index e2e9f75..0000000
--- a/searx/static/themes/oscar/img/map/marker-icon.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/oscar/img/map/marker-shadow.png b/searx/static/themes/oscar/img/map/marker-shadow.png
deleted file mode 100644
index d1e773c..0000000
--- a/searx/static/themes/oscar/img/map/marker-shadow.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/oscar/js/searx.js b/searx/static/themes/oscar/js/searx.js
deleted file mode 100644
index 927aeb4..0000000
--- a/searx/static/themes/oscar/js/searx.js
+++ /dev/null
@@ -1,356 +0,0 @@
-/**
- * searx is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * searx is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with searx. If not, see < http://www.gnu.org/licenses/ >.
- *
- * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at>
- */
-
-requirejs.config({
- baseUrl: './static/themes/oscar/js',
- paths: {
- app: '../app'
- }
-});
-;/**
- * searx is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * searx is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with searx. If not, see < http://www.gnu.org/licenses/ >.
- *
- * (C) 2019 by Alexandre Flament
- */
-window.searx = (function(d) {
- 'use strict';
-
- // add data- properties
- var script = d.currentScript || (function() {
- var scripts = d.getElementsByTagName('script');
- return scripts[scripts.length - 1];
- })();
-
- return {
- autocompleter: script.getAttribute('data-autocompleter') === 'true',
- method: script.getAttribute('data-method')
- };
-})(document);
-;/**
- * searx is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * searx is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with searx. If not, see < http://www.gnu.org/licenses/ >.
- *
- * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at>
- */
-
-if(searx.autocompleter) {
- searx.searchResults = new Bloodhound({
- datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
- queryTokenizer: Bloodhound.tokenizers.whitespace,
- remote: './autocompleter?q=%QUERY'
- });
- searx.searchResults.initialize();
-}
-
-$(document).ready(function(){
- if(searx.autocompleter) {
- $('#q').typeahead(null, {
- name: 'search-results',
- displayKey: function(result) {
- return result;
- },
- source: searx.searchResults.ttAdapter()
- });
- }
-});
-;/**
- * searx is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * searx is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with searx. If not, see < http://www.gnu.org/licenses/ >.
- *
- * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at>
- */
-
-$(document).ready(function(){
- /**
- * focus element if class="autofocus" and id="q"
- */
- $('#q.autofocus').focus();
-
- /**
- * select full content on click if class="select-all-on-click"
- */
- $(".select-all-on-click").click(function () {
- $(this).select();
- });
-
- /**
- * change text during btn-collapse click if possible
- */
- $('.btn-collapse').click(function() {
- var btnTextCollapsed = $(this).data('btn-text-collapsed');
- var btnTextNotCollapsed = $(this).data('btn-text-not-collapsed');
-
- if(btnTextCollapsed !== '' && btnTextNotCollapsed !== '') {
- if($(this).hasClass('collapsed')) {
- new_html = $(this).html().replace(btnTextCollapsed, btnTextNotCollapsed);
- } else {
- new_html = $(this).html().replace(btnTextNotCollapsed, btnTextCollapsed);
- }
- $(this).html(new_html);
- }
- });
-
- /**
- * change text during btn-toggle click if possible
- */
- $('.btn-toggle .btn').click(function() {
- var btnClass = 'btn-' + $(this).data('btn-class');
- var btnLabelDefault = $(this).data('btn-label-default');
- var btnLabelToggled = $(this).data('btn-label-toggled');
- if(btnLabelToggled !== '') {
- if($(this).hasClass('btn-default')) {
- new_html = $(this).html().replace(btnLabelDefault, btnLabelToggled);
- } else {
- new_html = $(this).html().replace(btnLabelToggled, btnLabelDefault);
- }
- $(this).html(new_html);
- }
- $(this).toggleClass(btnClass);
- $(this).toggleClass('btn-default');
- });
-
- /**
- * change text during btn-toggle click if possible
- */
- $('.media-loader').click(function() {
- var target = $(this).data('target');
- var iframe_load = $(target + ' > iframe');
- var srctest = iframe_load.attr('src');
- if(srctest === undefined || srctest === false){
- iframe_load.attr('src', iframe_load.data('src'));
- }
- });
-
- /**
- * Select or deselect every categories on double clic
- */
- $(".btn-sm").dblclick(function() {
- var btnClass = 'btn-' + $(this).data('btn-class'); // primary
- if($(this).hasClass('btn-default')) {
- $(".btn-sm > input").attr('checked', 'checked');
- $(".btn-sm > input").prop("checked", true);
- $(".btn-sm").addClass(btnClass);
- $(".btn-sm").addClass('active');
- $(".btn-sm").removeClass('btn-default');
- } else {
- $(".btn-sm > input").attr('checked', '');
- $(".btn-sm > input").removeAttr('checked');
- $(".btn-sm > input").checked = false;
- $(".btn-sm").removeClass(btnClass);
- $(".btn-sm").removeClass('active');
- $(".btn-sm").addClass('btn-default');
- }
- });
-});
-;/**
- * searx is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * searx is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with searx. If not, see < http://www.gnu.org/licenses/ >.
- *
- * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at>
- */
-
-$(document).ready(function(){
- $(".searx_overpass_request").on( "click", function( event ) {
- var overpass_url = "https://overpass-api.de/api/interpreter?data=";
- var query_start = overpass_url + "[out:json][timeout:25];(";
- var query_end = ");out meta;";
-
- var osm_id = $(this).data('osm-id');
- var osm_type = $(this).data('osm-type');
- var result_table = $(this).data('result-table');
- var result_table_loadicon = "#" + $(this).data('result-table-loadicon');
-
- // tags which can be ignored
- var osm_ignore_tags = [ "addr:city", "addr:country", "addr:housenumber", "addr:postcode", "addr:street" ];
-
- if(osm_id && osm_type && result_table) {
- result_table = "#" + result_table;
- var query = null;
- switch(osm_type) {
- case 'node':
- query = query_start + "node(" + osm_id + ");" + query_end;
- break;
- case 'way':
- query = query_start + "way(" + osm_id + ");" + query_end;
- break;
- case 'relation':
- query = query_start + "relation(" + osm_id + ");" + query_end;
- break;
- default:
- break;
- }
- if(query) {
- //alert(query);
- var ajaxRequest = $.ajax( query )
- .done(function( html) {
- if(html && html.elements && html.elements[0]) {
- var element = html.elements[0];
- var newHtml = $(result_table).html();
- for (var row in element.tags) {
- if(element.tags.name === null || osm_ignore_tags.indexOf(row) == -1) {
- newHtml += "<tr><td>" + row + "</td><td>";
- switch(row) {
- case "phone":
- case "fax":
- newHtml += "<a href=\"tel:" + element.tags[row].replace(/ /g,'') + "\">" + element.tags[row] + "</a>";
- break;
- case "email":
- newHtml += "<a href=\"mailto:" + element.tags[row] + "\">" + element.tags[row] + "</a>";
- break;
- case "website":
- case "url":
- newHtml += "<a href=\"" + element.tags[row] + "\">" + element.tags[row] + "</a>";
- break;
- case "wikidata":
- newHtml += "<a href=\"https://www.wikidata.org/wiki/" + element.tags[row] + "\">" + element.tags[row] + "</a>";
- break;
- case "wikipedia":
- if(element.tags[row].indexOf(":") != -1) {
- newHtml += "<a href=\"https://" + element.tags[row].substring(0,element.tags[row].indexOf(":")) + ".wikipedia.org/wiki/" + element.tags[row].substring(element.tags[row].indexOf(":")+1) + "\">" + element.tags[row] + "</a>";
- break;
- }
- /* jshint ignore:start */
- default:
- /* jshint ignore:end */
- newHtml += element.tags[row];
- break;
- }
- newHtml += "</td></tr>";
- }
- }
- $(result_table).html(newHtml);
- $(result_table).removeClass('hidden');
- $(result_table_loadicon).addClass('hidden');
- }
- })
- .fail(function() {
- $(result_table_loadicon).html($(result_table_loadicon).html() + "<p class=\"text-muted\">could not load data!</p>");
- });
- }
- }
-
- // this event occour only once per element
- $( this ).off( event );
- });
-
- $(".searx_init_map").on( "click", function( event ) {
- var leaflet_target = $(this).data('leaflet-target');
- var map_lon = $(this).data('map-lon');
- var map_lat = $(this).data('map-lat');
- var map_zoom = $(this).data('map-zoom');
- var map_boundingbox = $(this).data('map-boundingbox');
- var map_geojson = $(this).data('map-geojson');
-
- require(['leaflet-0.7.3.min'], function(leaflet) {
- if(map_boundingbox) {
- southWest = L.latLng(map_boundingbox[0], map_boundingbox[2]);
- northEast = L.latLng(map_boundingbox[1], map_boundingbox[3]);
- map_bounds = L.latLngBounds(southWest, northEast);
- }
-
- // TODO hack
- // change default imagePath
- L.Icon.Default.imagePath = "./static/themes/oscar/img/map";
-
- // init map
- var map = L.map(leaflet_target);
-
- // create the tile layer with correct attribution
- var osmMapnikUrl='https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
- var osmMapnikAttrib='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
- var osmMapnik = new L.TileLayer(osmMapnikUrl, {minZoom: 1, maxZoom: 19, attribution: osmMapnikAttrib});
-
- var osmWikimediaUrl='https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png';
- var osmWikimediaAttrib = 'Wikimedia maps beta | Maps data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
- var osmWikimedia = new L.TileLayer(osmWikimediaUrl, {minZoom: 1, maxZoom: 19, attribution: osmWikimediaAttrib});
-
- // init map view
- if(map_bounds) {
- // TODO hack: https://github.com/Leaflet/Leaflet/issues/2021
- setTimeout(function () {
- map.fitBounds(map_bounds, {
- maxZoom:17
- });
- }, 0);
- } else if (map_lon && map_lat) {
- if(map_zoom)
- map.setView(new L.LatLng(map_lat, map_lon),map_zoom);
- else
- map.setView(new L.LatLng(map_lat, map_lon),8);
- }
-
- map.addLayer(osmMapnik);
-
- var baseLayers = {
- "OSM Mapnik": osmMapnik/*,
- "OSM Wikimedia": osmWikimedia*/
- };
-
- L.control.layers(baseLayers).addTo(map);
-
-
- if(map_geojson)
- L.geoJson(map_geojson).addTo(map);
- /*else if(map_bounds)
- L.rectangle(map_bounds, {color: "#ff7800", weight: 3, fill:false}).addTo(map);*/
- });
-
- // this event occour only once per element
- $( this ).off( event );
- });
-});
diff --git a/searx/static/themes/oscar/js/searx_src/00_requirejs_config.js b/searx/static/themes/oscar/js/searx_src/00_requirejs_config.js
deleted file mode 100644
index e7c2abd..0000000
--- a/searx/static/themes/oscar/js/searx_src/00_requirejs_config.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * searx is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * searx is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with searx. If not, see < http://www.gnu.org/licenses/ >.
- *
- * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at>
- */
-
-requirejs.config({
- baseUrl: './static/themes/oscar/js',
- paths: {
- app: '../app'
- }
-});
diff --git a/searx/static/themes/oscar/js/searx_src/autocompleter.js b/searx/static/themes/oscar/js/searx_src/autocompleter.js
deleted file mode 100644
index 0907f8e..0000000
--- a/searx/static/themes/oscar/js/searx_src/autocompleter.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * searx is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * searx is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with searx. If not, see < http://www.gnu.org/licenses/ >.
- *
- * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at>
- */
-
-if(searx.autocompleter) {
- searx.searchResults = new Bloodhound({
- datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
- queryTokenizer: Bloodhound.tokenizers.whitespace,
- remote: './autocompleter?q=%QUERY'
- });
- searx.searchResults.initialize();
-}
-
-$(document).ready(function(){
- if(searx.autocompleter) {
- $('#q').typeahead(null, {
- name: 'search-results',
- displayKey: function(result) {
- return result;
- },
- source: searx.searchResults.ttAdapter()
- });
- }
-});
diff --git a/searx/static/themes/oscar/js/searx_src/leaflet_map.js b/searx/static/themes/oscar/js/searx_src/leaflet_map.js
deleted file mode 100644
index 3c8c616..0000000
--- a/searx/static/themes/oscar/js/searx_src/leaflet_map.js
+++ /dev/null
@@ -1,167 +0,0 @@
-/**
- * searx is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * searx is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with searx. If not, see < http://www.gnu.org/licenses/ >.
- *
- * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at>
- */
-
-$(document).ready(function(){
- $(".searx_overpass_request").on( "click", function( event ) {
- var overpass_url = "https://overpass-api.de/api/interpreter?data=";
- var query_start = overpass_url + "[out:json][timeout:25];(";
- var query_end = ");out meta;";
-
- var osm_id = $(this).data('osm-id');
- var osm_type = $(this).data('osm-type');
- var result_table = $(this).data('result-table');
- var result_table_loadicon = "#" + $(this).data('result-table-loadicon');
-
- // tags which can be ignored
- var osm_ignore_tags = [ "addr:city", "addr:country", "addr:housenumber", "addr:postcode", "addr:street" ];
-
- if(osm_id && osm_type && result_table) {
- result_table = "#" + result_table;
- var query = null;
- switch(osm_type) {
- case 'node':
- query = query_start + "node(" + osm_id + ");" + query_end;
- break;
- case 'way':
- query = query_start + "way(" + osm_id + ");" + query_end;
- break;
- case 'relation':
- query = query_start + "relation(" + osm_id + ");" + query_end;
- break;
- default:
- break;
- }
- if(query) {
- //alert(query);
- var ajaxRequest = $.ajax( query )
- .done(function( html) {
- if(html && html.elements && html.elements[0]) {
- var element = html.elements[0];
- var newHtml = $(result_table).html();
- for (var row in element.tags) {
- if(element.tags.name === null || osm_ignore_tags.indexOf(row) == -1) {
- newHtml += "<tr><td>" + row + "</td><td>";
- switch(row) {
- case "phone":
- case "fax":
- newHtml += "<a href=\"tel:" + element.tags[row].replace(/ /g,'') + "\">" + element.tags[row] + "</a>";
- break;
- case "email":
- newHtml += "<a href=\"mailto:" + element.tags[row] + "\">" + element.tags[row] + "</a>";
- break;
- case "website":
- case "url":
- newHtml += "<a href=\"" + element.tags[row] + "\">" + element.tags[row] + "</a>";
- break;
- case "wikidata":
- newHtml += "<a href=\"https://www.wikidata.org/wiki/" + element.tags[row] + "\">" + element.tags[row] + "</a>";
- break;
- case "wikipedia":
- if(element.tags[row].indexOf(":") != -1) {
- newHtml += "<a href=\"https://" + element.tags[row].substring(0,element.tags[row].indexOf(":")) + ".wikipedia.org/wiki/" + element.tags[row].substring(element.tags[row].indexOf(":")+1) + "\">" + element.tags[row] + "</a>";
- break;
- }
- /* jshint ignore:start */
- default:
- /* jshint ignore:end */
- newHtml += element.tags[row];
- break;
- }
- newHtml += "</td></tr>";
- }
- }
- $(result_table).html(newHtml);
- $(result_table).removeClass('hidden');
- $(result_table_loadicon).addClass('hidden');
- }
- })
- .fail(function() {
- $(result_table_loadicon).html($(result_table_loadicon).html() + "<p class=\"text-muted\">could not load data!</p>");
- });
- }
- }
-
- // this event occour only once per element
- $( this ).off( event );
- });
-
- $(".searx_init_map").on( "click", function( event ) {
- var leaflet_target = $(this).data('leaflet-target');
- var map_lon = $(this).data('map-lon');
- var map_lat = $(this).data('map-lat');
- var map_zoom = $(this).data('map-zoom');
- var map_boundingbox = $(this).data('map-boundingbox');
- var map_geojson = $(this).data('map-geojson');
-
- require(['leaflet-0.7.3.min'], function(leaflet) {
- if(map_boundingbox) {
- southWest = L.latLng(map_boundingbox[0], map_boundingbox[2]);
- northEast = L.latLng(map_boundingbox[1], map_boundingbox[3]);
- map_bounds = L.latLngBounds(southWest, northEast);
- }
-
- // TODO hack
- // change default imagePath
- L.Icon.Default.imagePath = "./static/themes/oscar/img/map";
-
- // init map
- var map = L.map(leaflet_target);
-
- // create the tile layer with correct attribution
- var osmMapnikUrl='https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
- var osmMapnikAttrib='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
- var osmMapnik = new L.TileLayer(osmMapnikUrl, {minZoom: 1, maxZoom: 19, attribution: osmMapnikAttrib});
-
- var osmWikimediaUrl='https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png';
- var osmWikimediaAttrib = 'Wikimedia maps beta | Maps data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
- var osmWikimedia = new L.TileLayer(osmWikimediaUrl, {minZoom: 1, maxZoom: 19, attribution: osmWikimediaAttrib});
-
- // init map view
- if(map_bounds) {
- // TODO hack: https://github.com/Leaflet/Leaflet/issues/2021
- setTimeout(function () {
- map.fitBounds(map_bounds, {
- maxZoom:17
- });
- }, 0);
- } else if (map_lon && map_lat) {
- if(map_zoom)
- map.setView(new L.LatLng(map_lat, map_lon),map_zoom);
- else
- map.setView(new L.LatLng(map_lat, map_lon),8);
- }
-
- map.addLayer(osmMapnik);
-
- var baseLayers = {
- "OSM Mapnik": osmMapnik/*,
- "OSM Wikimedia": osmWikimedia*/
- };
-
- L.control.layers(baseLayers).addTo(map);
-
-
- if(map_geojson)
- L.geoJson(map_geojson).addTo(map);
- /*else if(map_bounds)
- L.rectangle(map_bounds, {color: "#ff7800", weight: 3, fill:false}).addTo(map);*/
- });
-
- // this event occour only once per element
- $( this ).off( event );
- });
-});
diff --git a/searx/static/themes/oscar/less/logicodev/code.less b/searx/static/themes/oscar/less/logicodev/code.less
deleted file mode 100644
index 491b30e..0000000
--- a/searx/static/themes/oscar/less/logicodev/code.less
+++ /dev/null
@@ -1,101 +0,0 @@
-pre, code{
- font-family: 'Ubuntu Mono', 'Courier New', 'Lucida Console', monospace !important;
-}
-
-.lineno{
- margin-right: 5px;
-}
-
-.highlight .hll { background-color: #ffffcc }
-.highlight { background: #f8f8f8; }
-.highlight .c { color: #556366; font-style: italic } /* Comment */
-.highlight .err { border: 1px solid @orange } /* Error */
-.highlight .k { color: #BE74D5; font-weight: bold } /* Keyword */
-.highlight .o { color: #D19A66 } /* Operator */
-.highlight .cm { color: #556366; font-style: italic } /* Comment.Multiline */
-.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
-.highlight .c1 { color: #556366; font-style: italic } /* Comment.Single */
-.highlight .cs { color: #556366; font-style: italic } /* Comment.Special */
-.highlight .gd { color: #A00000 } /* Generic.Deleted */
-.highlight .ge { font-style: italic } /* Generic.Emph */
-.highlight .gr { color: #FF0000 } /* Generic.Error */
-.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.highlight .gi { color: #00A000 } /* Generic.Inserted */
-.highlight .go { color: #888888 } /* Generic.Output */
-.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
-.highlight .gs { font-weight: bold } /* Generic.Strong */
-.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.highlight .gt { color: #0044DD } /* Generic.Traceback */
-.highlight .kc { color: #BE74D5; font-weight: bold } /* Keyword.Constant */
-.highlight .kd { color: #BE74D5; font-weight: bold } /* Keyword.Declaration */
-.highlight .kn { color: #BE74D5; font-weight: bold } /* Keyword.Namespace */
-.highlight .kp { color: #BE74D5 } /* Keyword.Pseudo */
-.highlight .kr { color: #BE74D5; font-weight: bold } /* Keyword.Reserved */
-.highlight .kt { color: #D46C72 } /* Keyword.Type */
-.highlight .m { color: #D19A66 } /* Literal.Number */
-.highlight .s { color: #86C372 } /* Literal.String */
-.highlight .na { color: #7D9029 } /* Name.Attribute */
-.highlight .nb { color: #BE74D5 } /* Name.Builtin */
-.highlight .nc { color: #61AFEF; font-weight: bold } /* Name.Class */
-.highlight .no { color: #D19A66 } /* Name.Constant */
-.highlight .nd { color: #AA22FF } /* Name.Decorator */
-.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
-.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
-.highlight .nf { color: #61AFEF } /* Name.Function */
-.highlight .nl { color: #A0A000 } /* Name.Label */
-.highlight .nn { color: #61AFEF; font-weight: bold } /* Name.Namespace */
-.highlight .nt { color: #BE74D5; font-weight: bold } /* Name.Tag */
-.highlight .nv { color: #DFC06F } /* Name.Variable */
-.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
-.highlight .w { color: #D7DAE0 } /* Text.Whitespace */
-.highlight .mf { color: #D19A66 } /* Literal.Number.Float */
-.highlight .mh { color: #D19A66 } /* Literal.Number.Hex */
-.highlight .mi { color: #D19A66 } /* Literal.Number.Integer */
-.highlight .mo { color: #D19A66 } /* Literal.Number.Oct */
-.highlight .sb { color: #86C372 } /* Literal.String.Backtick */
-.highlight .sc { color: #86C372 } /* Literal.String.Char */
-.highlight .sd { color: #86C372; font-style: italic } /* Literal.String.Doc */
-.highlight .s2 { color: #86C372 } /* Literal.String.Double */
-.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
-.highlight .sh { color: #86C372 } /* Literal.String.Heredoc */
-.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
-.highlight .sx { color: #BE74D5 } /* Literal.String.Other */
-.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
-.highlight .s1 { color: #86C372 } /* Literal.String.Single */
-.highlight .ss { color: #DFC06F } /* Literal.String.Symbol */
-.highlight .bp { color: #BE74D5 } /* Name.Builtin.Pseudo */
-.highlight .vc { color: #DFC06F } /* Name.Variable.Class */
-.highlight .vg { color: #DFC06F } /* Name.Variable.Global */
-.highlight .vi { color: #DFC06F } /* Name.Variable.Instance */
-.highlight .il { color: #D19A66 } /* Literal.Number.Integer.Long */
-
-.highlight .lineno {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- cursor: default;
- color: #556366;
-
- &::selection {
- background: transparent; /* WebKit/Blink Browsers */
- }
- &::-moz-selection {
- background: transparent; /* Gecko Browsers */
- }
-}
-
-.highlight pre {
- background-color: #282C34;
- color: #D7DAE0;
- border: none;
- margin-bottom: 25px;
- font-size: 15px;
- padding: 20px 10px;
-}
-
-.highlight {
- font-weight: 700;
-}
diff --git a/searx/static/themes/oscar/less/logicodev/infobox.less b/searx/static/themes/oscar/less/logicodev/infobox.less
deleted file mode 100644
index 954f450..0000000
--- a/searx/static/themes/oscar/less/logicodev/infobox.less
+++ /dev/null
@@ -1,37 +0,0 @@
-.infobox {
-
- .panel-heading{
- background-color: @dim-gray;
-
- .panel-title{
- font-weight: 700;
- }
- }
-
-
- p{
- font-family: "DejaVu Serif", Georgia, Cambria, "Times New Roman", Times, serif !important;
- font-style: italic;
- }
-
- .btn{
- background-color: @green;
- border: none;
-
- a{
- color: white;
- margin: 5px;
- }
- }
-
- .infobox_part {
- margin-bottom: 20px;
- word-wrap: break-word;
- table-layout: fixed;
-
- }
-
- .infobox_part:last-child {
- margin-bottom: 0;
- }
-}
diff --git a/searx/static/themes/oscar/less/logicodev/preferences.less b/searx/static/themes/oscar/less/logicodev/preferences.less
deleted file mode 100644
index 9672d50..0000000
--- a/searx/static/themes/oscar/less/logicodev/preferences.less
+++ /dev/null
@@ -1,3 +0,0 @@
-.table > tbody > tr > td, .table > tbody > tr > th {
- vertical-align: middle !important;
-}
diff --git a/searx/static/themes/oscar/less/logicodev/search.less b/searx/static/themes/oscar/less/logicodev/search.less
deleted file mode 100644
index d65e305..0000000
--- a/searx/static/themes/oscar/less/logicodev/search.less
+++ /dev/null
@@ -1,80 +0,0 @@
-.search_categories, #categories {
- text-transform: capitalize;
- margin-bottom: 0.5rem;
- display: flex;
- flex-wrap: wrap;
- flex-flow: row wrap;
- align-content: stretch;
-
- label, .input-group-addon {
- flex-grow: 1;
- flex-basis: auto;
- font-size: 1.2rem;
- font-weight: normal;
- background-color: white;
- border: @mild-gray 1px solid;
- border-right: none;
- color: @dark-gray;
- padding-bottom: 0.4rem;
- padding-top: 0.4rem;
- text-align: center;
- min-width: 50px;
- }
- label:last-child, .input-group-addon:last-child {
- border-right: @mild-gray 1px solid;
- }
-
- input[type="checkbox"]:checked + label {
- color: @black;
- font-weight: bold;
- border-bottom: @light-green 5px solid;
- }
-}
-
-#main-logo{
- margin-top: 10vh;
- margin-bottom: 25px;
-}
-
-#main-logo > img {
- max-width: 350px;
- width: 80%;
-}
-
-#q{
- box-shadow: none;
- border-right: none;
- border-color: @gray;
-}
-
- #search_form .input-group-btn .btn{
- border-color: @gray;
- }
-
- #search_form .input-group-btn .btn:hover{
- background-color: @green;
- color: white;
- }
-
-.custom-select {
- appearance: none;
- -webkit-appearance: none;
- -moz-appearance: none;
- font-size: 1.2rem;
- font-weight:normal;
- background-color: white;
- border: @mild-gray 1px solid;
- color: @dark-gray;
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAQAAACR313BAAAABGdBTUEAALGPC/xhBQAAACBjSFJN
-AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZ
-cwAABFkAAARZAVnbJUkAAAAHdElNRQfgBxgLDwB20OFsAAAAbElEQVQY073OsQ3CMAAEwJMYwJGn
-sAehpoXJItltBkmcdZBYgIIiQoLglnz3ui+eP+bk5uneteTMZJa6OJuIqvYzSJoqwqBq8gdmTTW8
-6/dghxAUq4xsVYT9laBYXCw93Aajh7GPEF23t4fkBYevGFTANkPRAAAAJXRFWHRkYXRlOmNyZWF0
-ZQAyMDE2LTA3LTI0VDExOjU1OjU4KzAyOjAwRFqFOQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0w
-Ny0yNFQxMToxNTowMCswMjowMP7RDgQAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb
-7jwaAAAAAElFTkSuQmCC) 96% no-repeat;
-}
-
-.search-margin {
- margin-bottom: 0.6em;
-} \ No newline at end of file
diff --git a/searx/static/themes/oscar/less/pointhi/code.less b/searx/static/themes/oscar/less/pointhi/code.less
deleted file mode 100644
index 70a2a5d..0000000
--- a/searx/static/themes/oscar/less/pointhi/code.less
+++ /dev/null
@@ -1,79 +0,0 @@
-.highlight .hll { background-color: #ffffcc }
-.highlight { background: #f8f8f8; }
-.highlight .c { color: #408080; font-style: italic } /* Comment */
-.highlight .err { border: 1px solid #FF0000 } /* Error */
-.highlight .k { color: #008000; font-weight: bold } /* Keyword */
-.highlight .o { color: #666666 } /* Operator */
-.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
-.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
-.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
-.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
-.highlight .gd { color: #A00000 } /* Generic.Deleted */
-.highlight .ge { font-style: italic } /* Generic.Emph */
-.highlight .gr { color: #FF0000 } /* Generic.Error */
-.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.highlight .gi { color: #00A000 } /* Generic.Inserted */
-.highlight .go { color: #888888 } /* Generic.Output */
-.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
-.highlight .gs { font-weight: bold } /* Generic.Strong */
-.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.highlight .gt { color: #0044DD } /* Generic.Traceback */
-.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
-.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
-.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
-.highlight .kp { color: #008000 } /* Keyword.Pseudo */
-.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
-.highlight .kt { color: #B00040 } /* Keyword.Type */
-.highlight .m { color: #666666 } /* Literal.Number */
-.highlight .s { color: #BA2121 } /* Literal.String */
-.highlight .na { color: #7D9029 } /* Name.Attribute */
-.highlight .nb { color: #008000 } /* Name.Builtin */
-.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
-.highlight .no { color: #880000 } /* Name.Constant */
-.highlight .nd { color: #AA22FF } /* Name.Decorator */
-.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
-.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
-.highlight .nf { color: #0000FF } /* Name.Function */
-.highlight .nl { color: #A0A000 } /* Name.Label */
-.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
-.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
-.highlight .nv { color: #19177C } /* Name.Variable */
-.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
-.highlight .w { color: #bbbbbb } /* Text.Whitespace */
-.highlight .mf { color: #666666 } /* Literal.Number.Float */
-.highlight .mh { color: #666666 } /* Literal.Number.Hex */
-.highlight .mi { color: #666666 } /* Literal.Number.Integer */
-.highlight .mo { color: #666666 } /* Literal.Number.Oct */
-.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
-.highlight .sc { color: #BA2121 } /* Literal.String.Char */
-.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
-.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
-.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
-.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
-.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
-.highlight .sx { color: #008000 } /* Literal.String.Other */
-.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
-.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
-.highlight .ss { color: #19177C } /* Literal.String.Symbol */
-.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
-.highlight .vc { color: #19177C } /* Name.Variable.Class */
-.highlight .vg { color: #19177C } /* Name.Variable.Global */
-.highlight .vi { color: #19177C } /* Name.Variable.Instance */
-.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
-
-.highlight .lineno {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- cursor: default;
-
- &::selection {
- background: transparent; /* WebKit/Blink Browsers */
- }
- &::-moz-selection {
- background: transparent; /* Gecko Browsers */
- }
-}
diff --git a/searx/static/themes/oscar/less/pointhi/infobox.less b/searx/static/themes/oscar/less/pointhi/infobox.less
deleted file mode 100644
index df51b00..0000000
--- a/searx/static/themes/oscar/less/pointhi/infobox.less
+++ /dev/null
@@ -1,11 +0,0 @@
-.infobox {
- .infobox_part {
- margin-bottom: 20px;
- word-wrap: break-word;
- table-layout: fixed;
- }
-
- .infobox_part:last-child {
- margin-bottom: 0;
- }
-}
diff --git a/searx/static/themes/oscar/less/pointhi/preferences.less b/searx/static/themes/oscar/less/pointhi/preferences.less
deleted file mode 100644
index 9672d50..0000000
--- a/searx/static/themes/oscar/less/pointhi/preferences.less
+++ /dev/null
@@ -1,3 +0,0 @@
-.table > tbody > tr > td, .table > tbody > tr > th {
- vertical-align: middle !important;
-}
diff --git a/searx/static/themes/oscar/less/pointhi/search.less b/searx/static/themes/oscar/less/pointhi/search.less
deleted file mode 100644
index 5ff7336..0000000
--- a/searx/static/themes/oscar/less/pointhi/search.less
+++ /dev/null
@@ -1,33 +0,0 @@
-.search_categories, #categories {
- text-transform: capitalize;
- margin-bottom: 1.5rem;
- margin-top: 1.5rem;
- display: flex;
- flex-wrap: wrap;
- align-content: stretch;
-
- label, .input-group-addon {
- flex-grow: 1;
- flex-basis: auto;
- font-size: 1.3rem;
- font-weight: normal;
- background-color: white;
- border: #DDD 1px solid;
- border-right: none;
- color: #333;
- padding-bottom: 0.8rem;
- padding-top: 0.8rem;
- text-align: center;
- min-width: 50px;
- }
-
- label:last-child, .input-group-addon:last-child {
- border-right: #DDD 1px solid;
- }
-
- input[type="checkbox"]:checked + label{
- color: black;
- font-weight: bold;
- background-color: #EEE;
- }
-}
diff --git a/searx/static/themes/oscar/package.json b/searx/static/themes/oscar/package.json
index 5b10fcf..8a3d487 100644
--- a/searx/static/themes/oscar/package.json
+++ b/searx/static/themes/oscar/package.json
@@ -1,15 +1,23 @@
{
"devDependencies": {
- "grunt": "~0.4.5",
- "grunt-contrib-uglify": "~0.6.0",
- "grunt-contrib-watch": "~0.6.1",
- "grunt-contrib-concat": "~0.5.0",
- "grunt-contrib-jshint": "~0.10.0",
- "grunt-contrib-less": "~0.11.0"
+ "grunt": "^1.3.0",
+ "grunt-cli": "^1.3.2",
+ "grunt-contrib-concat": "~1.0.1",
+ "grunt-contrib-copy": "^1.0.0",
+ "grunt-contrib-jshint": "~3.0.0",
+ "grunt-contrib-less": "~3.0.0",
+ "grunt-contrib-uglify": "~5.0.0",
+ "grunt-contrib-watch": "~1.1.0"
},
"scripts": {
"build": "npm install && grunt",
"start": "grunt watch",
"test": "grunt"
+ },
+ "dependencies": {
+ "bootstrap": "^3.4.1",
+ "corejs-typeahead": "^1.3.1",
+ "jquery": "^3.6.0",
+ "leaflet": "^1.7.1"
}
}
diff --git a/searx/static/themes/oscar/js/searx_src/01_init.js b/searx/static/themes/oscar/src/js/01_init.js
index 690365c..e361d87 100644
--- a/searx/static/themes/oscar/js/searx_src/01_init.js
+++ b/searx/static/themes/oscar/src/js/01_init.js
@@ -17,6 +17,9 @@
window.searx = (function(d) {
'use strict';
+ //
+ d.getElementsByTagName("html")[0].className = "js";
+
// add data- properties
var script = d.currentScript || (function() {
var scripts = d.getElementsByTagName('script');
@@ -25,6 +28,7 @@ window.searx = (function(d) {
return {
autocompleter: script.getAttribute('data-autocompleter') === 'true',
- method: script.getAttribute('data-method')
+ method: script.getAttribute('data-method'),
+ translations: JSON.parse(script.getAttribute('data-translations'))
};
})(document);
diff --git a/searx/static/themes/oscar/src/js/autocompleter.js b/searx/static/themes/oscar/src/js/autocompleter.js
new file mode 100644
index 0000000..56293f4
--- /dev/null
+++ b/searx/static/themes/oscar/src/js/autocompleter.js
@@ -0,0 +1,60 @@
+/**
+ * searx is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * searx is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with searx. If not, see < http://www.gnu.org/licenses/ >.
+ *
+ * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at>
+ */
+
+$(document).ready(function(){
+ var original_search_value = '';
+ if(searx.autocompleter) {
+ var searchResults = new Bloodhound({
+ datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
+ queryTokenizer: Bloodhound.tokenizers.whitespace,
+ remote: {
+ url: './autocompleter?q=%QUERY',
+ wildcard: '%QUERY'
+ }
+ });
+ searchResults.initialize();
+
+ $("#q").on('keydown', function(e) {
+ if(e.which == 13) {
+ original_search_value = $('#q').val();
+ }
+ });
+ $('#q').typeahead({
+ name: 'search-results',
+ highlight: false,
+ hint: true,
+ displayKey: function(result) {
+ return result;
+ },
+ classNames: {
+ input: 'tt-input',
+ hint: 'tt-hint',
+ menu: 'tt-dropdown-menu',
+ dataset: 'tt-dataset-search-results',
+ },
+ }, {
+ name: 'autocomplete',
+ source: searchResults,
+ });
+ $('#q').bind('typeahead:select', function(ev, suggestion) {
+ if(original_search_value) {
+ $('#q').val(original_search_value);
+ }
+ $("#search_form").submit();
+ });
+ }
+});
diff --git a/searx/static/themes/oscar/js/searx_src/element_modifiers.js b/searx/static/themes/oscar/src/js/element_modifiers.js
index 4264d4c..087f7d4 100644
--- a/searx/static/themes/oscar/js/searx_src/element_modifiers.js
+++ b/searx/static/themes/oscar/src/js/element_modifiers.js
@@ -22,6 +22,13 @@ $(document).ready(function(){
$('#q.autofocus').focus();
/**
+ * Empty search bar when click on reset button
+ */
+ $("#clear_search").click(function () {
+ document.getElementById("q").value = "";
+ });
+
+ /**
* select full content on click if class="select-all-on-click"
*/
$(".select-all-on-click").click(function () {
@@ -96,4 +103,15 @@ $(document).ready(function(){
$(".btn-sm").addClass('btn-default');
}
});
+ $(".nav-tabs").click(function(a) {
+ var tabs = $(a.target).parents("ul");
+ tabs.children().attr("aria-selected", "false");
+ $(a.target).parent().attr("aria-selected", "true");
+ });
+
+ /**
+ * Layout images according to their sizes
+ */
+ searx.image_thumbnail_layout = new searx.ImageLayout('#main_results', '#main_results .result-images', 'img.img-thumbnail', 15, 200);
+ searx.image_thumbnail_layout.watch();
});
diff --git a/searx/static/themes/oscar/src/js/infobox.js b/searx/static/themes/oscar/src/js/infobox.js
new file mode 100644
index 0000000..cb7f1ee
--- /dev/null
+++ b/searx/static/themes/oscar/src/js/infobox.js
@@ -0,0 +1,11 @@
+window.addEventListener('load', function() {
+ // Hide infobox toggle if shrunk size already fits all content.
+ $('.infobox').each(function() {
+ var infobox_body = $(this).find('.infobox_body');
+ var total_height = infobox_body.prop('scrollHeight') + infobox_body.find('img.infobox_part').height();
+ var max_height = infobox_body.css('max-height').replace('px', '');
+ if (total_height <= max_height) {
+ $(this).find('.infobox_toggle').hide();
+ }
+ });
+});
diff --git a/searx/static/themes/oscar/src/js/leaflet_map.js b/searx/static/themes/oscar/src/js/leaflet_map.js
new file mode 100644
index 0000000..08233c4
--- /dev/null
+++ b/searx/static/themes/oscar/src/js/leaflet_map.js
@@ -0,0 +1,79 @@
+/**
+ * searx is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * searx is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with searx. If not, see < http://www.gnu.org/licenses/ >.
+ *
+ * (C) 2014 by Thomas Pointhuber, <thomas.pointhuber@gmx.at>
+ */
+
+$(document).ready(function(){
+ $(".searx_init_map").on( "click", function( event ) {
+ var leaflet_target = $(this).data('leaflet-target');
+ var map_lon = $(this).data('map-lon');
+ var map_lat = $(this).data('map-lat');
+ var map_zoom = $(this).data('map-zoom');
+ var map_boundingbox = $(this).data('map-boundingbox');
+ var map_geojson = $(this).data('map-geojson');
+
+ if(map_boundingbox) {
+ southWest = L.latLng(map_boundingbox[0], map_boundingbox[2]);
+ northEast = L.latLng(map_boundingbox[1], map_boundingbox[3]);
+ map_bounds = L.latLngBounds(southWest, northEast);
+ }
+
+ // change default imagePath
+ L.Icon.Default.imagePath = "./static/themes/oscar/css/images/";
+
+ // init map
+ var map = L.map(leaflet_target);
+
+ // create the tile layer with correct attribution
+ var osmMapnikUrl='https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
+ var osmMapnikAttrib='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
+ var osmMapnik = new L.TileLayer(osmMapnikUrl, {minZoom: 1, maxZoom: 19, attribution: osmMapnikAttrib});
+
+ var osmWikimediaUrl='https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png';
+ var osmWikimediaAttrib = 'Wikimedia maps beta | Maps data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
+ var osmWikimedia = new L.TileLayer(osmWikimediaUrl, {minZoom: 1, maxZoom: 19, attribution: osmWikimediaAttrib});
+
+ // init map view
+ setTimeout(function() {
+ if(map_bounds) {
+ map.fitBounds(map_bounds, {
+ maxZoom:17
+ });
+ } else if (map_lon && map_lat) {
+ if(map_zoom)
+ map.setView(new L.LatLng(map_lat, map_lon),map_zoom);
+ else
+ map.setView(new L.LatLng(map_lat, map_lon),8);
+ }
+ }, 0);
+
+ map.addLayer(osmMapnik);
+
+ var baseLayers = {
+ "OSM Mapnik": osmMapnik/*,
+ "OSM Wikimedia": osmWikimedia*/
+ };
+
+ L.control.layers(baseLayers).addTo(map);
+
+ if(map_geojson)
+ L.geoJson(map_geojson).addTo(map);
+ /*else if(map_bounds)
+ L.rectangle(map_bounds, {color: "#ff7800", weight: 3, fill:false}).addTo(map);*/
+
+ // this event occour only once per element
+ $( this ).off( event );
+ });
+});
diff --git a/searx/static/themes/oscar/src/js/toggleall.js b/searx/static/themes/oscar/src/js/toggleall.js
new file mode 100644
index 0000000..b6c484e
--- /dev/null
+++ b/searx/static/themes/oscar/src/js/toggleall.js
@@ -0,0 +1,10 @@
+$(document).ready(function(){
+ $("#allow-all-engines").click(function() {
+ $(".onoffswitch-checkbox").each(function() { this.checked = false;});
+ });
+
+ $("#disable-all-engines").click(function() {
+ $(".onoffswitch-checkbox").each(function() { this.checked = true;});
+ });
+});
+
diff --git a/searx/static/themes/oscar/src/less/bootstrap/bootstrap.less b/searx/static/themes/oscar/src/less/bootstrap/bootstrap.less
new file mode 100644
index 0000000..d6145eb
--- /dev/null
+++ b/searx/static/themes/oscar/src/less/bootstrap/bootstrap.less
@@ -0,0 +1,3 @@
+@import "../../../node_modules/bootstrap/less/bootstrap.less";
+
+@import "typeahead.less";
diff --git a/searx/static/themes/oscar/src/less/bootstrap/typeahead.less b/searx/static/themes/oscar/src/less/bootstrap/typeahead.less
new file mode 100644
index 0000000..de1c6ef
--- /dev/null
+++ b/searx/static/themes/oscar/src/less/bootstrap/typeahead.less
@@ -0,0 +1,154 @@
+/*
+ * typehead.js-bootstrap3.less
+ * @version 0.2.3
+ * https://github.com/hyspace/typeahead.js-bootstrap3.less
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/MIT
+ */
+
+//custom mixin for .form-control-validation
+.typeahead-form-control(@border-color: #ccc;) {
+ border-color: @border-color;
+ .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
+ &:focus {
+ border-color: darken(@border-color, 10%);
+ @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);
+ .box-shadow(@shadow);
+ }
+ }
+
+ //main styles for control
+ .tt-input,
+ .tt-hint {
+ .twitter-typeahead &{
+ //validation states
+ .has-warning &{
+ .typeahead-form-control(@state-warning-text);
+ }
+ .has-error &{
+ .typeahead-form-control(@state-danger-text);
+ }
+ .has-success &{
+ .typeahead-form-control(@state-success-text);
+ }
+ }
+
+ //border
+ .input-group .twitter-typeahead:first-child &{
+ .border-left-radius(@border-radius-base);
+ }
+ .input-group .twitter-typeahead:last-child &{
+ .border-right-radius(@border-radius-base);
+ }
+
+ //sizing - small:size and border
+ .input-group.input-group-sm .twitter-typeahead &{
+ .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);
+ }
+ .input-group.input-group-sm .twitter-typeahead:not(:first-child):not(:last-child) &{
+ border-radius: 0;
+ }
+ .input-group.input-group-sm .twitter-typeahead:first-child &{
+ .border-left-radius(@border-radius-small);
+ .border-right-radius(0);
+ }
+ .input-group.input-group-sm .twitter-typeahead:last-child &{
+ .border-left-radius(0);
+ .border-right-radius(@border-radius-small);
+ }
+
+ //sizing - large:size and border
+ .input-group.input-group-lg .twitter-typeahead &{
+ .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);
+ }
+ .input-group.input-group-lg .twitter-typeahead:not(:first-child):not(:last-child) &{
+ border-radius: 0;
+ }
+ .input-group.input-group-lg .twitter-typeahead:first-child &{
+ .border-left-radius(@border-radius-large);
+ .border-right-radius(0);
+ }
+ .input-group.input-group-lg .twitter-typeahead:last-child &{
+ .border-left-radius(0);
+ .border-right-radius(@border-radius-large);
+ }
+ }
+
+ //for wrapper
+ .twitter-typeahead {
+ width: 100%;
+ .input-group &{
+ //overwrite `display:inline-block` style
+ display: table-cell!important;
+ float: left;
+ }
+ }
+
+ //particular style for each other
+ .twitter-typeahead .tt-hint {
+ color: @text-muted;//color - hint
+ }
+ .twitter-typeahead .tt-input {
+ z-index: 2;
+ //disabled status
+ //overwrite inline styles of .tt-query
+ &[disabled],
+ &[readonly],
+ fieldset[disabled] & {
+ cursor: not-allowed;
+ //overwirte inline style
+ background-color: @input-bg-disabled!important;
+ }
+ }
+
+ //dropdown styles
+ .tt-dropdown-menu {
+ //dropdown menu
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: @zindex-dropdown;
+ min-width: 160px;
+ width: 100%;
+ padding: 5px 0;
+ margin: 2px 0 0;
+ list-style: none;
+ font-size: @font-size-base;
+ background-color: @dropdown-bg;
+ border: 1px solid @dropdown-fallback-border;
+ border: 1px solid @dropdown-border;
+ border-radius: @border-radius-base;
+ .box-shadow(0 6px 12px rgba(0,0,0,.175));
+ background-clip: padding-box;
+ *border-right-width: 2px;
+ *border-bottom-width: 2px;
+
+ .tt-suggestion {
+ //item
+ display: block;
+ padding: 3px 20px;
+ clear: both;
+ font-weight: normal;
+ line-height: @line-height-base;
+ color: @dropdown-link-color;
+ white-space: nowrap;
+ text-align: left;
+ cursor: pointer !important;
+ &.tt-cursor {
+ //item selected
+ text-decoration: none;
+ outline: 0;
+ background-color: @dropdown-link-hover-bg;
+ color: @dropdown-link-hover-color;
+ a {
+ //link in item selected
+ color: @dropdown-link-hover-color;
+ }
+ }
+ p {
+ margin: 0;
+ }
+ }
+ }
+ \ No newline at end of file
diff --git a/searx/static/themes/oscar/less/logicodev-dark/oscar.less b/searx/static/themes/oscar/src/less/logicodev-dark/oscar.less
index e788b8c..1f8c559 100644
--- a/searx/static/themes/oscar/less/logicodev-dark/oscar.less
+++ b/searx/static/themes/oscar/src/less/logicodev-dark/oscar.less
@@ -51,7 +51,7 @@ ul.nav li a {
color:#D5D8D7 !important;
}
-#categories *, {
+#categories a, {
border: 1px solid #3d3f43 !important;
}
@@ -71,10 +71,6 @@ ul.nav li a {
border-color: #4d3f43 !important;
}
-.highlight {
- background: #333333 !important;
-}
-
/*nav*/
.navbar{
background:#1d1f21 none;
@@ -136,6 +132,16 @@ ul.nav li a {
border-color: #111 !important;
}
+.panel-footer {
+ color: #C5C8C6 !important;
+ background: #282a2e !important;
+ border-top: 1px solid #111 !important;
+}
+
+.infobox_toggle:hover {
+ background: #3d3f43 !important;
+}
+
p.btn.btn-default{
background: none;
}
@@ -243,3 +249,9 @@ p.btn.btn-default{
.highlight {
background-color: transparent !important;
}
+
+/* engine tooltip */
+.engine-tooltip {
+ border: 1px solid #3d3f43;
+ background: #1d1f21 ;
+}
diff --git a/searx/static/themes/oscar/less/logicodev/advanced.less b/searx/static/themes/oscar/src/less/logicodev/advanced.less
index 4c3827b..b8e10de 100644
--- a/searx/static/themes/oscar/less/logicodev/advanced.less
+++ b/searx/static/themes/oscar/src/less/logicodev/advanced.less
@@ -31,8 +31,8 @@
}
}
-#check-advanced {
- display: none;
+#check-advanced:focus + label {
+ text-decoration: underline;
}
#check-advanced:checked ~ #advanced-search-container {
diff --git a/searx/static/themes/oscar/less/logicodev/checkbox.less b/searx/static/themes/oscar/src/less/logicodev/checkbox.less
index 6428b36..6428b36 100644
--- a/searx/static/themes/oscar/less/logicodev/checkbox.less
+++ b/searx/static/themes/oscar/src/less/logicodev/checkbox.less
diff --git a/searx/static/themes/oscar/src/less/logicodev/code.less b/searx/static/themes/oscar/src/less/logicodev/code.less
new file mode 100644
index 0000000..3aef968
--- /dev/null
+++ b/searx/static/themes/oscar/src/less/logicodev/code.less
@@ -0,0 +1,14 @@
+pre, code {
+ font-family: 'Ubuntu Mono', 'Courier New', 'Lucida Console', monospace !important;
+}
+
+@import "pygments.less";
+
+.code-highlight pre {
+ margin-bottom: 25px;
+ padding: 20px 10px;
+ background-color: inherit;
+ color: inherit;
+ border: inherit;
+ color: #D7DAE0;
+}
diff --git a/searx/static/themes/oscar/less/logicodev/cursor.less b/searx/static/themes/oscar/src/less/logicodev/cursor.less
index cbc1ea6..cbc1ea6 100644
--- a/searx/static/themes/oscar/less/logicodev/cursor.less
+++ b/searx/static/themes/oscar/src/less/logicodev/cursor.less
diff --git a/searx/static/themes/oscar/less/logicodev/footer.less b/searx/static/themes/oscar/src/less/logicodev/footer.less
index d23a0cc..d23a0cc 100644
--- a/searx/static/themes/oscar/less/logicodev/footer.less
+++ b/searx/static/themes/oscar/src/less/logicodev/footer.less
diff --git a/searx/static/themes/oscar/src/less/logicodev/infobox.less b/searx/static/themes/oscar/src/less/logicodev/infobox.less
new file mode 100644
index 0000000..c5bdfa6
--- /dev/null
+++ b/searx/static/themes/oscar/src/less/logicodev/infobox.less
@@ -0,0 +1,92 @@
+.infobox {
+
+ .panel-heading{
+ background-color: @dim-gray;
+
+ .panel-title{
+ font-weight: 700;
+ }
+ }
+
+ .header_url {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: block;
+ }
+
+
+ p{
+ font-family: "DejaVu Serif", Georgia, Cambria, "Times New Roman", Times, serif !important;
+ font-style: italic;
+ }
+
+ img{
+ max-height: "250px";
+ }
+
+ .btn{
+ background-color: @dark-blue;
+ border: none;
+
+ a{
+ color: white;
+ margin: 5px;
+ }
+ }
+
+ .infobox_part {
+ margin-bottom: 20px;
+ word-wrap: break-word;
+ table-layout: fixed;
+
+ }
+
+ .infobox_part:last-child {
+ margin-bottom: 0;
+ }
+
+ .infobox_toggle {
+ width: 100%;
+ text-align: center;
+ margin-bottom: 0px;
+ cursor: pointer;
+ }
+
+ .infobox_toggle:hover {
+ background: @mild-gray;
+ }
+
+ // Shrink infobox size when toggle is off
+ .infobox_checkbox ~ .infobox_body {
+ max-height: 300px;
+ overflow: hidden;
+ }
+ .infobox_checkbox:checked ~ .infobox_body {
+ max-height: none;
+ }
+
+ // Show toggle button as down when infobox is shrunk
+ .infobox_checkbox ~ .infobox_toggle .infobox_label_down {
+ display: block;
+ }
+ .infobox_checkbox ~ .infobox_toggle .infobox_label_up {
+ display: none;
+ }
+
+ // Show toggle button as up when infobox is expanded
+ .infobox_checkbox:checked ~ .infobox_toggle .infobox_label_up {
+ display: block;
+ }
+ .infobox_checkbox:checked ~ .infobox_toggle .infobox_label_down {
+ display: none;
+ }
+
+ // Hide main image when toggle is off
+ .infobox_checkbox ~ .infobox_body img.infobox_part {
+ display: none;
+ }
+ .infobox_checkbox:checked ~ .infobox_body img.infobox_part {
+ display: block;
+ }
+}
diff --git a/searx/static/themes/oscar/less/logicodev/navbar.less b/searx/static/themes/oscar/src/less/logicodev/navbar.less
index 6e4f9ee..6e4f9ee 100644
--- a/searx/static/themes/oscar/less/logicodev/navbar.less
+++ b/searx/static/themes/oscar/src/less/logicodev/navbar.less
diff --git a/searx/static/themes/oscar/less/logicodev/onoff.less b/searx/static/themes/oscar/src/less/logicodev/onoff.less
index f471892..fbd2983 100644
--- a/searx/static/themes/oscar/less/logicodev/onoff.less
+++ b/searx/static/themes/oscar/src/less/logicodev/onoff.less
@@ -9,7 +9,21 @@
-ms-user-select: none;
}
.onoffswitch-checkbox {
- display: none;
+ opacity: 0;
+ position: absolute;
+}
+.onoffswitch-checkbox:before {
+ content: "";
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ margin-right: 10px;
+ position: absolute;
+ left: 0;
+ bottom: 1px;
+ background-color: #fff;
+ border: 1px solid #ccc;
+ border-radius: 0px;
}
.onoffswitch-label {
display: block;
@@ -44,7 +58,7 @@
top: 0;
bottom: 0;
right: 0px;
- border: 2px solid #FFFFFF !important;
+ border: 2px solid #FFFFFF;
border-radius: 50px !important;
transition: all 0.3s ease-in 0s;
}
@@ -55,3 +69,6 @@
right: 71px;
background-color: #A1A1A1;
}
+.onoffswitch-checkbox:focus + .onoffswitch-label .onoffswitch-switch {
+ border: 3px solid #444444;
+}
diff --git a/searx/static/themes/oscar/less/logicodev/oscar.less b/searx/static/themes/oscar/src/less/logicodev/oscar.less
index da80d1e..da80d1e 100644
--- a/searx/static/themes/oscar/less/logicodev/oscar.less
+++ b/searx/static/themes/oscar/src/less/logicodev/oscar.less
diff --git a/searx/static/themes/oscar/src/less/logicodev/preferences.less b/searx/static/themes/oscar/src/less/logicodev/preferences.less
new file mode 100644
index 0000000..ccd0b02
--- /dev/null
+++ b/searx/static/themes/oscar/src/less/logicodev/preferences.less
@@ -0,0 +1,31 @@
+.table > tbody > tr > td, .table > tbody > tr > th {
+ vertical-align: middle !important;
+}
+
+.nav-tabs.nav-justified{
+ margin-bottom: 20px;
+}
+
+p {
+ margin: 10px 0;
+}
+
+input.cursor-text {
+ margin: 10px 0;
+}
+
+.engine-tooltip {
+ display: none;
+ position: absolute;
+ padding: 0.5rem 1rem;
+ margin: 0rem 0 0 2rem;
+ border: 1px solid #ddd;
+ background: white;
+ font-size: 14px;
+ font-weight: normal;
+ z-index: 1000000;
+}
+
+th:hover .engine-tooltip, .engine-tooltip:hover {
+ display: inline-block;
+} \ No newline at end of file
diff --git a/searx/static/themes/oscar/src/less/logicodev/pygments.less b/searx/static/themes/oscar/src/less/logicodev/pygments.less
new file mode 100644
index 0000000..301c94e
--- /dev/null
+++ b/searx/static/themes/oscar/src/less/logicodev/pygments.less
@@ -0,0 +1,99 @@
+/*
+ this file is generated automatically by searx_extra/update/update_pygments.py
+ using pygments version 2.8.0
+*/
+
+.code-highlight .linenos {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: default;
+
+ &::selection {
+ background: transparent; /* WebKit/Blink Browsers */
+ }
+ &::-moz-selection {
+ background: transparent; /* Gecko Browsers */
+ }
+
+ margin-right: 8px;
+ text-align: right;
+}
+
+.code-highlight pre { line-height: 125%; }
+.code-highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+.code-highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+.code-highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+.code-highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+.code-highlight .hll { background-color: #ffffcc }
+.code-highlight { background: #282C34; }
+.code-highlight .c { color: #556366; font-style: italic } /* Comment */
+.code-highlight .err { border: 1px solid #ff0000 } /* Error */
+.code-highlight .k { color: #BE74D5; font-weight: bold } /* Keyword */
+.code-highlight .o { color: #D19A66 } /* Operator */
+.code-highlight .ch { color: #556366; font-style: italic } /* Comment.Hashbang */
+.code-highlight .cm { color: #556366; font-style: italic } /* Comment.Multiline */
+.code-highlight .cp { color: #BC7A00; font-style: italic } /* Comment.Preproc */
+.code-highlight .cpf { color: #556366; font-style: italic } /* Comment.PreprocFile */
+.code-highlight .c1 { color: #556366; font-style: italic } /* Comment.Single */
+.code-highlight .cs { color: #556366; font-style: italic } /* Comment.Special */
+.code-highlight .gd { color: #A00000 } /* Generic.Deleted */
+.code-highlight .ge { font-style: italic } /* Generic.Emph */
+.code-highlight .gr { color: #FF0000 } /* Generic.Error */
+.code-highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code-highlight .gi { color: #00A000 } /* Generic.Inserted */
+.code-highlight .go { color: #888888 } /* Generic.Output */
+.code-highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code-highlight .gs { font-weight: bold } /* Generic.Strong */
+.code-highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code-highlight .gt { color: #0044DD } /* Generic.Traceback */
+.code-highlight .kc { color: #BE74D5; font-weight: bold } /* Keyword.Constant */
+.code-highlight .kd { color: #BE74D5; font-weight: bold } /* Keyword.Declaration */
+.code-highlight .kn { color: #BE74D5; font-weight: bold } /* Keyword.Namespace */
+.code-highlight .kp { color: #BE74D5; font-weight: bold } /* Keyword.Pseudo */
+.code-highlight .kr { color: #BE74D5; font-weight: bold } /* Keyword.Reserved */
+.code-highlight .kt { color: #D46C72; font-weight: bold } /* Keyword.Type */
+.code-highlight .m { color: #D19A66 } /* Literal.Number */
+.code-highlight .s { color: #86C372 } /* Literal.String */
+.code-highlight .na { color: #7D9029 } /* Name.Attribute */
+.code-highlight .nb { color: #BE74D5 } /* Name.Builtin */
+.code-highlight .nc { color: #61AFEF; font-weight: bold } /* Name.Class */
+.code-highlight .no { color: #D19A66 } /* Name.Constant */
+.code-highlight .nd { color: #AA22FF } /* Name.Decorator */
+.code-highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code-highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code-highlight .nf { color: #61AFEF } /* Name.Function */
+.code-highlight .nl { color: #A0A000 } /* Name.Label */
+.code-highlight .nn { color: #61AFEF; font-weight: bold } /* Name.Namespace */
+.code-highlight .nt { color: #BE74D5; font-weight: bold } /* Name.Tag */
+.code-highlight .nv { color: #DFC06F } /* Name.Variable */
+.code-highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code-highlight .w { color: #D7DAE0 } /* Text.Whitespace */
+.code-highlight .mb { color: #D19A66 } /* Literal.Number.Bin */
+.code-highlight .mf { color: #D19A66 } /* Literal.Number.Float */
+.code-highlight .mh { color: #D19A66 } /* Literal.Number.Hex */
+.code-highlight .mi { color: #D19A66 } /* Literal.Number.Integer */
+.code-highlight .mo { color: #D19A66 } /* Literal.Number.Oct */
+.code-highlight .sa { color: #86C372 } /* Literal.String.Affix */
+.code-highlight .sb { color: #86C372 } /* Literal.String.Backtick */
+.code-highlight .sc { color: #86C372 } /* Literal.String.Char */
+.code-highlight .dl { color: #86C372 } /* Literal.String.Delimiter */
+.code-highlight .sd { color: #86C372; font-style: italic } /* Literal.String.Doc */
+.code-highlight .s2 { color: #86C372 } /* Literal.String.Double */
+.code-highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code-highlight .sh { color: #86C372 } /* Literal.String.Heredoc */
+.code-highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code-highlight .sx { color: #BE74D5 } /* Literal.String.Other */
+.code-highlight .sr { color: #BB6688 } /* Literal.String.Regex */
+.code-highlight .s1 { color: #86C372 } /* Literal.String.Single */
+.code-highlight .ss { color: #DFC06F } /* Literal.String.Symbol */
+.code-highlight .bp { color: #BE74D5 } /* Name.Builtin.Pseudo */
+.code-highlight .fm { color: #61AFEF } /* Name.Function.Magic */
+.code-highlight .vc { color: #DFC06F } /* Name.Variable.Class */
+.code-highlight .vg { color: #DFC06F } /* Name.Variable.Global */
+.code-highlight .vi { color: #DFC06F } /* Name.Variable.Instance */
+.code-highlight .vm { color: #DFC06F } /* Name.Variable.Magic */
+.code-highlight .il { color: #D19A66 } /* Literal.Number.Integer.Long */
diff --git a/searx/static/themes/oscar/less/logicodev/results.less b/searx/static/themes/oscar/src/less/logicodev/results.less
index 5e7e133..0668dc8 100644
--- a/searx/static/themes/oscar/less/logicodev/results.less
+++ b/searx/static/themes/oscar/src/less/logicodev/results.less
@@ -33,12 +33,10 @@
word-wrap: break-word;
color: @dark-gray;
font-size: 13px;
+}
-
- .highlight {
- font-weight:bold;
- }
-
+.result .highlight {
+ font-weight: bold;
}
.result-source {
@@ -51,6 +49,11 @@
float: right;
}
+.result-abstract {
+ margin-top: 0.5em;
+ margin-bottom: 0.8em;
+}
+
.external-link {
color: @dark-green;
font-size: 12px;
@@ -64,7 +67,7 @@
// default formating of results
.result-default, .result-code, .result-torrent, .result-videos, .result-map {
clear: both;
- padding: 2px 4px;
+ padding: 0.5em 4px;
&:hover{
background-color: @dim-gray;
}
@@ -74,12 +77,39 @@
// image formating of results
.result-images {
float: left !important;
- width: 24%;
- margin: .5%;
+ margin: 0;
+ padding: 0;
a {
display: block;
width: 100%;
background-size: cover;
+ .img-thumbnail {
+ border: none !important;
+ padding: 0;
+ }
+ &:hover, &:focus {
+ outline: 0;
+ .img-thumbnail {
+ box-shadow: 5px 5px 15px 0px black;
+ }
+ }
+ }
+}
+
+.result-images.js a .img-thumbnail {
+ max-height: inherit;
+ min-height: inherit;
+}
+
+.result-images:not(.js) {
+ width: 25%;
+ padding: 3px 13px 13px 3px;
+ a {
+ .img-thumbnail {
+ margin: 0;
+ max-height: 128px;
+ min-height: 128px;
+ }
}
}
@@ -124,9 +154,53 @@
}
}
+.result-metadata {
+ clear: both;
+ margin: 1em;
+
+ td {
+ padding-right: 1em;
+ color: @gray;
+ }
+
+ td:first-of-type {
+ color: @dark-gray;
+ }
+}
+
// map formating of results
.result-map {
clear: both;
+
+ .img-thumbnail {
+ float: right;
+ width: auto;
+ height: 120px;
+ border: 0;
+ background: inherit;
+ }
+
+ .img-type {
+ width: 20px;
+ max-height: 20px;
+ }
+
+ .result-map-details {
+ font-size: 13px;
+ border-collapse: separate;
+ border-spacing: 0 0.35rem;
+
+ th {
+ font-weight: inherit;
+ width: 20rem;
+ vertical-align: top;
+ }
+
+ td {
+ vertical-align: top;
+ }
+ }
+
}
// code formating of results
@@ -164,7 +238,7 @@
}
.label-default {
- color: @gray;
+ color: @dark-gray;
background: transparent;
}
@@ -185,3 +259,9 @@
outline: 0 none;
position: relative;
}
+
+@media screen and (max-width: 75em) {
+ .img-thumbnail {
+ object-fit: cover;
+ }
+}
diff --git a/searx/static/themes/oscar/src/less/logicodev/search.less b/searx/static/themes/oscar/src/less/logicodev/search.less
new file mode 100644
index 0000000..57adaae
--- /dev/null
+++ b/searx/static/themes/oscar/src/less/logicodev/search.less
@@ -0,0 +1,113 @@
+.search_categories, #categories {
+ text-transform: capitalize;
+ margin-bottom: 0.5rem;
+ display: flex;
+ flex-wrap: wrap;
+ flex-flow: row wrap;
+ align-content: stretch;
+
+ a {
+ height: 3rem;
+ flex-grow: 1;
+ flex-basis: auto;
+ border: @mild-gray 1px solid;
+ border-right: none;
+ color: @dark-gray;
+ padding-bottom: 0.3rem;
+ padding-top: 0.1rem;
+ text-align: center;
+ min-width: 50px;
+ }
+
+ label, .input-group-addon {
+ flex-grow: 1;
+ flex-basis: auto;
+ font-size: 1.2rem;
+ font-weight: normal;
+ background-color: white;
+ border: none;
+ border-right: none;
+ color: @dark-gray;
+ padding-bottom: 0;
+ padding-top: 0;
+ text-align: center;
+ width: 100%;
+ height: 100%;
+ }
+
+ a:last-child, .input-group-addon:last-child {
+ border-right: @mild-gray 1px solid;
+ }
+
+ input[type="checkbox"]:checked + a {
+ color: @black;
+ font-weight: bold;
+ border-bottom: @light-green 5px solid;
+ }
+}
+
+#main-logo{
+ margin-top: 10vh;
+ margin-bottom: 25px;
+}
+
+#main-logo > img {
+ max-width: 350px;
+ width: 80%;
+}
+
+#q{
+ box-shadow: none;
+ border-right: none;
+ border-color: @semidark-gray;
+}
+
+ #search_form .input-group-btn .btn{
+ border-color: @semidark-gray;
+ }
+
+ #search_form .input-group-btn .btn:hover{
+ background-color: @dark-green;
+ color: white;
+ }
+
+.custom-select, .custom-select-rtl {
+ appearance: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ font-size: 1.2rem;
+ font-weight:normal;
+ background-color: white;
+ border: @semidark-gray 1px solid;
+ color: @dark-gray;
+ // Warning: multi-line base64 URL adds "$stdin" in the source map: https://github.com/jakubpawlowicz/clean-css/issues/593
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAQAAACR313BAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAABFkAAARZAVnbJUkAAAAHdElNRQfgBxgLDwB20OFsAAAAbElEQVQY073OsQ3CMAAEwJMYwJGnsAehpoXJItltBkmcdZBYgIIiQoLglnz3ui+eP+bk5uneteTMZJa6OJuIqvYzSJoqwqBq8gdmTTW86/dghxAUq4xsVYT9laBYXCw93Aajh7GPEF23t4fkBYevGFTANkPRAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA3LTI0VDExOjU1OjU4KzAyOjAwRFqFOQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wNy0yNFQxMToxNTowMCswMjowMP7RDgQAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC) 96% no-repeat;
+ padding-right: 26px;
+ text-overflow: ellipsis;
+}
+
+.custom-select-rtl {
+ background-position-x: 4%;
+}
+
+.search-margin {
+ margin-bottom: 0.6em;
+}
+
+.visually-hidden {
+ position: absolute !important;
+ height: 1px;
+ width: 1px;
+ overflow: hidden;
+ clip: rect(1px, 1px, 1px, 1px);
+ white-space: nowrap;
+}
+.label-danger, .btn-danger {
+ background: @dark-red;
+}
+.label-success, .btn-success {
+ background: @dark-green;
+}
+select.form-control {
+ border-color: @semidark-gray !important;
+}
diff --git a/searx/static/themes/oscar/less/logicodev/variables.less b/searx/static/themes/oscar/src/less/logicodev/variables.less
index 5966ee6..4ee8df8 100644
--- a/searx/static/themes/oscar/less/logicodev/variables.less
+++ b/searx/static/themes/oscar/src/less/logicodev/variables.less
@@ -2,12 +2,15 @@
@gray: #A4A4A4;
@dim-gray: #F6F9FA;
@dark-gray: #666;
+@semidark-gray: #888;
@middle-gray: #F5F5F5;
@mild-gray: #DDD;
-@blue: #0088CC;
+@dark-blue: #007AB8;
+@blue: #0088CC;
@red: #F35E77;
@violet: #684898;
-@dark-green: #069025;
+@dark-green: #068922;
@green: #2ecc71;
-@light-green: #01D7D4;
+@light-green: #01D7D4;
@orange: #FFA92F;
+@dark-red: #c9432f;
diff --git a/searx/static/themes/oscar/less/pointhi/advanced.less b/searx/static/themes/oscar/src/less/pointhi/advanced.less
index 23bfdb0..23bfdb0 100644
--- a/searx/static/themes/oscar/less/pointhi/advanced.less
+++ b/searx/static/themes/oscar/src/less/pointhi/advanced.less
diff --git a/searx/static/themes/oscar/less/pointhi/checkbox.less b/searx/static/themes/oscar/src/less/pointhi/checkbox.less
index 6428b36..6428b36 100644
--- a/searx/static/themes/oscar/less/pointhi/checkbox.less
+++ b/searx/static/themes/oscar/src/less/pointhi/checkbox.less
diff --git a/searx/static/themes/oscar/src/less/pointhi/code.less b/searx/static/themes/oscar/src/less/pointhi/code.less
new file mode 100644
index 0000000..86fe153
--- /dev/null
+++ b/searx/static/themes/oscar/src/less/pointhi/code.less
@@ -0,0 +1,2 @@
+@import "pygments.less";
+
diff --git a/searx/static/themes/oscar/less/pointhi/cursor.less b/searx/static/themes/oscar/src/less/pointhi/cursor.less
index cbc1ea6..cbc1ea6 100644
--- a/searx/static/themes/oscar/less/pointhi/cursor.less
+++ b/searx/static/themes/oscar/src/less/pointhi/cursor.less
diff --git a/searx/static/themes/oscar/less/pointhi/footer.less b/searx/static/themes/oscar/src/less/pointhi/footer.less
index 0b25e73..0b25e73 100644
--- a/searx/static/themes/oscar/less/pointhi/footer.less
+++ b/searx/static/themes/oscar/src/less/pointhi/footer.less
diff --git a/searx/static/themes/oscar/src/less/pointhi/infobox.less b/searx/static/themes/oscar/src/less/pointhi/infobox.less
new file mode 100644
index 0000000..e6a55e9
--- /dev/null
+++ b/searx/static/themes/oscar/src/less/pointhi/infobox.less
@@ -0,0 +1,62 @@
+.infobox {
+
+ img {
+ max-height: 250px;
+ }
+
+ .infobox_part {
+ margin-bottom: 20px;
+ word-wrap: break-word;
+ table-layout: fixed;
+ }
+
+ .infobox_part:last-child {
+ margin-bottom: 0;
+ }
+
+ .header_url {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: block;
+ }
+
+ .infobox_toggle {
+ width: 100%;
+ text-align: center;
+ margin-bottom: 0px;
+ }
+
+ // Shrink infobox size when toggle is off
+ .infobox_checkbox ~ .infobox_body {
+ max-height: 300px;
+ overflow: hidden;
+ }
+ .infobox_checkbox:checked ~ .infobox_body {
+ max-height: none;
+ }
+
+ // Show toggle button as down when infobox is shrunk
+ .infobox_checkbox ~ .infobox_toggle .infobox_label_down {
+ display: block;
+ }
+ .infobox_checkbox ~ .infobox_toggle .infobox_label_up {
+ display: none;
+ }
+
+ // Show toggle button as up when infobox is expanded
+ .infobox_checkbox:checked ~ .infobox_toggle .infobox_label_up {
+ display: block;
+ }
+ .infobox_checkbox:checked ~ .infobox_toggle .infobox_label_down {
+ display: none;
+ }
+
+ // Hide main image when toggle is off
+ .infobox_checkbox ~ .infobox_body img.infobox_part {
+ display: none;
+ }
+ .infobox_checkbox:checked ~ .infobox_body img.infobox_part {
+ display: block;
+ }
+}
diff --git a/searx/static/themes/oscar/less/pointhi/navbar.less b/searx/static/themes/oscar/src/less/pointhi/navbar.less
index a057f82..a057f82 100644
--- a/searx/static/themes/oscar/less/pointhi/navbar.less
+++ b/searx/static/themes/oscar/src/less/pointhi/navbar.less
diff --git a/searx/static/themes/oscar/less/pointhi/onoff.less b/searx/static/themes/oscar/src/less/pointhi/onoff.less
index 72b289a..72b289a 100644
--- a/searx/static/themes/oscar/less/pointhi/onoff.less
+++ b/searx/static/themes/oscar/src/less/pointhi/onoff.less
diff --git a/searx/static/themes/oscar/less/pointhi/oscar.less b/searx/static/themes/oscar/src/less/pointhi/oscar.less
index fc1c525..6f92a07 100644
--- a/searx/static/themes/oscar/less/pointhi/oscar.less
+++ b/searx/static/themes/oscar/src/less/pointhi/oscar.less
@@ -1,3 +1,5 @@
+@import "variables.less";
+
@import "footer.less";
@import "checkbox.less";
@@ -18,4 +20,6 @@
@import "navbar.less";
+@import "code.less";
+
@import "preferences.less";
diff --git a/searx/static/themes/oscar/src/less/pointhi/preferences.less b/searx/static/themes/oscar/src/less/pointhi/preferences.less
new file mode 100644
index 0000000..f3a6bee
--- /dev/null
+++ b/searx/static/themes/oscar/src/less/pointhi/preferences.less
@@ -0,0 +1,19 @@
+.table > tbody > tr > td, .table > tbody > tr > th {
+ vertical-align: middle !important;
+}
+
+.engine-tooltip {
+ display: none;
+ position: absolute;
+ padding: 0.5rem 1rem;
+ margin: 0rem 0 0 2rem;
+ border: 1px solid #ddd;
+ background: white;
+ font-size: 14px;
+ font-weight: normal;
+ z-index: 1000000;
+}
+
+th:hover .engine-tooltip, .engine-tooltip:hover {
+ display: inline-block;
+}
diff --git a/searx/static/themes/oscar/src/less/pointhi/pygments.less b/searx/static/themes/oscar/src/less/pointhi/pygments.less
new file mode 100644
index 0000000..25a921c
--- /dev/null
+++ b/searx/static/themes/oscar/src/less/pointhi/pygments.less
@@ -0,0 +1,99 @@
+/*
+ this file is generated automatically by searx_extra/update/update_pygments.py
+ using pygments version 2.8.0
+*/
+
+.code-highlight .linenos {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: default;
+
+ &::selection {
+ background: transparent; /* WebKit/Blink Browsers */
+ }
+ &::-moz-selection {
+ background: transparent; /* Gecko Browsers */
+ }
+
+ margin-right: 8px;
+ text-align: right;
+}
+
+.code-highlight pre { line-height: 125%; }
+.code-highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+.code-highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+.code-highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+.code-highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+.code-highlight .hll { background-color: #ffffcc }
+.code-highlight { background: #f8f8f8; }
+.code-highlight .c { color: #408080; font-style: italic } /* Comment */
+.code-highlight .err { border: 1px solid #FF0000 } /* Error */
+.code-highlight .k { color: #008000; font-weight: bold } /* Keyword */
+.code-highlight .o { color: #666666 } /* Operator */
+.code-highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.code-highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.code-highlight .cp { color: #BC7A00 } /* Comment.Preproc */
+.code-highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.code-highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.code-highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
+.code-highlight .gd { color: #A00000 } /* Generic.Deleted */
+.code-highlight .ge { font-style: italic } /* Generic.Emph */
+.code-highlight .gr { color: #FF0000 } /* Generic.Error */
+.code-highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code-highlight .gi { color: #00A000 } /* Generic.Inserted */
+.code-highlight .go { color: #888888 } /* Generic.Output */
+.code-highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code-highlight .gs { font-weight: bold } /* Generic.Strong */
+.code-highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code-highlight .gt { color: #0044DD } /* Generic.Traceback */
+.code-highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.code-highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.code-highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.code-highlight .kp { color: #008000 } /* Keyword.Pseudo */
+.code-highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.code-highlight .kt { color: #B00040 } /* Keyword.Type */
+.code-highlight .m { color: #666666 } /* Literal.Number */
+.code-highlight .s { color: #BA2121 } /* Literal.String */
+.code-highlight .na { color: #7D9029 } /* Name.Attribute */
+.code-highlight .nb { color: #008000 } /* Name.Builtin */
+.code-highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.code-highlight .no { color: #880000 } /* Name.Constant */
+.code-highlight .nd { color: #AA22FF } /* Name.Decorator */
+.code-highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code-highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code-highlight .nf { color: #0000FF } /* Name.Function */
+.code-highlight .nl { color: #A0A000 } /* Name.Label */
+.code-highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.code-highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.code-highlight .nv { color: #19177C } /* Name.Variable */
+.code-highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code-highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.code-highlight .mb { color: #666666 } /* Literal.Number.Bin */
+.code-highlight .mf { color: #666666 } /* Literal.Number.Float */
+.code-highlight .mh { color: #666666 } /* Literal.Number.Hex */
+.code-highlight .mi { color: #666666 } /* Literal.Number.Integer */
+.code-highlight .mo { color: #666666 } /* Literal.Number.Oct */
+.code-highlight .sa { color: #BA2121 } /* Literal.String.Affix */
+.code-highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
+.code-highlight .sc { color: #BA2121 } /* Literal.String.Char */
+.code-highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
+.code-highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.code-highlight .s2 { color: #BA2121 } /* Literal.String.Double */
+.code-highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code-highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.code-highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code-highlight .sx { color: #008000 } /* Literal.String.Other */
+.code-highlight .sr { color: #BB6688 } /* Literal.String.Regex */
+.code-highlight .s1 { color: #BA2121 } /* Literal.String.Single */
+.code-highlight .ss { color: #19177C } /* Literal.String.Symbol */
+.code-highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.code-highlight .fm { color: #0000FF } /* Name.Function.Magic */
+.code-highlight .vc { color: #19177C } /* Name.Variable.Class */
+.code-highlight .vg { color: #19177C } /* Name.Variable.Global */
+.code-highlight .vi { color: #19177C } /* Name.Variable.Instance */
+.code-highlight .vm { color: #19177C } /* Name.Variable.Magic */
+.code-highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
diff --git a/searx/static/themes/oscar/less/pointhi/results.less b/searx/static/themes/oscar/src/less/pointhi/results.less
index 13266c0..f6a2a02 100644
--- a/searx/static/themes/oscar/less/pointhi/results.less
+++ b/searx/static/themes/oscar/src/less/pointhi/results.less
@@ -107,3 +107,7 @@
outline: 0 none;
position: relative;
}
+
+.highlight {
+ font-weight: 700;
+}
diff --git a/searx/static/themes/oscar/src/less/pointhi/search.less b/searx/static/themes/oscar/src/less/pointhi/search.less
new file mode 100644
index 0000000..bb1cd89
--- /dev/null
+++ b/searx/static/themes/oscar/src/less/pointhi/search.less
@@ -0,0 +1,56 @@
+.search_categories, #categories {
+ text-transform: capitalize;
+ margin-bottom: 1.5rem;
+ margin-top: 1.5rem;
+ display: flex;
+ flex-wrap: wrap;
+ align-content: stretch;
+
+ a {
+ flex-grow: 1;
+ flex-basis: auto;
+ border: @mild-gray 1px solid;
+ border-right: none;
+ color: @dark-gray;
+ padding-bottom: 0.4rem;
+ padding-top: 0.4rem;
+ text-align: center;
+ min-width: 50px;
+ }
+
+ label, .input-group-addon {
+ flex-grow: 1;
+ flex-basis: auto;
+ font-size: 1.3rem;
+ font-weight: normal;
+ background-color: white;
+ border: #DDD 1px solid;
+ border-right: none;
+ color: #333;
+ padding-bottom: 0.8rem;
+ padding-top: 0.8rem;
+ text-align: center;
+ width: 100%;
+ height: 100%;
+ }
+
+ a:last-child, .input-group-addon:last-child {
+ border-right: #DDD 1px solid;
+ }
+
+ input[type="checkbox"]:checked + label{
+ color: black;
+ font-weight: bold;
+ background-color: #EEE;
+ }
+}
+
+.visually-hidden {
+ position: absolute !important;
+ height: 1px;
+ width: 1px;
+ overflow: hidden;
+ clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
+ clip: rect(1px, 1px, 1px, 1px);
+ white-space: nowrap; /* added line */
+}
diff --git a/searx/static/themes/pix-art/img/favicon.png b/searx/static/themes/pix-art/img/favicon.png
deleted file mode 100644
index 3818d3d..0000000
--- a/searx/static/themes/pix-art/img/favicon.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/pix-art/img/preference-icon-pixel.png b/searx/static/themes/pix-art/img/preference-icon-pixel.png
deleted file mode 100644
index 424e01e..0000000
--- a/searx/static/themes/pix-art/img/preference-icon-pixel.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/pix-art/img/search-icon-pixel.png b/searx/static/themes/pix-art/img/search-icon-pixel.png
deleted file mode 100644
index 8235882..0000000
--- a/searx/static/themes/pix-art/img/search-icon-pixel.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/pix-art/img/searx-pixel-small.png b/searx/static/themes/pix-art/img/searx-pixel-small.png
deleted file mode 100644
index 75b476c..0000000
--- a/searx/static/themes/pix-art/img/searx-pixel-small.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/pix-art/img/searx-pixel.png b/searx/static/themes/pix-art/img/searx-pixel.png
deleted file mode 100644
index 6aee581..0000000
--- a/searx/static/themes/pix-art/img/searx-pixel.png
+++ /dev/null
Binary files differ
diff --git a/searx/static/themes/pix-art/js/searx.js b/searx/static/themes/pix-art/js/searx.js
deleted file mode 100644
index 5eb0af9..0000000
--- a/searx/static/themes/pix-art/js/searx.js
+++ /dev/null
@@ -1,141 +0,0 @@
-if(searx.autocompleter) {
- window.addEvent('domready', function() {
- new Autocompleter.Request.JSON('q', '/autocompleter', {
- postVar:'q',
- postData:{
- 'format': 'json'
- },
- ajaxOptions:{
- timeout: 5 // Correct option?
- },
- 'minLength': 4,
- 'selectMode': false,
- cache: true,
- delay: 300
- });
- });
-}
-
-(function (w, d) {
- 'use strict';
- function addListener(el, type, fn) {
- if (el.addEventListener) {
- el.addEventListener(type, fn, false);
- } else {
- el.attachEvent('on' + type, fn);
- }
- }
-
- function placeCursorAtEnd() {
- if (this.setSelectionRange) {
- var len = this.value.length * 2;
- this.setSelectionRange(len, len);
- }
- }
-
- addListener(w, 'load', function () {
- var qinput = d.getElementById('q');
- if (qinput !== null && qinput.value === "") {
- addListener(qinput, 'focus', placeCursorAtEnd);
- qinput.focus();
- }
- });
-
- if (!!('ontouchstart' in window)) {
- document.getElementsByTagName("html")[0].className += " touch";
- }
-
-})(window, document);
-
-var xmlHttp
-
-function GetXmlHttpObject(){
-
- var xmlHttp = null;
-
- try {
- // Firefox, Opera 8.0+, Safari
- xmlHttp = new XMLHttpRequest();
- }
- catch (e) {
- // Internet Explorer
- try {
- xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
- }
- catch (e){
- xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
- }
- }
- return xmlHttp;
-}
-
-var timer;
-
-// Load more results
-function load_more(query,page){
-
- xmlHttp = GetXmlHttpObject();
- clearTimeout(timer);
-
- if(xmlHttp == null){
- alert ("Your browser does not support AJAX!");
- return;
- }
-
- favicons[page] = [];
-
- xmlHttp.onreadystatechange = function(){
-
- var loader = document.getElementById('load_more');
-
- // If 4, response OK
- if (xmlHttp.readyState == 4){
-
- var res = xmlHttp.responseText;
-
- clearTimeout(timer);
- timer = setTimeout(function(){},6000);
-
- var results = document.getElementById('results_list');
-
- var newNode = document.createElement('span');
- newNode.innerHTML = res;
- results_list.appendChild(newNode);
-
- var scripts = newNode.getElementsByTagName('script');
- for (var ix = 0; ix < scripts.length; ix++) {
- eval(scripts[ix].text);
- }
-
- load_images(page);
- document.getElementById("load_more").onclick = function() { load_more(query, (page+1)); }
- loader.removeAttribute("disabled");
-
- } else {
- loader.disabled = 'disabled';
- }
- }
- var url = "/";
- var params = "q="+query+"&pageno="+page+"&category_general=1&category_files=1&category_images=1&category_it=1&category_map=1&category_music=1&category_news=1&category_social+media=1&category_videos=1";
- xmlHttp.open("POST",url,true);
- xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
- xmlHttp.setRequestHeader("Content-length", params.length);
- xmlHttp.setRequestHeader("Connection", "close");
- xmlHttp.send(params);
-}
-
-// Load the images on the canvas in the page
-function load_images(page){
- var arrayLength = favicons[page].length;
- for (var i = 1; i < arrayLength+1; i++) {
- var img = new Image();
- img.setAttribute("i",i)
- img.onload = function () {
- var id = 'canvas-'+page+'-'+this.getAttribute("i");
- var can = document.getElementById(id);
- var ctx = can.getContext("2d");
- ctx.drawImage(this, 0, 0, 16, 16);
- };
- img.src = favicons[page][i];
- }
-} \ No newline at end of file
diff --git a/searx/static/themes/pix-art/less/definitions.less b/searx/static/themes/pix-art/less/definitions.less
deleted file mode 100644
index 0ac0cc9..0000000
--- a/searx/static/themes/pix-art/less/definitions.less
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * searx, A privacy-respecting, hackable metasearch engine
- *
- * To change the colors of the site, simple edit this variables
- */
-
-/// Basic Colors
-
-@color-base: #3498DB;
-@color-base-dark: #2980B9;
-@color-base-light: #ECF0F1;
-@color-highlight: #094089;
-@color-black: #000000;
-
-/// General
-
-@color-font: #444;
-@color-font-light: #888;
-
-@color-red: #C0392B;
-
-@color-url-font: #1a11be;
-@color-url-visited-font: #8E44AD;
-@results-width: 50em;
-
-
-/// Start-Screen
-
-// hmarg
-@color-hmarg-border: @color-base;
-@color-hmarg-font: @color-base;
-@color-hmarg-font-hover: @color-base;
-
-
-/// Search-Input
-
-@color-search-border: @color-base;
-@color-search-background: #FFF;
-@color-search-font: #222;
-
-/// Autocompleter
-
-@color-autocompleter-choices-background: #FFF;
-@color-autocompleter-choices-border: @color-base;
-@color-autocompleter-choices-border-left-right: @color-base;
-@color-autocompleter-choices-border-bottom: @color-base;
-
-@color-autocompleter-choices-font: #444;
-
-/// Answers
-@color-answers-border: @color-base-dark;
-
-// Selected
-@color-autocompleter-selected-background: #444;
-@color-autocompleter-selected-font: #FFF;
-@color-autocompleter-selected-queried-font: #9FCFFF;
-
-/// Categories
-
-@color-categories-item-selected: @color-base;
-@color-categories-item-selected-font: #FFF;
-
-@color-categories-item-border-selected: @color-base-dark;
-@color-categories-item-border-unselected: #E8E7E6;
-@color-categories-item-border-unselected-hover: @color-base;
-
-
-/// Results
-
-@color-suggestions-button-background: @color-base;
-@color-suggestions-button-font: #FFF;
-
-@color-download-button-background: @color-base;
-@color-download-button-font: #FFF;
-
-@color-result-search-background: @color-base-light;
-
-@color-result-definition-border: gray;
-@color-result-torrent-border: lightgray;
-@color-result-top-border: #E8E7E6;
-
-// Link to result
-@color-result-link-font: @color-base-dark;
-@color-result-link-visited-font: @color-url-visited-font;
-
-// Url to result
-@color-result-url-font: @color-red;
-
-// Publish Date
-@color-result-publishdate-font: @color-font-light;
-
-// Images
-@color-result-image-span-background-hover: rgba(0, 0, 0, 0.6);
-@color-result-image-span-font: #FFF;
-
-// Search-URL
-@color-result-search-url-border: #888;
-@color-result-search-url-font: #444;
-
-
-/// Settings
-
-@color-settings-fieldset: @color-base;
-@color-settings-tr-hover: #DDD;
-
-// Labels
-@color-settings-label-allowed-background: #E74C3C;
-@color-settings-label-allowed-font: #FFF;
-
-@color-settings-label-deny-background: #2ECC71;
-@color-settings-label-deny-font: @color-font;
-
-@color-settings-return-background: @color-base;
-@color-settings-return-font: #FFF;
-
-/// Other
-
-@color-engines-font: @color-font-light;
-@color-percentage-div-background: #444;
diff --git a/searx/static/themes/pix-art/less/mixins.less b/searx/static/themes/pix-art/less/mixins.less
deleted file mode 100644
index dbccce6..0000000
--- a/searx/static/themes/pix-art/less/mixins.less
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * searx, A privacy-respecting, hackable metasearch engine
- */
-
-// Mixins
-
-.text-size-adjust (@property: 100%) {
- -webkit-text-size-adjust: @property;
- -ms-text-size-adjust: @property;
- -moz-text-size-adjust: @property;
- text-size-adjust: @property;
-}
-
-.rounded-corners (@radius: 4px) {
- -webkit-border-radius: @radius;
- -moz-border-radius: @radius;
- border-radius: @radius;
-}
-
-.user-select () {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
diff --git a/searx/static/themes/pix-art/less/search.less b/searx/static/themes/pix-art/less/search.less
deleted file mode 100644
index f5ac33e..0000000
--- a/searx/static/themes/pix-art/less/search.less
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * searx, A privacy-respecting, hackable metasearch engine
- */
-
-.search {
- padding: 0;
- margin: 0;
-}
-
-#search_wrapper {
- position: relative;
- width: @results-width;
- padding: 10px;
-}
-
-.center #search_wrapper {
- margin-left: auto;
- margin-right: auto;
-}
-
-.q {
- background: none repeat scroll 0 0 @color-search-background;
- border: 1px solid @color-search-border;
- color: @color-search-font;
- font-size: 16px;
- font-family: "Courier New", Courier, monospace;
- height: 28px;
- margin: 0;
- outline: medium none;
- padding: 2px;
- padding-left: 8px;
- padding-right: 0px !important;
- width: 100%;
- z-index: 2;
-}
-
-#search_submit {
- position: absolute;
- top: 15px;
- right: 5px;
- padding: 0;
- border: 0;
- background: url('../img/search-icon-pixel.png') no-repeat;
- background-size: 24px 24px;
- opacity: 0.8;
- width: 24px;
- height: 24px;
- font-size: 0;
-}
-
-@media screen and (max-width: @results-width) {
- #search_wrapper {
- width: 90%;
- clear:both;
- overflow: hidden
- }
-}
diff --git a/searx/static/themes/pix-art/less/style.less b/searx/static/themes/pix-art/less/style.less
deleted file mode 100644
index a2088e9..0000000
--- a/searx/static/themes/pix-art/less/style.less
+++ /dev/null
@@ -1,451 +0,0 @@
-/*
- * searx, A privacy-respecting, hackable metasearch engine
- *
- * To convert "style.less" to "style.css" run: $make styles
- */
-
-@import "definitions.less";
-
-@import "mixins.less";
-
-
-// Main LESS-Code
-
-html {
- font-family: "Courier New", Courier, monospace;
- font-size: 0.9em;
- .text-size-adjust;
- color: @color-font;
- padding: 0;
- margin: 0;
-}
-
-body, #container {
- padding: 0;
- margin: 0;
-}
-
-canvas {
- image-rendering: optimizeSpeed;
- image-rendering: -moz-crisp-edges;
- image-rendering: -webkit-optimize-contrast;
- image-rendering: optimize-contrast;
- image-rendering: pixelated;
- -ms-interpolation-mode: nearest-neighbor;
- width:32px;
- height:32px;
-}
-
-#container {
- width: 100%;
- position: absolute;
- top: 0;
-}
-
-// Search-Field
-
-@import "search.less";
-
-.row {
- max-width: 800px;
- margin: 20px auto;
- text-align: justify;
-
- h1 {
- font-size: 3em;
- margin-top: 50px;
- }
-
- p {
- padding: 0 10px;
- max-width: 700px;
- }
-
- h3,ul {
- margin: 4px 8px;
- }
-}
-
-.hmarg {
- margin: 0 20px;
- border: 1px solid @color-hmarg-border;
- padding: 4px 10px;
-}
-
-a {
- &:link.hmarg {
- color: @color-hmarg-font;
- }
-
- &:visited.hmarg {
- color: @color-hmarg-font;
- }
-
- &:active.hmarg {
- color: @color-hmarg-font-hover;
- }
-
- &:hover.hmarg {
- color: @color-hmarg-font-hover;
- }
-}
-
-.top_margin {
- margin-top: 60px;
-}
-
-.center {
- text-align: center;
-}
-
-h1 {
- font-size: 5em;
-}
-
-div.title {
- background: url('../img/searx-pixel.png') no-repeat;
- width: 100%;
- min-height: 80px;
- background-position: center;
-
- h1 {
- visibility: hidden;
- }
-}
-
-input[type="button"],
-input[type="submit"] {
- font-family: "Courier New", Courier, monospace;
- padding: 4px 12px;
- margin: 2px 4px;
- display: inline-block;
- background: @color-download-button-background;
- color: @color-download-button-font;
- .rounded-corners;
- border: 0;
- cursor: pointer;
-}
-
-input[type="button"]:disabled {
- cursor: progress;
-}
-
-input[type="checkbox"] {
- visibility: hidden;
-}
-
-fieldset {
- margin: 8px;
- border: 1px solid @color-settings-fieldset;
-}
-
-#logo {
- position: absolute;
- top: 13px;
- left: 10px;
-}
-
-#categories {
- margin: 0 10px;
- .user-select;
-}
-
-.checkbox_container {
- display: inline-block;
- position: relative;
- margin: 0 3px;
- padding: 0px;
-
- input {
- display: none;
- }
-}
-
-.checkbox_container label, .engine_checkbox label {
- cursor: pointer;
- padding: 4px 10px;
- margin: 0;
- display: block;
- text-transform: capitalize;
- .user-select;
-}
-
-.checkbox_container input[type="checkbox"]:checked + label {
- background: @color-categories-item-selected;
- color: @color-categories-item-selected-font;
-}
-
-.engine_checkbox {
- padding: 4px;
-}
-
-label {
- &.allow {
- background: @color-settings-label-allowed-background;
- padding: 4px 8px;
- color: @color-settings-label-allowed-font;
- display: none;
- }
-
- &.deny {
- background: @color-settings-label-deny-background;
- padding: 4px 8px;
- color: @color-settings-label-deny-font;
- display: inline;
- }
-}
-
-.engine_checkbox input[type="checkbox"]:checked + label {
- &:nth-child(2) + label {
- display: none;
- }
-
- &.allow {
- display: inline;
- }
-}
-
-a {
- text-decoration: none;
- color: @color-url-font;
-
- &:visited {
- color: @color-url-visited-font;
- }
-}
-
-.engines {
- color: @color-engines-font;
-}
-
-.small_font {
- font-size: 0.8em;
-}
-
-.small p {
- margin: 2px 0;
-}
-
-.right {
- float: right;
-}
-
-.invisible {
- display: none;
-}
-
-.left {
- float: left;
-}
-
-.highlight {
- color: @color-highlight;
-}
-
-.content .highlight {
- color: @color-black;
-}
-
-.percentage {
- position: relative;
- width: 300px;
-
- div {
- background: @color-percentage-div-background;
- }
-}
-
-table {
- width: 100%;
-}
-
-td {
- padding: 0 4px;
-}
-
-tr {
- &:hover {
- background: @color-settings-tr-hover;
- }
-}
-
-#results {
- margin: auto;
- padding: 0;
- width: @results-width;
- margin-bottom: 20px;
-}
-
-#search_url {
- margin-top: 8px;
-
- input {
- border: 1px solid @color-result-search-url-border;
- padding: 4px;
- color: @color-result-search-url-font;
- width: 14em;
- display: block;
- margin: 4px;
- font-size: 0.8em;
- }
-}
-
-#preferences {
- top: 10px;
- padding: 0;
- border: 0;
- background: url('../img/preference-icon-pixel.png') no-repeat;
- background-size: 28px 28px;
- opacity: 0.8;
- width: 28px;
- height: 30px;
- display: block;
-
- * {
- display: none;
- }
-}
-
-#pagination {
- clear: both;
- text-align: center;
- br {
- clear: both;
- }
-}
-
-#apis {
- margin-top: 8px;
- clear: both;
-}
-
-#categories_container {
- position: relative;
-}
-
-@media screen and (max-width: @results-width) {
-
- #results {
- margin: auto;
- padding: 0;
- width: 90%;
- }
-
- .checkbox_container {
- display: block;
- width: 90%;
- //float: left;
-
- label {
- border-bottom: 0;
- }
- }
-
- .preferences_container {
- display: none;
- postion: fixed !important;
- top: 100px;
- right: 0px;
- }
-
-}
-
-@media screen and (max-width: 75em) {
-
- div.title {
-
- h1 {
- font-size: 1em;
- }
- }
-
- html.touch #categories {
- width: 95%;
- height: 30px;
- text-align: left;
- overflow-x: scroll;
- overflow-y: hidden;
- -webkit-overflow-scrolling: touch;
-
- #categories_container {
- width: 1000px;
- width: -moz-max-content;
- width: -webkit-max-content;
- width: max-content;
-
- .checkbox_container {
- display: inline-block;
- width: auto;
- }
- }
- }
-
- #categories {
- font-size: 90%;
- clear: both;
-
- .checkbox_container {
- margin-top: 2px;
- margin: auto;
- }
- }
-
- #categories {
- font-size: 90%;
- clear: both;
-
- .checkbox_container {
- margin-top: 2px;
- margin: auto;
- }
- }
-
- #apis {
- display: none;
- }
-
- #search_url {
- display: none;
- }
-
- #logo {
- display: none;
- }
-}
-
-.favicon {
- float: left;
- margin-right: 4px;
- margin-top: 2px;
-}
-
-.preferences_back {
- background: none repeat scroll 0 0 @color-settings-return-background;
- border: 0 none;
- .rounded-corners;
- cursor: pointer;
- display: inline-block;
- margin: 2px 4px;
- padding: 4px 6px;
-
- a {
- color: @color-settings-return-font;
- }
-}
-
-.hidden {
- opacity: 0;
- overflow: hidden;
- font-size: 0.8em;
- position: absolute;
- bottom: -20px;
- width: 100%;
- text-position: center;
- background: white;
- transition: opacity 1s ease;
-}
-
-#categories_container:hover .hidden {
- transition: opacity 1s ease;
- opacity: 0.8;
-}
diff --git a/searx/static/themes/simple/.gitignore b/searx/static/themes/simple/.gitignore
new file mode 100644
index 0000000..07e6e47
--- /dev/null
+++ b/searx/static/themes/simple/.gitignore
@@ -0,0 +1 @@
+/node_modules
diff --git a/searx/static/themes/simple/fonts/ion.css b/searx/static/themes/simple/fonts/ion.css
new file mode 100644
index 0000000..ebf6c62
--- /dev/null
+++ b/searx/static/themes/simple/fonts/ion.css
@@ -0,0 +1,139 @@
+/* Generated by grunt-webfont */
+
+
+@font-face {
+ font-family:"ion";
+ src:url("../fonts/ion.eot?ce7a0ead692560b4405a96d5b8471f51");
+ src:url("../fonts/ion.eot?#iefix") format("embedded-opentype"),
+ url("../fonts/ion.woff2?ce7a0ead692560b4405a96d5b8471f51") format("woff2"),
+ url("../fonts/ion.woff?ce7a0ead692560b4405a96d5b8471f51") format("woff"),
+ url("../fonts/ion.ttf?ce7a0ead692560b4405a96d5b8471f51") format("truetype"),
+ url("../fonts/ion.svg?ce7a0ead692560b4405a96d5b8471f51#ion") format("svg");
+ font-weight:normal;
+ font-style:normal;
+}
+
+.ion-icon {
+
+ font-family:"ion";
+
+ display:inline-block;
+ vertical-align:middle;
+ line-height:1;
+ font-weight:normal;
+ font-style:normal;
+ speak:none;
+ text-decoration:inherit;
+ text-transform:none;
+ text-rendering:auto;
+ -webkit-font-smoothing:antialiased;
+ -moz-osx-font-smoothing:grayscale;
+}
+
+
+/* Icons */
+
+
+.ion-navicon-round:before {
+ content:"\f101";
+}
+
+
+.ion-search:before {
+ content:"\f102";
+}
+
+
+.ion-play:before {
+ content:"\f103";
+}
+
+
+.ion-link:before {
+ content:"\f104";
+}
+
+
+.ion-chevron-up:before {
+ content:"\f105";
+}
+
+
+.ion-chevron-left:before {
+ content:"\f106";
+}
+
+
+.ion-chevron-right:before {
+ content:"\f107";
+}
+
+
+.ion-arrow-down-a:before {
+ content:"\f108";
+}
+
+
+.ion-arrow-up-a:before {
+ content:"\f109";
+}
+
+
+.ion-arrow-swap:before {
+ content:"\f10a";
+}
+
+
+.ion-arrow-dropdown:before {
+ content:"\f10b";
+}
+
+
+.ion-globe:before {
+ content:"\f10c";
+}
+
+
+.ion-time:before {
+ content:"\f10d";
+}
+
+
+.ion-location:before {
+ content:"\f10e";
+}
+
+
+.ion-warning:before {
+ content:"\f10f";
+}
+
+
+.ion-error:before {
+ content:"\f110";
+}
+
+
+.ion-film-outline:before {
+ content:"\f111";
+}
+
+
+.ion-music-note:before {
+ content:"\f112";
+}
+
+
+.ion-more-vertical:before {
+ content:"\f113";
+}
+
+
+.ion-magnet:before {
+ content:"\f114";
+}
+
+
+.ion-close:before {
+ content:"\f115";
+}
diff --git a/searx/static/themes/simple/fonts/ion.eot b/searx/static/themes/simple/fonts/ion.eot
new file mode 100644
index 0000000..96b3ee9
--- /dev/null
+++ b/searx/static/themes/simple/fonts/ion.eot
Binary files differ
diff --git a/searx/static/themes/simple/fonts/ion.html b/searx/static/themes/simple/fonts/ion.html
new file mode 100644
index 0000000..d922379
--- /dev/null
+++ b/searx/static/themes/simple/fonts/ion.html
@@ -0,0 +1,268 @@
+<!doctype html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <title>ion</title>
+ <style>
+ body {
+ margin:0;
+ padding:10px 20px;
+ background:#fff;
+ color:#222;
+ }
+ h1, div, footer {
+ font-family:"Helvetica Neue", Arial, sans-serif;
+ }
+ h1 {
+ margin:0 0 20px;
+ font-size:32px;
+ font-weight:normal;
+ }
+ h1 small {
+ font-size: 0.8em;
+ padding-left: 2em;
+ }
+ .icons {
+ margin-bottom:40px;
+ -webkit-column-count:5;
+ -moz-column-count:5;
+ column-count:5;
+ -webkit-column-gap:20px;
+ -moz-column-gap:20px;
+ column-gap:20px;
+ }
+ .icons__item,
+ .icons__item i {
+ line-height:2em;
+ cursor:pointer;
+ overflow:hidden;
+ }
+ .icons__item:hover {
+ color:#3c90be;
+ }
+ .icons__item i {
+ display:inline-block;
+ width:32px;
+ text-align:center;
+ }
+ .icons__item:hover i {
+ -webkit-transform:scale(1.5);
+ transform:scale(1.5);
+ }
+ footer {
+ margin-top:40px;
+ font-size:14px;
+ color:#999;
+ }
+
+ /* Generated by grunt-webfont */
+
+
+@font-face {
+ font-family:"ion";
+ src:url("ion.eot?ce7a0ead692560b4405a96d5b8471f51");
+ src:url("ion.eot?#iefix") format("embedded-opentype"),
+ url("ion.woff2?ce7a0ead692560b4405a96d5b8471f51") format("woff2"),
+ url("ion.woff?ce7a0ead692560b4405a96d5b8471f51") format("woff"),
+ url("ion.ttf?ce7a0ead692560b4405a96d5b8471f51") format("truetype"),
+ url("ion.svg?ce7a0ead692560b4405a96d5b8471f51#ion") format("svg");
+ font-weight:normal;
+ font-style:normal;
+}
+
+.ion-icon {
+
+ font-family:"ion";
+
+ display:inline-block;
+ vertical-align:middle;
+ line-height:1;
+ font-weight:normal;
+ font-style:normal;
+ speak:none;
+ text-decoration:inherit;
+ text-transform:none;
+ text-rendering:auto;
+ -webkit-font-smoothing:antialiased;
+ -moz-osx-font-smoothing:grayscale;
+}
+
+
+/* Icons */
+
+
+.ion-navicon-round:before {
+ content:"\f101";
+}
+
+
+.ion-search:before {
+ content:"\f102";
+}
+
+
+.ion-play:before {
+ content:"\f103";
+}
+
+
+.ion-link:before {
+ content:"\f104";
+}
+
+
+.ion-chevron-up:before {
+ content:"\f105";
+}
+
+
+.ion-chevron-left:before {
+ content:"\f106";
+}
+
+
+.ion-chevron-right:before {
+ content:"\f107";
+}
+
+
+.ion-arrow-down-a:before {
+ content:"\f108";
+}
+
+
+.ion-arrow-up-a:before {
+ content:"\f109";
+}
+
+
+.ion-arrow-swap:before {
+ content:"\f10a";
+}
+
+
+.ion-arrow-dropdown:before {
+ content:"\f10b";
+}
+
+
+.ion-globe:before {
+ content:"\f10c";
+}
+
+
+.ion-time:before {
+ content:"\f10d";
+}
+
+
+.ion-location:before {
+ content:"\f10e";
+}
+
+
+.ion-warning:before {
+ content:"\f10f";
+}
+
+
+.ion-error:before {
+ content:"\f110";
+}
+
+
+.ion-film-outline:before {
+ content:"\f111";
+}
+
+
+.ion-music-note:before {
+ content:"\f112";
+}
+
+
+.ion-more-vertical:before {
+ content:"\f113";
+}
+
+
+.ion-magnet:before {
+ content:"\f114";
+}
+
+
+.ion-close:before {
+ content:"\f115";
+}
+
+ </style>
+ </head>
+ <body>
+ <h1>ion</h1>
+
+ <div class="icons" id="icons">
+
+ <div class="icons__item" data-name="navicon-round"><i class="ion-icon ion-navicon-round"></i> ion-navicon-round</div>
+
+ <div class="icons__item" data-name="search"><i class="ion-icon ion-search"></i> ion-search</div>
+
+ <div class="icons__item" data-name="play"><i class="ion-icon ion-play"></i> ion-play</div>
+
+ <div class="icons__item" data-name="link"><i class="ion-icon ion-link"></i> ion-link</div>
+
+ <div class="icons__item" data-name="chevron-up"><i class="ion-icon ion-chevron-up"></i> ion-chevron-up</div>
+
+ <div class="icons__item" data-name="chevron-left"><i class="ion-icon ion-chevron-left"></i> ion-chevron-left</div>
+
+ <div class="icons__item" data-name="chevron-right"><i class="ion-icon ion-chevron-right"></i> ion-chevron-right</div>
+
+ <div class="icons__item" data-name="arrow-down-a"><i class="ion-icon ion-arrow-down-a"></i> ion-arrow-down-a</div>
+
+ <div class="icons__item" data-name="arrow-up-a"><i class="ion-icon ion-arrow-up-a"></i> ion-arrow-up-a</div>
+
+ <div class="icons__item" data-name="arrow-swap"><i class="ion-icon ion-arrow-swap"></i> ion-arrow-swap</div>
+
+ <div class="icons__item" data-name="arrow-dropdown"><i class="ion-icon ion-arrow-dropdown"></i> ion-arrow-dropdown</div>
+
+ <div class="icons__item" data-name="globe"><i class="ion-icon ion-globe"></i> ion-globe</div>
+
+ <div class="icons__item" data-name="time"><i class="ion-icon ion-time"></i> ion-time</div>
+
+ <div class="icons__item" data-name="location"><i class="ion-icon ion-location"></i> ion-location</div>
+
+ <div class="icons__item" data-name="warning"><i class="ion-icon ion-warning"></i> ion-warning</div>
+
+ <div class="icons__item" data-name="error"><i class="ion-icon ion-error"></i> ion-error</div>
+
+ <div class="icons__item" data-name="film-outline"><i class="ion-icon ion-film-outline"></i> ion-film-outline</div>
+
+ <div class="icons__item" data-name="music-note"><i class="ion-icon ion-music-note"></i> ion-music-note</div>
+
+ <div class="icons__item" data-name="more-vertical"><i class="ion-icon ion-more-vertical"></i> ion-more-vertical</div>
+
+ <div class="icons__item" data-name="magnet"><i class="ion-icon ion-magnet"></i> ion-magnet</div>
+
+ <div class="icons__item" data-name="close"><i class="ion-icon ion-close"></i> ion-close</div>
+
+ </div>
+
+
+
+ <h1>Usage</h1>
+ <pre><code>&lt;i class=&quot;ion-icon ion-<span id="name">name</span>&quot;&gt;&lt;/i&gt;</code></pre>
+
+
+ <footer>Generated by <a href="https://github.com/sapegin/grunt-webfont">grunt-webfont</a>.</footer>
+
+ <script>
+ (function() {
+ document.getElementById('icons').onclick = function(e) {
+ e = e || window.event;
+ var name = e.target.getAttribute('data-name') || e.target.parentNode.getAttribute('data-name');
+ document.getElementById('name').innerHTML = name;
+
+ }
+ })();
+ </script>
+ </body>
+</html>
diff --git a/searx/static/themes/simple/fonts/ion.svg b/searx/static/themes/simple/fonts/ion.svg
new file mode 100644
index 0000000..97ca930
--- /dev/null
+++ b/searx/static/themes/simple/fonts/ion.svg
@@ -0,0 +1,105 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<!--
+2018-8-11: Created with FontForge (http://fontforge.org)
+-->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
+<metadata>
+Created by FontForge 20170924 at Sat Aug 11 14:26:20 2018
+ By alexandre,,,
+
+</metadata>
+<defs>
+<font id="ion" horiz-adv-x="512" >
+ <font-face
+ font-family="ion"
+ font-weight="400"
+ font-stretch="normal"
+ units-per-em="512"
+ panose-1="2 0 5 9 0 0 0 0 0 0"
+ ascent="448"
+ descent="-64"
+ bbox="27.2368 -31.9632 479.993 415.9"
+ underline-thickness="25.6"
+ underline-position="-51.2"
+ unicode-range="U+F101-F115"
+ />
+ <missing-glyph />
+ <glyph glyph-name="arrow-down-a" unicode="&#xf108;"
+d="M256.5 -0.5l-192 192h112v192h160v-192h112z" />
+ <glyph glyph-name="arrow-dropdown" unicode="&#xf10b;"
+d="M128 256h256l-128 -128z" />
+ <glyph glyph-name="arrow-swap" unicode="&#xf10a;"
+d="M64 120c0 4.40039 3.59961 8 8 8h248v64l128 -96l-128 -96v64h-248c-4.40039 0 -8 3.59961 -8 8v48zM448 264c0 -4.40039 -3.59961 -8 -8 -8h-248v-64l-128 96l128 96v-64h248c4.40039 0 8 -3.59961 8 -8v-48z" />
+ <glyph glyph-name="arrow-up-a" unicode="&#xf109;"
+d="M256.5 383.5l192 -192h-112v-192h-160v192h-112z" />
+ <glyph glyph-name="chevron-left" unicode="&#xf106;"
+d="M213.7 192l167.2 -174.2c4.19922 -4.2998 4.09961 -11.3994 -0.200195 -15.7998l-29.9004 -30.5996c-4.2998 -4.40039 -11.2998 -4.5 -15.5 -0.200195l-204.2 212.7c-2.09961 2.19922 -3.09961 5.09961 -3 8.09961c-0.199219 2.90039 0.800781 5.90039 3 8.09961
+l204.2 212.601c4.2002 4.2998 11.2002 4.2002 15.5 -0.200195l29.9004 -30.5996c4.2998 -4.40039 4.39941 -11.5 0.200195 -15.8008l-167.2 -174.1v0v0z" />
+ <glyph glyph-name="chevron-right" unicode="&#xf107;"
+d="M298.3 192v0v0l-167.2 174.1c-4.19922 4.30078 -4.09961 11.4004 0.200195 15.8008l29.9004 30.5996c4.2998 4.40039 11.2998 4.5 15.5 0.200195l204.2 -212.7c2.19922 -2.2002 3.19922 -5.2002 3 -8.09961c0.0996094 -3 -0.900391 -5.90039 -3 -8.10059l-204.2 -212.6
+c-4.2002 -4.2998 -11.2002 -4.2002 -15.5 0.200195l-29.9004 30.5996c-4.2998 4.40039 -4.39941 11.5 -0.200195 15.7998z" />
+ <glyph glyph-name="chevron-up" unicode="&#xf105;"
+d="M256 234.3l-174.2 -167.2c-4.2998 -4.19922 -11.3994 -4.09961 -15.7998 0.200195l-30.5996 29.9004c-4.40039 4.2998 -4.5 11.2998 -0.200195 15.5l212.7 204.2c2.19922 2.09961 5.09961 3.09961 8.09961 3c2.90039 0.199219 5.90039 -0.800781 8.09961 -3l212.7 -204.2
+c4.2998 -4.2002 4.2002 -11.2002 -0.200195 -15.5l-30.5996 -29.9004c-4.40039 -4.2998 -11.5 -4.39941 -15.7998 -0.200195l-174.2 167.2v0v0z" />
+ <glyph glyph-name="close" unicode="&#xf115;"
+d="M405 311.202l-119.202 -119.202l119.202 -119.202l-29.7979 -29.7979l-119.202 119.202l-119.202 -119.202l-29.7979 29.7979l119.202 119.202l-119.202 119.202l29.7979 29.7979l119.202 -119.202l119.202 119.202z" />
+ <glyph glyph-name="error" unicode="&#xf110;"
+d="M256 400c114.4 0 208 -93.6006 208 -208s-93.5996 -208 -208 -208s-208 93.6006 -208 208s93.5996 208 208 208zM280 88v40h-48v-40h48zM280 176v128h-48v-128h48z" />
+ <glyph glyph-name="film-outline" unicode="&#xf111;"
+d="M56 360h400v-336h-400v336zM128 40v48h-56v-48h56zM128 104v48h-56v-48h56zM128 168v48h-56v-48h56zM128 232v48h-56v-48h56zM128 296v48h-56v-48h56zM368 40v144h-224v-144h224zM368 200v144h-224v-144h224zM440 40v48h-56v-48h56zM440 104v48h-56v-48h56zM440 168v48
+h-56v-48h56zM440 232v48h-56v-48h56zM440 296v48h-56v-48h56z" />
+ <glyph glyph-name="globe" unicode="&#xf10c;"
+d="M256 400c114.875 0 208 -93.125 208 -208s-93.125 -208 -208 -208c-114.876 0 -208 93.125 -208 208s93.124 208 208 208zM234.451 15.001c6.04297 15.0449 19.9453 28.6484 7.27344 39.1172c-8.17285 6.75 -15.6123 13.6279 -23.1104 21.125
+c-2.47461 2.47363 -9.9082 19.7109 -8.35156 22.3916c5.10254 8.78613 5.76367 14.8613 8.12988 24.7236c2.94336 12.2627 -3.33398 15.4434 -13.3828 21.8389c-15.2256 9.68848 -28.9629 22.4844 -43.3213 33.4941c-7.11719 5.45508 -17.4365 10.0986 -20.0195 18.9521
+c-2.64062 9.05078 -3.97363 20.2598 -9.40039 28.0781c-13.9277 20.0752 -11.5791 34.9678 -9.93945 58.7627c0.449219 6.52637 -1.30371 15.6572 -2.01367 24.1748c-27.5654 -32.2354 -42.6016 -72.7891 -42.6016 -115.659c0 -47.6221 18.5439 -92.3926 52.2178 -126.067
+c28.541 -28.54 65.0557 -46.2061 104.52 -50.9316zM382.067 65.9326c23.0352 23.0381 38.9873 51.2695 46.7686 82.0527c-8.34668 -1.19141 -18.3838 2.22754 -18.3838 2.22754s-21.7363 23.707 -23.5244 44.5723c-1.85645 21.667 0.498047 38.3945 -2.89551 56.8105
+c-2.87988 15.624 -19.2803 31.5 -26.6729 46.3018c-6.9209 13.8555 -13.7334 27.7031 -20.2646 41.7451c2.25098 -0.848633 4.90039 -1.40234 6.96484 -2.62305c4.99902 0.636719 9.43066 1.22949 13.4629 1.59082c-22.5381 15.6758 -48.2725 25.8418 -75.5225 29.7998
+v-8.33887l3.55273 -9.27734l-13.7783 -12.9951l-8.67578 2.79492l-9.92383 10.2334l-9.94336 11.8008l-14.084 5.66016c-15.7236 -2.36133 -30.9346 -6.78711 -45.3105 -13.1523c0.360352 -2.30762 0.662109 -4.64453 0.662109 -7.13281
+c7.17383 2.98926 15.2764 5.04883 22.4502 8.03906c2.96289 1.23438 12.7529 -7.1748 15.6221 -8.96777c-4.0957 -4.70996 -20.5576 -15.4434 -21.3574 -21.3574c-0.316406 -2.33984 6.50586 -6.06348 6.45117 -9.69141
+c-0.0878906 -5.74609 -0.173828 -11.4912 -0.259766 -17.2373c3.24414 2.76172 20.0342 20.3672 21.9404 20.8594c12.7256 3.2832 34.3916 -17.7646 36.249 -25.1934c1.8584 -7.42871 -21.6514 -23.6826 -32.6113 -34.0469
+c-8.39941 -7.94434 -24.8086 -12.5137 -19.8037 -24.2285c1.62695 -3.80957 10.0508 -20.0156 5.21191 -24.0586c-5.92188 -4.94824 -14.7686 8.97656 -17.3418 12.0938c-8.15332 9.87695 -25.626 6.02539 -37.9082 6.47852c0 -17.4209 -0.757812 -31.1885 14.9229 -42.9971
+c15.1943 -11.4434 29.5967 -24.7061 47.0771 -32.3389c12.7637 -5.57129 35.7158 6.53613 47.0205 -1.41699c15.8672 -11.165 29.3066 -21.624 47.1611 -29.375c7.93359 -3.44531 32.418 -19.8828 25.3525 -30.7812c-4.96582 -7.66211 -9.87305 -14.8848 -13.5771 -23.2168
+c-3.70703 -8.34375 -12.5957 -18.876 -19.6924 -24.3525c-8.15918 -6.29199 -16.9551 -17.1455 -21.8955 -29.3623c34.8574 6.5957 66.9229 23.4482 92.5566 49.0811z" />
+ <glyph glyph-name="link" unicode="&#xf104;"
+d="M256.5 240h-0.5v0h0.5zM368.5 288c44.2002 0 79.5 -35.2998 79.5 -79.5v-32c0 -44.2002 -35.2998 -80.5 -79.5 -80.5h-112c-32.7002 0 -61 19.7998 -73.5996 48c-4.40039 10 -6.90039 21 -6.90039 32.5v31.5h48v-31.5c0 -17.5996 14.9004 -32.5 32.5 -32.5h112
+c17.5996 0 31.5 14.9004 31.5 32.5v32c0 17.5996 -13.9004 31.5 -31.5 31.5h-0.5h-16.4004c-5.59961 31 -31.5996 48 -31.5996 48h48.5zM329.6 240c4.10059 -9.59961 6.40039 -20.2998 6.40039 -31.5v-32v-0.5h-48v0.5v32c0 17.5996 -13.9004 31.5 -31.5 31.5h-0.5h-111.5
+c-17.5996 0 -32.5 -13.9004 -32.5 -31.5v-32c0 -17.5996 14.9004 -32.5 32.5 -32.5h15.4004c6.2998 -31 32.0996 -48 32.0996 -48h-47.5c-44.2002 0 -80.5 36.2998 -80.5 80.5v32c0 44.2002 36.2998 79.5 80.5 79.5h112c33 0 61 -19.7002 73.0996 -48z" />
+ <glyph glyph-name="location" unicode="&#xf10e;"
+d="M256 384c65.9004 0 119.3 -53.7002 119.3 -120c0 -114.6 -119.3 -264 -119.3 -264s-119.3 149.4 -119.3 264c0 66.2998 53.3994 120 119.3 120zM256 205.8c31.2002 0 56.4004 25.4004 56.4004 56.7002c0 31.4004 -25.2002 56.7998 -56.4004 56.7998
+c-31.0996 0 -56.4004 -25.5 -56.4004 -56.7998s25.2002 -56.7002 56.4004 -56.7002z" />
+ <glyph glyph-name="magnet" unicode="&#xf114;"
+d="M27.7061 117.644h86.2139v-67.7236h-86.2256zM184.326 327c0 -0.199219 0.166992 -0.366211 0.367188 -0.366211c27.7676 0 67.3604 -3.08398 67.3604 -42.7246v-141.625c0 -0.197266 0.163086 -0.362305 0.358398 -0.366211
+c28.75 -0.636719 57.4912 0.0107422 86.2236 0c0.208984 -0.000976562 0.366211 0.183594 0.367188 0.364258c0.238281 50.8672 0 101.591 0 150.867c-0.250977 43.4795 -13.5273 70.627 -43.2588 92.6426c-33.1963 25.7178 -71.71 27.2451 -112.575 27.3818
+c-40.8711 -0.136719 -79.3877 -1.66406 -112.583 -27.3818c-29.7207 -22.0166 -42.9971 -49.1611 -43.248 -92.6445c0 -49.2715 -0.227539 -99.999 0 -150.876c0.000976562 -0.208984 0.185547 -0.365234 0.367188 -0.365234c28.7324 0.0224609 57.4854 -0.625 86.2236 0
+c0.196289 0.00390625 0.358398 0.170898 0.358398 0.366211v141.625c0 39.6406 39.6045 42.7363 67.3604 42.7363c0.200195 0 0.367188 0.166992 0.367188 0.366211s-0.166992 0.366211 -0.367188 0.366211c-27.6299 0 -68.0938 -3.06348 -68.0938 -43.4688v-141.266
+c-28.2832 -0.604492 -56.9688 0.0244141 -85.4844 0.0078125c-0.223633 50.5547 0.00195312 101.386 0.00195312 150.508c0.249023 43.3125 13.4043 70.168 42.957 92.0605c32.9863 25.5547 71.2646 27.0957 112.144 27.2324
+c40.8623 -0.136719 79.1436 -1.67773 112.13 -27.2324c29.5645 -21.8926 42.7188 -48.7461 42.9678 -92.0625c0 -49.1631 0.238281 -99.6865 0.00195312 -150.495c-28.3008 0.00585938 -56.9746 -0.62793 -85.4844 -0.0078125v141.267
+c0 40.4043 -40.4521 43.457 -68.0938 43.457c-0.200195 0 -0.367188 -0.166992 -0.367188 -0.366211zM184.692 327.005c27.7061 0 67.7236 -3.07227 67.7236 -43.1006v-141.615c28.7422 -0.639648 57.4834 0.0117188 86.2256 0c0.232422 50.8633 0 101.586 0 150.854
+c-0.255859 43.4033 -13.4746 70.3994 -43.1133 92.3574c-33.0938 25.6348 -71.4932 27.1709 -112.36 27.3105c-40.8672 -0.139648 -79.2666 -1.67578 -112.36 -27.3105c-29.6377 -21.958 -42.8574 -48.9541 -43.1016 -92.3574c0 -49.2686 -0.232422 -99.9912 0 -150.866
+c28.7422 0.0234375 57.4834 -0.62793 86.2139 0v141.615c0 40.0293 40.0293 43.1123 67.7236 43.1123zM252.463 117.644h86.2021v-67.7236h-86.2021v67.7236z" />
+ <glyph glyph-name="more-vertical" unicode="&#xf113;"
+d="M296 312c0 -22.002 -17.998 -40 -40 -40s-40 17.998 -40 40s17.998 40 40 40s40 -17.998 40 -40zM296 72c0 -22.002 -17.998 -40 -40 -40s-40 17.998 -40 40s17.998 40 40 40s40 -17.998 40 -40zM296 192c0 -22.002 -17.998 -40 -40 -40s-40 17.998 -40 40
+s17.998 40 40 40s40 -17.998 40 -40z" />
+ <glyph glyph-name="music-note" unicode="&#xf112;"
+d="M426 415.9c12.0996 0 22 -9.5 22.0996 -21.2002v-302.8c0 -24.7002 -3 -42.9004 -12 -54.9004h-0.199219c-9.10059 -15 -25 -21 -43.2002 -21h-37.2002c-28.2998 0 -51.2002 19.9004 -51.2002 48s22.9004 48 51.2002 48h60.5v192l-208 -38v-232
+c0 -8.2998 -3.40039 -27 -13 -41.0996c-1 -1.80078 -2.09961 -3.40039 -3.40039 -5c-0.5 -0.600586 -0.899414 -1.5 -1.5 -2.10059c-0.0996094 -0.0996094 -0.299805 -0.0996094 -0.399414 -0.200195c-9.40039 -10.5996 -23 -17.5 -38.2998 -17.5h-36.2002
+c-28.2002 0 -51.2998 20 -51.2998 48s23.0996 48 51.0996 48v-0.0996094h61v286.5c1 14.5 13.5 27.9004 27.2998 31.5996l217.601 33.2002s2.89941 0.600586 5.09961 0.600586z" />
+ <glyph glyph-name="navicon-round" unicode="&#xf101;"
+d="M417.4 224c16.8994 0 30.5996 -14.2998 30.5996 -32s-13.7002 -32 -30.5996 -32h-322.801c-16.8994 0 -30.5996 14.2998 -30.5996 32s13.7002 32 30.5996 32h322.801zM417.4 352c16.8994 0 30.5996 -14.2998 30.5996 -32s-13.7002 -32 -30.5996 -32h-322.801
+c-16.8994 0 -30.5996 14.2998 -30.5996 32s13.7002 32 30.5996 32h322.801zM417.4 96c16.8994 0 30.5996 -14.2998 30.5996 -32s-13.7002 -32 -30.5996 -32h-322.801c-16.8994 0 -30.5996 14.2998 -30.5996 32s13.7002 32 30.5996 32h322.801z" />
+ <glyph glyph-name="play" unicode="&#xf103;"
+d="M405.2 215.1c6.59961 -5.59961 10.7998 -13.7998 10.7998 -23.0996s-4.2002 -17.5996 -10.7998 -23.0996l-278.101 -165.5c-3.69922 -2 -7.09961 -3.40039 -11.1992 -3.40039c-10.9004 0 -19.8008 9 -19.8008 20h-0.0996094v344h0.0996094c0 11 8.90039 20 19.8008 20
+c4 0 7.5 -1.2002 10.8994 -3.2002z" />
+ <glyph glyph-name="search" unicode="&#xf102;"
+d="M445 61.2998c4 -4 4 -10.3994 0 -14.5l-43.2998 -43.7998c-1.90039 -2 -4.60059 -3.09961 -7.2998 -3.09961c-2.7002 0 -5.40039 1.19922 -7.30078 3.09961l-84.3994 85.5996c-24.6006 -14.6992 -52.2002 -22.3994 -80.1006 -22.3994
+c-87.3994 0 -158.6 71.2998 -158.6 158.899c0 87.6006 71.2002 158.9 158.6 158.9c87.4004 0 158.601 -71.2998 158.601 -158.9c0 -27 -7.2002 -53.7998 -21 -77.8994zM222.6 322.1c-53.3994 0 -96.7998 -43.5 -96.7998 -97s43.4004 -97 96.7998 -97
+c53.4004 0 96.8008 43.5 96.8008 97s-43.4004 97 -96.8008 97z" />
+ <glyph glyph-name="time" unicode="&#xf10d;"
+d="M256 405c117.149 0 213 -95.8506 213 -213s-94.7891 -213 -213 -213s-213 95.8506 -213 213s94.7891 213 213 213zM256 21.5996c93.7178 0 170.4 76.6826 170.4 170.4s-76.6826 170.4 -170.4 170.4s-170.4 -76.6836 -170.4 -170.4s76.6826 -170.4 170.4 -170.4z
+M266.65 298.5v-111.824l95.8496 -56.4434l-15.9746 -26.625l-111.825 67.0928v127.8h31.9502z" />
+ <glyph glyph-name="warning" unicode="&#xf10f;"
+d="M476.7 25.7998c2.7998 -4.89941 4.7998 -13 1.7998 -17.8994c-2.90039 -4.90039 -8.2002 -7.90039 -14 -7.90039h-417.1c-5.80078 0 -11.1006 3 -14 7.90039c-2.90039 4.89941 -0.900391 12.8994 1.89941 17.8994l206.601 349.5c2.7998 5 8.19922 8.7002 14.0996 8.7002
+c5.7998 0 11.2002 -3.7002 14.0996 -8.7002zM288 48v48h-64v-48h64zM288 128v144h-64v-144h64z" />
+ </font>
+</defs></svg>
diff --git a/searx/static/themes/simple/fonts/ion.ttf b/searx/static/themes/simple/fonts/ion.ttf
new file mode 100644
index 0000000..ccc5482
--- /dev/null
+++ b/searx/static/themes/simple/fonts/ion.ttf
Binary files differ
diff --git a/searx/static/themes/simple/fonts/ion.woff b/searx/static/themes/simple/fonts/ion.woff
new file mode 100644
index 0000000..0b7fe87
--- /dev/null
+++ b/searx/static/themes/simple/fonts/ion.woff
Binary files differ
diff --git a/searx/static/themes/simple/fonts/ion.woff2 b/searx/static/themes/simple/fonts/ion.woff2
new file mode 100644
index 0000000..30b902d
--- /dev/null
+++ b/searx/static/themes/simple/fonts/ion.woff2
Binary files differ
diff --git a/searx/static/themes/simple/gruntfile.js b/searx/static/themes/simple/gruntfile.js
index 50e870f..7d6cb01 100644
--- a/searx/static/themes/simple/gruntfile.js
+++ b/searx/static/themes/simple/gruntfile.js
@@ -11,7 +11,7 @@ module.exports = function(grunt) {
}
},
jshint: {
- files: ['js/searx_src/*.js', 'js/searx_header/*.js'],
+ files: ['js/searx_src/*.js', 'js/searx_header/*.js', '../__common__/js/*.js'],
options: {
reporterOutput: "",
proto: true,
@@ -30,13 +30,13 @@ module.exports = function(grunt) {
},
files: {
'js/searx.head.js': ['js/searx_head/*.js'],
- 'js/searx.js': ['js/searx_src/*.js']
+ 'js/searx.js': ['js/searx_src/*.js', '../__common__/js/*.js']
}
}
},
uglify: {
options: {
- banner: '/*! simple/searx.min.js | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n',
+ banner: '/*! simple/searx.min.js | <%= grunt.template.today("dd-mm-yyyy") %> | <%= process.env.GIT_URL %> */\n',
output: {
comments: 'some'
},
@@ -57,7 +57,7 @@ module.exports = function(grunt) {
development: {
options: {
paths: ["less"],
- banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n'
+ banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | <%= process.env.GIT_URL %> */\n'
},
files: {
"css/searx.css": "less/style.less",
@@ -67,7 +67,7 @@ module.exports = function(grunt) {
production: {
options: {
paths: ["less"],
- banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | https://github.com/asciimoo/searx */\n'
+ banner: '/*! searx | <%= grunt.template.today("dd-mm-yyyy") %> | <%= process.env.GIT_URL %> */\n'
},
files: {
"css/searx.min.css": "less/style.less",
@@ -141,8 +141,11 @@ module.exports = function(grunt) {
}
});
- grunt.loadNpmTasks('grunt-contrib-uglify', '/usr/lib/nodejs');
- grunt.loadNpmTasks('grunt-contrib-concat', '/usr/lib/nodejs');
+ grunt.loadNpmTasks('grunt-contrib-uglify');
+ grunt.loadNpmTasks('grunt-contrib-concat');
+ grunt.loadNpmTasks('grunt-contrib-cssmin');
+
+ grunt.registerTask('test', ['jshint']);
grunt.registerTask('default', ['concat', 'uglify']);
};
diff --git a/searx/static/themes/simple/js/searx.head.js b/searx/static/themes/simple/js/searx.head.js
index 3ac61c8..e696440 100644
--- a/searx/static/themes/simple/js/searx.head.js
+++ b/searx/static/themes/simple/js/searx.head.js
@@ -32,7 +32,7 @@
search_on_category_select: script.getAttribute('data-search-on-category-select') === 'true',
infinite_scroll: script.getAttribute('data-infinite-scroll') === 'true',
static_path: script.getAttribute('data-static-path'),
- no_item_found: script.getAttribute('data-no-item-found')
+ translations: JSON.parse(script.getAttribute('data-translations')),
}
// update the css
diff --git a/searx/static/themes/simple/js/searx_head/00_init.js b/searx/static/themes/simple/js/searx_head/00_init.js
index 3ac61c8..e696440 100644
--- a/searx/static/themes/simple/js/searx_head/00_init.js
+++ b/searx/static/themes/simple/js/searx_head/00_init.js
@@ -32,7 +32,7 @@
search_on_category_select: script.getAttribute('data-search-on-category-select') === 'true',
infinite_scroll: script.getAttribute('data-infinite-scroll') === 'true',
static_path: script.getAttribute('data-static-path'),
- no_item_found: script.getAttribute('data-no-item-found')
+ translations: JSON.parse(script.getAttribute('data-translations')),
}
// update the css
diff --git a/searx/static/themes/simple/js/searx_src/searx_mapresult.js b/searx/static/themes/simple/js/searx_src/searx_mapresult.js
index 869d07d..2ccdbd1 100644
--- a/searx/static/themes/simple/js/searx_src/searx_mapresult.js
+++ b/searx/static/themes/simple/js/searx_src/searx_mapresult.js
@@ -19,93 +19,6 @@
'use strict';
searx.ready(function () {
- searx.on('.searx_overpass_request', 'click', function(event) {
- // no more request
- this.classList.remove("searx_overpass_request");
-
- //
- var overpass_url = "https://overpass-api.de/api/interpreter?data=";
- var query_start = overpass_url + "[out:json][timeout:25];(";
- var query_end = ");out meta;";
-
- var osm_id = this.dataset.osmId;
- var osm_type = this.dataset.osmType;
- var result_table = d.querySelector("#" + this.dataset.resultTable);
- var result_table_loadicon = d.querySelector("#" + this.dataset.resultTableLoadicon);
-
- // tags which can be ignored
- var osm_ignore_tags = [ "addr:city", "addr:country", "addr:housenumber", "addr:postcode", "addr:street" ];
-
- if(osm_id && osm_type && result_table) {
- var query = null;
- switch(osm_type) {
- case 'node':
- query = query_start + "node(" + osm_id + ");" + query_end;
- break;
- case 'way':
- query = query_start + "way(" + osm_id + ");" + query_end;
- break;
- case 'relation':
- query = query_start + "relation(" + osm_id + ");" + query_end;
- break;
- default:
- break;
- }
- if(query) {
- // console.log(query);
- searx.http( 'GET', query ).then(function(html, contentType) {
- html = JSON.parse(html);
- if(html && html.elements && html.elements[0]) {
- var element = html.elements[0];
- var newHtml = "";
- for (var row in element.tags) {
- if(element.tags.name === null || osm_ignore_tags.indexOf(row) == -1) {
- newHtml += "<tr><td>" + row + "</td><td>";
- switch(row) {
- case "phone":
- case "fax":
- newHtml += "<a href=\"tel:" + element.tags[row].replace(/ /g,'') + "\">" + element.tags[row] + "</a>";
- break;
- case "email":
- newHtml += "<a href=\"mailto:" + element.tags[row] + "\">" + element.tags[row] + "</a>";
- break;
- case "website":
- case "url":
- newHtml += "<a href=\"" + element.tags[row] + "\">" + element.tags[row] + "</a>";
- break;
- case "wikidata":
- newHtml += "<a href=\"https://www.wikidata.org/wiki/" + element.tags[row] + "\">" + element.tags[row] + "</a>";
- break;
- case "wikipedia":
- if(element.tags[row].indexOf(":") != -1) {
- newHtml += "<a href=\"https://" + element.tags[row].substring(0,element.tags[row].indexOf(":")) + ".wikipedia.org/wiki/" + element.tags[row].substring(element.tags[row].indexOf(":")+1) + "\">" + element.tags[row] + "</a>";
- break;
- }
- /* jshint ignore:start */
- default:
- /* jshint ignore:end */
- newHtml += element.tags[row];
- break;
- }
- newHtml += "</td></tr>";
- }
- }
- result_table_loadicon.parentNode.removeChild(result_table_loadicon);
- result_table.classList.remove('invisible');
- result_table.querySelector("tbody").innerHTML = newHtml;
- }
- })
- .catch(function() {
- result_table_loadicon.classList.remove('invisible');
- result_table_loadicon.innerHTML = "could not load data!";
- });
- }
- }
-
- // this event occour only once per element
- event.preventDefault();
- });
-
searx.on('.searx_init_map', 'click', function(event) {
// no more request
this.classList.remove("searx_init_map");
diff --git a/searx/static/themes/simple/js/searx_src/searx_results.js b/searx/static/themes/simple/js/searx_src/searx_results.js
index b13da83..fe00efc 100644
--- a/searx/static/themes/simple/js/searx_src/searx_results.js
+++ b/searx/static/themes/simple/js/searx_src/searx_results.js
@@ -18,7 +18,7 @@
'use strict';
searx.ready(function() {
- searx.image_thumbnail_layout = new searx.ImageLayout('#urls', '#urls .result-images', 'img.image_thumbnail', 200);
+ searx.image_thumbnail_layout = new searx.ImageLayout('#urls', '#urls .result-images', 'img.image_thumbnail', 10, 200);
searx.image_thumbnail_layout.watch();
searx.on('.btn-collapse', 'click', function(event) {
diff --git a/searx/static/themes/simple/js/searx_src/searx_search.js b/searx/static/themes/simple/js/searx_src/searx_search.js
index 580d98d..7ca658a 100644
--- a/searx/static/themes/simple/js/searx_src/searx_search.js
+++ b/searx/static/themes/simple/js/searx_src/searx_search.js
@@ -17,7 +17,7 @@
(function(w, d, searx) {
'use strict';
- var firstFocus = true, qinput_id = "q", qinput;
+ var firstFocus = true, qinput_id = "q.autofocus", qinput;
function placeCursorAtEnd(element) {
if (element.setSelectionRange) {
@@ -73,8 +73,12 @@
if (searx.autocompleter) {
searx.autocomplete = AutoComplete.call(w, {
Url: "./autocompleter",
- EmptyMessage: searx.no_item_found,
+ EmptyMessage: searx.translations.no_item_found,
HttpMethod: searx.method,
+ HttpHeaders: {
+ "Content-type": "application/x-www-form-urlencoded",
+ "X-Requested-With": "XMLHttpRequest"
+ },
MinChars: 4,
Delay: 300,
}, "#" + qinput_id);
diff --git a/searx/static/themes/simple/less/code.less b/searx/static/themes/simple/less/code.less
index a688dd9..b732103 100644
--- a/searx/static/themes/simple/less/code.less
+++ b/searx/static/themes/simple/less/code.less
@@ -1,83 +1,8 @@
-.highlight .hll { background-color: #ffffcc }
-.highlight { background: #f8f8f8; }
-.highlight .c { color: #408080; font-style: italic } /* Comment */
-.highlight .err { border: 1px solid #FF0000 } /* Error */
-.highlight .k { color: #008000; font-weight: bold } /* Keyword */
-.highlight .o { color: #666666 } /* Operator */
-.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
-.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
-.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
-.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
-.highlight .gd { color: #A00000 } /* Generic.Deleted */
-.highlight .ge { font-style: italic } /* Generic.Emph */
-.highlight .gr { color: #FF0000 } /* Generic.Error */
-.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.highlight .gi { color: #00A000 } /* Generic.Inserted */
-.highlight .go { color: #888888 } /* Generic.Output */
-.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
-.highlight .gs { font-weight: bold } /* Generic.Strong */
-.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.highlight .gt { color: #0044DD } /* Generic.Traceback */
-.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
-.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
-.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
-.highlight .kp { color: #008000 } /* Keyword.Pseudo */
-.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
-.highlight .kt { color: #B00040 } /* Keyword.Type */
-.highlight .m { color: #666666 } /* Literal.Number */
-.highlight .s { color: #BA2121 } /* Literal.String */
-.highlight .na { color: #7D9029 } /* Name.Attribute */
-.highlight .nb { color: #008000 } /* Name.Builtin */
-.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
-.highlight .no { color: #880000 } /* Name.Constant */
-.highlight .nd { color: #AA22FF } /* Name.Decorator */
-.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
-.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
-.highlight .nf { color: #0000FF } /* Name.Function */
-.highlight .nl { color: #A0A000 } /* Name.Label */
-.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
-.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
-.highlight .nv { color: #19177C } /* Name.Variable */
-.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
-.highlight .w { color: #bbbbbb } /* Text.Whitespace */
-.highlight .mf { color: #666666 } /* Literal.Number.Float */
-.highlight .mh { color: #666666 } /* Literal.Number.Hex */
-.highlight .mi { color: #666666 } /* Literal.Number.Integer */
-.highlight .mo { color: #666666 } /* Literal.Number.Oct */
-.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
-.highlight .sc { color: #BA2121 } /* Literal.String.Char */
-.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
-.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
-.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
-.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
-.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
-.highlight .sx { color: #008000 } /* Literal.String.Other */
-.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
-.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
-.highlight .ss { color: #19177C } /* Literal.String.Symbol */
-.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
-.highlight .vc { color: #19177C } /* Name.Variable.Class */
-.highlight .vg { color: #19177C } /* Name.Variable.Global */
-.highlight .vi { color: #19177C } /* Name.Variable.Instance */
-.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
-
-.highlight pre {
+.code-highlight pre {
overflow: auto;
+ background-color: inherit;
+ color: inherit;
+ border: inherit;
}
-.highlight .lineno {
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- cursor: default;
-
- &::selection {
- background: transparent; /* WebKit/Blink Browsers */
- }
- &::-moz-selection {
- background: transparent; /* Gecko Browsers */
- }
-}
+@import "pygments.less";
diff --git a/searx/static/themes/simple/less/preferences.less b/searx/static/themes/simple/less/preferences.less
index e1e88b5..26c4f6d 100644
--- a/searx/static/themes/simple/less/preferences.less
+++ b/searx/static/themes/simple/less/preferences.less
@@ -93,6 +93,23 @@
width: 100%;
}
}
+
+
+ .engine-tooltip {
+ display: none;
+ position: absolute;
+ padding: 0.5rem 1rem;
+ margin: 0rem 0 0 2rem;
+ border: 1px solid #ddd;
+ background: white;
+ font-size: 14px;
+ font-weight: normal;
+ z-index: 1000000;
+ }
+
+ th:hover .engine-tooltip, .engine-tooltip:hover {
+ display: inline-block;
+ }
}
diff --git a/searx/static/themes/simple/less/pygments.less b/searx/static/themes/simple/less/pygments.less
new file mode 100644
index 0000000..25a921c
--- /dev/null
+++ b/searx/static/themes/simple/less/pygments.less
@@ -0,0 +1,99 @@
+/*
+ this file is generated automatically by searx_extra/update/update_pygments.py
+ using pygments version 2.8.0
+*/
+
+.code-highlight .linenos {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: default;
+
+ &::selection {
+ background: transparent; /* WebKit/Blink Browsers */
+ }
+ &::-moz-selection {
+ background: transparent; /* Gecko Browsers */
+ }
+
+ margin-right: 8px;
+ text-align: right;
+}
+
+.code-highlight pre { line-height: 125%; }
+.code-highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+.code-highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+.code-highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+.code-highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+.code-highlight .hll { background-color: #ffffcc }
+.code-highlight { background: #f8f8f8; }
+.code-highlight .c { color: #408080; font-style: italic } /* Comment */
+.code-highlight .err { border: 1px solid #FF0000 } /* Error */
+.code-highlight .k { color: #008000; font-weight: bold } /* Keyword */
+.code-highlight .o { color: #666666 } /* Operator */
+.code-highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.code-highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.code-highlight .cp { color: #BC7A00 } /* Comment.Preproc */
+.code-highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.code-highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.code-highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
+.code-highlight .gd { color: #A00000 } /* Generic.Deleted */
+.code-highlight .ge { font-style: italic } /* Generic.Emph */
+.code-highlight .gr { color: #FF0000 } /* Generic.Error */
+.code-highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.code-highlight .gi { color: #00A000 } /* Generic.Inserted */
+.code-highlight .go { color: #888888 } /* Generic.Output */
+.code-highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
+.code-highlight .gs { font-weight: bold } /* Generic.Strong */
+.code-highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.code-highlight .gt { color: #0044DD } /* Generic.Traceback */
+.code-highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.code-highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.code-highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.code-highlight .kp { color: #008000 } /* Keyword.Pseudo */
+.code-highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.code-highlight .kt { color: #B00040 } /* Keyword.Type */
+.code-highlight .m { color: #666666 } /* Literal.Number */
+.code-highlight .s { color: #BA2121 } /* Literal.String */
+.code-highlight .na { color: #7D9029 } /* Name.Attribute */
+.code-highlight .nb { color: #008000 } /* Name.Builtin */
+.code-highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.code-highlight .no { color: #880000 } /* Name.Constant */
+.code-highlight .nd { color: #AA22FF } /* Name.Decorator */
+.code-highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.code-highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.code-highlight .nf { color: #0000FF } /* Name.Function */
+.code-highlight .nl { color: #A0A000 } /* Name.Label */
+.code-highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.code-highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.code-highlight .nv { color: #19177C } /* Name.Variable */
+.code-highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
+.code-highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.code-highlight .mb { color: #666666 } /* Literal.Number.Bin */
+.code-highlight .mf { color: #666666 } /* Literal.Number.Float */
+.code-highlight .mh { color: #666666 } /* Literal.Number.Hex */
+.code-highlight .mi { color: #666666 } /* Literal.Number.Integer */
+.code-highlight .mo { color: #666666 } /* Literal.Number.Oct */
+.code-highlight .sa { color: #BA2121 } /* Literal.String.Affix */
+.code-highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
+.code-highlight .sc { color: #BA2121 } /* Literal.String.Char */
+.code-highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
+.code-highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.code-highlight .s2 { color: #BA2121 } /* Literal.String.Double */
+.code-highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.code-highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.code-highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.code-highlight .sx { color: #008000 } /* Literal.String.Other */
+.code-highlight .sr { color: #BB6688 } /* Literal.String.Regex */
+.code-highlight .s1 { color: #BA2121 } /* Literal.String.Single */
+.code-highlight .ss { color: #19177C } /* Literal.String.Symbol */
+.code-highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.code-highlight .fm { color: #0000FF } /* Name.Function.Magic */
+.code-highlight .vc { color: #19177C } /* Name.Variable.Class */
+.code-highlight .vg { color: #19177C } /* Name.Variable.Global */
+.code-highlight .vi { color: #19177C } /* Name.Variable.Instance */
+.code-highlight .vm { color: #19177C } /* Name.Variable.Magic */
+.code-highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
diff --git a/searx/static/themes/simple/less/style.less b/searx/static/themes/simple/less/style.less
index 9f69f7a..64f5e6a 100644
--- a/searx/static/themes/simple/less/style.less
+++ b/searx/static/themes/simple/less/style.less
@@ -299,6 +299,38 @@ article.result-images[data-vim-selected]::before {
}
}
+.result-map {
+
+ img.image {
+ float: right !important;
+ height: 100px !important;
+ width: auto !important;
+ }
+
+ table {
+ font-size: .9em;
+ width: auto;
+ border-collapse: separate;
+ border-spacing: 0 0.35rem;
+
+ th {
+ font-weight: inherit;
+ width: 17rem;
+ vertical-align: top;
+ text-align: left;
+ }
+
+ td {
+ vertical-align: top;
+ text-align: left;
+ }
+ }
+}
+
+.hidden {
+ display: none !important;
+}
+
.torrent_result {
border-left: 10px solid @color-result-torrent-border;
padding-left: 3px;
@@ -719,3 +751,7 @@ article.result-images[data-vim-selected]::before {
}
}
+
+pre code {
+ white-space: pre-wrap;
+}
diff --git a/searx/templates/__common__/about.html b/searx/templates/__common__/about.html
index bf17333..649e661 100644
--- a/searx/templates/__common__/about.html
+++ b/searx/templates/__common__/about.html
@@ -1,63 +1,102 @@
<div{% if rtl %} dir="ltr"{% endif %}>
- <h1>About <a href="{{ url_for('index') }}">searx</a></h1>
+ <h1>About <a href="{{ url_for('index') }}">searx</a></h1>
- <p>Searx is a <a href="https://en.wikipedia.org/wiki/Metasearch_engine">metasearch engine</a>, aggregating the results of other <a href="{{ url_for('preferences') }}">search engines</a> while not storing information about its users.
- </p>
- <h2>Why use searx?</h2>
- <ul>
- <li>searx may not offer you as personalised results as Google, but it doesn't generate a profile about you</li>
- <li>searx doesn't care about what you search for, never shares anything with a third party, and it can't be used to compromise you</li>
- <li>searx is free software, the code is 100% open and you can help to make it better. See more on <a href="https://github.com/asciimoo/searx">github</a></li>
- </ul>
- <p>If you do care about privacy, want to be a conscious user, or otherwise believe
- in digital freedom, make searx your default search engine or run it on your own server</p>
+ <p>
+ Searx is a <a href="https://en.wikipedia.org/wiki/Metasearch_engine">metasearch engine</a>,
+ aggregating the results of other <a href="{{ url_for('preferences') }}">search engines</a>
+ while not storing information about its users.
+ </p>
-<h2>Technical details - How does it work?</h2>
+ <p>More about searx...</p>
-<p>Searx is a <a href="https://en.wikipedia.org/wiki/Metasearch_engine">metasearch engine</a>,
-inspired by the <a href="https://beniz.github.io/seeks/">seeks project</a>.<br />
-It provides basic privacy by mixing your queries with searches on other platforms without storing search data. Queries are made using a POST request on every browser (except chrome*). Therefore they show up in neither our logs, nor your url history. In case of Chrome* users there is an exception, searx uses the search bar to perform GET requests.<br />
-Searx can be added to your browser's search bar; moreover, it can be set as the default search engine.
-</p>
-
-<h2>How can I make it my own?</h2>
-
-<p>Searx appreciates your concern regarding logs, so take the <a href="https://github.com/asciimoo/searx">code</a> and run it yourself! <br />Add your Searx to this <a href="https://github.com/asciimoo/searx/wiki/Searx-instances">list</a> to help other people reclaim their privacy and make the Internet freer!
-<br />The more decentralized the Internet is, the more freedom we have!</p>
-
-
-<h2>More about searx</h2>
-
-<ul>
- <li><a href="https://github.com/asciimoo/searx">github</a></li>
- <li><a href="https://www.ohloh.net/p/searx/">ohloh</a></li>
+ <ul>
+ <li><a href="https://github.com/searx/searx">github</a></li>
<li><a href="https://twitter.com/Searx_engine">twitter</a></li>
<li>IRC: #searx @ freenode (<a href="https://kiwiirc.com/client/irc.freenode.com/searx">webclient</a>)</li>
<li><a href="https://www.transifex.com/projects/p/searx/">transifex</a></li>
-</ul>
-
-
-<hr />
-
-<h2 id="faq">FAQ</h2>
-
-<h3>How to add to firefox?</h3>
-<p><a href="#" onclick="window.external.AddSearchProvider(window.location.protocol + '//' + window.location.host + '{{ url_for('opensearch') }}');">Install</a> searx as a search engine on any version of Firefox! (javascript required)</p>
-
-<h2 id="dev_faq">Developer FAQ</h2>
-
-<h3>New engines?</h3>
-<ul>
- <li>Edit your <a href="https://raw.github.com/asciimoo/searx/master/searx/settings.yml">settings.yml</a></li>
- <li>Create your custom engine module, check the <a href="https://github.com/asciimoo/searx/blob/master/examples/basic_engine.py">example engine</a></li>
-</ul>
-<p>Don't forget to restart searx after config edit!</p>
-
-<h3>Installation/WSGI support?</h3>
-<p>See the <a href="https://github.com/asciimoo/searx/wiki/Installation">installation and setup</a> wiki page</p>
-
-<h3>How to debug engines?</h3>
-<p><a href="{{ url_for('stats') }}">Stats page</a> contains some useful data about the engines used.</p>
+ </ul>
+
+ <hr />
+
+ <h2>Why use searx?</h2>
+
+ <ul>
+ <li>
+ Searx may not offer you as personalised results as Google, but it doesn't
+ generate a profile about you.
+ </li>
+ <li>
+ Searx doesn't care about what you search for, never shares anything with a
+ third party, and it can't be used to compromise you.
+ </li>
+ <li>
+ Searx is free software, the code is 100% open and you can help to make it
+ better. See more on <a href="https://github.com/searx/searx">github</a>.
+ </li>
+ </ul>
+
+ <p>
+ If you do care about privacy, want to be a conscious user, or otherwise
+ believe in digital freedom, make searx your default search engine or run it
+ on your own server
+ </p>
+
+ <h2>Technical details - How does it work?</h2>
+
+ <p>
+ Searx is a <a href="https://en.wikipedia.org/wiki/Metasearch_engine">metasearch engine</a>,
+ inspired by the <a href="https://beniz.github.io/seeks/">seeks project</a>.
+
+ It provides basic privacy by mixing your queries with searches on other
+ platforms without storing search data. Queries are made using a POST request
+ on every browser (except Chromium-based browsers*). Therefore they show up
+ in neither our logs, nor your url history. In the case of Chromium-based
+ browser users there is an exception: searx uses the search bar to perform GET
+ requests.
+
+ Searx can be added to your browser's search bar; moreover, it can be set as
+ the default search engine.
+ </p>
+
+ <h2 id='add to browser'>How to set as the default search engine?</h2>
+
+ <p>
+ Searx supports <a href="https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md">OpenSearch</a>.
+ For more information on changing your default search engine, see your browser's documentation:
+ </p>
+
+ <ul>
+ <li><a href="https://support.mozilla.org/en-US/kb/add-or-remove-search-engine-firefox">Firefox</a></li>
+ <li><a href="https://support.microsoft.com/en-us/help/4028574/microsoft-edge-change-the-default-search-engine">Microsoft Edge</a></li>
+ <li>Chromium-based browsers <a href="https://www.chromium.org/tab-to-search">only add websites that the user navigates to without a path.</a>
+ </ul>
+
+ <h2>Where to find anonymous usage statistics of this instance ?</h2>
+
+ <p>
+ <a href="{{ url_for('stats') }}">Stats page</a> contains some useful data about the engines used.
+ </p>
+
+ <h2>How can I make it my own?</h2>
+
+ <p>
+ Searx appreciates your concern regarding logs, so take the
+ code from the <a href="https://github.com/searx/searx">original searx project</a> and
+ run it yourself!
+ </p>
+ <p>
+ Add your searx instance to this <a href="{{ brand.PUBLIC_INSTANCES }}"> list
+ of public searx instances</a> to help other people reclaim their privacy and
+ make the Internet freer! The more decentralized the Internet is, the more
+ freedom we have!
+ </p>
+
+ <h2>Where are the docs & code of this instance?</h2>
+
+ <p>
+ See the <a href="{{ brand.DOCS_URL }}">{{ brand.DOCS_URL }}</a>
+ and <a href="{{ brand.GIT_URL }}">{{ brand.GIT_URL }}</a>
+ </p>
</div>
{% include "__common__/aboutextend.html" ignore missing %}
diff --git a/searx/templates/__common__/opensearch.xml b/searx/templates/__common__/opensearch.xml
index 15d3eb7..230f327 100644
--- a/searx/templates/__common__/opensearch.xml
+++ b/searx/templates/__common__/opensearch.xml
@@ -3,26 +3,20 @@
<ShortName>{{ instance_name }}</ShortName>
<Description>a privacy-respecting, hackable metasearch engine</Description>
<InputEncoding>UTF-8</InputEncoding>
- <Image>{{ urljoin(host, url_for('static', filename='img/favicon.png')) }}</Image>
+ <Image>{{ url_for('static', filename='img/favicon.png', _external=True) }}</Image>
<LongName>searx metasearch</LongName>
{% if opensearch_method == 'get' %}
- <Url type="text/html" method="get" template="{{ host }}search?q={searchTerms}"/>
- {% if autocomplete %}
- <Url type="application/x-suggestions+json" method="get" template="{{ host }}autocompleter">
- <Param name="format" value="x-suggestions" />
- <Param name="q" value="{searchTerms}" />
- </Url>
- {% endif %}
+ <Url rel="results" type="text/html" method="get" template="{{ url_for('search', _external=True) }}?q={searchTerms}"/>
{% else %}
- <Url type="text/html" method="post" template="{{ host }}">
+ <Url rel="results" type="text/html" method="post" template="{{ url_for('search', _external=True) }}">
<Param name="q" value="{searchTerms}" />
</Url>
- {% if autocomplete %}
- <!-- TODO, POST REQUEST doesn't work -->
- <Url type="application/x-suggestions+json" method="get" template="{{ host }}autocompleter">
- <Param name="format" value="x-suggestions" />
- <Param name="q" value="{searchTerms}" />
- </Url>
- {% endif %}
{% endif %}
+ {% if autocomplete %}
+ <Url rel="suggestions" type="application/x-suggestions+json" template="{{ url_for('autocompleter', _external=True) }}?q={searchTerms}"/>
+ {% endif %}
+
+ <Url type="application/opensearchdescription+xml"
+ rel="self"
+ template="{{ opensearch_url }}" />
</OpenSearchDescription>
diff --git a/searx/templates/__common__/opensearch_response_rss.xml b/searx/templates/__common__/opensearch_response_rss.xml
index 32c42e7..82d3f7c 100644
--- a/searx/templates/__common__/opensearch_response_rss.xml
+++ b/searx/templates/__common__/opensearch_response_rss.xml
@@ -4,12 +4,12 @@
xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Searx search: {{ q|e }}</title>
- <link>{{ base_url }}?q={{ q|e }}</link>
+ <link>{{ url_for('search', _external=True) }}?q={{ q|e }}</link>
<description>Search results for "{{ q|e }}" - searx</description>
<opensearch:totalResults>{{ number_of_results }}</opensearch:totalResults>
<opensearch:startIndex>1</opensearch:startIndex>
<opensearch:itemsPerPage>{{ number_of_results }}</opensearch:itemsPerPage>
- <atom:link rel="search" type="application/opensearchdescription+xml" href="{{ base_url }}opensearch.xml"/>
+ <atom:link rel="search" type="application/opensearchdescription+xml" href="{{ opensearch_url }}"/>
<opensearch:Query role="request" searchTerms="{{ q|e }}" startPage="1" />
{% if error_message %}
<item>
@@ -25,5 +25,29 @@
{% if r.pubdate %}<pubDate>{{ r.pubdate }}</pubDate>{% endif %}
</item>
{% endfor %}
+ {% if answers %}
+ {% for a in answers %}
+ <item>
+ <title>{{ a }}</title>
+ <type>answer</type>
+ </item>
+ {% endfor %}
+ {% endif %}
+ {% if corrections %}
+ {% for a in corrections %}
+ <item>
+ <title>{{ a }}</title>
+ <type>correction</type>
+ </item>
+ {% endfor %}
+ {% endif %}
+ {% if suggestions %}
+ {% for a in suggestions %}
+ <item>
+ <title>{{ a }}</title>
+ <type>suggestion</type>
+ </item>
+ {% endfor %}
+ {% endif %}
</channel>
</rss>
diff --git a/searx/templates/courgette/404.html b/searx/templates/courgette/404.html
deleted file mode 100644
index 9e3b8ac..0000000
--- a/searx/templates/courgette/404.html
+++ /dev/null
@@ -1,9 +0,0 @@
-{% extends "courgette/base.html" %}
-{% block content %}
-<div class="center">
- <h1>{{ _('Page not found') }}</h1>
- {% autoescape false %}
- <p>{{ _('Go to %(search_page)s.', search_page=unicode('<a href="{}">{}</a>').format(url_for('index'), _('search page'))) }}</p>
- {% endautoescape %}
-</div>
-{% endblock %}
diff --git a/searx/templates/courgette/about.html b/searx/templates/courgette/about.html
deleted file mode 100644
index 08948ee..0000000
--- a/searx/templates/courgette/about.html
+++ /dev/null
@@ -1,5 +0,0 @@
-{% extends 'courgette/base.html' %}
-{% block content %}
-{% include 'courgette/github_ribbon.html' %}
-{% include '__common__/about.html' %}
-{% endblock %}
diff --git a/searx/templates/courgette/base.html b/searx/templates/courgette/base.html
deleted file mode 100644
index 8e27258..0000000
--- a/searx/templates/courgette/base.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"{% if rtl %} dir="rtl"{% endif %}>
- <head>
- <meta charset="UTF-8" />
- <meta name="description" content="searx - a privacy-respecting, hackable metasearch engine" />
- <meta name="keywords" content="searx, search, search engine, metasearch, meta search" />
- <meta name="generator" content="searx/{{ searx_version }}">
- <meta name="referrer" content="no-referrer">
- <meta name="viewport" content="width=device-width, maximum-scale=1.0, user-scalable=1" />
- <title>{% block title %}{% endblock %}searx</title>
- <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}" type="text/css" media="screen" />
- {% if rtl %}
- <link rel="stylesheet" href="{{ url_for('static', filename='css/style-rtl.css') }}" type="text/css" media="screen" />
- {% endif %}
- {% if cookies['courgette-color'] %}
- <style type="text/css">
- {% include 'courgette/color.css' %}
- </style>
- {% endif %}
- <link rel="shortcut icon" href="{{ url_for('static', filename='img/favicon.png') }}?v=2" />
- {% block styles %}
- {% endblock %}
- {% block meta %}{% endblock %}
- {% block head %}
- <link title="{{ instance_name }}" type="application/opensearchdescription+xml" rel="search" href="{{ url_for('opensearch') }}"/>
- {% endblock %}
- <script type="text/javascript">
- searx = {};
- searx.autocompleter = {% if autocomplete %}true{% else %}false{% endif %};
- </script>
- </head>
- <body>
- <div id="container">
- {% block content %}
- {% endblock %}
- {% if autocomplete %}
- <script src="{{ url_for('static', filename='js/mootools-core-1.4.5-min.js') }}" ></script>
- <script src="{{ url_for('static', filename='js/mootools-autocompleter-1.1.2-min.js') }}" ></script>
- {% endif %}
- <script src="{{ url_for('static', filename='js/searx.js') }}" ></script>
- </div>
- </body>
-</html>
diff --git a/searx/templates/courgette/categories.html b/searx/templates/courgette/categories.html
deleted file mode 100644
index b8d6a75..0000000
--- a/searx/templates/courgette/categories.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<div id="categories">
- <div id="categories_container">
- {% for category in categories %}
- <div class="checkbox_container">
- <input type="checkbox" id="checkbox_{{ category|replace(' ', '_') }}" name="category_{{ category }}" {% if category in selected_categories %}checked="checked"{% endif %} /><label for="checkbox_{{ category|replace(' ', '_') }}">{{ _(category) }}</label>
- </div>
- {% endfor %}
- </div>
-</div> \ No newline at end of file
diff --git a/searx/templates/courgette/color.css b/searx/templates/courgette/color.css
deleted file mode 100644
index 3e0d730..0000000
--- a/searx/templates/courgette/color.css
+++ /dev/null
@@ -1,34 +0,0 @@
- .autocompleter-choices li:hover,
-.checkbox_container label:hover,
-.checkbox_container input[type="checkbox"]:checked + label,
-#sidebar,
-#suggestions input[type="submit"]:hover,
-#suggestions input[type="submit"]:focus,
-input[type="submit"],
-.engine_checkbox label,
-.engine_checkbox .deny,
-#search_submit{
- background-color: {{ cookies['courgette-color'].split()[0] }};
-}
-
-.result_title a,
-.row a,
-.title h1{
- color: {{ cookies['courgette-color'].split()[0] }};
-}
-
-#answers {
- border-color: {{ cookies['courgette-color'].split()[0] }};
-}
-
-#search_submit:hover,
-#search_submit:focus,
-#sidebar input[type="submit"]:hover,
-#sidebar input[type="submit"]:focus {
- background-color: {{ cookies['courgette-color'].split()[1] }};
-}
-
-input[type="submit"]:hover,
-input[type="submit"]:focus {
- background: {{ cookies['courgette-color'].split()[1] }};
-} \ No newline at end of file
diff --git a/searx/templates/courgette/github_ribbon.html b/searx/templates/courgette/github_ribbon.html
deleted file mode 100644
index 67c6e67..0000000
--- a/searx/templates/courgette/github_ribbon.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<a href="https://github.com/asciimoo/searx" class="github">
- <img style="position: absolute; top: 0; right: 0; border: 0;" src="{{ url_for('static', filename='img/github_ribbon.png') }}" alt="Fork me on GitHub" class="github"/>
-</a> \ No newline at end of file
diff --git a/searx/templates/courgette/index.html b/searx/templates/courgette/index.html
deleted file mode 100644
index 0d34e1c..0000000
--- a/searx/templates/courgette/index.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends "courgette/base.html" %}
-{% block content %}
-{% include 'courgette/github_ribbon.html' %}
-<div class="center">
- <div class="title"><h1>searx</h1></div>
- {% include 'courgette/search.html' %}
- <p class="top_margin">
- {% if rtl %}
- <a href="{{ url_for('preferences') }}" class="hmarg">{{ _('preferences') }}</a>
- {% endif %}
- <a href="{{ url_for('about') }}" class="hmarg">{{ _('about') }}</a>
- {% if not rtl %}
- <a href="{{ url_for('preferences') }}" class="hmarg">{{ _('preferences') }}</a>
- {% endif %}
- </p>
-</div>
-{% endblock %} \ No newline at end of file
diff --git a/searx/templates/courgette/preferences.html b/searx/templates/courgette/preferences.html
deleted file mode 100644
index 56a6e02..0000000
--- a/searx/templates/courgette/preferences.html
+++ /dev/null
@@ -1,132 +0,0 @@
-{% extends "courgette/base.html" %}
-{% block head %} {% endblock %}
-{% block content %}
-<div class="row">
- <h2>{{ _('Preferences') }}</h2>
-
- <form method="post" action="{{ url_for('preferences') }}" id="search_form">
- <fieldset>
- <legend>{{ _('Default categories') }}</legend>
- {% include 'courgette/categories.html' %}
- </fieldset>
- <fieldset>
- <legend>{{ _('Search language') }}</legend>
- <p>
- <select name='language'>
- <option value="all" {% if current_language == 'all' %}selected="selected"{% endif %}>{{ _('Default language') }}</option>
- {% for lang_id,lang_name,country_name,english_name in language_codes | sort(attribute=1) %}
- <option value="{{ lang_id }}" {% if lang_id == current_language %}selected="selected"{% endif %}>{{ lang_name }} {% if country_name %}({{ country_name }}) {% endif %}- {{ lang_id }}</option>
- {% endfor %}
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('Interface language') }}</legend>
- <p>
- <select name='locale'>
- {% for locale_id,locale_name in locales.items() | sort %}
- <option value="{{ locale_id }}" {% if locale_id == current_locale %}selected="selected"{% endif %}>{{ locale_name }}</option>
- {% endfor %}
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('Autocomplete') }}</legend>
- <p>
- <select name="autocomplete">
- <option value=""> - </option>
- {% for backend in autocomplete_backends %}
- <option value="{{ backend }}" {% if backend == autocomplete %}selected="selected"{% endif %}>{{ backend }}</option>
- {% endfor %}
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('Image proxy') }}</legend>
- <p>
- <select name='image_proxy'>
- <option value="1" {% if image_proxy %}selected="selected"{% endif %}>{{ _('Enabled') }}</option>
- <option value="" {% if not image_proxy %}selected="selected"{% endif %}>{{ _('Disabled') }}</option>
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('Method') }}</legend>
- <p>
- <select name='method'>
- <option value="POST" {% if method == 'POST' %}selected="selected"{% endif %}>POST</option>
- <option value="GET" {% if method == 'GET' %}selected="selected"{% endif %}>GET</option>
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('SafeSearch') }}</legend>
- <p>
- <select name='safesearch'>
- <option value="2" {% if safesearch == '2' %}selected="selected"{% endif %}>{{ _('Strict') }}</option>
- <option value="1" {% if safesearch == '1' %}selected="selected"{% endif %}>{{ _('Moderate') }}</option>
- <option value="0" {% if safesearch == '0' %}selected="selected"{% endif %}>{{ _('None') }}</option>
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('Themes') }}</legend>
- <p>
- <select name="theme">
- {% for name in themes %}
- <option value="{{ name }}" {% if name == theme %}selected="selected"{% endif %}>{{ name }}</option>
- {% endfor %}
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('Color') }}</legend>
- <p>
- <select name="courgette-color">
- <option value="#3498DB #0665A2" {% if cookies['courgette-color'] and cookies['courgette-color'] == '#3498DB #0665A2' %}selected="selected"{% endif %}>{{ _('Blue (default)') }}</option>
- <option value="#6F5499 #563D7C" {% if cookies['courgette-color'] and cookies['courgette-color'] == '#6F5499 #563D7C' %}selected="selected"{% endif %}>{{ _('Violet') }}</option>
- <option value="#5CB85C #449D44" {% if cookies['courgette-color'] and cookies['courgette-color'] == '#5CB85C #449D44' %}selected="selected"{% endif %}>{{ _('Green') }}</option>
- <option value="#5BC0DE #31B0D5" {% if cookies['courgette-color'] and cookies['courgette-color'] == '#5BC0DE #31B0D5' %}selected="selected"{% endif %}>{{ _('Cyan') }}</option>
- <option value="#F0AD4E #EC971F" {% if cookies['courgette-color'] and cookies['courgette-color'] == '#F0AD4E #EC971F' %}selected="selected"{% endif %}>{{ _('Orange') }}</option>
- <option value="#D9534F #C9302C" {% if cookies['courgette-color'] and cookies['courgette-color'] == '#D9534F #C9302C' %}selected="selected"{% endif %}>{{ _('Red') }}</option>
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('Currently used search engines') }}</legend>
-
- <table class="engine-table">
- <tr>
- <th>{{ _('Engine name') }}</th>
- <th>{{ _('Category') }}</th>
- <th>{{ _('Allow') }} / {{ _('Block') }}</th>
- </tr>
- {% for categ in all_categories %}
- {% for search_engine in engines_by_category[categ] %}
-
- {% if not search_engine.private %}
- <tr>
- <td>{{ search_engine.name }} ({{ shortcuts[search_engine.name] }})&lrm;</td>
- <td>{{ _(categ) }}</td>
- <td class="engine_checkbox">
- <input type="checkbox" id="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}" name="engine_{{ search_engine.name }}__{{ categ }}"{% if (search_engine.name, categ) in disabled_engines %} checked="checked"{% endif %} />
- <label class="allow" for="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}">{{ _('Allow') }}</label>
- <label class="deny" for="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}">{{ _('Block') }}</label>
- </td>
- </tr>
- {% endif %}
- {% endfor %}
- {% endfor %}
- </table>
- </fieldset>
- <p class="small_font">{{ _('These settings are stored in your cookies, this allows us not to store this data about you.') }}
- <br />
- {{ _("These cookies serve your sole convenience, we don't use these cookies to track you.") }}
- </p>
-
- <input type="submit" value="{{ _('save') }}" />
- <div class="right preferences_back"><a href="{{ url_for('clear_cookies') }}">{{ _('Reset defaults') }}</a></div>
- <div class="right preferences_back"><a href="{{ url_for('index') }}">{{ _('back') }}</a></div>
- </form>
-</div>
-{% endblock %}
diff --git a/searx/templates/courgette/result_templates/code.html b/searx/templates/courgette/result_templates/code.html
deleted file mode 100644
index d6dbd5e..0000000
--- a/searx/templates/courgette/result_templates/code.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<div class="result {{ result.class }}">
- <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
- {% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span>{% endif %}
- <p class="content">{% if result.img_src %}<img src="{{ image_proxify(result.img_src) }}" class="image" />{% endif %}{% if result.content %}{{ result.content|safe }}<br class="last"/>{% endif %}</p>
- {% if result.repository %}<p class="content"><a href="{{ result.repository|safe }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.repository }}</a></p>{% endif %}
- <div dir="ltr">
- {{ result.codelines|code_highlighter(result.code_language)|safe }}
- </div>
-
- <p class="url">{{ result.pretty_url }}&lrm;</p>
-</div>
diff --git a/searx/templates/courgette/result_templates/default.html b/searx/templates/courgette/result_templates/default.html
deleted file mode 100644
index 5f2ead6..0000000
--- a/searx/templates/courgette/result_templates/default.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<div class="result {{ result.class }}">
-
- {% if "icon_"~result.engine~".ico" in favicons %}
- <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
- {% endif %}
-
- <div>
- <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
- {% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span>{% endif %}
- <p class="content">{% if result.content %}{{ result.content|safe }}<br />{% endif %}</p>
- <p class="url">{{ result.pretty_url }}&lrm;</p>
- </div>
-</div>
diff --git a/searx/templates/courgette/result_templates/images.html b/searx/templates/courgette/result_templates/images.html
deleted file mode 100644
index 49acb3b..0000000
--- a/searx/templates/courgette/result_templates/images.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<div class="image_result">
- <p>
- <a href="{{ result.img_src }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}><img src="{% if result.thumbnail_src %}{{ image_proxify(result.thumbnail_src) }}{% else %}{{ image_proxify(result.img_src) }}{% endif %}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}"/></a>
- <span class="url"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} class="small_font">{{ _('original context') }}</a></span>
- </p>
-</div>
diff --git a/searx/templates/courgette/result_templates/key-value.html b/searx/templates/courgette/result_templates/key-value.html
deleted file mode 100644
index 789e8de..0000000
--- a/searx/templates/courgette/result_templates/key-value.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<div class="result">
-<table>
- {% for key, value in result.items() %}
- {% if key in ['engine', 'engines', 'template', 'score', 'category', 'positions'] %}
- {% continue %}
- {% endif %}
- <tr>
- <td><b>{{ key|upper }}</b>: {{ value|safe }}</td>
- </tr>
- {% endfor %}
-</table>
-<p class="engines">{{ result.engines|join(', ') }}</p>
-</div>
diff --git a/searx/templates/courgette/result_templates/map.html b/searx/templates/courgette/result_templates/map.html
deleted file mode 100644
index 5f2ead6..0000000
--- a/searx/templates/courgette/result_templates/map.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<div class="result {{ result.class }}">
-
- {% if "icon_"~result.engine~".ico" in favicons %}
- <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
- {% endif %}
-
- <div>
- <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
- {% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span>{% endif %}
- <p class="content">{% if result.content %}{{ result.content|safe }}<br />{% endif %}</p>
- <p class="url">{{ result.pretty_url }}&lrm;</p>
- </div>
-</div>
diff --git a/searx/templates/courgette/result_templates/torrent.html b/searx/templates/courgette/result_templates/torrent.html
deleted file mode 100644
index 7f94a22..0000000
--- a/searx/templates/courgette/result_templates/torrent.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<div class="result torrent_result">
- {% if "icon_"~result.engine~".ico" in favicons %}
- <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
- {% endif %}
- <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
- {% if result.content %}<span class="content">{{ result.content|safe }}</span><br />{% endif %}
- {% if result.seed is defined %}<span class="stats">{{ _('Seeder') }} : {{ result.seed }}, {{ _('Leecher') }} : {{ result.leech }}</span><br />{% endif %}
- <span>
- {% if result.magnetlink %}<a href="{{ result.magnetlink }}" class="magnetlink">{{ _('magnet link') }}</a>{% endif %}
- {% if result.torrentfile %}<a href="{{ result.torrentfile }}" class="torrentfile" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ _('torrent file') }}</a>{% endif %}
- </span>
- <p class="url">{{ result.pretty_url }}&lrm;</p>
-</div>
diff --git a/searx/templates/courgette/result_templates/videos.html b/searx/templates/courgette/result_templates/videos.html
deleted file mode 100644
index b3e19e0..0000000
--- a/searx/templates/courgette/result_templates/videos.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<div class="result">
- {% if "icon_"~result.engine~".ico" in favicons %}
- <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
- {% endif %}
-
- <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
- {% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span><br />{% endif %}
- <a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}><img width="400" src="{{ image_proxify(result.thumbnail) }}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}"/></a>
- <p class="url">{{ result.pretty_url }}&lrm;</p>
-</div>
diff --git a/searx/templates/courgette/results.html b/searx/templates/courgette/results.html
deleted file mode 100644
index aa983e6..0000000
--- a/searx/templates/courgette/results.html
+++ /dev/null
@@ -1,87 +0,0 @@
-{% extends "courgette/base.html" %}
-{% block title %}{{ q|e }} - {% endblock %}
-{% block meta %}<link rel="alternate" type="application/rss+xml" title="Searx search: {{ q|e }}" href="{{ url_for('index') }}?q={{ q|urlencode }}&amp;format=rss&amp;{% for category in selected_categories %}category_{{ category }}=1&amp;{% endfor %}pageno={{ pageno }}">{% endblock %}
-{% block content %}
-<div class="right"><a href="{{ url_for('preferences') }}" id="preferences"><span>{{ _('preferences') }}</span></a></div>
-<div class="small search center">
- {% include 'courgette/search.html' %}
-</div>
-<div id="results">
- <div id="sidebar">
- <div id="search_url">
- {{ _('Search URL') }}:
- <input type="text" value="{{ base_url }}?q={{ q|urlencode }}{% if selected_categories %}&amp;categories={{ selected_categories|join(",") | replace(' ','+') }}{% endif %}{% if pageno > 1 %}&amp;pageno={{ pageno }}{% endif %}" readonly />
- </div>
- <div id="apis">
- {{ _('Download results') }}<br />
- {% for output_type in ('csv', 'json', 'rss') %}
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
- <div class="left">
- <input type="hidden" name="q" value="{{ q|e }}" />
- <input type="hidden" name="format" value="{{ output_type }}" />
- {% for category in selected_categories %}
- <input type="hidden" name="category_{{ category }}" value="1"/>
- {% endfor %}
- <input type="hidden" name="pageno" value="{{ pageno }}" />
- <input type="submit" value="{{ output_type }}" />
- </div>
- </form>
- {% endfor %}
- </div>
- </div>
-
- {% if answers %}
- <div id="answers" class=""><span>{{ _('Answers') }}</span>
- {% for answer in answers %}
- <span>{{ answer }}</span>
- {% endfor %}
- </div>
- {% endif %}
-
- {% if suggestions %}
- <div id="suggestions"><span>{{ _('Suggestions') }}</span>
- {% for suggestion in suggestions %}
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
- <input type="hidden" name="q" value="{{ suggestion.url }}">
- <input type="submit" value="{{ suggestion.title }}" />
- </form>
- {% endfor %}
- </div>
- {% endif %}
-
- {% for result in results %}
- {% if result['template'] %}
- {% include get_result_template('courgette', result['template']) %}
- {% else %}
- {% include 'courgette/result_templates/default.html' %}
- {% endif %}
- {% endfor %}
-
- {% if paging %}
- <div id="pagination">
- {% if pageno > 1 %}
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
- <div class="left">
- <input type="hidden" name="q" value="{{ q|e }}" />
- {% for category in selected_categories %}
- <input type="hidden" name="category_{{ category }}" value="1"/>
- {% endfor %}
- <input type="hidden" name="pageno" value="{{ pageno-1 }}" />
- <input type="submit" value="<< {{ _('previous page') }}" />
- </div>
- </form>
- {% endif %}
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
- <div class="left">
- {% for category in selected_categories %}
- <input type="hidden" name="category_{{ category }}" value="1"/>
- {% endfor %}
- <input type="hidden" name="q" value="{{ q|e }}" />
- <input type="hidden" name="pageno" value="{{ pageno+1 }}" />
- <input type="submit" value="{{ _('next page') }} >>" />
- </div>
- </form>
- </div>
- {% endif %}
-</div>
-{% endblock %}
diff --git a/searx/templates/courgette/search.html b/searx/templates/courgette/search.html
deleted file mode 100644
index bd4efd4..0000000
--- a/searx/templates/courgette/search.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" id="search_form">
- <div id="search_wrapper">
- <input type="text" placeholder="{{ _('Search for...') }}" id="q" class="q" name="q" tabindex="1" autocomplete="off" {% if q %}value="{{ q }}"{% endif %}/>
- <input type="submit" value="search" id="search_submit" />
- </div>
- {% include 'courgette/categories.html' %}
-</form> \ No newline at end of file
diff --git a/searx/templates/courgette/stats.html b/searx/templates/courgette/stats.html
deleted file mode 100644
index b9aafbb..0000000
--- a/searx/templates/courgette/stats.html
+++ /dev/null
@@ -1,22 +0,0 @@
-{% extends "courgette/base.html" %}
-{% block head %} {% endblock %}
-{% block content %}
-<h2>{{ _('Engine stats') }}</h2>
-
-{% for stat_name,stat_category in stats %}
-<div class="left">
- <table>
- <tr>
- <th colspan="3">{{ stat_name }}</th>
- </tr>
- {% for engine in stat_category %}
- <tr>
- <td>{{ engine.name }}</td>
- <td>{{ '%.02f'|format(engine.avg) }}</td>
- <td class="percentage"><div style="width: {{ engine.percentage }}%">&nbsp;</div></td>
- </tr>
- {% endfor %}
- </table>
-</div>
-{% endfor %}
-{% endblock %} \ No newline at end of file
diff --git a/searx/templates/legacy/404.html b/searx/templates/legacy/404.html
deleted file mode 100644
index 3e889dd..0000000
--- a/searx/templates/legacy/404.html
+++ /dev/null
@@ -1,9 +0,0 @@
-{% extends "legacy/base.html" %}
-{% block content %}
-<div class="center">
- <h1>{{ _('Page not found') }}</h1>
- {% autoescape false %}
- <p>{{ _('Go to %(search_page)s.', search_page=unicode('<a href="{}">{}</a>').format(url_for('index'), _('search page'))) }}</p>
- {% endautoescape %}
-</div>
-{% endblock %}
diff --git a/searx/templates/legacy/about.html b/searx/templates/legacy/about.html
deleted file mode 100644
index f773e3a..0000000
--- a/searx/templates/legacy/about.html
+++ /dev/null
@@ -1,5 +0,0 @@
-{% extends 'legacy/base.html' %}
-{% block content %}
-{% include 'legacy/github_ribbon.html' %}
-{% include '__common__/about.html' %}
-{% endblock %}
diff --git a/searx/templates/legacy/base.html b/searx/templates/legacy/base.html
deleted file mode 100644
index da19741..0000000
--- a/searx/templates/legacy/base.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"{% if rtl %} dir="rtl"{% endif %}>
- <head>
- <meta charset="UTF-8" />
- <meta name="description" content="searx - a privacy-respecting, hackable metasearch engine" />
- <meta name="keywords" content="searx, search, search engine, metasearch, meta search" />
- <meta name="generator" content="searx/{{ searx_version }}">
- <meta name="referrer" content="no-referrer">
- <meta name="viewport" content="width=device-width, maximum-scale=1.0, user-scalable=1" />
- <title>{% block title %}{% endblock %}searx</title>
- <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}" type="text/css" media="screen" />
- {% if rtl %}
- <link rel="stylesheet" href="{{ url_for('static', filename='css/style-rtl.css') }}" type="text/css" media="screen" />
- {% endif %}
- <link rel="shortcut icon" href="{{ url_for('static', filename='img/favicon.png') }}?v=2" />
- {% block styles %}
- {% endblock %}
- {% block meta %}{% endblock %}
- {% block head %}
- <link title="{{ instance_name }}" type="application/opensearchdescription+xml" rel="search" href="{{ url_for('opensearch') }}"/>
- {% endblock %}
- </head>
- <body>
- <div id="container">
- {% block content %}
- {% endblock %}
- {% if autocomplete %}
- <script src="{{ url_for('static', filename='js/mootools-core-1.4.5-min.js') }}" ></script>
- <script src="{{ url_for('static', filename='js/mootools-autocompleter-1.1.2-min.js') }}" ></script>
- {% endif %}
- <script type="text/javascript">
- searx = {};
- searx.autocompleter = {% if autocomplete %}true{% else %}false{% endif %};
- </script>
- <script src="{{ url_for('static', filename='js/searx.js') }}" ></script>
- </div>
- </body>
-</html>
diff --git a/searx/templates/legacy/categories.html b/searx/templates/legacy/categories.html
deleted file mode 100644
index 1c46678..0000000
--- a/searx/templates/legacy/categories.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<div id="categories">
- <div id="categories_container">
- {% for category in categories %}
- <div class="checkbox_container">
- <input type="checkbox" id="checkbox_{{ category|replace(' ', '_') }}" name="category_{{ category }}" {% if category in selected_categories %}checked="checked"{% endif %} /><label for="checkbox_{{ category|replace(' ', '_') }}" class="tooltips">{{ _(category) }}</label>
- </div>
- {% endfor %}
- {% if display_tooltip %}<div class="hidden">{{ _('Click on the magnifier to perform search') }}</div>{% endif %}
- </div>
-</div>
diff --git a/searx/templates/legacy/github_ribbon.html b/searx/templates/legacy/github_ribbon.html
deleted file mode 100644
index bdd9cf1..0000000
--- a/searx/templates/legacy/github_ribbon.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<a href="https://github.com/asciimoo/searx" class="github">
- <img style="position: absolute; top: 0; right: 0; border: 0;" src="{{ url_for('static', filename='img/github_ribbon.png') }}" alt="Fork me on GitHub" class="github"/>
-</a>
diff --git a/searx/templates/legacy/index.html b/searx/templates/legacy/index.html
deleted file mode 100644
index de956d5..0000000
--- a/searx/templates/legacy/index.html
+++ /dev/null
@@ -1,18 +0,0 @@
-{% extends "legacy/base.html" %}
-{% block content %}
-<div class="center">
- <div class="title"><h1>searx</h1></div>
- {% include 'legacy/search.html' %}
- <p class="top_margin">
- {% if rtl %}
- <a href="{{ url_for('preferences') }}" class="hmarg">{{ _('preferences') }}</a>
- {% endif %}
- <a href="{{ url_for('about') }}" class="hmarg">{{ _('about') }}</a>
- {% if not rtl %}
- <a href="{{ url_for('preferences') }}" class="hmarg">{{ _('preferences') }}</a>
- {% endif %}
- </p>
-</div>
-{% include 'legacy/github_ribbon.html' %}
-{% endblock %}
-
diff --git a/searx/templates/legacy/infobox.html b/searx/templates/legacy/infobox.html
deleted file mode 100644
index 4dd25fa..0000000
--- a/searx/templates/legacy/infobox.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<div class="infobox">
-<h2><bdi>{{ infobox.infobox }}</bdi></h2>
- {% if infobox.img_src %}<img src="{{ image_proxify(infobox.img_src) }}" title="{{ infobox.infobox|striptags }}" alt="{{ infobox.infobox|striptags }}" />{% endif %}
- <p><bdi>{{ infobox.entity }}</bdi></p>
- <p><bdi>{{ infobox.content | safe }}</bdi></p>
- {% if infobox.attributes %}
- <div class="attributes">
- <table>
- {% for attribute in infobox.attributes %}
- <tr>
- <td><bdi>{{ attribute.label }}</bdi></td>
- {% if attribute.image %}
- <td><img src="{{ image_proxify(attribute.image.src) }}" alt="{{ attribute.image.alt }}" /></td>
- {% else %}
- <td><bdi>{{ attribute.value }}</bdi></td>
- {% endif %}
- </tr>
- {% endfor %}
- </table>
- </div>
- {% endif %}
-
- {% if infobox.urls %}
- <div class="urls">
- <ul>
- {% for url in infobox.urls %}
- <li class="url"><bdi><a href="{{ url.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ url.title }}</a></bdi></li>
- {% endfor %}
- </ul>
- </div>
- {% endif %}
-
- {% if infobox.relatedTopics %}
- <div class="relatedTopics">
- {% for topic in infobox.relatedTopics %}
- <div>
- <h3><bdi>{{ topic.name }}</bdi></h3>
- {% for suggestion in topic.suggestions %}
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
- <input type="hidden" name="q" value="{{ suggestion }}">
- <input type="submit" value="{{ suggestion }}" />
- </form>
- {% endfor %}
- </div>
- {% endfor %}
- </div>
- {% endif %}
-
- <br />
-
-</div>
diff --git a/searx/templates/legacy/preferences.html b/searx/templates/legacy/preferences.html
deleted file mode 100644
index f418dcd..0000000
--- a/searx/templates/legacy/preferences.html
+++ /dev/null
@@ -1,129 +0,0 @@
-{% extends "legacy/base.html" %}
-{% block head %} {% endblock %}
-{% block content %}
-<div class="row">
- <h2>{{ _('Preferences') }}</h2>
-
- <form method="post" action="{{ url_for('preferences') }}" id="search_form">
- <fieldset>
- <legend>{{ _('Default categories') }}</legend>
- {% set display_tooltip = false %}
- {% include 'legacy/categories.html' %}
- </fieldset>
- <fieldset>
- <legend>{{ _('Search language') }}</legend>
- <p>
- <select name='language'>
- <option value="all" {% if current_language == 'all' %}selected="selected"{% endif %}>{{ _('Default language') }}</option>
- {% for lang_id,lang_name,country_name,english_name in language_codes | sort(attribute=1) %}
- <option value="{{ lang_id }}" {% if lang_id == current_language %}selected="selected"{% endif %}>{{ lang_name }} {% if country_name %}({{ country_name }}) {% endif %}- {{ lang_id }}</option>
- {% endfor %}
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('Interface language') }}</legend>
- <p>
- <select name='locale'>
- {% for locale_id,locale_name in locales.items() | sort %}
- <option value="{{ locale_id }}" {% if locale_id == current_locale %}selected="selected"{% endif %}>{{ locale_name }}</option>
- {% endfor %}
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('Autocomplete') }}</legend>
- <p>
- <select name="autocomplete">
- <option value=""> - </option>
- {% for backend in autocomplete_backends %}
- <option value="{{ backend }}" {% if backend == autocomplete %}selected="selected"{% endif %}>{{ backend }}</option>
- {% endfor %}
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('Image proxy') }}</legend>
- <p>
- <select name='image_proxy'>
- <option value="1" {% if image_proxy %}selected="selected"{% endif %}>{{ _('Enabled') }}</option>
- <option value="" {% if not image_proxy %}selected="selected"{% endif %}>{{ _('Disabled') }}</option>
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('Method') }}</legend>
- <p>
- <select name='method'>
- <option value="POST" {% if method == 'POST' %}selected="selected"{% endif %}>POST</option>
- <option value="GET" {% if method == 'GET' %}selected="selected"{% endif %}>GET</option>
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('SafeSearch') }}</legend>
- <p>
- <select name='safesearch'>
- <option value="2" {% if safesearch == '2' %}selected="selected"{% endif %}>{{ _('Strict') }}</option>
- <option value="1" {% if safesearch == '1' %}selected="selected"{% endif %}>{{ _('Moderate') }}</option>
- <option value="0" {% if safesearch == '0' %}selected="selected"{% endif %}>{{ _('None') }}</option>
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('Themes') }}</legend>
- <p>
- <select name="theme">
- {% for name in themes %}
- <option value="{{ name }}" {% if name == theme %}selected="selected"{% endif %}>{{ name }}</option>
- {% endfor %}
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('Results on new tabs') }}</legend>
- <p>
- <select name='results_on_new_tab'>
- <option value="1" {% if results_on_new_tab %}selected="selected"{% endif %}>{{ _('On') }}</option>
- <option value="0" {% if not results_on_new_tab %}selected="selected"{% endif %}>{{ _('Off')}}</option>
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('Currently used search engines') }}</legend>
-
- <table>
- <tr>
- <th>{{ _('Engine name') }}</th>
- <th>{{ _('Category') }}</th>
- <th>{{ _('Allow') }} / {{ _('Block') }}</th>
- </tr>
- {% for categ in all_categories %}
- {% for search_engine in engines_by_category[categ] %}
-
- {% if not search_engine.private %}
- <tr>
- <td>{{ search_engine.name }} ({{ shortcuts[search_engine.name] }})&lrm;</td>
- <td>{{ _(categ) }}</td>
- <td class="engine_checkbox">
- <input type="checkbox" id="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}" name="engine_{{ search_engine.name }}__{{ categ }}"{% if (search_engine.name, categ) in disabled_engines %} checked="checked"{% endif %} />
- <label class="allow" for="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}">{{ _('Allow') }}</label>
- <label class="deny" for="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}">{{ _('Block') }}</label>
- </td>
- </tr>
- {% endif %}
- {% endfor %}
- {% endfor %}
- </table>
- </fieldset>
- <p class="small_font">{{ _('These settings are stored in your cookies, this allows us not to store this data about you.') }}
- <br />
- {{ _("These cookies serve your sole convenience, we don't use these cookies to track you.") }}
- </p>
-
- <input type="submit" value="{{ _('save') }}" />
- <div class="{% if rtl %}left{% else %}right{% endif %} preferences_back"><a href="{{ url_for('clear_cookies') }}">{{ _('Reset defaults') }}</a></div>
- <div class="{% if rtl %}left{% else %}right{% endif %} preferences_back"><a href="{{ url_for('index') }}">{{ _('back') }}</a></div>
- </form>
-</div>
-{% endblock %}
diff --git a/searx/templates/legacy/result_templates/code.html b/searx/templates/legacy/result_templates/code.html
deleted file mode 100644
index fee6c82..0000000
--- a/searx/templates/legacy/result_templates/code.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<div class="result {{ result.class }}">
- <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
- <p class="url">{{ result.pretty_url }}&lrm; <a class="cache_link" href="https://web.archive.org/web/{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ _('cached') }}</a></p>
- {% if result.publishedDate %}<p class="published_date">{{ result.publishedDate }}</p>{% endif %}
- <p class="content">{% if result.img_src %}<img src="{{ image_proxify(result.img_src) }}" class="image" />{% endif %}{% if result.content %}{{ result.content|safe }}<br class="last"/>{% endif %}</p>
- {% if result.repository %}<p class="result-content"><a href="{{ result.repository|safe }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.repository }}</a></p>{% endif %}
-
- <div dir="ltr">
- {{ result.codelines|code_highlighter(result.code_language)|safe }}
- </div>
-</div>
diff --git a/searx/templates/legacy/result_templates/default.html b/searx/templates/legacy/result_templates/default.html
deleted file mode 100644
index da09117..0000000
--- a/searx/templates/legacy/result_templates/default.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<div class="result {{ result.class }}">
- <h3 class="result_title">{% if "icon_"~result.engine~".ico" in favicons %}<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />{% endif %}<a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
- <p class="url">{{ result.pretty_url }}&lrm; <a class="cache_link" href="https://web.archive.org/web/{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ _('cached') }}</a>
- {% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span>{% endif %}</p>
- <p class="content">{% if result.img_src %}<img src="{{ image_proxify(result.img_src) }}" class="image" />{% endif %}{% if result.content %}{{ result.content|safe }}<br class="last"/>{% endif %}</p>
-</div>
diff --git a/searx/templates/legacy/result_templates/images.html b/searx/templates/legacy/result_templates/images.html
deleted file mode 100644
index 00f62ab..0000000
--- a/searx/templates/legacy/result_templates/images.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<div class="image_result">
- <p>
- <a href="{{ result.img_src }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}><img src="{% if result.thumbnail_src %}{{ image_proxify(result.thumbnail_src) }}{% else %}{{ image_proxify(result.img_src) }}{% endif %}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}" /></a>
- <span class="url"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} class="small_font">{{ _('original context') }}</a></span>
- </p>
-</div>
diff --git a/searx/templates/legacy/result_templates/key-value.html b/searx/templates/legacy/result_templates/key-value.html
deleted file mode 100644
index a5bb509..0000000
--- a/searx/templates/legacy/result_templates/key-value.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<table class="result-table">
- {% for key, value in result.items() %}
- {% if key in ['engine', 'engines', 'template', 'score', 'category', 'positions'] %}
- {% continue %}
- {% endif %}
- <tr>
- <td><b>{{ key|upper }}</b>: {{ value|safe }}</td>
- </tr>
- {% endfor %}
- <tr>
- <td><b>ENGINES</b>: {{ result.engines|join(', ') }}</td>
- </tr>
-</table>
diff --git a/searx/templates/legacy/result_templates/map.html b/searx/templates/legacy/result_templates/map.html
deleted file mode 100644
index 0200e0f..0000000
--- a/searx/templates/legacy/result_templates/map.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<div class="result {{ result.class }}">
-
- {% if "icon_"~result.engine~".ico" in favicons %}
- <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
- {% endif %}
-
- <div>
- <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
- <p class="url">{{ result.pretty_url }}&lrm; <a class="cache_link" href="https://web.archive.org/web/{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ _('cached') }}</a>
- {% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span>{% endif %}</p>
- <p class="content">{% if result.img_src %}<img src="{{ image_proxify(result.img_src) }}" class="image" />{% endif %}{% if result.content %}{{ result.content|safe }}<br class="last"/>{% endif %}</p>
- </div>
-</div>
diff --git a/searx/templates/legacy/result_templates/torrent.html b/searx/templates/legacy/result_templates/torrent.html
deleted file mode 100644
index 068e053..0000000
--- a/searx/templates/legacy/result_templates/torrent.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<div class="result torrent_result">
- {% if "icon_"~result.engine~".ico" in favicons %}
- <img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />
- {% endif %}
- <h3 class="result_title"><a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
- <p class="url">{{ result.pretty_url }}&lrm;</p>
- {% if result.content %}<p class="content">{{ result.content|safe }}</p>{% endif %}
- <p>
- {% if result.magnetlink %}<a href="{{ result.magnetlink }}" class="magnetlink">{{ _('magnet link') }}</a>{% endif %}
- {% if result.torrentfile %}<a href="{{ result.torrentfile }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} class="torrentfile">{{ _('torrent file') }}</a>{% endif %} -
- {% if result.seed is defined %}<span class="stats">{{ _('Seeder') }} : {{ result.seed }}, {{ _('Leecher') }} : {{ result.leech }}</span>{% endif %}
- </p>
-</div>
diff --git a/searx/templates/legacy/result_templates/videos.html b/searx/templates/legacy/result_templates/videos.html
deleted file mode 100644
index 727f44c..0000000
--- a/searx/templates/legacy/result_templates/videos.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<div class="result">
- <h3 class="result_title">{% if "icon_"~result.engine~".ico" in favicons %}<img width="14" height="14" class="favicon" src="{{ url_for('static', filename='img/icons/icon_'+result.engine+'.ico') }}" alt="{{result.engine}}" />{% endif %}<a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.title|safe }}</a></h3>
- {% if result.publishedDate %}<span class="published_date">{{ result.publishedDate }}</span><br />{% endif %}
- <a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}><img class="thumbnail" src="{{ image_proxify(result.thumbnail) }}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}"/></a>
- <p class="url">{{ result.url }}&lrm;</p>
-</div>
diff --git a/searx/templates/legacy/results.html b/searx/templates/legacy/results.html
deleted file mode 100644
index 2e28bc9..0000000
--- a/searx/templates/legacy/results.html
+++ /dev/null
@@ -1,100 +0,0 @@
-{% extends "legacy/base.html" %}
-{% block title %}{{ q|e }} - {% endblock %}
-{% block meta %}<link rel="alternate" type="application/rss+xml" title="Searx search: {{ q|e }}" href="{{ url_for('index') }}?q={{ q|urlencode }}&amp;format=rss&amp;{% for category in selected_categories %}category_{{ category }}=1&amp;{% endfor %}pageno={{ pageno }}">{% endblock %}
-{% block content %}
-<div class="preferences_container right"><a href="{{ url_for('preferences') }}" id="preferences"><span>preferences</span></a></div>
-<div class="small search center">
- {% include 'legacy/search.html' %}
-</div>
-<div id="results">
- <div id="sidebar">
-
- <div id="search_url">
- {{ _('Search URL') }}:
- <input type="text" value="{{ base_url }}?q={{ q|urlencode }}{% if selected_categories %}&amp;categories={{ selected_categories|join(",") | replace(' ','+') }}{% endif %}{% if pageno > 1 %}&amp;pageno={{ pageno }}{% endif %}" readonly />
- </div>
- <div id="apis">
- {{ _('Download results') }}
- {% for output_type in ('csv', 'json', 'rss') %}
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
- <div class="left">
- <input type="hidden" name="q" value="{{ q|e }}" />
- <input type="hidden" name="format" value="{{ output_type }}" />
- {% for category in selected_categories %}
- <input type="hidden" name="category_{{ category }}" value="1"/>
- {% endfor %}
- <input type="hidden" name="pageno" value="{{ pageno }}" />
- <input type="submit" value="{{ output_type }}" />
- </div>
- </form>
- {% endfor %}
- </div>
- </div>
-
- {% if answers %}
- <div id="answers"><span>{{ _('Answers') }}</span>
- {% for answer in answers %}
- <span>{{ answer }}</span>
- {% endfor %}
- </div>
- {% endif %}
-
- {% if suggestions %}
- <div id="suggestions"><span id="suggestions-title">{{ _('Suggestions') }} : </span>
- {% set first = true %}
- {% for suggestion in suggestions %}
- {% if not first %} &bull; {% endif %}<form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
- <input type="hidden" name="q" value="{{ suggestion.url }}">
- <input type="submit" class="suggestion" value="{{ suggestion.title }}" />
- </form>
- {% set first = false %}
- {% endfor %}
- </div>
- {% endif %}
-
- {% if infoboxes %}
- <div id="infoboxes">
- {% for infobox in infoboxes %}
- {% include 'legacy/infobox.html' %}
- {% endfor %}
- </div>
- {% endif %}
-
- {% for result in results %}
- {% if result['template'] %}
- {% include get_result_template('legacy', result['template']) %}
- {% else %}
- {% include 'legacy/result_templates/default.html' %}
- {% endif %}
- {% endfor %}
-
- {% if paging %}
- <div id="pagination">
- {% if pageno > 1 %}
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
- <div class="{% if rtl %}right{% else %}left{% endif %}">
- <input type="hidden" name="q" value="{{ q|e }}" />
- {% for category in selected_categories %}
- <input type="hidden" name="category_{{ category }}" value="1"/>
- {% endfor %}
- <input type="hidden" name="pageno" value="{{ pageno-1 }}" />
- <input type="submit" value="<< {{ _('previous page') }}" />
- </div>
- </form>
- {% endif %}
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
- <div class="{% if rtl %}left{% else %}right{% endif %}">
- {% for category in selected_categories %}
- <input type="hidden" name="category_{{ category }}" value="1"/>
- {% endfor %}
- <input type="hidden" name="q" value="{{ q|e }}" />
- <input type="hidden" name="pageno" value="{{ pageno+1 }}" />
- <input type="submit" value="{{ _('next page') }} >>" />
- </div>
- </form>
-
- <br />
- </div>
- {% endif %}
-</div>
-{% endblock %}
diff --git a/searx/templates/legacy/search.html b/searx/templates/legacy/search.html
deleted file mode 100644
index 4d37f9b..0000000
--- a/searx/templates/legacy/search.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" id="search_form">
- <div id="search_wrapper">
- <input type="text" placeholder="{{ _('Search for...') }}" id="q" class="q" name="q" tabindex="1" autocomplete="off" size="100" {% if q %}value="{{ q }}"{% endif %}/>
- <input type="submit" value="search" id="search_submit" />
- </div>
- {% set display_tooltip = true %}
- {% include 'legacy/categories.html' %}
-</form>
diff --git a/searx/templates/legacy/stats.html b/searx/templates/legacy/stats.html
deleted file mode 100644
index 372447e..0000000
--- a/searx/templates/legacy/stats.html
+++ /dev/null
@@ -1,22 +0,0 @@
-{% extends "legacy/base.html" %}
-{% block head %} {% endblock %}
-{% block content %}
-<h2>{{ _('Engine stats') }}</h2>
-
-{% for stat_name,stat_category in stats %}
-<div class="left">
- <table>
- <tr colspan="3">
- <th>{{ stat_name }}</th>
- </tr>
- {% for engine in stat_category %}
- <tr>
- <td>{{ engine.name }}</td>
- <td>{{ '%.02f'|format(engine.avg) }}</td>
- <td class="percentage"><div style="width: {{ engine.percentage }}%">&nbsp;</div></td>
- </tr>
- {% endfor %}
- </table>
-</div>
-{% endfor %}
-{% endblock %}
diff --git a/searx/templates/oscar/404.html b/searx/templates/oscar/404.html
index 5a50880..cdb31db 100644
--- a/searx/templates/oscar/404.html
+++ b/searx/templates/oscar/404.html
@@ -3,7 +3,7 @@
<div class="text-center">
<h1>{{ _('Page not found') }}</h1>
{% autoescape false %}
- <p>{{ _('Go to %(search_page)s.', search_page=unicode('<a href="{}">{}</a>').format(url_for('index'), _('search page'))) }}</p>
+ <p>{{ _('Go to %(search_page)s.', search_page='<a href="{}">{}</a>'.format(url_for('index'), _('search page'))) }}</p>
{% endautoescape %}
</div>
{% endblock %}
diff --git a/searx/templates/oscar/advanced.html b/searx/templates/oscar/advanced.html
index bf5f863..0b13d50 100644
--- a/searx/templates/oscar/advanced.html
+++ b/searx/templates/oscar/advanced.html
@@ -1,4 +1,4 @@
-<input type="checkbox" name="advanced_search" id="check-advanced" {% if advanced_search %} checked="checked"{% endif %}>
+<input type="checkbox" name="advanced_search" class="visually-hidden" id="check-advanced" {% if advanced_search %} checked="checked"{% endif %}>
<label for="check-advanced">{{- "" -}}
<span class="glyphicon glyphicon-cog"></span>
{{- _('Advanced settings') -}}
diff --git a/searx/templates/oscar/base.html b/searx/templates/oscar/base.html
index 66a9e60..6134bd7 100644
--- a/searx/templates/oscar/base.html
+++ b/searx/templates/oscar/base.html
@@ -1,16 +1,14 @@
{% from 'oscar/macros.html' import icon %}
<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"{% if rtl %} dir="rtl"{% endif %}>
+<html lang="{{ preferences.get_value('locale') }}" xml:lang="{{ preferences.get_value('locale') }}"{% if rtl %} dir="rtl"{% endif %} class="nojs">
<head>
<meta charset="UTF-8" />
<meta name="description" content="searx - a privacy-respecting, hackable metasearch engine" />
<meta name="keywords" content="searx, search, search engine, metasearch, meta search" />
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="generator" content="searx/{{ searx_version }}">
<meta name="referrer" content="no-referrer">
- <meta name="viewport" content="width=device-width, initial-scale=1 , maximum-scale=1.0, user-scalable=1" />
+ <meta name="viewport" content="width=device-width, initial-scale=1 , maximum-scale=2.0, user-scalable=1" />
{% block meta %}{% endblock %}
-
<title>{% block title %}{% endblock %}{{ instance_name }}</title>
<link rel="stylesheet" href="{{ url_for('static', filename='css/bootstrap.min.css') }}" type="text/css" />
{% if preferences.get_value('oscar-style') -%}
@@ -19,17 +17,16 @@
{{' '}}<link rel="stylesheet" href="{{ url_for('static', filename='css/logicodev.min.css') }}" type="text/css" />
{%- endif %}
- <link rel="stylesheet" href="{{ url_for('static', filename='css/leaflet.min.css') }}" type="text/css" />
+ {% set templates = results|map(attribute='template')|unique|list -%}
+ {%- set load_leaflet = 'map.html' in templates -%}
+ {%- if load_leaflet -%}
+ {{' '}}<link rel="stylesheet" href="{{ url_for('static', filename='css/leaflet.min.css') }}" type="text/css" />
+ {%- endif %}
+
{%- for css in styles %}
<link rel="stylesheet" href="{{ url_for('static', filename=css) }}" type="text/css" />
{% endfor %}
- <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
- <!--[if lt IE 9]>
- <script src="{{ url_for('static', filename='js/html5shiv.min.js') }}"></script>
- <script src="{{ url_for('static', filename='js/respond.min.js') }}"></script>
- <![endif]-->
-
<link rel="shortcut icon" href="{{ url_for('static', filename='img/favicon.png') }}" />
{% block styles %}
@@ -37,17 +34,17 @@
{% block head %}
{% endblock %}
- <link title="{{ instance_name }}" type="application/opensearchdescription+xml" rel="search" href="{{ url_for('opensearch') }}"/>
+ <link title="{{ instance_name }}" type="application/opensearchdescription+xml" rel="search" href="{{ opensearch_url }}"/>
<noscript>
<style type="text/css">
.tab-content > .active_if_nojs, .active_if_nojs {display: block !important; visibility: visible !important;}
.margin_top_if_nojs {margin-top: 20px;}
- .hide_if_nojs {display: none !important;overflow:none !important;}
+ .hide_if_nojs {display: none !important;overflow: hidden !important;}
.disabled_if_nojs {pointer-events: none; cursor: default; text-decoration: line-through;}
</style>
</noscript>
</head>
-<body>
+<body class="{{ endpoint }}_endpoint" >
{% include 'oscar/navbar.html' %}
<div class="container">
@@ -85,22 +82,24 @@
{% endblock %}
<p class="text-muted">
<small>
- {{ _('Powered by') }} <a href="https://asciimoo.github.io/searx/">searx</a> - {{ searx_version }} - {{ _('a privacy-respecting, hackable metasearch engine') }}<br/>
- <a href="https://github.com/asciimoo/searx">{{ _('Source code') }}</a> |
- <a href="https://github.com/asciimoo/searx/issues">{{ _('Issue tracker') }}</a> |
- <a href="https://github.com/asciimoo/searx/wiki/Searx-instances">{{ _('Public instances') }}</a>
+ {{ _('Powered by') }} <a href="{{ brand.DOCS_URL }}">searx</a> - {{ searx_version }} - {{ _('a privacy-respecting, hackable metasearch engine') }}<br/>
+ <a href="{{ brand.GIT_URL }}">{{ _('Source code') }}</a> |
+ <a href="{{ brand.ISSUE_URL }}">{{ _('Issue tracker') }}</a> |
+ <a href="{{ brand.PUBLIC_INSTANCES }}">{{ _('Public instances') }}</a>{% if brand.CONTACT_URL %} |
+ <a href="{{ brand.CONTACT_URL }}">{{ _('Contact instance maintainer') }}</a>{% endif %}
</small>
</p>
</div>
</div>
- <script src="{{ url_for('static', filename='js/jquery-1.11.1.min.js') }}"></script>
+ <script src="{{ url_for('static', filename='js/jquery.min.js') }}"></script>
<script src="{{ url_for('static', filename='js/bootstrap.min.js') }}"></script>
- {% if autocomplete %} <script src="{{ url_for('static', filename='js/typeahead.bundle.min.js') }}"></script>{% endif %}
+ {% if load_leaflet %}{{" "}}<script src="{{ url_for('static', filename='js/leaflet.js') }}"></script>{{ "\n" }}{% endif %}
+ {% if autocomplete %}{{" "}}<script src="{{ url_for('static', filename='js/typeahead.bundle.min.js') }}"></script>{{ "\n" }}{% endif %}
- <script src="{{ url_for('static', filename='js/require-2.1.15.min.js') }}"></script>
<script src="{{ url_for('static', filename='js/searx.min.js') }}"
data-method="{{ method or 'POST' }}"
- data-autocompleter="{% if autocomplete %}true{% else %}false{% endif %}"></script>
+ data-autocompleter="{% if autocomplete %}true{% else %}false{% endif %}"
+ data-translations="{{ translations }}"></script>
{% for script in scripts %}
{{""}}<script src="{{ url_for('static', filename=script) }}"></script>
{% endfor %}
diff --git a/searx/templates/oscar/categories.html b/searx/templates/oscar/categories.html
index a5c5f61..afb3893 100644
--- a/searx/templates/oscar/categories.html
+++ b/searx/templates/oscar/categories.html
@@ -1,13 +1,17 @@
<div id="categories">
{%- if rtl -%}
{% for category in categories | reverse -%}
+ <a>
<input class="hidden" type="checkbox" id="checkbox_{{ category|replace(' ', '_') }}" name="category_{{ category }}" {% if category in selected_categories %}checked="checked"{% endif %} />{{- '' -}}
<label for="checkbox_{{ category|replace(' ', '_') }}">{{ _(category) }}</label>
+ </a>
{%- endfor %}
{%- else -%}
{% for category in categories -%}
+ <a>
<input class="hidden" type="checkbox" id="checkbox_{{ category|replace(' ', '_') }}" name="category_{{ category }}" {% if category in selected_categories %}checked="checked"{% endif %} />{{- '' -}}
<label for="checkbox_{{ category|replace(' ', '_') }}">{{ _(category) }}</label>
+ </a>
{%- endfor %}
{%- endif -%}
</div>
diff --git a/searx/templates/oscar/index.html b/searx/templates/oscar/index.html
index b941f5f..fd8625d 100644
--- a/searx/templates/oscar/index.html
+++ b/searx/templates/oscar/index.html
@@ -1,17 +1,16 @@
{% extends "oscar/base.html" %}
{% block content %}
<div class="container-fluid">
- <div class="row">
+ <div class="row">{{- "" -}}
<div class="text-center col-sm-12 col-md-12">
- {% if cookies['oscar-style'] == 'pointhi' %}
+ {%- if cookies['oscar-style'] == 'pointhi' -%}
<h1 class="text-hide center-block"><img class="center-block img-responsive" src="{{ url_for('static', filename='img/searx_logo.png') }}" alt="searx logo"/>searx</h1>
- {% else %}
- <h1 class="text-hide center-block" id="main-logo">
- <img class="center-block img-responsive" src="{{ url_for('static', filename='img/logo_searx_a.png') }}" alt="searx logo" />
- searx
- </h1>
- {% endif %}
- </div>
+ {%- else -%}
+ <div class="text-hide center-block" id="main-logo">{{- "" -}}
+ <img class="center-block img-responsive" src="{{ url_for('static', filename='img/logo_searx_a.png') }}" alt="searx logo" />searx{{- "" -}}
+ </div>
+ {%- endif -%}
+ </div>{{- "" -}}
</div>
<div class="row">
<div class="text-center col-sm-12 col-md-12">
diff --git a/searx/templates/oscar/infobox.html b/searx/templates/oscar/infobox.html
index 9802f11..8a12b80 100644
--- a/searx/templates/oscar/infobox.html
+++ b/searx/templates/oscar/infobox.html
@@ -1,10 +1,19 @@
{% from 'oscar/macros.html' import result_link with context %}
<div class="panel panel-default infobox">
<div class="panel-heading">{{- "" -}}
- <h4 class="panel-title infobox_part"><bdi>{{ infobox.infobox }}</bdi></h4>{{- "" -}}
+ <div class="infobox_part">
+ <div class="{% if not rtl %}pull-right{% endif %}">
+ {% for engine in infobox.engines %}
+ <span class="label label-default">{{ engine }}</span>
+ {% endfor %}
+ </div>
+ <h4 class="panel-title"><bdi>{{ infobox.infobox }}</bdi></h4>{{- "" -}}
+ {% for u in infobox.urls %}{% if u.official %} <a class="header_url" href="{{ u.url }}">{{ u.url }}</a>{% endif %}{% endfor %}
+ </div>
</div>
- <div class="panel-body">
- {% if infobox.img_src %}<img class="img-responsive center-block infobox_part" src="{{ image_proxify(infobox.img_src) }}" alt="{{ infobox.infobox }}" />{% endif %}
+ <input type="checkbox" class="infobox_checkbox" id="expand_infobox_{{ infobox.engine }}" hidden>
+ <div class="panel-body infobox_body">
+ {% if infobox.img_src %}<img class="img-responsive center-block infobox_part" src="{{ image_proxify(infobox.img_src) }}" />{% endif %}
{% if infobox.content %}<bdi><p class="infobox_part">{{ infobox.content | safe }}</p></bdi>{% endif %}
@@ -33,4 +42,8 @@
</div>
{% endif %}
</div>
+ <label for="expand_infobox_{{ infobox.engine }}" class="infobox_toggle panel-footer">
+ <span class="infobox_label_down glyphicon glyphicon-chevron-down"></span>
+ <span class="infobox_label_up glyphicon glyphicon-chevron-up"></span>
+ </label>
</div>
diff --git a/searx/templates/oscar/languages.html b/searx/templates/oscar/languages.html
index 5aff9f9..0846caa 100644
--- a/searx/templates/oscar/languages.html
+++ b/searx/templates/oscar/languages.html
@@ -1,4 +1,6 @@
-<select class="language custom-select form-control" id="language" name="language" accesskey="l">
+{% from 'oscar/macros.html' import custom_select_class %}
+<label class="visually-hidden" for="language">{{ _('Language') }}</label>
+<select class="language form-control {{ custom_select_class(rtl) }}" id="language" name="language" accesskey="l">
<option value="all" {% if current_language == 'all' %}selected="selected"{% endif %}>{{ _('Default language') }}</option>
{%- for lang_id,lang_name,country_name,english_name in language_codes | sort(attribute=1) -%}
<option value="{{ lang_id }}" {% if lang_id == current_language %}selected="selected"{% endif %}>
diff --git a/searx/templates/oscar/macros.html b/searx/templates/oscar/macros.html
index d2d1dc6..06e7d40 100644
--- a/searx/templates/oscar/macros.html
+++ b/searx/templates/oscar/macros.html
@@ -1,6 +1,6 @@
<!-- Draw glyphicon icon from bootstrap-theme -->
-{% macro icon(action) -%}
- <span class="glyphicon glyphicon-{{ action }}"></span>
+{% macro icon(action, alt) -%}
+ <span title="{{ alt }}" class="glyphicon glyphicon-{{ action }}"></span>
{%- endmacro %}
<!-- Draw favicon -->
@@ -8,34 +8,41 @@
<img width="32" height="32" class="favicon" src="{{ url_for('static', filename='themes/oscar/img/icons/' + favicon + '.png') }}" alt="{{ favicon }}" />
{%- endmacro %}
-{%- macro result_link(url, title, classes='') -%}
-<a href="{{ url }}" {% if classes %}class="{{ classes }}" {% endif %}{% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ title }}</a>
+{%- macro result_link(url, title, classes='', id='') -%}
+<a href="{{ url }}" {% if classes %}class="{{ classes }}" {% endif %}{% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}{% if id %} aria-labelledby="result-{{id}}"{%endif%}>{{ title }}</a>
{%- endmacro -%}
<!-- Draw result header -->
-{% macro result_header(result, favicons) -%}
-<h4 class="result_header">{% if result.engine~".png" in favicons %}{{ draw_favicon(result.engine) }} {% endif %}{% if result.url %}{{ result_link(result.url, result.title|safe) }}{% else %}{{ result.title|safe}}{% endif %}</h4>
+{% macro result_header(result, favicons, id) -%}
+<h4 class="result_header" id="result-{{id}}">{% if result.engine~".png" in favicons %}{{ draw_favicon(result.engine) }}{% endif %}{% if result.url %}{{ result_link(result.url, result.title|safe, id=id) }}{% else %}{{ result.title|safe}}{% endif %}</h4>
{%- endmacro %}
<!-- Draw result sub header -->
-{% macro result_sub_header(result) -%}
- {% if result.publishedDate %}<time class="text-muted" datetime="{{ result.pubdate }}" >{{ result.publishedDate }}</time>{% endif %}
- {% if result.magnetlink %}<small> &bull; {{ result_link(result.magnetlink, icon('magnet') + _('magnet link'), "magnetlink") }}</small>{% endif %}
- {% if result.torrentfile %}<small> &bull; {{ result_link(result.torrentfile, icon('download-alt') + _('torrent file'), "torrentfile") }}</small>{% endif %}
+{% macro result_sub_header(result, id) -%}
+ {%- if result.publishedDate %}<time class="text-muted" datetime="{{ result.pubdate }}" >{{ result.publishedDate }}</time>{% endif -%}
+ {%- if result.magnetlink %}<small> &bull; {{ result_link(result.magnetlink, icon('magnet') + _('magnet link'), "magnetlink", id) }}</small>{% endif -%}
+ {%- if result.torrentfile %}<small> &bull; {{ result_link(result.torrentfile, icon('download-alt') + _('torrent file'), "torrentfile", id) }}</small>{% endif -%}
{%- endmacro %}
<!-- Draw result footer -->
-{% macro result_footer(result) -%}
+{% macro result_footer(result, id) -%}
<div class="clearfix"></div>{{- "" -}}
<div class="pull-right">
{%- for engine in result.engines -%}
<span class="label label-default">{{ engine }}</span>
{%- endfor -%}
{%- if result.url -%}
- <small>{{ result_link("https://web.archive.org/web/" + result.url, icon('link') + _('cached'), "text-info") }}</small>
+ {%- if result.cached_url -%}
+ <small>{{ result_link(result.cached_url, icon('link') + _('cached'), "text-info", id) }}</small>
+ {%- elif not result.is_onion -%}
+ <small>{{ result_link("https://web.archive.org/web/" + result.url, icon('link') + _('cached'), "text-info", id) }}</small>
+ {% if archive_today %}
+ <small>{{ result_link("https://archive.today/" + result.url, icon('link') + _('archive'), "text-info", id) }}</small>
+ {% endif %}
+ {%- endif -%}
{%- endif -%}
{%- if proxify -%}
- <small>{{ result_link(proxify(result.url), icon('sort') + _('proxied'), "text-info") }}</small>
+ <small>{{ result_link(proxify(result.url), icon('sort') + _('proxied'), "text-info", id) }}</small>
{%- endif -%}
</div>
{%- if result.pretty_url -%}
@@ -43,65 +50,103 @@
{%- endif -%}
{%- endmacro %}
+<!-- Draw result footer without cache link -->
+{% macro result_footer_nocache(result) -%}
+ <div class="clearfix"></div>{{- "" -}}
+ <div class="pull-right">
+ {%- for engine in result.engines -%}
+ <span class="label label-default">{{ engine }}</span>
+ {%- endfor -%}
+ {%- if proxify -%}
+ <small>{{ result_link(proxify(result.url), icon('sort') + _('proxied'), "text-info") }}</small>
+ {%- endif -%}
+</div>{{- "" -}}
+<div class="external-link">{{ result.pretty_url }}</div>
+{%- endmacro %}
+
<!-- Draw result footer -->
-{% macro result_footer_rtl(result) -%}
- <div class="clearfix"></div>{{- "" -}}
- {% for engine in result.engines -%}
+{% macro result_footer_rtl(result, id) -%}
+ <div class="clearfix"></div>
+ {%- for engine in result.engines -%}
<span class="label label-default">{{ engine }}</span>
- {%- endfor %}
+ {%- endfor -%}
{%- if result.url -%}
- <small>{{ result_link("https://web.archive.org/web/" + result.url, icon('link') + _('cached'), "text-info") }}</small>
+ {%- if result.cached_url -%}
+ <small>{{ result_link(result.cached_url, icon('link') + _('cached'), "text-info", id) }}</small>
+ {%- elif not result.is_onion -%}
+ <small>{{ result_link("https://web.archive.org/web/" + result.url, icon('link') + _('cached'), "text-info", id) }}</small>
+ {% if archive_today %}
+ <small>{{ result_link("https://archive.today/" + result.url, icon('link') + _('archive'), "text-info", id) }}</small>
+ {% endif %}
+ {%- endif -%}
+ {%- endif -%}
+ {%- if proxify -%}
+ <small>{{ result_link(proxify(result.url), icon('sort') + _('proxied'), "text-info", id) }}</small>
{%- endif -%}
- {% if proxify -%}
- <small>{{ result_link(proxify(result.url), icon('sort') + _('proxied'), "text-info") }}</small>
- {%- endif %}
{%- if result.pretty_url -%}
<div class="external-link">{{ result.pretty_url }}</div>
- {%- endif %}
+ {%- endif -%}
+{%- endmacro %}
+
+<!-- Draw result footer without cache link -->
+{% macro result_footer_nocache_rtl(result) -%}
+ <div class="clearfix"></div>
+ {%- for engine in result.engines -%}
+ <span class="label label-default">{{ engine }}</span>
+ {%- endfor -%}
+ {%- if proxify -%}
+ <small>{{ result_link(proxify(result.url), icon('sort') + _('proxied'), "text-info") }}</small>
+ {%- endif -%}
+ <div class="external-link">{{ result.pretty_url }}</div>
{%- endmacro %}
-{% macro preferences_item_header(info, label, rtl) -%}
- {% if rtl %}
- <div class="row form-group">
- <label class="col-sm-3 col-md-2 pull-right">{{ label }}</label>
- <span class="col-sm-5 col-md-6 help-block pull-left">{{ info }}</span>
+{% macro preferences_item_header(info, label, rtl, id) -%}
+ {%- if rtl -%}
+ <div class="row form-group">{{- "" -}}
+ <label class="col-sm-3 col-md-2 pull-right"{% if id %} for="{{id}}"{% endif %}>{{ label }}</label>{{- "" -}}
+ <span class="col-sm-5 col-md-6 help-block pull-left">{{ info }}</span>{{- "" -}}
<div class="col-sm-4 col-md-4">
- {% else %}
- <div class="row form-group">
- <label class="col-sm-3 col-md-2">{{ label }}</label>
+ {%- else -%}
+ <div class="row form-group">{{- "" -}}
+ <label class="col-sm-3 col-md-2"{% if id %} for="{{id}}"{% endif %}>{{ label }}</label>{{- "" -}}
<div class="col-sm-4 col-md-4">
- {% endif %}
+ {%- endif -%}
{%- endmacro %}
{% macro preferences_item_footer(info, label, rtl) -%}
- {% if rtl %}
- </div>
+ {%- if rtl -%}
+ </div>{{- "" -}}
</div>
- {% else %}
+ {%- else -%}
</div>
- <span class="col-sm-5 col-md-6 help-block">{{ info }}</span>
+ <span class="col-sm-5 col-md-6 help-block">{{ info }}</span>{{- "" -}}
</div>
- {% endif %}
+ {%- endif -%}
+{%- endmacro %}
+
+{% macro custom_select_class(rtl) -%}
+custom-select{% if rtl %}-rtl{% endif %}
{%- endmacro %}
{% macro checkbox_toggle(id, blocked) -%}
- <div class="onoffswitch">
- <input type="checkbox" id="{{ id }}" name="{{ id }}"{% if blocked %} checked="checked"{% endif %} class="onoffswitch-checkbox">
- <label class="onoffswitch-label" for="{{ id }}">
- <span class="onoffswitch-inner"></span>
- <span class="onoffswitch-switch"></span>
- </label>
- </div>
+ <div class="onoffswitch">{{- "" -}}
+ <input type="checkbox" id="{{ id }}" name="{{ id }}"{% if blocked %} checked="checked"{% endif %} class="onoffswitch-checkbox">{{- "" -}}
+ <label class="onoffswitch-label" for="{{ id }}">{{- "" -}}
+ <span class="onoffswitch-inner"></span>{{- "" -}}
+ <span class="onoffswitch-switch"></span>{{- "" -}}
+ </label>{{- "" -}}
+ <label class="visually-hidden" for="{{ id }}">{{ _('Allow') }}</label>{{- "" -}}
+ </div>{{- "" -}}
{%- endmacro %}
{% macro support_toggle(supports) -%}
- {% if supports %}
+ {%- if supports -%}
<span class="label label-success">
- {{ _("supported") }}
+ {{- _("supported") -}}
</span>
- {% else %}
+ {%- else -%}
<span class="label label-danger">
- {{ _("not supported") }}
+ {{- _("not supported") -}}
</span>
- {% endif %}
+ {%- endif -%}
{%- endmacro %}
diff --git a/searx/templates/oscar/messages/no_results.html b/searx/templates/oscar/messages/no_results.html
index 16b5984..82bf2f7 100644
--- a/searx/templates/oscar/messages/no_results.html
+++ b/searx/templates/oscar/messages/no_results.html
@@ -7,7 +7,7 @@
{{ engine_name }} ({{ error_type }}){% if not loop.last %}, {% endif %}
{% endfor %}
</p>
- <p><small>{{ _('Please, try again later or find another searx instance.') }}</small></p>
+ <p><small>{{ _('Please, try again later or find another searx instance.') }} (<a href="{{ brand.PUBLIC_INSTANCES }}">{{ _('Public instances') }}</a>)</small></p>
</div>
{% else %}
<div class="alert alert-info fade in" role="alert">
diff --git a/searx/templates/oscar/preferences.html b/searx/templates/oscar/preferences.html
index 1a484dd..45cd12a 100644
--- a/searx/templates/oscar/preferences.html
+++ b/searx/templates/oscar/preferences.html
@@ -1,5 +1,15 @@
-{% from 'oscar/macros.html' import preferences_item_header, preferences_item_header_rtl, preferences_item_footer, preferences_item_footer_rtl, checkbox_toggle, support_toggle %}
+{% from 'oscar/macros.html' import preferences_item_header, preferences_item_header_rtl, preferences_item_footer, preferences_item_footer_rtl, checkbox_toggle, support_toggle, custom_select_class %}
{% extends "oscar/base.html" %}
+{% macro engine_about(search_engine, id) -%}
+{% if search_engine.about is defined %}
+{% set about = search_engine.about %}
+<div class="engine-tooltip" role="tooltip" id="{{ id }}">{{- "" -}}
+ <h5><a href="{{about.website}}" rel="noreferrer">{{about.website}}</a></h5>
+ {%- if about.wikidata_id -%}<p><a href="https://www.wikidata.org/wiki/{{about.wikidata_id}}" rel="noreferrer">wikidata.org/wiki/{{about.wikidata_id}}</a></p>{%- endif -%}
+ {%- if search_engine.enable_http %}<p>{{ icon('exclamation-sign', 'No HTTPS') }}{{ _('No HTTPS')}}</p>{% endif -%}
+</div>
+{%- endif -%}
+{%- endmacro %}
{% block title %}{{ _('preferences') }} - {% endblock %}
{% block content %}
@@ -9,7 +19,7 @@
<form method="post" action="{{ url_for('preferences') }}" id="search_form">
<!-- Nav tabs -->
- <ul class="nav nav-tabs nav-justified hide_if_nojs" role="tablist" style="margin-bottom:20px;">
+ <ul class="nav nav-tabs nav-justified hide_if_nojs" role="tablist">
<li class="active"><a href="#tab_general" role="tab" data-toggle="tab">{{ _('General') }}</a></li>
<li><a href="#tab_engine" role="tab" data-toggle="tab">{{ _('Engines') }}</a></li>
<li><a href="#tab_plugins" role="tab" data-toggle="tab">{{ _('Plugins') }}</a></li>
@@ -25,119 +35,178 @@
<div class="tab-pane active" id="tab_general">
<fieldset>
<div class="container-fluid">
+ {% if 'categories' not in locked_preferences %}
<div class="row form-group">
{% if rtl %}
<div class="col-sm-11 col-md-10">
{% include 'oscar/categories.html' %}
</div>
- <label class="col-sm-3 col-md-2">{{ _('Default categories') }}</label>
+ <label class="col-sm-3 col-md-2" for="categories">{{ _('Default categories') }}</label>
{% else %}
- <label class="col-sm-3 col-md-2">{{ _('Default categories') }}</label>
+ <label class="col-sm-3 col-md-2" for="categories">{{ _('Default categories') }}</label>
<div class="col-sm-11 col-md-10 search-categories">
{% include 'oscar/categories.html' %}
</div>
{% endif %}
</div>
+ {% endif %}
+ {% if 'language' not in locked_preferences %}
{% set language_label = _('Search language') %}
{% set language_info = _('What language do you prefer for search?') %}
- {{ preferences_item_header(language_info, language_label, rtl) }}
+ {{ preferences_item_header(language_info, language_label, rtl, 'language') }}
{% include 'oscar/languages.html' %}
{{ preferences_item_footer(language_info, language_label, rtl) }}
+ {% endif %}
+ {% if 'locale' not in locked_preferences %}
{% set locale_label = _('Interface language') %}
{% set locale_info = _('Change the language of the layout') %}
- {{ preferences_item_header(locale_info, locale_label, rtl) }}
- <select class="form-control" name='locale'>
+ {{ preferences_item_header(locale_info, locale_label, rtl, 'locale') }}
+ <select class="form-control {{ custom_select_class(rtl)}}" name="locale" id="locale">
{% for locale_id,locale_name in locales.items() | sort %}
<option value="{{ locale_id }}" {% if locale_id == current_locale %}selected="selected"{% endif %}>{{ locale_name }}</option>
{% endfor %}
</select>
{{ preferences_item_footer(locale_info, locale_label, rtl) }}
+ {% endif %}
+ {% if 'autocomplete' not in locked_preferences %}
{% set autocomplete_label = _('Autocomplete') %}
{% set autocomplete_info = _('Find stuff as you type') %}
- {{ preferences_item_header(autocomplete_info, autocomplete_label, rtl) }}
- <select class="form-control" name="autocomplete">
+ {{ preferences_item_header(autocomplete_info, autocomplete_label, rtl, 'autocomplete') }}
+ <select class="form-control {{ custom_select_class(rtl) }}" name="autocomplete" id="autocomplete">
<option value=""> - </option>
{% for backend in autocomplete_backends %}
<option value="{{ backend }}" {% if backend == autocomplete %}selected="selected"{% endif %}>{{ backend }}</option>
{% endfor %}
</select>
{{ preferences_item_footer(autocomplete_info, autocomplete_label, rtl) }}
+ {% endif %}
+ {% if 'image_proxy' not in locked_preferences %}
{% set image_proxy_label = _('Image proxy') %}
{% set image_proxy_info = _('Proxying image results through searx') %}
- {{ preferences_item_header(image_proxy_info, image_proxy_label, rtl) }}
- <select class="form-control" name='image_proxy'>
+ {{ preferences_item_header(image_proxy_info, image_proxy_label, rtl, 'image_proxy') }}
+ <select class="form-control {{ custom_select_class(rtl) }}" name="image_proxy" id="image_proxy">
<option value="1" {% if image_proxy %}selected="selected"{% endif %}>{{ _('Enabled') }}</option>
<option value="" {% if not image_proxy %}selected="selected"{% endif %}>{{ _('Disabled')}}</option>
</select>
{{ preferences_item_footer(image_proxy_info, image_proxy_label, rtl) }}
+ {% endif %}
+ {% if 'method' not in locked_preferences %}
{% set method_label = _('Method') %}
{% set method_info = _('Change how forms are submited, <a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods" rel="external">learn more about request methods</a>') %}
- {{ preferences_item_header(method_info, method_label, rtl) }}
- <select class="form-control" name='method'>
+ {{ preferences_item_header(method_info, method_label, rtl, 'method') }}
+ <select class="form-control {{ custom_select_class(rtl) }}" name="method" id="method">
<option value="POST" {% if method == 'POST' %}selected="selected"{% endif %}>POST</option>
<option value="GET" {% if method == 'GET' %}selected="selected"{% endif %}>GET</option>
</select>
{{ preferences_item_footer(method_info, method_label, rtl) }}
+ {% endif %}
+ {% if 'safesearch' not in locked_preferences %}
{% set safesearch_label = _('SafeSearch') %}
{% set safesearch_info = _('Filter content') %}
- {{ preferences_item_header(safesearch_info, safesearch_label, rtl) }}
- <select class="form-control" name='safesearch'>
+ {{ preferences_item_header(safesearch_info, safesearch_label, rtl, 'safesearch') }}
+ <select class="form-control {{ custom_select_class(rtl) }}" name="safesearch" id="safesearch">
<option value="2" {% if safesearch == '2' %}selected="selected"{% endif %}>{{ _('Strict') }}</option>
<option value="1" {% if safesearch == '1' %}selected="selected"{% endif %}>{{ _('Moderate') }}</option>
<option value="0" {% if safesearch == '0' %}selected="selected"{% endif %}>{{ _('None') }}</option>
</select>
{{ preferences_item_footer(safesearch_info, safesearch_label, rtl) }}
+ {% endif %}
+ {% if 'theme' not in locked_preferences %}
{% set theme_label = _('Themes') %}
{% set theme_info = _('Change searx layout') %}
- {{ preferences_item_header(theme_info, theme_label, rtl) }}
- <select class="form-control" name="theme">
+ {{ preferences_item_header(theme_info, theme_label, rtl, 'theme') }}
+ <select class="form-control {{ custom_select_class(rtl) }}" name="theme" id="theme">
{% for name in themes %}
<option value="{{ name }}" {% if name == theme %}selected="selected"{% endif %}>{{ name }}</option>
{% endfor %}
</select>
{{ preferences_item_footer(theme_info, theme_label, rtl) }}
+ {% endif %}
- {{ preferences_item_header(_('Choose style for this theme'), _('Style'), rtl) }}
- <select class="form-control" name='oscar-style'>
+ {% if 'oscar-style' not in locked_preferences %}
+ {{ preferences_item_header(_('Choose style for this theme'), _('Style'), rtl, 'oscar_style') }}
+ <select class="form-control {{ custom_select_class(rtl) }}" name="oscar-style" id="oscar_style">
<option value="logicodev" >Logicodev</option>
<option value="pointhi" {% if preferences.get_value('oscar-style') == 'pointhi' %}selected="selected"{% endif %}>Pointhi</option>
<option value="logicodev-dark" {% if preferences.get_value('oscar-style') == 'logicodev-dark' %}selected="selected"{% endif %}>Logicodev dark</option>
</select>
{{ preferences_item_footer(_('Choose style for this theme'), _('Style'), rtl) }}
+ {% endif %}
+ {% if 'results_on_new_tab' not in locked_preferences %}
{% set label = _('Results on new tabs') %}
{% set info = _('Open result links on new browser tabs') %}
- {{ preferences_item_header(info, label, rtl) }}
- <select class="form-control" name='results_on_new_tab'>
+ {{ preferences_item_header(info, label, rtl, 'results_on_new_tab') }}
+ <select class="form-control {{ custom_select_class(rtl) }}" name="results_on_new_tab" id="results_on_new_tab">
<option value="1" {% if results_on_new_tab %}selected="selected"{% endif %}>{{ _('On') }}</option>
<option value="0" {% if not results_on_new_tab %}selected="selected"{% endif %}>{{ _('Off')}}</option>
</select>
{{ preferences_item_footer(info, label, rtl) }}
+ {% endif %}
+
+ {% if 'autofocus' not in locked_preferences %}
+ {% set label = _('Autofocus search field') %}
+ {% set info = _('Turn off if you use your keyboard to scroll') %}
+ {{ preferences_item_header(info, label, rtl, 'autofocus') }}
+ <select class="form-control {{ custom_select_class(rtl) }}" name="autofocus" id="autofocus">
+ <option value="1" {% if autofocus %}selected="selected"{% endif %}>{{ _('On') }}</option>
+ <option value="0" {% if not autofocus %}selected="selected"{% endif %}>{{ _('Off')}}</option>
+ </select>
+ {{ preferences_item_footer(info, label, rtl) }}
+ {% endif %}
+ {% if 'archive_today' not in locked_preferences %}
+ {% set label = _('Show archive.today links') %}
+ {% set info = _('Alternative link cache service') %}
+ {{ preferences_item_header(info, label, rtl, 'archive_today') }}
+ <select class="form-control {{ custom_select_class(rtl) }}" name="archive_today" id="archive_today">
+ <option value="1" {% if archive_today %}selected="selected"{% endif %}>{{ _('On') }}</option>
+ <option value="0" {% if not archive_today %}selected="selected"{% endif %}>{{ _('Off')}}</option>
+ </select>
+ {{ preferences_item_footer(info, label, rtl) }}
+ {% endif %}
+
+ {% set label = _('Show advanced settings') %}
+ {% set info = _('Show advanced settings panel in the home page by default') %}
+ {{ preferences_item_header(info, label, rtl, 'advanced_search') }}
+ <select class="form-control {{ custom_select_class(rtl) }}" name="advanced_search" id="advanced_search">
+ <option value="1" {% if preferences.get_value('advanced_search')%}selected="selected"{% endif %}>{{ _('On') }}</option>
+ <option value="0" {% if not preferences.get_value('advanced_search')%}selected="selected"{% endif %}>{{ _('Off')}}</option>
+ </select>
+ {{ preferences_item_footer(info, label, rtl) }}
+
+ {% if 'doi_resolver' not in locked_preferences %}
{% set label = _('Open Access DOI resolver') %}
{% set info = _('Redirect to open-access versions of publications when available (plugin required)') %}
- {{ preferences_item_header(info, label, rtl) }}
- <select class="form-control" id='doi_resolver' name='doi_resolver'>
+ {{ preferences_item_header(info, label, rtl, 'doi_resolver') }}
+ <select class="form-control {{ custom_select_class(rtl) }}" name="doi_resolver" id="doi_resolver">
{% for doi_resolver_name,doi_resolver_url in doi_resolvers.items() %}
- <option value="{{ doi_resolver_name }}" {% if doi_resolver_name == current_doi_resolver %}selected="selected"{% endif %}>
+ <option value="{{ doi_resolver_name }}" {% if doi_resolver_url == current_doi_resolver %}selected="selected"{% endif %}>
{{ doi_resolver_name }} - {{ doi_resolver_url }}
</option>
{% endfor %}
</select>
{{ preferences_item_footer(info, label, rtl) }}
+ {% endif %}
+
+ {% set label = _('Engine tokens') %}
+ {% set info = _('Access tokens for private engines') %}
+ {{ preferences_item_header(info, label, rtl, 'tokens') }}
+ <input class="form-control" id="tokens" name="tokens" value='{{ preferences.tokens.get_value() }}'/>
+ {{ preferences_item_footer(info, label, rtl) }}
</div>
</fieldset>
</div>
<div class="tab-pane active_if_nojs" id="tab_engine">
<!-- Nav tabs -->
- <ul class="nav nav-tabs nav-justified hide_if_nojs" role="tablist" style="margin-bottom:20px;">
+ <ul class="nav nav-tabs nav-justified hide_if_nojs" role="tablist">
{% for categ in all_categories %}
<li{% if loop.first %} class="active"{% endif %}><a href="#tab_engine_{{ categ|replace(' ', '_') }}" role="tab" data-toggle="tab">{{ _(categ) }}</a></li>
{% endfor %}
@@ -149,6 +218,14 @@
<!-- Tab panes -->
<div class="tab-content">
+
+ <div class="hide_if_nojs">
+ <p class="text-{% if rtl %}left{% else %}right{% endif %}">
+ <button type="button" class="btn btn-default btn-success" id="allow-all-engines">{{ _("Allow all") }}</button>
+ <button type="button" class="btn btn-default btn-danger" id="disable-all-engines">{{ _("Disable all") }}</button>
+ </p>
+ </div>
+
{% for categ in all_categories %}
<noscript><label>{{ _(categ) }}</label>
</noscript>
@@ -159,50 +236,54 @@
<table class="table table-hover table-condensed table-striped">
<tr>
{% if not rtl %}
- <th>{{ _("Allow") }}</th>
- <th>{{ _("Engine name") }}</th>
- <th>{{ _("Shortcut") }}</th>
- <th>{{ _("Selected language") }}</th>
- <th>{{ _("SafeSearch") }}</th>
- <th>{{ _("Time range") }}</th>
- <th>{{ _("Avg. time") }}</th>
- <th>{{ _("Max time") }}</th>
+ <th scope="col">{{ _("Allow") }}</th>
+ <th scope="col">{{ _("Engine name") }}</th>
+ <th scope="col">{{ _("Shortcut") }}</th>
+ <th scope="col">{{ _("Selected language") }}</th>
+ <th scope="col">{{ _("SafeSearch") }}</th>
+ <th scope="col">{{ _("Time range") }}</th>
+ <th scope="col">{{ _("Avg. time") }}</th>
+ <th scope="col">{{ _("Max time") }}</th>
{% else %}
- <th>{{ _("Max time") }}</th>
- <th>{{ _("Avg. time") }}</th>
- <th>{{ _("Time range") }}</th>
- <th>{{ _("SafeSearch") }}</th>
- <th>{{ _("Selected language") }}</th>
- <th>{{ _("Shortcut") }}</th>
- <th>{{ _("Engine name") }}</th>
- <th>{{ _("Allow") }}</th>
+ <th scope="col" class="text-right">{{ _("Max time") }}</th>
+ <th scope="col" class="text-right">{{ _("Avg. time") }}</th>
+ <th scope="col" class="text-right">{{ _("Time range") }}</th>
+ <th scope="col" class="text-right">{{ _("SafeSearch") }}</th>
+ <th scope="col" class="text-right">{{ _("Selected language") }}</th>
+ <th scope="col" class="text-right">{{ _("Shortcut") }}</th>
+ <th scope="col" class="text-right">{{ _("Engine name") }}</th>
+ <th scope="col" class="text-right">{{ _("Allow") }}</th>
{% endif %}
</tr>
{% for search_engine in engines_by_category[categ] %}
{% if not search_engine.private %}
<tr>
{% if not rtl %}
- <td class="onoff-checkbox">
- {{ checkbox_toggle('engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_'), (search_engine.name, categ) in disabled_engines) }}
- </td>
- <th>{{ search_engine.name }}</th>
- <td class="name">{{ shortcuts[search_engine.name] }}</td>
+ <td class="onoff-checkbox">
+ {{- checkbox_toggle('engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_'), (search_engine.name, categ) in disabled_engines) -}}
+ </td>
+ <th scope="row"><span aria-labelledby="{{ 'tooltip_' + categ + '_' + search_engine.name }}">
+ {%- if search_engine.enable_http %}{{ icon('exclamation-sign', 'No HTTPS') }}{% endif -%}
+ {{- search_engine.name -}}</span>
+ {{- engine_about(search_engine, 'tooltip_' + categ + '_' + search_engine.name) -}}
+ </th>
+ <td class="name">{{ shortcuts[search_engine.name] }}</td>
<td>{{ support_toggle(stats[search_engine.name].supports_selected_language) }}</td>
<td>{{ support_toggle(search_engine.safesearch==True) }}</td>
<td>{{ support_toggle(search_engine.time_range_support==True) }}</td>
- <td class="{{ 'danger' if stats[search_engine.name]['warn_time'] else '' }}">{{ 'N/A' if stats[search_engine.name].time==None else stats[search_engine.name].time }}</td>
- <td class="{{ 'danger' if stats[search_engine.name]['warn_timeout'] else '' }}">{{ search_engine.timeout }}</td>
- {% else %}
- <td class="{{ 'danger' if stats[search_engine.name]['warn_timeout'] else '' }}">{{ search_engine.timeout }}</td>
- <td class="{{ 'danger' if stats[search_engine.name]['warn_time'] else '' }}">{{ 'N/A' if stats[search_engine.name].time==None else stats[search_engine.name].time }}</td>
+ <td class="{{ 'danger' if stats[search_engine.name]['warn_time'] else '' }}">{% if stats[search_engine.name]['warn_time'] %}{{ icon('exclamation-sign')}} {% endif %}{{ 'N/A' if stats[search_engine.name].time==None else stats[search_engine.name].time }}</td>
+ <td class="{{ 'danger' if stats[search_engine.name]['warn_timeout'] else '' }}">{% if stats[search_engine.name]['warn_timeout'] %}{{ icon('exclamation-sign') }} {% endif %}{{ search_engine.timeout }}</td>
+ {% else %}
+ <td class="{{ 'danger' if stats[search_engine.name]['warn_timeout'] else '' }}">{{ search_engine.timeout }}{% if stats[search_engine.name]['warn_time'] %} {{ icon('exclamation-sign')}}{% endif %}</td>
+ <td class="{{ 'danger' if stats[search_engine.name]['warn_time'] else '' }}">{{ 'N/A' if stats[search_engine.name].time==None else stats[search_engine.name].time }}{% if stats[search_engine.name]['warn_time'] %} {{ icon('exclamation-sign')}}{% endif %}</td>
<td>{{ support_toggle(search_engine.time_range_support==True) }}</td>
<td>{{ support_toggle(search_engine.safesearch==True) }}</td>
<td>{{ support_toggle(stats[search_engine.name].supports_selected_language) }}</td>
<td>{{ shortcuts[search_engine.name] }}</td>
- <th>{{ search_engine.name }}</th>
- <td class="onoff-checkbox">
+ <th scope="row"><span>{% if search_engine.enable_http %}{{ icon('exclamation-sign', 'No HTTPS') }}{% endif %}{{ search_engine.name }}</span>{{ engine_about(search_engine) }}</th>
+ <td class="onoff-checkbox">
{{ checkbox_toggle('engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_'), (search_engine.name, categ) in disabled_engines) }}
- </td>
+ </td>
{% endif %}
</tr>
{% endif %}
@@ -222,12 +303,13 @@
<fieldset>
<div class="container-fluid">
{% for plugin in plugins %}
+ {% if plugin.preference_section != 'onions' %}
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">{{ _(plugin.name) }}</h3>
</div>
<div class="panel-body">
- <div class="col-xs-6 col-sm-4 col-md-6">{{ _(plugin.description) }}</div>
+ <div class="col-xs-6 col-sm-4 col-md-6"><label for="{{'plugin_' + plugin.id}}">{{ _(plugin.description) }}</label></div>
<div class="col-xs-6 col-sm-4 col-md-6">
<div class="onoff-checkbox">
{{ checkbox_toggle('plugin_' + plugin.id, plugin.id not in allowed_plugins) }}
@@ -235,6 +317,7 @@
</div>
</div>
</div>
+ {% endif %}
{% endfor %}
</div>
</fieldset>
@@ -245,23 +328,23 @@
<noscript>
<h3>{{ _('Answerers') }}</h3>
</noscript>
- <p class="text-muted" style="margin:20px 0;">
+ <p class="text-muted">
{{ _('This is the list of searx\'s instant answering modules.') }}
</p>
<table class="table table-striped">
<tr>
- <th class="text-muted">{{ _('Name') }}</th>
- <th class="text-muted">{{ _('Keywords') }}</th>
- <th class="text-muted">{{ _('Description') }}</th>
- <th class="text-muted">{{ _('Examples') }}</th>
+ <th{% if rtl %} class="text-right"{% endif %}>{{ _('Name') }}</th>
+ <th{% if rtl %} class="text-right"{% endif %}>{{ _('Keywords') }}</th>
+ <th{% if rtl %} class="text-right"{% endif %}>{{ _('Description') }}</th>
+ <th{% if rtl %} class="text-right"{% endif %}>{{ _('Examples') }}</th>
</tr>
{% for answerer in answerers %}
<tr>
- <td class="text-muted">{{ answerer.info.name }}</td>
- <td class="text-muted">{{ answerer.keywords|join(', ') }}</td>
- <td class="text-muted">{{ answerer.info.description }}</td>
- <td class="text-muted">{{ answerer.info.examples|join(', ') }}</td>
+ <td>{{ answerer.info.name }}</td>
+ <td>{{ answerer.keywords|join(', ') }}</td>
+ <td>{{ answerer.info.description }}</td>
+ <td>{{ answerer.info.examples|join(', ') }}</td>
</tr>
{% endfor %}
</table>
@@ -272,20 +355,20 @@
<noscript>
<h3>{{ _('Cookies') }}</h3>
</noscript>
- <p class="text-muted" style="margin:20px 0;">
+ <p class="text-muted">
{{ _('This is the list of cookies and their values searx is storing on your computer.') }}<br />
{{ _('With that list, you can assess searx transparency.') }}<br />
</p>
{% if cookies %}
<table class="table table-striped">
<tr>
- <th class="text-muted" style="padding-right:40px;">{{ _('Cookie name') }}</th>
- <th class="text-muted">{{ _('Value') }}</th>
+ <th class="text-muted{% if rtl %} text-right{% endif %}">{{ _('Cookie name') }}</th>
+ <th class="text-muted{% if rtl %} text-right{% endif %}">{{ _('Value') }}</th>
</tr>
{% for cookie in cookies %}
<tr>
- <td class="text-muted" style="padding-right:40px;">{{ cookie }}</td>
+ <td class="text-muted">{{ cookie }}</td>
<td class="text-muted">{{ cookies[cookie] }}</td>
</tr>
{% endfor %}
@@ -295,17 +378,23 @@
{% endif %}
</div>
</div>
- <p class="text-muted" style="margin:20px 0;">{{ _('These settings are stored in your cookies, this allows us not to store this data about you.') }}
- <br />
- {{ _("These cookies serve your sole convenience, we don't use these cookies to track you.") }}
+
+ <p class="text-muted">
+ {{ _('These settings are stored in your cookies, this allows us not to store this data about you.') }}
+ {{ _("These cookies serve your sole convenience, we don't use these cookies to track you.") }}
</p>
- <p style="margin:20px 0;">{{ _('Search URL of the currently saved preferences') }} <small class="text-muted">({{ _('Note: specifying custom settings in the search URL can reduce privacy by leaking data to the clicked result sites.') }})</small>:<br/>
- <input readonly="" class="form-control select-all-on-click cursor-text" type="url" value="{{ url_for('index', _external=True) }}?preferences={{ preferences_url_params|e }}{% raw %}&amp;q=%s{% endraw %}">
+
+ <p>
+ {{ _('Search URL of the currently saved preferences') }}
+ <small class="text-muted">({{ _('Note: specifying custom settings in the search URL can reduce privacy by leaking data to the clicked result sites.') }})</small>:
</p>
- <input type="submit" class="btn btn-primary" value="{{ _('save') }}" />
+ <div class="tab-pane">
+ <input readonly="" class="form-control select-all-on-click cursor-text" type="url" value="{{ url_for('index', _external=True) }}?preferences={{ preferences_url_params|e }}{% raw %}&amp;q=%s{% endraw %}">
+ <input type="submit" class="btn btn-primary" value="{{ _('save') }}" />
<a href="{{ url_for('index') }}"><div class="btn btn-default">{{ _('back') }}</div></a>
<a href="{{ url_for('clear_cookies') }}"><div class="btn btn-default">{{ _('Reset defaults') }}</div></a>
+ </div>
</form>
</div>
{% endblock %}
diff --git a/searx/templates/oscar/result_templates/code.html b/searx/templates/oscar/result_templates/code.html
index a1c18a6..c7d93e2 100644
--- a/searx/templates/oscar/result_templates/code.html
+++ b/searx/templates/oscar/result_templates/code.html
@@ -1,11 +1,11 @@
-{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, result_footer_rtl, icon %}
+{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, result_footer_rtl, icon with context%}
{{ result_header(result, favicons) }}
{{ result_sub_header(result) }}
{% if result.content %}<p class="result-content">{{ result.content|safe }}</p>{% endif %}
-{% if result.repository %}<p class="result-content">{{ icon('file') }} <a href="{{ result.repository }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}>{{ result.repository }}</a></p>{% endif %}
+{% if result.repository %}<p class="result-content">{{ icon('file') }} <a href="{{ result.repository }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} aria-labelledby="result-{{loop.index}}">{{ result.repository }}</a></p>{% endif %}
<div dir="ltr">
{{ result.codelines|code_highlighter(result.code_language)|safe }}
diff --git a/searx/templates/oscar/result_templates/default.html b/searx/templates/oscar/result_templates/default.html
index 885cbbf..53cfee5 100644
--- a/searx/templates/oscar/result_templates/default.html
+++ b/searx/templates/oscar/result_templates/default.html
@@ -1,31 +1,31 @@
{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, result_footer_rtl, icon with context %}
-{{- result_header(result, favicons) -}}
-{{- result_sub_header(result) -}}
+{{- result_header(result, favicons, loop.index) -}}
+{{- result_sub_header(result, loop.index) -}}
{%- if result.embedded -%}
- <small> &bull; <a class="text-info btn-collapse collapsed cursor-pointer media-loader disabled_if_nojs" data-toggle="collapse" data-target="#result-media-{{ index }}" data-btn-text-collapsed="{{ _('show media') }}" data-btn-text-not-collapsed="{{ _('hide media') }}">{{ icon('music') }} {{ _('show media') }}</a></small>
+ <small> &bull; <a class="text-info btn-collapse collapsed cursor-pointer media-loader disabled_if_nojs" data-toggle="collapse" data-target="#result-media-{{ index }}" data-btn-text-collapsed="{{ _('show media') }}" data-btn-text-not-collapsed="{{ _('hide media') }}" aria-labelledby="result-{{loop.index}}">{{ icon('music') }} {{ _('show media') }}</a></small>
{%- endif -%}
{%- if result.embedded -%}
<div id="result-media-{{ index }}" class="collapse">
- {{ result.embedded|safe }}
+ {{- result.embedded|safe -}}
</div>
{%- endif -%}
-{%- if result.img_src -%}
-<div class="container-fluid">
- <div class="row">
-<img src="{{ image_proxify(result.img_src) }}" alt="{{ result.title|striptags }}" title="{{ result.title|striptags }}" style="width: auto; max-height: 60px; min-height: 60px;" class="col-xs-2 col-sm-4 col-md-4 result-content">
-{% if result.content %}<p class="result-content col-xs-8 col-sm-8 col-md-8">{{ result.content|safe }}</p>{% endif -%}
- </div>
+{%- if result.img_src or result.thumbnail -%}
+<div class="container-fluid">{{- "" -}}
+ <div class="row">{{- "" -}}
+ <img src="{{ image_proxify(result.img_src or result.thumbnail) }}" title="{{ result.title|striptags }}" style="width: auto; max-height: 60px; min-height: 60px;" class="col-xs-2 col-sm-4 col-md-4 result-content">
+ {%- if result.content %}<p class="result-content col-xs-8 col-sm-8 col-md-8">{{ result.content|safe }}</p>{% endif -%}
+ </div>{{- "" -}}
</div>
{%- else -%}
{%- if result.content %}<p class="result-content">{{ result.content|safe }}</p>{% endif -%}
{%- endif -%}
{%- if rtl -%}
-{{ result_footer_rtl(result) }}
+{{ result_footer_rtl(result, loop.index) }}
{%- else -%}
-{{ result_footer(result) }}
+{{ result_footer(result, loop.index) }}
{%- endif -%}
diff --git a/searx/templates/oscar/result_templates/files.html b/searx/templates/oscar/result_templates/files.html
new file mode 100644
index 0000000..e2fec6f
--- /dev/null
+++ b/searx/templates/oscar/result_templates/files.html
@@ -0,0 +1,55 @@
+{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer_nocache, result_footer_nocache_rtl, icon with context %}
+
+{{- result_header(result, favicons) -}}
+{{- result_sub_header(result) -}}
+
+{%- if result.embedded -%}
+ <small> &bull; <a class="text-info btn-collapse collapsed cursor-pointer media-loader disabled_if_nojs" data-toggle="collapse" data-target="#result-media-{{ index }}" data-btn-text-collapsed="{{ _('show media') }}" data-btn-text-not-collapsed="{{ _('hide media') }}">
+ {%- if result.mtype == 'audio' %}{{ icon('music') -}}
+ {%- elif result.mtype == 'video' %} {{ icon('film') -}}
+ {%- endif %} {{ _('show media') }}</a></small>
+{%- endif -%}
+
+{%- if result.embedded -%}
+<div id="result-media-{{ index }}" class="collapse">
+ {{- result.embedded|safe -}}
+</div>
+{%- endif -%}
+
+{%- if result.abstract %}<p class="result-content result-abstract">{{ result.abstract|safe }}</p>{% endif -%}
+
+{%- if result.img_src -%}
+<div class="container-fluid">
+ <div class="row">
+<img src="{{ image_proxify(result.img_src) }}" alt="{{ result.title|striptags }}" title="{{ result.title|striptags }}" style="width: auto; max-height: 60px; min-height: 60px;" class="col-xs-2 col-sm-4 col-md-4 result-content">
+{%- if result.content %}<p class="result-content col-xs-8 col-sm-8 col-md-8">{{ result.content|safe }}</p>{% endif -%}
+ </div>
+</div>
+{%- else -%}
+{%- if result.content %}<p class="result-content">{{ result.content|safe }}</p>{% endif -%}
+{%- endif -%}
+
+<table class="result-metadata result-content">
+{%- if result.author %}<tr><td>{{ _('Author') }}</td><td>{{ result.author|safe }}</td></tr>{% endif -%}
+
+{%- if result.filename %}<tr><td>{{ _('Filename') }}</td><td>{{ result.filename|safe }}</td></tr>{% endif -%}
+
+{%- if result.size %}<tr><td>{{ _('Filesize') }}</td><td>
+ {%- if result.size < 1024 %}{{ result.size }} {{ _('Bytes') -}}
+ {%- elif result.size < 1024*1024 %}{{ '{0:0.2f}'.format(result.size/1024) }} {{ _('kiB') -}}
+ {%- elif result.size < 1024*1024*1024 %}{{ '{0:0.2f}'.format(result.size/1024/1024) }} {{ _('MiB') -}}
+ {%- elif result.size < 1024*1024*1024*1024 %}{{ '{0:0.2f}'.format(result.size/1024/1024/1024) }} {{ _('GiB') -}}
+ {%- else %}{{ '{0:0.2f}'.format(result.size/1024/1024/1024/1024) }} {{ _('TiB') }}{% endif -%}
+ </td></tr>
+{%- endif -%}
+
+{%- if result.time %}<tr><td>{{ _('Date') }}</td><td>{{ result.time|safe }}</td></tr>{% endif -%}
+
+{%- if result.mtype %}<tr><td>{{ _('Type') }}</td><td>{{ result.mtype|safe }}/{{ result.subtype|safe }}</td></tr>{% endif -%}
+</table>
+
+{%- if rtl -%}
+{{ result_footer_nocache_rtl(result) }}
+{%- else -%}
+{{ result_footer_nocache(result) }}
+{%- endif -%}
diff --git a/searx/templates/oscar/result_templates/images.html b/searx/templates/oscar/result_templates/images.html
index d0a3b7b..96cdd53 100644
--- a/searx/templates/oscar/result_templates/images.html
+++ b/searx/templates/oscar/result_templates/images.html
@@ -1,6 +1,6 @@
-{%- from 'oscar/macros.html' import draw_favicon -%}
+{%- from 'oscar/macros.html' import draw_favicon with context -%}
-<a href="{{ result.img_src }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} data-toggle="modal" data-target="#modal-{{ index }}-{{pageno}}">{{- "" -}}
+<a href="{{ result.img_src }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %} data-toggle="modal" data-target="#modal-{{ index }}-{{pageno}}" id="result-{{loop.index}}">{{- "" -}}
<img src="{% if result.thumbnail_src %}{{ image_proxify(result.thumbnail_src) }}{% else %}{{ image_proxify(result.img_src) }}{% endif %}" alt="{{ result.title|striptags }}" title="{{ result.title|striptags }}" class="img-thumbnail">{{- "" -}}
</a>
<div class="modal fade" id="modal-{{ index }}-{{ pageno }}" tabindex="-1" role="dialog" aria-hidden="true">{{- "" -}}
diff --git a/searx/templates/oscar/result_templates/key-value.html b/searx/templates/oscar/result_templates/key-value.html
index 67c748e..9d75682 100644
--- a/searx/templates/oscar/result_templates/key-value.html
+++ b/searx/templates/oscar/result_templates/key-value.html
@@ -1,12 +1,12 @@
{% from 'oscar/macros.html' import result_footer, result_footer_rtl with context %}
-<div class="panel panel-default">
+<div class="result result-default">
<table class="table table-responsive table-bordered table-condensed">
{% for key, value in result.items() %}
- {% if key in ['engine', 'engines', 'template', 'score', 'category', 'positions'] %}
+ {% if key in ['engine', 'engines', 'template', 'score', 'category', 'positions', 'pretty_url', 'parsed_url'] %}
{% continue %}
{% endif %}
<tr>
- <td><b>{{ key|upper }}</b>: {{ value }}</td>
+ <td><b>{{ key|upper }}</b>: {{ value|truncate }}</td>
</tr>
{% endfor %}
</table>
diff --git a/searx/templates/oscar/result_templates/map.html b/searx/templates/oscar/result_templates/map.html
index 712375d..eb3fccf 100644
--- a/searx/templates/oscar/result_templates/map.html
+++ b/searx/templates/oscar/result_templates/map.html
@@ -1,72 +1,76 @@
{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, result_footer_rtl, icon %}
-{{ result_header(result, favicons) }}
-{{ result_sub_header(result) }}
+{{- result_header(result, favicons, loop.index) -}}
+{{- result_sub_header(result, loop.index) -}}
-{% if (result.latitude and result.longitude) or result.boundingbox %}
- <small> &bull; <a class="text-info btn-collapse collapsed searx_init_map cursor-pointer disabled_if_nojs" data-toggle="collapse" data-target="#result-map-{{ index }}" data-leaflet-target="osm-map-{{ index }}" data-map-lon="{{ result.longitude }}" data-map-lat="{{ result.latitude }}" {% if result.boundingbox %}data-map-boundingbox='{{ result.boundingbox|tojson|safe }}'{% endif %} {% if result.geojson %}data-map-geojson='{{ result.geojson|tojson|safe }}'{% endif %} data-btn-text-collapsed="{{ _('show map') }}" data-btn-text-not-collapsed="{{ _('hide map') }}">{{ icon('globe') }} {{ _('show map') }}</a></small>
-{% endif %}
-
-{% if result.osm and (result.osm.type and result.osm.id) %}
- <small> &bull; <a class="text-info btn-collapse collapsed cursor-pointer searx_overpass_request disabled_if_nojs" data-toggle="collapse" data-target="#result-overpass-{{ index }}" data-osm-type="{{ result.osm.type }}" data-osm-id="{{ result.osm.id }}" data-result-table="result-overpass-table-{{ index }}" data-result-table-loadicon="result-overpass-table-loading-{{ index }}" data-btn-text-collapsed="{{ _('show details') }}" data-btn-text-not-collapsed="{{ _('hide details') }}">{{ icon('map-marker') }} {{ _('show details') }}</a></small>
-{% endif %}
+<div class="container-fluid">
-{# {% if (result.latitude and result.longitude) %}
- <small> &bull; <a class="text-info btn-collapse collapsed cursor-pointer disabled_if_nojs" data-toggle="collapse" data-target="#result-geodata-{{ index }}" data-btn-text-collapsed="{{ _('show geodata') }}" data-btn-text-not-collapsed="{{ _('hide geodata') }}">{{ icon('map-marker') }} {{ _('show geodata') }}</a></small>
-{% endif %} #}
+ <div class="row">
+ {%- if result.img_src -%}<img src="{{ image_proxify(result.img_src) }}" title="{{ result.title|striptags }}" class="img-thumbnail">{%- endif -%}
-<div class="container-fluid">
+ {%- if result.type_icon or result.type -%}
+ <p class="result-content">
+ {%- if result.type_icon -%}
+ <img src="{{ image_proxify(result.type_icon) }}" title="{{ result.type|striptags }}" class="img-type">
+ {%- endif -%}
+ {{ result.type if result.type is not none else '' }}
+ </p>
+ {%- endif -%}
-{% if result.address %}
-<p class="row result-content result-adress col-xs-12 col-sm-5 col-md-4" itemscope itemtype="http://schema.org/PostalAddress">
- {% if result.address.name %}
- <strong itemprop="name">{{ result.address.name }}</strong><br/>
- {% endif %}
- {% if result.address.road %}
- <span itemprop="streetAddress">
- {% if result.address.house_number %}{{ result.address.house_number }}, {% endif %}
- {{ result.address.road }}
- </span><br/>
- {% endif %}
- {% if result.address.locality %}
- <span itemprop="addressLocality">{{ result.address.locality }}</span>
- {% if result.address.postcode %}, <span itemprop="postalCode">{{ result.address.postcode }}</span>{% endif %}
- <br/>
- {% endif %}
- {% if result.address.country %}
- <span itemprop="addressCountry">{{ result.address.country }}</span>
- {% endif %}
-</p>
-{% endif %}
+ {%- if result.content %}<p class="result-content">{{ result.content|safe }}</p>{% endif -%}
-{% if result.osm and (result.osm.type and result.osm.id) %}
- <div class="row result-content collapse col-xs-12 col-sm-7 col-md-8" id="result-overpass-{{ index }}"{% if rtl %} dir="ltr"{% endif %}>
- <div class="text-center" id="result-overpass-table-loading-{{ index }}"><img src="{{ url_for('static', filename='img/loader.gif') }}" alt="Loading ..."/></div>
- <table class="table table-striped table-condensed hidden" id="result-overpass-table-{{ index }}">
- <tr><th>key</th><th>value</th></tr>
+ <table class="result-content result-map-details">
+ {%- if result.address -%}
+ <tr>
+ <th scope="row">
+ {{ result.address_label or _('address') }}
+ </th>
+ <td class="result-content result-adress" itemscope itemtype="http://schema.org/PostalAddress">
+ {%- if result.address.name -%}
+ <strong itemprop="name" class="hidden">{{ result.address.name }}</strong>
+ {%- endif -%}
+ {%- if result.address.road -%}
+ <span itemprop="streetAddress">
+ {%- if result.address.house_number %}{{ result.address.house_number }}, {% endif -%}
+ {{- result.address.road -}}
+ </span><br/>
+ {%- endif -%}
+ {%- if result.address.locality -%}
+ <span itemprop="addressLocality">{{ result.address.locality }}</span>
+ {%- if result.address.postcode %}, <span itemprop="postalCode">{{ result.address.postcode }}</span>{% endif -%}
+ <br/>
+ {%- endif -%}
+ {%- if result.address.country -%}
+ <span itemprop="addressCountry">{{ result.address.country }}</span>
+ {%- endif -%}
+ </td>
+ </tr>
+ {%- endif %}
+ {%- for info in result.data -%}
+ <tr><th scope="row">{{ info.label }}</th><td>{{ info.value|safe }}</td></tr>
+ {%- endfor -%}
+ {%- for link in result.links -%}
+ <tr><th scope="row">{{ link.label }}</th><td><a class="text-info cursor-pointer" href="{{ link.url }}">{{ link.url_label|safe }}</a></td></tr>
+ {%- endfor -%}
</table>
- </div>
-{% endif %}
-{# {% if (result.latitude and result.longitude) %}
- <div class="row collapse col-xs-12 col-sm-5 col-md-4" id="result-geodata-{{ index }}">
- <strong>Longitude:</strong> {{ result.longitude }} <br/>
- <strong>Latitude:</strong> {{ result.latitude }}
- </div>
-{% endif %} #}
+ <p class="result-content">
+ {%- if (result.latitude and result.longitude) or result.boundingbox -%}
+ <span><a class="text-info btn-collapse collapsed searx_init_map cursor-pointer disabled_if_nojs" data-toggle="collapse" data-target="#result-map-{{ index }}" data-leaflet-target="osm-map-{{ index }}" data-map-lon="{{ result.longitude }}" data-map-lat="{{ result.latitude }}" {% if result.boundingbox %}data-map-boundingbox='{{ result.boundingbox|tojson|safe }}'{% endif %} {% if result.geojson %}data-map-geojson='{{ result.geojson|tojson|safe }}'{% endif %} data-btn-text-collapsed="{{ _('show map') }}" data-btn-text-not-collapsed="{{ _('hide map') }}">{{ icon('globe') }} {{ _('show map') }}</a></span>
+ {%- endif -%}
+ </p>
-{% if result.content %}<p class="row result-content col-xs-12 col-sm-12 col-md-12">{{ result.content|safe }}</p>{% endif %}
-
-</div>
+ </div>
-{% if (result.latitude and result.longitude) or result.boundingbox %}
+{%- if (result.latitude and result.longitude) or result.boundingbox -%}
<div class="collapse" id="result-map-{{ index }}">
<div style="height:300px; width:100%; margin: 10px 0;" id="osm-map-{{ index }}"></div>
</div>
-{% endif %}
+{%- endif -%}
-{% if rtl %}
-{{ result_footer_rtl(result) }}
+</div>
+{%- if rtl -%}
+{{- result_footer_rtl(result, loop.index) -}}
{% else %}
-{{ result_footer(result) }}
-{% endif %}
+{{- result_footer(result, loop.index) -}}
+{%- endif -%}
diff --git a/searx/templates/oscar/result_templates/products.html b/searx/templates/oscar/result_templates/products.html
new file mode 100644
index 0000000..149e3c9
--- /dev/null
+++ b/searx/templates/oscar/result_templates/products.html
@@ -0,0 +1,23 @@
+{% from 'oscar/macros.html' import draw_favicon, icon, result_header, result_sub_header, result_footer_rtl, result_footer %}
+
+{{ result_header(result, favicons) }}
+{{ result_sub_header(result) }}
+
+<div class="container-fluid">
+ <div class="row">
+ <a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}><img class="thumbnail col-xs-6 col-sm-3 col-md-3 result-content" src="{{ image_proxify(result.thumbnail) }}" alt="{{ result.title|striptags }} {{ result.engine }}" /></a>
+ <p class="col-xs-12 col-sm-9 col-md-9 result-content">
+ {% if result.price %}<big>{{ result.price|safe }}</big></br>{% endif %}
+ {% if result.shipping %}<small>{{ result.shipping|safe }}</small></br>{% endif %}
+ {% if result.source_country %}<small>{{ result.source_country|safe }}</small></br>{% endif %}
+ {% if result.content %}{{ result.content|safe }}{% endif %}
+ {% if result.has_stock is defined %}<br>{% if result.has_stock %}{{ icon('check', _('Has stock')) }}{% else %}{{ icon('alert', _('Out of stock')) }}{% endif %}{% endif %}
+ </p>
+ </div>
+</div>
+
+{% if rtl %}
+{{ result_footer_rtl(result) }}
+{% else %}
+{{ result_footer(result) }}
+{% endif %}
diff --git a/searx/templates/oscar/result_templates/torrent.html b/searx/templates/oscar/result_templates/torrent.html
index 089367e..9f66715 100644
--- a/searx/templates/oscar/result_templates/torrent.html
+++ b/searx/templates/oscar/result_templates/torrent.html
@@ -1,25 +1,25 @@
{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, result_footer_rtl, icon %}
-{{ result_header(result, favicons) }}
-{{ result_sub_header(result) }}
+{{- result_header(result, favicons, loop.index) -}}
+{{- result_sub_header(result, loop.index) -}}
-{% if result.seed is defined %}<p class="result-content">{{ icon('transfer') }} {{ _('Seeder') }} <span class="badge">{{ result.seed }}</span> &bull; {{ _('Leecher') }} <span class="badge">{{ result.leech }}</span>{% endif %}
-{% if result.filesize %}<br />{{ icon('floppy-disk') }} {{ _('Filesize') }}
+{%- if result.seed is defined %}<p class="result-content">{{ icon('transfer') }} {{ _('Seeder') }} <span class="badge">{{ result.seed }}</span> &bull; {{ _('Leecher') }} <span class="badge">{{ result.leech }}</span>{% endif -%}
+{%- if result.filesize %}<br />{{ icon('floppy-disk') }} {{ _('Filesize') -}}
<span class="badge">
- {% if result.filesize < 1024 %}{{ result.filesize }} {{ _('Bytes') }}
- {% elif result.filesize < 1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024) }} {{ _('kiB') }}
- {% elif result.filesize < 1024*1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024/1024) }} {{ _('MiB') }}
- {% elif result.filesize < 1024*1024*1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024/1024/1024) }} {{ _('GiB') }}
- {% else %}{{ '{0:0.2f}'.format(result.filesize/1024/1024/1024/1024) }} {{ _('TiB') }}{% endif %}
- </span>{% endif %}
-{% if result.files %}<br />{{ icon('file') }} {{ _('Number of Files') }} <span class="badge">{{ result.files }}</span>{% endif %}
+ {%- if result.filesize < 1024 %}{{ result.filesize }} {{ _('Bytes') -}}
+ {%- elif result.filesize < 1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024) }} {{ _('kiB') -}}
+ {%- elif result.filesize < 1024*1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024/1024) }} {{ _('MiB') -}}
+ {%- elif result.filesize < 1024*1024*1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024/1024/1024) }} {{ _('GiB') -}}
+ {%- else %}{{ '{0:0.2f}'.format(result.filesize/1024/1024/1024/1024) }} {{ _('TiB') }}{% endif -%}
+ </span>{% endif -%}
+{%- if result.files %}<br />{{ icon('file') }} {{ _('Number of Files') }} <span class="badge">{{ result.files }}</span>{% endif -%}
-{% if result.content %}<br />{{ result.content|safe }}{% endif %}
+{%- if result.content %}<br />{{ result.content|safe }}{% endif -%}
</p>
-{% if rtl %}
-{{ result_footer_rtl(result) }}
-{% else %}
-{{ result_footer(result) }}
-{% endif %}
+{%- if rtl -%}
+{{ result_footer_rtl(result, loop.index) }}
+{%- else -%}
+{{ result_footer(result, loop.index) }}
+{%- endif -%}
diff --git a/searx/templates/oscar/result_templates/videos.html b/searx/templates/oscar/result_templates/videos.html
index 3c1913d..ad17ffe 100644
--- a/searx/templates/oscar/result_templates/videos.html
+++ b/searx/templates/oscar/result_templates/videos.html
@@ -1,27 +1,29 @@
{% from 'oscar/macros.html' import result_header, result_sub_header, result_footer, result_footer_rtl, icon %}
-{{ result_header(result, favicons) }}
-{{ result_sub_header(result) }}
+{{- result_header(result, favicons, loop.index) -}}
+{{- result_sub_header(result, loop.index) -}}
-{% if result.embedded %}
- <small> &bull; <a class="text-info btn-collapse collapsed cursor-pointer media-loader disabled_if_nojs" data-toggle="collapse" data-target="#result-video-{{ index }}" data-btn-text-collapsed="{{ _('show video') }}" data-btn-text-not-collapsed="{{ _('hide video') }}">{{ icon('film') }} {{ _('show video') }}</a></small>
-{% endif %}
+{%- if result.embedded -%}
+ <small> &bull; <a class="text-info btn-collapse collapsed cursor-pointer media-loader disabled_if_nojs" data-toggle="collapse" data-target="#result-video-{{ index }}" data-btn-text-collapsed="{{ _('show video') }}" data-btn-text-not-collapsed="{{ _('hide video') }}" aria-labelledby="result-{{loop.index}}">{{ icon('film') }} {{ _('show video') }}</a></small>
+{%- endif -%}
-{% if result.embedded %}
+{%- if result.embedded -%}
<div id="result-video-{{ index }}" class="collapse">
- {{ result.embedded|safe }}
+ {{- result.embedded|safe -}}
</div>
-{% endif %}
+{%- endif -%}
-<div class="container-fluid">
- <div class="row">
- <a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}><img class="thumbnail col-xs-6 col-sm-4 col-md-4 result-content" src="{{ image_proxify(result.thumbnail) }}" alt="{{ result.title|striptags }} {{ result.engine }}" /></a>
- {% if result.content %}<p class="col-xs-12 col-sm-8 col-md-8 result-content">{{ result.content|safe }}</p>{% endif %}
- </div>
+<div class="container-fluid">{{- "" -}}
+ <div class="row">{{- "" -}}
+ <a href="{{ result.url }}" {% if results_on_new_tab %}target="_blank" rel="noopener noreferrer"{% else %}rel="noreferrer"{% endif %}><img class="thumbnail col-xs-6 col-sm-4 col-md-4 result-content" src="{{ image_proxify(result.thumbnail) }}" aria-labelledby="result-{{loop.index}}" /></a>
+ {%- if result.author %}<p class="col-xs-12 col-sm-8 col-md-8 result-content"><b>{{ _('Author') }}</b>: {{ result.author }}</p>{% endif -%}
+ {%- if result.length %}<p class="col-xs-12 col-sm-8 col-md-8 result-content"><b>{{ _('Length') }}</b>: {{ result.length }}</p>{% endif -%}
+ {%- if result.content %}<p class="col-xs-12 col-sm-8 col-md-8 result-content">{{ result.content|safe }}</p>{% endif -%}
+ </div>{{- "" -}}
</div>
-{% if rtl %}
-{{ result_footer_rtl(result) }}
-{% else %}
-{{ result_footer(result) }}
-{% endif %}
+{%- if rtl -%}
+{{ result_footer_rtl(result, loop.index) }}
+{%- else -%}
+{{ result_footer(result, loop.index) }}
+{%- endif -%}
diff --git a/searx/templates/oscar/results.html b/searx/templates/oscar/results.html
index 43e3e26..df2d424 100644
--- a/searx/templates/oscar/results.html
+++ b/searx/templates/oscar/results.html
@@ -7,7 +7,14 @@
<input type="hidden" name="language" value="{{ current_language }}" />{{- "" -}}
{% if timeout_limit %}<input type="hidden" name="timeout_limit" value="{{ timeout_limit|e }}" />{% endif -%}
{%- endmacro %}
-{%- macro search_url() %}{{ base_url }}?q={{ q|urlencode }}{% if selected_categories %}&amp;categories={{ selected_categories|join(",") | replace(' ','+') }}{% endif %}{% if pageno > 1 %}&amp;pageno={{ pageno }}{% endif %}{% if time_range %}&amp;time_range={{ time_range }}{% endif %}{% if current_language != 'all' %}&amp;language={{ current_language }}{% endif %}{% endmacro -%}
+{% macro engine_data_form(engine_data) -%}
+ {% for engine_name, kv_data in engine_data.items() %}
+ {% for k, v in kv_data.items() %}
+ <input type="hidden" name="engine_data-{{ engine_name }}-{{ k|e }}" value="{{ v|e }}" />
+ {% endfor %}
+ {% endfor %}
+{%- endmacro %}
+{%- macro search_url() %}{{ url_for('search', _external=True) }}?q={{ q|urlencode }}{% if selected_categories %}&amp;categories={{ selected_categories|join(",") | replace(' ','+') }}{% endif %}{% if pageno > 1 %}&amp;pageno={{ pageno }}{% endif %}{% if time_range %}&amp;time_range={{ time_range }}{% endif %}{% if current_language != 'all' %}&amp;language={{ current_language }}{% endif %}{% endmacro -%}
{% block title %}{{ q|e }} - {% endblock %}
{% block meta %}{{" "}}<link rel="alternate" type="application/rss+xml" title="Searx search: {{ q|e }}" href="{{ search_url() }}&amp;format=rss">{% endblock %}
@@ -42,7 +49,13 @@
</div>
<div class="panel-body">
{% for suggestion in suggestions %}
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" role="navigation" class="form-inline pull-{% if rtl %}right{% else %}left{% endif %} suggestion_item">
+ <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" role="navigation" class="form-inline pull-{% if rtl %}right{% else %}left{% endif %} suggestion_item">
+ {% if current_language != 'all' %}
+ <input type="hidden" name="language" value="{{ current_language }}">
+ {% endif %}
+ {% if time_range %}
+ <input type="hidden" name="time_range" value="{{ time_range }}">
+ {% endif %}
<input type="hidden" name="q" value="{{ suggestion.url }}">
<button type="submit" class="btn btn-default btn-xs">{{ suggestion.title }}</button>
</form>
@@ -51,7 +64,7 @@
</div>
{%- endif %}
- <div class="panel panel-default">
+ <div class="panel panel-default hidden-xs">
<div class="panel-heading">{{- "" -}}
<h4 class="panel-title">{{ _('Links') }}</h4>{{- "" -}}
</div>
@@ -65,13 +78,15 @@
<label>{{ _('Download results') }}</label>
<div class="clearfix"></div>
{% for output_type in ('csv', 'json', 'rss') %}
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" class="form-inline pull-{% if rtl %}right{% else %}left{% endif %} result_download">
+ <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" class="form-inline pull-{% if rtl %}right{% else %}left{% endif %} result_download">
{{- search_form_attrs(pageno) -}}
<input type="hidden" name="format" value="{{ output_type }}">{{- "" -}}
<button type="submit" class="btn btn-default">{{ output_type }}</button>{{- "" -}}
</form>
{% endfor %}
<div class="clearfix"></div>
+ <br /><label><a href="{{ search_url() }}&amp;format=rss">{{ _('RSS subscription') }}</a></label>
+ <div class="clearfix"></div>
</div>
</div>
</div><!-- /#sidebar_results -->
@@ -81,26 +96,38 @@
{% if corrections -%}
<div class="result">
- <span class="result_header text-muted form-inline pull-left suggestion_item">{{ _('Try searching for:') }}</span>
- {% for correction in corrections -%}
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" role="navigation" class="form-inline pull-left suggestion_item">{{- "" -}}
- <input type="hidden" name="q" value="{{ correction.url }}">{{- "" -}}
- <button type="submit" class="btn btn-default btn-xs">{{ correction.title }}</button>{{- "" -}}
- </form>
- {% endfor %}
+ <div class="clearfix">
+ <span class="result_header text-muted form-inline pull-left suggestion_item">{{ _('Try searching for:') }}</span>
+ {% for correction in corrections -%}
+ <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" role="navigation" class="form-inline pull-left suggestion_item">{{- "" -}}
+ {% if current_language != 'all' %}
+ <input type="hidden" name="language" value="{{ current_language }}">
+ {% endif %}
+ {% if time_range %}
+ <input type="hidden" name="time_range" value="{{ time_range }}">
+ {% endif %}
+ <input type="hidden" name="q" value="{{ correction.url }}">{{- "" -}}
+ <button type="submit" class="btn btn-default btn-xs">{{ correction.title }}</button>{{- "" -}}
+ </form>
+ {% endfor %}
+ </div>
</div>
{%- endif %}
{% if answers -%}
- {%- for answer in answers %}
+ {%- for answer in answers.values() %}
<div class="result well">
- <span>{{ answer }}</span>
+ {% if answer.url %}
+ <a href="{{ answer.url }}">{{ answer.answer }}</a>
+ {% else %}
+ <span>{{ answer.answer }}</span>
+ {% endif %}
</div>
{%- endfor %}
{%- endif %}
{% for result in results -%}
- <div class="result {% if result['template'] %}result-{{ result.template|replace('.html', '') }}{% else %}result-default{% endif %}">
+ <div class="result {% if result['template'] %}result-{{ result.template|replace('.html', '') }}{% else %}result-default{% endif %}{% for e in result.engines %} {{ e }}{% endfor %}">
{%- set index = loop.index -%}
{%- if result.template -%}
{% include get_result_template('oscar', result['template']) %}
@@ -120,14 +147,16 @@
{% if rtl %}
<div id="pagination">
<div class="pull-left">{{- "" -}}
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" class="pull-left">
+ <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" class="pull-left">
{{- search_form_attrs(pageno+1) -}}
+ {{- engine_data_form(engine_data) -}}
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-backward"></span> {{ _('next page') }}</button>{{- "" -}}
</form>{{- "" -}}
</div>
<div class="pull-right">{{- "" -}}
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" class="pull-left">
+ <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" class="pull-left">
{{- search_form_attrs(pageno-1) -}}
+ {{- engine_data_form(engine_data) -}}
<button type="submit" class="btn btn-default" {% if pageno == 1 %}disabled{% endif %}><span class="glyphicon glyphicon-forward"></span> {{ _('previous page') }}</button>{{- "" -}}
</form>{{- "" -}}
</div>
@@ -136,14 +165,16 @@
{% else %}
<div id="pagination">
<div class="pull-left">{{- "" -}}
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" class="pull-left">
+ <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" class="pull-left">
{{- search_form_attrs(pageno-1) -}}
+ {{- engine_data_form(engine_data) -}}
<button type="submit" class="btn btn-default" {% if pageno == 1 %}disabled{% endif %}><span class="glyphicon glyphicon-backward"></span> {{ _('previous page') }}</button>{{- "" -}}
</form>{{- "" -}}
</div>
<div class="pull-right">{{- "" -}}
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" class="pull-left">
+ <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" class="pull-left">
{{- search_form_attrs(pageno+1) -}}
+ {{- engine_data_form(engine_data) -}}
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-forward"></span> {{ _('next page') }}</button>{{- "" -}}
</form>{{- "" -}}
</div>
diff --git a/searx/templates/oscar/search.html b/searx/templates/oscar/search.html
index cad9eca..841e48e 100644
--- a/searx/templates/oscar/search.html
+++ b/searx/templates/oscar/search.html
@@ -1,11 +1,12 @@
{% from 'oscar/macros.html' import icon %}
-<form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" id="search_form" role="search">
+<form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" id="search_form" role="search">
<div class="row">
<div class="col-xs-12 col-md-8">
<div class="input-group search-margin">
- <input type="search" name="q" class="form-control" id="q" placeholder="{{ _('Search for...') }}" aria-label="{{ _('Search for...') }}" autocomplete="off" value="{{ q }}" accesskey="s">
+ <input type="search" {% if autofocus %}autofocus{% endif %} name="q" class="form-control" id="q" placeholder="{{ _('Search for...') }}" aria-label="{{ _('Search for...') }}" autocomplete="off" value="{{ q }}" accesskey="s">
<span class="input-group-btn">
<button type="submit" class="btn btn-default" aria-label="{{ _('Start search') }}"><span class="hide_if_nojs">{{ icon('search') }}</span><span class="hidden active_if_nojs">{{ _('Start search') }}</span></button>
+ <button type="button" id="clear_search" class="btn btn-default hide_if_nojs" aria-label="{{ _('Clear search') }}">{{ icon('remove') }}</button>
</span>
</div>
</div>
diff --git a/searx/templates/oscar/search_full.html b/searx/templates/oscar/search_full.html
index 6564631..d398230 100644
--- a/searx/templates/oscar/search_full.html
+++ b/searx/templates/oscar/search_full.html
@@ -1,14 +1,15 @@
{% from 'oscar/macros.html' import icon %}
-<form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" id="search_form" role="search">
+<form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" id="search_form" role="search">
{% if rtl %}
<div class="input-group">
{% else %}
<div class="input-group col-md-8 col-md-offset-2">
{% endif %}
- <input type="search" name="q" class="form-control input-lg autofocus" id="q" placeholder="{{ _('Search for...') }}" aria-label="{{ _('Search for...') }}" autocomplete="off" value="{{ q }}" accesskey="s">
+ <input type="search" autofocus name="q" class="form-control input-lg autofocus" id="q" placeholder="{{ _('Search for...') }}" aria-label="{{ _('Search for...') }}" autocomplete="off" value="{{ q }}" accesskey="s">
<span class="input-group-btn">
<button type="submit" class="btn btn-default input-lg" aria-label="{{ _('Start search') }}"><span class="hide_if_nojs">{{ icon('search') }}</span><span class="hidden active_if_nojs">{{ _('Start search') }}</span></button>
+ <button type="reset" class="btn btn-default input-lg" aria-label="{{ _('Clear search') }}"><span class="hide_if_nojs">{{ icon('remove') }}</span><span class="hidden active_if_nojs">{{ _('Clear') }}</span></button>
</span>
</div>
<div class="col-md-8 col-md-offset-2 advanced">
diff --git a/searx/templates/oscar/time-range.html b/searx/templates/oscar/time-range.html
index fb1c075..6087dd4 100644
--- a/searx/templates/oscar/time-range.html
+++ b/searx/templates/oscar/time-range.html
@@ -1,4 +1,6 @@
-<select name="time_range" id="time-range" class="custom-select form-control" accesskey="t">{{- "" -}}
+{% from 'oscar/macros.html' import custom_select_class %}
+<label class="visually-hidden" for="time-range">{{ _('Time range') }}</label>
+<select name="time_range" id="time-range" class="{{ custom_select_class(rtl) }} form-control" accesskey="t">{{- "" -}}
<option id="time-range-anytime" value="" {{ "selected" if time_range=="" or not time_range else ""}}>
{{- _('Anytime') -}}
</option>{{- "" -}}
diff --git a/searx/templates/pix-art/404.html b/searx/templates/pix-art/404.html
deleted file mode 100644
index 389bb5e..0000000
--- a/searx/templates/pix-art/404.html
+++ /dev/null
@@ -1,9 +0,0 @@
-{% extends "pix-art/base.html" %}
-{% block content %}
-<div class="center">
- <h1>{{ _('Page not found') }}</h1>
- {% autoescape false %}
- <p>{{ _('Go to %(search_page)s.', search_page=unicode('<a href="{}">{}</a>').format(url_for('index'), _('search page'))) }}</p>
- {% endautoescape %}
-</div>
-{% endblock %}
diff --git a/searx/templates/pix-art/about.html b/searx/templates/pix-art/about.html
deleted file mode 100644
index f76a689..0000000
--- a/searx/templates/pix-art/about.html
+++ /dev/null
@@ -1,4 +0,0 @@
-{% extends 'pix-art/base.html' %}
-{% block content %}
-{% include '__common__/about.html' %}
-{% endblock %}
diff --git a/searx/templates/pix-art/base.html b/searx/templates/pix-art/base.html
deleted file mode 100644
index 6af8823..0000000
--- a/searx/templates/pix-art/base.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"{% if rtl %} dir="rtl"{% endif %}>
- <head>
- <meta charset="UTF-8" />
- <meta name="description" content="searx - a privacy-respecting, hackable metasearch engine" />
- <meta name="keywords" content="searx, search, search engine, metasearch, meta search" />
- <meta name="generator" content="searx/{{ searx_version }}">
- <meta name="referrer" content="no-referrer">
- <meta name="viewport" content="width=device-width, maximum-scale=1.0, user-scalable=1" />
- <title>{% block title %}{% endblock %}searx</title>
- <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}" type="text/css" media="screen" />
- <link rel="shortcut icon" href="{{ url_for('static', filename='img/favicon.png') }}?v=2" />
- {% block styles %}
- {% endblock %}
- {% block meta %}{% endblock %}
- {% block head %}
- {% endblock %}
- <script type="text/javascript">
- var favicons = [[]];
- </script>
- </head>
- <body>
- <div id="container">
- {% block content %}
- {% endblock %}
- <script type="text/javascript">
- searx = {};
- </script>
- <script src="{{ url_for('static', filename='js/searx.js') }}" ></script>
- <script type="text/javascript">
- load_images(1);
- </script>
- </div>
- </body>
-</html>
diff --git a/searx/templates/pix-art/index.html b/searx/templates/pix-art/index.html
deleted file mode 100644
index a0c61f9..0000000
--- a/searx/templates/pix-art/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-{% extends "pix-art/base.html" %}
-{% block content %}
-<div class="center">
- <div class="title"><h1><img src="{{ url_for('static', filename='img/searx-pixel.png') }}" alt="searx Logo"/></h1></div>
- {% include 'pix-art/search.html' %}
- <p class="top_margin">
- <a href="{{ url_for('about') }}" class="hmarg">{{ _('about') }}</a>
- <a href="{{ url_for('preferences') }}" class="hmarg">{{ _('preferences') }}</a>
- </p>
-</div>
-{% endblock %}
-
diff --git a/searx/templates/pix-art/preferences.html b/searx/templates/pix-art/preferences.html
deleted file mode 100644
index 05876de..0000000
--- a/searx/templates/pix-art/preferences.html
+++ /dev/null
@@ -1,82 +0,0 @@
-{% extends "legacy/base.html" %}
-{% block head %} {% endblock %}
-{% block content %}
-<div class="row">
- <h2>{{ _('Preferences') }}</h2>
-
- <form method="post" action="{{ url_for('preferences') }}" id="search_form">
- <fieldset>
- <legend>{{ _('Search language') }}</legend>
- <p>
- <select name='language'>
- <option value="all" {% if current_language == 'all' %}selected="selected"{% endif %}>{{ _('Default language') }}</option>
- {% for lang_id,lang_name,country_name,english_name in language_codes | sort(attribute=1) %}
- <option value="{{ lang_id }}" {% if lang_id == current_language %}selected="selected"{% endif %}>{{ lang_name }} {% if country_name %}({{ country_name }}) {% endif %}- {{ lang_id }}</option>
- {% endfor %}
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('Interface language') }}</legend>
- <p>
- <select name='locale'>
- {% for locale_id,locale_name in locales.items() | sort %}
- <option value="{{ locale_id }}" {% if locale_id == current_locale %}selected="selected"{% endif %}>{{ locale_name }}</option>
- {% endfor %}
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('Method') }}</legend>
- <p>
- <select name='method'>
- <option value="POST" {% if method == 'POST' %}selected="selected"{% endif %}>POST</option>
- <option value="GET" {% if method == 'GET' %}selected="selected"{% endif %}>GET</option>
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('Themes') }}</legend>
- <p>
- <select name="theme">
- {% for name in themes %}
- <option value="{{ name }}" {% if name == theme %}selected="selected"{% endif %}>{{ name }}</option>
- {% endfor %}
- </select>
- </p>
- </fieldset>
- <fieldset>
- <legend>{{ _('Currently used search engines') }}</legend>
-
- <table>
- <tr>
- <th>{{ _('Engine name') }}</th>
- <th>{{ _('Allow') }} / {{ _('Block') }}</th>
- </tr>
- {% for categ in all_categories %}
- {% for search_engine in engines_by_category[categ] %}
-
- {% if not search_engine.private %}
- <tr>
- <td>{{ search_engine.name }} ({{ shortcuts[search_engine.name] }})&lrm;</td>
- <td class="engine_checkbox">
- <input type="checkbox" id="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}" name="engine_{{ search_engine.name }}__{{ categ }}"{% if (search_engine.name, categ) in disabled_engines %} checked="checked"{% endif %} />
- <label class="allow" for="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}">{{ _('Allow') }}</label>
- <label class="deny" for="engine_{{ categ|replace(' ', '_') }}_{{ search_engine.name|replace(' ', '_') }}">{{ _('Block') }}</label>
- </td>
- </tr>
- {% endif %}
- {% endfor %}
- {% endfor %}
- </table>
- </fieldset>
- <p class="small_font">{{ _('These settings are stored in your cookies, this allows us not to store this data about you.') }}
- <br />
- {{ _("These cookies serve your sole convenience, we don't use these cookies to track you.") }}
- </p>
-
- <input type="submit" value="{{ _('save') }}" />
- <div class="{% if rtl %}left{% else %}right{% endif %} preferences_back"><a href="{{ url_for('index') }}">{{ _('back') }}</a></div>
- </form>
-</div>
-{% endblock %}
diff --git a/searx/templates/pix-art/result_templates/default.html b/searx/templates/pix-art/result_templates/default.html
deleted file mode 100644
index ada81e5..0000000
--- a/searx/templates/pix-art/result_templates/default.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<a href="{{ result.url }}" title="{{ result.title | striptags }}" rel="noreferrer">
- <canvas id="canvas-{{ pageno }}-{{ index }}" class="icon" width="16" height="16"></canvas>
-</a>
-<script type="text/javascript">
-favicons[{{ pageno }}][{{ index }}] = 'http://{{ result.url | extract_domain }}/favicon.ico';
-</script>
-
diff --git a/searx/templates/pix-art/result_templates/images.html b/searx/templates/pix-art/result_templates/images.html
deleted file mode 100644
index d85f841..0000000
--- a/searx/templates/pix-art/result_templates/images.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<div class="image_result">
- <p>
- <a href="{{ result.img_src }}" rel="noreferrer"><img src="{% if result.thumbnail_src %}{{ image_proxify(result.thumbnail_src) }}{% else %}{{ image_proxify(result.img_src) }}{% endif %}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}" /></a>
- <span class="url"><a href="{{ result.url }}" rel="noreferrer" class="small_font">{{ _('original context') }}</a></span>
- </p>
-</div>
diff --git a/searx/templates/pix-art/results.html b/searx/templates/pix-art/results.html
deleted file mode 100644
index 8999e05..0000000
--- a/searx/templates/pix-art/results.html
+++ /dev/null
@@ -1,32 +0,0 @@
-{% if pageno > 1 %}
- {% for result in results %}
- {% set index = loop.index %}
- {% include 'pix-art/result_templates/default.html' %}
- {% endfor %}
-{% else %}
-{% extends "pix-art/base.html" %}
-{% block title %}{{ q|e }} - {% endblock %}
-{% block meta %}{% endblock %}
-{% block content %}
-<div id="logo"><a href="./"><img src="{{ url_for('static', filename='img/searx-pixel-small.png') }}" alt="searx Logo"/></a></div>
-<div class="preferences_container right"><a href="{{ url_for('preferences') }}" id="preferences"><span>preferences</span></a></div>
-<div class="small search center">
- {% include 'pix-art/search.html' %}
-</div>
-<script type="text/javascript">
- favicons[{{ pageno }}] = [];
-</script>
-<div id="results">
- <span id="results_list">
- {% for result in results %}
- {% set index = loop.index %}
- {% include 'pix-art/result_templates/default.html' %}
- {% endfor %}
- </span>
- <div id="pagination">
- <br />
- <input type="button" onclick="load_more('{{ q|e }}', {{ pageno+1 }})" id="load_more" value="{{ _('Load more...') }}" />
- </div>
-</div>
-{% endblock %}
-{% endif %}
diff --git a/searx/templates/pix-art/search.html b/searx/templates/pix-art/search.html
deleted file mode 100644
index 4d129ec..0000000
--- a/searx/templates/pix-art/search.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" id="search_form">
- <div id="search_wrapper">
- <input type="text" placeholder="{{ _('Search for...') }}" id="q" class="q" name="q" tabindex="1" size="100" {% if q %}value="{{ q }}"{% endif %}/>
- <input type="submit" value="" id="search_submit" />
- {% for category in categories %}
- <input type="hidden" name="category_{{ category }}" value="1"/>
- {% endfor %}
- </div>
-</form>
diff --git a/searx/templates/pix-art/stats.html b/searx/templates/pix-art/stats.html
deleted file mode 100644
index 372447e..0000000
--- a/searx/templates/pix-art/stats.html
+++ /dev/null
@@ -1,22 +0,0 @@
-{% extends "legacy/base.html" %}
-{% block head %} {% endblock %}
-{% block content %}
-<h2>{{ _('Engine stats') }}</h2>
-
-{% for stat_name,stat_category in stats %}
-<div class="left">
- <table>
- <tr colspan="3">
- <th>{{ stat_name }}</th>
- </tr>
- {% for engine in stat_category %}
- <tr>
- <td>{{ engine.name }}</td>
- <td>{{ '%.02f'|format(engine.avg) }}</td>
- <td class="percentage"><div style="width: {{ engine.percentage }}%">&nbsp;</div></td>
- </tr>
- {% endfor %}
- </table>
-</div>
-{% endfor %}
-{% endblock %}
diff --git a/searx/templates/simple/404.html b/searx/templates/simple/404.html
index 11d6043..1a10514 100644
--- a/searx/templates/simple/404.html
+++ b/searx/templates/simple/404.html
@@ -3,7 +3,7 @@
<div class="center">
<h1>{{ _('Page not found') }}</h1>
{% autoescape false %}
- <p>{{ _('Go to %(search_page)s.', search_page=unicode('<a href="{}">{}</a>').format(url_for('index'), _('search page'))) }}</p>
+ <p>{{ _('Go to %(search_page)s.', search_page='<a href="{}">{}</a>'.format(url_for('index'), _('search page'))) }}</p>
{% endautoescape %}
</div>
{% endblock %}
diff --git a/searx/templates/simple/base.html b/searx/templates/simple/base.html
index 92597b6..17c9785 100644
--- a/searx/templates/simple/base.html
+++ b/searx/templates/simple/base.html
@@ -2,7 +2,7 @@
<html class="no-js" lang="en" {% if rtl %} dir="rtl"{% endif %}>
<head>
<meta charset="UTF-8" />
- <meta name="description" content="searx - a privacy-respecting, hackable metasearch engine">
+ <meta name="description" content="searx — a privacy-respecting, hackable metasearch engine">
<meta name="keywords" content="searx, search, search engine, metasearch, meta search">
<meta name="generator" content="searx/{{ searx_version }}">
<meta name="referrer" content="no-referrer">
@@ -25,14 +25,14 @@
data-search-on-category-select="{{ 'true' if 'plugins/js/search_on_category_select.js' in scripts else 'false'}}"
data-infinite-scroll="{{ 'true' if 'plugins/js/infinite_scroll.js' in scripts else 'false' }}"
data-static-path="{{ url_for('static', filename='themes/simple') }}/"
- data-no-item-found="{{ _('No item found') }}"></script>
+ data-translations="{{ translations }}"></script>
<!--<![endif]-->
{% block head %}
- <link title="{{ instance_name }}" type="application/opensearchdescription+xml" rel="search" href="{{ url_for('opensearch') }}"/>
+ <link title="{{ instance_name }}" type="application/opensearchdescription+xml" rel="search" href="{{ opensearch_url }}"/>
{% endblock %}
<link rel="shortcut icon" href="{{ url_for('static', filename='img/favicon.png') }}" />
</head>
-<body>
+<body class="{{ endpoint }}_endpoint" >
<main id="main_{{ self._TemplateReference__context.name|replace("simple/", "")|replace(".html", "") }}">
{% if errors %}
<div class="dialog-error" role="alert">
@@ -50,10 +50,11 @@
</main>
<footer>
<p>
- {{ _('Powered by') }} <a href="{{ url_for('about') }}">searx</a> - {{ searx_version }} - {{ _('a privacy-respecting, hackable metasearch engine') }}<br/>
- <a href="https://github.com/asciimoo/searx">{{ _('Source code') }}</a> |
- <a href="https://github.com/asciimoo/searx/issues">{{ _('Issue tracker') }}</a> |
- <a href="https://github.com/asciimoo/searx/wiki/Searx-instances">{{ _('Public instances') }}</a>
+ {{ _('Powered by') }} <a href="{{ url_for('about') }}">searx</a> - {{ searx_version }} — {{ _('a privacy-respecting, hackable metasearch engine') }}<br/>
+ <a href="{{ brand.GIT_URL }}">{{ _('Source code') }}</a> |
+ <a href="{{ brand.ISSUE_URL }}">{{ _('Issue tracker') }}</a> |
+ <a href="{{ brand.PUBLIC_INSTANCES }}">{{ _('Public instances') }}</a>{% if brand.CONTACT_URL %} |
+ <a href="{{ brand.CONTACT_URL }}">{{ _('Contact instance maintainer') }}</a>{% endif %}
</p>
</footer>
<!--[if gte IE 9]>-->
diff --git a/searx/templates/simple/categories.html b/searx/templates/simple/categories.html
index 127d55b..6724d06 100644
--- a/searx/templates/simple/categories.html
+++ b/searx/templates/simple/categories.html
@@ -1,7 +1,7 @@
<div id="categories">{{- '' -}}
<div id="categories_container">
{%- for category in categories -%}
- <div class="category"><input type="checkbox" id="checkbox_{{ category|replace(' ', '_') }}" name="category_{{ category }}"{% if category in selected_categories %} checked="checked"{% endif %}/><label for="checkbox_{{ category|replace(' ', '_') }}" class="tooltips">{{ _(category) }}</label></div>
+ <div class="category"><a><input type="checkbox" id="checkbox_{{ category|replace(' ', '_') }}" name="category_{{ category }}"{% if category in selected_categories %} checked="checked"{% endif %}/><label for="checkbox_{{ category|replace(' ', '_') }}" class="tooltips">{{ _(category) }}</label></a></div>
{%- endfor -%}
{%- if display_tooltip %}<div class="help">{{ _('Click on the magnifier to perform search') }}</div>{% endif -%}
</div>{{- '' -}}
diff --git a/searx/templates/simple/infobox.html b/searx/templates/simple/infobox.html
index 50b5689..56c51af 100644
--- a/searx/templates/simple/infobox.html
+++ b/searx/templates/simple/infobox.html
@@ -1,7 +1,6 @@
<aside class="infobox">
<h2><bdi>{{ infobox.infobox }}</bdi></h2>
{% if infobox.img_src %}<img src="{{ image_proxify(infobox.img_src) }}" title="{{ infobox.infobox|striptags }}" alt="{{ infobox.infobox|striptags }}" />{% endif %}
- <p><bdi>{{ infobox.entity }}</bdi></p>
<p><bdi>{{ infobox.content | safe }}</bdi></p>
{% if infobox.attributes %}
<div class="attributes">
@@ -34,7 +33,7 @@
<div>
<h3><bdi>{{ topic.name }}</bdi></h3>
{% for suggestion in topic.suggestions %}
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}">
<input type="hidden" name="q" value="{{ suggestion }}">
<input type="hidden" name="time_range" value="{{ time_range }}">
<input type="hidden" name="language" value="{{ current_language }}">
diff --git a/searx/templates/simple/macros.html b/searx/templates/simple/macros.html
index f0b3627..1eb4266 100644
--- a/searx/templates/simple/macros.html
+++ b/searx/templates/simple/macros.html
@@ -1,6 +1,6 @@
<!-- Draw glyphicon icon from bootstrap-theme -->
-{% macro icon(action) -%}
- <span class="ion-icon-big ion-{{ action }}"></span>
+{% macro icon(action, alt) -%}
+ <span title="{{ alt }}" class="ion-icon-big ion-{{ action }}"></span>
{%- endmacro %}
{% macro icon_small(action) -%}
@@ -26,7 +26,7 @@
<!-- Draw result header -->
{% macro result_header(result, favicons, image_proxify) -%}
-<article class="result {% if result['template'] %}result-{{ result.template|replace('.html', '') }}{% else %}result-default{% endif %} {% if result['category'] %}category-{{ result['category'] }}{% endif %}">
+<article class="result {% if result['template'] %}result-{{ result.template|replace('.html', '') }}{% else %}result-default{% endif %} {% if result['category'] %}category-{{ result['category'] }}{% endif %}{% for e in result.engines %} {{ e }}{% endfor %}">
{%- if result.img_src %}{{ result_open_link(result.url) }}<img class="image" src="{{ image_proxify(result.img_src) }}" alt="{{ result.title|striptags }}" title="{{ result.title|striptags }}" class="image" />{{ result_close_link() }}{% endif -%}
{%- if result.thumbnail %}{{ result_open_link(result.url) }}<img class="thumbnail" src="{{ image_proxify(result.thumbnail) }}" title="{{ result.title|striptags }}" alt="{{ result.title|striptags }}"/>{{ result_close_link() }}{% endif -%}
<h3>{{ result_link(result.url, result.title|safe) }}</h3>
diff --git a/searx/templates/simple/messages/no_results.html b/searx/templates/simple/messages/no_results.html
index fa984b0..df75ef2 100644
--- a/searx/templates/simple/messages/no_results.html
+++ b/searx/templates/simple/messages/no_results.html
@@ -7,7 +7,7 @@
{{ engine_name }} ({{ error_type }}){% if not loop.last %}, {% endif %}
{% endfor %}
</p>
- <p><small>{{ _('Please, try again later or find another searx instance.') }}</small></p>
+ <p><small>{{ _('Please, try again later or find another searx instance.') }} (<a href="{{ brand.PUBLIC_INSTANCES }}">{{ _('Public instances') }}</a>) </small></p>
</div>
{% else %}
<div class="dialog-error" role="alert">
diff --git a/searx/templates/simple/preferences.html b/searx/templates/simple/preferences.html
index 7437ed4..a0ed779 100644
--- a/searx/templates/simple/preferences.html
+++ b/searx/templates/simple/preferences.html
@@ -1,4 +1,4 @@
-{% from 'simple/macros.html' import tabs_open, tabs_close, tab_header, tab_footer, checkbox_onoff, checkbox %}
+{% from 'simple/macros.html' import icon, tabs_open, tabs_close, tab_header, tab_footer, checkbox_onoff, checkbox %}
{% extends "simple/base.html" %}
@@ -18,6 +18,17 @@
{%- endfor -%}
{%- endmacro -%}
+{% macro engine_about(search_engine) -%}
+{% if search_engine.about is defined %}
+{% set about = search_engine.about %}
+<div class="engine-tooltip" role="tooltip">{{- "" -}}
+ <p><a href="{{about.website}}" rel="noreferrer">{{about.website}}</a></p>
+ {%- if about.wikidata_id -%}<p><a href="https://www.wikidata.org/wiki/{{about.wikidata_id}}" rel="noreferrer">wikidata.org/wiki/{{about.wikidata_id}}</a></p>{%- endif -%}
+ {%- if search_engine.enable_http %}<p>{{ icon('exclamation-sign', 'No HTTPS') }}{{ _('No HTTPS')}}</p>{% endif -%}
+</div>
+{%- endif -%}
+{%- endmacro %}
+
{% block head %} {% endblock %}
{% block content %}
@@ -30,11 +41,14 @@
{{ tabs_open() }}
{{ tab_header('maintab', 'general', _('General')) }}
+ {% if 'categories' not in locked_preferences %}
<fieldset>
<legend>{{ _('Default categories') }}</legend>
{% set display_tooltip = false %}
{% include 'simple/categories.html' %}
</fieldset>
+ {% endif %}
+ {% if 'language' not in locked_preferences %}
<fieldset>
<legend>{{ _('Search language') }}</legend>
<p class="value">{{- '' -}}
@@ -47,6 +61,8 @@
</p>
<div class="description">{{ _('What language do you prefer for search?') }}</div>
</fieldset>
+ {% endif %}
+ {% if 'autocomplete' not in locked_preferences %}
<fieldset>
<legend>{{ _('Autocomplete') }}</legend>
<p class="value">
@@ -59,6 +75,8 @@
</p>
<div class="description">{{ _('Find stuff as you type') }}</div>
</fieldset>
+ {% endif %}
+ {% if 'safesearch' not in locked_preferences %}
<fieldset>
<legend>{{ _('SafeSearch') }}</legend>
<p class="value">
@@ -70,13 +88,15 @@
</p>
<p class="description">{{ _('Filter content') }}</p>
</fieldset>
+ {% endif %}
{{ plugin_preferences('general') }}
+ {% if 'doi_resolver' not in locked_preferences %}
<fieldset>
<legend>{{ _('Open Access DOI resolver') }}</legend>
<p class="value">
<select id='doi_resolver' name='doi_resolver'>
{%- for doi_resolver_name,doi_resolver_url in doi_resolvers.items() -%}
- <option value="{{ doi_resolver_name }}" {% if doi_resolver_name == current_doi_resolver %}selected="selected"{% endif %}>
+ <option value="{{ doi_resolver_name }}" {% if doi_resolver_url == current_doi_resolver %}selected="selected"{% endif %}>
{{- doi_resolver_name }} - {{ doi_resolver_url -}}
</option>
{%- endfor -%}
@@ -84,6 +104,7 @@
</p>
<div class="description"><!-- {{ _('Redirect to open-access versions of publications when available (plugin required)') }} --></div>
</fieldset>
+ {% endif %}
{{ tab_footer() }}
{{ tab_header('maintab', 'engines', _('Engines')) }}
@@ -111,7 +132,7 @@
{% set engine_id = 'engine_' + search_engine.name|replace(' ', '_') + '__' + categ|replace(' ', '_') %}
<tr>
<td class="engine_checkbox">{{ checkbox_onoff(engine_id, (search_engine.name, categ) in disabled_engines) }}</td>
- <th class="name">{{ search_engine.name }}</th>
+ <th class="name">{% if search_engine.enable_http %}{{ icon('warning', 'No HTTPS') }}{% endif %} {{ search_engine.name }} {{ engine_about(search_engine) }}</th>
<td class="shortcut">{{ shortcuts[search_engine.name] }}</td>
<td>{{ checkbox(engine_id + '_supported_languages', current_language == 'all' or current_language in search_engine.supported_languages or current_language.split('-')[0] in search_engine.supported_languages, true, true) }}</td>
<td>{{ checkbox(engine_id + '_safesearch', search_engine.safesearch==True, true, true) }}</td>
@@ -129,6 +150,7 @@
{{ tab_footer() }}
{{ tab_header('maintab', 'ui', _('User interface')) }}
+ {% if 'locale' not in locked_preferences %}
<fieldset>
<legend>{{ _('Interface language') }}</legend>
<p class="value">
@@ -140,6 +162,8 @@
</p>
<div class="description">{{ _('Change the language of the layout') }}</div>
</fieldset>
+ {% endif %}
+ {% if 'theme' not in locked_preferences %}
<fieldset>
<legend>{{ _('Themes') }}</legend>
<p class="value">
@@ -151,6 +175,8 @@
</p>
<div class="description">{{ _('Change searx layout') }}</div>
</fieldset>
+ {% endif %}
+ {% if 'results_on_new_tab' not in locked_preferences %}
<fieldset>
<legend>{{ _('Results on new tabs') }}</legend>
<p class="value">
@@ -161,6 +187,19 @@
</p>
<div class="description">{{_('Open result links on new browser tabs') }}</div>
</fieldset>
+ {% endif %}
+ {% if 'autofocus' not in locked_preferences %}
+ <fieldset>
+ <legend>{{ _('Autofocus search field') }}</legend>
+ <p class="value">
+ <select name='autofocus'>
+ <option value="1" {% if autofocus %}selected="selected"{% endif %}>{{ _('On') }}</option>
+ <option value="0" {% if not autofocus %}selected="selected"{% endif %}>{{ _('Off')}}</option>
+ </select>
+ </p>
+ <div class="description">{{_('Turn off if you use your keyboard to scroll') }}</div>
+ </fieldset>
+ {% endif %}
{{ plugin_preferences('ui') }}
{{ tab_footer() }}
@@ -197,6 +236,7 @@
{{ tab_footer() }}
{{ tab_header('maintab', 'privacy', _('Privacy')) }}
+ {% if 'method' not in locked_preferences %}
<fieldset>
<legend>{{ _('Method') }}</legend>
<p class="value">
@@ -207,6 +247,8 @@
</p>
<div class="description">{{ _('Search language') }}</div>
</fieldset>
+ {% endif %}
+ {% if 'image_proxy' not in locked_preferences %}
<fieldset>
<legend>{{ _('Image proxy') }}</legend>
<p class="value">
@@ -217,6 +259,7 @@
</p>
<div class="description">{{ _('Proxying image results through searx') }}</div>
</fieldset>
+ {% endif %}
{{ plugin_preferences('privacy') }}
{{ tab_footer() }}
diff --git a/searx/templates/simple/result_templates/map.html b/searx/templates/simple/result_templates/map.html
index 2de4451..8b08bda 100644
--- a/searx/templates/simple/result_templates/map.html
+++ b/searx/templates/simple/result_templates/map.html
@@ -3,64 +3,47 @@
{{ result_header(result, favicons, image_proxify) -}}
{{- result_sub_header(result) -}}
-{%- if (result.latitude and result.longitude) or result.boundingbox -%}
- <small> &bull; <a class="btn-collapse collapsed searx_init_map hide_if_nojs" data-target="#result-map-{{ index }}" data-btn-text-collapsed="{{ _('show map') }}" data-btn-text-not-collapsed="{{ _('hide map') }}" data-leaflet-target="osm-map-{{ index }}" data-map-lon="{{ result.longitude }}" data-map-lat="{{ result.latitude }}" {% if result.boundingbox %}data-map-boundingbox='{{ result.boundingbox|tojson|safe }}'{% endif %} {% if result.geojson %}data-map-geojson='{{ result.geojson|tojson|safe }}'{% endif %}>{{ icon( 'globe') }} {{ _('show map') }}</a></small>
-{%- endif -%}
-
-{%- if result.osm and (result.osm.type and result.osm.id) -%}
- <small> &bull; <a class="btn-collapse collapsed hide_if_nojs searx_overpass_request" data-target="#result-overpass-{{ index }}" data-btn-text-collapsed="{{ _('show details') }}" data-btn-text-not-collapsed="{{ _('hide details') }}" data-osm-type="{{ result.osm.type }}" data-osm-id="{{ result.osm.id }}" data-result-table="result-overpass-table-{{ index }}" data-result-table-loadicon="result-overpass-table-loading-{{ index }}">{{ icon('location') }} {{ _('show details') }}</a></small>
-{%- endif -%}
-{#-
-{% if (result.latitude and result.longitude) %}
- <small> &bull; <a class="btn-collapse disabled_if_nojs" data-target="#result-geodata-{{ index }}" data-btn-text-collapsed="{{ _('show geodata') }}" data-btn-text-not-collapsed="{{ _('hide geodata') }}">{{ icon('location') }} {{ _('show geodata') }}</a></small>
-{% endif %}
--#}
+{%- if result.content %}<p class="content">{{ result.content|safe }}</p>{% endif -%}
-{%- if result.address -%}
-<p itemscope itemtype="http://schema.org/PostalAddress" class="content">
- {%- if result.address.name -%}
- <strong itemprop="name">{{ result.address.name }}</strong><br/>
- {%- endif -%}
- {% if result.address.road -%}
- <span itemprop="streetAddress">
- {%- if result.address.house_number -%}{{- result.address.house_number -}}, {% endif %}
- {{- result.address.road -}}
- </span><br/>
+<table>
+ {%- if result.address -%}
+ <tr>
+ <th scope="row">{{ result.address_label or _('address') }}</th>
+ <td itemscope itemtype="http://schema.org/PostalAddress">
+ {%- if result.address.name -%}
+ <strong itemprop="name" class="hidden">{{ result.address.name }}</strong>
+ {%- endif -%}
+ {% if result.address.road -%}
+ <span itemprop="streetAddress">
+ {%- if result.address.house_number -%}{{- result.address.house_number -}}, {% endif %}
+ {{- result.address.road -}}
+ </span><br/>
+ {%- endif %}
+ {%- if result.address.locality -%}
+ <span itemprop="addressLocality">{{- result.address.locality -}}</span>
+ {%- if result.address.postcode -%}, <span itemprop="postalCode">{{- result.address.postcode -}}</span>{% endif %}
+ <br/>
+ {%- endif -%}
+ {%- if result.address.country -%}
+ <span itemprop="addressCountry">{{- result.address.country -}}</span>
+ {%- endif -%}
+ </td>
+ </tr>
{%- endif %}
- {%- if result.address.locality -%}
- <span itemprop="addressLocality">{{- result.address.locality -}}</span>
- {%- if result.address.postcode -%}, <span itemprop="postalCode">{{- result.address.postcode -}}</span>{% endif %}
- <br/>
- {%- endif -%}
- {%- if result.address.country -%}
- <span itemprop="addressCountry">{{- result.address.country -}}</span>
- {%- endif -%}
-</p>
-{%- endif -%}
+ {%- for info in result.data -%}
+ <tr><th scope="row">{{ info.label }}</th><td>{{ info.value|safe }}</td></tr>
+ {%- endfor -%}
+ {%- for link in result.links -%}
+ <tr><th scope="row">{{ link.label }}</th><td><a class="text-info cursor-pointer" href="{{ link.url }}">{{ link.url|safe }}</a></td></tr>
+ {%- endfor -%}
+</table>
-{%- if result.content %}<p class="content">{{ result.content|safe }}</p>{% endif -%}
+{%- if (result.latitude and result.longitude) or result.boundingbox -%}
+ <small> <a class="btn-collapse collapsed searx_init_map hide_if_nojs" data-target="#result-map-{{ index }}" data-btn-text-collapsed="{{ _('show map') }}" data-btn-text-not-collapsed="{{ _('hide map') }}" data-leaflet-target="osm-map-{{ index }}" data-map-lon="{{ result.longitude }}" data-map-lat="{{ result.latitude }}" {% if result.boundingbox %}data-map-boundingbox='{{ result.boundingbox|tojson|safe }}'{% endif %} {% if result.geojson %}data-map-geojson='{{ result.geojson|tojson|safe }}'{% endif %}>{{ icon( 'globe') }} {{ _('show map') }}</a></small>
+{%- endif -%}
{{- result_sub_footer(result, proxify) -}}
-{% if result.osm and (result.osm.type and result.osm.id) -%}
- <div class="result-content invisible" id="result-overpass-{{ index }}"{% if rtl %} dir="ltr"{% endif %}>
- <div id="result-overpass-table-loading-{{ index }}"><div class="loader">{{ _('Loading...') }}</div></div>
- <table id="result-overpass-table-{{ index }}">
- <tbody>
- </tbody>
- </table>
- </div>
-{%- endif %}
-
-{#-
-{% if (result.latitude and result.longitude) -%}
- <div id="result-geodata-{{ index }}" class="invisible">
- <strong>Longitude:</strong> {{ result.longitude }} <br/>
- <strong>Latitude:</strong> {{ result.latitude }}
- </div>
-{%- endif %}
--#}
-
{% if (result.latitude and result.longitude) or result.boundingbox -%}
<div id="result-map-{{ index }}" class="invisible"><div id="osm-map-{{ index }}" style="height:300px; width:100%; margin: 10px 0;" ></div></div>
{%- endif %}
diff --git a/searx/templates/simple/results.html b/searx/templates/simple/results.html
index 8885abc..7ece6c7 100644
--- a/searx/templates/simple/results.html
+++ b/searx/templates/simple/results.html
@@ -1,7 +1,14 @@
{% extends "simple/base.html" %}
{% from 'simple/macros.html' import icon, icon_small %}
+{% macro engine_data_form(engine_data) -%}
+ {% for engine_name, kv_data in engine_data.items() %}
+ {% for k, v in kv_data.items() %}
+ <input type="hidden" name="engine_data-{{ engine_name }}-{{ k|e }}" value="{{ v|e }}" />
+ {% endfor %}
+ {% endfor %}
+{%- endmacro %}
{% block title %}{% if method == 'GET' %}{{- q|e -}} -{% endif %}{% endblock %}
-{% block meta %}<link rel="alternate" type="application/rss+xml" title="Searx search: {{ q|e }}" href="{{ url_for('index') }}?q={{ q|urlencode }}&amp;categories={{ selected_categories|join(",") | replace(' ','+') }}&amp;pageno={{ pageno }}&amp;time_range={{ time_range }}&amp;language={{ current_language }}&amp;safesearch={{ safesearch }}&amp;format=rss">{% endblock %}
+{% block meta %}<link rel="alternate" type="application/rss+xml" title="Searx search: {{ q|e }}" href="{{ url_for('search', _external=True) }}?q={{ q|urlencode }}&amp;categories={{ selected_categories|join(",") | replace(' ','+') }}&amp;pageno={{ pageno }}&amp;time_range={{ time_range }}&amp;language={{ current_language }}&amp;safesearch={{ safesearch }}&amp;format=rss">{% endblock %}
{% block content %}
<nav id="linkto_preferences"><a href="{{ url_for('preferences') }}">{{ icon('navicon-round') }}</a></nav>
{% include 'simple/search.html' %}
@@ -15,8 +22,14 @@
<div id="results" class="{{ only_template }}">
{% if answers -%}
<div id="answers"><h4 class="title">{{ _('Answers') }} : </h4>
- {%- for answer in answers -%}
- <div class="answer">{{- answer -}}</div>
+ {%- for answer in answers.values() -%}
+ <div class="answer">
+ {% if answer.url %}
+ <a href="{{ answer.url }}">{{ answer.answer }}</a>
+ {% else %}
+ <span>{{ answer.answer }}</span>
+ {% endif %}
+ </div>
{%- endfor -%}
</div>
{%- endif %}
@@ -49,7 +62,7 @@
<h4 class="title">{{ _('Suggestions') }} : </h4>
<div class="wrapper">
{% for suggestion in suggestions %}
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}">
<input type="hidden" name="q" value="{{ suggestion.url }}">
<input type="hidden" name="time_range" value="{{ time_range }}">
<input type="hidden" name="language" value="{{ current_language }}">
@@ -65,13 +78,13 @@
<div id="search_url">
<h4 class="title">{{ _('Search URL') }} :</h4>
- <div class="selectable_url"><pre>{{ base_url }}?q={{ q|urlencode }}&amp;language={{ current_language }}&amp;time_range={{ time_range }}&amp;safesearch={{ safesearch }}{% if pageno > 1 %}&amp;pageno={{ pageno }}{% endif %}{% if selected_categories %}&amp;categories={{ selected_categories|join(",") | replace(' ','+') }}{% endif %}{% if timeout_limit %}&amp;timeout_limit={{ timeout_limit|urlencode }}{% endif %}</pre></div>
+ <div class="selectable_url"><pre>{{ url_for('search', _external=True) }}?q={{ q|urlencode }}&amp;language={{ current_language }}&amp;time_range={{ time_range }}&amp;safesearch={{ safesearch }}{% if pageno > 1 %}&amp;pageno={{ pageno }}{% endif %}{% if selected_categories %}&amp;categories={{ selected_categories|join(",") | replace(' ','+') }}{% endif %}{% if timeout_limit %}&amp;timeout_limit={{ timeout_limit|urlencode }}{% endif %}</pre></div>
</div>
<div id="apis">
<h4 class="title">{{ _('Download results') }}</h4>
{% for output_type in ('csv', 'json', 'rss') %}
<div class="left">
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}">
<input type="hidden" name="q" value="{{ q|e }}">
{% for category in selected_categories %}
<input type="hidden" name="category_{{ category }}" value="1">
@@ -94,7 +107,7 @@
<h4>{{ _('Try searching for:') }}</h4>
{% for correction in corrections %}
<div class="left">
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}" role="navigation">
+ <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}" role="navigation">
<input type="hidden" name="q" value="{{ correction.url }}">
<input type="hidden" name="time_range" value="{{ time_range }}">
<input type="hidden" name="language" value="{{ current_language }}">
@@ -127,9 +140,10 @@
{% if paging %}
<nav id="pagination">
{% if pageno > 1 %}
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}">
<div class="{% if rtl %}right{% else %}left{% endif %}">
<input type="hidden" name="q" value="{{ q|e }}" >
+ {{- engine_data_form(engine_data) -}}
{% for category in selected_categories %}
<input type="hidden" name="category_{{ category }}" value="1" >
{% endfor %}
@@ -143,9 +157,10 @@
</div>
</form>
{% endif %}
- <form method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+ <form method="{{ method or 'POST' }}" action="{{ url_for('search') }}">
<div class="{% if rtl %}left{% else %}right{% endif %}">
<input type="hidden" name="q" value="{{ q|e }}" >
+ {{- engine_data_form(engine_data) -}}
{% for category in selected_categories %}
<input type="hidden" name="category_{{ category }}" value="1" >
{% endfor %}
diff --git a/searx/templates/simple/search.html b/searx/templates/simple/search.html
index e9023b4..a4ee392 100644
--- a/searx/templates/simple/search.html
+++ b/searx/templates/simple/search.html
@@ -1,7 +1,7 @@
-<form id="search" method="{{ method or 'POST' }}" action="{{ url_for('index') }}">
+<form id="search" method="{{ method or 'POST' }}" action="{{ url_for('search') }}">
<div id="search_wrapper">
<div class="search_box">
- <input id="q" name="q" type="text" placeholder="{{ _('Search for...') }}" tabindex="1" autocomplete="off" spellcheck="false" dir="auto" {% if q %}value="{{ q }}"{% endif %} >
+ <input id="q" {% if autofocus %}autofocus{% endif %} name="q" type="text" placeholder="{{ _('Search for...') }}" tabindex="1" autocomplete="off" spellcheck="false" dir="auto" {% if q %}value="{{ q }}"{% endif %} >
<button id="clear_search" type="button" tabindex="-1"><span class="hide_if_nojs">{{ icon('close') }}</span><span class="show_if_nojs">{{ _('Clear search') }}</span></button>
<button id="send_search" type="submit" tabindex="-1"><span class="hide_if_nojs">{{ icon('search') }}</span><span class="show_if_nojs">{{ _('Start search') }}</span></button>
</div>
diff --git a/searx/testing.py b/searx/testing.py
index a3616dc..c31595a 100644
--- a/searx/testing.py
+++ b/searx/testing.py
@@ -1,37 +1,39 @@
# -*- coding: utf-8 -*-
+# SPDX-License-Identifier: AGPL-3.0-or-later
"""Shared testing code."""
+# pylint: disable=missing-function-docstring,consider-using-with
import os
import subprocess
import traceback
-from os.path import dirname, join, abspath
+from os.path import dirname, join, abspath, realpath
+from unittest import TestCase
from splinter import Browser
-from unittest2 import TestCase
class SearxTestLayer:
"""Base layer for non-robot tests."""
- __name__ = u'SearxTestLayer'
+ __name__ = 'SearxTestLayer'
+ @classmethod
def setUp(cls):
pass
- setUp = classmethod(setUp)
+ @classmethod
def tearDown(cls):
pass
- tearDown = classmethod(tearDown)
+ @classmethod
def testSetUp(cls):
pass
- testSetUp = classmethod(testSetUp)
+ @classmethod
def testTearDown(cls):
pass
- testTearDown = classmethod(testTearDown)
class SearxRobotLayer():
@@ -41,14 +43,19 @@ class SearxRobotLayer():
os.setpgrp() # create new process group, become its leader
# get program paths
- webapp = os.path.join(
- os.path.abspath(os.path.dirname(os.path.realpath(__file__))),
- 'webapp.py'
- )
+ webapp = join(abspath(dirname(realpath(__file__))), 'webapp.py')
exe = 'python'
+ # The Flask app is started by Flask.run(...), don't enable Flask's debug
+ # mode, the debugger from Flask will cause wired process model, where
+ # the server never dies. Further read:
+ #
+ # - debug mode: https://flask.palletsprojects.com/quickstart/#debug-mode
+ # - Flask.run(..): https://flask.palletsprojects.com/api/#flask.Flask.run
+
+ os.environ['SEARX_DEBUG'] = '0'
+
# set robot settings path
- os.environ['SEARX_DEBUG'] = '1'
os.environ['SEARX_SETTINGS_PATH'] = abspath(
dirname(__file__) + '/settings_robot.yml')
@@ -59,7 +66,7 @@ class SearxRobotLayer():
stderr=subprocess.STDOUT
)
if hasattr(self.server.stdout, 'read1'):
- print(self.server.stdout.read1(1024).decode('utf-8'))
+ print(self.server.stdout.read1(1024).decode())
def tearDown(self):
os.kill(self.server.pid, 9)
@@ -105,7 +112,7 @@ if __name__ == '__main__':
try:
test_layer.setUp()
run_robot_tests([getattr(robot, x) for x in dir(robot) if x.startswith('test_')])
- except Exception:
+ except Exception: # pylint: disable=broad-except
errors = True
print('Error occured: {0}'.format(traceback.format_exc()))
test_layer.tearDown()
diff --git a/searx/translations/ar/LC_MESSAGES/messages.po b/searx/translations/ar/LC_MESSAGES/messages.po
index 0604ac1..055a507 100644
--- a/searx/translations/ar/LC_MESSAGES/messages.po
+++ b/searx/translations/ar/LC_MESSAGES/messages.po
@@ -1,103 +1,91 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
# ButterflyOfFire ButterflyOfFire, 2018
# ButterflyOfFire, 2018
-# ButterflyOfFire, 2017-2018
+# d506c013dc1b502e7a53f91ebcbf8f29_985b4b3, 2017-2018
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 13:10+0000\n"
+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
"Language-Team: Arabic (http://www.transifex.com/asciimoo/searx/language/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: ar\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "إنتهت مهلة الإنتظار"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr ""
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "خلل غير مُتوقّع"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "ملفات"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "الرئيسية"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "موسيقى"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "شبكات التواصل الإجتماعي"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "صور"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "فيديوهات"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "علوم و تكنولوجيا"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "أخبار"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "خرائط"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "علوم"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "إنّ الإعدادات خاطئة، يرجى تعديل خياراتك"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "إعدادات غير صالحة"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "خطأ في البحث"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "قبل {minutes} ثانية"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "قبل {hours} ساعات، {minutes} دقائق"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "مولّد قيمة عشوائية"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "توليد قِيم عشوائية مختلفة"
@@ -109,47 +97,49 @@ msgstr ""
msgid "Compute {functions} of the arguments"
msgstr ""
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "المدة المستغرقة للمحرك (ثواني)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "مدة تحميل الصفحة (ثواني)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "حصيلة نتائج البحث"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr ""
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr ""
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "أخطاء"
-#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(OBSOLETE)"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr ""
-#: searx/engines/pdbe.py:91
-msgid "This entry has been superseded by"
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
msgstr ""
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
+#: searx/engines/pdbe.py:87
+msgid "{title} (OBSOLETE)"
msgstr ""
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
+#: searx/engines/pdbe.py:94
+msgid "This entry has been superseded by"
+msgstr ""
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
msgstr ""
#: searx/plugins/https_rewrite.py:32
@@ -164,9 +154,19 @@ msgstr "تمرير الصفحات بلا حدود"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "حمّل تلقائيا الصفحة التالية عن السحب إلى أسفل النتائج"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr ""
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "عرض روابط نتائج البحث في ألسنة جديدة للمتصفح"
@@ -249,7 +249,7 @@ msgstr "عن سيركس"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "التفضيلات"
@@ -257,7 +257,7 @@ msgstr "التفضيلات"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "القوائم الإفتراضية"
@@ -265,17 +265,17 @@ msgstr "القوائم الإفتراضية"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "لغة البحث"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "اللغة الإفتراضية"
@@ -283,35 +283,35 @@ msgstr "اللغة الإفتراضية"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "لغة الواجهة"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "تكملة تلقائية"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "وكيل بروكسي الصور"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "مُفَعَّل"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "غير مُفَعَّل"
@@ -319,38 +319,38 @@ msgstr "غير مُفَعَّل"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "الطريقة"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "البحث المؤمَّن"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "صارم"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "معتدل"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "لا شيء"
@@ -358,7 +358,7 @@ msgstr "لا شيء"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "السمات"
@@ -393,126 +393,137 @@ msgstr "أحمر"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "محركات البحث المُستخدَمة حاليًا"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "إسم المحرك"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "الفئة"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "الإختصار"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "الفئة"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "تمكين"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "حظر"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr ""
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr ""
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "حفظ"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "إعاد التعيين إلى الإعدادات الإفتراضية"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "العودة"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "رابط البحث"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "حصيلة التنزيل"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "الإجابات"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "الإقتراحات"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "الصفحة السابقة"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "الصفحة التالية"
@@ -551,132 +562,149 @@ msgstr "الحاصد"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "رابط ماغنت"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "ملف تورنت"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr ""
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "عرض نتائج البحث في ألسنة جديدة"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "يشتغل"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "مُعطَّل"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "النسخة المخبأة"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "الإعدادات المتقدمة"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "غلق"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "خطأ !"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "مدعوم بواسطة"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "محرك بحث يحمي الخصوصية و قابل للتهكير"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr ""
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr ""
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr ""
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "النفاذ عبر البروكسي"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "مدعوم"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "غير مدعوم"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "الرئيسية"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "المحركات"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "الإضافات"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "المجيبون"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "كعكات الكوكيز"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "ما هي لغتك المفضلة للبحث ؟"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "يقوم بتغيير لغة واجهة البحث"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "العثور على نتائج أثناء الكتابة"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "تمرير نتائج البحث عن الصور عبر بروكسي Searx"
@@ -688,152 +716,196 @@ msgid ""
msgstr ""
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "فلترة المحتوى"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "تغيير مظهر سيركس"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "إختر الشكل الذي ستبدو عليه هذه السمة"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "الشكل"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "الإختصار"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr ""
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "اللغة المختارة"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "الفترة"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "متوسط الوقت"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "أقصى مدّة"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr ""
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "التسمية"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "الكلمات الرمزية"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "الوصف"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "أمثلة"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr ""
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr ""
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "إسم الكوكي"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "القيمة"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr ""
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr ""
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "حصيلة البحث"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "حاول البحث عن :"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "لم تتمكن محركات البحث من العثور على أية نتيجة"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "الروابط"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr ""
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "حصيلة البحث"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "حاول البحث عن :"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "إبدأ البحث"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr ""
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr ""
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "الإحصاءات"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "في أي وقت"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "يوم أمس"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "الأسبوع الماضي"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "الشهر الماضي"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "السنة الفارطة"
@@ -896,21 +968,21 @@ msgstr "يا للهول !"
msgid "Something went wrong."
msgstr "لقد حدث هناك خلل ما."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "عرض الوسائط"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "إخفاء الوسائط"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "تحصل على الصورة"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "عرض المصدر"
@@ -925,47 +997,47 @@ msgid "hide map"
msgstr "إخفاء الخريطة"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "عرض المعلومات الإضافية"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "إخفاء المعلومات الإضافية"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "حجم الملف"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "بايت"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "ك.بايت"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "ميغابايت"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "جيجابيت"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "تيرابيت"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "عدد الملفات"
@@ -979,22 +1051,34 @@ msgstr "عرض الفيديو"
msgid "hide video"
msgstr "إخفاء الفيديو"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr ""
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "تحميل المزيد ..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "تعذر العثور على عناصر"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "يدعم اللغة المختارة"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "واجهة المستخدم"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "الخصوصية"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr ""
diff --git a/searx/translations/bg/LC_MESSAGES/messages.po b/searx/translations/bg/LC_MESSAGES/messages.po
index 63c9938..8df0e70 100644
--- a/searx/translations/bg/LC_MESSAGES/messages.po
+++ b/searx/translations/bg/LC_MESSAGES/messages.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -10,94 +10,82 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 13:10+0000\n"
+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
"Language-Team: Bulgarian (http://www.transifex.com/asciimoo/searx/language/bg/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: bg\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr ""
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr ""
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr ""
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "файлове"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "общо"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "музика"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "социална мрежа"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "изображения"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "видео"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "IT"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "новини"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "карта"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "наука"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Неправилни настройки, моля проверете предпочитанията си."
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr ""
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "грешка при търсенето"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "преди {minutes} минута(минути)"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "преди {hours} час(ове), {minutes} минута(минути)"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr ""
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr ""
@@ -109,47 +97,49 @@ msgstr ""
msgid "Compute {functions} of the arguments"
msgstr ""
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr ""
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Страницата зарежда (сек)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Брой резултати"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr ""
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr ""
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Грешки"
-#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
msgstr ""
-#: searx/engines/pdbe.py:91
-msgid "This entry has been superseded by"
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
msgstr ""
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
+#: searx/engines/pdbe.py:87
+msgid "{title} (OBSOLETE)"
msgstr ""
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
+#: searx/engines/pdbe.py:94
+msgid "This entry has been superseded by"
+msgstr ""
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
msgstr ""
#: searx/plugins/https_rewrite.py:32
@@ -164,9 +154,19 @@ msgstr "Списък без страници."
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Автоматично зареждане на следващата страница."
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr ""
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Отвори връзките в нов раздел."
@@ -249,7 +249,7 @@ msgstr "относно"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Предпочитания"
@@ -257,7 +257,7 @@ msgstr "Предпочитания"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Първоначални категории"
@@ -265,17 +265,17 @@ msgstr "Първоначални категории"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Език на търсене"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Търси на език"
@@ -283,35 +283,35 @@ msgstr "Търси на език"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Език"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Автоматично допълване"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr ""
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Включено"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Изключено"
@@ -319,38 +319,38 @@ msgstr "Изключено"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Метод"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Безопасно търсене"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Стриктно"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Умерено"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Нищо"
@@ -358,7 +358,7 @@ msgstr "Нищо"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Облик"
@@ -393,126 +393,137 @@ msgstr "Червено"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Използвани търсачки в момента "
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Име на търсачка"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Категория"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Пряк път"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Категория"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Позволи"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Забрани"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Тези настройки се съхраняват във вашите бисквитки. Това ни позволява да не съхраняваме тази информация за вас."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Тези бисквитки служат за ваше удобство. Ние не ги използваме, за да ви следим."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "запази"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Върни първоначалните"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "назад"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Адрес на търсенето"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Свали резултатите"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Отговори"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Предложения"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "предишна страница"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "следваща страница"
@@ -551,132 +562,149 @@ msgstr "Лийчър"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "магнитна връзка"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "торент файл"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Кликнете лупичката, за да изпълните търсене"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr ""
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Включено"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Изключено"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "кеширана"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Допълнителни настройки"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Затвори"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Грешка!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr ""
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr ""
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr ""
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr ""
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr ""
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr ""
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr ""
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr ""
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Общи"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Търсачки"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Добавки"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Отговори"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Бисквитки"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Кой език предпочитате за търсене?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Промени езика на оформлението"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Намери докато пишеш"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr ""
@@ -688,152 +716,196 @@ msgid ""
msgstr ""
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Филтрирай съдържание"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Промени оформлението на searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Избери стил за избрания облик"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Стил"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Пряк път"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr ""
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr ""
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr ""
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Средно време"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Макс. време"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr ""
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Име"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Ключови думи"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Описание"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Примери"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Това е списък на бисквитки с техните стойности, които searx съхранява на вашия компютър."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr ""
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Име на бисквитката"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Стойност"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr ""
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr ""
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Резултати от търсенето"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr ""
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr ""
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Връзки"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr ""
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Резултати от търсенето"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr ""
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Започни търсене"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr ""
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr ""
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "статистики"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr ""
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr ""
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr ""
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr ""
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr ""
@@ -896,21 +968,21 @@ msgstr "Да му се не види!"
msgid "Something went wrong."
msgstr "Нещо се обърка."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "покажи медия"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "скрий медия"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Вземи изображение"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Покажи източник"
@@ -925,47 +997,47 @@ msgid "hide map"
msgstr "скрий картата"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "покажи детайлите"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "скрий детайлите"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Размер на файла"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Байта"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "килобайт"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "мегабайт"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "гигабайт"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "терабайт"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Брой на Файлове"
@@ -979,22 +1051,34 @@ msgstr "покажи видео"
msgid "hide video"
msgstr "скрий видеото"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr ""
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Зареди още..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr ""
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr ""
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr ""
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr ""
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr ""
diff --git a/searx/translations/bo/LC_MESSAGES/messages.po b/searx/translations/bo/LC_MESSAGES/messages.po
index a2eb5cb..0d89c85 100644
--- a/searx/translations/bo/LC_MESSAGES/messages.po
+++ b/searx/translations/bo/LC_MESSAGES/messages.po
@@ -1,101 +1,90 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
-# གངས་རྒྱན། <khyon_khangey@outlook.com>, 2019
+# 1225 <khyon_khangey@outlook.com>, 2020
+# 1225 <khyon_khangey@outlook.com>, 2019
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-10-08 09:02+0000\n"
-"Last-Translator: གངས་རྒྱན། <khyon_khangey@outlook.com>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 13:10+0000\n"
+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
"Language-Team: Tibetan (http://www.transifex.com/asciimoo/searx/language/bo/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: bo\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "དུས་ལས་འགོངས་ཟིན།"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "རེ་ཞུ་ཁྱབ་ཁོངས་ལས་འགོངས་ཟིན།"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "ནོར་འཁྲུལ་ཆེན་པོ་བྱུང་ཟིན།"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
-msgstr "ཡིག་ཆ།"
+msgstr "ཡིག་ཚགས།"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
-msgstr "སྤྱི་བཏང་།"
+msgstr "དྲ་སྦྲེལ།"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
-msgstr "རོལ་དབྱངས།"
+msgstr "རོལ་མོ།"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
-msgstr "སྤྱི་ཚོགས་འབྲེལ་བ།"
+msgstr "སྤྱི་འབྲེལ།"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "པར་རིས།"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "བརྙན་ཟློས།"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "ཆ་འཕྲིན་ལག་རྩལ།"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "གསར་འགྱུར།"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "ས་བཀྲ།"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
-msgstr "ཚན་རིག་ཤེས་བྱ།"
+msgstr "ཚན་རིག"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "ནུས་མེད་ཀྱི་སྒྲིག་འགོད།ཁྱེད་ཀྱིས་གདམ་ཀ་ལ་བཅོས་སྒྲིག་གཏོང་རོགས།"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "ནུས་མེད་ཀྱི་སྒྲིག་འགོད།"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "འཚོལ་བཤེར་ལ་ནོར་འཁྲུལ་བྱུང་།"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "སྐར་མ་ {minutes} སྔོན་ལ།"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "ཆུ་ཚོད་ {hours} དང་སྐར་མ {minutes} སྔོན་ལ།"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "ངེས་མེད་གྲངས་ཀ་མཁོ་སྤྲོད།"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "ངེས་མེད་གྲངས་ཀ་ཁ་ཤས་ཐོབ་པར་བྱེད།"
@@ -107,48 +96,50 @@ msgstr "སྡོམ་བརྩིས་ཀྱི་བྱེད་ནུས།
msgid "Compute {functions} of the arguments"
msgstr " {functions} གཞི་གྲངས་གྲངས་རྩིས།"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "འཚོལ་བཤེར་དུས་ཡུན། (སྐར་ཆ།)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
-msgstr "ནང་འདྲེན་དུས་ཡུན། (སྐར་ཆ།)"
+msgstr "འདྲེན་འཇུག་དུས་ཡུན། (སྐར་ཆ།)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "འཚོལ་འབྲས་ཀྱི་ཁ་གྲངས།"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "ཐོབ་སྐར།"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "འཚོལ་འབྲས་རེ་རེ་ཡི་ཐོབ་སྐར།"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "ནོར་འཁྲུལ།"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr ""
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr ""
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(དུས་ལས་འགོངས་ཟིན།)"
+msgid "{title} (OBSOLETE)"
+msgstr ""
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "འཚོལ་བྱང་འདི་གཞན་གྱིས་ཚབ་བྱེད་འདུག"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "DOAI བསྐྱར་འབྲི།"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Avoid paywalls by redirecting to open-access versions of publications when available"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr ""
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -162,9 +153,19 @@ msgstr "མཐའ་མེད་པའི་འཆར་ངོས།"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "དྲ་ངོས་མར་འདྲུད་ནས་ཞབས་ལ་སླེབས་དུས་རང་འགུལ་སྒོས་འཕྲོ་མའི་ནང་དོན་འཆར་པར་བྱེད།"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Avoid paywalls by redirecting to open-access versions of publications when available"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "ཤོག་ངོས་གསར་བ་ཞིག་ནས་དྲ་ངོས་འཆར་པར་བྱེད།"
@@ -235,7 +236,7 @@ msgstr "འཚོལ་བཤེར་དྲ་ངོས།"
#: searx/templates/oscar/preferences.html:3
#: searx/templates/pix-art/index.html:8
msgid "preferences"
-msgstr "རང་མོས་ཀྱི་སྒྲིག་འགོད།"
+msgstr "སྒྲིག་བཀོད།"
#: searx/templates/courgette/index.html:11
#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
@@ -247,15 +248,15 @@ msgstr "ངེད་ཀྱི་སྐོར།"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
-msgstr "རང་མོས་ཀྱི་སྒྲིག་འགོད།"
+msgstr "སྒྲིག་བཀོད།"
#: searx/templates/courgette/preferences.html:9
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "གཞི་བཞག་གི་རིགས།"
@@ -263,53 +264,53 @@ msgstr "གཞི་བཞག་གི་རིགས།"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
-msgstr "འཚོལ་བཤེར་སྐད་རིགས།"
+msgstr "འཚོལ་བཤེར་ནང་དོན་མཚོན་བྱེད་ཀྱི་སྐད་རིགས།"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
-msgstr "སྐད་རིགས།"
+msgstr "གཞི་བཞག་སྐད་རིགས།"
#: searx/templates/courgette/preferences.html:24
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
-msgstr "མདུན་ངོས་ཀྱི་སྐད་རིགས།"
+msgstr "དྲ་ངོས་སྐད་རིགས།"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "རང་ཤུགས་ཀྱིས་སྒྲུབ།"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "རི་མོ་མངག་བཅོལ་གྱི་ཞབས་ཞུ་སྒྲིག་ཆས།"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "ཁ་འབྱེད་ཟིན།"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "ཁ་རྒྱབ་ཟིན།"
@@ -317,38 +318,38 @@ msgstr "ཁ་རྒྱབ་ཟིན།"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "ཐབས་ཤེས།"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "བདེ་འཇགས་འཚོལ་བཤེར།"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "ནན་ཏན།"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "འབྲིང་ཙམ།"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "གང་ཡང་མེད།"
@@ -356,7 +357,7 @@ msgstr "གང་ཡང་མེད།"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "རྣམ་པ།"
@@ -391,126 +392,137 @@ msgstr "དམར་པོ།"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "ཉེ་ལམ་སྤྱད་ཟིན་པའི་འཚོལ་བྱེད་སྒུལ་བྱེད།"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "སྒུལ་བྱེད་ཀྱི་མིང་།"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "རིགས།"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "མགྱོགས་མྱུར་མཐེབ་གཞོང་།"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "རིགས།"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "ཆོག་མཆན།"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "བཀག་སྡོམ།"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "These settings are stored in your cookies, this allows us not to store this data about you."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "These cookies serve your sole convenience, we don't use these cookies to track you."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "གསོག་འཇོག"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
-msgstr "གདོད་མའི་རྣམ་པ་ལ་སྒྲིག་འགོད་བྱེད།"
+msgstr "གཞི་བཞག་གི་རྣམ་པར་སྒྲིག་བཀོད་བྱེད།"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "ཕྱིར་ལོག"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "འཚོལ་བཤེར་དྲ་གནས།"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "འཚོལ་འབྲས་ཕབ་ལེན།"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "ལན།"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "འོས་སྦྱོས།"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "དྲ་ངོས་སྔོན་མ།"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "དྲ་ངོས་གཞུག་མ།"
@@ -549,134 +561,151 @@ msgstr "དང་ལེན་བྱེད་མཁན།"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "ཐོན་ཁུངས་ཀྱི་དྲ་གནས།"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "ས་བོན་ཡིག་ཆ།"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "ས་བོན་སྟེང་གི་སྦྲེལ་ཐག་ལ་རྡེབ་ནས་འཚོལ་བཤེར་གཏོང་།"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "ཤོག་ངོས་གསར་བ་ནས་འཚོལ་འབྲས་འཆར།"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "ཁ་ཕྱེས།"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "ཁ་རྒྱབ།"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "འདྲ་བཤུས་རྒྱབ་ཚར།"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "མཐོ་རིམ་སྒྲིག་འགོད།"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "ཁ་རྒྱག"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "ནོར་འཁྲུལ་བྱུང་ཟིན།"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "བཟོ་སྐུན་པ་ནི"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "མི་སྒེར་ཆ་འཕྲིན་ལ་བརྩི་གསོག་ལྡན་ཞིང་འཚོལ་བྱེད་ནང་དོན་ཕུན་སུམ་པའི་འཚོལ་བཤེར་སྒུལ་བྱེད་མ་ལག"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr ""
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr ""
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr ""
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "མངག་བཅོལ་བྱེད་ཟིན།"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "རྒྱབ་སྐྱོར་ཐོབ་ཟིན་པ།"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "རྒྱབ་སྐྱོར་མི་ཐོབ།"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "སྤྱི་བཏང་།"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "སྒུལ་བྱེད།"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "ལྷུ་ལག"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "ལན།"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "རྐང་རྗེས།"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "ཁྱེད་ཀྱིས་ཆེས་སྤྱོད་བདེ་པའི་འཚོལ་བཤེར་སྐད་རིགས་གང་ཡིན་ནམ།"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "སྐད་རིགས་གདམ་གསེས་ཀྱི་དྲ་ངོས་བརྗེ་བསྒྱུར།"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "འཚོལ་བྱ་གཏགས་པ་ཇི་བཞིན་བཙལ།"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
-msgstr "རི་མོ searx བརྒྱུད་ནས་མངག་བཅོལ་བྱས་ཟིན།"
+msgstr "རི་མོ་མ་ལག་བརྒྱུད་ནས་མངག་བཅོལ་བྱས་ཟིན།"
#: searx/templates/oscar/preferences.html:78
msgid ""
@@ -686,152 +715,196 @@ msgid ""
msgstr "Change how forms are submited, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">learn more about request methods</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "ནང་དོན་བཙག་བྱེད།"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "དྲ་ངོས་ཀྱི་རྣམ་པ་བརྗེ་བསྒྱུར།"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "དྲ་ངོས་རྣམ་པ་འདི་ལ་སྒྲིག་འགོད་གཏོང་།"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "ཚུགས་ཀ"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "མགྱོགས་མྱུར་མཐེབ་གཞོང་།"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr ""
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "སྐད་རིགས་གདམ་གསེས།"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "དུས་ཀྱི་ཁྱབ་ཁོངས།"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "ས་སྙོམས་དུས་ཚོད།"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "མང་མཐའི་དུས་ཚོད།"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
-msgstr "This is the list of searx's instant answering modules."
+msgstr "འདི་ནི་མ་ལག་ནས་ཐོན་པའི་བྲིས་ལན་བསྟར་ཕྲེང་ཡིན།"
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "མིང་།"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "ཐ་སྙད་གཙོ་བོ།"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "འབྲེལ་ཡོད་ངོ་སྤྲོད།"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "དཔེ་བརྗོད།"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
-msgstr "འདི་ནི searx ཡི་བརྡ་སྤྲོད་ལན་སློག་གི་གསལ་ཐོ་ཞིག་ཡིན།"
+msgstr "འདི་ནི མ་ལག་གི་བརྡ་སྤྲོད་ལན་སློག་གི་གསལ་ཐོ་ཞིག་ཡིན།"
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "གསལ་ཐོ་འདི་བརྒྱུད་ནས། ཁྱེད་ཀྱིས searx དྲ་ཚིགས་ཀྱི་བདེན་པ་རང་བཞིན་ལ་མཉམ་ཚོར་ལེན་ཐུབ།"
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "རྗེས་འདེད་ཀྱི་ཡིག་ཆའི་མིང་།"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "ཚད་གཞི།"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "ཉེ་ལམ་རང་མོས་སྒྲིག་འགོད་ཁྲོད་དུ་གསོག་འཇོག་བྱས་ཟིན་པའི་དྲ་གནས་འཚོལ་བཤེར།"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Note: specifying custom settings in the search URL can reduce privacy by leaking data to the clicked result sites."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "འཚོལ་འབྲས།"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "འཚོལ་བཤེར་ནང་དོན་ནི།"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "འཚོལ་བཤེར་སྒུལ་བྱེད་ལ་ནོར་འཁྲུལ་ཅུང་ཟད་བྱུང་།"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "སྦྲེལ་ཐག"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr ""
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "འཚོལ་འབྲས།"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "འཚོལ་བཤེར་ནང་དོན་ནི།"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "འཚོལ་བཤེར་མགོ་རྩོམ།"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr ""
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr ""
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "སྡོམ་རྩིས།"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "དུས་ངེས་མེད།"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "ཉིན་སྔོན་མ།"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "གཟའ་སྔོན་མ།"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "ཟླ་བ་སྔོན་མ།"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "ལོ་སྔོན་མ།"
@@ -894,21 +967,21 @@ msgstr "ཨ། བྱ་འདི།"
msgid "Something went wrong."
msgstr "ནོར་འཁྲུལ་ཆ་གེ་མོ་ཞིག་བྱུང་ཟིན།"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "སྨྱན་གཟུགས་འཆར་པར་བྱེད།"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "སྨྱན་གཟུགས་སྦས་པར་བྱེད།"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "པར་རིས་ཕབ་ལེན།"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "ཡོངས་ཁུངས་ལ་ལྟ།"
@@ -923,47 +996,47 @@ msgid "hide map"
msgstr "ས་བཀྲ་སྦས།"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "ངོ་སྤྲོད་འཆར།"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "ངོ་སྤྲོད་སྦས།"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "ཡིག་ཆའི་ཆེ་ཆུང་།"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "གྲངས་གནས།"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "ཡིག་ཆའི་ཁ་གྲངས།"
@@ -977,22 +1050,34 @@ msgstr "བརྙན་ཟློས་འཆར།"
msgid "hide video"
msgstr "རྙན་ཟློས་སྦས།"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr ""
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "གང་བྱུང་དྲ་ཚིགས་འཆར་པར་བྱེད།"
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "རྣམ་གྲངས་གང་ཡང་རྙེད་རྒྱུ་མ་བྱུང་།"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "རྒྱབ་སྐྱོར་ཐོབ་པའི་སྐད་རིགས་གདམ་གསེས།"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "མདུན་ངོས།"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "མི་སྒེར་གསང་དོན།"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr ""
diff --git a/searx/translations/ca/LC_MESSAGES/messages.po b/searx/translations/ca/LC_MESSAGES/messages.po
index 44d4666..9945637 100644
--- a/searx/translations/ca/LC_MESSAGES/messages.po
+++ b/searx/translations/ca/LC_MESSAGES/messages.po
@@ -1,103 +1,93 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
# Calbasi <joan@calbasi.net>, 2018
# Ecron <ecron_89@hotmail.com>, 2019
-# jmontane, 2018
+# Joan Montané, 2018
+# Joan Montané, 2022
+# Xavier Gz <xgz@tutanota.com>, 2021
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-10-17 13:46+0000\n"
-"Last-Translator: Ecron <ecron_89@hotmail.com>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2014-01-30 14:32+0000\n"
+"Last-Translator: Joan Montané, 2022\n"
"Language-Team: Catalan (http://www.transifex.com/asciimoo/searx/language/ca/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: ca\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "s'ha esgotat el temps d'espera"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "Excepció en la petició"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "Fallada no esperada"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "fitxers"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "general"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "música"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "xarxes socials"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "imatges"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "vídeos"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "informàtica"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "notícies"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "mapa"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "ciència"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "La configuració no és vàlida, editeu-la"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "La configuració no és vàlida"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "error en la cerca"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "fa {minutes} minuts"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "fa {hours} hores i {minutes} minuts"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Generador de valor aleatori"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Genera valors aleatoris diferents"
@@ -109,48 +99,50 @@ msgstr "Funcions estadístiques"
msgid "Compute {functions} of the arguments"
msgstr "Calcula {functions} dels arguments"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Temps del motor (segons)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Càrrega de la pàgina (segons)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Nombre de resultats"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Valoració"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Valoració segons el resultat"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Errors"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "CAPTCHA obligatori"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Obtenir l'itinerari"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(OBSOLET)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (OBSOLET)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Aquesta entrada ha estat substituïda per"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "Reescriptura DOAI"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Evita els llocs de pagaments redirigint a versions d'accés obert de les publicacions si és possible"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "No hi ha resum disponible per a aquesta publicació."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -164,9 +156,19 @@ msgstr "Desplaçament infinit"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Carrega automàticament la pàgina següent en desplaçar-se al final de la pàgina actual"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Reescriu l'Open Access DOI"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Evita els llocs de pagaments redirigint a versions d'accés obert de les publicacions si és possible"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Obre els enllaços de resultats en una pestanya nova"
@@ -249,7 +251,7 @@ msgstr "quant a"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Preferències"
@@ -257,7 +259,7 @@ msgstr "Preferències"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Categories predeterminades"
@@ -265,17 +267,17 @@ msgstr "Categories predeterminades"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Llengua de cerca"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Llengua predeterminada"
@@ -283,35 +285,35 @@ msgstr "Llengua predeterminada"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Llengua de la interfície"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Compleció automàtica"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Servidor intermediari d'imatges"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Activat"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Desactivat"
@@ -319,38 +321,38 @@ msgstr "Desactivat"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Mètode"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Cerca segura"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Estricta"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Moderada"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Cap"
@@ -358,7 +360,7 @@ msgstr "Cap"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Temes"
@@ -393,126 +395,137 @@ msgstr "Vermell"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Motors de cerca usats actualment"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Nom del motor"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Categoria"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Drecera"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Categoria"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Permet"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Bloca"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Aquesta configuració es desa en les galetes. Això ens permet no emmagatzemar les vostres dades."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Aquestes galetes només són per a la vostra conveniència. No les usem per a rastrejar-vos."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "desa"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Restaura els valors predeterminats"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "enrere"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "URL de cerca"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Baixa els resultats"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Respostes"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Suggeriments"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "pàgina anterior"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "pàgina següent"
@@ -551,132 +564,149 @@ msgstr "Descarregador"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "enllaç magnet"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "fitxer torrent"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Feu clic en la lupa per a executar la cerca"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Resultats en pestanyes noves"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Activat"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Desactivat"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "en memòria cau"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Configuració avançada"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Tanca"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Error!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Funciona amb"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
-msgstr "un meta motor de cerca personalitzable i respectuós amb la privadesa"
+msgstr "un metamotor de cerca personalitzable i respectuós amb la privadesa"
+
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Codi font"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Seguiment de problemes"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Servidors públics"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Llengua"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "en servidor intermediari"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "suportat"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "no suportat"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "General"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Motorrs"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Connectat"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Resposter"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Galetes"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "En quina llengua preferiu cercar?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Canvia la llengua de la disposició"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Troba coses tal com escriu"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Envia els resultats d'imatges via el servidor intermediari del searx"
@@ -688,152 +718,196 @@ msgid ""
msgstr "Canvia com es trameten els formularis, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">més informació sobre els mètodes de petició</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filtra el contingut"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Canvia la disposició del searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Trieu un estil per a aquest tema"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Estil"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Drecera"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Solucionador de l'Open Access DOI"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Redirigeix cap a versions d'accés obert de les publicacions si són disponibles (cal un connector)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Tokens d'accés"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Tokens d'accés per a cercadors privats"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Permet tot"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Desactiva tot"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Llengua seleccionada"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Interval de temps"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Temps amitjanat"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Temps màxim"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Aquest és el llistat dels mòduls de resposta ràpida del searx."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Nom"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Paraules clau"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Descripció"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Exemples"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Aquest és el llistat de les galetes, i els seu valor, que el searx té desats en el vostre equip."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Amb aquest llistat, podeu avaluar la transparència del searx."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Nom de la galeta"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Valor"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "URL de cerca de les preferències desades actualment"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Nota: si indiqueu configuracions personalitzades en la URL de cerca podeu reduir la privadesa, amb filtració de dades, en fer clic als llocs dels resultats."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Resultats de la cerca"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Proveu a cercar:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Els motors no poden obtenir cap resultat"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Enllaços"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "Subscripció RSS"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Resultats de la cerca"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Proveu a cercar:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Comença la cerca"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Esborra la cerca"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Esborra"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "estadístiques"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "En qualsevol moment"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Les darreres 24 hores"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "La setmana passada"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "El darrer mes"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "El darrer any"
@@ -896,21 +970,21 @@ msgstr "Cagundena!"
msgid "Something went wrong."
msgstr "Alguna cosa ha anat malament."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "mostra el contingut multimèdia"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "amaga el contingut multimèdia"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Obtén la imatge"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Mostra el codi font"
@@ -925,47 +999,47 @@ msgid "hide map"
msgstr "amaga el mapa"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "mostra els detalls"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "amaga els detalls"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Mida del fitxer"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Bytes"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Nombre de fiters"
@@ -979,22 +1053,34 @@ msgstr "mostra el vídeo"
msgid "hide video"
msgstr "amaga el vídeo"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Autoria"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Llargada"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Carrega'n més..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "No s'ha trobat cap element"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Suporta la llengua seleccionada"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Interfície d'usuari"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Privadesa"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Carregant..."
diff --git a/searx/translations/cs/LC_MESSAGES/messages.po b/searx/translations/cs/LC_MESSAGES/messages.po
index a142123..81125f7 100644
--- a/searx/translations/cs/LC_MESSAGES/messages.po
+++ b/searx/translations/cs/LC_MESSAGES/messages.po
@@ -1,105 +1,95 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
# Clon <fillip1@seznam.cz>, 2017
# Clon <fillip1@seznam.cz>, 2017
-# Václav Zouzalík <Vaclav.Zouzalik@seznam.cz>, 2018
+# Lukáš Kucharczyk <lukas@kucharczyk.xyz>, 2020
+# Venca24 <Vaclav.Zouzalik@seznam.cz>, 2020
+# Venca24 <Vaclav.Zouzalik@seznam.cz>, 2018
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-16 13:52+0000\n"
+"Last-Translator: Lukáš Kucharczyk <lukas@kucharczyk.xyz>\n"
"Language-Team: Czech (http://www.transifex.com/asciimoo/searx/language/cs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: cs\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "timeout"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr ""
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr ""
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "soubory"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "obecné"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "hudba"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "sociální media"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "obrázky"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "videa"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "IT"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "zprávy"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "mapa"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "věda"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
-msgstr "Neplatné nastavení, upravte svoje předvolby"
+msgstr "Neplatné nastavení, upravte své předvolby"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Neplatné nastavení"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "chyba vyhledávání"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
-msgstr "před {minutes} minutamy"
+msgstr "před {minutes} minutami"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "před {hours} hodinami, {minutes} minutami"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
-msgstr "Generátor náhodné hodnoty"
+msgstr "Generátor náhodných hodnot"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
-msgstr "Generuje různé náhodné hodnoty"
+msgstr "Generování náhodných hodnot"
#: searx/answerers/statistics/answerer.py:53
msgid "Statistics functions"
@@ -107,90 +97,102 @@ msgstr "Statistické funkce"
#: searx/answerers/statistics/answerer.py:54
msgid "Compute {functions} of the arguments"
-msgstr "Vypočítá {functions} daného argumentu"
+msgstr "Výpočet funkcí {functions} pro daný argument"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Strojový čas (s)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Načítání stránky (s)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Počet výsledků"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
-msgstr ""
+msgstr "Skóre"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
-msgstr ""
+msgstr "Skóre na výsledek"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Chyby"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "Je vyžadována CAPTCHA"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Získat pokyny"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(ZASTARALÉ)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (ZASTARALÉ)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
-msgstr "Tato položka byla nahrazena"
-
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr ""
+msgstr "Tato položka byla nahrazena položkou"
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Předejít placené sekce přesměrováním na verze s otevřený přístupem pokud je to možné"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Pro tuto publikaci neexistuje žádný abstrakt"
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
-msgstr "Pokud je to možné přepsat HTTP linky na HTTPS"
+msgstr "Přesměrovat HTTP na HTTPS, pokud je to možné"
#: searx/plugins/infinite_scroll.py:3
msgid "Infinite scroll"
-msgstr "Nekonečné rolování"
+msgstr "Nekonečné výsledky"
#: searx/plugins/infinite_scroll.py:4
msgid "Automatically load next page when scrolling to bottom of current page"
-msgstr "Automaticky načíst další stránku při dorolování na konec současné"
+msgstr "Automaticky načítat další výsledky při rolování"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Přesměrování na Open Access DOI"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Automaticky přesměrovat na volně přístupné verze publikací místo placených, pokud je to možné"
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
-msgstr "Otevřít odkazy výsledků na nové panelu"
+msgstr "Otevírat výsledky na novém panelu prohlížeče"
#: searx/plugins/open_results_on_new_tab.py:19
msgid ""
"Results are opened in the same window by default. This plugin overwrites the"
" default behaviour to open links on new tabs/windows. (JavaScript required)"
-msgstr "V základu jsou výsledky jsou otevřeny ve stejném okně. Tento plugin přepisuje základní chování tak že se odkazy otevírají na nové panelu/okně. (požaduje JavaScript)"
+msgstr "Ve výchozím nastavení se výsledky zobrazují v aktuálním okně. Tento zásuvný modul umožňuje otevírat odkazy v novém panelu/okně (vyžaduje JavaScript)."
#: searx/plugins/search_on_category_select.py:18
msgid "Search on category select"
-msgstr "Hledat ve vybrané kategorii"
+msgstr "Spustit hledaní při výběru kategorie"
#: searx/plugins/search_on_category_select.py:19
msgid ""
"Perform search immediately if a category selected. Disable to select "
"multiple categories. (JavaScript required)"
-msgstr "Vyhledávejte okamžitě, pokud je vybrána kategorie. Vypněte, pokud potřebujete zvolit vícero kategorií. (vyžaduje JavaScript)"
+msgstr "Provede hledání okamžitě při výběru kategorie. Pokud je tato funkce vypnuta, je možné vybrat více kategorií (vyžaduje JavaScript)."
#: searx/plugins/self_info.py:20
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
-msgstr "Ukáže vaši IP adresu, pokud dotaz je \"ip\", a váš user agent, pokud dotatz obsahuje \"user agent\"."
+msgstr "Umožňuje hledat informace o sobě: \"ip\" zobrazí vaši IP adresu a \"user agent\" zobrazí identifikátor prohlížeče."
#: searx/plugins/tracker_url_remover.py:26
msgid "Tracker URL remover"
@@ -198,17 +200,17 @@ msgstr "Odstraňovač sledovacích URL"
#: searx/plugins/tracker_url_remover.py:27
msgid "Remove trackers arguments from the returned URL"
-msgstr "Odstranit sledovací parametry z navrácených URL"
+msgstr "Odstranit sledovací parametry z načtených URL"
#: searx/plugins/vim_hotkeys.py:3
msgid "Vim-like hotkeys"
-msgstr "Zkratky jako ve Vim"
+msgstr "Klávesové zkratky jako v textovém editoru Vim"
#: searx/plugins/vim_hotkeys.py:4
msgid ""
"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
"\"h\" key on main or result page to get help."
-msgstr ""
+msgstr "Procházení výsledků pomocí kláves stejných jako v textovém editoru Vim (vyžaduje JavaScript). Stisknutím klávesy \"h\" na hlavní stránce či stránce výsledků zobrazíte nápovědu."
#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
@@ -221,7 +223,7 @@ msgstr "Stránka nenalezena"
#: searx/templates/simple/404.html:6
#, python-format
msgid "Go to %(search_page)s."
-msgstr ""
+msgstr "Přejít na %(search_page)s"
#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
@@ -249,7 +251,7 @@ msgstr "o nás"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Nastavení"
@@ -257,7 +259,7 @@ msgstr "Nastavení"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Základní kategorie"
@@ -265,53 +267,53 @@ msgstr "Základní kategorie"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Jazyk hledání"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
-msgstr "Základní jazyk"
+msgstr "Výchozí jazyk"
#: searx/templates/courgette/preferences.html:24
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
-msgstr "Jazyk prostředí"
+msgstr "Jazyk rozhraní"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
-msgstr "Automatické dokončování"
+msgstr "Našeptávač"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
-msgstr ""
+msgstr "Nepřímé vyhledávání obrázků"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
-msgstr "Aktivní"
+msgstr "Zapnuto"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Vypnuto"
@@ -319,46 +321,46 @@ msgstr "Vypnuto"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
-msgstr "Metoda"
+msgstr "Dotazovací metoda"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Bezpečné vyhledávání"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
-msgstr "Striktní"
+msgstr "Přísné"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Střední"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
-msgstr "Žádné"
+msgstr "Vypnuto"
#: searx/templates/courgette/preferences.html:73
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Motivy"
@@ -368,7 +370,7 @@ msgstr "Barva"
#: searx/templates/courgette/preferences.html:86
msgid "Blue (default)"
-msgstr "Modrá (základní)"
+msgstr "Modrá (výchozí)"
#: searx/templates/courgette/preferences.html:87
msgid "Violet"
@@ -393,126 +395,137 @@ msgstr "Červená"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
-msgstr "Nyní používaný vyhledávač"
+msgstr "Aktuálně používané vyhledávače"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Jméno vyhledávače"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Kategorie"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Zkratka"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Kategorie"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Povolit"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
-msgstr "Blokovat"
+msgstr "Zakázat"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
-msgstr "Tato nastavení jsou uložena ve vašem cookies, to nám umožňuje taková data o vás neukládat."
+msgstr "Tato nastavení jsou uložena ve vašich cookies, což nám umožňuje tyto data neuchovávat nikde jinde."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
-msgstr "Tato cookie slouží výhradně vašemu pohodlí, neužíváme je pro vaše sledování."
+msgstr "Tyto cookies existují výhradně pro vaše pohodlí, nepoužíváme je ke sledování."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "uložit"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
-msgstr "Obnovit základní"
+msgstr "obnovit výchozí"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "zpět"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
-msgstr "Hledat URL"
+msgstr "URL vyhledávání"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
-msgstr "Výsledky stahování"
+msgstr "Stáhnout výsledky vyhledávání"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Odpovědi"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Návrhy"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "předchozí stránka"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "další stránka"
@@ -551,300 +564,361 @@ msgstr "Leecher"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
-msgstr ""
+msgstr "odkaz magnet"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "soubor torrentu"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
-msgstr ""
+msgstr "Vyhledávání provedete kliknutím na lupu"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Výsledky na novém panelu"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Zapnuto"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Vypnuto"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
-msgstr ""
+msgstr "archivovaná verze"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Pokročilá nastavení"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Zavřít"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Chyba!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
-msgstr ""
+msgstr "Poháněno softwarem"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
-msgstr "soukromý respektující, heknutelný meta-vyhledávač"
+msgstr "soukromí respektujícím, nastavitelným multivyhledávačem"
+
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Zdrojový kód"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Hlášení chyb"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Veřejné instance"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Jazyk"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
-msgstr ""
+msgstr "přes proxy"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
-msgstr ""
+msgstr "podporováno"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
-msgstr ""
+msgstr "nepodporováno"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Obecné"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Vyhledávače"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Zásuvné moduly"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
-msgstr "Odpovědi"
+msgstr "Odpovídači"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cookies"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Jaký jazyk vyhledávání upřednostňujete?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
-msgstr "Změnít jazyk prostředí"
+msgstr "Nastavit jazyk rozhraní"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Vyhledávat během psaní"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
-msgstr ""
+msgstr "Načítat výsledky vyhledávání obrázků přes proxy"
#: searx/templates/oscar/preferences.html:78
msgid ""
"Change how forms are submited, <a "
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
" rel=\"external\">learn more about request methods</a>"
-msgstr ""
+msgstr "Určuje způsob odesílání formulářů. Informace o dotazovacích metodách <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">viz Wikipedie</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filtrovat obsah"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
-msgstr "Změnit uspořádání searx"
+msgstr "Motiv rozhraní searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
-msgstr "Vybrat styl tohoto motivu"
+msgstr "Styl daného motivu"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Styl"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Zkratka"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Web pro přesměrování na Open Access DOI"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Přesměrovat na volně přístupné verze publikací, pokud jsou k dispozici (vyžaduje zásuvný modul)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Tokeny vyhledávačů"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Přístupové tokeny pro soukromé vyhledávače"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Povolit vše"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Zakázat vše"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
-msgstr "Zvolený jazyk"
+msgstr "Váš jazyk vyhledávání"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Čásový interval"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Prům. čas"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Max. čas"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
-msgstr "Toto je seznam modulů okamžité odpovědi searxu."
+msgstr "Toto je seznam modulů vyhledávače searx, které poskytují okamžité odpovědi."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
-msgstr "Jméno"
+msgstr "Název"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Klíčová slova"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Popis"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Příklady"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
-msgstr "Toto je seznam cookies a jejich hodnot které searx ukládá ve vašem počítači."
+msgstr "Toto je seznam cookies a jejich hodnot, které searx ukládá na vašem počítači."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
-msgstr "S tímto seznamem můžete posoudit průhlednost searxu"
+msgstr "Pomocí něj můžete posoudit, jestli je searx transparentní."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Název cookie"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Hodnota"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
-msgstr ""
+msgstr "URL pro vyhledávání s aktuálně uloženými předvolbami"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
-msgstr ""
+msgstr "Poznámka: zadaní vlastních nastavení v URL může snížit soukromí prozrazením dat při kliknutí na výsledky hledání."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Výsledky vyhledávání"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr ""
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
-msgstr ""
+msgstr "Vyhledávače nemohou získat výsledky"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Odkazy"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "Odběr RSS"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Výsledky vyhledávání"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Zkuste vyhledat:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Začít hledat"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Smazat vyhledávání"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Smazat"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "statistiky"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Kdykoli"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Dnes"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Tento týden"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Měsíc"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Rok"
#: searx/templates/oscar/messages/first_time.html:6
#: searx/templates/oscar/messages/no_data_available.html:3
msgid "Heads up!"
-msgstr "Hlavu vzhůru!"
+msgstr "Jen krátká informace."
#: searx/templates/oscar/messages/first_time.html:7
msgid "It look like you are using searx first time."
-msgstr "Zdá se že používáte searx poprvé."
+msgstr "Zdá se, že používáte searx poprvé."
#: searx/templates/oscar/messages/no_cookies.html:3
msgid "Information!"
@@ -852,26 +926,26 @@ msgstr "Informace!"
#: searx/templates/oscar/messages/no_cookies.html:4
msgid "currently, there are no cookies defined."
-msgstr "nyní, nejsou definovány žádné cookies."
+msgstr "aktuálně nejsou definované žádné cookies."
#: searx/templates/oscar/messages/no_data_available.html:4
msgid "There is currently no data available. "
-msgstr "Data nyní nejsou dostupná."
+msgstr "Aktuálně nejsou k dispozici žádná data."
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
msgid "Engines cannot retrieve results."
-msgstr ""
+msgstr "Načtení výsledků vyhledávači se nezdařilo."
#: searx/templates/oscar/messages/no_results.html:10
#: searx/templates/simple/messages/no_results.html:10
msgid "Please, try again later or find another searx instance."
-msgstr "Zkuste prosím později, nebo na jiné instanci searxu."
+msgstr "Zkuste to prosím později, nebo použijte jinou instanci searx."
#: searx/templates/oscar/messages/no_results.html:14
#: searx/templates/simple/messages/no_results.html:14
msgid "Sorry!"
-msgstr "Pardón!"
+msgstr "Omlouváme se!"
#: searx/templates/oscar/messages/no_results.html:15
#: searx/templates/simple/messages/no_results.html:15
@@ -896,21 +970,21 @@ msgstr "Ale ne!"
msgid "Something went wrong."
msgstr "Něco se nepovedlo."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
-msgstr "ukázat media"
+msgstr "ukázat média"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
-msgstr "skrýt media"
+msgstr "skrýt média"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
-msgstr "Získat obrázek"
+msgstr "Načíst obrázek"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Zobrazit zdroj"
@@ -925,47 +999,47 @@ msgid "hide map"
msgstr "skrýt mapu"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
-msgstr "zobrazit detaily"
+msgstr "zobrazit podrobnosti"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
-msgstr "skrýt detaily"
+msgstr "skrýt podrobnosti"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Velikost"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "bajtů"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Počet souborů"
@@ -979,22 +1053,34 @@ msgstr "zobrazit video"
msgid "hide video"
msgstr "skrýt video"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Autor"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Délka"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Načíst více…"
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
-msgstr ""
+msgstr "Nic nenalezeno"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Podporuje vybraný jazyk"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
-msgstr ""
+msgstr "Uživatelské rozhraní"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Soukromí"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Načítání…"
diff --git a/searx/translations/cy/LC_MESSAGES/messages.po b/searx/translations/cy/LC_MESSAGES/messages.po
index 04d8a21..a759138 100644
--- a/searx/translations/cy/LC_MESSAGES/messages.po
+++ b/searx/translations/cy/LC_MESSAGES/messages.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -8,94 +8,82 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 13:10+0000\n"
+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
"Language-Team: Welsh (http://www.transifex.com/asciimoo/searx/language/cy/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: cy\n"
"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr ""
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr ""
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr ""
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "ffeiliau"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "cyffredinol"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "cerddoriaeth"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "cyfryngau cymdeithasol"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "delweddau"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "fideos"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "Technoleg"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "newyddion"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "map"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "gwyddoniaeth"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Gosodiadau annilys. Addasa dy ddewisiadau."
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Gosodiadau annilys"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "gwall chwilio"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} munud yn ôl"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} awr, {minutes} munud yn ôl"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr ""
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr ""
@@ -107,47 +95,49 @@ msgstr ""
msgid "Compute {functions} of the arguments"
msgstr ""
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr ""
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr ""
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Nifer o ganlyniadau"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Sgoriau"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr ""
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Gwallau"
-#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
msgstr ""
-#: searx/engines/pdbe.py:91
-msgid "This entry has been superseded by"
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
msgstr ""
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
+#: searx/engines/pdbe.py:87
+msgid "{title} (OBSOLETE)"
msgstr ""
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
+#: searx/engines/pdbe.py:94
+msgid "This entry has been superseded by"
+msgstr ""
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
msgstr ""
#: searx/plugins/https_rewrite.py:32
@@ -162,9 +152,19 @@ msgstr ""
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr ""
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr ""
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Agor dolenni canlyniadau mewn tabiau newydd yn y porwr"
@@ -247,7 +247,7 @@ msgstr "ynghylch"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Dewisiadau"
@@ -255,7 +255,7 @@ msgstr "Dewisiadau"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Categorïau arferol"
@@ -263,17 +263,17 @@ msgstr "Categorïau arferol"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Iaith chwilio"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Iaith arferol"
@@ -281,35 +281,35 @@ msgstr "Iaith arferol"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Iaith y rhyngwyneb"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Awto-gwblhau"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr ""
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Galluogwyd"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Analluogwyd"
@@ -317,38 +317,38 @@ msgstr "Analluogwyd"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Dull"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr ""
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Caeth"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Cymhedrol"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Dim"
@@ -356,7 +356,7 @@ msgstr "Dim"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Themâu"
@@ -391,126 +391,137 @@ msgstr "Coch"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr ""
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr ""
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Categori"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Llwybr Byr"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Categori"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Caniatáu"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Rhwystro"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr ""
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr ""
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "cadw"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Ailosod rhagosodiadau"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "nôl"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr ""
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Lawrlwytho'r canlyniadau"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Atebion"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Awgrymiadau"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "tudalen ddiwethaf"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "tudalen nesaf"
@@ -549,132 +560,149 @@ msgstr "Lawrlwythwyr"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "dolen magnet"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "ffeil torrent"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Cliciwch ar y chwyddwydr i berfformio chwiliad"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Canlyniadau mewn tabiau newydd"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Ymlaen"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "I ffwrdd"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr ""
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Gosodiadau uwch"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Cau"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Gwall!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Pwerwyd gan"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr ""
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr ""
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr ""
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr ""
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr ""
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "cefnogir"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "ni chefnogir"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Cyffredin"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Peiriannau"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Ategolion"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Atebwyr"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cwcis"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Ym mha iaith wyt ti'n ffafrio chwilio?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Newid iaith rhyngwyneb searX"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Darganfod pethau wrth i chi deipio"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr ""
@@ -686,152 +714,196 @@ msgid ""
msgstr ""
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr ""
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Newid cynllun searX"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Dewis arddull ar gyfer y thema hon"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Arddull"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Llwybr Byr"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr ""
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Iaith a ddewiswyd"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Cyfnod amser"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr ""
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr ""
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr ""
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Enw"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Allweddeiriau"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Disgrifiad"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Enghreifftiau"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Dyma restr y cwcis, a'u gwerthoedd, mae searX yn eu cadw ar eich dyfais."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr ""
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Enw cwci"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Gwerth"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr ""
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr ""
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Canlyniadau chwilio"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Rho gynnig ar chwilio am:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Ni all y peiriannau cael canlyniadau"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Dolenni"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr ""
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Canlyniadau chwilio"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Rho gynnig ar chwilio am:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Dechrau chwilio"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr ""
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr ""
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "ystadegau"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Unrhyw amser"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Y diwrnod diwethaf"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Yr wythnos diwethaf"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Y mis diwethaf"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Y flwyddyn ddiwethaf"
@@ -894,21 +966,21 @@ msgstr ""
msgid "Something went wrong."
msgstr "Aeth rhywbeth o'i le."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "dangos cyfryngau"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "cuddio cyfryngau"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Cael y ddelwedd"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Gweld y ffynhonnell"
@@ -923,47 +995,47 @@ msgid "hide map"
msgstr "cuddio map"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "dangos manylion"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "cuddio manylion"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Maint ffeil"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Beitiau"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Nifer o Ffeiliau"
@@ -977,22 +1049,34 @@ msgstr "dangos fideo"
msgid "hide video"
msgstr "cuddio fideo"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr ""
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Dysgu mwy..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Ni chanfuwyd eitem"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Cefnogir yr iaith a ddewiswyd"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Rhyngwyneb defnyddiwr"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Preifatrwydd"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr ""
diff --git a/searx/translations/da/LC_MESSAGES/messages.po b/searx/translations/da/LC_MESSAGES/messages.po
index 848b986..96e2d93 100644
--- a/searx/translations/da/LC_MESSAGES/messages.po
+++ b/searx/translations/da/LC_MESSAGES/messages.po
@@ -1,102 +1,91 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
# Mikkel Kirkgaard Nielsen <memb_transifex@mikini.dk>, 2018
# Morten Krogh Andersen <spam1@krogh.net>, 2017
+# 35ae82d250298a39a7d0c9ba772d7486_c68c6fa, 2021
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: Morten Krogh Andersen <spam1@krogh.net>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2014-01-30 14:32+0000\n"
+"Last-Translator: 35ae82d250298a39a7d0c9ba772d7486_c68c6fa, 2021\n"
"Language-Team: Danish (http://www.transifex.com/asciimoo/searx/language/da/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: da\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "tidsudløb"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "forespørgsels-undtagelse"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "uventet nedlukning"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "filer"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "generelt"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "musik"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "sociale medier"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "billeder"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "videoer"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "it"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "nyheder"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "kort"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "videnskab"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Ugyldige indstillinger, redigér venligst dine valg"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Ugyldig indstilling"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "søgefejl"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "for {minutes} minut(ter) siden"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "for {hours} time(r) og {minutes} minut(ter) siden"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Generator af tilfældig værdi"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Generér forskellige tilfældige værdier"
@@ -108,48 +97,50 @@ msgstr "Statistiske funktioner"
msgid "Compute {functions} of the arguments"
msgstr "Beregn {functions} af parametrene"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Søgemaskine-tid (sek)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Sideindlæsninger (sek)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Antal resultater"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Vægtninger"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Vægtninger pr. resultat"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Fejl"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "CAPTCHA kræves"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Få retninger"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(OVERFLØDIG)"
+msgid "{title} (OBSOLETE)"
+msgstr "{titel} (FORÆLDET)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Denne værdi er blevet overskrevet af"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "Omskriv DOAI"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Undgå betalingsmure ved at viderestille til en åbent tilgængelig version, hvis en sådan findes"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Intet sammendrag er tilgængelig for denne publikation."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -163,9 +154,19 @@ msgstr "Uendelig scrolling"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Indlæs automatisk næste side, når der scrolles til bunden af den nuværende side"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Open Access DOI-omskrivning"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Undgå betalingsmure ved at viderestille til en åbent tilgængelig version, hvis en sådan findes"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Åben resultat-link i en ny browser-tab"
@@ -248,7 +249,7 @@ msgstr "om"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Indstillinger"
@@ -256,7 +257,7 @@ msgstr "Indstillinger"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Standardkategorier"
@@ -264,17 +265,17 @@ msgstr "Standardkategorier"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Søgesprog"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Standardsprog"
@@ -282,35 +283,35 @@ msgstr "Standardsprog"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Sprog i brugergrænsefladen"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Automatisk fuldførelse"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Billede-proxy"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Slået til"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Slået fra"
@@ -318,38 +319,38 @@ msgstr "Slået fra"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Metode"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "SafeSearch"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Stringent"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Moderat"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Ingen"
@@ -357,7 +358,7 @@ msgstr "Ingen"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Temaer"
@@ -392,126 +393,137 @@ msgstr "Rød"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Pt. anvendte søgemaskiner"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Søgemaskinenavn"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Kategori"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Genvej"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Kategori"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Tillad"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Blokér"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Disse indstillnger gemmes cookies på din enhed. Dette gør, at vi ikke behøver at gemme data om dig"
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Disse cookies er kun til dine data. Vi benytter ikke disse til at spore dig."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "gem"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Nustil til standard"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "tilbage"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Søge-URL"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Hent resultater"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Svar"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Forslag"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "forrige side"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "næste side"
@@ -550,132 +562,149 @@ msgstr "Henter"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "magnet-link"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "torrent-fil"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Klik på forstørrelsesglasset for at udføre søgning"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Resultater på nye tabs"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Til"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Fra"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "cached"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Avancerede indstillinger"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Luk"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Fejl!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Leveret af"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "en privatlivs--respekterende, hackbar meta-søgemaskine"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Kilde kode"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Fejl tracker"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Offentlige eksempler"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Sprog"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "viderestillet"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "understøttet"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "ikke-understøttet"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Generelt"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Søgemaskiner"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Plugins"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Svarere"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cookies"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Hvilket sprog foretrækker du til søgninger?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Ændring af layout-sproget"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Find under indtastning"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Send billeder via searx"
@@ -687,152 +716,196 @@ msgid ""
msgstr "Ændring af hvordan webforms indsendes, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">lær mere om request-metoder</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filtrér indhold"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Ændring af searx layout"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Vælg stil for dette tema"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Stil"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Genvej"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Open Access DOI-forløser"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Omdiriger til open-access-udgaver af publikationer hvis tilgængelig (plugin påkrævet)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Motor token"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Få adgang til tokens for private motorer"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Tillad alle"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Deaktiver alle"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Valgt sprog"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Tidsinterval"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Gns. tid"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Maks-tid"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Dette er listen over searx's installationens svar-moduler"
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Navn"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Nøgleord"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Beskrivelse"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Eksempler"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Dette er listen over de cookies og værdier searx gemmer på din computer"
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Med denne liste, kan du bekræfte gennemsigtigheden af searx"
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Cookie-navn"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Værdi"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "Søge-URL for den nuværende gemte indstilling"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Bemærk: brugertilpassede indstillinger i søge-URL kan reducere niveauet af beskyttelse ved at lække data til de sider der klikkes på i resultatet."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Søgereresultater"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Prøv at søge efter:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Søgemotorer kan ikke hente resultater"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Links"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "RSS abonnement"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Søgereresultater"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Prøv at søge efter:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Start søgning"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Ryd søgning"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Ryd"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "statistik"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Når som helst"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Det seneste døgn"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Den seneste uge"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Den seneste måned"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Det sidste år"
@@ -895,21 +968,21 @@ msgstr "Åh, pokkers!"
msgid "Something went wrong."
msgstr "Noget gik galt"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "vis media"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "skjul media"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Hent billede"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Vis kilde"
@@ -924,47 +997,47 @@ msgid "hide map"
msgstr "skjul kort"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "vis detaljer"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "skjul detaljer"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Filstørrelse"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Bytes"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Antal filer"
@@ -978,22 +1051,34 @@ msgstr "vis video"
msgid "hide video"
msgstr "skjul video"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Forfatter"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Længde"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Indlæs mere..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Intet fundet"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Undstøtter valgte sprog"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Brugerinterface"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Privatliv"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Indlæser..."
diff --git a/searx/translations/de/LC_MESSAGES/messages.po b/searx/translations/de/LC_MESSAGES/messages.po
index 6aa03b1..df9c358 100644
--- a/searx/translations/de/LC_MESSAGES/messages.po
+++ b/searx/translations/de/LC_MESSAGES/messages.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -7,11 +7,13 @@
# Bamstam, 2017
# Thomas Pointhuber, 2014-2015
# Ettore Atalan <atalanttore@googlemail.com>, 2016
+# NeoCode <amecus79@gmail.com>, 2020
# Jona Abdinghoff <jona.abdinghoff@gmail.com>, 2016
# Marc Abonce Seguin, 2019
# Mario Siegmann <mario_siegmann@web.de>, 2017
# Bamstam, 2019
# Max <theshirinzu@gmail.com>, 2015
+# NeoCode <amecus79@gmail.com>, 2020
# pointhi, 2014
# rike, 2014
# S R <acc-transifex@rie.hm>, 2018
@@ -23,94 +25,82 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-12-11 07:07+0000\n"
-"Last-Translator: Marc Abonce Seguin\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-09-10 17:09+0000\n"
+"Last-Translator: NeoCode <amecus79@gmail.com>\n"
"Language-Team: German (http://www.transifex.com/asciimoo/searx/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "Zeitüberschreitung"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "Abbruch der Anfrage"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "Unerwarteter Absturz"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "Dateien"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "Allgemein"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "Musik"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "Soziale Medien"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "Bilder"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "Videos"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "IT"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "Neuigkeiten"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "Karte"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "Wissenschaft"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Ungültige Einstellungen. Bitte diese überprüfen"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Ungültige Einstellungen"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "Suchfehler"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "vor {minutes} Minute(n)"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "vor {hours} Stunde(n), {minutes} Minute(n)"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Zufallswertgenerator"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Erzeugt diverse Zufallswerte"
@@ -122,48 +112,50 @@ msgstr "Statistikfuntionen"
msgid "Compute {functions} of the arguments"
msgstr "{functions} der Argumente berechnen"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Suchmaschinen Zeit (sek)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Ladezeit (sek)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Trefferanzahl"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Punkte"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Punkte pro Treffer"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Fehler"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "CAPTCHA erforderlich"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Richtung holen"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(OBSOLET)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (OBSOLET)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Dieser Eintrag wurde überschrieben von"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "DOAI umschreiben"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Bezahlbeschränkungen durch die Weiterleitung zu der verfügbaren Open-Access-Version vermeiden"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Keine Zusammenfassung für die Veröffentlichung verfügbar."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -177,9 +169,19 @@ msgstr "Unendliches Scrollen"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Lädt automatisch die nächste Seite, wenn das Ende der aktuellen Seite erreicht wurde"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Open-Access-DOI umschreiben"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Bezahlbeschränkungen durch die Weiterleitung zu der verfügbaren Open-Access-Version vermeiden"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Links in einem neuen Browser-Tab öffnen"
@@ -262,7 +264,7 @@ msgstr "Über uns"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Einstellungen"
@@ -270,7 +272,7 @@ msgstr "Einstellungen"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Standardkategorien"
@@ -278,17 +280,17 @@ msgstr "Standardkategorien"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Suchsprache"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Standardsprache"
@@ -296,35 +298,35 @@ msgstr "Standardsprache"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Oberflächensprache"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Autovervollständigung"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Bilder-Proxy"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Aktiviert"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Deaktiviert"
@@ -332,38 +334,38 @@ msgstr "Deaktiviert"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Methode"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Sichere Suche (SafeSearch)"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Streng"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Moderat"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Keine"
@@ -371,7 +373,7 @@ msgstr "Keine"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Designs"
@@ -406,126 +408,137 @@ msgstr "Rot"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Aktuell benutzte Suchmaschinen"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Suchmaschinenname"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Kategorie"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Abkürzung"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Kategorie"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Erlauben"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Blockieren"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Diese Informationen werden in Cookies auf Ihrem Rechner gespeichert, damit wir keine Ihrer persönlichen Daten speichern müssen."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Diese Cookies dienen einzig Ihrem Komfort. Wir verwenden sie nicht, um Sie zu überwachen."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "Speichern"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Zurücksetzen"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "Zurück"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Such-URL"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Ergebnisse herunterladen"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Antworten"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Vorschläge"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "vorherige Seite"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "nächste Seite"
@@ -564,132 +577,149 @@ msgstr "Leecher"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "Magnet Link"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "Torrent"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "klicke auf die Lupe, um die Suche zu starten"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Ergebnisse in neuem Tab"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Ein"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Aus"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "Im Cache"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Erweiterte Einstellungen"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Schließen"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Fehler!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Betrieben mit"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "eine privatsphären-respektierende, hackbare Metasuchmaschine"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Quellcode"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Bugtracker"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Öffentliche Instanzen"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Sprache"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "proxied"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "Unterstützt"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "Nicht unterstützt"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Allgemein"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Suchmaschinen"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Erweiterungen"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Antworten"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cookies"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "welche Sprache bevorzugst du für die Suche?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "ändere die Sprache des Layouts"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "zeige Vorschläge während der Eingabe an"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Bilder über einen Proxy an Searx weiterleiten"
@@ -701,152 +731,196 @@ msgid ""
msgstr "ändere wie Formulare übertragen werden, <a href=\"https://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol#HTTP-Anfragemethoden\" rel=\"external\">lerne mehr über Anfragemethoden</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Inhalte filtern"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "ändere das Aussehen von searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Stil für dieses Thema auswählen"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Aussehen"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Abkürzung"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Open Access DOI resolver"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Weiterleitung zu frei zugänglichen Versionen von Veröffentlichungen, wenn verfügbar (Plugin benötigt)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Maschinentoken"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Zugangstoken für private such Maschinen"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Alle zulassen"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Alle deaktivieren"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Ausgewählte Sprache"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Zeitbereich"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "mittlere Zeit"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "max. Zeit"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Dies ist die Liste der in searx verfügbaren Module für Sofortantworten "
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Name"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Schlüsselwörter"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Beschreibung"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Beispiele"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Die nachfolgende Liste zeigt alle Cookies, die searx auf deinem Computer speichert."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Mit dieser Liste können Sie die Transparenz von searx einschätzen"
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Cookie-Name"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Wert"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "Such-URL für die aktuell gespeicherten Einstellungen"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Hinweis: Das Festlegen eigener Einstellungen in der Such-URL kann Ihre Privatsphäre reduzieren, weil gegebenenfalls ungewollt Daten an die ausgewählten Ergebnisseiten übermittelt werden."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Suchergebnisse"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Suche nach:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Die folgenden Suchmaschinen können die Ergebnisse nicht empfangen"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Links"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "RSS-Abonnement"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Suchergebnisse"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Suche nach:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Suche starten"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Suche löschen"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "löschen"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "Statistiken"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "beliebiger Zeitpunkt"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Letzter Tag"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Letzte Woche"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Letzter Monat"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Letztes Jahr"
@@ -909,21 +983,21 @@ msgstr "Oh nein!"
msgid "Something went wrong."
msgstr "Irgendetwas ist falsch gelaufen."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "Medien anzeigen"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "Medien verstecken"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Bild ansehen"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Seite besuchen"
@@ -938,47 +1012,47 @@ msgid "hide map"
msgstr "Karte verstecken"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "Details anzeigen"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "Details verstecken"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Dateigröße"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Bytes"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Anzahl der Dateien"
@@ -992,22 +1066,34 @@ msgstr "Video anzeigen"
msgid "hide video"
msgstr "Video verstecken"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Autor"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Länge"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Lade mehr..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Keine Einträge gefunden"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Unterstützt die ausgewählten Sprachen"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Benutzeroberfläche"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Privatsphäre"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Lade..."
diff --git a/searx/translations/el_GR/LC_MESSAGES/messages.po b/searx/translations/el_GR/LC_MESSAGES/messages.po
index c93f81a..5fad2d2 100644
--- a/searx/translations/el_GR/LC_MESSAGES/messages.po
+++ b/searx/translations/el_GR/LC_MESSAGES/messages.po
@@ -1,102 +1,91 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
# xinomilo <dimitris@stinpriza.org>, 2017-2018
# xinomilo <dimitris@stinpriza.org>, 2015
+# Stavros Gero <gstavros1@gmail.com>, 2022
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2014-01-30 14:32+0000\n"
+"Last-Translator: Stavros Gero <gstavros1@gmail.com>, 2022\n"
"Language-Team: Greek (Greece) (http://www.transifex.com/asciimoo/searx/language/el_GR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: el_GR\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr ""
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr ""
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr ""
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "αρχεία"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "γενικά"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "μουσική"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "κοινωνικά δίκτυα"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "εικόνες"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr ""
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr ""
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "νέα"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "χάρτης"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "επιστήμη"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr ""
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr ""
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "λάθος αναζήτησης"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} λεπτά πριν"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr ""
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Γεννήτρια τυχαίων τιμών"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr ""
@@ -108,47 +97,49 @@ msgstr ""
msgid "Compute {functions} of the arguments"
msgstr ""
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Χρόνος μηχανής (δευτ)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Φόρτωση σελίδας (δευτ)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Αριθμός αποτελεσμάτων"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr ""
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr ""
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Λάθη"
-#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
msgstr ""
-#: searx/engines/pdbe.py:91
-msgid "This entry has been superseded by"
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
msgstr ""
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
+#: searx/engines/pdbe.py:87
+msgid "{title} (OBSOLETE)"
msgstr ""
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
+#: searx/engines/pdbe.py:94
+msgid "This entry has been superseded by"
+msgstr ""
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
msgstr ""
#: searx/plugins/https_rewrite.py:32
@@ -163,9 +154,19 @@ msgstr ""
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr ""
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr ""
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Άνοιξε τους συνδέσμους των αποτελεσμάτων σε νέα καρτέλα περιηγητή"
@@ -248,7 +249,7 @@ msgstr "σχετικά"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Προτιμήσεις"
@@ -256,7 +257,7 @@ msgstr "Προτιμήσεις"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Προεπιλεγμένες κατηγορίες"
@@ -264,17 +265,17 @@ msgstr "Προεπιλεγμένες κατηγορίες"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Γλώσσα αναζήτησης"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Προεπιλεγμένη γλώσσα"
@@ -282,35 +283,35 @@ msgstr "Προεπιλεγμένη γλώσσα"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr ""
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Αυτόματη συμπλήρωση"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr ""
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Ενεργοποιημένο"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Απενεργοποιημένο"
@@ -318,38 +319,38 @@ msgstr "Απενεργοποιημένο"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Μέθοδος"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Ασφαλής Αναζήτηση"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr ""
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr ""
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Κανένα"
@@ -357,7 +358,7 @@ msgstr "Κανένα"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Θέματα"
@@ -392,126 +393,137 @@ msgstr "Κόκκινο"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Μηχανές αναζήτησης που χρησιμοποιούνται"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Όνομα μηχανής"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Κατηγορία"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Συντόμευση"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Κατηγορία"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Επέτρεψε"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Αποκλεισμός"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr ""
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr ""
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "αποθήκευση"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Επαναφορά προεπιλογών"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "πίσω"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Σύνδεσμος αναζήτησης"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr ""
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Απαντήσεις"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Προτάσεις"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "προηγούμενη σελίδα"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "επόμενη σελίδα"
@@ -550,132 +562,149 @@ msgstr ""
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "σύνδεσμος magnet"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "αρχείο torrent"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr ""
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Αποτελέσματα σε νέες καρτέλες"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Ενεργό"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Ανενεργό"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr ""
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Ρυθμίσεις για προχωρημένους"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr ""
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Λάθος!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr ""
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr ""
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr ""
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr ""
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr ""
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr ""
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "υποστηρίζεται"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "δεν υποστηρίζεται"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Γενικά"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Μηχανές"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Πρόσθετα"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr ""
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr ""
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Τι γλώσσα προτιμάτε για αναζήτηση;"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr ""
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Εύρεση όρων κατά την πληκτρολόγηση"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr ""
@@ -687,152 +716,196 @@ msgid ""
msgstr ""
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Φιλτράρισμα περιεχομένου"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr ""
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr ""
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
+msgstr "Εμφάνιση"
+
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
msgstr ""
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Συντόμευση"
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Να επιτρέπονται όλα"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Απενεργοποίηση όλων"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Επιλεγμένη γλώσσα"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
-msgstr ""
+msgstr "Εύρος ώρας"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr ""
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr ""
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr ""
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Όνομα"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Λέξεις κλειδιά"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Περιγραφή"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Παραδείγματα"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr ""
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr ""
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr ""
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Τιμή"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr ""
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr ""
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Αποτελέσματα αναζήτησης"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Δοκιμάστε αναζήτηση για:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Οι μηχανές δε μπορούν να φέρουν αποτελέσματα"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Σύνδεσμοι"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "Παρακολούθηση μέσω RSS"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Αποτελέσματα αναζήτησης"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Δοκιμάστε αναζήτηση για:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Έναρξη αναζήτησης"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Σβήσιμο αναζήτησης"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Σβήσιμο"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "στατιστικά"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Οποιαδήποτε στιγμή"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Τελευταία μέρα"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Τελευταία βδομάδα"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Τελευταίος μήνας"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Τελευταίο έτος"
@@ -895,21 +968,21 @@ msgstr "Φτου!"
msgid "Something went wrong."
msgstr "Κάτι πήγε στραβά."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "προβολή πολυμέσων"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "απόκρυψη πολυμέσων"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr ""
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Προβολή πηγής"
@@ -924,47 +997,47 @@ msgid "hide map"
msgstr "απόκρυψη χάρτη"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "προβολή λεπτομερειών"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "απόκρυψη λεπτομερειών"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Μέγεθος αρχείου"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr ""
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr ""
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr ""
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr ""
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr ""
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Αριθμός Αρχείων"
@@ -978,22 +1051,34 @@ msgstr "προβολή βίντεο"
msgid "hide video"
msgstr "απόκρυψη βίντεο"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr ""
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Φόρτωση περισσότερων..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr ""
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Υποστηρίζει την επιλεγμένη γλώσσα"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr ""
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Ιδιωτικότητα"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Φόρτωση..."
diff --git a/searx/translations/eo/LC_MESSAGES/messages.po b/searx/translations/eo/LC_MESSAGES/messages.po
index 1f06ed5..16d1c3d 100644
--- a/searx/translations/eo/LC_MESSAGES/messages.po
+++ b/searx/translations/eo/LC_MESSAGES/messages.po
@@ -1,104 +1,92 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
# Jack Stehn <jaxadeo@gmail.com>, 2017
-# juanda097 <juanda097@protonmail.ch>, 2015-2016
+# Juan Jaramillo <juanda097@protonmail.ch>, 2015-2016
# pizzaiolo, 2016
-# Václav Zouzalík <Vaclav.Zouzalik@seznam.cz>, 2018
+# Venca24 <Vaclav.Zouzalik@seznam.cz>, 2018
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: pizzaiolo\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 13:10+0000\n"
+"Last-Translator: Venca24 <Vaclav.Zouzalik@seznam.cz>\n"
"Language-Team: Esperanto (http://www.transifex.com/asciimoo/searx/language/eo/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: eo\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "tempolimo"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "escepto de peto"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "neatendita paneo"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "dosieroj"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "ĝenerala"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "muziko"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "sociaj retoj"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "bildoj"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "videoj"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "komputiko"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "novaĵoj"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "mapo"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "scienco"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Nevalidaj agordoj, bonvolu redakti viajn agordojn"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Nevalidaj agordoj"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "serĉa eraro"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "antaŭ {minutes} minuto(j)"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "antaŭ {hours} horo(j), {minutes} minuto(j)"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Hazardvalora generilo"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Ĝi generas diversajn hazardajn valorojn"
@@ -110,48 +98,50 @@ msgstr "Statistikaj funkcioj"
msgid "Compute {functions} of the arguments"
msgstr "Kalkulas {functions} el la argumentoj"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Motora tempo (s)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Paĝŝarĝo (sekundoj)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Nombro da rezultoj"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Poentaroj"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Poentaroj por unu rezulto"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Eraroj"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr ""
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr ""
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(MALNOVA)"
+msgid "{title} (OBSOLETE)"
+msgstr ""
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Tiu ĉi enigo estis anstataŭigita per"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "DOAI-reverko"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Eviti pagomurojn per direkto al malfermaliraj versioj de eldonaĵoj, se eblas"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Neniu resumo atingeblas por tiu ĉi eldonaĵo."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -165,9 +155,19 @@ msgstr "Senfina rulumado"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Aŭtomate ŝarĝi sekvan paĝon rulumante al la subo de la nuna paĝo"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Malfermalira COI-ŝanĝo"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Eviti pagomurojn per direkto al malfermaliraj versioj de eldonaĵoj, se eblas"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Malfermi rezultligilojn en novaj retumilaj langetoj"
@@ -250,7 +250,7 @@ msgstr "pri"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Agordoj"
@@ -258,7 +258,7 @@ msgstr "Agordoj"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Defaŭltaj kategorioj"
@@ -266,17 +266,17 @@ msgstr "Defaŭltaj kategorioj"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Serĉolingvo"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Defaŭlta lingvo"
@@ -284,35 +284,35 @@ msgstr "Defaŭlta lingvo"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Fasada lingvo"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Aŭtomate kompletigi"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Prokurila servilo por bildoj"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Ŝaltita"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Malŝaltita"
@@ -320,38 +320,38 @@ msgstr "Malŝaltita"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Metodo"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr " SekuraSerĉo"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Strikta"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Modera"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Neniu"
@@ -359,7 +359,7 @@ msgstr "Neniu"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Temoj"
@@ -394,126 +394,137 @@ msgstr "Ruĝa"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr " Aktuale uzataj serĉiloj"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr " Motora nomo"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Kategorio"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Fulmoklavo"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Kategorio"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Permesi"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Bloki"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Tiuj ĉi agordoj estas konservitaj en viaj kuketoj, kio ebligas al ni ne konservi tiujn datumojn pri vi en nia servilo."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Tiuj kuketoj estas nur por via plaĉo, ni ne uzas ilin por spuri vin."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "konservi"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Reagordi al defaŭlto"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "antaŭen"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Serĉi URL"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Elŝuti rezultojn"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Respondoj"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Sugestoj"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr " antaŭa paĝo"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr " sekva paĝo"
@@ -552,132 +563,149 @@ msgstr "Ricevanto"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "magnetligilo"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "torentodosiero"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Alklaku la lupeon por serĉi"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Rezultoj en novaj langetoj"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Ŝaltita"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Malŝaltita"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "kaŝmemorigita"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Altgradaj agordoj"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Fermi"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Eraro!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Funkciigita per"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "kodumebla metaserĉilo kiu respektas vian privatecon"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr ""
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr ""
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr ""
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "prokurata"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "subtenata"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "nesubtenata"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Ĝenerala"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Motoroj"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Aldonaĵoj"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Respondiloj"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Kuketoj"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Kiun lingvon vi pli ŝatas por serĉi?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Ŝanĝi lingvon de la fasono"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Trovi aferojn dum tajpado"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Prokuri bildrezultojn per searx"
@@ -689,152 +717,196 @@ msgid ""
msgstr "Ŝanĝi kiel formoj estas sendataj, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">sciu pli pri peto-metodoj</a> "
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filtri enhavon"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Ŝanĝi fasonon de Searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Elekti stilon por ĉi tiu temo"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Stilo"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Fulmoklavo"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Malfermalira COI-solvilo"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Direkti al malfermaliraj versioj de eldonaĵoj, se eblas (aldonaĵo necesas)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr ""
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Elekti lingvon"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Tempa intervalo"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Mezkvanta tempo"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Maksimuma tempo"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Tio ĉi estas listo de tuje respondantaj moduloj de Searx."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Nomo"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Ŝlosilvortoj"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Priskribo"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Ekzemploj"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Ĉi tio estas listo de kuketoj kaj iliaj valoroj, kiujn searx konservas en via komputilo."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Kun tiu listo, vi povas kontroli la travideblecon de searx."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Nomo de kuketo"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Valoro"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "Serĉo-URL kun aktuale konservitaj agordoj"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Rimarko: Precizigo de propraj agordoj en la serĉo-URL povas malaltigi privatecon per nevola diskonigo de la datumoj al alklikantaj retejoj."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Serĉrezultoj"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Provu serĉi:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Motoroj ne povas trovi rezultojn"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Ligiloj"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr ""
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Serĉrezultoj"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Provu serĉi:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Komenci serĉon"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr ""
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr ""
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "statistikoj"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Iam ajn"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Pasinta tago"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Pasinta semajno"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Pasinta monato"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Pasinta jaro"
@@ -897,21 +969,21 @@ msgstr "Ho ve!"
msgid "Something went wrong."
msgstr "Io fuŝiĝis."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "montri aŭdvidaĵojn"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "kaŝi aŭdvidaĵojn"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Akiri bildon"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Vidi fonton"
@@ -926,47 +998,47 @@ msgid "hide map"
msgstr "kaŝi mapon"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "montri detalojn"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "kaŝi detalojn"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Dosiergrandeco"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Bitokoj"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Nombro da Dosieroj"
@@ -980,22 +1052,34 @@ msgstr "montri videojn"
msgid "hide video"
msgstr "kaŝi videojn"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr ""
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Ŝarĝi pli..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Nenio trovita"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Subtenas elektitan lingvon"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Fasado"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Privateco"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr ""
diff --git a/searx/translations/es/LC_MESSAGES/messages.po b/searx/translations/es/LC_MESSAGES/messages.po
index ef67c83..cd26d1e 100644
--- a/searx/translations/es/LC_MESSAGES/messages.po
+++ b/searx/translations/es/LC_MESSAGES/messages.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -7,10 +7,11 @@
# Alejandro León Aznar, 2014
# Alejandro León Aznar, 2014-2018
# Carmen Fernández B., 2016
-# juanda097 <juanda097@protonmail.ch>, 2016
-# juanda097 <juanda097@protonmail.ch>, 2017
+# novales35 <guillermocebollero@gmail.com>, 2020
+# Juan Jaramillo <juanda097@protonmail.ch>, 2016
+# Juan Jaramillo <juanda097@protonmail.ch>, 2017
# Marc Abonce Seguin, 2016
-# Marc Abonce Seguin, 2018
+# Marc Abonce Seguin, 2018,2020
# O <b204fbaf817497f9ea35edbcc051de81_265921>, 2015
# rivera valdez <riveravaldezmail@gmail.com>, 2016
# wefwefew ewfewfewf <nnnedmz0d@moakt.ws>, 2016
@@ -18,94 +19,82 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: Carmen Fernández B.\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-10-17 14:13+0000\n"
+"Last-Translator: novales35 <guillermocebollero@gmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/asciimoo/searx/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "límite de tiempo"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "solicitud de excepción"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "choque inesperado"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "Archivos"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "General"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "Música"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "Medios sociales"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "Imágenes"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "Vídeos"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "Informática"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "Noticias"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "Mapa"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "Ciencia"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Parámetros incorrectos, por favor, cambia tus preferencias"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Ajustes no válidos"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "error en la búsqueda"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "hace {minutes} minuto(s)"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "hace {hours} hora(s) y {minutes} minuto(s)"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Generador de valores aleaorios"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Generar varios valores aleatorios"
@@ -117,48 +106,50 @@ msgstr "Funciones de estadística"
msgid "Compute {functions} of the arguments"
msgstr "Computar {functions} de parámetros"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Motor de tiempo (seg)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Tiempo de carga (segundos)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Número de resultados"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Puntuaciones"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Puntuaciones por resultado"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Errores"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "CAPTCHA obligatorio"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Obtener indicaciones"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(OBSOLETO)"
+msgid "{title} (OBSOLETE)"
+msgstr ""
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Esta entrada la ha sustituido"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "Cambiar a DOAI"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Evitar barreras de pago redireccionando a las versiones de acceso libre de las publicaciones cuando estén disponibles"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "No hay resúmenes disponibles para esta publicación."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -172,9 +163,19 @@ msgstr "Deslizamiento infinito"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Cargar automáticamente la siguiente página al deslizarse hasta el final de la página actual"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Reescribir acceso abierto a DOI (Identificador de objeto digital)"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Evitar barreras de pago redireccionando a las versiones de acceso libre de las publicaciones cuando estén disponibles"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Abrir los enlaces resultantes en nuevas pestañas del navegador"
@@ -257,7 +258,7 @@ msgstr "acerca de"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Preferencias"
@@ -265,7 +266,7 @@ msgstr "Preferencias"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Categorías predeterminadas"
@@ -273,17 +274,17 @@ msgstr "Categorías predeterminadas"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Idioma de búsqueda"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Idioma por defecto"
@@ -291,35 +292,35 @@ msgstr "Idioma por defecto"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Idioma de la interfaz"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Autocompletar"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Imagen proxy"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Activado"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Desactivado"
@@ -327,38 +328,38 @@ msgstr "Desactivado"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Método"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Búsqueda segura"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Riguroso"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Moderado"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Ninguno"
@@ -366,7 +367,7 @@ msgstr "Ninguno"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Temas"
@@ -401,126 +402,137 @@ msgstr "Rojo"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Motores de búsqueda actualmente en uso"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Nombre del motor de búsqueda"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Categoría"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Atajo"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Categoría"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Permitir"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Bloquear"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Esta configuración se guarda en sus cookies, lo que nos permite no almacenar dicha información sobre usted."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Estas cookies son para su propia comodidad, no las utilizamos para rastrearle."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "Guardar"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Restablecer configuración por defecto"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "Atrás"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "URL de la búsqueda"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Descargar resultados"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Respuestas"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Sugerencias"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "Página anterior"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "Página siguiente"
@@ -559,132 +571,149 @@ msgstr "Descargador"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "magnet link (enlace sin archivo)"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "archivo torrent"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Haz clic en la lupa para realizar la búsqueda"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Resultados en nuevas pestañas"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Activado"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Desactivado"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "en caché"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Ajustes avanzados"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Cerrar"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "¡Error!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Creado por"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "un metabuscador hackable que respeta la privacidad"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Código fuente"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Gestor de incidencias"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Instancias públicas"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Lenguaje"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "proxied"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "soportado"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "no soportado"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "General"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Motores"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Plugins"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Respondedores"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cookies"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "¿Qué idioma prefieres para la búsqueda?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Cambiar idioma de la interfaz"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Buscar mientras escribes"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Filtrado de resultados de imágenes en searx"
@@ -696,152 +725,196 @@ msgid ""
msgstr "Modifica cómo se envian los formularios <a href=\"http://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol#M.C3.A9todos_de_petici.C3.B3n\" rel=\"external\">más información sobre métodos de peticiones</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filtro de contenido"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Cambiar aspecto de searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Elige un estilo para este tema"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Estilo"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Atajo"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Redireccionar a versiones de acceso abierto de las publicaciones cuando estén disponibles (se requiere plugin)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Permitir todo"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Deshabilitar todo"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Idioma elegido"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Rango de tiempo"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Tiempo promedio"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Tiempo máximo"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Esta es la lista de los módulos de respuesta inmediata de searx."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Nombre"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Plabras clave"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Descripción"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Ejemplos"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Esta es la lista de cookies y sus valores que searx está almacenando en tu ordenador."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Con esa lista puedes valorar la transparencia de searx."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Nombre de la cookie"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Valor"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "Buscar URL de las preferencias guardadas actualmente"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Nota: especificar configuraciones personalizadas en la URL de búsqueda puede reducir la privacidad al filtrar datos a los sitios de resultados en los que se ha hecho clic."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Buscar"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Intenta buscar:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Los motores no pueden obtener resultados"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Enlaces"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "Suscripción RSS "
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Resultados de búsqueda"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Intenta buscar:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Comenzar búsqueda"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Limpiar búsqueda"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Limpiar"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
-msgstr "estadísitcas"
+msgstr "Estadísitcas"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "En cualquier momento"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Último día"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Última semana"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Último mes"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Último año"
@@ -904,21 +977,21 @@ msgstr "¡Mecachis!"
msgid "Something went wrong."
msgstr "Algo ha ido mal."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "mostrar multimedia"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "ocultar multimedia"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Obtener imagen"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Ver fuente"
@@ -933,47 +1006,47 @@ msgid "hide map"
msgstr "ocultar mapa"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "ver detalles"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "ocultar detalles"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Tamaño de archivo"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Bytes"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "KiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Número de archivos"
@@ -987,22 +1060,34 @@ msgstr "mostrar vídeo"
msgid "hide video"
msgstr "ocultar video"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Autor"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Longitud"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Cargar más"
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Ningún artículo encontrado"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Soporta el idioma seleccionado"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Interfaz de usuario"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Privacidad"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Cargando..."
diff --git a/searx/translations/et/LC_MESSAGES/messages.po b/searx/translations/et/LC_MESSAGES/messages.po
index 580307e..5c6895c 100644
--- a/searx/translations/et/LC_MESSAGES/messages.po
+++ b/searx/translations/et/LC_MESSAGES/messages.po
@@ -1,101 +1,90 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
+# Madis Otenurm, 2020
# Madis Otenurm, 2019
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-04-20 20:39+0000\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-12-04 19:01+0000\n"
"Last-Translator: Madis Otenurm\n"
"Language-Team: Estonian (http://www.transifex.com/asciimoo/searx/language/et/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: et\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "ajalõpp"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "taotluse viga"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "ootamatu krahh"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "failid"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "üldine"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "muusika"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "sotsiaalmeedia"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "pildid"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "videod"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
-msgstr "infotehnoloogia"
+msgstr "tehnoloogia"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "uudised"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "kaardid"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "teadus"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Sobimatud seaded, palun muuda oma eelistusi"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Sobimatud seaded"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "otsingu viga"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} minut(it) tagasi"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} tund(i), {minutes} minut(it) tagasi"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Juhusliku väärtuse generaator"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Genereeri erinevaid juhuslikke väärtusi"
@@ -107,48 +96,50 @@ msgstr "Statistikafunktsioonid"
msgid "Compute {functions} of the arguments"
msgstr "Arvuta argumentide {functions}"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Mootori aeg (s)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Lehe laadimisi (s)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Tulemuste arv"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Skoorid"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Skoorid tulemuste kohta"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Vead"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "CAPTCHA nõutud"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Hangi juhised"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(VANANENUD)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (VANANENUD)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "See üksus on asendatud:"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "DOAI taaskirjutamine"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Väldi maksumüüre, suunates võimalusel väljaannete avatud ligipääsuga versioonidele"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Selle väljaande jaoks pole abstraktset."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -162,9 +153,19 @@ msgstr "Lõpmatu kerimine"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Laadi lehe lõppu kerimisel järgmine leht automaatselt"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Open Access DOI rewrite"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Väldi maksumüüre, suunates võimalusel väljaannete avatud ligipääsuga versioonidele"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Ava tulemuste lingid uutel brauserikaartidel"
@@ -172,7 +173,7 @@ msgstr "Ava tulemuste lingid uutel brauserikaartidel"
msgid ""
"Results are opened in the same window by default. This plugin overwrites the"
" default behaviour to open links on new tabs/windows. (JavaScript required)"
-msgstr "Tulemused avatakse vaikimisi samas aknas. See plugin kirjutab vaikimisi käitumise üle, et avada lingid uutel kaartidel/akendel. (JavaScript nõutud)"
+msgstr "Tulemused avatakse vaikimisi samas aknas. See plugin kirjutab vaikimisi käitumise üle, et avada lingid uutel kaartidel/akendel. (Nõuab JavaScripti)"
#: searx/plugins/search_on_category_select.py:18
msgid "Search on category select"
@@ -200,13 +201,13 @@ msgstr "Eemaldab jälitavad argumendid tagastatud URList"
#: searx/plugins/vim_hotkeys.py:3
msgid "Vim-like hotkeys"
-msgstr "Vim-sarnased kiirklahvid"
+msgstr "Vim'i-sarnased kiirklahvid"
#: searx/plugins/vim_hotkeys.py:4
msgid ""
"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
"\"h\" key on main or result page to get help."
-msgstr "Navigeeri otsingutulemusi Vim-i sarnaste kiirklahvidega (nõuab JavaScripti). Abi saamiseks vajuta avalehel või tulemuste lehel klahvi \"h\"."
+msgstr "Navigeeri otsingutulemusi Vim'i-sarnaste kiirklahvidega (nõuab JavaScripti). Abi saamiseks vajuta avalehel või tulemuste lehel klahvi \"h\"."
#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
@@ -247,7 +248,7 @@ msgstr "teave"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Eelistused"
@@ -255,7 +256,7 @@ msgstr "Eelistused"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Vaikimisi kategooriad"
@@ -263,17 +264,17 @@ msgstr "Vaikimisi kategooriad"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Otsingukeel"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Vaikimisi keel"
@@ -281,35 +282,35 @@ msgstr "Vaikimisi keel"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Liidese keel"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Automaattäide"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Pildiproksi"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Lubatud"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Keelatud"
@@ -317,38 +318,38 @@ msgstr "Keelatud"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Meetod"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
-msgstr "SafeSearch"
+msgstr "Ohutuotsing"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Range"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Mõõdukas"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Puudub"
@@ -356,7 +357,7 @@ msgstr "Puudub"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Teemad"
@@ -391,126 +392,137 @@ msgstr "Punane"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Hetkel kasutatud otsingumootorid"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Mootori nimi"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Kategooria"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Otsetee"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Kategooria"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Luba"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Keela"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Need seaded salvestatakse sinu küpsistes, see lubab meil sinu kohta andmeid mitte salvestada."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Need küpsised on vaid mugavuse tarbeks, me ei kasuta neid sinu jälitamiseks."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "salvesta"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Lähtesta vaikeseaded"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "tagasi"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Otsingu URL"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Laadi tulemused alla"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Vastused"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Soovitused"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "eelmine leht"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "järgmine leht"
@@ -549,134 +561,151 @@ msgstr "Kaanija"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "magnetlink"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "torrentifail"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Klõpsa luubile otsingu teostamiseks"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Tulemused uutel kaartidel"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Sees"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Väljas"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "vahemälus"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Täpsemad seaded"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Sulge"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Viga!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
-msgstr "Põhineb"
+msgstr "Põhineb tarkvaral"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "privaatsust austaval, häkitaval metaotsingu mootoril"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Lähtekood"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Vigade loetelu"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Avalikud eksemplarid"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Keel"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "proksitud"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "toetatud"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "mittetoetatud"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Üldine"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Mootorid"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Pluginad"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Vastajad"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Küpsised"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Mis keelt sa otsinguks eelistad?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Muuda paigutuse keelt"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Otsi asju kirjutamise ajal"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
-msgstr "Proksin pilditulemusi läbi searx-i"
+msgstr "Proksin pilditulemusi läbi searxi"
#: searx/templates/oscar/preferences.html:78
msgid ""
@@ -686,152 +715,196 @@ msgid ""
msgstr "Muuda viisi, kuidas väljad edastatakse, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">loe taotlusmeetodite kohta lisaks</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filtreeri sisu"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
-msgstr "Muuda searx-i paigutust"
+msgstr "Muuda searxi paigutust"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
-msgstr "Vali sellele teemale stii"
+msgstr "Vali sellele teemale stiil"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
-msgstr "Stii"
+msgstr "Stiil"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Otsetee"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Open Access DOI resolver"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Suuna võimalusel väljaannete avatud ligipääsuga versioonidele (nõuab pluginat)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Mootori tokenid"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Ligipääsutokenid privaatsetele mootoritele"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Luba kõik"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Keela kõik"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Valitud keel"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Ajavahemik"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Keskmine aeg"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Maksimaalne aeg"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
-msgstr "See on searx-i koheste vastajate moodulite nimekiri."
+msgstr "See on searxi koheste vastajate moodulite nimekiri."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Nimi"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Märksõnad"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Kirjeldus"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Näited"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "See on küpsiste ja nende väärtuste nimekiri, mida searx hoiab sinu arvutis."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
-msgstr "Selle nimekirjaga saad sa hinnata searx-i läbipaistvust."
+msgstr "Selle nimekirjaga saad sa hinnata searxi läbipaistvust."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Küpsise nimi"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Väärtus"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "Otsingu URL hetkel salvestatud eelistuste kohta"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Märkus: täpsemate seadete määramine otsingu URLis võib vähendada privaatsust, lekitades andmed klõpsatud tulemuste saitidele."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Otsingutulemused"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Proovi otsida:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Mootorid ei saa tulemusi tagastada"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Lingid"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "RSS jälgimus"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Otsingutulemused"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Proovi otsida:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Alusta otsingut"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Tühjenda otsing"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Tühjenda"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "statistika"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Igal ajal"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Viimane päev"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Viimane nädal"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Viimane kuu"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Viimane aasta"
@@ -842,7 +915,7 @@ msgstr "Tähelepanu!"
#: searx/templates/oscar/messages/first_time.html:7
msgid "It look like you are using searx first time."
-msgstr "Tundub, et kasutad searx-i esimest korda."
+msgstr "Tundub, et kasutad searxi esimest korda."
#: searx/templates/oscar/messages/no_cookies.html:3
msgid "Information!"
@@ -864,7 +937,7 @@ msgstr "Mootorid ei saa tulemusi tagastada."
#: searx/templates/oscar/messages/no_results.html:10
#: searx/templates/simple/messages/no_results.html:10
msgid "Please, try again later or find another searx instance."
-msgstr "Palun proovi hiljem uuesti või leia teine searx-i eksemplar."
+msgstr "Palun proovi hiljem uuesti või leia teine searxi eksemplar."
#: searx/templates/oscar/messages/no_results.html:14
#: searx/templates/simple/messages/no_results.html:14
@@ -894,21 +967,21 @@ msgstr "Oh kurja!"
msgid "Something went wrong."
msgstr "Midagi läks valesti."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "kuva meedia"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "peida meedia"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Hangi pilt"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Vaata allikat"
@@ -923,47 +996,47 @@ msgid "hide map"
msgstr "peida kaart"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "kuva andmeid"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "peida andmed"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Failisuurus"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Baite"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Failide arv"
@@ -977,22 +1050,34 @@ msgstr "kuva video"
msgid "hide video"
msgstr "peida video"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Autor"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Pikkus"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Laadi juurde..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Üksust ei leitud"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Toetab valitud keelt"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Kasutajaliides"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Privaatsus"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Laadimine..."
diff --git a/searx/translations/eu/LC_MESSAGES/messages.po b/searx/translations/eu/LC_MESSAGES/messages.po
index c47634d..28ab3b1 100644
--- a/searx/translations/eu/LC_MESSAGES/messages.po
+++ b/searx/translations/eu/LC_MESSAGES/messages.po
@@ -1,103 +1,92 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
# beriain, 2018
# beriain, 2018-2019
+# beriain, 2020-2021
# Txopi <txopi@ikusimakusi.eus>, 2016
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-26 15:18+0000\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2021-01-14 15:52+0000\n"
"Last-Translator: beriain\n"
"Language-Team: Basque (http://www.transifex.com/asciimoo/searx/language/eu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: eu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "denbora agortzea"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "salbuespena eskaeran"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "ustekabeko gelditzea"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "fitxategiak"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "orokorra"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "musika"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "media soziala"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "irudiak"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "bideoak"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "informatika"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "berriak"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "mapa"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "zientzia"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Ezarpen ez baliodunak, mesedez editatu zure hobespenak"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Ezarpen ez baliodunak"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "bilaketa akatsa"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "duela {minutes} minutu"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "duela {hours} ordu eta {minutes} minutu"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Ausazko balio sortzailea"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Ausazko balio ezberdinak sortu"
@@ -109,48 +98,50 @@ msgstr "Funtzio estatistikoak"
msgid "Compute {functions} of the arguments"
msgstr "Parametroen {functions} zenbatu"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Bilatzailearen denbora (seg)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Orri kargak (seg)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Emaitza kopurua"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Balorazioak"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Balorazioak emaitza bakoitzeko"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Erroreak"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "CAPTCHA beharrezkoa da"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Norabideak lortu"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(ZAHARKITUA)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (ZAHARKITUA)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Sarrera hau hurrengoarekin ordezkatu da"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "DOAI berridazketa"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Ordainketa hormak sahiestu argitalpenen sartze-askeko bertsioetara berbidaliz ahal denean"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Ez dago abstrakturik eskuragarri argitalpen honetarako."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -164,9 +155,19 @@ msgstr "Korritze amaigabea"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Hurrengo orria automatikoki kargatu uneko orriaren behekaldera mugitzerakoan"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Berridatzi Open Access DOI"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Ordainketa hormak sahiestu argitalpenen sartze-askeko bertsioetara berbidaliz ahal denean"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Emaitzen estekak nabigatzailearen fitxa berrietan ireki"
@@ -249,7 +250,7 @@ msgstr "honi buruz"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Hobespenak"
@@ -257,7 +258,7 @@ msgstr "Hobespenak"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Lehenetsitako kategoriak"
@@ -265,17 +266,17 @@ msgstr "Lehenetsitako kategoriak"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Bilaketaren hizkuntza"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Lehenetsitako hizkuntza"
@@ -283,35 +284,35 @@ msgstr "Lehenetsitako hizkuntza"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Interfazearen hizkuntza"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Osatze automatikoa"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Irudietarako proxya"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Gaituta"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Desgaituta"
@@ -319,38 +320,38 @@ msgstr "Desgaituta"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Metodoa"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Bilaketa segurua"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Zorrotza"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Moderatua"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Bat ere ez"
@@ -358,7 +359,7 @@ msgstr "Bat ere ez"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Itxurak"
@@ -393,126 +394,137 @@ msgstr "Gorria"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Erabiliak izaten ari diren bilatzaileak"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Bilatzailearen izena"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Kategoria"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Lasterbidea"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Kategoria"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Baimendu"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Blokeatu"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Ezarpen hauek zure cookietan gordetzen dira, honek zuri buruzko informaziorik ez gordetzea baimentzen digu."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Cookie hauek zure onurarako besterik ez dira, ez ditugu zure jarraipenik egiteko erabiltzen."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "gorde"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Berrezarri lehenetsiak"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "atzera"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Bilaketa URLa"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Emaitzak deskargatu"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Erantzunak"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Iradokizunak"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "aurreko orrialdea"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "hurrengo orrialdea"
@@ -551,132 +563,149 @@ msgstr "Izaina"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "magnet lotura"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "torrent fitxategia"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Lupan sakatu bilaketa egiteko"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Emaitzak fitxa berrietan"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Piztuta"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Itzalita"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "cacheatuta"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Ezarpen aurreratuak"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Itxi"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Errorea!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Honek bultzatua"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "pribatutasun-errespetatzaile, metabilaketa motor hackeagarri bat"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Iturburu-kodea"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Arazoak"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Instantzia publikoak"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Hizkuntza"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "proxyatuta"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "onartua"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "ez onartua"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Orokorra"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Bilatzaileak"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Pluginak"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Erantzun emaileak"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cookieak"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Zein hizkuntzan egin nahi duzu bilaketa?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Interfazearen hizkuntza aldatu"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Gauzak aurkitu idatzi bitartean"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Irudien emaitzak searx proxyaren bidez pasatu"
@@ -688,152 +717,196 @@ msgid ""
msgstr "Aldatu inprimakiak nola bidaltzen diren, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">ikasi gehiago eskaera metodoen inguruan</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Edukia iragazi"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Searxen diseinua aldatu"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Gai honetarako estiloa hautatu"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Estiloa"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Lasterbidea"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Open Access DOI ebatzi"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Argitalpenen sartze-askeko bertsioetara berbidali ahal denean (plugina behar du)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Bilatzaile token-ak"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Sarbide token-ak bilatzaile pribatuetarako"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Guztiak baimendu"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Guztiak ezgaitu"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Hautatutako hizkuntza"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Denbora tartea"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr " Batezbesteko denbora"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Gehienezko denbora"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Hau da searxen berehalako erantzunen moduluen zerrenda."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Izena"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Gako-hitzak"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Deskripzioa"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Adibideak"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Hau searxek zure ordenagailuan gordetzen ari den cookien eta haien balioen zerrenda bat da."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Zerrenda horrekin, searxen gardentasuna balioztatu dezakezu."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Cookiearen izena"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Balioa"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "Une honetan gordetako hobespenen bilaketa URLa"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Oharra: bilaketa URLan ezarpen pertsonalizatuak zehazteak pribatutasuna txikiagotu dezake klikatutako erantzun guneetara datuak emanez"
-#: searx/templates/oscar/results.html:17
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
+msgid "Engines cannot retrieve results"
+msgstr "Bilatzaileek ezin dute emaitzarik lortu"
+
+#: searx/templates/oscar/results.html:50
+msgid "Links"
+msgstr "Estekak"
+
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "RSS harpidetza"
+
+#: searx/templates/oscar/results.html:75
msgid "Search results"
msgstr "Bilaketaren emaitzak"
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
msgid "Try searching for:"
msgstr "Saiatu hau bilatzen:"
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
-msgid "Engines cannot retrieve results"
-msgstr "Bilatzaileek ezin dute emaitzik lortu"
-
-#: searx/templates/oscar/results.html:131
-msgid "Links"
-msgstr "Estekak"
-
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Bilaketa hasi"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Bilaketa garbitu"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Garbitu"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "estatistikak"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Edonoiz"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Azken eguna"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Azken astea"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Azken hilabetea"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Azken urtea"
@@ -861,7 +934,7 @@ msgstr "Une honetan ez dago daturik eskuragarri."
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
msgid "Engines cannot retrieve results."
-msgstr "Bilatzaileek ezin dute emaitzik lortu."
+msgstr "Bilatzaileek ezin dute emaitzarik lortu."
#: searx/templates/oscar/messages/no_results.html:10
#: searx/templates/simple/messages/no_results.html:10
@@ -878,7 +951,7 @@ msgstr "Barkatu!"
msgid ""
"we didn't find any results. Please use another query or search in more "
"categories."
-msgstr "ez dugu emaitzik aurkitu. Mesedez beste kontsulta bat egin edo bilatu kategoria gehiagotan."
+msgstr "ez dugu emaitzarik aurkitu. Mesedez beste kontsulta bat egin edo bilatu kategoria gehiagotan."
#: searx/templates/oscar/messages/save_settings_successfull.html:7
msgid "Well done!"
@@ -896,21 +969,21 @@ msgstr "Hara!"
msgid "Something went wrong."
msgstr "Zerbait gaizki joan da."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "media erakutsi"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "media ezkutatu"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Irudia eskuratu"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Iturria ikusi"
@@ -925,47 +998,47 @@ msgid "hide map"
msgstr "mapa ezkutatu"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "xehetasunak erakutsi"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "xehetasunak ezkutatu"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Fitxategi neurria"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Byteak"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Fitxategi kopurua"
@@ -979,22 +1052,34 @@ msgstr "erakutsi bideoa"
msgid "hide video"
msgstr "ezkutatu bideoa"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Egilea"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Luzera"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Kargatu gehiago..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Ez da elementurik aurkitu"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Hautatutako hizkuntza onartzen du"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Erabiltzailearen interfazea"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Pribatutasuna"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Kargatzen..."
diff --git a/searx/translations/fa_IR/LC_MESSAGES/messages.po b/searx/translations/fa_IR/LC_MESSAGES/messages.po
index 6689daf..aedd5be 100644
--- a/searx/translations/fa_IR/LC_MESSAGES/messages.po
+++ b/searx/translations/fa_IR/LC_MESSAGES/messages.po
@@ -1,105 +1,94 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
# Aurora, 2018
# Aurora, 2018
-# Jim <inactive+Jim11@transifex.com>, 2017
-# Jim <inactive+Jim11@transifex.com>, 2017
+# d92c08ec808c392054abf37312c77481_5b152be <f35b42cd6a58f8316d31e810229a558d_657277>, 2017
+# d92c08ec808c392054abf37312c77481_5b152be <f35b42cd6a58f8316d31e810229a558d_657277>, 2017
# Mostafa Ahangarha <ahangarha@riseup.net>, 2018
+# Noémi Ványi <sitbackandwait@gmail.com>, 2020
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 13:10+0000\n"
+"Last-Translator: Aurora\n"
"Language-Team: Persian (Iran) (http://www.transifex.com/asciimoo/searx/language/fa_IR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: fa_IR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "پایان زمان<br>"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "خطا در درخواست"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "ایست ناگهانی"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "فایل ها<br>"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "فراگیر"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "موسیقی"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "رسانه اجتماعی"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "تصاویر<br>"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "ویدیو ها<br>"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "فناوری اطلاعات"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "اخبار"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "نقشه"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "دانش<br>"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "تنظیمات نادرست است، لطفا اولویت‌های جستجو را تغییر دهید"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "تنظیمات اشتباه"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "خطای جستجو"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} دقیقه پیش"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} ساعت و {minutes} دقیقه پیش"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "ایجاد کننده ی مقدار تصادفی"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "ایجاد مقادیر تصادفی متفاوت"
@@ -109,50 +98,52 @@ msgstr "توابع آماری"
#: searx/answerers/statistics/answerer.py:54
msgid "Compute {functions} of the arguments"
-msgstr "پردازش {عملکرد های} نشانوند ها<br>"
+msgstr "پردازش {functions} نشانوند ها<br>"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "زمان موتور(ثانیه)<br>"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "زمان بارگذاری صفحه (ثانیه)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "تعداد نتایج"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "امتیازات<br>"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "امتیازات بر نتیجه<br>"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "خطاها"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr ""
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr ""
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(OBSOLETE)"
+msgid "{title} (OBSOLETE)"
+msgstr ""
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "این ورودی معلق شده است توسط"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr ""
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "امتناع از منابع غیر رایگان با تغییر مسیر به نسخه ی رایگان نشریات اگر در دسترس باشد<br>"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "هیچ چکید ای برای این نشریه در دسترس نیست.<br>"
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -166,9 +157,19 @@ msgstr "پایین رفتن بی‌پایان"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "بارگذاری خودکار صفحه بعد در صورت پیمایش تا پایین صفحه کنونی"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "بازنویسی Open Access DOI<br>"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "امتناع از منابع غیر رایگان با تغییر مسیر به نسخه ی رایگان نشریات اگر در دسترس باشد<br>"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "باز کردن لینک های نتیجه در برگه‌ی جدید مرورگر"
@@ -251,7 +252,7 @@ msgstr "درباره<br>"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "تنظیمات<br>"
@@ -259,7 +260,7 @@ msgstr "تنظیمات<br>"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "دسته‌بندی های پیش‌فرض"
@@ -267,17 +268,17 @@ msgstr "دسته‌بندی های پیش‌فرض"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "زبان جستجو"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "زبان پیش‌فرض"
@@ -285,35 +286,35 @@ msgstr "زبان پیش‌فرض"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "زبان رابط کاربری"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "تکمیل خودکار<br>"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "پراکسی تصویر<br>"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "فعال<br>"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "غیرفعال"
@@ -321,38 +322,38 @@ msgstr "غیرفعال"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "روش<br>"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "جستجوی امن"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "سخت گیر<br>"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "متوسط<br>"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "هیچ<br>"
@@ -360,7 +361,7 @@ msgstr "هیچ<br>"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "تم ها<br>"
@@ -395,126 +396,137 @@ msgstr "قرمز"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "موتورهای جستجوی در حال استفاده"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "نام موتور"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "دسته"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "میانبر<br>"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "دسته"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "اجازه"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "انسداد<br>"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "این تنظیمات در کوکی های شما ذخیره شده اند، این به ما اجازه می دهد این اطلاعات را درباره شما ذخیره نکنیم.<br>"
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "این کوکی ها برای راحتی شماست، ما از این کوکی برای ردیابی شما استفاده نمیکنیم.<br>"
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "ذخیره"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "بازنشانی پیشفرض ها<br>"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "عقب<br>"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "آدرس جستجو<br>"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "نتایج دانلود<br>"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "پاسخ ها<br>"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "پیشنهادات"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "صفحه پیش"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "صفحه بعد"
@@ -553,132 +565,149 @@ msgstr "لیچر<br>"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "لینک مگنت<br>"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "فایل تورنت<br>"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "برای اجرای جستجو روی ذره بین کلیک کنید<br>"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "نتایج در برگه جدید"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "روشن<br>"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "خاموش<br>"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "ذخیره شده<br>"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "تنظیمات پیشرفته<br>"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "بستن<br>"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "خطا!<br>"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "قدرت گرفته از<br>"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "یک ابر موتور جستجوی حافظ حریم شخصی"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr ""
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr ""
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr ""
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "پراکسی شده<br>"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "پشتیبانی شده<br>"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "پشتیبانی نشده<br>"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "کلی<br>"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "موتور ها<br>"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "افزونه ها"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "پاسخگو ها<br>"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "کوکی ها<br>"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "چه زبانی را برای جستجو ترجیح می‌دهید؟"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "تغییر زبان رابط کاربری"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "یافتن مطالب حین نوشتن"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "پراکسی کردن نتایج تصویری از طریق searx<br>"
@@ -690,152 +719,196 @@ msgid ""
msgstr "چگونگی ثبت فرم ها را تغییر دهید، درباره ی متود های درخواست بیشتر بدانید"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "فیلتر کردن محتوا"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "رابط کاربری searx را تغییر دهید<br>"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "سبک این پوسته را انتخاب کنید"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "سبک"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "میانبر<br>"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "حل کننده ی Open Access DOI<br>"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "هدایت به نسخه رایگان نشریات اگر در دسترس باشد(نیازمند به افزونه)<br>"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr ""
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "زبان انتخابی<br>"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "بازه ی زمانی<br>"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "زمان میانگین"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "حداکثر زمان"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "این، فهرست ماژول‌های پاسخ بلادرنگ searx است."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "نام"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "کلیدواژه ها<br>"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "شرح<br>"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "مثال ها<br>"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "این، لیست کوکی‌ها و مقادیری است که searx روی دستگاه شما ذخیره می‌کند."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "با آن لیست، می‌توانید شفافیت searx را ارزیابی کنید."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "نام کوکی<br>"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "مقدار<br>"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "آدرس جستجو بر اساس تنظیمات ذخیره شده<br>"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "هشدار: تعیین تنظیمات شخصی در آدرس جستجو میتواند حریم شخصی شما را به خطر بیاندازد با درز کردن اطلاعات به سایت های نتایج انتخاب شده.<br>"
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "نتایج جستجو<br>"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "تلاش کنید برای جستجوی:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "موتور ها قادر به دریافت نتایج نیستند<br>"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "لینک ها<br>"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr ""
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "نتایج جستجو<br>"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "تلاش کنید برای جستجوی:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "شروع جستجو<br>"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr ""
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr ""
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "آمار<br>"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "هر زمانی<br>"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "روز گذشته"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "هفته گذشته"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "ماه گذشته"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "سال گذشته"
@@ -898,21 +971,21 @@ msgstr "ای وای! خراب شد!<br>"
msgid "Something went wrong."
msgstr "مشکلی رخ داد."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "نمایش رسانه<br>"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "پنهان سازی رسانه<br>"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "دریافت تصویر"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "نمایش منبع"
@@ -927,47 +1000,47 @@ msgid "hide map"
msgstr "پنهان‌سازی نقشه"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "نمایش جزئیات"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "پنهان‌سازی جزئیات"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "اندازه فایل<br>"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "بایت"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "کیلوبایت"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "مگابایت"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "گیگابایت"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "ترابایت"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "تعداد فایل ها"
@@ -981,22 +1054,34 @@ msgstr "نمایش ویدئو"
msgid "hide video"
msgstr "پنهان‌سازی ویدئو"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr ""
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "بیشتر…<br>"
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "چیزی پیدا نشد"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "زبان انتخاب شده را پشتیبانی می‌کند"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "رابط کاربری"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "حریم خصوصی"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr ""
diff --git a/searx/translations/fi/LC_MESSAGES/messages.po b/searx/translations/fi/LC_MESSAGES/messages.po
index 57b3e43..cd7c019 100644
--- a/searx/translations/fi/LC_MESSAGES/messages.po
+++ b/searx/translations/fi/LC_MESSAGES/messages.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -8,94 +8,82 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 13:10+0000\n"
"Last-Translator: Jiri Grönroos <jiri.gronroos@iki.fi>\n"
"Language-Team: Finnish (http://www.transifex.com/asciimoo/searx/language/fi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: fi\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "aikakatkaisu"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "pyyntöpoikkeus"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "odottamaton kaatuminen"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "tiedostot"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "yleiset"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "musiikki"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "sosiaalinen media"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "kuvat"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "videot"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "it"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "uutiset"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "kartta"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "tiede"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Virheelliset asetukset, muokkaa siis asetuksia"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Virheelliset asetukset"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "hakuvirhe"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} min sitten"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} t, {minutes} min sitten"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Satunnaisluvun generaattori"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Generoi satunnaislukuja"
@@ -107,48 +95,50 @@ msgstr "Tilastolliset funktiot"
msgid "Compute {functions} of the arguments"
msgstr "Laske argumenttien {functions}"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Hakukoneen aika (s)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Sivun lataus (s)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Tulosten määrä"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Pisteet"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Pisteet per tulos"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Virheet"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr ""
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr ""
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(VANHENTUNUT)"
+msgid "{title} (OBSOLETE)"
+msgstr ""
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Tämän kohdan on korvannut"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "DOAI-uudelleenkirjoitus"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Vältä maksumuureja ohjaamalla julkaisujen avoimiin versioihin jos mahdollista"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Tästä julkaisusta ei ole yhteenvetoa."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -162,9 +152,19 @@ msgstr "Loputon vieritys"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Lataa automaattisesti seuraava sivu, kun nykyisen sivun loppu saavutetaan"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Open Access DOI -uudelleenkirjoitus"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Vältä maksumuureja ohjaamalla julkaisujen avoimiin versioihin jos mahdollista"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Avaa tulokset uusiin välilehtiin"
@@ -247,7 +247,7 @@ msgstr "tietoja"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Asetukset"
@@ -255,7 +255,7 @@ msgstr "Asetukset"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Oletusluokat"
@@ -263,17 +263,17 @@ msgstr "Oletusluokat"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Haun kieli"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Oletuskieli"
@@ -281,35 +281,35 @@ msgstr "Oletuskieli"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Käyttöliittymän kieli"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Automaattinen täydentäminen"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Kuvat välityspalvelimen kautta"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Käytössä"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Ei käytössä"
@@ -317,38 +317,38 @@ msgstr "Ei käytössä"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Tapa"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "SafeSearch"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Tiukka"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Keskitaso"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Ei mitään"
@@ -356,7 +356,7 @@ msgstr "Ei mitään"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Teemat"
@@ -391,126 +391,137 @@ msgstr "Punainen"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Nyt käytetyt hakukoneet"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Hakukoneen nimi"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Luokka"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Oikoreitti"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Luokka"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Salli"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Estä"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Nämä asetukset tallennetaan evästeisiisi. Näin Searxin ei tarvitse tallentaa sinuun liittyviä henkilökohtaisia tietoja."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Kyseiset evästeet palvelevat ainoastaan sinua, eikä niitä käytetä seuraamiseesi."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "Tallenna"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Palauta oletukset"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "Takaisin"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Haun osoite"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Lataa tulokset"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Vastaukset"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Ehdotukset"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "edellinen sivu"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "seuraava sivu"
@@ -549,132 +560,149 @@ msgstr "Lataaja"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "magnet-linkki"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "torrent-tiedosto"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Napsauta suurennuslasia suorittaaksesi haun"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Tulokset uusiin välilehtiin"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Päällä"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Pois"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "välimuistissa"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Lisäasetukset"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Sulje"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Virhe!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Taustavoimana"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "yksityisyyttä kunnioittava, muokattava metahakukone"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr ""
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr ""
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr ""
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "välityspalvelimella"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "tuettu"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "ei tuettu"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Yleiset"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Hakukoneet"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Lisäosat"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Vastaajat"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Evästeet"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Millä kielellä haluat etsiä ensisijaisesti?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Vaihda asettelun kieltä"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Löydä tuloksia kirjoittaessasi"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Kuvatulokset välitetään searxin välityspalvelimen kautta"
@@ -686,152 +714,196 @@ msgid ""
msgstr "Muuta tapaa, miten lomaketiedot välitetään. <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">Lisätietoja eri välitystavoista.</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Suodata hakutulosten sisältöä"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Muuta searxin asettelua"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Valitse tyyli tälle teemalle"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Tyyli"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Oikoreitti"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Open Access DOI -selvitin"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Uudelleenohjaa julkaisujen open-access-versioihin kun mahdollista (vaatii liitännäisen)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr ""
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Valittu kieli"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Aikaväli"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Keskimääräinen\naika"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Enimmäisaika"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Tämä on luettelo searxin vastaajamoduuleista."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Nimi"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Avainsanat"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Kuvaus"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Esimerkit"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Ohessa on lista evästeistä ja niiden arvoista, joita searx tallentaa tietokoneellesi."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Tämän luettelon avulla voit arvioida searxin läpinäkyvyyden."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Evästeen nimi"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Arvo"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "Nykyisten asetusten hakuosoite"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Huomio: mukautettujen asetusten hakuosoite voi heikentää yksityisyyttä vuotamalla tietoja niille sivustoille, joihin kohdistuvia tuloksia napsautetaan."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Hakutulokset"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Yritä etsiä:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Moottorit eivät voi palauttaa tuloksia"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Linkit"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr ""
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Hakutulokset"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Yritä etsiä:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Aloita haku"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr ""
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr ""
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "tilastot"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Milloin tahansa"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Viimeinen päivä"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Viimeinen viikko"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Viimeinen kuukausi"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Viimeinen vuosi"
@@ -894,21 +966,21 @@ msgstr "Voi ei!"
msgid "Something went wrong."
msgstr "Jokin meni pieleen."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "näytä media"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "piilota media"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Avaa kuva"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Näytä lähde"
@@ -923,47 +995,47 @@ msgid "hide map"
msgstr "piilota kartta"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "näytä tiedot"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "piilota tiedot"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Tiedostokoko"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Tavua"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Tiedostojen määrä"
@@ -977,22 +1049,34 @@ msgstr "näytä video"
msgid "hide video"
msgstr "piilota video"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr ""
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Lataa lisää..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Tietuetta ei löytynyt"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Tukee valittua kieltä"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Käyttöliittymä"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Yksityisyys"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr ""
diff --git a/searx/translations/fil/LC_MESSAGES/messages.po b/searx/translations/fil/LC_MESSAGES/messages.po
index ca50d58..24282c4 100644
--- a/searx/translations/fil/LC_MESSAGES/messages.po
+++ b/searx/translations/fil/LC_MESSAGES/messages.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -9,94 +9,82 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 13:10+0000\n"
+"Last-Translator: gr01d\n"
"Language-Team: Filipino (http://www.transifex.com/asciimoo/searx/language/fil/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: fil\n"
"Plural-Forms: nplurals=2; plural=(n == 1 || n==2 || n==3) || (n % 10 != 4 || n % 10 != 6 || n % 10 != 9);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "timeout"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "request exception"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "hindi inaasahan na crash"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "file"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "pangkalahatan"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "musika"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "social media"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "larawan"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "bidyo"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "it"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "balita"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "mapa"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "agham"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Maling settings, paki ayos ang preferences"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Maling settings"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "nagkaproblema sa paghahanap"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} na minuto ang nakalipas"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} oras at {minutes} na minto ang nakalipas"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Random value generator"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Generate different random values"
@@ -108,48 +96,50 @@ msgstr "Estatistika ng mga tungkulin"
msgid "Compute {functions} of the arguments"
msgstr "Tuusin ang {functions} ng pangangatuwiran"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Oras ng engine (segundo)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Oras ng pagkarga ng pahina (segundo)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Bilang ng resulta"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Iskor"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Iskor ng bawat resulta"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Kamalian"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr ""
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr ""
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(LUMA)"
+msgid "{title} (OBSOLETE)"
+msgstr ""
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Ang tala na ito ay ipinagpaliban ng"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr ""
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Iwasan ang paywall sa pag-redirect sa open-access na bersyon ng pahahayagan kapagmakukuha"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Walang nakita na abstract para sa pahahayag na ito."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -163,9 +153,19 @@ msgstr "Walang hanggan na pag-scroll"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Awtomatiko na ikarga ang sumunod na pahina kapag nakarating na sa dulo ng kasalukuyang pahina"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Open Access DOI rewrite"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Iwasan ang paywall sa pag-redirect sa open-access na bersyon ng pahahayagan kapagmakukuha"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Buksan ang resulta sa panibagong browser tab"
@@ -248,7 +248,7 @@ msgstr "hinggil"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Preferences"
@@ -256,7 +256,7 @@ msgstr "Preferences"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Ang mga default na uri"
@@ -264,17 +264,17 @@ msgstr "Ang mga default na uri"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Ang wika ng paghahanap"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Default na wika"
@@ -282,35 +282,35 @@ msgstr "Default na wika"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Ang wika ng Interface"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Autocomplete"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Proxy ng larawan"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Paganahin"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Hindi paganahin"
@@ -318,38 +318,38 @@ msgstr "Hindi paganahin"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Paraan"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Ligtas na Paghahanap"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Mahigpit"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Banayad"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Wala"
@@ -357,7 +357,7 @@ msgstr "Wala"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Tema"
@@ -392,126 +392,137 @@ msgstr "Pula"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Ang ginagamit natin na search engines"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Pangalan ng engine"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Uri"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Shortcut"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Uri"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Payagan"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Harangan"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Ang settings ay nakalagay sa cookies upang hindi kami makakuha ng datos mula sa iyo."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Hindi namin ginagamit ang cookies para i-track ka, ito ay para maging maayos ang paggamit mo."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "i-save"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "I-reset ang defaults"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "bumalik"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "URL ng Search"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "I-download ang mga resulta"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Mga sagot"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Mga mungkahi"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "bumalik sa nakaraang pahina"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "pumanhik sa sumunod na pahina"
@@ -550,132 +561,149 @@ msgstr "Leecher"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "i-magnet ang link"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "torrent file"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Pindutin ang magnifier para maghanap"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Ang resulta ay na sa bagong tab"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Bukas"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Sara"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "cached"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Advanced settings"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Isara"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Kamalian!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Pinapatakbo ng"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "isang gumagalang sa pagiging pribado, hackable na metasearch engine"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr ""
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr ""
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr ""
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "proxied"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "suportado"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "hindi suportado"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Pangkalahatan"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Engines"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Plugins"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Mga pangsagot"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cookies"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Ano ang gusto mong wika sa paghahanap?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Ibahin ang wika ng layout"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Maghanap habang ikaw ang nag-tytype"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "I-Proxy ang resulta ng mga larawan papunta sa searx"
@@ -687,152 +715,196 @@ msgid ""
msgstr "Ibahin kung paano ang mga forms are pinapasa, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">alamin ang iba pang mga request methods</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Salain ang mga nilalaman"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Ibahin ang layout ng searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Pumili ng estilo para sa tema na ito"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Estilo"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Shortcut"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Open Access DOI resolver"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Redirect to open-access versions of publications when available (plugin required)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr ""
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Piniling wika"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Agwat ng oras"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Gitnang oras"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Ang max na oras"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Ito ang listahan ng instant answering modules ni searx."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Pangalan"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Mga keyword"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Paglalarawan"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Mga halimbawa"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Ito ang listahan ng cookies at ang kanilang value na inilagay ni searx sa iyon kompyuter."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Dahil sa listahan na iyon, maaari mong makita ang pagiging transparent ni searx."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Pangalan ng cookie"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Value"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "Search URL ng kasalukuyan na naka-save sa preferences"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Tandaan: kapag gumawa ng sariling settings sa search URL mababawasan ang pagiging pribado dahil magkakaroon ng butas sa datos dahil sa pag-pindot sa resulta na sites."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Mga resulta ng paghahanap"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Subukan maghanap ng:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Hindi makuha ng engines ang mga resulta"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Links"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr ""
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Mga resulta ng paghahanap"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Subukan maghanap ng:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Simulan ang paghahanap"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr ""
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr ""
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "stats"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Kahit anong oras"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Nakaraang araw"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Nakaraang linggo"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Nakaraang buwan"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Nakaraang taon"
@@ -895,21 +967,21 @@ msgstr "Naku!"
msgid "Something went wrong."
msgstr "Nagkaproblema."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "ipakita ang media"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "itago ang media"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Kuhanin ang larawan"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Tignan ang pinagkuhanan"
@@ -924,47 +996,47 @@ msgid "hide map"
msgstr "itago ang mapa"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "ipakita ang nilalaman"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "itago ang nilalaman"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Filesize"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Bytes"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Bilang ng mga files"
@@ -978,22 +1050,34 @@ msgstr "ipakita ang bidyo"
msgid "hide video"
msgstr "itago ang bidyo"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr ""
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Maghanap pa..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Walang nakita na aytem"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Suportado ang pinili na wika"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Ang User interface"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Pagiging Pribado"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr ""
diff --git a/searx/translations/fr/LC_MESSAGES/messages.po b/searx/translations/fr/LC_MESSAGES/messages.po
index 4d57cad..c653d8b 100644
--- a/searx/translations/fr/LC_MESSAGES/messages.po
+++ b/searx/translations/fr/LC_MESSAGES/messages.po
@@ -1,12 +1,12 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
# Alexandre Flament <alex@al-f.net>, 2017-2018
# Benjamin Sonntag <benjamin@sonntag.fr>, 2014
-# Cqoicebordel <david.barouh@wanadoo.fr>, 2014
-# Cqoicebordel <david.barouh@wanadoo.fr>, 2014-2017
+# Cqoicebordel, 2014
+# Cqoicebordel, 2014-2017,2020
# Étienne Deparis <etienne@depar.is>, 2019
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
# Noémi Ványi <sitbackandwait@gmail.com>, 2017
@@ -16,94 +16,82 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 18:27+0000\n"
-"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-11 16:29+0000\n"
+"Last-Translator: Cqoicebordel\n"
"Language-Team: French (http://www.transifex.com/asciimoo/searx/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "délai dépassé"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "erreur de requête"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "crash inattendu"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "fichiers"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "général"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "musique"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "réseaux sociaux"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "images"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "vidéos"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "informatique"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "actualités"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "carte"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "science"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Paramètres non valides, veuillez éditer vos préférences"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Paramètres non valides"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "erreur de recherche"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "il y a {minutes} minute(s)"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "il y a {hours} heure(s), {minutes} minute(s)"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Générateur de valeur aléatoire"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Crée des valeurs aléatoires différentes"
@@ -115,48 +103,50 @@ msgstr "Fonctions statistiques"
msgid "Compute {functions} of the arguments"
msgstr "Calcule les {functions} des arguments"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Temps du moteur (sec)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Chargement de la page (sec)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Nombre de résultats"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Score"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Score par résultat"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Erreur"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "CAPTCHA nécessaire"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Obtenir l'itinéraire"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{titre}&nbsp;(OBSOLETE)"
+msgid "{title} (OBSOLETE)"
+msgstr "{titre} (OBSOLETE)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Cet item a été remplacé par"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "Utiliser DOAI"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Contourne les verrous payants de certaines publications scientifiques en redirigeant vers la version ouverte de ces papiers si elle est disponible."
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Aucun résumé disponible pour cette publication."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -170,9 +160,19 @@ msgstr "Défilement infini"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Charge automatiquement la page suivante quand vous arriver en bas de la page"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Utiliser Open Access DOI"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Contourne les verrous payants de certaines publications scientifiques en redirigeant vers la version ouverte de ces papiers si elle est disponible."
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Ouvrir les liens de résultats dans un nouvel onglet"
@@ -255,7 +255,7 @@ msgstr "À propos"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Préférences"
@@ -263,7 +263,7 @@ msgstr "Préférences"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Catégories par défaut"
@@ -271,17 +271,17 @@ msgstr "Catégories par défaut"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Langue de recherche"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Langue par défaut"
@@ -289,35 +289,35 @@ msgstr "Langue par défaut"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Langue de l'interface"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Complétion automatique"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Proxy d'images"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Activé"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Désactivé"
@@ -325,38 +325,38 @@ msgstr "Désactivé"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Méthode"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Recherche sécurisée"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Stricte"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Modérée"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Pas du tout"
@@ -364,7 +364,7 @@ msgstr "Pas du tout"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Thème"
@@ -399,126 +399,137 @@ msgstr "Rouge"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Moteurs de recherche actuellement utilisés"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Nom du moteur"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Catégorie"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Raccourcis"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Catégorie"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Autoriser"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Bloquer"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Ces paramètres sont stockés dans vos cookies ; ceci nous permet de ne pas collecter vos données."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Ces cookies existent pour votre confort d'utilisation, nous ne les utilisons pas pour vous espionner."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "enregistrer"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Remettre les valeurs par défaut"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "retour"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "URL de recherche"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Télécharger les résultats"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Réponses"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Suggestions"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "page précédente"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "page suivante"
@@ -557,132 +568,149 @@ msgstr "Téléchargeurs"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "lien magnet"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "fichier torrent"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Cliquez sur la loupe pour effectuer une recherche"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Résultats dans de nouveaux onglets"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "On"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Off"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "en cache"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Paramètres avancés"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Fermer"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Erreur !"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Powered by"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "un meta-moteur de recherche hackable et respectueux de la vie privée"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Code source"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Suivi des problèmes"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Instances publiques"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Langue"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "proxifié"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "pris en charge"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "non pris en charge"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Général"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Moteurs"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Plugins"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Réponses instantanées"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cookies"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Dans quelle langue préférez-vous effectuer la recherche ?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Changer la langue d'affichage"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Chercher au fil de la saisie"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Proxifier les images de résultats à travers searx"
@@ -694,152 +722,196 @@ msgid ""
msgstr "Permet de choisir comment la recherche est envoyée, <a href=\"https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol#M.C3.A9thodes\" rel=\"external\">en savoir plus sur les méthodes HTTP</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filtrer le contenu"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Modifier l'affichage de searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Choisir un style pour ce thème"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Style"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Raccourcis"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Résolveur Open Access DOI"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Rediriger vers les versions des articles en libre accès lorsqu'elles sont disponibles (nécessite un plugin)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Jeton de moteur"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Jeton d'accès pour les moteurs privés"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Tout autoriser"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Tout désactiver"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Langue choisie"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Espace temporel"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Temps moy."
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Temps max"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Voici la liste des module de searx produisant une réponse instantanée."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Nom"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Mots clés"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Description"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Exemples"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "C'est une liste de cookies et de leurs valeurs que searx enregistre sur votre ordinateur."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Avec cette liste, vous pouvez juger de la transparence de searx."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Nom du cookie"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Valeur"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "Adresse de recherche des réglages actuels"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Note : utiliser des réglages personnalisés dans l'adresse de recherche peut réduire la vie privée en donnant accès à certaines données aux sites des résultats sélectionnés."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Résultats de recherche"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Essayez de chercher : "
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Les moteurs ne peuvent récupérer de résultats"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Liens"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "Abonnement RSS"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Résultats de recherche"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Essayez de chercher : "
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Lancer une recherche"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Effacer la recherche"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Effacer"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "statistiques"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "N'importe quand"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Dernières 24h"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Semaine précédente"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Mois précédent"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Année précédente"
@@ -902,21 +974,21 @@ msgstr "Oups !"
msgid "Something went wrong."
msgstr "Il y a un problème."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "afficher le média"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "cacher le media"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Voir l'image"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Voir la source"
@@ -931,47 +1003,47 @@ msgid "hide map"
msgstr "cacher la carte"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "afficher les détails"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "cacher les détails"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Taille de fichier"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "octets"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kio"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "Mio"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "Gio"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "Tio"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Nombre de fichiers"
@@ -985,22 +1057,34 @@ msgstr "afficher la vidéo"
msgid "hide video"
msgstr "cacher la vidéo"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Auteur"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Longueur"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Afficher plus..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Pas d'élément trouvé"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Supporte la langue sélectionnée"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Interface utilisateur"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Vie privée"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Chargement…"
diff --git a/searx/translations/gl/LC_MESSAGES/messages.po b/searx/translations/gl/LC_MESSAGES/messages.po
index 4634ed1..9b7cf1f 100644
--- a/searx/translations/gl/LC_MESSAGES/messages.po
+++ b/searx/translations/gl/LC_MESSAGES/messages.po
@@ -1,170 +1,171 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
-# Xosé M. Lamas <correo@xmgz.eu>, 2018-2019
+# Xosé M. <correo@xmgz.eu>, 2020-2022
+# Xosé M. <correo@xmgz.eu>, 2018-2019
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-26 06:08+0000\n"
-"Last-Translator: Xosé M. Lamas <correo@xmgz.eu>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2014-01-30 14:32+0000\n"
+"Last-Translator: Xosé M. <correo@xmgz.eu>, 2020-2022\n"
"Language-Team: Galician (http://www.transifex.com/asciimoo/searx/language/gl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: gl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "caducidade"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "excepción na petición"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "fallo non agardado"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "ficheiros"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "xeral"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "música"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
-msgstr "Medios sociais"
+msgstr "medios sociais"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "imaxes"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "vídeos"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "TIC"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "novas"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "mapa"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "ciencia"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
-msgstr "Axustes non válidos, por favor edite a configuración"
+msgstr "Axustes non válidos, por favor edita a configuración"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Axustes non válidos"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "fallo na busca"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
-msgstr "hai {minutes} minuto(s)"
+msgstr "fai {minutes} minuto(s)"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
-msgstr "hai {hours} hora(s), {minutes} minuto(s)"
+msgstr "fai {hours} hora(s), {minutes} minuto(s)"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
-msgstr "Xerador de valor aleatorio"
+msgstr "Xerar un valor aleatorio"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Xerar diferentes valores aleatorios"
#: searx/answerers/statistics/answerer.py:53
msgid "Statistics functions"
-msgstr "Funcións de estatística"
+msgstr "Funcións de estatísticas"
#: searx/answerers/statistics/answerer.py:54
msgid "Compute {functions} of the arguments"
-msgstr "Calcule {functions} dos argumentos"
+msgstr "Calcula {functions} dos argumentos"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
-msgstr "Tempo de busca (sec)"
+msgstr "Tempo de busca (seg)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Cargou en (seg)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Número de resultados"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Puntuacións"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Puntuacións por resultado"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
-msgstr "Fallos"
+msgstr "Erros"
+
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "CAPTCHA requerido"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Obter enderezos"
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(OBSOLETO)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (OBSOLETO)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Esta entrada foi proporcionada por"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "Reescritura DOAI"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Evitar muros de pago redirecciionando a versións públicas das publicacións cando estén dispoñibles"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Non está dispoñible un resumo para esta publicación."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
-msgstr "Reescribir ligazóns HTTP a HTTPS si fose posible"
+msgstr "Reescribir ligazóns HTTP a HTTPS se fose posible"
#: searx/plugins/infinite_scroll.py:3
msgid "Infinite scroll"
-msgstr "Desplazamento infinito"
+msgstr "Desprazamento infinito"
#: searx/plugins/infinite_scroll.py:4
msgid "Automatically load next page when scrolling to bottom of current page"
-msgstr "Cargar automáticamente a seguinte páxina ao desplazarse ao fondo da páxina actual"
+msgstr "Cargar automáticamente a seguinte páxina ao chegar ao fin da páxina actual"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Reescritura Open Access DOI"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Evitar valados de pago redireccionando a versións públicas das publicacións cando estén dispoñibles"
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Abrir ligazóns de resultados en novas lapelas do navegador"
@@ -172,31 +173,31 @@ msgstr "Abrir ligazóns de resultados en novas lapelas do navegador"
msgid ""
"Results are opened in the same window by default. This plugin overwrites the"
" default behaviour to open links on new tabs/windows. (JavaScript required)"
-msgstr "Por omisión, os resultados ábrense na mesma lapela. Este engadido sobreescribe o comportamento por omisión para abrir as ligazóns en novas lapelas/ventás. (Require JavaScript)"
+msgstr "Por defecto, os resultados ábrense na mesma lapela. Este complemento sobreescribe o comportamento por defecto para abrir as ligazóns en novas lapelas/ventás. (Require JavaScript)"
#: searx/plugins/search_on_category_select.py:18
msgid "Search on category select"
-msgstr "Busca en categoría seleccionada"
+msgstr "Busca na categoría seleccionada"
#: searx/plugins/search_on_category_select.py:19
msgid ""
"Perform search immediately if a category selected. Disable to select "
"multiple categories. (JavaScript required)"
-msgstr "Busca ao momento si hai unha categoría seleccionada. Desactivar para seleccionar múltiples categorías. (Require JavaScript)"
+msgstr "Busca ao momento se hai unha categoría seleccionada. Desactivar para seleccionar múltiples categorías. (Require JavaScript)"
#: searx/plugins/self_info.py:20
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
-msgstr "Mostra o seu IP si a consulta é \"ip\" e o seu Use Agent si a consulta contén \"user agent\"."
+msgstr "Mostra o teu IP se a consulta é \"ip\" e o teu Use Agent se a consulta contén \"user agent\"."
#: searx/plugins/tracker_url_remover.py:26
msgid "Tracker URL remover"
-msgstr "Eliminador de rastrexadores na URL"
+msgstr "Eliminador de rastrexadores no URL"
#: searx/plugins/tracker_url_remover.py:27
msgid "Remove trackers arguments from the returned URL"
-msgstr "Elimina os argumentos de rastrexo da URL devolta"
+msgstr "Elimina os argumentos de rastrexo do URL devolto"
#: searx/plugins/vim_hotkeys.py:3
msgid "Vim-like hotkeys"
@@ -206,13 +207,13 @@ msgstr "Atallos como os de Vim"
msgid ""
"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
"\"h\" key on main or result page to get help."
-msgstr "Navegar nos resultados da busca con atallos como os de Vim (require JavaScript). Pulse \"h\" na pantalla principal ou de resultados para obter axuda."
+msgstr "Navegar nos resultados da busca con atallos como os de Vim (require JavaScript). Preme \"h\" na pantalla principal ou de resultados para obter axuda."
#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
#: searx/templates/simple/404.html:4
msgid "Page not found"
-msgstr "Páxina non atopada"
+msgstr "Non se atopa a páxina"
#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
@@ -241,13 +242,13 @@ msgstr "axustes"
#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
#: searx/templates/oscar/navbar.html:6 searx/templates/pix-art/index.html:7
msgid "about"
-msgstr "Sobre"
+msgstr "Acerca de"
#: searx/templates/courgette/preferences.html:5
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Axustes"
@@ -255,61 +256,61 @@ msgstr "Axustes"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
-msgstr "Categorías por omisión"
+msgstr "Categorías por defecto"
#: searx/templates/courgette/preferences.html:13
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Idioma de busca"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
-msgstr "Idioma por omisión"
+msgstr "Idioma por defecto"
#: searx/templates/courgette/preferences.html:24
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Idioma da interface"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Autocompletar"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Proxy de imaxes"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Activado"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Desactivado"
@@ -317,38 +318,38 @@ msgstr "Desactivado"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Método"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Busca segura"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
-msgstr "Stricta"
+msgstr "Estrita"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Moderada"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Ningunha"
@@ -356,9 +357,9 @@ msgstr "Ningunha"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
-msgstr "Decorado"
+msgstr "Decorados"
#: searx/templates/courgette/preferences.html:83
msgid "Color"
@@ -366,7 +367,7 @@ msgstr "Cor"
#: searx/templates/courgette/preferences.html:86
msgid "Blue (default)"
-msgstr "Azul (por omisión)"
+msgstr "Azul (por defecto)"
#: searx/templates/courgette/preferences.html:87
msgid "Violet"
@@ -391,126 +392,137 @@ msgstr "Vermello"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Motores de busca utilizados actualmente"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Nome do motor"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Categoría"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Atallo"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Categoría"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Permitir"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Bloquear"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
-msgstr "Estos axustes gárdanse en testemuños, esto permítenos non ter que gardar ningún datos sobre vostede."
+msgstr "Estes axustes gárdanse en cookies, esto permítenos non ter que gardar ningún dato sobre ti."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
-msgstr "Estos testemuños son para a súa conveniencia, non utilizamos estos testemuños para rastrexala."
+msgstr "Estas cookies son para a túa conveniencia, non utilizamos estos testemuños para rastrexarte."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "gardar"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Restablecer"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "atrás"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Busca URL"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Descargar resultados"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Respostas"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Suxestións"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "páxina anterior"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "páxina seguinte"
@@ -549,132 +561,149 @@ msgstr "Cliente"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "ligazón magnet"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "ficheiro torrent"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
-msgstr "Pulse na lupa para realizar a busca"
+msgstr "Preme na lupa para realizar a busca"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Resultados en novas lapelas"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "On"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Off"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "en memoria"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Axustes avanzados"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Pechar"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
-msgstr "Fallo!"
+msgstr "Erro!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
-msgstr "Proporcionado por"
+msgstr "Grazas a"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
-msgstr "un metabuscador configurable e respetuoso coa intimidade"
+msgstr "un metabuscador configurable que respecta a túa privacidade"
+
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Código fonte"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Seguimento de problemas"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Instancias públicas"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Idioma"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "a través de proxy"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "soportado"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "non soportado"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Xeral"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Motores"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
-msgstr "Engadidos"
+msgstr "Complementos"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Respostas"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
-msgstr "Testemuños"
+msgstr "Cookies"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
-msgstr "Qué idioma prefire para buscar?"
+msgstr "Que idioma prefires para buscar?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
-msgstr "Cambiar o idioma da disposición"
+msgstr "Cambiar o idioma da interface"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
-msgstr "Buscar nas cousas metras escribe"
+msgstr "Suxestións metras escribes"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Utilizar o proxy de searx para as imaxes dos resultados"
@@ -683,155 +712,199 @@ msgid ""
"Change how forms are submited, <a "
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
" rel=\"external\">learn more about request methods</a>"
-msgstr "Cambiar cómo se envían os formularios, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">coñeza máis sobre os métodos de consulta</a>"
+msgstr "Cambiar o xeito en que se envían os formularios, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">aprende máis sobre os métodos de consulta</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filtro de contido"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
-msgstr "Cambiar a disposición de searx"
+msgstr "Cambiar a interface de searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
-msgstr "Escolla o estilo para este decorado"
+msgstr "Escolle o estilo para este decorado"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Estilo"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Atallo"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Resolutor Open Access DOI"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Redireccionar cara as versións abertas das publicacións cando estén dispoñibles (require o complemento)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Tokens do buscador"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Tokens de acceso para buscadores privados"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Permitir todo"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Desactivar todo"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Idioma seleccionado"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
-msgstr "Rango temporal"
+msgstr "Marco temporal"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Tempo medio"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Tempo máx."
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Este é o listado dos módulos de respostas instantáneas de searx"
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Nome"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Palabras chave"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Descrición"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Exemplos"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
-msgstr "Este é o listados dos testemuños e os seus valores que searx almacena na súa computadora."
+msgstr "Esta é a lista das cookies e os seus valores que searx almacena na túa computadora."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
-msgstr "Con esta lista vostede pode comprobar a transparencia de searx."
+msgstr "Con esta lista podes comprobar a transparencia de searx."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
-msgstr "Nome do testemuño"
+msgstr "Nome da cookie"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Valor"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "URL de busca dos axustes gardados actualmente."
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
-msgstr "Nota: indicando axustes personalizados na URL de busca pode reducir a súa intimidade ao filtrar datos aos sitios web dos resultados."
-
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Resultados da busca"
+msgstr "Nota: establecer axustes personalizados no URL de busca pode reducir a túa privacidade ao filtrar datos aos sitios web dos resultados."
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Intente buscar:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Os buscadores non obtiveron resultados"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Ligazóns"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "Subscrición RSS"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Resultados da busca"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Intenta buscar:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Iniciar busca"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Baleirar busca"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Baleirar"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "estatísticas"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
-msgstr "Calquer momento"
+msgstr "Calquera momento"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Último día"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Última semana"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Último mes"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Último ano"
@@ -842,7 +915,7 @@ msgstr "Heads up!"
#: searx/templates/oscar/messages/first_time.html:7
msgid "It look like you are using searx first time."
-msgstr "Semella que é a primeira vez que utiliza searx."
+msgstr "Semella que é a primeira vez que utilizas searx."
#: searx/templates/oscar/messages/no_cookies.html:3
msgid "Information!"
@@ -850,7 +923,7 @@ msgstr "Información!"
#: searx/templates/oscar/messages/no_cookies.html:4
msgid "currently, there are no cookies defined."
-msgstr "actualmente non hai testemuños establecidos."
+msgstr "actualmente non hai cookies establecidas."
#: searx/templates/oscar/messages/no_data_available.html:4
msgid "There is currently no data available. "
@@ -864,19 +937,19 @@ msgstr "Os buscadores non poden obter resultados."
#: searx/templates/oscar/messages/no_results.html:10
#: searx/templates/simple/messages/no_results.html:10
msgid "Please, try again later or find another searx instance."
-msgstr "Por favor, inténteo de novo máis tarde ou busque outra instancia de searx."
+msgstr "Por favor, inténtao máis tarde ou busca outra instancia de searx."
#: searx/templates/oscar/messages/no_results.html:14
#: searx/templates/simple/messages/no_results.html:14
msgid "Sorry!"
-msgstr "Sentímolo!"
+msgstr "Lamentámolo!"
#: searx/templates/oscar/messages/no_results.html:15
#: searx/templates/simple/messages/no_results.html:15
msgid ""
"we didn't find any results. Please use another query or search in more "
"categories."
-msgstr "non atopamos ningún resultado. Por favor, utilice outra consulta ou busque en máis categorías."
+msgstr "non atopamos ningún resultado. Por favor, realiza outra consulta ou busca en máis categorías."
#: searx/templates/oscar/messages/save_settings_successfull.html:7
msgid "Well done!"
@@ -894,21 +967,21 @@ msgstr "Vaia!"
msgid "Something went wrong."
msgstr "Algo fallou."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "mostrar medios"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "agochar medios"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Obter imaxe"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Ver fonte"
@@ -923,47 +996,47 @@ msgid "hide map"
msgstr "agochar mapa"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "mostrar detalles"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "agochar detalles"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Tamaño do ficheiro"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Bytes"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Número de ficheiros"
@@ -977,22 +1050,34 @@ msgstr "mostrar vídeo"
msgid "hide video"
msgstr "agochar vídeo"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Autoría"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Lonxitude"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Cargar máis..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Non se atoparon elementos"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Soporta o idioma seleccionado"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Interface de usuaria"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
-msgstr "Intimidade"
+msgstr "Privacidade"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Cargando..."
diff --git a/searx/translations/he/LC_MESSAGES/messages.po b/searx/translations/he/LC_MESSAGES/messages.po
index c2e851d..91fae7e 100644
--- a/searx/translations/he/LC_MESSAGES/messages.po
+++ b/searx/translations/he/LC_MESSAGES/messages.po
@@ -1,10 +1,11 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
# GenghisKhan <genghiskhan@gmx.ca>, 2015
# GenghisKhan <genghiskhan@gmx.ca>, 2015-2017,2019
+# Omer I.S. <omeritzicschwartz@gmail.com>, 2020
# pointhi, 2014
# rike, 2014
# stf <stefan.marsiske@gmail.com>, 2014
@@ -12,94 +13,82 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-03-17 10:52+0000\n"
-"Last-Translator: GenghisKhan <genghiskhan@gmx.ca>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-12-13 17:24+0000\n"
+"Last-Translator: Omer I.S. <omeritzicschwartz@gmail.com>\n"
"Language-Team: Hebrew (http://www.transifex.com/asciimoo/searx/language/he/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: he\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "פקיעת זמן"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr ""
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr ""
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "קבצים"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "כללי"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "מוזיקה"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "מדיה חברתית"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "תמונות"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "סרטונים"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "IT"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "חדשות"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "מפות"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "מדע"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "הגדרות שגויות, אנא ערוך את ההעדפות שלך"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "הגדרה לא חוקית"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "שגיאת חיפוש"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
-msgstr "לפני {minutes} דקות"
+msgstr "לפני {minutes} דקה/ות"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
-msgstr "לפני {hours} שעות, {minutes} דקות"
+msgstr "לפני {hours} שעה/ות, {minutes} דקה/ות"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "מפיק ערך אקראי"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "צור ערכים אקראיים שונים"
@@ -111,48 +100,50 @@ msgstr "פונקציות סטטיסטיקה"
msgid "Compute {functions} of the arguments"
msgstr "מחשב {functions} מתוך הארגומנטים"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "זמן מנוע (שניות)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "עומס עמוד (שניות)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "מספר תוצאות"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "דירוג"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "דירוג לכל תוצאה"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "שגיאות"
-#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "נדרש אימות CAPTCHA"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
msgstr ""
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:87
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (OBSOLETE)"
+
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "רשומה זו הוחלפה על ידי"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "שכתוב DOAI"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "הימנעות מקירות-תשלום (paywalls) על ידי הכוונה מחודשת לגרסאות כניסה-חופשית של כתבי-עת כאשר זמינות"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr ""
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -166,9 +157,19 @@ msgstr "גלילה אינסופית"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "טען אוטומטית עמוד הלאה כאשר גוללים לתחתית של עמוד נוכחי"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "הימנעות מקירות-תשלום (paywalls) על ידי הכוונה מחודשת לגרסאות כניסה-חופשית של כתבי-עת כאשר זמינות"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "פתיחת קישורי תוצאה בתוך כרטיסיות דפדפן חדשות"
@@ -251,7 +252,7 @@ msgstr "אודות"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "העדפות"
@@ -259,7 +260,7 @@ msgstr "העדפות"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "קטגוריות ברירת מחדל"
@@ -267,17 +268,17 @@ msgstr "קטגוריות ברירת מחדל"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "שפת חיפוש"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "שפה ברירת מחדל"
@@ -285,35 +286,35 @@ msgstr "שפה ברירת מחדל"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "שפת ממשק"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "השלמה אוטומטית"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "מתווך תמונה"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "מאופשר"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "מנוטרל"
@@ -321,38 +322,38 @@ msgstr "מנוטרל"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "שיטה"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "חיפוש בטוח"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "מחמיר"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "מתון"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "בלי"
@@ -360,7 +361,7 @@ msgstr "בלי"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "עיצובים"
@@ -395,126 +396,137 @@ msgstr "אדום"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "מנועי חיפוש בשימוש עתה"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "שם מנוע"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "קטגוריה"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "קיצור דרך"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "קטגוריה"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "התר"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "חסום"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "הגדרות אלו מאוחסנות בתוך העוגיות שלך, אלו מאפשרות לנו להימנע מלאחסן את מידע זה אודותייך."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "עוגיות אלו משרתות את נוחותך הבלעדית, אנחנו לא משתמשים בהן כדי לעקוב אחריך."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "שמור"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "אפס ברירות מחדל"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "חזור"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "קישור חיפוש"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "הורד תוצאות"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "תשובות"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "הצעות"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "עמוד קודם"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "עמוד הבא"
@@ -553,132 +565,149 @@ msgstr "יונקים"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "קישור magnet"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "קובץ torrent"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "לחצו על הזכוכית מגדלת כדי לבצע חיפוש"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "תוצאות בכרטיסיות חדשות"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "פועל"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "כבוי"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "מוטמן"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "הגדרות מתקדמות"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "סגור"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "שגיאה!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "מופעל באמצעות"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "מנוע מטא-חיפוש גמיש, ומכבד פרטיות"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "קוד מקור"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "מעקב בעיות"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "מופעים ציבוריים"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "שפה"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "דרך פרוקסי"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "נתמך"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "לא נתמך"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "כללי"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "מנועים"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "תוספים"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "תשובות"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "עוגיות"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "איזו שפה אתם מעדיפים לצורך חיפוש?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "שינוי שפת הממשק"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "מציאת דברים בזמן הקלדה"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "שליפת תוצאות תמונה דרך searx (מבעד Proxy)"
@@ -690,152 +719,196 @@ msgid ""
msgstr "שינוי האופן בו טפסים נשלחים, <a href=\"https://he.wikipedia.org/wiki/Hypertext_Transfer_Protocol#.D7.A9.D7.99.D7.98.D7.95.D7.AA_.D7.91.D7.A7.D7.A9.D7.94\" rel=\"external\">למדו עוד אודות שיטות בקשה (request methods)</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "סינון תוכן"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "שינוי ממשק searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "בחירת סגנון עבור עיצוב זה"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "סגנון"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "קיצור דרך"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "לאפשר הכול"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "להשבית הכול"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "שפה נבחרת"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "טווח זמן"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "זמן ממוצע"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "זמן מירבי"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr ""
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "שם"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "מילות מפתח"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "תיאור"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "דוגמאות"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "זוהי רשימה של עוגיות וערכיהן אשר searx מאחסנת על המחשב שלך."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "בעזרת רשימה זו, באפשרותך לגשת אל searx transparency."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "שם עוגייה"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "ערך"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "כתובת חיפוש של ההעדפות השמורות כעת"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr ""
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "תוצאות חיפוש"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "נסו לחפש:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "מנועים לא מסוגלים לאחזר תוצאות"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "קישורים"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "מינוי RSS"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "תוצאות חיפוש"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "אפשר לחפש את:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "התחל חיפוש"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr ""
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "ניקוי"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "סטטיסטיקות"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "כל עת"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "יום אחרון"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "שבוע אחרון"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "חודש אחרון"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "שנה אחרונה"
@@ -898,21 +971,21 @@ msgstr "אבוי!"
msgid "Something went wrong."
msgstr "משהו השתבש."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "הצג מדיה"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "הסתר מדיה"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "השג תמונה"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "צפה במקור"
@@ -927,47 +1000,47 @@ msgid "hide map"
msgstr "הסתר מפה"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "הצג פרטים"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "הסתר פרטים"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "גודל קובץ"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "בייטים"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "קי״ב"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "מי״ב"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "גי״ב"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "טי״ב"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "מספר קבצים"
@@ -981,22 +1054,34 @@ msgstr "הצג וידאו"
msgid "hide video"
msgstr "הסתר וידאו"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "אורך"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "טען עוד..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "לא נמצא פריט"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "תומך בשפה נבחרת"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "ממשק משתמש"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "פרטיות"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "כעת בטעינה..."
diff --git a/searx/translations/hr/LC_MESSAGES/messages.po b/searx/translations/hr/LC_MESSAGES/messages.po
index 94c5c74..90e814f 100644
--- a/searx/translations/hr/LC_MESSAGES/messages.po
+++ b/searx/translations/hr/LC_MESSAGES/messages.po
@@ -1,101 +1,90 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
-# Dino Dugandžija <ddugandz@tutanota.com>, 2017
+# df3fdd29c9d33426452a2db187d128e3, 2017
+# Issa1552 <fairfull.playing@gmail.com>, 2020
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 22:17+0000\n"
+"Last-Translator: Issa1552 <fairfull.playing@gmail.com>\n"
"Language-Team: Croatian (http://www.transifex.com/asciimoo/searx/language/hr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: hr\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "istek vremena"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "zatraži iznimku"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "neočekivani pad"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "datoteke"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "općenito"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "glazba"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "društveni mediji"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "slike"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "video zapisi"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "it"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "vijesti"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "karta"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "znanost"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Nevažeće postavke, uredite svoje postavke"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Nevažeće postavke"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "greška u pretraživanju"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
-msgstr "{minutes} minutu(minute, minuta) prije"
+msgstr "prije {minutes} minut(u,e,a)"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
-msgstr "{hours} sat(sata, sati), {minutes} minutu(minute, minuta) prije"
+msgstr "prije {hours} sat(i) i {minutes} minut(u,e,a)"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Generator slučajnih vrijednosti"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Generirajte različite slučajne vrijednosti"
@@ -107,48 +96,50 @@ msgstr "Funkcije statistike"
msgid "Compute {functions} of the arguments"
msgstr "Izračunajte {functions} argumenata"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Vrijeme pretraživanja (sek)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Učitavanje stranice (sek)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Broj rezultata"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Pogodci"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Pogodci po rezultatu"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Greške"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "Treba CAPTCHU ispuniti"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Uzmi upute za smjer"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(ZASTARJELO)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (ZASTARJELO)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Ovaj je unos zamijenio"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr ""
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Izbjegnite plaćanje u slučaju dostupnosti besplatne objave"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Nijedan sažetak nije dostupan za ovu objavu."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -162,9 +153,19 @@ msgstr "Beskonačno pomicanje"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Automatski učitajte sljedeću stranicu kada se pomaknete do dna trenutne stranice"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Otvoreni pristup DOI prijepisa"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Izbjegnite plaćanje u slučaju dostupnosti besplatne objave"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Otvorite veze rezultata na novim karticama preglednika"
@@ -247,7 +248,7 @@ msgstr "o nama"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Postavke"
@@ -255,7 +256,7 @@ msgstr "Postavke"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Zadane kategorije"
@@ -263,17 +264,17 @@ msgstr "Zadane kategorije"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Jezik pretraživanja"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Zadani jezik"
@@ -281,35 +282,35 @@ msgstr "Zadani jezik"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Jezik sučelja"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Automatsko dovršavanje"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Proxy slike"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Omogućeno"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Onemogućeno"
@@ -317,38 +318,38 @@ msgstr "Onemogućeno"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Metoda"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Sigurno pretraživanje"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Strogo"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Umjereno"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Ništa"
@@ -356,7 +357,7 @@ msgstr "Ništa"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Teme"
@@ -391,126 +392,137 @@ msgstr "Crvena"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Trenutno korištene tražilice"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Naziv tražilice"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Kategorija"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Prečac"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Kategorija"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Dozvoli"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Blokiraj"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Ove postavke su pohranjene u Vašim kolačićima, što omogućuje da ne spremamo podatke o Vama."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Ovi kolačići služe Vašoj pogodnosti, ne upotrebljavamo te kolačiće da bi Vas pratili."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "spremi"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Vraćanje zadanih postavki"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "natrag"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Pretraži URL"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Preuzmi rezultate"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Odgovori"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Prijedlozi"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "Prethodna stranica"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "Sljedeća stranica"
@@ -538,7 +550,7 @@ msgstr "izvorni sadržaj"
#: searx/templates/oscar/result_templates/torrent.html:6
#: searx/templates/simple/result_templates/torrent.html:9
msgid "Seeder"
-msgstr "Seeder"
+msgstr "Hranilac"
#: searx/templates/courgette/result_templates/torrent.html:7
#: searx/templates/legacy/result_templates/torrent.html:11
@@ -549,132 +561,149 @@ msgstr "Leecher"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "magnet link"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "torrent datoteka"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Kliknite na povećalo za izvođenje pretraživanja"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Rezultati u novim karticama"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Uključeno"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Isključeno"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "spremljeno"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Napredne postavke"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Zatvori"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Greška!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Pokreće"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "meta-tražilica koja poštuje privatnost"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Izvorni kod"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Tragač problema"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Javne instance"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Jezik"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "preko proxyja"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "podržano"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "nije podržano"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Općenito"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Tražilice"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Dodaci"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Davatelji odgovora"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Kolačići"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Koji jezik želite za pretraživanje?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Promijenite jezik prikaza"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Pronađite stvari prilikom upisivanja"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Koristite proxy za slike dobivene pretraživanjem searxa"
@@ -686,152 +715,196 @@ msgid ""
msgstr "Promijenite način slanja obrasca, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">saznajte više o metodama zahtjeva</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filtriranje sadržaja"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Promijenite izgled searxa"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Odaberite stil za ovu temu"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Stil"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Prečac"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Otvoreni pristup DOI rješenja"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Preusmjeri na verzije izdanja otvorenog pristupa kada je isto dostupno (potreban je dodatak)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Motorni žetoni"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Pristupite žetone za privatne motore"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Dozvoli sve"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Isključi sve"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Odabrani jezik"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Vremenski raspon"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Prosječno vrijeme"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Maksimalno vrijeme"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Ovo je popis searx modula za odgovore"
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Naziv"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Ključne riječi"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Opis"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Primjeri"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Ovo je popis kolačića i njihovih vrijednosti koje pohranjuju na Vašem računalu."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "S tim popisom možete procijeniti transparentnost pretraživanja."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Naziv kolačića"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Vrijednost"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "Pretraži URL adresu trenutno spremljenih postavki"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Napomena: određivanje prilagođenih postavki u URL-u za pretraživanje može smanjiti privatnost \nzbog propuštanja podataka na kliknute web lokacije rezultata."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Rezultati pretraživanja"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Pokušajte tražiti sljedeće:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Tražilice ne mogu dohvatiti rezultate"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Poveznice"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "RSS pretplata"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Rezultati pretraživanja"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Pokušajte tražiti sljedeće:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Pokreni pretraživanje"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Očistite pretražnik"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Očisti"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "statistika"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Bilokad"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Posljednji dan"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Prošli tjedan"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Prošli mjesec"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Prošle godine"
@@ -894,21 +967,21 @@ msgstr "Ups!"
msgid "Something went wrong."
msgstr "Nešto je pošlo po zlu."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "prikaži medije"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "sakrij medije"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Dohvati sliku"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Prikaži izvor"
@@ -923,47 +996,47 @@ msgid "hide map"
msgstr "sakrij kartu"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "prikaži detalje"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "sakrij detalje"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Veličina datoteke"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Bajti"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Broj datoteka"
@@ -977,22 +1050,34 @@ msgstr "prikaži video"
msgid "hide video"
msgstr "sakrij video"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Autor"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Dužina"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Učitaj više..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Nije pronađena nijedna stavka"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Podržava odabrani jezik"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Korisničko sučelje"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Privatnost"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Učitavanje..."
diff --git a/searx/translations/hu/LC_MESSAGES/messages.po b/searx/translations/hu/LC_MESSAGES/messages.po
index 8a29dcf..8b4d983 100644
--- a/searx/translations/hu/LC_MESSAGES/messages.po
+++ b/searx/translations/hu/LC_MESSAGES/messages.po
@@ -1,9 +1,9 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
-# Adam Tauber <asciimoo@gmail.com>, 2014-2017
+# Adam Tauber <asciimoo@gmail.com>, 2014-2017,2020
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
# Noémi Ványi <sitbackandwait@gmail.com>, 2016
# Noémi Ványi <sitbackandwait@gmail.com>, 2016-2017
@@ -11,94 +11,82 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 13:14+0000\n"
"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
"Language-Team: Hungarian (http://www.transifex.com/asciimoo/searx/language/hu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: hu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "idő túllépés"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "kérés hiba"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "nem várt hiba"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "fájlok"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "általános"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "zene"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "közösségi média"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "képek"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "videók"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "it"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "hírek"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "térkép"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "tudomány"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Érvénytelen beállítások"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "érvénytelen beállítások"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "keresési hiba"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} perce"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} óra, {minutes} perce"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Véletlen érték generátor"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Különböző random értékek generálása"
@@ -110,48 +98,50 @@ msgstr "Statisztikai függvények"
msgid "Compute {functions} of the arguments"
msgstr "{functions} függvények alkalmazása az argumentumokon"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Keresési idő (másodperc)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Válaszidők (sec)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Találatok száma"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Pontszámok"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Pontszámok találatonként"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Hibák"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "CAPTCHA hiba"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Útvonal tervezés"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(ELAVULT)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (elavult)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Ezt a bejegyzést törölte:"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "Szabad publikációs oldalak"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Publikácós linkeknél szabad forrás használat, amennyiben lehetséges"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Nem elérhető absztrakt a publikációhoz."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -165,9 +155,19 @@ msgstr "Végtelenített találatok"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "További találatok automatikus betöltése"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Szabad DOI használat"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Publikácós linkeknél szabad forrás használat, amennyiben lehetséges"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Találatok megnyitása új lapon"
@@ -250,7 +250,7 @@ msgstr "rólunk"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Beállítások"
@@ -258,7 +258,7 @@ msgstr "Beállítások"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Alapértelmezett kategóriák"
@@ -266,17 +266,17 @@ msgstr "Alapértelmezett kategóriák"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Keresés nyelve"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Alapértelmezett nyelv"
@@ -284,35 +284,35 @@ msgstr "Alapértelmezett nyelv"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Felület nyelve"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Automatikus kiegészítés"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Kép proxy"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Engedélyez"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Inaktivál"
@@ -320,38 +320,38 @@ msgstr "Inaktivál"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Method"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Felnőtt tartalom szűrés"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Erős"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Enyhe"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Nincs"
@@ -359,7 +359,7 @@ msgstr "Nincs"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Megjelenés"
@@ -394,126 +394,137 @@ msgstr "Piros"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Jelenleg használt keresők"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Kereső neve"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Kategória"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Rövidítés"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Kategória"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Engedélyezés"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Tiltás"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Ezek a beállítások csak a böngésző cookie-jaiban tárolódnak."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Ezek a cookie-k csak kényelmi funkciókat látnak el, nem használjuk a felhasználók követésére."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "mentés"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Alapbeállítások visszaállítása"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "vissza"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Keresési URL"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Találatok letöltése"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Válaszok"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Javaslatok"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "előző oldal"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "következő oldal"
@@ -552,132 +563,149 @@ msgstr "Leecher"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "magnet link"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "torrent fájl"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "A nagyítóra kattintva indítható a keresés"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Eredmények új tabon"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "On"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Off"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "tárolt"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Keresés beállításai"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Bezár"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Hiba!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Az oldalt kiszolgálja: "
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "egy privátszféra tisztelő, könnyen módosítható metakereső"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Forrás kód"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Hibajegy kezelő"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Publikus példányok"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Nyelv"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "proxy nézet"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "támogatott"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "nem támogatott"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Általános"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Keresőmotorok"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Pluginek"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Válaszok"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Sütik"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Preferált keresési nyelv"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Felület nyelve"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Autómatikus kereső kifejezés kiegészítés"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Kép találatok betöltése searx-ön keresztül"
@@ -689,152 +717,196 @@ msgid ""
msgstr "Keresés metódusa (<a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">bővebben</a>)"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Tartalom szűrés"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Megjelenés"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Válassz megjelenést ehhez a témához"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Megjelenés"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Rövidítés"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Szabad DOI feloldó"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Átirányítás a publikáció szabadon elérhető változatára (plugin szükséges)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Keresőmotor kulcsok"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Hozzáférési kulcsok"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Mindent engedélyez"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Mindent tilt"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Kiválasztott nyelv"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Idő szűrés"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Átlag idő"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Maximális idő"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Az alábbi lista tartalmazza searx instant válaszoló moduljait."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Név"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Kulcsszavak"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Leírás"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Példák"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Searx által használt sütik listája."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Ez a lista a kereső transzparenciáját hivatott megmutatni."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Süti név"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Érték"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "Keresési URL a beállítások alapján"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Megjegyzés: URL-ben tárolt saját beállítások csökkenthetik az anonimitást."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Keresési eredmények"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Keresés erre:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Nincs találat a keresőmotortól"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Linkek"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "RSS feliratkozás"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Keresési eredmények"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Keresés erre:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Keresés indítása"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Keresés törlése"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Törlés"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "statisztikák"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Bármikor"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Legutóbbi nap"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Legutóbbi hét"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Legutóbbi hónap"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Előző év"
@@ -897,21 +969,21 @@ msgstr "Oh!"
msgid "Something went wrong."
msgstr "Hiba történt"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "médium mutatása"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "médium elrejtése"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Kép megjelenítése"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Forrás megtekintése"
@@ -926,47 +998,47 @@ msgid "hide map"
msgstr "Térkép elrejtése"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "Részletek"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "Részletek elrejtése"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Fájl méret"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Byte"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Fájlok száma"
@@ -980,22 +1052,34 @@ msgstr "video mutatása"
msgid "hide video"
msgstr "video elrejtése"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Szerző"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Hossz"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "További találatok betöltése"
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Nincs találat"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Támogatja a kiválasztott nyelvet"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Felhaszálói felület"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Magánszféra"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Töltés..."
diff --git a/searx/translations/ia/LC_MESSAGES/messages.po b/searx/translations/ia/LC_MESSAGES/messages.po
index 7c59968..8046114 100644
--- a/searx/translations/ia/LC_MESSAGES/messages.po
+++ b/searx/translations/ia/LC_MESSAGES/messages.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -8,94 +8,82 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-09-30 14:07+0000\n"
-"Last-Translator: Guimarães Mello <matheus.mello@disroot.org>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 13:10+0000\n"
+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
"Language-Team: Interlingua (http://www.transifex.com/asciimoo/searx/language/ia/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: ia\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "tempore finite"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "requesta un exception"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "crash impreviste"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "files"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "general"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "musica"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "medios social"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "imagines"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "videos"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "software"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "novas"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "mappa"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "scientia"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Configurationes non valide, per favor, modifica tu preferentias."
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Configurationes invalide"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "error in recerca"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} minuta(s) retro"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} hora(s), {minutes} minuta(s) retro"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Generator de valores aleatori"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Generar differente valores aleatori"
@@ -107,48 +95,50 @@ msgstr "Functiones statistic"
msgid "Compute {functions} of the arguments"
msgstr "Computa {functions} del argumentos"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Tempore de motor (secundas)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Cargas de pagina (secundas)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Numero de resultatos"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Punctos"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Punctos per resultato"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Errores"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr ""
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr ""
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(OBSOLETE)"
+msgid "{title} (OBSOLETE)"
+msgstr ""
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Iste entrata esseva substituite per"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "rescriber DOAI "
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Evita paywalls per redirectionar a versiones de publicationes in accesso aperte, quando disponibile"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr ""
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -162,9 +152,19 @@ msgstr "Rolamento infinite"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Automaticamente cargar le proxime pagina quando arrivar al fundo del pagina actual"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Evita paywalls per redirectionar a versiones de publicationes in accesso aperte, quando disponibile"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Aperir le resultatos sur nove schedas del navigator"
@@ -247,7 +247,7 @@ msgstr "a proposito"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Preferentias"
@@ -255,7 +255,7 @@ msgstr "Preferentias"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "categorias predefinite"
@@ -263,17 +263,17 @@ msgstr "categorias predefinite"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Lingua pro le recerca"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Lingua predefinite"
@@ -281,35 +281,35 @@ msgstr "Lingua predefinite"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Lingua del interfacie"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Autocompletar"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Proxy pro imagines"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Activate"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Disactivate"
@@ -317,38 +317,38 @@ msgstr "Disactivate"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Methodo"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Filtro de contento potentialmente offensive"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Rigorose"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Moderate"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Nulle"
@@ -356,7 +356,7 @@ msgstr "Nulle"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Themas"
@@ -391,126 +391,137 @@ msgstr "Rubie"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Motores de recerca actualmente usate"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Nomine del motor"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Categoria"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Via breve"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Categoria"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Permitter"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Blocar"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Iste preferentias es salvate in tu cookies, le qual permitte nos non salvar iste datos super vos."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Iste cookies servi solmente a tu convenientia, nos non usa iste cookies pro traciar te."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "salveguardar"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Restablir configurationes"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "retroceder"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Recercar URL"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Discargar resultatos"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Replicas"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Suggestiones"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "pagina previe"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "pagina sequente"
@@ -549,132 +560,149 @@ msgstr "Leecher"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "ligamine magnetic"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "file torrente"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Clicca sur le lupa pro exequer le recerca"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Resultatos sur nove schedas"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Activate"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Disactivate"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "in cache"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Configurationes avantiate"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Clauder"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Error!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Actionate per"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "un motor de meta-recerca, capabile de reprogrammation e respectuose al confidentialitate"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr ""
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr ""
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr ""
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "per proxy"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "supportate"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "non supportate"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "General"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Motores"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Extensiones"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Modulos de Responsa"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cookies"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Qual lingua tu prefere pro recercar? "
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Cambia le lingua del interfacie"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Trova cosas durante que tu scribe"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Usar proxy pro obtener resultatos de imagines per searx"
@@ -686,152 +714,196 @@ msgid ""
msgstr "Cambiar como le formularios es submittite. <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\"> apprende plus re methodos de requesta </a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filtrar contento"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Cambiar le interfacie de searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Selectiona un stilo pro iste thema"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Stilo"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Via breve"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr ""
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Lingua selectionate"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Intervallo de tempore"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Tempore medie"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Tempore maxime"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Isto es le lista del modulos de responsa instantanee de searx."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Nomine"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Parolas clave"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Description"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Exemplos"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Isto es le lista de cookies e lor valores que searx salva in tu computator."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Per iste lista, tu pote evalutar le transparentia de searx."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Nomine de cookie"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Valor"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "URL de Recerca del preferentias actualmente salvate"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Nota: specificar configurationes personalisate in le URL de Recerca pote reducer le confidentialitate per lassar escappar datos al sitos cliccate in le resultatos."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Resultatos de recerca"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Essaya recercar pro:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Le motores non poteva obtener resultatos"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Ligamines"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr ""
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Resultatos de recerca"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Essaya recercar pro:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Initiar recerca"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr ""
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr ""
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "statisticas"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Aliquando"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Le die passate"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Le septimana passate"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Le mense passate"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Le anno passate"
@@ -894,21 +966,21 @@ msgstr "Oh no!"
msgid "Something went wrong."
msgstr "Alco occurreva mal."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "monstrar multimedia"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "occultar multimedia"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Obtener imagine"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Vider fonte"
@@ -923,47 +995,47 @@ msgid "hide map"
msgstr "occultar mappa"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "monstrar detalios"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "occultar detalios"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Dimension del file"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Bytes"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Numero de Files"
@@ -977,22 +1049,34 @@ msgstr "monstrar video"
msgid "hide video"
msgstr "occultar video"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr ""
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Cargar plus..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Nulle item trovate"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Supporta le lingua selectionate"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Interfacie del usator"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Confidentialitate"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr ""
diff --git a/searx/translations/it/LC_MESSAGES/messages.po b/searx/translations/it/LC_MESSAGES/messages.po
index ba5c5e3..6cf589d 100644
--- a/searx/translations/it/LC_MESSAGES/messages.po
+++ b/searx/translations/it/LC_MESSAGES/messages.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -11,99 +11,87 @@
# Federico <fedett@gmail.com>, 2018
# Luca C <mybusiness@yopmail.com>, 2017
# Luc <luc.absil2@gmail.com>, 2015
-# Random_R, 2018-2019
+# Random_R, 2018-2020
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-11-19 10:03+0000\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-09-25 10:10+0000\n"
"Last-Translator: Random_R\n"
"Language-Team: Italian (http://www.transifex.com/asciimoo/searx/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "tempo scaduto"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "eccezione della richiesta"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "crash inaspettato"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "documenti"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "generale"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "musica"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "social"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "immagini"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "video"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "IT"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "notizie"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "mappe"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "scienza"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Impostazioni non valide, modifica le tue preferenze"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Impostazioni non valide"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "errore di ricerca"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "di {minutes} minuti fa"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "di {hours} ore e {minutes} minuti fa"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Generatore di numeri casuali"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Genera più numeri casuali"
@@ -115,48 +103,50 @@ msgstr "Funzioni statistiche"
msgid "Compute {functions} of the arguments"
msgstr "Calcola {functions} degli argomenti"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Tempo del motore (secondi)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr " Caricamento della pagina (secondi)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Numero di risultati"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Punteggio"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Punteggio per risultato"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Errori"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "CAPTCHA richiesto"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Ricevi direzioni"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(OBSOLETO)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (OBSOLETO)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Questa voce è stata sostituita da"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "Reindirizzamento DOAI"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Se possibile, evita il paywall di una pubblicazione reindirizzando ad una versione ad accesso libero"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Nessun sommario disponibile per questa pubblicazione"
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -170,9 +160,19 @@ msgstr "Scorrimento infinito"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Carica automaticamente la pagina successiva quando si scorre sino alla fine della pagina attuale"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Reindirizzamento Open Access DOI"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Se possibile, evita il paywall di una pubblicazione reindirizzando ad una versione ad accesso libero"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Apri i risultati in nuove schede del browser"
@@ -255,7 +255,7 @@ msgstr "informazioni"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Preferenze"
@@ -263,7 +263,7 @@ msgstr "Preferenze"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Categorie predefinite"
@@ -271,17 +271,17 @@ msgstr "Categorie predefinite"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Lingua di ricerca"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Lingua predefinita"
@@ -289,35 +289,35 @@ msgstr "Lingua predefinita"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Lingua dell'interfaccia"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Completamento automatico"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Proxy immagini"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Attivo"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Disabilitato"
@@ -325,38 +325,38 @@ msgstr "Disabilitato"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Metodo"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Ricerca Sicura"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Rigorosa"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Moderata"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Nessuna"
@@ -364,7 +364,7 @@ msgstr "Nessuna"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Temi"
@@ -399,126 +399,137 @@ msgstr "Rosso"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Motori di ricerca attualmente in uso"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Nome del motore"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Categoria"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Scorciatoia"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Categoria"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Autorizza"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Blocca"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Le impostazioni vengono salvate nei tuoi cookie, consentendoci di non conservare dati su di te."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Questi cookie servono solo ad offrirti un servizio migliore. Non li usiamo per tracciarti."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "salva"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Reimposta i valori iniziali"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "indietro"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "URL della ricerca"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Scarica i risultati"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Risposte"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Suggerimenti"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "pagina precedente"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "pagina successiva"
@@ -557,132 +568,149 @@ msgstr "Leecher"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "magnet link"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "file torrent"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Premi sull'icona della lente per avviare la ricerca"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Risultati in una nuova scheda"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "On"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Off"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
-msgstr "in cache"
+msgstr "cache"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Impostazioni avanzate"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Chiudi"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Errore!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Offerto da"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
-msgstr "Un metamotore di ricerca hackerabile e rispettoso della privacy"
+msgstr "un metamotore di ricerca personalizzabile e rispettoso della privacy"
+
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Codice sorgente"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Tracker problemi"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Istanze pubbliche"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Lingua"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
-msgstr "via proxy"
+msgstr "proxy"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "supportato"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "non supportato"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Generale"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Motori"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Plugin"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Risponditori"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cookie"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Che lingua preferisci per la ricerca?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Cambia la lingua dell'interfaccia"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Visualizza risultati mentre digiti"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Usa un proxy per le immagini ottenute attraverso searx"
@@ -694,152 +722,196 @@ msgid ""
msgstr "Seleziona il metodo di richiesta HTTP (<a href=\"https://it.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Messaggio_di_richiesta\" rel=\"external\">Cos'è un metodo di richiesta?</a>)"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filtro famiglia"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Cambia l'aspetto di searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Scegli lo stile per questo tema"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Stile"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Scorciatoia"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Resolver Open Access DOI"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Indirizza a versioni open-access delle pubblicazioni quando disponibili (plugin richiesto)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Gettoni del motore"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Gettoni di accesso per motori privati"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Permetti tutto"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Disattiva tutto"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Lingua selezionata"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Intervallo di tempo"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Tempo medio"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Tempo massimo"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Questa è la lista dei moduli searx con risposta immediata"
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Nome"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Parole chiave"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Descrizione"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Esempi"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Qui puoi vedere i cookie che vengono conservati sul tuo computer."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "In questo modo, puoi constatare la trasparenza di searx."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Nome del cookie"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Valore"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "URL di ricerca delle preferenze attualmente salvate"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Nota: specificare impostazioni personalizzate nell'URL di ricerca può ridurre la privacy facendo trapelare dati ai siti cliccati"
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Risultati della ricerca"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Prova a cercare:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "I motori di ricerca non riescono a recuperare risultati"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Collegamenti"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "Abbonamento RSS"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Risultati della ricerca"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Prova a cercare:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Cerca"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Svuota ricerca"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Svuota"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "statistiche"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Qualsiasi data"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Ultimo giorno"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Ultima settimana"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Ultimo mese"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Ultimo anno"
@@ -902,21 +974,21 @@ msgstr "Mannaggia!"
msgid "Something went wrong."
msgstr "Qualcosa è andato storto."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "mostra media"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "nascondi media"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Visualizza immagine"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Guarda la fonte"
@@ -931,47 +1003,47 @@ msgid "hide map"
msgstr "nascondi mappa"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "mostra dettagli"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "nascondi dettagli"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Dimensioni file"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Bytes"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Numero di file"
@@ -985,22 +1057,34 @@ msgstr "mostra video"
msgid "hide video"
msgstr "nascondi video"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Autore"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Lunghezza"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Carica altro..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Nessun oggetto trovato"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "La lingua selezionata è disponibile"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Interfaccia utente"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Privacy"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Caricamento..."
diff --git a/searx/translations/ja/LC_MESSAGES/messages.po b/searx/translations/ja/LC_MESSAGES/messages.po
index 94f1504..68efed9 100644
--- a/searx/translations/ja/LC_MESSAGES/messages.po
+++ b/searx/translations/ja/LC_MESSAGES/messages.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -11,99 +11,89 @@
# Max <theshirinzu@gmail.com>, 2015
# Nobuhiro Iwamatsu <iwamatsu@nigauri.org>, 2018
# pointhi, 2014
+# te mp, 2022
# Thomas Pointhuber, 2015-2016
+# アノニマス 名なし <renraku@076.ne.jp>, 2021
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2020-01-20 14:30+0000\n"
-"Last-Translator: KAWASAKI ICHIRO\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2014-01-30 14:32+0000\n"
+"Last-Translator: te mp, 2022\n"
"Language-Team: Japanese (http://www.transifex.com/asciimoo/searx/language/ja/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: ja\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "タイムアウト"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "例外要求"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "予期しないクラッシュ"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "ファイル"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "一般"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "音楽"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "ソーシャルメディア"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "画像"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "動画"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "情報技術"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "ニュース"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "地図"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "学問"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "不正な設定です。設定を編集してください。"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "不正な設定"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "検索エラー"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes}分前"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours}時間と{minutes}分前"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "ランダム値の生成"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "新しいランダム値を生成する"
@@ -115,48 +105,50 @@ msgstr "統計機能"
msgid "Compute {functions} of the arguments"
msgstr "変数の{functions}を計算する"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "検索時間 (秒)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "ページ読み込み時間 (秒)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "通知の数"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "スコア"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "検索結果当たりスコア"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "エラー"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "CAPTCHAは必須となります"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr ""
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(廃止)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (OBSOLETE)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "このエントリーの優先"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "DOAI再書き込み"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "可能ならば出版物のオープンアクセス版へリダイレクトして有料の壁を避ける"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "この出版物には要約がありません。"
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -170,9 +162,19 @@ msgstr "無限スクロール"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "現在のページの下端でスクロールすると自動的に次のページを読み込む"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "オープンアクセス DOI リライト"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "可能ならば出版物のオープンアクセス版へリダイレクトして有料の壁を避ける"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "検索結果のリンクを新しいタブで開く"
@@ -255,7 +257,7 @@ msgstr "このサイトについて"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "設定"
@@ -263,7 +265,7 @@ msgstr "設定"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "デフォルトのカテゴリ"
@@ -271,17 +273,17 @@ msgstr "デフォルトのカテゴリ"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "検索の言語"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "デフォルト言語"
@@ -289,35 +291,35 @@ msgstr "デフォルト言語"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "インターフェースの言語"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "オートコンプリート"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "画像プロキシ"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "有効"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "無効"
@@ -325,38 +327,38 @@ msgstr "無効"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "方法"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "安全な検索"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "厳しく"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "ゆるく"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "なし"
@@ -364,7 +366,7 @@ msgstr "なし"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "テーマ"
@@ -399,126 +401,137 @@ msgstr "赤"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "現在使用中の検索エンジン"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "検索エンジン名"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "カテゴリー"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "ショートカット"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "カテゴリー"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "許可する"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "禁止する"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "これらの設定はあなたのクッキーに保存されますが、これはサーバーがあなたの情報の保存するわけではありません。"
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "クッキーはあなたが便利に使えるようにするために使うのであって、サーバーはあなたを追跡するためにクッキーを使うことはありません。"
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "保存"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "デフォルト設定に戻す"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "戻る"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "URL を検索する"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "ダウンロードするファイル形式"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "回答"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "提案"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "前のページ"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "次のページ"
@@ -557,132 +570,149 @@ msgstr "リーチャー"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "マグネットリンク"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "トレントファイル"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "検索を実行するには虫めがねをクリックしてください"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "新しいタブに結果を表示"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "有効"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "無効"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "キャッシュ"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "発展的な設定"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "閉じる"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "エラー!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Powered by"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "プライバシー保護を重視した、ハッカブルなメタサーチエンジン"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "ソースコード"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "課題報告"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "公開インスタンス"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "言語"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "プロキシされている"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "サポート"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "未サポート"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "一般設定"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "検索エンジン"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "プラグイン"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "回答者"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "クッキー"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "検索に使う言語はどれが良いですか?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "表示する言語を変更"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "入力補助に使う検索エンジン"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "画像検索結果を searx でプロキシする"
@@ -694,152 +724,196 @@ msgid ""
msgstr "フォームがどの方法で送信されるかを変更できます。<a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">リクエストメソッドについて詳しく知るにはここをクリック</a>。"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "コンテンツをフィルタリングする"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Searx のレイアウトの変更"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "このテーマのスタイルを選択"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "スタイル"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "ショートカット"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "オープンアクセス DOI リゾルバー"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "利用可能な場合(プラグインが必要)、オープンアクセス版の出版物にリダイレクトする"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "エンジントークン"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "プライベートエンジンのアクセストークン"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "すべてを許可する"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "すべてを無効にする"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "選択された言語"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "時間範囲"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "平均時間"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "最大時間"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "これは searx の即席回答モジュールのリストです。"
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "名前"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "キーワード"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "説明"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "例"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "これはクッキーのリストで、これらの値はあなたのコンピュータに保存されています。"
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "このリストによって、あなたは searx の透明性を評価できます。"
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "クッキー名"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "値"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "現在保存されている設定の検索 URL"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "注意: 検索 URL にカスタム設定を指定すると、クリックした結果サイトにデータが漏洩し、プライバシーが低下する恐れがあります。"
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "検索結果"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "検索:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "エンジンは結果を取得できません"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "リンク"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "RSS登録"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "検索結果"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "検索:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "検索を開始"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "検索のクリア"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "クリア"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "統計"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "いつでも"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "先日"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "先週"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "先月"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "去年"
@@ -902,21 +976,21 @@ msgstr "ちぇっ!"
msgid "Something went wrong."
msgstr "なにか問題が起こっているようです。"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "メディアを表示する"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "メディアを隠す"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "画像を取得する"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "ソースを閲覧する"
@@ -931,47 +1005,47 @@ msgid "hide map"
msgstr "地図を隠す"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "詳細を表示する"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "詳細を隠す"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "ファイルサイズ"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "バイト"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "キロバイト"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "メガバイト"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "ギガバイト"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "テラバイト"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "ファイル数"
@@ -985,22 +1059,34 @@ msgstr "動画を表示する"
msgid "hide video"
msgstr "動画を隠す"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "作者"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "長さ"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "もっと見る…"
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "アイテムが見つかりません"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "選択された言語のサポート"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "ユーザーインターフェース"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "プライバシー"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "読み込み中…"
diff --git a/searx/translations/lt/LC_MESSAGES/messages.po b/searx/translations/lt/LC_MESSAGES/messages.po
index f9e4ffd..4f7b570 100644
--- a/searx/translations/lt/LC_MESSAGES/messages.po
+++ b/searx/translations/lt/LC_MESSAGES/messages.po
@@ -1,101 +1,89 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
-# Moo, 2019
+# Moo, 2019-2020
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-11-02 12:57+0000\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-12 11:15+0000\n"
"Last-Translator: Moo\n"
"Language-Team: Lithuanian (http://www.transifex.com/asciimoo/searx/language/lt/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: lt\n"
"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "baigėsi laikas"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "užklausos išimtis"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "netikėta strigtis"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "failai"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "bendra"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "muzika"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "socialinė medija"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "paveikslai"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "vaizdo įrašai"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "IT"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "naujienos"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "žemėlapis"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "mokslas"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Neteisingi nustatymai, pataisykite savo nuostatas"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Neteisingi nustatymai"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "paieškos klaida"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "prieš {minutes} min."
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "prieš {hours} val., {minutes} min."
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Atsitiktinių reikmių generatorius"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Generuoja įvairias atsitiktines reikšmes"
@@ -107,48 +95,50 @@ msgstr "Statistikos funkcijos"
msgid "Compute {functions} of the arguments"
msgstr "Skaičiuoti argumentų {functions} funkcijas"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Sistemos laikas (sek.)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Puslapių įkėlimai (sek.)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Rezultatų skaičius"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Įverčiai"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Įverčiai pagal rezultatą"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Klaidos"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "Reikalingas saugos kodas"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Gauti nurodymus"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(PASENĘS)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (PASENĘS)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Šį įrašą pakeitė"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "DOAI perrašymas"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Vengti apmokamų sienų, kai įmanoma, peradresuojant į atviros prieigos publikacijų versijas"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Šiai publikacijai nėra prieinama jokia santrauka."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -162,9 +152,19 @@ msgstr "Begalinis slinkimas"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Automatiškai įkelti kitą puslapį, kai nuslenkama į esamo puslapio apačią"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Atvirosios prieigos DOI perrašymas"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Vengti apmokamų sienų, kai įmanoma, peradresuojant į atviros prieigos publikacijų versijas"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Atverti rezultatų nuorodas naujose naršyklės kortelėse"
@@ -247,7 +247,7 @@ msgstr "apie"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Nuostatos"
@@ -255,7 +255,7 @@ msgstr "Nuostatos"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Numatytosios kategorijos"
@@ -263,17 +263,17 @@ msgstr "Numatytosios kategorijos"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Paieškos kalba"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Numatytoji kalba"
@@ -281,35 +281,35 @@ msgstr "Numatytoji kalba"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Sąsajos kalba"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Automatinis užbaigimas"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Paveikslų įgaliotasis serveris"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Įjungta"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Išjungta"
@@ -317,38 +317,38 @@ msgstr "Išjungta"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Metodas"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Saugi paieška"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Griežta"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Nuosaiki"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Nėra"
@@ -356,7 +356,7 @@ msgstr "Nėra"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Apipavidalinimai"
@@ -391,126 +391,137 @@ msgstr "Raudona"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Šiuo metu naudojamos paieškos sistemos"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Sistemos pavadinimas"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Kategorija"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Trumpinys"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Kategorija"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Leisti"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Blokuoti"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Šie nustatymai yra laikomi jūsų slapukuose, tai leidžia mums nesaugoti šių duomenų apie jus."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Šie slapukai yra naudojami išskirtinai jūsų patogumui, mes nenaudojame jų, kad jus sektume."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "Įrašyti"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Atstatyti numatytuosius"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "Atgal"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Paieškos URL"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Atsisiųsti rezultatus"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Atsakymai"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Pasiūlymai"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "ankstesnis puslapis"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "kitas puslapis"
@@ -549,132 +560,149 @@ msgstr "Siuntėjai"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "magnet nuoroda"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "torrent failas"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Norėdami atlikti paiešką, spustelėkite ant didinamojo stiklo"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Rezultatai naujose kortelėse"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Įjungta"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Išjungta"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "podėlio versija"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Išplėstiniai nustatymai"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Užverti"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Klaida!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Veikia su"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "gerbianti privatumą, programuojama metapaieškos sistema"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Pradinis kodas"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Klaidų sekiklis"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Viešieji egzemplioriai"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Kalba"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "per įgaliotąjį serverį"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "palaikoma"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "nepalaikoma"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Bendra"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Sistemos"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Įskiepiai"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Atsakikliai"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Slapukai"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Kokią kalbą pageidaujate paieškai?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Keisti išdėstymo kalbą"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Rasti medžiagą berašant"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Paveikslų persiuntimas įgaliotuoju serveriu per searx"
@@ -686,152 +714,196 @@ msgid ""
msgstr "Keisti kaip yra pateikiamos formos, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">sužinokite daugiau apie užklausos metodus</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filtruoti turinį"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Keisti searx išdėstymą"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Pasirinkti šio apipavidalinimo stilių"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Stilius"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Trumpinys"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Atvirosios prieigos DOI sprendimų įtaisas"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Kai įmanoma, peradresuoti į atvirojoje prieigoje esančias publikacijų versijas (reikalingas įskiepis)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Sistemos prieigos raktai"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Privačiųjų sistemų prieigos raktai"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Leisti visus"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Išjungti visus"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Pasirinkta kalba"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Laiko rėžis"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Vid. laikas"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Maks. laikas"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Tai yra searx greitų atsakiklių modulių sąrašas."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Pavadinimas"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Raktažodžiai"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Aprašas"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Pavyzdžiai"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Tai yra slapukų ir jų reikšmių, kuriuos searx laiko jūsų kompiuteryje, sąrašas."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Naudodami sąrašą, galite įvertinti searx skaidrumą."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Slapuko pavadinimas"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Reikšmė"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "Šiuo metu įrašytų nuostatų paieškos URL"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Pastaba: paieškos URL adrese nurodant tinkintus nustatymus, gali būti sumažintas jūsų privatumas, atskleidžiant duomenis toms rezultatų svetainėms, ant kurių spustelėjate."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Paieškos rezultatai"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Bandykite ieškoti:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Sistemos negali gauti rezultatų"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Nuorodos"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "RSS prenumerata"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Paieškos rezultatai"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Bandykite ieškoti:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Pradėti paiešką"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Išvalyti paiešką"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Išvalyti"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "statistika"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Bet kada"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Praeitą dieną"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Praeitą savaitę"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Praeitą mėnesį"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Praeitais metais"
@@ -894,21 +966,21 @@ msgstr "O, ne!"
msgid "Something went wrong."
msgstr "Kažkas nutiko."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "rodyti mediją"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "slėpti mediją"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Gauti paveikslą"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Rodyti šaltinį"
@@ -923,47 +995,47 @@ msgid "hide map"
msgstr "slėpti žemėlapį"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "rodyti informaciją"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "slėpti informaciją"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Failo dydis"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Baitai"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Failų skaičius"
@@ -977,22 +1049,34 @@ msgstr "rodyti vaizdo įrašą"
msgid "hide video"
msgstr "slėpti vaizdo įrašą"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Autorius"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Trukmė"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Įkelti daugiau..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Elementų nerasta"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Palaiko pasirinktą kalbą"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Naudotojo sąsaja"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Privatumas"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Įkeliama..."
diff --git a/searx/translations/nl/LC_MESSAGES/messages.po b/searx/translations/nl/LC_MESSAGES/messages.po
index be2438b..55c221b 100644
--- a/searx/translations/nl/LC_MESSAGES/messages.po
+++ b/searx/translations/nl/LC_MESSAGES/messages.po
@@ -1,103 +1,92 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
-# André Koot <meneer@tken.net>, 2014-2018
+# André Koot <meneer@tken.net>, 2014-2018,2020
+# Issa1552 <fairfull.playing@gmail.com>, 2020-2021
# Nathan Follens, 2015-2018
# Rejo Zenger <rejo@zenger.nl>, 2016-2017
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-04-27 08:22+0000\n"
-"Last-Translator: André Koot <meneer@tken.net>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2014-01-30 14:32+0000\n"
+"Last-Translator: Issa1552 <fairfull.playing@gmail.com>, 2020-2021\n"
"Language-Team: Dutch (http://www.transifex.com/asciimoo/searx/language/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "time-out"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "aanvraaguitzondering"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "onverwachte crash"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "bestanden"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "algemeen"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "muziek"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "sociale media"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "afbeeldingen"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "video’s"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "IT"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "nieuws"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "kaart"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "wetenschap"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Ongeldige instellingen, werk je voorkeuren bij"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Ongeldige instellingen"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "zoekfout"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} min geleden"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} uur, {minutes} min geleden"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Random value generator"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Genereer verschillende willekeurige waarden"
@@ -109,48 +98,50 @@ msgstr "Statistische functies"
msgid "Compute {functions} of the arguments"
msgstr "Bereken {functions} van de argumenten"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Snelheid zoekmachine (sec)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Laden van pagina’s (sec)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Aantal zoekresultaten"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Scores"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Scores per zoekresultaat"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Fouten"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "CAPTCHA vereist"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Routebeschrijving"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(VEROUDERD)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (VEROUDERD)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Dit object is vervangen door"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "DOAI herschrijven"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Omzeil betaalmuren met een doorverwijzing naar vrij toegankelijke versies van publicaties indien beschikbaar"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Voor deze publicatie is geen abstract beschikbaar."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -164,9 +155,19 @@ msgstr "Oneindig scrollen"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Volgende pagina automatisch laden bij bereiken van de onderkant van de huidige pagina"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Open Access DOI herschrijven"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Omzeil betaalmuren met een doorverwijzing naar vrij toegankelijke versies van publicaties indien beschikbaar"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Open koppelingen in nieuwe tabbladen"
@@ -249,7 +250,7 @@ msgstr "over"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Voorkeuren"
@@ -257,7 +258,7 @@ msgstr "Voorkeuren"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Standaardcategorieën"
@@ -265,17 +266,17 @@ msgstr "Standaardcategorieën"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Zoektaal"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Standaardtaal"
@@ -283,35 +284,35 @@ msgstr "Standaardtaal"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Interfacetaal"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Auto-aanvullen"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Afbeeldingenproxy"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Ingeschakeld"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Uitgeschakeld"
@@ -319,38 +320,38 @@ msgstr "Uitgeschakeld"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Methode"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "SafeSearch"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Strikt"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Gemiddeld"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Geen"
@@ -358,7 +359,7 @@ msgstr "Geen"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Thema’s"
@@ -393,126 +394,137 @@ msgstr "Rood"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Momenteel gebruikte zoekmachines"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Naam zoekmachine"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Categorie"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Snelkoppeling"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Categorie"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Toestaan"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Blokkeren"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Deze instellingen worden bewaard in je cookies. Hierdoor hoeven wij niets over jou te bewaren."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Deze cookies zijn alleen voor je eigen gemak, we gebruiken deze cookies niet om je te volgen."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "bewaren"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Standaardinstellingen herstellen"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "terug"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Zoek-URL"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Zoekresultaten downloaden"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Antwoorden"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Suggesties"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "vorige pagina"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "volgende pagina"
@@ -551,132 +563,149 @@ msgstr "Leechers"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "magneetlink"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "torrentbestand"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Klik op het vergrootglas om te zoeken"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Resultaten op nieuwe tabbladen"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Aan"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Uit"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "gecachet"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Geavanceerde instellingen"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Sluiten"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Fout!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Zoekmachine"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "een privacy-eerbiedigende, aanpasbare metazoekmachine"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Broncode"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Probleemtracker"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Openbare instanties"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Taal"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "geproxyt"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "ondersteund"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "niet ondersteund"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Algemeen"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Zoekmachines"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Plug-ins"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Beantwoorders"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cookies"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Welke taal wil je gebruiken voor het zoeken?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Wijzig de taal van de lay-out"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Zoek tijdens het typen"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Afbeeldingsresultaten via searx laden"
@@ -688,152 +717,196 @@ msgid ""
msgstr "Bepaal hoe de formulieren worden ingestuurd, <a href=\"http://nl.wikipedia.org/wiki/Hypertext_Transfer_Protocol#HTTP-requests\" rel=\"external\">lees meer over opvraagmethodes</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filteren op inhoud"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Opmaak van searx aanpassen"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Kies een stijl voor dit thema"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Stijl"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Snelkoppeling"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Open Access DOI herschrijven"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Doorverwijzen naar vrij toegankelijke versies van publicaties, indien beschikbaar (plug-in vereist)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Engine tokens"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Toegangstokens voor privé-engines"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Alles inschakelen"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Alles uitschakelen"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Geselecteerde taal"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Tijdspanne"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Gem. duur"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Max. duur"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Dit is het overzicht van de instantantwoordmodules van searx."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Naam"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Kernwoorden"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Beschrijving"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Voorbeelden"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Dit is de lijst van cookies en hun waarden die searx op je computer opslaat."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Met deze lijst kan je de openheid van searx beoordelen."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Cookienaam"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Waarde"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "Zoek-URL van de huidig opgeslagen voorkeuren"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Let op: aangepaste instellingen opgeven in de zoek-URL kan nadelig zijn voor je privacy, omdat het gegevens lekt aan de aangeklikte resultaatwebsites."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Zoekresultaten"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Probeer te zoeken naar:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Zoekmachines konden geen resultaten ophalen"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Koppelingen"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "RSS-abonnement"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Zoekresultaten"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Probeer te zoeken naar:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Start zoeken"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Zoekopdracht wissen"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Wissen"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "stats"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Altijd"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Gisteren"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Vorige week"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Vorige maand"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Vorig jaar"
@@ -896,21 +969,21 @@ msgstr "Oeps!"
msgid "Something went wrong."
msgstr "Er ging iets fout."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "toon media"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "verberg media"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Toon afbeelding"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Bekijk bron"
@@ -925,47 +998,47 @@ msgid "hide map"
msgstr "verberg kaart"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "toon details"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "verberg details"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Bestandsgrootte"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Bytes"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Aantal bestanden"
@@ -979,22 +1052,34 @@ msgstr "toon video"
msgid "hide video"
msgstr "verberg video"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Auteur"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Lengte"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Meer laden..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Geen resultaat gevonden"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Ondersteunt geselecteerde taal"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Gebruikersinterface"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Privacy"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Laden..."
diff --git a/searx/translations/nl_BE/LC_MESSAGES/messages.po b/searx/translations/nl_BE/LC_MESSAGES/messages.po
index 21fa68c..d98fef1 100644
--- a/searx/translations/nl_BE/LC_MESSAGES/messages.po
+++ b/searx/translations/nl_BE/LC_MESSAGES/messages.po
@@ -1,101 +1,90 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
+# Issa1552 <fairfull.playing@gmail.com>, 2020
# Nathan Follens, 2018-2019
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 19:47+0000\n"
-"Last-Translator: Nathan Follens\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 21:49+0000\n"
+"Last-Translator: Issa1552 <fairfull.playing@gmail.com>\n"
"Language-Team: Dutch (Belgium) (http://www.transifex.com/asciimoo/searx/language/nl_BE/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: nl_BE\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "time-out"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "aanvraaguitzondering"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "onverwachte crash"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "bestanden"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "algemeen"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "muziek"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "sociale media"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "afbeeldingen"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "video’s"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "IT"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "nieuws"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "kaart"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "wetenschap"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Ongeldige instellingen, werkt uw voorkeuren bij"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Ongeldige instellingen"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "zoekfout"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} min geleden"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} uur, {minutes} min geleden"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Willekeurigewaardegenerator"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Genereert verschillende willekeurige waarden"
@@ -107,48 +96,50 @@ msgstr "Statistische functies"
msgid "Compute {functions} of the arguments"
msgstr "Berekent {functions} van de argumenten"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Snelheid zoekmachien (sec)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Laden van pagina’s (sec)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Aantal zoekresultaten"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Scores"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Scores per zoekresultaat"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Fouten"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "CAPTCHA vereist"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Routebeschrijving"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(VEROUDERD)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (VEROUDERD)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Dit object is vervangen door"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "DOAI herschrijven"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Omzeilt betaalmuren met een doorverwijzing naar vrij toegankelijke versies van publicaties indien beschikbaar"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Voor deze publicatie is geen abstract beschikbaar."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -162,9 +153,19 @@ msgstr "Oneindig scrollen"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Volgende pagina automatisch laden bij bereiken van den onderkant van de huidige pagina"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Open Access DOI herschrijven"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Omzeilt betaalmuren met een doorverwijzing naar vrij toegankelijke versies van publicaties indien beschikbaar"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Koppelingen openen in nieuwe tabbladen"
@@ -247,7 +248,7 @@ msgstr "over"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Voorkeuren"
@@ -255,7 +256,7 @@ msgstr "Voorkeuren"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Standaardcategorieën"
@@ -263,17 +264,17 @@ msgstr "Standaardcategorieën"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Zoektaal"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Standaardtaal"
@@ -281,35 +282,35 @@ msgstr "Standaardtaal"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Interfacetaal"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Auto-aanvullen"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Afbeeldingsproxy"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Ingeschakeld"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Uitgeschakeld"
@@ -317,38 +318,38 @@ msgstr "Uitgeschakeld"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Methode"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "SafeSearch"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Strikt"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Gemiddeld"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Geen"
@@ -356,7 +357,7 @@ msgstr "Geen"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Thema’s"
@@ -391,126 +392,137 @@ msgstr "Rood"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Momenteel gebruikte zoekmachienen"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Naam zoekmachien"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Categorie"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Snelkoppeling"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Categorie"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Toestaan"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Blokkeren"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Deze instellingen worden bewaard in uw cookies. Hierdoor hoeven wij niks over u te bewaren."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Deze cookies zijn alleen voor uw eigen gemak, we gebruiken deze cookies niet voor u te volgen."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "opslaan"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Standaardinstellingen herstellen"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "terug"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Zoek-URL"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Zoekresultaten downloaden"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Antwoorden"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Suggesties"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "vorige pagina"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "volgende pagina"
@@ -549,132 +561,149 @@ msgstr "Leechers"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "magneetkoppeling"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "torrentbestand"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Klikt op het vergrootglas voor te zoeken"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Resultaten op nieuwe tabbladen"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Aan"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Uit"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "gecachet"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Geavanceerde instellingen"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Sluiten"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Fout!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Aangedreven door"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "een privacyrespecterend, aanpasbaar metazoekmachien"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Broncode"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Probleem tracker"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Openbare instanties"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Taal"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "geproxyt"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "ondersteund"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "niet ondersteund"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Algemeen"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Zoekmachienen"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Plug-ins"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Beantwoorders"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cookies"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Welke taal wilt ge gebruiken voor het zoeken?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Wijzigt de taal van den opmaak"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Zoekt tijdens het typen"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Afbeeldingsresultaten via searx laden"
@@ -686,152 +715,196 @@ msgid ""
msgstr "Bepaalt hoe dat de formulieren worden ingestuurd, <a href=\"http://nl.wikipedia.org/wiki/Hypertext_Transfer_Protocol#HTTP-requests\" rel=\"external\">leest meer over opvraagmethodes</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filteren op inhoud"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Opmaak van searx aanpassen"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Kiest ne stijl voor dit thema"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Stijl"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Snelkoppeling"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Open Access DOI herschrijven"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Doorverwijzen naar vrij toegankelijke versies van publicaties, indien beschikbaar (plug-in vereist)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Motortokens"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Toegangstokens voor privé-engines"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Alles inschakelen"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Alles uitschakelen"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Geselecteerde taal"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Tijdspanne"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Gem. duur"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Max. duur"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Dit is het overzicht van de instantantwoordmodules van searx."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Naam"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Kernwoorden"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Beschrijving"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Voorbeelden"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Dit is de lijst van cookies en hun waarden die searx op uwe computer opslaat."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Met deze lijst kunt ge de openheid van searx beoordelen."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Cookienaam"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Waarde"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "Zoek-URL van de momenteel opgeslagen voorkeuren"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Let op: aangepaste instellingen opgeven in de zoek-URL kan nadelig zijn voor uw privacy, omdat het gegevens lekt aan de aangeklikte resultaatwebsites."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Zoekresultaten"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Probeert te zoeken naar:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Zoekmachienen konden geen resultaten ophalen"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Koppelingen"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "RSS-abonnement"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Zoekresultaten"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Probeert te zoeken naar:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Start zoeken"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Zoekopdracht wissen"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Wissen"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "stats"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Altijd"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Voorbijen dag"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Voorbije week"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Voorbije maand"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Voorbije jaar"
@@ -894,21 +967,21 @@ msgstr "Oeps!"
msgid "Something went wrong."
msgstr "Der is iets misgegaan."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "media tonen"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "media verbergen"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Afbeelding tonen"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Bron bekijken"
@@ -923,47 +996,47 @@ msgid "hide map"
msgstr "kaart verbergen"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "details tonen"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "details verbergen"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Bestandsgrootte"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Bytes"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Aantal bestanden"
@@ -977,22 +1050,34 @@ msgstr "video tonen"
msgid "hide video"
msgstr "video verbergen"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Auteur"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Lengte"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Meer laden…"
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Geen resultaat gevonden"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Ondersteunt geselecteerde taal"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Gebruikersinterface"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Privacy"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Laden..."
diff --git a/searx/translations/oc/LC_MESSAGES/messages.po b/searx/translations/oc/LC_MESSAGES/messages.po
index 4043439..4714920 100644
--- a/searx/translations/oc/LC_MESSAGES/messages.po
+++ b/searx/translations/oc/LC_MESSAGES/messages.po
@@ -1,102 +1,90 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
-# Quentin, 2016,2018
+# Quentin PAGÈS, 2016,2018
# Marc Abonce Seguin, 2019
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-04-12 23:05+0000\n"
-"Last-Translator: Marc Abonce Seguin\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 13:10+0000\n"
+"Last-Translator: Quentin PAGÈS\n"
"Language-Team: Occitan (post 1500) (http://www.transifex.com/asciimoo/searx/language/oc/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: oc\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "relambi passat"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "excepcion de requèsta"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "fracàs pas previst"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "fichièrs"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "general"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "musica"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "mèdias socials"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "imatges"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "vidèos"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "tecnologia"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "actualitat"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "mapa"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "sciéncia"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Paramètre pas valide, mercés de modificar vòstras preferéncias"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Paramètres invalids"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "error de recèrca"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "fa {minutes} minuta(s)"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "Fa {hours} ora(s), {minutes} minuta(s)"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Generator aleatòri"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Crèa de valors aleatòrias diferentas"
@@ -108,48 +96,50 @@ msgstr "Foncions estatisticas"
msgid "Compute {functions} of the arguments"
msgstr "Calcula las {functions} dels arguments"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Temps del motor (sec)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Pagina cargada en (sec) segondas"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Nombre de resultats"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Marcas"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Marcas per resultat"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Errors"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr ""
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr ""
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{titre}&nbsp;(OBSOLETE)"
+msgid "{title} (OBSOLETE)"
+msgstr ""
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Aqueste element es estat remplaçat per"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "Reescritura DOAI"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Evitar las paginas de pagament ne virant sus la version en accès liure quand es disponibla"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Cap de resumit pas disponible per aquesta publicacion"
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -163,9 +153,19 @@ msgstr "Desfilament sens fin"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Carga automaticament la pagina seguenta quand arribatz en fin de pagina"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Open Access DOI reescritura "
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Evitar las paginas de pagament ne virant sus la version en accès liure quand es disponibla"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Dubrir los ligams de resultats dins un nòu onglet"
@@ -248,7 +248,7 @@ msgstr "a prepaus"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Preferéncias"
@@ -256,7 +256,7 @@ msgstr "Preferéncias"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Categoria per defaut"
@@ -264,17 +264,17 @@ msgstr "Categoria per defaut"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Lenga de recerca"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Lenga per defaut"
@@ -282,35 +282,35 @@ msgstr "Lenga per defaut"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Lenga de l'interfàcia"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Autocompletar"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Proxy pels imatges"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Activat"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Desactivat"
@@ -318,38 +318,38 @@ msgstr "Desactivat"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Metòde"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Recèrca segurizada"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Estricte"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Moderat"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Cap"
@@ -357,7 +357,7 @@ msgstr "Cap"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Tèmas"
@@ -392,126 +392,137 @@ msgstr "Roge"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Motors de recèrca utilizat actualament"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Nom del motor de cerca"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Categoria"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Acorchis"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Categoria"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Autorizar"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Blocar"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Aquestes paramètres son gardats dins vòstres cookies : aquò nos permet pas de collectar vòstras donadas."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Aquestes cookies existon per vòstre confòrt d'utilizacion, los empleguem pas per vos espiar."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "enregistrar"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Reïnicializar per defaut"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "tornar"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "URL de recèrca"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Telecargar los resultats"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Responsas"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Suggestions"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "pagina precedenta"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "pagina seguenta"
@@ -550,132 +561,149 @@ msgstr "Telecargaires"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "ligam magnet"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "fichièr torrent"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Clicatz sus la lópia per lançar una recèrca"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Resultat dins de nòus onglets"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Òc"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Non"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "en version locala"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Paramètres avançats"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Tampar"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Error !"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Propulsat per"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "un meta-motor de recèrca hackable e respectuós de la vida privada"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr ""
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr ""
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr ""
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "proxifiat"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "compatible"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "pas compatible"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "General"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Motors de cerca"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Extensions"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Respondaires"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cookies"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Dins quina lenga vos agrada mai cercar ?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Cambiar la lenga de l'interfàcia"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Trobar de causas pendent que picatz"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Proxifiar los imatges de resultats a travers searx"
@@ -687,152 +715,196 @@ msgid ""
msgstr "Permet de causir cossí la recèrca es mandada, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\"> per ne saber mai suls metòdes HTTP</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filtrar lo contengut"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Cambiar l'interfàcia de searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Causir un estil per aqueste tèma"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Estil"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Acorchis"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Open Access DOI reglador"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Mandar cap a la version en accès liure de las publicacions quand es disponibla (una extension es de besonh)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr ""
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Seleccionatz una lenga"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Espaci temporal"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Temps mejan"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Temps max"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Vaquí la lista dels module de searx que dònan de responsa instantanèas."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Nom"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Mots claus"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Descripcion"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Exemples"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "S'agís de la lista dels cookies e de lors valors que searx enregistra sus vòstre ordinador."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Amb aquesta lista, podètz jutjar de la transparéncia de searx."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Nom del cookie"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Valor"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "URL de recèrca actuala dels paramètres enregistrats"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Nòta : especificar de paramètres personalizats en l’URL pòt reduire la privacitat en revelar de donadas als sites de resultat clicats."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Resultats de la recerca"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Ensajatz de cercar :"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Los cercadors pòdons pas recuperar los resultats"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Ligams"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr ""
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Resultats de la recerca"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Ensajatz de cercar :"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Començar de cercar"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr ""
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr ""
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "estatisticas"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Impòrta pas quand"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Ièr"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "La setmana passada"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Lo mes passat"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "L'an passat"
@@ -895,21 +967,21 @@ msgstr "Bondu!"
msgid "Something went wrong."
msgstr "Quicòm a fracassat."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "mostrar mèdias"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "escondre mèdias"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Obténer l'imatge"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Veire font"
@@ -924,47 +996,47 @@ msgid "hide map"
msgstr "escondre la mapa"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "mostrar detalhs"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "escondre detalhs"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Talha del fichièr"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "octets"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiO"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiO"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiO"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiO"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Nombre de fichièrs"
@@ -978,22 +1050,34 @@ msgstr "mostrar la vidèo"
msgid "hide video"
msgstr "escondre la vidèo"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr ""
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Ne cargar mai..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Cap d’element pas trobat"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Compatible amb las lengas seleccionadas"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Interfàcia utilizaire"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Privacitat"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr ""
diff --git a/searx/translations/pt/LC_MESSAGES/messages.po b/searx/translations/pt/LC_MESSAGES/messages.po
index f9342cd..d02116f 100644
--- a/searx/translations/pt/LC_MESSAGES/messages.po
+++ b/searx/translations/pt/LC_MESSAGES/messages.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -9,94 +9,82 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: Dickprince\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 13:10+0000\n"
+"Last-Translator: C. E.\n"
"Language-Team: Portuguese (http://www.transifex.com/asciimoo/searx/language/pt/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: pt\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "tempo esgotado"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "solicitar exceção"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "acidente inesperado"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "ficheiros"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "geral"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "música"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "redes sociais"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "imagens"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "vídeos"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "ti"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "notícias"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "mapa"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "ciência"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Definições inválidas, por favor edite as suas preferências"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Configurações inválidas"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "erro de procura"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} minuto(s) atrás"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} hora(s), {minutes} minuto(s) atrás"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Gerador de valores aleatórios"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Gerar valores aleatórios diferentes"
@@ -108,48 +96,50 @@ msgstr "Funções de estatística"
msgid "Compute {functions} of the arguments"
msgstr "Calcular {functions} dos argumentos"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Tempo de pesquisa (seg)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Página carregada (seg)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Número de resultados"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Contagens"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Contagens por resultado"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Erros"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr ""
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr ""
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(OBSOLETE)"
+msgid "{title} (OBSOLETE)"
+msgstr ""
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Esta entrada foi substituída por"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "Reformulação DOAI"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Evite acessos pagos acedendo a versões de livre acesso sempre que disponível"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Nenhum resumo está disponível para esta publicação."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -163,9 +153,19 @@ msgstr "Deslocação Infinita"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Carregar automaticamente a próxima página assim que se desloque para o fim da página atual"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Reescrita DOI de acesso aberto"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Evite acessos pagos acedendo a versões de livre acesso sempre que disponível"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Abrir resultados num novo separador"
@@ -248,7 +248,7 @@ msgstr "sobre"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Preferências"
@@ -256,7 +256,7 @@ msgstr "Preferências"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Categorias Padrão"
@@ -264,17 +264,17 @@ msgstr "Categorias Padrão"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Idioma de pesquisa"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Idioma padrão"
@@ -282,35 +282,35 @@ msgstr "Idioma padrão"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Idioma de interface"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Preenchimento automático"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Proxy de imagem"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Ativado"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Desativado"
@@ -318,38 +318,38 @@ msgstr "Desativado"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Método"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Pesquisa segura"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Rigoroso"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Moderado"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Nenhum"
@@ -357,7 +357,7 @@ msgstr "Nenhum"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Temas"
@@ -392,126 +392,137 @@ msgstr "Vermelho"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Motores de pesquisa utilizados"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Nome do motor de pesquisa"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Categoria"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Atalho"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Categoria"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Permitir"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Bloquear"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Estas definições são guardadas nos seus cookies, isto permite-nos que não guardemos informação sobre si."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Estes cookies servem somente para sua conveniência, não os utilizamos para o rastrear."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "Guardar"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Repor predefinições"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "Atrás"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Procurar hiperligação"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Resultados de transferências"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Respostas"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Sugestões"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "página anterior"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "página seguinte"
@@ -550,132 +561,149 @@ msgstr "Leecher"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "hiperligação magnética"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "ficheiro torrent"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Clique na lupa para realizar a pesquisa"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Resultados em novos separadores"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Ligado"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Desligado"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "armazenados em cache"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Definições avançadas"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Fechar"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Erro!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Produzido por"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "um motor de metapesquisa editável e respeitador da sua privacidade"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr ""
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr ""
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr ""
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "via proxy"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "suportado"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "não suportado"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Geral"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Motores de pesquisa"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Extensões"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Remetente"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cookies"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Que idioma de pesquisa prefere?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Alterar o idioma do esquema"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Pesquisar enquanto escreve"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Resultados de imagens pelo proxy searx"
@@ -687,152 +715,196 @@ msgid ""
msgstr "Alterar como formulários são submetidos, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">aprender mais sobre métodos de pedidos</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filtrar conteúdo"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Alterar esquema do searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Escolher estilo para este tema"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Estilo"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Atalho"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Resolvedor DOI de Acesso Aberto"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Redirecionar para versões de acesso aberto de publicações quando disponíveis (requer plug-in)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr ""
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Idioma selecionado"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Período de tempo"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Tempo médio"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Tempo máximo"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Esta é a lista dos modulos instantâneos de resposta do searx"
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Nome"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Palavras-chave"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Descrição"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Exemplos"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Esta é a lista de cookies e os valores que o searx está a guardar no seu computador."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Com essa lista pode aceder à transparência do searx."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Nome de cookie"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Valor"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "URL de pesquisa das preferências salvas atualmente"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Nota: a especificação de configurações personalizadas no URL de pesquisa pode reduzir a privacidade ao vazar dados para os sites de resultados clicados."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Resultados de pesquisa"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Tente pesquisar por:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Mecanismos não podem recuperar resultados"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Hiperligações"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr ""
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Resultados de pesquisa"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Tente pesquisar por:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Começar pesquisa"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr ""
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr ""
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "estatísticas"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Qualquer altura"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Ontem"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Semana passada"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Mês passado"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Ano passado"
@@ -895,21 +967,21 @@ msgstr "Ora bolas!"
msgid "Something went wrong."
msgstr "Alguma coisa correu mal."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "mostrar média"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "esconder média"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Obter imagem"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Ver fonte"
@@ -924,47 +996,47 @@ msgid "hide map"
msgstr "esconder mapa"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "mostrar detalhes"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "esconder detalhes"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Tamanho de ficheiro"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Bytes"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Número de Ficheiros"
@@ -978,22 +1050,34 @@ msgstr "mostrar vídeo"
msgid "hide video"
msgstr "esconder vídeo"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr ""
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Carregar mais..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Nenhum item encontrado"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Suporta idioma selecionado"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Interface de usuário"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Privacidade"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr ""
diff --git a/searx/translations/pt_BR/LC_MESSAGES/messages.po b/searx/translations/pt_BR/LC_MESSAGES/messages.po
index 18bae82..19594df 100644
--- a/searx/translations/pt_BR/LC_MESSAGES/messages.po
+++ b/searx/translations/pt_BR/LC_MESSAGES/messages.po
@@ -1,9 +1,11 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
# Adam Tauber <asciimoo@gmail.com>, 2017
+# André Marcelo Alvarenga <alvarenga@kde.org>, 2022
+# C. E., 2020
# C. E., 2018
# Gabriel Nunes <gabriel.hkr@gmail.com>, 2017
# Guimarães Mello <matheus.mello@disroot.org>, 2017
@@ -14,94 +16,82 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: pizzaiolo\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2014-01-30 14:32+0000\n"
+"Last-Translator: André Marcelo Alvarenga <alvarenga@kde.org>, 2022\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/asciimoo/searx/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: pt_BR\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "tempo esgotado"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "falha na requisição"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "erro inesperado"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "arquivos"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "geral"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "áudio"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "redes sociais"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "imagens"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "vídeos"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "códigos"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "notícias"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "mapas"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "ciência"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Configurações inválidas, por favor, edite suas preferências"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Configurações inválidas"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "erro de busca"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutos} minuto(s) atrás"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} hora(s), {minutes} minuto(s) atrás"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Gerador de valor aleatório"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Gere diferentes valores aleatórios"
@@ -113,48 +103,50 @@ msgstr "Funções estatísticas"
msgid "Compute {functions} of the arguments"
msgstr "Compute {functions} dos argumentos"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Tempo do motor (segundos)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Carregamento da página (sec)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Número de resultados"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Pontuações"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Pontuações por resultado"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Erros"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "CAPTCHA requerido"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Obter instruções"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(OBSOLETA)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (OBSOLETO)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Esta entrada foi substituída por"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "Redirecionamento ao DOAI"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Evita \"paywalls\" ao redirecionar para versões de acesso livre de publicações, quando possível"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Nenhum resumo disponível para essa publicação."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -168,9 +160,19 @@ msgstr "Scroll infinito"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Automaticamente carregar a próxima página quando ir até o fim da página atual"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Reescrita DOI de acesso aberto"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Evita \"paywalls\" ao redirecionar para versões de acesso livre de publicações, quando possível"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Abrir resultados em novas abas do navegador"
@@ -253,7 +255,7 @@ msgstr "sobre"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Configurações"
@@ -261,7 +263,7 @@ msgstr "Configurações"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Categoria padrão"
@@ -269,53 +271,53 @@ msgstr "Categoria padrão"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Idioma de busca"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
-msgstr "Língua padrão"
+msgstr "Idioma padrão"
#: searx/templates/courgette/preferences.html:24
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
-msgstr "Idioma da interface "
+msgstr "Idioma da interface"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Autocompletar"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Imagem proxy"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
-msgstr "Habilitado "
+msgstr "Habilitado"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Desabilitado"
@@ -323,38 +325,38 @@ msgstr "Desabilitado"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Método"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Busca Segura"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Forte"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Moderado"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Nenhum"
@@ -362,7 +364,7 @@ msgstr "Nenhum"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Temas"
@@ -397,126 +399,137 @@ msgstr "Vermelho"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Serviço de busca usado atualmente"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Nome do serviço"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Categoria"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Atalhos"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Categoria"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Ativo"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Bloqueado"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Essas configurações são armazenadas em seus cookies, nos não armazenamos nenhum dado a seu respeito."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Estes cookies servem ao seu único propósito, nós não usamos esses cookies para rastreá-lo."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "salvar"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Redefinir configurações"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "voltar"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Buscar URL"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Resultados para download"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Perguntas"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Sugestões"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "Página anterior"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "Próxima página"
@@ -555,132 +568,149 @@ msgstr "Leecher"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "Link magnético"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "Arquivo torrent"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Clique na lupa para executar a busca"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Resultados em novas abas"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Ligado"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Desligado"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "em cache"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Configurações avançadas"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Fechar"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Erro!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Distribuído por"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "um mecanismo de metabusca que respeita a sua privacidade"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Código-fonte"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Rastreador de problemas"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Instâncias públicas"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Idioma"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "por proxy"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "suportado"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "não suportado"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Geral"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Buscadores"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Complementos"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Operadores de Resposta"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cookies"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Qual idioma padrão para pesquisar?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Alterar o idioma da interface"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Exibir sugestões enquanto você digita"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Usar proxy para resultado de imagens exibidas através do searx"
@@ -689,155 +719,199 @@ msgid ""
"Change how forms are submited, <a "
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
" rel=\"external\">learn more about request methods</a>"
-msgstr "Alterar o modo como os formulários são submetidos<a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">ganhar desempenho sobre métodos de solicitação</a>"
+msgstr "Alterar o modo como os formulários são submetidos <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">ganhar desempenho sobre métodos de solicitação</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filtrar conteúdo"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Alterar interface do searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Escolher um estilo para este tema"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Estilo"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Atalhos"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Resolvedor DOI de Acesso Aberto"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Quando disponível, redirecionar para as versões de acesso livre das publicações (necessário plugin)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Tokens de busca"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Acesso a tokens para buscadores privados"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Permitir tudo"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Desativar tudo"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Idioma selecionado"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Intervalo de tempo"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Tempo médio"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Tempo máximo"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Esta é a lista do módulos de resposta instantânea do searx."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Nome"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Palavras-chave"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Descrição"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Exemplos"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Esta é a lista de cookies que o searx está armazenando em seu computador."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Com essa lista, você pode avaliar a transparência do searx."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Nome do cookie"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Valor"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "URL de Pesquisa das configurações salvas atuais"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Nota: especificar configurações personalizadas na URL de pesquisa pode reduzir a privacidade ao vazar dados para os sites clicados nos resultados."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Procurar resultados"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Tente pesquisar por:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Os motores de busca não conseguiram obter resultados"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Links"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "Assinatura RSS"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Procurar resultados"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Tente pesquisar por:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Iniciar busca"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Limpar busca"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Limpar"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "estatísticas"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "A qualquer momento"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Ontem"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Semana passada"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Mês passado"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Ano passado"
@@ -900,76 +974,76 @@ msgstr "Oh não!"
msgid "Something went wrong."
msgstr "Algo deu errado."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "exibir mídia"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "ocultar mídia"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Obter imagem"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Ver código-fonte"
#: searx/templates/oscar/result_templates/map.html:7
#: searx/templates/simple/result_templates/map.html:7
msgid "show map"
-msgstr "exibir mapas"
+msgstr "mostrar mapa"
#: searx/templates/oscar/result_templates/map.html:7
#: searx/templates/simple/result_templates/map.html:7
msgid "hide map"
-msgstr "ocultar mapas"
+msgstr "ocultar mapa"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "Exibir detalhes"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "ocultar detalhes"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Tamanho do arquivo"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Bytes"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Número de Arquivos"
@@ -983,22 +1057,34 @@ msgstr "exibir vídeo"
msgid "hide video"
msgstr "ocultar vídeo"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Autor"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Duração"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Mostrar mais..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Nenhum item encontrado"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
-msgstr "Suporta a língua selecionada"
+msgstr "Suporta o idioma selecionado"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Interface de usuário"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Privacidade"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Carregando..."
diff --git a/searx/translations/ro/LC_MESSAGES/messages.po b/searx/translations/ro/LC_MESSAGES/messages.po
index 625feea..80858f0 100644
--- a/searx/translations/ro/LC_MESSAGES/messages.po
+++ b/searx/translations/ro/LC_MESSAGES/messages.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -11,94 +11,82 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-08-31 18:38+0000\n"
-"Last-Translator: Mihai Pora <mihai.pora@gmail.com>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 13:10+0000\n"
+"Last-Translator: Daniel Șerbănescu <daniel@serbanescu.dk>\n"
"Language-Team: Romanian (http://www.transifex.com/asciimoo/searx/language/ro/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: ro\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "timp alocat expirat"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "excepție la cerere"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "terminare prematură neașteptată"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "fișiere"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "generale"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "muzică"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "rețele sociale"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "imagini"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "videouri"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "informatică"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "știri"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "hărți"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "știință"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Configurări nevalide, editați preferințele"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Configurări nevalide"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "eroare de căutare"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} minut(e) în urmă"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} oră(e), {minutes} minut(e) în urmă"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Generator de valori aleatorii"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Generează valori aleatoare diferite"
@@ -110,48 +98,50 @@ msgstr "Funcții statistice"
msgid "Compute {functions} of the arguments"
msgstr "Calculează {functions} din argumente"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Timpul motorului (sec)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Încărcarea paginii (sec)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Numărul de rezultate"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Scoruri"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Scoruri per rezultat"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Erori"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr ""
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr ""
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(ÎNVECHIT)"
+msgid "{title} (OBSOLETE)"
+msgstr ""
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Această intrare a fost perimată de"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "Rescriere DOAI"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Evită „zidurile de plată” redirecționând către versiuni cu acces deschis ale publicațiilor când sunt disponibile"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Niciun abstract disponibil pentru această publicație."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -165,9 +155,19 @@ msgstr "Derulare infinită"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Încarcă automat pagina următoare când se derulează la baza paginii curente"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Rescriere către acces deschis DOI"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Evită „zidurile de plată” redirecționând către versiuni cu acces deschis ale publicațiilor când sunt disponibile"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Deschide legăturile rezultate în taburi noi"
@@ -250,7 +250,7 @@ msgstr "despre"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Preferințe"
@@ -258,7 +258,7 @@ msgstr "Preferințe"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Categorii implicite"
@@ -266,17 +266,17 @@ msgstr "Categorii implicite"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Limba de căutare"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Limba implicită"
@@ -284,35 +284,35 @@ msgstr "Limba implicită"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Limba interfeței"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Completare automată"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Proxy de imagini"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Activat"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Dezactivat"
@@ -320,38 +320,38 @@ msgstr "Dezactivat"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Metodă"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "CăutareSigură"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Strict"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Moderat"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Nimic"
@@ -359,7 +359,7 @@ msgstr "Nimic"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Teme"
@@ -394,126 +394,137 @@ msgstr "Roșu"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Motoarele de căutare folosite curent"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Numele motorului"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Categorie"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Scurtătură"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Categorie"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Permite"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Blochează"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Aceste configurări sunt stocate în cookie-uri, ceea ce ne permite să nu stocăm aceste date despre dumeavoastră."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Aceste cookie-uri servesc doar pentru conveniența dumneavoastră, noi nu stocăm aceste cookie-uri pentru a vă urmări."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "salvează"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Restabilește la valorile implicite"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "înapoi"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "URL de căutare"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Descarcă rezultate"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Răspunsuri"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Sugestii"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "pagina anterioară"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "pagina următoare"
@@ -552,132 +563,149 @@ msgstr "Sursă incompletă"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "legătură magnet"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "fișier torrent"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Apăsați pe lupă pentru a executa căutarea"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Rezultate în taburi noi"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Pornit"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Oprit"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "stocat temporar"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Configurări avansate"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Închide"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Eroare!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Motorizat de"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "un meta-motor de căutare care respectă confidențialitatea"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr ""
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr ""
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr ""
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "delegat"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "suporat"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "nesuportat"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Generale"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Motoare"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Module"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Răspunzători"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cookie-uri"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Ce limbă preferați pentru căutare?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Schimbă limba aspectului"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Găsește lucruri în timp ce tastezi"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Transferă rezultatele cu imagini prin searx"
@@ -689,152 +717,196 @@ msgid ""
msgstr "Modificați cum sunt trimise formularele, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">învățați mai multe despre metodele de transfer</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filtrează conținutul"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Schimbă aspectul lui searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Alegeți stilul pentru această temă"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Stil"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Scurtătură"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Rezolvator de acces deschis DOI"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Redirecționează către versiuni cu acces deschis ale publicațiilor când sunt disponibile (modul necesar)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr ""
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Limba selectată"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Interval de timp"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Timp mediu"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Timp maxim"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Aceasta este lista de module de răspundere instantă a lui searx."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Nume"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Cuvinte cheie"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Descriere"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Exemple"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Aceasta este lista de cookie-uri și valorile lor pe care searx le stochează pe calculatorul dumneavoastră."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Cu acea listă puteți evalua nivelul de transparență al lui searx."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Nume cookie"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Valuare"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "URL-ul de căutare al preferințelor salvate curent"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Notă: specificând configurări personalizate în URL-ul de căutare poate reduce nivelul de confidențialitate prin scurgerea datelor către siturile accesate la căutare."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Rezultatele căutării"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Încercați să căutați după:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Motoarele nu pot obține rezultate"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Legături"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr ""
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Rezultatele căutării"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Încercați să căutați după:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Pornește căutarea"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr ""
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr ""
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "statistici"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Oricând"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Ultima zi"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Ultima săptămână"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Ultima lună"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Ultimul an"
@@ -897,21 +969,21 @@ msgstr "Vai!"
msgid "Something went wrong."
msgstr "Ceva n-a funcționat corect."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "arată media"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "ascunde media"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Obține imaginea"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Vizualizare sursă"
@@ -926,47 +998,47 @@ msgid "hide map"
msgstr "ascunde harta"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "arată detalii"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "ascunde detalii"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Dimensiune fișier"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Octeți"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Numărul fișierelor"
@@ -980,22 +1052,34 @@ msgstr "arată video"
msgid "hide video"
msgstr "ascunde video"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr ""
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Încarcă mai multe..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Niciun element găsit"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Suportă limba selectată"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Interfața pentru utilizator"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Confidențialitate"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr ""
diff --git a/searx/translations/ru/LC_MESSAGES/messages.po b/searx/translations/ru/LC_MESSAGES/messages.po
index ec7975b..5818aea 100644
--- a/searx/translations/ru/LC_MESSAGES/messages.po
+++ b/searx/translations/ru/LC_MESSAGES/messages.po
@@ -1,106 +1,96 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
-# Andrey, 2017-2019
+# Andrey, 2017-2020
+# Dima Ivchenko <kvdbve34@gmail.com>, 2020
# dimqua <dimqua@riseup.net>, 2015
# dimqua <dimqua@riseup.net>, 2015,2017
# dimqua <dimqua@riseup.net>, 2017
# John DOe <is-kir@ya.ru>, 2018
+# AHOHNMYC <lqwh2h2cwa@protonmail.com>, 2022
# Дмитрий Михирев, 2016-2017
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: Andrey\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2014-01-30 14:32+0000\n"
+"Last-Translator: AHOHNMYC <lqwh2h2cwa@protonmail.com>, 2022\n"
"Language-Team: Russian (http://www.transifex.com/asciimoo/searx/language/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: ru\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "таймаут"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "ошибка выполнения запроса"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "неожиданный сбой"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "файлы"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "общие"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "музыка"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
-msgstr "социальные сети"
+msgstr "соцсети"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "картинки"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "видео"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "it"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "новости"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "карты"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "наука"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Неправильные параметры, измените настройки"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Настройки некорректны"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "ошибка поиска"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} минут(а) назад"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} час(ов), {minutes} минут(а) назад"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Генератор случайных значений"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Генерирует различные случайные значения"
@@ -112,48 +102,50 @@ msgstr "Статистические функции"
msgid "Compute {functions} of the arguments"
msgstr "Вычисляет {functions} от аргументов"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Время поиска (сек)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Загрузка страниц (сек)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Количество результатов"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Попаданий"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Попаданий за результат"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Ошибки"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "Требуется капча"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Получить инструкции"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(УСТАРЕВШИЕ)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (УСТАРЕВШЕЕ)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Эта запись была заменена на"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "Перезапись DOAI"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Позволяет получить бесплатную версию запрашиваемой статьи, если таковая имеется"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Нет аннотации для этой публикации."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -167,9 +159,19 @@ msgstr "Бесконечная прокрутка"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Автоматически загружать следующую страницу при прокрутке до конца текущей"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Перезапись открытого доступа к DOI"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Позволяет получить бесплатную версию запрашиваемой статьи, если таковая имеется"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Открывать ссылки из результатов поиска в новых вкладках"
@@ -252,7 +254,7 @@ msgstr "о сайте"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Настройки"
@@ -260,7 +262,7 @@ msgstr "Настройки"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Категории по умолчанию"
@@ -268,17 +270,17 @@ msgstr "Категории по умолчанию"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Язык поиска"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Язык по умолчанию"
@@ -286,35 +288,35 @@ msgstr "Язык по умолчанию"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Язык интерфейса"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Автозавершение"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Прокси для изображений"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Включен"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Выключен"
@@ -322,38 +324,38 @@ msgstr "Выключен"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Метод"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Безопасный поиск"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Строгий"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Умеренный"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Выключен"
@@ -361,7 +363,7 @@ msgstr "Выключен"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Темы"
@@ -396,126 +398,137 @@ msgstr "Красный"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Используемые поисковые системы"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Имя поисковой системы"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Категория"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Сокращение"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Категория"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Разрешить"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Блокировать"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Настройки сохраняются в ваших файлах cookie, что позволяет нам не хранить никаких сведений о вас."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Эти файлы используются исключительно для вашего удобства, мы не отслеживаем вашу активность."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "сохранить"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Восстановить настройки по умолчанию"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "назад"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Ссылка на поиск"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Загрузить результаты"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Ответы"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Предложения"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "предыдущая страница"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "следующая страница"
@@ -554,132 +567,149 @@ msgstr "Личер"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "магнет-ссылка"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "торрент-файл"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Нажмите на лупу, чтобы выполнить поиск"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Результаты в новых вкладках"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Вкл."
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Выкл."
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "архив"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Дополнительные настройки"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Закрыть"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Ошибка!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Основано на"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "уважающая вашу приватность, открытая метапоисковая система"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Исходный код"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Трекер проблем"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Публичные инстансы"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Язык"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
-msgstr "proxied"
+msgstr "проксируемого"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "поддерживается"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "не поддерживается"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Общие"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Поисковые системы"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Плагины"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Ответчики"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cookie"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Какой язык предпочтителен для поиска?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Изменение языка сайта"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Поисковые предложения по мере ввода"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Проксировать найденные изображения с помощью searx"
@@ -691,152 +721,196 @@ msgid ""
msgstr "Изменяет способ отправки запросов. <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">Узнать больше о методах запроса</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Фильтрация контента"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Изменить вид сайта"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Стиль для выбранной темы"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Стиль"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Сокращение"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Распознаватель открытого доступа к DOI"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Перенаправление на открытые версии публикаций при их наличии (требуется плагин)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Токены движка"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Доступные токены для персональных движков"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Разрешить все"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Отключить все"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Выбранный язык"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Временной диапазон"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Среднее время"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Максимальное время"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Это список модулей мгновенного ответа searx"
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Имя"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Ключевые слова"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Описание"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Примеры"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Это список файлов cookie и их значения, которые searx хранит на вашем компьютере."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "С помощью этого списка можно оценить прозрачность searx."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Имя файла cookie"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Значение"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "URL поиска для текущих сохраненных параметров"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Учтите, что укаание пользовательских настроек в URL поиска может привести к их утечке к посещаемым сайтам из поисковой выдачи."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Результаты поиска"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Попробуйте поискать:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Движки не могут получить результаты"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Ссылки"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "RSS-подписка"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Результаты поиска"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Попробуйте поискать:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Начать поиск"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Очистить поиск"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Очистить"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "статистика"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Когда угодно"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Последние сутки"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Последняя неделя"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Последний месяц"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Последний год"
@@ -899,21 +973,21 @@ msgstr "Вот черт!"
msgid "Something went wrong."
msgstr "Что-то пошло не так."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "показать медиа"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "скрыть медиа"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Скачать изображение"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Посмотреть источник"
@@ -928,47 +1002,47 @@ msgid "hide map"
msgstr "скрыть карту"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "показать подробности"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "скрыть подробности"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Размер файла"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Байт"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "КБ"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "МБ"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "ГБ"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "ТБ"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Число файлов"
@@ -982,22 +1056,34 @@ msgstr "показать видео"
msgid "hide video"
msgstr "скрыть видео"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Автор"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Длина"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Загрузить еще…"
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Ничего не найдено"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Поддержка выбранного языка"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Интерфейс пользователя"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Приватность"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Загрузка..."
diff --git a/searx/translations/sk/LC_MESSAGES/messages.po b/searx/translations/sk/LC_MESSAGES/messages.po
index 60ef064..6ee479a 100644
--- a/searx/translations/sk/LC_MESSAGES/messages.po
+++ b/searx/translations/sk/LC_MESSAGES/messages.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -8,94 +8,82 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: Jan Hovancik\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 13:10+0000\n"
+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
"Language-Team: Slovak (http://www.transifex.com/asciimoo/searx/language/sk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: sk\n"
"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr ""
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr ""
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr ""
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "súbory"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "všeobecné"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "hudba"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "sociálne médiá"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "obrázky"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "videá"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "technika"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "správy"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "mapy"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "veda"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Neplatné nastavenia, upravte svoje hodnoty, prosím"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr ""
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "chyba vyhľadávania"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} min. pred"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} hod., {minutes} min. pred"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Generátor nahodných hodnôt"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Vytvoriť iné náhodné hodnoty"
@@ -107,48 +95,50 @@ msgstr "Štatistické funkcie"
msgid "Compute {functions} of the arguments"
msgstr "Vypočítať {functions} argumentov"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Načítanie vyhľadávača (sek)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Načítanie stránky (sek)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Počet výsledkov"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr ""
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr ""
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Chyby"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr ""
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr ""
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(ZASTARANÉ)"
+msgid "{title} (OBSOLETE)"
+msgstr ""
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Táto položka bola nahradená"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "Prepis DOAI"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Vyhnúť sa plateným bránam presmerovaním na verejne prístupné verzie publikácií ak sú k dispozícii"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr ""
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -162,9 +152,19 @@ msgstr "Nekonečné posúvanie"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Automaticky načítať ďalšiu stránku pri posunutí na koniec aktuálnej stránky"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Vyhnúť sa plateným bránam presmerovaním na verejne prístupné verzie publikácií ak sú k dispozícii"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Otvoriť odkazy v novom tabe"
@@ -247,7 +247,7 @@ msgstr "o nás"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Nastavenia"
@@ -255,7 +255,7 @@ msgstr "Nastavenia"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Predvolené kategórie"
@@ -263,17 +263,17 @@ msgstr "Predvolené kategórie"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Jazyk vyhľadávania"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Predvolený jazyk"
@@ -281,35 +281,35 @@ msgstr "Predvolený jazyk"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Jazyk rozhrania"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Automatické dokončovanie"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Proxy pre obrázky"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Povolené"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Zakázané"
@@ -317,38 +317,38 @@ msgstr "Zakázané"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Metóda"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Bezpečné vyhľadávanie"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Striktné"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Mierne"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Žiadne"
@@ -356,7 +356,7 @@ msgstr "Žiadne"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Téma"
@@ -391,126 +391,137 @@ msgstr "Červená"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "poruba@contours.cz"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Názov vyhľadávača"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Kategória"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Skratka"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Kategória"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Povoliť"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Blokovať"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Tieto nastavenia sú uložené v cookies, čo nám umožňuje neukladať dáta o vás na našej strane."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Tieto cookies slúžia výhradné pre vaše pohodlie a nie sú používané na sledovanie."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "uložiť"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Obnoviť predvolené"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "späť"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Adresa URL vyhľadávania"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Výsledky na stiahnutie"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Odpovede"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Návrhy"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "predchádzajúca strana"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "ďalšia strana"
@@ -549,132 +560,149 @@ msgstr ""
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "odkaz na magnet"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "torrent súbor"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Kliknite na lupu pre vyhľadávanie"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Výsledky v novom tabe"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Zapnuté"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Vypnuté"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "z vyrovnávacej pamäte"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Pokročilé nastavenia"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Zatvoriť"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Chyba!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Používame"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "prispôsobitelný meta-vyhľadávač, ktorý rešpektuje vaše súkromie"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr ""
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr ""
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr ""
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "cez proxy"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr ""
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr ""
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Všeobecné"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Vyhľadávače"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Zásuvné moduly"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Rýchle odpovede"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cookies"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Aký jazyk preferujete pre vyhľadávanie?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Zmena jazyku rozhrania"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Vyhľadávať počas písania"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Zobrazovanie výsledkov obrázkov cez searx proxy"
@@ -686,152 +714,196 @@ msgid ""
msgstr "Zmeniť spôsob, akým sú odosielané formuláre, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">dozvedieť sa viac o týchto metódach</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filtrovanie obsahu"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Zmena rozhrania searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Vyberte si štýl pre túto tému"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Štýl"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Skratka"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr ""
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr ""
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Časový rozsah"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Priemerný čas"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Maximálny čas"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Toto je zoznam modulov rýchlej odpovede pre searx."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Názov"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Kľúčové slová"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Popis"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Príklady"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Toto je zoznam cookies a ich hodnôt uložených searx na vašom počítači"
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Pomocou tohto zoznamu môžte vidieť transparentnosť searx."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Názov cookie"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Hodnota"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr ""
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr ""
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Výsledky vyhľadávania"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr ""
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr ""
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Odkazy"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr ""
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Výsledky vyhľadávania"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr ""
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Začať vyhľadávanie"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr ""
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr ""
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "štatistiky"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Kedykoľvek"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Posledný deň"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Posledný týždeň"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Posledný mesiac"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Posledný rok"
@@ -894,21 +966,21 @@ msgstr "Ó nie!"
msgid "Something went wrong."
msgstr "Stalo sa niečo neočakávané."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "ukázať médiá"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "skryť médiá"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Získať obrázok"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Zobraziť zdroj"
@@ -923,47 +995,47 @@ msgid "hide map"
msgstr "skryť mapu"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "ukázať detaily"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "skryť detaily"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Veľkosť súboru"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "bajtov"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Počet súborov"
@@ -977,22 +1049,34 @@ msgstr "ukázať video"
msgid "hide video"
msgstr "skryť video"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr ""
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Načítať viac..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr ""
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Podporuje zvolený jazyk"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr ""
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr ""
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr ""
diff --git a/searx/translations/sl/LC_MESSAGES/messages.po b/searx/translations/sl/LC_MESSAGES/messages.po
index 77ef61b..c53372e 100644
--- a/searx/translations/sl/LC_MESSAGES/messages.po
+++ b/searx/translations/sl/LC_MESSAGES/messages.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -8,94 +8,82 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 13:10+0000\n"
"Last-Translator: asladic <ales.sladic@gmail.com>\n"
"Language-Team: Slovenian (http://www.transifex.com/asciimoo/searx/language/sl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: sl\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "presežena časovna omejitev"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "napaka poizvedbe"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "nepričakovana napaka"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "datoteke"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "splošno"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "glasba"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "družabna omrežja"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "slike"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "videi"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "informatika"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "novice"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "zemljevid"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "znanost"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Neveljavne nastavitve. Prosimo, preverite vašo konfiguracijo"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Neveljavne nastavitve"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "napaka pri iskanju"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} minut nazaj"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "pred {hours} urami in {minutes} minut"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Generator naključnih števil"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Generiraj različne naključne vrednosti"
@@ -107,48 +95,50 @@ msgstr "Statistične funkcije"
msgid "Compute {functions} of the arguments"
msgstr "Izračunaj {functions} argumentov"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Čas iskanja (sek.)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Čas nalaganja (sek.)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Število zadetkov"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Točke"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Točke na zadetek"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Napake"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr ""
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr ""
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(ZASTARANO)"
+msgid "{title} (OBSOLETE)"
+msgstr ""
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Ta vnos je presegel"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "prepisovanje DOAI"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Izogibanje plačilom s preusmeritvijo na prostodostopne različice publikacij, ko so na voljo"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr ""
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -162,9 +152,19 @@ msgstr "Neskončno drsenje"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Samodejno naloži naslednjo stran ob ogledu dna trenutne strani"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Izogibanje plačilom s preusmeritvijo na prostodostopne različice publikacij, ko so na voljo"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Odpri povezave zadetkov v novih zavihkih brskalnika"
@@ -247,7 +247,7 @@ msgstr "več o"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Nastavitve"
@@ -255,7 +255,7 @@ msgstr "Nastavitve"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Privzete kategorije"
@@ -263,17 +263,17 @@ msgstr "Privzete kategorije"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Jezik iskanja"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Privzeti jezik"
@@ -281,35 +281,35 @@ msgstr "Privzeti jezik"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Jezik vmesnika"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Samodejni predlogi"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Posredniški strežnik za slike"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Omogočeno"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Onemogočeno"
@@ -317,38 +317,38 @@ msgstr "Onemogočeno"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Metoda"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Varno iskanje"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Strogo"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Zmerno"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Brez"
@@ -356,7 +356,7 @@ msgstr "Brez"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Teme"
@@ -391,126 +391,137 @@ msgstr "Rdeča"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Trenutno uporabljeni iskalniki"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Ime iskalnika"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Kategorija"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Bližnjica"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Kategorija"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Dovoli"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Blokiraj"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Te nastavitve so shranjene v vaših piškotkih; to nam omogoča, da ne hranimo teh podatkov o vas."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Ti piškotki so za boljšo izkušnjo, ne uporabljamo jih za sledenje."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "shrani"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Ponastavi na privzeto"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "nazaj"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Iskalni URL"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Prenesi zadetke"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Odgovori"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Predlogi"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "prejšnja stran"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "naslednja stran"
@@ -549,132 +560,149 @@ msgstr "Odjemalec"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "magnetna povezava"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "datoteka .torrent"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Kiknite na lupo za iskanje"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Zadetki v novih zavihkih"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Vklopljeno"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Izklopljeno"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "predpomnjeno"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Napredne nastavitve"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Zapri"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Napaka!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Omogočeno z"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "razširljiv metaiskalnik, ki spoštuje vašo zasebnost"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr ""
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr ""
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr ""
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "preko posredniškega strežnika"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "podprto"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "ni podprto"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Splošno"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Iskalniki"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Vtičniki"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Ponudniki odgovorov"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Piškotki"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "V katerem jeziku želite iskati?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Spremeni jezik vmesnika"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Iščite že med tipkanjem"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Uporaba searx kot posredniški strežnik za slike"
@@ -686,152 +714,196 @@ msgid ""
msgstr "Spremeni, kako se pošiljajo obrazci, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">, več o metodah za zahtevke </a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filtriraj vsebino"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Spremeni izgled searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Izberite stil za trenutno temo"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Stil"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Bližnjica"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Preusmeri na prosto dostopne različice publikacij, ko so na voljo (zahtevan vtičnik)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr ""
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Izbrani jezik"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Časovni razpon"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Povprečni čas"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Največji čas"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "To je seznam modulov searx za takojšnje odgovore."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Ime"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Ključne besede"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Opis"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Primeri"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "To je seznam piškotkov in pripadajočih vrednosti, ki jih searx hrani na vašem računalniku."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "S tem seznamom lahko ocenite transparentnost searx."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Ime piškotka"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Vrednost"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "Iskalni URL trenutno shranjenih nastavitev"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Opomba: navajanje lastnih nastavitev v iskalnem URL lahko vodi do zmanjšane zasebnosti preko podajanja podatkov izbranim rezultatom."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Zadetki iskanja"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Poskusite iskati:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Iskalniki ne morejo pridobiti rezultatov"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Povezave"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr ""
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Zadetki iskanja"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Poskusite iskati:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Začni iskati"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr ""
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr ""
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "statistike"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Kadarkoli"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "V zadnjem dnevu"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "V zadnjem tednu"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "V zadnjem mesecu"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "V zadnjem letu"
@@ -894,21 +966,21 @@ msgstr "Ojej!"
msgid "Something went wrong."
msgstr "Nekaj je bilo narobe."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "pokaži medijske vsebine"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "skrij medijske vsebine"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Pridobi sliko"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Ogled vira"
@@ -923,47 +995,47 @@ msgid "hide map"
msgstr "skrij zemljevid"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "prikaži podrobnosti"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "skrij podrobnosti"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Velikost"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Bajti"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Število datotek"
@@ -977,22 +1049,34 @@ msgstr "pokaži video"
msgid "hide video"
msgstr "skrij video"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr ""
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Naloži več..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Ni zadetkov"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Podpira izbrani jezik"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Uporabniški vmesnik"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Zasebnost"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr ""
diff --git a/searx/translations/sr/LC_MESSAGES/messages.po b/searx/translations/sr/LC_MESSAGES/messages.po
index 01e36b1..817609d 100644
--- a/searx/translations/sr/LC_MESSAGES/messages.po
+++ b/searx/translations/sr/LC_MESSAGES/messages.po
@@ -1,102 +1,91 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
+# Issa1552 <fairfull.playing@gmail.com>, 2020
# Marc Abonce Seguin, 2019
# jugi1, 2017
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-07-28 05:07+0000\n"
-"Last-Translator: Marc Abonce Seguin\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 22:18+0000\n"
+"Last-Translator: Issa1552 <fairfull.playing@gmail.com>\n"
"Language-Team: Serbian (http://www.transifex.com/asciimoo/searx/language/sr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: sr\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "пауза"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "захтевај изузетак"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "неочекивани пад"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "фајлови"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "уопштено"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "музика"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "друштвени медији"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "слике"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "видео"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "ит"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "новости"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "мапа"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "наука"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Неважеће поставке, молимо уредите свој избор"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Неважећа подешавања"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "грешка у претрази"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
-msgstr "{minutes} минут(а) назад"
+msgstr "пре {minutes} минут(у,е,а)"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
-msgstr "{hours} час(a), {minutes} минут(а) назад"
+msgstr "пре {hours} час(a) и {minutes} минут(у,е,а)"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Генератор случајних вредности"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Генеришите различите случајне вредности"
@@ -108,48 +97,50 @@ msgstr "Статистичке функције"
msgid "Compute {functions} of the arguments"
msgstr "Израчунајте {functions} аргумената"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Време претраге (сек)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Учитавање странице (сек)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Број резултата"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Резултати"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Остварени резултати"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Грешке"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "Потребна је ЦАПТЦХА"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Упутства за правац"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{наслов}&nbsp;(ЗАСТАРЕЛО)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (ЗАСТАРЕЛО)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Овај унос је заменио"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "Препис DOAI"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Избегните плаћање у случају да је доступна бесплатна публикација"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Абстракт није доступан за ову публикацију."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -163,9 +154,19 @@ msgstr "Бесконачно померање"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Аутоматско учитавање следеће странице приликом померања на дно текуће странице"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Отворени приступ DOI преписа"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Избегните плаћање у случају да је доступна бесплатна публикација"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Отворите линкове резултата на новим картицама прегледача"
@@ -248,7 +249,7 @@ msgstr "О сајту"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Подешавања"
@@ -256,7 +257,7 @@ msgstr "Подешавања"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Подразумеване категорије"
@@ -264,17 +265,17 @@ msgstr "Подразумеване категорије"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Језик претраге"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Подразумевани језик"
@@ -282,35 +283,35 @@ msgstr "Подразумевани језик"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Језик интерфејса"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Ауто попуњавање"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Прокси слика"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Омогућено"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Онемогућено"
@@ -318,38 +319,38 @@ msgstr "Онемогућено"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Метода"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Безбедна Претрага"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Стриктно"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Умерено"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Ништа"
@@ -357,7 +358,7 @@ msgstr "Ништа"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Теме"
@@ -392,126 +393,137 @@ msgstr "Црвена"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Тренутно коришћени претраживачи"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Име претраживача"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Категорија"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Пречица"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Категорија"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Допусти"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Блокирај"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Ова подешавања се чувају у вашим колачићима, што нам омогућава да не сачувамо ове податке о вама."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Ови колачићи служе Вашој погодности, ми не користимо ове колачиће да вас пратимо."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "сними"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Врати на подразумевано"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "назад"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Тражи URL адресу"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Резултати преузимања"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Одговори"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Предлози"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "претходна страница"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "наредна страница"
@@ -539,7 +551,7 @@ msgstr "оригинални садржај"
#: searx/templates/oscar/result_templates/torrent.html:6
#: searx/templates/simple/result_templates/torrent.html:9
msgid "Seeder"
-msgstr "Сидер"
+msgstr "Хранилац"
#: searx/templates/courgette/result_templates/torrent.html:7
#: searx/templates/legacy/result_templates/torrent.html:11
@@ -550,132 +562,149 @@ msgstr "Личер"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "магнет линк"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "торент фајл"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Кликни на лупу за претрагу"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Резултати на картицама"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Укључено"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Искључено"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "кеширано"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Напредне поставке"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Затвори"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Грешка!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Покреће"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "мета-претраживач који поштује приватност"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Изворни код"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Трагач проблема"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Јавне инстанце"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Језик"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "прокси"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "подржано"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "неподржано"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Уопштено"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Претраживачи"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
-msgstr "Плагини"
+msgstr "Додаци"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Одговори"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Колачићи"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Који језик преферирате за претрагу?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Промените језик сајта"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Пронађите док куцате"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Прокси слике преко searx-а"
@@ -687,152 +716,196 @@ msgid ""
msgstr "Промените начин слања форме, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">сазнајте више о методама захтева</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Филтрирајте садржај"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Промените изглед searx сајта"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Изаберите стил за ову тему"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Стил"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Пречица"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Отворени приступ DOI решења"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Преусмери на верзије публикација отвореног приступа кад је доступно (потребан је плагин)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Моторни жетони"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Приступите жетонима за приватне моторе"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Дозволи све"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Онемогући све"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Изабрани језик"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Временски опсег"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Просечно време"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Макс. време"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Ово је листа searx инстант одговора."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Име"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Кључне речи"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Опис"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Примери"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Ово је листа колачића и њихова вредност се снима на вашем рачунару."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Са овом листом можете бити searx транспаренти"
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Име колачића"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Вредност"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "Pretražite URL адресу тренутно сачуваних поставки"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Напомена: навођење прилагођених поставки у URL претрази може смањити приватност цурењем података кликнутих страница."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Резултати претраге"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Покушај да нађеш:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Не може повратити резултате"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Линкови"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "РСС претплата"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Резултати претраге"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Покушај да нађеш:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Почни претрагу"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Очистите претражилац"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Очистите"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "статистика"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Било када"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Последњи дан"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Последња недеља"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Последњи месец"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Последња година"
@@ -895,21 +968,21 @@ msgstr "Упс!"
msgid "Something went wrong."
msgstr "Нешто је пошло наопако."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "покажи медије"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "сакриј медије"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Узми слику"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Види извор"
@@ -924,47 +997,47 @@ msgid "hide map"
msgstr "сакриј мапу"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "покажи детаље"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "сакриј детаље"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "величина фајла"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Бајта"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Број фајлова"
@@ -978,22 +1051,34 @@ msgstr "покажи видео"
msgid "hide video"
msgstr "сакриј видео"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Аутор"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Дужина"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Учитај више..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Ставка није пронађена"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Подржава изабрани језик"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Кориснички интерфејс"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Приватност"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Учитавање..."
diff --git a/searx/translations/sv/LC_MESSAGES/messages.po b/searx/translations/sv/LC_MESSAGES/messages.po
index 1949932..3642895 100644
--- a/searx/translations/sv/LC_MESSAGES/messages.po
+++ b/searx/translations/sv/LC_MESSAGES/messages.po
@@ -1,103 +1,91 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
-# Jonatan Nyberg, 2016-2017
-# Jonatan Nyberg, 2018-2019
-# Jonatan Nyberg, 2017-2018
+# efef6ec5b435a041fce803c7f8af77d2_2341d43, 2016-2017
+# efef6ec5b435a041fce803c7f8af77d2_2341d43, 2018-2020
+# efef6ec5b435a041fce803c7f8af77d2_2341d43, 2017-2018
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-28 20:53+0000\n"
-"Last-Translator: Jonatan Nyberg\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-08-29 08:47+0000\n"
+"Last-Translator: efef6ec5b435a041fce803c7f8af77d2_2341d43\n"
"Language-Team: Swedish (http://www.transifex.com/asciimoo/searx/language/sv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: sv\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "tiden tog slut"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "begär undantag"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "oväntad krasch"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "filer"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "allmänt"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "musik"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "sociala medier"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "bilder"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "videor"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "it"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "nyheter"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "karta"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "vetenskap"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Ogiltiga inställningar, vänligen redigerar dina inställningar"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Ogiltiga inställningar"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "sökfel"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} minut(er) sedan"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} timm(e/ar), {minutes} minut(er) sedan"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Slumpvärdesgenerator"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Generera olika slumpmässiga värden"
@@ -109,48 +97,50 @@ msgstr "Statistikfunktioner"
msgid "Compute {functions} of the arguments"
msgstr "Beräkna {functions} av argumenten"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Sökmotor tid (sek)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Sidan laddas (sek)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Antal resultat"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Poäng"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Poäng per resultat"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Fel"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "CAPTCHA krävs"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Få vägbeskrivningar"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(FÖRÅLDRAD)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (FÖRÅLDRAD)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Detta inlägg har ersatts av"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "DOAI-omskrivning"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Undvik betalväggar genom att omdirigera till öppen tillgång versioner av publikationer när de är tillgängliga"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Inget abstract är tillgänglig för denna publikation."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -164,9 +154,19 @@ msgstr "Oändlig bläddring"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Automatiskt ladda nästa sida när du bläddrar till botten av aktuell sida"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Open Access DOI-omskrivning"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Undvik betalväggar genom att omdirigera till öppen tillgång versioner av publikationer när de är tillgängliga"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Öppna resultat länkar i nya webbläsarflikar"
@@ -249,7 +249,7 @@ msgstr "om"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Inställningar"
@@ -257,7 +257,7 @@ msgstr "Inställningar"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Standardkategorier"
@@ -265,17 +265,17 @@ msgstr "Standardkategorier"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Sökspråk"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Standardspråk"
@@ -283,35 +283,35 @@ msgstr "Standardspråk"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Gränssnittspråk"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Slutför automatiskt"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Bildproxy"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Aktiverad"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Inaktiverad"
@@ -319,38 +319,38 @@ msgstr "Inaktiverad"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Metod"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "SafeSearch"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Sträng"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Måttlig"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Inga"
@@ -358,7 +358,7 @@ msgstr "Inga"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Tema"
@@ -393,126 +393,137 @@ msgstr "Röd"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "För tillfället används sökmotorer"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Sökmotorns namn"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Kategori"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Genväg"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Kategori"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Tillåt"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Blockera"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Dessa inställningar lagras i dina kakor, vilket gör att vi inte lagrar data om dig."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Dessa kakor tjänar din egen bekvämlighet, vi använder inte dessa kakor för att spåra dig."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "spara"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Återställ standardvärden"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "tillbaka"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "Sök webbadress"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Nedladdningsresultat"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Svar"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Förslag"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "föregående sida"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "nästa sida"
@@ -551,132 +562,149 @@ msgstr "Reciprokör"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "magnetlänk"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "torrentfil"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Klicka på förstoringsglaset för att utföra sökning"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Resultat i nya flikar"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "På"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Av"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "cachad"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Avancerade inställningar"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Stäng"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Fel!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Drivet av"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "en integritetsrespekterande, hackningsbar metasökmotor"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Källkod"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Ärenehanterare"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Publika instanser"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Språk"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "proxade"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "stöds"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "stöds inte"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Allmänt"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Sökmotorer"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Insticksmoduler"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Besvarare"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Kakor"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Vilket språk föredrar du för att söka?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Ändra språk för layouten"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Hitta saker medan du skriver"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Proxya bildresultat genom searx"
@@ -688,152 +716,196 @@ msgid ""
msgstr "Ändra hur formulär inlämnas, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">lär dig mera om förfrågningsmetoder</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Filtrera innehåll"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Ändra layout för searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Välj stil för detta tema"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Stil"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Genväg"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Open Access DOI-lösare"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Omdirigera till öppna versioner av publikationer när de är tillgängliga (tillägg krävs)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Motortoken"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Åtkomsttoken för privata motorer"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Tillåt alla"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Inaktivera alla"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Valt språk"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Tidsintervall"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Genomsnittstid"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Max tid"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Detta är en lista över searxs snabbsvarsmoduler."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Namn"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Nyckelord"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Beskrivning"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Exempel"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Detta är en lista över kakor och deras värden som searx lagrar på din dator."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Med denna lista kan du bedöma searx öppenhet."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Kaknamn"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Värde"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "Sökadressen för de för nuvarande sparade inställningarna"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Obs: Att ange anpassade inställningar i sökadressen kan minska sekretess genom att läcka data till de klickade resultatwebbplatserna."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Sökresultat"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Försök söka efter:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Sökmotorer kan inte hämta resultat"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Länkar"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "RSS-prenumeration"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Sökresultat"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Försök söka efter:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Starta sökning"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Rensa sökningen"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Rensa"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "statistik"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Närsom"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Igår"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Förra veckan"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Förra månaden"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Förra året"
@@ -896,21 +968,21 @@ msgstr "Oh plötsligt!"
msgid "Something went wrong."
msgstr "Något gick fel."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "visa media"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "göm media"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Hämta bild"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Visa källa"
@@ -925,47 +997,47 @@ msgid "hide map"
msgstr "göm karta"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "visa detaljer"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "göm detaljer"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Filstorlek"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Bytes"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Antal filer"
@@ -979,22 +1051,34 @@ msgstr "visa video"
msgid "hide video"
msgstr "göm video"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Upphovsman"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Längd"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Ladda fler..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Inga artiklar hittade"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Stöder valda språket"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Användargränssnitt"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Sekretess"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Läser in..."
diff --git a/searx/translations/ta/LC_MESSAGES/messages.po b/searx/translations/ta/LC_MESSAGES/messages.po
index dbb9aa2..1ec475a 100644
--- a/searx/translations/ta/LC_MESSAGES/messages.po
+++ b/searx/translations/ta/LC_MESSAGES/messages.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -13,94 +13,82 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 13:10+0000\n"
+"Last-Translator: Prasanna Venkadesh <prasmailme@gmail.com>\n"
"Language-Team: Tamil (http://www.transifex.com/asciimoo/searx/language/ta/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: ta\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "காலாவதியானது"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr ""
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "எதிர்பாராத முடக்கம்"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "கோப்புகள்"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "பொதுத் தேடல்"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "இசை"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "சமூக தளங்கள்"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "படங்கள்"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "காணொளிகள்"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr ""
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "செய்திகள்"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "வரைப்படம்"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "அறிவியல்"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "ஏற்க முடியாத அமைப்பு,உங்கள் விருப்பத்தை தொகுக்கவும்"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "ஏற்கமுடியாத அமைப்பு"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "தேடல் பிழை"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} நிமிடங்களுக்கு முன்னால்"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} மணிநேரம், {minutes} நிமிடங்களுக்கு முன்னால்"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "சீரற்ற மதிப்பு உருவாக்கி"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "வெவ்வாறான சீரற்ற மதிப்புகளை உருவாக்கு"
@@ -112,48 +100,50 @@ msgstr "புள்ளியியல் செயல்பாடுகள்"
msgid "Compute {functions} of the arguments"
msgstr ""
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "எந்திர நேரம் (நொடிகளில்)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr ""
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "முடிவுகளின் எண்ணிக்கை"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "மதிப்புகள்"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "தேடல் மதிப்பு"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "பிழைகள்"
-#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
msgstr ""
-#: searx/engines/pdbe.py:91
-msgid "This entry has been superseded by"
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
msgstr ""
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
+#: searx/engines/pdbe.py:87
+msgid "{title} (OBSOLETE)"
msgstr ""
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "பணம் பறிக்கும் தளங்களை தவிர்த்து முடிந்த வரையில் open-access பதிப்புகளை வழங்கும் தளங்களுக்கு செல்லவும்"
+#: searx/engines/pdbe.py:94
+msgid "This entry has been superseded by"
+msgstr ""
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "இந்த பிரசுரத்திற்கு சுருக்கம் இல்லை."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -167,9 +157,19 @@ msgstr "தொடர் பட்டியல்"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "பக்கத்தின் முடிவை அடைந்தவுடன் தானாக அடுத்த பக்கததிற்கு செல்லவும்"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Open Access DOI-யை திரும்ப எழுது"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "பணம் பறிக்கும் தளங்களை தவிர்த்து முடிந்த வரையில் open-access பதிப்புகளை வழங்கும் தளங்களுக்கு செல்லவும்"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "இணைப்புகளை புதிய Tab-ல் திறக்கவும்"
@@ -252,7 +252,7 @@ msgstr "பற்றி"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "விருப்பத்தேர்வு"
@@ -260,7 +260,7 @@ msgstr "விருப்பத்தேர்வு"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "இயல்புநிலை பிரிவுகள்"
@@ -268,17 +268,17 @@ msgstr "இயல்புநிலை பிரிவுகள்"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "தேடல் மொழி"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "இயல்புநிலை மொழி"
@@ -286,35 +286,35 @@ msgstr "இயல்புநிலை மொழி"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "முகப்பின் மொழி"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "நிறைவுத் தானியக்கம்"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "பட நிகராளி"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "செயல்படுத்து"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "நிறுத்தப்பட்டது"
@@ -322,38 +322,38 @@ msgstr "நிறுத்தப்பட்டது"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "முறை"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "பாதுகாப்பன தேடல்"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr ""
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "மிதமான"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "எதுவுமில்லை"
@@ -361,7 +361,7 @@ msgstr "எதுவுமில்லை"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr ""
@@ -396,126 +396,137 @@ msgstr "சிவப்பு"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "தற்போது பயன்படுத்திய தேடுபொறிகள்"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "எந்திரத்தின் பெயர்"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "வகுப்பு"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr ""
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "வகுப்பு"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "அனுமதி"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "தடை"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr ""
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "இந்த நினைவிகள் உங்களின் வசதிக்காக மட்டுமே. இந்த நினைவிகள் உங்களை உளவு பார்க்காது."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "சேமி"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "இயல்புநிலைக்குத் திருப்பவும்"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "பின்செல்"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "இத்தேடலின் முகவரி"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "தேடல் பதில்களை தரவிறக்கு"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "பதில்கள்"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "பரிந்துரைகள்"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "முந்தைய பக்கம்"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "அடுத்தப் பக்கம்"
@@ -554,132 +565,149 @@ msgstr "எடுப்பவர்"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "காந்த இணைப்பு"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "டொரன்ட் கோப்பு"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "உருப்பெருக்கியைச் சொடுக்கி தேடலைத் தொடங்கவும்"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "தேடல் முடிவுகள் புதிய Tab-ல்"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "இயக்கு"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "அமர்த்து"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr ""
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "மேம்பட்ட அமைப்புகள்"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "மூடு"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "பிழை!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr ""
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "உங்கள் அகவுரிமையை மதிக்கும் மாற்றியமைக்ககூடிய ஒரு தேடல் எந்திரம்"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr ""
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr ""
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr ""
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr ""
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "ஆதரவுண்டு"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "ஆதரவில்லை"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "பொது"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "எந்திரங்கள்"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "நீட்சி"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "பதில்கள்"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "நினைவிகள்"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "தேடலுக்கு எந்த மொழியை விரும்புகிறீர்கள்?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "வடிவமைப்பின் மொழியை மாற்று"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "உள்ளிடும் போதே தேடு"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr ""
@@ -691,152 +719,196 @@ msgid ""
msgstr ""
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr ""
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "searx-ன் வடிவமைப்பை மாற்று"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr ""
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr ""
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
msgstr ""
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "தேர்வு செய்யப்பட்ட மொழி"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "நேர வரம்பு"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "சராசரி நேரம்"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "அதிகபட்ச நேரம்"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "இது searx-ன் உடனடி பதிலளிக்கும் தொகுதிகளின் பட்டியல்."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "பெயர்"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "குறிப்புச்சொற்கள்"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "விளக்கம்"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "எடுத்துக்காட்டுகள்"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "இந்தப் பட்டியல் உங்கள் கணினியில் சேமிக்கப்பட்டுள்ள searx-ன் நினைவிகள் மற்றும் அதனுடைய மதிப்புகள்."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "இந்தப் பட்டியல் மூலம் நீங்கள் searx-ன் வெளிப்படைத்தன்மையை மதிப்பிடலாம்."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "நினைவியின் பெயர்"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "மதிப்பு"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "தற்போது சேமிக்கப்பட்ட விருப்பத்தேர்வுகளில் வலைதள முகவரியைத் தேடு"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "குறிப்பு : தேடல் வலைதள முகவரியில் குறிப்பிட்ட விருப்ப அமைப்புகள், கிடைத்தத் தளங்களை சொடுக்குவதன் மூலம் தரவுகள் கசிவதால் அகவுரிமை குறையும்."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "தேடல் முடிவுகள்"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "இதுபோல் தேடி பார்க்கவும்"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "எந்திரங்களால் பதில்களை பெற முடியவில்லை"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "இணைப்புகள்"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr ""
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "தேடல் முடிவுகள்"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "இதுபோல் தேடி பார்க்கவும்"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "தேடலை துவங்கு"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr ""
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr ""
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "புள்ளி விவரங்கள்"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "எந்நேரமும்"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "நேற்று"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "கடந்த வாரம்"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "கடந்த மாதம்"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "கடந்த ஆண்டு"
@@ -899,21 +971,21 @@ msgstr "மன்னிக்கவும்!"
msgid "Something went wrong."
msgstr "ஏதோ தவறு நடந்துள்ளது."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "ஊடகத்தைக் காட்டு"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "ஊடகத்தை மறை"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "படத்தைப் பெறு"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "மூலத்தைப் பார்"
@@ -928,47 +1000,47 @@ msgid "hide map"
msgstr "வரைபடத்தை மறை"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "விவரங்களைக் காட்டு"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "விவரங்களை மறை"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "கோப்பளவு"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "பைட்டுகள்"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "மொத்த கோப்புகள்"
@@ -982,22 +1054,34 @@ msgstr "காணொளிகளை காண்பி"
msgid "hide video"
msgstr "காணொளிகளை மறை"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr ""
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "இன்னும் கொஞ்சம்"
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "எதுவும் கிடைக்கவில்லை"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "தேர்ந்தெடுத்த மொழிக்கு ஆதரவு உள்ளது."
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "பயனர் இடைமுகப்பு"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "தனியுரிமை"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr ""
diff --git a/searx/translations/te/LC_MESSAGES/messages.po b/searx/translations/te/LC_MESSAGES/messages.po
index 20df5b7..664c937 100644
--- a/searx/translations/te/LC_MESSAGES/messages.po
+++ b/searx/translations/te/LC_MESSAGES/messages.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -8,94 +8,82 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 13:10+0000\n"
+"Last-Translator: Adam Tauber <asciimoo@gmail.com>\n"
"Language-Team: Telugu (http://www.transifex.com/asciimoo/searx/language/te/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: te\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "కాలపరిమితి దాటిపోయింది"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr ""
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr ""
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "ఫైళ్ళు"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "సాధారణ"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "సంగీతం"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "సోషల్ మీడియా"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "చిత్రాలు"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "వీడియోలు"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "ఐటి"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "వార్తలు"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "పటము"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "విజ్ఞానశాస్త్రం"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr ""
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "చెల్లని అమరికలు"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "శోధనలో దోషము"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} నిమిషము(ల) క్రిందట"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr ""
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr ""
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr ""
@@ -107,47 +95,49 @@ msgstr "సాంఖ్యకశాస్త్ర ప్రమేయాలు"
msgid "Compute {functions} of the arguments"
msgstr ""
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr ""
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr ""
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "ఫలితముల సంఖ్య"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr ""
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr ""
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "దోషములు"
-#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
msgstr ""
-#: searx/engines/pdbe.py:91
-msgid "This entry has been superseded by"
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
msgstr ""
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
+#: searx/engines/pdbe.py:87
+msgid "{title} (OBSOLETE)"
msgstr ""
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
+#: searx/engines/pdbe.py:94
+msgid "This entry has been superseded by"
+msgstr ""
+
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
msgstr ""
#: searx/plugins/https_rewrite.py:32
@@ -162,9 +152,19 @@ msgstr ""
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr ""
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr ""
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr ""
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr ""
@@ -247,7 +247,7 @@ msgstr "గురించి"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "అభిరుచులు"
@@ -255,7 +255,7 @@ msgstr "అభిరుచులు"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "నిష్క్రియ వర్గాలు"
@@ -263,17 +263,17 @@ msgstr "నిష్క్రియ వర్గాలు"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "శోధన భాష"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "నిష్క్రియ భాష"
@@ -281,35 +281,35 @@ msgstr "నిష్క్రియ భాష"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "వినిమయసీమ భాష"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr ""
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr ""
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr ""
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr ""
@@ -317,38 +317,38 @@ msgstr ""
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "విధానం"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "సురక్షితశోధన"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "కఠినమైన"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "మితమైన"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "ఏమీ లేదు"
@@ -356,7 +356,7 @@ msgstr "ఏమీ లేదు"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr ""
@@ -391,126 +391,137 @@ msgstr "ఎరుపు"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "ప్రస్తుతం ఉపయోగించబడుతున్న శోధన యంత్రాలు"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "యంత్రం పేరు"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "వర్గము"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "సత్వరమార్గం"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "వర్గము"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "అనుమతించు"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "అడ్డగించు"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr ""
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr ""
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "దాచు"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "నిష్క్రియాలకు అమర్చు"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "వెనక్కి"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "శోధన URL"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "ఫలితాలను దింపుకోండి"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "జవాబులు"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "సూచనలు"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "పూర్వపు పుట"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "తర్వాతి పుట"
@@ -549,132 +560,149 @@ msgstr ""
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr ""
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr ""
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr ""
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr ""
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr ""
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr ""
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr ""
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr ""
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "మూసివేయు"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "దోషం!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr ""
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr ""
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr ""
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr ""
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr ""
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr ""
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "ఆదరించబడిన"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "ఆదరణ లేని"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "సాధారణ"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "యంత్రాలు"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "ప్లగిన్లు"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "జవాబులు"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "కుకీలు"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr ""
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "వినిమయసీమ యొక్క భాషను మార్చు"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "టైపు చేస్తూ శోధించు"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr ""
@@ -686,152 +714,196 @@ msgid ""
msgstr ""
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "విషయాలను వడకట్టు"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr ""
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr ""
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "శైలి"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "సత్వరమార్గం"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr ""
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "ఎంచుకున్న భాష"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "కాల శ్రేణి"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "సగటు సమయం"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "గరిష్ఠ సమయం"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr ""
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "పేరు"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr ""
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "వర్ణన"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "ఉదాహరణలు"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr ""
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr ""
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "కుకీ పేరు"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "విలువ"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr ""
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr ""
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr ""
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "దీనికొరకు శోధించండి:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "యంత్రాలు ఫలితాలను రాబట్టలేకపోతున్నాయి"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "లంకెలు"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr ""
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr ""
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "దీనికొరకు శోధించండి:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "శోధన ప్రారంభించు"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr ""
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr ""
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "స్థితి వివరణ లెక్కలు"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "ఎప్పుడైనా"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "క్రిందటి రోజు"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "క్రిందటి వారం"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "క్రిందటి నెల"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "క్రిందటి సంవత్సరం"
@@ -894,21 +966,21 @@ msgstr "అయ్యో!"
msgid "Something went wrong."
msgstr "ఏదో తప్పు జరిగింది."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr ""
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr ""
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr ""
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr ""
@@ -923,47 +995,47 @@ msgid "hide map"
msgstr ""
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr ""
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr ""
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr ""
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr ""
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr ""
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr ""
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr ""
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr ""
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "ఫైళ్ళ సంఖ్య"
@@ -977,22 +1049,34 @@ msgstr "వీడియో చూపించు"
msgid "hide video"
msgstr "వీడియోను దాచిపెట్టు"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr ""
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr ""
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "ఏమీ దొరకలేదు"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr ""
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr ""
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "ఆంతరంగికత"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr ""
diff --git a/searx/translations/tr/LC_MESSAGES/messages.po b/searx/translations/tr/LC_MESSAGES/messages.po
index 5217849..adf7c23 100644
--- a/searx/translations/tr/LC_MESSAGES/messages.po
+++ b/searx/translations/tr/LC_MESSAGES/messages.po
@@ -1,233 +1,234 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
# Arda Kılıçdağı <ardakilicdagi@gmail.com>, 2018
-# Caner Başaran <basaran.caner@protonmail.com>, 2014-2016
+# BouRock, 2020
+# Caner Başaran <basaran.caner@gmail.com>, 2014-2016
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-09-30 20:20+0000\n"
+"Last-Translator: BouRock\n"
"Language-Team: Turkish (http://www.transifex.com/asciimoo/searx/language/tr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: tr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "zaman aşımı"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "istekte bir hata oluştu"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "beklenmmeyen hata"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "dosyalar"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "genel"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "müzik"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "sosyal medya"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "görseller"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
-msgstr "videolar"
+msgstr "görüntüler"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "bilişim"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "haberler"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "harita"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "bilim"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
-msgstr "Hatalı ayar girildi, lütfen ayarlarınızı kontrol edin"
+msgstr "Geçersiz ayarlar, lütfen tercihlerinizi düzenleyin"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
-msgstr "Hatalı ayar"
+msgstr "Geçersiz ayarlar"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "arama hatası"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
-msgstr "{minutes} dakika() önce"
+msgstr "{minutes} dakika önce"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
-msgstr "{hours} saat(), {minutes} dakika() önce"
+msgstr "{hours} saat, {minutes} dakika önce"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
-msgstr "Rastgele değer üretici"
+msgstr "Rastgele değer üreteci"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
-msgstr "Farklı rastgele metinler üret"
+msgstr "Farklı rastgele değerler üret"
#: searx/answerers/statistics/answerer.py:53
msgid "Statistics functions"
-msgstr "İstatistik fonksiyonları"
+msgstr "İstatistik işlevleri"
#: searx/answerers/statistics/answerer.py:54
msgid "Compute {functions} of the arguments"
-msgstr "Argümanların {functions} değerlerini hesapla"
+msgstr "Bağımsız değişkenlerin {functions} değerini hesapla"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
-msgstr "Motor cevap süresi (sn)"
+msgstr "Motor süresi (san)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
-msgstr "Sayfa yüklenmesi (sn)"
+msgstr "Sayfa yüklemeleri (san)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Sonuç sayısı"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Skor"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Sonuç başına skor"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Hatalar"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "CAPTCHA gerekli"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Yönleri al"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(GEÇERSİZ)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (ESKİ)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
-msgstr ""
+msgstr "Bu girişin yerini alan"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr ""
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr ""
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Bu yayın için özet mevcut değil."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
-msgstr "Mümkünse HTTP bağlantıları HTTPS olarak düzelt"
+msgstr "Mümkünse HTTP bağlantıları HTTPS olarak yeniden yaz"
#: searx/plugins/infinite_scroll.py:3
msgid "Infinite scroll"
-msgstr ""
+msgstr "Sonsuz kaydırma"
#: searx/plugins/infinite_scroll.py:4
msgid "Automatically load next page when scrolling to bottom of current page"
-msgstr ""
+msgstr "Şu anki sayfanın en altına kaydırıldığında sonraki sayfayı otomatik olarak yükle"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Açık Erişim DOI yeniden yazma"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Mevcut olduğunda yayınların açık erişim sürümlerine yeniden yönlendirerek ödeme ekranlarını önle"
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
-msgstr "Bağlantıları yeni sekmede aç"
+msgstr "Yeni tarayıcı sekmelerinde sonuçta ortaya çıkan bağlantıları aç"
#: searx/plugins/open_results_on_new_tab.py:19
msgid ""
"Results are opened in the same window by default. This plugin overwrites the"
" default behaviour to open links on new tabs/windows. (JavaScript required)"
-msgstr ""
+msgstr "Sonuçlar varsayılan olarak aynı pencerede açılır. Bu eklenti, bağlantıları yeni sekmelerde/pencerelerde açmak için varsayılan davranışın üzerine yazar. (JavaScript gerekli)"
#: searx/plugins/search_on_category_select.py:18
msgid "Search on category select"
-msgstr ""
+msgstr "Kategori seçimine göre ara"
#: searx/plugins/search_on_category_select.py:19
msgid ""
"Perform search immediately if a category selected. Disable to select "
"multiple categories. (JavaScript required)"
-msgstr ""
+msgstr "Bir kategori seçilirse hemen arama yap. Birden çok kategori seçmeyi etkisizleştir. (JavaScript gerekli)"
#: searx/plugins/self_info.py:20
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
-msgstr ""
+msgstr "Sorgu \"ip\" ise IP'nizi ve sorgu \"kullanıcı tanıtıcısı\" içeriyorsa kullanıcı tanıtıcınızı görüntüler."
#: searx/plugins/tracker_url_remover.py:26
msgid "Tracker URL remover"
-msgstr ""
+msgstr "İzleyici URL'si kaldırıcısı"
#: searx/plugins/tracker_url_remover.py:27
msgid "Remove trackers arguments from the returned URL"
-msgstr ""
+msgstr "İzleyici bağımsız değişkenlerini döndürülen URL'den kaldır"
#: searx/plugins/vim_hotkeys.py:3
msgid "Vim-like hotkeys"
-msgstr ""
+msgstr "Vim-like kısayol tuşları"
#: searx/plugins/vim_hotkeys.py:4
msgid ""
"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
"\"h\" key on main or result page to get help."
-msgstr ""
+msgstr "Vim-like kısayol tuşlarıyla arama sonuçlarında gezinin (JavaScript gerekli). Yardım almak için ana sayfada veya sonuç sayfasında \"h\" tuşuna basın."
#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
#: searx/templates/simple/404.html:4
msgid "Page not found"
-msgstr ""
+msgstr "Sayfa bulunamadı"
#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
#: searx/templates/simple/404.html:6
#, python-format
msgid "Go to %(search_page)s."
-msgstr ""
+msgstr "%(search_page)s sayfasına git."
#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
#: searx/templates/simple/404.html:6
msgid "search page"
-msgstr ""
+msgstr "arama sayfası"
#: searx/templates/courgette/index.html:9
#: searx/templates/courgette/index.html:13
@@ -249,7 +250,7 @@ msgstr "hakkında"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Tercihler"
@@ -257,100 +258,100 @@ msgstr "Tercihler"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
-msgstr "Öntanımlı kategoriler"
+msgstr "Varsayılan kategoriler"
#: searx/templates/courgette/preferences.html:13
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Arama dili"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
-msgstr ""
+msgstr "Varsayılan dil"
#: searx/templates/courgette/preferences.html:24
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Arayüz dili"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Otomatik tamamlama"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Görsel vekil sunucu"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
-msgstr "Etkin"
+msgstr "Etkinleştirildi"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
-msgstr "Devre dışı"
+msgstr "Etkisizleştirildi"
#: searx/templates/courgette/preferences.html:54
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
-msgstr "Sorgu gönderim yöntemi"
+msgstr "Yöntem"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Güvenli Arama"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Sıkı"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Orta"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Yok"
@@ -358,7 +359,7 @@ msgstr "Yok"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Temalar"
@@ -372,7 +373,7 @@ msgstr "Mavi (varsayılan)"
#: searx/templates/courgette/preferences.html:87
msgid "Violet"
-msgstr "Menekşe rengi"
+msgstr "Mor"
#: searx/templates/courgette/preferences.html:88
msgid "Green"
@@ -393,126 +394,137 @@ msgstr "Kırmızı"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Şu anda kullanılan arama motorları"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Motor adı"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Türü"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Kısayol"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Kategori"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "İzin ver"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Engelle"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
-msgstr "Ayarlar çerezlerinizde saklanır. Verdiğiniz izinler, sizin hakkınızda veri saklamak için değildir."
+msgstr "Bu ayarlar tanımlama bilgilerinde saklanır, bu sizin hakkınızda bu verileri saklamamamıza izin verir."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
-msgstr "Bu çerezler size kolaylık sağlar. Sizi takip etmek için kullanılmaz."
+msgstr "Bu tanımlama bilgileri size kolaylık sağlar, sizi izlemek için bu çerezleri kullanmayız."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "kaydet"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Varsayılanları sıfırla"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "geri"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
-msgstr "Arama Bağlantısı"
+msgstr "Arama URL'si"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
-msgstr "Arama sonuçlarını indir"
+msgstr "Sonuçlarını indir"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
-msgstr ""
+msgstr "Yanıtlar"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Öneriler"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "önceki sayfa"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "sonraki sayfa"
@@ -521,321 +533,382 @@ msgstr "sonraki sayfa"
#: searx/templates/oscar/search_full.html:9
#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
msgid "Search for..."
-msgstr "Aramak için..."
+msgstr "Aranan..."
#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
#: searx/templates/simple/stats.html:7
msgid "Engine stats"
-msgstr "Arama motoru istatistikleri"
+msgstr "Motor istatistikleri"
#: searx/templates/courgette/result_templates/images.html:4
#: searx/templates/legacy/result_templates/images.html:4
#: searx/templates/pix-art/result_templates/images.html:4
msgid "original context"
-msgstr "özgün içerik"
+msgstr "orijinal içerik"
#: searx/templates/courgette/result_templates/torrent.html:7
#: searx/templates/legacy/result_templates/torrent.html:11
#: searx/templates/oscar/result_templates/torrent.html:6
#: searx/templates/simple/result_templates/torrent.html:9
msgid "Seeder"
-msgstr "Besleyenler"
+msgstr "Gönderenler"
#: searx/templates/courgette/result_templates/torrent.html:7
#: searx/templates/legacy/result_templates/torrent.html:11
#: searx/templates/oscar/result_templates/torrent.html:6
#: searx/templates/simple/result_templates/torrent.html:9
msgid "Leecher"
-msgstr "Sömürenler"
+msgstr "Çekenler"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
-msgstr "mıknatıs bağlantı"
+msgstr "magnet bağlantısı"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "torrent dosyası"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Arama yapmak için büyütece tıklayın"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
-msgstr ""
+msgstr "Sonuçlar yeni sekmelerde"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
-msgstr ""
+msgstr "Açık"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
-msgstr ""
+msgstr "Kapalı"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
-msgstr "önbellek"
+msgstr "önbelleklendi"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
-msgstr ""
+msgstr "Gelişmiş ayarlar"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Kapat"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
-msgstr ""
+msgstr "Hata!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
-msgstr "Gücümün kaynağı"
+msgstr "Destekleyen"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
-msgstr "kişisel gizliliğe saygılı ve merak edenlerin kurcalayabildiği bir meta arama motoru"
+msgstr "gizliliğe saygılı, kurcalanabilir bir meta arama motoru"
+
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Kaynak kodu"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Sorun izleyici"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Herkese açık örnekler"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Dil"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
-msgstr ""
+msgstr "vekaleten"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
-msgstr ""
+msgstr "desteklenir"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
-msgstr ""
+msgstr "desteklenmez"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Genel"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Motorlar"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Eklentiler"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
-msgstr ""
+msgstr "Yanıtlayanlar"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
-msgstr ""
+msgstr "Tanımlama Bilgileri"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
-msgstr "Tercih ettiğiniz arama sonuçları dili"
+msgstr "Arama için hangi dili tercih edersiniz?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
-msgstr "Site dilini değiştir"
+msgstr "Düzen dilini değiştirin"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
-msgstr "Leb demeden leblebiyi anlasın"
+msgstr "Yazarken bir şeyler bulun"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
-msgstr "Görsel arama sonuçlarını, searx vekil sunucusu üzerinden geçir"
+msgstr "Searx aracılığıyla görsel sonuçlarını vekil sunucusu üzerinden geçirin"
#: searx/templates/oscar/preferences.html:78
msgid ""
"Change how forms are submited, <a "
"href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\""
" rel=\"external\">learn more about request methods</a>"
-msgstr "Aramaların nasıl gönderildiğini değiştir, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">istek yöntemleri hakkında daha fazla bilgi</a>"
+msgstr "Formların nasıl gönderildiğini değiştirin, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">istek yöntemleri hakkında daha fazla bilgi edinin</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
-msgstr "İçeriyi süz"
+msgstr "İçeriği süzün"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
-msgstr "searx yerleşim düzenini değiştir"
+msgstr "Searx düzenini değiştirin"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
-msgstr ""
+msgstr "Bu tema için stil seçin"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
-msgstr ""
+msgstr "Stil"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr ""
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Açık Erişim DOI çözümleyicisi"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Mümkün olduğunda yayınların açık erişimli sürümlerine yeniden yönlendirir (eklenti gerekli)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Motor belirteçleri"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Özel motorlar için erişim belirteçleri"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Tümüne izin ver"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Tümünü etkisizleştir"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
-msgstr ""
+msgstr "Seçilen dil"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
-msgstr ""
+msgstr "Zaman aralığı"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
-msgstr ""
+msgstr "Ort. zaman"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
-msgstr ""
+msgstr "En fazla zaman"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
-msgstr ""
+msgstr "Bu, searx'in anında yanıtlama modüllerinin listesidir."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
-msgstr ""
+msgstr "Ad"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
-msgstr ""
+msgstr "Anahtar kelimeler"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
-msgstr ""
+msgstr "Açıklama"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
-msgstr ""
+msgstr "Örnekler"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
-msgstr ""
+msgstr "Bu, searx'in bilgisayarınızda depoladığı tanımlama bilgileri ve değerleri listesidir."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
-msgstr ""
+msgstr "Bu listeyle searx şeffaflığını değerlendirebilirsiniz."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
-msgstr ""
+msgstr "Tanımlama bilgisi adı"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
-msgstr ""
+msgstr "Değer"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
-msgstr ""
+msgstr "Şu anda kaydedilmiş tercihlerin arama URL'si"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
-msgstr ""
+msgstr "Not: Arama URL'sinde özel ayarların belirtilmesi, tıklanan sonuç sitelerine veri sızdırarak gizliliği azaltabilir."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Arama sonuçları"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr ""
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
-msgstr ""
+msgstr "Motorlar sonuçları alamıyor"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Bağlantılar"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "RSS aboneliği"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Arama sonuçları"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Aramaya çalışılan:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Aramayı başlat"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Aramayı temizle"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Temizle"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "istatistikler"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
-msgstr ""
+msgstr "Herhangi bir zaman"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
-msgstr ""
+msgstr "Geçen gün"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
-msgstr ""
+msgstr "Geçen hafta"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
-msgstr ""
+msgstr "Geçen ay"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
-msgstr ""
+msgstr "Geçen yıl"
#: searx/templates/oscar/messages/first_time.html:6
#: searx/templates/oscar/messages/no_data_available.html:3
@@ -848,25 +921,25 @@ msgstr "İlk defa searx kullanıyor gibi görünüyorsunuz."
#: searx/templates/oscar/messages/no_cookies.html:3
msgid "Information!"
-msgstr ""
+msgstr "Bilgiler!"
#: searx/templates/oscar/messages/no_cookies.html:4
msgid "currently, there are no cookies defined."
-msgstr ""
+msgstr "şu anda, tanımlanmış tanımlama bilgileri yok."
#: searx/templates/oscar/messages/no_data_available.html:4
msgid "There is currently no data available. "
-msgstr "Şuan uygun veri yok."
+msgstr "Şu anda mevcut veri yok."
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
msgid "Engines cannot retrieve results."
-msgstr ""
+msgstr "Motorlar sonuçları alamıyor."
#: searx/templates/oscar/messages/no_results.html:10
#: searx/templates/simple/messages/no_results.html:10
msgid "Please, try again later or find another searx instance."
-msgstr ""
+msgstr "Lütfen daha sonra tekrar deneyin veya başka bir searx örneği bulun."
#: searx/templates/oscar/messages/no_results.html:14
#: searx/templates/simple/messages/no_results.html:14
@@ -878,7 +951,7 @@ msgstr "Üzgünüz!"
msgid ""
"we didn't find any results. Please use another query or search in more "
"categories."
-msgstr "herhangi bir sonuç bulamadık. Lütfen, başka sorgu kullanın veya daha fazla kategoride arama yapın."
+msgstr "herhangi bir sonuç bulamadık. Lütfen, başka bir sorgu kullanın veya daha fazla kategoride arama yapın."
#: searx/templates/oscar/messages/save_settings_successfull.html:7
msgid "Well done!"
@@ -886,31 +959,31 @@ msgstr "Aferin!"
#: searx/templates/oscar/messages/save_settings_successfull.html:8
msgid "Settings saved successfully."
-msgstr "Ayarlar başarıyla kaydedildi."
+msgstr "Ayarlar başarılı olarak kaydedildi."
#: searx/templates/oscar/messages/unknow_error.html:7
msgid "Oh snap!"
-msgstr "Tüh tüh!"
+msgstr "Hay aksi!"
#: searx/templates/oscar/messages/unknow_error.html:8
msgid "Something went wrong."
-msgstr "Bazı bazı şeylerde problem olmuş."
+msgstr "Bir şeyler ters gitti."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
-msgstr "medya göster"
+msgstr "medyayı göster"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
-msgstr "medya gizle"
+msgstr "medyayı gizle"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
-msgstr "Görseli indir"
+msgstr "Görseli al"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Kaynağı göster"
@@ -925,76 +998,88 @@ msgid "hide map"
msgstr "haritayı gizle"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "ayrıntıları göster"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "ayrıntıları gizle"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Dosya boyutu"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Bayt"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Dosya Sayısı"
#: searx/templates/oscar/result_templates/videos.html:7
#: searx/templates/simple/result_templates/videos.html:6
msgid "show video"
-msgstr "video göster"
+msgstr "görüntüyü göster"
#: searx/templates/oscar/result_templates/videos.html:7
#: searx/templates/simple/result_templates/videos.html:6
msgid "hide video"
-msgstr "video gizle"
+msgstr "görüntüyü gizle"
+
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Hazırlayan"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Uzunluk"
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
-msgstr "Daha fazlasını getir..."
+msgstr "Daha fazla yükle..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
-msgstr ""
+msgstr "Bulunan öğe yok"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
-msgstr ""
+msgstr "Seçili dili destekler"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
-msgstr ""
+msgstr "Kullanıcı arayüzü"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
-msgstr ""
+msgstr "Gizlilik"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Yükleniyor..."
diff --git a/searx/translations/uk/LC_MESSAGES/messages.po b/searx/translations/uk/LC_MESSAGES/messages.po
index bd4b294..445ac46 100644
--- a/searx/translations/uk/LC_MESSAGES/messages.po
+++ b/searx/translations/uk/LC_MESSAGES/messages.po
@@ -1,8 +1,9 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
+# f977cb811fcf66493f48eac227fd7473_b98aa5d <2419f1d8d12d92441152e78ae3e3bde0_722180>, 2021
# pvhn4 <pvhn4@protonmail.com>, 2017
# pvhn4 <pvhn4@protonmail.com>, 2017
# pvhn4 <pvhn4@protonmail.com>, 2017
@@ -11,94 +12,82 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: zubr139\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2014-01-30 14:32+0000\n"
+"Last-Translator: pvhn4 <pvhn4@protonmail.com>, 2017\n"
"Language-Team: Ukrainian (http://www.transifex.com/asciimoo/searx/language/uk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: uk\n"
"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr ""
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr ""
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr ""
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "файли"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "загальні"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "музика"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
-msgstr "соцмережі"
+msgstr "соц. мережі"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
-msgstr "зображення"
+msgstr "картинки"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
-msgstr "відео"
+msgstr "відеозаписи"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
-msgstr "IT"
+msgstr "іт"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "новини"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "карти"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "наука"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
-msgstr "Невірні налаштування, будь ласка, зробіть зміни в налаштуваннях"
+msgstr "Неправильні налаштування, будь ласка, змініть свої налаштування"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
-msgstr ""
+msgstr "Неправильні налаштування"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "помилка пошуку"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} хвилин тому"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} годин, {minutes} хвилин тому"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
-msgstr "Генератор випадкових значень"
+msgstr "Ґенератор випадкових значень"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Створити різні випадкові значення"
@@ -108,90 +97,102 @@ msgstr "Функції статистики"
#: searx/answerers/statistics/answerer.py:54
msgid "Compute {functions} of the arguments"
-msgstr "Розрахувати {functions} аргументів"
+msgstr "Розрахувати {functions} арґументів"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Час пошуку (сек)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
-msgstr "Час завантадення (сек)"
+msgstr "Завантаження сторінки (сек)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
-msgstr "Число результатів"
+msgstr "Кількість результатів"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Влучань"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Влучань за результат"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Помилок"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "CAPTCHA обовʼязкова"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "Отримати напрямки"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(OBSOLETE)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (ЗАСТАРІЛЕ)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
-msgstr "Цей запис був змінений"
+msgstr "Цей запис змінено"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "Переписати DOAI"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Уникайте платіжних каналів шляхом переадресації на версії публікацій з відкритим доступом, коли це можливо"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Для цієї публікації нема підсумків."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
-msgstr "За можливістю замінити в посиланнях HTTP на HTTPS"
+msgstr "Перезаписувати посилання HTTP на HTTPS, якщо можливо"
#: searx/plugins/infinite_scroll.py:3
msgid "Infinite scroll"
-msgstr "Нескінченна прокрутка"
+msgstr "Нескінченне прокручування"
#: searx/plugins/infinite_scroll.py:4
msgid "Automatically load next page when scrolling to bottom of current page"
-msgstr "Автоматично завантажувати наступну сторінку при прокрутці поточної до кінця"
+msgstr "Автоматично завантажувати наступну сторінку, коли поточну сторінку прокручено донизу"
+
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Перезаписувати Open Access DOI"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Уникати платіжних каналів шляхом переадресації на версії публікацій із відкритим доступом, коли можливо"
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
-msgstr "Відкривати посилання результатів в нових вкладках"
+msgstr "Відкривати посилання результатів у нових вкладках"
#: searx/plugins/open_results_on_new_tab.py:19
msgid ""
"Results are opened in the same window by default. This plugin overwrites the"
" default behaviour to open links on new tabs/windows. (JavaScript required)"
-msgstr "Типово результати відкриваються в тому ж вікні. Цей плагін змінює поведінку, щоб посилання відкривались типово в нових вкладках/вікнах. (Необхідний JavaScript)"
+msgstr "Результати відкриваються в тому самому вікні за замовчуванням. Дана втулка перезаписує типову поведінку, щоб посилання відкривалися в нових вкладках/вікнах. (Вимагає JavaScript)"
#: searx/plugins/search_on_category_select.py:18
msgid "Search on category select"
-msgstr "Пошук по обраній категорії"
+msgstr "Пошук для обраної категорії"
#: searx/plugins/search_on_category_select.py:19
msgid ""
"Perform search immediately if a category selected. Disable to select "
"multiple categories. (JavaScript required)"
-msgstr "Виконувати пошук зразу при обранні категорії. Вимкнути вибір декількох категорій. (Необхідний JavaScript)"
+msgstr "Виконувати пошук відразу під час обрання категорії. Вимкнути вибір декількох категорій. (Вимагає JavaScript)"
#: searx/plugins/self_info.py:20
msgid ""
"Displays your IP if the query is \"ip\" and your user agent if the query "
"contains \"user agent\"."
-msgstr "Відображає IP-адресу при запиті \"ip\" та ваш user-agent при запиті \"user agent\"."
+msgstr "Відображає Вашу IP-адресу, якщо запит «ip», і Ваш користувацький аґент, якщо запит містить «user agent»."
#: searx/plugins/tracker_url_remover.py:26
msgid "Tracker URL remover"
@@ -199,23 +200,23 @@ msgstr "Видалення URL-адреси трекера"
#: searx/plugins/tracker_url_remover.py:27
msgid "Remove trackers arguments from the returned URL"
-msgstr "Вилучіть аргументи трекера з поверненої URL-адреси"
+msgstr "Вилучати арґументи трекера з поверненої URL-адреси"
#: searx/plugins/vim_hotkeys.py:3
msgid "Vim-like hotkeys"
-msgstr "Гарячі клавіші Vim"
+msgstr "Комбінації клавіш як у Vim"
#: searx/plugins/vim_hotkeys.py:4
msgid ""
"Navigate search results with Vim-like hotkeys (JavaScript required). Press "
"\"h\" key on main or result page to get help."
-msgstr "Переміщення результатів пошуку за допомогою віртуальних клавіш (потрібно JavaScript). Натисніть клавішу \"h\" на головній сторінці або на сторінці результатів, щоб отримати допомогу."
+msgstr "Переміщення результатів пошуку за допомогою віртуальних клавіш (вимагає JavaScript). Натисніть клавішу «h» на головній сторінці або на сторінці результатів, щоб отримати допомогу."
#: searx/templates/courgette/404.html:4 searx/templates/legacy/404.html:4
#: searx/templates/oscar/404.html:4 searx/templates/pix-art/404.html:4
#: searx/templates/simple/404.html:4
msgid "Page not found"
-msgstr "Сторінка не знайдена"
+msgstr "Сторінку не знайдено"
#: searx/templates/courgette/404.html:6 searx/templates/legacy/404.html:6
#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
@@ -228,7 +229,7 @@ msgstr "Перейти до %(search_page)s."
#: searx/templates/oscar/404.html:6 searx/templates/pix-art/404.html:6
#: searx/templates/simple/404.html:6
msgid "search page"
-msgstr "сторінки пошуку"
+msgstr "сторінка пошуку"
#: searx/templates/courgette/index.html:9
#: searx/templates/courgette/index.html:13
@@ -238,7 +239,7 @@ msgstr "сторінки пошуку"
#: searx/templates/oscar/preferences.html:3
#: searx/templates/pix-art/index.html:8
msgid "preferences"
-msgstr "опції"
+msgstr "налаштування"
#: searx/templates/courgette/index.html:11
#: searx/templates/legacy/index.html:10 searx/templates/oscar/about.html:2
@@ -250,15 +251,15 @@ msgstr "про сайт"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
-msgstr "Опції"
+msgstr "Налаштування"
#: searx/templates/courgette/preferences.html:9
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Типові категорії"
@@ -266,53 +267,53 @@ msgstr "Типові категорії"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Мова пошуку"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
-msgstr "Стандартна мова"
+msgstr "Типова мова"
#: searx/templates/courgette/preferences.html:24
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Мова інтерфейсу"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Автозаповнення"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Проксі для зображень"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
-msgstr "Ввімкнено"
+msgstr "Дозволено"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Вимкнено"
@@ -320,38 +321,38 @@ msgstr "Вимкнено"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
-msgstr "Метод"
+msgstr "Спосіб"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "БезпечнийПошук"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
-msgstr "Жорский"
+msgstr "Строгий"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Помірний"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Вимкнений"
@@ -359,7 +360,7 @@ msgstr "Вимкнений"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Теми"
@@ -394,126 +395,137 @@ msgstr "Червоний"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Пошукові системи, які використовуються"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
-msgstr "Назва пошукової системи"
+msgstr "Назва рушія"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Категорія"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Швидкі клавіші"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Категорія"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Дозволити"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Заблокувати"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
-msgstr "Налаштування зберігаються в ваших cookie-файлах, що дає нам змогу не зберігати ці відомості про вас."
+msgstr "Ці налаштування зберігатимуться у Ваших cookie-файлах, це дозволить нам не зберігати ці дані про Вас."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
-msgstr "Ці cookie-файли необхідні винятково для вашої зручності, ми не використовуємо ці cookie-файли, щоб відслідковувати вас."
+msgstr "Ці cookie-файли призначені виключно для Вашої зручності, ми не використовуємо їх для стеження за Вами."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "зберегти"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
-msgstr "Відновити стандартні налаштування"
+msgstr "Скинути до типових"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "назад"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
-msgstr "Посилання на пошук"
+msgstr "URL пошуку"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Завантажити результати"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Відповіді"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Пропозиції"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "попередня сторінка"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "наступна сторінка"
@@ -522,162 +534,179 @@ msgstr "наступна сторінка"
#: searx/templates/oscar/search_full.html:9
#: searx/templates/pix-art/search.html:3 searx/templates/simple/search.html:4
msgid "Search for..."
-msgstr "Шукати..."
+msgstr "Шукати для..."
#: searx/templates/courgette/stats.html:4 searx/templates/legacy/stats.html:4
#: searx/templates/oscar/stats.html:5 searx/templates/pix-art/stats.html:4
#: searx/templates/simple/stats.html:7
msgid "Engine stats"
-msgstr "Статистика пошукової системи"
+msgstr "Статистика рушія"
#: searx/templates/courgette/result_templates/images.html:4
#: searx/templates/legacy/result_templates/images.html:4
#: searx/templates/pix-art/result_templates/images.html:4
msgid "original context"
-msgstr "в контексті"
+msgstr "ориґінальний контекст"
#: searx/templates/courgette/result_templates/torrent.html:7
#: searx/templates/legacy/result_templates/torrent.html:11
#: searx/templates/oscar/result_templates/torrent.html:6
#: searx/templates/simple/result_templates/torrent.html:9
msgid "Seeder"
-msgstr "Сідер"
+msgstr "Роздавач"
#: searx/templates/courgette/result_templates/torrent.html:7
#: searx/templates/legacy/result_templates/torrent.html:11
#: searx/templates/oscar/result_templates/torrent.html:6
#: searx/templates/simple/result_templates/torrent.html:9
msgid "Leecher"
-msgstr "Лічер"
+msgstr "Отримувач"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
-msgstr "магнет-посилання"
+msgstr "magnet-посилання"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
-msgstr "торрент-файл"
+msgstr "торент-файл"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
-msgstr "Натисніть лупу, щоб виконати пошук"
+msgstr "Натисніть на лупу, щоб виконати пошук"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Результати в нових вкладках"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
-msgstr "Ввімк."
+msgstr "Увмк."
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Вимк."
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
-msgstr "архівовано"
+msgstr "кешовано"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Додаткові налаштування"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Закрити"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Помилка!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
-msgstr "Використовується"
+msgstr "Працює на"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
-msgstr "вільна система метапошуку, яка поважає вашу приватність"
+msgstr "налаштовувана система збірного пошуку, що поважає Вашу приватність"
+
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "Вихідний код"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "Відстеження помилок"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "Публічні екземпляри"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "Мова"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "проксовано"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
-msgstr ""
+msgstr "підтримується"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
-msgstr ""
+msgstr "не підтримується"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Загальні"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Пошукові системи"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
-msgstr "Плагіни"
+msgstr "Втулки"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Відповідачі"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
-msgstr "Cookie-файли"
+msgstr "Файли Cookie"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
-msgstr "Якій мові ви віддаєте перевагу для пошуку?"
+msgstr "Якій мові Ви надаєте перевагу для пошуку?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Змінити мову сайту"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
-msgstr "Шукати підчас набору"
+msgstr "Шукати під час набору"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Проксувати знайдені зображення за допомогою searx"
@@ -689,152 +718,196 @@ msgid ""
msgstr "Змінити спосіб відправки запитів, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">детальніше про методи запитів</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
-msgstr "Фільтр контенту"
+msgstr "Фільтр вмісту"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Змінити вигляд сайту"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Обрати стиль для цієї теми"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Стиль"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Гарячі клавіші"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Розвʼязання Open Access DOI"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Перенаправлення на версії публікацій у відкритому доступі, якщо можливо (вимагається втулка)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "Пропускне значення рушія"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "Пропуск доступу до приватних рушіїв"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "Дозволити все"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "Заборонити все"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
-msgstr ""
+msgstr "Вибрана мова"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
-msgstr "Часовий діапазон"
+msgstr "Часовий проміжок"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Середній час"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Максимальний час"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Список модулів миттєвих відповідей searx."
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Назва"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Ключові слова"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Опис"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Приклади"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
-msgstr "Це список cookie-файлів та їх значень, які searx зберігає на вашому комп'ютері."
+msgstr "Це список cookie-файлів та їх значень, які searx зберігає на Вашому компʼютері."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
-msgstr "По цьому списку ви можете оцінити відкритість searx."
+msgstr "За цим списком Ви можете оцінити відкритість searx."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
-msgstr "Ім'я cookie"
+msgstr "Назва cookie"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Значення"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
-msgstr ""
+msgstr "URL для пошуку збережених поточних налашутвань"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
-msgstr ""
-
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Результати пошуку"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr ""
+msgstr "Примітка: визначення власних налаштувань в пошуковій URL-адресі може зменшити приватність шляхом витоку даних на сайти результатів, на які було натиснуто."
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
-msgstr ""
+msgstr "Рушії не можуть отримати результати"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Посилання"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "Підписка RSS"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Результати пошуку"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Спробуйте пошукати:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Розпочати пошук"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "Очистити пошук"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "Очистити"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "статистика"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "За весь час"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "За останній день"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "За останній тиждень"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "За останній місяць"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "За останній рік"
@@ -845,7 +918,7 @@ msgstr "Отакої!"
#: searx/templates/oscar/messages/first_time.html:7
msgid "It look like you are using searx first time."
-msgstr "Схоже, що ви використовуєте searx вперше."
+msgstr "Схоже, Ви використовуєте searx вперше."
#: searx/templates/oscar/messages/no_cookies.html:3
msgid "Information!"
@@ -853,21 +926,21 @@ msgstr "Інформація!"
#: searx/templates/oscar/messages/no_cookies.html:4
msgid "currently, there are no cookies defined."
-msgstr "в даний час cookie-файли не встановлені."
+msgstr "на даний час файли cookie не визначені."
#: searx/templates/oscar/messages/no_data_available.html:4
msgid "There is currently no data available. "
-msgstr "В даний час немає доступних даних."
+msgstr "Наразі нема доступних даних."
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
msgid "Engines cannot retrieve results."
-msgstr ""
+msgstr "Рушії не можуть отримати результати."
#: searx/templates/oscar/messages/no_results.html:10
#: searx/templates/simple/messages/no_results.html:10
msgid "Please, try again later or find another searx instance."
-msgstr ""
+msgstr "Будь ласка, спробуйте ще раз або інший екземпляр searx."
#: searx/templates/oscar/messages/no_results.html:14
#: searx/templates/simple/messages/no_results.html:14
@@ -879,7 +952,7 @@ msgstr "Вибачте!"
msgid ""
"we didn't find any results. Please use another query or search in more "
"categories."
-msgstr "ми не знайшли жодних результатів. Будь ласка, використайте інший запит або виконайте пошук в декількох категоріях."
+msgstr "ми не знайшли жодних результатів. Будь ласка, використайте інший запит або виконайте пошук у декількох категоріях."
#: searx/templates/oscar/messages/save_settings_successfull.html:7
msgid "Well done!"
@@ -887,7 +960,7 @@ msgstr "Чудово!"
#: searx/templates/oscar/messages/save_settings_successfull.html:8
msgid "Settings saved successfully."
-msgstr "Налаштування успішно збережені."
+msgstr "Налаштування успішно збережено."
#: searx/templates/oscar/messages/unknow_error.html:7
msgid "Oh snap!"
@@ -897,21 +970,21 @@ msgstr "От халепа!"
msgid "Something went wrong."
msgstr "Щось пішло не так."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "показати медіа"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "приховати медіа"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Завантажити зображення"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Переглянути джерело"
@@ -926,49 +999,49 @@ msgid "hide map"
msgstr "приховати карту"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "показати деталі"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "приховати деталі"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
-msgstr "Розмір файла"
+msgstr "Розмір файлу"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Байтів"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "КіБ"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "МіБ"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "ГіБ"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "ТіБ"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
-msgstr "Кількість Файлів"
+msgstr "Кількість файлів"
#: searx/templates/oscar/result_templates/videos.html:7
#: searx/templates/simple/result_templates/videos.html:6
@@ -980,22 +1053,34 @@ msgstr "показати відео"
msgid "hide video"
msgstr "приховати відео"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "Автор"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "Довжина"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Завантажити більше..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
-msgstr ""
+msgstr "Не знайдено елементів."
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Підтримка обраної мови"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
-msgstr ""
+msgstr "Користувацький інтерфейс"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
-msgstr ""
+msgstr "Приватність"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "Завантаження..."
diff --git a/searx/translations/vi/LC_MESSAGES/messages.po b/searx/translations/vi/LC_MESSAGES/messages.po
index 4ad30d0..a1068fb 100644
--- a/searx/translations/vi/LC_MESSAGES/messages.po
+++ b/searx/translations/vi/LC_MESSAGES/messages.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -8,94 +8,82 @@ msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-02-23 17:39+0000\n"
-"Last-Translator: Noémi Ványi <sitbackandwait@gmail.com>\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-09 13:10+0000\n"
+"Last-Translator: dd721411 <dd721411@gmail.com>\n"
"Language-Team: Vietnamese (http://www.transifex.com/asciimoo/searx/language/vi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: vi\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "hết thời hạn"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "ngoại lệ yêu cầu"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "lỗi bất ngờ"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "các tập tin"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "tổng quát"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "âm nhạc"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "mạng xã hội"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "hình ảnh"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "phim"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "CNTT"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "tin tức"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "bản đồ"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "khoa học"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "Cài đặt không hợp lệ, xin xem lại tuỳ chỉnh"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "Cài đặt không hợp lệ"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "lỗi tìm kiếm"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} phút() trước"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} giờ(), {minutes} phút() trước"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "Trình tạo giá trị ngẫu nhiên"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "Tạo các giá trị ngẫu nhiên khác nhau"
@@ -107,48 +95,50 @@ msgstr "Các hàm thống kê"
msgid "Compute {functions} of the arguments"
msgstr "Tính toán {functions} của các đối số"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "Thời gian trình tìm kiếm (giây)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "Tải trang (giây)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "Số lượng kết quả"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "Điểm số"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "Điểm số cho từng kết quả"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "Các lỗi"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr ""
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr ""
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(LỖI THỜI)"
+msgid "{title} (OBSOLETE)"
+msgstr ""
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "Mục này đã được thay thế bởi"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr ""
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "Tránh việc trả phí bằng cách chuyển hướng đến các phiên bản truy cập miễn phí của ấn phẩm khi có thể"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "Không có bản tóm tắt nào cho ấn phẩm này."
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -162,9 +152,19 @@ msgstr "Cuộn liên tục"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "Tự động tải trang kế tiếp khi cuộn đến cuối trang hiện tại"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "Viết lại DOI Truy Cập Miễn Phí"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "Tránh việc trả phí bằng cách chuyển hướng đến các phiên bản truy cập miễn phí của ấn phẩm khi có thể"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "Mở kết quả trên những thẻ trình duyệt mới"
@@ -247,7 +247,7 @@ msgstr "thông tin về"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "Tuỳ chỉnh"
@@ -255,7 +255,7 @@ msgstr "Tuỳ chỉnh"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "Các danh mục mặc định"
@@ -263,17 +263,17 @@ msgstr "Các danh mục mặc định"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "Ngôn ngữ tìm kiếm"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "Ngôn ngữ mặc định"
@@ -281,35 +281,35 @@ msgstr "Ngôn ngữ mặc định"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "Ngôn ngữ giao diện"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "Gợi ý tự động"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "Proxy hình ảnh"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "Đã "
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "Đã tắt"
@@ -317,38 +317,38 @@ msgstr "Đã tắt"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "Phương pháp"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "Tìm Kiếm An Toàn"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "Nghiêm ngặt"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "Vừa phải"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "Không"
@@ -356,7 +356,7 @@ msgstr "Không"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "Nền"
@@ -391,126 +391,137 @@ msgstr "Đỏ"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "Các trình tìm kiếm đang được dùng"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "Tên trình tìm kiếm"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "Danh mục"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "Lối tắt"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "Danh mục"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "Cho phép"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "Chặn"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "Những cài đặt này được lưu trữ trong các cookie, điều này cho phép chúng tôi không phải lưu các dữ liệu về bạn."
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "Những cookie này chỉ phục vụ cho chính bạn, chúng tôi không sử dụng chúng để theo dõi bạn."
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "lưu"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "Đưa về mặc định"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "trở về"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "URL Tìm kiếm"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "Tải về các kết quả"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "Các đáp án"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "Các gợi ý"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "trang liền trước"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "trang tiếp theo"
@@ -549,132 +560,149 @@ msgstr "Leecher"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "liên kết magnet"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "tập tin torrent"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "Nhấp vào hình kính lúp để tiến hành tìm kiếm"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "Hiện kết quả trên các thẻ mới"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "Bật"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "Tắt"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "đã lưu cache"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "Cài đặt nâng cao"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "Đóng"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "Lỗi!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "Được cung cấp bởi"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "một trình tìm kiếm đa nguồn, dễ tuỳ biến và tôn trọng quyền riêng tư"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr ""
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr ""
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr ""
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr ""
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "đã proxy"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "có hỗ trợ"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "không hỗ trợ"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "Tổng quát"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "Các trình tìm kiếm"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "Các phần mở rộng"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "Trình trả lời nhanh"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Các cookie"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "Bạn muốn tìm kiếm bằng ngôn ngữ nào?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "Thay đổi ngôn ngữ giao diện"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "Tìm kiếm ngay khi gõ"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "Proxy kết quả hình ảnh qua searx"
@@ -686,152 +714,196 @@ msgid ""
msgstr "Thay đổi cách thức các cụm từ tìm kiếm được gửi đi, <a href=\"http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods\" rel=\"external\">tìm hiểu thêm về các phương thức tìm kiếm</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "Lọc các nội dung"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "Thay đổi giao diện searx"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "Chọn phong cách cho nền này"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "Phong cách"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "Lối tắt"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "Trình xử lý DOI Truy Cập Miễn Phí"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "Chuyển hướng đến các phiên bản truy cập miễn phí của ấn phẩm khi có thể (yêu cầu phần mở rộng)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr ""
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr ""
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "Ngôn ngữ được chọn"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "Khoảng thời gian"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "Thời gian trung bình"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "Thời gian tối đa"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "Đây là danh sách các module trả lời nhanh của searx"
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "Tên"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "Các từ khoá"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "Mô tả"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "Các ví dụ"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "Đây là danh sách các cookie và giá trị của chúng mà searx đang lưu trữ trên máy tính của bạn."
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "Với danh sách này, bạn có thể đánh giá tính minh bạch của searx."
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Tên cookie"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "Giá trị"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "URL tìm kiếm của tuỳ chỉnh được lưu hiện tại"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "Ghi chú: việc định rõ cài đặt cá nhân trong URL tìm kiếm có thể làm suy giảm mức độ riêng tư vì nó chuyển dữ liệu đến các trang kết quả được nhấp chọn."
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "Kết quả tìm kiếm"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "Thử tìm kiếm:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "Các trình tìm kiếm không nhận được kết quả"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "Các liên kết"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr ""
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "Kết quả tìm kiếm"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "Thử tìm kiếm:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "Bắt đầu tìm kiếm"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr ""
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr ""
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "các thông số"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "Bất kỳ lúc nào"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "Hôm trước"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "Tuần trước"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "Tháng trước"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "Năm ngoái"
@@ -894,21 +966,21 @@ msgstr "Quái quỷ thật!"
msgid "Something went wrong."
msgstr "Đã có sự cố."
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "hiện nội dung"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "ẩn nội dung"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "Xem hình ảnh"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "Xem nguồn"
@@ -923,47 +995,47 @@ msgid "hide map"
msgstr "ẩn bản đồ"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "hiện chi tiết"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "ẩn chi tiết"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "Kích thước tập tin"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "Byte"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "Số lượng tập tin"
@@ -977,22 +1049,34 @@ msgstr "hiện "
msgid "hide video"
msgstr "ẩn phim"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr ""
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr ""
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "Tải thêm..."
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "Không tìm thấy gì"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "Có hỗ trợ ngôn ngữ được chọn"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "Giao diện người dùng"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "Quyền riêng tư"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr ""
diff --git a/searx/translations/zh_CN/LC_MESSAGES/messages.po b/searx/translations/zh_CN/LC_MESSAGES/messages.po
index c37c651..8765ff0 100644
--- a/searx/translations/zh_CN/LC_MESSAGES/messages.po
+++ b/searx/translations/zh_CN/LC_MESSAGES/messages.po
@@ -1,107 +1,96 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
-# Crystal RainSlide, 2018
+# RainSlide, 2018
# Jsthon, 2019
# Mingye Wang <arthur200126@gmail.com>, 2018
# Noémi Ványi <sitbackandwait@gmail.com>, 2019
# Sion Kazama, 2018
# wenke, 2015
# wenke, 2015-2018
+# WhiredPlanck <fungdaat31@outlook.com>, 2020
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-03-23 07:45+0000\n"
-"Last-Translator: Jsthon\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-08-17 18:22+0000\n"
+"Last-Translator: WhiredPlanck <fungdaat31@outlook.com>\n"
"Language-Team: Chinese (China) (http://www.transifex.com/asciimoo/searx/language/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "超时"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "请求异常"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "意外崩溃"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "文件"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "全部"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "音乐"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "社交"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "图片"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "视频"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "技术"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "新闻"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "地图"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "学术"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "设置无效,请编辑您的首选项"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "设置无效"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "搜索错误"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} 分钟前"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} 小时 {minutes} 分钟前"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "随机数生成器"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "生成不同的随机数"
@@ -113,48 +102,50 @@ msgstr "统计功能"
msgid "Compute {functions} of the arguments"
msgstr "计算 {functions} 参数"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "搜索引擎时间(秒)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "页面加载(秒)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "结果数"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "得分"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "每个结果的分数"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "错误"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "要求验证码"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "获取路线"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(过时)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (已过时)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "此条目已被取代"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "DOAI改写"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "尽量重定向到开放访问的文章以避免付费墙(如果可用)"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "本出版物没有摘要。"
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -168,9 +159,19 @@ msgstr "无限滚动"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "滚动到当前页面底部时自动加载下一页"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "开放访问 DOI 重定向"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "尽量重定向到开放访问的文章以避免付费墙(如果可用)"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "在新标签页打开搜索链接"
@@ -253,7 +254,7 @@ msgstr "关于"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "首选项"
@@ -261,7 +262,7 @@ msgstr "首选项"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "默认类别"
@@ -269,17 +270,17 @@ msgstr "默认类别"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "搜索语言"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "默认语言"
@@ -287,35 +288,35 @@ msgstr "默认语言"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "界面语言"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "自动补全"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "代理图片"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "启用"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "禁用"
@@ -323,38 +324,38 @@ msgstr "禁用"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "方法"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "安全搜索"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "严格"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "中等"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "无"
@@ -362,7 +363,7 @@ msgstr "无"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "主题"
@@ -397,126 +398,137 @@ msgstr "红色"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "目前使用的搜索引擎"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "搜索引擎名称"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "类别"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "快捷键"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "类别"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "允许"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "阻止"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "这些设置被存储在您的 cookie 中,这种保存设置的方式允许我们不存储您的设置数据。"
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "这些 Cookie 信息可辅助您便捷地使用服务,我们不会利用这些信息来追踪您。"
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "保存"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "恢复默认"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "返回"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "搜索链接"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "下载结果"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "回答"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "搜索建议"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "上一页"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "下一页"
@@ -555,132 +567,149 @@ msgstr "接收"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "磁力链接"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "种子文件"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "点击放大镜按钮开始搜索"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "在新标签页打开搜索结果"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "启用"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "禁用"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "缓存"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "高级设置"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "关闭"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "错误!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "技术支持来自"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "一个尊重隐私、可再开发的元搜索引擎"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "源代码"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "问题追踪器"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "公开实例"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "语言"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "代理"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "支持的"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "不支持的"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "常规"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "搜索引擎"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "插件"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "智能答复"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cookies"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "您更喜欢使用什么语言进行搜索?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "改变界面语言"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "自动补全搜索字词"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "通过 searx 代理图片结果"
@@ -692,152 +721,196 @@ msgid ""
msgstr "更改提交表单时使用的请求方法,<a href=\"https://zh.wikipedia.org/wiki/超文本传输协议#请求方法\" rel=\"external\">深入了解请求方法</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "过滤内容"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "改变 searx 布局"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "选择此主题的样式"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "样式"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "快捷键"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "开放访问 DOI 解析器"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "尽可能重定向到出版物的开放访问版本(需要插件)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "引擎令牌"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "私密引擎的访问令牌"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "允许所有"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "禁用所有"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "选择语言"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "时间范围"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "平均时间"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "最大时间"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "这是 searx 的即时回答模块列表。"
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "名称"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "关键词"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "描述"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "示例"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "此列表展示了 searx 在您设备上存储的 cookie 信息。"
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "您可以基于此表格来评估 searx 的透明度。"
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Cookie 名称"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "值"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "当前保存选项的搜索链接"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "注意:在搜索链接中保存自定义设置会把数据泄露给点击的结果网站,从而泄漏隐私。"
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "搜索结果"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "尝试搜索:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "引擎无法获取结果"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "链接"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "RSS 订阅"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "搜索结果"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "尝试搜索:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "开始搜索"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "清除搜索"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "清除"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "统计"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "时间不限"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "一天内"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "一周内"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "一月内"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "一年内"
@@ -900,21 +973,21 @@ msgstr "哦,糟糕!"
msgid "Something went wrong."
msgstr "出了些问题。"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "显示媒体"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "隐藏媒体"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "获取图片"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "查看来源"
@@ -929,47 +1002,47 @@ msgid "hide map"
msgstr "隐藏地图"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "显示详细信息"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "隐藏详细信息"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "文件大小"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "B"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "文件数"
@@ -983,22 +1056,34 @@ msgstr "显示视频"
msgid "hide video"
msgstr "隐藏视频"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "作者"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "长度"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "载入更多……"
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "未找到条目"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "支持选定的语言"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "用户界面"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "隐私"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "正在加载..."
diff --git a/searx/translations/zh_TW/LC_MESSAGES/messages.po b/searx/translations/zh_TW/LC_MESSAGES/messages.po
index d09317a..9ddc54b 100644
--- a/searx/translations/zh_TW/LC_MESSAGES/messages.po
+++ b/searx/translations/zh_TW/LC_MESSAGES/messages.po
@@ -1,5 +1,5 @@
# Translations template for PROJECT.
-# Copyright (C) 2017 ORGANIZATION
+# Copyright (C) 2020 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
#
# Translators:
@@ -7,98 +7,87 @@
# 黃柏諺 <s8321414@gmail.com>, 2017,2019
# Marc Abonce Seguin, 2019
# Mingye Wang <arthur200126@gmail.com>, 2018
+# 黃柏諺 <s8321414@gmail.com>, 2020
msgid ""
msgstr ""
"Project-Id-Version: searx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2017-10-07 19:18+0200\n"
-"PO-Revision-Date: 2019-07-28 05:46+0000\n"
-"Last-Translator: Marc Abonce Seguin\n"
+"POT-Creation-Date: 2020-07-09 15:07+0200\n"
+"PO-Revision-Date: 2020-07-10 02:51+0000\n"
+"Last-Translator: 黃柏諺 <s8321414@gmail.com>\n"
"Language-Team: Chinese (Taiwan) (http://www.transifex.com/asciimoo/searx/language/zh_TW/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.3.4\n"
+"Generated-By: Babel 2.7.0\n"
"Language: zh_TW\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: searx/search.py:137 searx/search.py:182
-msgid "timeout"
-msgstr "逾時"
-
-#: searx/search.py:144
-msgid "request exception"
-msgstr "請求例外"
-
-#: searx/search.py:151
-msgid "unexpected crash"
-msgstr "未預期的當機"
-
-#: searx/webapp.py:135
+#: searx/webapp.py:150
msgid "files"
msgstr "檔案"
-#: searx/webapp.py:136
+#: searx/webapp.py:151
msgid "general"
msgstr "一般"
-#: searx/webapp.py:137
+#: searx/webapp.py:152
msgid "music"
msgstr "音樂"
-#: searx/webapp.py:138
+#: searx/webapp.py:153
msgid "social media"
msgstr "社群媒體"
-#: searx/webapp.py:139
+#: searx/webapp.py:154
msgid "images"
msgstr "圖片"
-#: searx/webapp.py:140
+#: searx/webapp.py:155
msgid "videos"
msgstr "影片"
-#: searx/webapp.py:141
+#: searx/webapp.py:156
msgid "it"
msgstr "IT"
-#: searx/webapp.py:142
+#: searx/webapp.py:157
msgid "news"
msgstr "新聞"
-#: searx/webapp.py:143
+#: searx/webapp.py:158
msgid "map"
msgstr "地圖"
-#: searx/webapp.py:144
+#: searx/webapp.py:159
msgid "science"
msgstr "科學"
-#: searx/webapp.py:398 searx/webapp.py:653
+#: searx/webapp.py:470 searx/webapp.py:811
msgid "Invalid settings, please edit your preferences"
msgstr "無效的設定,請編輯您的偏好設定"
-#: searx/webapp.py:410
+#: searx/webapp.py:486
msgid "Invalid settings"
msgstr "無效的設定"
-#: searx/webapp.py:444 searx/webapp.py:488
+#: searx/webapp.py:541 searx/webapp.py:588
msgid "search error"
msgstr "搜尋錯誤"
-#: searx/webapp.py:525
+#: searx/webapp.py:634
msgid "{minutes} minute(s) ago"
msgstr "{minutes} 分鐘前"
-#: searx/webapp.py:527
+#: searx/webapp.py:636
msgid "{hours} hour(s), {minutes} minute(s) ago"
msgstr "{hours} 小時 {minutes} 分鐘前"
-#: searx/answerers/random/answerer.py:53
+#: searx/answerers/random/answerer.py:71
msgid "Random value generator"
msgstr "隨機數值產生器"
-#: searx/answerers/random/answerer.py:54
+#: searx/answerers/random/answerer.py:72
msgid "Generate different random values"
msgstr "生成不同的隨機數值"
@@ -110,48 +99,50 @@ msgstr "統計功能"
msgid "Compute {functions} of the arguments"
msgstr "計算 {functions} 參數"
-#: searx/engines/__init__.py:194
+#: searx/engines/__init__.py:227
msgid "Engine time (sec)"
msgstr "引擎時間(秒)"
-#: searx/engines/__init__.py:198
+#: searx/engines/__init__.py:231
msgid "Page loads (sec)"
msgstr "頁面載入(秒)"
-#: searx/engines/__init__.py:202 searx/templates/oscar/results.html:95
-#: searx/templates/simple/results.html:20
+#: searx/engines/__init__.py:235 searx/templates/oscar/results.html:19
+#: searx/templates/simple/results.html:30
msgid "Number of results"
msgstr "結果筆數"
-#: searx/engines/__init__.py:206
+#: searx/engines/__init__.py:239
msgid "Scores"
msgstr "分數"
-#: searx/engines/__init__.py:210
+#: searx/engines/__init__.py:243
msgid "Scores per result"
msgstr "每個結果的分數"
-#: searx/engines/__init__.py:214
+#: searx/engines/__init__.py:247
msgid "Errors"
msgstr "錯誤"
+#: searx/engines/google.py:217 searx/engines/google_images.py:128
+msgid "CAPTCHA required"
+msgstr "需要 CAPTCHA"
+
+#: searx/engines/openstreetmap.py:46
+msgid "Get directions"
+msgstr "取得路線"
+
#: searx/engines/pdbe.py:87
-msgid "{title}&nbsp;(OBSOLETE)"
-msgstr "{title}&nbsp;(已過時)"
+msgid "{title} (OBSOLETE)"
+msgstr "{title} (已過時)"
-#: searx/engines/pdbe.py:91
+#: searx/engines/pdbe.py:94
msgid "This entry has been superseded by"
msgstr "此條目已被取代"
-#: searx/plugins/doai_rewrite.py:7
-msgid "DOAI rewrite"
-msgstr "DOAI 重寫"
-
-#: searx/plugins/doai_rewrite.py:8
-msgid ""
-"Avoid paywalls by redirecting to open-access versions of publications when "
-"available"
-msgstr "盡可能重新導向至出版品的開放存取版本,來避免付費牆"
+#: searx/engines/pubmed.py:74
+msgid "No abstract is available for this publication."
+msgstr "此出版品無可用摘要。"
#: searx/plugins/https_rewrite.py:32
msgid "Rewrite HTTP links to HTTPS if possible"
@@ -165,9 +156,19 @@ msgstr "無限捲動"
msgid "Automatically load next page when scrolling to bottom of current page"
msgstr "當捲動至目前頁面的底部時自動載入下一頁"
+#: searx/plugins/oa_doi_rewrite.py:9
+msgid "Open Access DOI rewrite"
+msgstr "開放存取 DOI 重寫"
+
+#: searx/plugins/oa_doi_rewrite.py:10
+msgid ""
+"Avoid paywalls by redirecting to open-access versions of publications when "
+"available"
+msgstr "盡可能重新導向至出版品的開放存取版本,來避免付費牆"
+
#: searx/plugins/open_results_on_new_tab.py:18
-#: searx/templates/oscar/preferences.html:114
-#: searx/templates/simple/preferences.html:149
+#: searx/templates/oscar/preferences.html:115
+#: searx/templates/simple/preferences.html:148
msgid "Open result links on new browser tabs"
msgstr "在新瀏覽器分頁中開啟結果連結"
@@ -250,7 +251,7 @@ msgstr "關於"
#: searx/templates/legacy/preferences.html:5
#: searx/templates/oscar/preferences.html:8
#: searx/templates/pix-art/preferences.html:5
-#: searx/templates/simple/preferences.html:26
+#: searx/templates/simple/preferences.html:21
msgid "Preferences"
msgstr "偏好設定"
@@ -258,7 +259,7 @@ msgstr "偏好設定"
#: searx/templates/legacy/preferences.html:9
#: searx/templates/oscar/preferences.html:33
#: searx/templates/oscar/preferences.html:35
-#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:29
msgid "Default categories"
msgstr "預設分類"
@@ -266,17 +267,17 @@ msgstr "預設分類"
#: searx/templates/legacy/preferences.html:14
#: searx/templates/oscar/preferences.html:41
#: searx/templates/pix-art/preferences.html:9
-#: searx/templates/simple/preferences.html:39
-#: searx/templates/simple/preferences.html:163
+#: searx/templates/simple/preferences.html:34
+#: searx/templates/simple/preferences.html:194
msgid "Search language"
msgstr "搜尋語言"
#: searx/templates/courgette/preferences.html:16
#: searx/templates/legacy/preferences.html:17
-#: searx/templates/oscar/languages.html:6
+#: searx/templates/oscar/languages.html:3
#: searx/templates/pix-art/preferences.html:12
#: searx/templates/simple/languages.html:2
-#: searx/templates/simple/preferences.html:42
+#: searx/templates/simple/preferences.html:37
msgid "Default language"
msgstr "預設語言"
@@ -284,35 +285,35 @@ msgstr "預設語言"
#: searx/templates/legacy/preferences.html:25
#: searx/templates/oscar/preferences.html:47
#: searx/templates/pix-art/preferences.html:20
-#: searx/templates/simple/preferences.html:120
+#: searx/templates/simple/preferences.html:121
msgid "Interface language"
msgstr "介面語言"
#: searx/templates/courgette/preferences.html:34
#: searx/templates/legacy/preferences.html:35
#: searx/templates/oscar/preferences.html:57
-#: searx/templates/simple/preferences.html:51
+#: searx/templates/simple/preferences.html:44
msgid "Autocomplete"
msgstr "自動完成"
#: searx/templates/courgette/preferences.html:45
#: searx/templates/legacy/preferences.html:46
#: searx/templates/oscar/preferences.html:68
-#: searx/templates/simple/preferences.html:166
+#: searx/templates/simple/preferences.html:197
msgid "Image proxy"
msgstr "圖片代理伺服器"
#: searx/templates/courgette/preferences.html:48
#: searx/templates/legacy/preferences.html:49
#: searx/templates/oscar/preferences.html:72
-#: searx/templates/simple/preferences.html:169
+#: searx/templates/simple/preferences.html:200
msgid "Enabled"
msgstr "已啟用"
#: searx/templates/courgette/preferences.html:49
#: searx/templates/legacy/preferences.html:50
#: searx/templates/oscar/preferences.html:73
-#: searx/templates/simple/preferences.html:170
+#: searx/templates/simple/preferences.html:201
msgid "Disabled"
msgstr "已停用"
@@ -320,38 +321,38 @@ msgstr "已停用"
#: searx/templates/legacy/preferences.html:55
#: searx/templates/oscar/preferences.html:77
#: searx/templates/pix-art/preferences.html:30
-#: searx/templates/simple/preferences.html:156
+#: searx/templates/simple/preferences.html:187
msgid "Method"
msgstr "方法"
#: searx/templates/courgette/preferences.html:63
#: searx/templates/legacy/preferences.html:64
#: searx/templates/oscar/preferences.html:86
-#: searx/templates/oscar/preferences.html:153
-#: searx/templates/oscar/preferences.html:161
-#: searx/templates/simple/preferences.html:63
-#: searx/templates/simple/preferences.html:90
+#: searx/templates/oscar/preferences.html:180
+#: searx/templates/oscar/preferences.html:188
+#: searx/templates/simple/preferences.html:54
+#: searx/templates/simple/preferences.html:91
msgid "SafeSearch"
msgstr "安全搜尋"
#: searx/templates/courgette/preferences.html:66
#: searx/templates/legacy/preferences.html:67
#: searx/templates/oscar/preferences.html:90
-#: searx/templates/simple/preferences.html:66
+#: searx/templates/simple/preferences.html:57
msgid "Strict"
msgstr "嚴格"
#: searx/templates/courgette/preferences.html:67
#: searx/templates/legacy/preferences.html:68
#: searx/templates/oscar/preferences.html:91
-#: searx/templates/simple/preferences.html:67
+#: searx/templates/simple/preferences.html:58
msgid "Moderate"
msgstr "適中"
#: searx/templates/courgette/preferences.html:68
#: searx/templates/legacy/preferences.html:69
#: searx/templates/oscar/preferences.html:92
-#: searx/templates/simple/preferences.html:68
+#: searx/templates/simple/preferences.html:59
msgid "None"
msgstr "無"
@@ -359,7 +360,7 @@ msgstr "無"
#: searx/templates/legacy/preferences.html:74
#: searx/templates/oscar/preferences.html:96
#: searx/templates/pix-art/preferences.html:39
-#: searx/templates/simple/preferences.html:131
+#: searx/templates/simple/preferences.html:132
msgid "Themes"
msgstr "佈景主題"
@@ -394,126 +395,137 @@ msgstr "紅色"
#: searx/templates/courgette/preferences.html:96
#: searx/templates/legacy/preferences.html:93
#: searx/templates/pix-art/preferences.html:49
-#: searx/templates/simple/preferences.html:77
+#: searx/templates/simple/preferences.html:78
msgid "Currently used search engines"
msgstr "目前使用的搜尋引擎"
#: searx/templates/courgette/preferences.html:100
#: searx/templates/legacy/preferences.html:97
-#: searx/templates/oscar/preferences.html:150
-#: searx/templates/oscar/preferences.html:164
+#: searx/templates/oscar/preferences.html:177
+#: searx/templates/oscar/preferences.html:191
#: searx/templates/pix-art/preferences.html:53
-#: searx/templates/simple/preferences.html:87
+#: searx/templates/simple/preferences.html:88
msgid "Engine name"
msgstr "引擎名稱"
#: searx/templates/courgette/preferences.html:101
#: searx/templates/legacy/preferences.html:98
-msgid "Category"
-msgstr "分類"
+#: searx/templates/oscar/preferences.html:178
+#: searx/templates/oscar/preferences.html:190
+#: searx/templates/simple/preferences.html:89
+msgid "Shortcut"
+msgstr "快捷鍵"
#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:113
#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:110
-#: searx/templates/oscar/preferences.html:149
-#: searx/templates/oscar/preferences.html:165
+msgid "Category"
+msgstr "分類"
+
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:115
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:112
+#: searx/templates/oscar/macros.html:72
+#: searx/templates/oscar/preferences.html:176
+#: searx/templates/oscar/preferences.html:192
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:64
-#: searx/templates/simple/preferences.html:86
+#: searx/templates/simple/preferences.html:87
msgid "Allow"
msgstr "允許"
-#: searx/templates/courgette/preferences.html:102
-#: searx/templates/courgette/preferences.html:114
-#: searx/templates/legacy/preferences.html:99
-#: searx/templates/legacy/preferences.html:111
+#: searx/templates/courgette/preferences.html:103
+#: searx/templates/courgette/preferences.html:116
+#: searx/templates/legacy/preferences.html:100
+#: searx/templates/legacy/preferences.html:113
#: searx/templates/pix-art/preferences.html:54
#: searx/templates/pix-art/preferences.html:65
msgid "Block"
msgstr "封鎖"
-#: searx/templates/courgette/preferences.html:122
-#: searx/templates/legacy/preferences.html:119
-#: searx/templates/oscar/preferences.html:285
+#: searx/templates/courgette/preferences.html:124
+#: searx/templates/legacy/preferences.html:121
+#: searx/templates/oscar/preferences.html:314
#: searx/templates/pix-art/preferences.html:73
-#: searx/templates/simple/preferences.html:180
+#: searx/templates/simple/preferences.html:212
msgid ""
"These settings are stored in your cookies, this allows us not to store this "
"data about you."
msgstr "這些設定只會儲存在您的 cookies 中,這樣我們無需也不會存儲關於您的資訊。"
-#: searx/templates/courgette/preferences.html:124
-#: searx/templates/legacy/preferences.html:121
-#: searx/templates/oscar/preferences.html:287
+#: searx/templates/courgette/preferences.html:126
+#: searx/templates/legacy/preferences.html:123
+#: searx/templates/oscar/preferences.html:315
#: searx/templates/pix-art/preferences.html:75
-#: searx/templates/simple/preferences.html:182
+#: searx/templates/simple/preferences.html:214
msgid ""
"These cookies serve your sole convenience, we don't use these cookies to "
"track you."
msgstr "這些 cookies 僅做為提供您方便之用,我們不會使用這些 cookies 來追蹤您。"
-#: searx/templates/courgette/preferences.html:127
-#: searx/templates/legacy/preferences.html:124
-#: searx/templates/oscar/preferences.html:293
+#: searx/templates/courgette/preferences.html:129
+#: searx/templates/legacy/preferences.html:126
+#: searx/templates/oscar/preferences.html:325
#: searx/templates/pix-art/preferences.html:78
-#: searx/templates/simple/preferences.html:185
+#: searx/templates/simple/preferences.html:217
msgid "save"
msgstr "儲存"
-#: searx/templates/courgette/preferences.html:128
-#: searx/templates/legacy/preferences.html:125
-#: searx/templates/oscar/preferences.html:295
-#: searx/templates/simple/preferences.html:186
+#: searx/templates/courgette/preferences.html:130
+#: searx/templates/legacy/preferences.html:127
+#: searx/templates/oscar/preferences.html:327
+#: searx/templates/simple/preferences.html:218
msgid "Reset defaults"
msgstr "重設為預設值"
-#: searx/templates/courgette/preferences.html:129
-#: searx/templates/legacy/preferences.html:126
-#: searx/templates/oscar/preferences.html:294
+#: searx/templates/courgette/preferences.html:131
+#: searx/templates/legacy/preferences.html:128
+#: searx/templates/oscar/preferences.html:326
#: searx/templates/pix-art/preferences.html:79
-#: searx/templates/simple/preferences.html:187
+#: searx/templates/simple/preferences.html:219
msgid "back"
msgstr "返回"
#: searx/templates/courgette/results.html:12
#: searx/templates/legacy/results.html:13
-#: searx/templates/oscar/results.html:136
-#: searx/templates/simple/results.html:58
+#: searx/templates/oscar/results.html:55
+#: searx/templates/simple/results.html:67
msgid "Search URL"
msgstr "搜尋網址"
#: searx/templates/courgette/results.html:16
#: searx/templates/legacy/results.html:17
-#: searx/templates/oscar/results.html:141
-#: searx/templates/simple/results.html:62
+#: searx/templates/oscar/results.html:59
+#: searx/templates/simple/results.html:71
msgid "Download results"
msgstr "下載結果"
#: searx/templates/courgette/results.html:34
#: searx/templates/legacy/results.html:35
-#: searx/templates/simple/results.html:10
+#: searx/templates/simple/results.html:17
msgid "Answers"
msgstr "答案"
#: searx/templates/courgette/results.html:42
-#: searx/templates/legacy/results.html:43
-#: searx/templates/oscar/results.html:116
-#: searx/templates/simple/results.html:42
+#: searx/templates/legacy/results.html:47
+#: searx/templates/oscar/results.html:36
+#: searx/templates/simple/results.html:49
msgid "Suggestions"
msgstr "建議"
#: searx/templates/courgette/results.html:70
-#: searx/templates/legacy/results.html:81
-#: searx/templates/oscar/results.html:68 searx/templates/oscar/results.html:78
-#: searx/templates/simple/results.html:130
+#: searx/templates/legacy/results.html:85
+#: searx/templates/oscar/results.html:122
+#: searx/templates/oscar/results.html:131
+#: searx/templates/simple/results.html:142
msgid "previous page"
msgstr "上一頁"
#: searx/templates/courgette/results.html:81
-#: searx/templates/legacy/results.html:92
-#: searx/templates/oscar/results.html:62 searx/templates/oscar/results.html:84
-#: searx/templates/simple/results.html:145
+#: searx/templates/legacy/results.html:96
+#: searx/templates/oscar/results.html:117
+#: searx/templates/oscar/results.html:136
+#: searx/templates/simple/results.html:158
msgid "next page"
msgstr "下一頁"
@@ -552,132 +564,149 @@ msgstr "接收者"
#: searx/templates/courgette/result_templates/torrent.html:9
#: searx/templates/legacy/result_templates/torrent.html:9
-#: searx/templates/oscar/macros.html:23
+#: searx/templates/oscar/macros.html:17
#: searx/templates/simple/result_templates/torrent.html:6
msgid "magnet link"
msgstr "磁力連結"
#: searx/templates/courgette/result_templates/torrent.html:10
#: searx/templates/legacy/result_templates/torrent.html:10
-#: searx/templates/oscar/macros.html:24
+#: searx/templates/oscar/macros.html:18
#: searx/templates/simple/result_templates/torrent.html:7
msgid "torrent file"
msgstr "torrent 檔案"
#: searx/templates/legacy/categories.html:8
-#: searx/templates/simple/categories.html:6
+#: searx/templates/simple/categories.html:4
msgid "Click on the magnifier to perform search"
msgstr "在磁鐵上點選以執行搜尋"
#: searx/templates/legacy/preferences.html:84
-#: searx/templates/oscar/preferences.html:113
-#: searx/templates/simple/preferences.html:142
+#: searx/templates/oscar/preferences.html:114
+#: searx/templates/simple/preferences.html:141
msgid "Results on new tabs"
msgstr "在新分頁開啟結果"
#: searx/templates/legacy/preferences.html:87
-#: searx/templates/oscar/preferences.html:117
-#: searx/templates/simple/preferences.html:145
+#: searx/templates/oscar/preferences.html:118
+#: searx/templates/simple/preferences.html:144
msgid "On"
msgstr "開啟"
#: searx/templates/legacy/preferences.html:88
-#: searx/templates/oscar/preferences.html:118
-#: searx/templates/simple/preferences.html:146
+#: searx/templates/oscar/preferences.html:119
+#: searx/templates/simple/preferences.html:145
msgid "Off"
msgstr "關閉"
#: searx/templates/legacy/result_templates/code.html:3
#: searx/templates/legacy/result_templates/default.html:3
#: searx/templates/legacy/result_templates/map.html:9
-#: searx/templates/oscar/macros.html:34 searx/templates/oscar/macros.html:48
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/macros.html:26 searx/templates/oscar/macros.html:38
+#: searx/templates/simple/macros.html:28
msgid "cached"
msgstr "已快取"
-#: searx/templates/oscar/advanced.html:4
+#: searx/templates/oscar/advanced.html:3
msgid "Advanced settings"
msgstr "進階設定"
-#: searx/templates/oscar/base.html:62
+#: searx/templates/oscar/base.html:55
#: searx/templates/oscar/messages/first_time.html:4
#: searx/templates/oscar/messages/save_settings_successfull.html:5
#: searx/templates/oscar/messages/unknow_error.html:5
msgid "Close"
msgstr "關閉"
-#: searx/templates/oscar/base.html:64
+#: searx/templates/oscar/base.html:57
#: searx/templates/oscar/messages/no_results.html:4
#: searx/templates/simple/messages/no_results.html:4
-#: searx/templates/simple/results.html:25
+#: searx/templates/simple/results.html:34
msgid "Error!"
msgstr "錯誤!"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "Powered by"
msgstr "技術支援"
-#: searx/templates/oscar/base.html:90 searx/templates/simple/base.html:55
+#: searx/templates/oscar/base.html:85 searx/templates/simple/base.html:54
msgid "a privacy-respecting, hackable metasearch engine"
msgstr "一個尊重隱私,可再開發的集合式搜尋引擎"
-#: searx/templates/oscar/macros.html:36 searx/templates/oscar/macros.html:50
-#: searx/templates/simple/macros.html:43
+#: searx/templates/oscar/base.html:86 searx/templates/simple/base.html:55
+msgid "Source code"
+msgstr "原始碼"
+
+#: searx/templates/oscar/base.html:87 searx/templates/simple/base.html:56
+msgid "Issue tracker"
+msgstr "議題追蹤程式"
+
+#: searx/templates/oscar/base.html:88 searx/templates/simple/base.html:57
+msgid "Public instances"
+msgstr "公開站臺"
+
+#: searx/templates/oscar/languages.html:1
+msgid "Language"
+msgstr "語言"
+
+#: searx/templates/oscar/macros.html:28 searx/templates/oscar/macros.html:40
+#: searx/templates/simple/macros.html:28
msgid "proxied"
msgstr "已代理"
-#: searx/templates/oscar/macros.html:92
+#: searx/templates/oscar/macros.html:78
msgid "supported"
msgstr "支援"
-#: searx/templates/oscar/macros.html:96
+#: searx/templates/oscar/macros.html:82
msgid "not supported"
msgstr "不支援"
#: searx/templates/oscar/preferences.html:13
#: searx/templates/oscar/preferences.html:22
-#: searx/templates/simple/preferences.html:32
+#: searx/templates/simple/preferences.html:27
msgid "General"
msgstr "一般"
#: searx/templates/oscar/preferences.html:14
-#: searx/templates/oscar/preferences.html:134
-#: searx/templates/simple/preferences.html:76
+#: searx/templates/oscar/preferences.html:153
+#: searx/templates/simple/preferences.html:77
msgid "Engines"
msgstr "引擎"
#: searx/templates/oscar/preferences.html:15
-#: searx/templates/oscar/preferences.html:207
+#: searx/templates/oscar/preferences.html:234
msgid "Plugins"
msgstr "外掛程式"
#: searx/templates/oscar/preferences.html:16
-#: searx/templates/oscar/preferences.html:233
+#: searx/templates/oscar/preferences.html:260
msgid "Answerers"
msgstr "答案"
#: searx/templates/oscar/preferences.html:17
-#: searx/templates/oscar/preferences.html:260
+#: searx/templates/oscar/preferences.html:287
+#: searx/templates/simple/preferences.html:153
msgid "Cookies"
msgstr "Cookies"
#: searx/templates/oscar/preferences.html:42
-#: searx/templates/simple/preferences.html:48
+#: searx/templates/simple/preferences.html:41
msgid "What language do you prefer for search?"
msgstr "您偏好用哪種語言搜尋?"
#: searx/templates/oscar/preferences.html:48
-#: searx/templates/simple/preferences.html:128
+#: searx/templates/simple/preferences.html:129
msgid "Change the language of the layout"
msgstr "變更佈局的語言"
#: searx/templates/oscar/preferences.html:58
-#: searx/templates/simple/preferences.html:60
+#: searx/templates/simple/preferences.html:51
msgid "Find stuff as you type"
msgstr "隨打即找"
#: searx/templates/oscar/preferences.html:69
-#: searx/templates/simple/preferences.html:173
+#: searx/templates/simple/preferences.html:204
msgid "Proxying image results through searx"
msgstr "透過 searx 代理圖片結果"
@@ -689,152 +718,196 @@ msgid ""
msgstr "變更遞交形式,<a href=\"https://zh.wikipedia.org/wiki/超文本传输协议#请求方法\" rel=\"external\">看看更多關於請求方法的介紹</a>"
#: searx/templates/oscar/preferences.html:87
-#: searx/templates/simple/preferences.html:71
+#: searx/templates/simple/preferences.html:62
msgid "Filter content"
msgstr "過濾內容"
#: searx/templates/oscar/preferences.html:97
-#: searx/templates/simple/preferences.html:139
+#: searx/templates/simple/preferences.html:138
msgid "Change searx layout"
msgstr "變更 searx 佈局"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Choose style for this theme"
msgstr "選擇這個主題的樣式"
#: searx/templates/oscar/preferences.html:106
-#: searx/templates/oscar/preferences.html:111
+#: searx/templates/oscar/preferences.html:112
msgid "Style"
msgstr "樣式"
-#: searx/templates/oscar/preferences.html:151
-#: searx/templates/oscar/preferences.html:163
-#: searx/templates/simple/preferences.html:88
-msgid "Shortcut"
-msgstr "快捷鍵"
+#: searx/templates/oscar/preferences.html:123
+#: searx/templates/simple/preferences.html:66
+msgid "Open Access DOI resolver"
+msgstr "開放存取 DOI 解析器"
+
+#: searx/templates/oscar/preferences.html:124
+#: searx/templates/simple/preferences.html:73
+msgid ""
+"Redirect to open-access versions of publications when available (plugin "
+"required)"
+msgstr "盡可能重新導向至出版品的開放存取版本(需要外掛程式)"
+
+#: searx/templates/oscar/preferences.html:135
+msgid "Engine tokens"
+msgstr "引擎權杖"
+
+#: searx/templates/oscar/preferences.html:136
+msgid "Access tokens for private engines"
+msgstr "私人引擎的存取權杖"
+
+#: searx/templates/oscar/preferences.html:161
+msgid "Allow all"
+msgstr "允許全部"
-#: searx/templates/oscar/preferences.html:152
#: searx/templates/oscar/preferences.html:162
+msgid "Disable all"
+msgstr "停用全部"
+
+#: searx/templates/oscar/preferences.html:179
+#: searx/templates/oscar/preferences.html:189
msgid "Selected language"
msgstr "已選取的語言"
-#: searx/templates/oscar/preferences.html:154
-#: searx/templates/oscar/preferences.html:160
-#: searx/templates/simple/preferences.html:91
+#: searx/templates/oscar/preferences.html:181
+#: searx/templates/oscar/preferences.html:187
+#: searx/templates/oscar/time-range.html:1
+#: searx/templates/simple/preferences.html:92
msgid "Time range"
msgstr "時間範圍"
-#: searx/templates/oscar/preferences.html:155
-#: searx/templates/oscar/preferences.html:159
-#: searx/templates/simple/preferences.html:92
+#: searx/templates/oscar/preferences.html:182
+#: searx/templates/oscar/preferences.html:186
+#: searx/templates/simple/preferences.html:93
msgid "Avg. time"
msgstr "平均時間"
-#: searx/templates/oscar/preferences.html:156
-#: searx/templates/oscar/preferences.html:158
-#: searx/templates/simple/preferences.html:93
+#: searx/templates/oscar/preferences.html:183
+#: searx/templates/oscar/preferences.html:185
+#: searx/templates/simple/preferences.html:94
msgid "Max time"
msgstr "最大時間"
-#: searx/templates/oscar/preferences.html:236
+#: searx/templates/oscar/preferences.html:263
msgid "This is the list of searx's instant answering modules."
msgstr "這是 searx 的即時回覆模組清單。"
-#: searx/templates/oscar/preferences.html:240
+#: searx/templates/oscar/preferences.html:267
msgid "Name"
msgstr "名稱"
-#: searx/templates/oscar/preferences.html:241
+#: searx/templates/oscar/preferences.html:268
msgid "Keywords"
msgstr "關鍵字"
-#: searx/templates/oscar/preferences.html:242
+#: searx/templates/oscar/preferences.html:269
msgid "Description"
msgstr "描述"
-#: searx/templates/oscar/preferences.html:243
+#: searx/templates/oscar/preferences.html:270
msgid "Examples"
msgstr "範例"
-#: searx/templates/oscar/preferences.html:263
+#: searx/templates/oscar/preferences.html:290
+#: searx/templates/simple/preferences.html:156
msgid ""
"This is the list of cookies and their values searx is storing on your "
"computer."
msgstr "這是 searx 儲存在您電腦上的 cookies 與它們的值的清單。"
-#: searx/templates/oscar/preferences.html:264
+#: searx/templates/oscar/preferences.html:291
+#: searx/templates/simple/preferences.html:157
msgid "With that list, you can assess searx transparency."
msgstr "有了這份清單,您就可以評估 searx 的透明度。"
-#: searx/templates/oscar/preferences.html:269
+#: searx/templates/oscar/preferences.html:296
+#: searx/templates/simple/preferences.html:163
msgid "Cookie name"
msgstr "Cookie 名稱"
-#: searx/templates/oscar/preferences.html:270
+#: searx/templates/oscar/preferences.html:297
+#: searx/templates/simple/preferences.html:164
msgid "Value"
msgstr "值"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:319
+#: searx/templates/simple/preferences.html:177
msgid "Search URL of the currently saved preferences"
msgstr "目前偏好設定的搜尋 URL"
-#: searx/templates/oscar/preferences.html:289
+#: searx/templates/oscar/preferences.html:320
+#: searx/templates/simple/preferences.html:181
msgid ""
"Note: specifying custom settings in the search URL can reduce privacy by "
"leaking data to the clicked result sites."
msgstr "注意:在搜尋 URL 中指定自訂的設定可能會降低隱私,因為會洩漏資料給點選的結果頁面。"
-#: searx/templates/oscar/results.html:17
-msgid "Search results"
-msgstr "搜尋結果"
-
-#: searx/templates/oscar/results.html:21
-#: searx/templates/simple/results.html:84
-msgid "Try searching for:"
-msgstr "嘗試搜尋:"
-
-#: searx/templates/oscar/results.html:100
-#: searx/templates/simple/results.html:25
+#: searx/templates/oscar/results.html:23
+#: searx/templates/simple/results.html:34
msgid "Engines cannot retrieve results"
msgstr "引擎無法擷取結果"
-#: searx/templates/oscar/results.html:131
+#: searx/templates/oscar/results.html:50
msgid "Links"
msgstr "連結"
+#: searx/templates/oscar/results.html:68
+msgid "RSS subscription"
+msgstr "RSS 訂閱"
+
+#: searx/templates/oscar/results.html:75
+msgid "Search results"
+msgstr "搜尋結果"
+
+#: searx/templates/oscar/results.html:79
+#: searx/templates/simple/results.html:94
+msgid "Try searching for:"
+msgstr "嘗試搜尋:"
+
#: searx/templates/oscar/search.html:8
#: searx/templates/oscar/search_full.html:11
-#: searx/templates/simple/search.html:5
+#: searx/templates/simple/search.html:6
msgid "Start search"
msgstr "開始搜尋"
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+#: searx/templates/simple/search.html:5
+msgid "Clear search"
+msgstr "清除搜尋"
+
+#: searx/templates/oscar/search.html:9
+#: searx/templates/oscar/search_full.html:12
+msgid "Clear"
+msgstr "清除"
+
#: searx/templates/oscar/stats.html:2
msgid "stats"
msgstr "統計"
#: searx/templates/oscar/time-range.html:3
-#: searx/templates/simple/time-range.html:3
+#: searx/templates/simple/time-range.html:2
msgid "Anytime"
msgstr "任何時間"
-#: searx/templates/oscar/time-range.html:6
-#: searx/templates/simple/time-range.html:6
+#: searx/templates/oscar/time-range.html:5
+#: searx/templates/simple/time-range.html:4
msgid "Last day"
msgstr "一天內"
-#: searx/templates/oscar/time-range.html:9
-#: searx/templates/simple/time-range.html:9
+#: searx/templates/oscar/time-range.html:7
+#: searx/templates/simple/time-range.html:6
msgid "Last week"
msgstr "一週內"
-#: searx/templates/oscar/time-range.html:12
-#: searx/templates/simple/time-range.html:12
+#: searx/templates/oscar/time-range.html:9
+#: searx/templates/simple/time-range.html:8
msgid "Last month"
msgstr "一個月內"
-#: searx/templates/oscar/time-range.html:15
-#: searx/templates/simple/time-range.html:15
+#: searx/templates/oscar/time-range.html:11
+#: searx/templates/simple/time-range.html:10
msgid "Last year"
msgstr "一年內"
@@ -897,21 +970,21 @@ msgstr "糟糕!"
msgid "Something went wrong."
msgstr "發生了一點問題。"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "show media"
msgstr "顯示媒體"
-#: searx/templates/oscar/result_templates/default.html:7
+#: searx/templates/oscar/result_templates/default.html:5
#: searx/templates/simple/result_templates/default.html:6
msgid "hide media"
msgstr "隱藏媒體"
-#: searx/templates/oscar/result_templates/images.html:30
+#: searx/templates/oscar/result_templates/images.html:26
msgid "Get image"
msgstr "取得圖片"
-#: searx/templates/oscar/result_templates/images.html:33
+#: searx/templates/oscar/result_templates/images.html:29
msgid "View source"
msgstr "檢視來源"
@@ -926,47 +999,47 @@ msgid "hide map"
msgstr "隱藏地圖"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "show details"
msgstr "顯示詳情"
#: searx/templates/oscar/result_templates/map.html:11
-#: searx/templates/simple/result_templates/map.html:11
+#: searx/templates/simple/result_templates/map.html:10
msgid "hide details"
msgstr "隱藏詳情"
#: searx/templates/oscar/result_templates/torrent.html:7
-#: searx/templates/simple/result_templates/torrent.html:11
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Filesize"
msgstr "檔案大小"
#: searx/templates/oscar/result_templates/torrent.html:9
-#: searx/templates/simple/result_templates/torrent.html:12
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "Bytes"
msgstr "位元組"
#: searx/templates/oscar/result_templates/torrent.html:10
-#: searx/templates/simple/result_templates/torrent.html:13
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "kiB"
msgstr "kiB"
#: searx/templates/oscar/result_templates/torrent.html:11
-#: searx/templates/simple/result_templates/torrent.html:14
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "MiB"
msgstr "MiB"
#: searx/templates/oscar/result_templates/torrent.html:12
-#: searx/templates/simple/result_templates/torrent.html:15
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "GiB"
msgstr "GiB"
#: searx/templates/oscar/result_templates/torrent.html:13
-#: searx/templates/simple/result_templates/torrent.html:16
+#: searx/templates/simple/result_templates/torrent.html:9
msgid "TiB"
msgstr "TiB"
#: searx/templates/oscar/result_templates/torrent.html:15
-#: searx/templates/simple/result_templates/torrent.html:20
+#: searx/templates/simple/result_templates/torrent.html:12
msgid "Number of Files"
msgstr "檔案數量"
@@ -980,22 +1053,34 @@ msgstr "顯示影片"
msgid "hide video"
msgstr "隱藏影片"
+#: searx/templates/oscar/result_templates/videos.html:19
+msgid "Author"
+msgstr "作者"
+
+#: searx/templates/oscar/result_templates/videos.html:20
+msgid "Length"
+msgstr "長度"
+
#: searx/templates/pix-art/results.html:28
msgid "Load more..."
msgstr "載入更多……"
-#: searx/templates/simple/base.html:31
+#: searx/templates/simple/base.html:29
msgid "No item found"
msgstr "找不到項目"
-#: searx/templates/simple/preferences.html:89
+#: searx/templates/simple/preferences.html:90
msgid "Supports selected language"
msgstr "支援選定的語言"
-#: searx/templates/simple/preferences.html:118
+#: searx/templates/simple/preferences.html:119
msgid "User interface"
msgstr "使用者介面"
-#: searx/templates/simple/preferences.html:154
+#: searx/templates/simple/preferences.html:185
msgid "Privacy"
msgstr "隱私"
+
+#: searx/templates/simple/result_templates/map.html:35
+msgid "Loading..."
+msgstr "正在載入……"
diff --git a/searx/url_utils.py b/searx/url_utils.py
deleted file mode 100644
index dcafc3b..0000000
--- a/searx/url_utils.py
+++ /dev/null
@@ -1,30 +0,0 @@
-from sys import version_info
-
-if version_info[0] == 2:
- from urllib import quote, quote_plus, unquote, urlencode
- from urlparse import parse_qs, parse_qsl, urljoin, urlparse, urlunparse, ParseResult
-else:
- from urllib.parse import (
- parse_qs,
- parse_qsl,
- quote,
- quote_plus,
- unquote,
- urlencode,
- urljoin,
- urlparse,
- urlunparse,
- ParseResult
- )
-
-
-__export__ = (parse_qs,
- parse_qsl,
- quote,
- quote_plus,
- unquote,
- urlencode,
- urljoin,
- urlparse,
- urlunparse,
- ParseResult)
diff --git a/searx/utils.py b/searx/utils.py
index 5ea9dc8..c60edf3 100644
--- a/searx/utils.py
+++ b/searx/utils.py
@@ -1,45 +1,26 @@
# -*- coding: utf-8 -*-
-import csv
-import hashlib
-import hmac
-import os
+import sys
import re
+import importlib
-from babel.core import get_global
-from babel.dates import format_date
-from codecs import getincrementalencoder
-from imp import load_source
from numbers import Number
from os.path import splitext, join
-from io import open
from random import choice
-from lxml.etree import XPath
-import sys
-import json
+from html.parser import HTMLParser
+from urllib.parse import urljoin, urlparse, urlunparse
+
+from lxml import html
+from lxml.etree import ElementBase, XPath, XPathError, XPathSyntaxError, _ElementStringResult, _ElementUnicodeResult
+from babel.core import get_global
+
from searx import settings
+from searx.data import USER_AGENTS
from searx.version import VERSION_STRING
from searx.languages import language_codes
-from searx import settings
+from searx.exceptions import SearxXPathSyntaxException, SearxEngineXPathException
from searx import logger
-try:
- from cStringIO import StringIO
-except:
- from io import StringIO
-
-try:
- from HTMLParser import HTMLParser
-except:
- from html.parser import HTMLParser
-
-if sys.version_info[0] == 3:
- unichr = chr
- unicode = str
- IS_PY2 = False
- basestring = str
-else:
- IS_PY2 = True
logger = logger.getChild('utils')
@@ -49,52 +30,37 @@ blocked_tags = ('script',
ecma_unescape4_re = re.compile(r'%u([0-9a-fA-F]{4})', re.UNICODE)
ecma_unescape2_re = re.compile(r'%([0-9a-fA-F]{2})', re.UNICODE)
-useragents = json.loads(open(os.path.dirname(os.path.realpath(__file__))
- + "/data/useragents.json", 'r', encoding='utf-8').read())
-
xpath_cache = dict()
lang_to_lc_cache = dict()
+class NotSetClass:
+ pass
+
+
+NOTSET = NotSetClass()
+
+
def searx_useragent():
+ """Return the searx User Agent"""
return 'searx/{searx_version} {suffix}'.format(
searx_version=VERSION_STRING,
suffix=settings['outgoing'].get('useragent_suffix', ''))
def gen_useragent(os=None):
- return str(useragents['ua'].format(os=os or choice(useragents['os']), version=choice(useragents['versions'])))
-
+ """Return a random browser User Agent
-def highlight_content(content, query):
+ See searx/data/useragents.json
+ """
+ return str(USER_AGENTS['ua'].format(os=os or choice(USER_AGENTS['os']), version=choice(USER_AGENTS['versions'])))
- if not content:
- return None
- # ignoring html contents
- # TODO better html content detection
- if content.find('<') != -1:
- return content
-
- query = query.decode('utf-8')
- if content.lower().find(query.lower()) > -1:
- query_regex = u'({0})'.format(re.escape(query))
- content = re.sub(query_regex, '<span class="highlight">\\1</span>',
- content, flags=re.I | re.U)
- else:
- regex_parts = []
- for chunk in query.split():
- if len(chunk) == 1:
- regex_parts.append(u'\\W+{0}\\W+'.format(re.escape(chunk)))
- else:
- regex_parts.append(u'{0}'.format(re.escape(chunk)))
- query_regex = u'({0})'.format('|'.join(regex_parts))
- content = re.sub(query_regex, '<span class="highlight">\\1</span>',
- content, flags=re.I | re.U)
- return content
+class HTMLTextExtractorException(Exception):
+ pass
-class HTMLTextExtractor(HTMLParser):
+class HTMLTextExtractor(HTMLParser): # pylint: disable=W0223 # (see https://bugs.python.org/issue31844)
def __init__(self):
HTMLParser.__init__(self)
@@ -109,164 +75,222 @@ class HTMLTextExtractor(HTMLParser):
return
if tag != self.tags[-1]:
- raise Exception("invalid html")
+ raise HTMLTextExtractorException()
self.tags.pop()
def is_valid_tag(self):
return not self.tags or self.tags[-1] not in blocked_tags
- def handle_data(self, d):
+ def handle_data(self, data):
if not self.is_valid_tag():
return
- self.result.append(d)
+ self.result.append(data)
- def handle_charref(self, number):
+ def handle_charref(self, name):
if not self.is_valid_tag():
return
- if number[0] in (u'x', u'X'):
- codepoint = int(number[1:], 16)
+ if name[0] in ('x', 'X'):
+ codepoint = int(name[1:], 16)
else:
- codepoint = int(number)
- self.result.append(unichr(codepoint))
+ codepoint = int(name)
+ self.result.append(chr(codepoint))
def handle_entityref(self, name):
if not self.is_valid_tag():
return
# codepoint = htmlentitydefs.name2codepoint[name]
- # self.result.append(unichr(codepoint))
+ # self.result.append(chr(codepoint))
self.result.append(name)
def get_text(self):
- return u''.join(self.result).strip()
+ return ''.join(self.result).strip()
-def html_to_text(html):
- html = html.replace('\n', ' ')
- html = ' '.join(html.split())
- s = HTMLTextExtractor()
- s.feed(html)
- return s.get_text()
+def html_to_text(html_str):
+ """Extract text from a HTML string
+ Args:
+ * html_str (str): string HTML
-class UnicodeWriter:
- """
- A CSV writer which will write rows to CSV file "f",
- which is encoded in the given encoding.
- """
-
- def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds):
- # Redirect output to a queue
- self.queue = StringIO()
- self.writer = csv.writer(self.queue, dialect=dialect, **kwds)
- self.stream = f
- self.encoder = getincrementalencoder(encoding)()
-
- def writerow(self, row):
- if IS_PY2:
- row = [s.encode("utf-8") if hasattr(s, 'encode') else s for s in row]
- self.writer.writerow(row)
- # Fetch UTF-8 output from the queue ...
- data = self.queue.getvalue()
- if IS_PY2:
- data = data.decode("utf-8")
- else:
- data = data.strip('\x00')
- # ... and reencode it into the target encoding
- data = self.encoder.encode(data)
- # write to the target stream
- if IS_PY2:
- self.stream.write(data)
- else:
- self.stream.write(data.decode("utf-8"))
- # empty queue
- self.queue.truncate(0)
-
- def writerows(self, rows):
- for row in rows:
- self.writerow(row)
-
-
-def get_resources_directory(searx_directory, subdirectory, resources_directory):
- if not resources_directory:
- resources_directory = os.path.join(searx_directory, subdirectory)
- if not os.path.isdir(resources_directory):
- raise Exception(resources_directory + " is not a directory")
- return resources_directory
-
-
-def get_themes(templates_path):
- """Returns available themes list."""
- themes = os.listdir(templates_path)
- if '__common__' in themes:
- themes.remove('__common__')
- return themes
-
-
-def get_static_files(static_path):
- static_files = set()
- static_path_length = len(static_path) + 1
- for directory, _, files in os.walk(static_path):
- for filename in files:
- f = os.path.join(directory[static_path_length:], filename)
- static_files.add(f)
- return static_files
-
-
-def get_result_templates(templates_path):
- result_templates = set()
- templates_path_length = len(templates_path) + 1
- for directory, _, files in os.walk(templates_path):
- if directory.endswith('result_templates'):
- for filename in files:
- f = os.path.join(directory[templates_path_length:], filename)
- result_templates.add(f)
- return result_templates
+ Returns:
+ * str: extracted text
+ Examples:
+ >>> html_to_text('Example <span id="42">#2</span>')
+ 'Example #2'
-def format_date_by_locale(date, locale_string):
- # strftime works only on dates after 1900
+ >>> html_to_text('<style>.span { color: red; }</style><span>Example</span>')
+ 'Example'
+ """
+ html_str = html_str.replace('\n', ' ')
+ html_str = ' '.join(html_str.split())
+ s = HTMLTextExtractor()
+ try:
+ s.feed(html_str)
+ except HTMLTextExtractorException:
+ logger.debug("HTMLTextExtractor: invalid HTML\n%s", html_str)
+ return s.get_text()
- if date.year <= 1900:
- return date.isoformat().split('T')[0]
- if locale_string == 'all':
- locale_string = settings['ui']['default_locale'] or 'en_US'
+def extract_text(xpath_results, allow_none=False):
+ """Extract text from a lxml result
- # to avoid crashing if locale is not supported by babel
- try:
- formatted_date = format_date(date, locale=locale_string)
- except:
- formatted_date = format_date(date, "YYYY-MM-dd")
+ * if xpath_results is list, extract the text from each result and concat the list
+ * if xpath_results is a xml element, extract all the text node from it
+ ( text_content() method from lxml )
+ * if xpath_results is a string element, then it's already done
+ """
+ if isinstance(xpath_results, list):
+ # it's list of result : concat everything using recursive call
+ result = ''
+ for e in xpath_results:
+ result = result + extract_text(e)
+ return result.strip()
+ elif isinstance(xpath_results, ElementBase):
+ # it's a element
+ text = html.tostring(
+ xpath_results, encoding='unicode', method='text', with_tail=False
+ )
+ text = text.strip().replace('\n', ' ')
+ return ' '.join(text.split())
+ elif isinstance(xpath_results, (_ElementStringResult, _ElementUnicodeResult, str, Number, bool)):
+ return str(xpath_results)
+ elif xpath_results is None and allow_none:
+ return None
+ elif xpath_results is None and not allow_none:
+ raise ValueError('extract_text(None, allow_none=False)')
+ else:
+ raise ValueError('unsupported type')
+
+
+def normalize_url(url, base_url):
+ """Normalize URL: add protocol, join URL with base_url, add trailing slash if there is no path
+
+ Args:
+ * url (str): Relative URL
+ * base_url (str): Base URL, it must be an absolute URL.
+
+ Example:
+ >>> normalize_url('https://example.com', 'http://example.com/')
+ 'https://example.com/'
+ >>> normalize_url('//example.com', 'http://example.com/')
+ 'http://example.com/'
+ >>> normalize_url('//example.com', 'https://example.com/')
+ 'https://example.com/'
+ >>> normalize_url('/path?a=1', 'https://example.com')
+ 'https://example.com/path?a=1'
+ >>> normalize_url('', 'https://example.com')
+ 'https://example.com/'
+ >>> normalize_url('/test', '/path')
+ raise ValueError
+
+ Raises:
+ * lxml.etree.ParserError
+
+ Returns:
+ * str: normalized URL
+ """
+ if url.startswith('//'):
+ # add http or https to this kind of url //example.com/
+ parsed_search_url = urlparse(base_url)
+ url = '{0}:{1}'.format(parsed_search_url.scheme or 'http', url)
+ elif url.startswith('/'):
+ # fix relative url to the search engine
+ url = urljoin(base_url, url)
+
+ # fix relative urls that fall through the crack
+ if '://' not in url:
+ url = urljoin(base_url, url)
+
+ parsed_url = urlparse(url)
+
+ # add a / at this end of the url if there is no path
+ if not parsed_url.netloc:
+ raise ValueError('Cannot parse url')
+ if not parsed_url.path:
+ url += '/'
+
+ return url
+
+
+def add_scheme_to_url(url, scheme="https"):
+ """Add schema to URL: if scheme is missing from the URL, then add it."""
+
+ parsed = urlparse(url)
+ if parsed.scheme == '':
+ parsed_with_scheme = parsed._replace(scheme=scheme)
+ return urlunparse(parsed_with_scheme)
+ return url
+
+
+def extract_url(xpath_results, base_url):
+ """Extract and normalize URL from lxml Element
+
+ Args:
+ * xpath_results (Union[List[html.HtmlElement], html.HtmlElement]): lxml Element(s)
+ * base_url (str): Base URL
+
+ Example:
+ >>> def f(s, search_url):
+ >>> return searx.utils.extract_url(html.fromstring(s), search_url)
+ >>> f('<span id="42">https://example.com</span>', 'http://example.com/')
+ 'https://example.com/'
+ >>> f('https://example.com', 'http://example.com/')
+ 'https://example.com/'
+ >>> f('//example.com', 'http://example.com/')
+ 'http://example.com/'
+ >>> f('//example.com', 'https://example.com/')
+ 'https://example.com/'
+ >>> f('/path?a=1', 'https://example.com')
+ 'https://example.com/path?a=1'
+ >>> f('', 'https://example.com')
+ raise lxml.etree.ParserError
+ >>> searx.utils.extract_url([], 'https://example.com')
+ raise ValueError
+
+ Raises:
+ * ValueError
+ * lxml.etree.ParserError
+
+ Returns:
+ * str: normalized URL
+ """
+ if xpath_results == []:
+ raise ValueError('Empty url resultset')
- return formatted_date
+ url = extract_text(xpath_results)
+ return normalize_url(url, base_url)
def dict_subset(d, properties):
- result = {}
- for k in properties:
- if k in d:
- result[k] = d[k]
- return result
+ """Extract a subset of a dict
+ Examples:
+ >>> dict_subset({'A': 'a', 'B': 'b', 'C': 'c'}, ['A', 'C'])
+ {'A': 'a', 'C': 'c'}
+ >>> >> dict_subset({'A': 'a', 'B': 'b', 'C': 'c'}, ['A', 'D'])
+ {'A': 'a'}
+ """
+ return {k: d[k] for k in properties if k in d}
-def prettify_url(url, max_length=74):
- if len(url) > max_length:
- chunk_len = int(max_length / 2 + 1)
- return u'{0}[...]{1}'.format(url[:chunk_len], url[-chunk_len:])
- else:
- return url
+def get_torrent_size(filesize, filesize_multiplier):
+ """
-# get element in list or default value
-def list_get(a_list, index, default=None):
- if len(a_list) > index:
- return a_list[index]
- else:
- return default
+ Args:
+ * filesize (str): size
+ * filesize_multiplier (str): TB, GB, .... TiB, GiB...
+ Returns:
+ * int: number of bytes
-def get_torrent_size(filesize, filesize_multiplier):
+ Example:
+ >>> get_torrent_size('5', 'GB')
+ 5368709120
+ >>> get_torrent_size('3.14', 'MiB')
+ 3140000
+ """
try:
filesize = float(filesize)
@@ -286,21 +310,25 @@ def get_torrent_size(filesize, filesize_multiplier):
filesize = int(filesize * 1000 * 1000)
elif filesize_multiplier == 'KiB':
filesize = int(filesize * 1000)
- except:
+ except ValueError:
filesize = None
return filesize
def convert_str_to_int(number_str):
+ """Convert number_str to int or 0 if number_str is not a number."""
if number_str.isdigit():
return int(number_str)
else:
return 0
-# convert a variable to integer or return 0 if it's not a number
def int_or_zero(num):
+ """Convert num to int or 0. num can be either a str or a list.
+ If num is a list, the first element is converted to int (or return 0 if the list is empty).
+ If num is a str, see convert_str_to_int
+ """
if isinstance(num, list):
if len(num) < 1:
return 0
@@ -309,8 +337,26 @@ def int_or_zero(num):
def is_valid_lang(lang):
+ """Return language code and name if lang describe a language.
+
+ Examples:
+ >>> is_valid_lang('zz')
+ False
+ >>> is_valid_lang('uk')
+ (True, 'uk', 'ukrainian')
+ >>> is_valid_lang(b'uk')
+ (True, 'uk', 'ukrainian')
+ >>> is_valid_lang('en')
+ (True, 'en', 'english')
+ >>> searx.utils.is_valid_lang('Español')
+ (True, 'es', 'spanish')
+ >>> searx.utils.is_valid_lang('Spanish')
+ (True, 'es', 'spanish')
+ """
+ if isinstance(lang, bytes):
+ lang = lang.decode()
is_abbr = (len(lang) == 2)
- lang = lang.lower().decode('utf-8')
+ lang = lang.lower()
if is_abbr:
for l in language_codes:
if l[0][:2] == lang:
@@ -334,8 +380,8 @@ def _get_lang_to_lc_dict(lang_list):
return value
-# auxiliary function to match lang_code in lang_list
-def _match_language(lang_code, lang_list=[], custom_aliases={}):
+def _match_language(lang_code, lang_list=[], custom_aliases={}): # pylint: disable=W0102
+ """auxiliary function to match lang_code in lang_list"""
# replace language code with a custom alias if necessary
if lang_code in custom_aliases:
lang_code = custom_aliases[lang_code]
@@ -357,8 +403,8 @@ def _match_language(lang_code, lang_list=[], custom_aliases={}):
return _get_lang_to_lc_dict(lang_list).get(lang_code, None)
-# get the language code from lang_list that best matches locale_code
-def match_language(locale_code, lang_list=[], custom_aliases={}, fallback='en-US'):
+def match_language(locale_code, lang_list=[], custom_aliases={}, fallback='en-US'): # pylint: disable=W0102
+ """get the language code from lang_list that best matches locale_code"""
# try to get language from given locale_code
language = _match_language(locale_code, lang_list, custom_aliases)
if language:
@@ -394,30 +440,20 @@ def load_module(filename, module_dir):
if modname in sys.modules:
del sys.modules[modname]
filepath = join(module_dir, filename)
- module = load_source(modname, filepath)
- module.name = modname
+ # and https://docs.python.org/3/library/importlib.html#importing-a-source-file-directly
+ spec = importlib.util.spec_from_file_location(modname, filepath)
+ module = importlib.util.module_from_spec(spec)
+ sys.modules[modname] = module
+ spec.loader.exec_module(module)
return module
-def new_hmac(secret_key, url):
- try:
- secret_key_bytes = bytes(secret_key, 'utf-8')
- except TypeError as err:
- if isinstance(secret_key, bytes):
- secret_key_bytes = secret_key
- else:
- raise err
- if sys.version_info[0] == 2:
- return hmac.new(bytes(secret_key), url, hashlib.sha256).hexdigest()
- else:
- return hmac.new(secret_key_bytes, url, hashlib.sha256).hexdigest()
-
-
def to_string(obj):
- if isinstance(obj, basestring):
+ """Convert obj to its string representation."""
+ if isinstance(obj, str):
return obj
if isinstance(obj, Number):
- return unicode(obj)
+ return str(obj)
if hasattr(obj, '__str__'):
return obj.__str__()
if hasattr(obj, '__repr__'):
@@ -425,20 +461,36 @@ def to_string(obj):
def ecma_unescape(s):
- """
- python implementation of the unescape javascript function
+ """Python implementation of the unescape javascript function
https://www.ecma-international.org/ecma-262/6.0/#sec-unescape-string
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/unescape
+
+ Examples:
+ >>> ecma_unescape('%u5409')
+ '吉'
+ >>> ecma_unescape('%20')
+ ' '
+ >>> ecma_unescape('%F3')
+ 'ó'
"""
- # s = unicode(s)
# "%u5409" becomes "吉"
- s = ecma_unescape4_re.sub(lambda e: unichr(int(e.group(1), 16)), s)
+ s = ecma_unescape4_re.sub(lambda e: chr(int(e.group(1), 16)), s)
# "%20" becomes " ", "%F3" becomes "ó"
- s = ecma_unescape2_re.sub(lambda e: unichr(int(e.group(1), 16)), s)
+ s = ecma_unescape2_re.sub(lambda e: chr(int(e.group(1), 16)), s)
return s
+def get_string_replaces_function(replaces):
+ rep = {re.escape(k): v for k, v in replaces.items()}
+ pattern = re.compile("|".join(rep.keys()))
+
+ def f(text):
+ return pattern.sub(lambda m: rep[re.escape(m.group(0))], text)
+
+ return f
+
+
def get_engine_from_settings(name):
"""Return engine configuration from settings.yml of a given engine name"""
@@ -454,14 +506,110 @@ def get_engine_from_settings(name):
return {}
-def get_xpath(xpath_str):
- result = xpath_cache.get(xpath_str, None)
- if result is None:
- result = XPath(xpath_str)
- xpath_cache[xpath_str] = result
+def get_xpath(xpath_spec):
+ """Return cached compiled XPath
+
+ There is no thread lock.
+ Worst case scenario, xpath_str is compiled more than one time.
+
+ Args:
+ * xpath_spec (str|lxml.etree.XPath): XPath as a str or lxml.etree.XPath
+
+ Returns:
+ * result (bool, float, list, str): Results.
+
+ Raises:
+ * TypeError: Raise when xpath_spec is neither a str nor a lxml.etree.XPath
+ * SearxXPathSyntaxException: Raise when there is a syntax error in the XPath
+ """
+ if isinstance(xpath_spec, str):
+ result = xpath_cache.get(xpath_spec, None)
+ if result is None:
+ try:
+ result = XPath(xpath_spec)
+ except XPathSyntaxError as e:
+ raise SearxXPathSyntaxException(xpath_spec, str(e.msg)) from e
+ xpath_cache[xpath_spec] = result
+ return result
+
+ if isinstance(xpath_spec, XPath):
+ return xpath_spec
+
+ raise TypeError('xpath_spec must be either a str or a lxml.etree.XPath')
+
+
+def eval_xpath(element, xpath_spec):
+ """Equivalent of element.xpath(xpath_str) but compile xpath_str once for all.
+ See https://lxml.de/xpathxslt.html#xpath-return-values
+
+ Args:
+ * element (ElementBase): [description]
+ * xpath_spec (str|lxml.etree.XPath): XPath as a str or lxml.etree.XPath
+
+ Returns:
+ * result (bool, float, list, str): Results.
+
+ Raises:
+ * TypeError: Raise when xpath_spec is neither a str nor a lxml.etree.XPath
+ * SearxXPathSyntaxException: Raise when there is a syntax error in the XPath
+ * SearxEngineXPathException: Raise when the XPath can't be evaluated.
+ """
+ xpath = get_xpath(xpath_spec)
+ try:
+ return xpath(element)
+ except XPathError as e:
+ arg = ' '.join([str(i) for i in e.args])
+ raise SearxEngineXPathException(xpath_spec, arg) from e
+
+
+def eval_xpath_list(element, xpath_spec, min_len=None):
+ """Same as eval_xpath, check if the result is a list
+
+ Args:
+ * element (ElementBase): [description]
+ * xpath_spec (str|lxml.etree.XPath): XPath as a str or lxml.etree.XPath
+ * min_len (int, optional): [description]. Defaults to None.
+
+ Raises:
+ * TypeError: Raise when xpath_spec is neither a str nor a lxml.etree.XPath
+ * SearxXPathSyntaxException: Raise when there is a syntax error in the XPath
+ * SearxEngineXPathException: raise if the result is not a list
+
+ Returns:
+ * result (bool, float, list, str): Results.
+ """
+ result = eval_xpath(element, xpath_spec)
+ if not isinstance(result, list):
+ raise SearxEngineXPathException(xpath_spec, 'the result is not a list')
+ if min_len is not None and min_len > len(result):
+ raise SearxEngineXPathException(xpath_spec, 'len(xpath_str) < ' + str(min_len))
return result
-def eval_xpath(element, xpath_str):
- xpath = get_xpath(xpath_str)
- return xpath(element)
+def eval_xpath_getindex(elements, xpath_spec, index, default=NOTSET):
+ """Call eval_xpath_list then get one element using the index parameter.
+ If the index does not exist, either aise an exception is default is not set,
+ other return the default value (can be None).
+
+ Args:
+ * elements (ElementBase): lxml element to apply the xpath.
+ * xpath_spec (str|lxml.etree.XPath): XPath as a str or lxml.etree.XPath.
+ * index (int): index to get
+ * default (Object, optional): Defaults if index doesn't exist.
+
+ Raises:
+ * TypeError: Raise when xpath_spec is neither a str nor a lxml.etree.XPath
+ * SearxXPathSyntaxException: Raise when there is a syntax error in the XPath
+ * SearxEngineXPathException: if the index is not found. Also see eval_xpath.
+
+ Returns:
+ * result (bool, float, list, str): Results.
+ """
+ result = eval_xpath_list(elements, xpath_spec)
+ if index >= -len(result) and index < len(result):
+ return result[index]
+ if default == NOTSET:
+ # raise an SearxEngineXPathException instead of IndexError
+ # to record xpath_spec
+ raise SearxEngineXPathException(xpath_spec, 'index ' + str(index) + ' not found')
+ return default
diff --git a/searx/version.py b/searx/version.py
index 3fe3dba..2b83b59 100644
--- a/searx/version.py
+++ b/searx/version.py
@@ -17,8 +17,8 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
'''
# version of searx
-VERSION_MAJOR = 0
-VERSION_MINOR = 16
+VERSION_MAJOR = 1
+VERSION_MINOR = 1
VERSION_BUILD = 0
VERSION_STRING = "{0}.{1}.{2}".format(VERSION_MAJOR,
diff --git a/searx/webadapter.py b/searx/webadapter.py
new file mode 100644
index 0000000..58cbf1d
--- /dev/null
+++ b/searx/webadapter.py
@@ -0,0 +1,250 @@
+from collections import defaultdict
+from typing import Dict, List, Optional, Tuple
+from searx.exceptions import SearxParameterException
+from searx.webutils import VALID_LANGUAGE_CODE
+from searx.query import RawTextQuery
+from searx.engines import categories, engines
+from searx.search import SearchQuery, EngineRef
+from searx.preferences import Preferences, is_locked
+
+
+# remove duplicate queries.
+# FIXME: does not fix "!music !soundcloud", because the categories are 'none' and 'music'
+def deduplicate_engineref_list(engineref_list: List[EngineRef]) -> List[EngineRef]:
+ engineref_dict = {q.category + '|' + q.name: q for q in engineref_list}
+ return list(engineref_dict.values())
+
+
+def validate_engineref_list(engineref_list: List[EngineRef], preferences: Preferences)\
+ -> Tuple[List[EngineRef], List[EngineRef], List[EngineRef]]:
+ """Validate query_engines according to the preferences
+
+ Returns:
+ List[EngineRef]: list of existing engines with a validated token
+ List[EngineRef]: list of unknown engine
+ List[EngineRef]: list of engine with invalid token according to the preferences
+ """
+ valid = []
+ unknown = []
+ no_token = []
+ for engineref in engineref_list:
+ if engineref.name not in engines:
+ unknown.append(engineref)
+ continue
+
+ engine = engines[engineref.name]
+ if not preferences.validate_token(engine):
+ no_token.append(engineref)
+ continue
+
+ valid.append(engineref)
+ return valid, unknown, no_token
+
+
+def parse_pageno(form: Dict[str, str]) -> int:
+ pageno_param = form.get('pageno', '1')
+ if not pageno_param.isdigit() or int(pageno_param) < 1:
+ raise SearxParameterException('pageno', pageno_param)
+ return int(pageno_param)
+
+
+def parse_lang(preferences: Preferences, form: Dict[str, str], raw_text_query: RawTextQuery) -> str:
+ if is_locked('language'):
+ return preferences.get_value('language')
+ # get language
+ # set specific language if set on request, query or preferences
+ # TODO support search with multible languages
+ if len(raw_text_query.languages):
+ query_lang = raw_text_query.languages[-1]
+ elif 'language' in form:
+ query_lang = form.get('language')
+ else:
+ query_lang = preferences.get_value('language')
+
+ # check language
+ if not VALID_LANGUAGE_CODE.match(query_lang):
+ raise SearxParameterException('language', query_lang)
+
+ return query_lang
+
+
+def parse_safesearch(preferences: Preferences, form: Dict[str, str]) -> int:
+ if is_locked('safesearch'):
+ return preferences.get_value('safesearch')
+
+ if 'safesearch' in form:
+ query_safesearch = form.get('safesearch')
+ # first check safesearch
+ if not query_safesearch.isdigit():
+ raise SearxParameterException('safesearch', query_safesearch)
+ query_safesearch = int(query_safesearch)
+ else:
+ query_safesearch = preferences.get_value('safesearch')
+
+ # safesearch : second check
+ if query_safesearch < 0 or query_safesearch > 2:
+ raise SearxParameterException('safesearch', query_safesearch)
+
+ return query_safesearch
+
+
+def parse_time_range(form: Dict[str, str]) -> Optional[str]:
+ query_time_range = form.get('time_range')
+ # check time_range
+ query_time_range = None if query_time_range in ('', 'None') else query_time_range
+ if query_time_range not in (None, 'day', 'week', 'month', 'year'):
+ raise SearxParameterException('time_range', query_time_range)
+ return query_time_range
+
+
+def parse_timeout(form: Dict[str, str], raw_text_query: RawTextQuery) -> Optional[float]:
+ timeout_limit = raw_text_query.timeout_limit
+ if timeout_limit is None:
+ timeout_limit = form.get('timeout_limit')
+
+ if timeout_limit is None or timeout_limit in ['None', '']:
+ return None
+ try:
+ return float(timeout_limit)
+ except ValueError as e:
+ raise SearxParameterException('timeout_limit', timeout_limit) from e
+
+
+def parse_category_form(query_categories: List[str], name: str, value: str) -> None:
+ if name == 'categories':
+ query_categories.extend(categ for categ in map(str.strip, value.split(',')) if categ in categories)
+ elif name.startswith('category_'):
+ category = name[9:]
+
+ # if category is not found in list, skip
+ if category not in categories:
+ return
+
+ if value != 'off':
+ # add category to list
+ query_categories.append(category)
+ elif category in query_categories:
+ # remove category from list if property is set to 'off'
+ query_categories.remove(category)
+
+
+def get_selected_categories(preferences: Preferences, form: Optional[Dict[str, str]]) -> List[str]:
+ selected_categories = []
+
+ if not is_locked('categories') and form is not None:
+ for name, value in form.items():
+ parse_category_form(selected_categories, name, value)
+
+ # if no category is specified for this search,
+ # using user-defined default-configuration which
+ # (is stored in cookie)
+ if not selected_categories:
+ cookie_categories = preferences.get_value('categories')
+ for ccateg in cookie_categories:
+ selected_categories.append(ccateg)
+
+ # if still no category is specified, using general
+ # as default-category
+ if not selected_categories:
+ selected_categories = ['general']
+
+ return selected_categories
+
+
+def get_engineref_from_category_list(category_list: List[str], disabled_engines: List[str]) -> List[EngineRef]:
+ result = []
+ for categ in category_list:
+ result.extend(EngineRef(engine.name, categ)
+ for engine in categories[categ]
+ if (engine.name, categ) not in disabled_engines)
+ return result
+
+
+def parse_generic(preferences: Preferences, form: Dict[str, str], disabled_engines: List[str]) -> List[EngineRef]:
+ query_engineref_list = []
+ query_categories = []
+
+ # set categories/engines
+ explicit_engine_list = False
+ if not is_locked('categories'):
+ # parse the form only if the categories are not locked
+ for pd_name, pd in form.items():
+ if pd_name == 'engines':
+ pd_engines = [EngineRef(engine_name, engines[engine_name].categories[0])
+ for engine_name in map(str.strip, pd.split(',')) if engine_name in engines]
+ if pd_engines:
+ query_engineref_list.extend(pd_engines)
+ explicit_engine_list = True
+ else:
+ parse_category_form(query_categories, pd_name, pd)
+
+ if explicit_engine_list:
+ # explicit list of engines with the "engines" parameter in the form
+ if query_categories:
+ # add engines from referenced by the "categories" parameter and the "category_*"" parameters
+ query_engineref_list.extend(get_engineref_from_category_list(query_categories, disabled_engines))
+ else:
+ # no "engines" parameters in the form
+ if not query_categories:
+ # and neither "categories" parameter nor "category_*"" parameters in the form
+ # -> get the categories from the preferences (the cookies or the settings)
+ query_categories = get_selected_categories(preferences, None)
+
+ # using all engines for that search, which are
+ # declared under the specific categories
+ query_engineref_list.extend(get_engineref_from_category_list(query_categories, disabled_engines))
+
+ return query_engineref_list
+
+
+def parse_engine_data(form):
+ engine_data = defaultdict(dict)
+ for k, v in form.items():
+ if k.startswith("engine_data"):
+ _, engine, key = k.split('-')
+ engine_data[engine][key] = v
+ return engine_data
+
+
+def get_search_query_from_webapp(preferences: Preferences, form: Dict[str, str])\
+ -> Tuple[SearchQuery, RawTextQuery, List[EngineRef], List[EngineRef]]:
+ # no text for the query ?
+ if not form.get('q'):
+ raise SearxParameterException('q', '')
+
+ # set blocked engines
+ disabled_engines = preferences.engines.get_disabled()
+
+ # parse query, if tags are set, which change
+ # the serch engine or search-language
+ raw_text_query = RawTextQuery(form['q'], disabled_engines)
+
+ # set query
+ query = raw_text_query.getQuery()
+ query_pageno = parse_pageno(form)
+ query_lang = parse_lang(preferences, form, raw_text_query)
+ query_safesearch = parse_safesearch(preferences, form)
+ query_time_range = parse_time_range(form)
+ query_timeout = parse_timeout(form, raw_text_query)
+ external_bang = raw_text_query.external_bang
+ engine_data = parse_engine_data(form)
+
+ if not is_locked('categories') and raw_text_query.enginerefs and raw_text_query.specific:
+ # if engines are calculated from query,
+ # set categories by using that informations
+ query_engineref_list = raw_text_query.enginerefs
+ else:
+ # otherwise, using defined categories to
+ # calculate which engines should be used
+ query_engineref_list = parse_generic(preferences, form, disabled_engines)
+
+ query_engineref_list = deduplicate_engineref_list(query_engineref_list)
+ query_engineref_list, query_engineref_list_unknown, query_engineref_list_notoken =\
+ validate_engineref_list(query_engineref_list, preferences)
+
+ return (SearchQuery(query, query_engineref_list, query_lang, query_safesearch, query_pageno,
+ query_time_range, query_timeout, external_bang=external_bang,
+ engine_data=engine_data),
+ raw_text_query,
+ query_engineref_list_unknown,
+ query_engineref_list_notoken)
diff --git a/searx/webapp.py b/searx/webapp.py
index aadefe6..e37eaf7 100644..100755
--- a/searx/webapp.py
+++ b/searx/webapp.py
@@ -17,91 +17,83 @@ along with searx. If not, see < http://www.gnu.org/licenses/ >.
(C) 2013- by Adam Tauber, <asciimoo@gmail.com>
'''
+import sys
+if sys.version_info[0] < 3:
+ print('\033[1;31m Python2 is no longer supported\033[0m')
+ exit(1)
+
if __name__ == '__main__':
- from sys import path
from os.path import realpath, dirname
- path.append(realpath(dirname(realpath(__file__)) + '/../'))
+ sys.path.append(realpath(dirname(realpath(__file__)) + '/../'))
import hashlib
import hmac
import json
import os
-import sys
import requests
from searx import logger
logger = logger.getChild('webapp')
-try:
- from pygments import highlight
- from pygments.lexers import get_lexer_by_name
- from pygments.formatters import HtmlFormatter
-except:
- logger.critical("cannot import dependency: pygments")
- from sys import exit
- exit(1)
-try:
- from cgi import escape
-except:
- from html import escape
from datetime import datetime, timedelta
from time import time
-from werkzeug.contrib.fixers import ProxyFix
+from html import escape
+from io import StringIO
+import urllib
+from urllib.parse import urlencode, urlparse
+
+from pygments import highlight
+from pygments.lexers import get_lexer_by_name
+from pygments.formatters import HtmlFormatter # pylint: disable=no-name-in-module
+
+from werkzeug.middleware.proxy_fix import ProxyFix
from flask import (
Flask, request, render_template, url_for, Response, make_response,
redirect, send_from_directory
)
+from babel.support import Translations
+import flask_babel
from flask_babel import Babel, gettext, format_date, format_decimal
+from flask.ctx import has_request_context
from flask.json import jsonify
+from searx import brand, static_path
from searx import settings, searx_dir, searx_debug
from searx.exceptions import SearxParameterException
from searx.engines import (
- categories, engines, engine_shortcuts, get_engines_stats, initialize_engines
+ categories, engines, engine_shortcuts, get_engines_stats
)
-from searx.utils import (
- UnicodeWriter, highlight_content, html_to_text, get_resources_directory,
- get_static_files, get_result_templates, get_themes, gen_useragent,
- dict_subset, prettify_url, match_language
+from searx.webutils import (
+ UnicodeWriter, highlight_content, get_resources_directory,
+ get_static_files, get_result_templates, get_themes,
+ prettify_url, new_hmac, is_flask_run_cmdline
)
+from searx.webadapter import get_search_query_from_webapp, get_selected_categories
+from searx.utils import html_to_text, gen_useragent, dict_subset, match_language
from searx.version import VERSION_STRING
from searx.languages import language_codes as languages
-from searx.search import SearchWithPlugins, get_search_query_from_webapp
+from searx.search import SearchWithPlugins, initialize as search_initialize
+from searx.search.checker import get_result as checker_get_result
from searx.query import RawTextQuery
-from searx.autocomplete import searx_bang, backends as autocomplete_backends
+from searx.autocomplete import search_autocomplete, backends as autocomplete_backends
from searx.plugins import plugins
from searx.plugins.oa_doi_rewrite import get_doi_resolver
from searx.preferences import Preferences, ValidationException, LANGUAGE_CODES
from searx.answerers import answerers
-from searx.url_utils import urlencode, urlparse, urljoin
-from searx.utils import new_hmac
-
-# check if the pyopenssl package is installed.
-# It is needed for SSL connection without trouble, see #298
-try:
- import OpenSSL.SSL # NOQA
-except ImportError:
- logger.critical("The pyopenssl package has to be installed.\n"
- "Some HTTPS connections will fail")
-
-try:
- from cStringIO import StringIO
-except:
- from io import StringIO
-
-
-if sys.version_info[0] == 3:
- unicode = str
- PY3 = True
-else:
- PY3 = False
- logger.warning('\033[1;31m *** Deprecation Warning ***\033[0m')
- logger.warning('\033[1;31m Python2 is deprecated\033[0m')
+from searx.poolrequests import get_global_proxies
+from searx.answerers import ask
+from searx.metrology.error_recorder import errors_per_engines
+from searx.settings_loader import get_default_settings_path
# serve pages with HTTP/1.1
from werkzeug.serving import WSGIRequestHandler
WSGIRequestHandler.protocol_version = "HTTP/{}".format(settings['server'].get('http_protocol_version', '1.0'))
+# check secret_key
+if not searx_debug and settings['server']['secret_key'] == 'ultrasecretkey':
+ logger.error('server.secret_key is not changed. Please use something else instead of ultrasecretkey.')
+ exit(1)
+
# about static
static_path = get_resources_directory(searx_dir, 'static', settings['ui']['static_path'])
logger.debug('static directory is %s', static_path)
@@ -129,18 +121,31 @@ app = Flask(
app.jinja_env.trim_blocks = True
app.jinja_env.lstrip_blocks = True
-app.jinja_env.add_extension('jinja2.ext.loopcontrols')
+app.jinja_env.add_extension('jinja2.ext.loopcontrols') # pylint: disable=no-member
app.secret_key = settings['server']['secret_key']
-if not searx_debug \
- or os.environ.get("WERKZEUG_RUN_MAIN") == "true" \
- or os.environ.get('UWSGI_ORIGINAL_PROC_NAME') is not None:
- initialize_engines(settings['engines'])
+# see https://flask.palletsprojects.com/en/1.1.x/cli/
+# True if "FLASK_APP=searx/webapp.py FLASK_ENV=development flask run"
+flask_run_development = \
+ os.environ.get("FLASK_APP") is not None\
+ and os.environ.get("FLASK_ENV") == 'development'\
+ and is_flask_run_cmdline()
+
+# True if reload feature is activated of werkzeug, False otherwise (including uwsgi, etc..)
+# __name__ != "__main__" if searx.webapp is imported (make test, make docs, uwsgi...)
+# see run() at the end of this file : searx_debug activates the reload feature.
+werkzeug_reloader = flask_run_development or (searx_debug and __name__ == "__main__")
+
+# initialize the engines except on the first run of the werkzeug server.
+if not werkzeug_reloader\
+ or (werkzeug_reloader and os.environ.get("WERKZEUG_RUN_MAIN") == "true"):
+ search_initialize(enable_checker=True)
babel = Babel(app)
-rtl_locales = ['ar', 'arc', 'bcc', 'bqi', 'ckb', 'dv', 'fa', 'glk', 'he',
+rtl_locales = ['ar', 'arc', 'bcc', 'bqi', 'ckb', 'dv', 'fa', 'fa_IR', 'glk', 'he',
'ku', 'mzn', 'pnb', 'ps', 'sd', 'ug', 'ur', 'yi']
+ui_locale_codes = [l.replace('_', '-') for l in settings['locales'].keys()]
# used when translating category names
_category_names = (gettext('files'),
@@ -152,25 +157,65 @@ _category_names = (gettext('files'),
gettext('it'),
gettext('news'),
gettext('map'),
+ gettext('onions'),
gettext('science'))
-outgoing_proxies = settings['outgoing'].get('proxies') or None
+_flask_babel_get_translations = flask_babel.get_translations
+
+
+# monkey patch for flask_babel.get_translations
+def _get_translations():
+ if has_request_context() and request.form.get('use-translation') == 'oc':
+ babel_ext = flask_babel.current_app.extensions['babel']
+ return Translations.load(next(babel_ext.translation_directories), 'oc')
+
+ return _flask_babel_get_translations()
+
+
+flask_babel.get_translations = _get_translations
+
+
+def _get_browser_or_settings_language(request, lang_list):
+ for lang in request.headers.get("Accept-Language", "en").split(","):
+ if ';' in lang:
+ lang = lang.split(';')[0]
+ if '-' in lang:
+ lang_parts = lang.split('-')
+ lang = "{}-{}".format(lang_parts[0], lang_parts[-1].upper())
+ locale = match_language(lang, lang_list, fallback=None)
+ if locale is not None:
+ return locale
+ return settings['search']['default_lang'] or 'en'
@babel.localeselector
def get_locale():
if 'locale' in request.form\
and request.form['locale'] in settings['locales']:
- return request.form['locale']
-
- if 'locale' in request.args\
- and request.args['locale'] in settings['locales']:
- return request.args['locale']
-
- if request.preferences.get_value('locale') != '':
- return request.preferences.get_value('locale')
+ # use locale from the form
+ locale = request.form['locale']
+ locale_source = 'form'
+ elif request.preferences.get_value('locale') != '':
+ # use locale from the preferences
+ locale = request.preferences.get_value('locale')
+ locale_source = 'preferences'
+ else:
+ # use local from the browser
+ locale = _get_browser_or_settings_language(request, ui_locale_codes)
+ locale = locale.replace('-', '_')
+ locale_source = 'browser'
+
+ # see _get_translations function
+ # and https://github.com/searx/searx/pull/1863
+ if locale == 'oc':
+ request.form['use-translation'] = 'oc'
+ locale = 'fr_FR'
+
+ logger.debug(
+ "%s uses locale `%s` from %s", urllib.parse.quote(request.url), locale, locale_source
+ )
- return request.accept_languages.best_match(settings['locales'].keys())
+ return locale
# code-highlighter
@@ -202,7 +247,8 @@ def code_highlighter(codelines, language=None):
# highlight last codepart
formatter = HtmlFormatter(linenos='inline',
- linenostart=line_code_start)
+ linenostart=line_code_start,
+ cssclass="code-highlight")
html_code = html_code + highlight(tmp_code, lexer, formatter)
# reset conditions for next codepart
@@ -216,7 +262,7 @@ def code_highlighter(codelines, language=None):
last_line = line
# highlight last codepart
- formatter = HtmlFormatter(linenos='inline', linenostart=line_code_start)
+ formatter = HtmlFormatter(linenos='inline', linenostart=line_code_start, cssclass="code-highlight")
html_code = html_code + highlight(tmp_code, lexer, formatter)
return html_code
@@ -229,14 +275,7 @@ def extract_domain(url):
def get_base_url():
- if settings['server']['base_url']:
- hostname = settings['server']['base_url']
- else:
- scheme = 'http'
- if request.is_secure:
- scheme = 'https'
- hostname = url_for('index', _external=True, _scheme=scheme)
- return hostname
+ return url_for('index', _external=True)
def get_current_theme_name(override=None):
@@ -268,7 +307,8 @@ def url_for_theme(endpoint, override_theme=None, **values):
filename_with_theme = "themes/{}/{}".format(theme_name, values['filename'])
if filename_with_theme in static_files:
values['filename'] = filename_with_theme
- return url_for(endpoint, **values)
+ url = url_for(endpoint, **values)
+ return url
def proxify(url):
@@ -278,11 +318,11 @@ def proxify(url):
if not settings.get('result_proxy'):
return url
- url_params = dict(mortyurl=url.encode('utf-8'))
+ url_params = dict(mortyurl=url.encode())
if settings['result_proxy'].get('key'):
url_params['mortyhash'] = hmac.new(settings['result_proxy']['key'],
- url.encode('utf-8'),
+ url.encode(),
hashlib.sha256).hexdigest()
return '{0}?{1}'.format(settings['result_proxy']['url'],
@@ -297,16 +337,30 @@ def image_proxify(url):
if not request.preferences.get_value('image_proxy'):
return url
- if url.startswith('data:image/jpeg;base64,'):
- return url
+ if url.startswith('data:image/'):
+ # 50 is an arbitrary number to get only the beginning of the image.
+ partial_base64 = url[len('data:image/'):50].split(';')
+ if len(partial_base64) == 2 \
+ and partial_base64[0] in ['gif', 'png', 'jpeg', 'pjpeg', 'webp', 'tiff', 'bmp']\
+ and partial_base64[1].startswith('base64,'):
+ return url
+ else:
+ return None
if settings.get('result_proxy'):
return proxify(url)
- h = new_hmac(settings['server']['secret_key'], url.encode('utf-8'))
+ h = new_hmac(settings['server']['secret_key'], url.encode())
return '{0}?{1}'.format(url_for('image_proxy'),
- urlencode(dict(url=url.encode('utf-8'), h=h)))
+ urlencode(dict(url=url.encode(), h=h)))
+
+
+def get_translations():
+ return {
+ # when there is autocompletion
+ 'no_item_found': gettext('No item found')
+ }
def render(template_name, override_theme=None, **kwargs):
@@ -317,51 +371,32 @@ def render(template_name, override_theme=None, **kwargs):
if (engine_name, category) not in disabled_engines)
if 'categories' not in kwargs:
- kwargs['categories'] = ['general']
- kwargs['categories'].extend(x for x in
- sorted(categories.keys())
- if x != 'general'
- and x in enabled_categories)
-
- if 'all_categories' not in kwargs:
- kwargs['all_categories'] = ['general']
- kwargs['all_categories'].extend(x for x in
- sorted(categories.keys())
- if x != 'general')
-
- if 'selected_categories' not in kwargs:
- kwargs['selected_categories'] = []
- for arg in request.args:
- if arg.startswith('category_'):
- c = arg.split('_', 1)[1]
- if c in categories:
- kwargs['selected_categories'].append(c)
-
- if not kwargs['selected_categories']:
- cookie_categories = request.preferences.get_value('categories')
- for ccateg in cookie_categories:
- kwargs['selected_categories'].append(ccateg)
-
- if not kwargs['selected_categories']:
- kwargs['selected_categories'] = ['general']
+ kwargs['categories'] = [x for x in
+ _get_ordered_categories()
+ if x in enabled_categories]
if 'autocomplete' not in kwargs:
kwargs['autocomplete'] = request.preferences.get_value('autocomplete')
- if get_locale() in rtl_locales and 'rtl' not in kwargs:
+ locale = request.preferences.get_value('locale')
+
+ if locale in rtl_locales and 'rtl' not in kwargs:
kwargs['rtl'] = True
kwargs['searx_version'] = VERSION_STRING
kwargs['method'] = request.preferences.get_value('method')
+ kwargs['autofocus'] = request.preferences.get_value('autofocus')
+
+ kwargs['archive_today'] = request.preferences.get_value('archive_today')
+
kwargs['safesearch'] = str(request.preferences.get_value('safesearch'))
kwargs['language_codes'] = languages
if 'current_language' not in kwargs:
kwargs['current_language'] = match_language(request.preferences.get_value('language'),
- LANGUAGE_CODES,
- fallback=settings['search']['language'])
+ LANGUAGE_CODES)
# override url_for function in templates
kwargs['url_for'] = url_for_theme
@@ -370,6 +405,9 @@ def render(template_name, override_theme=None, **kwargs):
kwargs['proxify'] = proxify if settings.get('result_proxy', {}).get('url') else None
+ kwargs['opensearch_url'] = url_for('opensearch') + '?' \
+ + urlencode({'method': kwargs['method'], 'autocomplete': kwargs['autocomplete']})
+
kwargs['get_result_template'] = get_result_template
kwargs['theme'] = get_current_theme_name(override=override_theme)
@@ -384,11 +422,14 @@ def render(template_name, override_theme=None, **kwargs):
kwargs['results_on_new_tab'] = request.preferences.get_value('results_on_new_tab')
- kwargs['unicode'] = unicode
-
kwargs['preferences'] = request.preferences
+ kwargs['brand'] = brand
+
+ kwargs['translations'] = json.dumps(get_translations(), separators=(',', ':'))
+
kwargs['scripts'] = set()
+ kwargs['endpoint'] = 'results' if 'q' in kwargs else request.endpoint
for plugin in request.user_plugins:
for script in plugin.js_dependencies:
kwargs['scripts'].add(script)
@@ -402,6 +443,17 @@ def render(template_name, override_theme=None, **kwargs):
'{}/{}'.format(kwargs['theme'], template_name), **kwargs)
+def _get_ordered_categories():
+ ordered_categories = []
+ if 'categories_order' not in settings['ui']:
+ ordered_categories = ['general']
+ ordered_categories.extend(x for x in sorted(categories.keys()) if x != 'general')
+ return ordered_categories
+ ordered_categories = settings['ui']['categories_order']
+ ordered_categories.extend(x for x in sorted(categories.keys()) if x not in ordered_categories)
+ return ordered_categories
+
+
@app.before_request
def pre_request():
request.start_time = time()
@@ -409,6 +461,9 @@ def pre_request():
request.errors = []
preferences = Preferences(themes, list(categories.keys()), engines, plugins)
+ user_agent = request.headers.get('User-Agent', '').lower()
+ if 'webkit' in user_agent and 'android' in user_agent:
+ preferences.key_value_settings['method'].value = 'GET'
request.preferences = preferences
try:
preferences.parse_dict(request.cookies)
@@ -427,10 +482,16 @@ def pre_request():
else:
try:
preferences.parse_dict(request.form)
- except Exception as e:
+ except Exception:
logger.exception('invalid settings')
request.errors.append(gettext('Invalid settings'))
+ # init search language and locale
+ if not preferences.get_value("language"):
+ preferences.parse_dict({"language": _get_browser_or_settings_language(request, LANGUAGE_CODES)})
+ if not preferences.get_value("locale"):
+ preferences.parse_dict({"locale": get_locale()})
+
# request.user_plugins
request.user_plugins = []
allowed_plugins = preferences.plugins.get_enabled()
@@ -442,6 +503,16 @@ def pre_request():
@app.after_request
+def add_default_headers(response):
+ # set default http headers
+ for header, value in settings['server'].get('default_http_headers', {}).items():
+ if header in response.headers:
+ continue
+ response.headers[header] = value
+ return response
+
+
+@app.after_request
def post_request(response):
total_time = time() - request.start_time
timings_all = ['total;dur=' + str(round(total_time * 1000, 3))]
@@ -481,13 +552,37 @@ def index_error(output_format, error_message):
request.errors.append(gettext('search error'))
return render(
'index.html',
+ selected_categories=get_selected_categories(request.preferences, request.form),
)
-@app.route('/search', methods=['GET', 'POST'])
@app.route('/', methods=['GET', 'POST'])
def index():
- """Render index page.
+ """Render index page."""
+
+ # UI
+ advanced_search = request.preferences.get_value('advanced_search')
+
+ # redirect to search if there's a query in the request
+ if request.form.get('q'):
+ query = ('?' + request.query_string.decode()) if request.query_string else ''
+ return redirect(url_for('search') + query, 308)
+
+ return render(
+ 'index.html',
+ selected_categories=get_selected_categories(request.preferences, request.form),
+ advanced_search=advanced_search,
+ )
+
+
+@app.route('/healthz', methods=['GET'])
+def health():
+ return Response('OK', mimetype='text/plain')
+
+
+@app.route('/search', methods=['GET', 'POST'])
+def search():
+ """Search query in q and return results.
Supported outputs: html, json, csv, rss.
"""
@@ -497,11 +592,13 @@ def index():
if output_format not in ['html', 'csv', 'json', 'rss']:
output_format = 'html'
- # check if there is query
- if request.form.get('q') is None:
+ # check if there is query (not None and not an empty string)
+ if not request.form.get('q'):
if output_format == 'html':
return render(
'index.html',
+ advanced_search=request.preferences.get_value('advanced_search'),
+ selected_categories=get_selected_categories(request.preferences, request.form),
)
else:
return index_error(output_format, 'No query'), 400
@@ -511,19 +608,18 @@ def index():
raw_text_query = None
result_container = None
try:
- search_query, raw_text_query = get_search_query_from_webapp(request.preferences, request.form)
+ search_query, raw_text_query, _, _ = get_search_query_from_webapp(request.preferences, request.form)
# search = Search(search_query) # without plugins
search = SearchWithPlugins(search_query, request.user_plugins, request)
+
result_container = search.search()
+
+ except SearxParameterException as e:
+ logger.exception('search error: SearxParameterException')
+ return index_error(output_format, e.message), 400
except Exception as e:
- # log exception
logger.exception('search error')
-
- # is it an invalid input parameter or something else ?
- if (issubclass(e.__class__, SearxParameterException)):
- return index_error(output_format, e.message), 400
- else:
- return index_error(output_format, gettext('search error')), 500
+ return index_error(output_format, gettext('search error')), 500
# results
results = result_container.get_ordered_results()
@@ -531,8 +627,9 @@ def index():
if number_of_results < result_container.results_length():
number_of_results = 0
- # UI
- advanced_search = request.form.get('advanced_search', None)
+ # checkin for a external bang
+ if result_container.redirect_url:
+ return redirect(result_container.redirect_url)
# Server-Timing header
request.timings = result_container.get_timings()
@@ -543,7 +640,7 @@ def index():
if 'content' in result and result['content']:
result['content'] = highlight_content(escape(result['content'][:1024]), search_query.query)
if 'title' in result and result['title']:
- result['title'] = highlight_content(escape(result['title'] or u''), search_query.query)
+ result['title'] = highlight_content(escape(result['title'] or ''), search_query.query)
else:
if result.get('content'):
result['content'] = html_to_text(result['content']).strip()
@@ -554,7 +651,7 @@ def index():
result['pretty_url'] = prettify_url(result['url'])
# TODO, check if timezone is calculated right
- if 'publishedDate' in result:
+ if result.get('publishedDate'): # do not try to get a date from an empty string or a None type
try: # test if publishedDate >= 1900 (datetime module bug)
result['pubdate'] = result['publishedDate'].strftime('%Y-%m-%d %H:%M:%S%z')
except ValueError:
@@ -565,39 +662,53 @@ def index():
minutes = int((timedifference.seconds / 60) % 60)
hours = int(timedifference.seconds / 60 / 60)
if hours == 0:
- result['publishedDate'] = gettext(u'{minutes} minute(s) ago').format(minutes=minutes)
+ result['publishedDate'] = gettext('{minutes} minute(s) ago').format(minutes=minutes)
else:
- result['publishedDate'] = gettext(u'{hours} hour(s), {minutes} minute(s) ago').format(hours=hours, minutes=minutes) # noqa
+ result['publishedDate'] = gettext('{hours} hour(s), {minutes} minute(s) ago').format(hours=hours, minutes=minutes) # noqa
else:
result['publishedDate'] = format_date(result['publishedDate'])
if output_format == 'json':
- return Response(json.dumps({'query': search_query.query.decode('utf-8'),
+ return Response(json.dumps({'query': search_query.query,
'number_of_results': number_of_results,
'results': results,
'answers': list(result_container.answers),
'corrections': list(result_container.corrections),
'infoboxes': result_container.infoboxes,
'suggestions': list(result_container.suggestions),
- 'unresponsive_engines': list(result_container.unresponsive_engines)},
+ 'unresponsive_engines': __get_translated_errors(result_container.unresponsive_engines)}, # noqa
default=lambda item: list(item) if isinstance(item, set) else item),
mimetype='application/json')
elif output_format == 'csv':
csv = UnicodeWriter(StringIO())
- keys = ('title', 'url', 'content', 'host', 'engine', 'score')
+ keys = ('title', 'url', 'content', 'host', 'engine', 'score', 'type')
csv.writerow(keys)
for row in results:
row['host'] = row['parsed_url'].netloc
+ row['type'] = 'result'
+ csv.writerow([row.get(key, '') for key in keys])
+ for a in result_container.answers:
+ row = {'title': a, 'type': 'answer'}
+ csv.writerow([row.get(key, '') for key in keys])
+ for a in result_container.suggestions:
+ row = {'title': a, 'type': 'suggestion'}
+ csv.writerow([row.get(key, '') for key in keys])
+ for a in result_container.corrections:
+ row = {'title': a, 'type': 'correction'}
csv.writerow([row.get(key, '') for key in keys])
csv.stream.seek(0)
response = Response(csv.stream.read(), mimetype='application/csv')
cont_disp = 'attachment;Filename=searx_-_{0}.csv'.format(search_query.query)
response.headers.add('Content-Disposition', cont_disp)
return response
+
elif output_format == 'rss':
response_rss = render(
'opensearch_response_rss.xml',
results=results,
+ answers=result_container.answers,
+ corrections=result_container.corrections,
+ suggestions=result_container.suggestions,
q=request.form['q'],
number_of_results=number_of_results,
base_url=get_base_url(),
@@ -609,13 +720,13 @@ def index():
# suggestions: use RawTextQuery to get the suggestion URLs with the same bang
suggestion_urls = list(map(lambda suggestion: {
- 'url': raw_text_query.changeSearchQuery(suggestion).getFullQuery(),
+ 'url': raw_text_query.changeQuery(suggestion).getFullQuery(),
'title': suggestion
},
result_container.suggestions))
correction_urls = list(map(lambda correction: {
- 'url': raw_text_query.changeSearchQuery(correction).getFullQuery(),
+ 'url': raw_text_query.changeQuery(correction).getFullQuery(),
'title': correction
},
result_container.corrections))
@@ -628,16 +739,16 @@ def index():
pageno=search_query.pageno,
time_range=search_query.time_range,
number_of_results=format_decimal(number_of_results),
- advanced_search=advanced_search,
suggestions=suggestion_urls,
answers=result_container.answers,
corrections=correction_urls,
infoboxes=result_container.infoboxes,
+ engine_data=result_container.engine_data,
paging=result_container.paging,
- unresponsive_engines=result_container.unresponsive_engines,
+ unresponsive_engines=__get_translated_errors(result_container.unresponsive_engines),
current_language=match_language(search_query.lang,
LANGUAGE_CODES,
- fallback=settings['search']['language']),
+ fallback=request.preferences.get_value("language")),
base_url=get_base_url(),
theme=get_current_theme_name(),
favicons=global_favicons[themes.index(get_current_theme_name())],
@@ -645,6 +756,16 @@ def index():
)
+def __get_translated_errors(unresponsive_engines):
+ translated_errors = set()
+ for unresponsive_engine in unresponsive_engines:
+ error_msg = gettext(unresponsive_engine[1])
+ if unresponsive_engine[2]:
+ error_msg = "{} {}".format(error_msg, unresponsive_engine[2])
+ translated_errors.add((unresponsive_engine[0], error_msg))
+ return translated_errors
+
+
@app.route('/about', methods=['GET'])
def about():
"""Render about page"""
@@ -657,55 +778,54 @@ def about():
def autocompleter():
"""Return autocompleter results"""
+ # run autocompleter
+ results = []
+
# set blocked engines
disabled_engines = request.preferences.engines.get_disabled()
# parse query
- if PY3:
- raw_text_query = RawTextQuery(request.form.get('q', b''), disabled_engines)
- else:
- raw_text_query = RawTextQuery(request.form.get('q', u'').encode('utf-8'), disabled_engines)
- raw_text_query.parse_query()
-
- # check if search query is set
- if not raw_text_query.getSearchQuery():
- return '', 400
-
- # run autocompleter
- completer = autocomplete_backends.get(request.preferences.get_value('autocomplete'))
-
- # parse searx specific autocompleter results like !bang
- raw_results = searx_bang(raw_text_query)
+ raw_text_query = RawTextQuery(request.form.get('q', ''), disabled_engines)
+ sug_prefix = raw_text_query.getQuery()
# normal autocompletion results only appear if no inner results returned
- # and there is a query part besides the engine and language bangs
- if len(raw_results) == 0 and completer and (len(raw_text_query.query_parts) > 1 or
- (len(raw_text_query.languages) == 0 and
- not raw_text_query.specific)):
+ # and there is a query part
+ if len(raw_text_query.autocomplete_list) == 0 and len(sug_prefix) > 0:
+
# get language from cookie
language = request.preferences.get_value('language')
if not language or language == 'all':
language = 'en'
else:
language = language.split('-')[0]
- # run autocompletion
- raw_results.extend(completer(raw_text_query.getSearchQuery(), language))
-
- # parse results (write :language and !engine back to result string)
- results = []
- for result in raw_results:
- raw_text_query.changeSearchQuery(result)
-
- # add parsed result
- results.append(raw_text_query.getFullQuery())
- # return autocompleter results
- if request.form.get('format') == 'x-suggestions':
- return Response(json.dumps([raw_text_query.query, results]),
- mimetype='application/json')
+ # run autocompletion
+ raw_results = search_autocomplete(
+ request.preferences.get_value('autocomplete'), sug_prefix, language
+ )
+ for result in raw_results:
+ # attention: this loop will change raw_text_query object and this is
+ # the reason why the sug_prefix was stored before (see above)
+ results.append(raw_text_query.changeQuery(result).getFullQuery())
+
+ if len(raw_text_query.autocomplete_list) > 0:
+ for autocomplete_text in raw_text_query.autocomplete_list:
+ results.append(raw_text_query.get_autocomplete_full_query(autocomplete_text))
+
+ for answers in ask(raw_text_query):
+ for answer in answers:
+ results.append(str(answer['answer']))
+
+ if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
+ # the suggestion request comes from the searx search form
+ suggestions = json.dumps(results)
+ mimetype = 'application/json'
+ else:
+ # the suggestion request comes from browser's URL bar
+ suggestions = json.dumps([sug_prefix, results])
+ mimetype = 'application/x-suggestions+json'
- return Response(json.dumps(results),
- mimetype='application/json')
+ return Response(suggestions, mimetype=mimetype)
@app.route('/preferences', methods=['GET', 'POST'])
@@ -714,7 +834,7 @@ def preferences():
# save preferences
if request.method == 'POST':
- resp = make_response(redirect(urljoin(settings['server']['base_url'], url_for('index'))))
+ resp = make_response(redirect(url_for('index', _external=True)))
try:
request.preferences.parse_form(request.form)
except ValidationException:
@@ -724,35 +844,46 @@ def preferences():
# render preferences
image_proxy = request.preferences.get_value('image_proxy')
- lang = request.preferences.get_value('language')
disabled_engines = request.preferences.engines.get_disabled()
allowed_plugins = request.preferences.plugins.get_enabled()
# stats for preferences page
stats = {}
+ engines_by_category = {}
for c in categories:
+ engines_by_category[c] = []
for e in categories[c]:
+ if not request.preferences.validate_token(e):
+ continue
+
stats[e.name] = {'time': None,
'warn_timeout': False,
'warn_time': False}
if e.timeout > settings['outgoing']['request_timeout']:
stats[e.name]['warn_timeout'] = True
stats[e.name]['supports_selected_language'] = _is_selected_language_supported(e, request.preferences)
+ engines_by_category[c].append(e)
# get first element [0], the engine time,
# and then the second element [1] : the time (the first one is the label)
- for engine_stat in get_engines_stats()[0][1]:
+ for engine_stat in get_engines_stats(request.preferences)[0][1]:
stats[engine_stat.get('name')]['time'] = round(engine_stat.get('avg'), 3)
if engine_stat.get('avg') > settings['outgoing']['request_timeout']:
stats[engine_stat.get('name')]['warn_time'] = True
# end of stats
+ locked_preferences = list()
+ if 'preferences' in settings and 'lock' in settings['preferences']:
+ locked_preferences = settings['preferences']['lock']
+
return render('preferences.html',
+ selected_categories=get_selected_categories(request.preferences, request.form),
+ all_categories=_get_ordered_categories(),
locales=settings['locales'],
- current_locale=get_locale(),
+ current_locale=request.preferences.get_value("locale"),
image_proxy=image_proxy,
- engines_by_category=categories,
+ engines_by_category=engines_by_category,
stats=stats,
answerers=[{'info': a.self_info(), 'keywords': a.keywords} for a in answerers],
disabled_engines=disabled_engines,
@@ -766,6 +897,7 @@ def preferences():
theme=get_current_theme_name(),
preferences_url_params=request.preferences.get_as_url_params(),
base_url=get_base_url(),
+ locked_preferences=locked_preferences,
preferences=True)
@@ -779,7 +911,7 @@ def _is_selected_language_supported(engine, preferences):
@app.route('/image_proxy', methods=['GET'])
def image_proxy():
- url = request.args.get('url').encode('utf-8')
+ url = request.args.get('url').encode()
if not url:
return '', 400
@@ -789,14 +921,20 @@ def image_proxy():
if h != request.args.get('h'):
return '', 400
+ headers = {
+ 'User-Agent': gen_useragent(),
+ 'Accept': 'image/webp,*/*',
+ 'Accept-Encoding': 'gzip, deflate',
+ 'Sec-GPC': '1',
+ 'DNT': '1',
+ }
headers = dict_subset(request.headers, {'If-Modified-Since', 'If-None-Match'})
- headers['User-Agent'] = gen_useragent()
resp = requests.get(url,
stream=True,
timeout=settings['outgoing']['request_timeout'],
headers=headers,
- proxies=outgoing_proxies)
+ proxies=get_global_proxies())
if resp.status_code == 304:
return '', resp.status_code
@@ -828,13 +966,49 @@ def image_proxy():
@app.route('/stats', methods=['GET'])
def stats():
"""Render engine statistics page."""
- stats = get_engines_stats()
+ if not settings['general'].get('enable_stats'):
+ return page_not_found(None)
+ stats = get_engines_stats(request.preferences)
return render(
'stats.html',
stats=stats,
)
+@app.route('/stats/errors', methods=['GET'])
+def stats_errors():
+ result = {}
+ engine_names = list(errors_per_engines.keys())
+ engine_names.sort()
+ for engine_name in engine_names:
+ error_stats = errors_per_engines[engine_name]
+ sent_search_count = max(engines[engine_name].stats['sent_search_count'], 1)
+ sorted_context_count_list = sorted(error_stats.items(), key=lambda context_count: context_count[1])
+ r = []
+ percentage_sum = 0
+ for context, count in sorted_context_count_list:
+ percentage = round(20 * count / sent_search_count) * 5
+ percentage_sum += percentage
+ r.append({
+ 'filename': context.filename,
+ 'function': context.function,
+ 'line_no': context.line_no,
+ 'code': context.code,
+ 'exception_classname': context.exception_classname,
+ 'log_message': context.log_message,
+ 'log_parameters': context.log_parameters,
+ 'percentage': percentage,
+ })
+ result[engine_name] = sorted(r, reverse=True, key=lambda d: d['percentage'])
+ return jsonify(result)
+
+
+@app.route('/stats/checker', methods=['GET'])
+def stats_checker():
+ result = checker_get_result()
+ return jsonify(result)
+
+
@app.route('/robots.txt', methods=['GET'])
def robots():
return Response("""User-agent: *
@@ -857,15 +1031,15 @@ def opensearch():
if request.headers.get('User-Agent', '').lower().find('webkit') >= 0:
method = 'get'
- ret = render('opensearch.xml',
- opensearch_method=method,
- host=get_base_url(),
- urljoin=urljoin,
- override_theme='__common__')
+ ret = render(
+ 'opensearch.xml',
+ opensearch_method=method,
+ override_theme='__common__'
+ )
resp = Response(response=ret,
status=200,
- mimetype="text/xml")
+ mimetype="application/opensearchdescription+xml")
return resp
@@ -882,7 +1056,7 @@ def favicon():
@app.route('/clear_cookies')
def clear_cookies():
- resp = make_response(redirect(urljoin(settings['server']['base_url'], url_for('index'))))
+ resp = make_response(redirect(url_for('index', _external=True)))
for cookie_name in request.cookies:
resp.delete_cookie(cookie_name)
return resp
@@ -890,34 +1064,53 @@ def clear_cookies():
@app.route('/config')
def config():
- return jsonify({'categories': list(categories.keys()),
- 'engines': [{'name': engine_name,
- 'categories': engine.categories,
- 'shortcut': engine.shortcut,
- 'enabled': not engine.disabled,
- 'paging': engine.paging,
- 'language_support': engine.language_support,
- 'supported_languages':
- list(engine.supported_languages.keys())
- if isinstance(engine.supported_languages, dict)
- else engine.supported_languages,
- 'safesearch': engine.safesearch,
- 'time_range_support': engine.time_range_support,
- 'timeout': engine.timeout}
- for engine_name, engine in engines.items()],
- 'plugins': [{'name': plugin.name,
- 'enabled': plugin.default_on}
- for plugin in plugins],
- 'instance_name': settings['general']['instance_name'],
- 'locales': settings['locales'],
- 'default_locale': settings['ui']['default_locale'],
- 'autocomplete': settings['search']['autocomplete'],
- 'safe_search': settings['search']['safe_search'],
- 'default_theme': settings['ui']['default_theme'],
- 'version': VERSION_STRING,
- 'doi_resolvers': [r for r in settings['doi_resolvers']],
- 'default_doi_resolver': settings['default_doi_resolver'],
- })
+ """Return configuration in JSON format."""
+ _engines = []
+ for name, engine in engines.items():
+ if not request.preferences.validate_token(engine):
+ continue
+
+ supported_languages = engine.supported_languages
+ if isinstance(engine.supported_languages, dict):
+ supported_languages = list(engine.supported_languages.keys())
+
+ _engines.append({
+ 'name': name,
+ 'categories': engine.categories,
+ 'shortcut': engine.shortcut,
+ 'enabled': not engine.disabled,
+ 'paging': engine.paging,
+ 'language_support': engine.language_support,
+ 'supported_languages': supported_languages,
+ 'safesearch': engine.safesearch,
+ 'time_range_support': engine.time_range_support,
+ 'timeout': engine.timeout
+ })
+
+ _plugins = []
+ for _ in plugins:
+ _plugins.append({'name': _.name, 'enabled': _.default_on})
+
+ return jsonify({
+ 'categories': list(categories.keys()),
+ 'engines': _engines,
+ 'plugins': _plugins,
+ 'instance_name': settings['general']['instance_name'],
+ 'locales': settings['locales'],
+ 'default_locale': settings['ui']['default_locale'],
+ 'autocomplete': settings['search']['autocomplete'],
+ 'safe_search': settings['search']['safe_search'],
+ 'default_theme': settings['ui']['default_theme'],
+ 'version': VERSION_STRING,
+ 'brand': {
+ 'CONTACT_URL': brand.CONTACT_URL,
+ 'GIT_URL': brand.GIT_URL,
+ 'GIT_BRANCH': brand.GIT_BRANCH,
+ 'DOCS_URL': brand.DOCS_URL
+ },
+ 'doi_resolvers': [r for r in settings['doi_resolvers']],
+ 'default_doi_resolver': settings['default_doi_resolver'],
+ })
@app.errorhandler(404)
@@ -932,11 +1125,21 @@ def run():
use_debugger=searx_debug,
port=settings['server']['port'],
host=settings['server']['bind_address'],
- threaded=True
+ threaded=True,
+ extra_files=[
+ get_default_settings_path()
+ ],
)
-class ReverseProxyPathFix(object):
+def patch_application(app):
+ # serve pages with HTTP/1.1
+ WSGIRequestHandler.protocol_version = "HTTP/{}".format(settings['server']['http_protocol_version'])
+ # patch app to handle non root url-s behind proxy & wsgi
+ app.wsgi_app = ReverseProxyPathFix(ProxyFix(app.wsgi_app))
+
+
+class ReverseProxyPathFix:
'''Wrap the application in this middleware and configure the
front-end server to add these headers, to let you quietly bind
this to a URL other than / and to an HTTP scheme that is
@@ -957,19 +1160,41 @@ class ReverseProxyPathFix(object):
'''
def __init__(self, app):
+
self.app = app
+ self.script_name = None
+ self.scheme = None
+ self.server = None
+
+ if settings['server']['base_url']:
+
+ # If base_url is specified, then these values from are given
+ # preference over any Flask's generics.
+
+ base_url = urlparse(settings['server']['base_url'])
+ self.script_name = base_url.path
+ if self.script_name.endswith('/'):
+ # remove trailing slash to avoid infinite redirect on the index
+ # see https://github.com/searx/searx/issues/2729
+ self.script_name = self.script_name[:-1]
+ self.scheme = base_url.scheme
+ self.server = base_url.netloc
def __call__(self, environ, start_response):
- script_name = environ.get('HTTP_X_SCRIPT_NAME', '')
+ script_name = self.script_name or environ.get('HTTP_X_SCRIPT_NAME', '')
if script_name:
environ['SCRIPT_NAME'] = script_name
path_info = environ['PATH_INFO']
if path_info.startswith(script_name):
environ['PATH_INFO'] = path_info[len(script_name):]
- scheme = environ.get('HTTP_X_SCHEME', '')
+ scheme = self.scheme or environ.get('HTTP_X_SCHEME', '')
if scheme:
environ['wsgi.url_scheme'] = scheme
+
+ server = self.server or environ.get('HTTP_X_FORWARDED_HOST', '')
+ if server:
+ environ['HTTP_HOST'] = server
return self.app(environ, start_response)
diff --git a/searx/webutils.py b/searx/webutils.py
new file mode 100644
index 0000000..2464a09
--- /dev/null
+++ b/searx/webutils.py
@@ -0,0 +1,148 @@
+# -*- coding: utf-8 -*-
+import os
+import csv
+import hashlib
+import hmac
+import re
+import inspect
+
+from io import StringIO
+from codecs import getincrementalencoder
+
+from searx import logger
+
+
+VALID_LANGUAGE_CODE = re.compile(r'^[a-z]{2,3}(-[a-zA-Z]{2})?$')
+
+logger = logger.getChild('webutils')
+
+
+class UnicodeWriter:
+ """
+ A CSV writer which will write rows to CSV file "f",
+ which is encoded in the given encoding.
+ """
+
+ def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds):
+ # Redirect output to a queue
+ self.queue = StringIO()
+ self.writer = csv.writer(self.queue, dialect=dialect, **kwds)
+ self.stream = f
+ self.encoder = getincrementalencoder(encoding)()
+
+ def writerow(self, row):
+ self.writer.writerow(row)
+ # Fetch UTF-8 output from the queue ...
+ data = self.queue.getvalue()
+ data = data.strip('\x00')
+ # ... and reencode it into the target encoding
+ data = self.encoder.encode(data)
+ # write to the target stream
+ self.stream.write(data.decode())
+ # empty queue
+ self.queue.truncate(0)
+
+ def writerows(self, rows):
+ for row in rows:
+ self.writerow(row)
+
+
+def get_resources_directory(searx_directory, subdirectory, resources_directory):
+ if not resources_directory:
+ resources_directory = os.path.join(searx_directory, subdirectory)
+ if not os.path.isdir(resources_directory):
+ raise Exception(resources_directory + " is not a directory")
+ return resources_directory
+
+
+def get_themes(templates_path):
+ """Returns available themes list."""
+ themes = os.listdir(templates_path)
+ if '__common__' in themes:
+ themes.remove('__common__')
+ return themes
+
+
+def get_static_files(static_path):
+ static_files = set()
+ static_path_length = len(static_path) + 1
+ for directory, _, files in os.walk(static_path):
+ for filename in files:
+ f = os.path.join(directory[static_path_length:], filename)
+ static_files.add(f)
+ return static_files
+
+
+def get_result_templates(templates_path):
+ result_templates = set()
+ templates_path_length = len(templates_path) + 1
+ for directory, _, files in os.walk(templates_path):
+ if directory.endswith('result_templates'):
+ for filename in files:
+ f = os.path.join(directory[templates_path_length:], filename)
+ result_templates.add(f)
+ return result_templates
+
+
+def new_hmac(secret_key, url):
+ try:
+ secret_key_bytes = bytes(secret_key, 'utf-8')
+ except TypeError as err:
+ if isinstance(secret_key, bytes):
+ secret_key_bytes = secret_key
+ else:
+ raise err
+ return hmac.new(secret_key_bytes, url, hashlib.sha256).hexdigest()
+
+
+def prettify_url(url, max_length=74):
+ if len(url) > max_length:
+ chunk_len = int(max_length / 2 + 1)
+ return '{0}[...]{1}'.format(url[:chunk_len], url[-chunk_len:])
+ else:
+ return url
+
+
+def highlight_content(content, query):
+
+ if not content:
+ return None
+ # ignoring html contents
+ # TODO better html content detection
+ if content.find('<') != -1:
+ return content
+
+ if content.lower().find(query.lower()) > -1:
+ query_regex = '({0})'.format(re.escape(query))
+ content = re.sub(query_regex, '<span class="highlight">\\1</span>',
+ content, flags=re.I | re.U)
+ else:
+ regex_parts = []
+ for chunk in query.split():
+ chunk = chunk.replace('"', '')
+ if len(chunk) == 0:
+ continue
+ elif len(chunk) == 1:
+ regex_parts.append('\\W+{0}\\W+'.format(re.escape(chunk)))
+ else:
+ regex_parts.append('{0}'.format(re.escape(chunk)))
+ query_regex = '({0})'.format('|'.join(regex_parts))
+ content = re.sub(query_regex, '<span class="highlight">\\1</span>',
+ content, flags=re.I | re.U)
+
+ return content
+
+
+def is_flask_run_cmdline():
+ """Check if the application was started using "flask run" command line
+
+ Inspect the callstack.
+ See https://github.com/pallets/flask/blob/master/src/flask/__main__.py
+
+ Returns:
+ bool: True if the application was started using "flask run".
+ """
+ frames = inspect.stack()
+ if len(frames) < 2:
+ return False
+ return frames[-2].filename.endswith('flask/cli.py')
diff --git a/searx_extra/__init__.py b/searx_extra/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/searx_extra/__init__.py
diff --git a/utils/google_search.py b/searx_extra/google_search.py
index cad32ee..cad32ee 100644
--- a/utils/google_search.py
+++ b/searx_extra/google_search.py
diff --git a/searx_extra/standalone_searx.py b/searx_extra/standalone_searx.py
new file mode 100755
index 0000000..b30762d
--- /dev/null
+++ b/searx_extra/standalone_searx.py
@@ -0,0 +1,217 @@
+#!/usr/bin/env python
+"""Script to run searx from terminal.
+
+Getting categories without initiate the engine will only return `['general']`
+
+>>> import searx.engines
+... list(searx.engines.categories.keys())
+['general']
+>>> import searx.search
+... searx.search.initialize()
+... list(searx.engines.categories.keys())
+['general', 'it', 'science', 'images', 'news', 'videos', 'music', 'files', 'social media', 'map']
+
+Example to use this script:
+
+.. code:: bash
+
+ $ python3 searx_extra/standalone_searx.py rain
+
+Example to run it from python:
+
+>>> import importlib
+... import json
+... import sys
+... import searx.engines
+... import searx.search
+... search_query = 'rain'
+... # initialize engines
+... searx.search.initialize()
+... # load engines categories once instead of each time the function called
+... engine_cs = list(searx.engines.categories.keys())
+... # load module
+... spec = importlib.util.spec_from_file_location(
+... 'utils.standalone_searx', 'searx_extra/standalone_searx.py')
+... sas = importlib.util.module_from_spec(spec)
+... spec.loader.exec_module(sas)
+... # use function from module
+... prog_args = sas.parse_argument([search_query], category_choices=engine_cs)
+... search_q = sas.get_search_query(prog_args, engine_categories=engine_cs)
+... res_dict = sas.to_dict(search_q)
+... sys.stdout.write(json.dumps(
+... res_dict, sort_keys=True, indent=4, ensure_ascii=False,
+... default=sas.json_serial))
+{
+ "answers": [],
+ "infoboxes": [ {...} ],
+ "paging": true,
+ "results": [... ],
+ "results_number": 820000000.0,
+ "search": {
+ "lang": "all",
+ "pageno": 1,
+ "q": "rain",
+ "safesearch": 0,
+ "timerange": null
+ },
+ "suggestions": [...]
+}
+""" # noqa: E501
+# pylint: disable=pointless-string-statement
+'''
+searx is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+searx is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with searx. If not, see < http://www.gnu.org/licenses/ >.
+
+(C) 2016- by Alexandre Flament, <alex@al-f.net>
+'''
+# pylint: disable=wrong-import-position
+import argparse
+import sys
+from datetime import datetime
+from json import dumps
+from typing import Any, Dict, List, Optional
+
+import searx
+import searx.preferences
+import searx.query
+import searx.search
+import searx.webadapter
+
+EngineCategoriesVar = Optional[List[str]]
+
+
+def get_search_query(
+ args: argparse.Namespace, engine_categories: EngineCategoriesVar = None
+) -> searx.search.SearchQuery:
+ """Get search results for the query"""
+ if engine_categories is None:
+ engine_categories = list(searx.engines.categories.keys())
+ try:
+ category = args.category.decode('utf-8')
+ except AttributeError:
+ category = args.category
+ form = {
+ "q": args.query,
+ "categories": category,
+ "pageno": str(args.pageno),
+ "language": args.lang,
+ "time_range": args.timerange
+ }
+ preferences = searx.preferences.Preferences(
+ ['oscar'], engine_categories, searx.engines.engines, [])
+ preferences.key_value_settings['safesearch'].parse(args.safesearch)
+
+ search_query = searx.webadapter.get_search_query_from_webapp(
+ preferences, form)[0]
+ return search_query
+
+
+def no_parsed_url(results: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
+ """Remove parsed url from dict."""
+ for result in results:
+ del result['parsed_url']
+ return results
+
+
+def json_serial(obj: Any) -> Any:
+ """JSON serializer for objects not serializable by default json code.
+
+ :raise TypeError: raised when **obj** is not serializable
+ """
+ if isinstance(obj, datetime):
+ serial = obj.isoformat()
+ return serial
+ if isinstance(obj, bytes):
+ return obj.decode('utf8')
+ if isinstance(obj, set):
+ return list(obj)
+ raise TypeError("Type ({}) not serializable".format(type(obj)))
+
+
+def to_dict(search_query: searx.search.SearchQuery) -> Dict[str, Any]:
+ """Get result from parsed arguments."""
+ result_container = searx.search.Search(search_query).search()
+ result_container_json = {
+ "search": {
+ "q": search_query.query,
+ "pageno": search_query.pageno,
+ "lang": search_query.lang,
+ "safesearch": search_query.safesearch,
+ "timerange": search_query.time_range,
+ },
+ "results": no_parsed_url(result_container.get_ordered_results()),
+ "infoboxes": result_container.infoboxes,
+ "suggestions": list(result_container.suggestions),
+ "answers": list(result_container.answers),
+ "paging": result_container.paging,
+ "results_number": result_container.results_number()
+ }
+ return result_container_json
+
+
+def parse_argument(
+ args: Optional[List[str]]=None,
+ category_choices: EngineCategoriesVar=None
+) -> argparse.Namespace:
+ """Parse command line.
+
+ :raise SystemExit: Query argument required on `args`
+
+ Examples:
+
+ >>> import importlib
+ ... # load module
+ ... spec = importlib.util.spec_from_file_location(
+ ... 'utils.standalone_searx', 'utils/standalone_searx.py')
+ ... sas = importlib.util.module_from_spec(spec)
+ ... spec.loader.exec_module(sas)
+ ... sas.parse_argument()
+ usage: ptipython [-h] [--category [{general}]] [--lang [LANG]] [--pageno [PAGENO]] [--safesearch [{0,1,2}]] [--timerange [{day,week,month,year}]]
+ query
+ SystemExit: 2
+ >>> sas.parse_argument(['rain'])
+ Namespace(category='general', lang='all', pageno=1, query='rain', safesearch='0', timerange=None)
+ """ # noqa: E501
+ if not category_choices:
+ category_choices = list(searx.engines.categories.keys())
+ parser = argparse.ArgumentParser(description='Standalone searx.')
+ parser.add_argument('query', type=str,
+ help='Text query')
+ parser.add_argument('--category', type=str, nargs='?',
+ choices=category_choices,
+ default='general',
+ help='Search category')
+ parser.add_argument('--lang', type=str, nargs='?', default='all',
+ help='Search language')
+ parser.add_argument('--pageno', type=int, nargs='?', default=1,
+ help='Page number starting from 1')
+ parser.add_argument(
+ '--safesearch', type=str, nargs='?',
+ choices=['0', '1', '2'], default='0',
+ help='Safe content filter from none to strict')
+ parser.add_argument(
+ '--timerange', type=str,
+ nargs='?', choices=['day', 'week', 'month', 'year'],
+ help='Filter by time range')
+ return parser.parse_args(args)
+
+
+if __name__ == '__main__':
+ searx.search.initialize()
+ engine_cs = list(searx.engines.categories.keys())
+ prog_args = parse_argument(category_choices=engine_cs)
+ search_q = get_search_query(prog_args, engine_categories=engine_cs)
+ res_dict = to_dict(search_q)
+ sys.stdout.write(dumps(
+ res_dict, sort_keys=True, indent=4, ensure_ascii=False,
+ default=json_serial))
diff --git a/searx_extra/update/__init__.py b/searx_extra/update/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/searx_extra/update/__init__.py
diff --git a/searx_extra/update/update_ahmia_blacklist.py b/searx_extra/update/update_ahmia_blacklist.py
new file mode 100755
index 0000000..f645880
--- /dev/null
+++ b/searx_extra/update/update_ahmia_blacklist.py
@@ -0,0 +1,30 @@
+#!/usr/bin/env python
+
+# This script saves Ahmia's blacklist for onion sites.
+# More info in https://ahmia.fi/blacklist/
+
+# set path
+from os.path import join
+
+import requests
+from searx import searx_dir
+
+URL = 'https://ahmia.fi/blacklist/banned/'
+
+
+def fetch_ahmia_blacklist():
+ resp = requests.get(URL, timeout=3.0)
+ if resp.status_code != 200:
+ raise Exception("Error fetching Ahmia blacklist, HTTP code " + resp.status_code)
+ else:
+ blacklist = resp.text.split()
+ return blacklist
+
+
+def get_ahmia_blacklist_filename():
+ return join(join(searx_dir, "data"), "ahmia_blacklist.txt")
+
+
+blacklist = fetch_ahmia_blacklist()
+with open(get_ahmia_blacklist_filename(), "w") as f:
+ f.write('\n'.join(blacklist))
diff --git a/searx_extra/update/update_currencies.py b/searx_extra/update/update_currencies.py
new file mode 100755
index 0000000..0cfb7a9
--- /dev/null
+++ b/searx_extra/update/update_currencies.py
@@ -0,0 +1,150 @@
+#!/usr/bin/env python
+
+import re
+import unicodedata
+import json
+
+# set path
+from sys import path
+from os.path import realpath, dirname, join
+
+from searx import searx_dir, settings
+from searx.engines.wikidata import send_wikidata_query
+
+
+# ORDER BY (with all the query fields) is important to keep a deterministic result order
+# so multiple invokation of this script doesn't change currencies.json
+SARQL_REQUEST = """
+SELECT DISTINCT ?iso4217 ?unit ?unicode ?label ?alias WHERE {
+ ?item wdt:P498 ?iso4217; rdfs:label ?label.
+ OPTIONAL { ?item skos:altLabel ?alias FILTER (LANG (?alias) = LANG(?label)). }
+ OPTIONAL { ?item wdt:P5061 ?unit. }
+ OPTIONAL { ?item wdt:P489 ?symbol.
+ ?symbol wdt:P487 ?unicode. }
+ MINUS { ?item wdt:P582 ?end_data . } # Ignore monney with an end date
+ MINUS { ?item wdt:P31/wdt:P279* wd:Q15893266 . } # Ignore "former entity" (obsolete currency)
+ FILTER(LANG(?label) IN (%LANGUAGES_SPARQL%)).
+}
+ORDER BY ?iso4217 ?unit ?unicode ?label ?alias
+"""
+
+# ORDER BY (with all the query fields) is important to keep a deterministic result order
+# so multiple invokation of this script doesn't change currencies.json
+SPARQL_WIKIPEDIA_NAMES_REQUEST = """
+SELECT DISTINCT ?iso4217 ?article_name WHERE {
+ ?item wdt:P498 ?iso4217 .
+ ?article schema:about ?item ;
+ schema:name ?article_name ;
+ schema:isPartOf [ wikibase:wikiGroup "wikipedia" ]
+ MINUS { ?item wdt:P582 ?end_data . } # Ignore monney with an end date
+ MINUS { ?item wdt:P31/wdt:P279* wd:Q15893266 . } # Ignore "former entity" (obsolete currency)
+ FILTER(LANG(?article_name) IN (%LANGUAGES_SPARQL%)).
+}
+ORDER BY ?iso4217 ?article_name
+"""
+
+
+LANGUAGES = settings['locales'].keys()
+LANGUAGES_SPARQL = ', '.join(set(map(lambda l: repr(l.split('_')[0]), LANGUAGES)))
+
+
+def remove_accents(name):
+ return unicodedata.normalize('NFKD', name).lower()
+
+
+def remove_extra(name):
+ for c in ('(', ':'):
+ if c in name:
+ name = name.split(c)[0].strip()
+ return name
+
+
+def _normalize_name(name):
+ name = re.sub(' +', ' ', remove_accents(name.lower()).replace('-', ' '))
+ name = remove_extra(name)
+ return name
+
+
+def add_currency_name(db, name, iso4217, normalize_name=True):
+ db_names = db['names']
+
+ if normalize_name:
+ name = _normalize_name(name)
+
+ iso4217_set = db_names.setdefault(name, [])
+ if iso4217 not in iso4217_set:
+ iso4217_set.insert(0, iso4217)
+
+
+def add_currency_label(db, label, iso4217, language):
+ labels = db['iso4217'].setdefault(iso4217, {})
+ labels[language] = label
+
+
+def wikidata_request_result_iterator(request):
+ result = send_wikidata_query(request.replace('%LANGUAGES_SPARQL%', LANGUAGES_SPARQL))
+ if result is not None:
+ for r in result['results']['bindings']:
+ yield r
+
+
+def fetch_db():
+ db = {
+ 'names': {},
+ 'iso4217': {},
+ }
+
+ for r in wikidata_request_result_iterator(SPARQL_WIKIPEDIA_NAMES_REQUEST):
+ iso4217 = r['iso4217']['value']
+ article_name = r['article_name']['value']
+ article_lang = r['article_name']['xml:lang']
+ add_currency_name(db, article_name, iso4217)
+ add_currency_label(db, article_name, iso4217, article_lang)
+
+ for r in wikidata_request_result_iterator(SARQL_REQUEST):
+ iso4217 = r['iso4217']['value']
+ if 'label' in r:
+ label = r['label']['value']
+ label_lang = r['label']['xml:lang']
+ add_currency_name(db, label, iso4217)
+ add_currency_label(db, label, iso4217, label_lang)
+
+ if 'alias' in r:
+ add_currency_name(db, r['alias']['value'], iso4217)
+
+ if 'unicode' in r:
+ add_currency_name(db, r['unicode']['value'], iso4217, normalize_name=False)
+
+ if 'unit' in r:
+ add_currency_name(db, r['unit']['value'], iso4217, normalize_name=False)
+
+ # reduce memory usage:
+ # replace lists with one item by the item.
+ # see searx.search.processors.online_currency.name_to_iso4217
+ for name in db['names']:
+ if len(db['names'][name]) == 1:
+ db['names'][name] = db['names'][name][0]
+
+ return db
+
+
+def get_filename():
+ return join(join(searx_dir, "data"), "currencies.json")
+
+
+def main():
+ #
+ db = fetch_db()
+ # static
+ add_currency_name(db, "euro", 'EUR')
+ add_currency_name(db, "euros", 'EUR')
+ add_currency_name(db, "dollar", 'USD')
+ add_currency_name(db, "dollars", 'USD')
+ add_currency_name(db, "peso", 'MXN')
+ add_currency_name(db, "pesos", 'MXN')
+
+ with open(get_filename(), 'w', encoding='utf8') as f:
+ json.dump(db, f, ensure_ascii=False, indent=4)
+
+if __name__ == '__main__':
+ main()
diff --git a/searx_extra/update/update_engine_descriptions.py b/searx_extra/update/update_engine_descriptions.py
new file mode 100755
index 0000000..109fdbf
--- /dev/null
+++ b/searx_extra/update/update_engine_descriptions.py
@@ -0,0 +1,202 @@
+#!/usr/bin/env python
+
+import sys
+import json
+from urllib.parse import quote, urlparse
+import detect_language
+from lxml.html import fromstring
+
+from searx.engines.wikidata import send_wikidata_query
+from searx.utils import extract_text
+import searx
+import searx.search
+import searx.poolrequests
+
+SPARQL_WIKIPEDIA_ARTICLE = """
+SELECT DISTINCT ?item ?name
+WHERE {
+ VALUES ?item { %IDS% }
+ ?article schema:about ?item ;
+ schema:inLanguage ?lang ;
+ schema:name ?name ;
+ schema:isPartOf [ wikibase:wikiGroup "wikipedia" ] .
+ FILTER(?lang in (%LANGUAGES_SPARQL%)) .
+ FILTER (!CONTAINS(?name, ':')) .
+}
+"""
+
+SPARQL_DESCRIPTION = """
+SELECT DISTINCT ?item ?itemDescription
+WHERE {
+ VALUES ?item { %IDS% }
+ ?item schema:description ?itemDescription .
+ FILTER (lang(?itemDescription) in (%LANGUAGES_SPARQL%))
+}
+ORDER BY ?itemLang
+"""
+
+LANGUAGES = searx.settings['locales'].keys()
+LANGUAGES_SPARQL = ', '.join(set(map(lambda l: repr(l.split('_')[0]), LANGUAGES)))
+IDS = None
+
+descriptions = {}
+wd_to_engine_name = {}
+
+
+def normalize_description(description):
+ for c in [chr(c) for c in range(0, 31)]:
+ description = description.replace(c, ' ')
+ description = ' '.join(description.strip().split())
+ return description
+
+
+def update_description(engine_name, lang, description, source, replace=True):
+ if replace or lang not in descriptions[engine_name]:
+ descriptions[engine_name][lang] = [normalize_description(description), source]
+
+
+def get_wikipedia_summary(language, pageid):
+ search_url = 'https://{language}.wikipedia.org/api/rest_v1/page/summary/{title}'
+ url = search_url.format(title=quote(pageid), language=language)
+ try:
+ response = searx.poolrequests.get(url)
+ response.raise_for_status()
+ api_result = json.loads(response.text)
+ return api_result.get('extract')
+ except:
+ return None
+
+
+def detect_language(text):
+ r = cld3.get_language(str(text)) # pylint: disable=E1101
+ if r is not None and r.probability >= 0.98 and r.is_reliable:
+ return r.language
+ return None
+
+
+def get_website_description(url, lang1, lang2=None):
+ headers = {
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0',
+ 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
+ 'DNT': '1',
+ 'Upgrade-Insecure-Requests': '1',
+ 'Sec-GPC': '1',
+ 'Cache-Control': 'max-age=0',
+ }
+ if lang1 is not None:
+ lang_list = [lang1]
+ if lang2 is not None:
+ lang_list.append(lang2)
+ headers['Accept-Language'] = f'{",".join(lang_list)};q=0.8'
+ try:
+ response = searx.poolrequests.get(url, headers=headers, timeout=10)
+ response.raise_for_status()
+ except Exception:
+ return (None, None)
+
+ try:
+ html = fromstring(response.text)
+ except ValueError:
+ html = fromstring(response.content)
+
+ description = extract_text(html.xpath('/html/head/meta[@name="description"]/@content'))
+ if not description:
+ description = extract_text(html.xpath('/html/head/meta[@property="og:description"]/@content'))
+ if not description:
+ description = extract_text(html.xpath('/html/head/title'))
+ lang = extract_text(html.xpath('/html/@lang'))
+ if lang is None and len(lang1) > 0:
+ lang = lang1
+ lang = detect_language(description) or lang or 'en'
+ lang = lang.split('_')[0]
+ lang = lang.split('-')[0]
+ return (lang, description)
+
+
+def initialize():
+ global descriptions, wd_to_engine_name, IDS
+ searx.search.initialize()
+ for engine_name, engine in searx.engines.engines.items():
+ descriptions[engine_name] = {}
+ wikidata_id = getattr(engine, "about", {}).get('wikidata_id')
+ if wikidata_id is not None:
+ wd_to_engine_name.setdefault(wikidata_id, set()).add(engine_name)
+
+ IDS = ' '.join(list(map(lambda wd_id: 'wd:' + wd_id, wd_to_engine_name.keys())))
+
+
+def fetch_wikidata_descriptions():
+ global IDS
+ result = send_wikidata_query(SPARQL_DESCRIPTION
+ .replace('%IDS%', IDS)
+ .replace('%LANGUAGES_SPARQL%', LANGUAGES_SPARQL))
+ if result is not None:
+ for binding in result['results']['bindings']:
+ wikidata_id = binding['item']['value'].replace('http://www.wikidata.org/entity/', '')
+ lang = binding['itemDescription']['xml:lang']
+ description = binding['itemDescription']['value']
+ if ' ' in description: # skip unique word description (like "website")
+ for engine_name in wd_to_engine_name[wikidata_id]:
+ update_description(engine_name, lang, description, 'wikidata')
+
+
+def fetch_wikipedia_descriptions():
+ global IDS
+ result = send_wikidata_query(SPARQL_WIKIPEDIA_ARTICLE
+ .replace('%IDS%', IDS)
+ .replace('%LANGUAGES_SPARQL%', LANGUAGES_SPARQL))
+ if result is not None:
+ for binding in result['results']['bindings']:
+ wikidata_id = binding['item']['value'].replace('http://www.wikidata.org/entity/', '')
+ lang = binding['name']['xml:lang']
+ pageid = binding['name']['value']
+ description = get_wikipedia_summary(lang, pageid)
+ if description is not None and ' ' in description:
+ for engine_name in wd_to_engine_name[wikidata_id]:
+ update_description(engine_name, lang, description, 'wikipedia')
+
+
+def normalize_url(url):
+ url = url.replace('{language}', 'en')
+ url = urlparse(url)._replace(path='/', params='', query='', fragment='').geturl()
+ url = url.replace('https://api.', 'https://')
+ return url
+
+
+def fetch_website_description(engine_name, website):
+ default_lang, default_description = get_website_description(website, None, None)
+ if default_lang is None or default_description is None:
+ return
+ if default_lang not in descriptions[engine_name]:
+ descriptions[engine_name][default_lang] = [normalize_description(default_description), website]
+ for request_lang in ('en-US', 'es-US', 'fr-FR', 'zh', 'ja', 'ru', 'ar', 'ko'):
+ if request_lang.split('-')[0] not in descriptions[engine_name]:
+ lang, desc = get_website_description(website, request_lang, request_lang.split('-')[0])
+ if desc is not None and desc != default_description:
+ update_description(engine_name, lang, desc, website, replace=False)
+ else:
+ break
+
+
+def fetch_website_descriptions():
+ for engine_name, engine in searx.engines.engines.items():
+ website = getattr(engine, "about", {}).get('website')
+ if website is None:
+ website = normalize_url(getattr(engine, "search_url"))
+ if website is None:
+ website = normalize_url(getattr(engine, "base_url"))
+ if website is not None:
+ fetch_website_description(engine_name, website)
+
+
+def main():
+ initialize()
+ fetch_wikidata_descriptions()
+ fetch_wikipedia_descriptions()
+ fetch_website_descriptions()
+
+ sys.stdout.write(json.dumps(descriptions, indent=1, separators=(',', ':'), ensure_ascii=False))
+
+
+if __name__ == "__main__":
+ main()
diff --git a/searx_extra/update/update_external_bangs.py b/searx_extra/update/update_external_bangs.py
new file mode 100755
index 0000000..b884964
--- /dev/null
+++ b/searx_extra/update/update_external_bangs.py
@@ -0,0 +1,157 @@
+#!/usr/bin/env python
+"""
+Update searx/data/external_bangs.json using the duckduckgo bangs.
+
+https://duckduckgo.com/newbang loads
+* a javascript which provides the bang version ( https://duckduckgo.com/bv1.js )
+* a JSON file which contains the bangs ( https://duckduckgo.com/bang.v260.js for example )
+
+This script loads the javascript, then the bangs.
+
+The javascript URL may change in the future ( for example https://duckduckgo.com/bv2.js ),
+but most probably it will requires to update RE_BANG_VERSION
+"""
+# pylint: disable=C0116
+
+import json
+import re
+from os.path import join
+
+import requests
+
+from searx import searx_dir # pylint: disable=E0401 C0413
+
+
+# from https://duckduckgo.com/newbang
+URL_BV1 = 'https://duckduckgo.com/bv1.js'
+RE_BANG_VERSION = re.compile(r'\/bang\.v([0-9]+)\.js')
+HTTPS_COLON = 'https:'
+HTTP_COLON = 'http:'
+
+
+def get_bang_url():
+ response = requests.get(URL_BV1)
+ response.raise_for_status()
+
+ r = RE_BANG_VERSION.findall(response.text)
+ return f'https://duckduckgo.com/bang.v{r[0]}.js', r[0]
+
+
+def fetch_ddg_bangs(url):
+ response = requests.get(url)
+ response.raise_for_status()
+ return json.loads(response.content.decode())
+
+
+def merge_when_no_leaf(node):
+ """Minimize the number of nodes
+
+ A -> B -> C
+ B is child of A
+ C is child of B
+
+ If there are no C equals to '*', then each C are merged into A
+
+ For example:
+ d -> d -> g -> * (ddg*)
+ -> i -> g -> * (dig*)
+ becomes
+ d -> dg -> *
+ -> ig -> *
+ """
+ restart = False
+ if not isinstance(node, dict):
+ return
+
+ # create a copy of the keys so node can be modified
+ keys = list(node.keys())
+
+ for key in keys:
+ if key == '*':
+ continue
+
+ value = node[key]
+ value_keys = list(value.keys())
+ if '*' not in value_keys:
+ for value_key in value_keys:
+ node[key + value_key] = value[value_key]
+ merge_when_no_leaf(node[key + value_key])
+ del node[key]
+ restart = True
+ else:
+ merge_when_no_leaf(value)
+
+ if restart:
+ merge_when_no_leaf(node)
+
+
+def optimize_leaf(parent, parent_key, node):
+ if not isinstance(node, dict):
+ return
+
+ if len(node) == 1 and '*' in node and parent is not None:
+ parent[parent_key] = node['*']
+ else:
+ for key, value in node.items():
+ optimize_leaf(node, key, value)
+
+
+def parse_ddg_bangs(ddg_bangs):
+ bang_trie = {}
+ bang_urls = {}
+
+ for bang_definition in ddg_bangs:
+ # bang_list
+ bang_url = bang_definition['u']
+ if '{{{s}}}' not in bang_url:
+ # ignore invalid bang
+ continue
+
+ bang_url = bang_url.replace('{{{s}}}', chr(2))
+
+ # only for the https protocol: "https://example.com" becomes "//example.com"
+ if bang_url.startswith(HTTPS_COLON + '//'):
+ bang_url = bang_url[len(HTTPS_COLON):]
+
+ #
+ if bang_url.startswith(HTTP_COLON + '//') and bang_url[len(HTTP_COLON):] in bang_urls:
+ # if the bang_url uses the http:// protocol, and the same URL exists in https://
+ # then reuse the https:// bang definition. (written //example.com)
+ bang_def_output = bang_urls[bang_url[len(HTTP_COLON):]]
+ else:
+ # normal use case : new http:// URL or https:// URL (without "https:", see above)
+ bang_rank = str(bang_definition['r'])
+ bang_def_output = bang_url + chr(1) + bang_rank
+ bang_def_output = bang_urls.setdefault(bang_url, bang_def_output)
+
+ bang_urls[bang_url] = bang_def_output
+
+ # bang name
+ bang = bang_definition['t']
+
+ # bang_trie
+ t = bang_trie
+ for bang_letter in bang:
+ t = t.setdefault(bang_letter, {})
+ t = t.setdefault('*', bang_def_output)
+
+ # optimize the trie
+ merge_when_no_leaf(bang_trie)
+ optimize_leaf(None, None, bang_trie)
+
+ return bang_trie
+
+
+def get_bangs_filename():
+ return join(join(searx_dir, "data"), "external_bangs.json")
+
+
+if __name__ == '__main__':
+ bangs_url, bangs_version = get_bang_url()
+ print(f'fetch bangs from {bangs_url}')
+ output = {
+ 'version': bangs_version,
+ 'trie': parse_ddg_bangs(fetch_ddg_bangs(bangs_url))
+ }
+ with open(get_bangs_filename(), 'w', encoding='utf-8') as fp:
+ json.dump(output, fp, ensure_ascii=False, indent=4)
diff --git a/utils/fetch_firefox_version.py b/searx_extra/update/update_firefox_version.py
index ed17958..6acfe76 100755
--- a/utils/fetch_firefox_version.py
+++ b/searx_extra/update/update_firefox_version.py
@@ -1,17 +1,12 @@
#!/usr/bin/env python
-# set path
-from sys import path
-from os.path import realpath, dirname, join
-path.append(realpath(dirname(realpath(__file__)) + '/../'))
-
-#
import json
import requests
import re
+from os.path import dirname, join
+from urllib.parse import urlparse, urljoin
from distutils.version import LooseVersion, StrictVersion
from lxml import html
-from searx.url_utils import urlparse, urljoin
from searx import searx_dir
URL = 'https://ftp.mozilla.org/pub/firefox/releases/'
@@ -24,7 +19,7 @@ NORMAL_REGEX = re.compile('^[0-9]+\.[0-9](\.[0-9])?$')
#
useragents = {
"versions": (),
- "os": ('Windows NT 10; WOW64',
+ "os": ('Windows NT 10.0; WOW64',
'X11; Linux x86_64'),
"ua": "Mozilla/5.0 ({os}; rv:{version}) Gecko/20100101 Firefox/{version}"
}
diff --git a/searx_extra/update/update_languages.py b/searx_extra/update/update_languages.py
new file mode 100755
index 0000000..e632825
--- /dev/null
+++ b/searx_extra/update/update_languages.py
@@ -0,0 +1,205 @@
+#!/usr/bin/env python
+
+# This script generates languages.py from intersecting each engine's supported languages.
+#
+# Output files: searx/data/engines_languages.json and searx/languages.py
+
+import json
+from pathlib import Path
+from pprint import pformat
+from babel import Locale, UnknownLocaleError
+from babel.languages import get_global
+
+from searx import settings, searx_dir
+from searx.engines import initialize_engines, engines
+
+# Output files.
+engines_languages_file = Path(searx_dir) / 'data' / 'engines_languages.json'
+languages_file = Path(searx_dir) / 'languages.py'
+
+
+# Fetchs supported languages for each engine and writes json file with those.
+def fetch_supported_languages():
+
+ engines_languages = dict()
+ names = list(engines)
+ names.sort()
+
+ for engine_name in names:
+ if hasattr(engines[engine_name], 'fetch_supported_languages'):
+ engines_languages[engine_name] = engines[engine_name].fetch_supported_languages()
+ print("fetched %s languages from engine %s" % (
+ len(engines_languages[engine_name]), engine_name))
+ if type(engines_languages[engine_name]) == list:
+ engines_languages[engine_name] = sorted(engines_languages[engine_name])
+
+ # write json file
+ with open(engines_languages_file, 'w', encoding='utf-8') as f:
+ json.dump(engines_languages, f, indent=2, sort_keys=True)
+
+ return engines_languages
+
+
+# Get babel Locale object from lang_code if possible.
+def get_locale(lang_code):
+ try:
+ locale = Locale.parse(lang_code, sep='-')
+ return locale
+ except (UnknownLocaleError, ValueError):
+ return None
+
+
+# Join all language lists.
+def join_language_lists(engines_languages):
+ language_list = dict()
+ for engine_name in engines_languages:
+ for lang_code in engines_languages[engine_name]:
+
+ # apply custom fixes if necessary
+ if lang_code in getattr(engines[engine_name], 'language_aliases', {}).values():
+ lang_code = next(lc for lc, alias in engines[engine_name].language_aliases.items()
+ if lang_code == alias)
+
+ locale = get_locale(lang_code)
+
+ # ensure that lang_code uses standard language and country codes
+ if locale and locale.territory:
+ lang_code = "{lang}-{country}".format(lang=locale.language, country=locale.territory)
+ short_code = lang_code.split('-')[0]
+
+ # add language without country if not in list
+ if short_code not in language_list:
+ if locale:
+ # get language's data from babel's Locale object
+ language_name = locale.get_language_name().title()
+ english_name = locale.english_name.split(' (')[0]
+ elif short_code in engines_languages['wikipedia']:
+ # get language's data from wikipedia if not known by babel
+ language_name = engines_languages['wikipedia'][short_code]['name']
+ english_name = engines_languages['wikipedia'][short_code]['english_name']
+ else:
+ language_name = None
+ english_name = None
+
+ # add language to list
+ language_list[short_code] = {'name': language_name,
+ 'english_name': english_name,
+ 'counter': set(),
+ 'countries': dict()}
+
+ # add language with country if not in list
+ if lang_code != short_code and lang_code not in language_list[short_code]['countries']:
+ country_name = ''
+ if locale:
+ # get country name from babel's Locale object
+ country_name = locale.get_territory_name()
+
+ language_list[short_code]['countries'][lang_code] = {'country_name': country_name,
+ 'counter': set()}
+
+ # count engine for both language_country combination and language alone
+ language_list[short_code]['counter'].add(engine_name)
+ if lang_code != short_code:
+ language_list[short_code]['countries'][lang_code]['counter'].add(engine_name)
+
+ return language_list
+
+
+# Filter language list so it only includes the most supported languages and countries
+def filter_language_list(all_languages):
+ min_engines_per_lang = 15
+ min_engines_per_country = 10
+ main_engines = [engine_name for engine_name in engines.keys()
+ if 'general' in engines[engine_name].categories and
+ engines[engine_name].supported_languages and
+ not engines[engine_name].disabled]
+
+ # filter list to include only languages supported by most engines or all default general engines
+ filtered_languages = {code: lang for code, lang
+ in all_languages.items()
+ if (len(lang['counter']) >= min_engines_per_lang or
+ all(main_engine in lang['counter']
+ for main_engine in main_engines))}
+
+ def _copy_lang_data(lang, country_name=None):
+ new_dict = dict()
+ new_dict['name'] = all_languages[lang]['name']
+ new_dict['english_name'] = all_languages[lang]['english_name']
+ if country_name:
+ new_dict['country_name'] = country_name
+ return new_dict
+
+ def _country_count(i):
+ return len(countries[sorted_countries[i]]['counter'])
+
+ # for each language get country codes supported by most engines or at least one country code
+ filtered_languages_with_countries = dict()
+ for lang, lang_data in filtered_languages.items():
+ countries = lang_data['countries']
+ filtered_countries = dict()
+
+ # get language's country codes with enough supported engines
+ for lang_country, country_data in countries.items():
+ if len(country_data['counter']) >= min_engines_per_country:
+ filtered_countries[lang_country] = _copy_lang_data(lang, country_data['country_name'])
+
+ # add language without countries too if there's more than one country to choose from
+ if len(filtered_countries) > 1:
+ filtered_countries[lang] = _copy_lang_data(lang)
+ elif len(filtered_countries) == 1:
+ # if there's only one country per language, it's not necessary to show country name
+ lang_country = next(iter(filtered_countries))
+ filtered_countries[lang_country]['country_name'] = None
+
+ # if no country has enough engines try to get most likely country code from babel
+ if not filtered_countries:
+ lang_country = None
+ subtags = get_global('likely_subtags').get(lang)
+ if subtags:
+ country_code = subtags.split('_')[-1]
+ if len(country_code) == 2:
+ lang_country = "{lang}-{country}".format(lang=lang, country=country_code)
+
+ if lang_country:
+ filtered_countries[lang_country] = _copy_lang_data(lang)
+ else:
+ filtered_countries[lang] = _copy_lang_data(lang)
+
+ filtered_languages_with_countries.update(filtered_countries)
+
+ return filtered_languages_with_countries
+
+
+# Write languages.py.
+def write_languages_file(languages):
+ file_headers = (
+ "# -*- coding: utf-8 -*-",
+ "# list of language codes",
+ "# this file is generated automatically by utils/fetch_languages.py",
+ "language_codes ="
+ )
+
+ language_codes = tuple([
+ (
+ code,
+ languages[code]['name'].split(' (')[0],
+ languages[code].get('country_name') or '',
+ languages[code].get('english_name') or ''
+ ) for code in sorted(languages)
+ ])
+
+ with open(languages_file, 'w') as new_file:
+ file_content = "{file_headers} \\\n{language_codes}".format(
+ file_headers='\n'.join(file_headers),
+ language_codes=pformat(language_codes, indent=4)
+ )
+ new_file.write(file_content)
+ new_file.close()
+
+
+if __name__ == "__main__":
+ initialize_engines(settings['engines'])
+ engines_languages = fetch_supported_languages()
+ all_languages = join_language_lists(engines_languages)
+ filtered_languages = filter_language_list(all_languages)
+ write_languages_file(filtered_languages)
diff --git a/searx_extra/update/update_osm_keys_tags.py b/searx_extra/update/update_osm_keys_tags.py
new file mode 100755
index 0000000..18ed4c0
--- /dev/null
+++ b/searx_extra/update/update_osm_keys_tags.py
@@ -0,0 +1,209 @@
+#!/usr/bin/env python
+# lint: pylint
+# pylint: disable=missing-function-docstring
+"""Fetch OSM keys and tags.
+
+To get the i18n names, the scripts uses `Wikidata Query Service`_ instead of for
+example `OSM tags API`_ (sidenote: the actual change log from
+map.atownsend.org.uk_ might be useful to normalize OSM tags)
+
+.. _Wikidata Query Service: https://query.wikidata.org/
+.. _OSM tags API: https://taginfo.openstreetmap.org/taginfo/apidoc
+.. _map.atownsend.org.uk: https://map.atownsend.org.uk/maps/map/changelog.html
+
+:py:obj:`SPARQL_TAGS_REQUEST` :
+ Wikidata SPARQL query that returns *type-categories* and *types*. The
+ returned tag is ``Tag:{category}={type}`` (see :py:func:`get_tags`).
+ Example:
+
+ - https://taginfo.openstreetmap.org/tags/building=house#overview
+ - https://wiki.openstreetmap.org/wiki/Tag:building%3Dhouse
+ at the bottom of the infobox (right side), there is a link to wikidata:
+ https://www.wikidata.org/wiki/Q3947
+ see property "OpenStreetMap tag or key" (P1282)
+ - https://wiki.openstreetmap.org/wiki/Tag%3Abuilding%3Dbungalow
+ https://www.wikidata.org/wiki/Q850107
+
+:py:obj:`SPARQL_KEYS_REQUEST` :
+ Wikidata SPARQL query that returns *keys*. Example with "payment":
+
+ - https://wiki.openstreetmap.org/wiki/Key%3Apayment
+ at the bottom of infobox (right side), there is a link to wikidata:
+ https://www.wikidata.org/wiki/Q1148747
+ link made using the "OpenStreetMap tag or key" property (P1282)
+ to be confirm: there is a one wiki page per key ?
+ - https://taginfo.openstreetmap.org/keys/payment#values
+ - https://taginfo.openstreetmap.org/keys/payment:cash#values
+
+ ``rdfs:label`` get all the labels without language selection
+ (as opposed to SERVICE ``wikibase:label``).
+
+"""
+
+import json
+import collections
+from pathlib import Path
+
+from searx import searx_dir
+from searx.poolrequests import set_timeout_for_thread
+from searx.engines.wikidata import send_wikidata_query
+from searx.languages import language_codes
+from searx.engines.openstreetmap import get_key_rank, VALUE_TO_LINK
+
+SPARQL_TAGS_REQUEST = """
+SELECT ?tag ?item ?itemLabel WHERE {
+ ?item wdt:P1282 ?tag .
+ ?item rdfs:label ?itemLabel .
+ FILTER(STRSTARTS(?tag, 'Tag'))
+}
+GROUP BY ?tag ?item ?itemLabel
+ORDER BY ?tag ?item ?itemLabel
+"""
+
+SPARQL_KEYS_REQUEST = """
+SELECT ?key ?item ?itemLabel WHERE {
+ ?item wdt:P1282 ?key .
+ ?item rdfs:label ?itemLabel .
+ FILTER(STRSTARTS(?key, 'Key'))
+}
+GROUP BY ?key ?item ?itemLabel
+ORDER BY ?key ?item ?itemLabel
+"""
+
+LANGUAGES = [l[0].lower() for l in language_codes]
+
+PRESET_KEYS = {
+ ('wikidata',): {'en': 'Wikidata'},
+ ('wikipedia',): {'en': 'Wikipedia'},
+ ('email',): {'en': 'Email'},
+ ('facebook',): {'en': 'Facebook'},
+ ('fax',): {'en': 'Fax'},
+ ('internet_access', 'ssid'): {'en': 'Wi-Fi'},
+}
+
+INCLUDED_KEYS = {
+ ('addr', )
+}
+
+def get_preset_keys():
+ results = collections.OrderedDict()
+ for keys, value in PRESET_KEYS.items():
+ r = results
+ for k in keys:
+ r = r.setdefault(k, {})
+ r.setdefault('*', value)
+ return results
+
+def get_keys():
+ results = get_preset_keys()
+ response = send_wikidata_query(SPARQL_KEYS_REQUEST)
+
+ for key in response['results']['bindings']:
+ keys = key['key']['value'].split(':')[1:]
+ if keys[0] == 'currency' and len(keys) > 1:
+ # special case in openstreetmap.py
+ continue
+ if keys[0] == 'contact' and len(keys) > 1:
+ # label for the key "contact.email" is "Email"
+ # whatever the language
+ r = results.setdefault('contact', {})
+ r[keys[1]] = {
+ '*': {
+ 'en': keys[1]
+ }
+ }
+ continue
+ if tuple(keys) in PRESET_KEYS:
+ # skip presets (already set above)
+ continue
+ if get_key_rank(':'.join(keys)) is None\
+ and ':'.join(keys) not in VALUE_TO_LINK\
+ and tuple(keys) not in INCLUDED_KEYS:
+ # keep only keys that will be displayed by openstreetmap.py
+ continue
+ label = key['itemLabel']['value'].lower()
+ lang = key['itemLabel']['xml:lang']
+ r = results
+ for k in keys:
+ r = r.setdefault(k, {})
+ r = r.setdefault('*', {})
+ if lang in LANGUAGES:
+ r.setdefault(lang, label)
+
+ # special cases
+ results['delivery']['covid19']['*'].clear()
+ for k, v in results['delivery']['*'].items():
+ results['delivery']['covid19']['*'][k] = v + ' (COVID19)'
+
+ results['opening_hours']['covid19']['*'].clear()
+ for k, v in results['opening_hours']['*'].items():
+ results['opening_hours']['covid19']['*'][k] = v + ' (COVID19)'
+
+ return results
+
+
+def get_tags():
+ results = collections.OrderedDict()
+ response = send_wikidata_query(SPARQL_TAGS_REQUEST)
+ for tag in response['results']['bindings']:
+ tag_names = tag['tag']['value'].split(':')[1].split('=')
+ if len(tag_names) == 2:
+ tag_category, tag_type = tag_names
+ else:
+ tag_category, tag_type = tag_names[0], ''
+ label = tag['itemLabel']['value'].lower()
+ lang = tag['itemLabel']['xml:lang']
+ if lang in LANGUAGES:
+ results.setdefault(tag_category, {}).setdefault(tag_type, {}).setdefault(lang, label)
+ return results
+
+def optimize_data_lang(translations):
+ language_to_delete = []
+ # remove "zh-hk" entry if the value is the same as "zh"
+ # same for "en-ca" / "en" etc...
+ for language in translations:
+ if '-' in language:
+ base_language = language.split('-')[0]
+ if translations.get(base_language) == translations.get(language):
+ language_to_delete.append(language)
+
+ for language in language_to_delete:
+ del translations[language]
+ language_to_delete = []
+
+ # remove entries that have the same value than the "en" entry
+ value_en = translations.get('en')
+ if value_en:
+ for language, value in translations.items():
+ if language != 'en' and value == value_en:
+ language_to_delete.append(language)
+
+ for language in language_to_delete:
+ del translations[language]
+
+def optimize_tags(data):
+ for v in data.values():
+ for translations in v.values():
+ optimize_data_lang(translations)
+ return data
+
+def optimize_keys(data):
+ for k, v in data.items():
+ if k == '*':
+ optimize_data_lang(v)
+ elif isinstance(v, dict):
+ optimize_keys(v)
+ return data
+
+def get_osm_tags_filename():
+ return Path(searx_dir) / "data" / "osm_keys_tags.json"
+
+if __name__ == '__main__':
+
+ set_timeout_for_thread(60)
+ result = {
+ 'keys': optimize_keys(get_keys()),
+ 'tags': optimize_tags(get_tags()),
+ }
+ with open(get_osm_tags_filename(), 'w') as f:
+ json.dump(result, f, indent=4, ensure_ascii=False)
diff --git a/searx_extra/update/update_pygments.py b/searx_extra/update/update_pygments.py
new file mode 100755
index 0000000..067cd45
--- /dev/null
+++ b/searx_extra/update/update_pygments.py
@@ -0,0 +1,138 @@
+#!/usr/bin/env python
+"""
+Update pygments style
+
+Call this script after each upgrade of pygments
+"""
+
+# pylint: disable=C0116
+
+# set path
+from os.path import join
+import pygments
+from pygments.formatters import HtmlFormatter # pylint: disable=E0611
+from pygments.style import Style
+from pygments.token import Comment, Error, Generic, Keyword, Literal, Name, Operator, Text
+
+from searx import searx_dir
+
+
+class LogicodevStyle(Style): # pylint: disable=R0903
+ """Logicodev style
+ based on https://github.com/searx/searx/blob/2a5c39e33c3306ca17e09211fbf5a0f785cb10c8/searx/static/themes/oscar/less/logicodev/code.less
+ """ # pylint: disable=C0301
+
+ background_color = '#282C34'
+
+ styles = {
+ Comment: "#556366 italic",
+ Comment.Multiline: "#556366 italic",
+ Comment.Preproc: "#BC7A00",
+ Comment.Single: "#556366 italic",
+ Comment.Special: "#556366 italic",
+ Error: "border:#ff0000",
+ Generic.Deleted: "#A00000",
+ Generic.Emph: "italic",
+ Generic.Error: "#FF0000",
+ Generic.Heading: "#000080 bold",
+ Generic.Inserted: "#00A000",
+ Generic.Output: "#888888",
+ Generic.Prompt: "#000080 bold",
+ Generic.Strong: "bold",
+ Generic.Subheading: "#800080 bold",
+ Generic.Traceback: "#0044DD",
+ Keyword: "#BE74D5 bold",
+ Keyword.Constant: "#BE74D5 bold",
+ Keyword.Declaration: "#BE74D5 bold",
+ Keyword.Namespace: "#BE74D5 bold",
+ Keyword.Pseudo: "#BE74D5",
+ Keyword.Reserved: "#BE74D5 bold",
+ Keyword.Type: "#D46C72",
+ Literal.Number: "#D19A66",
+ Literal.String: "#86C372",
+ Literal.String.Backtick:"#86C372",
+ Literal.String.Char: "#86C372",
+ Literal.String.Doc: "#86C372 italic",
+ Literal.String.Double: "#86C372",
+ Literal.String.Escape: "#BB6622 bold",
+ Literal.String.Heredoc: "#86C372",
+ Literal.String.Interpol:"#BB6688 bold",
+ Literal.String.Other: "#BE74D5",
+ Literal.String.Regex: "#BB6688",
+ Literal.String.Single: "#86C372",
+ Literal.String.Symbol: "#DFC06F",
+ Name.Attribute: "#7D9029",
+ Name.Builtin: "#BE74D5",
+ Name.Builtin.Pseudo: "#BE74D5",
+ Name.Class: "#61AFEF bold",
+ Name.Constant: "#D19A66",
+ Name.Decorator: "#AA22FF",
+ Name.Entity: "#999999 bold",
+ Name.Exception: "#D2413A bold",
+ Name.Function: "#61AFEF",
+ Name.Label: "#A0A000",
+ Name.Namespace: "#61AFEF bold",
+ Name.Tag: "#BE74D5 bold",
+ Name.Variable: "#DFC06F",
+ Name.Variable.Class: "#DFC06F",
+ Name.Variable.Global: "#DFC06F",
+ Name.Variable.Instance: "#DFC06F",
+ Operator: "#D19A66",
+ Operator.Word: "#AA22FF bold",
+ Text.Whitespace: "#D7DAE0",
+ }
+
+
+CSSCLASS = '.code-highlight'
+RULE_CODE_LINENOS = """ .linenos {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: default;
+
+ &::selection {
+ background: transparent; /* WebKit/Blink Browsers */
+ }
+ &::-moz-selection {
+ background: transparent; /* Gecko Browsers */
+ }
+
+ margin-right: 8px;
+ text-align: right;
+}"""
+
+
+def get_output_filename(relative_name):
+ return join(searx_dir, relative_name)
+
+
+def get_css(cssclass, style):
+ result = f"""/*
+ this file is generated automatically by searx_extra/update/update_pygments.py
+ using pygments version {pygments.__version__}
+*/\n\n"""
+ css_text = HtmlFormatter(style=style).get_style_defs(cssclass)
+ result += cssclass + RULE_CODE_LINENOS + '\n\n'
+ for line in css_text.splitlines():
+ if ' ' in line and not line.startswith(cssclass):
+ line = cssclass + ' ' + line
+ result += line + '\n'
+ return result
+
+
+def main():
+ with open(get_output_filename('static/themes/oscar/src/less/logicodev/pygments.less'), 'w') as f:
+ f.write(get_css(CSSCLASS, LogicodevStyle))
+
+ with open(get_output_filename('static/themes/oscar/src/less/pointhi/pygments.less'), 'w') as f:
+ f.write(get_css(CSSCLASS, 'default'))
+
+ with open(get_output_filename('static/themes/simple/less/pygments.less'), 'w') as f:
+ f.write(get_css(CSSCLASS, 'default'))
+
+
+if __name__ == '__main__':
+ main()
diff --git a/utils/update-translations.sh b/searx_extra/update/update_translations.sh
index 240387a..240387a 100755
--- a/utils/update-translations.sh
+++ b/searx_extra/update/update_translations.sh
diff --git a/searx_extra/update/update_wikidata_units.py b/searx_extra/update/update_wikidata_units.py
new file mode 100755
index 0000000..1e6b8b9
--- /dev/null
+++ b/searx_extra/update/update_wikidata_units.py
@@ -0,0 +1,54 @@
+#!/usr/bin/env python
+
+import json
+import collections
+
+# set path
+from os.path import join
+
+from searx import searx_dir
+from searx.engines.wikidata import send_wikidata_query
+
+
+# the response contains duplicate ?item with the different ?symbol
+# "ORDER BY ?item DESC(?rank) ?symbol" provides a deterministic result
+# even if a ?item has different ?symbol of the same rank.
+# A deterministic result
+# see:
+# * https://www.wikidata.org/wiki/Help:Ranking
+# * https://www.mediawiki.org/wiki/Wikibase/Indexing/RDF_Dump_Format ("Statement representation" section)
+# * https://w.wiki/32BT
+# see the result for https://www.wikidata.org/wiki/Q11582
+# there are multiple symbols the same rank
+SARQL_REQUEST = """
+SELECT DISTINCT ?item ?symbol
+WHERE
+{
+ ?item wdt:P31/wdt:P279 wd:Q47574 .
+ ?item p:P5061 ?symbolP .
+ ?symbolP ps:P5061 ?symbol ;
+ wikibase:rank ?rank .
+ FILTER(LANG(?symbol) = "en").
+}
+ORDER BY ?item DESC(?rank) ?symbol
+"""
+
+
+def get_data():
+ results = collections.OrderedDict()
+ response = send_wikidata_query(SARQL_REQUEST)
+ for unit in response['results']['bindings']:
+ name = unit['item']['value'].replace('http://www.wikidata.org/entity/', '')
+ unit = unit['symbol']['value']
+ if name not in results:
+ # ignore duplicate: always use the first one
+ results[name] = unit
+ return results
+
+
+def get_wikidata_units_filename():
+ return join(join(searx_dir, "data"), "wikidata_units.json")
+
+
+with open(get_wikidata_units_filename(), 'w') as f:
+ json.dump(get_data(), f, indent=4, ensure_ascii=False)
diff --git a/setup.py b/setup.py
index 436464f..5e0d3e5 100644
--- a/setup.py
+++ b/setup.py
@@ -7,11 +7,10 @@ from setuptools import find_packages
import os
import sys
-# required to load VERSION_STRING constant
-sys.path.insert(0, './searx')
-from version import VERSION_STRING
+from searx.version import VERSION_STRING
+from searx import brand
-with open('README.rst') as f:
+with open('README.rst', encoding='utf-8') as f:
long_description = f.read()
with open('requirements.txt') as f:
@@ -25,6 +24,11 @@ setup(
version=VERSION_STRING,
description="A privacy-respecting, hackable metasearch engine",
long_description=long_description,
+ url=brand.DOCS_URL,
+ project_urls={
+ "Code": brand.GIT_URL,
+ "Issue tracker": brand.ISSUE_URL
+ },
classifiers=[
"Development Status :: 4 - Beta",
"Programming Language :: Python",
@@ -36,9 +40,8 @@ setup(
keywords='metasearch searchengine search web http',
author='Adam Tauber',
author_email='asciimoo@gmail.com',
- url='https://github.com/asciimoo/searx',
license='GNU Affero General Public License',
- packages=find_packages(exclude=["tests*"]),
+ packages=find_packages(exclude=["tests*", "searx_extra"]),
zip_safe=False,
install_requires=requirements,
extras_require={
@@ -46,7 +49,8 @@ setup(
},
entry_points={
'console_scripts': [
- 'searx-run = searx.webapp:run'
+ 'searx-run = searx.webapp:run',
+ 'searx-checker = searx.search.checker.__main__:main'
]
},
package_data={
diff --git a/tests/__init__.py b/tests/__init__.py
index e69de29..18bf7ca 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -0,0 +1,2 @@
+import os
+os.environ['SEARX_DEBUG'] = '1'
diff --git a/tests/robot/__init__.py b/tests/robot/__init__.py
index 038a319..71a5c6d 100644
--- a/tests/robot/__init__.py
+++ b/tests/robot/__init__.py
@@ -8,7 +8,7 @@ url = "http://localhost:11111/"
def test_index(browser):
# Visit URL
browser.visit(url)
- assert browser.is_text_present('about')
+ assert browser.is_text_present('searx')
def test_404(browser):
@@ -19,13 +19,13 @@ def test_404(browser):
def test_about(browser):
browser.visit(url)
- browser.click_link_by_text('about')
+ browser.links.find_by_href('/about').click()
assert browser.is_text_present('Why use searx?')
def test_preferences(browser):
browser.visit(url)
- browser.click_link_by_text('preferences')
+ browser.links.find_by_href('/preferences').click()
assert browser.is_text_present('Preferences')
assert browser.is_text_present('Cookies')
@@ -34,7 +34,7 @@ def test_preferences(browser):
def test_preferences_engine_select(browser):
browser.visit(url)
- browser.click_link_by_text('preferences')
+ browser.links.find_by_href('/preferences').click()
assert browser.is_element_present_by_xpath('//a[@href="#tab_engine"]')
browser.find_by_xpath('//a[@href="#tab_engine"]').first.click()
@@ -47,7 +47,7 @@ def test_preferences_engine_select(browser):
sleep(1)
browser.visit(url)
- browser.click_link_by_text('preferences')
+ browser.links.find_by_href('/preferences').click()
browser.find_by_xpath('//a[@href="#tab_engine"]').first.click()
assert browser.find_by_xpath('//input[@id="engine_general_dummy__general"]').first.checked
@@ -55,7 +55,7 @@ def test_preferences_engine_select(browser):
def test_preferences_locale(browser):
browser.visit(url)
- browser.click_link_by_text('preferences')
+ browser.links.find_by_href('/preferences').click()
browser.select('locale', 'hu')
browser.find_by_xpath('//input[@value="save"]').first.click()
@@ -64,7 +64,7 @@ def test_preferences_locale(browser):
sleep(1)
browser.visit(url)
- browser.click_link_by_text('beállítások')
+ browser.links.find_by_text('beállítások').click()
browser.is_text_present('Beállítások')
diff --git a/tests/test_robot.py b/tests/test_robot.py
deleted file mode 100644
index b48153f..0000000
--- a/tests/test_robot.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import os
-import unittest2 as unittest
-from plone.testing import layered
-from robotsuite import RobotTestSuite
-from searx.testing import SEARXROBOTLAYER
-
-
-def test_suite():
- suite = unittest.TestSuite()
- current_dir = os.path.abspath(os.path.dirname(__file__))
- robot_dir = os.path.join(current_dir, 'robot')
- tests = [
- os.path.join('robot', f) for f in
- os.listdir(robot_dir) if f.endswith('.robot') and
- f.startswith('test_')
- ]
- for test in tests:
- suite.addTests([
- layered(RobotTestSuite(test), layer=SEARXROBOTLAYER),
- ])
- return suite
diff --git a/tests/unit/engines/test_command.py b/tests/unit/engines/test_command.py
new file mode 100644
index 0000000..8f88b61
--- /dev/null
+++ b/tests/unit/engines/test_command.py
@@ -0,0 +1,240 @@
+'''
+searx is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+searx is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with searx. If not, see < http://www.gnu.org/licenses/ >.
+
+'''
+
+
+from searx.engines import command as command_engine
+from searx.testing import SearxTestCase
+
+
+class TestCommandEngine(SearxTestCase):
+ def test_basic_seq_command_engine(self):
+ ls_engine = command_engine
+ ls_engine.command = ['seq', '{{QUERY}}']
+ ls_engine.delimiter = {'chars': ' ', 'keys': ['number']}
+ expected_results = [
+ {'number': '1', 'template': 'key-value.html'},
+ {'number': '2', 'template': 'key-value.html'},
+ {'number': '3', 'template': 'key-value.html'},
+ {'number': '4', 'template': 'key-value.html'},
+ {'number': '5', 'template': 'key-value.html'},
+ ]
+ results = ls_engine.search('5'.encode('utf-8'), {'pageno': 1})
+ self.assertEqual(results, expected_results)
+
+ def test_delimiter_parsing_command_engine(self):
+ searx_logs = '''DEBUG:searx.webapp:static directory is /home/n/p/searx/searx/static
+DEBUG:searx.webapp:templates directory is /home/n/p/searx/searx/templates
+DEBUG:searx.engines:soundcloud engine: Starting background initialization
+DEBUG:searx.engines:wolframalpha engine: Starting background initialization
+DEBUG:searx.engines:locate engine: Starting background initialization
+DEBUG:searx.engines:regex search in files engine: Starting background initialization
+DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): www.wolframalpha.com
+DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): soundcloud.com
+DEBUG:searx.engines:find engine: Starting background initialization
+DEBUG:searx.engines:pattern search in files engine: Starting background initialization
+DEBUG:searx.webapp:starting webserver on 127.0.0.1:8888
+WARNING:werkzeug: * Debugger is active!
+INFO:werkzeug: * Debugger PIN: 299-578-362'''
+ echo_engine = command_engine
+ echo_engine.command = ['echo', searx_logs]
+ echo_engine.delimiter = {'chars': ':', 'keys': ['level', 'component', 'message']}
+
+ expected_results_by_page = [
+ [
+ {
+ 'component': 'searx.webapp',
+ 'message': 'static directory is /home/n/p/searx/searx/static',
+ 'template': 'key-value.html',
+ 'level': 'DEBUG',
+ },
+ {
+ 'component': 'searx.webapp',
+ 'message': 'templates directory is /home/n/p/searx/searx/templates',
+ 'template': 'key-value.html',
+ 'level': 'DEBUG',
+ },
+ {
+ 'component': 'searx.engines',
+ 'message': 'soundcloud engine: Starting background initialization',
+ 'template': 'key-value.html',
+ 'level': 'DEBUG',
+ },
+ {
+ 'component': 'searx.engines',
+ 'message': 'wolframalpha engine: Starting background initialization',
+ 'template': 'key-value.html',
+ 'level': 'DEBUG',
+ },
+ {
+ 'component': 'searx.engines',
+ 'message': 'locate engine: Starting background initialization',
+ 'template': 'key-value.html',
+ 'level': 'DEBUG',
+ },
+ {
+ 'component': 'searx.engines',
+ 'message': 'regex search in files engine: Starting background initialization',
+ 'template': 'key-value.html',
+ 'level': 'DEBUG',
+ },
+ {
+ 'component': 'urllib3.connectionpool',
+ 'message': 'Starting new HTTPS connection (1): www.wolframalpha.com',
+ 'template': 'key-value.html',
+ 'level': 'DEBUG',
+ },
+ {
+ 'component': 'urllib3.connectionpool',
+ 'message': 'Starting new HTTPS connection (1): soundcloud.com',
+ 'template': 'key-value.html',
+ 'level': 'DEBUG',
+ },
+ {
+ 'component': 'searx.engines',
+ 'message': 'find engine: Starting background initialization',
+ 'template': 'key-value.html',
+ 'level': 'DEBUG',
+ },
+ {
+ 'component': 'searx.engines',
+ 'message': 'pattern search in files engine: Starting background initialization',
+ 'template': 'key-value.html',
+ 'level': 'DEBUG',
+ },
+
+ ],
+ [
+ {
+ 'component': 'searx.webapp',
+ 'message': 'starting webserver on 127.0.0.1:8888',
+ 'template': 'key-value.html',
+ 'level': 'DEBUG',
+ },
+ {
+ 'component': 'werkzeug',
+ 'message': ' * Debugger is active!',
+ 'template': 'key-value.html',
+ 'level': 'WARNING',
+ },
+ {
+ 'component': 'werkzeug',
+ 'message': ' * Debugger PIN: 299-578-362',
+ 'template': 'key-value.html',
+ 'level': 'INFO',
+ },
+ ],
+
+ ]
+
+ for i in [0, 1]:
+ results = echo_engine.search(''.encode('utf-8'), {'pageno': i + 1})
+ self.assertEqual(results, expected_results_by_page[i])
+
+ def test_regex_parsing_command_engine(self):
+ txt = '''commit 35f9a8c81d162a361b826bbcd4a1081a4fbe76a7
+Author: Noémi Ványi <sitbackandwait@gmail.com>
+Date: Tue Oct 15 11:31:33 2019 +0200
+
+first interesting message
+
+commit 6c3c206316153ccc422755512bceaa9ab0b14faa
+Author: Noémi Ványi <sitbackandwait@gmail.com>
+Date: Mon Oct 14 17:10:08 2019 +0200
+
+second interesting message
+
+commit d8594d2689b4d5e0d2f80250223886c3a1805ef5
+Author: Noémi Ványi <sitbackandwait@gmail.com>
+Date: Mon Oct 14 14:45:05 2019 +0200
+
+third interesting message
+
+commit '''
+ git_log_engine = command_engine
+ git_log_engine.command = ['echo', txt]
+ git_log_engine.result_separator = '\n\ncommit '
+ git_log_engine.delimiter = {}
+ git_log_engine.parse_regex = {
+ 'commit': '\w{40}',
+ 'author': '[\w* ]* <\w*@?\w*\.?\w*>',
+ 'date': 'Date: .*',
+ 'message': '\n\n.*$'
+ }
+ expected_results = [
+ {
+ 'commit': '35f9a8c81d162a361b826bbcd4a1081a4fbe76a7',
+ 'author': ' Noémi Ványi <sitbackandwait@gmail.com>',
+ 'date': 'Date: Tue Oct 15 11:31:33 2019 +0200',
+ 'message': '\n\nfirst interesting message',
+ 'template': 'key-value.html',
+ },
+ {
+ 'commit': '6c3c206316153ccc422755512bceaa9ab0b14faa',
+ 'author': ' Noémi Ványi <sitbackandwait@gmail.com>',
+ 'date': 'Date: Mon Oct 14 17:10:08 2019 +0200',
+ 'message': '\n\nsecond interesting message',
+ 'template': 'key-value.html',
+ },
+ {
+ 'commit': 'd8594d2689b4d5e0d2f80250223886c3a1805ef5',
+ 'author': ' Noémi Ványi <sitbackandwait@gmail.com>',
+ 'date': 'Date: Mon Oct 14 14:45:05 2019 +0200',
+ 'message': '\n\nthird interesting message',
+ 'template': 'key-value.html',
+ },
+
+ ]
+
+ results = git_log_engine.search(''.encode('utf-8'), {'pageno': 1})
+ self.assertEqual(results, expected_results)
+
+ def test_working_dir_path_query(self):
+ ls_engine = command_engine
+ ls_engine.command = ['ls', '{{QUERY}}']
+ ls_engine.result_separator = '\n'
+ ls_engine.delimiter = {'chars': ' ', 'keys': ['file']}
+ ls_engine.query_type = 'path'
+
+ results = ls_engine.search('.'.encode(), {'pageno': 1})
+ self.assertTrue(len(results) != 0)
+
+ forbidden_paths = [
+ '..',
+ '../..',
+ './..',
+ '~',
+ '/var',
+ ]
+ for forbidden_path in forbidden_paths:
+ self.assertRaises(ValueError, ls_engine.search, '..'.encode(), {'pageno': 1})
+
+ def test_enum_queries(self):
+ echo_engine = command_engine
+ echo_engine.command = ['echo', '{{QUERY}}']
+ echo_engine.query_type = 'enum'
+ echo_engine.query_enum = ['i-am-allowed-to-say-this', 'and-that']
+
+ for allowed in echo_engine.query_enum:
+ results = echo_engine.search(allowed.encode(), {'pageno': 1})
+ self.assertTrue(len(results) != 0)
+
+ forbidden_queries = [
+ 'forbidden',
+ 'banned',
+ 'prohibited',
+ ]
+ for forbidden in forbidden_queries:
+ self.assertRaises(ValueError, echo_engine.search, forbidden.encode(), {'pageno': 1})
diff --git a/tests/unit/engines/test_xpath.py b/tests/unit/engines/test_xpath.py
new file mode 100644
index 0000000..963a44a
--- /dev/null
+++ b/tests/unit/engines/test_xpath.py
@@ -0,0 +1,121 @@
+# -*- coding: utf-8 -*-
+from collections import defaultdict
+import mock
+from searx.engines import xpath
+from searx.testing import SearxTestCase
+
+
+class TestXpathEngine(SearxTestCase):
+
+ def test_request(self):
+ xpath.search_url = 'https://url.com/{query}'
+ xpath.categories = []
+ xpath.paging = False
+ query = 'test_query'
+ dicto = defaultdict(dict)
+ params = xpath.request(query, dicto)
+ self.assertIn('url', params)
+ self.assertEquals('https://url.com/test_query', params['url'])
+
+ xpath.search_url = 'https://url.com/q={query}&p={pageno}'
+ xpath.paging = True
+ query = 'test_query'
+ dicto = defaultdict(dict)
+ dicto['pageno'] = 1
+ params = xpath.request(query, dicto)
+ self.assertIn('url', params)
+ self.assertEquals('https://url.com/q=test_query&p=1', params['url'])
+
+ def test_response(self):
+ # without results_xpath
+ xpath.url_xpath = '//div[@class="search_result"]//a[@class="result"]/@href'
+ xpath.title_xpath = '//div[@class="search_result"]//a[@class="result"]'
+ xpath.content_xpath = '//div[@class="search_result"]//p[@class="content"]'
+
+ self.assertRaises(AttributeError, xpath.response, None)
+ self.assertRaises(AttributeError, xpath.response, [])
+ self.assertRaises(AttributeError, xpath.response, '')
+ self.assertRaises(AttributeError, xpath.response, '[]')
+
+ response = mock.Mock(text='<html></html>')
+ self.assertEqual(xpath.response(response), [])
+
+ html = u"""
+ <div>
+ <div class="search_result">
+ <a class="result" href="https://result1.com">Result 1</a>
+ <p class="content">Content 1</p>
+ <a class="cached" href="https://cachedresult1.com">Cache</a>
+ </div>
+ <div class="search_result">
+ <a class="result" href="https://result2.com">Result 2</a>
+ <p class="content">Content 2</p>
+ <a class="cached" href="https://cachedresult2.com">Cache</a>
+ </div>
+ </div>
+ """
+ response = mock.Mock(text=html)
+ results = xpath.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 2)
+ self.assertEqual(results[0]['title'], 'Result 1')
+ self.assertEqual(results[0]['url'], 'https://result1.com/')
+ self.assertEqual(results[0]['content'], 'Content 1')
+ self.assertEqual(results[1]['title'], 'Result 2')
+ self.assertEqual(results[1]['url'], 'https://result2.com/')
+ self.assertEqual(results[1]['content'], 'Content 2')
+
+ # with cached urls, without results_xpath
+ xpath.cached_xpath = '//div[@class="search_result"]//a[@class="cached"]/@href'
+ results = xpath.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 2)
+ self.assertEqual(results[0]['cached_url'], 'https://cachedresult1.com')
+ self.assertEqual(results[1]['cached_url'], 'https://cachedresult2.com')
+ self.assertFalse(results[0].get('is_onion', False))
+
+ # results are onion urls (no results_xpath)
+ xpath.categories = ['onions']
+ results = xpath.response(response)
+ self.assertTrue(results[0]['is_onion'])
+
+ # with results_xpath
+ xpath.results_xpath = '//div[@class="search_result"]'
+ xpath.url_xpath = './/a[@class="result"]/@href'
+ xpath.title_xpath = './/a[@class="result"]'
+ xpath.content_xpath = './/p[@class="content"]'
+ xpath.cached_xpath = None
+ xpath.categories = []
+
+ self.assertRaises(AttributeError, xpath.response, None)
+ self.assertRaises(AttributeError, xpath.response, [])
+ self.assertRaises(AttributeError, xpath.response, '')
+ self.assertRaises(AttributeError, xpath.response, '[]')
+
+ response = mock.Mock(text='<html></html>')
+ self.assertEqual(xpath.response(response), [])
+
+ response = mock.Mock(text=html)
+ results = xpath.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 2)
+ self.assertEqual(results[0]['title'], 'Result 1')
+ self.assertEqual(results[0]['url'], 'https://result1.com/')
+ self.assertEqual(results[0]['content'], 'Content 1')
+ self.assertEqual(results[1]['title'], 'Result 2')
+ self.assertEqual(results[1]['url'], 'https://result2.com/')
+ self.assertEqual(results[1]['content'], 'Content 2')
+
+ # with cached urls, with results_xpath
+ xpath.cached_xpath = './/a[@class="cached"]/@href'
+ results = xpath.response(response)
+ self.assertEqual(type(results), list)
+ self.assertEqual(len(results), 2)
+ self.assertEqual(results[0]['cached_url'], 'https://cachedresult1.com')
+ self.assertEqual(results[1]['cached_url'], 'https://cachedresult2.com')
+ self.assertFalse(results[0].get('is_onion', False))
+
+ # results are onion urls (with results_xpath)
+ xpath.categories = ['onions']
+ results = xpath.response(response)
+ self.assertTrue(results[0]['is_onion'])
diff --git a/tests/unit/settings/empty_settings.yml b/tests/unit/settings/empty_settings.yml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/unit/settings/empty_settings.yml
diff --git a/tests/unit/settings/syntaxerror_settings.yml b/tests/unit/settings/syntaxerror_settings.yml
new file mode 100644
index 0000000..6d3b0f9
--- /dev/null
+++ b/tests/unit/settings/syntaxerror_settings.yml
@@ -0,0 +1,2 @@
+Test:
+ **********
diff --git a/tests/unit/settings/user_settings.yml b/tests/unit/settings/user_settings.yml
new file mode 100644
index 0000000..f5b6c71
--- /dev/null
+++ b/tests/unit/settings/user_settings.yml
@@ -0,0 +1,111 @@
+general:
+ debug : False
+ instance_name : "searx"
+
+search:
+ safe_search : 0
+ autocomplete : ""
+ default_lang : ""
+ ban_time_on_fail : 5
+ max_ban_time_on_fail : 120
+
+server:
+ port : 9000
+ bind_address : "0.0.0.0"
+ secret_key : "user_settings_secret"
+ base_url : False
+ image_proxy : False
+ http_protocol_version : "1.0"
+ method: "POST"
+ default_http_headers:
+ X-Content-Type-Options : nosniff
+ X-XSS-Protection : 1; mode=block
+ X-Download-Options : noopen
+ X-Robots-Tag : noindex, nofollow
+ Referrer-Policy : no-referrer
+
+ui:
+ static_path : ""
+ templates_path : ""
+ default_theme : oscar
+ default_locale : ""
+ theme_args :
+ oscar_style : logicodev
+
+engines:
+ - name : wikidata
+ engine : wikidata
+ shortcut : wd
+ timeout : 3.0
+ weight : 2
+
+ - name : wikibooks
+ engine : mediawiki
+ shortcut : wb
+ categories : general
+ base_url : "https://{language}.wikibooks.org/"
+ number_of_results : 5
+ search_type : text
+
+ - name : wikinews
+ engine : mediawiki
+ shortcut : wn
+ categories : news
+ base_url : "https://{language}.wikinews.org/"
+ number_of_results : 5
+ search_type : text
+
+ - name : wikiquote
+ engine : mediawiki
+ shortcut : wq
+ categories : general
+ base_url : "https://{language}.wikiquote.org/"
+ number_of_results : 5
+ search_type : text
+
+locales:
+ en : English
+ ar : العَرَبِيَّة (Arabic)
+ bg : Български (Bulgarian)
+ bo : བོད་སྐད་ (Tibetian)
+ ca : Català (Catalan)
+ cs : Čeština (Czech)
+ cy : Cymraeg (Welsh)
+ da : Dansk (Danish)
+ de : Deutsch (German)
+ el_GR : Ελληνικά (Greek_Greece)
+ eo : Esperanto (Esperanto)
+ es : Español (Spanish)
+ et : Eesti (Estonian)
+ eu : Euskara (Basque)
+ fa_IR : (fārsī) فارسى (Persian)
+ fi : Suomi (Finnish)
+ fil : Wikang Filipino (Filipino)
+ fr : Français (French)
+ gl : Galego (Galician)
+ he : עברית (Hebrew)
+ hr : Hrvatski (Croatian)
+ hu : Magyar (Hungarian)
+ ia : Interlingua (Interlingua)
+ it : Italiano (Italian)
+ ja : 日本語 (Japanese)
+ lt : Lietuvių (Lithuanian)
+ nl : Nederlands (Dutch)
+ nl_BE : Vlaams (Dutch_Belgium)
+ oc : Lenga D'òc (Occitan)
+ pl : Polski (Polish)
+ pt : Português (Portuguese)
+ pt_BR : Português (Portuguese_Brazil)
+ ro : Română (Romanian)
+ ru : Русский (Russian)
+ sk : Slovenčina (Slovak)
+ sl : Slovenski (Slovene)
+ sr : српски (Serbian)
+ sv : Svenska (Swedish)
+ te : తెలుగు (telugu)
+ ta : தமிழ் (Tamil)
+ tr : Türkçe (Turkish)
+ uk : українська мова (Ukrainian)
+ vi : tiếng việt (Vietnamese)
+ zh : 中文 (Chinese)
+ zh_TW : 國語 (Taiwanese Mandarin)
diff --git a/tests/unit/settings/user_settings_keep_only.yml b/tests/unit/settings/user_settings_keep_only.yml
new file mode 100644
index 0000000..518f18b
--- /dev/null
+++ b/tests/unit/settings/user_settings_keep_only.yml
@@ -0,0 +1,14 @@
+use_default_settings:
+ engines:
+ keep_only:
+ - wikibooks
+ - wikinews
+server:
+ secret_key: "user_secret_key"
+ bind_address: "0.0.0.0"
+ default_http_headers:
+ Custom-Header: Custom-Value
+engines:
+ - name: wikipedia
+ - name: newengine
+ engine: dummy
diff --git a/tests/unit/settings/user_settings_remove.yml b/tests/unit/settings/user_settings_remove.yml
new file mode 100644
index 0000000..c4fd85d
--- /dev/null
+++ b/tests/unit/settings/user_settings_remove.yml
@@ -0,0 +1,10 @@
+use_default_settings:
+ engines:
+ remove:
+ - wikibooks
+ - wikinews
+server:
+ secret_key: "user_secret_key"
+ bind_address: "0.0.0.0"
+ default_http_headers:
+ Custom-Header: Custom-Value
diff --git a/tests/unit/settings/user_settings_remove2.yml b/tests/unit/settings/user_settings_remove2.yml
new file mode 100644
index 0000000..e9be325
--- /dev/null
+++ b/tests/unit/settings/user_settings_remove2.yml
@@ -0,0 +1,15 @@
+use_default_settings:
+ engines:
+ remove:
+ - wikibooks
+ - wikinews
+server:
+ secret_key: "user_secret_key"
+ bind_address: "0.0.0.0"
+ default_http_headers:
+ Custom-Header: Custom-Value
+engines:
+ - name: wikipedia
+ tokens: ['secret_token']
+ - name: newengine
+ engine: dummy
diff --git a/tests/unit/settings/user_settings_simple.yml b/tests/unit/settings/user_settings_simple.yml
new file mode 100644
index 0000000..bc6ed0c
--- /dev/null
+++ b/tests/unit/settings/user_settings_simple.yml
@@ -0,0 +1,9 @@
+use_default_settings: True
+server:
+ secret_key: "user_secret_key"
+ bind_address: "0.0.0.0"
+ default_http_headers:
+ Custom-Header: Custom-Value
+result_proxy:
+ url : https://localhost/morty
+ key : "$ecretKey"
diff --git a/tests/unit/test_answerers.py b/tests/unit/test_answerers.py
index bd8789a..73d8d26 100644
--- a/tests/unit/test_answerers.py
+++ b/tests/unit/test_answerers.py
@@ -10,7 +10,7 @@ class AnswererTest(SearxTestCase):
def test_unicode_input(self):
query = Mock()
- unicode_payload = u'árvíztűrő tükörfúrógép'
+ unicode_payload = 'árvíztűrő tükörfúrógép'
for answerer in answerers:
- query.query = u'{} {}'.format(answerer.keywords[0], unicode_payload)
+ query.query = '{} {}'.format(answerer.keywords[0], unicode_payload)
self.assertTrue(isinstance(answerer.answer(query), list))
diff --git a/tests/unit/test_engines_init.py b/tests/unit/test_engines_init.py
new file mode 100644
index 0000000..c75637f
--- /dev/null
+++ b/tests/unit/test_engines_init.py
@@ -0,0 +1,44 @@
+from searx.testing import SearxTestCase
+from searx import settings, engines
+
+
+class TestEnginesInit(SearxTestCase):
+
+ @classmethod
+ def tearDownClass(cls):
+ settings['outgoing']['using_tor_proxy'] = False
+ settings['outgoing']['extra_proxy_timeout'] = 0
+
+ def test_initialize_engines_default(self):
+ engine_list = [{'engine': 'dummy', 'name': 'engine1', 'shortcut': 'e1'},
+ {'engine': 'dummy', 'name': 'engine2', 'shortcut': 'e2'}]
+
+ engines.load_engines(engine_list)
+ self.assertEqual(len(engines.engines), 2)
+ self.assertIn('engine1', engines.engines)
+ self.assertIn('engine2', engines.engines)
+
+ def test_initialize_engines_exclude_onions(self):
+ settings['outgoing']['using_tor_proxy'] = False
+ engine_list = [{'engine': 'dummy', 'name': 'engine1', 'shortcut': 'e1', 'categories': 'general'},
+ {'engine': 'dummy', 'name': 'engine2', 'shortcut': 'e2', 'categories': 'onions'}]
+
+ engines.initialize_engines(engine_list)
+ self.assertEqual(len(engines.engines), 1)
+ self.assertIn('engine1', engines.engines)
+ self.assertNotIn('onions', engines.categories)
+
+ def test_initialize_engines_include_onions(self):
+ settings['outgoing']['using_tor_proxy'] = True
+ settings['outgoing']['extra_proxy_timeout'] = 100.0
+ engine_list = [{'engine': 'dummy', 'name': 'engine1', 'shortcut': 'e1', 'categories': 'general',
+ 'timeout': 20.0, 'onion_url': 'http://engine1.onion'},
+ {'engine': 'dummy', 'name': 'engine2', 'shortcut': 'e2', 'categories': 'onions'}]
+
+ engines.initialize_engines(engine_list)
+ self.assertEqual(len(engines.engines), 2)
+ self.assertIn('engine1', engines.engines)
+ self.assertIn('engine2', engines.engines)
+ self.assertIn('onions', engines.categories)
+ self.assertIn('http://engine1.onion', engines.engines['engine1'].search_url)
+ self.assertEqual(engines.engines['engine1'].timeout, 120.0)
diff --git a/tests/unit/test_external_bangs.py b/tests/unit/test_external_bangs.py
new file mode 100644
index 0000000..541dfef
--- /dev/null
+++ b/tests/unit/test_external_bangs.py
@@ -0,0 +1,117 @@
+from searx.external_bang import get_node, resolve_bang_definition, get_bang_url, get_bang_definition_and_autocomplete
+from searx.search import SearchQuery, EngineRef
+from searx.testing import SearxTestCase
+
+
+TEST_DB = {
+ 'trie': {
+ 'exam': {
+ 'ple': '//example.com/' + chr(2) + chr(1) + '0',
+ '*': '//wikipedia.org/wiki/' + chr(2) + chr(1) + '0',
+ },
+ 'sea': {
+ '*': 'sea' + chr(2) + chr(1) + '0',
+ 'rch': {
+ '*': 'search' + chr(2) + chr(1) + '0',
+ 'ing': 'searching' + chr(2) + chr(1) + '0',
+ },
+ 's': {
+ 'on': 'season' + chr(2) + chr(1) + '0',
+ 'capes': 'seascape' + chr(2) + chr(1) + '0',
+ }
+ },
+ 'error': ['error in external_bangs.json']
+ }
+}
+
+
+class TestGetNode(SearxTestCase):
+
+ DB = {
+ 'trie': {
+ 'exam': {
+ 'ple': 'test',
+ '*': 'not used',
+ }
+ }
+ }
+
+ def test_found(self):
+ node, before, after = get_node(TestGetNode.DB, 'example')
+
+ self.assertEqual(node, 'test')
+ self.assertEqual(before, 'example')
+ self.assertEqual(after, '')
+
+ def test_get_partial(self):
+ node, before, after = get_node(TestGetNode.DB, 'examp')
+ self.assertEqual(node, TestGetNode.DB['trie']['exam'])
+ self.assertEqual(before, 'exam')
+ self.assertEqual(after, 'p')
+
+ def test_not_found(self):
+ node, before, after = get_node(TestGetNode.DB, 'examples')
+ self.assertEqual(node, 'test')
+ self.assertEqual(before, 'example')
+ self.assertEqual(after, 's')
+
+
+class TestResolveBangDefinition(SearxTestCase):
+
+ def test_https(self):
+ url, rank = resolve_bang_definition('//example.com/' + chr(2) + chr(1) + '42', 'query')
+ self.assertEqual(url, 'https://example.com/query')
+ self.assertEqual(rank, 42)
+
+ def test_http(self):
+ url, rank = resolve_bang_definition('http://example.com/' + chr(2) + chr(1) + '0', 'text')
+ self.assertEqual(url, 'http://example.com/text')
+ self.assertEqual(rank, 0)
+
+
+class TestGetBangDefinitionAndAutocomplete(SearxTestCase):
+
+ def test_found(self):
+ bang_definition, new_autocomplete = get_bang_definition_and_autocomplete('exam', external_bangs_db=TEST_DB)
+ self.assertEqual(bang_definition, TEST_DB['trie']['exam']['*'])
+ self.assertEqual(new_autocomplete, ['example'])
+
+ def test_found_optimized(self):
+ bang_definition, new_autocomplete = get_bang_definition_and_autocomplete('example', external_bangs_db=TEST_DB)
+ self.assertEqual(bang_definition, TEST_DB['trie']['exam']['ple'])
+ self.assertEqual(new_autocomplete, [])
+
+ def test_partial(self):
+ bang_definition, new_autocomplete = get_bang_definition_and_autocomplete('examp', external_bangs_db=TEST_DB)
+ self.assertEqual(bang_definition, None)
+ self.assertEqual(new_autocomplete, ['example'])
+
+ def test_partial2(self):
+ bang_definition, new_autocomplete = get_bang_definition_and_autocomplete('sea', external_bangs_db=TEST_DB)
+ self.assertEqual(bang_definition, TEST_DB['trie']['sea']['*'])
+ self.assertEqual(new_autocomplete, ['search', 'searching', 'seascapes', 'season'])
+
+ def test_error(self):
+ bang_definition, new_autocomplete = get_bang_definition_and_autocomplete('error', external_bangs_db=TEST_DB)
+ self.assertEqual(bang_definition, None)
+ self.assertEqual(new_autocomplete, [])
+
+ def test_actual_data(self):
+ bang_definition, new_autocomplete = get_bang_definition_and_autocomplete('duckduckgo')
+ self.assertTrue(bang_definition.startswith('//duckduckgo.com/?q='))
+ self.assertEqual(new_autocomplete, [])
+
+
+class TestExternalBangJson(SearxTestCase):
+
+ def test_no_external_bang_query(self):
+ result = get_bang_url(SearchQuery('test', engineref_list=[EngineRef('wikipedia', 'general')]))
+ self.assertEqual(result, None)
+
+ def test_get_bang_url(self):
+ url = get_bang_url(SearchQuery('test', engineref_list=[], external_bang='example'), external_bangs_db=TEST_DB)
+ self.assertEqual(url, 'https://example.com/test')
+
+ def test_actual_data(self):
+ google_url = get_bang_url(SearchQuery('test', engineref_list=[], external_bang='g'))
+ self.assertEqual(google_url, 'https://www.google.com/search?q=test')
diff --git a/tests/unit/test_plugins.py b/tests/unit/test_plugins.py
index e497371..9ef4cd6 100644
--- a/tests/unit/test_plugins.py
+++ b/tests/unit/test_plugins.py
@@ -7,7 +7,7 @@ from mock import Mock
def get_search_mock(query, **kwargs):
return Mock(search_query=Mock(query=query, **kwargs),
- result_container=Mock(answers=set()))
+ result_container=Mock(answers=dict()))
class PluginStoreTest(SearxTestCase):
@@ -31,10 +31,10 @@ class PluginStoreTest(SearxTestCase):
request = Mock()
store.call([], 'asdf', request, Mock())
- self.assertFalse(testplugin.asdf.called)
+ self.assertFalse(testplugin.asdf.called) # pylint: disable=E1101
store.call([testplugin], 'asdf', request, Mock())
- self.assertTrue(testplugin.asdf.called)
+ self.assertTrue(testplugin.asdf.called) # pylint: disable=E1101
class SelfIPTest(SearxTestCase):
@@ -48,38 +48,92 @@ class SelfIPTest(SearxTestCase):
# IP test
request = Mock(remote_addr='127.0.0.1')
request.headers.getlist.return_value = []
- search = get_search_mock(query=b'ip', pageno=1)
+ search = get_search_mock(query='ip', pageno=1)
store.call(store.plugins, 'post_search', request, search)
- self.assertTrue('127.0.0.1' in search.result_container.answers)
+ self.assertTrue('127.0.0.1' in search.result_container.answers["ip"]["answer"])
- search = get_search_mock(query=b'ip', pageno=2)
+ search = get_search_mock(query='ip', pageno=2)
store.call(store.plugins, 'post_search', request, search)
- self.assertFalse('127.0.0.1' in search.result_container.answers)
+ self.assertFalse('ip' in search.result_container.answers)
# User agent test
request = Mock(user_agent='Mock')
request.headers.getlist.return_value = []
- search = get_search_mock(query=b'user-agent', pageno=1)
+ search = get_search_mock(query='user-agent', pageno=1)
store.call(store.plugins, 'post_search', request, search)
- self.assertTrue('Mock' in search.result_container.answers)
+ self.assertTrue('Mock' in search.result_container.answers["user-agent"]["answer"])
- search = get_search_mock(query=b'user-agent', pageno=2)
+ search = get_search_mock(query='user-agent', pageno=2)
store.call(store.plugins, 'post_search', request, search)
- self.assertFalse('Mock' in search.result_container.answers)
+ self.assertFalse('user-agent' in search.result_container.answers)
- search = get_search_mock(query=b'user-agent', pageno=1)
+ search = get_search_mock(query='user-agent', pageno=1)
store.call(store.plugins, 'post_search', request, search)
- self.assertTrue('Mock' in search.result_container.answers)
+ self.assertTrue('Mock' in search.result_container.answers["user-agent"]["answer"])
- search = get_search_mock(query=b'user-agent', pageno=2)
+ search = get_search_mock(query='user-agent', pageno=2)
store.call(store.plugins, 'post_search', request, search)
- self.assertFalse('Mock' in search.result_container.answers)
+ self.assertFalse('user-agent' in search.result_container.answers)
- search = get_search_mock(query=b'What is my User-Agent?', pageno=1)
+ search = get_search_mock(query='What is my User-Agent?', pageno=1)
store.call(store.plugins, 'post_search', request, search)
- self.assertTrue('Mock' in search.result_container.answers)
+ self.assertTrue('Mock' in search.result_container.answers["user-agent"]["answer"])
- search = get_search_mock(query=b'What is my User-Agent?', pageno=2)
+ search = get_search_mock(query='What is my User-Agent?', pageno=2)
store.call(store.plugins, 'post_search', request, search)
- self.assertFalse('Mock' in search.result_container.answers)
+ self.assertFalse('user-agent' in search.result_container.answers)
+
+
+class HashPluginTest(SearxTestCase):
+
+ def test_PluginStore_init(self):
+ store = plugins.PluginStore()
+ store.register(plugins.hash_plugin)
+
+ self.assertTrue(len(store.plugins) == 1)
+
+ request = Mock(remote_addr='127.0.0.1')
+ request.headers.getlist.return_value = []
+
+ # MD5
+ search = get_search_mock(query='md5 test', pageno=1)
+ store.call(store.plugins, 'post_search', request, search)
+ self.assertTrue('md5 hash digest: 098f6bcd4621d373cade4e832627b4f6'
+ in search.result_container.answers['hash']['answer'])
+
+ search = get_search_mock(query=b'md5 test', pageno=2)
+ store.call(store.plugins, 'post_search', request, search)
+ self.assertFalse('hash' in search.result_container.answers)
+
+ # SHA1
+ search = get_search_mock(query='sha1 test', pageno=1)
+ store.call(store.plugins, 'post_search', request, search)
+ self.assertTrue('sha1 hash digest: a94a8fe5ccb19ba61c4c0873d391e9879'
+ '82fbbd3' in search.result_container.answers['hash']['answer'])
+
+ # SHA224
+ search = get_search_mock(query='sha224 test', pageno=1)
+ store.call(store.plugins, 'post_search', request, search)
+ self.assertTrue('sha224 hash digest: 90a3ed9e32b2aaf4c61c410eb9254261'
+ '19e1a9dc53d4286ade99a809' in search.result_container.answers['hash']['answer'])
+
+ # SHA256
+ search = get_search_mock(query='sha256 test', pageno=1)
+ store.call(store.plugins, 'post_search', request, search)
+ self.assertTrue('sha256 hash digest: 9f86d081884c7d659a2feaa0c55ad015a'
+ '3bf4f1b2b0b822cd15d6c15b0f00a08' in search.result_container.answers['hash']['answer'])
+
+ # SHA384
+ search = get_search_mock(query='sha384 test', pageno=1)
+ store.call(store.plugins, 'post_search', request, search)
+ self.assertTrue('sha384 hash digest: 768412320f7b0aa5812fce428dc4706b3c'
+ 'ae50e02a64caa16a782249bfe8efc4b7ef1ccb126255d196047dfedf1'
+ '7a0a9' in search.result_container.answers['hash']['answer'])
+
+ # SHA512
+ search = get_search_mock(query='sha512 test', pageno=1)
+ store.call(store.plugins, 'post_search', request, search)
+ self.assertTrue('sha512 hash digest: ee26b0dd4af7e749aa1a8ee3c10ae9923f6'
+ '18980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5'
+ 'fa9ad8e6f57f50028a8ff' in search.result_container.answers['hash']['answer'])
diff --git a/tests/unit/test_poolrequests.py b/tests/unit/test_poolrequests.py
new file mode 100644
index 0000000..b22685f
--- /dev/null
+++ b/tests/unit/test_poolrequests.py
@@ -0,0 +1,89 @@
+from unittest.mock import patch
+from requests.models import Response
+
+from searx.testing import SearxTestCase
+
+import searx.poolrequests
+from searx.poolrequests import get_proxy_cycles, get_proxies
+
+
+CONFIG = {'http': ['http://localhost:9090', 'http://localhost:9092'],
+ 'https': ['http://localhost:9091', 'http://localhost:9093']}
+
+
+class TestProxy(SearxTestCase):
+
+ def test_noconfig(self):
+ cycles = get_proxy_cycles(None)
+ self.assertIsNone(cycles)
+
+ cycles = get_proxy_cycles(False)
+ self.assertIsNone(cycles)
+
+ def test_oldconfig(self):
+ config = {
+ 'http': 'http://localhost:9090',
+ 'https': 'http://localhost:9091',
+ }
+ cycles = get_proxy_cycles(config)
+ self.assertEqual(next(cycles['http']), 'http://localhost:9090')
+ self.assertEqual(next(cycles['http']), 'http://localhost:9090')
+ self.assertEqual(next(cycles['https']), 'http://localhost:9091')
+ self.assertEqual(next(cycles['https']), 'http://localhost:9091')
+
+ def test_one_proxy(self):
+ config = {
+ 'http': ['http://localhost:9090'],
+ 'https': ['http://localhost:9091'],
+ }
+ cycles = get_proxy_cycles(config)
+ self.assertEqual(next(cycles['http']), 'http://localhost:9090')
+ self.assertEqual(next(cycles['http']), 'http://localhost:9090')
+ self.assertEqual(next(cycles['https']), 'http://localhost:9091')
+ self.assertEqual(next(cycles['https']), 'http://localhost:9091')
+
+ def test_multiple_proxies(self):
+ cycles = get_proxy_cycles(CONFIG)
+ self.assertEqual(next(cycles['http']), 'http://localhost:9090')
+ self.assertEqual(next(cycles['http']), 'http://localhost:9092')
+ self.assertEqual(next(cycles['http']), 'http://localhost:9090')
+ self.assertEqual(next(cycles['https']), 'http://localhost:9091')
+ self.assertEqual(next(cycles['https']), 'http://localhost:9093')
+ self.assertEqual(next(cycles['https']), 'http://localhost:9091')
+
+ def test_getproxies_none(self):
+ self.assertIsNone(get_proxies(None))
+
+ def test_getproxies_config(self):
+ cycles = get_proxy_cycles(CONFIG)
+ self.assertEqual(get_proxies(cycles), {
+ 'http': 'http://localhost:9090',
+ 'https': 'http://localhost:9091'
+ })
+ self.assertEqual(get_proxies(cycles), {
+ 'http': 'http://localhost:9092',
+ 'https': 'http://localhost:9093'
+ })
+
+ @patch('searx.poolrequests.get_global_proxies')
+ def test_request(self, mock_get_global_proxies):
+ method = 'GET'
+ url = 'http://localhost'
+ custom_proxies = {
+ 'https': 'http://localhost:1080'
+ }
+ global_proxies = {
+ 'http': 'http://localhost:9092',
+ 'https': 'http://localhost:9093'
+ }
+ mock_get_global_proxies.return_value = global_proxies
+
+ # check the global proxies usage
+ with patch.object(searx.poolrequests.SessionSinglePool, 'request', return_value=Response()) as mock_method:
+ searx.poolrequests.request(method, url)
+ mock_method.assert_called_once_with(method=method, url=url, proxies=global_proxies)
+
+ # check if the proxies parameter overrides the global proxies
+ with patch.object(searx.poolrequests.SessionSinglePool, 'request', return_value=Response()) as mock_method:
+ searx.poolrequests.request(method, url, proxies=custom_proxies)
+ mock_method.assert_called_once_with(method=method, url=url, proxies=custom_proxies)
diff --git a/tests/unit/test_preferences.py b/tests/unit/test_preferences.py
index 61ac0e8..510d498 100644
--- a/tests/unit/test_preferences.py
+++ b/tests/unit/test_preferences.py
@@ -3,10 +3,10 @@ from searx.preferences import (EnumStringSetting, MapSetting, MissingArgumentExc
from searx.testing import SearxTestCase
-class PluginStub(object):
+class PluginStub:
- def __init__(self, id, default_on):
- self.id = id
+ def __init__(self, plugin_id, default_on):
+ self.id = plugin_id
self.default_on = default_on
@@ -15,11 +15,11 @@ class TestSettings(SearxTestCase):
def test_map_setting_invalid_initialization(self):
with self.assertRaises(MissingArgumentException):
- setting = MapSetting(3, wrong_argument={'0': 0})
+ MapSetting(3, wrong_argument={'0': 0})
def test_map_setting_invalid_default_value(self):
with self.assertRaises(ValidationException):
- setting = MapSetting(3, map={'dog': 1, 'bat': 2})
+ MapSetting(3, map={'dog': 1, 'bat': 2})
def test_map_setting_invalid_choice(self):
setting = MapSetting(2, map={'dog': 1, 'bat': 2})
@@ -28,26 +28,22 @@ class TestSettings(SearxTestCase):
def test_map_setting_valid_default(self):
setting = MapSetting(3, map={'dog': 1, 'bat': 2, 'cat': 3})
- self.assertEquals(setting.get_value(), 3)
+ self.assertEqual(setting.get_value(), 3)
def test_map_setting_valid_choice(self):
setting = MapSetting(3, map={'dog': 1, 'bat': 2, 'cat': 3})
- self.assertEquals(setting.get_value(), 3)
+ self.assertEqual(setting.get_value(), 3)
setting.parse('bat')
- self.assertEquals(setting.get_value(), 2)
-
- def test_enum_setting_invalid_initialization(self):
- with self.assertRaises(MissingArgumentException):
- setting = EnumStringSetting('cat', wrong_argument=[0, 1, 2])
+ self.assertEqual(setting.get_value(), 2)
# enum settings
def test_enum_setting_invalid_initialization(self):
with self.assertRaises(MissingArgumentException):
- setting = EnumStringSetting('cat', wrong_argument=[0, 1, 2])
+ EnumStringSetting('cat', wrong_argument=[0, 1, 2])
def test_enum_setting_invalid_default_value(self):
with self.assertRaises(ValidationException):
- setting = EnumStringSetting(3, choices=[0, 1, 2])
+ EnumStringSetting(3, choices=[0, 1, 2])
def test_enum_setting_invalid_choice(self):
setting = EnumStringSetting(0, choices=[0, 1, 2])
@@ -56,22 +52,22 @@ class TestSettings(SearxTestCase):
def test_enum_setting_valid_default(self):
setting = EnumStringSetting(3, choices=[1, 2, 3])
- self.assertEquals(setting.get_value(), 3)
+ self.assertEqual(setting.get_value(), 3)
def test_enum_setting_valid_choice(self):
setting = EnumStringSetting(3, choices=[1, 2, 3])
- self.assertEquals(setting.get_value(), 3)
+ self.assertEqual(setting.get_value(), 3)
setting.parse(2)
- self.assertEquals(setting.get_value(), 2)
+ self.assertEqual(setting.get_value(), 2)
# multiple choice settings
def test_multiple_setting_invalid_initialization(self):
with self.assertRaises(MissingArgumentException):
- setting = MultipleChoiceSetting(['2'], wrong_argument=['0', '1', '2'])
+ MultipleChoiceSetting(['2'], wrong_argument=['0', '1', '2'])
def test_multiple_setting_invalid_default_value(self):
with self.assertRaises(ValidationException):
- setting = MultipleChoiceSetting(['3', '4'], choices=['0', '1', '2'])
+ MultipleChoiceSetting(['3', '4'], choices=['0', '1', '2'])
def test_multiple_setting_invalid_choice(self):
setting = MultipleChoiceSetting(['1', '2'], choices=['0', '1', '2'])
@@ -80,48 +76,48 @@ class TestSettings(SearxTestCase):
def test_multiple_setting_valid_default(self):
setting = MultipleChoiceSetting(['3'], choices=['1', '2', '3'])
- self.assertEquals(setting.get_value(), ['3'])
+ self.assertEqual(setting.get_value(), ['3'])
def test_multiple_setting_valid_choice(self):
setting = MultipleChoiceSetting(['3'], choices=['1', '2', '3'])
- self.assertEquals(setting.get_value(), ['3'])
+ self.assertEqual(setting.get_value(), ['3'])
setting.parse('2')
- self.assertEquals(setting.get_value(), ['2'])
+ self.assertEqual(setting.get_value(), ['2'])
# search language settings
def test_lang_setting_valid_choice(self):
setting = SearchLanguageSetting('all', choices=['all', 'de', 'en'])
setting.parse('de')
- self.assertEquals(setting.get_value(), 'de')
+ self.assertEqual(setting.get_value(), 'de')
def test_lang_setting_invalid_choice(self):
setting = SearchLanguageSetting('all', choices=['all', 'de', 'en'])
setting.parse('xx')
- self.assertEquals(setting.get_value(), 'all')
+ self.assertEqual(setting.get_value(), 'all')
def test_lang_setting_old_cookie_choice(self):
setting = SearchLanguageSetting('all', choices=['all', 'es', 'es-ES'])
setting.parse('es_XA')
- self.assertEquals(setting.get_value(), 'es')
+ self.assertEqual(setting.get_value(), 'es')
def test_lang_setting_old_cookie_format(self):
setting = SearchLanguageSetting('all', choices=['all', 'es', 'es-ES'])
setting.parse('es_ES')
- self.assertEquals(setting.get_value(), 'es-ES')
+ self.assertEqual(setting.get_value(), 'es-ES')
# plugins settings
def test_plugins_setting_all_default_enabled(self):
plugin1 = PluginStub('plugin1', True)
plugin2 = PluginStub('plugin2', True)
setting = PluginsSetting(['3'], choices=[plugin1, plugin2])
- self.assertEquals(setting.get_enabled(), set(['plugin1', 'plugin2']))
+ self.assertEqual(setting.get_enabled(), set(['plugin1', 'plugin2']))
def test_plugins_setting_few_default_enabled(self):
plugin1 = PluginStub('plugin1', True)
plugin2 = PluginStub('plugin2', False)
plugin3 = PluginStub('plugin3', True)
setting = PluginsSetting('name', choices=[plugin1, plugin2, plugin3])
- self.assertEquals(setting.get_enabled(), set(['plugin1', 'plugin3']))
+ self.assertEqual(setting.get_enabled(), set(['plugin1', 'plugin3']))
class TestPreferences(SearxTestCase):
@@ -141,4 +137,4 @@ class TestPreferences(SearxTestCase):
pref.parse_encoded_data(url_params)
self.assertEqual(
vars(pref.key_value_settings['categories']),
- {'value': ['general'], 'choices': ['general', 'none']})
+ {'value': ['general'], 'locked': False, 'choices': ['general', 'none']})
diff --git a/tests/unit/test_query.py b/tests/unit/test_query.py
index e4c0bde..7a79ce2 100644
--- a/tests/unit/test_query.py
+++ b/tests/unit/test_query.py
@@ -1,29 +1,76 @@
+from mock import patch
+
+from searx.search import initialize
from searx.query import RawTextQuery
from searx.testing import SearxTestCase
+import searx.engines
+
+
+TEST_ENGINES = [
+ {
+ 'name': 'dummy engine',
+ 'engine': 'dummy',
+ 'categories': 'general',
+ 'shortcut': 'du',
+ 'timeout': 3.0,
+ 'tokens': [],
+ },
+]
+
class TestQuery(SearxTestCase):
def test_simple_query(self):
query_text = 'the query'
query = RawTextQuery(query_text, [])
- query.parse_query()
- self.assertEquals(query.getFullQuery(), query_text)
- self.assertEquals(len(query.query_parts), 1)
- self.assertEquals(len(query.languages), 0)
+ self.assertEqual(query.getFullQuery(), query_text)
+ self.assertEqual(len(query.query_parts), 0)
+ self.assertEqual(len(query.user_query_parts), 2)
+ self.assertEqual(len(query.languages), 0)
self.assertFalse(query.specific)
+ def test_multiple_spaces_query(self):
+ query_text = '\tthe query'
+ query = RawTextQuery(query_text, [])
+
+ self.assertEqual(query.getFullQuery(), 'the query')
+ self.assertEqual(len(query.query_parts), 0)
+ self.assertEqual(len(query.user_query_parts), 2)
+ self.assertEqual(len(query.languages), 0)
+ self.assertFalse(query.specific)
+
+ def test_str_method(self):
+ query_text = '<7 the query'
+ query = RawTextQuery(query_text, [])
+ self.assertEqual(str(query), '<7 the query')
+
+ def test_repr_method(self):
+ query_text = '<8 the query'
+ query = RawTextQuery(query_text, [])
+ r = repr(query)
+ self.assertTrue(r.startswith(f"<RawTextQuery query='{query_text}' "))
+
+ def test_change_query(self):
+ query_text = '<8 the query'
+ query = RawTextQuery(query_text, [])
+ another_query = query.changeQuery('another text')
+ self.assertEqual(query, another_query)
+ self.assertEqual(query.getFullQuery(), '<8 another text')
+
+
+class TestLanguageParser(SearxTestCase):
+
def test_language_code(self):
language = 'es-ES'
query_text = 'the query'
full_query = ':' + language + ' ' + query_text
query = RawTextQuery(full_query, [])
- query.parse_query()
- self.assertEquals(query.getFullQuery(), full_query)
- self.assertEquals(len(query.query_parts), 3)
- self.assertEquals(len(query.languages), 1)
+ self.assertEqual(query.getFullQuery(), full_query)
+ self.assertEqual(len(query.query_parts), 1)
+ self.assertEqual(len(query.languages), 1)
self.assertIn(language, query.languages)
self.assertFalse(query.specific)
@@ -32,10 +79,9 @@ class TestQuery(SearxTestCase):
query_text = 'the query'
full_query = ':' + language + ' ' + query_text
query = RawTextQuery(full_query, [])
- query.parse_query()
- self.assertEquals(query.getFullQuery(), full_query)
- self.assertEquals(len(query.query_parts), 3)
+ self.assertEqual(query.getFullQuery(), full_query)
+ self.assertEqual(len(query.query_parts), 1)
self.assertIn('en', query.languages)
self.assertFalse(query.specific)
@@ -44,10 +90,9 @@ class TestQuery(SearxTestCase):
query_text = 'the query'
full_query = ':' + language + ' ' + query_text
query = RawTextQuery(full_query, [])
- query.parse_query()
- self.assertEquals(query.getFullQuery(), full_query)
- self.assertEquals(len(query.query_parts), 3)
+ self.assertEqual(query.getFullQuery(), full_query)
+ self.assertEqual(len(query.query_parts), 1)
self.assertIn('all', query.languages)
self.assertFalse(query.specific)
@@ -56,51 +101,190 @@ class TestQuery(SearxTestCase):
query_text = 'the query'
full_query = ':' + language + ' ' + query_text
query = RawTextQuery(full_query, [])
- query.parse_query()
- self.assertEquals(query.getFullQuery(), full_query)
- self.assertEquals(len(query.query_parts), 1)
- self.assertEquals(len(query.languages), 0)
+ self.assertEqual(query.getFullQuery(), full_query)
+ self.assertEqual(len(query.query_parts), 0)
+ self.assertEqual(len(query.languages), 0)
+ self.assertFalse(query.specific)
+
+ def test_empty_colon_in_query(self):
+ query_text = 'the : query'
+ query = RawTextQuery(query_text, [])
+
+ self.assertEqual(query.getFullQuery(), query_text)
+ self.assertEqual(len(query.query_parts), 0)
+ self.assertEqual(len(query.languages), 0)
self.assertFalse(query.specific)
+ def test_autocomplete_empty(self):
+ query_text = 'the query :'
+ query = RawTextQuery(query_text, [])
+ self.assertEqual(query.autocomplete_list, [":en", ":en_us", ":english", ":united_kingdom"])
+
+ def test_autocomplete(self):
+ query = RawTextQuery(':englis', [])
+ self.assertEqual(query.autocomplete_list, [":english"])
+
+ query = RawTextQuery(':deutschla', [])
+ self.assertEqual(query.autocomplete_list, [":deutschland"])
+
+ query = RawTextQuery(':new_zea', [])
+ self.assertEqual(query.autocomplete_list, [":new_zealand"])
+
+ query = RawTextQuery(':hu-H', [])
+ self.assertEqual(query.autocomplete_list, [":hu-hu"])
+
+ query = RawTextQuery(':v', [])
+ self.assertEqual(query.autocomplete_list, [":vi", ":tiếng việt"])
+
+
+class TestTimeoutParser(SearxTestCase):
+
def test_timeout_below100(self):
query_text = '<3 the query'
query = RawTextQuery(query_text, [])
- query.parse_query()
- self.assertEquals(query.getFullQuery(), query_text)
- self.assertEquals(len(query.query_parts), 3)
- self.assertEquals(query.timeout_limit, 3)
+ self.assertEqual(query.getFullQuery(), query_text)
+ self.assertEqual(len(query.query_parts), 1)
+ self.assertEqual(query.timeout_limit, 3)
self.assertFalse(query.specific)
def test_timeout_above100(self):
query_text = '<350 the query'
query = RawTextQuery(query_text, [])
- query.parse_query()
- self.assertEquals(query.getFullQuery(), query_text)
- self.assertEquals(len(query.query_parts), 3)
- self.assertEquals(query.timeout_limit, 0.35)
+ self.assertEqual(query.getFullQuery(), query_text)
+ self.assertEqual(len(query.query_parts), 1)
+ self.assertEqual(query.timeout_limit, 0.35)
self.assertFalse(query.specific)
def test_timeout_above1000(self):
query_text = '<3500 the query'
query = RawTextQuery(query_text, [])
- query.parse_query()
- self.assertEquals(query.getFullQuery(), query_text)
- self.assertEquals(len(query.query_parts), 3)
- self.assertEquals(query.timeout_limit, 3.5)
+ self.assertEqual(query.getFullQuery(), query_text)
+ self.assertEqual(len(query.query_parts), 1)
+ self.assertEqual(query.timeout_limit, 3.5)
self.assertFalse(query.specific)
def test_timeout_invalid(self):
# invalid number: it is not bang but it is part of the query
query_text = '<xxx the query'
query = RawTextQuery(query_text, [])
- query.parse_query()
- self.assertEquals(query.getFullQuery(), query_text)
- self.assertEquals(len(query.query_parts), 1)
- self.assertEquals(query.query_parts[0], query_text)
- self.assertEquals(query.timeout_limit, None)
+ self.assertEqual(query.getFullQuery(), query_text)
+ self.assertEqual(len(query.query_parts), 0)
+ self.assertEqual(query.getQuery(), query_text)
+ self.assertEqual(query.timeout_limit, None)
+ self.assertFalse(query.specific)
+
+ def test_timeout_autocomplete(self):
+ # invalid number: it is not bang but it is part of the query
+ query_text = 'the query <'
+ query = RawTextQuery(query_text, [])
+
+ self.assertEqual(query.getFullQuery(), query_text)
+ self.assertEqual(len(query.query_parts), 0)
+ self.assertEqual(query.getQuery(), query_text)
+ self.assertEqual(query.timeout_limit, None)
self.assertFalse(query.specific)
+ self.assertEqual(query.autocomplete_list, ['<3', '<850'])
+
+
+class TestExternalBangParser(SearxTestCase):
+
+ def test_external_bang(self):
+ query_text = '!!ddg the query'
+ query = RawTextQuery(query_text, [])
+
+ self.assertEqual(query.getFullQuery(), query_text)
+ self.assertEqual(len(query.query_parts), 1)
+ self.assertFalse(query.specific)
+
+ def test_external_bang_not_found(self):
+ query_text = '!!notfoundbang the query'
+ query = RawTextQuery(query_text, [])
+
+ self.assertEqual(query.getFullQuery(), query_text)
+ self.assertEqual(query.external_bang, None)
+ self.assertFalse(query.specific)
+
+ def test_external_bang_autocomplete(self):
+ query_text = 'the query !!dd'
+ query = RawTextQuery(query_text, [])
+
+ self.assertEqual(query.getFullQuery(), '!!dd the query')
+ self.assertEqual(len(query.query_parts), 1)
+ self.assertFalse(query.specific)
+ self.assertGreater(len(query.autocomplete_list), 0)
+
+ a = query.autocomplete_list[0]
+ self.assertEqual(query.get_autocomplete_full_query(a), a + ' the query')
+
+ def test_external_bang_autocomplete_empty(self):
+ query_text = 'the query !!'
+ query = RawTextQuery(query_text, [])
+
+ self.assertEqual(query.getFullQuery(), 'the query !!')
+ self.assertEqual(len(query.query_parts), 0)
+ self.assertFalse(query.specific)
+ self.assertGreater(len(query.autocomplete_list), 2)
+
+ a = query.autocomplete_list[0]
+ self.assertEqual(query.get_autocomplete_full_query(a), 'the query ' + a)
+
+
+class TestBang(SearxTestCase):
+
+ SPECIFIC_BANGS = ['!dummy_engine', '!du', '!general']
+ NOT_SPECIFIC_BANGS = ['?dummy_engine', '?du', '?general']
+ THE_QUERY = 'the query'
+
+ def test_bang(self):
+ initialize(TEST_ENGINES)
+
+ for bang in TestBang.SPECIFIC_BANGS + TestBang.NOT_SPECIFIC_BANGS:
+ with self.subTest(msg="Check bang", bang=bang):
+ query_text = TestBang.THE_QUERY + ' ' + bang
+ query = RawTextQuery(query_text, [])
+
+ self.assertEqual(query.getFullQuery(), bang + ' ' + TestBang.THE_QUERY)
+ self.assertEqual(query.query_parts, [bang])
+ self.assertEqual(query.user_query_parts, TestBang.THE_QUERY.split(' '))
+
+ def test_specific(self):
+ for bang in TestBang.SPECIFIC_BANGS:
+ with self.subTest(msg="Check bang is specific", bang=bang):
+ query_text = TestBang.THE_QUERY + ' ' + bang
+ query = RawTextQuery(query_text, [])
+ self.assertTrue(query.specific)
+
+ def test_not_specific(self):
+ for bang in TestBang.NOT_SPECIFIC_BANGS:
+ with self.subTest(msg="Check bang is not specific", bang=bang):
+ query_text = TestBang.THE_QUERY + ' ' + bang
+ query = RawTextQuery(query_text, [])
+ self.assertFalse(query.specific)
+
+ def test_bang_not_found(self):
+ initialize(TEST_ENGINES)
+ query = RawTextQuery('the query !bang_not_found', [])
+ self.assertEqual(query.getFullQuery(), 'the query !bang_not_found')
+
+ def test_bang_autocomplete(self):
+ initialize(TEST_ENGINES)
+ query = RawTextQuery('the query !dum', [])
+ self.assertEqual(query.autocomplete_list, ['!dummy_engine'])
+
+ query = RawTextQuery('!dum the query', [])
+ self.assertEqual(query.autocomplete_list, [])
+ self.assertEqual(query.getQuery(), '!dum the query')
+
+ def test_bang_autocomplete_empty(self):
+ with patch.object(searx.engines, 'initialize_engines', searx.engines.load_engines):
+ initialize()
+ query = RawTextQuery('the query !', [])
+ self.assertEqual(query.autocomplete_list, ['!images', '!wikipedia', '!osm'])
+
+ query = RawTextQuery('the query ?', ['osm'])
+ self.assertEqual(query.autocomplete_list, ['?images', '?wikipedia'])
diff --git a/tests/unit/test_results.py b/tests/unit/test_results.py
index 274b5b3..a1d9e67 100644
--- a/tests/unit/test_results.py
+++ b/tests/unit/test_results.py
@@ -20,22 +20,22 @@ def fake_result(url='https://aa.bb/cc?dd=ee#ff',
class ResultContainerTestCase(SearxTestCase):
def test_empty(self):
- c = ResultContainer()
+ c = ResultContainer("en-US")
self.assertEqual(c.get_ordered_results(), [])
def test_one_result(self):
- c = ResultContainer()
+ c = ResultContainer("en-US")
c.extend('wikipedia', [fake_result()])
self.assertEqual(c.results_length(), 1)
def test_one_suggestion(self):
- c = ResultContainer()
+ c = ResultContainer("en-US")
c.extend('wikipedia', [fake_result(suggestion=True)])
self.assertEqual(len(c.suggestions), 1)
self.assertEqual(c.results_length(), 0)
def test_result_merge(self):
- c = ResultContainer()
+ c = ResultContainer("en-US")
c.extend('wikipedia', [fake_result()])
c.extend('wikidata', [fake_result(), fake_result(url='https://example.com/')])
self.assertEqual(c.results_length(), 2)
diff --git a/tests/unit/test_search.py b/tests/unit/test_search.py
index a39786d..7273203 100644
--- a/tests/unit/test_search.py
+++ b/tests/unit/test_search.py
@@ -1,60 +1,100 @@
# -*- coding: utf-8 -*-
from searx.testing import SearxTestCase
-
-import searx.preferences
+from searx.search import SearchQuery, EngineRef
import searx.search
-import searx.engines
+
+
+SAFESEARCH = 0
+PAGENO = 1
+PUBLIC_ENGINE_NAME = 'general dummy'
+TEST_ENGINES = [
+ {
+ 'name': PUBLIC_ENGINE_NAME,
+ 'engine': 'dummy',
+ 'categories': 'general',
+ 'shortcut': 'gd',
+ 'timeout': 3.0,
+ 'tokens': [],
+ },
+]
+
+
+class SearchQueryTestCase(SearxTestCase):
+
+ def test_repr(self):
+ s = SearchQuery('test', [EngineRef('bing', 'general')], 'all', 0, 1, '1', 5.0, 'g')
+ self.assertEqual(repr(s),
+ "SearchQuery('test', [EngineRef('bing', 'general')], 'all', 0, 1, '1', 5.0, 'g')") # noqa
+
+ def test_eq(self):
+ s = SearchQuery('test', [EngineRef('bing', 'general')], 'all', 0, 1, None, None, None)
+ t = SearchQuery('test', [EngineRef('google', 'general')], 'all', 0, 1, None, None, None)
+ self.assertEqual(s, s)
+ self.assertNotEqual(s, t)
class SearchTestCase(SearxTestCase):
@classmethod
def setUpClass(cls):
- searx.engines.initialize_engines([{
- 'name': 'general dummy',
- 'engine': 'dummy',
- 'categories': 'general',
- 'shortcut': 'gd',
- 'timeout': 3.0
- }])
+ searx.search.initialize(TEST_ENGINES)
def test_timeout_simple(self):
searx.search.max_request_timeout = None
- search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': 'general dummy'}],
- ['general'], 'en-US', 0, 1, None, None)
+ search_query = SearchQuery('test', [EngineRef(PUBLIC_ENGINE_NAME, 'general')],
+ 'en-US', SAFESEARCH, PAGENO, None, None)
search = searx.search.Search(search_query)
search.search()
- self.assertEquals(search.actual_timeout, 3.0)
+ self.assertEqual(search.actual_timeout, 3.0)
def test_timeout_query_above_default_nomax(self):
searx.search.max_request_timeout = None
- search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': 'general dummy'}],
- ['general'], 'en-US', 0, 1, None, 5.0)
+ search_query = SearchQuery('test', [EngineRef(PUBLIC_ENGINE_NAME, 'general')],
+ 'en-US', SAFESEARCH, PAGENO, None, 5.0)
search = searx.search.Search(search_query)
search.search()
- self.assertEquals(search.actual_timeout, 3.0)
+ self.assertEqual(search.actual_timeout, 3.0)
def test_timeout_query_below_default_nomax(self):
searx.search.max_request_timeout = None
- search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': 'general dummy'}],
- ['general'], 'en-US', 0, 1, None, 1.0)
+ search_query = SearchQuery('test', [EngineRef(PUBLIC_ENGINE_NAME, 'general')],
+ 'en-US', SAFESEARCH, PAGENO, None, 1.0)
search = searx.search.Search(search_query)
search.search()
- self.assertEquals(search.actual_timeout, 1.0)
+ self.assertEqual(search.actual_timeout, 1.0)
def test_timeout_query_below_max(self):
searx.search.max_request_timeout = 10.0
- search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': 'general dummy'}],
- ['general'], 'en-US', 0, 1, None, 5.0)
+ search_query = SearchQuery('test', [EngineRef(PUBLIC_ENGINE_NAME, 'general')],
+ 'en-US', SAFESEARCH, PAGENO, None, 5.0)
search = searx.search.Search(search_query)
search.search()
- self.assertEquals(search.actual_timeout, 5.0)
+ self.assertEqual(search.actual_timeout, 5.0)
def test_timeout_query_above_max(self):
searx.search.max_request_timeout = 10.0
- search_query = searx.query.SearchQuery('test', [{'category': 'general', 'name': 'general dummy'}],
- ['general'], 'en-US', 0, 1, None, 15.0)
+ search_query = SearchQuery('test', [EngineRef(PUBLIC_ENGINE_NAME, 'general')],
+ 'en-US', SAFESEARCH, PAGENO, None, 15.0)
search = searx.search.Search(search_query)
search.search()
- self.assertEquals(search.actual_timeout, 10.0)
+ self.assertEqual(search.actual_timeout, 10.0)
+
+ def test_external_bang(self):
+ search_query = SearchQuery('yes yes',
+ [EngineRef(PUBLIC_ENGINE_NAME, 'general')],
+ 'en-US', SAFESEARCH, PAGENO, None, None,
+ external_bang="yt")
+ search = searx.search.Search(search_query)
+ results = search.search()
+ # For checking if the user redirected with the youtube external bang
+ self.assertTrue(results.redirect_url is not None)
+
+ search_query = SearchQuery('youtube never gonna give you up',
+ [EngineRef(PUBLIC_ENGINE_NAME, 'general')],
+ 'en-US', SAFESEARCH, PAGENO, None, None)
+
+ search = searx.search.Search(search_query)
+ results = search.search()
+ # This should not redirect
+ self.assertTrue(results.redirect_url is None)
diff --git a/tests/unit/test_settings_loader.py b/tests/unit/test_settings_loader.py
new file mode 100644
index 0000000..7df64e5
--- /dev/null
+++ b/tests/unit/test_settings_loader.py
@@ -0,0 +1,122 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+from os.path import dirname, join, abspath
+from unittest.mock import patch
+
+from searx.testing import SearxTestCase
+from searx.exceptions import SearxSettingsException
+from searx import settings_loader
+
+
+test_dir = abspath(dirname(__file__))
+
+
+class TestLoad(SearxTestCase):
+
+ def test_load_zero(self):
+ with self.assertRaises(SearxSettingsException):
+ settings_loader.load_yaml('/dev/zero')
+
+ with self.assertRaises(SearxSettingsException):
+ settings_loader.load_yaml(join(test_dir, '/settings/syntaxerror_settings.yml'))
+
+ with self.assertRaises(SearxSettingsException):
+ settings_loader.load_yaml(join(test_dir, '/settings/empty_settings.yml'))
+
+ def test_check_settings_yml(self):
+ self.assertIsNone(settings_loader.check_settings_yml('/dev/zero'))
+
+ bad_settings_path = join(test_dir, 'settings/syntaxerror_settings.yml')
+ self.assertEqual(settings_loader.check_settings_yml(bad_settings_path), bad_settings_path)
+
+
+class TestDefaultSettings(SearxTestCase):
+
+ def test_load(self):
+ settings, msg = settings_loader.load_settings(load_user_setttings=False)
+ self.assertTrue(msg.startswith('load the default settings from'))
+ self.assertFalse(settings['general']['debug'])
+ self.assertTrue(isinstance(settings['general']['instance_name'], str))
+ self.assertEqual(settings['server']['secret_key'], "ultrasecretkey")
+ self.assertTrue(isinstance(settings['server']['port'], int))
+ self.assertTrue(isinstance(settings['server']['bind_address'], str))
+ self.assertTrue(isinstance(settings['engines'], list))
+ self.assertTrue(isinstance(settings['locales'], dict))
+ self.assertTrue(isinstance(settings['doi_resolvers'], dict))
+ self.assertTrue(isinstance(settings['default_doi_resolver'], str))
+
+
+class TestUserSettings(SearxTestCase):
+
+ def test_is_use_default_settings(self):
+ self.assertFalse(settings_loader.is_use_default_settings({}))
+ self.assertTrue(settings_loader.is_use_default_settings({'use_default_settings': True}))
+ self.assertTrue(settings_loader.is_use_default_settings({'use_default_settings': {}}))
+ with self.assertRaises(ValueError):
+ self.assertFalse(settings_loader.is_use_default_settings({'use_default_settings': 1}))
+ with self.assertRaises(ValueError):
+ self.assertFalse(settings_loader.is_use_default_settings({'use_default_settings': 0}))
+
+ def test_user_settings_not_found(self):
+ with patch.dict(settings_loader.environ,
+ {'SEARX_SETTINGS_PATH': '/dev/null'}):
+ settings, msg = settings_loader.load_settings()
+ self.assertTrue(msg.startswith('load the default settings from'))
+ self.assertEqual(settings['server']['secret_key'], "ultrasecretkey")
+
+ def test_user_settings(self):
+ with patch.dict(settings_loader.environ,
+ {'SEARX_SETTINGS_PATH': join(test_dir, 'settings/user_settings_simple.yml')}):
+ settings, msg = settings_loader.load_settings()
+ self.assertTrue(msg.startswith('merge the default settings'))
+ self.assertEqual(settings['server']['secret_key'], "user_secret_key")
+ self.assertEqual(settings['server']['default_http_headers']['Custom-Header'], "Custom-Value")
+
+ def test_user_settings_remove(self):
+ with patch.dict(settings_loader.environ,
+ {'SEARX_SETTINGS_PATH': join(test_dir, 'settings/user_settings_remove.yml')}):
+ settings, msg = settings_loader.load_settings()
+ self.assertTrue(msg.startswith('merge the default settings'))
+ self.assertEqual(settings['server']['secret_key'], "user_secret_key")
+ self.assertEqual(settings['server']['default_http_headers']['Custom-Header'], "Custom-Value")
+ engine_names = [engine['name'] for engine in settings['engines']]
+ self.assertNotIn('wikinews', engine_names)
+ self.assertNotIn('wikibooks', engine_names)
+ self.assertIn('wikipedia', engine_names)
+
+ def test_user_settings_remove2(self):
+ with patch.dict(settings_loader.environ,
+ {'SEARX_SETTINGS_PATH': join(test_dir, 'settings/user_settings_remove2.yml')}):
+ settings, msg = settings_loader.load_settings()
+ self.assertTrue(msg.startswith('merge the default settings'))
+ self.assertEqual(settings['server']['secret_key'], "user_secret_key")
+ self.assertEqual(settings['server']['default_http_headers']['Custom-Header'], "Custom-Value")
+ engine_names = [engine['name'] for engine in settings['engines']]
+ self.assertNotIn('wikinews', engine_names)
+ self.assertNotIn('wikibooks', engine_names)
+ self.assertIn('wikipedia', engine_names)
+ wikipedia = list(filter(lambda engine: (engine.get('name')) == 'wikipedia', settings['engines']))
+ self.assertEqual(wikipedia[0]['engine'], 'wikipedia')
+ self.assertEqual(wikipedia[0]['tokens'], ['secret_token'])
+ newengine = list(filter(lambda engine: (engine.get('name')) == 'newengine', settings['engines']))
+ self.assertEqual(newengine[0]['engine'], 'dummy')
+
+ def test_user_settings_keep_only(self):
+ with patch.dict(settings_loader.environ,
+ {'SEARX_SETTINGS_PATH': join(test_dir, 'settings/user_settings_keep_only.yml')}):
+ settings, msg = settings_loader.load_settings()
+ self.assertTrue(msg.startswith('merge the default settings'))
+ engine_names = [engine['name'] for engine in settings['engines']]
+ self.assertEqual(engine_names, ['wikibooks', 'wikinews', 'wikipedia', 'newengine'])
+ # wikipedia has been removed, then added again with the "engine" section of user_settings_keep_only.yml
+ self.assertEqual(len(settings['engines'][2]), 1)
+
+ def test_custom_settings(self):
+ with patch.dict(settings_loader.environ,
+ {'SEARX_SETTINGS_PATH': join(test_dir, 'settings/user_settings.yml')}):
+ settings, msg = settings_loader.load_settings()
+ self.assertTrue(msg.startswith('load the user settings from'))
+ self.assertEqual(settings['server']['port'], 9000)
+ self.assertEqual(settings['server']['secret_key'], "user_settings_secret")
+ engine_names = [engine['name'] for engine in settings['engines']]
+ self.assertEqual(engine_names, ['wikidata', 'wikibooks', 'wikinews', 'wikiquote'])
diff --git a/tests/unit/test_standalone_searx.py b/tests/unit/test_standalone_searx.py
new file mode 100644
index 0000000..a69353c
--- /dev/null
+++ b/tests/unit/test_standalone_searx.py
@@ -0,0 +1,111 @@
+# -*- coding: utf-8 -*-
+"""Test utils/standalone_searx.py"""
+import datetime
+import io
+import sys
+
+from mock import Mock, patch
+from nose2.tools import params
+
+from searx.search import SearchQuery, EngineRef, initialize
+from searx.testing import SearxTestCase
+from searx_extra import standalone_searx as sas
+
+
+class StandaloneSearx(SearxTestCase):
+ """Unit test for standalone_searx."""
+
+ @classmethod
+ def setUpClass(cls):
+ engine_list = [{'engine': 'dummy', 'name': 'engine1', 'shortcut': 'e1'}]
+
+ initialize(engine_list)
+
+ def test_parse_argument_no_args(self):
+ """Test parse argument without args."""
+ with patch.object(sys, 'argv', ['standalone_searx']), \
+ self.assertRaises(SystemExit):
+ sys.stderr = io.StringIO()
+ sas.parse_argument()
+ sys.stdout = sys.__stderr__
+
+ def test_parse_argument_basic_args(self):
+ """Test parse argument with basic args."""
+ query = 'red box'
+ exp_dict = {
+ 'query': query, 'category': 'general', 'lang': 'all', 'pageno': 1,
+ 'safesearch': '0', 'timerange': None}
+ args = ['standalone_searx', query]
+ with patch.object(sys, 'argv', args):
+ res = sas.parse_argument()
+ self.assertEqual(exp_dict, vars(res))
+ res2 = sas.parse_argument(args[1:])
+ self.assertEqual(exp_dict, vars(res2))
+
+ def test_to_dict(self):
+ """test to_dict."""
+ self.assertEqual(
+ sas.to_dict(
+ sas.get_search_query(sas.parse_argument(['red box']))),
+ {
+ 'search': {
+ 'q': 'red box', 'pageno': 1, 'lang': 'all',
+ 'safesearch': 0, 'timerange': None
+ },
+ 'results': [], 'infoboxes': [], 'suggestions': [],
+ 'answers': [], 'paging': False, 'results_number': 0
+ }
+ )
+
+ def test_to_dict_with_mock(self):
+ """test to dict."""
+ with patch.object(sas.searx.search, 'Search') as mock_s:
+ m_search = mock_s().search()
+ m_sq = Mock()
+ self.assertEqual(
+ sas.to_dict(m_sq),
+ {
+ 'answers': [],
+ 'infoboxes': m_search.infoboxes,
+ 'paging': m_search.paging,
+ 'results': m_search.get_ordered_results(),
+ 'results_number': m_search.results_number(),
+ 'search': {
+ 'lang': m_sq.lang,
+ 'pageno': m_sq.pageno,
+ 'q': m_sq.query,
+ 'safesearch': m_sq.safesearch,
+ 'timerange': m_sq.time_range,
+ },
+ 'suggestions': []
+ }
+ )
+
+ def test_get_search_query(self):
+ """test get_search_query."""
+ args = sas.parse_argument(['rain', ])
+ search_q = sas.get_search_query(args)
+ self.assertTrue(search_q)
+ self.assertEqual(search_q, SearchQuery('rain', [EngineRef('engine1', 'general')],
+ 'all', 0, 1, None, None, None))
+
+ def test_no_parsed_url(self):
+ """test no_parsed_url func"""
+ self.assertEqual(
+ sas.no_parsed_url([{'parsed_url': 'http://example.com'}]),
+ [{}]
+ )
+
+ @params(
+ (datetime.datetime(2020, 1, 1), '2020-01-01T00:00:00'),
+ ('a'.encode('utf8'), 'a'),
+ (set([1]), [1])
+ )
+ def test_json_serial(self, arg, exp_res):
+ """test json_serial func"""
+ self.assertEqual(sas.json_serial(arg), exp_res)
+
+ def test_json_serial_error(self):
+ """test error on json_serial."""
+ with self.assertRaises(TypeError):
+ sas.json_serial('a')
diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py
index b09b9d4..91ec249 100644
--- a/tests/unit/test_utils.py
+++ b/tests/unit/test_utils.py
@@ -1,12 +1,11 @@
# -*- coding: utf-8 -*-
-import mock
-import sys
+import lxml.etree
+from lxml import html
+
from searx.testing import SearxTestCase
+from searx.exceptions import SearxXPathSyntaxException, SearxEngineXPathException
from searx import utils
-if sys.version_info[0] == 3:
- unicode = str
-
class TestUtils(SearxTestCase):
@@ -20,28 +19,14 @@ class TestUtils(SearxTestCase):
self.assertIsNotNone(utils.searx_useragent())
self.assertTrue(utils.searx_useragent().startswith('searx'))
- def test_highlight_content(self):
- self.assertEqual(utils.highlight_content(0, None), None)
- self.assertEqual(utils.highlight_content(None, None), None)
- self.assertEqual(utils.highlight_content('', None), None)
- self.assertEqual(utils.highlight_content(False, None), None)
-
- contents = [
- '<html></html>'
- 'not<'
- ]
- for content in contents:
- self.assertEqual(utils.highlight_content(content, None), content)
-
- content = 'a'
- query = b'test'
- self.assertEqual(utils.highlight_content(content, query), content)
- query = b'a test'
- self.assertEqual(utils.highlight_content(content, query), content)
-
def test_html_to_text(self):
- html = """
+ html_str = """
<a href="/testlink" class="link_access_account">
+ <style>
+ .toto {
+ color: red;
+ }
+ </style>
<span class="toto">
<span>
<img src="test.jpg" />
@@ -50,20 +35,56 @@ class TestUtils(SearxTestCase):
<span class="titi">
Test text
</span>
+ <script>value='dummy';</script>
</a>
"""
- self.assertIsInstance(utils.html_to_text(html), unicode)
- self.assertIsNotNone(utils.html_to_text(html))
- self.assertEqual(utils.html_to_text(html), "Test text")
+ self.assertIsInstance(utils.html_to_text(html_str), str)
+ self.assertIsNotNone(utils.html_to_text(html_str))
+ self.assertEqual(utils.html_to_text(html_str), "Test text")
- def test_prettify_url(self):
- data = (('https://searx.me/', 'https://searx.me/'),
- (u'https://searx.me/ű', u'https://searx.me/ű'),
- ('https://searx.me/' + (100 * 'a'), 'https://searx.me/[...]aaaaaaaaaaaaaaaaa'),
- (u'https://searx.me/' + (100 * u'ű'), u'https://searx.me/[...]űűűűűűűűűűűűűűűűű'))
-
- for test_url, expected in data:
- self.assertEqual(utils.prettify_url(test_url, max_length=32), expected)
+ def test_extract_text(self):
+ html_str = """
+ <a href="/testlink" class="link_access_account">
+ <span class="toto">
+ <span>
+ <img src="test.jpg" />
+ </span>
+ </span>
+ <span class="titi">
+ Test text
+ </span>
+ </a>
+ """
+ dom = html.fromstring(html_str)
+ self.assertEqual(utils.extract_text(dom), 'Test text')
+ self.assertEqual(utils.extract_text(dom.xpath('//span')), 'Test text')
+ self.assertEqual(utils.extract_text(dom.xpath('//span/text()')), 'Test text')
+ self.assertEqual(utils.extract_text(dom.xpath('count(//span)')), '3.0')
+ self.assertEqual(utils.extract_text(dom.xpath('boolean(//span)')), 'True')
+ self.assertEqual(utils.extract_text(dom.xpath('//img/@src')), 'test.jpg')
+ self.assertEqual(utils.extract_text(dom.xpath('//unexistingtag')), '')
+ self.assertEqual(utils.extract_text(None, allow_none=True), None)
+ with self.assertRaises(ValueError):
+ utils.extract_text(None)
+ with self.assertRaises(ValueError):
+ utils.extract_text({})
+
+ def test_extract_url(self):
+ def f(html_str, search_url):
+ return utils.extract_url(html.fromstring(html_str), search_url)
+ self.assertEqual(f('<span id="42">https://example.com</span>', 'http://example.com/'), 'https://example.com/')
+ self.assertEqual(f('https://example.com', 'http://example.com/'), 'https://example.com/')
+ self.assertEqual(f('//example.com', 'http://example.com/'), 'http://example.com/')
+ self.assertEqual(f('//example.com', 'https://example.com/'), 'https://example.com/')
+ self.assertEqual(f('/path?a=1', 'https://example.com'), 'https://example.com/path?a=1')
+ with self.assertRaises(lxml.etree.ParserError):
+ f('', 'https://example.com')
+ with self.assertRaises(Exception):
+ utils.extract_url([], 'https://example.com')
+
+ def test_html_to_text_invalid(self):
+ html = '<p><b>Lorem ipsum</i>dolor sit amet</p>'
+ self.assertEqual(utils.html_to_text(html), "Lorem ipsum")
def test_match_language(self):
self.assertEqual(utils.match_language('es', ['es']), 'es')
@@ -93,9 +114,9 @@ class TestUtils(SearxTestCase):
def test_ecma_unscape(self):
self.assertEqual(utils.ecma_unescape('text%20with%20space'), 'text with space')
self.assertEqual(utils.ecma_unescape('text using %xx: %F3'),
- u'text using %xx: ó')
+ 'text using %xx: ó')
self.assertEqual(utils.ecma_unescape('text using %u: %u5409, %u4E16%u754c'),
- u'text using %u: 吉, 世界')
+ 'text using %u: 吉, 世界')
class TestHTMLTextExtractor(SearxTestCase):
@@ -108,44 +129,100 @@ class TestHTMLTextExtractor(SearxTestCase):
def test_handle_charref(self):
self.html_text_extractor.handle_charref('xF')
- self.assertIn(u'\x0f', self.html_text_extractor.result)
+ self.assertIn('\x0f', self.html_text_extractor.result)
self.html_text_extractor.handle_charref('XF')
- self.assertIn(u'\x0f', self.html_text_extractor.result)
+ self.assertIn('\x0f', self.html_text_extractor.result)
self.html_text_extractor.handle_charref('97')
- self.assertIn(u'a', self.html_text_extractor.result)
+ self.assertIn('a', self.html_text_extractor.result)
def test_handle_entityref(self):
entity = 'test'
self.html_text_extractor.handle_entityref(entity)
self.assertIn(entity, self.html_text_extractor.result)
+ def test_invalid_html(self):
+ text = '<p><b>Lorem ipsum</i>dolor sit amet</p>'
+ with self.assertRaises(utils.HTMLTextExtractorException):
+ self.html_text_extractor.feed(text)
-class TestUnicodeWriter(SearxTestCase):
- def setUp(self):
- self.unicode_writer = utils.UnicodeWriter(mock.MagicMock())
-
- def test_write_row(self):
- row = [1, 2, 3]
- self.assertEqual(self.unicode_writer.writerow(row), None)
-
- def test_write_rows(self):
- self.unicode_writer.writerow = mock.MagicMock()
- rows = [1, 2, 3]
- self.unicode_writer.writerows(rows)
- self.assertEqual(self.unicode_writer.writerow.call_count, len(rows))
-
-
-class TestNewHmac(SearxTestCase):
-
- def test_bytes(self):
- for secret_key in ['secret', b'secret', 1]:
- if secret_key == 1:
- with self.assertRaises(TypeError):
- utils.new_hmac(secret_key, b'http://example.com')
- continue
- res = utils.new_hmac(secret_key, b'http://example.com')
- self.assertEqual(
- res,
- '23e2baa2404012a5cc8e4a18b4aabf0dde4cb9b56f679ddc0fd6d7c24339d819')
+class TestXPathUtils(SearxTestCase):
+
+ TEST_DOC = """<ul>
+ <li>Text in <b>bold</b> and <i>italic</i> </li>
+ <li>Another <b>text</b> <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs="></li>
+ </ul>"""
+
+ def test_get_xpath_cache(self):
+ xp1 = utils.get_xpath('//a')
+ xp2 = utils.get_xpath('//div')
+ xp3 = utils.get_xpath('//a')
+
+ self.assertEqual(id(xp1), id(xp3))
+ self.assertNotEqual(id(xp1), id(xp2))
+
+ def test_get_xpath_type(self):
+ utils.get_xpath(lxml.etree.XPath('//a'))
+
+ with self.assertRaises(TypeError):
+ utils.get_xpath([])
+
+ def test_get_xpath_invalid(self):
+ invalid_xpath = '//a[0].text'
+ with self.assertRaises(SearxXPathSyntaxException) as context:
+ utils.get_xpath(invalid_xpath)
+
+ self.assertEqual(context.exception.message, 'Invalid expression')
+ self.assertEqual(context.exception.xpath_str, invalid_xpath)
+
+ def test_eval_xpath_unregistered_function(self):
+ doc = html.fromstring(TestXPathUtils.TEST_DOC)
+
+ invalid_function_xpath = 'int(//a)'
+ with self.assertRaises(SearxEngineXPathException) as context:
+ utils.eval_xpath(doc, invalid_function_xpath)
+
+ self.assertEqual(context.exception.message, 'Unregistered function')
+ self.assertEqual(context.exception.xpath_str, invalid_function_xpath)
+
+ def test_eval_xpath(self):
+ doc = html.fromstring(TestXPathUtils.TEST_DOC)
+
+ self.assertEqual(utils.eval_xpath(doc, '//p'), [])
+ self.assertEqual(utils.eval_xpath(doc, '//i/text()'), ['italic'])
+ self.assertEqual(utils.eval_xpath(doc, 'count(//i)'), 1.0)
+
+ def test_eval_xpath_list(self):
+ doc = html.fromstring(TestXPathUtils.TEST_DOC)
+
+ # check a not empty list
+ self.assertEqual(utils.eval_xpath_list(doc, '//i/text()'), ['italic'])
+
+ # check min_len parameter
+ with self.assertRaises(SearxEngineXPathException) as context:
+ utils.eval_xpath_list(doc, '//p', min_len=1)
+ self.assertEqual(context.exception.message, 'len(xpath_str) < 1')
+ self.assertEqual(context.exception.xpath_str, '//p')
+
+ def test_eval_xpath_getindex(self):
+ doc = html.fromstring(TestXPathUtils.TEST_DOC)
+
+ # check index 0
+ self.assertEqual(utils.eval_xpath_getindex(doc, '//i/text()', 0), 'italic')
+
+ # default is 'something'
+ self.assertEqual(utils.eval_xpath_getindex(doc, '//i/text()', 1, default='something'), 'something')
+
+ # default is None
+ self.assertEqual(utils.eval_xpath_getindex(doc, '//i/text()', 1, default=None), None)
+
+ # index not found
+ with self.assertRaises(SearxEngineXPathException) as context:
+ utils.eval_xpath_getindex(doc, '//i/text()', 1)
+ self.assertEqual(context.exception.message, 'index 1 not found')
+
+ # not a list
+ with self.assertRaises(SearxEngineXPathException) as context:
+ utils.eval_xpath_getindex(doc, 'count(//i)', 1)
+ self.assertEqual(context.exception.message, 'the result is not a list')
diff --git a/tests/unit/test_webadapter.py b/tests/unit/test_webadapter.py
new file mode 100644
index 0000000..32417f0
--- /dev/null
+++ b/tests/unit/test_webadapter.py
@@ -0,0 +1,54 @@
+# -*- coding: utf-8 -*-
+
+from searx.testing import SearxTestCase
+from searx.preferences import Preferences
+from searx.engines import engines
+
+import searx.search
+from searx.search import EngineRef
+from searx.webadapter import validate_engineref_list
+
+
+PRIVATE_ENGINE_NAME = 'general private offline'
+TEST_ENGINES = [
+ {
+ 'name': PRIVATE_ENGINE_NAME,
+ 'engine': 'dummy-offline',
+ 'categories': 'general',
+ 'shortcut': 'do',
+ 'timeout': 3.0,
+ 'engine_type': 'offline',
+ 'tokens': ['my-token'],
+ },
+]
+SEARCHQUERY = [EngineRef(PRIVATE_ENGINE_NAME, 'general')]
+
+
+class ValidateQueryCase(SearxTestCase):
+
+ @classmethod
+ def setUpClass(cls):
+ searx.search.initialize(TEST_ENGINES)
+
+ def test_query_private_engine_without_token(self):
+ preferences = Preferences(['oscar'], ['general'], engines, [])
+ valid, unknown, invalid_token = validate_engineref_list(SEARCHQUERY, preferences)
+ self.assertEqual(len(valid), 0)
+ self.assertEqual(len(unknown), 0)
+ self.assertEqual(len(invalid_token), 1)
+
+ def test_query_private_engine_with_incorrect_token(self):
+ preferences_with_tokens = Preferences(['oscar'], ['general'], engines, [])
+ preferences_with_tokens.parse_dict({'tokens': 'bad-token'})
+ valid, unknown, invalid_token = validate_engineref_list(SEARCHQUERY, preferences_with_tokens)
+ self.assertEqual(len(valid), 0)
+ self.assertEqual(len(unknown), 0)
+ self.assertEqual(len(invalid_token), 1)
+
+ def test_query_private_engine_with_correct_token(self):
+ preferences_with_tokens = Preferences(['oscar'], ['general'], engines, [])
+ preferences_with_tokens.parse_dict({'tokens': 'my-token'})
+ valid, unknown, invalid_token = validate_engineref_list(SEARCHQUERY, preferences_with_tokens)
+ self.assertEqual(len(valid), 1)
+ self.assertEqual(len(unknown), 0)
+ self.assertEqual(len(invalid_token), 0)
diff --git a/tests/unit/test_webapp.py b/tests/unit/test_webapp.py
index 72ace48..9c598a1 100644
--- a/tests/unit/test_webapp.py
+++ b/tests/unit/test_webapp.py
@@ -1,16 +1,21 @@
# -*- coding: utf-8 -*-
import json
+from urllib.parse import ParseResult
from mock import Mock
-from searx import webapp
from searx.testing import SearxTestCase
from searx.search import Search
-from searx.url_utils import ParseResult
+import searx.engines
class ViewsTestCase(SearxTestCase):
def setUp(self):
+ # skip init function (no external HTTP request)
+ self.setattr4test(searx.engines, 'initialize_engines', searx.engines.load_engines)
+
+ from searx import webapp # pylint disable=import-outside-toplevel
+
webapp.app.config['TESTING'] = True # to get better error messages
self.app = webapp.app.test_client()
@@ -48,7 +53,7 @@ class ViewsTestCase(SearxTestCase):
def search_mock(search_self, *args):
search_self.result_container = Mock(get_ordered_results=lambda: test_results,
- answers=set(),
+ answers=dict(),
corrections=set(),
suggestions=set(),
infoboxes=[],
@@ -56,14 +61,16 @@ class ViewsTestCase(SearxTestCase):
results=test_results,
results_number=lambda: 3,
results_length=lambda: len(test_results),
- get_timings=lambda: timings)
+ get_timings=lambda: timings,
+ redirect_url=None,
+ engine_data={})
self.setattr4test(Search, 'search', search_mock)
def get_current_theme_name_mock(override=None):
if override:
return override
- return 'legacy'
+ return 'oscar'
self.setattr4test(webapp, 'get_current_theme_name', get_current_theme_name_mock)
@@ -72,23 +79,58 @@ class ViewsTestCase(SearxTestCase):
def test_index_empty(self):
result = self.app.post('/')
self.assertEqual(result.status_code, 200)
- self.assertIn(b'<div class="title"><h1>searx</h1></div>', result.data)
+ self.assertIn(b'<div class="text-hide center-block" id="main-logo">'
+ + b'<img class="center-block img-responsive" src="/static/themes/oscar/img/logo_searx_a.png"'
+ + b' alt="searx logo" />searx</div>', result.data)
- def test_index_html(self):
+ def test_index_html_post(self):
result = self.app.post('/', data={'q': 'test'})
+ self.assertEqual(result.status_code, 308)
+ self.assertEqual(result.location, '/search')
+
+ def test_index_html_get(self):
+ result = self.app.post('/?q=test')
+ self.assertEqual(result.status_code, 308)
+ self.assertEqual(result.location, '/search?q=test')
+
+ def test_search_empty_html(self):
+ result = self.app.post('/search', data={'q': ''})
+ self.assertEqual(result.status_code, 200)
+ self.assertIn(b'<span class="instance pull-left"><a href="/">searx</a></span>', result.data)
+
+ def test_search_empty_json(self):
+ result = self.app.post('/search', data={'q': '', 'format': 'json'})
+ self.assertEqual(result.status_code, 400)
+
+ def test_search_empty_csv(self):
+ result = self.app.post('/search', data={'q': '', 'format': 'csv'})
+ self.assertEqual(result.status_code, 400)
+
+ def test_search_empty_rss(self):
+ result = self.app.post('/search', data={'q': '', 'format': 'rss'})
+ self.assertEqual(result.status_code, 400)
+
+ def test_search_html(self):
+ result = self.app.post('/search', data={'q': 'test'})
+
self.assertIn(
- b'<h3 class="result_title"><img width="14" height="14" class="favicon" src="/static/themes/legacy/img/icons/icon_youtube.ico" alt="youtube" /><a href="http://second.test.xyz" rel="noreferrer">Second <span class="highlight">Test</span></a></h3>', # noqa
+ b'<h4 class="result_header" id="result-2"><img width="32" height="32" class="favicon"'
+ + b' src="/static/themes/oscar/img/icons/youtube.png" alt="youtube" /><a href="http://second.test.xyz"'
+ + b' rel="noreferrer" aria-labelledby="result-2">Second <span class="highlight">Test</span></a></h4>', # noqa
result.data
)
self.assertIn(
- b'<p class="content">first <span class="highlight">test</span> content<br class="last"/></p>', # noqa
+ b'<p class="result-content">second <span class="highlight">test</span> content</p>', # noqa
result.data
)
def test_index_json(self):
result = self.app.post('/', data={'q': 'test', 'format': 'json'})
+ self.assertEqual(result.status_code, 308)
- result_dict = json.loads(result.data.decode('utf-8'))
+ def test_search_json(self):
+ result = self.app.post('/search', data={'q': 'test', 'format': 'json'})
+ result_dict = json.loads(result.data.decode())
self.assertEqual('test', result_dict['query'])
self.assertEqual(len(result_dict['results']), 2)
@@ -97,16 +139,24 @@ class ViewsTestCase(SearxTestCase):
def test_index_csv(self):
result = self.app.post('/', data={'q': 'test', 'format': 'csv'})
+ self.assertEqual(result.status_code, 308)
+
+ def test_search_csv(self):
+ result = self.app.post('/search', data={'q': 'test', 'format': 'csv'})
self.assertEqual(
- b'title,url,content,host,engine,score\r\n'
- b'First Test,http://first.test.xyz,first test content,first.test.xyz,startpage,\r\n' # noqa
- b'Second Test,http://second.test.xyz,second test content,second.test.xyz,youtube,\r\n', # noqa
+ b'title,url,content,host,engine,score,type\r\n'
+ b'First Test,http://first.test.xyz,first test content,first.test.xyz,startpage,,result\r\n' # noqa
+ b'Second Test,http://second.test.xyz,second test content,second.test.xyz,youtube,,result\r\n', # noqa
result.data
)
def test_index_rss(self):
result = self.app.post('/', data={'q': 'test', 'format': 'rss'})
+ self.assertEqual(result.status_code, 308)
+
+ def test_search_rss(self):
+ result = self.app.post('/search', data={'q': 'test', 'format': 'rss'})
self.assertIn(
b'<description>Search results for "test" - searx</description>',
@@ -138,6 +188,11 @@ class ViewsTestCase(SearxTestCase):
self.assertEqual(result.status_code, 200)
self.assertIn(b'<h1>About <a href="/">searx</a></h1>', result.data)
+ def test_health(self):
+ result = self.app.get('/healthz')
+ self.assertEqual(result.status_code, 200)
+ self.assertIn(b'OK', result.data)
+
def test_preferences(self):
result = self.app.get('/preferences')
self.assertEqual(result.status_code, 200)
@@ -146,18 +201,31 @@ class ViewsTestCase(SearxTestCase):
result.data
)
self.assertIn(
- b'<legend>Default categories</legend>',
+ b'<label class="col-sm-3 col-md-2" for="categories">Default categories</label>',
result.data
)
self.assertIn(
- b'<legend>Interface language</legend>',
+ b'<label class="col-sm-3 col-md-2" for="locale">Interface language</label>',
result.data
)
+ def test_browser_locale(self):
+ result = self.app.get('/preferences', headers={'Accept-Language': 'zh-tw;q=0.8'})
+ self.assertEqual(result.status_code, 200)
+ self.assertIn(
+ b'<option value="zh_TW" selected="selected">',
+ result.data,
+ 'Interface locale ignored browser preference.'
+ )
+ self.assertIn(
+ b'<option value="zh-TW" selected="selected">',
+ result.data,
+ 'Search language ignored browser preference.'
+ )
+
def test_stats(self):
result = self.app.get('/stats')
- self.assertEqual(result.status_code, 200)
- self.assertIn(b'<h2>Engine stats</h2>', result.data)
+ self.assertEqual(result.status_code, 404)
def test_robots_txt(self):
result = self.app.get('/robots.txt')
diff --git a/tests/unit/test_webutils.py b/tests/unit/test_webutils.py
new file mode 100644
index 0000000..023374b
--- /dev/null
+++ b/tests/unit/test_webutils.py
@@ -0,0 +1,87 @@
+# -*- coding: utf-8 -*-
+import mock
+from searx.testing import SearxTestCase
+from searx import webutils
+
+
+class TestWebUtils(SearxTestCase):
+
+ def test_prettify_url(self):
+ data = (('https://searx.me/', 'https://searx.me/'),
+ ('https://searx.me/ű', 'https://searx.me/ű'),
+ ('https://searx.me/' + (100 * 'a'), 'https://searx.me/[...]aaaaaaaaaaaaaaaaa'),
+ ('https://searx.me/' + (100 * 'ű'), 'https://searx.me/[...]űűűűűűűűűűűűűűűűű'))
+
+ for test_url, expected in data:
+ self.assertEqual(webutils.prettify_url(test_url, max_length=32), expected)
+
+ def test_highlight_content(self):
+ self.assertEqual(webutils.highlight_content(0, None), None)
+ self.assertEqual(webutils.highlight_content(None, None), None)
+ self.assertEqual(webutils.highlight_content('', None), None)
+ self.assertEqual(webutils.highlight_content(False, None), None)
+
+ contents = [
+ '<html></html>'
+ 'not<'
+ ]
+ for content in contents:
+ self.assertEqual(webutils.highlight_content(content, None), content)
+
+ content = 'a'
+ query = 'test'
+ self.assertEqual(webutils.highlight_content(content, query), content)
+ query = 'a test'
+ self.assertEqual(webutils.highlight_content(content, query), content)
+
+ data = (
+ ('" test "',
+ 'a test string',
+ 'a <span class="highlight">test</span> string'),
+ ('"a"',
+ 'this is a test string',
+ 'this is<span class="highlight"> a </span>test string'),
+ ('a test',
+ 'this is a test string that matches entire query',
+ 'this is <span class="highlight">a test</span> string that matches entire query'),
+ ('this a test',
+ 'this is a string to test.',
+ ('<span class="highlight">this</span> is<span class="highlight"> a </span>'
+ 'string to <span class="highlight">test</span>.')),
+ ('match this "exact phrase"',
+ 'this string contains the exact phrase we want to match',
+ ('<span class="highlight">this</span> string contains the <span class="highlight">exact</span>'
+ ' <span class="highlight">phrase</span> we want to <span class="highlight">match</span>'))
+ )
+ for query, content, expected in data:
+ self.assertEqual(webutils.highlight_content(content, query), expected)
+
+
+class TestUnicodeWriter(SearxTestCase):
+
+ def setUp(self):
+ self.unicode_writer = webutils.UnicodeWriter(mock.MagicMock())
+
+ def test_write_row(self):
+ row = [1, 2, 3]
+ self.assertEqual(self.unicode_writer.writerow(row), None)
+
+ def test_write_rows(self):
+ self.unicode_writer.writerow = mock.MagicMock()
+ rows = [1, 2, 3]
+ self.unicode_writer.writerows(rows)
+ self.assertEqual(self.unicode_writer.writerow.call_count, len(rows))
+
+
+class TestNewHmac(SearxTestCase):
+
+ def test_bytes(self):
+ for secret_key in ['secret', b'secret', 1]:
+ if secret_key == 1:
+ with self.assertRaises(TypeError):
+ webutils.new_hmac(secret_key, b'http://example.com')
+ continue
+ res = webutils.new_hmac(secret_key, b'http://example.com')
+ self.assertEqual(
+ res,
+ '23e2baa2404012a5cc8e4a18b4aabf0dde4cb9b56f679ddc0fd6d7c24339d819')
diff --git a/utils/brand.env b/utils/brand.env
new file mode 100644
index 0000000..2136d27
--- /dev/null
+++ b/utils/brand.env
@@ -0,0 +1,9 @@
+export SEARX_URL=''
+export GIT_URL='https://github.com/searx/searx'
+export GIT_BRANCH='master'
+export ISSUE_URL='https://github.com/searx/searx/issues'
+export DOCS_URL='https://searx.github.io/searx'
+export PUBLIC_INSTANCES='https://searx.space'
+export CONTACT_URL=''
+export WIKI_URL='https://github.com/searx/searx/wiki'
+export TWITTER_URL='https://twitter.com/Searx_engine'
diff --git a/utils/build_env.py b/utils/build_env.py
new file mode 100644
index 0000000..ffb2689
--- /dev/null
+++ b/utils/build_env.py
@@ -0,0 +1,38 @@
+# SPDX-License-Identifier: AGPL-3.0-or-later
+"""build environment used by shell scripts
+"""
+
+# set path
+import sys
+import os
+from os.path import realpath, dirname, join, sep, abspath
+
+repo_root = realpath(dirname(realpath(__file__)) + sep + '..')
+sys.path.insert(0, repo_root)
+os.environ['SEARX_SETTINGS_PATH'] = abspath(dirname(__file__) + '/settings.yml')
+
+# Under the assumption that a brand is always a fork assure that the settings
+# file from reposetorie's working tree is used to generate the build_env, not
+# from /etc/searx/settings.yml.
+os.environ['SEARX_SETTINGS_PATH'] = abspath(dirname(__file__) + sep + 'settings.yml')
+
+from searx import brand
+
+name_val = [
+ ('SEARX_URL' , brand.SEARX_URL),
+ ('GIT_URL' , brand.GIT_URL),
+ ('GIT_BRANCH' , brand.GIT_BRANCH),
+ ('ISSUE_URL' , brand.ISSUE_URL),
+ ('DOCS_URL' , brand.DOCS_URL),
+ ('PUBLIC_INSTANCES' , brand.PUBLIC_INSTANCES),
+ ('CONTACT_URL' , brand.CONTACT_URL),
+ ('WIKI_URL' , brand.WIKI_URL),
+ ('TWITTER_URL' , brand.TWITTER_URL),
+]
+
+brand_env = 'utils' + sep + 'brand.env'
+
+print('build %s' % brand_env)
+with open(repo_root + sep + brand_env, 'w', encoding='utf-8') as f:
+ for name, val in name_val:
+ print("export %s='%s'" % (name, val), file=f)
diff --git a/utils/fabfile.py b/utils/fabfile.py
deleted file mode 100644
index 559e2ab..0000000
--- a/utils/fabfile.py
+++ /dev/null
@@ -1,117 +0,0 @@
-from fabric.api import cd, run, sudo, put
-from cStringIO import StringIO
-
-
-base_dir = '/usr/local'
-hostname = 'searx.me'
-searx_dir = base_dir + '/searx'
-searx_ve_dir = searx_dir + '/searx-ve'
-current_user = run('whoami').stdout.strip()
-
-uwsgi_file = '''
-[uwsgi]
-# Who will run the code
-uid = {user}
-gid = {user}
-
-# Number of workers
-workers = 8
-
-# The right granted on the created socket
-chmod-socket = 666
-
-# Plugin to use and interpretor config
-single-interpreter = true
-master = true
-plugin = python
-
-# Module to import
-module = searx.webapp
-
-# Virtualenv and python path
-virtualenv = {searx_ve_dir}
-pythonpath = {searx_dir}
-chdir = {searx_dir}/searx
-'''.format(user=current_user,
- searx_dir=searx_dir,
- searx_ve_dir=searx_ve_dir)
-
-nginx_config = '''
-server {{
- listen 80;
- server_name {hostname};
- server_name www.{hostname};
- root /usr/local/searx;
-
- location / {{
- include uwsgi_params;
- uwsgi_pass unix:/run/uwsgi/app/searx/socket;
- }}
-}}
-'''.format(hostname=hostname)
-
-
-def stop():
- sudo('/etc/init.d/uwsgi stop')
-
-
-def start():
- sudo('/etc/init.d/uwsgi start')
-
-
-def restart():
- sudo('/etc/init.d/uwsgi restart')
-
-
-def init():
- if not run('test -d ' + searx_dir, warn_only=True).failed:
- return
-
- sudo('apt-get update')
-
- sudo('apt-get install git'
- ' build-essential'
- ' libxslt-dev'
- ' python-dev'
- ' python-virtualenv'
- ' python-pybabel'
- ' zlib1g-dev'
- ' uwsgi'
- ' uwsgi-plugin-python'
- ' nginx')
-
- sudo('mkdir -p ' + base_dir)
-
- put(StringIO(nginx_config), '/etc/nginx/sites-enabled/searx', use_sudo=True)
- sudo('/etc/init.d/nginx restart')
-
- with cd(base_dir):
- sudo('git clone https://github.com/asciimoo/searx')
-
- sudo('chown -R {user}:{user} {searx_dir}'.format(user=current_user, searx_dir=searx_dir))
- put(StringIO(uwsgi_file), searx_dir + '/uwsgi.ini')
- sudo('ln -s {0}/uwsgi.ini /etc/uwsgi/apps-enabled/searx.ini'.format(searx_dir))
-
- run('virtualenv {0}'.format(searx_ve_dir))
-
- with cd(searx_dir):
- run('source {0}/bin/activate && pip install -r requirements.txt'.format(searx_ve_dir))
-
- start()
-
-
-def deploy():
- init()
-
- with cd(searx_dir):
- run("git stash", warn_only=True)
- run("git pull origin master")
- run("git stash pop", warn_only=True)
-
- restart()
-
-
-def clean():
- sudo('rm -rf {searx_dir}'.format(searx_dir=searx_dir), warn_only=True)
- sudo('rm /etc/uwsgi/apps-enabled/searx.ini', warn_only=True)
- sudo('rm /etc/nginx/sites-enabled/searx', warn_only=True)
diff --git a/utils/fetch_currencies.py b/utils/fetch_currencies.py
deleted file mode 100644
index 5605fb3..0000000
--- a/utils/fetch_currencies.py
+++ /dev/null
@@ -1,163 +0,0 @@
-# -*- coding: utf-8 -*-
-from __future__ import print_function
-
-import json
-import re
-import unicodedata
-import string
-from urllib import urlencode
-from requests import get
-
-languages = {'de', 'en', 'es', 'fr', 'hu', 'it', 'nl', 'jp'}
-
-url_template = 'https://www.wikidata.org/w/api.php?action=wbgetentities&format=json&{query}&props=labels%7Cdatatype%7Cclaims%7Caliases&languages=' + '|'.join(languages)
-url_wmflabs_template = 'http://wdq.wmflabs.org/api?q='
-url_wikidata_search_template = 'http://www.wikidata.org/w/api.php?action=query&list=search&format=json&srnamespace=0&srprop=sectiontitle&{query}'
-
-wmflabs_queries = [
- 'CLAIM[31:8142]', # all devise
-]
-
-db = {
- 'iso4217': {
- },
- 'names': {
- }
-}
-
-
-def remove_accents(data):
- return unicodedata.normalize('NFKD', data).lower()
-
-
-def normalize_name(name):
- return re.sub(' +', ' ', remove_accents(name.lower()).replace('-', ' '))
-
-
-def add_currency_name(name, iso4217):
- global db
-
- db_names = db['names']
-
- if not isinstance(iso4217, basestring):
- print("problem", name, iso4217)
- return
-
- name = normalize_name(name)
-
- if name == '':
- print("name empty", iso4217)
- return
-
- iso4217_set = db_names.get(name, None)
- if iso4217_set is not None and iso4217 not in iso4217_set:
- db_names[name].append(iso4217)
- else:
- db_names[name] = [iso4217]
-
-
-def add_currency_label(label, iso4217, language):
- global db
-
- db['iso4217'][iso4217] = db['iso4217'].get(iso4217, {})
- db['iso4217'][iso4217][language] = label
-
-
-def get_property_value(data, name):
- prop = data.get('claims', {}).get(name, {})
- if len(prop) == 0:
- return None
-
- value = prop[0].get('mainsnak', {}).get('datavalue', {}).get('value', '')
- if value == '':
- return None
-
- return value
-
-
-def parse_currency(data):
- iso4217 = get_property_value(data, 'P498')
-
- if iso4217 is not None:
- unit = get_property_value(data, 'P558')
- if unit is not None:
- add_currency_name(unit, iso4217)
-
- labels = data.get('labels', {})
- for language in languages:
- name = labels.get(language, {}).get('value', None)
- if name is not None:
- add_currency_name(name, iso4217)
- add_currency_label(name, iso4217, language)
-
- aliases = data.get('aliases', {})
- for language in aliases:
- for i in range(0, len(aliases[language])):
- alias = aliases[language][i].get('value', None)
- add_currency_name(alias, iso4217)
-
-
-def fetch_data(wikidata_ids):
- url = url_template.format(query=urlencode({'ids': '|'.join(wikidata_ids)}))
- htmlresponse = get(url)
- jsonresponse = json.loads(htmlresponse.content)
- entities = jsonresponse.get('entities', {})
-
- for pname in entities:
- pvalue = entities.get(pname)
- parse_currency(pvalue)
-
-
-def add_q(i):
- return "Q" + str(i)
-
-
-def fetch_data_batch(wikidata_ids):
- while len(wikidata_ids) > 0:
- if len(wikidata_ids) > 50:
- fetch_data(wikidata_ids[0:49])
- wikidata_ids = wikidata_ids[50:]
- else:
- fetch_data(wikidata_ids)
- wikidata_ids = []
-
-
-def wdq_query(query):
- url = url_wmflabs_template + query
- htmlresponse = get(url)
- jsonresponse = json.loads(htmlresponse.content)
- qlist = map(add_q, jsonresponse.get('items', {}))
- error = jsonresponse.get('status', {}).get('error', None)
- if error is not None and error != 'OK':
- print("error for query '" + query + "' :" + error)
-
- fetch_data_batch(qlist)
-
-
-def wd_query(query, offset=0):
- qlist = []
-
- url = url_wikidata_search_template.format(query=urlencode({'srsearch': query, 'srlimit': 50, 'sroffset': offset}))
- htmlresponse = get(url)
- jsonresponse = json.loads(htmlresponse.content)
- for r in jsonresponse.get('query', {}).get('search', {}):
- qlist.append(r.get('title', ''))
- fetch_data_batch(qlist)
-
-
-# fetch #
-for q in wmflabs_queries:
- wdq_query(q)
-
-# static
-add_currency_name(u"euro", 'EUR')
-add_currency_name(u"euros", 'EUR')
-add_currency_name(u"dollar", 'USD')
-add_currency_name(u"dollars", 'USD')
-add_currency_name(u"peso", 'MXN')
-add_currency_name(u"pesos", 'MXN')
-
-# write
-f = open("currencies.json", "wb")
-json.dump(db, f, indent=4, encoding="utf-8")
-f.close()
diff --git a/utils/fetch_languages.py b/utils/fetch_languages.py
deleted file mode 100644
index a6af073..0000000
--- a/utils/fetch_languages.py
+++ /dev/null
@@ -1,191 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# This script generates languages.py from intersecting each engine's supported languages.
-#
-# Output files (engines_languages.json and languages.py)
-# are written in current directory to avoid overwriting in case something goes wrong.
-
-from json import dump
-import io
-from sys import path
-from babel import Locale, UnknownLocaleError
-from babel.languages import get_global
-
-path.append('../searx') # noqa
-from searx import settings
-from searx.engines import initialize_engines, engines
-
-# Output files.
-engines_languages_file = 'engines_languages.json'
-languages_file = 'languages.py'
-
-
-# Fetchs supported languages for each engine and writes json file with those.
-def fetch_supported_languages():
- engines_languages = {}
- for engine_name in engines:
- if hasattr(engines[engine_name], 'fetch_supported_languages'):
- try:
- engines_languages[engine_name] = engines[engine_name].fetch_supported_languages()
- if type(engines_languages[engine_name]) == list:
- engines_languages[engine_name] = sorted(engines_languages[engine_name])
- except Exception as e:
- print(e)
-
- # write json file
- with io.open(engines_languages_file, "w", encoding="utf-8") as f:
- dump(engines_languages, f, ensure_ascii=False, indent=4, separators=(',', ': '))
-
- return engines_languages
-
-
-# Get babel Locale object from lang_code if possible.
-def get_locale(lang_code):
- try:
- locale = Locale.parse(lang_code, sep='-')
- return locale
- except (UnknownLocaleError, ValueError):
- return None
-
-
-# Append engine_name to list of engines that support locale.
-def add_engine_counter(lang_code, engine_name, languages):
- if lang_code in languages:
- if 'counter' not in languages[lang_code]:
- languages[lang_code]['counter'] = [engine_name]
- elif engine_name not in languages[lang_code]['counter']:
- languages[lang_code]['counter'].append(engine_name)
-
-
-# Join all language lists.
-# TODO: Add language names from engine's language list if name not known by babel.
-def join_language_lists(engines_languages):
- language_list = {}
- for engine_name in engines_languages:
- for lang_code in engines_languages[engine_name]:
-
- # apply custom fixes if necessary
- if lang_code in getattr(engines[engine_name], 'language_aliases', {}).values():
- lang_code = next(lc for lc, alias in engines[engine_name].language_aliases.items()
- if lang_code == alias)
-
- locale = get_locale(lang_code)
-
- # ensure that lang_code uses standard language and country codes
- if locale and locale.territory:
- lang_code = locale.language + '-' + locale.territory
-
- # add locale if it's not in list
- if lang_code not in language_list:
- if locale:
- language_list[lang_code] = {'name': locale.get_language_name().title(),
- 'english_name': locale.english_name,
- 'country': locale.get_territory_name() or ''}
-
- # also add language without country
- if locale.language not in language_list:
- language_list[locale.language] = {'name': locale.get_language_name().title(),
- 'english_name': locale.english_name}
- else:
- language_list[lang_code] = {}
-
- # count engine for both language_country combination and language alone
- add_engine_counter(lang_code, engine_name, language_list)
- add_engine_counter(lang_code.split('-')[0], engine_name, language_list)
-
- return language_list
-
-
-# Filter language list so it only includes the most supported languages and countries.
-def filter_language_list(all_languages):
- min_supported_engines = 10
- main_engines = [engine_name for engine_name in engines.keys()
- if 'general' in engines[engine_name].categories and
- engines[engine_name].supported_languages and
- not engines[engine_name].disabled]
-
- # filter list to include only languages supported by most engines or all default general engines
- filtered_languages = {code: lang for code, lang
- in all_languages.items()
- if (len(lang.get('counter', [])) >= min_supported_engines or
- all(main_engine in lang.get('counter', [])
- for main_engine in main_engines))}
-
- return filtered_languages
-
-
-# Add country codes to languages without one and filter out language codes.
-def assign_country_codes(filtered_languages, all_languages):
- sorted_languages = sorted(all_languages,
- key=lambda lang: len(all_languages[lang].get('counter', [])),
- reverse=True)
- previous_lang = None
- previous_code = None
- countries = 0
- for current_code in sorted(filtered_languages):
- current_lang = current_code.split('-')[0]
-
- # count country codes per language
- if current_lang == previous_lang:
- countries += 1
-
- else:
- if previous_lang is not None:
- # if language has no single country code
- if countries == 0:
- # try to get country code with most supported engines
- for l in sorted_languages:
- l_parts = l.split('-')
- if len(l_parts) == 2 and l_parts[0] == previous_lang:
- filtered_languages[l] = all_languages[l]
- filtered_languages[l]['country'] = ''
- countries = 1
- break
-
- if countries == 0:
- # get most likely country code from babel
- subtags = get_global('likely_subtags').get(previous_lang)
- if subtags:
- subtag_parts = subtags.split('_')
- new_code = subtag_parts[0] + '-' + subtag_parts[-1]
- filtered_languages[new_code] = all_languages[previous_lang]
- countries = 1
-
- if countries == 1:
- # remove countryless version of language if there's only one country
- del filtered_languages[previous_lang]
- if previous_code in filtered_languages:
- filtered_languages[previous_code]['country'] = ''
-
- countries = 0
- previous_lang = current_lang
-
- previous_code = current_code
-
-
-# Write languages.py.
-def write_languages_file(languages):
- new_file = open(languages_file, 'wb')
- file_content = '# -*- coding: utf-8 -*-\n'\
- + '# list of language codes\n'\
- + '# this file is generated automatically by utils/update_search_languages.py\n'\
- + '\nlanguage_codes = ('
- for code in sorted(languages):
- file_content += '\n (u"' + code + '"'\
- + ', u"' + languages[code]['name'].split(' (')[0] + '"'\
- + ', u"' + languages[code].get('country', '') + '"'\
- + ', u"' + languages[code].get('english_name', '').split(' (')[0] + '"),'
- # remove last comma
- file_content = file_content[:-1]
- file_content += '\n)\n'
- new_file.write(file_content.encode('utf8'))
- new_file.close()
-
-
-if __name__ == "__main__":
- initialize_engines(settings['engines'])
- engines_languages = fetch_supported_languages()
- all_languages = join_language_lists(engines_languages)
- filtered_languages = filter_language_list(all_languages)
- assign_country_codes(filtered_languages, all_languages)
- write_languages_file(filtered_languages)
diff --git a/utils/filtron.sh b/utils/filtron.sh
new file mode 100755
index 0000000..fc2591a
--- /dev/null
+++ b/utils/filtron.sh
@@ -0,0 +1,561 @@
+#!/usr/bin/env bash
+# -*- coding: utf-8; mode: sh indent-tabs-mode: nil -*-
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# shellcheck disable=SC2119,SC2001
+
+# shellcheck source=utils/lib.sh
+source "$(dirname "${BASH_SOURCE[0]}")/lib.sh"
+# shellcheck source=utils/brand.env
+source "${REPO_ROOT}/utils/brand.env"
+source_dot_config
+source "${REPO_ROOT}/utils/lxc-searx.env"
+in_container && lxc_set_suite_env
+
+# ----------------------------------------------------------------------------
+# config
+# ----------------------------------------------------------------------------
+
+PUBLIC_URL="${PUBLIC_URL:-http://$(uname -n)/searx}"
+PUBLIC_HOST="${PUBLIC_HOST:-$(echo "$PUBLIC_URL" | sed -e 's/[^/]*\/\/\([^@]*@\)\?\([^:/]*\).*/\2/')}"
+
+FILTRON_URL_PATH="${FILTRON_URL_PATH:-$(echo "${PUBLIC_URL}" \
+| sed -e 's,^.*://[^/]*\(/.*\),\1,g')}"
+[[ "${FILTRON_URL_PATH}" == "${PUBLIC_URL}" ]] && FILTRON_URL_PATH=/
+
+FILTRON_ETC="/etc/filtron"
+FILTRON_RULES="$FILTRON_ETC/rules.json"
+
+FILTRON_API="${FILTRON_API:-127.0.0.1:4005}"
+FILTRON_LISTEN="${FILTRON_LISTEN:-127.0.0.1:4004}"
+FILTRON_TARGET="${FILTRON_TARGET:-127.0.0.1:8888}"
+
+SERVICE_NAME="filtron"
+SERVICE_USER="${SERVICE_USER:-${SERVICE_NAME}}"
+SERVICE_HOME_BASE="${SERVICE_HOME_BASE:-/usr/local}"
+SERVICE_HOME="${SERVICE_HOME_BASE}/${SERVICE_USER}"
+SERVICE_SYSTEMD_UNIT="${SYSTEMD_UNITS}/${SERVICE_NAME}.service"
+# shellcheck disable=SC2034
+SERVICE_GROUP="${SERVICE_USER}"
+
+# shellcheck disable=SC2034
+SERVICE_GROUP="${SERVICE_USER}"
+
+GO_ENV="${SERVICE_HOME}/.go_env"
+GO_PKG_URL="https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz"
+GO_TAR=$(basename "$GO_PKG_URL")
+
+APACHE_FILTRON_SITE="searx.conf"
+NGINX_FILTRON_SITE="searx.conf"
+
+# shellcheck disable=SC2034
+CONFIG_FILES=(
+ "${FILTRON_RULES}"
+ "${SERVICE_SYSTEMD_UNIT}"
+)
+
+# ----------------------------------------------------------------------------
+usage() {
+# ----------------------------------------------------------------------------
+
+ # shellcheck disable=SC1117
+ cat <<EOF
+usage::
+ $(basename "$0") shell
+ $(basename "$0") install [all|user|rules]
+ $(basename "$0") update [filtron]
+ $(basename "$0") remove [all]
+ $(basename "$0") activate [service]
+ $(basename "$0") deactivate [service]
+ $(basename "$0") inspect [service]
+ $(basename "$0") option [debug-on|debug-off]
+ $(basename "$0") apache [install|remove]
+ $(basename "$0") nginx [install|remove]
+
+shell
+ start interactive shell from user ${SERVICE_USER}
+install / remove
+ :all: complete setup of filtron service
+ :user: add/remove service user '$SERVICE_USER' ($SERVICE_HOME)
+ :rules: reinstall filtron rules $FILTRON_RULES
+update filtron
+ Update filtron installation ($SERVICE_HOME)
+activate service
+ activate and start service daemon (systemd unit)
+deactivate service
+ stop and deactivate service daemon (systemd unit)
+inspect service
+ show service status and log
+option
+ set one of the available options
+apache (${PUBLIC_URL})
+ :install: apache site with a reverse proxy (ProxyPass)
+ :remove: apache site ${APACHE_FILTRON_SITE}
+nginx (${PUBLIC_URL})
+ :install: nginx site with a reverse proxy (ProxyPass)
+ :remove: nginx site ${NGINX_FILTRON_SITE}
+
+filtron rules: ${FILTRON_RULES}
+
+If needed, set PUBLIC_URL of your WEB service in the '${DOT_CONFIG#"$REPO_ROOT/"}' file::
+ PUBLIC_URL : ${PUBLIC_URL}
+ PUBLIC_HOST : ${PUBLIC_HOST}
+ SERVICE_USER : ${SERVICE_USER}
+ FILTRON_TARGET : ${FILTRON_TARGET}
+ FILTRON_API : ${FILTRON_API}
+ FILTRON_LISTEN : ${FILTRON_LISTEN}
+EOF
+ if in_container; then
+ # in containers the service is listening on 0.0.0.0 (see lxc-searx.env)
+ for ip in $(global_IPs) ; do
+ if [[ $ip =~ .*:.* ]]; then
+ echo " container URL (IPv6): http://[${ip#*|}]:4005/"
+ else
+ # IPv4:
+ echo " container URL (IPv4): http://${ip#*|}:4005/"
+ fi
+ done
+ fi
+ [[ -n ${1} ]] && err_msg "$1"
+}
+
+main() {
+ required_commands \
+ sudo install git wget curl \
+ || exit
+
+ local _usage="unknown or missing $1 command $2"
+
+ case $1 in
+ --getenv) var="$2"; echo "${!var}"; exit 0;;
+ -h|--help) usage; exit 0;;
+
+ shell)
+ sudo_or_exit
+ interactive_shell "${SERVICE_USER}"
+ ;;
+ inspect)
+ case $2 in
+ service)
+ sudo_or_exit
+ inspect_service
+ ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ install)
+ rst_title "$SERVICE_NAME" part
+ sudo_or_exit
+ case $2 in
+ all) install_all ;;
+ user) assert_user ;;
+ rules)
+ rst_title "Re-Install filtron rules"
+ echo
+ install_template --no-eval "$FILTRON_RULES" root root 644
+ systemd_restart_service "${SERVICE_NAME}"
+ ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ update)
+ sudo_or_exit
+ case $2 in
+ filtron) update_filtron ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ remove)
+ sudo_or_exit
+ case $2 in
+ all) remove_all;;
+ user) drop_service_account "${SERVICE_USER}" ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ activate)
+ sudo_or_exit
+ case $2 in
+ service) systemd_activate_service "${SERVICE_NAME}" ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ deactivate)
+ sudo_or_exit
+ case $2 in
+ service) systemd_deactivate_service "${SERVICE_NAME}" ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ apache)
+ sudo_or_exit
+ case $2 in
+ install) install_apache_site ;;
+ remove) remove_apache_site ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ nginx)
+ sudo_or_exit
+ case $2 in
+ install) install_nginx_site ;;
+ remove) remove_nginx_site ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ option)
+ sudo_or_exit
+ case $2 in
+ debug-on) echo; enable_debug ;;
+ debug-off) echo; disable_debug ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ doc) rst-doc ;;
+ *) usage "unknown or missing command $1"; exit 42;;
+ esac
+}
+
+install_all() {
+ rst_title "Install $SERVICE_NAME (service)"
+ assert_user
+ wait_key
+ install_go "${GO_PKG_URL}" "${GO_TAR}" "${SERVICE_USER}"
+ wait_key
+ install_filtron
+ wait_key
+ systemd_install_service "${SERVICE_NAME}" "${SERVICE_SYSTEMD_UNIT}"
+ wait_key
+ echo
+ if ! service_is_available "http://${FILTRON_LISTEN}" ; then
+ err_msg "Filtron is not listening on: http://${FILTRON_LISTEN}"
+ fi
+ if apache_is_installed; then
+ info_msg "Apache is installed on this host."
+ if ask_yn "Do you want to install a reverse proxy (ProxyPass)" Yn; then
+ install_apache_site
+ fi
+ elif nginx_is_installed; then
+ info_msg "nginx is installed on this host."
+ if ask_yn "Do you want to install a reverse proxy (ProxyPass)" Yn; then
+ install_nginx_site
+ fi
+ fi
+ if ask_yn "Do you want to inspect the installation?" Ny; then
+ inspect_service
+ fi
+
+}
+
+remove_all() {
+ rst_title "De-Install $SERVICE_NAME (service)"
+
+ rst_para "\
+It goes without saying that this script can only be used to remove
+installations that were installed with this script."
+
+ if ! systemd_remove_service "${SERVICE_NAME}" "${SERVICE_SYSTEMD_UNIT}"; then
+ return 42
+ fi
+ drop_service_account "${SERVICE_USER}"
+ rm -r "$FILTRON_ETC" 2>&1 | prefix_stdout
+ if service_is_available "${PUBLIC_URL}"; then
+ MSG="** Don't forget to remove your public site! (${PUBLIC_URL}) **" wait_key 10
+ fi
+}
+
+assert_user() {
+ rst_title "user $SERVICE_USER" section
+ echo
+ tee_stderr 1 <<EOF | bash | prefix_stdout
+useradd --shell /bin/bash --system \
+ --home-dir "$SERVICE_HOME" \
+ --comment 'Reverse HTTP proxy to filter requests' $SERVICE_USER
+mkdir "$SERVICE_HOME"
+chown -R "$SERVICE_GROUP:$SERVICE_GROUP" "$SERVICE_HOME"
+groups $SERVICE_USER
+EOF
+ SERVICE_HOME="$(sudo -i -u "$SERVICE_USER" echo \$HOME)"
+ export SERVICE_HOME
+ echo "export SERVICE_HOME=$SERVICE_HOME"
+
+ cat > "$GO_ENV" <<EOF
+export GOPATH=\$HOME/go-apps
+export PATH=\$PATH:\$HOME/local/go/bin:\$GOPATH/bin
+EOF
+ echo "Environment $GO_ENV has been setup."
+
+ tee_stderr <<EOF | sudo -i -u "$SERVICE_USER"
+grep -qFs -- 'source $GO_ENV' ~/.profile || echo 'source $GO_ENV' >> ~/.profile
+EOF
+}
+
+filtron_is_installed() {
+ [[ -f $SERVICE_HOME/go-apps/bin/filtron ]]
+}
+
+_svcpr=" ${_Yellow}|${SERVICE_USER}|${_creset} "
+
+install_filtron() {
+ rst_title "Install filtron in user's ~/go-apps" section
+ echo
+ tee_stderr <<EOF | sudo -i -u "$SERVICE_USER" 2>&1 | prefix_stdout "$_svcpr"
+go get -v -u github.com/asciimoo/filtron
+EOF
+ install_template --no-eval "$FILTRON_RULES" root root 644
+}
+
+update_filtron() {
+ rst_title "Update filtron" section
+ echo
+ tee_stderr <<EOF | sudo -i -u "$SERVICE_USER" 2>&1 | prefix_stdout "$_svcpr"
+go get -v -u github.com/asciimoo/filtron
+EOF
+}
+
+inspect_service() {
+
+ rst_title "service status & log"
+
+ cat <<EOF
+
+sourced ${DOT_CONFIG#"$REPO_ROOT/"} :
+
+ PUBLIC_URL : ${PUBLIC_URL}
+ PUBLIC_HOST : ${PUBLIC_HOST}
+ FILTRON_URL_PATH : ${FILTRON_URL_PATH}
+ FILTRON_API : ${FILTRON_API}
+ FILTRON_LISTEN : ${FILTRON_LISTEN}
+ FILTRON_TARGET : ${FILTRON_TARGET}
+
+EOF
+
+ if service_account_is_available "$SERVICE_USER"; then
+ info_msg "service account $SERVICE_USER available."
+ else
+ err_msg "service account $SERVICE_USER not available!"
+ fi
+ if go_is_available "$SERVICE_USER"; then
+ info_msg "~$SERVICE_USER: go is installed"
+ else
+ err_msg "~$SERVICE_USER: go is not installed"
+ fi
+ if filtron_is_installed; then
+ info_msg "~$SERVICE_USER: filtron app is installed"
+ else
+ err_msg "~$SERVICE_USER: filtron app is not installed!"
+ fi
+
+ if ! service_is_available "http://${FILTRON_API}"; then
+ err_msg "API not available at: http://${FILTRON_API}"
+ fi
+
+ if ! service_is_available "http://${FILTRON_LISTEN}" ; then
+ err_msg "Filtron is not listening on: http://${FILTRON_LISTEN}"
+ fi
+
+ if service_is_available "http://${FILTRON_TARGET}" ; then
+ info_msg "Filtron's target is available at: http://${FILTRON_TARGET}"
+ fi
+
+ if ! service_is_available "${PUBLIC_URL}"; then
+ warn_msg "Public service at ${PUBLIC_URL} is not available!"
+ if ! in_container; then
+ warn_msg "Check if public name is correct and routed or use the public IP from above."
+ fi
+ fi
+
+ if in_container; then
+ lxc_suite_info
+ else
+ info_msg "public URL --> ${PUBLIC_URL}"
+ info_msg "internal URL --> http://${FILTRON_LISTEN}"
+ fi
+
+
+ local _debug_on
+ if ask_yn "Enable filtron debug mode?"; then
+ enable_debug
+ _debug_on=1
+ fi
+ echo
+ systemctl --no-pager -l status "${SERVICE_NAME}"
+ echo
+
+ info_msg "public URL --> ${PUBLIC_URL}"
+ # shellcheck disable=SC2059
+ printf "// use ${_BCyan}CTRL-C${_creset} to stop monitoring the log"
+ read -r -s -n1 -t 5
+ echo
+ while true; do
+ trap break 2
+ journalctl -f -u "${SERVICE_NAME}"
+ done
+
+ if [[ $_debug_on == 1 ]]; then
+ disable_debug
+ fi
+ return 0
+}
+
+
+enable_debug() {
+ info_msg "try to enable debug mode ..."
+ python <<EOF
+import sys, json
+
+debug = {
+ u'name': u'debug request'
+ , u'filters': []
+ , u'interval': 0
+ , u'limit': 0
+ , u'actions': [{u'name': u'log'}]
+}
+
+with open('$FILTRON_RULES') as rules:
+ j = json.load(rules)
+
+pos = None
+for i in range(len(j)):
+ if j[i].get('name') == 'debug request':
+ pos = i
+ break
+if pos is not None:
+ j[pos] = debug
+else:
+ j.append(debug)
+with open('$FILTRON_RULES', 'w') as rules:
+ json.dump(j, rules, indent=2, sort_keys=True)
+
+EOF
+ systemctl restart "${SERVICE_NAME}.service"
+}
+
+disable_debug() {
+ info_msg "try to disable debug mode ..."
+ python <<EOF
+import sys, json
+with open('$FILTRON_RULES') as rules:
+ j = json.load(rules)
+
+pos = None
+for i in range(len(j)):
+ if j[i].get('name') == 'debug request':
+ pos = i
+ break
+if pos is not None:
+ del j[pos]
+ with open('$FILTRON_RULES', 'w') as rules:
+ json.dump(j, rules, indent=2, sort_keys=True)
+EOF
+ systemctl restart "${SERVICE_NAME}.service"
+}
+
+install_apache_site() {
+
+ rst_title "Install Apache site $APACHE_FILTRON_SITE"
+
+ rst_para "\
+This installs a reverse proxy (ProxyPass) into apache site (${APACHE_FILTRON_SITE})"
+
+ ! apache_is_installed && info_msg "Apache is not installed."
+
+ if ! ask_yn "Do you really want to continue?" Yn; then
+ return
+ else
+ install_apache
+ fi
+
+ "${REPO_ROOT}/utils/searx.sh" install uwsgi
+
+ apache_install_site --variant=filtron "${APACHE_FILTRON_SITE}"
+
+ info_msg "testing public url .."
+ if ! service_is_available "${PUBLIC_URL}"; then
+ err_msg "Public service at ${PUBLIC_URL} is not available!"
+ fi
+}
+
+remove_apache_site() {
+
+ rst_title "Remove Apache site $APACHE_FILTRON_SITE"
+
+ rst_para "\
+This removes apache site ${APACHE_FILTRON_SITE}."
+
+ ! apache_is_installed && err_msg "Apache is not installed."
+
+ if ! ask_yn "Do you really want to continue?" Yn; then
+ return
+ fi
+
+ apache_remove_site "$APACHE_FILTRON_SITE"
+
+}
+
+install_nginx_site() {
+
+ rst_title "Install nginx site $NGINX_FILTRON_SITE"
+
+ rst_para "\
+This installs a reverse proxy (ProxyPass) into nginx site (${NGINX_FILTRON_SITE})"
+
+ ! nginx_is_installed && info_msg "nginx is not installed."
+
+ if ! ask_yn "Do you really want to continue?" Yn; then
+ return
+ else
+ install_nginx
+ fi
+
+ "${REPO_ROOT}/utils/searx.sh" install uwsgi
+
+ # shellcheck disable=SC2034
+ SEARX_SRC=$("${REPO_ROOT}/utils/searx.sh" --getenv SEARX_SRC)
+ # shellcheck disable=SC2034
+ SEARX_URL_PATH=$("${REPO_ROOT}/utils/searx.sh" --getenv SEARX_URL_PATH)
+ nginx_install_app --variant=filtron "${NGINX_FILTRON_SITE}"
+
+ info_msg "testing public url .."
+ if ! service_is_available "${PUBLIC_URL}"; then
+ err_msg "Public service at ${PUBLIC_URL} is not available!"
+ fi
+}
+
+remove_nginx_site() {
+
+ rst_title "Remove nginx site $NGINX_FILTRON_SITE"
+
+ rst_para "\
+This removes nginx site ${NGINX_FILTRON_SITE}."
+
+ ! nginx_is_installed && err_msg "nginx is not installed."
+
+ if ! ask_yn "Do you really want to continue?" Yn; then
+ return
+ fi
+
+ nginx_remove_site "$FILTRON_FILTRON_SITE"
+
+}
+
+
+rst-doc() {
+
+ eval "echo \"$(< "${REPO_ROOT}/docs/build-templates/filtron.rst")\""
+
+ echo -e "\n.. START install systemd unit"
+ cat <<EOF
+.. tabs::
+
+ .. group-tab:: systemd
+
+ .. code:: bash
+
+EOF
+ eval "echo \"$(< "${TEMPLATES}/${SERVICE_SYSTEMD_UNIT}")\"" | prefix_stdout " "
+ echo -e "\n.. END install systemd unit"
+
+ # for DIST_NAME in ubuntu-20.04 arch fedora centos; do
+ # (
+ # DIST_ID=${DIST_NAME%-*}
+ # DIST_VERS=${DIST_NAME#*-}
+ # [[ $DIST_VERS =~ $DIST_ID ]] && DIST_VERS=
+ # # ...
+ # )
+ # done
+}
+
+# ----------------------------------------------------------------------------
+main "$@"
+# ----------------------------------------------------------------------------
diff --git a/utils/lib.sh b/utils/lib.sh
new file mode 100755
index 0000000..04603a0
--- /dev/null
+++ b/utils/lib.sh
@@ -0,0 +1,1845 @@
+#!/usr/bin/env bash
+# -*- coding: utf-8; mode: sh indent-tabs-mode: nil -*-
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# shellcheck disable=SC2059,SC1117
+
+# ubuntu, debian, arch, fedora, centos ...
+DIST_ID=$(source /etc/os-release; echo "$ID");
+# shellcheck disable=SC2034
+DIST_VERS=$(source /etc/os-release; echo "$VERSION_ID");
+
+ADMIN_NAME="${ADMIN_NAME:-$(git config user.name)}"
+ADMIN_NAME="${ADMIN_NAME:-$USER}"
+
+ADMIN_EMAIL="${ADMIN_EMAIL:-$(git config user.email)}"
+ADMIN_EMAIL="${ADMIN_EMAIL:-$USER@$(hostname)}"
+
+if [[ -z "${REPO_ROOT}" ]]; then
+ REPO_ROOT=$(dirname "${BASH_SOURCE[0]}")
+ while [ -h "${REPO_ROOT}" ] ; do
+ REPO_ROOT=$(readlink "${REPO_ROOT}")
+ done
+ REPO_ROOT=$(cd "${REPO_ROOT}/.." && pwd -P )
+fi
+
+if [[ -z ${TEMPLATES} ]]; then
+ TEMPLATES="${REPO_ROOT}/utils/templates"
+fi
+
+if [[ -z "$CACHE" ]]; then
+ CACHE="${REPO_ROOT}/cache"
+fi
+
+if [[ -z ${DIFF_CMD} ]]; then
+ DIFF_CMD="diff -u"
+ if command -v colordiff >/dev/null; then
+ DIFF_CMD="colordiff -u"
+ fi
+fi
+
+DOT_CONFIG="${DOT_CONFIG:-${REPO_ROOT}/.config.sh}"
+
+source_dot_config() {
+ if [[ ! -e "${DOT_CONFIG}" ]]; then
+ err_msg "configuration does not exists at: ${DOT_CONFIG}"
+ return 42
+ fi
+ # shellcheck disable=SC1090
+ source "${DOT_CONFIG}"
+}
+
+sudo_or_exit() {
+ # usage: sudo_or_exit
+
+ if [ ! "$(id -u)" -eq 0 ]; then
+ err_msg "this command requires root (sudo) privilege!" >&2
+ exit 42
+ fi
+}
+
+required_commands() {
+
+ # usage: required_commands [cmd1 ...]
+
+ local exit_val=0
+ while [ -n "$1" ]; do
+
+ if ! command -v "$1" &>/dev/null; then
+ err_msg "missing command $1"
+ exit_val=42
+ fi
+ shift
+ done
+ return $exit_val
+}
+
+# colors
+# ------
+
+# shellcheck disable=SC2034
+set_terminal_colors() {
+ _colors=8
+ _creset='\e[0m' # reset all attributes
+
+ _Black='\e[0;30m'
+ _White='\e[1;37m'
+ _Red='\e[0;31m'
+ _Green='\e[0;32m'
+ _Yellow='\e[0;33m'
+ _Blue='\e[0;94m'
+ _Violet='\e[0;35m'
+ _Cyan='\e[0;36m'
+
+ _BBlack='\e[1;30m'
+ _BWhite='\e[1;37m'
+ _BRed='\e[1;31m'
+ _BGreen='\e[1;32m'
+ _BYellow='\e[1;33m'
+ _BBlue='\e[1;94m'
+ _BPurple='\e[1;35m'
+ _BCyan='\e[1;36m'
+}
+
+if [ ! -p /dev/stdout ] && [ ! "$TERM" = 'dumb' ] && [ ! "$TERM" = 'unknown' ]; then
+ set_terminal_colors
+fi
+
+# reST
+# ----
+
+if command -v fmt >/dev/null; then
+ export FMT="fmt -u"
+else
+ export FMT="cat"
+fi
+
+rst_title() {
+ # usage: rst_title <header-text> [part|chapter|section]
+
+ case ${2-chapter} in
+ part) printf "\n${_BGreen}${1//?/=}${_creset}\n${_BCyan}${1}${_creset}\n${_BGreen}${1//?/=}${_creset}\n";;
+ chapter) printf "\n${_BCyan}${1}${_creset}\n${_BGreen}${1//?/=}${_creset}\n";;
+ section) printf "\n${_BCyan}${1}${_creset}\n${_BGreen}${1//?/-}${_creset}\n";;
+ *)
+ err_msg "invalid argument '${2}' in line $(caller)"
+ return 42
+ ;;
+ esac
+}
+
+rst_para() {
+ # usage: RST_INDENT=1 rst_para "lorem ipsum ..."
+ local prefix=''
+ if [[ -n $RST_INDENT ]] && [[ $RST_INDENT -gt 0 ]]; then
+ prefix="$(for i in $(seq 1 "$RST_INDENT"); do printf " "; done)"
+ echo -en "\n$*\n" | $FMT | prefix_stdout "$prefix"
+ else
+ echo -en "\n$*\n" | $FMT
+ fi
+}
+
+die() {
+ echo -e "${_BRed}ERROR:${_creset} ${BASH_SOURCE[1]}: line ${BASH_LINENO[0]}: ${2-died ${1-1}}" >&2;
+ exit "${1-1}"
+}
+
+die_caller() {
+ echo -e "${_BRed}ERROR:${_creset} ${BASH_SOURCE[2]}: line ${BASH_LINENO[1]}: ${FUNCNAME[1]}(): ${2-died ${1-1}}" >&2;
+ exit "${1-1}"
+}
+
+err_msg() { echo -e "${_BRed}ERROR:${_creset} $*" >&2; }
+warn_msg() { echo -e "${_BBlue}WARN:${_creset} $*" >&2; }
+info_msg() { echo -e "${_BYellow}INFO:${_creset} $*" >&2; }
+
+build_msg() {
+ local tag="$1 "
+ shift
+ echo -e "${_Blue}${tag:0:10}${_creset}$*"
+}
+
+dump_return() {
+
+ # Use this as last command in your function to prompt an ERROR message if
+ # the exit code is not zero.
+
+ local err=$1
+ [ "$err" -ne "0" ] && err_msg "${FUNCNAME[1]} exit with error ($err)"
+ return "$err"
+}
+
+clean_stdin() {
+ if [[ $(uname -s) != 'Darwin' ]]; then
+ while read -r -n1 -t 0.1; do : ; done
+ fi
+}
+
+wait_key(){
+ # usage: wait_key [<timeout in sec>]
+
+ clean_stdin
+ local _t=$1
+ local msg="${MSG}"
+ [[ -z "$msg" ]] && msg="${_Green}** press any [${_BCyan}KEY${_Green}] to continue **${_creset}"
+
+ [[ -n $FORCE_TIMEOUT ]] && _t=$FORCE_TIMEOUT
+ [[ -n $_t ]] && _t="-t $_t"
+ printf "$msg"
+ # shellcheck disable=SC2086
+ read -r -s -n1 $_t
+ echo
+ clean_stdin
+}
+
+ask_yn() {
+ # usage: ask_yn <prompt-text> [Ny|Yn] [<timeout in sec>]
+
+ local EXIT_YES=0 # exit status 0 --> successful
+ local EXIT_NO=1 # exit status 1 --> error code
+
+ local _t=$3
+ [[ -n $FORCE_TIMEOUT ]] && _t=$FORCE_TIMEOUT
+ [[ -n $_t ]] && _t="-t $_t"
+ case "${FORCE_SELECTION:-${2}}" in
+ Y) return ${EXIT_YES} ;;
+ N) return ${EXIT_NO} ;;
+ Yn)
+ local exit_val=${EXIT_YES}
+ local choice="[${_BGreen}YES${_creset}/no]"
+ local default="Yes"
+ ;;
+ *)
+ local exit_val=${EXIT_NO}
+ local choice="[${_BGreen}NO${_creset}/yes]"
+ local default="No"
+ ;;
+ esac
+ echo
+ while true; do
+ clean_stdin
+ printf "$1 ${choice} "
+ # shellcheck disable=SC2086
+ read -r -n1 $_t
+ if [[ -z $REPLY ]]; then
+ printf "$default\n"; break
+ elif [[ $REPLY =~ ^[Yy]$ ]]; then
+ exit_val=${EXIT_YES}
+ printf "\n"
+ break
+ elif [[ $REPLY =~ ^[Nn]$ ]]; then
+ exit_val=${EXIT_NO}
+ printf "\n"
+ break
+ fi
+ _t=""
+ err_msg "invalid choice"
+ done
+ clean_stdin
+ return $exit_val
+}
+
+tee_stderr () {
+
+ # usage::
+ # tee_stderr 1 <<EOF | python -i
+ # print("hello")
+ # EOF
+ # ...
+ # >>> print("hello")
+ # hello
+
+ local _t="0";
+ if [[ -n $1 ]] ; then _t="$1"; fi
+
+ (while read -r line; do
+ # shellcheck disable=SC2086
+ sleep $_t
+ echo -e "$line" >&2
+ echo "$line"
+ done)
+}
+
+prefix_stdout () {
+ # usage: <cmd> | prefix_stdout [prefix]
+
+ local prefix="${_BYellow}-->|${_creset}"
+
+ if [[ -n $1 ]] ; then prefix="$1"; fi
+
+ # shellcheck disable=SC2162
+ (while IFS= read line; do
+ echo -e "${prefix}$line"
+ done)
+}
+
+append_line() {
+
+ # usage: append_line <line> <file>
+ #
+ # Append line if not exists, create file if not exists. E.g::
+ #
+ # append_line 'source ~/.foo' ~/bashrc
+
+ local LINE=$1
+ local FILE=$2
+ grep -qFs -- "$LINE" "$FILE" || echo "$LINE" >> "$FILE"
+}
+
+cache_download() {
+
+ # usage: cache_download <url> <local-filename>
+
+ local exit_value=0
+
+ if [[ -n ${SUDO_USER} ]]; then
+ sudo -u "${SUDO_USER}" mkdir -p "${CACHE}"
+ else
+ mkdir -p "${CACHE}"
+ fi
+
+ if [[ -f "${CACHE}/$2" ]] ; then
+ info_msg "already cached: $1"
+ info_msg " --> ${CACHE}/$2"
+ fi
+
+ if [[ ! -f "${CACHE}/$2" ]]; then
+ info_msg "caching: $1"
+ info_msg " --> ${CACHE}/$2"
+ if [[ -n ${SUDO_USER} ]]; then
+ sudo -u "${SUDO_USER}" wget --progress=bar -O "${CACHE}/$2" "$1" ; exit_value=$?
+ else
+ wget --progress=bar -O "${CACHE}/$2" "$1" ; exit_value=$?
+ fi
+ if [[ ! $exit_value = 0 ]]; then
+ err_msg "failed to download: $1"
+ fi
+ fi
+}
+
+backup_file() {
+
+ # usage: backup_file /path/to/file.foo
+
+ local stamp
+ stamp=$(date +"_%Y%m%d_%H%M%S")
+ info_msg "create backup: ${1}${stamp}"
+ cp -a "${1}" "${1}${stamp}"
+}
+
+choose_one() {
+
+ # usage:
+ #
+ # DEFAULT_SELECT= 2 \
+ # choose_one <name> "your selection?" "Coffee" "Coffee with milk"
+
+ local default=${DEFAULT_SELECT-1}
+ local REPLY
+ local env_name=$1 && shift
+ local choice=$1;
+ local max="${#@}"
+ local _t
+ [[ -n $FORCE_TIMEOUT ]] && _t=$FORCE_TIMEOUT
+ [[ -n $_t ]] && _t="-t $_t"
+
+ list=("$@")
+ echo -e "${_BGreen}Menu::${_creset}"
+ for ((i=1; i<= $((max -1)); i++)); do
+ if [[ "$i" == "$default" ]]; then
+ echo -e " ${_BGreen}$i.${_creset}) ${list[$i]} [default]"
+ else
+ echo -e " $i.) ${list[$i]}"
+ fi
+ done
+ while true; do
+ clean_stdin
+ printf "$1 [${_BGreen}$default${_creset}] "
+
+ if (( 10 > max )); then
+ # shellcheck disable=SC2086
+ read -r -n1 $_t
+ else
+ # shellcheck disable=SC2086,SC2229
+ read -r $_t
+ fi
+ # selection fits
+ [[ $REPLY =~ ^-?[0-9]+$ ]] && (( REPLY > 0 )) && (( REPLY < max )) && break
+
+ # take default
+ [[ -z $REPLY ]] && REPLY=$default && break
+
+ _t=""
+ err_msg "invalid choice"
+ done
+ eval "$env_name"='${list[${REPLY}]}'
+ echo
+ clean_stdin
+}
+
+install_template() {
+
+ # usage:
+ #
+ # install_template [--no-eval] [--variant=<name>] \
+ # {file} [{owner} [{group} [{chmod}]]]
+ #
+ # E.g. the origin of variant 'raw' of /etc/updatedb.conf is::
+ #
+ # ${TEMPLATES}/etc/updatedb.conf:raw
+ #
+ # To install variant 'raw' of /etc/updatedb.conf without evaluated
+ # replacements you can use::
+ #
+ # install_template --variant=raw --no-eval \
+ # /etc/updatedb.conf root root 644
+
+ local _reply=""
+ local do_eval=1
+ local variant=""
+ local pos_args=("$0")
+
+ for i in "$@"; do
+ case $i in
+ --no-eval) do_eval=0; shift ;;
+ --variant=*) variant=":${i#*=}"; shift ;;
+ *) pos_args+=("$i") ;;
+ esac
+ done
+
+ local dst="${pos_args[1]}"
+ local template_origin="${TEMPLATES}${dst}${variant}"
+ local template_file="${TEMPLATES}${dst}"
+
+ local owner="${pos_args[2]-$(id -un)}"
+ local group="${pos_args[3]-$(id -gn)}"
+ local chmod="${pos_args[4]-644}"
+
+ info_msg "install (eval=$do_eval): ${dst}"
+ [[ -n $variant ]] && info_msg "variant --> ${variant}"
+
+ if [[ ! -f "${template_origin}" ]] ; then
+ err_msg "${template_origin} does not exists"
+ err_msg "... can't install $dst"
+ wait_key 30
+ return 42
+ fi
+
+ if [[ "$do_eval" == "1" ]]; then
+ template_file="${CACHE}${dst}${variant}"
+ info_msg "BUILD template ${template_file}"
+ if [[ -n ${SUDO_USER} ]]; then
+ sudo -u "${SUDO_USER}" mkdir -p "$(dirname "${template_file}")"
+ else
+ mkdir -p "$(dirname "${template_file}")"
+ fi
+ # shellcheck disable=SC2086
+ eval "echo \"$(cat ${template_origin})\"" > "${template_file}"
+ if [[ -n ${SUDO_USER} ]]; then
+ chown "${SUDO_USER}:${SUDO_USER}" "${template_file}"
+ fi
+ else
+ template_file=$template_origin
+ fi
+
+ mkdir -p "$(dirname "${dst}")"
+
+ if [[ ! -f "${dst}" ]]; then
+ info_msg "install: ${template_file}"
+ sudo -H install -v -o "${owner}" -g "${group}" -m "${chmod}" \
+ "${template_file}" "${dst}" | prefix_stdout
+ return $?
+ fi
+
+ if [[ -f "${dst}" ]] && cmp --silent "${template_file}" "${dst}" ; then
+ info_msg "file ${dst} allready installed"
+ return 0
+ fi
+
+ info_msg "diffrent file ${dst} allready exists on this host"
+
+ while true; do
+ choose_one _reply "choose next step with file $dst" \
+ "replace file" \
+ "leave file unchanged" \
+ "interactiv shell" \
+ "diff files"
+
+ case $_reply in
+ "replace file")
+ info_msg "install: ${template_file}"
+ sudo -H install -v -o "${owner}" -g "${group}" -m "${chmod}" \
+ "${template_file}" "${dst}" | prefix_stdout
+ break
+ ;;
+ "leave file unchanged")
+ break
+ ;;
+ "interactiv shell")
+ echo -e "// edit ${_Red}${dst}${_creset} to your needs"
+ echo -e "// exit with [${_BCyan}CTRL-D${_creset}]"
+ sudo -H -u "${owner}" -i
+ $DIFF_CMD "${dst}" "${template_file}"
+ echo
+ echo -e "// ${_BBlack}did you edit file ...${_creset}"
+ echo -en "// ${_Red}${dst}${_creset}"
+ if ask_yn "//${_BBlack}... to your needs?${_creset}"; then
+ break
+ fi
+ ;;
+ "diff files")
+ $DIFF_CMD "${dst}" "${template_file}" | prefix_stdout
+ esac
+ done
+}
+
+
+service_is_available() {
+
+ # usage: service_is_available <URL>
+
+ [[ -z $1 ]] && die_caller 42 "missing argument <URL>"
+ local URL="$1"
+ http_code=$(curl -H 'Cache-Control: no-cache' \
+ --silent -o /dev/null --head --write-out '%{http_code}' --insecure \
+ "${URL}")
+ exit_val=$?
+ if [[ $exit_val = 0 ]]; then
+ info_msg "got $http_code from ${URL}"
+ fi
+ case "$http_code" in
+ 404|410|423) exit_val=$http_code;;
+ esac
+ return "$exit_val"
+}
+
+# python
+# ------
+
+PY="${PY:=3}"
+PYTHON="${PYTHON:=python$PY}"
+PY_ENV="${PY_ENV:=local/py${PY}}"
+PY_ENV_BIN="${PY_ENV}/bin"
+PY_ENV_REQ="${PY_ENV_REQ:=${REPO_ROOT}/requirements*.txt}"
+
+# List of python packages (folders) or modules (files) installed by command:
+# pyenv.install
+PYOBJECTS="${PYOBJECTS:=.}"
+
+# folder where the python distribution takes place
+PYDIST="${PYDIST:=dist}"
+
+# folder where the intermediate build files take place
+PYBUILD="${PYBUILD:=build/py${PY}}"
+
+# https://www.python.org/dev/peps/pep-0508/#extras
+#PY_SETUP_EXTRAS='[develop,test]'
+PY_SETUP_EXTRAS="${PY_SETUP_EXTRAS:=[develop,test]}"
+
+PIP_BOILERPLATE=( pip wheel setuptools )
+
+# shellcheck disable=SC2120
+pyenv() {
+
+ # usage: pyenv [vtenv_opts ...]
+ #
+ # vtenv_opts: see 'pip install --help'
+ #
+ # Builds virtualenv with 'requirements*.txt' (PY_ENV_REQ) installed. The
+ # virtualenv will be reused by validating sha256sum of the requirement
+ # files.
+
+ required_commands \
+ sha256sum "${PYTHON}" \
+ || exit
+
+ local pip_req=()
+
+ if ! pyenv.OK > /dev/null; then
+ rm -f "${PY_ENV}/${PY_ENV_REQ}.sha256"
+ pyenv.drop > /dev/null
+ build_msg PYENV "[virtualenv] installing ${PY_ENV_REQ} into ${PY_ENV}"
+
+ "${PYTHON}" -m venv "$@" "${PY_ENV}" || exit
+ "${PY_ENV_BIN}/python" -m pip install -U "${PIP_BOILERPLATE[@]}" || exit
+
+ for i in ${PY_ENV_REQ}; do
+ pip_req=( "${pip_req[@]}" "-r" "$i" )
+ done
+
+ (
+ [ "$VERBOSE" = "1" ] && set -x
+ # shellcheck disable=SC2086
+ "${PY_ENV_BIN}/python" -m pip install "${pip_req[@]}" \
+ && sha256sum ${PY_ENV_REQ} > "${PY_ENV}/requirements.sha256"
+ )
+ fi
+ pyenv.OK
+}
+
+_pyenv_OK=''
+pyenv.OK() {
+
+ # probes if pyenv exists and runs the script from pyenv.check
+
+ [ "$_pyenv_OK" == "OK" ] && return 0
+
+ if [ ! -f "${PY_ENV_BIN}/python" ]; then
+ build_msg PYENV "[virtualenv] missing ${PY_ENV_BIN}/python"
+ return 1
+ fi
+
+ if [ ! -f "${PY_ENV}/requirements.sha256" ] \
+ || ! sha256sum --check --status <"${PY_ENV}/requirements.sha256" 2>/dev/null; then
+ build_msg PYENV "[virtualenv] requirements.sha256 failed"
+ sed 's/^/ [virtualenv] - /' <"${PY_ENV}/requirements.sha256"
+ return 1
+ fi
+
+ pyenv.check \
+ | "${PY_ENV_BIN}/python" 2>&1 \
+ | prefix_stdout "${_Blue}PYENV ${_creset}[check] "
+
+ local err=${PIPESTATUS[1]}
+ if [ "$err" -ne "0" ]; then
+ build_msg PYENV "[check] python test failed"
+ return "$err"
+ fi
+
+ build_msg PYENV "OK"
+ _pyenv_OK="OK"
+ return 0
+}
+
+pyenv.drop() {
+
+ build_msg PYENV "[virtualenv] drop ${PY_ENV}"
+ rm -rf "${PY_ENV}"
+ _pyenv_OK=''
+
+}
+
+pyenv.check() {
+
+ # Prompts a python script with additional checks. Used by pyenv.OK to check
+ # if virtualenv is ready to install python objects. This function should be
+ # overwritten by the application script.
+
+ local imp=""
+
+ for i in "${PIP_BOILERPLATE[@]}"; do
+ imp="$imp, $i"
+ done
+
+ cat <<EOF
+import ${imp#,*}
+
+EOF
+}
+
+pyenv.install() {
+
+ if ! pyenv.OK; then
+ py.clean > /dev/null
+ fi
+ if ! pyenv.install.OK > /dev/null; then
+ build_msg PYENV "[install] ${PYOBJECTS}"
+ if ! pyenv.OK >/dev/null; then
+ pyenv
+ fi
+ for i in ${PYOBJECTS}; do
+ build_msg PYENV "[install] pip install -e '$i${PY_SETUP_EXTRAS}'"
+ "${PY_ENV_BIN}/python" -m pip install -e "$i${PY_SETUP_EXTRAS}"
+ done
+ fi
+ pyenv.install.OK
+}
+
+_pyenv_install_OK=''
+pyenv.install.OK() {
+
+ [ "$_pyenv_install_OK" == "OK" ] && return 0
+
+ local imp=""
+ local err=""
+
+ if [ "." = "${PYOBJECTS}" ]; then
+ imp="import $(basename "$(pwd)")"
+ else
+ # shellcheck disable=SC2086
+ for i in ${PYOBJECTS}; do imp="$imp, $i"; done
+ imp="import ${imp#,*} "
+ fi
+ (
+ [ "$VERBOSE" = "1" ] && set -x
+ "${PY_ENV_BIN}/python" -c "import sys; sys.path.pop(0); $imp;" 2>/dev/null
+ )
+
+ err=$?
+ if [ "$err" -ne "0" ]; then
+ build_msg PYENV "[install] python installation test failed"
+ return "$err"
+ fi
+
+ build_msg PYENV "[install] OK"
+ _pyenv_install_OK="OK"
+ return 0
+}
+
+pyenv.uninstall() {
+
+ build_msg PYENV "[uninstall] ${PYOBJECTS}"
+
+ if [ "." = "${PYOBJECTS}" ]; then
+ pyenv.cmd python setup.py develop --uninstall 2>&1 \
+ | prefix_stdout "${_Blue}PYENV ${_creset}[pyenv.uninstall] "
+ else
+ pyenv.cmd python -m pip uninstall --yes ${PYOBJECTS} 2>&1 \
+ | prefix_stdout "${_Blue}PYENV ${_creset}[pyenv.uninstall] "
+ fi
+}
+
+
+pyenv.cmd() {
+ pyenv.install
+ ( set -e
+ # shellcheck source=/dev/null
+ source "${PY_ENV_BIN}/activate"
+ [ "$VERBOSE" = "1" ] && set -x
+ "$@"
+ )
+}
+
+# Sphinx doc
+# ----------
+
+GH_PAGES="build/gh-pages"
+DOCS_DIST="${DOCS_DIST:=dist/docs}"
+DOCS_BUILD="${DOCS_BUILD:=build/docs}"
+
+docs.html() {
+ build_msg SPHINX "HTML ./docs --> file://$(readlink -e "$(pwd)/$DOCS_DIST")"
+ pyenv.install
+ docs.prebuild
+ # shellcheck disable=SC2086
+ PATH="${PY_ENV_BIN}:${PATH}" pyenv.cmd sphinx-build \
+ ${SPHINX_VERBOSE} ${SPHINXOPTS} \
+ -b html -c ./docs -d "${DOCS_BUILD}/.doctrees" ./docs "${DOCS_DIST}"
+ dump_return $?
+}
+
+docs.live() {
+ build_msg SPHINX "autobuild ./docs --> file://$(readlink -e "$(pwd)/$DOCS_DIST")"
+ pyenv.install
+ docs.prebuild
+ # shellcheck disable=SC2086
+ PATH="${PY_ENV_BIN}:${PATH}" pyenv.cmd sphinx-autobuild \
+ ${SPHINX_VERBOSE} ${SPHINXOPTS} --open-browser --host 0.0.0.0 \
+ -b html -c ./docs -d "${DOCS_BUILD}/.doctrees" ./docs "${DOCS_DIST}"
+ dump_return $?
+}
+
+docs.clean() {
+ build_msg CLEAN "docs -- ${DOCS_BUILD} ${DOCS_DIST}"
+ # shellcheck disable=SC2115
+ rm -rf "${GH_PAGES}" "${DOCS_BUILD}" "${DOCS_DIST}"
+ dump_return $?
+}
+
+docs.prebuild() {
+ # Dummy function to run some actions before sphinx-doc build gets started.
+ # This finction needs to be overwritten by the application script.
+ true
+ dump_return $?
+}
+
+# shellcheck disable=SC2155
+docs.gh-pages() {
+
+ # The commit history in the gh-pages branch makes no sense, the history only
+ # inflates the repository unnecessarily. Therefore a *new orphan* branch
+ # is created each time we deploy on the gh-pages branch.
+
+ docs.clean
+ docs.prebuild
+ docs.html
+
+ [ "$VERBOSE" = "1" ] && set -x
+ local head="$(git rev-parse HEAD)"
+ local branch="$(git name-rev --name-only HEAD)"
+ local remote="$(git config branch."${branch}".remote)"
+ local remote_url="$(git config remote."${remote}".url)"
+
+ # prepare the *orphan* gh-pages working tree
+ (
+ git worktree remove -f "${GH_PAGES}"
+ git branch -D gh-pages
+ ) &> /dev/null || true
+ git worktree add --no-checkout "${GH_PAGES}" origin/master
+
+ pushd "${GH_PAGES}" &> /dev/null
+ git checkout --orphan gh-pages
+ git rm -rfq .
+ popd &> /dev/null
+
+ cp -r "${DOCS_DIST}"/* "${GH_PAGES}"/
+ touch "${GH_PAGES}/.nojekyll"
+ cat > "${GH_PAGES}/404.html" <<EOF
+<html><head><META http-equiv='refresh' content='0;URL=index.html'></head></html>
+EOF
+
+ pushd "${GH_PAGES}" &> /dev/null
+ git add --all .
+ git commit -q -m "gh-pages build from: ${branch}@${head} (${remote_url})"
+ git push -f "${remote}" gh-pages
+ popd &> /dev/null
+
+ set +x
+ build_msg GH-PAGES "deployed"
+}
+
+# golang
+# ------
+
+go_is_available() {
+
+ # usage: go_is_available $SERVICE_USER && echo "go is installed!"
+
+ sudo -i -u "${1}" which go &>/dev/null
+}
+
+install_go() {
+
+ # usage: install_go "${GO_PKG_URL}" "${GO_TAR}" "${SERVICE_USER}"
+
+ local _svcpr=" ${_Yellow}|${3}|${_creset} "
+
+ rst_title "Install Go in user's HOME" section
+
+ rst_para "download and install go binary .."
+ cache_download "${1}" "${2}"
+
+ tee_stderr 0.1 <<EOF | sudo -i -u "${3}" | prefix_stdout "$_svcpr"
+echo \$PATH
+echo \$GOPATH
+mkdir -p \$HOME/local
+rm -rf \$HOME/local/go
+tar -C \$HOME/local -xzf ${CACHE}/${2}
+EOF
+ sudo -i -u "${3}" <<EOF | prefix_stdout
+! which go >/dev/null && echo "ERROR - Go Installation not found in PATH!?!"
+which go >/dev/null && go version && echo "congratulations -- Go installation OK :)"
+EOF
+}
+
+# system accounts
+# ---------------
+
+service_account_is_available() {
+
+ # usage: service_account_is_available "$SERVICE_USER" && echo "OK"
+
+ sudo -i -u "$1" echo \$HOME &>/dev/null
+}
+
+drop_service_account() {
+
+ # usage: drop_service_account "${SERVICE_USER}"
+
+ rst_title "Drop ${1} HOME" section
+ if ask_yn "Do you really want to drop ${1} home folder?"; then
+ userdel -r -f "${1}" 2>&1 | prefix_stdout
+ else
+ rst_para "Leave HOME folder $(du -sh "${1}") unchanged."
+ fi
+}
+
+interactive_shell(){
+
+ # usage: interactive_shell "${SERVICE_USER}"
+
+ echo -e "// exit with [${_BCyan}CTRL-D${_creset}]"
+ sudo -H -u "${1}" -i
+}
+
+
+# systemd
+# -------
+
+SYSTEMD_UNITS="${SYSTEMD_UNITS:-/lib/systemd/system}"
+
+systemd_install_service() {
+
+ # usage: systemd_install_service "${SERVICE_NAME}" "${SERVICE_SYSTEMD_UNIT}"
+
+ rst_title "Install System-D Unit ${1}" section
+ echo
+ install_template "${2}" root root 644
+ wait_key
+ systemd_activate_service "${1}"
+}
+
+systemd_remove_service() {
+
+ # usage: systemd_remove_service "${SERVICE_NAME}" "${SERVICE_SYSTEMD_UNIT}"
+
+ if ! ask_yn "Do you really want to deinstall systemd unit ${1}?"; then
+ return 42
+ fi
+ systemd_deactivate_service "${1}"
+ rm "${2}" 2>&1 | prefix_stdout
+}
+
+systemd_activate_service() {
+
+ # usage: systemd_activate_service "${SERVICE_NAME}"
+
+ rst_title "Activate ${1} (service)" section
+ echo
+ tee_stderr <<EOF | bash 2>&1
+systemctl enable ${1}.service
+systemctl restart ${1}.service
+EOF
+ tee_stderr <<EOF | bash 2>&1
+systemctl status --no-pager ${1}.service
+EOF
+}
+
+systemd_deactivate_service() {
+
+ # usage: systemd_deactivate_service "${SERVICE_NAME}"
+
+ rst_title "De-Activate ${1} (service)" section
+ echo
+ tee_stderr <<EOF | bash 2>&1 | prefix_stdout
+systemctl stop ${1}.service
+systemctl disable ${1}.service
+EOF
+}
+
+systemd_restart_service() {
+
+ # usage: systemd_restart_service "${SERVICE_NAME}"
+
+ rst_title "Restart ${1} (service)" section
+ echo
+ tee_stderr <<EOF | bash 2>&1
+systemctl restart ${1}.service
+EOF
+ tee_stderr <<EOF | bash 2>&1
+systemctl status --no-pager ${1}.service
+EOF
+}
+
+
+# nginx
+# -----
+
+nginx_distro_setup() {
+ # shellcheck disable=SC2034
+
+ NGINX_DEFAULT_SERVER=/etc/nginx/nginx.conf
+
+ # Including *location* directives from a dedicated config-folder into the
+ # server directive is, what fedora and centos (already) does.
+ NGINX_APPS_ENABLED="/etc/nginx/default.d"
+
+ # We add a apps-available folder and linking configurations into the
+ # NGINX_APPS_ENABLED folder. See also nginx_include_apps_enabled().
+ NGINX_APPS_AVAILABLE="/etc/nginx/default.apps-available"
+
+ case $DIST_ID-$DIST_VERS in
+ ubuntu-*|debian-*)
+ NGINX_PACKAGES="nginx"
+ NGINX_DEFAULT_SERVER=/etc/nginx/sites-available/default
+ ;;
+ arch-*)
+ NGINX_PACKAGES="nginx-mainline"
+ ;;
+ fedora-*|centos-7)
+ NGINX_PACKAGES="nginx"
+ ;;
+ *)
+ err_msg "$DIST_ID-$DIST_VERS: nginx not yet implemented"
+ ;;
+ esac
+}
+nginx_distro_setup
+
+install_nginx(){
+ info_msg "installing nginx ..."
+ pkg_install "${NGINX_PACKAGES}"
+ case $DIST_ID-$DIST_VERS in
+ arch-*|fedora-*|centos-7)
+ systemctl enable nginx
+ systemctl start nginx
+ ;;
+ esac
+}
+
+nginx_is_installed() {
+ command -v nginx &>/dev/null
+}
+
+nginx_reload() {
+
+ info_msg "reload nginx .."
+ echo
+ if ! nginx -t; then
+ err_msg "testing nginx configuration failed"
+ return 42
+ fi
+ systemctl restart nginx
+}
+
+nginx_install_app() {
+
+ # usage: nginx_install_app [<template option> ...] <myapp.conf>
+ #
+ # <template option>: see install_template
+
+ local template_opts=()
+ local pos_args=("$0")
+
+ for i in "$@"; do
+ case $i in
+ -*) template_opts+=("$i");;
+ *) pos_args+=("$i");;
+ esac
+ done
+
+ nginx_include_apps_enabled "${NGINX_DEFAULT_SERVER}"
+
+ install_template "${template_opts[@]}" \
+ "${NGINX_APPS_AVAILABLE}/${pos_args[1]}" \
+ root root 644
+ nginx_enable_app "${pos_args[1]}"
+ info_msg "installed nginx app: ${pos_args[1]}"
+}
+
+nginx_include_apps_enabled() {
+
+ # Add the *NGINX_APPS_ENABLED* infrastruture to a nginx server block. Such
+ # infrastruture is already known from fedora and centos, including apps (location
+ # directives) from the /etc/nginx/default.d folder into the *default* nginx
+ # server.
+
+ # usage: nginx_include_apps_enabled <config-file>
+ #
+ # config-file: Config file with server directive in.
+
+ [[ -z $1 ]] && die_caller 42 "missing argument <config-file>"
+ local server_conf="$1"
+
+ # include /etc/nginx/default.d/*.conf;
+ local include_directive="include ${NGINX_APPS_ENABLED}/*.conf;"
+ local include_directive_re="^\s*include ${NGINX_APPS_ENABLED}/\*\.conf;"
+
+ info_msg "checking existence: '${include_directive}' in file ${server_conf}"
+ if grep "${include_directive_re}" "${server_conf}"; then
+ info_msg "OK, already exists."
+ return
+ fi
+
+ info_msg "add missing directive: '${include_directive}'"
+ cp "${server_conf}" "${server_conf}.bak"
+
+ (
+ local line
+ local stage=0
+ while IFS= read -r line
+ do
+ echo "$line"
+ if [[ $stage = 0 ]]; then
+ if [[ $line =~ ^[[:space:]]*server*[[:space:]]*\{ ]]; then
+ stage=1
+ fi
+ fi
+
+ if [[ $stage = 1 ]]; then
+ echo " # Load configuration files for the default server block."
+ echo " $include_directive"
+ echo ""
+ stage=2
+ fi
+ done < "${server_conf}.bak"
+ ) > "${server_conf}"
+
+}
+
+nginx_remove_app() {
+
+ # usage: nginx_remove_app <myapp.conf>
+
+ info_msg "remove nginx app: $1"
+ nginx_dissable_app "$1"
+ rm -f "${NGINX_APPS_AVAILABLE}/$1"
+}
+
+nginx_enable_app() {
+
+ # usage: nginx_enable_app <myapp.conf>
+
+ local CONF="$1"
+
+ info_msg "enable nginx app: ${CONF}"
+ mkdir -p "${NGINX_APPS_ENABLED}"
+ rm -f "${NGINX_APPS_ENABLED}/${CONF}"
+ ln -s "${NGINX_APPS_AVAILABLE}/${CONF}" "${NGINX_APPS_ENABLED}/${CONF}"
+ nginx_reload
+}
+
+nginx_dissable_app() {
+
+ # usage: nginx_disable_app <myapp.conf>
+
+ local CONF="$1"
+
+ info_msg "disable nginx app: ${CONF}"
+ rm -f "${NGINX_APPS_ENABLED}/${CONF}"
+ nginx_reload
+}
+
+
+# Apache
+# ------
+
+apache_distro_setup() {
+ # shellcheck disable=SC2034
+ case $DIST_ID-$DIST_VERS in
+ ubuntu-*|debian-*)
+ # debian uses the /etc/apache2 path, while other distros use
+ # the apache default at /etc/httpd
+ APACHE_SITES_AVAILABLE="/etc/apache2/sites-available"
+ APACHE_SITES_ENABLED="/etc/apache2/sites-enabled"
+ APACHE_MODULES="/usr/lib/apache2/modules"
+ APACHE_PACKAGES="apache2"
+ ;;
+ arch-*)
+ APACHE_SITES_AVAILABLE="/etc/httpd/sites-available"
+ APACHE_SITES_ENABLED="/etc/httpd/sites-enabled"
+ APACHE_MODULES="modules"
+ APACHE_PACKAGES="apache"
+ ;;
+ fedora-*|centos-7)
+ APACHE_SITES_AVAILABLE="/etc/httpd/sites-available"
+ APACHE_SITES_ENABLED="/etc/httpd/sites-enabled"
+ APACHE_MODULES="modules"
+ APACHE_PACKAGES="httpd"
+ ;;
+ *)
+ err_msg "$DIST_ID-$DIST_VERS: apache not yet implemented"
+ ;;
+ esac
+}
+
+apache_distro_setup
+
+install_apache(){
+ info_msg "installing apache ..."
+ pkg_install "$APACHE_PACKAGES"
+ case $DIST_ID-$DIST_VERS in
+ arch-*|fedora-*|centos-7)
+ if ! grep "IncludeOptional sites-enabled" "/etc/httpd/conf/httpd.conf"; then
+ echo "IncludeOptional sites-enabled/*.conf" >> "/etc/httpd/conf/httpd.conf"
+ fi
+ systemctl enable httpd
+ systemctl start httpd
+ ;;
+ esac
+}
+
+apache_is_installed() {
+ case $DIST_ID-$DIST_VERS in
+ ubuntu-*|debian-*) (command -v apachectl) &>/dev/null;;
+ arch-*) (command -v httpd) &>/dev/null;;
+ fedora-*|centos-7) (command -v httpd) &>/dev/null;;
+ esac
+}
+
+apache_reload() {
+
+ info_msg "reload apache .."
+ echo
+ case $DIST_ID-$DIST_VERS in
+ ubuntu-*|debian-*)
+ sudo -H apachectl configtest
+ sudo -H systemctl force-reload apache2
+ ;;
+ arch-*|fedora-*|centos-7)
+ sudo -H httpd -t
+ sudo -H systemctl force-reload httpd
+ ;;
+ esac
+}
+
+apache_install_site() {
+
+ # usage: apache_install_site [<template option> ...] <mysite.conf>
+ #
+ # <template option>: see install_template
+
+ local template_opts=()
+ local pos_args=("$0")
+
+ for i in "$@"; do
+ case $i in
+ -*) template_opts+=("$i");;
+ *) pos_args+=("$i");;
+ esac
+ done
+
+ install_template "${template_opts[@]}" \
+ "${APACHE_SITES_AVAILABLE}/${pos_args[1]}" \
+ root root 644
+ apache_enable_site "${pos_args[1]}"
+ info_msg "installed apache site: ${pos_args[1]}"
+}
+
+apache_remove_site() {
+
+ # usage: apache_remove_site <mysite.conf>
+
+ info_msg "remove apache site: $1"
+ apache_dissable_site "$1"
+ rm -f "${APACHE_SITES_AVAILABLE}/$1"
+}
+
+apache_enable_site() {
+
+ # usage: apache_enable_site <mysite.conf>
+
+ local CONF="$1"
+
+ info_msg "enable apache site: ${CONF}"
+
+ case $DIST_ID-$DIST_VERS in
+ ubuntu-*|debian-*)
+ sudo -H a2ensite -q "${CONF}"
+ ;;
+ arch-*)
+ mkdir -p "${APACHE_SITES_ENABLED}"
+ rm -f "${APACHE_SITES_ENABLED}/${CONF}"
+ ln -s "${APACHE_SITES_AVAILABLE}/${CONF}" "${APACHE_SITES_ENABLED}/${CONF}"
+ ;;
+ fedora-*|centos-7)
+ mkdir -p "${APACHE_SITES_ENABLED}"
+ rm -f "${APACHE_SITES_ENABLED}/${CONF}"
+ ln -s "${APACHE_SITES_AVAILABLE}/${CONF}" "${APACHE_SITES_ENABLED}/${CONF}"
+ ;;
+ esac
+ apache_reload
+}
+
+apache_dissable_site() {
+
+ # usage: apache_disable_site <mysite.conf>
+
+ local CONF="$1"
+
+ info_msg "disable apache site: ${CONF}"
+
+ case $DIST_ID-$DIST_VERS in
+ ubuntu-*|debian-*)
+ sudo -H a2dissite -q "${CONF}"
+ ;;
+ arch-*)
+ rm -f "${APACHE_SITES_ENABLED}/${CONF}"
+ ;;
+ fedora-*|centos-7)
+ rm -f "${APACHE_SITES_ENABLED}/${CONF}"
+ ;;
+ esac
+ apache_reload
+}
+
+# uWSGI
+# -----
+
+uWSGI_SETUP="${uWSGI_SETUP:=/etc/uwsgi}"
+uWSGI_USER=
+uWSGI_GROUP=
+
+# How distros manage uWSGI apps is very different. From uWSGI POV read:
+# - https://uwsgi-docs.readthedocs.io/en/latest/Management.html
+
+uWSGI_distro_setup() {
+ case $DIST_ID-$DIST_VERS in
+ ubuntu-*|debian-*)
+ # init.d --> /usr/share/doc/uwsgi/README.Debian.gz
+ # For uWSGI debian uses the LSB init process, this might be changed
+ # one day, see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=833067
+ uWSGI_APPS_AVAILABLE="${uWSGI_SETUP}/apps-available"
+ uWSGI_APPS_ENABLED="${uWSGI_SETUP}/apps-enabled"
+ uWSGI_PACKAGES="uwsgi"
+ ;;
+ arch-*)
+ # systemd --> /usr/lib/systemd/system/uwsgi@.service
+ # For uWSGI archlinux uses systemd template units, see
+ # - http://0pointer.de/blog/projects/instances.html
+ # - https://uwsgi-docs.readthedocs.io/en/latest/Systemd.html#one-service-per-app-in-systemd
+ uWSGI_APPS_AVAILABLE="${uWSGI_SETUP}/apps-archlinux"
+ uWSGI_APPS_ENABLED="${uWSGI_SETUP}"
+ uWSGI_PACKAGES="uwsgi"
+ ;;
+ fedora-*|centos-7)
+ # systemd --> /usr/lib/systemd/system/uwsgi.service
+ # The unit file starts uWSGI in emperor mode (/etc/uwsgi.ini), see
+ # - https://uwsgi-docs.readthedocs.io/en/latest/Emperor.html
+ uWSGI_APPS_AVAILABLE="${uWSGI_SETUP}/apps-available"
+ uWSGI_APPS_ENABLED="${uWSGI_SETUP}.d"
+ uWSGI_PACKAGES="uwsgi"
+ uWSGI_USER="uwsgi"
+ uWSGI_GROUP="uwsgi"
+ ;;
+ *)
+ err_msg "$DIST_ID-$DIST_VERS: uWSGI not yet implemented"
+ ;;
+esac
+}
+
+uWSGI_distro_setup
+
+install_uwsgi(){
+ info_msg "installing uwsgi ..."
+ pkg_install "$uWSGI_PACKAGES"
+ case $DIST_ID-$DIST_VERS in
+ fedora-*|centos-7)
+ # enable & start should be called once at uWSGI installation time
+ systemctl enable uwsgi
+ systemctl restart uwsgi
+ ;;
+ esac
+}
+
+uWSGI_restart() {
+
+ # usage: uWSGI_restart() <myapp.ini>
+
+ local CONF="$1"
+
+ [[ -z $CONF ]] && die_caller 42 "missing argument <myapp.ini>"
+ info_msg "restart uWSGI service"
+ case $DIST_ID-$DIST_VERS in
+ ubuntu-*|debian-*)
+ # the 'service' method seems broken in that way, that it (re-)starts
+ # the whole uwsgi process.
+ service uwsgi restart "${CONF%.*}"
+ ;;
+ arch-*)
+ # restart systemd template instance
+ if uWSGI_app_available "${CONF}"; then
+ systemctl restart "uwsgi@${CONF%.*}"
+ else
+ info_msg "[uWSGI:systemd-template] ${CONF} not installed (no need to restart)"
+ fi
+ ;;
+ fedora-*|centos-7)
+ # in emperor mode, just touch the file to restart
+ if uWSGI_app_enabled "${CONF}"; then
+ touch "${uWSGI_APPS_ENABLED}/${CONF}"
+ # it seems, there is a polling time in between touch and restart
+ # of the service.
+ sleep 3
+ else
+ info_msg "[uWSGI:emperor] ${CONF} not installed (no need to restart)"
+ fi
+ ;;
+ *)
+ err_msg "$DIST_ID-$DIST_VERS: uWSGI not yet implemented"
+ return 42
+ ;;
+ esac
+}
+
+uWSGI_prepare_app() {
+
+ # usage: uWSGI_prepare_app <myapp.ini>
+
+ [[ -z $1 ]] && die_caller 42 "missing argument <myapp.ini>"
+
+ local APP="${1%.*}"
+
+ case $DIST_ID-$DIST_VERS in
+ fedora-*|centos-7)
+ # in emperor mode, the uwsgi user is the owner of the sockets
+ info_msg "prepare (uwsgi:uwsgi) /run/uwsgi/app/${APP}"
+ mkdir -p "/run/uwsgi/app/${APP}"
+ chown -R "uwsgi:uwsgi" "/run/uwsgi/app/${APP}"
+ ;;
+ *)
+ info_msg "prepare (${SERVICE_USER}:${SERVICE_GROUP}) /run/uwsgi/app/${APP}"
+ mkdir -p "/run/uwsgi/app/${APP}"
+ chown -R "${SERVICE_USER}:${SERVICE_GROUP}" "/run/uwsgi/app/${APP}"
+ ;;
+ esac
+}
+
+
+uWSGI_app_available() {
+ # usage: uWSGI_app_available <myapp.ini>
+ local CONF="$1"
+
+ [[ -z $CONF ]] && die_caller 42 "missing argument <myapp.ini>"
+ [[ -f "${uWSGI_APPS_AVAILABLE}/${CONF}" ]]
+}
+
+uWSGI_install_app() {
+
+ # usage: uWSGI_install_app [<template option> ...] <myapp.ini>
+ #
+ # <template option>: see install_template
+
+ local pos_args=("$0")
+
+ for i in "$@"; do
+ case $i in
+ -*) template_opts+=("$i");;
+ *) pos_args+=("$i");;
+ esac
+ done
+ uWSGI_prepare_app "${pos_args[1]}"
+ mkdir -p "${uWSGI_APPS_AVAILABLE}"
+ install_template "${template_opts[@]}" \
+ "${uWSGI_APPS_AVAILABLE}/${pos_args[1]}" \
+ root root 644
+ uWSGI_enable_app "${pos_args[1]}"
+ uWSGI_restart "${pos_args[1]}"
+ info_msg "uWSGI app: ${pos_args[1]} is installed"
+}
+
+uWSGI_remove_app() {
+
+ # usage: uWSGI_remove_app <myapp.ini>
+
+ local CONF="$1"
+
+ [[ -z $CONF ]] && die_caller 42 "missing argument <myapp.ini>"
+ info_msg "remove uWSGI app: ${CONF}"
+ uWSGI_disable_app "${CONF}"
+ uWSGI_restart "${CONF}"
+ rm -f "${uWSGI_APPS_AVAILABLE}/${CONF}"
+}
+
+uWSGI_app_enabled() {
+ # usage: uWSGI_app_enabled <myapp.ini>
+
+ local exit_val=0
+ local CONF="$1"
+
+ [[ -z $CONF ]] && die_caller 42 "missing argument <myapp.ini>"
+ case $DIST_ID-$DIST_VERS in
+ ubuntu-*|debian-*)
+ [[ -f "${uWSGI_APPS_ENABLED}/${CONF}" ]]
+ exit_val=$?
+ ;;
+ arch-*)
+ systemctl -q is-enabled "uwsgi@${CONF%.*}"
+ exit_val=$?
+ ;;
+ fedora-*|centos-7)
+ [[ -f "${uWSGI_APPS_ENABLED}/${CONF}" ]]
+ exit_val=$?
+ ;;
+ *)
+ # FIXME
+ err_msg "$DIST_ID-$DIST_VERS: uWSGI not yet implemented"
+ exit_val=1
+ ;;
+ esac
+ return $exit_val
+}
+
+# shellcheck disable=SC2164
+uWSGI_enable_app() {
+
+ # usage: uWSGI_enable_app <myapp.ini>
+
+ local CONF="$1"
+
+ [[ -z $CONF ]] && die_caller 42 "missing argument <myapp.ini>"
+ case $DIST_ID-$DIST_VERS in
+ ubuntu-*|debian-*)
+ mkdir -p "${uWSGI_APPS_ENABLED}"
+ rm -f "${uWSGI_APPS_ENABLED}/${CONF}"
+ ln -s "${uWSGI_APPS_AVAILABLE}/${CONF}" "${uWSGI_APPS_ENABLED}/${CONF}"
+ info_msg "enabled uWSGI app: ${CONF} (restart required)"
+ ;;
+ arch-*)
+ mkdir -p "${uWSGI_APPS_ENABLED}"
+ rm -f "${uWSGI_APPS_ENABLED}/${CONF}"
+ ln -s "${uWSGI_APPS_AVAILABLE}/${CONF}" "${uWSGI_APPS_ENABLED}/${CONF}"
+ systemctl enable "uwsgi@${CONF%.*}"
+ info_msg "enabled uWSGI app: ${CONF} (restart required)"
+ ;;
+ fedora-*|centos-7)
+ mkdir -p "${uWSGI_APPS_ENABLED}"
+ rm -f "${uWSGI_APPS_ENABLED}/${CONF}"
+ ln -s "${uWSGI_APPS_AVAILABLE}/${CONF}" "${uWSGI_APPS_ENABLED}/${CONF}"
+ chown "${uWSGI_USER}:${uWSGI_GROUP}" "${uWSGI_APPS_ENABLED}/${CONF}"
+ info_msg "enabled uWSGI app: ${CONF}"
+ ;;
+ *)
+ # FIXME
+ err_msg "$DIST_ID-$DIST_VERS: uWSGI not yet implemented"
+ ;;
+ esac
+}
+
+uWSGI_disable_app() {
+
+ # usage: uWSGI_disable_app <myapp.ini>
+
+ local CONF="$1"
+
+ [[ -z $CONF ]] && die_caller 42 "missing argument <myapp.ini>"
+ case $DIST_ID-$DIST_VERS in
+ ubuntu-*|debian-*)
+ service uwsgi stop "${CONF%.*}"
+ rm -f "${uWSGI_APPS_ENABLED}/${CONF}"
+ info_msg "disabled uWSGI app: ${CONF} (restart uWSGI required)"
+ ;;
+ arch-*)
+ systemctl stop "uwsgi@${CONF%.*}"
+ systemctl disable "uwsgi@${CONF%.*}"
+ rm -f "${uWSGI_APPS_ENABLED}/${CONF}"
+ ;;
+ fedora-*|centos-7)
+ # in emperor mode, just remove the app.ini file
+ rm -f "${uWSGI_APPS_ENABLED}/${CONF}"
+ ;;
+ *)
+ # FIXME
+ err_msg "$DIST_ID-$DIST_VERS: uWSGI not yet implemented"
+ ;;
+ esac
+}
+
+# distro's package manager
+# ------------------------
+
+_apt_pkg_info_is_updated=0
+
+pkg_install() {
+
+ # usage: TITEL='install foobar' pkg_install foopkg barpkg
+
+ rst_title "${TITLE:-installation of packages}" section
+ echo -e "\npackage(s)::\n"
+ # shellcheck disable=SC2068
+ echo " " $@ | $FMT
+
+ if ! ask_yn "Should packages be installed?" Yn 30; then
+ return 42
+ fi
+ case $DIST_ID in
+ ubuntu|debian)
+ if [[ $_apt_pkg_info_is_updated == 0 ]]; then
+ export _apt_pkg_info_is_updated=1
+ apt update
+ fi
+ # shellcheck disable=SC2068
+ apt-get install -m -y $@
+ ;;
+ arch)
+ # shellcheck disable=SC2068
+ pacman -Sy --noconfirm $@
+ ;;
+ fedora)
+ # shellcheck disable=SC2068
+ dnf install -y $@
+ ;;
+ centos)
+ # shellcheck disable=SC2068
+ yum install -y $@
+ ;;
+ esac
+}
+
+pkg_remove() {
+
+ # usage: TITEL='remove foobar' pkg_remove foopkg barpkg
+
+ rst_title "${TITLE:-remove packages}" section
+ echo -e "\npackage(s)::\n"
+ # shellcheck disable=SC2068
+ echo " " $@ | $FMT
+
+ if ! ask_yn "Should packages be removed (purge)?" Yn 30; then
+ return 42
+ fi
+ case $DIST_ID in
+ ubuntu|debian)
+ # shellcheck disable=SC2068
+ apt-get purge --autoremove --ignore-missing -y $@
+ ;;
+ arch)
+ # shellcheck disable=SC2068
+ pacman -R --noconfirm $@
+ ;;
+ fedora)
+ # shellcheck disable=SC2068
+ dnf remove -y $@
+ ;;
+ centos)
+ # shellcheck disable=SC2068
+ yum remove -y $@
+ ;;
+ esac
+}
+
+pkg_is_installed() {
+
+ # usage: pkg_is_install foopkg || pkg_install foopkg
+
+ case $DIST_ID in
+ ubuntu|debian)
+ dpkg -l "$1" &> /dev/null
+ return $?
+ ;;
+ arch)
+ pacman -Qsq "$1" &> /dev/null
+ return $?
+ ;;
+ fedora)
+ dnf list -q --installed "$1" &> /dev/null
+ return $?
+ ;;
+ centos)
+ yum list -q --installed "$1" &> /dev/null
+ return $?
+ ;;
+ esac
+}
+
+# git tooling
+# -----------
+
+# shellcheck disable=SC2164
+git_clone() {
+
+ # usage:
+ #
+ # git_clone <url> <name> [<branch> [<user>]]
+ # git_clone <url> <path> [<branch> [<user>]]
+ #
+ # First form uses $CACHE/<name> as destination folder, second form clones
+ # into <path>. If repository is allready cloned, pull from <branch> and
+ # update working tree (if needed, the caller has to stash local changes).
+ #
+ # git clone https://github.com/searx/searx searx-src origin/master searxlogin
+ #
+
+ local url="$1"
+ local dest="$2"
+ local branch="$3"
+ local user="$4"
+ local bash_cmd="bash"
+ local remote="origin"
+
+ if [[ ! "${dest:0:1}" = "/" ]]; then
+ dest="$CACHE/$dest"
+ fi
+
+ [[ -z $branch ]] && branch=master
+ [[ -z $user ]] && [[ -n "${SUDO_USER}" ]] && user="${SUDO_USER}"
+ [[ -n $user ]] && bash_cmd="sudo -H -u $user -i"
+
+ if [[ -d "${dest}" ]] ; then
+ info_msg "already cloned: $dest"
+ tee_stderr 0.1 <<EOF | $bash_cmd 2>&1 | prefix_stdout " ${_Yellow}|$user|${_creset} "
+cd "${dest}"
+git checkout -m -B "$branch" --track "$remote/$branch"
+git pull --all
+EOF
+ else
+ info_msg "clone into: $dest"
+ tee_stderr 0.1 <<EOF | $bash_cmd 2>&1 | prefix_stdout " ${_Yellow}|$user|${_creset} "
+mkdir -p "$(dirname "$dest")"
+cd "$(dirname "$dest")"
+git clone --branch "$branch" --origin "$remote" "$url" "$(basename "$dest")"
+EOF
+ fi
+}
+
+# containers
+# ----------
+
+in_container() {
+ # Test if shell runs in a container.
+ #
+ # usage: in_container && echo "process running inside a LXC container"
+ # in_container || echo "process is not running inside a LXC container"
+ #
+ # sudo_or_exit
+ # hint: Reads init process environment, therefore root access is required!
+ # to be safe, take a look at the environment of process 1 (/sbin/init)
+ # grep -qa 'container=lxc' /proc/1/environ
+
+ # see lxc_init_container_env
+ [[ -f /.lxcenv ]]
+}
+
+LXC_ENV_FOLDER=
+if in_container; then
+ # shellcheck disable=SC2034
+ LXC_ENV_FOLDER="lxc-env/$(hostname)/"
+ PY_ENV="${LXC_ENV_FOLDER}${PY_ENV}"
+ PY_ENV_BIN="${LXC_ENV_FOLDER}${PY_ENV_BIN}"
+ PYDIST="${LXC_ENV_FOLDER}${PYDIST}"
+ PYBUILD="${LXC_ENV_FOLDER}${PYBUILD}"
+ DOCS_DIST="${LXC_ENV_FOLDER}${DOCS_DIST}"
+ DOCS_BUILD="${LXC_ENV_FOLDER}${DOCS_BUILD}"
+fi
+
+lxc_init_container_env() {
+
+ # usage: lxc_init_container_env <name>
+
+ # Create a /.lxcenv file in the root folder. Call this once after the
+ # container is inital started and before installing any boilerplate stuff.
+
+ info_msg "create /.lxcenv in container $1"
+ cat <<EOF | lxc exec "${1}" -- bash | prefix_stdout "[${_BBlue}${1}${_creset}] "
+touch "/.lxcenv"
+ls -l "/.lxcenv"
+EOF
+}
+
+# apt packages
+LXC_BASE_PACKAGES_debian="bash git build-essential python3 python3-venv"
+
+# pacman packages
+LXC_BASE_PACKAGES_arch="bash git base-devel python"
+
+# dnf packages
+LXC_BASE_PACKAGES_fedora="bash git @development-tools python"
+
+# yum packages
+LXC_BASE_PACKAGES_centos="bash git python3"
+
+case $DIST_ID in
+ ubuntu|debian) LXC_BASE_PACKAGES="${LXC_BASE_PACKAGES_debian}" ;;
+ arch) LXC_BASE_PACKAGES="${LXC_BASE_PACKAGES_arch}" ;;
+ fedora) LXC_BASE_PACKAGES="${LXC_BASE_PACKAGES_fedora}" ;;
+ centos) LXC_BASE_PACKAGES="${LXC_BASE_PACKAGES_centos}" ;;
+ *) err_msg "$DIST_ID-$DIST_VERS: pkg_install LXC_BASE_PACKAGES not yet implemented" ;;
+esac
+
+lxc_install_base_packages() {
+ info_msg "install LXC_BASE_PACKAGES in container $1"
+ case $DIST_ID in
+ centos) yum groupinstall "Development Tools" -y ;;
+ esac
+ pkg_install "${LXC_BASE_PACKAGES}"
+}
+
+
+lxc_image_copy() {
+
+ # usage: lxc_image_copy <remote image> <local image>
+ #
+ # lxc_image_copy "images:ubuntu/20.04" "ubu2004"
+
+ if lxc_image_exists "local:${LXC_SUITE[i+1]}"; then
+ info_msg "image ${LXC_SUITE[i]} already copied --> ${LXC_SUITE[i+1]}"
+ else
+ info_msg "copy image locally ${LXC_SUITE[i]} --> ${LXC_SUITE[i+1]}"
+ lxc image copy "${LXC_SUITE[i]}" local: \
+ --alias "${LXC_SUITE[i+1]}" | prefix_stdout
+ fi
+}
+
+lxc_init_container() {
+
+ # usage: lxc_init_container <image name> <container name>
+
+ local image_name="$1"
+ local container_name="$2"
+
+ if lxc info "${container_name}" &>/dev/null; then
+ info_msg "container '${container_name}' already exists"
+ else
+ info_msg "create container instance: ${container_name}"
+ lxc init "local:${image_name}" "${container_name}"
+ fi
+}
+
+lxc_exists(){
+
+ # usage: lxc_exists <name> || echo "container <name> does not exists"
+
+ lxc info "$1" &>/dev/null
+}
+
+lxc_image_exists(){
+ # usage: lxc_image_exists <alias> || echo "image <alias> does locally not exists"
+
+ lxc image info "local:$1" &>/dev/null
+
+}
+
+lxc_delete_container() {
+
+ # usage: lxc_delete_container <container-name>
+
+ if lxc info "$1" &>/dev/null; then
+ info_msg "stop & delete instance ${_BBlue}${1}${_creset}"
+ lxc stop "$1" &>/dev/null
+ lxc delete "$1" | prefix_stdout
+ else
+ warn_msg "instance '$1' does not exist / can't delete :o"
+ fi
+}
+
+lxc_delete_local_image() {
+
+ # usage: lxc_delete_local_image <container-name>
+
+ info_msg "delete image 'local:$i'"
+ lxc image delete "local:$i"
+}
+
+
+# IP
+# --
+
+global_IPs(){
+ # usage: global_IPS
+ #
+ # print list of host's SCOPE global addresses and adapters e.g::
+ #
+ # $ global_IPs
+ # enp4s0|192.168.1.127
+ # lxdbr0|10.246.86.1
+ # lxdbr0|fd42:8c58:2cd:b73f::1
+
+ ip -o addr show | sed -nr 's/[0-9]*:\s*([a-z0-9]*).*inet[6]?\s*([a-z0-9.:]*).*scope global.*/\1|\2/p'
+}
+
+primary_ip() {
+
+ case $DIST_ID in
+ arch)
+ ip -o addr show \
+ | sed -nr 's/[0-9]*:\s*([a-z0-9]*).*inet[6]?\s*([a-z0-9.:]*).*scope global.*/\2/p' \
+ | head -n 1
+ ;;
+ *) hostname -I | cut -d' ' -f1 ;;
+ esac
+}
+
+# URL
+# ---
+
+url_replace_hostname(){
+
+ # usage: url_replace_hostname <url> <new hostname>
+
+ # to replace hostname by primary IP::
+ #
+ # url_replace_hostname http://searx-ubu1604/morty $(primary_ip)
+ # http://10.246.86.250/morty
+
+ # shellcheck disable=SC2001
+ echo "$1" | sed "s|\(http[s]*://\)[^/]*\(.*\)|\1$2\2|"
+}
diff --git a/utils/lxc-searx.env b/utils/lxc-searx.env
new file mode 100644
index 0000000..6d9a48a
--- /dev/null
+++ b/utils/lxc-searx.env
@@ -0,0 +1,97 @@
+# -*- coding: utf-8; mode: sh indent-tabs-mode: nil -*-
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# shellcheck shell=bash
+
+# This file is a setup of a LXC suite. It is sourced from different context, do
+# not manipulate the environment directly, implement functions and manipulate
+# environment only is subshells!
+
+# ----------------------------------------------------------------------------
+# config
+# ----------------------------------------------------------------------------
+
+# shellcheck disable=SC2034
+LXC_SUITE_NAME="searx"
+lxc_set_suite_env() {
+ # name of https://images.linuxcontainers.org
+ export LINUXCONTAINERS_ORG_NAME="${LINUXCONTAINERS_ORG_NAME:-images}"
+ export LXC_HOST_PREFIX="${LXC_SUITE_NAME:-searx}"
+ export LXC_SUITE=(
+
+ # to disable containers, comment out lines ..
+
+ # end of standard support see https://wiki.ubuntu.com/Releases
+ "$LINUXCONTAINERS_ORG_NAME:ubuntu/18.04" "ubu1804" # April 2023
+ "$LINUXCONTAINERS_ORG_NAME:ubuntu/20.04" "ubu2004" # April 2025
+ "$LINUXCONTAINERS_ORG_NAME:ubuntu/20.10" "ubu2010" # July 2021
+
+ # EOL see https://fedoraproject.org/wiki/Releases
+ "$LINUXCONTAINERS_ORG_NAME:fedora/33" "fedora33"
+
+ # rolling releases see https://www.archlinux.org/releng/releases/
+ "$LINUXCONTAINERS_ORG_NAME:archlinux" "archlinux"
+
+ # EOL 30 June 2024
+ "$LINUXCONTAINERS_ORG_NAME:centos/7" "centos7"
+ )
+
+ PUBLIC_URL="${PUBLIC_URL:-http://$(uname -n)/searx}"
+ if in_container; then
+ # container hostnames do not have a DNS entry: use primary IP!
+ PUBLIC_URL="http://$(primary_ip)/searx"
+
+ # make GUEST's services public to the HOST
+ FILTRON_API="0.0.0.0:4005"
+ FILTRON_LISTEN="0.0.0.0:4004"
+ MORTY_LISTEN="0.0.0.0:3000"
+
+ # export LXC specific environment
+ export PUBLIC_URL FILTRON_API FILTRON_LISTEN MORTY_LISTEN
+ fi
+}
+
+lxc_suite_install_info() {
+ (
+ lxc_set_suite_env
+ cat <<EOF
+LXC suite: ${LXC_SUITE_NAME} --> ${PUBLIC_URL}
+ suite includes searx, morty & filtron
+suite images:
+$(echo " ${LOCAL_IMAGES[*]}" | $FMT)
+suite containers:
+$(echo " ${CONTAINERS[*]}" | $FMT)
+EOF
+ )
+ }
+
+lxc_suite_install() {
+ (
+ lxc_set_suite_env
+ FORCE_TIMEOUT=0
+ export FORCE_TIMEOUT
+ "${LXC_REPO_ROOT}/utils/searx.sh" install all
+ "${LXC_REPO_ROOT}/utils/morty.sh" install all
+ "${LXC_REPO_ROOT}/utils/filtron.sh" install all
+
+ rst_title "suite installation finished ($(hostname))" part
+ lxc_suite_info
+ echo
+ )
+}
+
+lxc_suite_info() {
+ (
+ lxc_set_suite_env
+ for ip in $(global_IPs) ; do
+ if [[ $ip =~ .*:.* ]]; then
+ info_msg "(${ip%|*}) IPv6: http://[${ip#*|}]"
+ else
+ # IPv4:
+ # shellcheck disable=SC2034,SC2031
+ info_msg "(${ip%|*}) filtron: http://${ip#*|}:4004/ $PUBLIC_URL"
+ info_msg "(${ip%|*}) morty: http://${ip#*|}:3000/ $PUBLIC_URL_MORTY"
+ info_msg "(${ip%|*}) docs-live: http://${ip#*|}:8080/"
+ fi
+ done
+ )
+}
diff --git a/utils/lxc.sh b/utils/lxc.sh
new file mode 100755
index 0000000..f065bf3
--- /dev/null
+++ b/utils/lxc.sh
@@ -0,0 +1,560 @@
+#!/usr/bin/env bash
+# -*- coding: utf-8; mode: sh indent-tabs-mode: nil -*-
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+# shellcheck source=utils/lib.sh
+source "$(dirname "${BASH_SOURCE[0]}")/lib.sh"
+source_dot_config
+
+# load environment of the LXC suite
+LXC_ENV="${LXC_ENV:-${REPO_ROOT}/utils/lxc-searx.env}"
+source "$LXC_ENV"
+lxc_set_suite_env
+
+# ----------------------------------------------------------------------------
+# config
+# ----------------------------------------------------------------------------
+#
+# read also:
+# - https://lxd.readthedocs.io/en/latest/
+
+LXC_HOST_PREFIX="${LXC_HOST_PREFIX:-test}"
+
+# Location in the container where all folders from HOST are mounted
+LXC_SHARE_FOLDER="/share"
+LXC_REPO_ROOT="${LXC_SHARE_FOLDER}/$(basename "${REPO_ROOT}")"
+
+ubu1804_boilerplate="
+export DEBIAN_FRONTEND=noninteractive
+apt-get update -y
+apt-get upgrade -y
+apt-get install -y git curl wget
+"
+ubu1904_boilerplate="$ubu1804_boilerplate"
+
+# shellcheck disable=SC2034
+ubu2004_boilerplate="
+$ubu1904_boilerplate
+echo 'Set disable_coredump false' >> /etc/sudo.conf
+"
+
+# shellcheck disable=SC2034
+ubu2010_boilerplate="$ubu1904_boilerplate"
+
+# shellcheck disable=SC2034
+archlinux_boilerplate="
+pacman -Syu --noconfirm
+pacman -S --noconfirm inetutils git curl wget sudo
+echo 'Set disable_coredump false' >> /etc/sudo.conf
+"
+
+# shellcheck disable=SC2034
+fedora33_boilerplate="
+dnf update -y
+dnf install -y git curl wget hostname
+echo 'Set disable_coredump false' >> /etc/sudo.conf
+"
+
+# shellcheck disable=SC2034
+centos7_boilerplate="
+yum update -y
+yum install -y git curl wget hostname sudo which
+echo 'Set disable_coredump false' >> /etc/sudo.conf
+"
+
+REMOTE_IMAGES=()
+CONTAINERS=()
+LOCAL_IMAGES=()
+
+for ((i=0; i<${#LXC_SUITE[@]}; i+=2)); do
+ REMOTE_IMAGES=("${REMOTE_IMAGES[@]}" "${LXC_SUITE[i]}")
+ CONTAINERS=("${CONTAINERS[@]}" "${LXC_HOST_PREFIX}-${LXC_SUITE[i+1]}")
+ LOCAL_IMAGES=("${LOCAL_IMAGES[@]}" "${LXC_SUITE[i+1]}")
+done
+
+HOST_USER="${SUDO_USER:-$USER}"
+HOST_USER_ID=$(id -u "${HOST_USER}")
+HOST_GROUP_ID=$(id -g "${HOST_USER}")
+
+# ----------------------------------------------------------------------------
+usage() {
+# ----------------------------------------------------------------------------
+ _cmd="$(basename "$0")"
+ cat <<EOF
+usage::
+ $_cmd build [containers|<name>]
+ $_cmd copy [images]
+ $_cmd remove [containers|<name>|images]
+ $_cmd [start|stop] [containers|<name>]
+ $_cmd show [images|suite|info|config [<name>]]
+ $_cmd cmd [--|<name>] '...'
+ $_cmd install [suite|base [<name>]]
+
+build
+ :containers: build, launch all containers and 'install base' packages
+ :<name>: build, launch container <name> and 'install base' packages
+copy:
+ :images: copy remote images of the suite into local storage
+remove
+ :containers: delete all 'containers' or only <container-name>
+ :images: delete local images of the suite
+start/stop
+ :containers: start/stop all 'containers' from the suite
+ :<name>: start/stop container <name> from suite
+show
+ :info: show info of all (or <name>) containers from LXC suite
+ :config: show config of all (or <name>) containers from the LXC suite
+ :suite: show services of all (or <name>) containers from the LXC suite
+ :images: show information of local images
+cmd
+ use single qoutes to evaluate in container's bash, e.g.: 'echo \$(hostname)'
+ -- run command '...' in all containers of the LXC suite
+ :<name>: run command '...' in container <name>
+install
+ :base: prepare LXC; install basic packages
+ :suite: install LXC ${LXC_SUITE_NAME} suite into all (or <name>) containers
+
+EOF
+ usage_containers
+ [ -n "${1+x}" ] && err_msg "$1"
+}
+
+usage_containers() {
+ lxc_suite_install_info
+ [ -n "${1+x}" ] && err_msg "$1"
+}
+
+lxd_info() {
+
+ cat <<EOF
+
+LXD is needed, to install run::
+
+ snap install lxd
+ lxd init --auto
+
+EOF
+}
+
+main() {
+
+ local exit_val
+ local _usage="unknown or missing $1 command $2"
+
+ # don't check prerequisite when in recursion
+ if [[ ! $1 == __* ]] && [[ ! $1 == --help ]]; then
+ if ! in_container; then
+ ! required_commands lxc && lxd_info && exit 42
+ fi
+ [[ -z $LXC_SUITE ]] && err_msg "missing LXC_SUITE" && exit 42
+ fi
+
+ case $1 in
+ --getenv) var="$2"; echo "${!var}"; exit 0;;
+ -h|--help) usage; exit 0;;
+
+ build)
+ sudo_or_exit
+ case $2 in
+ ${LXC_HOST_PREFIX}-*) build_container "$2" ;;
+ ''|--|containers) build_all_containers ;;
+ *) usage "$_usage"; exit 42;;
+ esac
+ ;;
+ copy)
+ case $2 in
+ ''|images) lxc_copy_images_localy;;
+ *) usage "$_usage"; exit 42;;
+ esac
+ ;;
+ remove)
+ sudo_or_exit
+ case $2 in
+ ''|--|containers) remove_containers ;;
+ images) lxc_delete_images_localy ;;
+ ${LXC_HOST_PREFIX}-*)
+ ! lxc_exists "$2" && warn_msg "container not yet exists: $2" && exit 0
+ if ask_yn "Do you really want to delete container $2"; then
+ lxc_delete_container "$2"
+ fi
+ ;;
+ *) usage "uknown or missing container <name> $2"; exit 42;;
+ esac
+ ;;
+ start|stop)
+ sudo_or_exit
+ case $2 in
+ ''|--|containers) lxc_cmd "$1" ;;
+ ${LXC_HOST_PREFIX}-*)
+ ! lxc_exists "$2" && usage_containers "unknown container: $2" && exit 42
+ info_msg "lxc $1 $2"
+ lxc "$1" "$2" | prefix_stdout "[${_BBlue}${i}${_creset}] "
+ ;;
+ *) usage "uknown or missing container <name> $2"; exit 42;;
+ esac
+ ;;
+ show)
+ sudo_or_exit
+ case $2 in
+ suite)
+ case $3 in
+ ${LXC_HOST_PREFIX}-*)
+ lxc exec -t "$3" -- "${LXC_REPO_ROOT}/utils/lxc.sh" __show suite \
+ | prefix_stdout "[${_BBlue}$3${_creset}] "
+ ;;
+ *) show_suite;;
+ esac
+ ;;
+ images) show_images ;;
+ config)
+ case $3 in
+ ${LXC_HOST_PREFIX}-*)
+ ! lxc_exists "$3" && usage_containers "unknown container: $3" && exit 42
+ lxc config show "$3" | prefix_stdout "[${_BBlue}${3}${_creset}] "
+ ;;
+ *)
+ rst_title "container configurations"
+ echo
+ lxc list "$LXC_HOST_PREFIX-"
+ echo
+ lxc_cmd config show
+ ;;
+ esac
+ ;;
+ info)
+ case $3 in
+ ${LXC_HOST_PREFIX}-*)
+ ! lxc_exists "$3" && usage_containers "unknown container: $3" && exit 42
+ lxc info "$3" | prefix_stdout "[${_BBlue}${3}${_creset}] "
+ ;;
+ *)
+ rst_title "container info"
+ echo
+ lxc_cmd info
+ ;;
+ esac
+ ;;
+ *) usage "$_usage"; exit 42;;
+ esac
+ ;;
+ __show)
+ # wrapped show commands, called once in each container
+ case $2 in
+ suite) lxc_suite_info ;;
+ esac
+ ;;
+ cmd)
+ sudo_or_exit
+ shift
+ case $1 in
+ --) shift; lxc_exec "$@" ;;
+ ${LXC_HOST_PREFIX}-*)
+ ! lxc_exists "$1" && usage_containers "unknown container: $1" && exit 42
+ local name=$1
+ shift
+ lxc_exec_cmd "${name}" "$@"
+ ;;
+ *) usage_containers "unknown container: $1" && exit 42
+ esac
+ ;;
+ install)
+ sudo_or_exit
+ case $2 in
+ suite|base)
+ case $3 in
+ ${LXC_HOST_PREFIX}-*)
+ ! lxc_exists "$3" && usage_containers "unknown container: $3" && exit 42
+ lxc_exec_cmd "$3" "${LXC_REPO_ROOT}/utils/lxc.sh" __install "$2"
+ ;;
+ ''|--) lxc_exec "${LXC_REPO_ROOT}/utils/lxc.sh" __install "$2" ;;
+ *) usage_containers "unknown container: $3" && exit 42
+ esac
+ ;;
+ *) usage "$_usage"; exit 42 ;;
+ esac
+ ;;
+ __install)
+ # wrapped install commands, called once in each container
+ # shellcheck disable=SC2119
+ case $2 in
+ suite) lxc_suite_install ;;
+ base) FORCE_TIMEOUT=0 lxc_install_base_packages ;;
+ esac
+ ;;
+ doc)
+ echo
+ echo ".. generic utils/lxc.sh documentation"
+ ;;
+ -*) usage "unknown option $1"; exit 42;;
+ *) usage "unknown or missing command $1"; exit 42;;
+ esac
+}
+
+
+build_all_containers() {
+ rst_title "Build all LXC containers of suite"
+ echo
+ usage_containers
+ lxc_copy_images_localy
+ lxc_init_all_containers
+ lxc_config_all_containers
+ lxc_boilerplate_all_containers
+ rst_title "install LXC base packages" section
+ echo
+ lxc_exec "${LXC_REPO_ROOT}/utils/lxc.sh" __install base
+ echo
+ lxc list "$LXC_HOST_PREFIX"
+}
+
+build_container() {
+ rst_title "Build container $1"
+
+ local remote_image
+ local container
+ local image
+ local boilerplate_script
+
+ for ((i=0; i<${#LXC_SUITE[@]}; i+=2)); do
+ if [ "${LXC_HOST_PREFIX}-${LXC_SUITE[i+1]}" = "$1" ]; then
+ remote_image="${LXC_SUITE[i]}"
+ container="${LXC_HOST_PREFIX}-${LXC_SUITE[i+1]}"
+ image="${LXC_SUITE[i+1]}"
+ boilerplate_script="${image}_boilerplate"
+ boilerplate_script="${!boilerplate_script}"
+ break
+ fi
+ done
+ echo
+ if [ -z "$container" ]; then
+ err_msg "container $1 unknown"
+ usage_containers
+ return 42
+ fi
+ lxc_image_copy "${remote_image}" "${image}"
+ rst_title "init container" section
+ lxc_init_container "${image}" "${container}"
+ rst_title "configure container" section
+ lxc_config_container "${container}"
+ rst_title "run LXC boilerplate scripts" section
+ lxc_install_boilerplate "${container}" "$boilerplate_script"
+ echo
+ rst_title "install LXC base packages" section
+ lxc_exec_cmd "${container}" "${LXC_REPO_ROOT}/utils/lxc.sh" __install base \
+ | prefix_stdout "[${_BBlue}${container}${_creset}] "
+ echo
+ lxc list "$container"
+}
+
+remove_containers() {
+ rst_title "Remove all LXC containers of suite"
+ rst_para "existing containers matching ${_BGreen}$LXC_HOST_PREFIX-*${_creset}"
+ echo
+ lxc list "$LXC_HOST_PREFIX-"
+ echo -en "\\n${_BRed}LXC containers to delete::${_creset}\\n\\n ${CONTAINERS[*]}\\n" | $FMT
+ local default=Ny
+ [[ $FORCE_TIMEOUT = 0 ]] && default=Yn
+ if ask_yn "Do you really want to delete these containers" $default; then
+ for i in "${CONTAINERS[@]}"; do
+ lxc_delete_container "$i"
+ done
+ fi
+ echo
+ lxc list "$LXC_HOST_PREFIX-"
+}
+
+# images
+# ------
+
+lxc_copy_images_localy() {
+ rst_title "copy images" section
+ for ((i=0; i<${#LXC_SUITE[@]}; i+=2)); do
+ lxc_image_copy "${LXC_SUITE[i]}" "${LXC_SUITE[i+1]}"
+ done
+ # lxc image list local: && wait_key
+}
+
+lxc_delete_images_localy() {
+ rst_title "Delete LXC images"
+ rst_para "local existing images"
+ echo
+ lxc image list local:
+ echo -en "\\n${_BRed}LXC images to delete::${_creset}\\n\\n ${LOCAL_IMAGES[*]}\\n"
+ if ask_yn "Do you really want to delete these images"; then
+ for i in "${LOCAL_IMAGES[@]}"; do
+ lxc_delete_local_image "$i"
+ done
+ fi
+
+ for i in $(lxc image list --format csv | grep '^,' | sed 's/,\([^,]*\).*$/\1/'); do
+ if ask_yn "Image $i has no alias, do you want to delete the image?" Yn; then
+ lxc_delete_local_image "$i"
+ fi
+ done
+
+ echo
+ lxc image list local:
+}
+
+show_images(){
+ rst_title "local images"
+ echo
+ lxc image list local:
+ echo -en "\\n${_Green}LXC suite images::${_creset}\\n\\n ${LOCAL_IMAGES[*]}\\n"
+ wait_key
+ for i in "${LOCAL_IMAGES[@]}"; do
+ if lxc_image_exists "$i"; then
+ info_msg "lxc image info ${_BBlue}${i}${_creset}"
+ lxc image info "$i" | prefix_stdout "[${_BBlue}${i}${_creset}] "
+ else
+ warn_msg "image ${_BBlue}$i${_creset} does not yet exists"
+ fi
+ done
+
+}
+
+
+# container
+# ---------
+
+show_suite(){
+ rst_title "LXC suite ($LXC_HOST_PREFIX-*)"
+ echo
+ lxc list "$LXC_HOST_PREFIX-"
+ echo
+ for i in "${CONTAINERS[@]}"; do
+ if ! lxc_exists "$i"; then
+ warn_msg "container ${_BBlue}$i${_creset} does not yet exists"
+ else
+ lxc exec -t "${i}" -- "${LXC_REPO_ROOT}/utils/lxc.sh" __show suite \
+ | prefix_stdout "[${_BBlue}${i}${_creset}] "
+ echo
+ fi
+ done
+}
+
+lxc_cmd() {
+ for i in "${CONTAINERS[@]}"; do
+ if ! lxc_exists "$i"; then
+ warn_msg "container ${_BBlue}$i${_creset} does not yet exists"
+ else
+ info_msg "lxc $* $i"
+ lxc "$@" "$i" | prefix_stdout "[${_BBlue}${i}${_creset}] "
+ fi
+ done
+}
+
+lxc_exec_cmd() {
+ local name="$1"
+ shift
+ exit_val=
+ info_msg "[${_BBlue}${name}${_creset}] ${_BGreen}${*}${_creset}"
+ lxc exec -t --cwd "${LXC_REPO_ROOT}" "${name}" -- bash -c "$*"
+ exit_val=$?
+ if [[ $exit_val -ne 0 ]]; then
+ warn_msg "[${_BBlue}${name}${_creset}] exit code (${_BRed}${exit_val}${_creset}) from ${_BGreen}${*}${_creset}"
+ else
+ info_msg "[${_BBlue}${name}${_creset}] exit code (${exit_val}) from ${_BGreen}${*}${_creset}"
+ fi
+}
+
+lxc_exec() {
+ for i in "${CONTAINERS[@]}"; do
+ if ! lxc_exists "$i"; then
+ warn_msg "container ${_BBlue}$i${_creset} does not yet exists"
+ else
+ lxc_exec_cmd "${i}" "$@" | prefix_stdout "[${_BBlue}${i}${_creset}] "
+ fi
+ done
+}
+
+lxc_init_all_containers() {
+ rst_title "init all containers" section
+
+ local image_name
+ local container_name
+
+ for ((i=0; i<${#LXC_SUITE[@]}; i+=2)); do
+ lxc_init_container "${LXC_SUITE[i+1]}" "${LXC_HOST_PREFIX}-${LXC_SUITE[i+1]}"
+ done
+}
+
+lxc_config_all_containers() {
+ rst_title "configure all containers" section
+
+ for i in "${CONTAINERS[@]}"; do
+ lxc_config_container "${i}"
+ done
+}
+
+lxc_config_container() {
+ info_msg "[${_BBlue}$1${_creset}] configure container ..."
+
+ info_msg "[${_BBlue}$1${_creset}] map uid/gid from host to container"
+ # https://lxd.readthedocs.io/en/latest/userns-idmap/#custom-idmaps
+ echo -e -n "uid $HOST_USER_ID 0\\ngid $HOST_GROUP_ID 0"\
+ | lxc config set "$1" raw.idmap -
+
+ info_msg "[${_BBlue}$1${_creset}] share ${REPO_ROOT} (repo_share) from HOST into container"
+ # https://lxd.readthedocs.io/en/latest/instances/#type-disk
+ lxc config device add "$1" repo_share disk \
+ source="${REPO_ROOT}" \
+ path="${LXC_REPO_ROOT}" &>/dev/null
+ # lxc config show "$1" && wait_key
+}
+
+lxc_boilerplate_all_containers() {
+ rst_title "run LXC boilerplate scripts" section
+
+ local boilerplate_script
+ local image_name
+
+ for ((i=0; i<${#LXC_SUITE[@]}; i+=2)); do
+
+ image_name="${LXC_SUITE[i+1]}"
+ boilerplate_script="${image_name}_boilerplate"
+ boilerplate_script="${!boilerplate_script}"
+
+ lxc_install_boilerplate "${LXC_HOST_PREFIX}-${image_name}" "$boilerplate_script"
+
+ if [[ -z "${boilerplate_script}" ]]; then
+ err_msg "[${_BBlue}${container_name}${_creset}] no boilerplate for image '${image_name}'"
+ fi
+ done
+}
+
+lxc_install_boilerplate() {
+
+ # usage: lxc_install_boilerplate <container-name> <string: shell commands ..>
+ #
+ # usage: lxc_install_boilerplate searx-archlinux "${archlinux_boilerplate}"
+
+ local container_name="$1"
+ local boilerplate_script="$2"
+
+ info_msg "[${_BBlue}${container_name}${_creset}] init .."
+ if lxc start -q "${container_name}" &>/dev/null; then
+ sleep 5 # guest needs some time to come up and get an IP
+ fi
+ lxc_init_container_env "${container_name}"
+ info_msg "[${_BBlue}${container_name}${_creset}] install /.lxcenv.mk .."
+ cat <<EOF | lxc exec "${container_name}" -- bash | prefix_stdout "[${_BBlue}${container_name}${_creset}] "
+rm -f "/.lxcenv.mk"
+ln -s "${LXC_REPO_ROOT}/utils/makefile.lxc" "/.lxcenv.mk"
+ls -l "/.lxcenv.mk"
+EOF
+
+ info_msg "[${_BBlue}${container_name}${_creset}] run LXC boilerplate scripts .."
+ if lxc start -q "${container_name}" &>/dev/null; then
+ sleep 5 # guest needs some time to come up and get an IP
+ fi
+ if [[ -n "${boilerplate_script}" ]]; then
+ echo "${boilerplate_script}" \
+ | lxc exec "${container_name}" -- bash \
+ | prefix_stdout "[${_BBlue}${container_name}${_creset}] "
+ fi
+}
+
+
+# ----------------------------------------------------------------------------
+main "$@"
+# ----------------------------------------------------------------------------
diff --git a/utils/makefile.include b/utils/makefile.include
index 716889c..40f9d33 100644
--- a/utils/makefile.include
+++ b/utils/makefile.include
@@ -1,56 +1,36 @@
# -*- coding: utf-8; mode: makefile-gmake -*-
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+ifeq (,$(wildcard /.lxcenv.mk))
+PHONY += lxc-activate lxc-purge
+lxc-activate:
+ @$(MAKE) -s -f "$$(dirname $(abspath $(lastword $(MAKEFILE_LIST))))/makefile.lxc" lxc-activate
+lxc-purge:
+ $(Q)rm -rf ./lxc-env
+else
+ include /.lxcenv.mk
+endif
+PHONY += make-help
+ifeq (,$(wildcard /.lxcenv.mk))
make-help:
+else
+make-help: lxc-help
+endif
+ @echo 'options:'
@echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build'
@echo ' make V=2 [targets] 2 => give reason for rebuild of target'
-quiet_cmd_common_clean = CLEAN $@
- cmd_common_clean = \
- rm -rf tests/build ;\
- find . -name '*.orig' -exec rm -f {} + ;\
- find . -name '*.rej' -exec rm -f {} + ;\
- find . -name '*~' -exec rm -f {} + ;\
- find . -name '*.bak' -exec rm -f {} + ;\
-
-FMT = cat
-ifeq ($(shell which fmt >/dev/null 2>&1; echo $$?), 0)
-FMT = fmt
-endif
-
-# MS-Windows
-#
-# For a minimal *make-environment*, I'am using the gnu-tools from:
-#
-# - GNU MCU Eclipse Windows Build Tools, which brings 'make', 'rm' etc.
-# https://github.com/gnu-mcu-eclipse/windows-build-tools/releases
-#
-# - git for Windows, which brings 'find', 'grep' etc.
-# https://git-scm.com/download/win
-
-
-# normpath
-#
-# System-dependent normalization of the path name
-#
-# usage: $(call normpath,/path/to/file)
-
-normpath = $1
-ifeq ($(OS),Windows_NT)
- normpath = $(subst /,\,$1)
-endif
-
-
-# stolen from linux/Makefile
-#
-
ifeq ("$(origin V)", "command line")
- KBUILD_VERBOSE = $(V)
+ VERBOSE = $(V)
endif
-ifndef KBUILD_VERBOSE
- KBUILD_VERBOSE = 0
+ifndef VERBOSE
+ VERBOSE = 0
endif
-ifeq ($(KBUILD_VERBOSE),1)
+export VERBOSE
+
+ifeq ($(VERBOSE),1)
quiet =
Q =
else
@@ -62,14 +42,8 @@ endif
#
# Convenient variables
-comma := ,
-quote := "
-#" this comment is only for emacs highlighting
squote := '
#' this comment is only for emacs highlighting
-empty :=
-space := $(empty) $(empty)
-space_escape := _-_SPACE_-_
# Find any prerequisites that is newer than target or that does not exist.
# PHONY targets skipped in both cases.
@@ -94,7 +68,7 @@ any-prereq = $(filter-out $(PHONY),$?) $(filter-out $(PHONY) $(wildcard $^),$^)
# (5) No dir/.target.cmd file (used to store command line)
# (6) No dir/.target.cmd file and target not listed in $(targets)
# This is a good hint that there is a bug in the kbuild file
-ifeq ($(KBUILD_VERBOSE),2)
+ifeq ($(VERBOSE),2)
why = \
$(if $(filter $@, $(PHONY)),- due to target is PHONY, \
$(if $(wildcard $@), \
@@ -126,3 +100,4 @@ echo-cmd = $(if $($(quiet)cmd_$(1)),echo '$(call escsq,$($(quiet)cmd_$(1)))$(ech
# printing commands
cmd = @$(echo-cmd) $(cmd_$(1))
+.PHONY: $(PHONY)
diff --git a/utils/makefile.lxc b/utils/makefile.lxc
new file mode 100644
index 0000000..95a8d43
--- /dev/null
+++ b/utils/makefile.lxc
@@ -0,0 +1,32 @@
+# -*- coding: utf-8; mode: makefile-gmake -*-
+#
+# LXC environment
+# ===============
+#
+# To activate/deactivate LXC makefile environment in a container, set/unset link
+# from root '/.lxcenv.mk' to *this* file::
+#
+# sudo make ./utils/makefile.lxc lxc-activate
+# sudo make ./utils/makefile.lxc lxc-deactivate
+
+LXC_ENV_FOLDER=lxc-env/$(shell hostname)/
+
+lxc-help::
+ @echo ' LXC: running in container LXC_ENV_FOLDER=$(LXC_ENV_FOLDER)'
+
+# If not activated, serve target 'lxc-activate' ..
+ifeq (,$(wildcard /.lxcenv.mk))
+PHONY += lxc-activate
+lxc-activate:
+ ln -s "$(abspath $(lastword $(MAKEFILE_LIST)))" "/.lxcenv.mk"
+else
+# .. and if activated, serve target 'lxc-deactivate'.
+PHONY += lxc-deactivate
+lxc-deactivate:
+ rm /.lxcenv.mk
+$(LXC_ENV_FOLDER):
+ $(Q)mkdir -p $(LXC_ENV_FOLDER)
+ $(Q)echo placeholder > $(LXC_ENV_FOLDER).placeholder
+endif
+
+.PHONY: $(PHONY)
diff --git a/utils/makefile.python b/utils/makefile.python
deleted file mode 100644
index 4aa9d6b..0000000
--- a/utils/makefile.python
+++ /dev/null
@@ -1,290 +0,0 @@
-# -*- coding: utf-8; mode: makefile-gmake -*-
-
-# list of python packages (folders) or modules (files) of this build
-PYOBJECTS ?=
-
-SITE_PYTHON ?=$(dir $(abspath $(lastword $(MAKEFILE_LIST))))site-python
-export PYTHONPATH := $(SITE_PYTHON):$$PYTHONPATH
-
-# folder where the python distribution takes place
-PYDIST ?= ./py_dist
-# folder where the python intermediate build files take place
-PYBUILD ?= ./py_build
-# python version to use
-PY ?=3
-PYTHON ?= python$(PY)
-PIP ?= pip$(PY)
-PIP_INST ?= --user
-
-# https://www.python.org/dev/peps/pep-0508/#extras
-#PY_SETUP_EXTRAS ?= \[develop,test\]
-PY_SETUP_EXTRAS ?=
-
-PYDEBUG ?= --pdb
-PYLINT_RC ?= .pylintrc
-
-TEST_FOLDER ?= ./tests
-TEST ?= .
-
-VTENV_OPTS = "--no-site-packages"
-PY_ENV = ./local/py$(PY)
-PY_ENV_BIN = $(PY_ENV)/bin
-PY_ENV_ACT = . $(PY_ENV_BIN)/activate
-
-ifeq ($(OS),Windows_NT)
- PYTHON = python
- PY_ENV_BIN = $(PY_ENV)/Scripts
- PY_ENV_ACT = $(PY_ENV_BIN)/activate
-endif
-
-ifeq ($(PYTHON),python)
- VIRTUALENV = virtualenv
-else
- VIRTUALENV = virtualenv --python=$(PYTHON)
-endif
-
-ifeq ($(KBUILD_VERBOSE),1)
- PIP_VERBOSE =
- VIRTUALENV_VERBOSE =
-else
- PIP_VERBOSE = "-q"
- VIRTUALENV_VERBOSE = "-q"
-endif
-
-python-help::
- @echo 'makefile.python:'
- @echo ' pyenv | pyenv[un]install'
- @echo ' build $(PY_ENV) & [un]install python objects'
- @echo ' targts using pyenv $(PY_ENV):'
- @echo ' pylint - run pylint *linting*'
- @echo ' pytest - run *tox* test on python objects'
- @echo ' pydebug - run tests within a PDB debug session'
- @echo ' pybuild - build python packages'
- @echo ' pyclean - clean intermediate python objects'
- @echo ' targets using system users environment:'
- @echo ' py[un]install - [un]install python objects in editable mode'
- @echo ' upload-pypi - upload $(PYDIST)/* files to PyPi'
- @echo 'options:'
- @echo ' make PY=2 [targets] => to eval targets with python 2 ($(PY))'
- @echo ' make PIP_INST= => to set/unset pip install options ($(PIP_INST))'
- @echo ' make TEST=. => choose test from $(TEST_FOLDER) (default "." runs all)'
- @echo ' make DEBUG= => target "debug": do not invoke PDB on errors'
- @echo ' make PY_SETUP_EXTRAS => also install extras_require from setup.py \[develop,test\]'
- @echo ' when using target "pydebug", set breakpoints within py-source by adding::'
- @echo ' DEBUG()'
-
-# ------------------------------------------------------------------------------
-# OS requirements
-# ------------------------------------------------------------------------------
-
-PHONY += msg-python-exe python-exe
-msg-python-exe:
- @echo "\n $(PYTHON) is required\n\n\
- Make sure you have $(PYTHON) installed, grab it from\n\
- https://www.python.org or install it from your package\n\
- manager. On debian based OS these requirements are\n\
- installed by::\n\n\
- sudo -H apt-get install $(PYTHON)\n" | $(FMT)
-
-ifeq ($(shell which $(PYTHON) >/dev/null 2>&1; echo $$?), 1)
-python-exe: msg-python-exe
- $(error The '$(PYTHON)' command was not found)
-else
-python-exe:
- @:
-endif
-
-msg-pip-exe:
- @echo "\n $(PIP) is required\n\n\
- Make sure you have updated pip installed, grab it from\n\
- https://pip.pypa.io or install it from your package\n\
- manager. On debian based OS these requirements are\n\
- installed by::\n\n\
- sudo -H apt-get install python$(PY)-pip\n" | $(FMT)
-
-ifeq ($(shell which $(PIP) >/dev/null 2>&1; echo $$?), 1)
-pip-exe: msg-pip-exe
- $(error The '$(PIP)' command was not found)
-else
-pip-exe:
- @:
-endif
-
-PHONY += msg-virtualenv-exe virtualenv-exe
-msg-virtualenv-exe:
- @echo "\n virtualenv is required\n\n\
- Make sure you have an updated virtualenv installed, grab it from\n\
- https://virtualenv.pypa.io/en/stable/installation/ or install it\n\
- via pip by::\n\n\
- pip install --user https://github.com/pypa/virtualenv/tarball/master\n" | $(FMT)
-
-ifeq ($(shell which virtualenv >/dev/null 2>&1; echo $$?), 1)
-virtualenv-exe: msg-virtualenv-exe
- $(error The 'virtualenv' command was not found)
-else
-virtualenv-exe:
- @:
-endif
-
-# ------------------------------------------------------------------------------
-# commands
-# ------------------------------------------------------------------------------
-
-# $2 path to folder with setup.py, this uses pip from the OS
-quiet_cmd_pyinstall = INSTALL $2
- cmd_pyinstall = $(PIP) $(PIP_VERBOSE) install $(PIP_INST) -e $2$(PY_SETUP_EXTRAS)
-
-# $2 path to folder with setup.py, this uses pip from pyenv (not OS!)
-quiet_cmd_pyenvinstall = PYENV install $2
- cmd_pyenvinstall = $(PY_ENV_BIN)/pip $(PIP_VERBOSE) install -e $2$(PY_SETUP_EXTRAS)
-
-# Uninstall the package. Since pip does not uninstall the no longer needed
-# depencies (something like autoremove) the depencies remain.
-
-# $2 package name to uninstall, this uses pip from the OS.
-quiet_cmd_pyuninstall = UNINSTALL $2
- cmd_pyuninstall = $(PIP) $(PIP_VERBOSE) uninstall --yes $2
-
-# $2 path to folder with setup.py, this uses pip from pyenv (not OS!)
-quiet_cmd_pyenvuninstall = PYENV uninstall $2
- cmd_pyenvuninstall = $(PY_ENV_BIN)/pip $(PIP_VERBOSE) uninstall --yes $2
-
-# $2 path to folder where virtualenv take place
-quiet_cmd_virtualenv = PYENV usage: $ source ./$@/bin/activate
- cmd_virtualenv = \
- if [ ! -d "./$(PY_ENV)" ];then \
- $(VIRTUALENV) $(VIRTUALENV_VERBOSE) $(VTENV_OPTS) $2; \
- else \
- echo "PYENV using virtualenv from $2"; \
- fi
-
-# $2 path to lint
-quiet_cmd_pylint = LINT $@
- cmd_pylint = $(PY_ENV_BIN)/pylint --rcfile $(PYLINT_RC) $2
-
-quiet_cmd_pytest = TEST $@
- cmd_pytest = $(PY_ENV_BIN)/tox -vv
-
-# setuptools, pip, easy_install its a mess full of cracks, a documentation hell
-# and broken by design ... all sucks, I really, really hate all this ... aaargh!
-#
-# About python packaging see `Python Packaging Authority`_. Most of the names
-# here are mapped to ``setup(<name1>=..., <name2>=...)`` arguments in
-# ``setup.py``. See `Packaging and distributing projects`_ about ``setup(...)``
-# arguments. If this is all new for you, start with `PyPI Quick and Dirty`_.
-#
-# Further read:
-#
-# - pythonwheels_
-# - setuptools_
-# - packaging_
-# - sdist_
-# - installing_
-#
-# .. _`Python Packaging Authority`: https://www.pypa.io
-# .. _`Packaging and distributing projects`: https://packaging.python.org/guides/distributing-packages-using-setuptools/
-# .. _`PyPI Quick and Dirty`: https://hynek.me/articles/sharing-your-labor-of-love-pypi-quick-and-dirty/
-# .. _pythonwheels: https://pythonwheels.com/
-# .. _setuptools: https://setuptools.readthedocs.io/en/latest/setuptools.html
-# .. _packaging: https://packaging.python.org/guides/distributing-packages-using-setuptools/#packaging-and-distributing-projects
-# .. _sdist: https://packaging.python.org/guides/distributing-packages-using-setuptools/#source-distributions
-# .. _bdist_wheel: https://packaging.python.org/guides/distributing-packages-using-setuptools/#pure-python-wheels
-# .. _installing: https://packaging.python.org/tutorials/installing-packages/
-#
-quiet_cmd_pybuild = BUILD $@
- cmd_pybuild = $(PY_ENV_BIN)/$(PYTHON) setup.py \
- sdist -d $(PYDIST) \
- bdist_wheel --bdist-dir $(PYBUILD) -d $(PYDIST)
-
-quiet_cmd_pyclean = CLEAN $@
-# remove 'build' folder since bdist_wheel does not care the --bdist-dir
- cmd_pyclean = \
- rm -rf $(PYDIST) $(PYBUILD) ./local ./.tox *.egg-info ;\
- find . -name '*.pyc' -exec rm -f {} + ;\
- find . -name '*.pyo' -exec rm -f {} + ;\
- find . -name __pycache__ -exec rm -rf {} +
-
-# ------------------------------------------------------------------------------
-# targets
-# ------------------------------------------------------------------------------
-
-# for installation use the pip from the OS!
-PHONY += pyinstall
-pyinstall: pip-exe
- $(call cmd,pyinstall,.)
-
-PHONY += pyuninstall
-pyuninstall: pip-exe
- $(call cmd,pyuninstall,$(PYOBJECTS))
-
-# for installation use the pip from PY_ENV (not the OS)!
-PHONY += pyenvinstall
-pyenvinstall: $(PY_ENV)
- $(call cmd,pyenvinstall,.)
-
-PHONY += pyenvuninstall
-pyenvuninstall: $(PY_ENV)
- $(call cmd,pyenvuninstall,$(PYOBJECTS))
-
-PHONY += pyclean
-pyclean:
- $(call cmd,pyclean)
-
-# to build *local* environment, python and virtualenv from the OS is needed!
-pyenv: $(PY_ENV)
-$(PY_ENV): virtualenv-exe python-exe
- $(call cmd,virtualenv,$(PY_ENV))
- @$(PY_ENV_BIN)/pip install $(PIP_VERBOSE) -r requirements.txt
-
-PHONY += pylint-exe
-pylint-exe: $(PY_ENV)
- @$(PY_ENV_BIN)/pip $(PIP_VERBOSE) install pylint
-
-PHONY += pylint
-pylint: pylint-exe
- $(call cmd,pylint,$(PYOBJECTS))
-
-PHONY += pybuild
-pybuild: $(PY_ENV)
- $(call cmd,pybuild)
-
-PHONY += pytest
-pytest: $(PY_ENV)
- $(call cmd,pytest)
-
-PHONY += pydebug
-# set breakpoint with:
-# DEBUG()
-# e.g. to run tests in debug mode in emacs use:
-# 'M-x pdb' ... 'make pydebug'
-pydebug: $(PY_ENV)
- DEBUG=$(DEBUG) $(PY_ENV_BIN)/pytest $(DEBUG) -v $(TEST_FOLDER)/$(TEST)
-
-# install / uninstall python objects into virtualenv (PYENV)
-pyenv-install: $(PY_ENV)
- @$(PY_ENV_BIN)/pip $(PIP_VERBOSE) install -e .
- @echo "ACTIVATE $(call normpath,$(PY_ENV_ACT)) "
-
-pyenv-uninstall: $(PY_ENV)
- @$(PY_ENV_BIN)/pip $(PIP_VERBOSE) uninstall --yes .
-
-# runs python interpreter from ./local/py<N>/bin/python
-pyenv-python: pyenv-install
- cd ./local; ../$(PY_ENV_BIN)/python -i
-
-# With 'dependency_links=' setuptools supports dependencies on packages hosted
-# on other reposetories then PyPi, see "Packages Not On PyPI" [1]. The big
-# drawback is, due to security reasons (I don't know where the security gate on
-# PyPi is), this feature is not supported by pip [2]. Thats why an upload to
-# PyPi is required and since uploads via setuptools is not recommended, we have
-# to imstall / use twine ... its really a mess.
-#
-# [1] http://python-packaging.readthedocs.io/en/latest/dependencies.html#packages-not-on-pypi
-# [2] https://github.com/pypa/pip/pull/1519
-
-# https://github.com/pypa/twine
-PHONY += upload-pypi
-upload-pypi: pyclean pybuild
- @$(PY_ENV_BIN)/twine upload $(PYDIST)/*
-
-.PHONY: $(PHONY)
diff --git a/utils/makefile.sphinx b/utils/makefile.sphinx
deleted file mode 100644
index 2c1922f..0000000
--- a/utils/makefile.sphinx
+++ /dev/null
@@ -1,216 +0,0 @@
-# -*- coding: utf-8; mode: makefile-gmake -*-
-
-# You can set these variables from the command line.
-SPHINXOPTS ?=
-SPHINXBUILD ?= $(PY_ENV_BIN)/sphinx-build
-SPHINX_CONF ?= conf.py
-
-DOCS_FOLDER ?= docs
-DOCS_BUILD ?= build/docs
-DOCS_DIST ?= dist/docs
-GH_PAGES ?= gh-pages
-
-BOOKS_FOLDER ?= docs
-BOOKS_DIST ?= dist/books
-
-ifeq ($(KBUILD_VERBOSE),1)
- SPHINX_VERBOSE = "-v"
-else
- SPHINX_VERBOSE =
-endif
-
-## SPHINXVERS variable
-## ===================
-##
-## .. _requirement-specifiers: https://pip.pypa.io/en/stable/reference/pip_install/#requirement-specifiers
-##
-## Sphinx version to use, when building documentation. Set this when calling
-## build target. The default value is empty (install latest), to select a
-## specific version use a requirement-specifiers_. E.g. to build your target
-## 'doc' with a select sphinx-doc_ version 1.7.9::
-##
-## make SPHINXVERS='==1.7.9' docs
-##
-## To build with latest 1.7::
-##
-## make SPHINXVERS='>=1.7,<1.8' docs
-##
-SPHINXVERS ?=
-
-docs-help:
- @echo 'makefile.sphinx:'
- @echo ' docs-clean - clean intermediate doc objects'
- @echo ' $(GH_PAGES) - create & upload github pages'
- @echo ' sphinx-pdf - run sphinx latex & pdf targets'
- echo ''
- @echo ' books/{name}.html : build only the HTML of document {name}'
- @echo ' valid values for books/{name}.html are:'
- @echo ' $(BOOKS_HTML)' | $(FMT)
- @echo ' books/{name}.pdf : build only the PDF of document {name}'
- @echo ' valid values for books/{name}.pdf are:'
- @echo ' $(BOOKS_PDF) ' | $(FMT)
-
-# ------------------------------------------------------------------------------
-# requirements
-# ------------------------------------------------------------------------------
-
-sphinx-doc: $(PY_ENV)
- @echo "PYENV installing Sphinx$(SPHINXVERS)"
- $(Q)$(PY_ENV_BIN)/pip install $(PIP_VERBOSE) 'Sphinx$(SPHINXVERS)'
-
-sphinx-live: $(PY_ENV)
- @echo "PYENV installing Sphinx$(SPHINXVERS)"
- $(Q)$(PY_ENV_BIN)/pip install $(PIP_VERBOSE) 'Sphinx$(SPHINXVERS)' sphinx-autobuild
-
-
-PHONY += msg-texlive texlive
-
-ifeq ($(shell which xelatex >/dev/null 2>&1; echo $$?), 1)
-texlive: msg-TeXLive
- $(error The 'xelatex' command was not found)
-else
-texlive:
- @:
-endif
-
-msg-texlive:
- $(Q)echo "\n\
-The TeX/PDF output and the *math* extension require TexLive and latexmk:\n\n\
- Make sure you have a updated TeXLive with XeTeX engine installed, grab it\n\
- it from https://www.tug.org/texlive or install it from your package manager.\n\n\
- Install latexmk from your package manager or visit https://ctan.org/pkg/latexmk\n\n\
- Sphinx-doc produce (Xe)LaTeX files which might use additional TeX-packages\n\
- and fonts. To process these LaTeX files, a TexLive installation with the\n\
- additional packages is required. On debian based OS these requirements\n\
- are installed by::\n\n\
- sudo -H apt-get install\n\
- latexmk\n\
- texlive-base texlive-xetex texlive-latex-recommended\n\
- texlive-extra-utils dvipng ttf-dejavu\n"
-
-# ------------------------------------------------------------------------------
-# commands
-# ------------------------------------------------------------------------------
-
-# $2 sphinx builder e.g. "html"
-# $3 path where configuration file (conf.py) is located
-# $4 sourcedir
-# $5 dest subfolder e.g. "man" for man pages at $(DOCS_DIST)/man
-
-quiet_cmd_sphinx = SPHINX $@ --> file://$(abspath $(DOCS_DIST)/$5)
- cmd_sphinx = SPHINX_CONF=$(abspath $4/$(SPHINX_CONF))\
- $(SPHINXBUILD) $(SPHINX_VERBOSE) $(SPHINXOPTS)\
- -b $2 -c $3 -d $(DOCS_BUILD)/.doctrees $4 $(DOCS_DIST)/$5
-
-quiet_cmd_sphinx_autobuild = SPHINX $@ --> file://$(abspath $(DOCS_DIST)/$5)
- cmd_sphinx_autobuild = PATH="$(PY_ENV_BIN):$(PATH)" $(PY_ENV_BIN)/sphinx-autobuild $(SPHINX_VERBOSE) --poll -B --host 0.0.0.0 --port 8080 $(SPHINXOPTS)\
- -b $2 -c $3 -d $(DOCS_BUILD)/.doctrees $4 $(DOCS_DIST)/$5
-
-quiet_cmd_sphinx_clean = CLEAN $@
- cmd_sphinx_clean = rm -rf $(DOCS_BUILD) $(DOCS_DIST) $(GH_PAGES)/* $(GH_PAGES)/.buildinfo
-
-# ------------------------------------------------------------------------------
-# targets
-# ------------------------------------------------------------------------------
-
-# build PDF of whole documentation in: $(DOCS_DIST)/pdf
-
-PHONY += sphinx-pdf
-sphinx-pdf: sphinx-latex
- $(Q)cd $(DOCS_BUILD)/latex/; make all-pdf
- $(Q)mkdir -p $(DOCS_DIST)/pdf
- $(Q)cp $(DOCS_BUILD)/latex/*.pdf $(DOCS_DIST)/pdf
- @echo "SPHINX *.pdf --> file://$(abspath $(DOCS_DIST)/pdf)"
-
-PHONY += sphinx-latex
-sphinx-latex: texlive sphinx-doc
- $(SPHINXBUILD) $(SPHINX_VERBOSE) $(SPHINXOPTS)\
- -b latex \
- -c $(DOCS_FOLDER) \
- -d $(DOCS_BUILD)/.doctrees \
- $(DOCS_FOLDER) \
- $(DOCS_BUILD)/latex
-
-# Sphinx projects, we call them *books* (what is more common). Books are
-# folders under $(BOOKS_FOLDER) containing a conf.py file. The HTML output goes
-# to folder $(BOOKS_DIST)/<name> while PDF is placed (BOOKS_DIST)/<name>/pdf
-
-BOOKS=$(patsubst $(BOOKS_FOLDER)/%/conf.py,books/%,$(wildcard $(BOOKS_FOLDER)/*/conf.py))
-
-# fine grained targets
-BOOKS_HTML = $(patsubst %,%.html,$(BOOKS))
-BOOKS_CLEAN = $(patsubst %,%.clean,$(BOOKS))
-BOOKS_LATEX = $(patsubst %,%.latex,$(BOOKS))
-BOOKS_PDF = $(patsubst %,%.pdf,$(BOOKS))
-BOOKS_LIVE = $(patsubst %,%.live,$(BOOKS))
-
-$(BOOKS_DIST):
- mkdir -p $(BOOKS_DIST)
-
-PHONY += $(BOOKS_HTML)
-$(BOOKS_HTML): sphinx-doc | $(BOOKS_DIST)
- SPHINX_CONF=$(patsubst books/%.html,%,$@)/conf.py \
- $(SPHINXBUILD) $(SPHINX_VERBOSE) $(SPHINXOPTS)\
- -b html \
- -c $(DOCS_FOLDER) \
- -d $(DOCS_BUILD)/books/$(patsubst books/%.html,%,$@)/.doctrees \
- $(patsubst books/%.html,%,$@) \
- $(BOOKS_DIST)/$(patsubst books/%.html,%,$@)
- @echo "SPHINX $@ --> file://$(abspath $(BOOKS_DIST)/$(patsubst books/%.html,%,$@))"
-
-PHONY += $(BOOKS_HTML)
-$(BOOKS_LIVE): sphinx-live | $(BOOKS_DIST)
- PATH="$(PY_ENV_BIN):$(PATH)" \
- SPHINX_CONF=$(patsubst books/%.live,%,$@)/conf.py \
- $(PY_ENV_BIN)/sphinx-autobuild --poll -B --host 0.0.0.0 --port 8080 $(SPHINX_VERBOSE) $(SPHINXOPTS)\
- -b html \
- -c $(DOCS_FOLDER) \
- -d $(DOCS_BUILD)/books/$(patsubst books/%.live,%,$@)/.doctrees \
- $(patsubst books/%.live,%,$@) \
- $(BOOKS_DIST)/$(patsubst books/%.live,%,$@)
-
-$(BOOKS_PDF): %.pdf : %.latex
- $(Q)cd $(DOCS_BUILD)/latex/$(patsubst books/%.pdf,%,$@); make all-pdf
- $(Q)mkdir -p $(BOOKS_DIST)/$(patsubst books/%.pdf,%,$@)/pdf
- $(Q)cp -v $(DOCS_BUILD)/latex/$(patsubst books/%.pdf,%,$@)/*.pdf $(BOOKS_DIST)/$(patsubst books/%.pdf,%,$@)/pdf
- @echo "SPHINX $@ --> file://$(abspath $(BOOKS_DIST)/$(patsubst books/%.pdf,%,$@))/pdf"
-
-PHONY += $(BOOKS_LATEX)
-$(BOOKS_LATEX): sphinx-doc | $(BOOKS_DIST)
- SPHINX_CONF=$(patsubst books/%.latex,%,$@)/conf.py \
- $(SPHINXBUILD) $(SPHINX_VERBOSE) $(SPHINXOPTS)\
- -b latex \
- -c $(DOCS_FOLDER) \
- -d $(DOCS_BUILD)/books/$(patsubst books/%.latex,%,$@)/.doctrees \
- $(patsubst books/%.latex,%,$@) \
- $(DOCS_BUILD)/latex/$(patsubst books/%.latex,%,$@)
- @echo "SPHINX $@ --> file://$(abspath $(DOCS_BUILD)/latex/$(patsubst books/%.latex,%,$@))"
-
-$(BOOKS_CLEAN):
- $(Q)rm -rf $(BOOKS_DIST)/$(patsubst books/%.clean,%,$@) \
- $(DOCS_BUILD)/books/$(patsubst books/%.clean,%,$@) \
- $(DOCS_BUILD)/latex/$(patsubst books/%.clean,%,$@)
-
-# github pages
-
-PHONY += $(GH_PAGES)
-$(GH_PAGES)::
- $(MAKE) docs
- [ -d "gh-pages/.git" ] || git clone $(GIT_URL) gh-pages
- -cd $(GH_PAGES); git checkout gh-pages >/dev/null
- -cd $(GH_PAGES); git pull
- -cd $(GH_PAGES); ls -A | grep -v '.git$$' | xargs rm -rf
- cp -r $(DOCS_DIST)/* $(GH_PAGES)/
- touch $(GH_PAGES)/.nojekyll
- echo "<html><head><META http-equiv='refresh' content='0;URL=index.html'></head></html>" > $(GH_PAGES)/404.html
- cd $(GH_PAGES);\
- git add --all . ;\
- git commit -m "gh-pages: updated" ;\
- git push origin gh-pages
-
-
-PHONY += docs-clean
-docs-clean: $(BOOKS_CLEAN)
- $(call cmd,sphinx_clean)
-
-.PHONY: $(PHONY)
diff --git a/utils/morty.sh b/utils/morty.sh
new file mode 100755
index 0000000..24d160b
--- /dev/null
+++ b/utils/morty.sh
@@ -0,0 +1,546 @@
+#!/usr/bin/env bash
+# -*- coding: utf-8; mode: sh indent-tabs-mode: nil -*-
+# SPDX-License-Identifier: AGPL-3.0-or-later
+
+# shellcheck source=utils/lib.sh
+source "$(dirname "${BASH_SOURCE[0]}")/lib.sh"
+# shellcheck source=utils/brand.env
+source "${REPO_ROOT}/utils/brand.env"
+source_dot_config
+SEARX_URL="${PUBLIC_URL:-http://$(uname -n)/searx}"
+source "${REPO_ROOT}/utils/lxc-searx.env"
+in_container && lxc_set_suite_env
+
+# ----------------------------------------------------------------------------
+# config
+# ----------------------------------------------------------------------------
+
+MORTY_LISTEN="${MORTY_LISTEN:-127.0.0.1:3000}"
+PUBLIC_URL_PATH_MORTY="${PUBLIC_URL_PATH_MORTY:-/morty/}"
+
+PUBLIC_URL_MORTY="${PUBLIC_URL_MORTY:-$(echo "$SEARX_URL" | sed -e's,^\(.*://[^/]*\).*,\1,g')${PUBLIC_URL_PATH_MORTY}}"
+
+# shellcheck disable=SC2034
+MORTY_TIMEOUT=5
+
+SERVICE_NAME="morty"
+SERVICE_USER="${SERVICE_USER:-${SERVICE_NAME}}"
+SERVICE_HOME_BASE="${SERVICE_HOME_BASE:-/usr/local}"
+SERVICE_HOME="${SERVICE_HOME_BASE}/${SERVICE_USER}"
+SERVICE_SYSTEMD_UNIT="${SYSTEMD_UNITS}/${SERVICE_NAME}.service"
+# shellcheck disable=SC2034
+SERVICE_GROUP="${SERVICE_USER}"
+# shellcheck disable=SC2034
+SERVICE_ENV_DEBUG=false
+
+GO_ENV="${SERVICE_HOME}/.go_env"
+GO_PKG_URL="https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz"
+GO_TAR=$(basename "$GO_PKG_URL")
+
+# shellcheck disable=SC2034
+CONFIG_FILES=()
+
+# Apache Settings
+
+APACHE_MORTY_SITE="morty.conf"
+NGINX_MORTY_SITE="morty.conf"
+
+# ----------------------------------------------------------------------------
+usage() {
+# ----------------------------------------------------------------------------
+
+ # shellcheck disable=SC1117
+ cat <<EOF
+usage::
+ $(basename "$0") shell
+ $(basename "$0") install [all|user]
+ $(basename "$0") update [morty]
+ $(basename "$0") remove [all]
+ $(basename "$0") activate [service]
+ $(basename "$0") deactivate [service]
+ $(basename "$0") inspect [service]
+ $(basename "$0") option [debug-on|debug-off|new-key]
+ $(basename "$0") apache [install|remove]
+ $(basename "$0") nginx [install|remove]
+ $(basename "$0") info [searx]
+
+shell
+ start interactive shell from user ${SERVICE_USER}
+install / remove
+ all: complete setup of morty service
+ user: add/remove service user '$SERVICE_USER' ($SERVICE_HOME)
+update morty
+ Update morty installation ($SERVICE_HOME)
+activate service
+ activate and start service daemon (systemd unit)
+deactivate service
+ stop and deactivate service daemon (systemd unit)
+inspect service
+ show service status and log
+option
+ set one of the available options
+ :new-key: set new morty key
+apache : ${PUBLIC_URL_MORTY}
+ :install: apache site with a reverse proxy (ProxyPass)
+ :remove: apache site ${APACHE_MORTY_SITE}
+nginx (${PUBLIC_URL_MORTY})
+ :install: nginx site with a reverse proxy (ProxyPass)
+ :remove: nginx site ${NGINX_MORTY_SITE}
+
+If needed, set the environment variables in the '${DOT_CONFIG#"$REPO_ROOT/"}' file::
+ PUBLIC_URL_MORTY: ${PUBLIC_URL_MORTY}
+ MORTY_LISTEN: ${MORTY_LISTEN}
+ SERVICE_USER: ${SERVICE_USER}
+EOF
+ if in_container; then
+ # in containers the service is listening on 0.0.0.0 (see lxc-searx.env)
+ for ip in $(global_IPs) ; do
+ if [[ $ip =~ .*:.* ]]; then
+ echo " container URL (IPv6): http://[${ip#*|}]:3000/"
+ else
+ # IPv4:
+ echo " container URL (IPv4): http://${ip#*|}:3000/"
+ fi
+ done
+ fi
+ echo
+ info_searx
+
+ [[ -n ${1} ]] && err_msg "$1"
+}
+
+info_searx() {
+ # shellcheck disable=SC1117
+ cat <<EOF
+To activate result and image proxy in searx, edit settings.yml (read:
+${DOCS_URL}/admin/morty.html)::
+ result_proxy:
+ url : ${PUBLIC_URL_MORTY}
+ server:
+ image_proxy : True
+EOF
+}
+
+main() {
+ required_commands \
+ sudo install git wget curl \
+ || exit
+
+ local _usage="ERROR: unknown or missing $1 command $2"
+
+ case $1 in
+ --getenv) var="$2"; echo "${!var}"; exit 0;;
+ -h|--help) usage; exit 0;;
+
+ shell)
+ sudo_or_exit
+ interactive_shell "${SERVICE_USER}"
+ ;;
+ inspect)
+ case $2 in
+ service)
+ sudo_or_exit
+ inspect_service
+ ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ install)
+ rst_title "$SERVICE_NAME" part
+ sudo_or_exit
+ case $2 in
+ all) install_all ;;
+ user) assert_user ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ update)
+ sudo_or_exit
+ case $2 in
+ morty) update_morty ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ remove)
+ sudo_or_exit
+ case $2 in
+ all) remove_all;;
+ user) drop_service_account "${SERVICE_USER}" ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ activate)
+ sudo_or_exit
+ case $2 in
+ service) systemd_activate_service "${SERVICE_NAME}" ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ deactivate)
+ sudo_or_exit
+ case $2 in
+ service) systemd_deactivate_service "${SERVICE_NAME}" ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ apache)
+ sudo_or_exit
+ case $2 in
+ install) install_apache_site ;;
+ remove) remove_apache_site ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ nginx)
+ sudo_or_exit
+ case $2 in
+ install) install_nginx_site ;;
+ remove) remove_nginx_site ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ info)
+ case $2 in
+ searx) info_searx ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ option)
+ sudo_or_exit
+ case $2 in
+ new-key) set_new_key ;;
+ debug-on) enable_debug ;;
+ debug-off) disable_debug ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ doc) rst-doc ;;
+ *) usage "ERROR: unknown or missing command $1"; exit 42;;
+ esac
+}
+
+install_all() {
+
+ MORTY_KEY="$(head -c 32 /dev/urandom | base64)"
+
+ rst_title "Install $SERVICE_NAME (service)"
+ assert_user
+ wait_key
+ install_go "${GO_PKG_URL}" "${GO_TAR}" "${SERVICE_USER}"
+ wait_key
+ install_morty
+ wait_key
+ systemd_install_service "${SERVICE_NAME}" "${SERVICE_SYSTEMD_UNIT}"
+ wait_key
+ if ! service_is_available "http://${MORTY_LISTEN}" ; then
+ err_msg "Morty does not listening on: http://${MORTY_LISTEN}"
+ fi
+ if apache_is_installed; then
+ info_msg "Apache is installed on this host."
+ if ask_yn "Do you want to install a reverse proxy (ProxyPass)" Yn; then
+ install_apache_site
+ fi
+ elif nginx_is_installed; then
+ info_msg "nginx is installed on this host."
+ if ask_yn "Do you want to install a reverse proxy (ProxyPass)" Yn; then
+ install_nginx_site
+ fi
+ fi
+ info_searx
+ if ask_yn "Add image and result proxy to searx settings.yml?" Yn; then
+ "${REPO_ROOT}/utils/searx.sh" option result-proxy "${PUBLIC_URL_MORTY}" "${MORTY_KEY}"
+ "${REPO_ROOT}/utils/searx.sh" option image-proxy-on
+ fi
+
+ if ask_yn "Do you want to inspect the installation?" Ny; then
+ inspect_service
+ fi
+
+}
+
+remove_all() {
+ rst_title "De-Install $SERVICE_NAME (service)"
+
+ rst_para "\
+It goes without saying that this script can only be used to remove
+installations that were installed with this script."
+
+ if systemd_remove_service "${SERVICE_NAME}" "${SERVICE_SYSTEMD_UNIT}"; then
+ drop_service_account "${SERVICE_USER}"
+ fi
+}
+
+assert_user() {
+ rst_title "user $SERVICE_USER" section
+ echo
+ tee_stderr 1 <<EOF | bash | prefix_stdout
+useradd --shell /bin/bash --system \
+ --home-dir "$SERVICE_HOME" \
+ --comment 'Web content sanitizer proxy' $SERVICE_USER
+mkdir "$SERVICE_HOME"
+chown -R "$SERVICE_GROUP:$SERVICE_GROUP" "$SERVICE_HOME"
+groups $SERVICE_USER
+EOF
+ SERVICE_HOME="$(sudo -i -u "$SERVICE_USER" echo \$HOME)"
+ export SERVICE_HOME
+ echo "export SERVICE_HOME=$SERVICE_HOME"
+
+ cat > "$GO_ENV" <<EOF
+export GOPATH=\$HOME/go-apps
+export PATH=\$PATH:\$HOME/local/go/bin:\$GOPATH/bin
+EOF
+ echo "Environment $GO_ENV has been setup."
+
+ tee_stderr <<EOF | sudo -i -u "$SERVICE_USER"
+grep -qFs -- 'source $GO_ENV' ~/.profile || echo 'source $GO_ENV' >> ~/.profile
+EOF
+}
+
+morty_is_installed() {
+ [[ -f $SERVICE_HOME/go-apps/bin/morty ]]
+}
+
+_svcpr=" ${_Yellow}|${SERVICE_USER}|${_creset} "
+
+install_morty() {
+ rst_title "Install morty in user's ~/go-apps" section
+ echo
+ tee_stderr <<EOF | sudo -i -u "$SERVICE_USER" 2>&1 | prefix_stdout "$_svcpr"
+go get -v -u github.com/asciimoo/morty
+EOF
+ tee_stderr <<EOF | sudo -i -u "$SERVICE_USER" 2>&1 | prefix_stdout "$_svcpr"
+cd \$GOPATH/src/github.com/asciimoo/morty
+go test
+go test -benchmem -bench .
+EOF
+}
+
+update_morty() {
+ rst_title "Update morty" section
+ echo
+ tee_stderr <<EOF | sudo -i -u "$SERVICE_USER" 2>&1 | prefix_stdout "$_svcpr"
+go get -v -u github.com/asciimoo/morty
+EOF
+ tee_stderr <<EOF | sudo -i -u "$SERVICE_USER" 2>&1 | prefix_stdout "$_svcpr"
+cd \$GOPATH/src/github.com/asciimoo/morty
+go test
+go test -benchmem -bench .
+EOF
+}
+
+set_service_env_debug() {
+
+ # usage: set_service_env_debug [false|true]
+
+ # shellcheck disable=SC2034
+ local SERVICE_ENV_DEBUG="${1:-false}"
+ if systemd_remove_service "${SERVICE_NAME}" "${SERVICE_SYSTEMD_UNIT}"; then
+ systemd_install_service "${SERVICE_NAME}" "${SERVICE_SYSTEMD_UNIT}"
+ fi
+}
+
+inspect_service() {
+
+ rst_title "service status & log"
+
+ cat <<EOF
+
+sourced ${DOT_CONFIG#"$REPO_ROOT/"} :
+
+ MORTY_LISTEN : ${MORTY_LISTEN}
+
+EOF
+
+ if service_account_is_available "$SERVICE_USER"; then
+ info_msg "service account $SERVICE_USER available."
+ else
+ err_msg "service account $SERVICE_USER not available!"
+ fi
+ if go_is_available "$SERVICE_USER"; then
+ info_msg "~$SERVICE_USER: go is installed"
+ else
+ err_msg "~$SERVICE_USER: go is not installed"
+ fi
+ if morty_is_installed; then
+ info_msg "~$SERVICE_USER: morty app is installed"
+ else
+ err_msg "~$SERVICE_USER: morty app is not installed!"
+ fi
+
+ if ! service_is_available "http://${MORTY_LISTEN}" ; then
+ err_msg "Morty does not listening on: http://${MORTY_LISTEN}"
+ echo -e "${_Green}stop with [${_BCyan}CTRL-C${_Green}] or .."
+ wait_key
+ fi
+
+ if ! service_is_available "${PUBLIC_URL_MORTY}"; then
+ warn_msg "Public service at ${PUBLIC_URL_MORTY} is not available!"
+ if ! in_container; then
+ warn_msg "Check if public name is correct and routed or use the public IP from above."
+ fi
+ fi
+
+ if in_container; then
+ lxc_suite_info
+ else
+ info_msg "public URL --> ${PUBLIC_URL_MORTY}"
+ info_msg "morty URL --> http://${MORTY_LISTEN}"
+ fi
+
+ local _debug_on
+ if ask_yn "Enable morty debug mode (needs reinstall of systemd service)?"; then
+ enable_debug
+ _debug_on=1
+ else
+ systemctl --no-pager -l status "${SERVICE_NAME}"
+ fi
+ echo
+
+ # shellcheck disable=SC2059
+ printf "// use ${_BCyan}CTRL-C${_creset} to stop monitoring the log"
+ read -r -s -n1 -t 5
+ echo
+ while true; do
+ trap break 2
+ journalctl -f -u "${SERVICE_NAME}"
+ done
+
+ if [[ $_debug_on == 1 ]]; then
+ FORCE_SELECTION=Y disable_debug
+ fi
+ return 0
+}
+
+enable_debug() {
+ warn_msg "Do not enable debug in production enviroments!!"
+ info_msg "Enabling debug option needs to reinstall systemd service!"
+ set_service_env_debug true
+}
+
+disable_debug() {
+ info_msg "Disabling debug option needs to reinstall systemd service!"
+ set_service_env_debug false
+}
+
+
+set_new_key() {
+ rst_title "Set morty key"
+ echo
+
+ MORTY_KEY="$(head -c 32 /dev/urandom | base64)"
+ info_msg "morty key: '${MORTY_KEY}'"
+
+ warn_msg "this will need to reinstall services .."
+ MSG="${_Green}press any [${_BCyan}KEY${_Green}] to continue // stop with [${_BCyan}CTRL-C${_creset}]" wait_key
+
+ systemd_install_service "${SERVICE_NAME}" "${SERVICE_SYSTEMD_UNIT}"
+ "${REPO_ROOT}/utils/searx.sh" option result-proxy "${PUBLIC_URL_MORTY}" "${MORTY_KEY}"
+ "${REPO_ROOT}/utils/searx.sh" option image-proxy-on
+}
+
+
+install_apache_site() {
+
+ rst_title "Install Apache site $APACHE_MORTY_SITE"
+
+ rst_para "\
+This installs a reverse proxy (ProxyPass) into apache site (${APACHE_MORTY_SITE})"
+
+ ! apache_is_installed && err_msg "Apache is not installed."
+
+ if ! ask_yn "Do you really want to continue?" Yn; then
+ return
+ else
+ install_apache
+ fi
+
+ apache_install_site "${APACHE_MORTY_SITE}"
+
+ info_msg "testing public url .."
+ if ! service_is_available "${PUBLIC_URL_MORTY}"; then
+ err_msg "Public service at ${PUBLIC_URL_MORTY} is not available!"
+ fi
+}
+
+remove_apache_site() {
+
+ rst_title "Remove Apache site $APACHE_MORTY_SITE"
+
+ rst_para "\
+This removes apache site ${APACHE_MORTY_SITE}."
+
+ ! apache_is_installed && err_msg "Apache is not installed."
+
+ if ! ask_yn "Do you really want to continue?" Yn; then
+ return
+ fi
+
+ apache_remove_site "$APACHE_MORTY_SITE"
+}
+
+install_nginx_site() {
+
+ rst_title "Install nginx site $NGINX_MORTY_SITE"
+
+ rst_para "\
+This installs a reverse proxy (ProxyPass) into nginx site (${NGINX_MORTY_SITE})"
+
+ ! nginx_is_installed && err_msg "nginx is not installed."
+
+ if ! ask_yn "Do you really want to continue?" Yn; then
+ return
+ else
+ install_nginx
+ fi
+
+ "${REPO_ROOT}/utils/searx.sh" install uwsgi
+
+ # shellcheck disable=SC2034
+ SEARX_SRC=$("${REPO_ROOT}/utils/searx.sh" --getenv SEARX_SRC)
+ # shellcheck disable=SC2034
+ SEARX_URL_PATH=$("${REPO_ROOT}/utils/searx.sh" --getenv SEARX_URL_PATH)
+ nginx_install_app "${NGINX_MORTY_SITE}"
+
+ info_msg "testing public url .."
+ if ! service_is_available "${PUBLIC_URL_MORTY}"; then
+ err_msg "Public service at ${PUBLIC_URL_MORTY} is not available!"
+ fi
+}
+
+remove_nginx_site() {
+
+ rst_title "Remove nginx site $NGINX_MORTY_SITE"
+
+ rst_para "\
+This removes nginx site ${NGINX_MORTY_SITE}."
+
+ ! nginx_is_installed && err_msg "nginx is not installed."
+
+ if ! ask_yn "Do you really want to continue?" Yn; then
+ return
+ fi
+
+ nginx_remove_site "$NGINX_MORTY_SITE"
+
+}
+
+rst-doc() {
+
+ eval "echo \"$(< "${REPO_ROOT}/docs/build-templates/morty.rst")\""
+
+ echo -e "\n.. START install systemd unit"
+ cat <<EOF
+.. tabs::
+
+ .. group-tab:: systemd
+
+ .. code:: bash
+
+EOF
+ eval "echo \"$(< "${TEMPLATES}/${SERVICE_SYSTEMD_UNIT}")\"" | prefix_stdout " "
+ echo -e "\n.. END install systemd unit"
+
+ # for DIST_NAME in ubuntu-20.04 arch fedora centos; do
+ # (
+ # DIST_ID=${DIST_NAME%-*}
+ # DIST_VERS=${DIST_NAME#*-}
+ # [[ $DIST_VERS =~ $DIST_ID ]] && DIST_VERS=
+ # # ...
+ # )
+ # done
+}
+
+
+# ----------------------------------------------------------------------------
+main "$@"
+# ----------------------------------------------------------------------------
diff --git a/utils/searx.sh b/utils/searx.sh
new file mode 100755
index 0000000..39f4c59
--- /dev/null
+++ b/utils/searx.sh
@@ -0,0 +1,914 @@
+#!/usr/bin/env bash
+# -*- coding: utf-8; mode: sh indent-tabs-mode: nil -*-
+# SPDX-License-Identifier: AGPL-3.0-or-later
+# shellcheck disable=SC2001
+
+# shellcheck source=utils/lib.sh
+source "$(dirname "${BASH_SOURCE[0]}")/lib.sh"
+# shellcheck source=utils/brand.env
+source "${REPO_ROOT}/utils/brand.env"
+source_dot_config
+source "${REPO_ROOT}/utils/lxc-searx.env"
+in_container && lxc_set_suite_env
+
+# ----------------------------------------------------------------------------
+# config
+# ----------------------------------------------------------------------------
+
+PUBLIC_URL="${PUBLIC_URL:-http://$(uname -n)/searx}"
+
+SEARX_INTERNAL_HTTP="${SEARX_INTERNAL_HTTP:-127.0.0.1:8888}"
+
+SEARX_URL_PATH="${SEARX_URL_PATH:-$(echo "${PUBLIC_URL}" \
+| sed -e 's,^.*://[^/]*\(/.*\),\1,g')}"
+[[ "${SEARX_URL_PATH}" == "${PUBLIC_URL}" ]] && SEARX_URL_PATH=/
+SEARX_INSTANCE_NAME="${SEARX_INSTANCE_NAME:-searx@$(echo "$PUBLIC_URL" \
+| sed -e 's,^.*://\([^\:/]*\).*,\1,g') }"
+
+SERVICE_NAME="searx"
+SERVICE_USER="${SERVICE_USER:-${SERVICE_NAME}}"
+SERVICE_HOME_BASE="${SERVICE_HOME_BASE:-/usr/local}"
+SERVICE_HOME="${SERVICE_HOME_BASE}/${SERVICE_USER}"
+# shellcheck disable=SC2034
+SERVICE_GROUP="${SERVICE_USER}"
+
+GIT_BRANCH="${GIT_BRANCH:-master}"
+SEARX_PYENV="${SERVICE_HOME}/searx-pyenv"
+SEARX_SRC="${SERVICE_HOME}/searx-src"
+SEARX_SETTINGS_PATH="${SEARX_SETTINGS_PATH:-/etc/searx/settings.yml}"
+SEARX_SETTINGS_TEMPLATE="${SEARX_SETTINGS_TEMPLATE:-${REPO_ROOT}/utils/templates/etc/searx/use_default_settings.yml}"
+SEARX_UWSGI_APP="searx.ini"
+# shellcheck disable=SC2034
+SEARX_UWSGI_SOCKET="/run/uwsgi/app/searx/socket"
+
+# apt packages
+SEARX_PACKAGES_debian="\
+python3-dev python3-babel python3-venv
+uwsgi uwsgi-plugin-python3
+git build-essential libxslt-dev zlib1g-dev libffi-dev libssl-dev
+shellcheck"
+
+BUILD_PACKAGES_debian="\
+firefox graphviz imagemagick texlive-xetex librsvg2-bin
+texlive-latex-recommended texlive-extra-utils fonts-dejavu
+latexmk"
+
+# pacman packages
+SEARX_PACKAGES_arch="\
+python python-pip python-lxml python-babel
+uwsgi uwsgi-plugin-python
+git base-devel libxml2
+shellcheck"
+
+BUILD_PACKAGES_arch="\
+firefox graphviz imagemagick texlive-bin extra/librsvg
+texlive-core texlive-latexextra ttf-dejavu"
+
+# dnf packages
+SEARX_PACKAGES_fedora="\
+python python-pip python-lxml python-babel
+uwsgi uwsgi-plugin-python3
+git @development-tools libxml2
+ShellCheck"
+
+BUILD_PACKAGES_fedora="\
+firefox graphviz graphviz-gd ImageMagick librsvg2-tools
+texlive-xetex-bin texlive-collection-fontsrecommended
+texlive-collection-latex dejavu-sans-fonts dejavu-serif-fonts
+dejavu-sans-mono-fonts"
+
+# yum packages
+SEARX_PACKAGES_centos="\
+python36 python36-pip python36-lxml python-babel
+uwsgi uwsgi-plugin-python3
+git @development-tools libxml2
+ShellCheck"
+
+BUILD_PACKAGES_centos="\
+firefox graphviz graphviz-gd ImageMagick librsvg2-tools
+texlive-xetex-bin texlive-collection-fontsrecommended
+texlive-collection-latex dejavu-sans-fonts dejavu-serif-fonts
+dejavu-sans-mono-fonts"
+
+case $DIST_ID-$DIST_VERS in
+ ubuntu-16.04|ubuntu-18.04)
+ SEARX_PACKAGES="${SEARX_PACKAGES_debian}"
+ BUILD_PACKAGES="${BUILD_PACKAGES_debian}"
+ APACHE_PACKAGES="$APACHE_PACKAGES libapache2-mod-proxy-uwsgi"
+ ;;
+ ubuntu-20.04)
+ # https://askubuntu.com/a/1224710
+ SEARX_PACKAGES="${SEARX_PACKAGES_debian} python-is-python3"
+ BUILD_PACKAGES="${BUILD_PACKAGES_debian}"
+ ;;
+ ubuntu-*|debian-*)
+ SEARX_PACKAGES="${SEARX_PACKAGES_debian}"
+ BUILD_PACKAGES="${BUILD_PACKAGES_debian}"
+ ;;
+ arch-*)
+ SEARX_PACKAGES="${SEARX_PACKAGES_arch}"
+ BUILD_PACKAGES="${BUILD_PACKAGES_arch}"
+ ;;
+ fedora-*)
+ SEARX_PACKAGES="${SEARX_PACKAGES_fedora}"
+ BUILD_PACKAGES="${BUILD_PACKAGES_fedora}"
+ ;;
+ centos-7)
+ SEARX_PACKAGES="${SEARX_PACKAGES_centos}"
+ BUILD_PACKAGES="${BUILD_PACKAGES_centos}"
+ ;;
+esac
+
+# Apache Settings
+APACHE_SEARX_SITE="searx.conf"
+
+# shellcheck disable=SC2034
+CONFIG_FILES=(
+ "${uWSGI_APPS_AVAILABLE}/${SEARX_UWSGI_APP}"
+)
+
+# shellcheck disable=SC2034
+CONFIG_BACKUP_ENCRYPTED=(
+ "${SEARX_SETTINGS_PATH}"
+)
+
+# ----------------------------------------------------------------------------
+usage() {
+# ----------------------------------------------------------------------------
+
+ # shellcheck disable=SC1117
+ cat <<EOF
+usage::
+ $(basename "$0") shell
+ $(basename "$0") install [all|user|searx-src|pyenv|uwsgi|packages|settings|buildhost]
+ $(basename "$0") update [searx]
+ $(basename "$0") remove [all|user|pyenv|searx-src]
+ $(basename "$0") activate [service]
+ $(basename "$0") deactivate [service]
+ $(basename "$0") inspect [service]
+ $(basename "$0") option [debug-[on|off]|image-proxy-[on|off]|result-proxy <url> <key>]
+ $(basename "$0") apache [install|remove]
+
+shell
+ start interactive shell from user ${SERVICE_USER}
+install / remove
+ :all: complete (de-) installation of searx service
+ :user: add/remove service user '$SERVICE_USER' ($SERVICE_HOME)
+ :searx-src: clone $GIT_URL
+ :pyenv: create/remove virtualenv (python) in $SEARX_PYENV
+ :uwsgi: install searx uWSGI application
+ :settings: reinstall settings from ${SEARX_SETTINGS_TEMPLATE}
+ :packages: install needed packages from OS package manager
+ :buildhost: install packages from OS package manager needed by buildhosts
+update searx
+ Update searx installation ($SERVICE_HOME)
+activate service
+ activate and start service daemon (systemd unit)
+deactivate service
+ stop and deactivate service daemon (systemd unit)
+inspect service
+ run some small tests and inspect service's status and log
+option
+ set one of the available options
+apache
+ :install: apache site with the searx uwsgi app
+ :remove: apache site ${APACHE_FILTRON_SITE}
+
+searx settings: ${SEARX_SETTINGS_PATH}
+
+If needed, set PUBLIC_URL of your WEB service in the '${DOT_CONFIG#"$REPO_ROOT/"}' file::
+ PUBLIC_URL : ${PUBLIC_URL}
+ SEARX_INSTANCE_NAME : ${SEARX_INSTANCE_NAME}
+ SERVICE_USER : ${SERVICE_USER}
+ SEARX_INTERNAL_HTTP : http://${SEARX_INTERNAL_HTTP}
+EOF
+ if in_container; then
+ # searx is listening on 127.0.0.1 and not available from outside container
+ # in containers the service is listening on 0.0.0.0 (see lxc-searx.env)
+ echo -e "${_BBlack}HINT:${_creset} searx only listen on loopback device" \
+ "${_BBlack}inside${_creset} the container."
+ for ip in $(global_IPs) ; do
+ if [[ $ip =~ .*:.* ]]; then
+ echo " container (IPv6): [${ip#*|}]"
+ else
+ # IPv4:
+ echo " container (IPv4): ${ip#*|}"
+ fi
+ done
+ fi
+ [[ -n ${1} ]] && err_msg "$1"
+}
+
+main() {
+ required_commands \
+ sudo systemctl install git wget curl \
+ || exit
+
+ local _usage="unknown or missing $1 command $2"
+
+ case $1 in
+ --getenv) var="$2"; echo "${!var}"; exit 0;;
+ -h|--help) usage; exit 0;;
+ shell)
+ sudo_or_exit
+ interactive_shell "${SERVICE_USER}"
+ ;;
+ inspect)
+ case $2 in
+ service)
+ sudo_or_exit
+ inspect_service
+ ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ install)
+ rst_title "$SEARX_INSTANCE_NAME" part
+ sudo_or_exit
+ case $2 in
+ all) install_all ;;
+ user) assert_user ;;
+ pyenv) create_pyenv ;;
+ searx-src) clone_searx ;;
+ settings) install_settings ;;
+ uwsgi)
+ install_searx_uwsgi
+ if ! service_is_available "http://${SEARX_INTERNAL_HTTP}"; then
+ err_msg "URL http://${SEARX_INTERNAL_HTTP} not available, check searx & uwsgi setup!"
+ fi
+ ;;
+ packages)
+ pkg_install "$SEARX_PACKAGES"
+ ;;
+ buildhost)
+ pkg_install "$SEARX_PACKAGES"
+ pkg_install "$BUILD_PACKAGES"
+ ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ update)
+ sudo_or_exit
+ case $2 in
+ searx) update_searx;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ remove)
+ sudo_or_exit
+ case $2 in
+ all) remove_all;;
+ user) drop_service_account "${SERVICE_USER}";;
+ pyenv) remove_pyenv ;;
+ searx-src) remove_searx ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ activate)
+ sudo_or_exit
+ case $2 in
+ service)
+ activate_service ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ deactivate)
+ sudo_or_exit
+ case $2 in
+ service) deactivate_service ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ option)
+ sudo_or_exit
+ case $2 in
+ debug-on) echo; enable_debug ;;
+ debug-off) echo; disable_debug ;;
+ result-proxy) set_result_proxy "$3" "$4" ;;
+ image-proxy-on) enable_image_proxy ;;
+ image-proxy-off) disable_image_proxy ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ apache)
+ sudo_or_exit
+ case $2 in
+ install) install_apache_site ;;
+ remove) remove_apache_site ;;
+ *) usage "$_usage"; exit 42;;
+ esac ;;
+ doc) rst-doc;;
+ *) usage "unknown or missing command $1"; exit 42;;
+ esac
+}
+
+_service_prefix=" ${_Yellow}|$SERVICE_USER|${_creset} "
+
+install_all() {
+ rst_title "Install $SEARX_INSTANCE_NAME (service)"
+ pkg_install "$SEARX_PACKAGES"
+ wait_key
+ assert_user
+ wait_key
+ clone_searx
+ wait_key
+ create_pyenv
+ wait_key
+ install_settings
+ wait_key
+ test_local_searx
+ wait_key
+ install_searx_uwsgi
+ if ! service_is_available "http://${SEARX_INTERNAL_HTTP}"; then
+ err_msg "URL http://${SEARX_INTERNAL_HTTP} not available, check searx & uwsgi setup!"
+ fi
+ if ask_yn "Do you want to inspect the installation?" Ny; then
+ inspect_service
+ fi
+}
+
+update_searx() {
+ rst_title "Update searx instance"
+
+ echo
+ tee_stderr 0.3 <<EOF | sudo -H -u "${SERVICE_USER}" -i 2>&1 | prefix_stdout "$_service_prefix"
+cd ${SEARX_SRC}
+git checkout -B "$GIT_BRANCH"
+git pull
+pip install -U pip
+pip install -U setuptools
+pip install -U wheel
+pip install -U pyyaml
+pip install -U -e .
+EOF
+ install_settings
+ uWSGI_restart "$SEARX_UWSGI_APP"
+}
+
+remove_all() {
+ rst_title "De-Install $SEARX_INSTANCE_NAME (service)"
+
+ rst_para "\
+It goes without saying that this script can only be used to remove
+installations that were installed with this script."
+
+ if ! ask_yn "Do you really want to deinstall $SEARX_INSTANCE_NAME?"; then
+ return
+ fi
+ remove_searx_uwsgi
+ drop_service_account "${SERVICE_USER}"
+ remove_settings
+ wait_key
+ if service_is_available "${PUBLIC_URL}"; then
+ MSG="** Don't forgett to remove your public site! (${PUBLIC_URL}) **" wait_key 10
+ fi
+}
+
+assert_user() {
+ rst_title "user $SERVICE_USER" section
+ echo
+ tee_stderr 1 <<EOF | bash | prefix_stdout
+useradd --shell /bin/bash --system \
+ --home-dir "$SERVICE_HOME" \
+ --comment 'Privacy-respecting metasearch engine' $SERVICE_USER
+mkdir "$SERVICE_HOME"
+chown -R "$SERVICE_GROUP:$SERVICE_GROUP" "$SERVICE_HOME"
+groups $SERVICE_USER
+EOF
+ #SERVICE_HOME="$(sudo -i -u "$SERVICE_USER" echo \$HOME)"
+ #export SERVICE_HOME
+ #echo "export SERVICE_HOME=$SERVICE_HOME"
+}
+
+clone_is_available() {
+ [[ -f "$SEARX_SRC/.git/config" ]]
+}
+
+# shellcheck disable=SC2164
+clone_searx() {
+ rst_title "Clone searx sources" section
+ echo
+ if ! sudo -i -u "$SERVICE_USER" ls -d "$REPO_ROOT" > /dev/null; then
+ die 42 "user '$SERVICE_USER' missed read permission: $REPO_ROOT"
+ fi
+ SERVICE_HOME="$(sudo -i -u "$SERVICE_USER" echo \$HOME 2>/dev/null)"
+ if [[ ! "${SERVICE_HOME}" ]]; then
+ err_msg "to clone searx sources, user $SERVICE_USER hast to be created first"
+ return 42
+ fi
+ if [[ ! $(git show-ref "refs/heads/${GIT_BRANCH}") ]]; then
+ warn_msg "missing local branch ${GIT_BRANCH}"
+ info_msg "create local branch ${GIT_BRANCH} from start point: origin/${GIT_BRANCH}"
+ git branch "${GIT_BRANCH}" "origin/${GIT_BRANCH}"
+ fi
+ if [[ ! $(git rev-parse --abbrev-ref HEAD) == "${GIT_BRANCH}" ]]; then
+ warn_msg "take into account, installing branch $GIT_BRANCH while current branch is $(git rev-parse --abbrev-ref HEAD)"
+ fi
+ export SERVICE_HOME
+ git_clone "$REPO_ROOT" "$SEARX_SRC" \
+ "$GIT_BRANCH" "$SERVICE_USER"
+
+ pushd "${SEARX_SRC}" > /dev/null
+ tee_stderr 0.1 <<EOF | sudo -H -u "${SERVICE_USER}" -i 2>&1 | prefix_stdout "$_service_prefix"
+cd "${SEARX_SRC}"
+git remote set-url origin ${GIT_URL}
+git config user.email "$ADMIN_EMAIL"
+git config user.name "$ADMIN_NAME"
+git config --list
+EOF
+ popd > /dev/null
+}
+
+install_settings() {
+ rst_title "${SEARX_SETTINGS_PATH}" section
+ if ! clone_is_available; then
+ err_msg "you have to install searx first"
+ exit 42
+ fi
+ mkdir -p "$(dirname "${SEARX_SETTINGS_PATH}")"
+
+ if [[ ! -f ${SEARX_SETTINGS_PATH} ]]; then
+ info_msg "install settings ${SEARX_SETTINGS_TEMPLATE}"
+ info_msg " --> ${SEARX_SETTINGS_PATH}"
+ cp "${SEARX_SETTINGS_TEMPLATE}" "${SEARX_SETTINGS_PATH}"
+ configure_searx
+ return
+ fi
+
+ rst_para "Diff between origin's setting file (+) and current (-):"
+ echo "${SEARX_SETTINGS_PATH}" "${SEARX_SETTINGS_TEMPLATE}"
+ $DIFF_CMD "${SEARX_SETTINGS_PATH}" "${SEARX_SETTINGS_TEMPLATE}"
+
+ local action
+ choose_one action "What should happen to the settings file? " \
+ "keep configuration unchanged" \
+ "use origin settings" \
+ "start interactiv shell"
+ case $action in
+ "keep configuration unchanged")
+ info_msg "leave settings file unchanged"
+ ;;
+ "use origin settings")
+ backup_file "${SEARX_SETTINGS_PATH}"
+ info_msg "install origin settings"
+ cp "${SEARX_SETTINGS_TEMPLATE}" "${SEARX_SETTINGS_PATH}"
+ ;;
+ "start interactiv shell")
+ backup_file "${SEARX_SETTINGS_PATH}"
+ echo -e "// exit with [${_BCyan}CTRL-D${_creset}]"
+ sudo -H -i
+ rst_para 'Diff between new setting file (-) and current (+):'
+ echo
+ $DIFF_CMD "${SEARX_SETTINGS_TEMPLATE}" "${SEARX_SETTINGS_PATH}"
+ wait_key
+ ;;
+ esac
+}
+
+remove_settings() {
+ rst_title "remove searx settings" section
+ echo
+ info_msg "delete ${SEARX_SETTINGS_PATH}"
+ rm -f "${SEARX_SETTINGS_PATH}"
+}
+
+remove_searx() {
+ rst_title "Drop searx sources" section
+ if ask_yn "Do you really want to drop searx sources ($SEARX_SRC)?"; then
+ rm -rf "$SEARX_SRC"
+ else
+ rst_para "Leave searx sources unchanged."
+ fi
+}
+
+pyenv_is_available() {
+ [[ -f "${SEARX_PYENV}/bin/activate" ]]
+}
+
+create_pyenv() {
+ rst_title "Create virtualenv (python)" section
+ echo
+ if [[ ! -f "${SEARX_SRC}/manage" ]]; then
+ err_msg "to create pyenv for searx, searx has to be cloned first"
+ return 42
+ fi
+ info_msg "create pyenv in ${SEARX_PYENV}"
+ tee_stderr 0.1 <<EOF | sudo -H -u "${SERVICE_USER}" -i 2>&1 | prefix_stdout "$_service_prefix"
+rm -rf "${SEARX_PYENV}"
+python3 -m venv "${SEARX_PYENV}"
+grep -qFs -- 'source ${SEARX_PYENV}/bin/activate' ~/.profile \
+ || echo 'source ${SEARX_PYENV}/bin/activate' >> ~/.profile
+EOF
+ info_msg "inspect python's virtual environment"
+ tee_stderr 0.1 <<EOF | sudo -H -u "${SERVICE_USER}" -i 2>&1 | prefix_stdout "$_service_prefix"
+command -v python && python --version
+EOF
+ wait_key
+ info_msg "install needed python packages"
+ tee_stderr 0.1 <<EOF | sudo -H -u "${SERVICE_USER}" -i 2>&1 | prefix_stdout "$_service_prefix"
+pip install -U pip
+pip install -U setuptools
+pip install -U wheel
+pip install -U pyyaml
+cd ${SEARX_SRC}
+pip install -e .
+EOF
+}
+
+remove_pyenv() {
+ rst_title "Remove virtualenv (python)" section
+ if ! ask_yn "Do you really want to drop ${SEARX_PYENV} ?"; then
+ return
+ fi
+ info_msg "remove pyenv activation from ~/.profile"
+ tee_stderr 0.1 <<EOF | sudo -H -u "${SERVICE_USER}" -i 2>&1 | prefix_stdout "$_service_prefix"
+grep -v 'source ${SEARX_PYENV}/bin/activate' ~/.profile > ~/.profile.##
+mv ~/.profile.## ~/.profile
+EOF
+ rm -rf "${SEARX_PYENV}"
+}
+
+configure_searx() {
+ rst_title "Configure searx" section
+ rst_para "Setup searx config located at $SEARX_SETTINGS_PATH"
+ echo
+ tee_stderr 0.1 <<EOF | sudo -H -i 2>&1 | prefix_stdout "$_service_prefix"
+cd ${SEARX_SRC}
+sed -i -e "s/ultrasecretkey/$(openssl rand -hex 16)/g" "$SEARX_SETTINGS_PATH"
+sed -i -e "s/{instance_name}/${SEARX_INSTANCE_NAME}/g" "$SEARX_SETTINGS_PATH"
+EOF
+}
+
+test_local_searx() {
+ rst_title "Testing searx instance localy" section
+ echo
+
+ if service_is_available "http://${SEARX_INTERNAL_HTTP}" &>/dev/null; then
+ err_msg "URL/port http://${SEARX_INTERNAL_HTTP} is already in use, you"
+ err_msg "should stop that service before starting local tests!"
+ if ! ask_yn "Continue with local tests?"; then
+ return
+ fi
+ fi
+ sed -i -e "s/debug : False/debug : True/g" "$SEARX_SETTINGS_PATH"
+ tee_stderr 0.1 <<EOF | sudo -H -u "${SERVICE_USER}" -i 2>&1 | prefix_stdout "$_service_prefix"
+export SEARX_SETTINGS_PATH="${SEARX_SETTINGS_PATH}"
+cd ${SEARX_SRC}
+timeout 10 python searx/webapp.py &
+sleep 3
+curl --location --verbose --head --insecure $SEARX_INTERNAL_HTTP
+EOF
+ sed -i -e "s/debug : True/debug : False/g" "$SEARX_SETTINGS_PATH"
+}
+
+install_searx_uwsgi() {
+ rst_title "Install searx's uWSGI app (searx.ini)" section
+ echo
+ install_uwsgi
+ uWSGI_install_app "$SEARX_UWSGI_APP"
+}
+
+remove_searx_uwsgi() {
+ rst_title "Remove searx's uWSGI app (searx.ini)" section
+ echo
+ uWSGI_remove_app "$SEARX_UWSGI_APP"
+}
+
+activate_service() {
+ rst_title "Activate $SEARX_INSTANCE_NAME (service)" section
+ echo
+ uWSGI_enable_app "$SEARX_UWSGI_APP"
+ uWSGI_restart "$SEARX_UWSGI_APP"
+}
+
+deactivate_service() {
+ rst_title "De-Activate $SEARX_INSTANCE_NAME (service)" section
+ echo
+ uWSGI_disable_app "$SEARX_UWSGI_APP"
+ uWSGI_restart "$SEARX_UWSGI_APP"
+}
+
+enable_image_proxy() {
+ info_msg "try to enable image_proxy ..."
+ tee_stderr 0.1 <<EOF | sudo -H -i 2>&1 | prefix_stdout "$_service_prefix"
+cd ${SEARX_SRC}
+sed -i -e "s/image_proxy : False/image_proxy : True/g" "$SEARX_SETTINGS_PATH"
+EOF
+ uWSGI_restart "$SEARX_UWSGI_APP"
+}
+
+disable_image_proxy() {
+ info_msg "try to enable image_proxy ..."
+ tee_stderr 0.1 <<EOF | sudo -H -i 2>&1 | prefix_stdout "$_service_prefix"
+cd ${SEARX_SRC}
+sed -i -e "s/image_proxy : True/image_proxy : False/g" "$SEARX_SETTINGS_PATH"
+EOF
+ uWSGI_restart "$SEARX_UWSGI_APP"
+}
+
+enable_debug() {
+ warn_msg "Do not enable debug in production enviroments!!"
+ info_msg "try to enable debug mode ..."
+ tee_stderr 0.1 <<EOF | sudo -H -i 2>&1 | prefix_stdout "$_service_prefix"
+cd ${SEARX_SRC}
+sed -i -e "s/debug : False/debug : True/g" "$SEARX_SETTINGS_PATH"
+EOF
+ uWSGI_restart "$SEARX_UWSGI_APP"
+}
+
+disable_debug() {
+ info_msg "try to disable debug mode ..."
+ tee_stderr 0.1 <<EOF | sudo -H -i 2>&1 | prefix_stdout "$_service_prefix"
+cd ${SEARX_SRC}
+sed -i -e "s/debug : True/debug : False/g" "$SEARX_SETTINGS_PATH"
+EOF
+ uWSGI_restart "$SEARX_UWSGI_APP"
+}
+
+set_result_proxy() {
+
+ # usage: set_result_proxy <URL> [<key>]
+
+ info_msg "try to set result proxy: '$1' ($2)"
+ cp "${SEARX_SETTINGS_PATH}" "${SEARX_SETTINGS_PATH}.bak"
+ _set_result_proxy "$1" "$2" > "${SEARX_SETTINGS_PATH}"
+}
+
+_set_result_proxy() {
+ local line
+ local stage=0
+ local url=" url: $1"
+ local key=" key: !!binary \"$2\""
+ if [[ -z $2 ]]; then
+ key=
+ fi
+
+ while IFS= read -r line
+ do
+ if [[ $stage = 0 ]] || [[ $stage = 2 ]] ; then
+ if [[ $line =~ ^[[:space:]]*#*[[:space:]]*result_proxy[[:space:]]*:[[:space:]]*$ ]]; then
+ if [[ $stage = 0 ]]; then
+ stage=1
+ echo "result_proxy:"
+ continue
+ elif [[ $stage = 2 ]]; then
+ continue
+ fi
+ fi
+ fi
+ if [[ $stage = 1 ]] || [[ $stage = 2 ]] ; then
+ if [[ $line =~ ^[[:space:]]*#*[[:space:]]*url[[:space:]]*:[[:space:]] ]]; then
+ [[ $stage = 1 ]] && echo "$url"
+ continue
+ elif [[ $line =~ ^[[:space:]]*#*[[:space:]]*key[[:space:]]*:[[:space:]] ]]; then
+ [[ $stage = 1 ]] && [[ -n $key ]] && echo "$key"
+ continue
+ elif [[ $line =~ ^[[:space:]]*$ ]]; then
+ stage=2
+ fi
+ fi
+ echo "$line"
+ done < "${SEARX_SETTINGS_PATH}.bak"
+}
+
+function has_substring() {
+ [[ "$1" != "${2/$1/}" ]]
+}
+inspect_service() {
+ rst_title "service status & log"
+ cat <<EOF
+
+sourced ${DOT_CONFIG#"$REPO_ROOT/"} :
+
+ PUBLIC_URL : ${PUBLIC_URL}
+ SEARX_URL_PATH : ${SEARX_URL_PATH}
+ SEARX_INSTANCE_NAME : ${SEARX_INSTANCE_NAME}
+ SEARX_INTERNAL_HTTP : ${SEARX_INTERNAL_HTTP}
+
+EOF
+
+ if service_account_is_available "$SERVICE_USER"; then
+ info_msg "Service account $SERVICE_USER exists."
+ else
+ err_msg "Service account $SERVICE_USER does not exists!"
+ fi
+
+ if pyenv_is_available; then
+ info_msg "~$SERVICE_USER: python environment is available."
+ else
+ err_msg "~$SERVICE_USER: python environment is not available!"
+ fi
+
+ if clone_is_available; then
+ info_msg "~$SERVICE_USER: Searx software is installed."
+ else
+ err_msg "~$SERVICE_USER: Missing searx software!"
+ fi
+
+ if uWSGI_app_enabled "$SEARX_UWSGI_APP"; then
+ info_msg "uWSGI app $SEARX_UWSGI_APP is enabled."
+ else
+ err_msg "uWSGI app $SEARX_UWSGI_APP not enabled!"
+ fi
+
+ uWSGI_app_available "$SEARX_UWSGI_APP" \
+ || err_msg "uWSGI app $SEARX_UWSGI_APP not available!"
+
+ if in_container; then
+ lxc_suite_info
+ else
+ info_msg "public URL --> ${PUBLIC_URL}"
+ info_msg "internal URL --> http://${SEARX_INTERNAL_HTTP}"
+ fi
+
+ if ! service_is_available "http://${SEARX_INTERNAL_HTTP}"; then
+ err_msg "uWSGI app (service) at http://${SEARX_INTERNAL_HTTP} is not available!"
+ MSG="${_Green}[${_BCyan}CTRL-C${_Green}] to stop or [${_BCyan}KEY${_Green}] to continue"\
+ wait_key
+ fi
+
+ if ! service_is_available "${PUBLIC_URL}"; then
+ warn_msg "Public service at ${PUBLIC_URL} is not available!"
+ if ! in_container; then
+ warn_msg "Check if public name is correct and routed or use the public IP from above."
+ fi
+ fi
+
+ local _debug_on
+ if ask_yn "Enable searx debug mode?"; then
+ enable_debug
+ _debug_on=1
+ fi
+ echo
+
+ case $DIST_ID-$DIST_VERS in
+ ubuntu-*|debian-*)
+ systemctl --no-pager -l status "${SERVICE_NAME}"
+ ;;
+ arch-*)
+ systemctl --no-pager -l status "uwsgi@${SERVICE_NAME%.*}"
+ ;;
+ fedora-*|centos-7)
+ systemctl --no-pager -l status uwsgi
+ ;;
+ esac
+
+ # shellcheck disable=SC2059
+ printf "// use ${_BCyan}CTRL-C${_creset} to stop monitoring the log"
+ read -r -s -n1 -t 5
+ echo
+
+ while true; do
+ trap break 2
+ case $DIST_ID-$DIST_VERS in
+ ubuntu-*|debian-*) tail -f /var/log/uwsgi/app/searx.log ;;
+ arch-*) journalctl -f -u "uwsgi@${SERVICE_NAME%.*}" ;;
+ fedora-*|centos-7) journalctl -f -u uwsgi ;;
+ esac
+ done
+
+ if [[ $_debug_on == 1 ]]; then
+ disable_debug
+ fi
+ return 0
+}
+
+install_apache_site() {
+ rst_title "Install Apache site $APACHE_SEARX_SITE"
+
+ rst_para "\
+This installs the searx uwsgi app as apache site. If your server is public to
+the internet, you should instead use a reverse proxy (filtron) to block
+excessively bot queries."
+
+ ! apache_is_installed && err_msg "Apache is not installed."
+
+ if ! ask_yn "Do you really want to continue?" Yn; then
+ return
+ else
+ install_apache
+ fi
+
+ apache_install_site --variant=uwsgi "${APACHE_SEARX_SITE}"
+
+ rst_title "Install searx's uWSGI app (searx.ini)" section
+ echo
+ uWSGI_install_app --variant=socket "$SEARX_UWSGI_APP"
+
+ if ! service_is_available "${PUBLIC_URL}"; then
+ err_msg "Public service at ${PUBLIC_URL} is not available!"
+ fi
+}
+
+remove_apache_site() {
+
+ rst_title "Remove Apache site ${APACHE_SEARX_SITE}"
+
+ rst_para "\
+This removes apache site ${APACHE_SEARX_SITE}."
+
+ ! apache_is_installed && err_msg "Apache is not installed."
+
+ if ! ask_yn "Do you really want to continue?" Yn; then
+ return
+ fi
+
+ apache_remove_site "${APACHE_SEARX_SITE}"
+
+ rst_title "Remove searx's uWSGI app (searx.ini)" section
+ echo
+ uWSGI_remove_app "$SEARX_UWSGI_APP"
+}
+
+rst-doc() {
+ local debian="${SEARX_PACKAGES_debian}"
+ local arch="${SEARX_PACKAGES_arch}"
+ local fedora="${SEARX_PACKAGES_fedora}"
+ local centos="${SEARX_PACKAGES_centos}"
+ local debian_build="${BUILD_PACKAGES_debian}"
+ local arch_build="${BUILD_PACKAGES_arch}"
+ local fedora_build="${BUILD_PACKAGES_fedora}"
+ local centos_build="${SEARX_PACKAGES_centos}"
+ debian="$(echo "${debian}" | sed 's/.*/ & \\/' | sed '$ s/.$//')"
+ arch="$(echo "${arch}" | sed 's/.*/ & \\/' | sed '$ s/.$//')"
+ fedora="$(echo "${fedora}" | sed 's/.*/ & \\/' | sed '$ s/.$//')"
+ centos="$(echo "${centos}" | sed 's/.*/ & \\/' | sed '$ s/.$//')"
+ debian_build="$(echo "${debian_build}" | sed 's/.*/ & \\/' | sed '$ s/.$//')"
+ arch_build="$(echo "${arch_build}" | sed 's/.*/ & \\/' | sed '$ s/.$//')"
+ fedora_build="$(echo "${fedora_build}" | sed 's/.*/ & \\/' | sed '$ s/.$//')"
+ centos_build="$(echo "${centos_build}" | sed 's/.*/ & \\/' | sed '$ s/.$//')"
+
+ eval "echo \"$(< "${REPO_ROOT}/docs/build-templates/searx.rst")\""
+
+ # I use ubuntu-20.04 here to demonstrate that versions are also suported,
+ # normaly debian-* and ubuntu-* are most the same.
+
+ for DIST_NAME in ubuntu-20.04 arch fedora; do
+ (
+ DIST_ID=${DIST_NAME%-*}
+ DIST_VERS=${DIST_NAME#*-}
+ [[ $DIST_VERS =~ $DIST_ID ]] && DIST_VERS=
+ uWSGI_distro_setup
+
+ echo -e "\n.. START searx uwsgi-description $DIST_NAME"
+
+ case $DIST_ID-$DIST_VERS in
+ ubuntu-*|debian-*) cat <<EOF
+
+.. code:: bash
+
+ # init.d --> /usr/share/doc/uwsgi/README.Debian.gz
+ # For uWSGI debian uses the LSB init process, this might be changed
+ # one day, see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=833067
+
+ create ${uWSGI_APPS_AVAILABLE}/${SEARX_UWSGI_APP}
+ enable: sudo -H ln -s ${uWSGI_APPS_AVAILABLE}/${SEARX_UWSGI_APP} ${uWSGI_APPS_ENABLED}/
+ start: sudo -H service uwsgi start ${SEARX_UWSGI_APP%.*}
+ restart: sudo -H service uwsgi restart ${SEARX_UWSGI_APP%.*}
+ stop: sudo -H service uwsgi stop ${SEARX_UWSGI_APP%.*}
+ disable: sudo -H rm ${uWSGI_APPS_ENABLED}/${SEARX_UWSGI_APP}
+
+EOF
+ ;;
+ arch-*) cat <<EOF
+
+.. code:: bash
+
+ # systemd --> /usr/lib/systemd/system/uwsgi@.service
+ # For uWSGI archlinux uses systemd template units, see
+ # - http://0pointer.de/blog/projects/instances.html
+ # - https://uwsgi-docs.readthedocs.io/en/latest/Systemd.html#one-service-per-app-in-systemd
+
+ create: ${uWSGI_APPS_ENABLED}/${SEARX_UWSGI_APP}
+ enable: sudo -H systemctl enable uwsgi@${SEARX_UWSGI_APP%.*}
+ start: sudo -H systemctl start uwsgi@${SEARX_UWSGI_APP%.*}
+ restart: sudo -H systemctl restart uwsgi@${SEARX_UWSGI_APP%.*}
+ stop: sudo -H systemctl stop uwsgi@${SEARX_UWSGI_APP%.*}
+ disable: sudo -H systemctl disable uwsgi@${SEARX_UWSGI_APP%.*}
+
+EOF
+ ;;
+ fedora-*|centos-7) cat <<EOF
+
+.. code:: bash
+
+ # systemd --> /usr/lib/systemd/system/uwsgi.service
+ # The unit file starts uWSGI in emperor mode (/etc/uwsgi.ini), see
+ # - https://uwsgi-docs.readthedocs.io/en/latest/Emperor.html
+
+ create: ${uWSGI_APPS_ENABLED}/${SEARX_UWSGI_APP}
+ restart: sudo -H touch ${uWSGI_APPS_ENABLED}/${SEARX_UWSGI_APP}
+ disable: sudo -H rm ${uWSGI_APPS_ENABLED}/${SEARX_UWSGI_APP}
+
+EOF
+ ;;
+ esac
+ echo -e ".. END searx uwsgi-description $DIST_NAME"
+
+ echo -e "\n.. START searx uwsgi-appini $DIST_NAME"
+ echo ".. code:: bash"
+ echo
+ eval "echo \"$(< "${TEMPLATES}/${uWSGI_APPS_AVAILABLE}/${SEARX_UWSGI_APP}")\"" | prefix_stdout " "
+ echo -e "\n.. END searx uwsgi-appini $DIST_NAME"
+
+ )
+ done
+
+}
+
+# ----------------------------------------------------------------------------
+main "$@"
+# ----------------------------------------------------------------------------
diff --git a/utils/standalone_searx.py b/utils/standalone_searx.py
deleted file mode 100755
index 7bc1d32..0000000
--- a/utils/standalone_searx.py
+++ /dev/null
@@ -1,104 +0,0 @@
-#!/usr/bin/env python
-
-'''
-searx is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-searx is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with searx. If not, see < http://www.gnu.org/licenses/ >.
-
-(C) 2016- by Alexandre Flament, <alex@al-f.net>
-'''
-
-# set path
-from sys import path
-from os.path import realpath, dirname
-path.append(realpath(dirname(realpath(__file__)) + '/../'))
-
-# initialization
-from json import dumps
-from searx import settings
-import sys
-import codecs
-import searx.query
-import searx.search
-import searx.engines
-import searx.preferences
-import argparse
-
-searx.engines.initialize_engines(settings['engines'])
-
-# command line parsing
-parser = argparse.ArgumentParser(description='Standalone searx.')
-parser.add_argument('query', type=str,
- help='Text query')
-parser.add_argument('--category', type=str, nargs='?',
- choices=searx.engines.categories.keys(),
- default='general',
- help='Search category')
-parser.add_argument('--lang', type=str, nargs='?',default='all',
- help='Search language')
-parser.add_argument('--pageno', type=int, nargs='?', default=1,
- help='Page number starting from 1')
-parser.add_argument('--safesearch', type=str, nargs='?', choices=['0', '1', '2'], default='0',
- help='Safe content filter from none to strict')
-parser.add_argument('--timerange', type=str, nargs='?', choices=['day', 'week', 'month', 'year'],
- help='Filter by time range')
-args = parser.parse_args()
-
-# search results for the query
-form = {
- "q":args.query,
- "categories":args.category.decode('utf-8'),
- "pageno":str(args.pageno),
- "language":args.lang,
- "time_range":args.timerange
-}
-preferences = searx.preferences.Preferences(['oscar'], searx.engines.categories.keys(), searx.engines.engines, [])
-preferences.key_value_settings['safesearch'].parse(args.safesearch)
-
-search_query, raw_text_query = searx.search.get_search_query_from_webapp(preferences, form)
-search = searx.search.Search(search_query)
-result_container = search.search()
-
-# output
-from datetime import datetime
-
-def no_parsed_url(results):
- for result in results:
- del result['parsed_url']
- return results
-
-def json_serial(obj):
- """JSON serializer for objects not serializable by default json code"""
- if isinstance(obj, datetime):
- serial = obj.isoformat()
- return serial
- raise TypeError ("Type not serializable")
-
-result_container_json = {
- "search": {
- "q": search_query.query,
- "pageno": search_query.pageno,
- "lang": search_query.lang,
- "safesearch": search_query.safesearch,
- "timerange": search_query.time_range,
- "engines": search_query.engines
- },
- "results": no_parsed_url(result_container.get_ordered_results()),
- "infoboxes": result_container.infoboxes,
- "suggestions": list(result_container.suggestions),
- "answers": list(result_container.answers),
- "paging": result_container.paging,
- "results_number": result_container.results_number()
-}
-sys.stdout = codecs.getwriter("UTF-8")(sys.stdout)
-sys.stdout.write(dumps(result_container_json, sort_keys=True, indent=4, ensure_ascii=False, encoding="utf-8", default=json_serial))
-
diff --git a/utils/templates/etc/apache2 b/utils/templates/etc/apache2
new file mode 120000
index 0000000..558a907
--- /dev/null
+++ b/utils/templates/etc/apache2
@@ -0,0 +1 @@
+httpd \ No newline at end of file
diff --git a/utils/templates/etc/filtron/rules.json b/utils/templates/etc/filtron/rules.json
new file mode 100644
index 0000000..fff70fa
--- /dev/null
+++ b/utils/templates/etc/filtron/rules.json
@@ -0,0 +1,129 @@
+[
+ {
+ "name": "roboagent limit",
+ "filters": [
+ "Header:User-Agent=(curl|cURL|Wget|python-requests|Scrapy|FeedFetcher|Go-http-client|Ruby|UniversalFeedParser)"
+ ],
+ "limit": 0,
+ "stop": true,
+ "actions": [
+ { "name": "log"},
+ { "name": "block",
+ "params": {
+ "message": "Rate limit exceeded"
+ }
+ }
+ ]
+ },
+ {
+ "name": "botlimit",
+ "filters": [
+ "Header:User-Agent=(Googlebot|bingbot|Baiduspider|yacybot|YandexMobileBot|YandexBot|Yahoo! Slurp|MJ12bot|AhrefsBot|archive.org_bot|msnbot|MJ12bot|SeznamBot|linkdexbot|Netvibes|SMTBot|zgrab|James BOT)"
+ ],
+ "limit": 0,
+ "stop": true,
+ "actions": [
+ { "name": "log"},
+ { "name": "block",
+ "params": {
+ "message": "Rate limit exceeded"
+ }
+ }
+ ]
+ },
+ {
+ "name": "suspiciously frequent IP",
+ "filters": [],
+ "interval": 600,
+ "limit": 30,
+ "aggregations": [
+ "Header:X-Forwarded-For"
+ ],
+ "actions":[
+ {"name":"log"}
+ ]
+ },
+ {
+ "name": "search request",
+ "filters": [
+ "Param:q",
+ "Path=^(/|/search)$"
+ ],
+ "interval": 61,
+ "limit": 999,
+ "subrules": [
+ {
+ "name": "missing Accept-Language",
+ "filters": ["!Header:Accept-Language"],
+ "limit": 0,
+ "stop": true,
+ "actions": [
+ {"name":"log"},
+ {"name": "block",
+ "params": {"message": "Rate limit exceeded"}}
+ ]
+ },
+ {
+ "name": "suspiciously Connection=close header",
+ "filters": ["Header:Connection=close"],
+ "limit": 0,
+ "stop": true,
+ "actions": [
+ {"name":"log"},
+ {"name": "block",
+ "params": {"message": "Rate limit exceeded"}}
+ ]
+ },
+ {
+ "name": "IP limit",
+ "interval": 61,
+ "limit": 9,
+ "stop": true,
+ "aggregations": [
+ "Header:X-Forwarded-For"
+ ],
+ "actions": [
+ { "name": "log"},
+ { "name": "block",
+ "params": {
+ "message": "Rate limit exceeded"
+ }
+ }
+ ]
+ },
+ {
+ "name": "rss/json limit",
+ "filters": [
+ "Param:format=(csv|json|rss)"
+ ],
+ "interval": 121,
+ "limit": 2,
+ "stop": true,
+ "actions": [
+ { "name": "log"},
+ { "name": "block",
+ "params": {
+ "message": "Rate limit exceeded"
+ }
+ }
+ ]
+ },
+ {
+ "name": "useragent limit",
+ "interval": 61,
+ "limit": 199,
+ "aggregations": [
+ "Header:User-Agent"
+ ],
+ "actions": [
+ { "name": "log"},
+ { "name": "block",
+ "params": {
+ "message": "Rate limit exceeded"
+ }
+ }
+ ]
+ }
+ ]
+ }
+]
diff --git a/utils/templates/etc/httpd/sites-available/morty.conf b/utils/templates/etc/httpd/sites-available/morty.conf
new file mode 100644
index 0000000..daeb363
--- /dev/null
+++ b/utils/templates/etc/httpd/sites-available/morty.conf
@@ -0,0 +1,28 @@
+# -*- coding: utf-8; mode: apache -*-
+
+LoadModule headers_module ${APACHE_MODULES}/mod_headers.so
+LoadModule proxy_module ${APACHE_MODULES}/mod_proxy.so
+LoadModule proxy_http_module ${APACHE_MODULES}/mod_proxy_http.so
+#LoadModule setenvif_module ${APACHE_MODULES}/mod_setenvif.so
+
+# SetEnvIf Request_URI "${PUBLIC_URL_PATH_MORTY}" dontlog
+# CustomLog /dev/null combined env=dontlog
+
+<Location ${PUBLIC_URL_PATH_MORTY} >
+
+ <IfModule mod_security2.c>
+ SecRuleEngine Off
+ </IfModule>
+
+ Require all granted
+
+ Order deny,allow
+ Deny from all
+ #Allow from fd00::/8 192.168.0.0/16 fe80::/10 127.0.0.0/8 ::1
+ Allow from all
+
+ ProxyPreserveHost On
+ ProxyPass http://${MORTY_LISTEN}
+ RequestHeader set X-Script-Name ${PUBLIC_URL_PATH_MORTY}
+
+</Location>
diff --git a/utils/templates/etc/httpd/sites-available/searx.conf:filtron b/utils/templates/etc/httpd/sites-available/searx.conf:filtron
new file mode 100644
index 0000000..379d47e
--- /dev/null
+++ b/utils/templates/etc/httpd/sites-available/searx.conf:filtron
@@ -0,0 +1,33 @@
+# -*- coding: utf-8; mode: apache -*-
+
+LoadModule headers_module ${APACHE_MODULES}/mod_headers.so
+LoadModule proxy_module ${APACHE_MODULES}/mod_proxy.so
+LoadModule proxy_http_module ${APACHE_MODULES}/mod_proxy_http.so
+#LoadModule setenvif_module ${APACHE_MODULES}/mod_setenvif.so
+
+# SetEnvIf Request_URI "${FILTRON_URL_PATH}" dontlog
+# CustomLog /dev/null combined env=dontlog
+
+# SecRuleRemoveById 981054
+# SecRuleRemoveById 981059
+# SecRuleRemoveById 981060
+# SecRuleRemoveById 950907
+
+<Location ${FILTRON_URL_PATH} >
+
+ <IfModule mod_security2.c>
+ SecRuleEngine Off
+ </IfModule>
+
+ Require all granted
+
+ Order deny,allow
+ Deny from all
+ #Allow from fd00::/8 192.168.0.0/16 fe80::/10 127.0.0.0/8 ::1
+ Allow from all
+
+ ProxyPreserveHost On
+ ProxyPass http://${FILTRON_LISTEN}
+ RequestHeader set X-Script-Name ${FILTRON_URL_PATH}
+
+</Location>
diff --git a/utils/templates/etc/httpd/sites-available/searx.conf:uwsgi b/utils/templates/etc/httpd/sites-available/searx.conf:uwsgi
new file mode 100644
index 0000000..ef702de
--- /dev/null
+++ b/utils/templates/etc/httpd/sites-available/searx.conf:uwsgi
@@ -0,0 +1,27 @@
+# -*- coding: utf-8; mode: apache -*-
+
+LoadModule headers_module ${APACHE_MODULES}/mod_headers.so
+LoadModule proxy_module ${APACHE_MODULES}/mod_proxy.so
+LoadModule proxy_uwsgi_module ${APACHE_MODULES}/mod_proxy_uwsgi.so
+# LoadModule setenvif_module ${APACHE_MODULES}/mod_setenvif.so
+
+# SetEnvIf Request_URI "${SEARX_URL_PATH}" dontlog
+# CustomLog /dev/null combined env=dontlog
+
+<Location ${SEARX_URL_PATH}>
+
+ <IfModule mod_security2.c>
+ SecRuleEngine Off
+ </IfModule>
+
+ Require all granted
+
+ Order deny,allow
+ Deny from all
+ # Allow from fd00::/8 192.168.0.0/16 fe80::/10 127.0.0.0/8 ::1
+ Allow from all
+
+ ProxyPreserveHost On
+ ProxyPass unix:${SEARX_UWSGI_SOCKET}|uwsgi://uwsgi-uds-searx/
+
+</Location>
diff --git a/utils/templates/etc/nginx/default.apps-available/morty.conf b/utils/templates/etc/nginx/default.apps-available/morty.conf
new file mode 100644
index 0000000..51f0839
--- /dev/null
+++ b/utils/templates/etc/nginx/default.apps-available/morty.conf
@@ -0,0 +1,11 @@
+# https://example.org/morty
+
+location /morty {
+ proxy_pass http://127.0.0.1:3000/;
+
+ proxy_set_header Host \$host;
+ proxy_set_header Connection \$http_connection;
+ proxy_set_header X-Real-IP \$remote_addr;
+ proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
+ proxy_set_header X-Scheme \$scheme;
+}
diff --git a/utils/templates/etc/nginx/default.apps-available/searx.conf:filtron b/utils/templates/etc/nginx/default.apps-available/searx.conf:filtron
new file mode 100644
index 0000000..a89aa38
--- /dev/null
+++ b/utils/templates/etc/nginx/default.apps-available/searx.conf:filtron
@@ -0,0 +1,16 @@
+# https://example.org/searx
+
+location ${SEARX_URL_PATH} {
+ proxy_pass http://127.0.0.1:4004/;
+
+ proxy_set_header Host \$host;
+ proxy_set_header Connection \$http_connection;
+ proxy_set_header X-Real-IP \$remote_addr;
+ proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
+ proxy_set_header X-Scheme \$scheme;
+ proxy_set_header X-Script-Name ${SEARX_URL_PATH};
+}
+
+location ${SEARX_URL_PATH}/static/ {
+ alias ${SEARX_SRC}/searx/static/;
+}
diff --git a/utils/templates/etc/searx/use_default_settings.yml b/utils/templates/etc/searx/use_default_settings.yml
new file mode 100644
index 0000000..e019a25
--- /dev/null
+++ b/utils/templates/etc/searx/use_default_settings.yml
@@ -0,0 +1,22 @@
+use_default_settings: True
+
+general:
+ debug : False # Debug mode, only for development
+ instance_name : "searx" # displayed name
+
+search:
+ safe_search : 0 # Filter results. 0: None, 1: Moderate, 2: Strict
+ autocomplete : "" # Existing autocomplete backends: "dbpedia", "duckduckgo", "google", "startpage", "swisscows", "qwant", "wikipedia" - leave blank to turn it off by default
+ default_lang : "" # Default search language - leave blank to detect from browser information or use codes from 'languages.py'
+
+server:
+ port : 8888
+ bind_address : "127.0.0.1" # address to listen on
+ secret_key : "ultrasecretkey" # change this!
+ base_url : False # Set custom base_url. Possible values: False or "https://your.custom.host/location/"
+ image_proxy : False # Proxying image results through searx
+
+# uncomment below section if you have running morty proxy
+#result_proxy:
+# url : http://127.0.0.1:3000/
+# key : !!binary "your_morty_proxy_key"
diff --git a/utils/templates/etc/uwsgi/apps-archlinux/searx.ini b/utils/templates/etc/uwsgi/apps-archlinux/searx.ini
new file mode 100644
index 0000000..71cece3
--- /dev/null
+++ b/utils/templates/etc/uwsgi/apps-archlinux/searx.ini
@@ -0,0 +1,88 @@
+[uwsgi]
+
+# uWSGI core
+# ----------
+#
+# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#uwsgi-core
+
+# Who will run the code
+uid = ${SERVICE_USER}
+gid = ${SERVICE_GROUP}
+
+# set (python) default encoding UTF-8
+env = LANG=C.UTF-8
+env = LANGUAGE=C.UTF-8
+env = LC_ALL=C.UTF-8
+
+# chdir to specified directory before apps loading
+chdir = ${SEARX_SRC}/searx
+
+# searx configuration (settings.yml)
+env = SEARX_SETTINGS_PATH=${SEARX_SETTINGS_PATH}
+
+# disable logging for privacy
+logger = systemd
+disable-logging = true
+
+# The right granted on the created socket
+chmod-socket = 666
+
+# Plugin to use and interpretor config
+single-interpreter = true
+
+# enable master process
+master = true
+
+# load apps in each worker instead of the master
+lazy-apps = true
+
+# load uWSGI plugins
+plugin = python
+
+# By default the Python plugin does not initialize the GIL. This means your
+# app-generated threads will not run. If you need threads, remember to enable
+# them with enable-threads. Running uWSGI in multithreading mode (with the
+# threads options) will automatically enable threading support. This *strange*
+# default behaviour is for performance reasons.
+enable-threads = true
+
+
+# plugin: python
+# --------------
+#
+# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-python
+
+# load a WSGI module
+module = searx.webapp
+
+# set PYTHONHOME/virtualenv
+virtualenv = ${SEARX_PYENV}
+
+# add directory (or glob) to pythonpath
+pythonpath = ${SEARX_SRC}
+
+
+# speak to upstream
+# -----------------
+#
+# Activate the 'http' configuration for filtron or activate the 'socket'
+# configuration if you setup your HTTP server to use uWSGI protocol via sockets.
+
+# using IP:
+#
+# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-http
+# Native HTTP support: https://uwsgi-docs.readthedocs.io/en/latest/HTTP.html
+
+http = ${SEARX_INTERNAL_HTTP}
+
+# using unix-sockets:
+#
+# On some distributions you need to create the app folder for the sockets::
+#
+# mkdir -p /run/uwsgi/app/searx
+# chown -R ${SERVICE_USER}:${SERVICE_GROUP} /run/uwsgi/app/searx
+#
+# socket = /run/uwsgi/app/searx/socket
+
+# Cache
+cache2 = name=searxcache,items=2000,blocks=2000,blocksize=4096,bitmap=1
diff --git a/utils/templates/etc/uwsgi/apps-archlinux/searx.ini:socket b/utils/templates/etc/uwsgi/apps-archlinux/searx.ini:socket
new file mode 100644
index 0000000..1a0fda9
--- /dev/null
+++ b/utils/templates/etc/uwsgi/apps-archlinux/searx.ini:socket
@@ -0,0 +1,85 @@
+[uwsgi]
+
+# uWSGI core
+# ----------
+#
+# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#uwsgi-core
+
+# Who will run the code
+uid = ${SERVICE_USER}
+gid = ${SERVICE_GROUP}
+
+# set (python) default encoding UTF-8
+env = LANG=C.UTF-8
+env = LANGUAGE=C.UTF-8
+env = LC_ALL=C.UTF-8
+
+# chdir to specified directory before apps loading
+chdir = ${SEARX_SRC}/searx
+
+# searx configuration (settings.yml)
+env = SEARX_SETTINGS_PATH=${SEARX_SETTINGS_PATH}
+
+# disable logging for privacy
+logger = systemd
+disable-logging = true
+
+# The right granted on the created socket
+chmod-socket = 666
+
+# Plugin to use and interpretor config
+single-interpreter = true
+
+# enable master process
+master = true
+
+# load apps in each worker instead of the master
+lazy-apps = true
+
+# load uWSGI plugins
+plugin = python
+
+# By default the Python plugin does not initialize the GIL. This means your
+# app-generated threads will not run. If you need threads, remember to enable
+# them with enable-threads. Running uWSGI in multithreading mode (with the
+# threads options) will automatically enable threading support. This *strange*
+# default behaviour is for performance reasons.
+enable-threads = true
+
+
+# plugin: python
+# --------------
+#
+# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-python
+
+# load a WSGI module
+module = searx.webapp
+
+# set PYTHONHOME/virtualenv
+virtualenv = ${SEARX_PYENV}
+
+# add directory (or glob) to pythonpath
+pythonpath = ${SEARX_SRC}
+
+
+# speak to upstream
+# -----------------
+#
+# Activate the 'http' configuration for filtron or activate the 'socket'
+# configuration if you setup your HTTP server to use uWSGI protocol via sockets.
+
+# using IP:
+#
+# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-http
+# Native HTTP support: https://uwsgi-docs.readthedocs.io/en/latest/HTTP.html
+
+# http = ${SEARX_INTERNAL_HTTP}
+
+# using unix-sockets:
+#
+# On some distributions you need to create the app folder for the sockets::
+#
+# mkdir -p /run/uwsgi/app/searx
+# chown -R ${SERVICE_USER}:${SERVICE_GROUP} /run/uwsgi/app/searx
+#
+socket = /run/uwsgi/app/searx/socket \ No newline at end of file
diff --git a/utils/templates/etc/uwsgi/apps-available/searx.ini b/utils/templates/etc/uwsgi/apps-available/searx.ini
new file mode 100644
index 0000000..45214ef
--- /dev/null
+++ b/utils/templates/etc/uwsgi/apps-available/searx.ini
@@ -0,0 +1,87 @@
+[uwsgi]
+
+# uWSGI core
+# ----------
+#
+# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#uwsgi-core
+
+# Who will run the code
+uid = ${SERVICE_USER}
+gid = ${SERVICE_GROUP}
+
+# set (python) default encoding UTF-8
+env = LANG=C.UTF-8
+env = LANGUAGE=C.UTF-8
+env = LC_ALL=C.UTF-8
+
+# chdir to specified directory before apps loading
+chdir = ${SEARX_SRC}/searx
+
+# searx configuration (settings.yml)
+env = SEARX_SETTINGS_PATH=${SEARX_SETTINGS_PATH}
+
+# disable logging for privacy
+disable-logging = true
+
+# The right granted on the created socket
+chmod-socket = 666
+
+# Plugin to use and interpretor config
+single-interpreter = true
+
+# enable master process
+master = true
+
+# load apps in each worker instead of the master
+lazy-apps = true
+
+# load uWSGI plugins
+plugin = python3,http
+
+# By default the Python plugin does not initialize the GIL. This means your
+# app-generated threads will not run. If you need threads, remember to enable
+# them with enable-threads. Running uWSGI in multithreading mode (with the
+# threads options) will automatically enable threading support. This *strange*
+# default behaviour is for performance reasons.
+enable-threads = true
+
+
+# plugin: python
+# --------------
+#
+# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-python
+
+# load a WSGI module
+module = searx.webapp
+
+# set PYTHONHOME/virtualenv
+virtualenv = ${SEARX_PYENV}
+
+# add directory (or glob) to pythonpath
+pythonpath = ${SEARX_SRC}
+
+
+# speak to upstream
+# -----------------
+#
+# Activate the 'http' configuration for filtron or activate the 'socket'
+# configuration if you setup your HTTP server to use uWSGI protocol via sockets.
+
+# using IP:
+#
+# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-http
+# Native HTTP support: https://uwsgi-docs.readthedocs.io/en/latest/HTTP.html
+
+http = ${SEARX_INTERNAL_HTTP}
+
+# using unix-sockets:
+#
+# On some distributions you need to create the app folder for the sockets::
+#
+# mkdir -p /run/uwsgi/app/searx
+# chown -R ${SERVICE_USER}:${SERVICE_GROUP} /run/uwsgi/app/searx
+#
+# socket = /run/uwsgi/app/searx/socket
+
+# Cache
+cache2 = name=searxcache,items=2000,blocks=2000,blocksize=4096,bitmap=1
diff --git a/utils/templates/etc/uwsgi/apps-available/searx.ini:socket b/utils/templates/etc/uwsgi/apps-available/searx.ini:socket
new file mode 100644
index 0000000..9cb2921
--- /dev/null
+++ b/utils/templates/etc/uwsgi/apps-available/searx.ini:socket
@@ -0,0 +1,84 @@
+[uwsgi]
+
+# uWSGI core
+# ----------
+#
+# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#uwsgi-core
+
+# Who will run the code
+uid = ${SERVICE_USER}
+gid = ${SERVICE_GROUP}
+
+# set (python) default encoding UTF-8
+env = LANG=C.UTF-8
+env = LANGUAGE=C.UTF-8
+env = LC_ALL=C.UTF-8
+
+# chdir to specified directory before apps loading
+chdir = ${SEARX_SRC}/searx
+
+# searx configuration (settings.yml)
+env = SEARX_SETTINGS_PATH=${SEARX_SETTINGS_PATH}
+
+# disable logging for privacy
+disable-logging = true
+
+# The right granted on the created socket
+chmod-socket = 666
+
+# Plugin to use and interpretor config
+single-interpreter = true
+
+# enable master process
+master = true
+
+# load apps in each worker instead of the master
+lazy-apps = true
+
+# load uWSGI plugins
+plugin = python3,http
+
+# By default the Python plugin does not initialize the GIL. This means your
+# app-generated threads will not run. If you need threads, remember to enable
+# them with enable-threads. Running uWSGI in multithreading mode (with the
+# threads options) will automatically enable threading support. This *strange*
+# default behaviour is for performance reasons.
+enable-threads = true
+
+
+# plugin: python
+# --------------
+#
+# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-python
+
+# load a WSGI module
+module = searx.webapp
+
+# set PYTHONHOME/virtualenv
+virtualenv = ${SEARX_PYENV}
+
+# add directory (or glob) to pythonpath
+pythonpath = ${SEARX_SRC}
+
+
+# speak to upstream
+# -----------------
+#
+# Activate the 'http' configuration for filtron or activate the 'socket'
+# configuration if you setup your HTTP server to use uWSGI protocol via sockets.
+
+# using IP:
+#
+# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-http
+# Native HTTP support: https://uwsgi-docs.readthedocs.io/en/latest/HTTP.html
+
+# http = ${SEARX_INTERNAL_HTTP}
+
+# using unix-sockets:
+#
+# On some distributions you need to create the app folder for the sockets::
+#
+# mkdir -p /run/uwsgi/app/searx
+# chown -R ${SERVICE_USER}:${SERVICE_GROUP} /run/uwsgi/app/searx
+#
+socket = /run/uwsgi/app/searx/socket \ No newline at end of file
diff --git a/utils/templates/lib/systemd/system/filtron.service b/utils/templates/lib/systemd/system/filtron.service
new file mode 100644
index 0000000..3b0c6ed
--- /dev/null
+++ b/utils/templates/lib/systemd/system/filtron.service
@@ -0,0 +1,29 @@
+[Unit]
+
+Description=${SERVICE_NAME}
+After=syslog.target
+After=network.target
+
+[Service]
+
+Type=simple
+User=${SERVICE_USER}
+Group=${SERVICE_GROUP}
+WorkingDirectory=${SERVICE_HOME}
+ExecStart=${SERVICE_HOME}/go-apps/bin/filtron -api '${FILTRON_API}' -listen '${FILTRON_LISTEN}' -rules '${FILTRON_RULES}' -target '${FILTRON_TARGET}'
+
+Restart=always
+Environment=USER=${SERVICE_USER} HOME=${SERVICE_HOME}
+
+# Some distributions may not support these hardening directives. If you cannot
+# start the service due to an unknown option, comment out the ones not supported
+# by your version of systemd.
+
+ProtectSystem=full
+PrivateDevices=yes
+PrivateTmp=yes
+NoNewPrivileges=true
+
+[Install]
+
+WantedBy=multi-user.target
diff --git a/utils/templates/lib/systemd/system/morty.service b/utils/templates/lib/systemd/system/morty.service
new file mode 100644
index 0000000..25b676b
--- /dev/null
+++ b/utils/templates/lib/systemd/system/morty.service
@@ -0,0 +1,29 @@
+[Unit]
+
+Description=${SERVICE_NAME}
+After=syslog.target
+After=network.target
+
+[Service]
+
+Type=simple
+User=${SERVICE_USER}
+Group=${SERVICE_GROUP}
+WorkingDirectory=${SERVICE_HOME}
+ExecStart=${SERVICE_HOME}/go-apps/bin/morty -key '${MORTY_KEY}' -listen '${MORTY_LISTEN}' -timeout ${MORTY_TIMEOUT}
+
+Restart=always
+Environment=USER=${SERVICE_USER} HOME=${SERVICE_HOME} DEBUG=${SERVICE_ENV_DEBUG}
+
+# Some distributions may not support these hardening directives. If you cannot
+# start the service due to an unknown option, comment out the ones not supported
+# by your version of systemd.
+
+ProtectSystem=full
+PrivateDevices=yes
+PrivateTmp=yes
+NoNewPrivileges=true
+
+[Install]
+
+WantedBy=multi-user.target